From 96bb023d6d635dc9781f3e67b16c6ad7dd71173a Mon Sep 17 00:00:00 2001 From: George Cox Date: Mon, 17 Feb 2020 06:01:48 -0500 Subject: [PATCH 01/14] Dev team + bundle id moved to xcconfig file (*) * This is so users can just add their own Signing.xcconfig file with their dev team and a bundle id they're allowed to create. This keeps team info out of the project file. The Signing.xcconfig file is now added to the .gitignore file. --- .gitignore | 3 ++- .../CloudKitTodo.xcodeproj/project.pbxproj | 11 ++++++++--- .../CloudKitTodo/Signing.sample.xcconfig | 13 +++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 Examples/CloudKitTodo/CloudKitTodo/Signing.sample.xcconfig diff --git a/.gitignore b/.gitignore index 7c6adc650..83a3f9379 100644 --- a/.gitignore +++ b/.gitignore @@ -32,7 +32,7 @@ LumberjackUser.temp.h jazzy.markdown ## CocoaPods within Unit Tests -## +## ## Excluding Xcode-desktop which is used by travis-ci ## Testing/Swift-desktop/Pods @@ -41,3 +41,4 @@ Testing/Xcode-mobile/Pods Testing/Xcode-tv/Pods Testing/Xcode-watch/Pods +Signing.xcconfig \ No newline at end of file diff --git a/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj b/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj index 038f26616..d7f9e31e9 100644 --- a/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj +++ b/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj @@ -30,6 +30,8 @@ /* Begin PBXFileReference section */ 703B5BE0F88E9B9E927805E5 /* Pods-CloudKitTodo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CloudKitTodo.release.xcconfig"; path = "Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.release.xcconfig"; sourceTree = ""; }; ABB1832E9FCC349F48EB4C9C /* libPods-CloudKitTodo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-CloudKitTodo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B9A9B94F23FAA7E400A187DD /* Signing.sample.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Signing.sample.xcconfig; sourceTree = ""; }; + B9A9B95023FAA8C600A187DD /* Signing.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Signing.xcconfig; sourceTree = ""; }; DC212CE01F6D98F600C11BF0 /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = System/Library/Frameworks/CloudKit.framework; sourceTree = SDKROOT; }; DC6071451A33F3FF00207DE9 /* TodoCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TodoCell.h; sourceTree = ""; }; DC6071461A33F3FF00207DE9 /* TodoCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TodoCell.m; sourceTree = ""; }; @@ -122,6 +124,8 @@ DCDE77681A302873001D8FCE /* CloudKitTodo.entitlements */, DCDE771F1A3023E9001D8FCE /* Info.plist */, DCDE77201A3023E9001D8FCE /* main.m */, + B9A9B94F23FAA7E400A187DD /* Signing.sample.xcconfig */, + B9A9B95023FAA8C600A187DD /* Signing.xcconfig */, ); name = "Supporting Files"; sourceTree = ""; @@ -212,7 +216,7 @@ TargetAttributes = { DCDE771A1A3023E9001D8FCE = { CreatedOnToolsVersion = 6.1; - DevelopmentTeam = VT5GYGYX83; + DevelopmentTeam = 8Y2R2YMCQT; SystemCapabilities = { com.apple.BackgroundModes = { enabled = 1; @@ -232,6 +236,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, Base, ); @@ -353,6 +358,7 @@ /* Begin XCBuildConfiguration section */ DCDE773C1A3023E9001D8FCE /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B9A9B95023FAA8C600A187DD /* Signing.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -405,6 +411,7 @@ }; DCDE773D1A3023E9001D8FCE /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B9A9B95023FAA8C600A187DD /* Signing.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -466,7 +473,6 @@ ); INFOPLIST_FILE = CloudKitTodo/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.4th-a.CloudKitTodo"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; @@ -490,7 +496,6 @@ ); INFOPLIST_FILE = CloudKitTodo/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.4th-a.CloudKitTodo"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; diff --git a/Examples/CloudKitTodo/CloudKitTodo/Signing.sample.xcconfig b/Examples/CloudKitTodo/CloudKitTodo/Signing.sample.xcconfig new file mode 100644 index 000000000..c248972d2 --- /dev/null +++ b/Examples/CloudKitTodo/CloudKitTodo/Signing.sample.xcconfig @@ -0,0 +1,13 @@ +/// +/// Created by George Cox on 2/17/20. +/// + +// Configuration settings file format documentation can be found at: +// https://help.apple.com/xcode/#/dev745c5c974 + +// This is a sample xcconfig file. The point is to remove the hard coded signing +// information from the project so anyone trying to use this can add their own +// Signing.xcconfig file with their own team id and bundle id + +DEVELOPMENT_TEAM = +PRODUCT_BUNDLE_IDENTIFIER = .ydb.cktodo From 0088c2b76aff9dec04c5d3ead85c5a0183674414 Mon Sep 17 00:00:00 2001 From: George Cox Date: Mon, 17 Feb 2020 06:06:07 -0500 Subject: [PATCH 02/14] Adds README for the CloudKitTodo example --- Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj | 2 ++ Examples/CloudKitTodo/README.md | 5 +++++ 2 files changed, 7 insertions(+) create mode 100644 Examples/CloudKitTodo/README.md diff --git a/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj b/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj index d7f9e31e9..a86c2b210 100644 --- a/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj +++ b/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj @@ -32,6 +32,7 @@ ABB1832E9FCC349F48EB4C9C /* libPods-CloudKitTodo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-CloudKitTodo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B9A9B94F23FAA7E400A187DD /* Signing.sample.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Signing.sample.xcconfig; sourceTree = ""; }; B9A9B95023FAA8C600A187DD /* Signing.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Signing.xcconfig; sourceTree = ""; }; + B9A9B95123FAAA9500A187DD /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; DC212CE01F6D98F600C11BF0 /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = System/Library/Frameworks/CloudKit.framework; sourceTree = SDKROOT; }; DC6071451A33F3FF00207DE9 /* TodoCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TodoCell.h; sourceTree = ""; }; DC6071461A33F3FF00207DE9 /* TodoCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TodoCell.m; sourceTree = ""; }; @@ -90,6 +91,7 @@ DCDE77121A3023E9001D8FCE = { isa = PBXGroup; children = ( + B9A9B95123FAAA9500A187DD /* README.md */, DCDE771D1A3023E9001D8FCE /* CloudKitTodo */, DCDE776B1A3028EA001D8FCE /* Frameworks */, DCDE771C1A3023E9001D8FCE /* Products */, diff --git a/Examples/CloudKitTodo/README.md b/Examples/CloudKitTodo/README.md new file mode 100644 index 000000000..d0ea72d61 --- /dev/null +++ b/Examples/CloudKitTodo/README.md @@ -0,0 +1,5 @@ +# CloudKitTodo Example + +To build and run this, you'll need to create a `Signing.xcconfig` file in the `Supporting Files` group and set the `DEVELOPMENT_TEAM` and `PRODUCT_BUNDLE_IDENTIFIER` settings. +You can just copy the `Supporting Files\Signing.sample.xcconfig` and replace the values. + From e989323f98a8c2a410dae1f6e2d625dc87f1504e Mon Sep 17 00:00:00 2001 From: George Cox Date: Mon, 17 Feb 2020 06:10:26 -0500 Subject: [PATCH 03/14] Adds CocoaLumberjack to Podfile, updates pods --- .../CloudKitTodo.xcodeproj/project.pbxproj | 32 - Examples/CloudKitTodo/Podfile | 3 +- Examples/CloudKitTodo/Podfile.lock | 151 +- .../Classes/CocoaLumberjack.swift | 95 - .../Pods/CocoaLumberjack/Classes/DDOSLogger.m | 77 - .../Lumberjack/CocoaLumberjack.modulemap | 36 - .../CloudKitTodo/Pods/CocoaLumberjack/LICENSE | 14 + .../Pods/CocoaLumberjack/LICENSE.txt | 18 - .../Pods/CocoaLumberjack/README.md | 153 +- .../Sources/CocoaLumberjack/CLI/CLIColor.m | 55 + .../CocoaLumberjack}/DDASLLogCapture.m | 56 +- .../CocoaLumberjack}/DDASLLogger.m | 18 +- .../DDAbstractDatabaseLogger.m | 59 +- .../CocoaLumberjack/DDFileLogger+Internal.h} | 29 +- .../CocoaLumberjack}/DDFileLogger.m | 1063 +++-- .../CocoaLumberjack}/DDLog.m | 369 +- .../Sources/CocoaLumberjack/DDLoggerNames.m | 21 + .../Sources/CocoaLumberjack/DDOSLogger.m | 118 + .../CocoaLumberjack}/DDTTYLogger.m | 782 ++-- .../Extensions/DDContextFilterLogFormatter.m | 56 +- .../Extensions/DDDispatchQueueLogFormatter.m | 165 +- .../Extensions/DDFileLogger+Buffering.m | 204 + .../Extensions/DDMultiFormatter.m | 48 +- .../Supporting Files}/CocoaLumberjack.h | 41 +- .../Supporting Files}/DDLegacyMacros.h | 2 +- .../CocoaLumberjack/include/CLIColor.h | 52 + .../include}/DDASLLogCapture.h | 9 +- .../CocoaLumberjack/include}/DDASLLogger.h | 11 +- .../include}/DDAbstractDatabaseLogger.h | 8 +- .../CocoaLumberjack/include}/DDAssertMacros.h | 7 +- .../include}/DDContextFilterLogFormatter.h | 22 +- .../include}/DDDispatchQueueLogFormatter.h | 62 +- .../include/DDFileLogger+Buffering.h | 27 + .../CocoaLumberjack/include}/DDFileLogger.h | 144 +- .../CocoaLumberjack/include}/DDLog+LOGV.h | 23 +- .../CocoaLumberjack/include}/DDLog.h | 102 +- .../CocoaLumberjack/include}/DDLogMacros.h | 4 +- .../CocoaLumberjack/include/DDLoggerNames.h | 30 + .../include}/DDMultiFormatter.h | 10 +- .../CocoaLumberjack/include/DDOSLogger.h | 55 + .../CocoaLumberjack/include}/DDTTYLogger.h | 34 +- .../Private/CocoaLumberjack/CLIColor.h | 1 + .../Private/CocoaLumberjack/CocoaLumberjack.h | 2 +- .../Private/CocoaLumberjack/DDASLLogCapture.h | 2 +- .../Private/CocoaLumberjack/DDASLLogger.h | 2 +- .../DDAbstractDatabaseLogger.h | 2 +- .../Private/CocoaLumberjack/DDAssertMacros.h | 2 +- .../DDContextFilterLogFormatter.h | 2 +- .../DDDispatchQueueLogFormatter.h | 2 +- .../CocoaLumberjack/DDFileLogger+Buffering.h | 1 + .../CocoaLumberjack/DDFileLogger+Internal.h | 1 + .../Private/CocoaLumberjack/DDFileLogger.h | 2 +- .../Private/CocoaLumberjack/DDLegacyMacros.h | 2 +- .../Private/CocoaLumberjack/DDLog+LOGV.h | 2 +- .../Headers/Private/CocoaLumberjack/DDLog.h | 2 +- .../Private/CocoaLumberjack/DDLogMacros.h | 2 +- .../Private/CocoaLumberjack/DDLoggerNames.h | 1 + .../CocoaLumberjack/DDMultiFormatter.h | 2 +- .../Private/CocoaLumberjack/DDOSLogger.h | 2 +- .../Private/CocoaLumberjack/DDTTYLogger.h | 2 +- .../Private/YapDatabase/YDBLogMessage.h | 1 + .../Private/YapDatabase/YapDatabaseAtomic.h | 2 +- .../YapDatabaseCloudCoreGraphPrivate.h | 1 + .../YapDatabase/YapDatabaseCollectionConfig.h | 1 + .../YapDatabase/YapDatabaseConnectionPool.h | 1 + .../YapDatabase/YapDatabaseConnectionProxy.h | 2 +- .../YapDatabase/YapDatabaseCryptoUtils.h | 1 + .../Private/YapDatabase/YapDatabaseTypes.h | 1 + .../Headers/Public/CocoaLumberjack/CLIColor.h | 1 + .../Public/CocoaLumberjack/CocoaLumberjack.h | 2 +- .../Public/CocoaLumberjack/DDASLLogCapture.h | 2 +- .../Public/CocoaLumberjack/DDASLLogger.h | 2 +- .../DDAbstractDatabaseLogger.h | 2 +- .../Public/CocoaLumberjack/DDAssertMacros.h | 2 +- .../DDContextFilterLogFormatter.h | 2 +- .../DDDispatchQueueLogFormatter.h | 2 +- .../CocoaLumberjack/DDFileLogger+Buffering.h | 1 + .../Public/CocoaLumberjack/DDFileLogger.h | 2 +- .../Public/CocoaLumberjack/DDLegacyMacros.h | 2 +- .../Public/CocoaLumberjack/DDLog+LOGV.h | 2 +- .../Headers/Public/CocoaLumberjack/DDLog.h | 2 +- .../Public/CocoaLumberjack/DDLogMacros.h | 2 +- .../Public/CocoaLumberjack/DDLoggerNames.h | 1 + .../Public/CocoaLumberjack/DDMultiFormatter.h | 2 +- .../Public/CocoaLumberjack/DDOSLogger.h | 2 +- .../Public/CocoaLumberjack/DDTTYLogger.h | 2 +- .../Public/YapDatabase/YDBLogMessage.h | 1 + .../Public/YapDatabase/YapDatabase-umbrella.h | 1 + .../Public/YapDatabase/YapDatabase.modulemap | 1 + .../Public/YapDatabase/YapDatabaseAtomic.h | 1 + .../YapDatabaseCloudCoreGraphPrivate.h | 1 + .../YapDatabaseCloudCoreOperationPrivate.h | 1 + .../YapDatabaseCloudCorePipelinePrivate.h | 1 + .../YapDatabase/YapDatabaseCloudCorePrivate.h | 1 + .../YapDatabase/YapDatabaseConnectionPool.h | 1 + .../YapDatabase/YapDatabaseConnectionProxy.h | 2 +- .../YapDatabase/YapDatabaseCryptoUtils.h | 1 + .../YapDatabase/YapDatabaseExtensionPrivate.h | 1 + .../Public/YapDatabase/YapDatabaseTypes.h | 1 + .../Local Podspecs/YapDatabase.podspec.json | 507 ++- Examples/CloudKitTodo/Pods/Manifest.lock | 151 +- .../Pods/Pods.xcodeproj/project.pbxproj | 3588 +++++++++-------- .../CocoaLumberjack/CocoaLumberjack.xcconfig | 9 +- ...ods-CloudKitTodo-acknowledgements.markdown | 21 +- .../Pods-CloudKitTodo-acknowledgements.plist | 21 +- .../Pods-CloudKitTodo-umbrella.h | 16 + .../Pods-CloudKitTodo.debug.xcconfig | 12 +- .../Pods-CloudKitTodo.modulemap | 6 + .../Pods-CloudKitTodo.release.xcconfig | 12 +- .../Reachability/Reachability.xcconfig | 10 +- .../YapDatabase/YapDatabase-umbrella.h | 122 + .../YapDatabase/YapDatabase.modulemap | 6 + .../YapDatabase/YapDatabase.xcconfig | 12 +- 113 files changed, 5182 insertions(+), 3667 deletions(-) delete mode 100644 Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/CocoaLumberjack.swift delete mode 100644 Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDOSLogger.m delete mode 100644 Examples/CloudKitTodo/Pods/CocoaLumberjack/Framework/Lumberjack/CocoaLumberjack.modulemap create mode 100644 Examples/CloudKitTodo/Pods/CocoaLumberjack/LICENSE delete mode 100644 Examples/CloudKitTodo/Pods/CocoaLumberjack/LICENSE.txt create mode 100644 Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/CLI/CLIColor.m rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack}/DDASLLogCapture.m (80%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack}/DDASLLogger.m (93%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack}/DDAbstractDatabaseLogger.m (93%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes/DDOSLogger.h => Sources/CocoaLumberjack/DDFileLogger+Internal.h} (54%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack}/DDFileLogger.m (58%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack}/DDLog.m (83%) create mode 100644 Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDLoggerNames.m create mode 100644 Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDOSLogger.m rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack}/DDTTYLogger.m (66%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack}/Extensions/DDContextFilterLogFormatter.m (75%) mode change 100644 => 100755 rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack}/Extensions/DDDispatchQueueLogFormatter.m (66%) mode change 100644 => 100755 create mode 100644 Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Extensions/DDFileLogger+Buffering.m rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack}/Extensions/DDMultiFormatter.m (66%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack/Supporting Files}/CocoaLumberjack.h (67%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack/Supporting Files}/DDLegacyMacros.h (98%) create mode 100644 Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/CLIColor.h rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack/include}/DDASLLogCapture.h (80%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack/include}/DDASLLogger.h (84%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack/include}/DDAbstractDatabaseLogger.h (97%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack/include}/DDAssertMacros.h (84%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes/Extensions => Sources/CocoaLumberjack/include}/DDContextFilterLogFormatter.h (85%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes/Extensions => Sources/CocoaLumberjack/include}/DDDispatchQueueLogFormatter.h (72%) create mode 100644 Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDFileLogger+Buffering.h rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack/include}/DDFileLogger.h (80%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack/include}/DDLog+LOGV.h (94%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack/include}/DDLog.h (93%) rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack/include}/DDLogMacros.h (98%) create mode 100644 Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDLoggerNames.h rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes/Extensions => Sources/CocoaLumberjack/include}/DDMultiFormatter.h (87%) create mode 100644 Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDOSLogger.h rename Examples/CloudKitTodo/Pods/CocoaLumberjack/{Classes => Sources/CocoaLumberjack/include}/DDTTYLogger.h (79%) create mode 120000 Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/CLIColor.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDFileLogger+Buffering.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDFileLogger+Internal.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLoggerNames.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YDBLogMessage.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseCloudCoreGraphPrivate.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseCollectionConfig.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseConnectionPool.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseCryptoUtils.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseTypes.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/CLIColor.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDFileLogger+Buffering.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLoggerNames.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YDBLogMessage.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabase-umbrella.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabase.modulemap create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseAtomic.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCoreGraphPrivate.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCoreOperationPrivate.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCorePipelinePrivate.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCorePrivate.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseConnectionPool.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCryptoUtils.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseExtensionPrivate.h create mode 120000 Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseTypes.h create mode 100644 Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-umbrella.h create mode 100644 Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.modulemap create mode 100644 Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase/YapDatabase-umbrella.h create mode 100644 Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase/YapDatabase.modulemap diff --git a/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj b/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj index a86c2b210..e888c8401 100644 --- a/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj +++ b/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj @@ -195,8 +195,6 @@ DCDE77171A3023E9001D8FCE /* Sources */, DCDE77181A3023E9001D8FCE /* Frameworks */, DCDE77191A3023E9001D8FCE /* Resources */, - A7E36A79EF95353C65F5D2B6 /* [CP] Embed Pods Frameworks */, - ED83D0453CE4BE42D9A22D78 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -286,36 +284,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - A7E36A79EF95353C65F5D2B6 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - ED83D0453CE4BE42D9A22D78 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ diff --git a/Examples/CloudKitTodo/Podfile b/Examples/CloudKitTodo/Podfile index 7da184b1f..9e31cabf9 100644 --- a/Examples/CloudKitTodo/Podfile +++ b/Examples/CloudKitTodo/Podfile @@ -1,6 +1,7 @@ platform :ios, '10.0' target 'CloudKitTodo' do - pod 'Reachability', '3.2' + pod 'Reachability', '3.2' + pod 'CocoaLumberjack' pod "YapDatabase", path: '../../' end diff --git a/Examples/CloudKitTodo/Podfile.lock b/Examples/CloudKitTodo/Podfile.lock index 81baf85f5..e1e102ff1 100644 --- a/Examples/CloudKitTodo/Podfile.lock +++ b/Examples/CloudKitTodo/Podfile.lock @@ -1,85 +1,134 @@ PODS: - - CocoaLumberjack (3.2.1): - - CocoaLumberjack/Default (= 3.2.1) - - CocoaLumberjack/Extensions (= 3.2.1) - - CocoaLumberjack/Default (3.2.1) - - CocoaLumberjack/Extensions (3.2.1): - - CocoaLumberjack/Default + - CocoaLumberjack (3.6.1): + - CocoaLumberjack/Core (= 3.6.1) + - CocoaLumberjack/Core (3.6.1) - Reachability (3.2) - - YapDatabase (3.0.1): - - YapDatabase/Standard (= 3.0.1) - - YapDatabase/Standard (3.0.1): - - YapDatabase/Standard/Core (= 3.0.1) - - YapDatabase/Standard/Extensions (= 3.0.1) - - YapDatabase/Standard/Core (3.0.1): - - CocoaLumberjack - - YapDatabase/Standard/Extensions (3.0.1): - - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/ActionManager (= 3.0.1) - - YapDatabase/Standard/Extensions/AutoView (= 3.0.1) - - YapDatabase/Standard/Extensions/CloudCore (= 3.0.1) - - YapDatabase/Standard/Extensions/CloudKit (= 3.0.1) - - YapDatabase/Standard/Extensions/ConnectionProxy (= 3.0.1) - - YapDatabase/Standard/Extensions/CrossProcessNotification (= 3.0.1) - - YapDatabase/Standard/Extensions/FilteredView (= 3.0.1) - - YapDatabase/Standard/Extensions/FullTextSearch (= 3.0.1) - - YapDatabase/Standard/Extensions/Hooks (= 3.0.1) - - YapDatabase/Standard/Extensions/ManualView (= 3.0.1) - - YapDatabase/Standard/Extensions/Relationships (= 3.0.1) - - YapDatabase/Standard/Extensions/RTreeIndex (= 3.0.1) - - YapDatabase/Standard/Extensions/SearchResultsView (= 3.0.1) - - YapDatabase/Standard/Extensions/SecondaryIndex (= 3.0.1) - - YapDatabase/Standard/Extensions/View (= 3.0.1) - - YapDatabase/Standard/Extensions/ActionManager (3.0.1): + - YapDatabase (4.0): + - YapDatabase/Standard (= 4.0) + - YapDatabase/Standard (4.0): + - YapDatabase/Standard/Core (= 4.0) + - YapDatabase/Standard/Extensions (= 4.0) + - YapDatabase/Standard-ObjC/Core (4.0) + - YapDatabase/Standard-ObjC/Extensions/ActionManager (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/AutoView + - YapDatabase/Standard-ObjC/Extensions/AutoView (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/View + - YapDatabase/Standard-ObjC/Extensions/CloudCore (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/CloudKit (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/CrossProcessNotification (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/FilteredView (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/View + - YapDatabase/Standard-ObjC/Extensions/FullTextSearch (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/Hooks (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/ManualView (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/View + - YapDatabase/Standard-ObjC/Extensions/Relationships (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/RTreeIndex (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/SearchResultsView (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/AutoView + - YapDatabase/Standard-ObjC/Extensions/FullTextSearch + - YapDatabase/Standard-ObjC/Extensions/SecondaryIndex (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/View (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard/Core (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard/Extensions (4.0): + - YapDatabase/Standard/Core + - YapDatabase/Standard/Extensions/ActionManager (= 4.0) + - YapDatabase/Standard/Extensions/AutoView (= 4.0) + - YapDatabase/Standard/Extensions/CloudCore (= 4.0) + - YapDatabase/Standard/Extensions/CloudKit (= 4.0) + - YapDatabase/Standard/Extensions/CrossProcessNotification (= 4.0) + - YapDatabase/Standard/Extensions/FilteredView (= 4.0) + - YapDatabase/Standard/Extensions/FullTextSearch (= 4.0) + - YapDatabase/Standard/Extensions/Hooks (= 4.0) + - YapDatabase/Standard/Extensions/ManualView (= 4.0) + - YapDatabase/Standard/Extensions/Relationships (= 4.0) + - YapDatabase/Standard/Extensions/RTreeIndex (= 4.0) + - YapDatabase/Standard/Extensions/SearchResultsView (= 4.0) + - YapDatabase/Standard/Extensions/SecondaryIndex (= 4.0) + - YapDatabase/Standard/Extensions/View (= 4.0) + - YapDatabase/Standard/Extensions/ActionManager (4.0): + - YapDatabase/Standard-ObjC/Extensions/ActionManager - YapDatabase/Standard/Core - YapDatabase/Standard/Extensions/AutoView - - YapDatabase/Standard/Extensions/AutoView (3.0.1): + - YapDatabase/Standard/Extensions/AutoView (4.0): + - YapDatabase/Standard-ObjC/Extensions/AutoView - YapDatabase/Standard/Core - YapDatabase/Standard/Extensions/View - - YapDatabase/Standard/Extensions/CloudCore (3.0.1): - - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/CloudKit (3.0.1): + - YapDatabase/Standard/Extensions/CloudCore (4.0): + - YapDatabase/Standard-ObjC/Extensions/CloudCore - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/ConnectionProxy (3.0.1): + - YapDatabase/Standard/Extensions/CloudKit (4.0): + - YapDatabase/Standard-ObjC/Extensions/CloudKit - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/CrossProcessNotification (3.0.1): + - YapDatabase/Standard/Extensions/CrossProcessNotification (4.0): + - YapDatabase/Standard-ObjC/Extensions/CrossProcessNotification - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/FilteredView (3.0.1): + - YapDatabase/Standard/Extensions/FilteredView (4.0): + - YapDatabase/Standard-ObjC/Extensions/FilteredView - YapDatabase/Standard/Core - YapDatabase/Standard/Extensions/View - - YapDatabase/Standard/Extensions/FullTextSearch (3.0.1): + - YapDatabase/Standard/Extensions/FullTextSearch (4.0): + - YapDatabase/Standard-ObjC/Extensions/FullTextSearch - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/Hooks (3.0.1): + - YapDatabase/Standard/Extensions/Hooks (4.0): + - YapDatabase/Standard-ObjC/Extensions/Hooks - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/ManualView (3.0.1): + - YapDatabase/Standard/Extensions/ManualView (4.0): + - YapDatabase/Standard-ObjC/Extensions/ManualView - YapDatabase/Standard/Core - YapDatabase/Standard/Extensions/View - - YapDatabase/Standard/Extensions/Relationships (3.0.1): + - YapDatabase/Standard/Extensions/Relationships (4.0): + - YapDatabase/Standard-ObjC/Extensions/Relationships - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/RTreeIndex (3.0.1): + - YapDatabase/Standard/Extensions/RTreeIndex (4.0): + - YapDatabase/Standard-ObjC/Extensions/RTreeIndex - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/SearchResultsView (3.0.1): + - YapDatabase/Standard/Extensions/SearchResultsView (4.0): + - YapDatabase/Standard-ObjC/Extensions/SearchResultsView - YapDatabase/Standard/Core - YapDatabase/Standard/Extensions/AutoView - YapDatabase/Standard/Extensions/FullTextSearch - - YapDatabase/Standard/Extensions/SecondaryIndex (3.0.1): + - YapDatabase/Standard/Extensions/SecondaryIndex (4.0): + - YapDatabase/Standard-ObjC/Extensions/SecondaryIndex - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/View (3.0.1): + - YapDatabase/Standard/Extensions/View (4.0): + - YapDatabase/Standard-ObjC/Extensions/View - YapDatabase/Standard/Core DEPENDENCIES: + - CocoaLumberjack - Reachability (= 3.2) - YapDatabase (from `../../`) +SPEC REPOS: + trunk: + - CocoaLumberjack + - Reachability + EXTERNAL SOURCES: YapDatabase: - :path: ../../ + :path: "../../" SPEC CHECKSUMS: - CocoaLumberjack: 2800c03334042fe80589423c8d80e582dcaec482 + CocoaLumberjack: b17ae15142558d08bbacf69775fa10c4abbebcc9 Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 - YapDatabase: 69ca88a2dfee305fde4412cf670c76f75aa7ccd0 + YapDatabase: 260b1b0b3e6ae6775383edc923e19813586615eb -PODFILE CHECKSUM: 39de1b3e71c8e5fd8a2fd5205a886ee12a55be4a +PODFILE CHECKSUM: 1c326ecdc28e0e570ea1384ed0b69727effe8a00 -COCOAPODS: 1.3.1 +COCOAPODS: 1.8.4 diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/CocoaLumberjack.swift b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/CocoaLumberjack.swift deleted file mode 100644 index 12626267c..000000000 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/CocoaLumberjack.swift +++ /dev/null @@ -1,95 +0,0 @@ -// Software License Agreement (BSD License) -// -// Copyright (c) 2014-2016, Deusty, LLC -// All rights reserved. -// -// Redistribution and use of this software in source and binary forms, -// with or without modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Neither the name of Deusty nor the names of its contributors may be used -// to endorse or promote products derived from this software without specific -// prior written permission of Deusty, LLC. - -import Foundation - -extension DDLogFlag { - public static func from(_ logLevel: DDLogLevel) -> DDLogFlag { - return DDLogFlag(rawValue: logLevel.rawValue) - } - - public init(_ logLevel: DDLogLevel) { - self = DDLogFlag(rawValue: logLevel.rawValue) - } - - ///returns the log level, or the lowest equivalant. - public func toLogLevel() -> DDLogLevel { - if let ourValid = DDLogLevel(rawValue: rawValue) { - return ourValid - } else { - if contains(.verbose) { - return .verbose - } else if contains(.debug) { - return .debug - } else if contains(.info) { - return .info - } else if contains(.warning) { - return .warning - } else if contains(.error) { - return .error - } else { - return .off - } - } - } -} - -public var defaultDebugLevel = DDLogLevel.verbose - -public func resetDefaultDebugLevel() { - defaultDebugLevel = DDLogLevel.verbose -} - -public func _DDLogMessage(_ message: @autoclosure () -> String, level: DDLogLevel, flag: DDLogFlag, context: Int, file: StaticString, function: StaticString, line: UInt, tag: Any?, asynchronous: Bool, ddlog: DDLog) { - if level.rawValue & flag.rawValue != 0 { - // Tell the DDLogMessage constructor to copy the C strings that get passed to it. - let logMessage = DDLogMessage(message: message(), level: level, flag: flag, context: context, file: String(describing: file), function: String(describing: function), line: line, tag: tag, options: [.copyFile, .copyFunction], timestamp: nil) - ddlog.log(asynchronous: asynchronous, message: logMessage) - } -} - -public func DDLogDebug(_ message: @autoclosure () -> String, level: DDLogLevel = defaultDebugLevel, context: Int = 0, file: StaticString = #file, function: StaticString = #function, line: UInt = #line, tag: Any? = nil, asynchronous async: Bool = true, ddlog: DDLog = DDLog.sharedInstance) { - _DDLogMessage(message, level: level, flag: .debug, context: context, file: file, function: function, line: line, tag: tag, asynchronous: async, ddlog: ddlog) -} - -public func DDLogInfo(_ message: @autoclosure () -> String, level: DDLogLevel = defaultDebugLevel, context: Int = 0, file: StaticString = #file, function: StaticString = #function, line: UInt = #line, tag: Any? = nil, asynchronous async: Bool = true, ddlog: DDLog = DDLog.sharedInstance) { - _DDLogMessage(message, level: level, flag: .info, context: context, file: file, function: function, line: line, tag: tag, asynchronous: async, ddlog: ddlog) -} - -public func DDLogWarn(_ message: @autoclosure () -> String, level: DDLogLevel = defaultDebugLevel, context: Int = 0, file: StaticString = #file, function: StaticString = #function, line: UInt = #line, tag: Any? = nil, asynchronous async: Bool = true, ddlog: DDLog = DDLog.sharedInstance) { - _DDLogMessage(message, level: level, flag: .warning, context: context, file: file, function: function, line: line, tag: tag, asynchronous: async, ddlog: ddlog) -} - -public func DDLogVerbose(_ message: @autoclosure () -> String, level: DDLogLevel = defaultDebugLevel, context: Int = 0, file: StaticString = #file, function: StaticString = #function, line: UInt = #line, tag: Any? = nil, asynchronous async: Bool = true, ddlog: DDLog = DDLog.sharedInstance) { - _DDLogMessage(message, level: level, flag: .verbose, context: context, file: file, function: function, line: line, tag: tag, asynchronous: async, ddlog: ddlog) -} - -public func DDLogError(_ message: @autoclosure () -> String, level: DDLogLevel = defaultDebugLevel, context: Int = 0, file: StaticString = #file, function: StaticString = #function, line: UInt = #line, tag: Any? = nil, asynchronous async: Bool = false, ddlog: DDLog = DDLog.sharedInstance) { - _DDLogMessage(message, level: level, flag: .error, context: context, file: file, function: function, line: line, tag: tag, asynchronous: async, ddlog: ddlog) -} - -/// Returns a String of the current filename, without full path or extension. -/// -/// Analogous to the C preprocessor macro `THIS_FILE`. -public func CurrentFileName(_ fileName: StaticString = #file) -> String { - var str = String(describing: fileName) - if let idx = str.range(of: "/", options: .backwards)?.upperBound { - str = str.substring(from: idx) - } - if let idx = str.range(of: ".", options: .backwards)?.lowerBound { - str = str.substring(to: idx) - } - return str -} diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDOSLogger.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDOSLogger.m deleted file mode 100644 index d63d969da..000000000 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDOSLogger.m +++ /dev/null @@ -1,77 +0,0 @@ -// Software License Agreement (BSD License) -// -// Copyright (c) 2010-2016, Deusty, LLC -// All rights reserved. -// -// Redistribution and use of this software in source and binary forms, -// with or without modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Neither the name of Deusty nor the names of its contributors may be used -// to endorse or promote products derived from this software without specific -// prior written permission of Deusty, LLC. - -#import "DDOSLogger.h" -#import - -static DDOSLogger *sharedInstance; - -@implementation DDOSLogger - -+ (instancetype)sharedInstance { - static dispatch_once_t DDOSLoggerOnceToken; - - dispatch_once(&DDOSLoggerOnceToken, ^{ - sharedInstance = [[[self class] alloc] init]; - }); - - return sharedInstance; -} - -- (instancetype)init { - if (sharedInstance != nil) { - return nil; - } - - if (self = [super init]) { - return self; - } - - return nil; -} - -- (void)logMessage:(DDLogMessage *)logMessage { - // Skip captured log messages - if ([logMessage->_fileName isEqualToString:@"DDASLLogCapture"]) { - return; - } - - NSString * message = _logFormatter ? [_logFormatter formatLogMessage:logMessage] : logMessage->_message; - - if (message) { - const char *msg = [message UTF8String]; - - switch (logMessage->_flag) { - case DDLogFlagError : - os_log_error(OS_LOG_DEFAULT, "%{public}s", msg); - break; - case DDLogFlagWarning : - case DDLogFlagInfo : - os_log_info(OS_LOG_DEFAULT, "%{public}s", msg); - break; - case DDLogFlagDebug : - case DDLogFlagVerbose : - default : - os_log_debug(OS_LOG_DEFAULT, "%{public}s", msg); - break; - } - } -} - -- (NSString *)loggerName { - return @"cocoa.lumberjack.osLogger"; -} - -@end diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Framework/Lumberjack/CocoaLumberjack.modulemap b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Framework/Lumberjack/CocoaLumberjack.modulemap deleted file mode 100644 index 032ae65de..000000000 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Framework/Lumberjack/CocoaLumberjack.modulemap +++ /dev/null @@ -1,36 +0,0 @@ -framework module CocoaLumberjack { - umbrella header "CocoaLumberjack.h" - - export * - module * { export * } - - textual header "DDLogMacros.h" - - exclude header "DDLog+LOGV.h" - exclude header "DDLegacyMacros.h" - - explicit module DDContextFilterLogFormatter { - header "DDContextFilterLogFormatter.h" - export * - } - - explicit module DDDispatchQueueLogFormatter { - header "DDDispatchQueueLogFormatter.h" - export * - } - - explicit module DDMultiFormatter { - header "DDMultiFormatter.h" - export * - } - - explicit module DDASLLogCapture { - header "DDASLLogCapture.h" - export * - } - - explicit module DDAbstractDatabaseLogger { - header "DDAbstractDatabaseLogger.h" - export * - } -} diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/LICENSE b/Examples/CloudKitTodo/Pods/CocoaLumberjack/LICENSE new file mode 100644 index 000000000..029cd9e79 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/LICENSE @@ -0,0 +1,14 @@ +BSD 3-Clause License + +Copyright (c) 2010-2020, Deusty, LLC +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of Deusty nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission of Deusty, LLC. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/LICENSE.txt b/Examples/CloudKitTodo/Pods/CocoaLumberjack/LICENSE.txt deleted file mode 100644 index f2169a1ac..000000000 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/LICENSE.txt +++ /dev/null @@ -1,18 +0,0 @@ -Software License Agreement (BSD License) - -Copyright (c) 2010-2016, Deusty, LLC -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Neither the name of Deusty nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of Deusty, LLC. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/README.md b/Examples/CloudKitTodo/Pods/CocoaLumberjack/README.md index 74aa6e78b..846de9cd5 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/README.md +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/README.md @@ -1,5 +1,5 @@

- +

CocoaLumberjack @@ -9,67 +9,92 @@ CocoaLumberjack [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Pod Platform](http://img.shields.io/cocoapods/p/CocoaLumberjack.svg?style=flat)](http://cocoadocs.org/docsets/CocoaLumberjack/) [![Pod License](http://img.shields.io/cocoapods/l/CocoaLumberjack.svg?style=flat)](http://opensource.org/licenses/BSD-3-Clause) -[![Reference Status](https://www.versioneye.com/objective-c/cocoalumberjack/reference_badge.svg?style=flat)](https://www.versioneye.com/objective-c/cocoalumberjack/references) [![codecov](https://codecov.io/gh/CocoaLumberjack/CocoaLumberjack/branch/master/graph/badge.svg)](https://codecov.io/gh/CocoaLumberjack/CocoaLumberjack) +[![codebeat badge](https://codebeat.co/badges/840b714a-c8f3-4936-ada4-363473cd4e6b)](https://codebeat.co/projects/github-com-cocoalumberjack-cocoalumberjack-master) + **CocoaLumberjack** is a fast & simple, yet powerful & flexible logging framework for Mac and iOS. ### How to get started -- install via [CocoaPods](http://cocoapods.org) -##### Swift version via CocoaPods +First, install CocoaLumberjack via [CocoaPods](http://cocoapods.org), [Carthage](https://github.com/Carthage/Carthage), [Swift Package Manager](https://swift.org/package-manager/) or manually. +Then use `DDOSLogger` for iOS 10 and later, or `DDTTYLogger` and `DDASLLogger` for earlier versions to begin logging messages. + +#### CocoaPods + ```ruby platform :ios, '8.0' -# You need to set target when you use CocoaPods 1.0.0 or later. -target 'SampleTarget' do +target 'SampleTarget' do use_frameworks! pod 'CocoaLumberjack/Swift' end ``` -Note: `Swift` is a subspec which will include all the Obj-C code plus the Swift one, so this is sufficient. +Note: `Swift` is a subspec which will include all the Obj-C code plus the Swift one, so this is sufficient. For more details about how to use Swift with Lumberjack, see [this conversation](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/405). -##### Swift Usage +For Objective-C use the following: +```ruby +platform :ios, '8.0' + +target 'SampleTarget' do + pod 'CocoaLumberjack' +end +``` + +#### Carthage + +Carthage is a lightweight dependency manager for Swift and Objective-C. It leverages CocoaTouch modules and is less invasive than CocoaPods. + +To install with Carthage, follow the instruction on [Carthage](https://github.com/Carthage/Carthage) + +Cartfile +``` +github "CocoaLumberjack/CocoaLumberjack" +``` + + +#### Swift Package Manager + +As of CocoaLumberjack 3.6.0, you can use the Swift Package Manager as integration method. +If you want to use the Swift Package Manager as integration method, either use Xcode to add the package dependency or add the following dependency to your Package.swift: -If you installed using CocoaPods or manually: ```swift -import CocoaLumberjack +.package(url: "https://github.com/CocoaLumberjack/CocoaLumberjack.git", from: "3.6.0"), ``` +#### Install manually + +If you want to install CocoaLumberjack manually, read the [manual installation](https://raw.githubusercontent.com/CocoaLumberjack/CocoaLumberjack/master/Documentation/GettingStarted.md#manual-installation) guide for more information. + +#### Swift Usage + +Usually, you can simply `import CocoaLumberjackSwift`. If you installed CocoaLumberjack using CocoaPods, you need to use `import CocoaLumberjack` instead. + ```swift -DDLog.add(DDTTYLogger.sharedInstance) // TTY = Xcode console -DDLog.add(DDASLLogger.sharedInstance) // ASL = Apple System Logs +DDLog.add(DDOSLogger.sharedInstance) // Uses os_log let fileLogger: DDFileLogger = DDFileLogger() // File Logger -fileLogger.rollingFrequency = TimeInterval(60*60*24) // 24 hours +fileLogger.rollingFrequency = 60 * 60 * 24 // 24 hours fileLogger.logFileManager.maximumNumberOfLogFiles = 7 DDLog.add(fileLogger) ... -DDLogVerbose("Verbose"); -DDLogDebug("Debug"); -DDLogInfo("Info"); -DDLogWarn("Warn"); -DDLogError("Error"); +DDLogVerbose("Verbose") +DDLogDebug("Debug") +DDLogInfo("Info") +DDLogWarn("Warn") +DDLogError("Error") ``` -##### Obj-C version via CocoaPods - -```ruby -platform :ios, '7.0' -pod 'CocoaLumberjack' -``` - -##### Obj-C usage -If you're using Lumberjack as a framework, you can `@import CocoaLumberjack`. +#### Obj-C usage +If you're using Lumberjack as a framework, you can `@import CocoaLumberjack;`. Otherwise, `#import ` ```objc -[DDLog addLogger:[DDTTYLogger sharedInstance]]; // TTY = Xcode console -[DDLog addLogger:[DDASLLogger sharedInstance]]; // ASL = Apple System Logs +[DDLog addLogger:[DDOSLogger sharedInstance]]; // Uses os_log DDFileLogger *fileLogger = [[DDFileLogger alloc] init]; // File Logger fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling @@ -85,22 +110,13 @@ DDLogWarn(@"Warn"); DDLogError(@"Error"); ``` -##### Installation with Carthage (iOS 8+) - -[Carthage](https://github.com/Carthage/Carthage) is a lightweight dependency manager for Swift and Objective-C. It leverages CocoaTouch modules and is less invasive than CocoaPods. +#### More information -To install with Carthage, follow the instruction on [Carthage](https://github.com/Carthage/Carthage) - -Cartfile -``` -github "CocoaLumberjack/CocoaLumberjack" -``` - -- or [install manually](Documentation/GettingStarted.md#manual-installation) -- read the [Getting started](Documentation/GettingStarted.md) guide, check out the [FAQ](Documentation/FAQ.md) section or the other [docs](Documentation/) +- read the [Getting started](https://raw.githubusercontent.com/CocoaLumberjack/CocoaLumberjack/master/Documentation/GettingStarted.md) guide, check out the [FAQ](https://raw.githubusercontent.com/CocoaLumberjack/CocoaLumberjack/master/Documentation/FAQ.md) section or the other [docs](Documentation/) - if you find issues or want to suggest improvements, create an issue or a pull request - for all kinds of questions involving CocoaLumberjack, use the [Google group](http://groups.google.com/group/cocoalumberjack) or StackOverflow (use [#lumberjack](http://stackoverflow.com/questions/tagged/lumberjack)). + ### CocoaLumberjack 3 #### Migrating to 3.x @@ -138,27 +154,31 @@ Configure your logging however you want. Change log levels per file (perfect for ### Documentation -- **[Get started using Lumberjack](Documentation/GettingStarted.md)**
-- [Different log levels for Debug and Release builds](Documentation/XcodeTricks.md)
-- [Different log levels for each logger](Documentation/PerLoggerLogLevels.md)
-- [Use colors in the Xcode debugging console](Documentation/XcodeColors.md)
-- [Write your own custom formatters](Documentation/CustomFormatters.md)
-- [FAQ](Documentation/FAQ.md)
-- [Analysis of performance with benchmarks](Documentation/Performance.md)
-- [Common issues you may encounter and their solutions](Documentation/ProblemSolution.md)
-- [AppCode support](Documentation/AppCode-support.md) +- **[Get started using Lumberjack](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/Documentation/GettingStarted.md)**
+- [Different log levels for Debug and Release builds](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/Documentation/XcodeTricks.md)
+- [Different log levels for each logger](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/Documentation/PerLoggerLogLevels.md)
+- [Use colors in the Xcode debugging console](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/Documentation/XcodeColors.md)
+- [Write your own custom formatters](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/Documentation/CustomFormatters.md)
+- [FAQ](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/Documentation/FAQ.md)
+- [Analysis of performance with benchmarks](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/Documentation/Performance.md)
+- [Common issues you may encounter and their solutions](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/Documentation/ProblemSolution.md)
+- [AppCode support](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/Documentation/AppCode-support.md) - **[Full Lumberjack documentation](Documentation/)**
-### Requirements +### Requirements The current version of Lumberjack requires: -- Xcode 8 or later -- Swift 3.0 or later -- iOS 5 or later -- OS X 10.7 or later -- WatchOS 2 or later -- TVOS 9 or later - -#### Backwards compability +- Xcode 11 or later +- Swift 5.0 or later +- iOS 8 or later +- macOS 10.10 or later +- watchOS 3 or later +- tvOS 9 or later + +#### Backwards compatibility +- for Xcode 10 and Swift 4.2, use the 3.5.2 version +- for iOS 6, iOS 7, OS X 10.8, OS X 10.9 and Xcode 9, use the 3.4.2 version +- for iOS 5 and OS X 10.7, use the 3.3 version +- for Xcode 8 and Swift 3, use the 3.2 version - for Xcode 7.3 and Swift 2.3, use the 2.4.0 version - for Xcode 7.3 and Swift 2.2, use the 2.3.0 version - for Xcode 7.2 and 7.1, use the 2.2.0 version @@ -183,12 +203,23 @@ The current version of Lumberjack requires: - [Dmitry Vorobyov](https://github.com/dvor) - [Bogdan Poplauschi](https://github.com/bpoplauschi) - [C.W. Betts](https://github.com/MaddTheSane) +- [Koichi Yokota (sushichop)](https://github.com/sushichop) +- [Nick Brook](https://github.com/nrbrook) +- [Florian Friedrich](https://github.com/ffried) +- [Stephan Diederich](https://github.com/diederich) +- [Kent Sutherland](https://github.com/ksuther) +- [Dmitry Lobanov](https://github.com/lolgear) +- [Hakon Hanesand](https://github.com/hhanesand) ### License -- CocoaLumberjack is available under the BSD license. See the [LICENSE file](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/LICENSE.txt). +- CocoaLumberjack is available under the BSD 3 license. See the [LICENSE file](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/LICENSE). + +### Extensions +- [LogIO-CocoaLumberjack](https://github.com/s4nchez/LogIO-CocoaLumberjack) A log.io logger for CocoaLumberjack +- [XCDLumberjackNSLogger](https://github.com/0xced/XCDLumberjackNSLogger) CocoaLumberjack logger which sends logs to NSLogger ### Architecture

- +

diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/CLI/CLIColor.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/CLI/CLIColor.m new file mode 100644 index 000000000..949dc7350 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/CLI/CLIColor.m @@ -0,0 +1,55 @@ +// Software License Agreement (BSD License) +// +// Copyright (c) 2010-2020, Deusty, LLC +// All rights reserved. +// +// Redistribution and use of this software in source and binary forms, +// with or without modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Neither the name of Deusty nor the names of its contributors may be used +// to endorse or promote products derived from this software without specific +// prior written permission of Deusty, LLC. + +#if TARGET_OS_OSX + +#import "CLIColor.h" + +@interface CLIColor () { + CGFloat _red, _green, _blue, _alpha; +} + +@end + + +@implementation CLIColor + ++ (instancetype)colorWithCalibratedRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha { + CLIColor *color = [CLIColor new]; + color->_red = red; + color->_green = green; + color->_blue = blue; + color->_alpha = alpha; + return color; +} + +- (void)getRed:(CGFloat *)red green:(CGFloat *)green blue:(CGFloat *)blue alpha:(CGFloat *)alpha { + if (red) { + *red = _red; + } + if (green) { + *green = _green; + } + if (blue) { + *blue = _blue; + } + if (alpha) { + *alpha = _alpha; + } +} + +@end + +#endif diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDASLLogCapture.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDASLLogCapture.m similarity index 80% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDASLLogCapture.m rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDASLLogCapture.m index 4341d6dfd..557f12f69 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDASLLogCapture.m +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDASLLogCapture.m @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -13,14 +13,14 @@ // to endorse or promote products derived from this software without specific // prior written permission of Deusty, LLC. -#import "DDASLLogCapture.h" +#import // Disable legacy macros #ifndef DD_LEGACY_MACROS #define DD_LEGACY_MACROS 0 #endif -#import "DDLog.h" +#if !TARGET_OS_WATCH #include #include @@ -30,40 +30,8 @@ static BOOL _cancel = YES; static DDLogLevel _captureLevel = DDLogLevelVerbose; -#ifdef __IPHONE_8_0 - #define DDASL_IOS_PIVOT_VERSION __IPHONE_8_0 -#endif -#ifdef __MAC_10_10 - #define DDASL_OSX_PIVOT_VERSION __MAC_10_10 -#endif - @implementation DDASLLogCapture -static aslmsg (*dd_asl_next)(aslresponse obj); -static void (*dd_asl_release)(aslresponse obj); - -+ (void)initialize -{ - #if (defined(DDASL_IOS_PIVOT_VERSION) && __IPHONE_OS_VERSION_MAX_ALLOWED >= DDASL_IOS_PIVOT_VERSION) || (defined(DDASL_OSX_PIVOT_VERSION) && __MAC_OS_X_VERSION_MAX_ALLOWED >= DDASL_OSX_PIVOT_VERSION) - #if __IPHONE_OS_VERSION_MIN_REQUIRED < DDASL_IOS_PIVOT_VERSION || __MAC_OS_X_VERSION_MIN_REQUIRED < DDASL_OSX_PIVOT_VERSION - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wdeprecated-declarations" - // Building on falsely advertised SDK, targeting deprecated API - dd_asl_next = &aslresponse_next; - dd_asl_release = &aslresponse_free; - #pragma GCC diagnostic pop - #else - // Building on lastest, correct SDK, targeting latest API - dd_asl_next = &asl_next; - dd_asl_release = &asl_release; - #endif - #else - // Building on old SDKs, targeting deprecated API - dd_asl_next = &aslresponse_next; - dd_asl_release = &aslresponse_free; - #endif -} - + (void)start { // Ignore subsequent calls if (!_cancel) { @@ -99,10 +67,10 @@ + (void)configureAslQuery:(aslmsg)query { // Don't retrieve logs from our own DDASLLogger asl_set_query(query, kDDASLKeyDDLog, kDDASLDDLogValue, ASL_QUERY_OP_NOT_EQUAL); -#if !TARGET_OS_IPHONE || TARGET_SIMULATOR +#if !TARGET_OS_IPHONE || (defined(TARGET_SIMULATOR) && TARGET_SIMULATOR) int processId = [[NSProcessInfo processInfo] processIdentifier]; char pid[16]; - sprintf(pid, "%d", processId); + snprintf(pid, sizeof(pid), "%d", processId); asl_set_query(query, ASL_KEY_PID, pid, ASL_QUERY_OP_EQUAL | ASL_QUERY_OP_NUMERIC); #endif } @@ -112,7 +80,7 @@ + (void)aslMessageReceived:(aslmsg)msg { if ( messageCString == NULL ) return; - int flag; + DDLogFlag flag; BOOL async; const char* levelCString = asl_get(msg, ASL_KEY_LEVEL); @@ -149,7 +117,7 @@ + (void)aslMessageReceived:(aslmsg)msg { flag:flag context:0 file:@"DDASLLogCapture" - function:0 + function:nil line:0 tag:nil options:0 @@ -171,7 +139,7 @@ + (void)captureAslLogs { .tv_sec = 0 }; gettimeofday(&timeval, NULL); - unsigned long long startTime = timeval.tv_sec; + unsigned long long startTime = (unsigned long long)timeval.tv_sec; __block unsigned long long lastSeenID = 0; /* @@ -207,14 +175,14 @@ syslogd posts kNotifyASLDBUpdate (com.apple.system.logger.message) aslmsg msg; aslresponse response = asl_search(NULL, query); - while ((msg = dd_asl_next(response))) + while ((msg = asl_next(response))) { [self aslMessageReceived:msg]; // Keep track of which messages we've seen. - lastSeenID = atoll(asl_get(msg, ASL_KEY_MSG_ID)); + lastSeenID = (unsigned long long)atoll(asl_get(msg, ASL_KEY_MSG_ID)); } - dd_asl_release(response); + asl_release(response); asl_free(query); if (_cancel) { @@ -228,3 +196,5 @@ syslogd posts kNotifyASLDBUpdate (com.apple.system.logger.message) } @end + +#endif diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDASLLogger.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDASLLogger.m similarity index 93% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDASLLogger.m rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDASLLogger.m index 61c11727e..eadad91cf 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDASLLogger.m +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDASLLogger.m @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -13,7 +13,9 @@ // to endorse or promote products derived from this software without specific // prior written permission of Deusty, LLC. -#import "DDASLLogger.h" +#import + +#if !TARGET_OS_WATCH #import #if !__has_feature(objc_arc) @@ -60,6 +62,10 @@ - (instancetype)init { return self; } +- (DDLoggerName)loggerName { + return DDLoggerNameASL; +} + - (void)logMessage:(DDLogMessage *)logMessage { // Skip captured log messages if ([logMessage->_fileName isEqualToString:@"DDASLLogCapture"]) { @@ -90,7 +96,7 @@ - (void)logMessage:(DDLogMessage *)logMessage { char readUIDString[16]; #ifndef NS_BLOCK_ASSERTIONS - size_t l = snprintf(readUIDString, sizeof(readUIDString), "%d", readUID); + size_t l = (size_t)snprintf(readUIDString, sizeof(readUIDString), "%d", readUID); #else snprintf(readUIDString, sizeof(readUIDString), "%d", readUID); #endif @@ -114,8 +120,6 @@ - (void)logMessage:(DDLogMessage *)logMessage { } } -- (NSString *)loggerName { - return @"cocoa.lumberjack.aslLogger"; -} - @end + +#endif diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDAbstractDatabaseLogger.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDAbstractDatabaseLogger.m similarity index 93% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDAbstractDatabaseLogger.m rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDAbstractDatabaseLogger.m index af37bdbe2..429ae4f49 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDAbstractDatabaseLogger.m +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDAbstractDatabaseLogger.m @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -13,8 +13,7 @@ // to endorse or promote products derived from this software without specific // prior written permission of Deusty, LLC. -#import "DDAbstractDatabaseLogger.h" -#import +#import #if !__has_feature(objc_arc) @@ -52,7 +51,7 @@ - (void)dealloc { #pragma mark Override Me //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -- (BOOL)db_log:(DDLogMessage *)logMessage { +- (BOOL)db_log:(__unused DDLogMessage *)logMessage { // Override me and add your implementation. // // Return YES if an item was added to the buffer. @@ -127,7 +126,7 @@ - (void)destroySaveTimer { - (void)updateAndResumeSaveTimer { if ((_saveTimer != NULL) && (_saveInterval > 0.0) && (_unsavedTime > 0.0)) { uint64_t interval = (uint64_t)(_saveInterval * (NSTimeInterval) NSEC_PER_SEC); - dispatch_time_t startTime = dispatch_time(_unsavedTime, interval); + dispatch_time_t startTime = dispatch_time(_unsavedTime, (int64_t)interval); dispatch_source_set_timer(_saveTimer, startTime, interval, 1ull * NSEC_PER_SEC); @@ -162,7 +161,7 @@ - (void)destroyDeleteTimer { - (void)updateDeleteTimer { if ((_deleteTimer != NULL) && (_deleteInterval > 0.0) && (_maxAge > 0.0)) { - uint64_t interval = (uint64_t)(_deleteInterval * (NSTimeInterval) NSEC_PER_SEC); + int64_t interval = (int64_t)(_deleteInterval * (NSTimeInterval) NSEC_PER_SEC); dispatch_time_t startTime; if (_lastDeleteTime > 0) { @@ -171,7 +170,7 @@ - (void)updateDeleteTimer { startTime = dispatch_time(DISPATCH_TIME_NOW, interval); } - dispatch_source_set_timer(_deleteTimer, startTime, interval, 1ull * NSEC_PER_SEC); + dispatch_source_set_timer(_deleteTimer, startTime, (uint64_t)interval, 1ull * NSEC_PER_SEC); } } @@ -217,7 +216,7 @@ - (NSUInteger)saveThreshold { dispatch_sync(globalLoggingQueue, ^{ dispatch_sync(self.loggerQueue, ^{ - result = _saveThreshold; + result = self->_saveThreshold; }); }); @@ -227,15 +226,15 @@ - (NSUInteger)saveThreshold { - (void)setSaveThreshold:(NSUInteger)threshold { dispatch_block_t block = ^{ @autoreleasepool { - if (_saveThreshold != threshold) { - _saveThreshold = threshold; + if (self->_saveThreshold != threshold) { + self->_saveThreshold = threshold; // Since the saveThreshold has changed, // we check to see if the current unsavedCount has surpassed the new threshold. // // If it has, we immediately save the log. - if ((_unsavedCount >= _saveThreshold) && (_saveThreshold > 0)) { + if ((self->_unsavedCount >= self->_saveThreshold) && (self->_saveThreshold > 0)) { [self performSaveAndSuspendSaveTimer]; } } @@ -277,7 +276,7 @@ - (NSTimeInterval)saveInterval { dispatch_sync(globalLoggingQueue, ^{ dispatch_sync(self.loggerQueue, ^{ - result = _saveInterval; + result = self->_saveInterval; }); }); @@ -290,8 +289,8 @@ - (void)setSaveInterval:(NSTimeInterval)interval { // C99 recommended floating point comparison macro // Read: isLessThanOrGreaterThan(floatA, floatB) - if (/* saveInterval != interval */ islessgreater(_saveInterval, interval)) { - _saveInterval = interval; + if (/* saveInterval != interval */ islessgreater(self->_saveInterval, interval)) { + self->_saveInterval = interval; // There are several cases we need to handle here. // @@ -306,8 +305,8 @@ - (void)setSaveInterval:(NSTimeInterval)interval { // 4. If the saveInterval decreased, then we need to reset the timer so that it fires at an earlier date. // (Plus we might need to do an immediate save.) - if (_saveInterval > 0.0) { - if (_saveTimer == NULL) { + if (self->_saveInterval > 0.0) { + if (self->_saveTimer == NULL) { // Handles #2 // // Since the saveTimer uses the unsavedTime to calculate it's first fireDate, @@ -324,7 +323,7 @@ - (void)setSaveInterval:(NSTimeInterval)interval { [self updateAndResumeSaveTimer]; } - } else if (_saveTimer) { + } else if (self->_saveTimer) { // Handles #1 [self destroySaveTimer]; @@ -368,7 +367,7 @@ - (NSTimeInterval)maxAge { dispatch_sync(globalLoggingQueue, ^{ dispatch_sync(self.loggerQueue, ^{ - result = _maxAge; + result = self->_maxAge; }); }); @@ -381,11 +380,11 @@ - (void)setMaxAge:(NSTimeInterval)interval { // C99 recommended floating point comparison macro // Read: isLessThanOrGreaterThan(floatA, floatB) - if (/* maxAge != interval */ islessgreater(_maxAge, interval)) { - NSTimeInterval oldMaxAge = _maxAge; + if (/* maxAge != interval */ islessgreater(self->_maxAge, interval)) { + NSTimeInterval oldMaxAge = self->_maxAge; NSTimeInterval newMaxAge = interval; - _maxAge = interval; + self->_maxAge = interval; // There are several cases we need to handle here. // @@ -420,7 +419,7 @@ - (void)setMaxAge:(NSTimeInterval)interval { if (shouldDeleteNow) { [self performDelete]; - if (_deleteTimer) { + if (self->_deleteTimer) { [self updateDeleteTimer]; } else { [self createAndStartDeleteTimer]; @@ -465,7 +464,7 @@ - (NSTimeInterval)deleteInterval { dispatch_sync(globalLoggingQueue, ^{ dispatch_sync(self.loggerQueue, ^{ - result = _deleteInterval; + result = self->_deleteInterval; }); }); @@ -478,8 +477,8 @@ - (void)setDeleteInterval:(NSTimeInterval)interval { // C99 recommended floating point comparison macro // Read: isLessThanOrGreaterThan(floatA, floatB) - if (/* deleteInterval != interval */ islessgreater(_deleteInterval, interval)) { - _deleteInterval = interval; + if (/* deleteInterval != interval */ islessgreater(self->_deleteInterval, interval)) { + self->_deleteInterval = interval; // There are several cases we need to handle here. // @@ -494,8 +493,8 @@ - (void)setDeleteInterval:(NSTimeInterval)interval { // 4. If the deleteInterval decreased, then we need to reset the timer so that it fires at an earlier date. // (Plus we might need to do an immediate delete.) - if (_deleteInterval > 0.0) { - if (_deleteTimer == NULL) { + if (self->_deleteInterval > 0.0) { + if (self->_deleteTimer == NULL) { // Handles #2 // // Since the deleteTimer uses the lastDeleteTime to calculate it's first fireDate, @@ -511,7 +510,7 @@ - (void)setDeleteInterval:(NSTimeInterval)interval { [self updateDeleteTimer]; } - } else if (_deleteTimer) { + } else if (self->_deleteTimer) { // Handles #1 [self destroyDeleteTimer]; @@ -555,7 +554,7 @@ - (BOOL)deleteOnEverySave { dispatch_sync(globalLoggingQueue, ^{ dispatch_sync(self.loggerQueue, ^{ - result = _deleteOnEverySave; + result = self->_deleteOnEverySave; }); }); @@ -564,7 +563,7 @@ - (BOOL)deleteOnEverySave { - (void)setDeleteOnEverySave:(BOOL)flag { dispatch_block_t block = ^{ - _deleteOnEverySave = flag; + self->_deleteOnEverySave = flag; }; // The design of the setter logic below is taken from the DDAbstractLogger implementation. diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDOSLogger.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDFileLogger+Internal.h similarity index 54% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDOSLogger.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDFileLogger+Internal.h index f08665865..82d46080f 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDOSLogger.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDFileLogger+Internal.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -13,26 +13,19 @@ // to endorse or promote products derived from this software without specific // prior written permission of Deusty, LLC. -#import +#import -// Disable legacy macros -#ifndef DD_LEGACY_MACROS - #define DD_LEGACY_MACROS 0 -#endif +NS_ASSUME_NONNULL_BEGIN -#import "DDLog.h" +@interface DDFileLogger (Internal) -/** - * This class provides a logger for the Apple os_log facility. - **/ -API_AVAILABLE(ios(10.0), macos(10.12), tvos(10.0), watchos(3.0)) -@interface DDOSLogger : DDAbstractLogger +- (void)logData:(NSData *)data; -/** - * Singleton method - * - * @return the shared instance - */ -@property (class, readonly, strong) DDOSLogger *sharedInstance; +// Will assert if used outside logger's queue. +- (void)lt_logData:(NSData *)data; + +- (nullable NSData *)lt_dataForMessage:(DDLogMessage *)message; @end + +NS_ASSUME_NONNULL_END diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDFileLogger.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDFileLogger.m similarity index 58% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDFileLogger.m rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDFileLogger.m index 066815c7c..10f2324c9 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDFileLogger.m +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDFileLogger.m @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -13,12 +13,11 @@ // to endorse or promote products derived from this software without specific // prior written permission of Deusty, LLC. -#import "DDFileLogger.h" +#import + +#import "DDFileLogger+Internal.h" -#import -#import #import -#import #if !__has_feature(objc_arc) #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). @@ -51,11 +50,14 @@ NSUInteger const kDDDefaultLogMaxNumLogFiles = 5; // 5 Files unsigned long long const kDDDefaultLogFilesDiskQuota = 20 * 1024 * 1024; // 20 MB +NSTimeInterval const kDDRollingLeeway = 1.0; // 1s + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @interface DDLogFileManagerDefault () { + NSDateFormatter *_fileDateFormatter; NSUInteger _maximumNumberOfLogFiles; unsigned long long _logFilesDiskQuota; NSString *_logsDirectory; @@ -64,9 +66,6 @@ @interface DDLogFileManagerDefault () { #endif } -- (void)deleteOldLogFiles; -- (NSString *)defaultLogsDirectory; - @end @implementation DDLogFileManagerDefault @@ -74,17 +73,30 @@ @implementation DDLogFileManagerDefault @synthesize maximumNumberOfLogFiles = _maximumNumberOfLogFiles; @synthesize logFilesDiskQuota = _logFilesDiskQuota; ++ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)theKey { + + if ([theKey isEqualToString:@"maximumNumberOfLogFiles"] || [theKey isEqualToString:@"logFilesDiskQuota"]) { + return NO; + } else { + return [super automaticallyNotifiesObserversForKey:theKey]; + } +} - (instancetype)init { return [self initWithLogsDirectory:nil]; } -- (instancetype)initWithLogsDirectory:(NSString *)aLogsDirectory { +- (instancetype)initWithLogsDirectory:(nullable NSString *)aLogsDirectory { if ((self = [super init])) { _maximumNumberOfLogFiles = kDDDefaultLogMaxNumLogFiles; _logFilesDiskQuota = kDDDefaultLogFilesDiskQuota; - if (aLogsDirectory) { + _fileDateFormatter = [[NSDateFormatter alloc] init]; + [_fileDateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; + [_fileDateFormatter setDateFormat: @"yyyy'-'MM'-'dd'--'HH'-'mm'-'ss'-'SSS'"]; + [_fileDateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; + + if (aLogsDirectory.length > 0) { _logsDirectory = [aLogsDirectory copy]; } else { _logsDirectory = [[self defaultLogsDirectory] copy]; @@ -102,20 +114,10 @@ - (instancetype)initWithLogsDirectory:(NSString *)aLogsDirectory { return self; } -+ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)theKey -{ - BOOL automatic = NO; - if ([theKey isEqualToString:@"maximumNumberOfLogFiles"] || [theKey isEqualToString:@"logFilesDiskQuota"]) { - automatic = NO; - } else { - automatic = [super automaticallyNotifiesObserversForKey:theKey]; - } - - return automatic; -} - #if TARGET_OS_IPHONE -- (instancetype)initWithLogsDirectory:(NSString *)logsDirectory defaultFileProtectionLevel:(NSFileProtectionType)fileProtectionLevel { +- (instancetype)initWithLogsDirectory:(NSString *)logsDirectory + defaultFileProtectionLevel:(NSFileProtectionType)fileProtectionLevel { + if ((self = [self initWithLogsDirectory:logsDirectory])) { if ([fileProtectionLevel isEqualToString:NSFileProtectionNone] || [fileProtectionLevel isEqualToString:NSFileProtectionComplete] || @@ -144,14 +146,13 @@ - (void)dealloc { //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - (void)observeValueForKeyPath:(NSString *)keyPath - ofObject:(id)object + ofObject:(__unused id)object change:(NSDictionary *)change - context:(void *)context { + context:(__unused void *)context { NSNumber *old = change[NSKeyValueChangeOldKey]; NSNumber *new = change[NSKeyValueChangeNewKey]; if ([old isEqual:new]) { - // No change in value - don't bother with any processing. return; } @@ -159,11 +160,26 @@ - (void)observeValueForKeyPath:(NSString *)keyPath [keyPath isEqualToString:NSStringFromSelector(@selector(logFilesDiskQuota))]) { NSLogInfo(@"DDFileLogManagerDefault: Responding to configuration change: %@", keyPath); - dispatch_async([DDLog loggingQueue], ^{ @autoreleasepool { - [self deleteOldLogFiles]; - } }); + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + @autoreleasepool { + // See method header for queue reasoning. + [self deleteOldLogFiles]; + } + }); + } +} + +#if TARGET_OS_IPHONE +- (NSFileProtectionType)logFileProtection { + if (_defaultFileProtectionLevel.length > 0) { + return _defaultFileProtectionLevel; + } else if (doesAppRunInBackground()) { + return NSFileProtectionCompleteUntilFirstUserAuthentication; + } else { + return NSFileProtectionCompleteUnlessOpen; } } +#endif //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark File Deleting @@ -171,12 +187,14 @@ - (void)observeValueForKeyPath:(NSString *)keyPath /** * Deletes archived log files that exceed the maximumNumberOfLogFiles or logFilesDiskQuota configuration values. + * Method may take a while to execute since we're performing IO. It's not critical that this is synchronized with + * log output, since the files we're deleting are all archived and not in use, therefore this method is called on a + * background queue. **/ - (void)deleteOldLogFiles { NSLogVerbose(@"DDLogFileManagerDefault: deleteOldLogFiles"); NSArray *sortedLogFileInfos = [self sortedLogFileInfos]; - NSUInteger firstIndexToDelete = NSNotFound; const unsigned long long diskQuota = self.logFilesDiskQuota; @@ -221,14 +239,18 @@ - (void)deleteOldLogFiles { } if (firstIndexToDelete != NSNotFound) { - // removing all logfiles starting with firstIndexToDelete + // removing all log files starting with firstIndexToDelete for (NSUInteger i = firstIndexToDelete; i < sortedLogFileInfos.count; i++) { DDLogFileInfo *logFileInfo = sortedLogFileInfos[i]; - NSLogInfo(@"DDLogFileManagerDefault: Deleting file: %@", logFileInfo.fileName); - - [[NSFileManager defaultManager] removeItemAtPath:logFileInfo.filePath error:nil]; + NSError *error = nil; + BOOL success = [[NSFileManager defaultManager] removeItemAtPath:logFileInfo.filePath error:&error]; + if (success) { + NSLogInfo(@"DDLogFileManagerDefault: Deleting file: %@", logFileInfo.fileName); + } else { + NSLogError(@"DDLogFileManagerDefault: Error deleting file %@", error); + } } } } @@ -242,35 +264,34 @@ - (void)deleteOldLogFiles { * If the logs directory doesn't exist, this method automatically creates it. **/ - (NSString *)defaultLogsDirectory { + #if TARGET_OS_IPHONE NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *baseDir = paths.firstObject; NSString *logsDirectory = [baseDir stringByAppendingPathComponent:@"Logs"]; - #else NSString *appName = [[NSProcessInfo processInfo] processName]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *basePath = ([paths count] > 0) ? paths[0] : NSTemporaryDirectory(); NSString *logsDirectory = [[basePath stringByAppendingPathComponent:@"Logs"] stringByAppendingPathComponent:appName]; - #endif return logsDirectory; } - (NSString *)logsDirectory { - // We could do this check once, during initalization, and not bother again. + // We could do this check once, during initialization, and not bother again. // But this way the code continues to work if the directory gets deleted while the code is running. - if (![[NSFileManager defaultManager] fileExistsAtPath:_logsDirectory]) { - NSError *err = nil; + NSAssert(_logsDirectory.length > 0, @"Directory must be set."); - if (![[NSFileManager defaultManager] createDirectoryAtPath:_logsDirectory - withIntermediateDirectories:YES - attributes:nil - error:&err]) { - NSLogError(@"DDFileLogManagerDefault: Error creating logsDirectory: %@", err); - } + NSError *err = nil; + BOOL success = [[NSFileManager defaultManager] createDirectoryAtPath:_logsDirectory + withIntermediateDirectories:YES + attributes:nil + error:&err]; + if (success == NO) { + NSLogError(@"DDFileLogManagerDefault: Error creating logsDirectory: %@", err); } return _logsDirectory; @@ -279,29 +300,16 @@ - (NSString *)logsDirectory { - (BOOL)isLogFile:(NSString *)fileName { NSString *appName = [self applicationName]; - BOOL hasProperPrefix = [fileName hasPrefix:appName]; + // We need to add a space to the name as otherwise we could match applications that have the name prefix. + BOOL hasProperPrefix = [fileName hasPrefix:[appName stringByAppendingString:@" "]]; BOOL hasProperSuffix = [fileName hasSuffix:@".log"]; - + return (hasProperPrefix && hasProperSuffix); } -//if you change formater , then change sortedLogFileInfos method also accordingly +// if you change formatter, then change sortedLogFileInfos method also accordingly - (NSDateFormatter *)logFileDateFormatter { - NSMutableDictionary *dictionary = [[NSThread currentThread] - threadDictionary]; - NSString *dateFormat = @"yyyy'-'MM'-'dd'--'HH'-'mm'-'ss'-'SSS'"; - NSString *key = [NSString stringWithFormat:@"logFileDateFormatter.%@", dateFormat]; - NSDateFormatter *dateFormatter = dictionary[key]; - - if (dateFormatter == nil) { - dateFormatter = [[NSDateFormatter alloc] init]; - [dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; - [dateFormatter setDateFormat:dateFormat]; - [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; - dictionary[key] = dateFormatter; - } - - return dateFormatter; + return _fileDateFormatter; } - (NSArray *)unsortedLogFilePaths { @@ -313,19 +321,19 @@ - (NSArray *)unsortedLogFilePaths { for (NSString *fileName in fileNames) { // Filter out any files that aren't log files. (Just for extra safety) - #if TARGET_IPHONE_SIMULATOR +#if TARGET_IPHONE_SIMULATOR + // This is only used on the iPhone simulator for backward compatibility reason. + // // In case of iPhone simulator there can be 'archived' extension. isLogFile: // method knows nothing about it. Thus removing it for this method. - // - // See full explanation in the header file. NSString *theFileName = [fileName stringByReplacingOccurrencesOfString:@".archived" withString:@""]; if ([self isLogFile:theFileName]) - #else +#else if ([self isLogFile:fileName]) - #endif +#endif { NSString *filePath = [logsDirectory stringByAppendingPathComponent:fileName]; @@ -387,7 +395,8 @@ - (NSArray *)sortedLogFileNames { } - (NSArray *)sortedLogFileInfos { - return [[self unsortedLogFileInfos] sortedArrayUsingComparator:^NSComparisonResult(DDLogFileInfo * _Nonnull obj1, DDLogFileInfo * _Nonnull obj2) { + return [[self unsortedLogFileInfos] sortedArrayUsingComparator:^NSComparisonResult(DDLogFileInfo *obj1, + DDLogFileInfo *obj2) { NSDate *date1 = [NSDate new]; NSDate *date2 = [NSDate new]; @@ -395,19 +404,25 @@ - (NSArray *)sortedLogFileInfos { if (arrayComponent.count > 0) { NSString *stringDate = arrayComponent.lastObject; stringDate = [stringDate stringByReplacingOccurrencesOfString:@".log" withString:@""]; +#if TARGET_IPHONE_SIMULATOR + // This is only used on the iPhone simulator for backward compatibility reason. stringDate = [stringDate stringByReplacingOccurrencesOfString:@".archived" withString:@""]; +#endif date1 = [[self logFileDateFormatter] dateFromString:stringDate] ?: [obj1 creationDate]; } - + arrayComponent = [[obj2 fileName] componentsSeparatedByString:@" "]; if (arrayComponent.count > 0) { NSString *stringDate = arrayComponent.lastObject; stringDate = [stringDate stringByReplacingOccurrencesOfString:@".log" withString:@""]; +#if TARGET_IPHONE_SIMULATOR + // This is only used on the iPhone simulator for backward compatibility reason. stringDate = [stringDate stringByReplacingOccurrencesOfString:@".archived" withString:@""]; +#endif date2 = [[self logFileDateFormatter] dateFromString:stringDate] ?: [obj2 creationDate]; } - - return [date2 compare:date1]; + + return [date2 compare:date1 ?: [NSDate new]]; }]; } @@ -415,6 +430,7 @@ - (NSArray *)sortedLogFileInfos { //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark Creation //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //if you change newLogFileName , then change isLogFile method also accordingly - (NSString *)newLogFileName { NSString *appName = [self applicationName]; @@ -425,15 +441,47 @@ - (NSString *)newLogFileName { return [NSString stringWithFormat:@"%@ %@.log", appName, formattedDate]; } -- (NSString *)createNewLogFile { +- (nullable NSString *)logFileHeader { + return nil; +} + +- (NSData *)logFileHeaderData { + NSString *fileHeaderStr = [self logFileHeader]; + + if (fileHeaderStr.length == 0) { + return nil; + } + + if (![fileHeaderStr hasSuffix:@"\n"]) { + fileHeaderStr = [fileHeaderStr stringByAppendingString:@"\n"]; + } + + return [fileHeaderStr dataUsingEncoding:NSUTF8StringEncoding]; +} + +- (NSString *)createNewLogFileWithError:(NSError *__autoreleasing _Nullable *)error { + static NSUInteger MAX_ALLOWED_ERROR = 5; + NSString *fileName = [self newLogFileName]; NSString *logsDirectory = [self logsDirectory]; + NSData *fileHeader = [self logFileHeaderData]; + if (fileHeader == nil) { + fileHeader = [NSData new]; + } NSUInteger attempt = 1; + NSUInteger criticalErrors = 0; + NSError *lastCriticalError; do { - NSString *actualFileName = fileName; + if (criticalErrors >= MAX_ALLOWED_ERROR) { + NSLogError(@"DDLogFileManagerDefault: Bailing file creation, encountered %ld errors.", + (unsigned long)criticalErrors); + *error = lastCriticalError; + return nil; + } + NSString *actualFileName = fileName; if (attempt > 1) { NSString *extension = [actualFileName pathExtension]; @@ -447,35 +495,41 @@ - (NSString *)createNewLogFile { NSString *filePath = [logsDirectory stringByAppendingPathComponent:actualFileName]; - if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) { - NSLogVerbose(@"DDLogFileManagerDefault: Creating new log file: %@", actualFileName); - - NSDictionary *attributes = nil; + NSError *currentError = nil; + BOOL success = [fileHeader writeToFile:filePath options:NSDataWritingAtomic error:¤tError]; - #if TARGET_OS_IPHONE +#if TARGET_OS_IPHONE + if (success) { // When creating log file on iOS we're setting NSFileProtectionKey attribute to NSFileProtectionCompleteUnlessOpen. // // But in case if app is able to launch from background we need to have an ability to open log file any time we // want (even if device is locked). Thats why that attribute have to be changed to // NSFileProtectionCompleteUntilFirstUserAuthentication. + NSDictionary *attributes = @{NSFileProtectionKey: [self logFileProtection]}; + success = [[NSFileManager defaultManager] setAttributes:attributes + ofItemAtPath:filePath + error:¤tError]; + } +#endif - NSFileProtectionType key = _defaultFileProtectionLevel ? : - (doesAppRunInBackground() ? NSFileProtectionCompleteUntilFirstUserAuthentication : NSFileProtectionCompleteUnlessOpen); - - attributes = @{ - NSFileProtectionKey: key - }; - #endif - - [[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:attributes]; - - // Since we just created a new log file, we may need to delete some old log files - [self deleteOldLogFiles]; - + if (success) { + NSLogVerbose(@"DDLogFileManagerDefault: Created new log file: %@", actualFileName); + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + // Since we just created a new log file, we may need to delete some old log files + [self deleteOldLogFiles]; + }); return filePath; - } else { + } else if (currentError.code == NSFileWriteFileExistsError) { attempt++; + continue; + } else { + NSLogError(@"DDLogFileManagerDefault: Critical error while creating log file: %@", currentError); + criticalErrors++; + lastCriticalError = currentError; + continue; } + + return filePath; } while (YES); } @@ -490,11 +544,11 @@ - (NSString *)applicationName { dispatch_once(&onceToken, ^{ _appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"]; - if (!_appName) { + if (_appName.length == 0) { _appName = [[NSProcessInfo processInfo] processName]; } - if (!_appName) { + if (_appName.length == 0) { _appName = @""; } }); @@ -520,7 +574,7 @@ - (instancetype)init { return [self initWithDateFormatter:nil]; } -- (instancetype)initWithDateFormatter:(NSDateFormatter *)aDateFormatter { +- (instancetype)initWithDateFormatter:(nullable NSDateFormatter *)aDateFormatter { if ((self = [super init])) { if (aDateFormatter) { _dateFormatter = aDateFormatter; @@ -547,46 +601,56 @@ - (NSString *)formatLogMessage:(DDLogMessage *)logMessage { //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @interface DDFileLogger () { - __strong id _logFileManager; - + id _logFileManager; + + DDLogFileInfo *_currentLogFileInfo; NSFileHandle *_currentLogFileHandle; - + dispatch_source_t _currentLogFileVnode; + + NSTimeInterval _rollingFrequency; dispatch_source_t _rollingTimer; - + unsigned long long _maximumFileSize; - NSTimeInterval _rollingFrequency; -} -- (void)rollLogFileNow; -- (void)maybeRollLogFileDueToAge; -- (void)maybeRollLogFileDueToSize; + dispatch_queue_t _completionQueue; +} @end +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wincomplete-implementation" @implementation DDFileLogger +#pragma clang diagnostic pop - (instancetype)init { DDLogFileManagerDefault *defaultLogFileManager = [[DDLogFileManagerDefault alloc] init]; + return [self initWithLogFileManager:defaultLogFileManager completionQueue:nil]; +} - return [self initWithLogFileManager:defaultLogFileManager]; +- (instancetype)initWithLogFileManager:(id)logFileManager { + return [self initWithLogFileManager:logFileManager completionQueue:nil]; } -- (instancetype)initWithLogFileManager:(id )aLogFileManager { +- (instancetype)initWithLogFileManager:(id )aLogFileManager + completionQueue:(nullable dispatch_queue_t)dispatchQueue { if ((self = [super init])) { + _completionQueue = dispatchQueue ?: dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + _maximumFileSize = kDDDefaultLogMaxFileSize; _rollingFrequency = kDDDefaultLogRollingFrequency; _automaticallyAppendNewlineForCustomFormatters = YES; - logFileManager = aLogFileManager; - - self.logFormatter = [DDLogFileFormatterDefault new]; + _logFileManager = aLogFileManager; + _logFormatter = [DDLogFileFormatterDefault new]; } return self; } -- (void)dealloc { +- (void)lt_cleanup { + NSAssert([self isOnInternalLoggerQueue], @"lt_ methods should be on logger queue."); + [_currentLogFileHandle synchronizeFile]; [_currentLogFileHandle closeFile]; @@ -601,17 +665,25 @@ - (void)dealloc { } } +- (void)dealloc { + if (self.isOnInternalLoggerQueue) { + [self lt_cleanup]; + } else { + dispatch_sync(self.loggerQueue, ^{ + [self lt_cleanup]; + }); + } +} + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark Properties //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -@synthesize logFileManager; - - (unsigned long long)maximumFileSize { __block unsigned long long result; dispatch_block_t block = ^{ - result = _maximumFileSize; + result = self->_maximumFileSize; }; // The design of this method is taken from the DDAbstractLogger implementation. @@ -639,8 +711,8 @@ - (unsigned long long)maximumFileSize { - (void)setMaximumFileSize:(unsigned long long)newMaximumFileSize { dispatch_block_t block = ^{ @autoreleasepool { - _maximumFileSize = newMaximumFileSize; - [self maybeRollLogFileDueToSize]; + self->_maximumFileSize = newMaximumFileSize; + [self lt_maybeRollLogFileDueToSize]; } }; @@ -668,7 +740,7 @@ - (NSTimeInterval)rollingFrequency { __block NSTimeInterval result; dispatch_block_t block = ^{ - result = _rollingFrequency; + result = self->_rollingFrequency; }; // The design of this method is taken from the DDAbstractLogger implementation. @@ -696,8 +768,8 @@ - (NSTimeInterval)rollingFrequency { - (void)setRollingFrequency:(NSTimeInterval)newRollingFrequency { dispatch_block_t block = ^{ @autoreleasepool { - _rollingFrequency = newRollingFrequency; - [self maybeRollLogFileDueToAge]; + self->_rollingFrequency = newRollingFrequency; + [self lt_maybeRollLogFileDueToAge]; } }; @@ -725,7 +797,9 @@ - (void)setRollingFrequency:(NSTimeInterval)newRollingFrequency { #pragma mark File Rolling //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -- (void)scheduleTimerToRollLogFileDueToAge { +- (void)lt_scheduleTimerToRollLogFileDueToAge { + NSAssert([self isOnInternalLoggerQueue], @"lt_ methods should be on logger queue."); + if (_rollingTimer) { dispatch_source_cancel(_rollingTimer); _rollingTimer = NULL; @@ -736,22 +810,20 @@ - (void)scheduleTimerToRollLogFileDueToAge { } NSDate *logFileCreationDate = [_currentLogFileInfo creationDate]; - - NSTimeInterval ti = [logFileCreationDate timeIntervalSinceReferenceDate]; - ti += _rollingFrequency; - - NSDate *logFileRollingDate = [NSDate dateWithTimeIntervalSinceReferenceDate:ti]; + NSTimeInterval frequency = MIN(_rollingFrequency, DBL_MAX - [logFileCreationDate timeIntervalSinceReferenceDate]); + NSDate *logFileRollingDate = [logFileCreationDate dateByAddingTimeInterval:frequency]; NSLogVerbose(@"DDFileLogger: scheduleTimerToRollLogFileDueToAge"); + NSLogVerbose(@"DDFileLogger: logFileCreationDate : %@", logFileCreationDate); + NSLogVerbose(@"DDFileLogger: actual rollingFrequency: %f", frequency); + NSLogVerbose(@"DDFileLogger: logFileRollingDate : %@", logFileRollingDate); - NSLogVerbose(@"DDFileLogger: logFileCreationDate: %@", logFileCreationDate); - NSLogVerbose(@"DDFileLogger: logFileRollingDate : %@", logFileRollingDate); - - _rollingTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, self.loggerQueue); + _rollingTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, _loggerQueue); + __weak __auto_type weakSelf = self; dispatch_source_set_event_handler(_rollingTimer, ^{ @autoreleasepool { - [self maybeRollLogFileDueToAge]; - } }); + [weakSelf lt_maybeRollLogFileDueToAge]; + } }); #if !OS_OBJECT_USE_OBJC dispatch_source_t theRollingTimer = _rollingTimer; @@ -760,10 +832,11 @@ - (void)scheduleTimerToRollLogFileDueToAge { }); #endif - uint64_t delay = (uint64_t)([logFileRollingDate timeIntervalSinceNow] * (NSTimeInterval) NSEC_PER_SEC); + static NSTimeInterval const kDDMaxTimerDelay = LLONG_MAX / NSEC_PER_SEC; + int64_t delay = (int64_t)(MIN([logFileRollingDate timeIntervalSinceNow], kDDMaxTimerDelay) * (NSTimeInterval) NSEC_PER_SEC); dispatch_time_t fireTime = dispatch_time(DISPATCH_TIME_NOW, delay); - dispatch_source_set_timer(_rollingTimer, fireTime, DISPATCH_TIME_FOREVER, 1ull * NSEC_PER_SEC); + dispatch_source_set_timer(_rollingTimer, fireTime, DISPATCH_TIME_FOREVER, (uint64_t)kDDRollingLeeway * NSEC_PER_SEC); dispatch_resume(_rollingTimer); } @@ -771,16 +844,16 @@ - (void)rollLogFile { [self rollLogFileWithCompletionBlock:nil]; } -- (void)rollLogFileWithCompletionBlock:(void (^)(void))completionBlock { +- (void)rollLogFileWithCompletionBlock:(nullable void (^)(void))completionBlock { // This method is public. // We need to execute the rolling on our logging thread/queue. dispatch_block_t block = ^{ @autoreleasepool { - [self rollLogFileNow]; + [self lt_rollLogFileNow]; if (completionBlock) { - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + dispatch_async(self->_completionQueue, ^{ completionBlock(); }); } @@ -802,7 +875,8 @@ - (void)rollLogFileWithCompletionBlock:(void (^)(void))completionBlock { } } -- (void)rollLogFileNow { +- (void)lt_rollLogFileNow { + NSAssert([self isOnInternalLoggerQueue], @"lt_ methods should be on logger queue."); NSLogVerbose(@"DDFileLogger: rollLogFileNow"); if (_currentLogFileHandle == nil) { @@ -814,35 +888,41 @@ - (void)rollLogFileNow { _currentLogFileHandle = nil; _currentLogFileInfo.isArchived = YES; + BOOL logFileManagerRespondsToSelector = [_logFileManager respondsToSelector:@selector(didRollAndArchiveLogFile:)]; + NSString *archivedFilePath = (logFileManagerRespondsToSelector) ? [_currentLogFileInfo.filePath copy] : nil; + _currentLogFileInfo = nil; - if ([logFileManager respondsToSelector:@selector(didRollAndArchiveLogFile:)]) { - [logFileManager didRollAndArchiveLogFile:(_currentLogFileInfo.filePath)]; + if (logFileManagerRespondsToSelector) { + dispatch_async(_completionQueue, ^{ + [self->_logFileManager didRollAndArchiveLogFile:archivedFilePath]; + }); } - _currentLogFileInfo = nil; - if (_currentLogFileVnode) { dispatch_source_cancel(_currentLogFileVnode); - _currentLogFileVnode = NULL; + _currentLogFileVnode = nil; } if (_rollingTimer) { dispatch_source_cancel(_rollingTimer); - _rollingTimer = NULL; + _rollingTimer = nil; } } -- (void)maybeRollLogFileDueToAge { - if (_rollingFrequency > 0.0 && _currentLogFileInfo.age >= _rollingFrequency) { - NSLogVerbose(@"DDFileLogger: Rolling log file due to age..."); +- (void)lt_maybeRollLogFileDueToAge { + NSAssert([self isOnInternalLoggerQueue], @"lt_ methods should be on logger queue."); - [self rollLogFileNow]; + if (_rollingFrequency > 0.0 && (_currentLogFileInfo.age + kDDRollingLeeway) >= _rollingFrequency) { + NSLogVerbose(@"DDFileLogger: Rolling log file due to age..."); + [self lt_rollLogFileNow]; } else { - [self scheduleTimerToRollLogFileDueToAge]; + [self lt_scheduleTimerToRollLogFileDueToAge]; } } -- (void)maybeRollLogFileDueToSize { +- (void)lt_maybeRollLogFileDueToSize { + NSAssert([self isOnInternalLoggerQueue], @"lt_ methods should be on logger queue."); + // This method is called from logMessage. // Keep it FAST. @@ -855,7 +935,7 @@ - (void)maybeRollLogFileDueToSize { if (fileSize >= _maximumFileSize) { NSLogVerbose(@"DDFileLogger: Rolling log file due to size (%qu)...", fileSize); - [self rollLogFileNow]; + [self lt_rollLogFileNow]; } } } @@ -864,111 +944,179 @@ - (void)maybeRollLogFileDueToSize { #pragma mark File Logging //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +- (BOOL)lt_shouldLogFileBeArchived:(DDLogFileInfo *)mostRecentLogFileInfo { + NSAssert([self isOnInternalLoggerQueue], @"lt_ methods should be on logger queue."); + + if (mostRecentLogFileInfo.isArchived) { + return NO; + } else if ([self shouldArchiveRecentLogFileInfo:mostRecentLogFileInfo]) { + return YES; + } else if (_maximumFileSize > 0 && mostRecentLogFileInfo.fileSize >= _maximumFileSize) { + return YES; + } else if (_rollingFrequency > 0.0 && mostRecentLogFileInfo.age >= _rollingFrequency) { + return YES; + } + +#if TARGET_OS_IPHONE + // When creating log file on iOS we're setting NSFileProtectionKey attribute to NSFileProtectionCompleteUnlessOpen. + // + // But in case if app is able to launch from background we need to have an ability to open log file any time we + // want (even if device is locked). Thats why that attribute have to be changed to + // NSFileProtectionCompleteUntilFirstUserAuthentication. + // + // If previous log was created when app wasn't running in background, but now it is - we archive it and create + // a new one. + // + // If user has overwritten to NSFileProtectionNone there is no neeed to create a new one. + if (doesAppRunInBackground()) { + NSFileProtectionType key = mostRecentLogFileInfo.fileAttributes[NSFileProtectionKey]; + BOOL isUntilFirstAuth = [key isEqualToString:NSFileProtectionCompleteUntilFirstUserAuthentication]; + BOOL isNone = [key isEqualToString:NSFileProtectionNone]; + + if (key != nil && !isUntilFirstAuth && !isNone) { + return YES; + } + } +#endif + + return NO; +} + /** * Returns the log file that should be used. - * If there is an existing log file that is suitable, - * within the constraints of maximumFileSize and rollingFrequency, then it is returned. + * If there is an existing log file that is suitable, within the + * constraints of maximumFileSize and rollingFrequency, then it is returned. * * Otherwise a new file is created and returned. **/ - (DDLogFileInfo *)currentLogFileInfo { - if (_currentLogFileInfo == nil) { - NSArray *sortedLogFileInfos = [logFileManager sortedLogFileInfos]; - - if ([sortedLogFileInfos count] > 0) { - DDLogFileInfo *mostRecentLogFileInfo = sortedLogFileInfos[0]; - - BOOL shouldArchiveMostRecent = NO; - - if (mostRecentLogFileInfo.isArchived) { - shouldArchiveMostRecent = NO; - } else if ([self shouldArchiveRecentLogFileInfo:mostRecentLogFileInfo]) { - shouldArchiveMostRecent = YES; - } else if (_maximumFileSize > 0 && mostRecentLogFileInfo.fileSize >= _maximumFileSize) { - shouldArchiveMostRecent = YES; - } else if (_rollingFrequency > 0.0 && mostRecentLogFileInfo.age >= _rollingFrequency) { - shouldArchiveMostRecent = YES; - } + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + // Do not access this method on any Lumberjack queue, will deadlock. - #if TARGET_OS_IPHONE - // When creating log file on iOS we're setting NSFileProtectionKey attribute to NSFileProtectionCompleteUnlessOpen. - // - // But in case if app is able to launch from background we need to have an ability to open log file any time we - // want (even if device is locked). Thats why that attribute have to be changed to - // NSFileProtectionCompleteUntilFirstUserAuthentication. - // - // If previous log was created when app wasn't running in background, but now it is - we archive it and create - // a new one. - // - // If user has overwritten to NSFileProtectionNone there is no neeed to create a new one. + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); - if (!_doNotReuseLogFiles && doesAppRunInBackground()) { - NSFileProtectionType key = mostRecentLogFileInfo.fileAttributes[NSFileProtectionKey]; + __block DDLogFileInfo *info = nil; + dispatch_block_t block = ^{ + info = [self lt_currentLogFileInfo]; + }; - if ([key length] > 0 && !([key isEqualToString:NSFileProtectionCompleteUntilFirstUserAuthentication] || [key isEqualToString:NSFileProtectionNone])) { - shouldArchiveMostRecent = YES; - } - } + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; - #endif + dispatch_sync(globalLoggingQueue, ^{ + dispatch_sync(self->_loggerQueue, block); + }); - if (!_doNotReuseLogFiles && !mostRecentLogFileInfo.isArchived && !shouldArchiveMostRecent) { - NSLogVerbose(@"DDFileLogger: Resuming logging with file %@", mostRecentLogFileInfo.fileName); + return info; +} - _currentLogFileInfo = mostRecentLogFileInfo; - } else { - if (shouldArchiveMostRecent) { - mostRecentLogFileInfo.isArchived = YES; +- (DDLogFileInfo *)lt_currentLogFileInfo { + NSAssert([self isOnInternalLoggerQueue], @"lt_ methods should be on logger queue."); - if ([logFileManager respondsToSelector:@selector(didArchiveLogFile:)]) { - [logFileManager didArchiveLogFile:(mostRecentLogFileInfo.filePath)]; - } - } + // Get the current log file info ivar (might be nil). + DDLogFileInfo *newCurrentLogFile = _currentLogFileInfo; + + // Check if we're resuming and if so, get the first of the sorted log file infos. + BOOL isResuming = newCurrentLogFile == nil; + if (isResuming) { + NSArray *sortedLogFileInfos = [_logFileManager sortedLogFileInfos]; + newCurrentLogFile = sortedLogFileInfos.firstObject; + } + + // Check if the file we've found is still valid. Otherwise create a new one. + if (newCurrentLogFile != nil && [self lt_shouldUseLogFile:newCurrentLogFile isResuming:isResuming]) { + if (isResuming) { + NSLogVerbose(@"DDFileLogger: Resuming logging with file %@", newCurrentLogFile.fileName); + } + _currentLogFileInfo = newCurrentLogFile; + } else { + NSString *currentLogFilePath; + if ([_logFileManager respondsToSelector:@selector(createNewLogFileWithError:)]) { + __autoreleasing NSError *error; + currentLogFilePath = [_logFileManager createNewLogFileWithError:&error]; + if (!currentLogFilePath) { + NSLogError(@"DDFileLogger: Failed to create new log file: %@", error); } + } else { + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdeprecated-declarations" + NSAssert([_logFileManager respondsToSelector:@selector(createNewLogFile)], + @"Invalid log file manager! Responds neither to `-createNewLogFileWithError:` nor `-createNewLogFile`!"); + currentLogFilePath = [_logFileManager createNewLogFile]; + #pragma clang diagnostic pop } + // Use static factory method here, since it checks for nil (and is unavailable to Swift). + _currentLogFileInfo = [DDLogFileInfo logFileWithPath:currentLogFilePath]; + } + + return _currentLogFileInfo; +} + +- (BOOL)lt_shouldUseLogFile:(nonnull DDLogFileInfo *)logFileInfo isResuming:(BOOL)isResuming { + NSAssert([self isOnInternalLoggerQueue], @"lt_ methods should be on logger queue."); + NSParameterAssert(logFileInfo); + + // Check if the log file is archived. We must not use archived log files. + if (logFileInfo.isArchived) { + return NO; + } - if (_currentLogFileInfo == nil) { - NSString *currentLogFilePath = [logFileManager createNewLogFile]; + // If we're resuming, we need to check if the log file is allowed for reuse or needs to be archived. + if (isResuming && (_doNotReuseLogFiles || [self lt_shouldLogFileBeArchived:logFileInfo])) { + logFileInfo.isArchived = YES; - _currentLogFileInfo = [[DDLogFileInfo alloc] initWithFilePath:currentLogFilePath]; + if ([_logFileManager respondsToSelector:@selector(didArchiveLogFile:)]) { + NSString *archivedFilePath = [logFileInfo.filePath copy]; + dispatch_async(_completionQueue, ^{ + [self->_logFileManager didArchiveLogFile:archivedFilePath]; + }); } + + return NO; } - return _currentLogFileInfo; + // All checks have passed. It's valid. + return YES; } -- (NSFileHandle *)currentLogFileHandle { - if (_currentLogFileHandle == nil) { - NSString *logFilePath = [[self currentLogFileInfo] filePath]; +- (void)lt_monitorCurrentLogFileForExternalChanges { + NSAssert([self isOnInternalLoggerQueue], @"lt_ methods should be on logger queue."); + NSAssert(_currentLogFileHandle, @"Can not monitor without handle."); + + dispatch_source_vnode_flags_t flags = DISPATCH_VNODE_DELETE | DISPATCH_VNODE_RENAME | DISPATCH_VNODE_REVOKE; + _currentLogFileVnode = dispatch_source_create(DISPATCH_SOURCE_TYPE_VNODE, + (uintptr_t)[_currentLogFileHandle fileDescriptor], + flags, + _loggerQueue); + + __weak __auto_type weakSelf = self; + dispatch_source_set_event_handler(_currentLogFileVnode, ^{ @autoreleasepool { + NSLogInfo(@"DDFileLogger: Current logfile was moved. Rolling it and creating a new one"); + [weakSelf lt_rollLogFileNow]; + } }); +#if !OS_OBJECT_USE_OBJC + dispatch_source_t vnode = _currentLogFileVnode; + dispatch_source_set_cancel_handler(_currentLogFileVnode, ^{ + dispatch_release(vnode); + }); +#endif + + dispatch_resume(_currentLogFileVnode); +} + +- (NSFileHandle *)lt_currentLogFileHandle { + NSAssert([self isOnInternalLoggerQueue], @"lt_ methods should be on logger queue."); + + if (!_currentLogFileHandle) { + NSString *logFilePath = [[self lt_currentLogFileInfo] filePath]; _currentLogFileHandle = [NSFileHandle fileHandleForWritingAtPath:logFilePath]; [_currentLogFileHandle seekToEndOfFile]; if (_currentLogFileHandle) { - [self scheduleTimerToRollLogFileDueToAge]; - - // Here we are monitoring the log file. In case if it would be deleted ormoved - // somewhere we want to roll it and use a new one. - _currentLogFileVnode = dispatch_source_create( - DISPATCH_SOURCE_TYPE_VNODE, - [_currentLogFileHandle fileDescriptor], - DISPATCH_VNODE_DELETE | DISPATCH_VNODE_RENAME, - self.loggerQueue - ); - - dispatch_source_set_event_handler(_currentLogFileVnode, ^{ @autoreleasepool { - NSLogInfo(@"DDFileLogger: Current logfile was moved. Rolling it and creating a new one"); - [self rollLogFileNow]; - } }); - - #if !OS_OBJECT_USE_OBJC - dispatch_source_t vnode = _currentLogFileVnode; - dispatch_source_set_cancel_handler(_currentLogFileVnode, ^{ - dispatch_release(vnode); - }); - #endif - - dispatch_resume(_currentLogFileVnode); + [self lt_scheduleTimerToRollLogFileDueToAge]; + [self lt_monitorCurrentLogFileForExternalChanges]; } } @@ -980,63 +1128,187 @@ - (NSFileHandle *)currentLogFileHandle { //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// static int exception_count = 0; + - (void)logMessage:(DDLogMessage *)logMessage { - NSString *message = logMessage->_message; - BOOL isFormatted = NO; + // Don't need to check for isOnInternalLoggerQueue, -lt_dataForMessage: will do it for us. + NSData *data = [self lt_dataForMessage:logMessage]; - if (_logFormatter) { - message = [_logFormatter formatLogMessage:logMessage]; - isFormatted = message != logMessage->_message; + if (data.length == 0) { + return; } - if (message) { - if ((!isFormatted || _automaticallyAppendNewlineForCustomFormatters) && - (![message hasSuffix:@"\n"])) { - message = [message stringByAppendingString:@"\n"]; - } + [self lt_logData:data]; +} - NSData *logData = [message dataUsingEncoding:NSUTF8StringEncoding]; +- (void)willLogMessage:(DDLogFileInfo *)logFileInfo { - @try { - [self willLogMessage]; - - [[self currentLogFileHandle] writeData:logData]; +} - [self didLogMessage]; - } @catch (NSException *exception) { - exception_count++; +- (void)didLogMessage:(DDLogFileInfo *)logFileInfo { + [self lt_maybeRollLogFileDueToSize]; +} - if (exception_count <= 10) { - NSLogError(@"DDFileLogger.logMessage: %@", exception); +- (BOOL)shouldArchiveRecentLogFileInfo:(__unused DDLogFileInfo *)recentLogFileInfo { + return NO; +} - if (exception_count == 10) { - NSLogError(@"DDFileLogger.logMessage: Too many exceptions -- will not log any more of them."); - } - } +- (void)willRemoveLogger { + [self lt_rollLogFileNow]; +} + +- (void)flush { + // This method is public. + // We need to execute the rolling on our logging thread/queue. + + dispatch_block_t block = ^{ + @autoreleasepool { + [self lt_flush]; } + }; + + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) { + block(); + } else { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_sync(globalLoggingQueue, ^{ + dispatch_sync(self.loggerQueue, block); + }); } } -- (void)willLogMessage { - +- (void)lt_flush { + NSAssert([self isOnInternalLoggerQueue], @"flush should only be executed on internal queue."); + [_currentLogFileHandle synchronizeFile]; } -- (void)didLogMessage { - [self maybeRollLogFileDueToSize]; +- (DDLoggerName)loggerName { + return DDLoggerNameFile; } -- (BOOL)shouldArchiveRecentLogFileInfo:(DDLogFileInfo *)recentLogFileInfo { - return NO; +@end + +@implementation DDFileLogger (Internal) + +- (void)logData:(NSData *)data { + // This method is public. + // We need to execute the rolling on our logging thread/queue. + + dispatch_block_t block = ^{ + @autoreleasepool { + [self lt_logData:data]; + } + }; + + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) { + block(); + } else { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_sync(globalLoggingQueue, ^{ + dispatch_sync(self.loggerQueue, block); + }); + } } -- (void)willRemoveLogger { - // If you override me be sure to invoke [super willRemoveLogger]; +- (void)dummyMethod {} + +- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector { + if (aSelector == @selector(willLogMessage) || aSelector == @selector(didLogMessage)) { + // Ignore calls to deprecated methods. + return [self methodSignatureForSelector:@selector(dummyMethod)]; + } + + return [super methodSignatureForSelector:aSelector]; +} + +- (void)forwardInvocation:(NSInvocation *)anInvocation { + if (anInvocation.selector != @selector(dummyMethod)) { + [super forwardInvocation:anInvocation]; + } +} + +- (void)lt_logData:(NSData *)data { + static BOOL implementsDeprecatedWillLog = NO; + static BOOL implementsDeprecatedDidLog = NO; + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + implementsDeprecatedWillLog = [self respondsToSelector:@selector(willLogMessage)]; + implementsDeprecatedDidLog = [self respondsToSelector:@selector(didLogMessage)]; + }); + + NSAssert([self isOnInternalLoggerQueue], @"logMessage should only be executed on internal queue."); + + if (data.length == 0) { + return; + } + + @try { + if (implementsDeprecatedWillLog) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + [self willLogMessage]; +#pragma clang diagnostic pop + } else { + [self willLogMessage:_currentLogFileInfo]; + } + + NSFileHandle *handle = [self lt_currentLogFileHandle]; + [handle seekToEndOfFile]; + [handle writeData:data]; - [self rollLogFileNow]; + if (implementsDeprecatedDidLog) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + [self didLogMessage]; +#pragma clang diagnostic pop + } else { + [self didLogMessage:_currentLogFileInfo]; + } + + } @catch (NSException *exception) { + exception_count++; + + if (exception_count <= 10) { + NSLogError(@"DDFileLogger.logMessage: %@", exception); + + if (exception_count == 10) { + NSLogError(@"DDFileLogger.logMessage: Too many exceptions -- will not log any more of them."); + } + } + } } -- (NSString *)loggerName { - return @"cocoa.lumberjack.fileLogger"; +- (NSData *)lt_dataForMessage:(DDLogMessage *)logMessage { + NSAssert([self isOnInternalLoggerQueue], @"logMessage should only be executed on internal queue."); + + NSString *message = logMessage->_message; + BOOL isFormatted = NO; + + if (_logFormatter != nil) { + message = [_logFormatter formatLogMessage:logMessage]; + isFormatted = message != logMessage->_message; + } + + if (message.length == 0) { + return nil; + } + + BOOL shouldFormat = !isFormatted || _automaticallyAppendNewlineForCustomFormatters; + if (shouldFormat && ![message hasSuffix:@"\n"]) { + message = [message stringByAppendingString:@"\n"]; + } + + return [message dataUsingEncoding:NSUTF8StringEncoding]; } @end @@ -1045,24 +1317,29 @@ - (NSString *)loggerName { #pragma mark - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -#if TARGET_IPHONE_SIMULATOR - static NSString * const kDDXAttrArchivedName = @"archived"; -#else - static NSString * const kDDXAttrArchivedName = @"lumberjack.log.archived"; -#endif +static NSString * const kDDXAttrArchivedName = @"lumberjack.log.archived"; @interface DDLogFileInfo () { __strong NSString *_filePath; __strong NSString *_fileName; - + __strong NSDictionary *_fileAttributes; - + __strong NSDate *_creationDate; __strong NSDate *_modificationDate; - + unsigned long long _fileSize; } +#if TARGET_IPHONE_SIMULATOR + +// Old implementation of extended attributes on the simulator. + +- (BOOL)_hasExtensionAttributeWithName:(NSString *)attrName; +- (void)_removeExtensionAttributeWithName:(NSString *)attrName; + +#endif + @end @@ -1079,14 +1356,15 @@ @implementation DDLogFileInfo @dynamic isArchived; - #pragma mark Lifecycle + (instancetype)logFileWithPath:(NSString *)aFilePath { + if (!aFilePath) return nil; return [[self alloc] initWithFilePath:aFilePath]; } - (instancetype)initWithFilePath:(NSString *)aFilePath { + NSParameterAssert(aFilePath); if ((self = [super init])) { filePath = [aFilePath copy]; } @@ -1100,10 +1378,15 @@ - (instancetype)initWithFilePath:(NSString *)aFilePath { - (NSDictionary *)fileAttributes { if (_fileAttributes == nil && filePath != nil) { - _fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil]; + NSError *error = nil; + _fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:&error]; + + if (error) { + NSLogError(@"DDLogFileInfo: Failed to read file attributes: %@", error); + } } - return _fileAttributes; + return _fileAttributes ?: @{}; } - (NSString *)fileName { @@ -1139,7 +1422,7 @@ - (unsigned long long)fileSize { } - (NSTimeInterval)age { - return [[self creationDate] timeIntervalSinceNow] * -1.0; + return -[[self creationDate] timeIntervalSinceNow]; } - (NSString *)description { @@ -1158,43 +1441,15 @@ - (NSString *)description { //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - (BOOL)isArchived { -#if TARGET_IPHONE_SIMULATOR - - // Extended attributes don't work properly on the simulator. - // So we have to use a less attractive alternative. - // See full explanation in the header file. - - return [self hasExtensionAttributeWithName:kDDXAttrArchivedName]; - -#else - return [self hasExtendedAttributeWithName:kDDXAttrArchivedName]; - -#endif } - (void)setIsArchived:(BOOL)flag { -#if TARGET_IPHONE_SIMULATOR - - // Extended attributes don't work properly on the simulator. - // So we have to use a less attractive alternative. - // See full explanation in the header file. - - if (flag) { - [self addExtensionAttributeWithName:kDDXAttrArchivedName]; - } else { - [self removeExtensionAttributeWithName:kDDXAttrArchivedName]; - } - -#else - if (flag) { [self addExtendedAttributeWithName:kDDXAttrArchivedName]; } else { [self removeExtendedAttributeWithName:kDDXAttrArchivedName]; } - -#endif } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1213,20 +1468,37 @@ - (void)renameFile:(NSString *)newFileName { // See full explanation in the header file. if (![newFileName isEqualToString:[self fileName]]) { + NSFileManager* fileManager = [NSFileManager defaultManager]; NSString *fileDir = [filePath stringByDeletingLastPathComponent]; - NSString *newFilePath = [fileDir stringByAppendingPathComponent:newFileName]; - NSLogVerbose(@"DDLogFileInfo: Renaming file: '%@' -> '%@'", self.fileName, newFileName); + // We only want to assert when we're not using the simulator, as we're "archiving" a log file with this method in the sim + // (in which case the file might not exist anymore and neither does it parent folder). +#if defined(DEBUG) && (!defined(TARGET_IPHONE_SIMULATOR) || !TARGET_IPHONE_SIMULATOR) + BOOL directory = NO; + [fileManager fileExistsAtPath:fileDir isDirectory:&directory]; + NSAssert(directory, @"Containing directory must exist."); +#endif NSError *error = nil; - if ([[NSFileManager defaultManager] fileExistsAtPath:newFilePath] && - ![[NSFileManager defaultManager] removeItemAtPath:newFilePath error:&error]) { + BOOL success = [fileManager removeItemAtPath:newFilePath error:&error]; + if (!success && error.code != NSFileNoSuchFileError) { NSLogError(@"DDLogFileInfo: Error deleting archive (%@): %@", self.fileName, error); } - if (![[NSFileManager defaultManager] moveItemAtPath:filePath toPath:newFilePath error:&error]) { + success = [fileManager moveItemAtPath:filePath toPath:newFilePath error:&error]; + + // When a log file is deleted, moved or renamed on the simulator, we attempt to rename it as a + // result of "archiving" it, but since the file doesn't exist anymore, needless error logs are printed + // We therefore ignore this error, and assert that the directory we are copying into exists (which + // is the only other case where this error code can come up). +#if TARGET_IPHONE_SIMULATOR + if (!success && error.code != NSFileNoSuchFileError) +#else + if (!success) +#endif + { NSLogError(@"DDLogFileInfo: Error renaming file (%@): %@", self.fileName, error); } @@ -1241,13 +1513,26 @@ - (void)renameFile:(NSString *)newFileName { #if TARGET_IPHONE_SIMULATOR -// Extended attributes don't work properly on the simulator. -// So we have to use a less attractive alternative. -// See full explanation in the header file. +// Old implementation of extended attributes on the simulator. -- (BOOL)hasExtensionAttributeWithName:(NSString *)attrName { - // This method is only used on the iPhone simulator, where normal extended attributes are broken. - // See full explanation in the header file. +// Extended attributes were not working properly on the simulator +// due to misuse of setxattr() function. +// Now that this is fixed in the new implementation, we want to keep +// backward compatibility with previous simulator installations. + +static NSString * const kDDExtensionSeparator = @"."; + +static NSString *_xattrToExtensionName(NSString *attrName) { + static NSDictionary* _xattrToExtensionNameMap; + static dispatch_once_t _token; + dispatch_once(&_token, ^{ + _xattrToExtensionNameMap = @{ kDDXAttrArchivedName: @"archived" }; + }); + return [_xattrToExtensionNameMap objectForKey:attrName]; +} + +- (BOOL)_hasExtensionAttributeWithName:(NSString *)attrName { + // This method is only used on the iPhone simulator for backward compatibility reason. // Split the file name into components. File name may have various format, but generally // structure is same: @@ -1258,7 +1543,7 @@ - (BOOL)hasExtensionAttributeWithName:(NSString *)attrName { // // So we want to search for the attrName in the components (ignoring the first array index). - NSArray *components = [[self fileName] componentsSeparatedByString:@"."]; + NSArray *components = [[self fileName] componentsSeparatedByString:kDDExtensionSeparator]; // Watch out for file names without an extension @@ -1273,66 +1558,8 @@ - (BOOL)hasExtensionAttributeWithName:(NSString *)attrName { return NO; } -- (void)addExtensionAttributeWithName:(NSString *)attrName { - // This method is only used on the iPhone simulator, where normal extended attributes are broken. - // See full explanation in the header file. - - if ([attrName length] == 0) { - return; - } - - // Example: - // attrName = "archived" - // - // "mylog.txt" -> "mylog.archived.txt" - // "mylog" -> "mylog.archived" - - NSArray *components = [[self fileName] componentsSeparatedByString:@"."]; - - NSUInteger count = [components count]; - - NSUInteger estimatedNewLength = [[self fileName] length] + [attrName length] + 1; - NSMutableString *newFileName = [NSMutableString stringWithCapacity:estimatedNewLength]; - - if (count > 0) { - [newFileName appendString:components.firstObject]; - } - - NSString *lastExt = @""; - - NSUInteger i; - - for (i = 1; i < count; i++) { - NSString *attr = components[i]; - - if ([attr length] == 0) { - continue; - } - - if ([attrName isEqualToString:attr]) { - // Extension attribute already exists in file name - return; - } - - if ([lastExt length] > 0) { - [newFileName appendFormat:@".%@", lastExt]; - } - - lastExt = attr; - } - - [newFileName appendFormat:@".%@", attrName]; - - if ([lastExt length] > 0) { - [newFileName appendFormat:@".%@", lastExt]; - } - - [self renameFile:newFileName]; -} - -- (void)removeExtensionAttributeWithName:(NSString *)attrName { - // This method is only used on the iPhone simulator, where normal extended attributes are broken. - // See full explanation in the header file. +- (void)_removeExtensionAttributeWithName:(NSString *)attrName { + // This method is only used on the iPhone simulator for backward compatibility reason. if ([attrName length] == 0) { return; @@ -1344,7 +1571,7 @@ - (void)removeExtensionAttributeWithName:(NSString *)attrName { // "mylog.archived.txt" -> "mylog.txt" // "mylog.archived" -> "mylog" - NSArray *components = [[self fileName] componentsSeparatedByString:@"."]; + NSArray *components = [[self fileName] componentsSeparatedByString:kDDExtensionSeparator]; NSUInteger count = [components count]; @@ -1365,7 +1592,8 @@ - (void)removeExtensionAttributeWithName:(NSString *)attrName { if ([attrName isEqualToString:attr]) { found = YES; } else { - [newFileName appendFormat:@".%@", attr]; + [newFileName appendString:kDDExtensionSeparator]; + [newFileName appendString:attr]; } } @@ -1374,22 +1602,42 @@ - (void)removeExtensionAttributeWithName:(NSString *)attrName { } } -#else /* if TARGET_IPHONE_SIMULATOR */ +#endif /* if TARGET_IPHONE_SIMULATOR */ - (BOOL)hasExtendedAttributeWithName:(NSString *)attrName { - const char *path = [filePath UTF8String]; + const char *path = [filePath fileSystemRepresentation]; const char *name = [attrName UTF8String]; + BOOL hasExtendedAttribute = NO; + char buffer[1]; + + ssize_t result = getxattr(path, name, buffer, 1, 0, 0); - ssize_t result = getxattr(path, name, NULL, 0, 0, 0); + // Fast path + if (result > 0 && buffer[0] == '\1') { + hasExtendedAttribute = YES; + } + // Maintain backward compatibility, but fix it for future checks + else if (result >= 0) { + hasExtendedAttribute = YES; - return (result >= 0); + [self addExtendedAttributeWithName:attrName]; + } +#if TARGET_IPHONE_SIMULATOR + else if ([self _hasExtensionAttributeWithName:_xattrToExtensionName(attrName)]) { + hasExtendedAttribute = YES; + + [self addExtendedAttributeWithName:attrName]; + } +#endif + + return hasExtendedAttribute; } - (void)addExtendedAttributeWithName:(NSString *)attrName { - const char *path = [filePath UTF8String]; + const char *path = [filePath fileSystemRepresentation]; const char *name = [attrName UTF8String]; - int result = setxattr(path, name, NULL, 0, 0, 0); + int result = setxattr(path, name, "\1", 1, 0, 0); if (result < 0) { NSLogError(@"DDLogFileInfo: setxattr(%@, %@): error = %s", @@ -1397,10 +1645,15 @@ - (void)addExtendedAttributeWithName:(NSString *)attrName { filePath, strerror(errno)); } +#if TARGET_IPHONE_SIMULATOR + else { + [self _removeExtensionAttributeWithName:_xattrToExtensionName(attrName)]; + } +#endif } - (void)removeExtendedAttributeWithName:(NSString *)attrName { - const char *path = [filePath UTF8String]; + const char *path = [filePath fileSystemRepresentation]; const char *name = [attrName UTF8String]; int result = removexattr(path, name, 0); @@ -1411,9 +1664,11 @@ - (void)removeExtendedAttributeWithName:(NSString *)attrName { self.fileName, strerror(errno)); } -} -#endif /* if TARGET_IPHONE_SIMULATOR */ +#if TARGET_IPHONE_SIMULATOR + [self _removeExtensionAttributeWithName:_xattrToExtensionName(attrName)]; +#endif +} //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark Comparisons @@ -1429,42 +1684,20 @@ - (BOOL)isEqual:(id)object { return NO; } --(NSUInteger)hash { +- (NSUInteger)hash { return [filePath hash]; } - (NSComparisonResult)reverseCompareByCreationDate:(DDLogFileInfo *)another { - NSDate *us = [self creationDate]; - NSDate *them = [another creationDate]; - - NSComparisonResult result = [us compare:them]; - - if (result == NSOrderedAscending) { - return NSOrderedDescending; - } - - if (result == NSOrderedDescending) { - return NSOrderedAscending; - } - - return NSOrderedSame; + __auto_type us = [self creationDate]; + __auto_type them = [another creationDate]; + return [them compare:us]; } - (NSComparisonResult)reverseCompareByModificationDate:(DDLogFileInfo *)another { - NSDate *us = [self modificationDate]; - NSDate *them = [another modificationDate]; - - NSComparisonResult result = [us compare:them]; - - if (result == NSOrderedAscending) { - return NSOrderedDescending; - } - - if (result == NSOrderedDescending) { - return NSOrderedAscending; - } - - return NSOrderedSame; + __auto_type us = [self modificationDate]; + __auto_type them = [another modificationDate]; + return [them compare:us]; } @end diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLog.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDLog.m similarity index 83% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLog.m rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDLog.m index 9736f1270..559a43957 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLog.m +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDLog.m @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -18,17 +18,17 @@ #define DD_LEGACY_MACROS 0 #endif -#import "DDLog.h" +#import #import -#import #import -#import -#import -#import -#import +#import + #if TARGET_OS_IOS #import + #import +#elif !defined(DD_CLI) && __has_include() + #import #endif @@ -44,7 +44,7 @@ // We maintain the NS prefix on the macros to be explicit about the fact that we're using NSLog. #ifndef DD_DEBUG - #define DD_DEBUG NO + #define DD_DEBUG 0 #endif #define NSLogDebug(frmt, ...) do{ if(DD_DEBUG) NSLog((frmt), ##__VA_ARGS__); } while(0) @@ -52,7 +52,7 @@ // Specifies the maximum queue size of the logging thread. // // Since most logging is asynchronous, its possible for rogue threads to flood the logging queue. -// That is, to issue an abundance of log statements faster than the logging thread can keepup. +// That is, to issue an abundance of log statements faster than the logging thread can keep up. // Typically such a scenario occurs when log statements are added haphazardly within large loops, // but may also be possible if relatively slow loggers are being used. // @@ -85,9 +85,9 @@ @interface DDLoggerNode : NSObject @property (nonatomic, readonly) DDLogLevel level; @property (nonatomic, readonly) dispatch_queue_t loggerQueue; -+ (DDLoggerNode *)nodeWithLogger:(id )logger - loggerQueue:(dispatch_queue_t)loggerQueue - level:(DDLogLevel)level; ++ (instancetype)nodeWithLogger:(id )logger + loggerQueue:(dispatch_queue_t)loggerQueue + level:(DDLogLevel)level; @end @@ -110,7 +110,7 @@ @implementation DDLog static dispatch_queue_t _loggingQueue; // Individual loggers are executed concurrently per log statement. -// Each logger has it's own associated queue, and a dispatch group is used for synchrnoization. +// Each logger has it's own associated queue, and a dispatch group is used for synchronization. static dispatch_group_t _loggingGroup; // In order to prevent to queue from growing infinitely large, @@ -128,12 +128,12 @@ @implementation DDLog */ + (instancetype)sharedInstance { static id sharedInstance = nil; - + static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[self alloc] init]; }); - + return sharedInstance; } @@ -143,27 +143,27 @@ + (instancetype)sharedInstance { * method may never be invoked if the class is not used.) The runtime sends the initialize message to * classes in a thread-safe manner. Superclasses receive this message before their subclasses. * - * This method may also be called directly (assumably by accident), hence the safety mechanism. + * This method may also be called directly, hence the safety mechanism. **/ + (void)initialize { static dispatch_once_t DDLogOnceToken; - + dispatch_once(&DDLogOnceToken, ^{ NSLogDebug(@"DDLog: Using grand central dispatch"); - + _loggingQueue = dispatch_queue_create("cocoa.lumberjack", NULL); _loggingGroup = dispatch_group_create(); - + void *nonNullValue = GlobalLoggingQueueIdentityKey; // Whatever, just not null dispatch_queue_set_specific(_loggingQueue, GlobalLoggingQueueIdentityKey, nonNullValue, NULL); - + _queueSemaphore = dispatch_semaphore_create(DDLOG_MAX_QUEUE_SIZE); - + // Figure out how many processors are available. // This may be used later for an optimization on uniprocessor machines. - + _numProcessors = MAX([NSProcessInfo processInfo].processorCount, (NSUInteger) 1); - + NSLogDebug(@"DDLog: numProcessors = %@", @(_numProcessors)); }); } @@ -174,36 +174,35 @@ + (void)initialize { * * @return An initialized `DDLog` instance. */ -- (id)init { +- (instancetype)init { self = [super init]; - + if (self) { self._loggers = [[NSMutableArray alloc] initWithCapacity:4]; - + #if TARGET_OS_IOS - NSString *notificationName = @"UIApplicationWillTerminateNotification"; + NSString *notificationName = UIApplicationWillTerminateNotification; #else NSString *notificationName = nil; - - // On Command Line Tool apps AppKit may not be avaliable -#ifdef NSAppKitVersionNumber10_0 - + + // On Command Line Tool apps AppKit may not be available +#if !defined(DD_CLI) && __has_include() if (NSApp) { - notificationName = @"NSApplicationWillTerminateNotification"; + notificationName = NSApplicationWillTerminateNotification; } - #endif - + if (!notificationName) { // If there is no NSApp -> we are running Command Line Tool app. // In this case terminate notification wouldn't be fired, so we use workaround. + __weak __auto_type weakSelf = self; atexit_b (^{ - [self applicationWillTerminate:nil]; + [weakSelf applicationWillTerminate:nil]; }); } - + #endif /* if TARGET_OS_IOS */ - + if (notificationName) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillTerminate:) @@ -211,7 +210,7 @@ - (id)init { object:nil]; } } - + return self; } @@ -250,7 +249,7 @@ - (void)addLogger:(id )logger withLevel:(DDLogLevel)level { if (!logger) { return; } - + dispatch_async(_loggingQueue, ^{ @autoreleasepool { [self lt_addLogger:logger level:level]; } }); @@ -264,7 +263,7 @@ - (void)removeLogger:(id )logger { if (!logger) { return; } - + dispatch_async(_loggingQueue, ^{ @autoreleasepool { [self lt_removeLogger:logger]; } }); @@ -286,11 +285,11 @@ - (void)removeAllLoggers { - (NSArray> *)allLoggers { __block NSArray *theLoggers; - + dispatch_sync(_loggingQueue, ^{ @autoreleasepool { theLoggers = [self lt_allLoggers]; } }); - + return theLoggers; } @@ -300,11 +299,11 @@ - (void)removeAllLoggers { - (NSArray *)allLoggersWithLevel { __block NSArray *theLoggersWithLevel; - + dispatch_sync(_loggingQueue, ^{ @autoreleasepool { theLoggersWithLevel = [self lt_allLoggersWithLevel]; } }); - + return theLoggersWithLevel; } @@ -343,7 +342,7 @@ - (void)queueLogMessage:(DDLogMessage *)logMessage asynchronously:(BOOL)asyncFla // We are using a counting semaphore provided by GCD. // The semaphore is initialized with our DDLOG_MAX_QUEUE_SIZE value. - // Everytime we want to queue a log message we decrement this value. + // Every time we want to queue a log message we decrement this value. // If the resulting value is less than zero, // the semaphore function waits in FIFO order for a signal to occur before returning. // @@ -351,12 +350,10 @@ - (void)queueLogMessage:(DDLogMessage *)logMessage asynchronously:(BOOL)asyncFla // Dispatch semaphores call down to the kernel only when the calling thread needs to be blocked. // If the calling semaphore does not need to block, no kernel call is made. - dispatch_semaphore_wait(_queueSemaphore, DISPATCH_TIME_FOREVER); - - // We've now sure we won't overflow the queue. - // It is time to queue our log message. - dispatch_block_t logBlock = ^{ + dispatch_semaphore_wait(_queueSemaphore, DISPATCH_TIME_FOREVER); + // We're now sure we won't overflow the queue. + // It is time to queue our log message. @autoreleasepool { [self lt_log:logMessage]; } @@ -364,6 +361,9 @@ - (void)queueLogMessage:(DDLogMessage *)logMessage asynchronously:(BOOL)asyncFla if (asyncFlag) { dispatch_async(_loggingQueue, logBlock); + } else if (dispatch_get_specific(GlobalLoggingQueueIdentityKey)) { + // We've logged an error message while on the logging queue... + logBlock(); } else { dispatch_sync(_loggingQueue, logBlock); } @@ -379,16 +379,16 @@ + (void)log:(BOOL)asynchronous tag:(id)tag format:(NSString *)format, ... { va_list args; - + if (format) { va_start(args, format); - + NSString *message = [[NSString alloc] initWithFormat:format arguments:args]; - + va_end(args); - + va_start(args, format); - + [self log:asynchronous message:message level:level @@ -398,7 +398,7 @@ + (void)log:(BOOL)asynchronous function:function line:line tag:tag]; - + va_end(args); } } @@ -413,16 +413,16 @@ - (void)log:(BOOL)asynchronous tag:(id)tag format:(NSString *)format, ... { va_list args; - + if (format) { va_start(args, format); - + NSString *message = [[NSString alloc] initWithFormat:format arguments:args]; - + va_end(args); - + va_start(args, format); - + [self log:asynchronous message:message level:level @@ -432,7 +432,7 @@ - (void)log:(BOOL)asynchronous function:function line:line tag:tag]; - + va_end(args); } } @@ -505,17 +505,15 @@ - (void)log:(BOOL)asynchronous tag:tag options:(DDLogMessageOptions)0 timestamp:nil]; - + [self queueLogMessage:logMessage asynchronously:asynchronous]; } -+ (void)log:(BOOL)asynchronous - message:(DDLogMessage *)logMessage { ++ (void)log:(BOOL)asynchronous message:(DDLogMessage *)logMessage { [self.sharedInstance log:asynchronous message:logMessage]; } -- (void)log:(BOOL)asynchronous - message:(DDLogMessage *)logMessage { +- (void)log:(BOOL)asynchronous message:(DDLogMessage *)logMessage { [self queueLogMessage:logMessage asynchronously:asynchronous]; } @@ -620,7 +618,7 @@ + (NSArray *)registeredClasses { NSUInteger bufferSize = numClasses; - classes = numClasses ? (Class *)malloc(sizeof(Class) * bufferSize) : NULL; + classes = numClasses ? (Class *)calloc(bufferSize, sizeof(Class)) : NULL; if (classes == NULL) { return @[]; //no memory or classes? } @@ -630,6 +628,7 @@ + (NSArray *)registeredClasses { if (numClasses > bufferSize || numClasses == 0) { //apparently more classes added between calls (or a problem); try again free(classes); + classes = NULL; numClasses = 0; } } @@ -693,7 +692,7 @@ - (void)lt_addLogger:(id )logger level:(DDLogLevel)level { // Add to loggers array. // Need to create loggerQueue if loggerNode doesn't provide one. - for (DDLoggerNode* node in self._loggers) { + for (DDLoggerNode *node in self._loggers) { if (node->_logger == logger && node->_level == level) { // Exactly same logger already added, exit @@ -705,21 +704,18 @@ - (void)lt_addLogger:(id )logger level:(DDLogLevel)level { @"This method should only be run on the logging thread/queue"); dispatch_queue_t loggerQueue = NULL; - if ([logger respondsToSelector:@selector(loggerQueue)]) { // Logger may be providing its own queue - - loggerQueue = [logger loggerQueue]; + loggerQueue = logger.loggerQueue; } if (loggerQueue == nil) { // Automatically create queue for the logger. // Use the logger name as the queue name if possible. - const char *loggerQueueName = NULL; if ([logger respondsToSelector:@selector(loggerName)]) { - loggerQueueName = [[logger loggerName] UTF8String]; + loggerQueueName = logger.loggerName.UTF8String; } loggerQueue = dispatch_queue_create(loggerQueueName, NULL); @@ -753,19 +749,19 @@ - (void)lt_removeLogger:(id )logger { break; } } - + if (loggerNode == nil) { NSLogDebug(@"DDLog: Request to remove logger which wasn't added"); return; } - + // Notify logger if ([logger respondsToSelector:@selector(willRemoveLogger)]) { dispatch_async(loggerNode->_loggerQueue, ^{ @autoreleasepool { [logger willRemoveLogger]; } }); } - + // Remove from loggers array [self._loggers removeObject:loggerNode]; } @@ -773,7 +769,7 @@ - (void)lt_removeLogger:(id )logger { - (void)lt_removeAllLoggers { NSAssert(dispatch_get_specific(GlobalLoggingQueueIdentityKey), @"This method should only be run on the logging thread/queue"); - + // Notify all loggers for (DDLoggerNode *loggerNode in self._loggers) { if ([loggerNode->_logger respondsToSelector:@selector(willRemoveLogger)]) { @@ -782,7 +778,7 @@ - (void)lt_removeAllLoggers { } }); } } - + // Remove all loggers from array [self._loggers removeAllObjects]; @@ -804,14 +800,14 @@ - (NSArray *)lt_allLoggers { - (NSArray *)lt_allLoggersWithLevel { NSAssert(dispatch_get_specific(GlobalLoggingQueueIdentityKey), @"This method should only be run on the logging thread/queue"); - + NSMutableArray *theLoggersWithLevel = [NSMutableArray new]; - + for (DDLoggerNode *loggerNode in self._loggers) { [theLoggersWithLevel addObject:[DDLoggerInformation informationWithLogger:loggerNode->_logger andLevel:loggerNode->_level]]; } - + return [theLoggersWithLevel copy]; } @@ -835,23 +831,39 @@ - (void)lt_log:(DDLogMessage *)logMessage { if (!(logMessage->_flag & loggerNode->_level)) { continue; } - + dispatch_group_async(_loggingGroup, loggerNode->_loggerQueue, ^{ @autoreleasepool { [loggerNode->_logger logMessage:logMessage]; } }); } - + dispatch_group_wait(_loggingGroup, DISPATCH_TIME_FOREVER); } else { - // Execute each logger serialy, each within its own queue. - + // Execute each logger serially, each within its own queue. + for (DDLoggerNode *loggerNode in self._loggers) { // skip the loggers that shouldn't write this message based on the log level if (!(logMessage->_flag & loggerNode->_level)) { continue; } - + +#if DD_DEBUG + // we must assure that we aren not on loggerNode->_loggerQueue. + if (loggerNode->_loggerQueue == NULL) { + // tell that we can't dispatch logger node on queue that is NULL. + NSLogDebug(@"DDLog: current node has loggerQueue == NULL"); + } + else { + dispatch_async(loggerNode->_loggerQueue, ^{ + if (dispatch_get_specific(GlobalLoggingQueueIdentityKey)) { + // tell that we somehow on logging queue? + NSLogDebug(@"DDLog: current node has loggerQueue == globalLoggingQueue"); + } + }); + } +#endif + // next, we must check that node is OK. dispatch_sync(loggerNode->_loggerQueue, ^{ @autoreleasepool { [loggerNode->_logger logMessage:logMessage]; } }); @@ -878,12 +890,12 @@ - (void)lt_log:(DDLogMessage *)logMessage { - (void)lt_flush { // All log statements issued before the flush method was invoked have now been executed. // - // Now we need to propogate the flush request to any loggers that implement the flush method. + // Now we need to propagate the flush request to any loggers that implement the flush method. // This is designed for loggers that buffer IO. - + NSAssert(dispatch_get_specific(GlobalLoggingQueueIdentityKey), @"This method should only be run on the logging thread/queue"); - + for (DDLoggerNode *loggerNode in self._loggers) { if ([loggerNode->_logger respondsToSelector:@selector(flush)]) { dispatch_group_async(_loggingGroup, loggerNode->_loggerQueue, ^{ @autoreleasepool { @@ -891,7 +903,7 @@ - (void)lt_flush { } }); } } - + dispatch_group_wait(_loggingGroup, DISPATCH_TIME_FOREVER); } @@ -984,8 +996,8 @@ - (instancetype)initWithLogger:(id )logger loggerQueue:(dispatch_queue return self; } -+ (DDLoggerNode *)nodeWithLogger:(id )logger loggerQueue:(dispatch_queue_t)loggerQueue level:(DDLogLevel)level { - return [[DDLoggerNode alloc] initWithLogger:logger loggerQueue:loggerQueue level:level]; ++ (instancetype)nodeWithLogger:(id )logger loggerQueue:(dispatch_queue_t)loggerQueue level:(DDLogLevel)level { + return [[self alloc] initWithLogger:logger loggerQueue:loggerQueue level:level]; } - (void)dealloc { @@ -1004,114 +1016,6 @@ - (void)dealloc { @implementation DDLogMessage -// Can we use DISPATCH_CURRENT_QUEUE_LABEL ? -// Can we use dispatch_get_current_queue (without it crashing) ? -// -// a) Compiling against newer SDK's (iOS 7+/OS X 10.9+) where DISPATCH_CURRENT_QUEUE_LABEL is defined -// on a (iOS 7.0+/OS X 10.9+) runtime version -// -// b) Systems where dispatch_get_current_queue is not yet deprecated and won't crash (< iOS 6.0/OS X 10.9) -// -// dispatch_get_current_queue(void); -// __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6,__MAC_10_9,__IPHONE_4_0,__IPHONE_6_0) - -#if TARGET_OS_IOS - -// Compiling for iOS - -static BOOL _use_dispatch_current_queue_label; -static BOOL _use_dispatch_get_current_queue; - -static void _dispatch_queue_label_init_once(void * __attribute__((unused)) context) -{ - _use_dispatch_current_queue_label = (UIDevice.currentDevice.systemVersion.floatValue >= 7.0f); - _use_dispatch_get_current_queue = (!_use_dispatch_current_queue_label && UIDevice.currentDevice.systemVersion.floatValue >= 6.1f); -} - -static __inline__ __attribute__((__always_inline__)) void _dispatch_queue_label_init() -{ - static dispatch_once_t onceToken; - dispatch_once_f(&onceToken, NULL, _dispatch_queue_label_init_once); -} - - #define USE_DISPATCH_CURRENT_QUEUE_LABEL (_dispatch_queue_label_init(), _use_dispatch_current_queue_label) - #define USE_DISPATCH_GET_CURRENT_QUEUE (_dispatch_queue_label_init(), _use_dispatch_get_current_queue) - -#elif TARGET_OS_WATCH || TARGET_OS_TV - -// Compiling for watchOS, tvOS - - #define USE_DISPATCH_CURRENT_QUEUE_LABEL YES - #define USE_DISPATCH_GET_CURRENT_QUEUE NO - -#else - -// Compiling for Mac OS X - - #ifndef MAC_OS_X_VERSION_10_9 - #define MAC_OS_X_VERSION_10_9 1090 - #endif - - #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9 // Mac OS X 10.9 or later required - - #define USE_DISPATCH_CURRENT_QUEUE_LABEL YES - #define USE_DISPATCH_GET_CURRENT_QUEUE NO - - #else - -static BOOL _use_dispatch_current_queue_label; -static BOOL _use_dispatch_get_current_queue; - -static void _dispatch_queue_label_init_once(void * __attribute__((unused)) context) -{ - _use_dispatch_current_queue_label = [NSTimer instancesRespondToSelector : @selector(tolerance)]; // OS X 10.9+ - _use_dispatch_get_current_queue = !_use_dispatch_current_queue_label; // < OS X 10.9 -} - -static __inline__ __attribute__((__always_inline__)) void _dispatch_queue_label_init() -{ - static dispatch_once_t onceToken; - dispatch_once_f(&onceToken, NULL, _dispatch_queue_label_init_once); -} - - #define USE_DISPATCH_CURRENT_QUEUE_LABEL (_dispatch_queue_label_init(), _use_dispatch_current_queue_label) - #define USE_DISPATCH_GET_CURRENT_QUEUE (_dispatch_queue_label_init(), _use_dispatch_get_current_queue) - - #endif - -#endif /* if TARGET_OS_IOS */ - -// Should we use pthread_threadid_np ? -// With iOS 8+/OSX 10.10+ NSLog uses pthread_threadid_np instead of pthread_mach_thread_np - -#if TARGET_OS_IOS - -// Compiling for iOS - - #ifndef kCFCoreFoundationVersionNumber_iOS_8_0 - #define kCFCoreFoundationVersionNumber_iOS_8_0 1140.10 - #endif - - #define USE_PTHREAD_THREADID_NP (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_8_0) - -#elif TARGET_OS_WATCH || TARGET_OS_TV - -// Compiling for watchOS, tvOS - - #define USE_PTHREAD_THREADID_NP YES - -#else - -// Compiling for Mac OS X - - #ifndef kCFCoreFoundationVersionNumber10_10 - #define kCFCoreFoundationVersionNumber10_10 1151.16 - #endif - - #define USE_PTHREAD_THREADID_NP (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_10) - -#endif /* if TARGET_OS_IOS */ - - (instancetype)init { self = [super init]; return self; @@ -1145,12 +1049,11 @@ - (instancetype)initWithMessage:(NSString *)message _options = options; _timestamp = timestamp ?: [NSDate new]; - if (USE_PTHREAD_THREADID_NP) { - __uint64_t tid; - pthread_threadid_np(NULL, &tid); + __uint64_t tid; + if (pthread_threadid_np(NULL, &tid) == 0) { _threadID = [[NSString alloc] initWithFormat:@"%llu", tid]; } else { - _threadID = [[NSString alloc] initWithFormat:@"%x", pthread_mach_thread_np(pthread_self())]; + _threadID = @"missing threadId"; } _threadName = NSThread.currentThread.name; @@ -1161,26 +1064,19 @@ - (instancetype)initWithMessage:(NSString *)message { _fileName = [_fileName substringToIndex:dotLocation]; } - + // Try to get the current queue's label - if (USE_DISPATCH_CURRENT_QUEUE_LABEL) { - _queueLabel = [[NSString alloc] initWithFormat:@"%s", dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL)]; - } else if (USE_DISPATCH_GET_CURRENT_QUEUE) { - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wdeprecated-declarations" - dispatch_queue_t currentQueue = dispatch_get_current_queue(); - #pragma clang diagnostic pop - _queueLabel = [[NSString alloc] initWithFormat:@"%s", dispatch_queue_get_label(currentQueue)]; - } else { - _queueLabel = @""; // iOS 6.x only - } + _queueLabel = [[NSString alloc] initWithFormat:@"%s", dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL)]; + + if (@available(macOS 10.10, iOS 8.0, *)) + _qos = (NSUInteger) qos_class_self(); } return self; } - (id)copyWithZone:(NSZone * __attribute__((unused)))zone { DDLogMessage *newMessage = [DDLogMessage new]; - + newMessage->_message = _message; newMessage->_level = _level; newMessage->_flag = _flag; @@ -1195,6 +1091,7 @@ - (id)copyWithZone:(NSZone * __attribute__((unused)))zone { newMessage->_threadID = _threadID; newMessage->_threadName = _threadName; newMessage->_queueLabel = _queueLabel; + newMessage->_qos = _qos; return newMessage; } @@ -1213,7 +1110,7 @@ - (instancetype)init { const char *loggerQueueName = NULL; if ([self respondsToSelector:@selector(loggerName)]) { - loggerQueueName = [[self loggerName] UTF8String]; + loggerQueueName = self.loggerName.UTF8String; } _loggerQueue = dispatch_queue_create(loggerQueueName, NULL); @@ -1293,7 +1190,7 @@ - (void)logMessage:(DDLogMessage * __attribute__((unused)))logMessage { // // globalLoggingQueue : The queue that all log messages go through before they arrive in our loggerQueue. // - // All log statements go through the serial gloabalLoggingQueue before they arrive at our loggerQueue. + // All log statements go through the serial globalLoggingQueue before they arrive at our loggerQueue. // Thus this method also goes through the serial globalLoggingQueue to ensure intuitive operation. // IMPORTANT NOTE: @@ -1313,8 +1210,8 @@ - (void)logMessage:(DDLogMessage * __attribute__((unused)))logMessage { __block id result; dispatch_sync(globalLoggingQueue, ^{ - dispatch_sync(_loggerQueue, ^{ - result = _logFormatter; + dispatch_sync(self->_loggerQueue, ^{ + result = self->_logFormatter; }); }); @@ -1329,26 +1226,24 @@ - (void)setLogFormatter:(id )logFormatter { dispatch_block_t block = ^{ @autoreleasepool { - if (_logFormatter != logFormatter) { - if ([_logFormatter respondsToSelector:@selector(willRemoveFromLogger:)]) { - [_logFormatter willRemoveFromLogger:self]; + if (self->_logFormatter != logFormatter) { + if ([self->_logFormatter respondsToSelector:@selector(willRemoveFromLogger:)]) { + [self->_logFormatter willRemoveFromLogger:self]; } - _logFormatter = logFormatter; - - if ([_logFormatter respondsToSelector:@selector(didAddToLogger:inQueue:)]) { - [_logFormatter didAddToLogger:self inQueue:_loggerQueue]; - } else if ([_logFormatter respondsToSelector:@selector(didAddToLogger:)]) { - [_logFormatter didAddToLogger:self]; + self->_logFormatter = logFormatter; + + if ([self->_logFormatter respondsToSelector:@selector(didAddToLogger:inQueue:)]) { + [self->_logFormatter didAddToLogger:self inQueue:self->_loggerQueue]; + } else if ([self->_logFormatter respondsToSelector:@selector(didAddToLogger:)]) { + [self->_logFormatter didAddToLogger:self]; } } } }; - dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(_loggerQueue, block); + dispatch_async(DDLog.loggingQueue, ^{ + dispatch_async(self->_loggerQueue, block); }); } @@ -1396,8 +1291,8 @@ - (instancetype)initWithLogger:(id )logger andLevel:(DDLogLevel)level return self; } -+ (DDLoggerInformation *)informationWithLogger:(id )logger andLevel:(DDLogLevel)level { - return [[DDLoggerInformation alloc] initWithLogger:logger andLevel:level]; ++ (instancetype)informationWithLogger:(id )logger andLevel:(DDLogLevel)level { + return [[self alloc] initWithLogger:logger andLevel:level]; } @end diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDLoggerNames.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDLoggerNames.m new file mode 100644 index 000000000..c4ef29f79 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDLoggerNames.m @@ -0,0 +1,21 @@ +// Software License Agreement (BSD License) +// +// Copyright (c) 2010-2020, Deusty, LLC +// All rights reserved. +// +// Redistribution and use of this software in source and binary forms, +// with or without modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Neither the name of Deusty nor the names of its contributors may be used +// to endorse or promote products derived from this software without specific +// prior written permission of Deusty, LLC. + +#import + +DDLoggerName const DDLoggerNameASL = @"cocoa.lumberjack.aslLogger"; +DDLoggerName const DDLoggerNameTTY = @"cocoa.lumberjack.ttyLogger"; +DDLoggerName const DDLoggerNameOS = @"cocoa.lumberjack.osLogger"; +DDLoggerName const DDLoggerNameFile = @"cocoa.lumberjack.fileLogger"; diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDOSLogger.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDOSLogger.m new file mode 100644 index 000000000..a678ea515 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDOSLogger.m @@ -0,0 +1,118 @@ +// Software License Agreement (BSD License) +// +// Copyright (c) 2010-2020, Deusty, LLC +// All rights reserved. +// +// Redistribution and use of this software in source and binary forms, +// with or without modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Neither the name of Deusty nor the names of its contributors may be used +// to endorse or promote products derived from this software without specific +// prior written permission of Deusty, LLC. + +#import + +#import + +@interface DDOSLogger () { + NSString *_subsystem; + NSString *_category; +} + +@property (copy, nonatomic, readonly, nullable) NSString *subsystem; +@property (copy, nonatomic, readonly, nullable) NSString *category; +@property (strong, nonatomic, readwrite, nonnull) os_log_t logger; + +@end + +@implementation DDOSLogger + +@synthesize subsystem = _subsystem; +@synthesize category = _category; + +#pragma mark - Initialization + +/** + * Assertion + * Swift: (String, String)? + */ +- (instancetype)initWithSubsystem:(NSString *)subsystem category:(NSString *)category { + NSAssert((subsystem == nil) == (category == nil), @"Either both subsystem and category or neither should be nil."); + if (self = [super init]) { + _subsystem = [subsystem copy]; + _category = [category copy]; + } + return self; +} + +static DDOSLogger *sharedInstance; + +- (instancetype)init { + return [self initWithSubsystem:nil category:nil]; +} + ++ (instancetype)sharedInstance { + static dispatch_once_t DDOSLoggerOnceToken; + + dispatch_once(&DDOSLoggerOnceToken, ^{ + sharedInstance = [[[self class] alloc] init]; + }); + + return sharedInstance; +} + +#pragma mark - os_log + +- (os_log_t)getLogger { + if (self.subsystem == nil || self.category == nil) { + return OS_LOG_DEFAULT; + } + return os_log_create(self.subsystem.UTF8String, self.category.UTF8String); +} + +- (os_log_t)logger { + if (_logger == nil) { + _logger = [self getLogger]; + } + return _logger; +} + +#pragma mark - DDLogger + +- (DDLoggerName)loggerName { + return DDLoggerNameOS; +} + +- (void)logMessage:(DDLogMessage *)logMessage { + // Skip captured log messages + if ([logMessage->_fileName isEqualToString:@"DDASLLogCapture"]) { + return; + } + + if (@available(iOS 10.0, macOS 10.12, tvOS 10.0, watchOS 3.0, *)) { + NSString * message = _logFormatter ? [_logFormatter formatLogMessage:logMessage] : logMessage->_message; + if (message != nil) { + const char *msg = [message UTF8String]; + __auto_type logger = [self logger]; + switch (logMessage->_flag) { + case DDLogFlagError : + os_log_error(logger, "%{public}s", msg); + break; + case DDLogFlagWarning: + case DDLogFlagInfo : + os_log_info(logger, "%{public}s", msg); + break; + case DDLogFlagDebug : + case DDLogFlagVerbose: + default : + os_log_debug(logger, "%{public}s", msg); + break; + } + } + } +} + +@end diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDTTYLogger.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDTTYLogger.m similarity index 66% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDTTYLogger.m rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDTTYLogger.m index f6436773f..f622ed456 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDTTYLogger.m +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/DDTTYLogger.m @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -13,9 +13,8 @@ // to endorse or promote products derived from this software without specific // prior written permission of Deusty, LLC. -#import "DDTTYLogger.h" +#import -#import #import #if !__has_feature(objc_arc) @@ -79,6 +78,11 @@ #define MAP_TO_TERMINAL_APP_COLORS 1 +typedef struct { + uint8_t r; + uint8_t g; + uint8_t b; +} DDRGBColor; @interface DDTTYLoggerColorProfile : NSObject { @public @@ -109,7 +113,7 @@ @interface DDTTYLoggerColorProfile : NSObject { size_t resetCodeLen; } -- (instancetype)initWithForegroundColor:(DDColor *)fgColor backgroundColor:(DDColor *)bgColor flag:(DDLogFlag)mask context:(NSInteger)ctxt; +- (nullable instancetype)initWithForegroundColor:(nullable DDColor *)fgColor backgroundColor:(nullable DDColor *)bgColor flag:(DDLogFlag)mask context:(NSInteger)ctxt; @end @@ -157,71 +161,74 @@ + (void)initialize_colors_16 { return; } - NSMutableArray *m_codes_fg = [NSMutableArray arrayWithCapacity:16]; - NSMutableArray *m_codes_bg = [NSMutableArray arrayWithCapacity:16]; NSMutableArray *m_colors = [NSMutableArray arrayWithCapacity:16]; // In a standard shell only 16 colors are supported. // // More information about ansi escape codes can be found online. // http://en.wikipedia.org/wiki/ANSI_escape_code + codes_fg = @[ + @"30m", // normal - black + @"31m", // normal - red + @"32m", // normal - green + @"33m", // normal - yellow + @"34m", // normal - blue + @"35m", // normal - magenta + @"36m", // normal - cyan + @"37m", // normal - gray + @"1;30m", // bright - darkgray + @"1;31m", // bright - red + @"1;32m", // bright - green + @"1;33m", // bright - yellow + @"1;34m", // bright - blue + @"1;35m", // bright - magenta + @"1;36m", // bright - cyan + @"1;37m", // bright - white + ]; + + codes_bg = @[ + @"40m", // normal - black + @"41m", // normal - red + @"42m", // normal - green + @"43m", // normal - yellow + @"44m", // normal - blue + @"45m", // normal - magenta + @"46m", // normal - cyan + @"47m", // normal - gray + @"1;40m", // bright - darkgray + @"1;41m", // bright - red + @"1;42m", // bright - green + @"1;43m", // bright - yellow + @"1;44m", // bright - blue + @"1;45m", // bright - magenta + @"1;46m", // bright - cyan + @"1;47m", // bright - white + ]; - [m_codes_fg addObject:@"30m"]; // normal - black - [m_codes_fg addObject:@"31m"]; // normal - red - [m_codes_fg addObject:@"32m"]; // normal - green - [m_codes_fg addObject:@"33m"]; // normal - yellow - [m_codes_fg addObject:@"34m"]; // normal - blue - [m_codes_fg addObject:@"35m"]; // normal - magenta - [m_codes_fg addObject:@"36m"]; // normal - cyan - [m_codes_fg addObject:@"37m"]; // normal - gray - [m_codes_fg addObject:@"1;30m"]; // bright - darkgray - [m_codes_fg addObject:@"1;31m"]; // bright - red - [m_codes_fg addObject:@"1;32m"]; // bright - green - [m_codes_fg addObject:@"1;33m"]; // bright - yellow - [m_codes_fg addObject:@"1;34m"]; // bright - blue - [m_codes_fg addObject:@"1;35m"]; // bright - magenta - [m_codes_fg addObject:@"1;36m"]; // bright - cyan - [m_codes_fg addObject:@"1;37m"]; // bright - white - - [m_codes_bg addObject:@"40m"]; // normal - black - [m_codes_bg addObject:@"41m"]; // normal - red - [m_codes_bg addObject:@"42m"]; // normal - green - [m_codes_bg addObject:@"43m"]; // normal - yellow - [m_codes_bg addObject:@"44m"]; // normal - blue - [m_codes_bg addObject:@"45m"]; // normal - magenta - [m_codes_bg addObject:@"46m"]; // normal - cyan - [m_codes_bg addObject:@"47m"]; // normal - gray - [m_codes_bg addObject:@"1;40m"]; // bright - darkgray - [m_codes_bg addObject:@"1;41m"]; // bright - red - [m_codes_bg addObject:@"1;42m"]; // bright - green - [m_codes_bg addObject:@"1;43m"]; // bright - yellow - [m_codes_bg addObject:@"1;44m"]; // bright - blue - [m_codes_bg addObject:@"1;45m"]; // bright - magenta - [m_codes_bg addObject:@"1;46m"]; // bright - cyan - [m_codes_bg addObject:@"1;47m"]; // bright - white #if MAP_TO_TERMINAL_APP_COLORS // Standard Terminal.app colors: // // These are the default colors used by Apple's Terminal.app. - - [m_colors addObject:DDMakeColor( 0, 0, 0)]; // normal - black - [m_colors addObject:DDMakeColor(194, 54, 33)]; // normal - red - [m_colors addObject:DDMakeColor( 37, 188, 36)]; // normal - green - [m_colors addObject:DDMakeColor(173, 173, 39)]; // normal - yellow - [m_colors addObject:DDMakeColor( 73, 46, 225)]; // normal - blue - [m_colors addObject:DDMakeColor(211, 56, 211)]; // normal - magenta - [m_colors addObject:DDMakeColor( 51, 187, 200)]; // normal - cyan - [m_colors addObject:DDMakeColor(203, 204, 205)]; // normal - gray - [m_colors addObject:DDMakeColor(129, 131, 131)]; // bright - darkgray - [m_colors addObject:DDMakeColor(252, 57, 31)]; // bright - red - [m_colors addObject:DDMakeColor( 49, 231, 34)]; // bright - green - [m_colors addObject:DDMakeColor(234, 236, 35)]; // bright - yellow - [m_colors addObject:DDMakeColor( 88, 51, 255)]; // bright - blue - [m_colors addObject:DDMakeColor(249, 53, 248)]; // bright - magenta - [m_colors addObject:DDMakeColor( 20, 240, 240)]; // bright - cyan - [m_colors addObject:DDMakeColor(233, 235, 235)]; // bright - white + DDRGBColor rgbColors[] = { + { 0, 0, 0}, // normal - black + {194, 54, 33}, // normal - red + { 37, 188, 36}, // normal - green + {173, 173, 39}, // normal - yellow + { 73, 46, 225}, // normal - blue + {211, 56, 211}, // normal - magenta + { 51, 187, 200}, // normal - cyan + {203, 204, 205}, // normal - gray + {129, 131, 131}, // bright - darkgray + {252, 57, 31}, // bright - red + { 49, 231, 34}, // bright - green + {234, 236, 35}, // bright - yellow + { 88, 51, 255}, // bright - blue + {249, 53, 248}, // bright - magenta + { 20, 240, 240}, // bright - cyan + {233, 235, 235}, // bright - white + }; #else /* if MAP_TO_TERMINAL_APP_COLORS */ @@ -229,27 +236,29 @@ + (void)initialize_colors_16 { // // These are the default colors used by most xterm shells. - [m_colors addObject:DDMakeColor( 0, 0, 0)]; // normal - black - [m_colors addObject:DDMakeColor(205, 0, 0)]; // normal - red - [m_colors addObject:DDMakeColor( 0, 205, 0)]; // normal - green - [m_colors addObject:DDMakeColor(205, 205, 0)]; // normal - yellow - [m_colors addObject:DDMakeColor( 0, 0, 238)]; // normal - blue - [m_colors addObject:DDMakeColor(205, 0, 205)]; // normal - magenta - [m_colors addObject:DDMakeColor( 0, 205, 205)]; // normal - cyan - [m_colors addObject:DDMakeColor(229, 229, 229)]; // normal - gray - [m_colors addObject:DDMakeColor(127, 127, 127)]; // bright - darkgray - [m_colors addObject:DDMakeColor(255, 0, 0)]; // bright - red - [m_colors addObject:DDMakeColor( 0, 255, 0)]; // bright - green - [m_colors addObject:DDMakeColor(255, 255, 0)]; // bright - yellow - [m_colors addObject:DDMakeColor( 92, 92, 255)]; // bright - blue - [m_colors addObject:DDMakeColor(255, 0, 255)]; // bright - magenta - [m_colors addObject:DDMakeColor( 0, 255, 255)]; // bright - cyan - [m_colors addObject:DDMakeColor(255, 255, 255)]; // bright - white - + DDRGBColor rgbColors[] = { + { 0, 0, 0}, // normal - black + {205, 0, 0}, // normal - red + { 0, 205, 0}, // normal - green + {205, 205, 0}, // normal - yellow + { 0, 0, 238}, // normal - blue + {205, 0, 205}, // normal - magenta + { 0, 205, 205}, // normal - cyan + {229, 229, 229}, // normal - gray + {127, 127, 127}, // bright - darkgray + {255, 0, 0}, // bright - red + { 0, 255, 0}, // bright - green + {255, 255, 0}, // bright - yellow + { 92, 92, 255}, // bright - blue + {255, 0, 255}, // bright - magenta + { 0, 255, 255}, // bright - cyan + {255, 255, 255}, // bright - white + }; #endif /* if MAP_TO_TERMINAL_APP_COLORS */ - codes_fg = [m_codes_fg copy]; - codes_bg = [m_codes_bg copy]; + for (size_t i = 0; i < sizeof(rgbColors) / sizeof(rgbColors[0]); ++i) { + [m_colors addObject:DDMakeColor(rgbColors[i].r, rgbColors[i].g, rgbColors[i].b)]; + } colors = [m_colors copy]; NSAssert([codes_fg count] == [codes_bg count], @"Invalid colors/codes array(s)"); @@ -298,289 +307,294 @@ + (void)initialize_colors_256 { // http://en.wikipedia.org/wiki/ANSI_escape_code // Colors + DDRGBColor rgbColors[] = { + { 47, 49, 49}, + { 60, 42, 144}, + { 66, 44, 183}, + { 73, 46, 222}, + { 81, 50, 253}, + { 88, 51, 255}, + + { 42, 128, 37}, + { 42, 127, 128}, + { 44, 126, 169}, + { 56, 125, 209}, + { 59, 124, 245}, + { 66, 123, 255}, + + { 51, 163, 41}, + { 39, 162, 121}, + { 42, 161, 162}, + { 53, 160, 202}, + { 45, 159, 240}, + { 58, 158, 255}, + + { 31, 196, 37}, + { 48, 196, 115}, + { 39, 195, 155}, + { 49, 195, 195}, + { 32, 194, 235}, + { 53, 193, 255}, + + { 50, 229, 35}, + { 40, 229, 109}, + { 27, 229, 149}, + { 49, 228, 189}, + { 33, 228, 228}, + { 53, 227, 255}, + + { 27, 254, 30}, + { 30, 254, 103}, + { 45, 254, 143}, + { 38, 253, 182}, + { 38, 253, 222}, + { 42, 253, 252}, + + {140, 48, 40}, + {136, 51, 136}, + {135, 52, 177}, + {134, 52, 217}, + {135, 56, 248}, + {134, 53, 255}, + + {125, 125, 38}, + {124, 125, 125}, + {122, 124, 166}, + {123, 124, 207}, + {123, 122, 247}, + {124, 121, 255}, + + {119, 160, 35}, + {117, 160, 120}, + {117, 160, 160}, + {115, 159, 201}, + {116, 158, 240}, + {117, 157, 255}, + + {113, 195, 39}, + {110, 194, 114}, + {111, 194, 154}, + {108, 194, 194}, + {109, 193, 234}, + {108, 192, 255}, + + {105, 228, 30}, + {103, 228, 109}, + {105, 228, 148}, + {100, 227, 188}, + { 99, 227, 227}, + { 99, 226, 253}, + + { 92, 253, 34}, + { 96, 253, 103}, + { 97, 253, 142}, + { 88, 253, 182}, + { 93, 253, 221}, + { 88, 254, 251}, + + {177, 53, 34}, + {174, 54, 131}, + {172, 55, 172}, + {171, 57, 213}, + {170, 55, 249}, + {170, 57, 255}, + + {165, 123, 37}, + {163, 123, 123}, + {162, 123, 164}, + {161, 122, 205}, + {161, 121, 241}, + {161, 121, 255}, + + {158, 159, 33}, + {157, 158, 118}, + {157, 158, 159}, + {155, 157, 199}, + {155, 157, 239}, + {154, 156, 255}, + + {152, 193, 40}, + {151, 193, 113}, + {150, 193, 153}, + {150, 192, 193}, + {148, 192, 232}, + {149, 191, 253}, + + {146, 227, 28}, + {144, 227, 108}, + {144, 227, 147}, + {144, 227, 187}, + {142, 226, 227}, + {142, 225, 252}, + + {138, 253, 36}, + {137, 253, 102}, + {136, 253, 141}, + {138, 254, 181}, + {135, 255, 220}, + {133, 255, 250}, + + {214, 57, 30}, + {211, 59, 126}, + {209, 57, 168}, + {208, 55, 208}, + {207, 58, 247}, + {206, 61, 255}, + + {204, 121, 32}, + {202, 121, 121}, + {201, 121, 161}, + {200, 120, 202}, + {200, 120, 241}, + {198, 119, 255}, + + {198, 157, 37}, + {196, 157, 116}, + {195, 156, 157}, + {195, 156, 197}, + {194, 155, 236}, + {193, 155, 255}, + + {191, 192, 36}, + {190, 191, 112}, + {189, 191, 152}, + {189, 191, 191}, + {188, 190, 230}, + {187, 190, 253}, + + {185, 226, 28}, + {184, 226, 106}, + {183, 225, 146}, + {183, 225, 186}, + {182, 225, 225}, + {181, 224, 252}, + + {178, 255, 35}, + {178, 255, 101}, + {177, 254, 141}, + {176, 254, 180}, + {176, 254, 220}, + {175, 253, 249}, + + {247, 56, 30}, + {245, 57, 122}, + {243, 59, 163}, + {244, 60, 204}, + {242, 59, 241}, + {240, 55, 255}, + + {241, 119, 36}, + {240, 120, 118}, + {238, 119, 158}, + {237, 119, 199}, + {237, 118, 238}, + {236, 118, 255}, + + {235, 154, 36}, + {235, 154, 114}, + {234, 154, 154}, + {232, 154, 194}, + {232, 153, 234}, + {232, 153, 255}, + + {230, 190, 30}, + {229, 189, 110}, + {228, 189, 150}, + {227, 189, 190}, + {227, 189, 229}, + {226, 188, 255}, + + {224, 224, 35}, + {223, 224, 105}, + {222, 224, 144}, + {222, 223, 184}, + {222, 223, 224}, + {220, 223, 253}, + + {217, 253, 28}, + {217, 253, 99}, + {216, 252, 139}, + {216, 252, 179}, + {215, 252, 218}, + {215, 251, 250}, + + {255, 61, 30}, + {255, 60, 118}, + {255, 58, 159}, + {255, 56, 199}, + {255, 55, 238}, + {255, 59, 255}, + + {255, 117, 29}, + {255, 117, 115}, + {255, 117, 155}, + {255, 117, 195}, + {255, 116, 235}, + {254, 116, 255}, + + {255, 152, 27}, + {255, 152, 111}, + {254, 152, 152}, + {255, 152, 192}, + {254, 151, 231}, + {253, 151, 253}, + + {255, 187, 33}, + {253, 187, 107}, + {252, 187, 148}, + {253, 187, 187}, + {254, 187, 227}, + {252, 186, 252}, + + {252, 222, 34}, + {251, 222, 103}, + {251, 222, 143}, + {250, 222, 182}, + {251, 221, 222}, + {252, 221, 252}, + + {251, 252, 15}, + {251, 252, 97}, + {249, 252, 137}, + {247, 252, 177}, + {247, 253, 217}, + {254, 255, 255}, + + // Grayscale + + { 52, 53, 53}, + { 57, 58, 59}, + { 66, 67, 67}, + { 75, 76, 76}, + { 83, 85, 85}, + { 92, 93, 94}, + + {101, 102, 102}, + {109, 111, 111}, + {118, 119, 119}, + {126, 127, 128}, + {134, 136, 136}, + {143, 144, 145}, + + {151, 152, 153}, + {159, 161, 161}, + {167, 169, 169}, + {176, 177, 177}, + {184, 185, 186}, + {192, 193, 194}, + + {200, 201, 202}, + {208, 209, 210}, + {216, 218, 218}, + {224, 226, 226}, + {232, 234, 234}, + {240, 242, 242}, + }; + + for (size_t i = 0; i < sizeof(rgbColors) / sizeof(rgbColors[0]); ++i) { + [m_colors addObject:DDMakeColor(rgbColors[i].r, rgbColors[i].g, rgbColors[i].b)]; + } - [m_colors addObject:DDMakeColor( 47, 49, 49)]; - [m_colors addObject:DDMakeColor( 60, 42, 144)]; - [m_colors addObject:DDMakeColor( 66, 44, 183)]; - [m_colors addObject:DDMakeColor( 73, 46, 222)]; - [m_colors addObject:DDMakeColor( 81, 50, 253)]; - [m_colors addObject:DDMakeColor( 88, 51, 255)]; - - [m_colors addObject:DDMakeColor( 42, 128, 37)]; - [m_colors addObject:DDMakeColor( 42, 127, 128)]; - [m_colors addObject:DDMakeColor( 44, 126, 169)]; - [m_colors addObject:DDMakeColor( 56, 125, 209)]; - [m_colors addObject:DDMakeColor( 59, 124, 245)]; - [m_colors addObject:DDMakeColor( 66, 123, 255)]; - - [m_colors addObject:DDMakeColor( 51, 163, 41)]; - [m_colors addObject:DDMakeColor( 39, 162, 121)]; - [m_colors addObject:DDMakeColor( 42, 161, 162)]; - [m_colors addObject:DDMakeColor( 53, 160, 202)]; - [m_colors addObject:DDMakeColor( 45, 159, 240)]; - [m_colors addObject:DDMakeColor( 58, 158, 255)]; - - [m_colors addObject:DDMakeColor( 31, 196, 37)]; - [m_colors addObject:DDMakeColor( 48, 196, 115)]; - [m_colors addObject:DDMakeColor( 39, 195, 155)]; - [m_colors addObject:DDMakeColor( 49, 195, 195)]; - [m_colors addObject:DDMakeColor( 32, 194, 235)]; - [m_colors addObject:DDMakeColor( 53, 193, 255)]; - - [m_colors addObject:DDMakeColor( 50, 229, 35)]; - [m_colors addObject:DDMakeColor( 40, 229, 109)]; - [m_colors addObject:DDMakeColor( 27, 229, 149)]; - [m_colors addObject:DDMakeColor( 49, 228, 189)]; - [m_colors addObject:DDMakeColor( 33, 228, 228)]; - [m_colors addObject:DDMakeColor( 53, 227, 255)]; - - [m_colors addObject:DDMakeColor( 27, 254, 30)]; - [m_colors addObject:DDMakeColor( 30, 254, 103)]; - [m_colors addObject:DDMakeColor( 45, 254, 143)]; - [m_colors addObject:DDMakeColor( 38, 253, 182)]; - [m_colors addObject:DDMakeColor( 38, 253, 222)]; - [m_colors addObject:DDMakeColor( 42, 253, 252)]; - - [m_colors addObject:DDMakeColor(140, 48, 40)]; - [m_colors addObject:DDMakeColor(136, 51, 136)]; - [m_colors addObject:DDMakeColor(135, 52, 177)]; - [m_colors addObject:DDMakeColor(134, 52, 217)]; - [m_colors addObject:DDMakeColor(135, 56, 248)]; - [m_colors addObject:DDMakeColor(134, 53, 255)]; - - [m_colors addObject:DDMakeColor(125, 125, 38)]; - [m_colors addObject:DDMakeColor(124, 125, 125)]; - [m_colors addObject:DDMakeColor(122, 124, 166)]; - [m_colors addObject:DDMakeColor(123, 124, 207)]; - [m_colors addObject:DDMakeColor(123, 122, 247)]; - [m_colors addObject:DDMakeColor(124, 121, 255)]; - - [m_colors addObject:DDMakeColor(119, 160, 35)]; - [m_colors addObject:DDMakeColor(117, 160, 120)]; - [m_colors addObject:DDMakeColor(117, 160, 160)]; - [m_colors addObject:DDMakeColor(115, 159, 201)]; - [m_colors addObject:DDMakeColor(116, 158, 240)]; - [m_colors addObject:DDMakeColor(117, 157, 255)]; - - [m_colors addObject:DDMakeColor(113, 195, 39)]; - [m_colors addObject:DDMakeColor(110, 194, 114)]; - [m_colors addObject:DDMakeColor(111, 194, 154)]; - [m_colors addObject:DDMakeColor(108, 194, 194)]; - [m_colors addObject:DDMakeColor(109, 193, 234)]; - [m_colors addObject:DDMakeColor(108, 192, 255)]; - - [m_colors addObject:DDMakeColor(105, 228, 30)]; - [m_colors addObject:DDMakeColor(103, 228, 109)]; - [m_colors addObject:DDMakeColor(105, 228, 148)]; - [m_colors addObject:DDMakeColor(100, 227, 188)]; - [m_colors addObject:DDMakeColor( 99, 227, 227)]; - [m_colors addObject:DDMakeColor( 99, 226, 253)]; - - [m_colors addObject:DDMakeColor( 92, 253, 34)]; - [m_colors addObject:DDMakeColor( 96, 253, 103)]; - [m_colors addObject:DDMakeColor( 97, 253, 142)]; - [m_colors addObject:DDMakeColor( 88, 253, 182)]; - [m_colors addObject:DDMakeColor( 93, 253, 221)]; - [m_colors addObject:DDMakeColor( 88, 254, 251)]; - - [m_colors addObject:DDMakeColor(177, 53, 34)]; - [m_colors addObject:DDMakeColor(174, 54, 131)]; - [m_colors addObject:DDMakeColor(172, 55, 172)]; - [m_colors addObject:DDMakeColor(171, 57, 213)]; - [m_colors addObject:DDMakeColor(170, 55, 249)]; - [m_colors addObject:DDMakeColor(170, 57, 255)]; - - [m_colors addObject:DDMakeColor(165, 123, 37)]; - [m_colors addObject:DDMakeColor(163, 123, 123)]; - [m_colors addObject:DDMakeColor(162, 123, 164)]; - [m_colors addObject:DDMakeColor(161, 122, 205)]; - [m_colors addObject:DDMakeColor(161, 121, 241)]; - [m_colors addObject:DDMakeColor(161, 121, 255)]; - - [m_colors addObject:DDMakeColor(158, 159, 33)]; - [m_colors addObject:DDMakeColor(157, 158, 118)]; - [m_colors addObject:DDMakeColor(157, 158, 159)]; - [m_colors addObject:DDMakeColor(155, 157, 199)]; - [m_colors addObject:DDMakeColor(155, 157, 239)]; - [m_colors addObject:DDMakeColor(154, 156, 255)]; - - [m_colors addObject:DDMakeColor(152, 193, 40)]; - [m_colors addObject:DDMakeColor(151, 193, 113)]; - [m_colors addObject:DDMakeColor(150, 193, 153)]; - [m_colors addObject:DDMakeColor(150, 192, 193)]; - [m_colors addObject:DDMakeColor(148, 192, 232)]; - [m_colors addObject:DDMakeColor(149, 191, 253)]; - - [m_colors addObject:DDMakeColor(146, 227, 28)]; - [m_colors addObject:DDMakeColor(144, 227, 108)]; - [m_colors addObject:DDMakeColor(144, 227, 147)]; - [m_colors addObject:DDMakeColor(144, 227, 187)]; - [m_colors addObject:DDMakeColor(142, 226, 227)]; - [m_colors addObject:DDMakeColor(142, 225, 252)]; - - [m_colors addObject:DDMakeColor(138, 253, 36)]; - [m_colors addObject:DDMakeColor(137, 253, 102)]; - [m_colors addObject:DDMakeColor(136, 253, 141)]; - [m_colors addObject:DDMakeColor(138, 254, 181)]; - [m_colors addObject:DDMakeColor(135, 255, 220)]; - [m_colors addObject:DDMakeColor(133, 255, 250)]; - - [m_colors addObject:DDMakeColor(214, 57, 30)]; - [m_colors addObject:DDMakeColor(211, 59, 126)]; - [m_colors addObject:DDMakeColor(209, 57, 168)]; - [m_colors addObject:DDMakeColor(208, 55, 208)]; - [m_colors addObject:DDMakeColor(207, 58, 247)]; - [m_colors addObject:DDMakeColor(206, 61, 255)]; - - [m_colors addObject:DDMakeColor(204, 121, 32)]; - [m_colors addObject:DDMakeColor(202, 121, 121)]; - [m_colors addObject:DDMakeColor(201, 121, 161)]; - [m_colors addObject:DDMakeColor(200, 120, 202)]; - [m_colors addObject:DDMakeColor(200, 120, 241)]; - [m_colors addObject:DDMakeColor(198, 119, 255)]; - - [m_colors addObject:DDMakeColor(198, 157, 37)]; - [m_colors addObject:DDMakeColor(196, 157, 116)]; - [m_colors addObject:DDMakeColor(195, 156, 157)]; - [m_colors addObject:DDMakeColor(195, 156, 197)]; - [m_colors addObject:DDMakeColor(194, 155, 236)]; - [m_colors addObject:DDMakeColor(193, 155, 255)]; - - [m_colors addObject:DDMakeColor(191, 192, 36)]; - [m_colors addObject:DDMakeColor(190, 191, 112)]; - [m_colors addObject:DDMakeColor(189, 191, 152)]; - [m_colors addObject:DDMakeColor(189, 191, 191)]; - [m_colors addObject:DDMakeColor(188, 190, 230)]; - [m_colors addObject:DDMakeColor(187, 190, 253)]; - - [m_colors addObject:DDMakeColor(185, 226, 28)]; - [m_colors addObject:DDMakeColor(184, 226, 106)]; - [m_colors addObject:DDMakeColor(183, 225, 146)]; - [m_colors addObject:DDMakeColor(183, 225, 186)]; - [m_colors addObject:DDMakeColor(182, 225, 225)]; - [m_colors addObject:DDMakeColor(181, 224, 252)]; - - [m_colors addObject:DDMakeColor(178, 255, 35)]; - [m_colors addObject:DDMakeColor(178, 255, 101)]; - [m_colors addObject:DDMakeColor(177, 254, 141)]; - [m_colors addObject:DDMakeColor(176, 254, 180)]; - [m_colors addObject:DDMakeColor(176, 254, 220)]; - [m_colors addObject:DDMakeColor(175, 253, 249)]; - - [m_colors addObject:DDMakeColor(247, 56, 30)]; - [m_colors addObject:DDMakeColor(245, 57, 122)]; - [m_colors addObject:DDMakeColor(243, 59, 163)]; - [m_colors addObject:DDMakeColor(244, 60, 204)]; - [m_colors addObject:DDMakeColor(242, 59, 241)]; - [m_colors addObject:DDMakeColor(240, 55, 255)]; - - [m_colors addObject:DDMakeColor(241, 119, 36)]; - [m_colors addObject:DDMakeColor(240, 120, 118)]; - [m_colors addObject:DDMakeColor(238, 119, 158)]; - [m_colors addObject:DDMakeColor(237, 119, 199)]; - [m_colors addObject:DDMakeColor(237, 118, 238)]; - [m_colors addObject:DDMakeColor(236, 118, 255)]; - - [m_colors addObject:DDMakeColor(235, 154, 36)]; - [m_colors addObject:DDMakeColor(235, 154, 114)]; - [m_colors addObject:DDMakeColor(234, 154, 154)]; - [m_colors addObject:DDMakeColor(232, 154, 194)]; - [m_colors addObject:DDMakeColor(232, 153, 234)]; - [m_colors addObject:DDMakeColor(232, 153, 255)]; - - [m_colors addObject:DDMakeColor(230, 190, 30)]; - [m_colors addObject:DDMakeColor(229, 189, 110)]; - [m_colors addObject:DDMakeColor(228, 189, 150)]; - [m_colors addObject:DDMakeColor(227, 189, 190)]; - [m_colors addObject:DDMakeColor(227, 189, 229)]; - [m_colors addObject:DDMakeColor(226, 188, 255)]; - - [m_colors addObject:DDMakeColor(224, 224, 35)]; - [m_colors addObject:DDMakeColor(223, 224, 105)]; - [m_colors addObject:DDMakeColor(222, 224, 144)]; - [m_colors addObject:DDMakeColor(222, 223, 184)]; - [m_colors addObject:DDMakeColor(222, 223, 224)]; - [m_colors addObject:DDMakeColor(220, 223, 253)]; - - [m_colors addObject:DDMakeColor(217, 253, 28)]; - [m_colors addObject:DDMakeColor(217, 253, 99)]; - [m_colors addObject:DDMakeColor(216, 252, 139)]; - [m_colors addObject:DDMakeColor(216, 252, 179)]; - [m_colors addObject:DDMakeColor(215, 252, 218)]; - [m_colors addObject:DDMakeColor(215, 251, 250)]; - - [m_colors addObject:DDMakeColor(255, 61, 30)]; - [m_colors addObject:DDMakeColor(255, 60, 118)]; - [m_colors addObject:DDMakeColor(255, 58, 159)]; - [m_colors addObject:DDMakeColor(255, 56, 199)]; - [m_colors addObject:DDMakeColor(255, 55, 238)]; - [m_colors addObject:DDMakeColor(255, 59, 255)]; - - [m_colors addObject:DDMakeColor(255, 117, 29)]; - [m_colors addObject:DDMakeColor(255, 117, 115)]; - [m_colors addObject:DDMakeColor(255, 117, 155)]; - [m_colors addObject:DDMakeColor(255, 117, 195)]; - [m_colors addObject:DDMakeColor(255, 116, 235)]; - [m_colors addObject:DDMakeColor(254, 116, 255)]; - - [m_colors addObject:DDMakeColor(255, 152, 27)]; - [m_colors addObject:DDMakeColor(255, 152, 111)]; - [m_colors addObject:DDMakeColor(254, 152, 152)]; - [m_colors addObject:DDMakeColor(255, 152, 192)]; - [m_colors addObject:DDMakeColor(254, 151, 231)]; - [m_colors addObject:DDMakeColor(253, 151, 253)]; - - [m_colors addObject:DDMakeColor(255, 187, 33)]; - [m_colors addObject:DDMakeColor(253, 187, 107)]; - [m_colors addObject:DDMakeColor(252, 187, 148)]; - [m_colors addObject:DDMakeColor(253, 187, 187)]; - [m_colors addObject:DDMakeColor(254, 187, 227)]; - [m_colors addObject:DDMakeColor(252, 186, 252)]; - - [m_colors addObject:DDMakeColor(252, 222, 34)]; - [m_colors addObject:DDMakeColor(251, 222, 103)]; - [m_colors addObject:DDMakeColor(251, 222, 143)]; - [m_colors addObject:DDMakeColor(250, 222, 182)]; - [m_colors addObject:DDMakeColor(251, 221, 222)]; - [m_colors addObject:DDMakeColor(252, 221, 252)]; - - [m_colors addObject:DDMakeColor(251, 252, 15)]; - [m_colors addObject:DDMakeColor(251, 252, 97)]; - [m_colors addObject:DDMakeColor(249, 252, 137)]; - [m_colors addObject:DDMakeColor(247, 252, 177)]; - [m_colors addObject:DDMakeColor(247, 253, 217)]; - [m_colors addObject:DDMakeColor(254, 255, 255)]; - - // Grayscale - - [m_colors addObject:DDMakeColor( 52, 53, 53)]; - [m_colors addObject:DDMakeColor( 57, 58, 59)]; - [m_colors addObject:DDMakeColor( 66, 67, 67)]; - [m_colors addObject:DDMakeColor( 75, 76, 76)]; - [m_colors addObject:DDMakeColor( 83, 85, 85)]; - [m_colors addObject:DDMakeColor( 92, 93, 94)]; - - [m_colors addObject:DDMakeColor(101, 102, 102)]; - [m_colors addObject:DDMakeColor(109, 111, 111)]; - [m_colors addObject:DDMakeColor(118, 119, 119)]; - [m_colors addObject:DDMakeColor(126, 127, 128)]; - [m_colors addObject:DDMakeColor(134, 136, 136)]; - [m_colors addObject:DDMakeColor(143, 144, 145)]; - - [m_colors addObject:DDMakeColor(151, 152, 153)]; - [m_colors addObject:DDMakeColor(159, 161, 161)]; - [m_colors addObject:DDMakeColor(167, 169, 169)]; - [m_colors addObject:DDMakeColor(176, 177, 177)]; - [m_colors addObject:DDMakeColor(184, 185, 186)]; - [m_colors addObject:DDMakeColor(192, 193, 194)]; - - [m_colors addObject:DDMakeColor(200, 201, 202)]; - [m_colors addObject:DDMakeColor(208, 209, 210)]; - [m_colors addObject:DDMakeColor(216, 218, 218)]; - [m_colors addObject:DDMakeColor(224, 226, 226)]; - [m_colors addObject:DDMakeColor(232, 234, 234)]; - [m_colors addObject:DDMakeColor(240, 242, 242)]; - // Color codes int index = 16; @@ -807,7 +821,7 @@ + (instancetype)sharedInstance { NSLogInfo(@"DDTTYLogger: isaColor256TTY: %@", (isaColor256TTY ? @"YES" : @"NO")); NSLogInfo(@"DDTTYLogger: isaXcodeColorTTY: %@", (isaXcodeColorTTY ? @"YES" : @"NO")); - sharedInstance = [[[self class] alloc] init]; + sharedInstance = [[self alloc] init]; }); return sharedInstance; @@ -818,8 +832,12 @@ - (instancetype)init { return nil; } + if (@available(iOS 10.0, macOS 10.12, tvOS 10.0, watchOS 3.0, *)) { + NSLogWarn(@"CocoaLumberjack: Warning: Usage of DDTTYLogger detected when DDOSLogger is available and can be used! Please consider migrating to DDOSLogger."); + } + if ((self = [super init])) { - // Initialze 'app' variable (char *) + // Initialize 'app' variable (char *) _appName = [[NSProcessInfo processInfo] processName]; @@ -830,7 +848,7 @@ - (instancetype)init { _appLen = [_appName lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; } - _app = (char *)malloc(_appLen + 1); + _app = (char *)calloc(_appLen + 1, sizeof(char)); if (_app == NULL) { return nil; @@ -848,7 +866,7 @@ - (instancetype)init { _processID = [NSString stringWithFormat:@"%i", (int)getpid()]; _pidLen = [_processID lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; - _pid = (char *)malloc(_pidLen + 1); + _pid = (char *)calloc(_pidLen + 1, sizeof(char)); if (_pid == NULL) { free(_app); @@ -875,6 +893,10 @@ - (instancetype)init { return self; } +- (DDLoggerName)loggerName { + return DDLoggerNameTTY; +} + - (void)loadDefaultColorProfiles { [self setForegroundColor:DDMakeColor(214, 57, 30) backgroundColor:nil forFlag:DDLogFlagError]; [self setForegroundColor:DDMakeColor(204, 121, 32) backgroundColor:nil forFlag:DDLogFlagWarning]; @@ -900,7 +922,7 @@ - (BOOL)colorsEnabled { dispatch_sync(globalLoggingQueue, ^{ dispatch_sync(self.loggerQueue, ^{ - result = _colorsEnabled; + result = self->_colorsEnabled; }); }); @@ -910,9 +932,9 @@ - (BOOL)colorsEnabled { - (void)setColorsEnabled:(BOOL)newColorsEnabled { dispatch_block_t block = ^{ @autoreleasepool { - _colorsEnabled = newColorsEnabled; + self->_colorsEnabled = newColorsEnabled; - if ([_colorProfilesArray count] == 0) { + if ([self->_colorProfilesArray count] == 0) { [self loadDefaultColorProfiles]; } } @@ -955,7 +977,7 @@ - (void)setForegroundColor:(DDColor *)txtColor backgroundColor:(DDColor *)bgColo NSUInteger i = 0; - for (DDTTYLoggerColorProfile *colorProfile in _colorProfilesArray) { + for (DDTTYLoggerColorProfile *colorProfile in self->_colorProfilesArray) { if ((colorProfile->mask == mask) && (colorProfile->context == ctxt)) { break; } @@ -963,10 +985,10 @@ - (void)setForegroundColor:(DDColor *)txtColor backgroundColor:(DDColor *)bgColo i++; } - if (i < [_colorProfilesArray count]) { - _colorProfilesArray[i] = newColorProfile; + if (i < [self->_colorProfilesArray count]) { + self->_colorProfilesArray[i] = newColorProfile; } else { - [_colorProfilesArray addObject:newColorProfile]; + [self->_colorProfilesArray addObject:newColorProfile]; } } }; @@ -999,7 +1021,7 @@ - (void)setForegroundColor:(DDColor *)txtColor backgroundColor:(DDColor *)bgColo NSLogInfo(@"DDTTYLogger: newColorProfile: %@", newColorProfile); - _colorProfilesDict[tag] = newColorProfile; + self->_colorProfilesDict[tag] = newColorProfile; } }; @@ -1027,7 +1049,7 @@ - (void)clearColorsForFlag:(DDLogFlag)mask context:(NSInteger)context { @autoreleasepool { NSUInteger i = 0; - for (DDTTYLoggerColorProfile *colorProfile in _colorProfilesArray) { + for (DDTTYLoggerColorProfile *colorProfile in self->_colorProfilesArray) { if ((colorProfile->mask == mask) && (colorProfile->context == context)) { break; } @@ -1035,8 +1057,8 @@ - (void)clearColorsForFlag:(DDLogFlag)mask context:(NSInteger)context { i++; } - if (i < [_colorProfilesArray count]) { - [_colorProfilesArray removeObjectAtIndex:i]; + if (i < [self->_colorProfilesArray count]) { + [self->_colorProfilesArray removeObjectAtIndex:i]; } } }; @@ -1061,7 +1083,7 @@ - (void)clearColorsForTag:(id )tag { dispatch_block_t block = ^{ @autoreleasepool { - [_colorProfilesDict removeObjectForKey:tag]; + [self->_colorProfilesDict removeObjectForKey:tag]; } }; @@ -1083,7 +1105,7 @@ - (void)clearColorsForTag:(id )tag { - (void)clearColorsForAllFlags { dispatch_block_t block = ^{ @autoreleasepool { - [_colorProfilesArray removeAllObjects]; + [self->_colorProfilesArray removeAllObjects]; } }; @@ -1105,7 +1127,7 @@ - (void)clearColorsForAllFlags { - (void)clearColorsForAllTags { dispatch_block_t block = ^{ @autoreleasepool { - [_colorProfilesDict removeAllObjects]; + [self->_colorProfilesDict removeAllObjects]; } }; @@ -1127,8 +1149,8 @@ - (void)clearColorsForAllTags { - (void)clearAllColors { dispatch_block_t block = ^{ @autoreleasepool { - [_colorProfilesArray removeAllObjects]; - [_colorProfilesDict removeAllObjects]; + [self->_colorProfilesArray removeAllObjects]; + [self->_colorProfilesDict removeAllObjects]; } }; @@ -1197,7 +1219,7 @@ - (void)logMessage:(DDLogMessage *)logMessage { const BOOL useStack = msgLen < (1024 * 4); char msgStack[useStack ? (msgLen + 1) : 1]; // Analyzer doesn't like zero-size array, hence the 1 - char *msg = useStack ? msgStack : (char *)malloc(msgLen + 1); + char *msg = useStack ? msgStack : (char *)calloc(msgLen + 1, sizeof(char)); if (msg == NULL) { return; @@ -1352,10 +1374,6 @@ - (void)logMessage:(DDLogMessage *)logMessage { } } -- (NSString *)loggerName { - return @"cocoa.lumberjack.ttyLogger"; -} - @end //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDContextFilterLogFormatter.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Extensions/DDContextFilterLogFormatter.m old mode 100644 new mode 100755 similarity index 75% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDContextFilterLogFormatter.m rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Extensions/DDContextFilterLogFormatter.m index 83461005a..2be8a114a --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDContextFilterLogFormatter.m +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Extensions/DDContextFilterLogFormatter.m @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -13,8 +13,8 @@ // to endorse or promote products derived from this software without specific // prior written permission of Deusty, LLC. -#import "DDContextFilterLogFormatter.h" -#import +#import +#import #if !__has_feature(objc_arc) #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). @@ -22,12 +22,12 @@ @interface DDLoggingContextSet : NSObject -- (void)addToSet:(NSUInteger)loggingContext; -- (void)removeFromSet:(NSUInteger)loggingContext; +@property (readonly, copy, nonnull) NSArray *currentSet; -@property (readonly, copy) NSArray *currentSet; +- (void)addToSet:(NSInteger)loggingContext; +- (void)removeFromSet:(NSInteger)loggingContext; -- (BOOL)isInSet:(NSUInteger)loggingContext; +- (BOOL)isInSet:(NSInteger)loggingContext; @end @@ -52,11 +52,11 @@ - (instancetype)init { return self; } -- (void)addToWhitelist:(NSUInteger)loggingContext { +- (void)addToWhitelist:(NSInteger)loggingContext { [_contextSet addToSet:loggingContext]; } -- (void)removeFromWhitelist:(NSUInteger)loggingContext { +- (void)removeFromWhitelist:(NSInteger)loggingContext { [_contextSet removeFromSet:loggingContext]; } @@ -64,7 +64,7 @@ - (NSArray *)whitelist { return [_contextSet currentSet]; } -- (BOOL)isOnWhitelist:(NSUInteger)loggingContext { +- (BOOL)isOnWhitelist:(NSInteger)loggingContext { return [_contextSet isInSet:loggingContext]; } @@ -99,11 +99,11 @@ - (instancetype)init { return self; } -- (void)addToBlacklist:(NSUInteger)loggingContext { +- (void)addToBlacklist:(NSInteger)loggingContext { [_contextSet addToSet:loggingContext]; } -- (void)removeFromBlacklist:(NSUInteger)loggingContext { +- (void)removeFromBlacklist:(NSInteger)loggingContext { [_contextSet removeFromSet:loggingContext]; } @@ -111,7 +111,7 @@ - (NSArray *)blacklist { return [_contextSet currentSet]; } -- (BOOL)isOnBlacklist:(NSUInteger)loggingContext { +- (BOOL)isOnBlacklist:(NSInteger)loggingContext { return [_contextSet isInSet:loggingContext]; } @@ -131,7 +131,7 @@ - (NSString *)formatLogMessage:(DDLogMessage *)logMessage { @interface DDLoggingContextSet () { - OSSpinLock _lock; + pthread_mutex_t _mutex; NSMutableSet *_set; } @@ -143,48 +143,52 @@ @implementation DDLoggingContextSet - (instancetype)init { if ((self = [super init])) { _set = [[NSMutableSet alloc] init]; - _lock = OS_SPINLOCK_INIT; + pthread_mutex_init(&_mutex, NULL); } return self; } -- (void)addToSet:(NSUInteger)loggingContext { - OSSpinLockLock(&_lock); +- (void)dealloc { + pthread_mutex_destroy(&_mutex); +} + +- (void)addToSet:(NSInteger)loggingContext { + pthread_mutex_lock(&_mutex); { [_set addObject:@(loggingContext)]; } - OSSpinLockUnlock(&_lock); + pthread_mutex_unlock(&_mutex); } -- (void)removeFromSet:(NSUInteger)loggingContext { - OSSpinLockLock(&_lock); +- (void)removeFromSet:(NSInteger)loggingContext { + pthread_mutex_lock(&_mutex); { [_set removeObject:@(loggingContext)]; } - OSSpinLockUnlock(&_lock); + pthread_mutex_unlock(&_mutex); } - (NSArray *)currentSet { NSArray *result = nil; - OSSpinLockLock(&_lock); + pthread_mutex_lock(&_mutex); { result = [_set allObjects]; } - OSSpinLockUnlock(&_lock); + pthread_mutex_unlock(&_mutex); return result; } -- (BOOL)isInSet:(NSUInteger)loggingContext { +- (BOOL)isInSet:(NSInteger)loggingContext { BOOL result = NO; - OSSpinLockLock(&_lock); + pthread_mutex_lock(&_mutex); { result = [_set containsObject:@(loggingContext)]; } - OSSpinLockUnlock(&_lock); + pthread_mutex_unlock(&_mutex); return result; } diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDDispatchQueueLogFormatter.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Extensions/DDDispatchQueueLogFormatter.m old mode 100644 new mode 100755 similarity index 66% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDDispatchQueueLogFormatter.m rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Extensions/DDDispatchQueueLogFormatter.m index a1f2d513f..e849db7c3 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDDispatchQueueLogFormatter.m +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Extensions/DDDispatchQueueLogFormatter.m @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -13,24 +13,40 @@ // to endorse or promote products derived from this software without specific // prior written permission of Deusty, LLC. -#import "DDDispatchQueueLogFormatter.h" -#import -#import - +#import +#import +#import +#import #if !__has_feature(objc_arc) #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). #endif +DDQualityOfServiceName const DDQualityOfServiceUserInteractive = @"UI"; +DDQualityOfServiceName const DDQualityOfServiceUserInitiated = @"IN"; +DDQualityOfServiceName const DDQualityOfServiceDefault = @"DF"; +DDQualityOfServiceName const DDQualityOfServiceUtility = @"UT"; +DDQualityOfServiceName const DDQualityOfServiceBackground = @"BG"; +DDQualityOfServiceName const DDQualityOfServiceUnspecified = @"UN"; + +static DDQualityOfServiceName _qos_name(NSUInteger qos) { + switch ((qos_class_t) qos) { + case QOS_CLASS_USER_INTERACTIVE: return DDQualityOfServiceUserInteractive; + case QOS_CLASS_USER_INITIATED: return DDQualityOfServiceUserInitiated; + case QOS_CLASS_DEFAULT: return DDQualityOfServiceDefault; + case QOS_CLASS_UTILITY: return DDQualityOfServiceUtility; + case QOS_CLASS_BACKGROUND: return DDQualityOfServiceBackground; + default: return DDQualityOfServiceUnspecified; + } +} + +#pragma mark - DDDispatchQueueLogFormatter + @interface DDDispatchQueueLogFormatter () { - DDDispatchQueueLogFormatterMode _mode; - NSString *_dateFormatterKey; - - int32_t _atomicLoggerCount; - NSDateFormatter *_threadUnsafeDateFormatter; // Use [self stringFromDate] - - OSSpinLock _lock; - + NSDateFormatter *_dateFormatter; // Use [self stringFromDate] + + pthread_mutex_t _mutex; + NSUInteger _minQueueLength; // _prefix == Only access via atomic property NSUInteger _maxQueueLength; // _prefix == Only access via atomic property NSMutableDictionary *_replacements; // _prefix == Only access from within spinlock @@ -43,31 +59,12 @@ @implementation DDDispatchQueueLogFormatter - (instancetype)init { if ((self = [super init])) { - _mode = DDDispatchQueueLogFormatterModeShareble; - - // We need to carefully pick the name for storing in thread dictionary to not - // use a formatter configured by subclass and avoid surprises. - Class cls = [self class]; - Class superClass = class_getSuperclass(cls); - SEL configMethodName = @selector(configureDateFormatter:); - Method configMethod = class_getInstanceMethod(cls, configMethodName); - while (class_getInstanceMethod(superClass, configMethodName) == configMethod) { - cls = superClass; - superClass = class_getSuperclass(cls); - } - // now `cls` is the class that provides implementation for `configureDateFormatter:` - _dateFormatterKey = [NSString stringWithFormat:@"%s_NSDateFormatter", class_getName(cls)]; - - _atomicLoggerCount = 0; - _threadUnsafeDateFormatter = nil; + _dateFormatter = [self createDateFormatter]; - _minQueueLength = 0; - _maxQueueLength = 0; - _lock = OS_SPINLOCK_INIT; + pthread_mutex_init(&_mutex, NULL); _replacements = [[NSMutableDictionary alloc] init]; // Set default replacements: - _replacements[@"com.apple.main-thread"] = @"main"; } @@ -75,10 +72,11 @@ - (instancetype)init { } - (instancetype)initWithMode:(DDDispatchQueueLogFormatterMode)mode { - if ((self = [self init])) { - _mode = mode; - } - return self; + return [self init]; +} + +- (void)dealloc { + pthread_mutex_destroy(&_mutex); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -91,17 +89,17 @@ - (instancetype)initWithMode:(DDDispatchQueueLogFormatterMode)mode { - (NSString *)replacementStringForQueueLabel:(NSString *)longLabel { NSString *result = nil; - OSSpinLockLock(&_lock); + pthread_mutex_lock(&_mutex); { result = _replacements[longLabel]; } - OSSpinLockUnlock(&_lock); + pthread_mutex_unlock(&_mutex); return result; } - (void)setReplacementString:(NSString *)shortLabel forQueueLabel:(NSString *)longLabel { - OSSpinLockLock(&_lock); + pthread_mutex_lock(&_mutex); { if (shortLabel) { _replacements[longLabel] = shortLabel; @@ -109,7 +107,7 @@ - (void)setReplacementString:(NSString *)shortLabel forQueueLabel:(NSString *)lo [_replacements removeObjectForKey:longLabel]; } } - OSSpinLockUnlock(&_lock); + pthread_mutex_unlock(&_mutex); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -126,44 +124,11 @@ - (void)configureDateFormatter:(NSDateFormatter *)dateFormatter { [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss:SSS"]; [dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; - - NSString *calendarIdentifier = nil; -#if defined(__IPHONE_8_0) || defined(__MAC_10_10) - calendarIdentifier = NSCalendarIdentifierGregorian; -#else - calendarIdentifier = NSGregorianCalendar; -#endif - - [dateFormatter setCalendar:[[NSCalendar alloc] initWithCalendarIdentifier:calendarIdentifier]]; + [dateFormatter setCalendar:[[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]]; } - (NSString *)stringFromDate:(NSDate *)date { - - NSDateFormatter *dateFormatter = nil; - if (_mode == DDDispatchQueueLogFormatterModeNonShareble) { - // Single-threaded mode. - - dateFormatter = _threadUnsafeDateFormatter; - if (dateFormatter == nil) { - dateFormatter = [self createDateFormatter]; - _threadUnsafeDateFormatter = dateFormatter; - } - } else { - // Multi-threaded mode. - // NSDateFormatter is NOT thread-safe. - - NSString *key = _dateFormatterKey; - - NSMutableDictionary *threadDictionary = [[NSThread currentThread] threadDictionary]; - dateFormatter = threadDictionary[key]; - - if (dateFormatter == nil) { - dateFormatter = [self createDateFormatter]; - threadDictionary[key] = dateFormatter; - } - } - - return [dateFormatter stringFromDate:date]; + return [_dateFormatter stringFromDate:date]; } - (NSString *)queueThreadLabelForLogMessage:(DDLogMessage *)logMessage { @@ -189,7 +154,8 @@ - (NSString *)queueThreadLabelForLogMessage:(DDLogMessage *)logMessage { @"com.apple.root.high-priority", @"com.apple.root.low-overcommit-priority", @"com.apple.root.default-overcommit-priority", - @"com.apple.root.high-overcommit-priority" + @"com.apple.root.high-overcommit-priority", + @"com.apple.root.default-qos.overcommit" ]; for (NSString * name in names) { @@ -214,11 +180,11 @@ - (NSString *)queueThreadLabelForLogMessage:(DDLogMessage *)logMessage { fullLabel = logMessage->_threadName; } - OSSpinLockLock(&_lock); + pthread_mutex_lock(&_mutex); { abrvLabel = _replacements[fullLabel]; } - OSSpinLockUnlock(&_lock); + pthread_mutex_unlock(&_mutex); if (abrvLabel) { queueThreadLabel = abrvLabel; @@ -262,17 +228,44 @@ - (NSString *)formatLogMessage:(DDLogMessage *)logMessage { NSString *timestamp = [self stringFromDate:(logMessage->_timestamp)]; NSString *queueThreadLabel = [self queueThreadLabelForLogMessage:logMessage]; + if (@available(macOS 10.10, iOS 8.0, *)) + return [NSString stringWithFormat:@"%@ [%@ (QOS:%@)] %@", timestamp, queueThreadLabel, _qos_name(logMessage->_qos), logMessage->_message]; return [NSString stringWithFormat:@"%@ [%@] %@", timestamp, queueThreadLabel, logMessage->_message]; } -- (void)didAddToLogger:(id __attribute__((unused)))logger { - int32_t count = 0; - count = OSAtomicIncrement32(&_atomicLoggerCount); - NSAssert(count <= 1 || _mode == DDDispatchQueueLogFormatterModeShareble, @"Can't reuse formatter with multiple loggers in non-shareable mode."); +@end + +#pragma mark - DDAtomicCounter + +@interface DDAtomicCounter() { + atomic_int_fast32_t _value; +} +@end + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" +@implementation DDAtomicCounter +#pragma clang diagnostic pop + +- (instancetype)initWithDefaultValue:(int32_t)defaultValue { + if ((self = [super init])) { + atomic_init(&_value, defaultValue); + } + return self; +} + +- (int32_t)value { + return atomic_load_explicit(&_value, memory_order_relaxed); +} + +- (int32_t)increment { + int32_t old = atomic_fetch_add_explicit(&_value, 1, memory_order_relaxed); + return (old + 1); } -- (void)willRemoveFromLogger:(id __attribute__((unused)))logger { - OSAtomicDecrement32(&_atomicLoggerCount); +- (int32_t)decrement { + int32_t old = atomic_fetch_sub_explicit(&_value, 1, memory_order_relaxed); + return (old - 1); } @end diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Extensions/DDFileLogger+Buffering.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Extensions/DDFileLogger+Buffering.m new file mode 100644 index 000000000..4e881256d --- /dev/null +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Extensions/DDFileLogger+Buffering.m @@ -0,0 +1,204 @@ +// Software License Agreement (BSD License) +// +// Copyright (c) 2010-2020, Deusty, LLC +// All rights reserved. +// +// Redistribution and use of this software in source and binary forms, +// with or without modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Neither the name of Deusty nor the names of its contributors may be used +// to endorse or promote products derived from this software without specific +// prior written permission of Deusty, LLC. + +#import "../DDFileLogger+Internal.h" +#import + +#import + +static const NSUInteger kDDDefaultBufferSize = 4096; // 4 kB, block f_bsize on iphone7 +static const NSUInteger kDDMaxBufferSize = 1048576; // ~1 mB, f_iosize on iphone7 + +// Reads attributes from base file system to determine buffer size. +// see statfs in sys/mount.h for descriptions of f_iosize and f_bsize. +// f_bsize == "default", and f_iosize == "max" +static inline NSUInteger p_DDGetDefaultBufferSizeBytesMax(const BOOL max) { + struct statfs *mountedFileSystems = NULL; + int count = getmntinfo(&mountedFileSystems, 0); + + for (int i = 0; i < count; i++) { + struct statfs mounted = mountedFileSystems[i]; + const char *name = mounted.f_mntonname; + + // We can use 2 as max here, since any length > 1 will fail the if-statement. + if (strnlen(name, 2) == 1 && *name == '/') { + return max ? (NSUInteger)mounted.f_iosize : (NSUInteger)mounted.f_bsize; + } + } + + return max ? kDDMaxBufferSize : kDDDefaultBufferSize; +} + +static NSUInteger DDGetMaxBufferSizeBytes() { + static NSUInteger maxBufferSize = 0; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + maxBufferSize = p_DDGetDefaultBufferSizeBytesMax(YES); + }); + return maxBufferSize; +} + +static NSUInteger DDGetDefaultBufferSizeBytes() { + static NSUInteger defaultBufferSize = 0; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + defaultBufferSize = p_DDGetDefaultBufferSizeBytesMax(NO); + }); + return defaultBufferSize; +} + +@interface DDBufferedProxy : NSProxy + +@property (nonatomic) DDFileLogger *fileLogger; +@property (nonatomic) NSOutputStream *buffer; + +@property (nonatomic) NSUInteger maxBufferSizeBytes; +@property (nonatomic) NSUInteger currentBufferSizeBytes; + +@end + +@implementation DDBufferedProxy + +- (instancetype)initWithFileLogger:(DDFileLogger *)fileLogger { + _fileLogger = fileLogger; + _maxBufferSizeBytes = DDGetDefaultBufferSizeBytes(); + [self flushBuffer]; + + return self; +} + +- (void)dealloc { + dispatch_block_t block = ^{ + [self lt_sendBufferedDataToFileLogger]; + self.fileLogger = nil; + }; + + if ([self->_fileLogger isOnInternalLoggerQueue]) { + block(); + } else { + dispatch_sync(self->_fileLogger.loggerQueue, block); + } +} + +#pragma mark - Buffering + +- (void)flushBuffer { + [_buffer close]; + _buffer = [NSOutputStream outputStreamToMemory]; + [_buffer open]; + _currentBufferSizeBytes = 0; +} + +- (void)lt_sendBufferedDataToFileLogger { + NSData *data = [_buffer propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; + [_fileLogger lt_logData:data]; + [self flushBuffer]; +} + +#pragma mark - Logging + +- (void)logMessage:(DDLogMessage *)logMessage { + // Don't need to check for isOnInternalLoggerQueue, -lt_dataForMessage: will do it for us. + NSData *data = [_fileLogger lt_dataForMessage:logMessage]; + + if (data.length == 0) { + return; + } + + [data enumerateByteRangesUsingBlock:^(const void * __nonnull bytes, NSRange byteRange, BOOL * __nonnull __unused stop) { + NSUInteger bytesLength = byteRange.length; +#ifdef NS_BLOCK_ASSERTIONS + __unused +#endif + NSInteger written = [_buffer write:bytes maxLength:bytesLength]; + NSAssert(written > 0 && (NSUInteger)written == bytesLength, @"Failed to write to memory buffer."); + + _currentBufferSizeBytes += bytesLength; + + if (_currentBufferSizeBytes >= _maxBufferSizeBytes) { + [self lt_sendBufferedDataToFileLogger]; + } + }]; +} + +- (void)flush { + // This method is public. + // We need to execute the rolling on our logging thread/queue. + + dispatch_block_t block = ^{ + @autoreleasepool { + [self lt_sendBufferedDataToFileLogger]; + [self.fileLogger flush]; + } + }; + + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + if ([self.fileLogger isOnInternalLoggerQueue]) { + block(); + } else { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self.fileLogger isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_sync(globalLoggingQueue, ^{ + dispatch_sync(self.fileLogger.loggerQueue, block); + }); + } +} + +#pragma mark - Properties + +- (void)setMaxBufferSizeBytes:(NSUInteger)newBufferSizeBytes { + _maxBufferSizeBytes = MIN(newBufferSizeBytes, DDGetMaxBufferSizeBytes()); +} + +#pragma mark - Wrapping + +- (DDFileLogger *)wrapWithBuffer { + return (DDFileLogger *)self; +} + +- (DDFileLogger *)unwrapFromBuffer { + return (DDFileLogger *)self.fileLogger; +} + +#pragma mark - NSProxy + +- (NSMethodSignature *)methodSignatureForSelector:(SEL)sel { + return [self.fileLogger methodSignatureForSelector:sel]; +} + +- (BOOL)respondsToSelector:(SEL)aSelector { + return [self.fileLogger respondsToSelector:aSelector]; +} + +- (void)forwardInvocation:(NSInvocation *)invocation { + [invocation invokeWithTarget:self.fileLogger]; +} + +@end + +@implementation DDFileLogger (Buffering) + +- (instancetype)wrapWithBuffer { + return (DDFileLogger *)[[DDBufferedProxy alloc] initWithFileLogger:self]; +} + +- (instancetype)unwrapFromBuffer { + return self; +} + +@end diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDMultiFormatter.m b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Extensions/DDMultiFormatter.m similarity index 66% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDMultiFormatter.m rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Extensions/DDMultiFormatter.m index 2533b3290..b451819eb 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDMultiFormatter.m +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Extensions/DDMultiFormatter.m @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -13,28 +13,7 @@ // to endorse or promote products derived from this software without specific // prior written permission of Deusty, LLC. -#import "DDMultiFormatter.h" - - -#if TARGET_OS_IOS -// Compiling for iOS -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 60000 // iOS 6.0 or later -#define NEEDS_DISPATCH_RETAIN_RELEASE 0 -#else // iOS 5.X or earlier -#define NEEDS_DISPATCH_RETAIN_RELEASE 1 -#endif -#elif TARGET_OS_WATCH || TARGET_OS_TV -// Compiling for watchOS, tvOS -#define NEEDS_DISPATCH_RETAIN_RELEASE 0 -#else -// Compiling for Mac OS X -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 // Mac OS X 10.8 or later -#define NEEDS_DISPATCH_RETAIN_RELEASE 0 -#else // Mac OS X 10.7 or earlier -#define NEEDS_DISPATCH_RETAIN_RELEASE 1 -#endif -#endif - +#import #if !__has_feature(objc_arc) #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). @@ -57,31 +36,20 @@ - (instancetype)init { self = [super init]; if (self) { -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1070 _queue = dispatch_queue_create("cocoa.lumberjack.multiformatter", DISPATCH_QUEUE_CONCURRENT); -#else - _queue = dispatch_queue_create("cocoa.lumberjack.multiformatter", NULL); -#endif _formatters = [NSMutableArray new]; } return self; } -#if NEEDS_DISPATCH_RETAIN_RELEASE -- (void)dealloc { - dispatch_release(_queue); -} - -#endif - #pragma mark Processing - (NSString *)formatLogMessage:(DDLogMessage *)logMessage { __block NSString *line = logMessage->_message; dispatch_sync(_queue, ^{ - for (id formatter in _formatters) { + for (id formatter in self->_formatters) { DDLogMessage *message = [self logMessageForLine:line originalMessage:logMessage]; line = [formatter formatLogMessage:message]; @@ -107,7 +75,7 @@ - (NSArray *)formatters { __block NSArray *formatters; dispatch_sync(_queue, ^{ - formatters = [_formatters copy]; + formatters = [self->_formatters copy]; }); return formatters; @@ -115,19 +83,19 @@ - (NSArray *)formatters { - (void)addFormatter:(id)formatter { dispatch_barrier_async(_queue, ^{ - [_formatters addObject:formatter]; + [self->_formatters addObject:formatter]; }); } - (void)removeFormatter:(id)formatter { dispatch_barrier_async(_queue, ^{ - [_formatters removeObject:formatter]; + [self->_formatters removeObject:formatter]; }); } - (void)removeAllFormatters { dispatch_barrier_async(_queue, ^{ - [_formatters removeAllObjects]; + [self->_formatters removeAllObjects]; }); } @@ -135,7 +103,7 @@ - (BOOL)isFormattingWithFormatter:(id)formatter { __block BOOL hasFormatter; dispatch_sync(_queue, ^{ - hasFormatter = [_formatters containsObject:formatter]; + hasFormatter = [self->_formatters containsObject:formatter]; }); return hasFormatter; diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/CocoaLumberjack.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Supporting Files/CocoaLumberjack.h similarity index 67% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/CocoaLumberjack.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Supporting Files/CocoaLumberjack.h index 22731219b..734d6f702 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/CocoaLumberjack.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Supporting Files/CocoaLumberjack.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -59,28 +59,45 @@ #import +//! Project version number for CocoaLumberjack. +FOUNDATION_EXPORT double CocoaLumberjackVersionNumber; + +//! Project version string for CocoaLumberjack. +FOUNDATION_EXPORT const unsigned char CocoaLumberjackVersionString[]; + // Disable legacy macros #ifndef DD_LEGACY_MACROS #define DD_LEGACY_MACROS 0 #endif // Core -#import "DDLog.h" +#import // Main macros -#import "DDLogMacros.h" -#import "DDAssertMacros.h" +#import +#import // Capture ASL -#import "DDASLLogCapture.h" +#import // Loggers -#import "DDTTYLogger.h" -#import "DDASLLogger.h" -#import "DDFileLogger.h" -#import "DDOSLogger.h" +#import + +#import +#import +#import +#import + +// Extensions +#import +#import +#import +#import // CLI -#if __has_include("CLIColor.h") && TARGET_OS_OSX -#import "CLIColor.h" -#endif +#import + +// etc +#import +#import +#import diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLegacyMacros.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Supporting Files/DDLegacyMacros.h similarity index 98% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLegacyMacros.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Supporting Files/DDLegacyMacros.h index 46100c135..0e28333aa 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLegacyMacros.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/Supporting Files/DDLegacyMacros.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/CLIColor.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/CLIColor.h new file mode 100644 index 000000000..85e59919d --- /dev/null +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/CLIColor.h @@ -0,0 +1,52 @@ +// Software License Agreement (BSD License) +// +// Copyright (c) 2010-2020, Deusty, LLC +// All rights reserved. +// +// Redistribution and use of this software in source and binary forms, +// with or without modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Neither the name of Deusty nor the names of its contributors may be used +// to endorse or promote products derived from this software without specific +// prior written permission of Deusty, LLC. + +#if TARGET_OS_OSX + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * This class represents an NSColor replacement for CLI projects that don't link with AppKit + **/ +@interface CLIColor : NSObject + +/** + * Convenience method for creating a `CLIColor` instance from RGBA params + * + * @param red red channel, between 0 and 1 + * @param green green channel, between 0 and 1 + * @param blue blue channel, between 0 and 1 + * @param alpha alpha channel, between 0 and 1 + */ ++ (instancetype)colorWithCalibratedRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; + +/** + * Get the RGBA components from a `CLIColor` + * + * @param red red channel, between 0 and 1 + * @param green green channel, between 0 and 1 + * @param blue blue channel, between 0 and 1 + * @param alpha alpha channel, between 0 and 1 + */ +- (void)getRed:(nullable CGFloat *)red green:(nullable CGFloat *)green blue:(nullable CGFloat *)blue alpha:(nullable CGFloat *)alpha NS_SWIFT_NAME(get(red:green:blue:alpha:)); + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDASLLogCapture.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDASLLogCapture.h similarity index 80% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDASLLogCapture.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDASLLogCapture.h index 64d837039..fa67bc444 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDASLLogCapture.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDASLLogCapture.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -13,13 +13,16 @@ // to endorse or promote products derived from this software without specific // prior written permission of Deusty, LLC. -#import "DDASLLogger.h" +#import @protocol DDLogger; +NS_ASSUME_NONNULL_BEGIN + /** * This class provides the ability to capture the ASL (Apple System Logs) */ +API_DEPRECATED("Use DDOSLogger instead", macosx(10.4,10.12), ios(2.0,10.0), watchos(2.0,3.0), tvos(9.0,10.0)) @interface DDASLLogCapture : NSObject /** @@ -39,3 +42,5 @@ @property (class) DDLogLevel captureLevel; @end + +NS_ASSUME_NONNULL_END diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDASLLogger.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDASLLogger.h similarity index 84% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDASLLogger.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDASLLogger.h index 046636df0..c1ab1bed7 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDASLLogger.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDASLLogger.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -20,7 +20,9 @@ #define DD_LEGACY_MACROS 0 #endif -#import "DDLog.h" +#import + +NS_ASSUME_NONNULL_BEGIN // Custom key set on messages sent to ASL extern const char* const kDDASLKeyDDLog; @@ -41,6 +43,7 @@ extern const char* const kDDASLDDLogValue; * However, if you instead choose to use file logging (for faster performance), * you may choose to use a file logger and a tty logger. **/ +API_DEPRECATED("Use DDOSLogger instead", macosx(10.4,10.12), ios(2.0,10.0), watchos(2.0,3.0), tvos(9.0,10.0)) @interface DDASLLogger : DDAbstractLogger /** @@ -48,7 +51,7 @@ extern const char* const kDDASLDDLogValue; * * @return the shared instance */ -@property (class, readonly, strong) DDASLLogger *sharedInstance; +@property (nonatomic, class, readonly, strong) DDASLLogger *sharedInstance; // Inherited from DDAbstractLogger @@ -56,3 +59,5 @@ extern const char* const kDDASLDDLogValue; // - (void)setLogFormatter:(id )formatter; @end + +NS_ASSUME_NONNULL_END diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDAbstractDatabaseLogger.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDAbstractDatabaseLogger.h similarity index 97% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDAbstractDatabaseLogger.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDAbstractDatabaseLogger.h index 208bb223a..5915bd30f 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDAbstractDatabaseLogger.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDAbstractDatabaseLogger.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -18,7 +18,9 @@ #define DD_LEGACY_MACROS 0 #endif -#import "DDLog.h" +#import + +NS_ASSUME_NONNULL_BEGIN /** * This class provides an abstract implementation of a database logger. @@ -121,3 +123,5 @@ - (void)deleteOldLogEntries; @end + +NS_ASSUME_NONNULL_END diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDAssertMacros.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDAssertMacros.h similarity index 84% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDAssertMacros.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDAssertMacros.h index 7678a9c14..4c5463368 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDAssertMacros.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDAssertMacros.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -14,13 +14,12 @@ // prior written permission of Deusty, LLC. /** - * NSAsset replacement that will output a log message even when assertions are disabled. + * NSAssert replacement that will output a log message even when assertions are disabled. **/ #define DDAssert(condition, frmt, ...) \ if (!(condition)) { \ NSString *description = [NSString stringWithFormat:frmt, ## __VA_ARGS__]; \ DDLogError(@"%@", description); \ - NSAssert(NO, description); \ + NSAssert(NO, @"%@", description); \ } #define DDAssertCondition(condition) DDAssert(condition, @"Condition not satisfied: %s", #condition) - diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDContextFilterLogFormatter.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDContextFilterLogFormatter.h similarity index 85% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDContextFilterLogFormatter.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDContextFilterLogFormatter.h index 52e9cb420..e12444859 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDContextFilterLogFormatter.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDContextFilterLogFormatter.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -20,7 +20,9 @@ #define DD_LEGACY_MACROS 0 #endif -#import "DDLog.h" +#import + +NS_ASSUME_NONNULL_BEGIN /** * This class provides a log formatter that filters log statements from a logging context not on the whitelist. @@ -53,26 +55,26 @@ * * @param loggingContext the context */ -- (void)addToWhitelist:(NSUInteger)loggingContext; +- (void)addToWhitelist:(NSInteger)loggingContext; /** * Remove context from whitelist * * @param loggingContext the context */ -- (void)removeFromWhitelist:(NSUInteger)loggingContext; +- (void)removeFromWhitelist:(NSInteger)loggingContext; /** * Return the whitelist */ -@property (readonly, copy) NSArray *whitelist; +@property (nonatomic, readonly, copy) NSArray *whitelist; /** * Check if a context is on the whitelist * * @param loggingContext the context */ -- (BOOL)isOnWhitelist:(NSUInteger)loggingContext; +- (BOOL)isOnWhitelist:(NSInteger)loggingContext; @end @@ -92,14 +94,14 @@ * * @param loggingContext the context */ -- (void)addToBlacklist:(NSUInteger)loggingContext; +- (void)addToBlacklist:(NSInteger)loggingContext; /** * Remove context from blacklist * * @param loggingContext the context */ -- (void)removeFromBlacklist:(NSUInteger)loggingContext; +- (void)removeFromBlacklist:(NSInteger)loggingContext; /** * Return the blacklist @@ -112,6 +114,8 @@ * * @param loggingContext the context */ -- (BOOL)isOnBlacklist:(NSUInteger)loggingContext; +- (BOOL)isOnBlacklist:(NSInteger)loggingContext; @end + +NS_ASSUME_NONNULL_END diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDDispatchQueueLogFormatter.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDDispatchQueueLogFormatter.h similarity index 72% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDDispatchQueueLogFormatter.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDDispatchQueueLogFormatter.h index 527c30fc3..323019214 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDDispatchQueueLogFormatter.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDDispatchQueueLogFormatter.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -14,18 +14,20 @@ // prior written permission of Deusty, LLC. #import -#import // Disable legacy macros #ifndef DD_LEGACY_MACROS #define DD_LEGACY_MACROS 0 #endif -#import "DDLog.h" +#import + +NS_ASSUME_NONNULL_BEGIN /** * Log formatter mode */ +__attribute__((deprecated("DDDispatchQueueLogFormatter is always shareable"))) typedef NS_ENUM(NSUInteger, DDDispatchQueueLogFormatterMode){ /** * This is the default option, means the formatter can be reused between multiple loggers and therefore is thread-safe. @@ -39,6 +41,36 @@ typedef NS_ENUM(NSUInteger, DDDispatchQueueLogFormatterMode){ DDDispatchQueueLogFormatterModeNonShareble, }; +/** + * Quality of Service names. + * + * Since macOS 10.10 and iOS 8.0, pthreads, dispatch queues and NSOperations express their + * scheduling priority by using an abstract classification called Quality of Service (QOS). + * + * This formatter will add a representation of this QOS in the log message by using those + * string constants. + * For example: + * + * `2011-10-17 20:21:45.435 AppName[19928:5207 (QOS:DF)] Your log message here` + * + * Where QOS is one of: + * `- UI = User Interactive` + * `- IN = User Initiated` + * `- DF = Default` + * `- UT = Utility` + * `- BG = Background` + * `- UN = Unspecified` + * + * Note: QOS will be absent in the log messages if running on OS versions that don't support it. + **/ +typedef NSString * DDQualityOfServiceName NS_EXTENSIBLE_STRING_ENUM; + +FOUNDATION_EXPORT DDQualityOfServiceName const DDQualityOfServiceUserInteractive API_AVAILABLE(macos(10.10), ios(8.0)); +FOUNDATION_EXPORT DDQualityOfServiceName const DDQualityOfServiceUserInitiated API_AVAILABLE(macos(10.10), ios(8.0)); +FOUNDATION_EXPORT DDQualityOfServiceName const DDQualityOfServiceDefault API_AVAILABLE(macos(10.10), ios(8.0)); +FOUNDATION_EXPORT DDQualityOfServiceName const DDQualityOfServiceUtility API_AVAILABLE(macos(10.10), ios(8.0)); +FOUNDATION_EXPORT DDQualityOfServiceName const DDQualityOfServiceBackground API_AVAILABLE(macos(10.10), ios(8.0)); +FOUNDATION_EXPORT DDQualityOfServiceName const DDQualityOfServiceUnspecified API_AVAILABLE(macos(10.10), ios(8.0)); /** * This class provides a log formatter that prints the dispatch_queue label instead of the mach_thread_id. @@ -90,7 +122,7 @@ typedef NS_ENUM(NSUInteger, DDDispatchQueueLogFormatterMode){ * * @param mode choose between DDDispatchQueueLogFormatterModeShareble and DDDispatchQueueLogFormatterModeNonShareble, depending if the formatter is shared between several loggers or not */ -- (instancetype)initWithMode:(DDDispatchQueueLogFormatterMode)mode; +- (instancetype)initWithMode:(DDDispatchQueueLogFormatterMode)mode __attribute__((deprecated("DDDispatchQueueLogFormatter is always shareable"))); /** * The minQueueLength restricts the minimum size of the [detail box]. @@ -141,12 +173,12 @@ typedef NS_ENUM(NSUInteger, DDDispatchQueueLogFormatterMode){ * * To remove/undo a previous replacement, invoke this method with nil for the 'shortLabel' parameter. **/ -- (NSString *)replacementStringForQueueLabel:(NSString *)longLabel; +- (nullable NSString *)replacementStringForQueueLabel:(NSString *)longLabel; /** * See the `replacementStringForQueueLabel:` description */ -- (void)setReplacementString:(NSString *)shortLabel forQueueLabel:(NSString *)longLabel; +- (void)setReplacementString:(nullable NSString *)shortLabel forQueueLabel:(NSString *)longLabel; @end @@ -176,3 +208,21 @@ typedef NS_ENUM(NSUInteger, DDDispatchQueueLogFormatterMode){ - (NSString *)formatLogMessage:(DDLogMessage *)logMessage; @end + +#pragma mark - DDAtomicCountable + +__attribute__((deprecated("DDAtomicCountable is useless since DDDispatchQueueLogFormatter is always shareable now"))) +@protocol DDAtomicCountable + +- (instancetype)initWithDefaultValue:(int32_t)defaultValue; +- (int32_t)increment; +- (int32_t)decrement; +- (int32_t)value; + +@end + +__attribute__((deprecated("DDAtomicCountable is deprecated"))) +@interface DDAtomicCounter: NSObject +@end + +NS_ASSUME_NONNULL_END diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDFileLogger+Buffering.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDFileLogger+Buffering.h new file mode 100644 index 000000000..6dbb94b19 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDFileLogger+Buffering.h @@ -0,0 +1,27 @@ +// Software License Agreement (BSD License) +// +// Copyright (c) 2010-2020, Deusty, LLC +// All rights reserved. +// +// Redistribution and use of this software in source and binary forms, +// with or without modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Neither the name of Deusty nor the names of its contributors may be used +// to endorse or promote products derived from this software without specific +// prior written permission of Deusty, LLC. + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface DDFileLogger (Buffering) + +- (instancetype)wrapWithBuffer; +- (instancetype)unwrapFromBuffer; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDFileLogger.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDFileLogger.h similarity index 80% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDFileLogger.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDFileLogger.h index 66b27aaf1..559d7a7d6 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDFileLogger.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDFileLogger.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -18,10 +18,12 @@ #define DD_LEGACY_MACROS 0 #endif -#import "DDLog.h" +#import @class DDLogFileInfo; +NS_ASSUME_NONNULL_BEGIN + /** * This class provides a logger to write log statements to a file. **/ @@ -85,7 +87,7 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota; @property (readwrite, assign, atomic) NSUInteger maximumNumberOfLogFiles; /** - * The maximum space that logs can take. On rolling logfile all old logfiles that exceed logFilesDiskQuota will + * The maximum space that logs can take. On rolling logfile all old log files that exceed logFilesDiskQuota will * be deleted. * * You may optionally disable this option by setting it to zero. @@ -143,20 +145,30 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota; /** * Generates a new unique log file path, and creates the corresponding log file. + * This method is executed directly on the file logger's internal queue. + * The file has to exist by the time the method returns. **/ -- (NSString *)createNewLogFile; +- (nullable NSString *)createNewLogFileWithError:(NSError **)error; @optional +// Private methods (only to be used by DDFileLogger) +/** + * Creates a new log file ignoring any errors. Deprecated in favor of `-createNewLogFileWithError:`. + * Will only be called if `-createNewLogFileWithError:` is not implemented. + **/ +- (nullable NSString *)createNewLogFile __attribute__((deprecated("Use -createNewLogFileWithError:"))) NS_SWIFT_UNAVAILABLE("Use -createNewLogFileWithError:"); + // Notifications from DDFileLogger /** - * Called when a log file was archieved + * Called when a log file was archived. Executed on global queue with default priority. */ - (void)didArchiveLogFile:(NSString *)logFilePath NS_SWIFT_NAME(didArchiveLogFile(atPath:)); /** - * Called when the roll action was executed and the log was archieved + * Called when the roll action was executed and the log was archived. + * Executed on global queue with default priority. */ - (void)didRollAndArchiveLogFile:(NSString *)logFilePath NS_SWIFT_NAME(didRollAndArchiveLogFile(atPath:)); @@ -187,9 +199,10 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota; - (instancetype)init; /** - * Designated initialized, requires the logs directory + * If logDirectory is not specified, then a folder called "Logs" is created in the app's cache directory. + * While running on the simulator, the "Logs" folder is located in the library temporary directory. */ -- (instancetype)initWithLogsDirectory:(NSString *)logsDirectory NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithLogsDirectory:(nullable NSString *)logsDirectory NS_DESIGNATED_INITIALIZER; #if TARGET_OS_IPHONE /* @@ -203,7 +216,8 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota; * null * cy# **/ -- (instancetype)initWithLogsDirectory:(NSString *)logsDirectory defaultFileProtectionLevel:(NSFileProtectionType)fileProtectionLevel; +- (instancetype)initWithLogsDirectory:(nullable NSString *)logsDirectory + defaultFileProtectionLevel:(NSFileProtectionType)fileProtectionLevel; #endif /* @@ -214,7 +228,7 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota; * * If you wish to change default filename, you can override following two methods. * - `newLogFileName` method would be called on new logfile creation. - * - `isLogFile:` method would be called to filter logfiles from all other files in logsDirectory. + * - `isLogFile:` method would be called to filter log files from all other files in logsDirectory. * You have to parse given filename and return YES if it is logFile. * * **NOTE** @@ -248,6 +262,14 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota; **/ - (BOOL)isLogFile:(NSString *)fileName NS_SWIFT_NAME(isLogFile(withName:)); +/** + * New log files are created empty by default in `createNewLogFile:` method + * + * If you wish to specify a common file header to use in your log files, + * you can set the initial log file contents by overriding `logFileHeader` + **/ +@property (readonly, copy, nullable) NSString *logFileHeader; + /* Inherited from DDLogFileManager protocol: @property (readwrite, assign, atomic) NSUInteger maximumNumberOfLogFiles; @@ -291,7 +313,7 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota; /** * Designated initializer, requires a date formatter */ -- (instancetype)initWithDateFormatter:(NSDateFormatter *)dateFormatter NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithDateFormatter:(nullable NSDateFormatter *)dateFormatter NS_DESIGNATED_INITIALIZER; @end @@ -302,33 +324,58 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota; /** * The standard implementation for a file logger */ -@interface DDFileLogger : DDAbstractLogger { - DDLogFileInfo *_currentLogFileInfo; -} +@interface DDFileLogger : DDAbstractLogger /** - * Default initializer + * Default initializer. */ - (instancetype)init; /** - * Designated initializer, requires a `DDLogFileManager` instance + * Designated initializer, requires a `DDLogFileManager` instance. + * A global queue w/ default priority is used to run callbacks. + * If needed, specify queue using `initWithLogFileManager:completionQueue:`. */ -- (instancetype)initWithLogFileManager:(id )logFileManager NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithLogFileManager:(id )logFileManager; + +/** + * Designated initializer, requires a `DDLogFileManager` instance. + * The completionQueue is used to execute `didArchiveLogFile`, `didRollAndArchiveLogFile`, + * and the callback in `rollLog`. If nil, a global queue w/ default priority is used. + */ +- (instancetype)initWithLogFileManager:(id )logFileManager + completionQueue:(nullable dispatch_queue_t)dispatchQueue NS_DESIGNATED_INITIALIZER; + +/** + * Deprecated. Use `willLogMessage:` + */ +- (void)willLogMessage __attribute__((deprecated("Use -willLogMessage:"))) NS_REQUIRES_SUPER; + +/** + * Deprecated. Use `didLogMessage:` + */ +- (void)didLogMessage __attribute__((deprecated("Use -didLogMessage:"))) NS_REQUIRES_SUPER; /** * Called when the logger is about to write message. Call super before your implementation. */ -- (void)willLogMessage NS_REQUIRES_SUPER; +- (void)willLogMessage:(DDLogFileInfo *)logFileInfo NS_REQUIRES_SUPER; /** * Called when the logger wrote message. Call super after your implementation. */ -- (void)didLogMessage NS_REQUIRES_SUPER; +- (void)didLogMessage:(DDLogFileInfo *)logFileInfo NS_REQUIRES_SUPER; /** - * Called when the logger checks archive or not current log file. - * Override this method to exdend standart behavior. By default returns NO. + * Writes all in-memory log data to the permanent storage. Call super before your implementation. + * Don't call this method directly, instead use the `[DDLog flushLog]` to ensure all log messages are included in flush. + */ +- (void)flush NS_REQUIRES_SUPER; + +/** + * Called when the logger checks archive or not current log file. + * Override this method to extend standard behavior. By default returns NO. + * This is executed directly on the logger's internal queue, so keep processing light! */ - (BOOL)shouldArchiveRecentLogFileInfo:(DDLogFileInfo *)recentLogFileInfo; @@ -397,13 +444,14 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota; * You can optionally force the current log file to be rolled with this method. * CompletionBlock will be called on main queue. */ -- (void)rollLogFileWithCompletionBlock:(void (^)(void))completionBlock NS_SWIFT_NAME(rollLogFile(withCompletion:)); +- (void)rollLogFileWithCompletionBlock:(nullable void (^)(void))completionBlock + NS_SWIFT_NAME(rollLogFile(withCompletion:)); /** * Method is deprecated. * @deprecated Use `rollLogFileWithCompletionBlock:` method instead. */ -- (void)rollLogFile __attribute((deprecated)); +- (void)rollLogFile __attribute__((deprecated("Use -rollLogFileWithCompletionBlock:"))); // Inherited from DDAbstractLogger @@ -415,9 +463,9 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota; * If there is an existing log file that is suitable, * within the constraints of `maximumFileSize` and `rollingFrequency`, then it is returned. * - * Otherwise a new file is created and returned. + * Otherwise a new file is created and returned. If this failes, `NULL` is returned. **/ -@property (nonatomic, readonly, strong) DDLogFileInfo *currentLogFileInfo; +@property (nonatomic, nullable, readonly, strong) DDLogFileInfo *currentLogFileInfo; @end @@ -444,14 +492,10 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota; @property (strong, nonatomic, readonly) NSString *filePath; @property (strong, nonatomic, readonly) NSString *fileName; -#if FOUNDATION_SWIFT_SDK_EPOCH_AT_LEAST(8) @property (strong, nonatomic, readonly) NSDictionary *fileAttributes; -#else -@property (strong, nonatomic, readonly) NSDictionary *fileAttributes; -#endif -@property (strong, nonatomic, readonly) NSDate *creationDate; -@property (strong, nonatomic, readonly) NSDate *modificationDate; +@property (strong, nonatomic, nullable, readonly) NSDate *creationDate; +@property (strong, nonatomic, nullable, readonly) NSDate *modificationDate; @property (nonatomic, readonly) unsigned long long fileSize; @@ -459,7 +503,7 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota; @property (nonatomic, readwrite) BOOL isArchived; -+ (instancetype)logFileWithPath:(NSString *)filePath NS_SWIFT_UNAVAILABLE("Use init(filePath:)"); ++ (nullable instancetype)logFileWithPath:(nullable NSString *)filePath NS_SWIFT_UNAVAILABLE("Use init(filePath:)"); - (instancetype)init NS_UNAVAILABLE; - (instancetype)initWithFilePath:(NSString *)filePath NS_DESIGNATED_INITIALIZER; @@ -467,46 +511,14 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota; - (void)reset; - (void)renameFile:(NSString *)newFileName NS_SWIFT_NAME(renameFile(to:)); -#if TARGET_IPHONE_SIMULATOR - -// So here's the situation. -// Extended attributes are perfect for what we're trying to do here (marking files as archived). -// This is exactly what extended attributes were designed for. -// -// But Apple screws us over on the simulator. -// Everytime you build-and-go, they copy the application into a new folder on the hard drive, -// and as part of the process they strip extended attributes from our log files. -// Normally, a copy of a file preserves extended attributes. -// So obviously Apple has gone to great lengths to piss us off. -// -// Thus we use a slightly different tactic for marking log files as archived in the simulator. -// That way it "just works" and there's no confusion when testing. -// -// The difference in method names is indicative of the difference in functionality. -// On the simulator we add an attribute by appending a filename extension. -// -// For example: -// "mylog.txt" -> "mylog.archived.txt" -// "mylog" -> "mylog.archived" - -- (BOOL)hasExtensionAttributeWithName:(NSString *)attrName; - -- (void)addExtensionAttributeWithName:(NSString *)attrName; -- (void)removeExtensionAttributeWithName:(NSString *)attrName; - -#else /* if TARGET_IPHONE_SIMULATOR */ - -// Normal use of extended attributes used everywhere else, -// such as on Macs and on iPhone devices. - - (BOOL)hasExtendedAttributeWithName:(NSString *)attrName; - (void)addExtendedAttributeWithName:(NSString *)attrName; - (void)removeExtendedAttributeWithName:(NSString *)attrName; -#endif /* if TARGET_IPHONE_SIMULATOR */ - - (NSComparisonResult)reverseCompareByCreationDate:(DDLogFileInfo *)another; - (NSComparisonResult)reverseCompareByModificationDate:(DDLogFileInfo *)another; @end + +NS_ASSUME_NONNULL_END diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLog+LOGV.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDLog+LOGV.h similarity index 94% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLog+LOGV.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDLog+LOGV.h index 033860c84..969a46170 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLog+LOGV.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDLog+LOGV.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -18,7 +18,7 @@ #define DD_LEGACY_MACROS 0 #endif -#import "DDLog.h" +#import /** * The constant/variable/method responsible for controlling the current log level. @@ -39,15 +39,15 @@ * This big multiline macro makes all the other macros easier to read. **/ #define LOGV_MACRO(isAsynchronous, lvl, flg, ctx, atag, fnct, frmt, avalist) \ - [DDLog log : isAsynchronous \ - level : lvl \ - flag : flg \ - context : ctx \ - file : __FILE__ \ - function : fnct \ - line : __LINE__ \ - tag : atag \ - format : frmt \ + [DDLog log : isAsynchronous \ + level : lvl \ + flag : flg \ + context : ctx \ + file : __FILE__ \ + function : fnct \ + line : __LINE__ \ + tag : atag \ + format : frmt \ args : avalist] /** @@ -80,4 +80,3 @@ #define DDLogVInfo(frmt, avalist) LOGV_MAYBE(LOG_ASYNC_ENABLED, LOG_LEVEL_DEF, DDLogFlagInfo, 0, nil, __PRETTY_FUNCTION__, frmt, avalist) #define DDLogVDebug(frmt, avalist) LOGV_MAYBE(LOG_ASYNC_ENABLED, LOG_LEVEL_DEF, DDLogFlagDebug, 0, nil, __PRETTY_FUNCTION__, frmt, avalist) #define DDLogVVerbose(frmt, avalist) LOGV_MAYBE(LOG_ASYNC_ENABLED, LOG_LEVEL_DEF, DDLogFlagVerbose, 0, nil, __PRETTY_FUNCTION__, frmt, avalist) - diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLog.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDLog.h similarity index 93% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLog.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDLog.h index c9958ad5b..1b1287fa5 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLog.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDLog.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -15,12 +15,18 @@ #import -// Enable 1.9.x legacy macros if imported directly -#ifndef DD_LEGACY_MACROS - #define DD_LEGACY_MACROS 1 +// The Swift Package integration has no support for the legacy macros. +#if __has_include() + // Enable 1.9.x legacy macros if imported directly and it's not a swift package build. + #ifndef DD_LEGACY_MACROS + #define DD_LEGACY_MACROS 1 + #endif + // DD_LEGACY_MACROS is checked in the file itself + #import #endif -// DD_LEGACY_MACROS is checked in the file itself -#import "DDLegacyMacros.h" + +// Names of loggers. +#import #if OS_OBJECT_USE_OBJC #define DISPATCH_QUEUE_REFERENCE_TYPE strong @@ -33,6 +39,8 @@ @protocol DDLogger; @protocol DDLogFormatter; +NS_ASSUME_NONNULL_BEGIN + /** * Define the standard options. * @@ -105,22 +113,22 @@ typedef NS_OPTIONS(NSUInteger, DDLogFlag){ * 0...00001 DDLogFlagError */ DDLogFlagError = (1 << 0), - + /** * 0...00010 DDLogFlagWarning */ DDLogFlagWarning = (1 << 1), - + /** * 0...00100 DDLogFlagInfo */ DDLogFlagInfo = (1 << 2), - + /** * 0...01000 DDLogFlagDebug */ DDLogFlagDebug = (1 << 3), - + /** * 0...10000 DDLogFlagVerbose */ @@ -135,40 +143,38 @@ typedef NS_ENUM(NSUInteger, DDLogLevel){ * No logs */ DDLogLevelOff = 0, - + /** * Error logs only */ DDLogLevelError = (DDLogFlagError), - + /** * Error and warning logs */ DDLogLevelWarning = (DDLogLevelError | DDLogFlagWarning), - + /** * Error, warning and info logs */ DDLogLevelInfo = (DDLogLevelWarning | DDLogFlagInfo), - + /** * Error, warning, info and debug logs */ DDLogLevelDebug = (DDLogLevelInfo | DDLogFlagDebug), - + /** * Error, warning, info, debug and verbose logs */ DDLogLevelVerbose = (DDLogLevelDebug | DDLogFlagVerbose), - + /** * All logs (1...11111) */ DDLogLevelAll = NSUIntegerMax }; -NS_ASSUME_NONNULL_BEGIN - /** * Extracts just the file name, no path or extension * @@ -177,7 +183,7 @@ NS_ASSUME_NONNULL_BEGIN * * @return the file name */ -NSString * __nullable DDExtractFileNameWithoutExtension(const char *filePath, BOOL copy); +FOUNDATION_EXTERN NSString * __nullable DDExtractFileNameWithoutExtension(const char *filePath, BOOL copy); /** * The THIS_FILE macro gives you an NSString of the file name. @@ -241,9 +247,9 @@ NSString * __nullable DDExtractFileNameWithoutExtension(const char *filePath, BO flag:(DDLogFlag)flag context:(NSInteger)context file:(const char *)file - function:(const char *)function + function:(nullable const char *)function line:(NSUInteger)line - tag:(id __nullable)tag + tag:(nullable id)tag format:(NSString *)format, ... NS_FORMAT_FUNCTION(9,10); /** @@ -267,9 +273,9 @@ NSString * __nullable DDExtractFileNameWithoutExtension(const char *filePath, BO flag:(DDLogFlag)flag context:(NSInteger)context file:(const char *)file - function:(const char *)function + function:(nullable const char *)function line:(NSUInteger)line - tag:(id __nullable)tag + tag:(nullable id)tag format:(NSString *)format, ... NS_FORMAT_FUNCTION(9,10); /** @@ -294,9 +300,9 @@ NSString * __nullable DDExtractFileNameWithoutExtension(const char *filePath, BO flag:(DDLogFlag)flag context:(NSInteger)context file:(const char *)file - function:(const char *)function + function:(nullable const char *)function line:(NSUInteger)line - tag:(id __nullable)tag + tag:(nullable id)tag format:(NSString *)format args:(va_list)argList NS_SWIFT_NAME(log(asynchronous:level:flag:context:file:function:line:tag:format:arguments:)); @@ -322,16 +328,16 @@ NSString * __nullable DDExtractFileNameWithoutExtension(const char *filePath, BO flag:(DDLogFlag)flag context:(NSInteger)context file:(const char *)file - function:(const char *)function + function:(nullable const char *)function line:(NSUInteger)line - tag:(id __nullable)tag + tag:(nullable id)tag format:(NSString *)format args:(va_list)argList NS_SWIFT_NAME(log(asynchronous:level:flag:context:file:function:line:tag:format:arguments:)); /** * Logging Primitive. * - * This method can be used if you manualy prepared DDLogMessage. + * This method can be used if you manually prepared DDLogMessage. * * @param asynchronous YES if the logging is done async, NO if you want to force sync * @param logMessage the log message stored in a `DDLogMessage` model object @@ -342,7 +348,7 @@ NSString * __nullable DDExtractFileNameWithoutExtension(const char *filePath, BO /** * Logging Primitive. * - * This method can be used if you manualy prepared DDLogMessage. + * This method can be used if you manually prepared DDLogMessage. * * @param asynchronous YES if the logging is done async, NO if you want to force sync * @param logMessage the log message stored in a `DDLogMessage` model object @@ -575,7 +581,7 @@ NSString * __nullable DDExtractFileNameWithoutExtension(const char *filePath, BO * If no formatter is set, the logger simply logs the message as it is given in logMessage, * or it may use its own built in formatting style. **/ -@property (nonatomic, strong) id logFormatter; +@property (nonatomic, strong, nullable) id logFormatter; @optional @@ -606,13 +612,13 @@ NSString * __nullable DDExtractFileNameWithoutExtension(const char *filePath, BO - (void)didAddLoggerInQueue:(dispatch_queue_t)queue; /** - * See the above description for `didAddLoger` + * See the above description for `didAddLogger` */ - (void)willRemoveLogger; /** * Some loggers may buffer IO for optimization purposes. - * For example, a database logger may only save occasionaly as the disk IO is slow. + * For example, a database logger may only save occasionally as the disk IO is slow. * In such loggers, this method should be implemented to flush any pending IO. * * This allows invocations of DDLog's flushLog method to be propogated to loggers that need it. @@ -635,7 +641,7 @@ NSString * __nullable DDExtractFileNameWithoutExtension(const char *filePath, BO * The created queue will receive its name from this method. * This may be helpful for debugging or profiling reasons. **/ -@property (nonatomic, readonly) NSString *loggerName; +@property (copy, nonatomic, readonly) DDLoggerName loggerName; @end @@ -660,7 +666,7 @@ NSString * __nullable DDExtractFileNameWithoutExtension(const char *filePath, BO * The formatter may also optionally filter the log message by returning nil, * in which case the logger will not log the message. **/ -- (NSString * __nullable)formatLogMessage:(DDLogMessage *)logMessage NS_SWIFT_NAME(format(message:)); +- (nullable NSString *)formatLogMessage:(DDLogMessage *)logMessage NS_SWIFT_NAME(format(message:)); @optional @@ -670,7 +676,7 @@ NSString * __nullable DDExtractFileNameWithoutExtension(const char *filePath, BO * * This is primarily for thread-safety. * If a formatter is explicitly not thread-safe, it may wish to throw an exception if added to multiple loggers. - * Or if a formatter has potentially thread-unsafe code (e.g. NSDateFormatter), + * Or if a formatter has potentially thread-unsafe code (e.g. NSDateFormatter with 10.0 behavior), * it could possibly use these hooks to switch to thread-safe versions of the code. **/ - (void)didAddToLogger:(id )logger; @@ -681,7 +687,7 @@ NSString * __nullable DDExtractFileNameWithoutExtension(const char *filePath, BO * * This is primarily for thread-safety. * If a formatter is explicitly not thread-safe, it may wish to throw an exception if added to multiple loggers. - * Or if a formatter has potentially thread-unsafe code (e.g. NSDateFormatter), + * Or if a formatter has potentially thread-unsafe code (e.g. NSDateFormatter with 10.0 behavior), * it could possibly use these hooks to switch to thread-safe versions of the code or use dispatch_set_specific() .* to add its own specific values. **/ @@ -774,10 +780,11 @@ typedef NS_OPTIONS(NSInteger, DDLogMessageOptions){ NSUInteger _line; id _tag; DDLogMessageOptions _options; - NSDate *_timestamp; + NSDate * _timestamp; NSString *_threadID; NSString *_threadName; NSString *_queueLabel; + NSUInteger _qos; } /** @@ -817,11 +824,11 @@ typedef NS_OPTIONS(NSInteger, DDLogMessageOptions){ flag:(DDLogFlag)flag context:(NSInteger)context file:(NSString *)file - function:(NSString * __nullable)function + function:(nullable NSString *)function line:(NSUInteger)line - tag:(id __nullable)tag + tag:(nullable id)tag options:(DDLogMessageOptions)options - timestamp:(NSDate * __nullable)timestamp NS_DESIGNATED_INITIALIZER; + timestamp:(nullable NSDate *)timestamp NS_DESIGNATED_INITIALIZER; /** * Read-only properties @@ -836,14 +843,15 @@ typedef NS_OPTIONS(NSInteger, DDLogMessageOptions){ @property (readonly, nonatomic) NSInteger context; @property (readonly, nonatomic) NSString *file; @property (readonly, nonatomic) NSString *fileName; -@property (readonly, nonatomic) NSString * __nullable function; +@property (readonly, nonatomic, nullable) NSString * function; @property (readonly, nonatomic) NSUInteger line; -@property (readonly, nonatomic) id __nullable tag; +@property (readonly, nonatomic, nullable) id tag; @property (readonly, nonatomic) DDLogMessageOptions options; @property (readonly, nonatomic) NSDate *timestamp; @property (readonly, nonatomic) NSString *threadID; // ID as it appears in NSLog calculated from the machThreadID -@property (readonly, nonatomic) NSString *threadName; +@property (readonly, nonatomic, nullable) NSString *threadName; @property (readonly, nonatomic) NSString *queueLabel; +@property (readonly, nonatomic) NSUInteger qos API_AVAILABLE(macos(10.10), ios(8.0)); @end @@ -855,10 +863,10 @@ typedef NS_OPTIONS(NSInteger, DDLogMessageOptions){ * The `DDLogger` protocol specifies that an optional formatter can be added to a logger. * Most (but not all) loggers will want to support formatters. * - * However, writting getters and setters in a thread safe manner, + * However, writing getters and setters in a thread safe manner, * while still maintaining maximum speed for the logging process, is a difficult task. * - * To do it right, the implementation of the getter/setter has strict requiremenets: + * To do it right, the implementation of the getter/setter has strict requirements: * - Must NOT require the `logMessage:` method to acquire a lock. * - Must NOT require the `logMessage:` method to access an atomic property (also a lock of sorts). * @@ -901,8 +909,8 @@ typedef NS_OPTIONS(NSInteger, DDLogMessageOptions){ @property (nonatomic, readonly) id logger; @property (nonatomic, readonly) DDLogLevel level; -+ (DDLoggerInformation *)informationWithLogger:(id )logger - andLevel:(DDLogLevel)level; ++ (instancetype)informationWithLogger:(id )logger + andLevel:(DDLogLevel)level; @end diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLogMacros.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDLogMacros.h similarity index 98% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLogMacros.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDLogMacros.h index 79ec42171..a1ccf30d0 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDLogMacros.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDLogMacros.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -18,7 +18,7 @@ #define DD_LEGACY_MACROS 0 #endif -#import "DDLog.h" +#import /** * The constant/variable/method responsible for controlling the current log level. diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDLoggerNames.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDLoggerNames.h new file mode 100644 index 000000000..a5d95ad29 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDLoggerNames.h @@ -0,0 +1,30 @@ +// Software License Agreement (BSD License) +// +// Copyright (c) 2010-2020, Deusty, LLC +// All rights reserved. +// +// Redistribution and use of this software in source and binary forms, +// with or without modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Neither the name of Deusty nor the names of its contributors may be used +// to endorse or promote products derived from this software without specific +// prior written permission of Deusty, LLC. + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NSString *DDLoggerName NS_TYPED_EXTENSIBLE_ENUM; + +FOUNDATION_EXPORT DDLoggerName const DDLoggerNameOS NS_SWIFT_NAME(DDLoggerName.os); // DDOSLogger +FOUNDATION_EXPORT DDLoggerName const DDLoggerNameFile NS_SWIFT_NAME(DDLoggerName.file); // DDFileLogger + +FOUNDATION_EXPORT DDLoggerName const DDLoggerNameTTY NS_SWIFT_NAME(DDLoggerName.tty); // DDTTYLogger + +API_DEPRECATED("Use DDOSLogger instead", macosx(10.4, 10.12), ios(2.0, 10.0), watchos(2.0, 3.0), tvos(9.0, 10.0)) +FOUNDATION_EXPORT DDLoggerName const DDLoggerNameASL NS_SWIFT_NAME(DDLoggerName.asl); // DDASLLogger + +NS_ASSUME_NONNULL_END diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDMultiFormatter.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDMultiFormatter.h similarity index 87% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDMultiFormatter.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDMultiFormatter.h index 6ee04a989..a33e100e3 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/Extensions/DDMultiFormatter.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDMultiFormatter.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -20,7 +20,9 @@ #define DD_LEGACY_MACROS 0 #endif -#import "DDLog.h" +#import + +NS_ASSUME_NONNULL_BEGIN /** * This formatter can be used to chain different formatters together. @@ -31,7 +33,7 @@ /** * Array of chained formatters */ -@property (readonly) NSArray> *formatters; +@property (nonatomic, readonly) NSArray> *formatters; /** * Add a new formatter @@ -54,3 +56,5 @@ - (BOOL)isFormattingWithFormatter:(id)formatter; @end + +NS_ASSUME_NONNULL_END diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDOSLogger.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDOSLogger.h new file mode 100644 index 000000000..672ebb6c7 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDOSLogger.h @@ -0,0 +1,55 @@ +// Software License Agreement (BSD License) +// +// Copyright (c) 2010-2020, Deusty, LLC +// All rights reserved. +// +// Redistribution and use of this software in source and binary forms, +// with or without modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Neither the name of Deusty nor the names of its contributors may be used +// to endorse or promote products derived from this software without specific +// prior written permission of Deusty, LLC. + +#import + +// Disable legacy macros +#ifndef DD_LEGACY_MACROS + #define DD_LEGACY_MACROS 0 +#endif + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * This class provides a logger for the Apple os_log facility. + **/ +API_AVAILABLE(macos(10.12), ios(10.0), watchos(3.0), tvos(10.0)) +@interface DDOSLogger : DDAbstractLogger + +/** + * Singleton method + * + * @return the shared instance with OS_LOG_DEFAULT. + */ +@property (nonatomic, class, readonly, strong) DDOSLogger *sharedInstance; + +/** + Designated initializer + + @param subsystem Desired subsystem in log. E.g. "org.example" + @param category Desired category in log. E.g. "Point of interests." + @return New instance of DDOSLogger. + + @discussion This method requires either both or no parameter to be set. Much like `(String, String)?` in Swift. + If both parameters are nil, this method will return a logger configured with `OS_LOG_DEFAULT`. + If both parameters are non-nil, it will return a logger configured with `os_log_create(subsystem, category)` + */ +- (instancetype)initWithSubsystem:(nullable NSString *)subsystem category:(nullable NSString *)category NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDTTYLogger.h b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDTTYLogger.h similarity index 79% rename from Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDTTYLogger.h rename to Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDTTYLogger.h index 0591727be..5f814f24f 100644 --- a/Examples/CloudKitTodo/Pods/CocoaLumberjack/Classes/DDTTYLogger.h +++ b/Examples/CloudKitTodo/Pods/CocoaLumberjack/Sources/CocoaLumberjack/include/DDTTYLogger.h @@ -1,6 +1,6 @@ // Software License Agreement (BSD License) // -// Copyright (c) 2010-2016, Deusty, LLC +// Copyright (c) 2010-2020, Deusty, LLC // All rights reserved. // // Redistribution and use of this software in source and binary forms, @@ -18,7 +18,7 @@ #define DD_LEGACY_MACROS 0 #endif -#import "DDLog.h" +#import #define LOG_CONTEXT_ALL INT_MAX @@ -28,20 +28,21 @@ // iOS or tvOS or watchOS #import typedef UIColor DDColor; - static inline DDColor* DDMakeColor(CGFloat r, CGFloat g, CGFloat b) {return [DDColor colorWithRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1.0f];} + static inline DDColor* _Nonnull DDMakeColor(CGFloat r, CGFloat g, CGFloat b) {return [DDColor colorWithRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1.0f];} #elif defined(DD_CLI) || !__has_include() // OS X CLI - #import "CLIColor.h" + #import typedef CLIColor DDColor; - static inline DDColor* DDMakeColor(CGFloat r, CGFloat g, CGFloat b) {return [DDColor colorWithCalibratedRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1.0f];} + static inline DDColor* _Nonnull DDMakeColor(CGFloat r, CGFloat g, CGFloat b) {return [DDColor colorWithCalibratedRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1.0f];} #else // OS X with AppKit #import typedef NSColor DDColor; - static inline DDColor* DDMakeColor(CGFloat r, CGFloat g, CGFloat b) {return [DDColor colorWithCalibratedRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1.0f];} + static inline DDColor * _Nonnull DDMakeColor(CGFloat r, CGFloat g, CGFloat b) {return [DDColor colorWithCalibratedRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1.0f];} #endif #pragma clang diagnostic pop +NS_ASSUME_NONNULL_BEGIN /** * This class provides a logger for Terminal output or Xcode console output, @@ -60,9 +61,9 @@ @interface DDTTYLogger : DDAbstractLogger /** - * Singleton method + * Singleton instance. Returns `nil` if the initialization of the DDTTYLogger fails. */ -@property (class, readonly, strong) DDTTYLogger *sharedInstance; +@property (nonatomic, class, readonly, strong, nullable) DDTTYLogger *sharedInstance; /* Inherited from the DDLogger protocol: * @@ -103,6 +104,11 @@ **/ @property (nonatomic, readwrite, assign) BOOL automaticallyAppendNewlineForCustomFormatters; +/** + Using this initializer is not supported. Please use `DDTTYLogger.sharedInstance`. + **/ +- (instancetype)init NS_UNAVAILABLE; + /** * The default color set (foregroundColor, backgroundColor) is: * @@ -125,7 +131,7 @@ * * This method invokes setForegroundColor:backgroundColor:forFlag:context: and applies it to `LOG_CONTEXT_ALL`. **/ -- (void)setForegroundColor:(DDColor *)txtColor backgroundColor:(DDColor *)bgColor forFlag:(DDLogFlag)mask; +- (void)setForegroundColor:(nullable DDColor *)txtColor backgroundColor:(nullable DDColor *)bgColor forFlag:(DDLogFlag)mask; /** * Just like setForegroundColor:backgroundColor:flag, but allows you to specify a particular logging context. @@ -133,12 +139,12 @@ * A logging context is often used to identify log messages coming from a 3rd party framework, * although logging context's can be used for many different functions. * - * Use LOG_CONTEXT_ALL to set the deafult color for all contexts that have no specific color set defined. + * Use LOG_CONTEXT_ALL to set the default color for all contexts that have no specific color set defined. * * Logging context's are explained in further detail here: * Documentation/CustomContext.md **/ -- (void)setForegroundColor:(DDColor *)txtColor backgroundColor:(DDColor *)bgColor forFlag:(DDLogFlag)mask context:(NSInteger)ctxt; +- (void)setForegroundColor:(nullable DDColor *)txtColor backgroundColor:(nullable DDColor *)bgColor forFlag:(DDLogFlag)mask context:(NSInteger)ctxt; /** * Similar to the methods above, but allows you to map DDLogMessage->tag to a particular color profile. @@ -147,7 +153,7 @@ * static NSString *const PurpleTag = @"PurpleTag"; * * #define DDLogPurple(frmt, ...) LOG_OBJC_TAG_MACRO(NO, 0, 0, 0, PurpleTag, frmt, ##__VA_ARGS__) - * + * * And then where you configure CocoaLumberjack: * * purple = DDMakeColor((64/255.0), (0/255.0), (128/255.0)); @@ -163,7 +169,7 @@ * * DDLogPurple(@"I'm a purple log message!"); **/ -- (void)setForegroundColor:(DDColor *)txtColor backgroundColor:(DDColor *)bgColor forTag:(id )tag; +- (void)setForegroundColor:(nullable DDColor *)txtColor backgroundColor:(nullable DDColor *)bgColor forTag:(id )tag; /** * Clearing color profiles. @@ -176,3 +182,5 @@ - (void)clearAllColors; @end + +NS_ASSUME_NONNULL_END diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/CLIColor.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/CLIColor.h new file mode 120000 index 000000000..6db17e6ab --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/CLIColor.h @@ -0,0 +1 @@ +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/CLIColor.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/CocoaLumberjack.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/CocoaLumberjack.h index 45cddcfd1..9cd08c07b 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/CocoaLumberjack.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/CocoaLumberjack.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/CocoaLumberjack.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/Supporting Files/CocoaLumberjack.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDASLLogCapture.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDASLLogCapture.h index daa6c7478..3632208e8 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDASLLogCapture.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDASLLogCapture.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDASLLogCapture.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDASLLogCapture.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDASLLogger.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDASLLogger.h index e833dde49..3e527f40a 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDASLLogger.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDASLLogger.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDASLLogger.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDASLLogger.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDAbstractDatabaseLogger.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDAbstractDatabaseLogger.h index 84139e5ef..c73498f65 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDAbstractDatabaseLogger.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDAbstractDatabaseLogger.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDAbstractDatabaseLogger.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDAbstractDatabaseLogger.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDAssertMacros.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDAssertMacros.h index 756b2c015..d503d1a2a 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDAssertMacros.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDAssertMacros.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDAssertMacros.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDAssertMacros.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDContextFilterLogFormatter.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDContextFilterLogFormatter.h index f88cca8f0..c1a256be8 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDContextFilterLogFormatter.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDContextFilterLogFormatter.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/Extensions/DDContextFilterLogFormatter.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDContextFilterLogFormatter.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDDispatchQueueLogFormatter.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDDispatchQueueLogFormatter.h index 88ed39e49..f338ccc2f 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDDispatchQueueLogFormatter.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDDispatchQueueLogFormatter.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/Extensions/DDDispatchQueueLogFormatter.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDDispatchQueueLogFormatter.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDFileLogger+Buffering.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDFileLogger+Buffering.h new file mode 120000 index 000000000..45f088008 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDFileLogger+Buffering.h @@ -0,0 +1 @@ +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDFileLogger+Buffering.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDFileLogger+Internal.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDFileLogger+Internal.h new file mode 120000 index 000000000..8b6e2bafd --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDFileLogger+Internal.h @@ -0,0 +1 @@ +../../../CocoaLumberjack/Sources/CocoaLumberjack/DDFileLogger+Internal.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDFileLogger.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDFileLogger.h index 271368ee2..3b6483ac2 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDFileLogger.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDFileLogger.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDFileLogger.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDFileLogger.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLegacyMacros.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLegacyMacros.h index d6df36a76..bd5fbf783 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLegacyMacros.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLegacyMacros.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDLegacyMacros.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/Supporting Files/DDLegacyMacros.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLog+LOGV.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLog+LOGV.h index 20cbcaab3..adf9136b7 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLog+LOGV.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLog+LOGV.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDLog+LOGV.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDLog+LOGV.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLog.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLog.h index ddeb654f7..700b5d9fd 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLog.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLog.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDLog.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDLog.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLogMacros.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLogMacros.h index 33b944d2e..8b58f42e6 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLogMacros.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLogMacros.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDLogMacros.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDLogMacros.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLoggerNames.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLoggerNames.h new file mode 120000 index 000000000..27d6a7fa3 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDLoggerNames.h @@ -0,0 +1 @@ +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDLoggerNames.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDMultiFormatter.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDMultiFormatter.h index 0caeafa43..f89825de2 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDMultiFormatter.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDMultiFormatter.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/Extensions/DDMultiFormatter.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDMultiFormatter.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDOSLogger.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDOSLogger.h index f6aa00c89..94ff4217f 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDOSLogger.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDOSLogger.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDOSLogger.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDOSLogger.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDTTYLogger.h b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDTTYLogger.h index e5fcddc7c..0fbf313a9 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDTTYLogger.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/CocoaLumberjack/DDTTYLogger.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDTTYLogger.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDTTYLogger.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YDBLogMessage.h b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YDBLogMessage.h new file mode 120000 index 000000000..6de2670d7 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YDBLogMessage.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Utilities/YDBLogMessage.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseAtomic.h b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseAtomic.h index 536426922..3ef9d51d9 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseAtomic.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseAtomic.h @@ -1 +1 @@ -../../../../../../YapDatabase/Internal/YapDatabaseAtomic.h \ No newline at end of file +../../../../../../YapDatabase/Utilities/YapDatabaseAtomic.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseCloudCoreGraphPrivate.h b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseCloudCoreGraphPrivate.h new file mode 120000 index 000000000..583526b39 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseCloudCoreGraphPrivate.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Extensions/CloudCore/Internal/YapDatabaseCloudCoreGraphPrivate.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseCollectionConfig.h b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseCollectionConfig.h new file mode 120000 index 000000000..a15a98327 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseCollectionConfig.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Internal/YapDatabaseCollectionConfig.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseConnectionPool.h b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseConnectionPool.h new file mode 120000 index 000000000..38b63cce0 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseConnectionPool.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Utilities/YapDatabaseConnectionPool.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseConnectionProxy.h b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseConnectionProxy.h index 1d4ad8eff..640145a57 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseConnectionProxy.h +++ b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseConnectionProxy.h @@ -1 +1 @@ -../../../../../../YapDatabase/Extensions/ConnectionProxy/YapDatabaseConnectionProxy.h \ No newline at end of file +../../../../../../YapDatabase/Utilities/YapDatabaseConnectionProxy.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseCryptoUtils.h b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseCryptoUtils.h new file mode 120000 index 000000000..685709586 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseCryptoUtils.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Utilities/YapDatabaseCryptoUtils.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseTypes.h b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseTypes.h new file mode 120000 index 000000000..5edfd5239 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Private/YapDatabase/YapDatabaseTypes.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/YapDatabaseTypes.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/CLIColor.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/CLIColor.h new file mode 120000 index 000000000..6db17e6ab --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/CLIColor.h @@ -0,0 +1 @@ +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/CLIColor.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/CocoaLumberjack.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/CocoaLumberjack.h index 45cddcfd1..9cd08c07b 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/CocoaLumberjack.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/CocoaLumberjack.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/CocoaLumberjack.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/Supporting Files/CocoaLumberjack.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDASLLogCapture.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDASLLogCapture.h index daa6c7478..3632208e8 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDASLLogCapture.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDASLLogCapture.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDASLLogCapture.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDASLLogCapture.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDASLLogger.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDASLLogger.h index e833dde49..3e527f40a 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDASLLogger.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDASLLogger.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDASLLogger.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDASLLogger.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDAbstractDatabaseLogger.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDAbstractDatabaseLogger.h index 84139e5ef..c73498f65 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDAbstractDatabaseLogger.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDAbstractDatabaseLogger.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDAbstractDatabaseLogger.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDAbstractDatabaseLogger.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDAssertMacros.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDAssertMacros.h index 756b2c015..d503d1a2a 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDAssertMacros.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDAssertMacros.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDAssertMacros.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDAssertMacros.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDContextFilterLogFormatter.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDContextFilterLogFormatter.h index f88cca8f0..c1a256be8 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDContextFilterLogFormatter.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDContextFilterLogFormatter.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/Extensions/DDContextFilterLogFormatter.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDContextFilterLogFormatter.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDDispatchQueueLogFormatter.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDDispatchQueueLogFormatter.h index 88ed39e49..f338ccc2f 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDDispatchQueueLogFormatter.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDDispatchQueueLogFormatter.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/Extensions/DDDispatchQueueLogFormatter.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDDispatchQueueLogFormatter.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDFileLogger+Buffering.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDFileLogger+Buffering.h new file mode 120000 index 000000000..45f088008 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDFileLogger+Buffering.h @@ -0,0 +1 @@ +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDFileLogger+Buffering.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDFileLogger.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDFileLogger.h index 271368ee2..3b6483ac2 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDFileLogger.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDFileLogger.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDFileLogger.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDFileLogger.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLegacyMacros.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLegacyMacros.h index d6df36a76..bd5fbf783 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLegacyMacros.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLegacyMacros.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDLegacyMacros.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/Supporting Files/DDLegacyMacros.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLog+LOGV.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLog+LOGV.h index 20cbcaab3..adf9136b7 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLog+LOGV.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLog+LOGV.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDLog+LOGV.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDLog+LOGV.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLog.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLog.h index ddeb654f7..700b5d9fd 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLog.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLog.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDLog.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDLog.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLogMacros.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLogMacros.h index 33b944d2e..8b58f42e6 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLogMacros.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLogMacros.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDLogMacros.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDLogMacros.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLoggerNames.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLoggerNames.h new file mode 120000 index 000000000..27d6a7fa3 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDLoggerNames.h @@ -0,0 +1 @@ +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDLoggerNames.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDMultiFormatter.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDMultiFormatter.h index 0caeafa43..f89825de2 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDMultiFormatter.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDMultiFormatter.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/Extensions/DDMultiFormatter.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDMultiFormatter.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDOSLogger.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDOSLogger.h index f6aa00c89..94ff4217f 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDOSLogger.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDOSLogger.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDOSLogger.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDOSLogger.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDTTYLogger.h b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDTTYLogger.h index e5fcddc7c..0fbf313a9 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDTTYLogger.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/CocoaLumberjack/DDTTYLogger.h @@ -1 +1 @@ -../../../CocoaLumberjack/Classes/DDTTYLogger.h \ No newline at end of file +../../../CocoaLumberjack/Sources/CocoaLumberjack/include/DDTTYLogger.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YDBLogMessage.h b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YDBLogMessage.h new file mode 120000 index 000000000..6de2670d7 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YDBLogMessage.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Utilities/YDBLogMessage.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabase-umbrella.h b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabase-umbrella.h new file mode 120000 index 000000000..8d3219585 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabase-umbrella.h @@ -0,0 +1 @@ +../../../Target Support Files/YapDatabase/YapDatabase-umbrella.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabase.modulemap b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabase.modulemap new file mode 120000 index 000000000..c31f78bd3 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabase.modulemap @@ -0,0 +1 @@ +../../../Target Support Files/YapDatabase/YapDatabase.modulemap \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseAtomic.h b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseAtomic.h new file mode 120000 index 000000000..3ef9d51d9 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseAtomic.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Utilities/YapDatabaseAtomic.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCoreGraphPrivate.h b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCoreGraphPrivate.h new file mode 120000 index 000000000..583526b39 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCoreGraphPrivate.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Extensions/CloudCore/Internal/YapDatabaseCloudCoreGraphPrivate.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCoreOperationPrivate.h b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCoreOperationPrivate.h new file mode 120000 index 000000000..54b3b9ca7 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCoreOperationPrivate.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Extensions/CloudCore/Internal/YapDatabaseCloudCoreOperationPrivate.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCorePipelinePrivate.h b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCorePipelinePrivate.h new file mode 120000 index 000000000..e2fa163dd --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCorePipelinePrivate.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Extensions/CloudCore/Internal/YapDatabaseCloudCorePipelinePrivate.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCorePrivate.h b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCorePrivate.h new file mode 120000 index 000000000..e93ff3844 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCloudCorePrivate.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Extensions/CloudCore/Internal/YapDatabaseCloudCorePrivate.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseConnectionPool.h b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseConnectionPool.h new file mode 120000 index 000000000..38b63cce0 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseConnectionPool.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Utilities/YapDatabaseConnectionPool.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseConnectionProxy.h b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseConnectionProxy.h index 1d4ad8eff..640145a57 120000 --- a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseConnectionProxy.h +++ b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseConnectionProxy.h @@ -1 +1 @@ -../../../../../../YapDatabase/Extensions/ConnectionProxy/YapDatabaseConnectionProxy.h \ No newline at end of file +../../../../../../YapDatabase/Utilities/YapDatabaseConnectionProxy.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCryptoUtils.h b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCryptoUtils.h new file mode 120000 index 000000000..685709586 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseCryptoUtils.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Utilities/YapDatabaseCryptoUtils.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseExtensionPrivate.h b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseExtensionPrivate.h new file mode 120000 index 000000000..c5c8388b6 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseExtensionPrivate.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/Extensions/Protocol/Internal/YapDatabaseExtensionPrivate.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseTypes.h b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseTypes.h new file mode 120000 index 000000000..5edfd5239 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Headers/Public/YapDatabase/YapDatabaseTypes.h @@ -0,0 +1 @@ +../../../../../../YapDatabase/YapDatabaseTypes.h \ No newline at end of file diff --git a/Examples/CloudKitTodo/Pods/Local Podspecs/YapDatabase.podspec.json b/Examples/CloudKitTodo/Pods/Local Podspecs/YapDatabase.podspec.json index 72b384f8f..a92a970ec 100644 --- a/Examples/CloudKitTodo/Pods/Local Podspecs/YapDatabase.podspec.json +++ b/Examples/CloudKitTodo/Pods/Local Podspecs/YapDatabase.podspec.json @@ -1,7 +1,7 @@ { "name": "YapDatabase", - "version": "3.0.1", - "summary": "A key/value store built atop sqlite for iOS & Mac.", + "version": "4.0", + "summary": "A collection/key/value store built atop sqlite for iOS & Mac.", "homepage": "https://github.com/yapstudios/YapDatabase", "license": "MIT", "authors": { @@ -9,19 +9,20 @@ }, "source": { "git": "https://github.com/yapstudios/YapDatabase.git", - "tag": "3.0.1" + "tag": "4.0" }, "platforms": { - "osx": "10.9", - "ios": "8.0", - "tvos": "9.0", - "watchos": "2.0" + "osx": "10.12", + "ios": "10.0", + "tvos": "10.0", + "watchos": "3.0" }, + "swift_versions": "5.0", "libraries": "c++", "default_subspecs": "Standard", "subspecs": [ { - "name": "Standard", + "name": "Standard-ObjC", "subspecs": [ { "name": "Core", @@ -29,25 +30,17 @@ "OTHER_CFLAGS": "$(inherited) -DYAP_STANDARD_SQLITE" }, "libraries": "sqlite3", - "dependencies": { - "CocoaLumberjack": [ - - ] - }, "source_files": [ "YapDatabase/*.{h,m,mm,c}", "YapDatabase/{Internal,Utilities}/*.{h,m,mm,c}", "YapDatabase/Extensions/Protocol/**/*.{h,m,mm,c}" ], - "private_header_files": [ - "YapDatabase/Internal/*.h", - "YapDatabase/Extensions/Protocol/Internal/*.h" - ] + "private_header_files": "YapDatabase/Internal/*.h" }, { "name": "Extensions", "dependencies": { - "YapDatabase/Standard/Core": [ + "YapDatabase/Standard-ObjC/Core": [ ] }, @@ -60,7 +53,7 @@ { "name": "AutoView", "dependencies": { - "YapDatabase/Standard/Extensions/View": [ + "YapDatabase/Standard-ObjC/Extensions/View": [ ] }, @@ -70,7 +63,7 @@ { "name": "ManualView", "dependencies": { - "YapDatabase/Standard/Extensions/View": [ + "YapDatabase/Standard-ObjC/Extensions/View": [ ] }, @@ -105,7 +98,7 @@ { "name": "FilteredView", "dependencies": { - "YapDatabase/Standard/Extensions/View": [ + "YapDatabase/Standard-ObjC/Extensions/View": [ ] }, @@ -115,10 +108,10 @@ { "name": "SearchResultsView", "dependencies": { - "YapDatabase/Standard/Extensions/AutoView": [ + "YapDatabase/Standard-ObjC/Extensions/AutoView": [ ], - "YapDatabase/Standard/Extensions/FullTextSearch": [ + "YapDatabase/Standard-ObjC/Extensions/FullTextSearch": [ ] }, @@ -135,10 +128,6 @@ "source_files": "YapDatabase/Extensions/RTreeIndex/**/*.{h,m,mm,c}", "private_header_files": "YapDatabase/Extensions/RTreeIndex/Internal/*.h" }, - { - "name": "ConnectionProxy", - "source_files": "YapDatabase/Extensions/ConnectionProxy/**/*.{h,m,mm,c}" - }, { "name": "ActionManager", "osx": { @@ -151,7 +140,7 @@ "frameworks": "SystemConfiguration" }, "dependencies": { - "YapDatabase/Standard/Extensions/AutoView": [ + "YapDatabase/Standard-ObjC/Extensions/AutoView": [ ] }, @@ -160,15 +149,222 @@ }, { "name": "CloudCore", - "source_files": "YapDatabase/Extensions/CloudCore/**/*.{h,m,mm,c}", - "private_header_files": "YapDatabase/Extensions/CloudCore/Internal/*.h" + "source_files": "YapDatabase/Extensions/CloudCore/**/*.{h,m,mm,c}" } ] } ] }, { - "name": "SQLCipher", + "name": "Standard", + "subspecs": [ + { + "name": "Core", + "dependencies": { + "YapDatabase/Standard-ObjC/Core": [ + + ] + }, + "source_files": "YapDatabase/Swift/*.swift" + }, + { + "name": "Extensions", + "dependencies": { + "YapDatabase/Standard/Core": [ + + ] + }, + "subspecs": [ + { + "name": "View", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/View": [ + + ] + }, + "source_files": "YapDatabase/Extensions/View/Swift/*.swift" + }, + { + "name": "AutoView", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/AutoView": [ + + ], + "YapDatabase/Standard/Extensions/View": [ + + ] + }, + "source_files": "YapDatabase/Extensions/AutoView/Swift/*.swift" + }, + { + "name": "ManualView", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/ManualView": [ + + ], + "YapDatabase/Standard/Extensions/View": [ + + ] + }, + "source_files": "YapDatabase/Extensions/ManualView/Swift/*.swift" + }, + { + "name": "SecondaryIndex", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/SecondaryIndex": [ + + ] + }, + "source_files": "YapDatabase/Extensions/SecondaryIndex/Swift/*.swift" + }, + { + "name": "CrossProcessNotification", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/CrossProcessNotification": [ + + ] + }, + "source_files": "YapDatabase/Extensions/CrossProcessNotification/Swift/*.swift" + }, + { + "name": "Relationships", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/Relationships": [ + + ] + }, + "source_files": "YapDatabase/Extensions/Relationships/Swift/*.swift" + }, + { + "name": "FullTextSearch", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/FullTextSearch": [ + + ] + }, + "source_files": "YapDatabase/Extensions/FullTextSearch/Swift/*.swift" + }, + { + "name": "Hooks", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/Hooks": [ + + ] + }, + "source_files": "YapDatabase/Extensions/Hooks/Swift/*.swift" + }, + { + "name": "FilteredView", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/FilteredView": [ + + ], + "YapDatabase/Standard/Extensions/View": [ + + ] + }, + "source_files": "YapDatabase/Extensions/FilteredView/Swift/*.swift" + }, + { + "name": "SearchResultsView", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/SearchResultsView": [ + + ], + "YapDatabase/Standard/Extensions/AutoView": [ + + ], + "YapDatabase/Standard/Extensions/FullTextSearch": [ + + ] + }, + "source_files": "YapDatabase/Extensions/SearchResultsView/Swift/*.swift" + }, + { + "name": "CloudKit", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/CloudKit": [ + + ] + }, + "source_files": "YapDatabase/Extensions/CloudKit/Swift/*.swift" + }, + { + "name": "RTreeIndex", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/RTreeIndex": [ + + ] + }, + "source_files": "YapDatabase/Extensions/RTreeIndex/Swift/*.swift" + }, + { + "name": "ActionManager", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/ActionManager": [ + + ], + "YapDatabase/Standard/Extensions/AutoView": [ + + ] + }, + "source_files": "YapDatabase/Extensions/ActionManager/Swift/*.swift", + "osx": { + "frameworks": "SystemConfiguration" + }, + "ios": { + "frameworks": "SystemConfiguration" + }, + "tvos": { + "frameworks": "SystemConfiguration" + } + }, + { + "name": "CloudCore", + "dependencies": { + "YapDatabase/Standard-ObjC/Extensions/CloudCore": [ + + ] + }, + "source_files": "YapDatabase/Extensions/CloudCore/Swift/*.swift" + } + ] + } + ] + }, + { + "name": "Standard+ModuleMap", + "osx": { + "module_map": "Framework/Mac/module.modulemap", + "frameworks": "SystemConfiguration" + }, + "ios": { + "module_map": "Framework/iOS/module.modulemap", + "frameworks": "SystemConfiguration" + }, + "tvos": { + "module_map": "Framework/tvOS/module.modulemap", + "frameworks": "SystemConfiguration" + }, + "watchos": { + "module_map": "Framework/watchOS/module.modulemap" + }, + "xcconfig": { + "OTHER_CFLAGS": "$(inherited) -DYAP_STANDARD_SQLITE" + }, + "libraries": "sqlite3", + "source_files": [ + "YapDatabase/*.{h,m,mm,c}", + "YapDatabase/{Internal,Utilities}/*.{h,m,mm,c}", + "YapDatabase/Extensions/**/*.{h,m,mm,c}" + ], + "private_header_files": [ + "YapDatabase/Internal/*.h", + "YapDatabase/Extensions/**/Internal/*.h" + ] + }, + { + "name": "SQLCipher-ObjC", "subspecs": [ { "name": "Core", @@ -178,9 +374,6 @@ "dependencies": { "SQLCipher": [ ">= 3.4.0" - ], - "CocoaLumberjack": [ - ] }, "source_files": [ @@ -188,15 +381,12 @@ "YapDatabase/{Internal,Utilities}/*.{h,m,mm,c}", "YapDatabase/Extensions/Protocol/**/*.{h,m,mm,c}" ], - "private_header_files": [ - "YapDatabase/Internal/*.h", - "YapDatabase/Extensions/Protocol/Internal/*.h" - ] + "private_header_files": "YapDatabase/Internal/*.h" }, { "name": "Extensions", "dependencies": { - "YapDatabase/SQLCipher/Core": [ + "YapDatabase/SQLCipher-ObjC/Core": [ ] }, @@ -209,7 +399,7 @@ { "name": "AutoView", "dependencies": { - "YapDatabase/SQLCipher/Extensions/View": [ + "YapDatabase/SQLCipher-ObjC/Extensions/View": [ ] }, @@ -219,7 +409,7 @@ { "name": "ManualView", "dependencies": { - "YapDatabase/SQLCipher/Extensions/View": [ + "YapDatabase/SQLCipher-ObjC/Extensions/View": [ ] }, @@ -254,7 +444,7 @@ { "name": "FilteredView", "dependencies": { - "YapDatabase/SQLCipher/Extensions/View": [ + "YapDatabase/SQLCipher-ObjC/Extensions/View": [ ] }, @@ -264,10 +454,10 @@ { "name": "SearchResultsView", "dependencies": { - "YapDatabase/SQLCipher/Extensions/AutoView": [ + "YapDatabase/SQLCipher-ObjC/Extensions/AutoView": [ ], - "YapDatabase/SQLCipher/Extensions/FullTextSearch": [ + "YapDatabase/SQLCipher-ObjC/Extensions/FullTextSearch": [ ] }, @@ -284,12 +474,15 @@ "source_files": "YapDatabase/Extensions/RTreeIndex/**/*.{h,m,mm,c}", "private_header_files": "YapDatabase/Extensions/RTreeIndex/Internal/*.h" }, - { - "name": "ConnectionProxy", - "source_files": "YapDatabase/Extensions/ConnectionProxy/**/*.{h,m,mm,c}" - }, { "name": "ActionManager", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/AutoView": [ + + ] + }, + "source_files": "YapDatabase/Extensions/ActionManager/**/*.{h,m,mm,c}", + "private_header_files": "YapDatabase/Extensions/ActionManager/Internal/*.h", "osx": { "frameworks": "SystemConfiguration" }, @@ -298,23 +491,231 @@ }, "tvos": { "frameworks": "SystemConfiguration" + } + }, + { + "name": "CloudCore", + "source_files": "YapDatabase/Extensions/CloudCore/**/*.{h,m,mm,c}" + } + ] + } + ] + }, + { + "name": "SQLCipher", + "subspecs": [ + { + "name": "Core", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Core": [ + + ] + }, + "source_files": [ + "YapDatabase/Swift/*.swift", + "YapDatabase/Extensions/Protocol/Swift/*.swift" + ] + }, + { + "name": "Extensions", + "dependencies": { + "YapDatabase/SQLCipher/Core": [ + + ] + }, + "subspecs": [ + { + "name": "View", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/View": [ + + ] }, + "source_files": "YapDatabase/Extensions/View/Swift/*.swift" + }, + { + "name": "AutoView", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/AutoView": [ + + ], + "YapDatabase/SQLCipher/Extensions/View": [ + + ] + }, + "source_files": "YapDatabase/Extensions/AutoView/Swift/*.swift" + }, + { + "name": "ManualView", "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/ManualView": [ + + ], + "YapDatabase/SQLCipher/Extensions/View": [ + + ] + }, + "source_files": "YapDatabase/Extensions/ManualView/Swift/*.swift" + }, + { + "name": "SecondaryIndex", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/SecondaryIndex": [ + + ] + }, + "source_files": "YapDatabase/Extensions/SecondaryIndex/Swift/*.swift" + }, + { + "name": "CrossProcessNotification", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/CrossProcessNotification": [ + + ] + }, + "source_files": "YapDatabase/Extensions/CrossProcessNotification/Swift/*.swift" + }, + { + "name": "Relationships", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/Relationships": [ + + ] + }, + "source_files": "YapDatabase/Extensions/Relationships/Swift/*.swift" + }, + { + "name": "FullTextSearch", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/FullTextSearch": [ + + ] + }, + "source_files": "YapDatabase/Extensions/FullTextSearch/Swift/*.swift" + }, + { + "name": "Hooks", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/Hooks": [ + + ] + }, + "source_files": "YapDatabase/Extensions/Hooks/Swift/*.swift" + }, + { + "name": "FilteredView", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/FilteredView": [ + + ], + "YapDatabase/SQLCipher/Extensions/View": [ + + ] + }, + "source_files": "YapDatabase/Extensions/FilteredView/Swift/*.swift" + }, + { + "name": "SearchResultsView", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/SearchResultsView": [ + + ], "YapDatabase/SQLCipher/Extensions/AutoView": [ + ], + "YapDatabase/SQLCipher/Extensions/FullTextSearch": [ + ] }, - "source_files": "YapDatabase/Extensions/ActionManager/**/*.{h,m,mm,c}", - "private_header_files": "YapDatabase/Extensions/ActionManager/Internal/*.h" + "source_files": "YapDatabase/Extensions/SearchResultsView/Swift/*.swift" + }, + { + "name": "CloudKit", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/CloudKit": [ + + ] + }, + "source_files": "YapDatabase/Extensions/CloudKit/Swift/*.swift" + }, + { + "name": "RTreeIndex", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/RTreeIndex": [ + + ] + }, + "source_files": "YapDatabase/Extensions/RTreeIndex/Swift/*.swift" + }, + { + "name": "ActionManager", + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/ActionManager": [ + + ], + "YapDatabase/SQLCipher/Extensions/AutoView": [ + + ] + }, + "source_files": "YapDatabase/Extensions/ActionManager/Swift/*.swift", + "osx": { + "frameworks": "SystemConfiguration" + }, + "ios": { + "frameworks": "SystemConfiguration" + }, + "tvos": { + "frameworks": "SystemConfiguration" + } }, { "name": "CloudCore", - "source_files": "YapDatabase/Extensions/CloudCore/**/*.{h,m,mm,c}", - "private_header_files": "YapDatabase/Extensions/CloudCore/Internal/*.h" + "dependencies": { + "YapDatabase/SQLCipher-ObjC/Extensions/CloudCore": [ + + ] + }, + "source_files": "YapDatabase/Extensions/CloudCore/Swift/*.swift" } ] } ] + }, + { + "name": "SQLCipher+ModuleMap", + "osx": { + "module_map": "Framework/Mac/module.modulemap", + "frameworks": "SystemConfiguration" + }, + "ios": { + "module_map": "Framework/iOS/module.modulemap", + "frameworks": "SystemConfiguration" + }, + "tvos": { + "module_map": "Framework/tvOS/module.modulemap", + "frameworks": "SystemConfiguration" + }, + "watchos": { + "module_map": "Framework/watchOS/module.modulemap" + }, + "xcconfig": { + "OTHER_CFLAGS": "$(inherited) -DSQLITE_HAS_CODEC" + }, + "dependencies": { + "SQLCipher": [ + ">= 3.4.0" + ] + }, + "source_files": [ + "YapDatabase/*.{h,m,mm,c}", + "YapDatabase/{Internal,Utilities}/*.{h,m,mm,c}", + "YapDatabase/Extensions/**/*.{h,m,mm,c}" + ], + "private_header_files": [ + "YapDatabase/Internal/*.h", + "YapDatabase/Extensions/**/Internal/*.h" + ] } - ] + ], + "swift_version": "5.0" } diff --git a/Examples/CloudKitTodo/Pods/Manifest.lock b/Examples/CloudKitTodo/Pods/Manifest.lock index 81baf85f5..e1e102ff1 100644 --- a/Examples/CloudKitTodo/Pods/Manifest.lock +++ b/Examples/CloudKitTodo/Pods/Manifest.lock @@ -1,85 +1,134 @@ PODS: - - CocoaLumberjack (3.2.1): - - CocoaLumberjack/Default (= 3.2.1) - - CocoaLumberjack/Extensions (= 3.2.1) - - CocoaLumberjack/Default (3.2.1) - - CocoaLumberjack/Extensions (3.2.1): - - CocoaLumberjack/Default + - CocoaLumberjack (3.6.1): + - CocoaLumberjack/Core (= 3.6.1) + - CocoaLumberjack/Core (3.6.1) - Reachability (3.2) - - YapDatabase (3.0.1): - - YapDatabase/Standard (= 3.0.1) - - YapDatabase/Standard (3.0.1): - - YapDatabase/Standard/Core (= 3.0.1) - - YapDatabase/Standard/Extensions (= 3.0.1) - - YapDatabase/Standard/Core (3.0.1): - - CocoaLumberjack - - YapDatabase/Standard/Extensions (3.0.1): - - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/ActionManager (= 3.0.1) - - YapDatabase/Standard/Extensions/AutoView (= 3.0.1) - - YapDatabase/Standard/Extensions/CloudCore (= 3.0.1) - - YapDatabase/Standard/Extensions/CloudKit (= 3.0.1) - - YapDatabase/Standard/Extensions/ConnectionProxy (= 3.0.1) - - YapDatabase/Standard/Extensions/CrossProcessNotification (= 3.0.1) - - YapDatabase/Standard/Extensions/FilteredView (= 3.0.1) - - YapDatabase/Standard/Extensions/FullTextSearch (= 3.0.1) - - YapDatabase/Standard/Extensions/Hooks (= 3.0.1) - - YapDatabase/Standard/Extensions/ManualView (= 3.0.1) - - YapDatabase/Standard/Extensions/Relationships (= 3.0.1) - - YapDatabase/Standard/Extensions/RTreeIndex (= 3.0.1) - - YapDatabase/Standard/Extensions/SearchResultsView (= 3.0.1) - - YapDatabase/Standard/Extensions/SecondaryIndex (= 3.0.1) - - YapDatabase/Standard/Extensions/View (= 3.0.1) - - YapDatabase/Standard/Extensions/ActionManager (3.0.1): + - YapDatabase (4.0): + - YapDatabase/Standard (= 4.0) + - YapDatabase/Standard (4.0): + - YapDatabase/Standard/Core (= 4.0) + - YapDatabase/Standard/Extensions (= 4.0) + - YapDatabase/Standard-ObjC/Core (4.0) + - YapDatabase/Standard-ObjC/Extensions/ActionManager (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/AutoView + - YapDatabase/Standard-ObjC/Extensions/AutoView (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/View + - YapDatabase/Standard-ObjC/Extensions/CloudCore (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/CloudKit (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/CrossProcessNotification (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/FilteredView (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/View + - YapDatabase/Standard-ObjC/Extensions/FullTextSearch (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/Hooks (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/ManualView (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/View + - YapDatabase/Standard-ObjC/Extensions/Relationships (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/RTreeIndex (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/SearchResultsView (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/AutoView + - YapDatabase/Standard-ObjC/Extensions/FullTextSearch + - YapDatabase/Standard-ObjC/Extensions/SecondaryIndex (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard-ObjC/Extensions/View (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard/Core (4.0): + - YapDatabase/Standard-ObjC/Core + - YapDatabase/Standard/Extensions (4.0): + - YapDatabase/Standard/Core + - YapDatabase/Standard/Extensions/ActionManager (= 4.0) + - YapDatabase/Standard/Extensions/AutoView (= 4.0) + - YapDatabase/Standard/Extensions/CloudCore (= 4.0) + - YapDatabase/Standard/Extensions/CloudKit (= 4.0) + - YapDatabase/Standard/Extensions/CrossProcessNotification (= 4.0) + - YapDatabase/Standard/Extensions/FilteredView (= 4.0) + - YapDatabase/Standard/Extensions/FullTextSearch (= 4.0) + - YapDatabase/Standard/Extensions/Hooks (= 4.0) + - YapDatabase/Standard/Extensions/ManualView (= 4.0) + - YapDatabase/Standard/Extensions/Relationships (= 4.0) + - YapDatabase/Standard/Extensions/RTreeIndex (= 4.0) + - YapDatabase/Standard/Extensions/SearchResultsView (= 4.0) + - YapDatabase/Standard/Extensions/SecondaryIndex (= 4.0) + - YapDatabase/Standard/Extensions/View (= 4.0) + - YapDatabase/Standard/Extensions/ActionManager (4.0): + - YapDatabase/Standard-ObjC/Extensions/ActionManager - YapDatabase/Standard/Core - YapDatabase/Standard/Extensions/AutoView - - YapDatabase/Standard/Extensions/AutoView (3.0.1): + - YapDatabase/Standard/Extensions/AutoView (4.0): + - YapDatabase/Standard-ObjC/Extensions/AutoView - YapDatabase/Standard/Core - YapDatabase/Standard/Extensions/View - - YapDatabase/Standard/Extensions/CloudCore (3.0.1): - - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/CloudKit (3.0.1): + - YapDatabase/Standard/Extensions/CloudCore (4.0): + - YapDatabase/Standard-ObjC/Extensions/CloudCore - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/ConnectionProxy (3.0.1): + - YapDatabase/Standard/Extensions/CloudKit (4.0): + - YapDatabase/Standard-ObjC/Extensions/CloudKit - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/CrossProcessNotification (3.0.1): + - YapDatabase/Standard/Extensions/CrossProcessNotification (4.0): + - YapDatabase/Standard-ObjC/Extensions/CrossProcessNotification - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/FilteredView (3.0.1): + - YapDatabase/Standard/Extensions/FilteredView (4.0): + - YapDatabase/Standard-ObjC/Extensions/FilteredView - YapDatabase/Standard/Core - YapDatabase/Standard/Extensions/View - - YapDatabase/Standard/Extensions/FullTextSearch (3.0.1): + - YapDatabase/Standard/Extensions/FullTextSearch (4.0): + - YapDatabase/Standard-ObjC/Extensions/FullTextSearch - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/Hooks (3.0.1): + - YapDatabase/Standard/Extensions/Hooks (4.0): + - YapDatabase/Standard-ObjC/Extensions/Hooks - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/ManualView (3.0.1): + - YapDatabase/Standard/Extensions/ManualView (4.0): + - YapDatabase/Standard-ObjC/Extensions/ManualView - YapDatabase/Standard/Core - YapDatabase/Standard/Extensions/View - - YapDatabase/Standard/Extensions/Relationships (3.0.1): + - YapDatabase/Standard/Extensions/Relationships (4.0): + - YapDatabase/Standard-ObjC/Extensions/Relationships - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/RTreeIndex (3.0.1): + - YapDatabase/Standard/Extensions/RTreeIndex (4.0): + - YapDatabase/Standard-ObjC/Extensions/RTreeIndex - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/SearchResultsView (3.0.1): + - YapDatabase/Standard/Extensions/SearchResultsView (4.0): + - YapDatabase/Standard-ObjC/Extensions/SearchResultsView - YapDatabase/Standard/Core - YapDatabase/Standard/Extensions/AutoView - YapDatabase/Standard/Extensions/FullTextSearch - - YapDatabase/Standard/Extensions/SecondaryIndex (3.0.1): + - YapDatabase/Standard/Extensions/SecondaryIndex (4.0): + - YapDatabase/Standard-ObjC/Extensions/SecondaryIndex - YapDatabase/Standard/Core - - YapDatabase/Standard/Extensions/View (3.0.1): + - YapDatabase/Standard/Extensions/View (4.0): + - YapDatabase/Standard-ObjC/Extensions/View - YapDatabase/Standard/Core DEPENDENCIES: + - CocoaLumberjack - Reachability (= 3.2) - YapDatabase (from `../../`) +SPEC REPOS: + trunk: + - CocoaLumberjack + - Reachability + EXTERNAL SOURCES: YapDatabase: - :path: ../../ + :path: "../../" SPEC CHECKSUMS: - CocoaLumberjack: 2800c03334042fe80589423c8d80e582dcaec482 + CocoaLumberjack: b17ae15142558d08bbacf69775fa10c4abbebcc9 Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 - YapDatabase: 69ca88a2dfee305fde4412cf670c76f75aa7ccd0 + YapDatabase: 260b1b0b3e6ae6775383edc923e19813586615eb -PODFILE CHECKSUM: 39de1b3e71c8e5fd8a2fd5205a886ee12a55be4a +PODFILE CHECKSUM: 1c326ecdc28e0e570ea1384ed0b69727effe8a00 -COCOAPODS: 1.3.1 +COCOAPODS: 1.8.4 diff --git a/Examples/CloudKitTodo/Pods/Pods.xcodeproj/project.pbxproj b/Examples/CloudKitTodo/Pods/Pods.xcodeproj/project.pbxproj index fd2fdd823..f8eea81c1 100644 --- a/Examples/CloudKitTodo/Pods/Pods.xcodeproj/project.pbxproj +++ b/Examples/CloudKitTodo/Pods/Pods.xcodeproj/project.pbxproj @@ -7,2298 +7,2594 @@ objects = { /* Begin PBXBuildFile section */ - 001DE700AFB7146E4D14809FEFCD9242 /* YapDatabaseCloudCoreConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C83CDCD12481FBB37436BB54068CFA /* YapDatabaseCloudCoreConnection.m */; }; - 00E803CC0BD2C7254C5745E754F96975 /* YapDatabaseRTreeIndexTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 353DE5F5BA385A9F47E6B37309FCC7BA /* YapDatabaseRTreeIndexTransaction.m */; }; - 02A7618FDC32959B08E528723A642B74 /* YapDatabaseActionManagerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 838A0DBB7BD1F4EB016416D93B5E74F6 /* YapDatabaseActionManagerPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 02B10AB4B17F0F5381E37FE60B386057 /* YapDatabaseExtensionPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 97EBC4D379A02101DF331E79ED3A79BC /* YapDatabaseExtensionPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 02E59C4C9ECE5F968C43DF660386AFEA /* YapDatabaseCloudKit.m in Sources */ = {isa = PBXBuildFile; fileRef = A6C18C3D232E91776BCF8661263EEB5F /* YapDatabaseCloudKit.m */; }; - 037C30EC7E564054C70C53AE2D904EC3 /* YapDatabaseTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = C91D009781286B9DC7C795B7E9A91741 /* YapDatabaseTransaction.m */; }; - 044DF87348BA19B813959CA53289DF2B /* YDBCKChangeRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 92533212BE8155942338841BB18835EA /* YDBCKChangeRecord.m */; }; - 076BFCE09763B3C20B1C30D9513CC9D0 /* YapDatabaseConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 914F71F83B5BA4C3E544653E8B6CD7F7 /* YapDatabaseConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 07BA2EC686EE3736A724321591ED2E52 /* YapProxyObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A45CD961CCE233D329784D970CF131A /* YapProxyObjectPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 099108ABA56DBB60449DA942B67C08B4 /* YDBCKMappingTableInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 70E7547FD0039324F0919C75A74FCDC3 /* YDBCKMappingTableInfo.m */; }; - 0A3CE8AA00DD86E7F6D10684E6ABD3E4 /* YapDatabaseFullTextSearchSnippetOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 62F1F1D656AD496B8C8996705913D013 /* YapDatabaseFullTextSearchSnippetOptions.m */; }; - 0AFFFDD9844C00487D78B1F05C1B6813 /* YapDatabaseFilteredViewTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = DDBF5136D462BB585763B71BDA71C37C /* YapDatabaseFilteredViewTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B250596E816C11461A1C6E71A14D4F3 /* YapDatabaseCloudCoreTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = ECC4E523B6103B2C669415A82A6CC129 /* YapDatabaseCloudCoreTransaction.m */; }; - 0DD089E022CA41291E440E3710A19D98 /* YapDatabaseCloudCorePipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = 1898AC07F198B13741B55E8ADA57618C /* YapDatabaseCloudCorePipeline.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 10811A0C5774FFFBF1B763FA38A4BF7C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97D7E984AA2ED06FC886024282B47207 /* Foundation.framework */; }; - 1110A8C6E62134FA5824D7C796BFA80C /* YapRowidSet.h in Headers */ = {isa = PBXBuildFile; fileRef = C0F86BAC3DC001ED3BF80852B4412741 /* YapRowidSet.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1189D8C6CB46D0FAADDF509C7DC3F082 /* CocoaLumberjack.h in Headers */ = {isa = PBXBuildFile; fileRef = 2470CA52B299D3C2D3C743930F1FC2F4 /* CocoaLumberjack.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 11FA14FA29BCB03205C860AC8404FD81 /* YapBidirectionalCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B8C1DDCD0D96A1A5BD42796375F8BD14 /* YapBidirectionalCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 123FF43F3CEB9A3EFEE47DF6235A2EBB /* YapDatabaseSearchResultsViewTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CCDDFADB8E838B0FEDE68DF66DB0637 /* YapDatabaseSearchResultsViewTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 134DBD60B3E8D76CD3DE39B70FF1358C /* YapDatabaseExtensionConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 48AECECBD70C182E9AAA0C4BD0DBE747 /* YapDatabaseExtensionConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1362ACD1F0C5F810496D1CB754770E4D /* Reachability-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C6A6097DC701BD67D8BDAAA8713C4FD8 /* Reachability-dummy.m */; }; - 15ACD4668DC7D22E9116E7DCFAE7DCF2 /* YapDatabaseRelationshipTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4662158BF3C128CA0AC0978E7A7F61DA /* YapDatabaseRelationshipTransaction.m */; }; - 18B6AF054CBC6BDBE1FF57BCCF6F2E2A /* YapDatabaseViewPageMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 4599A5ED2DB00A78542F6FA88440F28D /* YapDatabaseViewPageMetadata.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1952C1EC9BD427FBB3B8071F7A5CF569 /* YapDatabaseViewTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 09BE3033C8E5EBE013DAA91256F31233 /* YapDatabaseViewTypes.m */; }; - 196F1670838EA8E5E4BC29EB51EAE839 /* YapDirtyDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = A45A07D2ED8D2BB7C5420466115D0E72 /* YapDirtyDictionary.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1991CC81AC9EDE528A40D20956D50CC7 /* YDBCKMergeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 40ABE37A0863C13DF2288C0E457DC223 /* YDBCKMergeInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1A0D31E44B374254F78DC7A1D3F25DD1 /* YapDatabaseRTreeIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = C155009B4FE2EC548CCCBD7139533759 /* YapDatabaseRTreeIndex.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1A5C64018D55119AAAA52FD80502767B /* YapDatabaseFullTextSearchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = FB3ACB6420AD45F19A073030CAC45126 /* YapDatabaseFullTextSearchHandler.m */; }; - 1A5FBDF78FA01F33116D886A962A8032 /* YapDatabaseViewMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = C08BDA952C8D6D765C7EED4E3B72E93D /* YapDatabaseViewMappings.m */; }; - 1AEDF8F603224F9AC05904D381731FA9 /* YapReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 773E939C82314587EBE788E1609BA93F /* YapReachability.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1C0673E5BC90F97985F96398D388912A /* YapDatabaseTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 14DB86D1FB028086140E96723536E3C2 /* YapDatabaseTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1C3549249CBE05CFD7CDDD3879450E9C /* YapDatabaseActionManagerConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A1D5E7BD7D100FBC5BB13A3BAC6CAAE /* YapDatabaseActionManagerConnection.m */; }; - 1C787C1414F17C80707C4DDC6F373AE1 /* YapDatabaseFullTextSearchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D05F0A5B53C105BAFB0564E061275F /* YapDatabaseFullTextSearchHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1CD3C33E7AAE81802C42909758CF47A5 /* YapDatabaseSearchQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = AE54598B25428D54B746B8081F060CB4 /* YapDatabaseSearchQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1CF70A18EC19BA86BA7EC3B720E1748E /* YapDatabaseRelationshipNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 177F8DEAD231C4854DF04693089CEB2A /* YapDatabaseRelationshipNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 20266D8E27F0E78A74E4F2C005E33D89 /* YapMemoryTable.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D37732F9BC1CECE559C89CDD71B945 /* YapMemoryTable.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 20BB3DBE38EA6621A00B7E96E55751D4 /* YapDatabaseCrossProcessNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B968CDB63FEE3CCA98D10DF0376DA25 /* YapDatabaseCrossProcessNotification.m */; }; - 211EB7F5EFF96EE3EBFECC374F195D7B /* YapDatabaseViewRangeOptionsPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = B0B310753BE2B56AFE448A1B05F9DF29 /* YapDatabaseViewRangeOptionsPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 21AD8346794EE18BA1D212E215A27674 /* YapDatabaseRelationshipConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CF942998AE2693B6058A66B11A49DCD /* YapDatabaseRelationshipConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 222E54D1CDE3159AF7AED1BF6FC65C32 /* YapDatabaseCloudCorePipelinePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = EB914E09A11AE4737B9B56212EC55895 /* YapDatabaseCloudCorePipelinePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 228B6BBBCB106C29E16BBBBA4CC7A326 /* YapDatabaseCloudCoreTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 97F8D507EBA8C51D4453213EF1C6255B /* YapDatabaseCloudCoreTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 246F324F191688B9EC06AEA374758D2D /* DDLegacyMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = C8DBB7D8EA45538B20B417A0590C7F2B /* DDLegacyMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 248AE1C080EFFF91CBAA57A92B90FFCF /* YapDatabaseConnectionProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = B6722CEBF31F82169FC105CD147B5BBF /* YapDatabaseConnectionProxy.m */; }; - 24DE34BE82A486068AD589D589FA395E /* YapDatabaseCloudKitOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = C04CA457336DAECB164F3B4B9FB386A5 /* YapDatabaseCloudKitOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 25256291DAF2D216650676A38EDF7CE2 /* YapDatabaseQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E85BA7EC10E6F4B54C6FEABDFAD839 /* YapDatabaseQuery.m */; }; - 2578F6D5F15968206EC5A5DEB08D9CA5 /* YapDatabaseCloudCoreOperationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 87327DE811DCFED5C2754E29C62E8A74 /* YapDatabaseCloudCoreOperationPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 266A0B42393031EA40E1144030D52D1D /* YapDatabaseAutoView.m in Sources */ = {isa = PBXBuildFile; fileRef = 132C7159C99BB07A4CB992D99449782A /* YapDatabaseAutoView.m */; }; - 2678E7C4E22A76E4805974C9D71C953F /* YDBCKRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = F90F7E7C54EC769010F335B8C54550DE /* YDBCKRecord.m */; }; - 26FCA38EB6C9922FF5AEFB7E1CD75BA5 /* YapDatabaseFullTextSearchSnippetOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A418EC203C21FF9B446C3BB3BF3C4B2 /* YapDatabaseFullTextSearchSnippetOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 27E77B6F6E74E518742AB42595799F58 /* YapDatabaseViewConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = C815AECDCCF37369E07137618B1E6AB9 /* YapDatabaseViewConnection.m */; }; - 2897A28F743CD97494E40737C13B23C7 /* YapDatabaseExtensionTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 88AB9E6E95ED9752413FF6041D48A6A1 /* YapDatabaseExtensionTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2904A52DDABC05D349309C8831C37D4C /* YapDatabaseViewOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = A5D528C0E6946A80F3C7CBDC619CE11D /* YapDatabaseViewOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2AFFCFB22F1727114EA2523A3BAB620F /* YapDatabaseCloudCoreOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D7BA6D1156ABC5D219108E1E5244AF29 /* YapDatabaseCloudCoreOperation.m */; }; - 2CBE8E54EF9E7E37697DEAF45A7C36AE /* YapDatabaseViewRangeOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DD85112B0511D0D005F8D298906B47E /* YapDatabaseViewRangeOptions.m */; }; - 2CD4F9B309F4DDA82DD35DB3E3375277 /* DDOSLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = BA5C9299B9550A3054799E3F8D423CB6 /* DDOSLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2DEF1C8A8E4216D431D37870610542D7 /* YapDatabaseViewRangeOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 52A9A014F7DE085121BB80CC12DED0FD /* YapDatabaseViewRangeOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3048B421A2FCF7E94442F206A8940CDF /* YDBCKChangeSet.h in Headers */ = {isa = PBXBuildFile; fileRef = EA9DD82C868B5BCECA185C8F9F2DC5D8 /* YDBCKChangeSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 322247B6BE0B2242D5B4160F3DF2AC70 /* YapDatabaseViewChange.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA91240EAEE0EE0835C05691579FF48 /* YapDatabaseViewChange.m */; }; - 323343CE61EBCFD5976E5500D3AF92E3 /* YapProxyObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 608A14B1661D26815E138126F7594181 /* YapProxyObject.m */; }; - 3441D7B7F5F9A88883353237766D9FAD /* DDFileLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 27474764F8A683C020EFF9CE3F7D39D2 /* DDFileLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 364847DE22533D896FDAE2FDD18A167E /* YapDatabaseSearchResultsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E3B7603A968773681855321B5058078 /* YapDatabaseSearchResultsView.m */; }; - 37586552FB784D15AAD00BE2469348DF /* YapDatabaseRelationshipOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 498C35E893D006CC49E9F8146924B1C7 /* YapDatabaseRelationshipOptions.m */; }; - 377F8D664706BBAD590AF4B128596B0C /* DDOSLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = F9AE84702E97561D0344E97A9CA41733 /* DDOSLogger.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 37FF0439D532645659FAE1A5D7A966C8 /* YapDatabaseViewTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E6E30529CB14C2CE9434F496C56D06D /* YapDatabaseViewTransaction.m */; }; - 382246AE81E7B276C654D46BFB079F79 /* YapReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = A132DBDC8C60878CE61E263614EC2B4B /* YapReachability.m */; }; - 38429612AFDFAB5B31C02D46018656C9 /* DDFileLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A613D5EC3696611D99F1F34E102C334 /* DDFileLogger.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3A1B0AC9ADD5956A66AB2A8DCE4DB004 /* YapNull.h in Headers */ = {isa = PBXBuildFile; fileRef = 55A8B18879CDDFBE84A0605B1E04C685 /* YapNull.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3B93C1185C12D86BF5139A84F8E9BADB /* YapDatabaseCloudCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4E6E66A15DCF40C39265C9D94E1087 /* YapDatabaseCloudCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3BC57A042E070BB1C06D599D562EC0BE /* YapDatabaseManualView.m in Sources */ = {isa = PBXBuildFile; fileRef = AB3A4565A955E4CADBA099FB96933705 /* YapDatabaseManualView.m */; }; - 3BE590C43F6CF35CDF07D6A96A161C0E /* DDMultiFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 018B403D669DFADB13F22248AEBE9858 /* DDMultiFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3DF2FCCCEE7F2238F4EEE7C0B0E50FFD /* YapTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = 2770FCE96C4071EF5349CBDDC96DEB60 /* YapTouch.m */; }; - 3E654B3BE5F1795BAE11574AAE898EB3 /* YapDatabaseSecondaryIndexConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E6714012CCBF9DF13600AC381E537E2 /* YapDatabaseSecondaryIndexConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4161BDB36C0EBDA1E4A41121902530E4 /* YapDatabaseFilteredViewConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 36672A70772176268A93A24574E7D73A /* YapDatabaseFilteredViewConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4214460A9A8DB8097D339BDF27346C08 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2AF9EC704AAD470CAC8FE0D05A5430B /* SystemConfiguration.framework */; }; - 461049FFF98CDD86536AB292004EBFE2 /* YapDatabaseSecondaryIndexPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = E60E0092D603C3647CFE278761057B8D /* YapDatabaseSecondaryIndexPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 468D6CBEB3D8271D261DE57FAAC11B1C /* YapManyToManyCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 17E4570CBC80142F7CB25000E4440F64 /* YapManyToManyCache.m */; }; - 46C9BC50080438192E0260F4B3F7C395 /* YapDatabaseSecondaryIndexHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = ECAE056A9B3BB47C3C94A05458615458 /* YapDatabaseSecondaryIndexHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 488391F71FFEC819796C437A754BCC90 /* DDASLLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D3BA25B6B4F24013B5759D8E8BB288F /* DDASLLogger.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 48F036E009EBF6827C3B8768973B0581 /* YapDatabaseSecondaryIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = E0F6EDE99C6037AE365DFAEF284366C9 /* YapDatabaseSecondaryIndex.m */; }; - 49F5743C4F394A644A2DDBCA9A92BFE3 /* YapManyToManyCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CB4F7103E21630DA4D19E73371C8859 /* YapManyToManyCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4A0E56AFDE8B9BC3BEFCD394F411EEC5 /* YapDatabaseExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = CCC0CBEE9312924892EB03CFBE2692E2 /* YapDatabaseExtension.m */; }; - 4A5A26C8EC0B05FB3203AB44872D0F20 /* YapDatabaseCloudKitTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 8046B80AD8EA44E6B89607D72B01F4A6 /* YapDatabaseCloudKitTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4A914B6C8C14E72D25C86C9C47D4097A /* YapDatabaseAutoViewConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B58ACAA1D91A577B32E8C52EC83BED8 /* YapDatabaseAutoViewConnection.m */; }; - 4E1F0FDB2D0DDD0B4E932C4B3C62B900 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97D7E984AA2ED06FC886024282B47207 /* Foundation.framework */; }; - 4F21DFB9909C8A0C5AE84B79E75DFB51 /* YapDatabaseCloudCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FAC1B6CA944FA3E417C412ED5A8657D /* YapDatabaseCloudCore.m */; }; - 4FE8C7243F1B5DA38AC21A05579A7227 /* YapDatabaseSecondaryIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 06783BEC6E1B58BA997DCBE57ACA950A /* YapDatabaseSecondaryIndex.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4FEFF1501C7B9B24DDF29467E86EFB9B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97D7E984AA2ED06FC886024282B47207 /* Foundation.framework */; }; - 53D351450078A1CADD4A6B86A1479BD6 /* YapDatabaseCloudCorePipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ACA8883846880AD84B44DC6AD2BDC1B /* YapDatabaseCloudCorePipeline.m */; }; - 542F6C742A8244EA441E75E0DC4E29A6 /* YapDatabaseFullTextSearchConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B28C665A9FCDB9C86B48640F410D4FC /* YapDatabaseFullTextSearchConnection.m */; }; - 55359F5DE0FAA9C383FECF4EE275DA6F /* DDContextFilterLogFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B07C5EBFD06C3246E6DAB903361E184 /* DDContextFilterLogFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 564A5E1E6162061133C313CB734EE1C8 /* YapDatabaseFullTextSearchConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 27C136600EC56791007EAA5F8D02C9C2 /* YapDatabaseFullTextSearchConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5BEC123B45C4C631AC59736D1BFF85B6 /* YapDatabaseSecondaryIndexSetup.h in Headers */ = {isa = PBXBuildFile; fileRef = 2310CEA0EDD58D4A0F8D223CE886EB4C /* YapDatabaseSecondaryIndexSetup.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 609480D8C7921EBC8B35F8DCE497213E /* YapDatabaseHooksPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B9062B910594FA040BC06B7D48901E5 /* YapDatabaseHooksPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 61534BC90D0897F16371A052748326F9 /* YapDatabaseHooks.h in Headers */ = {isa = PBXBuildFile; fileRef = 763E748E131FB51F36C52604EF847386 /* YapDatabaseHooks.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61A573D59D662C4BE5F5C9762E9F3FA0 /* YapMutationStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 32026F5069D840DB5C0879D93B5FAC7A /* YapMutationStack.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 631EDC2660FB87824677C3B321280C0E /* YDBCKAttachRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 33422A84EE4D2CE044A15ED7F715522E /* YDBCKAttachRequest.m */; }; - 6325EB484119CE481E65F451394BDB6F /* YapDatabaseCrossProcessNotificationTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = C3A25B076ACDFA55284F5D1C4EE21156 /* YapDatabaseCrossProcessNotificationTransaction.m */; }; - 63536F1AB99E71A7953533E8162C7756 /* YapDatabaseAutoView.h in Headers */ = {isa = PBXBuildFile; fileRef = CAD8C578BD605019E5C6E77EDE83019C /* YapDatabaseAutoView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 65303D597D32D1D19492C884C479E348 /* YapDatabaseManualViewTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 12D197B633BAB118099F780187113D39 /* YapDatabaseManualViewTransaction.m */; }; - 65542B942EE6D31EA35D5873A13E8228 /* YapDatabaseSecondaryIndexTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BA0B0AA274373FDEA00F0E73442CE54 /* YapDatabaseSecondaryIndexTransaction.m */; }; - 6627CCBF89BB77B587344EC935DD9016 /* YapDatabaseSecondaryIndexTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 28085C6FD2F83EF7477934B5EA62C828 /* YapDatabaseSecondaryIndexTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 665C33086D0F682574663B916481BB99 /* YDBCKChangeQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 685B3E6E2CDFA4F3144637A093DEF9C0 /* YDBCKChangeQueue.m */; }; - 6742454BB3CA67CBF9B36CF9AFE42752 /* YapDatabaseActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B3AC82C0043723F399823A7A8A21C179 /* YapDatabaseActionManager.m */; }; - 67C86F889849F434746A0526C9B51D3E /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = AF2C748E02F52038EACCF15BE23CBC01 /* Reachability.m */; }; - 69AD7CE13CF9C4C5FFBD84EB566CDF76 /* YapWhitelistBlacklist.h in Headers */ = {isa = PBXBuildFile; fileRef = ECD70E0755E5518212E6B2EE1612847D /* YapWhitelistBlacklist.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69C732FC64D4F0585097E1AFF69427F1 /* YapDatabaseFullTextSearch.h in Headers */ = {isa = PBXBuildFile; fileRef = B4D7EE3AFBD6255D3CEAAE2C1424E98A /* YapDatabaseFullTextSearch.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69D564F2A66E363D2F6F5A2867F01739 /* YapDatabaseCloudCoreOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 22E51F2F52F50340FCAAEEEB652F26C3 /* YapDatabaseCloudCoreOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69E51870174116C671027DE3E05C44A0 /* YapDatabaseCrossProcessNotificationConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 44D46B84D3215341069BAAB771FAF302 /* YapDatabaseCrossProcessNotificationConnection.m */; }; - 6BD18584EB6E0CABECE61916B9EFC3F1 /* YapProxyObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 6413EE0BECB702EB33455C4AE92CCAAD /* YapProxyObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6DC49A741DBE4BB537AF1D93ED499E27 /* YapDatabaseStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = 446676AF3848F63B04882F131FC24218 /* YapDatabaseStatement.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 6DD923038240E90736A907BD796FB633 /* YapDatabaseView.h in Headers */ = {isa = PBXBuildFile; fileRef = 63243C53951E88E63DF057974D8435A0 /* YapDatabaseView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6E73BC9C74A2517B950E4DA11B5A2803 /* YapDatabaseRTreeIndexSetup.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A23F6916CA05512A5C70FE31BE8254 /* YapDatabaseRTreeIndexSetup.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6ED13C2E5B780DBAA9F730A38E3E67F7 /* YapDatabaseRelationshipEdge.m in Sources */ = {isa = PBXBuildFile; fileRef = C81B4F738C47C80F14CAAD7B3694CFFE /* YapDatabaseRelationshipEdge.m */; }; - 6FC5271B6386F3D88116B75FA751EC93 /* YapDatabaseSearchResultsViewTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A9AF0ED7788C8A5007E75F94678C94C /* YapDatabaseSearchResultsViewTransaction.m */; }; - 70B92CFC3F0A7BDF69006A3A42D14FB1 /* YapDatabaseExtensionConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = F34DBAB6F28EE9C9DFD33103B1DA5BA7 /* YapDatabaseExtensionConnection.m */; }; - 70E6622C6FB106BB926112D608C17994 /* YapBidirectionalCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CD892BF48C63853FD6A751D5B94C601F /* YapBidirectionalCache.m */; }; - 724BFA77FA82663F85CEABA7A443D0F2 /* YapDatabaseCloudCoreGraph.m in Sources */ = {isa = PBXBuildFile; fileRef = AEAA4E94F260E11FA58139BE81650A94 /* YapDatabaseCloudCoreGraph.m */; }; - 72F9F982B5D17DF1177FA196C4CC8153 /* YapMurmurHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 07053D894ACF7D4F9FD0B01E259DC37F /* YapMurmurHash.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7340E57FEC097872BEF9F3A0C91F2667 /* YapDatabaseHooksConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = D258065D2A4D21CA9864F046761241EE /* YapDatabaseHooksConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 742331B18E237BC0872FF0F21494F79B /* DDAbstractDatabaseLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 88254EAEC6B013F26CDA8C87A72ECF53 /* DDAbstractDatabaseLogger.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 75095D5A01FDADCA229F65EC72711596 /* YapDatabaseExtensionTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 723C94106B1456063AB39E1D3EAFE14E /* YapDatabaseExtensionTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7656EEDE8CC7F0D2E40A026874A4A08F /* YapDatabaseCrossProcessNotificationConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = FCBAD08BE3395A7BABD335418754C8BE /* YapDatabaseCrossProcessNotificationConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7664EAA8593D48ADE00AE751F5BC8A8A /* YapDatabaseCloudCoreGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C8824C12B080CA5D6D3539FD638E2CA /* YapDatabaseCloudCoreGraph.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 767A7E255A89A4BAFC49814322F6FC39 /* DDContextFilterLogFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 03BBF770B921DF03CA30F286D22A46D1 /* DDContextFilterLogFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 78412BEB2246EF4D653E767A53C3D6BC /* YapDatabaseView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3317ECC9C5EC16D8BD251B5EEE2C5195 /* YapDatabaseView.m */; }; - 786EF154DA73B91338C9E6966F4581DC /* YapDatabasePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EE7FCC054EA7D24BD73BA8DDAA051DA /* YapDatabasePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 7A006FBC30495E5B253B45B7723A1FF1 /* YapDatabaseFilteredViewTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = D31F7CEF62B243AEA5FC89092A767D86 /* YapDatabaseFilteredViewTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7A3270CA2E0B754AB7940D5B69578EDC /* NSDate+YapDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = CFE3FAA0E5B4C80EE4FB4B5088443AEB /* NSDate+YapDatabase.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 7CFF6B55AB9FF3F15770AC43445E11DB /* YapDatabaseFilteredViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3751AB8BEDF465401C5FA65B97558F2E /* YapDatabaseFilteredViewPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 7DBE872ADDF1F3264019EDB63CCCC6CF /* YapDatabaseExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F0EAAC9123BE895D7EF99B984841D76 /* YapDatabaseExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7ED187A9B7218773053797DEFB4ADA99 /* NSDate+YapDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 652F0E374DF630AB6B537636BB75F4FA /* NSDate+YapDatabase.m */; }; - 7F15A08AF7D3FA71C82F521F9148729E /* YapDatabaseSearchResultsViewConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = D45F53D30AA0DC35248B50C47CF7A2EC /* YapDatabaseSearchResultsViewConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7FE4155F4154F1AA9B80276B156FD197 /* YapDatabaseViewPage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C47E28A07C754F8FFA16D4E9719A07C /* YapDatabaseViewPage.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 800A9E5DE40F787EF2EE1E01A878CBF2 /* YapDatabaseHooksConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = AB55448A1CCA83C6137DDABA89EAF84D /* YapDatabaseHooksConnection.m */; }; - 80B5402E4611BCE14C262E11DA6C83A4 /* YapDatabaseViewPageMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = E2902E8C4561F30CCDD3738243ED1E2B /* YapDatabaseViewPageMetadata.m */; }; - 80FA430A185576115626943477262814 /* YapActionable.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E16F67514521D6C0DBD469F534B52EC /* YapActionable.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8139128D5CDDB96C7731561953CFE16E /* YapDatabaseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DBB4B1A8F00EF9BA733C71CFA9C2950 /* YapDatabaseManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 81B217E87E495C53C3DC24D5058A6253 /* YapDatabaseViewChange.h in Headers */ = {isa = PBXBuildFile; fileRef = EAF464C2A2F866087880260F1C092D5D /* YapDatabaseViewChange.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 81F55F206FE9ABAC13F900E8F2CC58B0 /* YapDatabaseConnectionState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D5274AC4960185C205C7FB5DF4B10C1 /* YapDatabaseConnectionState.m */; }; - 82492F58F613AD086C87CF983DB53C2E /* NSDictionary+YapDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 16CB3AB5FBB3BD1FFB24578B6D7DF4B2 /* NSDictionary+YapDatabase.m */; }; - 82E7F7556D68BECC62E6E4D331783F37 /* YapDatabaseSearchQueuePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F44F24488C98FFD06B5D3FD768CA6670 /* YapDatabaseSearchQueuePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 84494955C324A7BC1C3F150A6E2B870C /* DDMultiFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A475B7DA333D958CE6A08C14B382A14 /* DDMultiFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 84BCDE739393E7A89D8AB6A83C52DAED /* YapDatabaseViewMappings.h in Headers */ = {isa = PBXBuildFile; fileRef = 55A1FBA20B6FA63D9B1FD3E81BE853D2 /* YapDatabaseViewMappings.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8646E7F0A4AEAD0CD06FEA5219CA7FE5 /* YapDatabaseRTreeIndexOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5920BA416C7DAC3B824161BE752E1B61 /* YapDatabaseRTreeIndexOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8691B614FF1B2AA34A178FF5EFB5163C /* YapDatabaseFilteredViewTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = B47C7069EECD030F28C73A69356D9EEF /* YapDatabaseFilteredViewTransaction.m */; }; - 87609C65C4AF2E3F53304C6D01F4A1CC /* YapDatabaseAutoViewConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 409A781FACEF3FF1AA7A11417FCB6604 /* YapDatabaseAutoViewConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 891CE00703150A2E203E59115AA22228 /* YapDatabaseFullTextSearchTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CB2AF9F4A2D5433AC123A9AECE36793 /* YapDatabaseFullTextSearchTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B4F083557A7CFCB7DA1071B3AFB52CC /* YapDatabaseViewChangePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = E564C82CF3E3A779C3BDBB4908FE2206 /* YapDatabaseViewChangePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8B5FD86CAC76308733E765284B04BAE2 /* YapDatabaseManualViewConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 8115461217D5CE485224F41EB1B9E74A /* YapDatabaseManualViewConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BA880328124C06183FFCD41C1FE447E /* YapMutationStack.m in Sources */ = {isa = PBXBuildFile; fileRef = 65982A6E8BA27E160C3E885E0DE670EA /* YapMutationStack.m */; }; - 8BB083D4FDC1F872F0F0246C9EB3A522 /* DDLog+LOGV.h in Headers */ = {isa = PBXBuildFile; fileRef = FD17EA6ED731B20E1A32A529788CE54E /* DDLog+LOGV.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8D46CE3A828C49CB17529F5E6083F20E /* YapDatabaseViewMappingsPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9462CE0AC413A31AAFFB216DA72C3E3B /* YapDatabaseViewMappingsPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8DFFE8151C0A4D5BD3E9459B4F49FCB5 /* YapDatabaseActionManagerTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 37EB901D407502DF5B095564166362D4 /* YapDatabaseActionManagerTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8E9B64E81738D8455A9E71A1099EF32E /* YapDatabaseActionManagerTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D57826F6CB9E2E80A059F83AD06E1C2 /* YapDatabaseActionManagerTransaction.m */; }; - 8F413B5F51A5A40B18534E480A75B8EF /* YapDatabaseSearchQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AD759CF857C53665D54776D3B9BC36D /* YapDatabaseSearchQueue.m */; }; - 8FA983A51E414D9E74477B71FA6AABA5 /* YapDatabaseCloudCorePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E686D8AF083B8C95F9A02596115551 /* YapDatabaseCloudCorePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8FF0F792D87F0F5A6F1578BEA3F04DCE /* DDASLLogCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 039697832C7577931624DB19A1E3266D /* DDASLLogCapture.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 924459A0E7DAFBDCD2C36860AED1A6FA /* YapDatabaseSecondaryIndexOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B22D3E35E0259AB4EC60FBBA51D7B6B /* YapDatabaseSecondaryIndexOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 924F8AEF2B1C94FE03078511950A5B1C /* YapDatabaseViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCE121BB9934398BE778AE785CFE02D8 /* YapDatabaseViewPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 92ECCB48289D6799DC14A0D43BD4BD33 /* YapDatabaseHooksTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = C9B1FECE9EF76633E3740BFA40B10A37 /* YapDatabaseHooksTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 939F5671D7DD13796106E8E75813836C /* YapDatabaseHooks.m in Sources */ = {isa = PBXBuildFile; fileRef = A790AF136A3E340CD500E1532B99F2CB /* YapDatabaseHooks.m */; }; - 943F4F4C7BC825B0A203F9B511FD8E40 /* YapActionItem.h in Headers */ = {isa = PBXBuildFile; fileRef = B0272FAEE90CA422C2FBCDE43ACB064E /* YapActionItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 949927EE866B02C54BD8FEFBB7DD7758 /* YapDirtyDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = E3DC4C64E093CA1EFC7EC042C717B839 /* YapDirtyDictionary.m */; }; - 94E47CA354335C2DD763FAD7C247717F /* YapDatabaseRelationship.m in Sources */ = {isa = PBXBuildFile; fileRef = 712EB4914F4EB302921DE1E41830EE55 /* YapDatabaseRelationship.m */; }; - 9505573B785699BF7175E70041928F60 /* DDLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E1F9463B4A6CB956B70915027E01FC3 /* DDLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9506F6DEC065E50C877D284B1ADD782B /* Pods-CloudKitTodo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EFC0A2D60447E1F8D9C6F93228D8F6A7 /* Pods-CloudKitTodo-dummy.m */; }; - 95C5D891AB51E21A90472391D7C1C7A9 /* CocoaLumberjack-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F365F0DB3FF18F1016A1E47F6837F543 /* CocoaLumberjack-dummy.m */; }; - 9811C3D126C1CEAB8F46A002122BE790 /* YapDatabaseConnectionConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 5420F7CC4303B69382C43E6E881106A9 /* YapDatabaseConnectionConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 984F8740D859021AA56D9E42D7093A03 /* YapCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C3A05CA5F484D89FBF0A1968DA44F7E /* YapCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 99CBE2F87E3B40881C42470E01C0A44E /* YapDatabaseHooksTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 36E2A0B2CE058779063CA3C544DD6D77 /* YapDatabaseHooksTransaction.m */; }; - 99D3592A0B6293BE3BA0127534F5D989 /* YapMemoryTable.m in Sources */ = {isa = PBXBuildFile; fileRef = DAC117F312A8ACE8476361C4FD8FB20C /* YapMemoryTable.m */; }; - 9B9697D790193E579401570CC5514853 /* YDBCKRecordInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = BC4A4CB2902E1B0AF72A5AA5F7AE2F71 /* YDBCKRecordInfo.m */; }; - 9C14958FB1A9EA81EACDED2E92261175 /* YapSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 7605D82CA34B405A20F05F4B89F915CC /* YapSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9C4D930569C6A39CA198336F950DF9F1 /* YapDatabaseRTreeIndexConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BE9D83D8230384E8A1E3123522A26DD /* YapDatabaseRTreeIndexConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9CDFD2DF36178A5C411E5AC7B4B871B9 /* YapDatabaseSecondaryIndexHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = BD63A5589B47FB74E2B2F542F12E634C /* YapDatabaseSecondaryIndexHandler.m */; }; - 9DCDCCEF415A5EBC8DF396BA2C092D9A /* YapDatabaseRelationshipEdge.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A2678DBBB07013440E498FCA0524E75 /* YapDatabaseRelationshipEdge.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E4074EE1199C4B07D01D2B7C820BA60 /* DDDispatchQueueLogFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 80400DD19103B51138062D4A0BD3DC8D /* DDDispatchQueueLogFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9EEAFB8E4255CFFD7FF0746FB504C881 /* DDLog.m in Sources */ = {isa = PBXBuildFile; fileRef = CDEE0E257A2ED445C93F097725834048 /* DDLog.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 9F79EB6B8B76195DBEE6E0CC1112C1F7 /* YapDatabaseManualViewConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = ED2605FB8E8D9F9FA673E606C679E886 /* YapDatabaseManualViewConnection.m */; }; - 9FD991C3E8D2762B9C58327C9D6A484D /* YDBCKRecordInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2409D092496ACAF6D4EF498D44F18150 /* YDBCKRecordInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A03CD8E448A231DDB5FED188F0CBB969 /* YapDatabaseRTreeIndexOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 980A8D0CDC79441C29548033630A11A6 /* YapDatabaseRTreeIndexOptions.m */; }; - A08C456DBDCC9521CB9B097E687EE0DF /* YapDatabaseViewTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 952736898C9DCE62CE381DFC309631DE /* YapDatabaseViewTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1118798B885F223E28AC2A8D0DE085E /* YapDatabaseCrossProcessNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = FD90BCA21B25EB2D53F3ED584AA1C474 /* YapDatabaseCrossProcessNotification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1AA68EBD521E0A63389ACE0A1BB6502 /* YapDatabaseViewTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 909D7AB401DD4027037B9A3CB4CF110B /* YapDatabaseViewTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1FF7AD4742961AE78120557F5330045 /* YapMurmurHash.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E0300B8EB45BD2B610C72ECACBBEA6F /* YapMurmurHash.m */; }; - A2E71607E958A68DCD085C0BCA6CF705 /* YapDatabaseRTreeIndexHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F79FBD8D361689E558F288F94F7442D9 /* YapDatabaseRTreeIndexHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A30E329B0F588E3C006D85D561693794 /* YapDatabaseLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 16A91FEB31A81C28C550BC19C09996BD /* YapDatabaseLogging.m */; }; - A358081C2FC08A6CCF2819F3DB13FD9F /* YapDatabaseConnectionConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = D605C15956CA1189155F9C5E19F41E19 /* YapDatabaseConnectionConfig.m */; }; - A42205AFAA275CB4999D61B47CF51116 /* YapDatabaseAutoViewTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 7096C0448F7BADB48F11423A50CAB768 /* YapDatabaseAutoViewTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A4B7EF6C5296F8B175118340855DD9AF /* DDASLLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = BB4FDF44FA617764EF1EBB3C8F66D030 /* DDASLLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A5BCEE8DDC4F1A0F5586372648E577D3 /* YapDatabaseConnectionProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = E032D69CD1F90FABA382EC845E0B9D28 /* YapDatabaseConnectionProxy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A90F92B6D535965E7E26E66001040594 /* DDTTYLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 53961A117B1C8CD4E4AF766DDFE01FFF /* DDTTYLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AA6721B08746E4001C554F7E74D0DF99 /* YapDatabaseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 742F74BE3C02F901FF00529A4C9EC7F3 /* YapDatabaseManager.m */; }; - AB31074807519C329DB660D78BF99609 /* YapDatabaseFilteredView.h in Headers */ = {isa = PBXBuildFile; fileRef = 78F30CC432A006055C318C380AB14B1E /* YapDatabaseFilteredView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ABB00A9FAB46BA0C44BF972CF261A764 /* DDAssertMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 2919E503739018F479CFCC44471564C7 /* DDAssertMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ACB55BC601F23C3CC5D90B87DB041BED /* DDTTYLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = F23125BC3D8770E72EFA65B25F025A24 /* DDTTYLogger.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - AD4B5CD9D73C42F0447A9E4FDE0E7E0A /* YapDatabaseCloudKitTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = C707D3FA75CA0D8230E0732C4C35C956 /* YapDatabaseCloudKitTransaction.m */; }; - AD4EB9086AAE25FCC546EF700BE1F419 /* YapDatabaseFilteredViewTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D020BC2600A51A14B28508E3EE801D0 /* YapDatabaseFilteredViewTypes.m */; }; - AF1C32105A05879AB731F477B3D2A994 /* YapTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B74B09A58D7BA0A64E66EDEA1742B56 /* YapTouch.h */; settings = {ATTRIBUTES = (Private, ); }; }; - AFD841E106EC89DDE360FE9864C4D464 /* YapDatabaseFilteredView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2230FF8D796C90EECDB107E0110C212E /* YapDatabaseFilteredView.m */; }; - B0E27BC44B9327595724EA0F7E55FB29 /* YapDatabaseSecondaryIndexSetup.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FB2E69151A31AE1A76823884089177 /* YapDatabaseSecondaryIndexSetup.m */; }; - B2665EE6186C3C0A0A94FA7F04A58280 /* YapDatabaseSearchResultsViewConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = ADB68302C095DBFE90240F77E7F0C771 /* YapDatabaseSearchResultsViewConnection.m */; }; - B349D0C2ACD3AACF02B06434F605EBCC /* YapDatabaseManualView.h in Headers */ = {isa = PBXBuildFile; fileRef = DC99B918DC2C9579A186C80D70243F90 /* YapDatabaseManualView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B477A1982560D09BA2DA423685C9E3E2 /* YapDatabase-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E363AE7AA8D42E3552ACF2B419887B91 /* YapDatabase-dummy.m */; }; - B4F9373FCEB2B64F6F2BB684B5284E90 /* YapDatabaseConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B89A6BB04F40A0812B5433D0956217 /* YapDatabaseConnection.m */; }; - B66BB64834115FA1E04341D38F1648F2 /* YapDatabaseRTreeIndexPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1630A9DC2E4923C63DF9D7089345082D /* YapDatabaseRTreeIndexPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B6713F9DA83C4B0AC9EB799B38C307E3 /* YapSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 527E3A749FBA0E8A14EE820D19782571 /* YapSet.m */; }; - B6CFE17F761178D69134806152C37EA9 /* YapDatabaseViewOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = ED50D6FB2D98AEE27BB70058956BBFBD /* YapDatabaseViewOptions.m */; }; - B6D5E1C4F9DEF031E04BF8B4422B295B /* YapDatabaseCloudKitTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 976590F620695A4354FE2EC2ABAA9F11 /* YapDatabaseCloudKitTypes.m */; }; - B75E3D1CEC28358F23B1CC81810120C6 /* YapDatabaseCloudCoreConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 3155D8E0E805EC632182B38551BF061A /* YapDatabaseCloudCoreConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B7843F1C62A8315C47636F7E0FFC5EB5 /* YapActionItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8341304A140E835C0E1BB88310732CF0 /* YapActionItem.m */; }; - B8CFF32C963A09ABF7618E5FCC247035 /* YDBCKChangeSet.m in Sources */ = {isa = PBXBuildFile; fileRef = EB8FB1CCF79532FF56B8E92BC070A98F /* YDBCKChangeSet.m */; }; - B97EA33610F852D37B11498E0F868360 /* YapCollectionKey.h in Headers */ = {isa = PBXBuildFile; fileRef = D18874164D7636663E7112DA10DE5DD2 /* YapCollectionKey.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BA31EDBEF896C4B1185D610F2B8A9760 /* YapActionItemPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D36C7B94A2DB121983D176E294D034A /* YapActionItemPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - BA489B43C21E748033E3A97C354C2C10 /* YapDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 92D888B1EBA4B1834BFE8F52B7A3DBFD /* YapDatabase.m */; }; - BB20AEEB19CAC83D849ABC3B3B418C5C /* YapDatabaseActionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 580DEAEA6B93C29BB6CEB91C380AC31E /* YapDatabaseActionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC48121CC95DDDA37D34BBDBA161353F /* YapDatabaseRelationshipEdgePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B601520D70CAA2023709A54E6F118DB /* YapDatabaseRelationshipEdgePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - BD0DEA4448724D6CF9309E46A817D4F0 /* YDBCKChangeRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 68D2D3E1B66C0A0EC49A8049A177CA4B /* YDBCKChangeRecord.h */; settings = {ATTRIBUTES = (Private, ); }; }; - BE614A1CE66E55281A934A69CED1EBED /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97D7E984AA2ED06FC886024282B47207 /* Foundation.framework */; }; - BF3B624FCD613AA9717DADC300EC2E8D /* YapDatabaseSearchResultsView.h in Headers */ = {isa = PBXBuildFile; fileRef = 5776CE9E4F53C17FC136BEECA29513F4 /* YapDatabaseSearchResultsView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BFAE04B2A5E62E9B7E4F1750AA45E554 /* YapDatabaseViewPage.mm in Sources */ = {isa = PBXBuildFile; fileRef = BE25955A57E3369178BDE2D460D0E4FA /* YapDatabaseViewPage.mm */; }; - C15C80FA52298D43B73F5AAD28372408 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2AF9EC704AAD470CAC8FE0D05A5430B /* SystemConfiguration.framework */; }; - C22BC5E75E5CC12551401E0DC979CF8F /* YapDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = F6BCB5C23D33939DDE1D6F9ECF8E0456 /* YapDatabase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C26C9B927FF927B6BA37FB677E31C7E1 /* YapDatabaseFilteredViewConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C324596EDCF7E609C42019A25E86643 /* YapDatabaseFilteredViewConnection.m */; }; - C4B7242B29A127EAFACFAA817F216F13 /* YapDatabaseRTreeIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = D43D2F3DC90BB6711A12038B1750C46C /* YapDatabaseRTreeIndex.m */; }; - C4D4C568A82FE1153F74A2362BCD2A8E /* yap_vfs_shim.m in Sources */ = {isa = PBXBuildFile; fileRef = 819AF79AC184131E8EF6A51742DEC81B /* yap_vfs_shim.m */; }; - C5C1153119EC0BEB8B971F41A000B32C /* YapDatabaseAutoViewTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = FFD7EC26BFDAB6E57B17F9EAE7629A40 /* YapDatabaseAutoViewTransaction.m */; }; - C5F12C1FA9FDAD4F4A4138E0A665B26F /* YapDatabaseCloudKitConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = B32316DC76D48D14949B2B9D8D64B2F4 /* YapDatabaseCloudKitConnection.m */; }; - C6C6DEF5064964A50AACDA8218CFEFC6 /* YapDatabaseSearchResultsViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = FE4F2A178A9D55F6B15D5D2A65183861 /* YapDatabaseSearchResultsViewPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C7CAB63B434A27B0C1125DFC257F3EB8 /* YapDatabaseOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = B85D8765A08B2193BF84806D39642098 /* YapDatabaseOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C860F87B17C67A29037EF6A7F14D8A28 /* YapDatabaseConnectionState.h in Headers */ = {isa = PBXBuildFile; fileRef = EC291365E1BA10E2E226D8F95EF63ACF /* YapDatabaseConnectionState.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C98AC29E035D17D77FFE1A9790F55858 /* YapDatabaseCrossProcessNotificationTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = EAF1E5EEC2E55FA1B06DA69B15BD649F /* YapDatabaseCrossProcessNotificationTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9C62C2E4B7AC5626A3B6EB1DF8B803D /* YapDatabaseCloudKitOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 5571364B744D8C7E76E698F18B624538 /* YapDatabaseCloudKitOptions.m */; }; - CB9DA3455256F2BC5F872E668003A9B7 /* YapDatabaseString.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C80C7AA277F70F43F1936AF8DF3312 /* YapDatabaseString.h */; settings = {ATTRIBUTES = (Private, ); }; }; - CDE2B91C982F409BF87E383AFE205748 /* YDBCKMappingTableInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D7FF45DAC35CC2848DB25EFB7953AC /* YDBCKMappingTableInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D0F6270F959013EB4411D431B651D5E4 /* YapDatabaseRelationshipTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4493DD595FC8ACD34923115E2838B650 /* YapDatabaseRelationshipTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D1C010D6969F09D3E6303B7920ED8F99 /* YapDatabaseViewConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 96F3EC5CEC6806C37579377868AA2529 /* YapDatabaseViewConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D2A48A87868645324DA4883FAE62B8B7 /* YapDatabaseRTreeIndexHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 8265A6748AA95A678811E939F791B15F /* YapDatabaseRTreeIndexHandler.m */; }; - D41E72BB2C4CD36D992F5BD7D3577D89 /* YapDatabaseRTreeIndexSetup.m in Sources */ = {isa = PBXBuildFile; fileRef = 72146F42AB9B65887C722DFFA0F9205F /* YapDatabaseRTreeIndexSetup.m */; }; - D5C0967E7DE5922AF997E972304B49FC /* YDBCKMergeInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = CDF8478968B0569DD093B7DE7E4544D9 /* YDBCKMergeInfo.m */; }; - D7630EC1A2005643EE853AC6B365BDA7 /* YDBCKRecordTableInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 05B6E1EEA70594516287DF6660B75847 /* YDBCKRecordTableInfo.m */; }; - D8D20C77359B0111BA2D01B277324D3A /* YapDatabaseRTreeIndexConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = A38CC41E998861271E94328828343747 /* YapDatabaseRTreeIndexConnection.m */; }; - D93B8DA2D80EADAADA15DAAA0DEFB505 /* YapDatabaseViewLocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 783D42AB2AFD709CAC6388031A9EB92A /* YapDatabaseViewLocator.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D973BE263E635677495A2752DB759CE6 /* YapDatabaseRTreeIndexTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 59ECC207808E198E30B3E1687871CB9F /* YapDatabaseRTreeIndexTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D9BB0C4EB7746472049E9FB68C6DE2D9 /* YapCollectionKey.m in Sources */ = {isa = PBXBuildFile; fileRef = F042FEA6EED5039190071B72A808783D /* YapCollectionKey.m */; }; - DBA48C82AB4A02C860666E6CBB28E5B3 /* YapDatabaseActionManagerConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = C200656519EDEAEC40620293D410EC26 /* YapDatabaseActionManagerConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DC25D2344890AE12429D42FFDB98A1BA /* YapDatabaseQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = CC9B04F0173150371B3EA0A9507B23D9 /* YapDatabaseQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DC739B6E97D2F931CED3D1E2DA49A1FC /* YapDatabaseOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = D5DDAD5DD64A6DB6E07B55AEC5B75D59 /* YapDatabaseOptions.m */; }; - DD04BEFD7463D12669C3E3ADA54ABB4C /* YapWhitelistBlacklist.m in Sources */ = {isa = PBXBuildFile; fileRef = 567206C6375105E3EE15F795EBADDE81 /* YapWhitelistBlacklist.m */; }; - DD8015C4971AFB51435051247AEC2F92 /* YapDatabaseCloudCoreOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = F4C94E93D8909E846976EF71CFBE6E7B /* YapDatabaseCloudCoreOptions.m */; }; - DE48C5A0309B252C6C77DFC6DE9206AF /* YapDatabaseViewState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EBE03E124143DE358C8FFCE64CCE36C /* YapDatabaseViewState.m */; }; - DEC34F974341D15C9A0D62B5109B02B2 /* YapRowidSet.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2C78662D1D5FED14BDA0E38D89CE4F13 /* YapRowidSet.mm */; }; - DF84D530DF2BC33EEA61C6389AB1F746 /* DDAbstractDatabaseLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 62994961B0B091E0745614B1A6059CB0 /* DDAbstractDatabaseLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E125383140D45D2707503EC2DC279D9A /* YapDatabaseRelationship.h in Headers */ = {isa = PBXBuildFile; fileRef = EA698AB8C2148A86AC77B0036A4F086C /* YapDatabaseRelationship.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E16BB1B301319295F657D5E8E5C1D3BB /* YapDatabaseCrossProcessNotificationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = CE3F7217813A15B460957FF23CEF8268 /* YapDatabaseCrossProcessNotificationPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E1D5B1931468F2D85682E6921DDEDAAF /* YapDatabaseLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = AEC51C8788C1992AC316E656BF32EEE4 /* YapDatabaseLogging.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E48D88F4149651935FD68415C5C0A3BA /* YapDatabaseFullTextSearchTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 656D44B8BEED4654030675D048CE2F12 /* YapDatabaseFullTextSearchTransaction.m */; }; - E4FFBE870B99D428C0C4E63F9903AB71 /* YapDatabaseCloudCorePipelineDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = A111BEAC290EBA7277DB97C7B3AD7D68 /* YapDatabaseCloudCorePipelineDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E60ED032FF48D59E1CAEC2EBEED243D5 /* YapDatabaseCloudKitPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = CFF05BCC8C8570BA4C3DBA600FA433CA /* YapDatabaseCloudKitPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E71534CFA964C847BE4154A002AE8D9C /* YapDatabaseManualViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = E9D646E932D327CCD170D1975D7E4FD9 /* YapDatabaseManualViewPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E797E38ED7D4316A6925EFA094108306 /* YDBCKRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FEB0C93C5BD1959F652E157D35E47FC /* YDBCKRecord.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E8326FDB49475CAAEDFEA1D04AC24180 /* YDBCKAttachRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = B9BFFCCBB62DB76F3A544D36D4998995 /* YDBCKAttachRequest.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E8D868301A1255CB5444135FD1A90A6A /* DDASLLogCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = FF8ADC88110AB44FAF84AC8DCB4EC1F2 /* DDASLLogCapture.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E8E73BD2162DCD3E05CE37093E7C12E8 /* Reachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A9CE885195D70B27D7A3ECF239B87F7 /* Reachability.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E9AC976E90258CE5EE31C90F9AE9C70E /* YapDatabaseViewState.h in Headers */ = {isa = PBXBuildFile; fileRef = A709CC91A97AEA5090BFF954662F1CB3 /* YapDatabaseViewState.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E9D2B486ECA53980B32CDFE0E7353876 /* YapNull.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B70FE1A714BA3036CAA35B222B7325 /* YapNull.m */; }; - EB1EBA9CB5F9CB47945B8E9A4C30B7D7 /* NSDictionary+YapDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 319D7F4B1424860E91439CB4306A0FFB /* NSDictionary+YapDatabase.h */; settings = {ATTRIBUTES = (Private, ); }; }; - EBC582C6FFC8E3480242DC6F1AD1188F /* YapDatabaseViewLocator.m in Sources */ = {isa = PBXBuildFile; fileRef = 996DAA4F6E5412D07182A97386D397A4 /* YapDatabaseViewLocator.m */; }; - EBD139D5E2E6387749F07A991C408BD5 /* yap_vfs_shim.h in Headers */ = {isa = PBXBuildFile; fileRef = 64D313E0E5AE2710923FFB1AFAC52FCF /* yap_vfs_shim.h */; settings = {ATTRIBUTES = (Private, ); }; }; - EC0B2121CF00E99602E3573B0A44E70E /* YapDatabaseRelationshipOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D6932DE3FAD438735682AEBFF5B640D /* YapDatabaseRelationshipOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC91DA802793F664FC85808CCD572FAD /* YDBCKRecordTableInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = B1CABDB55CCF8C87356A2809240CEA00 /* YDBCKRecordTableInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; - EF3D8A5B9DFFD9312291E9997FF63E28 /* DDDispatchQueueLogFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 02A861CF5913B61D2280AE86C3CF7947 /* DDDispatchQueueLogFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - F0D1215987267F66A6C342D235A4337A /* YapDatabaseStatement.m in Sources */ = {isa = PBXBuildFile; fileRef = 82B13C59CC050B0FEAFB4837B944109D /* YapDatabaseStatement.m */; }; - F3DE82E469CFF503ED0849567EA7CD6F /* YapDatabaseCloudKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 62C82EBE9337E07444655C69430E345C /* YapDatabaseCloudKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F43614EE9CDB6285EBCF893B5D7442A5 /* YDBCKChangeQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B1E8AA9FA28E0157C2D9797357C425E /* YDBCKChangeQueue.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F45E4316D1564C6594D884B033456B13 /* YapDatabaseCloudKitConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = B26E6C44CA176AD2DEA8FA1CFEAE934F /* YapDatabaseCloudKitConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F4BB2A704D725C18023C2B7A907597A0 /* YapDatabaseSecondaryIndexConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D2652D14DCD808781B60B4E19033FBB5 /* YapDatabaseSecondaryIndexConnection.m */; }; - F6F19CDE0C9E3BE5610AEFE95D2A4957 /* YapDatabaseCloudKitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 52D2167F158840C823961E1432DD5465 /* YapDatabaseCloudKitTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F735395E8C1280254885DB8BE3BB68B0 /* YapDatabaseFullTextSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = 11BF2A0AC74317457F59DE141C8CAD7E /* YapDatabaseFullTextSearch.m */; }; - F7B44D68D8FC0A6506A30D6BAAA3DF55 /* YapDatabaseFullTextSearchPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = C469EB166305BF5A2B4F2F7C49BFEB15 /* YapDatabaseFullTextSearchPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F7C95C59C9A7FB41EEC6809AA9D59666 /* YapDatabaseCloudCoreOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = CE0AE88E13AB9ABD4E528C0FE67EB060 /* YapDatabaseCloudCoreOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F881A7D8FCDC8E9DEAC826AD58523C68 /* YapDatabaseSearchResultsViewOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6954969ABF3F5BBE4D6EE72A69D5D64A /* YapDatabaseSearchResultsViewOptions.m */; }; - F8C0E7EF9391B798BD87BA8CA37FC632 /* YapDatabaseManualViewTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4283231EDEACBEEF2FD969E91F8C65A4 /* YapDatabaseManualViewTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F8D81E38BCC185BDCC5D8D6F466C077C /* DDLogMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E5F63A9F778BEFE1F7C9B66DF65FBBB /* DDLogMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F91BF79BB84C8A040343314B244F2A48 /* YapDatabaseRelationshipPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F95C55E4699B19F29E3C75CFF969E87 /* YapDatabaseRelationshipPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F97896392E726C80F2FAD40F2D136AD8 /* YapDatabaseAtomic.h in Headers */ = {isa = PBXBuildFile; fileRef = 24AFB736BE9B3A1E890F679046E7D72E /* YapDatabaseAtomic.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F9CDD0BA13DCBCF0FF15856844540A9D /* YapDatabaseExtensionTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = DABBE1136D69972B218AE8DA7FD91502 /* YapDatabaseExtensionTransaction.m */; }; - F9E26731A5A02211244527D90573E127 /* YapCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B97A025E4A01F6AAFE1FABCA2D347624 /* YapCache.m */; }; - FB5DAE28F5107D573ABE56BB70E12F5B /* YapDatabaseSecondaryIndexOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBFC7CC430E1D2EFEA5C46BF30DD0C0 /* YapDatabaseSecondaryIndexOptions.m */; }; - FD304C9FDDEE2A2F640C958625A56A87 /* YapDatabaseAutoViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA2C9F67EB7D1E32E90E317E0E3FD34 /* YapDatabaseAutoViewPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - FD42CA2F762453A2EE2B681C7C964A60 /* YapDatabaseSearchResultsViewOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D195546D9B8979D2BDA69B4AC48A1C1 /* YapDatabaseSearchResultsViewOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FE20A59B5EF8866EF06BA63781AA18A5 /* YapDatabaseRelationshipConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 91D32BFF1C555995E8A56FD4F9BB17C6 /* YapDatabaseRelationshipConnection.m */; }; + 0121D65F3DDE935862626618D32D1AB0 /* YDBCKChangeQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 605F6A32D5D6ED9AE342EB7C2A749C48 /* YDBCKChangeQueue.m */; }; + 020C9F6A35986806E9E26B896D3889E8 /* YapDatabaseFilteredView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5890FF8F0102E07E1F69B93A54AAC0FF /* YapDatabaseFilteredView.swift */; }; + 0331E3ADE9E2834A47A0F56FE9601BB0 /* YapDatabaseAutoViewTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = BD7F82D18333EEBA12C4112767EEDC13 /* YapDatabaseAutoViewTransaction.m */; }; + 0455290599B6FDB10E914F52E9C95D9C /* YapDatabaseActionManagerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = C8CEE4E68EA7788C53B8DA42B1F2097B /* YapDatabaseActionManagerPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0536AEBBA5CED76809B54E7A178B4D5E /* YDBCKChangeRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = F69B7C7033A6962F46BECCA2AF80850F /* YDBCKChangeRecord.m */; }; + 0589D24CCBB6F1646F235C8887F560C7 /* YapDatabaseSecondaryIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BBDDB43B43ABFEFC10D4347F4B09A3D /* YapDatabaseSecondaryIndex.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 058EDEB4CB2454300F526414816D83D6 /* YapWhitelistBlacklist.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B068FA9125DD2FFC0B1EC5AF468164 /* YapWhitelistBlacklist.m */; }; + 05D2FF4822C10BDD26120AA39869B60D /* YapDatabaseHooksPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DF6C2AD30BCBD23BD022036E0D7AD43 /* YapDatabaseHooksPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 060A74C03E0D32F15B3DB0CF65E30612 /* YapDatabaseSearchResultsViewTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AA96D2F4BC5790639E13A9FF289690F /* YapDatabaseSearchResultsViewTransaction.m */; }; + 0621368E65EEE4FCA5662E0D41A2CDCF /* YapDatabaseExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7C387B60F93072E9B3D2992616472F /* YapDatabaseExtension.m */; }; + 070B13857DB828F6087E7BB97143FBA4 /* YapDatabaseRelationshipConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DBA543947B4091714A5F09655994974 /* YapDatabaseRelationshipConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0726DABCC5CA762744486BB4426AC590 /* YapDatabaseConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FA5DD0BC379AC73C9813088BE054B20 /* YapDatabaseConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0953ACE9C650E61B92E7D20A1D1DB5D3 /* YapDatabaseSearchResultsViewOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 373CE5767DB41CFB4068B338C65C4DC8 /* YapDatabaseSearchResultsViewOptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0AFB6CDE61DAF0B93E03EA946B3DC718 /* YapDatabaseRTreeIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A88D8FC4504EE5EF7E4F663A87503E1 /* YapDatabaseRTreeIndex.m */; }; + 0B97CE7BB19B2E30339CE0E7FD781EA2 /* YapDatabaseFilteredViewConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 013EB1D7EEDBB4242044BAF448BD8D23 /* YapDatabaseFilteredViewConnection.m */; }; + 0BB5E308866867911A175C9E368227FF /* YapDatabaseCloudKitConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A460229E912A807F438897E51BA9301 /* YapDatabaseCloudKitConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0BE38C190FF38E708A48150CB8A74BA9 /* YapDatabaseFilteredView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BE086866A9CBF0CC3072EF1FED0FA38 /* YapDatabaseFilteredView.m */; }; + 0C332AC9A2448CBE301C17F076D8313D /* YapDatabaseRTreeIndexSetup.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B93C71C50DEC5A5B91C7206528CAD03 /* YapDatabaseRTreeIndexSetup.m */; }; + 0C81BF1199916C3EB16CED0620EF0FCA /* YapDatabaseFullTextSearchSnippetOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AC5980888A2C7CF0170017D841505F0 /* YapDatabaseFullTextSearchSnippetOptions.m */; }; + 0C9A5C51F50D56DB065C3B8BD8AA3334 /* YapDatabaseCloudKitPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = AF3E9640F94306377BA8B29CE39A3049 /* YapDatabaseCloudKitPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0D913C7F7F95929838E6376B78755CA0 /* YapDatabaseRelationship.m in Sources */ = {isa = PBXBuildFile; fileRef = 75DEE3CE7EB428E7DF23222FDD14C28C /* YapDatabaseRelationship.m */; }; + 0E5E6B7148F2BAEFC377359FB21EA963 /* YapDatabaseActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C73FAC90ACF22689F72DEE1713AE8D0 /* YapDatabaseActionManager.m */; }; + 0F4CB0DC8091D952C345720BAC139E6C /* YapDatabaseRTreeIndexTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = BA0C9C4EAF548A6F59A3E82C87BC4A15 /* YapDatabaseRTreeIndexTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0F8D5A885D656E9A4C914661F8A691BB /* YapDatabaseFilteredViewTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ED3C2C6473466203EB1769AF1CFF1E0 /* YapDatabaseFilteredViewTypes.m */; }; + 0FF4A985A05D260C56B3564156300044 /* YapDatabaseFilteredViewConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F49E0647B99802F5AA535BC366B0157 /* YapDatabaseFilteredViewConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 105704A3C53ADF84D4B0313685EDE712 /* yap_vfs_shim.h in Headers */ = {isa = PBXBuildFile; fileRef = D95B7CFA7523C8983C5BDA83D03F8BE1 /* yap_vfs_shim.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 108E0AA385BC6FAEE337068BBC89498A /* YapDatabaseConnectionProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B972993005BDBD2A231056968B3299 /* YapDatabaseConnectionProxy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 10D8882DC27F190298B03DA6F1A947E1 /* YapDatabaseCloudCoreGraphPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A1E7877431DA6044F3423650457CE8C /* YapDatabaseCloudCoreGraphPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1123C3C584766C18AD7DE6FCB5CEDF70 /* YapDatabaseCloudCoreOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = C9A25AE227A0815A5D15A7BFDE576D80 /* YapDatabaseCloudCoreOptions.m */; }; + 112BDEED36D06BC569652DDDD87328F6 /* YapDatabaseAutoView.h in Headers */ = {isa = PBXBuildFile; fileRef = 77DD1D0F59405B93A09F15B1FBB8B20C /* YapDatabaseAutoView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 122F31E78CF7F51F6FD83166A60FE1AB /* YapDatabaseViewPage.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67F6E4A3B38CE509283D012D053C8F73 /* YapDatabaseViewPage.mm */; }; + 1385779E0FBA4AA142DADE272F522D96 /* YDBCKRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = ADF8123C879533091791D4A38906F45F /* YDBCKRecord.m */; }; + 13B0C4833EFD971BE0E85F969B2CE0C0 /* YapDatabasePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = FC0324A51E603C4452877887AD1ECE7F /* YapDatabasePrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 162D7B64ABBD83B8CB4727B7CE212054 /* YapDatabaseCloudKitTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D52DF1E2CCA2C66920A34B4A70E853B /* YapDatabaseCloudKitTransaction.m */; }; + 169FE4511217B3E6161632FF4594A175 /* YapDatabaseRelationshipOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = F71948ECE95DD2F8AE4691738DA9F089 /* YapDatabaseRelationshipOptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1727D018B9ED5A9380BF50DCF0C37B80 /* DDASLLogCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F5388ACEFD064B3D0CE2E9AB205B53D /* DDASLLogCapture.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 175EA2A4ABA2006923240D7EC8FFFE02 /* DDASLLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 36B03AD77B3B7CF4C1ABAAC1A3300E57 /* DDASLLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 17B6230BBABD3B34906E0D2548EF3EA6 /* YapDatabaseRTreeIndexTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = B46CFB4820CE85B8AF80DD25CBD11C94 /* YapDatabaseRTreeIndexTransaction.m */; }; + 18F9EAACD771F587A780B67C748134AF /* YapDatabaseViewChange.h in Headers */ = {isa = PBXBuildFile; fileRef = DD3232216ED8C1BFF2923E6F9158D111 /* YapDatabaseViewChange.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1A9CCD18DBA12BAE2B63DB315F620D32 /* YDBCKChangeRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B879382F6254EEA101D0AD3762F2C2A /* YDBCKChangeRecord.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1C13111A6153D626420FE1846BD3FE4F /* YapRowidSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 965C3E45D61328F247BA6E62AE169883 /* YapRowidSet.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1C999211167C77E7875BC6A40297F534 /* YapDatabaseExtensionTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 93AF3C79889B8EE05C4C6F823D597CBE /* YapDatabaseExtensionTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1DCF988E442B0C8D15EC0D4A327B78DB /* YapDatabaseFullTextSearchTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 82FFA8656983E7C63EA04CB4E86B1588 /* YapDatabaseFullTextSearchTransaction.m */; }; + 1DD2D546EA37FA72E7946A332C1D74AC /* YapDatabaseExtensionPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3421941478AF4F7EB4EF013C79FBC240 /* YapDatabaseExtensionPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1E726382275BC8BBF14B7F465BB531E0 /* DDFileLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 4592EE242F205BA430912588AC1FE62B /* DDFileLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 204821E59E5AA3BDD6897833E911501D /* YapDatabaseCloudKitConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = E1148524AC23CB850E1805719550C188 /* YapDatabaseCloudKitConnection.m */; }; + 20C241E2C4C8A32E3526F1BDE0680D93 /* YDBLogMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FE650DD25360138F32D6E96EB7F5104 /* YDBLogMessage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 219F12ED8D9C0D501EE6414F46A8CC45 /* YapProxyObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E9366A242257C207B2B0F6FA7ABAF74D /* YapProxyObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 21AC76B3908FC3158B0E5425CB0E2542 /* YapActionItem.m in Sources */ = {isa = PBXBuildFile; fileRef = C190C27B93B23B04BD7456C7D1217A8A /* YapActionItem.m */; }; + 21B165B53A07D4358F1F28A05D2896AE /* YapDatabaseCloudKitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = D988F65D2A4F1C911ACBEB99E833BC61 /* YapDatabaseCloudKitTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 21B919130962BCD60595A4F9C4E82BA9 /* YapDatabaseSearchResultsViewConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 09BA0147FD6337594BCEB384A7BC4381 /* YapDatabaseSearchResultsViewConnection.m */; }; + 225954BE08C2A11B58527BD7E486E224 /* DDLog.m in Sources */ = {isa = PBXBuildFile; fileRef = DE3B4B831F160FFE801962FE528A2246 /* DDLog.m */; }; + 227DCD4F3FD597CBEEAB3672B0E9C72C /* YapDatabaseFullTextSearchTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = E5CAC6D081C1A84BF41A9D1BDA78D2CB /* YapDatabaseFullTextSearchTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 23264922C2BC9F97BAD4396AA4E911DC /* DDContextFilterLogFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DBB979798E0032342E47771C359647F /* DDContextFilterLogFormatter.m */; }; + 23DABC2F4D2C1B75A565C78711C315D5 /* yap_vfs_shim.m in Sources */ = {isa = PBXBuildFile; fileRef = 402BC4E15E244BC415BA5946B484D1FD /* yap_vfs_shim.m */; }; + 25D1C9154A2135A5E06A2E05627C8B90 /* YapDatabaseRTreeIndexConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 83CBB9ECC8094880AFDFFEC7BD744C67 /* YapDatabaseRTreeIndexConnection.m */; }; + 276516D2FB1F6D1A28FBB0CA90273099 /* YapSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 39E15C14C3A865D14124E9221BCE7BB2 /* YapSet.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 290DB556C6A3129DE66734A7A5A3EF38 /* DDAssertMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 7944BB4DD4A1A6F1F401C16C5824CEBF /* DDAssertMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 292F8D03A227E884F6A990D7E1DD7B9F /* YapDatabaseSecondaryIndex.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDC50EDD27F55BFBB0EA103F29BC6912 /* YapDatabaseSecondaryIndex.swift */; }; + 2C9C057EFECE02206113D4F26D34F5C7 /* YapDatabaseFullTextSearchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 59C27D3BAD290762BA3D07ADAC95C43D /* YapDatabaseFullTextSearchHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2E6C3D814FB11B0C5665E771376B7067 /* YapDatabaseConnectionPool.h in Headers */ = {isa = PBXBuildFile; fileRef = 6655B2E2B31B4EDB07720851846B9713 /* YapDatabaseConnectionPool.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2ED1EDB1752822852CD42DA3D87CD694 /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 73EB2D4BC70E35CC9B06D3DC6037157A /* Reachability.m */; }; + 2F3B2DE28B106D05289470034BB9AD6C /* CLIColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 249830FC64BA9DC39E5A1A20035A6DDB /* CLIColor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2F74C4BEBE6390BB2621A809558380BB /* YapDatabaseFilteredViewTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = BC96973D657059A87175DB5FFDFE4DA3 /* YapDatabaseFilteredViewTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2F7D25EA29E4167F1CED2641C0B06F01 /* DDASLLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 5334B64AEF912A07E24DC287146DCE25 /* DDASLLogger.m */; }; + 303C7876AFBF9A32E654BEA94FF2173E /* YapDatabaseTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D8C1EB778F87AA4E72239E4F9A9FBF1 /* YapDatabaseTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 311F3E58DCAC90BB31EE50FD3EF5C4A8 /* YapDatabaseSearchResultsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81AAB8AC6C0733C80BFCE930D935A4D4 /* YapDatabaseSearchResultsView.m */; }; + 31A15E6EF92797469F3FD3745293DA7B /* YapDatabaseCloudCoreOperationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = A4907FFD108659AD239912E8DC590ED0 /* YapDatabaseCloudCoreOperationPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 336B461993B5AE4E4F02D8A9E2C061F3 /* YapDatabaseCloudCoreTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FDF54704887DDF302CD15A319DEEA18 /* YapDatabaseCloudCoreTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 33A58DB8AB479141B8F380B34528EF69 /* YapDatabaseCollectionConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = A05F34E9AC8312A1A998AAFE1B71CDFE /* YapDatabaseCollectionConfig.m */; }; + 33CDFA1EE84E7DC9B5B87822E5C2C4C0 /* DDLoggerNames.h in Headers */ = {isa = PBXBuildFile; fileRef = 145BA590BA3C71107BD71AE674E6029A /* DDLoggerNames.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3434EE9E6D5A38914DB6986DB8A7FBCB /* YapDatabaseManualViewConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = AB3B31A83EEBE199038BB8C8FB6CBFA3 /* YapDatabaseManualViewConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 34A8E0A27683E2E2C755D59831D2C539 /* YapReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 181D2F2F146A1951D9C62C1AB8480161 /* YapReachability.m */; }; + 355E9CD00F1F8FC2B067BCF497618B20 /* YapDatabaseFilteredViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 81440BEFF1C4E3B57968FB26ED887C4B /* YapDatabaseFilteredViewPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 35BC91C536194515944FBBC49C70FFD1 /* YapDatabaseFullTextSearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0E913509265037028C184397048380D /* YapDatabaseFullTextSearch.swift */; }; + 35C2E913F53C1CA3F3FDF274620F2AAA /* YapDatabaseCloudCorePipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C4301076674FA4B24DF31B1F93F72C6 /* YapDatabaseCloudCorePipeline.m */; }; + 361AB83E6BE5C1524DAAA4A800227BC0 /* YapDatabaseRelationshipTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = A695F639A0C20B30DB44293A9D3BB240 /* YapDatabaseRelationshipTransaction.m */; }; + 39776BD3FA0A1B69A7235C80A309FE01 /* YapWhitelistBlacklist.h in Headers */ = {isa = PBXBuildFile; fileRef = 470C4107509C9E3F227BEEC3B9B84CB6 /* YapWhitelistBlacklist.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3A6F4CA44A821C7310C8ADF962BBB98D /* YapDatabaseSecondaryIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 4013CB3C565F97B0D9B092958034EB3D /* YapDatabaseSecondaryIndex.m */; }; + 3A7D93C34AD9926F93F70C47A8305B24 /* Pods-CloudKitTodo-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A97177956523C9713611F1606EEC814C /* Pods-CloudKitTodo-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3B2D61A826EBD3DD42DFFF03668986FA /* YapDatabaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 042BC3E35660AFA033090584A164332B /* YapDatabaseView.swift */; }; + 3C5E76A165F44F325C3C00E881E39661 /* Reachability.h in Headers */ = {isa = PBXBuildFile; fileRef = B46593AB7AC5E4D7DAD62CC2E3D95BF4 /* Reachability.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3CE2288EF0EF53194EDB013DF14ED4F7 /* YapManyToManyCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A00454F17A6827062EFA9FD74DDDF1EF /* YapManyToManyCache.m */; }; + 3CF0879C2433D94CB8030DD84FD9594C /* YapDatabaseViewMappingsPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BB247EBA65C2F9A2E274B1D5368740 /* YapDatabaseViewMappingsPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3D1F4DABE2F58C444EC184A497774BF7 /* YapDatabaseTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = C7121128B6C9CA39D47FAFA053AD77CB /* YapDatabaseTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3D228CCDA86E98948C7C9D9896C6E406 /* DDDispatchQueueLogFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 44338274A72B61FC246DB539A84644C2 /* DDDispatchQueueLogFormatter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3D44B4967EA090B1402FAC60975C03F0 /* YapDatabaseViewRangeOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = ADFE6A8737FEDEE46A2CF885D496C408 /* YapDatabaseViewRangeOptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3DD96AE670B93AD853FBA161FAEBF688 /* YapMemoryTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 45968D1B540A9B0446A132B1D6A84B09 /* YapMemoryTable.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3DE7AE8F8852470D66F3F6FAA8DC0661 /* DDLogMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 34F00867358284FA98B66BE734260552 /* DDLogMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4138F98964BA268E73C3DF20074B7E39 /* YapDatabaseManualView.h in Headers */ = {isa = PBXBuildFile; fileRef = 79B7A3EFEBB3B45DB47245FB486EB66F /* YapDatabaseManualView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 42F9F5016EED49D8376295AFE55CD0A0 /* YapDatabaseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 52C2A2D611D1688AA5B6FA9865265CCB /* YapDatabaseManager.m */; }; + 44505D7D68C840565581A4923618A063 /* YapDatabaseQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = D386C98B26472097CAA5AA022D835C7D /* YapDatabaseQuery.m */; }; + 4463C7AAE776F35F311427C5609AC243 /* YapDatabaseHooksConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FBBFEBF550EC1154B0C9C52C1FA8DF0 /* YapDatabaseHooksConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 454A3CF60121EEEB5A7450BAD08DDEB9 /* YapNull.h in Headers */ = {isa = PBXBuildFile; fileRef = F59B953F12BEF4193447E82FA63784A5 /* YapNull.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 45EC01E9BF4154A8035F926D7A37E2FC /* YapDatabaseRTreeIndexOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 13C644EDE4E6A2C788817020C828FCDD /* YapDatabaseRTreeIndexOptions.m */; }; + 46606028159823EAA48510E86752943B /* YapDatabaseHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C32BF8A0F91FAC5C316D2B2B1CBC827 /* YapDatabaseHooks.swift */; }; + 467D449E9AAC58FE9611154BED11EF2E /* YapDatabaseRelationshipPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1005046FD112EE1555CE16072AD88E3A /* YapDatabaseRelationshipPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 47069FB1BEA1FF09750ED7A82E003AD1 /* YapDatabaseViewLocator.h in Headers */ = {isa = PBXBuildFile; fileRef = A495D88E9C62E4F468E356FD6108155A /* YapDatabaseViewLocator.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 471B26E621E49600E251FB939271F942 /* YapDatabaseExtensionConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 212604501E076321958DCACA187988F6 /* YapDatabaseExtensionConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 473900701CB74647C5E86526F58D6698 /* YapDatabaseRTreeIndexHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B0B185D4E913BF729DE0A6C059F6922 /* YapDatabaseRTreeIndexHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4763D61BF046C7BBEDCC3680D5F906C3 /* YapCollectionKey.m in Sources */ = {isa = PBXBuildFile; fileRef = C28751E4241E68BF6C905F56B8168A8E /* YapCollectionKey.m */; }; + 491FB8D85CA88CFFC76C16A7A759D55A /* YapDatabaseCloudKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D25E6268B0015B7A77A96DBDA78E64D /* YapDatabaseCloudKit.m */; }; + 4A3EBC0458684C663B5199FF7D69A851 /* YapBidirectionalCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BA888DE0F5B010909190F91DF10334D /* YapBidirectionalCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4ACE06C62A332F9585C41DB5A7887937 /* YapDatabaseExtensionTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 2793D46A4D1D6F26E53D4ED91A2F02F2 /* YapDatabaseExtensionTransaction.m */; }; + 4BBAE455FC953B11DEA7305990C097F3 /* YapDatabaseConnectionState.m in Sources */ = {isa = PBXBuildFile; fileRef = F65B6892A8686986CAC812963880BC34 /* YapDatabaseConnectionState.m */; }; + 4C3AADADFFC16146D0CE7E3BE399E74F /* YDBCKAttachRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = F02D179A8E196265004AD447EA7F7703 /* YDBCKAttachRequest.m */; }; + 4CD17076C43520A151F9D2B619DC4AC2 /* YapDatabaseRelationshipConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = C4A41ADBB41A630040DA2DA5499E87E2 /* YapDatabaseRelationshipConnection.m */; }; + 4DBC0C164A5D68445556B356D3EAC8FB /* YapDatabaseLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BA965E04C467A945353E40A3A32A9E4 /* YapDatabaseLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4DC1EB07CAF6767118317408E62B60F0 /* CLIColor.m in Sources */ = {isa = PBXBuildFile; fileRef = D252C2850A834C318B28F237D5D8E0A1 /* CLIColor.m */; }; + 4EEF41765891BE537E47BF257118BE22 /* YapDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = C449B9A4035473F65C204CB744B6F218 /* YapDatabase.m */; }; + 4F8E913E9710F2791D06C9AE3E04DEEA /* YapDirtyDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 404DFF3174A3AA4B142BEF98AA85DB9E /* YapDirtyDictionary.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 504D7DFC41E59BA3F628AB23F09BEDEE /* YapDatabaseCrossProcessNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = CB501C8A12EA9D78031D4349120A0769 /* YapDatabaseCrossProcessNotification.m */; }; + 50AA12A8BEA1A3C12A3CDBA34CAAC78F /* YapCollectionKey.h in Headers */ = {isa = PBXBuildFile; fileRef = A6EAB758829572715927446EA3E3AEED /* YapCollectionKey.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5216C3F8A716C1C833931A0DE5941696 /* YapDatabaseHooks.h in Headers */ = {isa = PBXBuildFile; fileRef = E45E3BA1C1129A2CE059E373F3E2BA2E /* YapDatabaseHooks.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 565DF1ECEA619DD8B43A88D9CC0D5A74 /* YapDatabaseSecondaryIndexTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 92193246E86BE09485773884411B0FDE /* YapDatabaseSecondaryIndexTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 574BC4B1136F19FFB9C75689343D2A58 /* YapDatabaseActionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F6FE75C072E6691E15395B29108960B /* YapDatabaseActionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 57E470C445BC932163DCFA00DE79ECE6 /* NSDictionary+YapDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 56CD01F8DB51D6BCAEC7B52589B447B2 /* NSDictionary+YapDatabase.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5827EFC5802620BF0B01F6588EA201AC /* YapDatabaseViewRangeOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = EA0E0331B91902167A51BB4756703BBD /* YapDatabaseViewRangeOptions.m */; }; + 59F1201291C7466CA23484CB239F8E6A /* YapDatabaseSecondaryIndexOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E9CEF22EA2352AA29A6334CA9B300A8 /* YapDatabaseSecondaryIndexOptions.m */; }; + 5C340BE0ED04BE81C59F6E75F3BD09CB /* YapDatabaseCloudCorePipelinePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 942357AD4DDC444CD8D03A209B86CD26 /* YapDatabaseCloudCorePipelinePrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5CDD9A71C8569615DF74252E99010190 /* YapDatabaseManualViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF30BBD26DAB73C7BAC908C5E95A2D9 /* YapDatabaseManualViewPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5D5DDC7FE9A06101A8F57757F3E12043 /* YapDatabaseSecondaryIndexPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EB362EB183A044EFF0DBF33F7B0EAE7 /* YapDatabaseSecondaryIndexPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5D954669F8DD8DB51CDF6BB27ABFAE6B /* YapDatabaseAutoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14E745BEA2DB95546F10657CD68C6058 /* YapDatabaseAutoView.swift */; }; + 5E4BFDA82137F69DEBF728E308EA1A5D /* YapDatabaseCloudCorePipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = A033AAEA56D36667C4B9B3672F51BA83 /* YapDatabaseCloudCorePipeline.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5F11C7698B1D6EBE01EDF4E644F98D8F /* YapDatabaseManualViewTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 63BFD8A9CBD7BA2CA1BD1C3580EE6D7D /* YapDatabaseManualViewTransaction.m */; }; + 609057BDA0B350A1218D036B677B0550 /* YapSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 67899823D41F2D2AB59B892B2E321B7D /* YapSet.m */; }; + 60E1DA617A5A84A268F34A3C68818239 /* YDBCKRecordTableInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 741C6BA4F6A6FD9A35EC2639AC150365 /* YDBCKRecordTableInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6185E57CD5C4A3A7C508696C5A0C9D0A /* YapDatabaseRelationshipEdgePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C8F83C81C86C0C168B56F29C60E0DC6 /* YapDatabaseRelationshipEdgePrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 61F5D38118CBAE9583FCE349C36DFB52 /* YapDatabaseSecondaryIndexSetup.m in Sources */ = {isa = PBXBuildFile; fileRef = 47459EAE19B912ECFC98935DC23C25C7 /* YapDatabaseSecondaryIndexSetup.m */; }; + 62046290801C6EF6072FE9E60BA07BCE /* YapDatabaseFilteredView.h in Headers */ = {isa = PBXBuildFile; fileRef = DD4C2B55606F9E676FE7A3853B9CC7C3 /* YapDatabaseFilteredView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 62AA381C431B286443D99E32DB963041 /* YapDatabaseCrossProcessNotificationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = C8A8EA5CB846ACF469E632C025E8924B /* YapDatabaseCrossProcessNotificationPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6429CE53C9F0D20B117D6AEDAFB997B8 /* YapDatabaseRTreeIndexHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C6270516D8F4F448598EDBC61806840 /* YapDatabaseRTreeIndexHandler.m */; }; + 647247082EBE025350D0B159BA08B8A9 /* YapMutationStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 066B3FC8C196D8214C098405865EB1A5 /* YapMutationStack.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 65BFDBC54DB2057906386A2A70E4A1D2 /* YapDatabaseAutoViewConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D931DF586EA6822C067FDE60761B5F9 /* YapDatabaseAutoViewConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 65FBCA858F5E1B339ED3EB9C3033C324 /* YapDatabaseSearchResultsViewTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 66FFD31D8CCACEB86F2F757AC2C78499 /* YapDatabaseSearchResultsViewTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 65FF48B8295C23017C95D9D579A9F8DF /* YapDatabaseExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D0A6235E2BF201D7C300C629CF4ABC9 /* YapDatabaseExtension.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67B2A2346FB0812CF91BE554A9611C07 /* YapActionItemPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 20BC543EB4FB87B044ABFD6F95996421 /* YapActionItemPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67D41E5BAB54710456CEC31B6EEF0B25 /* YapDatabaseViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A80B9695462583B8FB850E106638743 /* YapDatabaseViewPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67FAB48855DFF514740EDA52F919EF24 /* YapDatabaseSecondaryIndexOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 034976B6D68A700F6A793215B7AD8386 /* YapDatabaseSecondaryIndexOptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6940EC88D79410C4B1F49B80483614EA /* DDFileLogger+Buffering.m in Sources */ = {isa = PBXBuildFile; fileRef = A5952F0B8FAB82B9BAAF272FCD33BFE0 /* DDFileLogger+Buffering.m */; }; + 69C6FEFEFC5E0A97047AB97B1CC43E9C /* DDContextFilterLogFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 90F36A240BB5E79F03719BAC292A1EBA /* DDContextFilterLogFormatter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6A30DC5C1A5B13F905B391B2E419A117 /* YapDatabaseExtensionConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D9B39663FAA79B96292BB1FC5BC3C81 /* YapDatabaseExtensionConnection.m */; }; + 6A70A9DB07E7DC569D5BEAD2F7EDEB5B /* DDLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C654B035ED5E063A16447A34B5437A9 /* DDLog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6A89F3AABB185EA87709ADA2A53B7FD4 /* YapDatabaseViewPageMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F9163650F39B37696B35A82B41C42D6 /* YapDatabaseViewPageMetadata.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6AB3C5EA4B037B6C1F5FE0E73500EB4A /* YapDatabaseViewOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 522633BA9440FAB7BA71873C8D61DBBE /* YapDatabaseViewOptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6BF80908E89B2598D506275EA2EDA0A7 /* NSDate+YapDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 48485700DFE4330A4702A35B297D8F07 /* NSDate+YapDatabase.m */; }; + 6C532C80A187DE9CE9489BEBDD34C2D7 /* YapNull.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D4B72762CBBA48A7F15638126EF032A /* YapNull.m */; }; + 6C6F09805CC43529521A6260ACE11F3F /* YapDatabaseSearchQueuePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 64BA37DFF1088FE944FA19457DC98EC1 /* YapDatabaseSearchQueuePrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6EB05E53259CABC446ED435FDBA2D3BB /* YapMutationStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D1DD6DA8E7C9806B9AE16BECA2E9F0E6 /* YapMutationStack.m */; }; + 70F7F1C764F451748B28D1248BBD4E84 /* YapDatabaseTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = B34B0FC689724D510AB320905ECEA157 /* YapDatabaseTransaction.m */; }; + 727101A6CBB36A899A719C950A33F4C7 /* YapDatabaseSecondaryIndexTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 2818FA75CFBC5DAF02C1CE27B6D9CE97 /* YapDatabaseSecondaryIndexTransaction.m */; }; + 735BB14185B6C570839347067E210596 /* YDBCKRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = F8E80BF141BAFBBF8A9A163B567FFE97 /* YDBCKRecord.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 738ACC5B103C4F714BADD5A294F0BDEF /* YapDatabaseViewConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C7A671047835A349D6236605ED787D4 /* YapDatabaseViewConnection.m */; }; + 73D033D32795E4DC89D6E31B8A423129 /* YapDatabaseHooksTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = C605800595C7C4D7557B3FDC52FBB8E9 /* YapDatabaseHooksTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 741C7DFA8EFAE27F37964A47921D3719 /* DDMultiFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DBAF7BBC152D9209FC39B3BB0569046 /* DDMultiFormatter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 771A9A874D06B190834DE9BB1903E0F4 /* YapDatabaseCrossProcessNotificationConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 48806294C5CB0B4921F4F340A77DD1D6 /* YapDatabaseCrossProcessNotificationConnection.m */; }; + 77551EF9284BFC16DA7840DB513D6D09 /* YapDatabaseCrossProcessNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = C61E0C9E1F81D3CF7FAA3E0E768B6560 /* YapDatabaseCrossProcessNotification.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 783A08B1AC272A4C4CE22F6F90C6476E /* YapDatabaseViewTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = AC12C96E98AB2C8498049164C90EC58C /* YapDatabaseViewTypes.m */; }; + 79191ABCA6649DF3C1C799D011FA2D78 /* YapDatabaseRTreeIndexPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 45E58D4278AC30A43220D021DDD962FF /* YapDatabaseRTreeIndexPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7994915536D3AEE77497C17B3B6A4D89 /* YapDatabaseFullTextSearch.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ED97CEB23B6BB124CAD59B55DF826E6 /* YapDatabaseFullTextSearch.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7B6B17261259C68322EB6C703C1FA6BE /* YDBCKMergeInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = F4BC1D6FCDDDE852052DBD9C32D3076E /* YDBCKMergeInfo.m */; }; + 7C8E9E83D4619E6EA6EC14623A5DD693 /* YapManyToManyCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 9107CDFDCE8A783239BEB01EB1F0FD2B /* YapManyToManyCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7CD28B1D4B041867300214B6A020F375 /* YapDatabaseFullTextSearchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 877D55458589653811BBAF30BBCD0B86 /* YapDatabaseFullTextSearchHandler.m */; }; + 7E85D9D40D57BE8FAE3667CC213F3B34 /* YapDatabaseViewOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 95B443D4F86A2DCBE2DB1D5C2FBB1E74 /* YapDatabaseViewOptions.m */; }; + 7F0094E99446156D6CC8429C022ED64F /* YapDatabaseViewRangeOptionsPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 60334989ACDC30BF87F8530F52F3B773 /* YapDatabaseViewRangeOptionsPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8105385C6F935729A382D1163DA1D46A /* YapCache.h in Headers */ = {isa = PBXBuildFile; fileRef = FB965E81D0205226B7826C0ABA4E1064 /* YapCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 815A2D6583DADE9F65065C3AFE95E834 /* DDMultiFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 08D8334F6004A672D80552DC078C56F3 /* DDMultiFormatter.m */; }; + 8383FF76CAAF25C8FE900AEC6EBBAEF8 /* CocoaLumberjack-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D37094FA7B2D1DEB35621D01B20C2E9 /* CocoaLumberjack-dummy.m */; }; + 83B4A685693348CA8E816BAFE320D771 /* DDFileLogger+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CB395EA3B42FA27D9C987645C7E77C93 /* DDFileLogger+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 83E6D0049EC90E20BC69ED067E479D2D /* YapDatabaseFullTextSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E08FC3899730A65BB041952D452A338 /* YapDatabaseFullTextSearch.m */; }; + 864A998C4BF4BF9F4681FD66C912A1EE /* YapDatabaseConnectionPool.m in Sources */ = {isa = PBXBuildFile; fileRef = 4123EB3D1CD4131B9C363B5831143333 /* YapDatabaseConnectionPool.m */; }; + 87393848AE06BA0E4737BD36C5A7FDC6 /* YDBCKRecordTableInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 91C45BDBFDA6160386856A8E71514464 /* YDBCKRecordTableInfo.m */; }; + 87B971073DA9C2B6F966F1A01CE65186 /* YapDatabaseRTreeIndexSetup.h in Headers */ = {isa = PBXBuildFile; fileRef = E3A68E061A9D87B8F89C02FEE470C395 /* YapDatabaseRTreeIndexSetup.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8857F8FB76566BF6AC5BCBC88A68BE48 /* YapDatabaseManualViewTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 33B17276F1396AD382DB7340651DC364 /* YapDatabaseManualViewTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 88FF133EBBF1850374D40645E4441C1C /* YapDatabaseCrossProcessNotificationConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E3CBFD51DDA56CA2262211FC9BD5074 /* YapDatabaseCrossProcessNotificationConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 89721261FD096FB012C1B20E01C85C51 /* YapRowidSet.mm in Sources */ = {isa = PBXBuildFile; fileRef = 47C1C60A48F49D45DDE3EC322E15EFED /* YapRowidSet.mm */; }; + 8A08F5ED01052A9105BD6FACC8F07A20 /* YapDatabaseViewTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C41F105C64306FABC1BF69696EC4FEB /* YapDatabaseViewTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8ACFB343BA81C5D0071E998CF7B8A3DA /* YapDatabaseCollectionConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 22037F8BF6DC1FEFC41CC73CDF62620E /* YapDatabaseCollectionConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8C0DD3C2CEF863811847BD9C8CF7EDA7 /* YapDatabaseRTreeIndexOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D1D99C6799BA9B5C51ADD0156A03B4C /* YapDatabaseRTreeIndexOptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8CCF7E188DA58917F83B406959329B9D /* YapDatabaseViewState.h in Headers */ = {isa = PBXBuildFile; fileRef = B0541D4E97CAEE902EDF1802C1089C49 /* YapDatabaseViewState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8D017F797E821E1600F560AE10FE06C0 /* YapDatabaseViewMappings.h in Headers */ = {isa = PBXBuildFile; fileRef = 157128D085D978163557A91F453C071A /* YapDatabaseViewMappings.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8D33A1802AE07FE822560BB4FDC8C70C /* YapDatabaseStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EED805F237A23915130FD2E24790624 /* YapDatabaseStatement.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8D908EA4DB77AB1CCC7EAE7D8164534C /* YapDatabaseFullTextSearchSnippetOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = CAD28452F42B9C8C5C70B07F72512EBA /* YapDatabaseFullTextSearchSnippetOptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8DDD6530B86D422169E60CA5530DDD71 /* YapDatabaseAutoViewTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 494751970A2A1484CDB71B728CDA50D9 /* YapDatabaseAutoViewTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9140DD06EB3D97B0CE0B788C78DC810F /* YapDatabaseCloudCoreConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FF0684C8B06010E646A765440D512A9 /* YapDatabaseCloudCoreConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 91777677D3AF24D1CF868E2092636DB6 /* YapDatabaseCrossProcessNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4006169444C7A9E3C963A289A2AC0F7 /* YapDatabaseCrossProcessNotification.swift */; }; + 917EF67319C13170E9F21628787AB19C /* YapDatabaseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B36B28C8AE5E49A33730BC552A97696 /* YapDatabaseManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 929FF13C69854C325174F6367DF5E26E /* DDDispatchQueueLogFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DB8C972D351F36237703D7EA3807870B /* DDDispatchQueueLogFormatter.m */; }; + 9489EDB74B9A36EBB00A8445B879CD84 /* YDBCKAttachRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = D3E71156436EF4BFD781870E960C9DED /* YDBCKAttachRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 94E8A72A2124DF003C945F09BAF8794B /* YapDatabaseCloudKitOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0543C9D27D88410B384F4FD23974D57E /* YapDatabaseCloudKitOptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 95D2C9C4D48144B7842CF643E7FA571B /* YapDatabaseRTreeIndexConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = A0B980B13631F78458E96AD6C16F5DAF /* YapDatabaseRTreeIndexConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9767650AA24FD63F69F43D4883E19929 /* YapDatabaseViewLocator.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FA2F07AEA369AB1EC687FF9856DB764 /* YapDatabaseViewLocator.m */; }; + 97B80FB30AFD01BE2DA2D2524F6202B8 /* YapReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 60C91238202C4799687425C0DF4C559B /* YapReachability.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9885D1676C83D2F9930E3BAC5A54B14F /* YapDatabaseConnectionConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 767DD31CE54D1960D97F716D287D502A /* YapDatabaseConnectionConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9A43687808FED3C2D263519143118FB3 /* YapDatabaseViewConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = D9F0C2A1E1FD70066DD87313C1CFEC6E /* YapDatabaseViewConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9B9953DB81A224B2B67E49F921532DCB /* YapDatabaseHooksConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D70818D8E4079426F6C6141A62656F8D /* YapDatabaseHooksConnection.m */; }; + 9BFCB14468080CF76A0F3DA228D312E4 /* YapDatabaseCloudCoreConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EA57FC933F1AD2493FB20A0E0EF2698 /* YapDatabaseCloudCoreConnection.m */; }; + 9DB3585AD1599549933E82F6AC46D1DD /* Pods-CloudKitTodo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E03EEF17DD0F331E01DF541DACAAEF6C /* Pods-CloudKitTodo-dummy.m */; }; + 9DF4C344C5B97E2E43FFF058E3FD6521 /* YapDatabaseCrossProcessNotificationTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = A31546E23C1E89EF8953FF95508EACBF /* YapDatabaseCrossProcessNotificationTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9E381DA2643D3A13EDC075A821E3AA9F /* YapDatabaseCryptoUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 98AD3BA5B73D8E7F3D2BBBF509E5760C /* YapDatabaseCryptoUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9F1C7FA5E771B73DAC867C9926B93BEE /* YDBCKChangeQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = AB205EDDBEC7958C10244A7DAFCA1FFE /* YDBCKChangeQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9F45895661302A5421E485F75B4F0617 /* YapDatabaseActionManagerTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EC571BEA4CD0B73CF92DC8C7E19299 /* YapDatabaseActionManagerTransaction.m */; }; + A08CCC9F13A2F77F4607C1BD844ECFDF /* YapDatabaseSecondaryIndexHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA6CA377BC53274992588C3C883BD60 /* YapDatabaseSecondaryIndexHandler.m */; }; + A0D39E46D10834A66A5AEB3A733DEF2E /* YapDatabaseString.h in Headers */ = {isa = PBXBuildFile; fileRef = 206E4350E662FA5A4A871890C8A3BA5C /* YapDatabaseString.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A11BD31F0614B6073A1185A4D7B570CF /* NSDictionary+YapDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 22EA8F71F878C2399F0AD1170E8011AA /* NSDictionary+YapDatabase.m */; }; + A157C23D8CE869DCB8FE83FB059A6116 /* YapDatabaseRTreeIndex.swift in Sources */ = {isa = PBXBuildFile; fileRef = F476A4E3A53B17F2D2AA0ECB2FE662E7 /* YapDatabaseRTreeIndex.swift */; }; + A1AD4D6F2922542D82990A46C6A9029C /* YapDatabaseSearchResultsViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = E46D692783A01BE96DFB81FEA211605C /* YapDatabaseSearchResultsViewPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A20F6EC08E833D0B354BEB174A59DA9C /* YapDatabaseRelationshipEdge.m in Sources */ = {isa = PBXBuildFile; fileRef = C9367283416273682D0CFD8295189252 /* YapDatabaseRelationshipEdge.m */; }; + A3929BB1E3D1D60BB9DEF6B18C964934 /* YapDatabaseViewChange.m in Sources */ = {isa = PBXBuildFile; fileRef = 40D8955EDCC6007327E62B4041966F49 /* YapDatabaseViewChange.m */; }; + A3EC42FD150B91EAAE2B89E1239134E7 /* DDFileLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FB88D9DCE77EAA0865A1465E3B2A0B3 /* DDFileLogger.m */; }; + A60D6EC216E2A3C54AC12DF991AFAA82 /* YDBCKChangeSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A4C85F6BE902C4AEB3A5A549A3F7A90 /* YDBCKChangeSet.m */; }; + A61FC4A9CCAA7751D872043029A59D88 /* DDLoggerNames.m in Sources */ = {isa = PBXBuildFile; fileRef = 32A972D7A25D4A6101F4EF5B75A55ABB /* DDLoggerNames.m */; }; + A6F7999720FE7BFF1776D40418970E87 /* YapDatabaseFullTextSearchPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 71C4F1FDE0CB5468AC9A1BC8130975C0 /* YapDatabaseFullTextSearchPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A81162ABB7D1443BDF039C3544FF566B /* YapDatabase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3049ABAFC13518236F9BFB18F7DFBF35 /* YapDatabase.swift */; }; + A8D752FE7AD403291D9773F63FEF7388 /* YapDatabaseActionManagerConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = C9B0CEF5CF027A908FDE5AACE1EF6F31 /* YapDatabaseActionManagerConnection.m */; }; + A9A17D09AA876FEC0D91B6866662428E /* YapDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 12C76D715107D99655DB7FFDC6E32273 /* YapDatabase.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A9FB6891449064C5622548B449DD5609 /* YapDatabaseCloudCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 680513C4274999423CD5DC1C7C47F5AA /* YapDatabaseCloudCore.swift */; }; + AD9A38D7532B75450AA9638FC71BBD67 /* YapDatabaseExtensionTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = E4243C0E21F9FE55065FA0A6448F90F0 /* YapDatabaseExtensionTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ADB4E25D07E41AF6A19B47DE2327C4A5 /* YapDatabaseAutoView.m in Sources */ = {isa = PBXBuildFile; fileRef = E1219E1B9A3A9AB7C3DA5DA531452BB3 /* YapDatabaseAutoView.m */; }; + AF39AF5F9749EDA011945DF1BC4101ED /* YapDatabaseSearchQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B728903260D87269523D23FF7DC1E42 /* YapDatabaseSearchQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B05267BEAE81DF5CD23E7D2886ABC41A /* DDLog+LOGV.h in Headers */ = {isa = PBXBuildFile; fileRef = FF9F6D367F29F4F22E4B123FA85D5905 /* DDLog+LOGV.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B19AF3985E562C75530BF4B5622D3962 /* YapMurmurHash.h in Headers */ = {isa = PBXBuildFile; fileRef = F3D51F478213041EDF2CF6713E40C460 /* YapMurmurHash.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B1A8DE3141327B530F4496D802B4AA34 /* YapDatabaseView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BF1FA824D00439E314D3248BED0DEB1 /* YapDatabaseView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B28EA53A343C3B1FBFAEC20C1822A052 /* YapDatabaseHooks.m in Sources */ = {isa = PBXBuildFile; fileRef = BB6B0AE067833BAD26CE71B3C7FAA52D /* YapDatabaseHooks.m */; }; + B35951BF343E8B4586E22B32FA80D69D /* YapDatabaseRelationshipNode.h in Headers */ = {isa = PBXBuildFile; fileRef = C1722730E4F81ABDFAED29D82FBF4006 /* YapDatabaseRelationshipNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B46146D71069405D694389BF78381491 /* YDBCKMergeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C9313269258453FC029327667C6ED90 /* YDBCKMergeInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B54F7445B2EE6D770E78DFCF88D14527 /* YapDatabaseCloudCoreGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = BB91445D1C15384EA833D87DF354F562 /* YapDatabaseCloudCoreGraph.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B60E4638344C0E33C11AD072344633ED /* YapDatabaseAutoViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D5869948ACEB0CC9B6926414493AA112 /* YapDatabaseAutoViewPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B6C02BCC85D8E86C19C394F5164868DF /* YapDatabaseViewPage.h in Headers */ = {isa = PBXBuildFile; fileRef = 76D3F5BEB91FD5F9AE1CE2EF5BE6C0DA /* YapDatabaseViewPage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B73892AC9F3A62727828AD2BCAF4C025 /* YapMurmurHash.m in Sources */ = {isa = PBXBuildFile; fileRef = 93B14B0EBC508525B8FAE9CF0511D2E6 /* YapMurmurHash.m */; }; + B8D9C1DC3BC9125DFC8D3C25C8F16BCC /* YapDatabaseStatement.m in Sources */ = {isa = PBXBuildFile; fileRef = BFB316468589CA433E33161A50B32617 /* YapDatabaseStatement.m */; }; + BA0451AF09637EB155B9C16F9D42E559 /* YapDatabaseCloudKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 35B5F13EEBE84D317CF939C14B0B7C68 /* YapDatabaseCloudKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BAC40227A0BA0EDAA2E1C5814DD40F45 /* YapDatabaseViewTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = B9C0F0CB3678CB2F7E8AF5FFFC36F498 /* YapDatabaseViewTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BBABDAE420EEF451A8F4DA7FADE23C6F /* YapDatabaseRelationship.h in Headers */ = {isa = PBXBuildFile; fileRef = CCFB555BB12F8B5A74381CE5D9898FC2 /* YapDatabaseRelationship.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BD17D63EE59D6759F9EAC8BE3E1B5711 /* YapDatabaseViewChangePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = FDB97AEC408598025D7E58729388ED37 /* YapDatabaseViewChangePrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BD99F442BFB1D3CB170E3CEF9C231DFC /* YapDatabaseCloudCoreOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = AEF7BFABB81991855E9D9440A5F2FAB5 /* YapDatabaseCloudCoreOperation.m */; }; + BDBF817D6C7AA3336CF757C8B6936800 /* YapProxyObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A36D8483FDB32A7B531C19CA93AC91 /* YapProxyObject.m */; }; + BDFC6900D7B2751F924DC99F79DBF8ED /* Reachability-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 85AFCFCDF98443B6345CDF68EF7EFD69 /* Reachability-dummy.m */; }; + BF6DDD26FF59AB3EDB479E74A7B10135 /* YDBCKMappingTableInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A1CDB915A4EB63D15B45A5E3CE380D2 /* YDBCKMappingTableInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF8673C575D6C7F1E7BD6203A16C61D9 /* YapDatabaseOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = E03AB2619369CFB66E9D286438CFB357 /* YapDatabaseOptions.m */; }; + C0A335B07D9B4FCA7A2D01EC6D3A539F /* YapDatabaseView.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB40660E7EFA17F7292E701EBB690C1 /* YapDatabaseView.m */; }; + C0FA733770F0A1C5CD5F4A2514CCDB39 /* YapDatabaseViewState.m in Sources */ = {isa = PBXBuildFile; fileRef = 85A7D3C6F716DD6445E98161F5A2D690 /* YapDatabaseViewState.m */; }; + C1105C84BB89067777E345AA9B3FE4DA /* YDBCKChangeSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 13D880D87484DCD70E70808285CF536C /* YDBCKChangeSet.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C26065FF5D38D250982F6D8DBA4F3444 /* DDAbstractDatabaseLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = D75173ED46540B34DC8D1F3D4D87E54E /* DDAbstractDatabaseLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C310CE7F4FC5E6145490BACAE866364A /* YapDatabaseRelationship.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97E976FD87FCFBDD98E43A1D3B22D579 /* YapDatabaseRelationship.swift */; }; + C315405BCBC79A3DE7C9E48B8DA5A52B /* YapDatabaseCloudCoreOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 26F48588807083BBFD6B6862C1819587 /* YapDatabaseCloudCoreOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C3E94E3060D03C63F12062B9818A1967 /* YapDatabaseAutoViewConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E4BCC7C45B68EB5AA3FC8231C871259 /* YapDatabaseAutoViewConnection.m */; }; + C5277ED1F62E3A00373CCD6FF31A07BA /* YapDatabaseCloudCoreTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = C67C53D9494005B519FFEDEB629FEBB1 /* YapDatabaseCloudCoreTransaction.m */; }; + C543C1B1C47C8DEF740D8E820A5FF041 /* YapCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 123A29626FE64CCB0825798D64C9FC2E /* YapCache.m */; }; + C7147A5BB7863385F655DBDA951E550A /* YapProxyObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 453A9786A9452B24C55F77F5BBDD3123 /* YapProxyObjectPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C7C1A5A0EFD29E67BB4E12725C45F72B /* YapDatabaseSearchResultsViewOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E31EC48A0135D33364CD8B42450D6DB /* YapDatabaseSearchResultsViewOptions.m */; }; + CB0DB0A510BF84E8913F97EDA256F5D8 /* YapDatabase-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BAAA2FB0352BB91ECA3A893DBB427D0 /* YapDatabase-dummy.m */; }; + CBC3A2F154750D8738B7C5A7B8832EC0 /* YapDatabaseCryptoUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = FADBB0CDE767694F3A7CE7BA322EE795 /* YapDatabaseCryptoUtils.m */; }; + CC89B598FE2D4105A8D3AA7E2B9BA8F4 /* DDTTYLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D2DDDAEAE6523007F9F20815ED1CD05 /* DDTTYLogger.m */; }; + CD0137B19E763A0EA4E5EA7354F5EA86 /* YapDatabase-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D2093058F572596A109FD38444860401 /* YapDatabase-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CD148E92B84F62E7F0B99C96245830DA /* YapDatabaseActionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C4FCFA261ED205EB94ADA9C92588CDC /* YapDatabaseActionManager.swift */; }; + CD24DFBED88E5FF875B8181AD570F967 /* YapDatabaseCloudKitTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D187CBBD60813137D2AFAF55C2C36D2 /* YapDatabaseCloudKitTypes.m */; }; + CE45D5894A572DE5A436D89D21736F0B /* YapDatabaseActionManagerTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = B79BB3BEF5D2C3B749C66F641A8EE25D /* YapDatabaseActionManagerTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CE465C82E039E712D09948D9214DA85B /* YapDatabaseFullTextSearchConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = D2569C18A9BC07361B5826C6708C156E /* YapDatabaseFullTextSearchConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CEE0480995DACFA02E83D145BC73C802 /* YapDatabaseFullTextSearchConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D6234A89B8BC032779BA5A2F0D9E932 /* YapDatabaseFullTextSearchConnection.m */; }; + CF5572345349DA0CEAF8398C5AA70ED7 /* YDBCKRecordInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = A5A4A4993708AA8C213D3B20CD881F0B /* YDBCKRecordInfo.m */; }; + D057D91F30AC60ABE2916C86568CE705 /* YapDatabaseSearchQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = AC405F0D3113C75EA6E75929F007E9AF /* YapDatabaseSearchQueue.m */; }; + D1D54EDE6B554012BDBDAFC37969A7D9 /* DDTTYLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = B59D7384023E17FE3B459038E1F4C49F /* DDTTYLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D228AC9550E52F274E5318D5535E8821 /* YapDatabaseSearchResultsView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA2D4030735F324DA1C89D8222397CFC /* YapDatabaseSearchResultsView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D25C6447A3F7AE9D64C82C098CC87132 /* YapDirtyDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 95BCD366DB271E7A97573A453807AA0D /* YapDirtyDictionary.m */; }; + D47BAB51F22F2C0F739709FB07BD6C37 /* YapDatabaseCloudCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 90E9286C01E61051711DB6CFBF92F9A2 /* YapDatabaseCloudCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D50B319EABC5DA7F871D6BFD7E92B47C /* YDBCKRecordInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 814A25AE76661C05BA95ADCE6308B006 /* YDBCKRecordInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D5CB38BE053D8688FC6E7A9F22DCE1B2 /* YapDatabaseQuery.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAEC8A63D42A241118E6DC3C74585942 /* YapDatabaseQuery.swift */; }; + D6450CB5BD23444530AD2838092F1EE7 /* YapDatabaseCloudCoreGraph.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F5557C3FFAFBE851223E1062BD5A4BB /* YapDatabaseCloudCoreGraph.m */; }; + D66A2B4A902D76DAA141144FED306C3E /* DDFileLogger+Buffering.h in Headers */ = {isa = PBXBuildFile; fileRef = A6A7CAC02E7D539193445CA27467B4AE /* DDFileLogger+Buffering.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D67D56FFABA32210AD1F60748E641041 /* YapDatabaseCloudKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B03A443B6F73C5F4C18B7720AF3FD4D /* YapDatabaseCloudKit.swift */; }; + D6EF127C3CED920C93FC1637D87F773A /* YapDatabaseRTreeIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 370D081156B1B9CF39ABD794EC3FBAB7 /* YapDatabaseRTreeIndex.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D75D8B07E5BFCDB7A9C6A19F352FC471 /* YapDatabaseSecondaryIndexSetup.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B167BA04BF9659E1FE0E5C4C2EAAF1 /* YapDatabaseSecondaryIndexSetup.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D81C96BC31629F0F96EBF08A510E6ED7 /* YapTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BABA5F90D27821758375978A45F6889 /* YapTouch.m */; }; + D8AA60A413BEFCF1E3314D69BC46E9C9 /* YapDatabaseSecondaryIndexConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = B2DE864BE23B11217364D108D278C507 /* YapDatabaseSecondaryIndexConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D934026649CD29EE3938E5AF83D5BFF4 /* DDASLLogCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 11054BB8129A1EF6C35A240AE33279FA /* DDASLLogCapture.m */; }; + D9774DEA8A469F0A33ABF659F86A87E5 /* YapMemoryTable.m in Sources */ = {isa = PBXBuildFile; fileRef = 59F5DC6E3A0C700F5B799D789CE38EA7 /* YapMemoryTable.m */; }; + DA86E98F8FF2A768480EA438D5E6D02D /* YapTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = BD4E8F342BC003DCD58275FC3546D146 /* YapTouch.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DCBC1C00A77F9171878F562A8CBE7628 /* DDLegacyMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 77BA7660186654CF8BF1DA4E6F72DF6F /* DDLegacyMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DD0BFA2E94B428A673C43DD27DB13F33 /* YapDatabaseViewPageMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 330A3629082AA781CE02818D0C2BEFD4 /* YapDatabaseViewPageMetadata.m */; }; + DE3057A1B53E982CF4ED7DFD61725767 /* YapDatabaseCrossProcessNotificationTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = A4F6F6AE7841E669689FC27DB270D96D /* YapDatabaseCrossProcessNotificationTransaction.m */; }; + DED9BF10D391B01CBC905F9AA0941DBB /* YDBLogMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C2BF9B8A40ED88A76C930152CD7C347 /* YDBLogMessage.m */; }; + E038C01057A8755720AC3FDAA18A0937 /* YapDatabaseSecondaryIndexHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F3DE0BC2508A99C3038F22D34C949FF /* YapDatabaseSecondaryIndexHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E10440C5C4DF379650D0377E4DA7C072 /* NSDate+YapDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 166D584671C3D55B820C82D3A2E0BF52 /* NSDate+YapDatabase.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E23DB59F5207CD8F2E5FC37A313A45CC /* YapDatabaseQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = 1676DBEC8B2DCE99A0AE3CBACB0A679F /* YapDatabaseQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E2EAACBDA615A90CC450C449527C2295 /* YapBidirectionalCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3158E9F8224799FD55018CED387247C2 /* YapBidirectionalCache.m */; }; + E3C8A942DF2A98B2ACDCF9FBD4E619F4 /* YapActionItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 60E59D23A6031BD1212E8E8A0D179317 /* YapActionItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E48CEF1B9DE9AF53530A8F92E59E7513 /* YapDatabaseHooksTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 8656148183EE3FF86B8DD7C7ABFDCC7D /* YapDatabaseHooksTransaction.m */; }; + E5B03E21C98E1E5DAD82764FC937A64C /* DDAbstractDatabaseLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 28693F75E172D1A8288FFCB5FBB4F7C5 /* DDAbstractDatabaseLogger.m */; }; + E5D89D8EE81E74C00FC39629A4B2AC96 /* YapDatabaseRelationshipOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = E5E85BC4DB308A4BCCF5079627BD807B /* YapDatabaseRelationshipOptions.m */; }; + E681FE4EF87DF0731EC549678923D6C1 /* YapDatabaseCloudCorePipelineDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E816577F8A65ABB95CE2C1AB6E40F23 /* YapDatabaseCloudCorePipelineDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E76D6DE447A25927B591FF6317585AB1 /* YapDatabaseManualView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1AFFC3BB1663C88FAAA095E86872B89 /* YapDatabaseManualView.swift */; }; + E7E70936B68C139F7B6AAB64199518FC /* YapDatabaseCloudCoreOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = F18C0B5E4F2B195F163995D366B41F23 /* YapDatabaseCloudCoreOptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7F8977F60236B7EB57C008FA7DBD4B6 /* YapDatabaseCloudCorePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 31EDF30E4623E289704C098344548C92 /* YapDatabaseCloudCorePrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E82F1809A47CF86538A0B7EC27947504 /* DDOSLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = B16DF51454D5F80DFD25FF24E0BFB6B1 /* DDOSLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E85AB1A472C42E3240C6294F049AF60C /* YapDatabaseCloudCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 49987740C9B56C9CA63108F3370405DC /* YapDatabaseCloudCore.m */; }; + E8BD6CE35859384914615EE4F88C163C /* YapDatabaseSearchResultsViewConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 104D443C264CE672855AEAD5F72DE59C /* YapDatabaseSearchResultsViewConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E8C72F613B1217731DA2C429023B9218 /* YapActionable.h in Headers */ = {isa = PBXBuildFile; fileRef = 32D326B7B030C9D803CA70F4A2A56E1B /* YapActionable.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E9FC0482EB9BC34E4557F0B6E2A82209 /* YapDatabaseFilteredViewTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 301D1F5564A374BD06595870D5AC5049 /* YapDatabaseFilteredViewTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EB4310B3A9E9EAC36D0419002ECA0873 /* YapDatabaseManualView.m in Sources */ = {isa = PBXBuildFile; fileRef = 262511120A4433E00B7E693F035EF467 /* YapDatabaseManualView.m */; }; + EDF84031A5E9362A92EC0634DB3A41BB /* YapDatabaseRelationshipEdge.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DB226AE700501C9111CB3E87610B80C /* YapDatabaseRelationshipEdge.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EF1E390772FC2A6B2EE246B1F7B34AF6 /* YapDatabaseFilteredViewTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 23A77FB8FB849F5D4F25719711C184F4 /* YapDatabaseFilteredViewTransaction.m */; }; + EF31056A82BC651812CA76DD33EF4B88 /* YapDatabaseCloudKitOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A050CD00C1D70A92D4C4F086380B089 /* YapDatabaseCloudKitOptions.m */; }; + F2B3C1BF0C21691E88BF577AB31464EB /* YapDatabaseRelationshipTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = A7029BADA556B063B8CAD2A02FD74930 /* YapDatabaseRelationshipTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F450D9C5CF776AE293F37DD65F93C321 /* YapDatabaseActionManagerConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DCA750081E7C69D90748F850C5435B /* YapDatabaseActionManagerConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F484F89DB24166A4DC4D4AD022114EC6 /* YapDatabaseOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = C501B18F802524EA603BBB914F39884C /* YapDatabaseOptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F60246B92E7690402E72E120E7B560F5 /* YapDatabaseCloudKitTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EECDE7BB1A798CB65DCB896D75D566A /* YapDatabaseCloudKitTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F6BDE1009EABD2C0C4D1C4BCDF56052A /* YapDatabaseConnectionState.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FA631381D2F5966E3661F4159CB94AD /* YapDatabaseConnectionState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F6F22B2E26DCC4B5548FBD4708320743 /* CocoaLumberjack.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A0D5E78CDF7C7C5D143F46F0868CF8C /* CocoaLumberjack.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F71BA8A4CDA9B128BBB32AD16A6F1ED2 /* YapDatabaseConnectionConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 79C303BDBE2AA305661D708D0F4459CF /* YapDatabaseConnectionConfig.m */; }; + F9D5F3427A3FEC6C36613C633C626503 /* YapDatabaseAtomic.h in Headers */ = {isa = PBXBuildFile; fileRef = 47D1126A7E585B606871CD1B6F9281E6 /* YapDatabaseAtomic.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FA2FEBDF6F5C9E3C04586AB9D056FEBC /* YapDatabaseSecondaryIndexConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 597C82C5DE3AE81B6BCEDFAAB789929B /* YapDatabaseSecondaryIndexConnection.m */; }; + FA646634BBD8223C695F082C0D9FC097 /* DDOSLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = E7B986A8529A9C1ED6AD4A18D0223B03 /* DDOSLogger.m */; }; + FB7E7EA641716EEF5E6217C603EA418F /* YapDatabaseViewMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = 03F32D9F23909DA5391F35AC1A3F757D /* YapDatabaseViewMappings.m */; }; + FC7FA22358D6F36977BB7B2DAD1AAF4E /* YapDatabaseSearchResultsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66A123F94DFC07C0589B8D24B55CF3FA /* YapDatabaseSearchResultsView.swift */; }; + FD2FF86027DB2A2893B29A011C2D34E7 /* YDBCKMappingTableInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 087E7327D63BB3B1E8D8651CC274145C /* YDBCKMappingTableInfo.m */; }; + FE1E7A533C9756C1A46E4F05143D3A33 /* YapDatabaseConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = E846D28CC65045B2E1485AFD556ABB90 /* YapDatabaseConnection.m */; }; + FECAEF6A137857A10F287369908501D2 /* YapDatabaseManualViewConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E81B3092F0E07E78C85AD807BD32377 /* YapDatabaseManualViewConnection.m */; }; + FF71919E6DCF509691F4C96F7CE9E1E8 /* YapDatabaseConnectionProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = A7BA3D49805FAE5346A6B45E3F1F61A5 /* YapDatabaseConnectionProxy.m */; }; + FF7A857339A63C01C85FA689596B167A /* YapDatabaseViewTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 46F7E54B0BE1D4583C6E7385A6AC871A /* YapDatabaseViewTransaction.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 1DD02BFB175EC55DD68EAFB0D44BB63F /* PBXContainerItemProxy */ = { + 09D524E542E3998F5EFD59B0DD20D898 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = A9D9DCCE5442795D0AD9E99D86389328; - remoteInfo = CocoaLumberjack; + remoteGlobalIDString = CAA047C0F5E4106F3904E8497FA17F97; + remoteInfo = Reachability; }; - A6C0411B710435191620A64FC983F0E2 /* PBXContainerItemProxy */ = { + 55FA18B1A11C91782AC46A52358E0B6D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = A9D9DCCE5442795D0AD9E99D86389328; + remoteGlobalIDString = E95654B155D25890BE8E26081FCA8265; remoteInfo = CocoaLumberjack; }; - F6DA5FCA07EC0C95DCAA61A5496F81B5 /* PBXContainerItemProxy */ = { + E11C873C4278F81E890D5FF114324F3C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = E4124F3A6F096485F1B89CCDB3C06C07; + remoteGlobalIDString = 93855F3A5D1C4AF19C4A49AA90D4AD14; remoteInfo = YapDatabase; }; - FDCB4FF4DA1FA2F55D9504A7FF4F8546 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 52B639C6204FFEAE26068A2BAED3195E; - remoteInfo = Reachability; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00FD4C9040406CCC446A409F96140A07 /* Pods-CloudKitTodo-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CloudKitTodo-resources.sh"; sourceTree = ""; }; - 018B403D669DFADB13F22248AEBE9858 /* DDMultiFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDMultiFormatter.h; path = Classes/Extensions/DDMultiFormatter.h; sourceTree = ""; }; - 02A861CF5913B61D2280AE86C3CF7947 /* DDDispatchQueueLogFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDDispatchQueueLogFormatter.m; path = Classes/Extensions/DDDispatchQueueLogFormatter.m; sourceTree = ""; }; - 039697832C7577931624DB19A1E3266D /* DDASLLogCapture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDASLLogCapture.h; path = Classes/DDASLLogCapture.h; sourceTree = ""; }; - 03BBF770B921DF03CA30F286D22A46D1 /* DDContextFilterLogFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDContextFilterLogFormatter.m; path = Classes/Extensions/DDContextFilterLogFormatter.m; sourceTree = ""; }; - 05B6E1EEA70594516287DF6660B75847 /* YDBCKRecordTableInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKRecordTableInfo.m; sourceTree = ""; }; - 06783BEC6E1B58BA997DCBE57ACA950A /* YapDatabaseSecondaryIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSecondaryIndex.h; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.h; sourceTree = ""; }; - 07053D894ACF7D4F9FD0B01E259DC37F /* YapMurmurHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapMurmurHash.h; sourceTree = ""; }; - 08FB2E69151A31AE1A76823884089177 /* YapDatabaseSecondaryIndexSetup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSecondaryIndexSetup.m; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.m; sourceTree = ""; }; - 09BE3033C8E5EBE013DAA91256F31233 /* YapDatabaseViewTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseViewTypes.m; path = YapDatabase/Extensions/AutoView/YapDatabaseViewTypes.m; sourceTree = ""; }; - 0D020BC2600A51A14B28508E3EE801D0 /* YapDatabaseFilteredViewTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFilteredViewTypes.m; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredViewTypes.m; sourceTree = ""; }; - 0E16F67514521D6C0DBD469F534B52EC /* YapActionable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapActionable.h; path = YapDatabase/Extensions/ActionManager/YapActionable.h; sourceTree = ""; }; - 0EE7FCC054EA7D24BD73BA8DDAA051DA /* YapDatabasePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabasePrivate.h; sourceTree = ""; }; - 11BF2A0AC74317457F59DE141C8CAD7E /* YapDatabaseFullTextSearch.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFullTextSearch.m; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.m; sourceTree = ""; }; - 12D197B633BAB118099F780187113D39 /* YapDatabaseManualViewTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseManualViewTransaction.m; path = YapDatabase/Extensions/ManualView/YapDatabaseManualViewTransaction.m; sourceTree = ""; }; - 132C7159C99BB07A4CB992D99449782A /* YapDatabaseAutoView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseAutoView.m; path = YapDatabase/Extensions/AutoView/YapDatabaseAutoView.m; sourceTree = ""; }; - 14DB86D1FB028086140E96723536E3C2 /* YapDatabaseTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseTransaction.h; path = YapDatabase/YapDatabaseTransaction.h; sourceTree = ""; }; - 1630A9DC2E4923C63DF9D7089345082D /* YapDatabaseRTreeIndexPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseRTreeIndexPrivate.h; sourceTree = ""; }; - 16A91FEB31A81C28C550BC19C09996BD /* YapDatabaseLogging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseLogging.m; sourceTree = ""; }; - 16CB3AB5FBB3BD1FFB24578B6D7DF4B2 /* NSDictionary+YapDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+YapDatabase.m"; sourceTree = ""; }; - 177F8DEAD231C4854DF04693089CEB2A /* YapDatabaseRelationshipNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRelationshipNode.h; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipNode.h; sourceTree = ""; }; - 17E4570CBC80142F7CB25000E4440F64 /* YapManyToManyCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapManyToManyCache.m; sourceTree = ""; }; - 1898AC07F198B13741B55E8ADA57618C /* YapDatabaseCloudCorePipeline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCorePipeline.h; sourceTree = ""; }; - 1A45CD961CCE233D329784D970CF131A /* YapProxyObjectPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapProxyObjectPrivate.h; sourceTree = ""; }; - 1A4E6E66A15DCF40C39265C9D94E1087 /* YapDatabaseCloudCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudCore.h; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCore.h; sourceTree = ""; }; - 1B1E8AA9FA28E0157C2D9797357C425E /* YDBCKChangeQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKChangeQueue.h; sourceTree = ""; }; - 1B601520D70CAA2023709A54E6F118DB /* YapDatabaseRelationshipEdgePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseRelationshipEdgePrivate.h; sourceTree = ""; }; - 1BF5F7D3EE234CC59B65F810AAF25DE3 /* Reachability-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reachability-prefix.pch"; sourceTree = ""; }; - 1D195546D9B8979D2BDA69B4AC48A1C1 /* YapDatabaseSearchResultsViewOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSearchResultsViewOptions.h; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsViewOptions.h; sourceTree = ""; }; - 1E6E30529CB14C2CE9434F496C56D06D /* YapDatabaseViewTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseViewTransaction.m; path = YapDatabase/Extensions/View/YapDatabaseViewTransaction.m; sourceTree = ""; }; - 20BA54A0F2D8F81B3F76559A6EEE912D /* Pods-CloudKitTodo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CloudKitTodo.release.xcconfig"; sourceTree = ""; }; - 21C4819D3580D952A393EDEBA4B04D7A /* libCocoaLumberjack.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCocoaLumberjack.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 2230FF8D796C90EECDB107E0110C212E /* YapDatabaseFilteredView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFilteredView.m; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredView.m; sourceTree = ""; }; - 22E51F2F52F50340FCAAEEEB652F26C3 /* YapDatabaseCloudCoreOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudCoreOptions.h; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCoreOptions.h; sourceTree = ""; }; - 2310CEA0EDD58D4A0F8D223CE886EB4C /* YapDatabaseSecondaryIndexSetup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSecondaryIndexSetup.h; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.h; sourceTree = ""; }; - 2409D092496ACAF6D4EF498D44F18150 /* YDBCKRecordInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKRecordInfo.h; sourceTree = ""; }; - 2470CA52B299D3C2D3C743930F1FC2F4 /* CocoaLumberjack.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CocoaLumberjack.h; path = Classes/CocoaLumberjack.h; sourceTree = ""; }; - 24AFB736BE9B3A1E890F679046E7D72E /* YapDatabaseAtomic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseAtomic.h; sourceTree = ""; }; - 27474764F8A683C020EFF9CE3F7D39D2 /* DDFileLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDFileLogger.h; path = Classes/DDFileLogger.h; sourceTree = ""; }; - 2770FCE96C4071EF5349CBDDC96DEB60 /* YapTouch.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapTouch.m; sourceTree = ""; }; - 27C136600EC56791007EAA5F8D02C9C2 /* YapDatabaseFullTextSearchConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFullTextSearchConnection.h; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.h; sourceTree = ""; }; - 28085C6FD2F83EF7477934B5EA62C828 /* YapDatabaseSecondaryIndexTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSecondaryIndexTransaction.h; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.h; sourceTree = ""; }; - 2919E503739018F479CFCC44471564C7 /* DDAssertMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDAssertMacros.h; path = Classes/DDAssertMacros.h; sourceTree = ""; }; - 29D05F0A5B53C105BAFB0564E061275F /* YapDatabaseFullTextSearchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFullTextSearchHandler.h; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchHandler.h; sourceTree = ""; }; - 2A475B7DA333D958CE6A08C14B382A14 /* DDMultiFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDMultiFormatter.m; path = Classes/Extensions/DDMultiFormatter.m; sourceTree = ""; }; - 2B28C665A9FCDB9C86B48640F410D4FC /* YapDatabaseFullTextSearchConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFullTextSearchConnection.m; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.m; sourceTree = ""; }; - 2B9062B910594FA040BC06B7D48901E5 /* YapDatabaseHooksPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseHooksPrivate.h; sourceTree = ""; }; - 2C78662D1D5FED14BDA0E38D89CE4F13 /* YapRowidSet.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; path = YapRowidSet.mm; sourceTree = ""; }; - 2E6714012CCBF9DF13600AC381E537E2 /* YapDatabaseSecondaryIndexConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSecondaryIndexConnection.h; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.h; sourceTree = ""; }; - 3155D8E0E805EC632182B38551BF061A /* YapDatabaseCloudCoreConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudCoreConnection.h; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCoreConnection.h; sourceTree = ""; }; - 319D7F4B1424860E91439CB4306A0FFB /* NSDictionary+YapDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+YapDatabase.h"; sourceTree = ""; }; - 32026F5069D840DB5C0879D93B5FAC7A /* YapMutationStack.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapMutationStack.h; sourceTree = ""; }; - 3317ECC9C5EC16D8BD251B5EEE2C5195 /* YapDatabaseView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseView.m; path = YapDatabase/Extensions/View/YapDatabaseView.m; sourceTree = ""; }; - 33422A84EE4D2CE044A15ED7F715522E /* YDBCKAttachRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKAttachRequest.m; sourceTree = ""; }; - 33CD89FD8C0920B81E0179838A4C01A9 /* libReachability.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libReachability.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 34B70FE1A714BA3036CAA35B222B7325 /* YapNull.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapNull.m; sourceTree = ""; }; - 353DE5F5BA385A9F47E6B37309FCC7BA /* YapDatabaseRTreeIndexTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRTreeIndexTransaction.m; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexTransaction.m; sourceTree = ""; }; - 35D7FF45DAC35CC2848DB25EFB7953AC /* YDBCKMappingTableInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKMappingTableInfo.h; sourceTree = ""; }; - 35ED255FA0C08CD23F3B60C17444197E /* Reachability.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Reachability.xcconfig; sourceTree = ""; }; - 36672A70772176268A93A24574E7D73A /* YapDatabaseFilteredViewConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFilteredViewConnection.h; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredViewConnection.h; sourceTree = ""; }; - 36E2A0B2CE058779063CA3C544DD6D77 /* YapDatabaseHooksTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseHooksTransaction.m; path = YapDatabase/Extensions/Hooks/YapDatabaseHooksTransaction.m; sourceTree = ""; }; - 3751AB8BEDF465401C5FA65B97558F2E /* YapDatabaseFilteredViewPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseFilteredViewPrivate.h; sourceTree = ""; }; - 37EB901D407502DF5B095564166362D4 /* YapDatabaseActionManagerTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseActionManagerTransaction.h; path = YapDatabase/Extensions/ActionManager/YapDatabaseActionManagerTransaction.h; sourceTree = ""; }; - 3837FA37FCAE0A8BD14C4F71894234F0 /* CocoaLumberjack.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CocoaLumberjack.xcconfig; sourceTree = ""; }; - 3B58ACAA1D91A577B32E8C52EC83BED8 /* YapDatabaseAutoViewConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseAutoViewConnection.m; path = YapDatabase/Extensions/AutoView/YapDatabaseAutoViewConnection.m; sourceTree = ""; }; - 3B74B09A58D7BA0A64E66EDEA1742B56 /* YapTouch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapTouch.h; sourceTree = ""; }; - 3CB2AF9F4A2D5433AC123A9AECE36793 /* YapDatabaseFullTextSearchTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFullTextSearchTransaction.h; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.h; sourceTree = ""; }; - 3DBB4B1A8F00EF9BA733C71CFA9C2950 /* YapDatabaseManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseManager.h; sourceTree = ""; }; - 3DD85112B0511D0D005F8D298906B47E /* YapDatabaseViewRangeOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseViewRangeOptions.m; sourceTree = ""; }; - 3F0EAAC9123BE895D7EF99B984841D76 /* YapDatabaseExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseExtension.h; sourceTree = ""; }; - 409A781FACEF3FF1AA7A11417FCB6604 /* YapDatabaseAutoViewConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseAutoViewConnection.h; path = YapDatabase/Extensions/AutoView/YapDatabaseAutoViewConnection.h; sourceTree = ""; }; - 40ABE37A0863C13DF2288C0E457DC223 /* YDBCKMergeInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKMergeInfo.h; sourceTree = ""; }; - 4283231EDEACBEEF2FD969E91F8C65A4 /* YapDatabaseManualViewTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseManualViewTransaction.h; path = YapDatabase/Extensions/ManualView/YapDatabaseManualViewTransaction.h; sourceTree = ""; }; - 43A23F6916CA05512A5C70FE31BE8254 /* YapDatabaseRTreeIndexSetup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRTreeIndexSetup.h; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexSetup.h; sourceTree = ""; }; - 446676AF3848F63B04882F131FC24218 /* YapDatabaseStatement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseStatement.h; sourceTree = ""; }; - 4493DD595FC8ACD34923115E2838B650 /* YapDatabaseRelationshipTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRelationshipTransaction.h; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipTransaction.h; sourceTree = ""; }; - 44D46B84D3215341069BAAB771FAF302 /* YapDatabaseCrossProcessNotificationConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCrossProcessNotificationConnection.m; path = YapDatabase/Extensions/CrossProcessNotification/YapDatabaseCrossProcessNotificationConnection.m; sourceTree = ""; }; - 4599A5ED2DB00A78542F6FA88440F28D /* YapDatabaseViewPageMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewPageMetadata.h; sourceTree = ""; }; - 4662158BF3C128CA0AC0978E7A7F61DA /* YapDatabaseRelationshipTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRelationshipTransaction.m; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipTransaction.m; sourceTree = ""; }; - 48AECECBD70C182E9AAA0C4BD0DBE747 /* YapDatabaseExtensionConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseExtensionConnection.h; sourceTree = ""; }; - 498C35E893D006CC49E9F8146924B1C7 /* YapDatabaseRelationshipOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRelationshipOptions.m; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipOptions.m; sourceTree = ""; }; - 4B07C5EBFD06C3246E6DAB903361E184 /* DDContextFilterLogFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDContextFilterLogFormatter.h; path = Classes/Extensions/DDContextFilterLogFormatter.h; sourceTree = ""; }; - 4B22D3E35E0259AB4EC60FBBA51D7B6B /* YapDatabaseSecondaryIndexOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSecondaryIndexOptions.h; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexOptions.h; sourceTree = ""; }; - 4C3A05CA5F484D89FBF0A1968DA44F7E /* YapCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapCache.h; sourceTree = ""; }; - 4C47E28A07C754F8FFA16D4E9719A07C /* YapDatabaseViewPage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewPage.h; sourceTree = ""; }; - 4C8824C12B080CA5D6D3539FD638E2CA /* YapDatabaseCloudCoreGraph.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCoreGraph.h; sourceTree = ""; }; - 4CBFC7CC430E1D2EFEA5C46BF30DD0C0 /* YapDatabaseSecondaryIndexOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSecondaryIndexOptions.m; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexOptions.m; sourceTree = ""; }; - 4D57826F6CB9E2E80A059F83AD06E1C2 /* YapDatabaseActionManagerTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseActionManagerTransaction.m; path = YapDatabase/Extensions/ActionManager/YapDatabaseActionManagerTransaction.m; sourceTree = ""; }; - 4EBE03E124143DE358C8FFCE64CCE36C /* YapDatabaseViewState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseViewState.m; sourceTree = ""; }; - 527E3A749FBA0E8A14EE820D19782571 /* YapSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapSet.m; sourceTree = ""; }; - 52A9A014F7DE085121BB80CC12DED0FD /* YapDatabaseViewRangeOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewRangeOptions.h; sourceTree = ""; }; - 52D2167F158840C823961E1432DD5465 /* YapDatabaseCloudKitTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudKitTypes.h; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTypes.h; sourceTree = ""; }; - 53961A117B1C8CD4E4AF766DDFE01FFF /* DDTTYLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDTTYLogger.h; path = Classes/DDTTYLogger.h; sourceTree = ""; }; - 5420F7CC4303B69382C43E6E881106A9 /* YapDatabaseConnectionConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseConnectionConfig.h; sourceTree = ""; }; - 5571364B744D8C7E76E698F18B624538 /* YapDatabaseCloudKitOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudKitOptions.m; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitOptions.m; sourceTree = ""; }; - 55A1FBA20B6FA63D9B1FD3E81BE853D2 /* YapDatabaseViewMappings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewMappings.h; sourceTree = ""; }; - 55A8B18879CDDFBE84A0605B1E04C685 /* YapNull.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapNull.h; sourceTree = ""; }; - 567206C6375105E3EE15F795EBADDE81 /* YapWhitelistBlacklist.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapWhitelistBlacklist.m; sourceTree = ""; }; - 5776CE9E4F53C17FC136BEECA29513F4 /* YapDatabaseSearchResultsView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSearchResultsView.h; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsView.h; sourceTree = ""; }; - 580DEAEA6B93C29BB6CEB91C380AC31E /* YapDatabaseActionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseActionManager.h; path = YapDatabase/Extensions/ActionManager/YapDatabaseActionManager.h; sourceTree = ""; }; - 5920BA416C7DAC3B824161BE752E1B61 /* YapDatabaseRTreeIndexOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRTreeIndexOptions.h; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexOptions.h; sourceTree = ""; }; - 59ECC207808E198E30B3E1687871CB9F /* YapDatabaseRTreeIndexTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRTreeIndexTransaction.h; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexTransaction.h; sourceTree = ""; }; - 5A418EC203C21FF9B446C3BB3BF3C4B2 /* YapDatabaseFullTextSearchSnippetOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFullTextSearchSnippetOptions.h; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchSnippetOptions.h; sourceTree = ""; }; - 5A9AF0ED7788C8A5007E75F94678C94C /* YapDatabaseSearchResultsViewTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSearchResultsViewTransaction.m; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsViewTransaction.m; sourceTree = ""; }; - 5A9CE885195D70B27D7A3ECF239B87F7 /* Reachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = ""; }; - 5BA0B0AA274373FDEA00F0E73442CE54 /* YapDatabaseSecondaryIndexTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSecondaryIndexTransaction.m; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.m; sourceTree = ""; }; - 5CCDDFADB8E838B0FEDE68DF66DB0637 /* YapDatabaseSearchResultsViewTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSearchResultsViewTransaction.h; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsViewTransaction.h; sourceTree = ""; }; - 5D5274AC4960185C205C7FB5DF4B10C1 /* YapDatabaseConnectionState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseConnectionState.m; sourceTree = ""; }; - 5F95C55E4699B19F29E3C75CFF969E87 /* YapDatabaseRelationshipPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseRelationshipPrivate.h; sourceTree = ""; }; - 608A14B1661D26815E138126F7594181 /* YapProxyObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapProxyObject.m; sourceTree = ""; }; - 62994961B0B091E0745614B1A6059CB0 /* DDAbstractDatabaseLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDAbstractDatabaseLogger.h; path = Classes/DDAbstractDatabaseLogger.h; sourceTree = ""; }; - 62C82EBE9337E07444655C69430E345C /* YapDatabaseCloudKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudKit.h; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKit.h; sourceTree = ""; }; - 62F1F1D656AD496B8C8996705913D013 /* YapDatabaseFullTextSearchSnippetOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFullTextSearchSnippetOptions.m; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchSnippetOptions.m; sourceTree = ""; }; - 63243C53951E88E63DF057974D8435A0 /* YapDatabaseView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseView.h; path = YapDatabase/Extensions/View/YapDatabaseView.h; sourceTree = ""; }; - 6413EE0BECB702EB33455C4AE92CCAAD /* YapProxyObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapProxyObject.h; sourceTree = ""; }; - 64D313E0E5AE2710923FFB1AFAC52FCF /* yap_vfs_shim.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = yap_vfs_shim.h; sourceTree = ""; }; - 652F0E374DF630AB6B537636BB75F4FA /* NSDate+YapDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSDate+YapDatabase.m"; sourceTree = ""; }; - 656D44B8BEED4654030675D048CE2F12 /* YapDatabaseFullTextSearchTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFullTextSearchTransaction.m; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.m; sourceTree = ""; }; - 65982A6E8BA27E160C3E885E0DE670EA /* YapMutationStack.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapMutationStack.m; sourceTree = ""; }; - 685B3E6E2CDFA4F3144637A093DEF9C0 /* YDBCKChangeQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKChangeQueue.m; sourceTree = ""; }; - 68D2D3E1B66C0A0EC49A8049A177CA4B /* YDBCKChangeRecord.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKChangeRecord.h; sourceTree = ""; }; - 6954969ABF3F5BBE4D6EE72A69D5D64A /* YapDatabaseSearchResultsViewOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSearchResultsViewOptions.m; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsViewOptions.m; sourceTree = ""; }; - 6A2678DBBB07013440E498FCA0524E75 /* YapDatabaseRelationshipEdge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRelationshipEdge.h; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipEdge.h; sourceTree = ""; }; - 6B968CDB63FEE3CCA98D10DF0376DA25 /* YapDatabaseCrossProcessNotification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCrossProcessNotification.m; path = YapDatabase/Extensions/CrossProcessNotification/YapDatabaseCrossProcessNotification.m; sourceTree = ""; }; - 6CB4F7103E21630DA4D19E73371C8859 /* YapManyToManyCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapManyToManyCache.h; sourceTree = ""; }; - 6D3BA25B6B4F24013B5759D8E8BB288F /* DDASLLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDASLLogger.m; path = Classes/DDASLLogger.m; sourceTree = ""; }; - 6E1F9463B4A6CB956B70915027E01FC3 /* DDLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDLog.h; path = Classes/DDLog.h; sourceTree = ""; }; - 6FEB0C93C5BD1959F652E157D35E47FC /* YDBCKRecord.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKRecord.h; sourceTree = ""; }; - 7096C0448F7BADB48F11423A50CAB768 /* YapDatabaseAutoViewTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseAutoViewTransaction.h; path = YapDatabase/Extensions/AutoView/YapDatabaseAutoViewTransaction.h; sourceTree = ""; }; - 70E7547FD0039324F0919C75A74FCDC3 /* YDBCKMappingTableInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKMappingTableInfo.m; sourceTree = ""; }; - 712EB4914F4EB302921DE1E41830EE55 /* YapDatabaseRelationship.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRelationship.m; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationship.m; sourceTree = ""; }; - 72146F42AB9B65887C722DFFA0F9205F /* YapDatabaseRTreeIndexSetup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRTreeIndexSetup.m; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexSetup.m; sourceTree = ""; }; - 723C94106B1456063AB39E1D3EAFE14E /* YapDatabaseExtensionTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseExtensionTypes.h; sourceTree = ""; }; - 742F74BE3C02F901FF00529A4C9EC7F3 /* YapDatabaseManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseManager.m; sourceTree = ""; }; - 7605D82CA34B405A20F05F4B89F915CC /* YapSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapSet.h; sourceTree = ""; }; - 763E748E131FB51F36C52604EF847386 /* YapDatabaseHooks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseHooks.h; path = YapDatabase/Extensions/Hooks/YapDatabaseHooks.h; sourceTree = ""; }; - 773E939C82314587EBE788E1609BA93F /* YapReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapReachability.h; sourceTree = ""; }; - 783D42AB2AFD709CAC6388031A9EB92A /* YapDatabaseViewLocator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewLocator.h; sourceTree = ""; }; - 78F30CC432A006055C318C380AB14B1E /* YapDatabaseFilteredView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFilteredView.h; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredView.h; sourceTree = ""; }; - 7ACA8883846880AD84B44DC6AD2BDC1B /* YapDatabaseCloudCorePipeline.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCloudCorePipeline.m; sourceTree = ""; }; - 7AD759CF857C53665D54776D3B9BC36D /* YapDatabaseSearchQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSearchQueue.m; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchQueue.m; sourceTree = ""; }; - 7BE9D83D8230384E8A1E3123522A26DD /* YapDatabaseRTreeIndexConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRTreeIndexConnection.h; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexConnection.h; sourceTree = ""; }; - 7D6932DE3FAD438735682AEBFF5B640D /* YapDatabaseRelationshipOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRelationshipOptions.h; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipOptions.h; sourceTree = ""; }; - 7E0300B8EB45BD2B610C72ECACBBEA6F /* YapMurmurHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapMurmurHash.m; sourceTree = ""; }; - 7E3B7603A968773681855321B5058078 /* YapDatabaseSearchResultsView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSearchResultsView.m; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsView.m; sourceTree = ""; }; - 7E5F63A9F778BEFE1F7C9B66DF65FBBB /* DDLogMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDLogMacros.h; path = Classes/DDLogMacros.h; sourceTree = ""; }; - 7F069331EC61E9D274BA40718F0E8349 /* Pods-CloudKitTodo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CloudKitTodo-acknowledgements.markdown"; sourceTree = ""; }; - 7FAC1B6CA944FA3E417C412ED5A8657D /* YapDatabaseCloudCore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudCore.m; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCore.m; sourceTree = ""; }; - 80400DD19103B51138062D4A0BD3DC8D /* DDDispatchQueueLogFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDDispatchQueueLogFormatter.h; path = Classes/Extensions/DDDispatchQueueLogFormatter.h; sourceTree = ""; }; - 8046B80AD8EA44E6B89607D72B01F4A6 /* YapDatabaseCloudKitTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudKitTransaction.h; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.h; sourceTree = ""; }; - 8115461217D5CE485224F41EB1B9E74A /* YapDatabaseManualViewConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseManualViewConnection.h; path = YapDatabase/Extensions/ManualView/YapDatabaseManualViewConnection.h; sourceTree = ""; }; - 819AF79AC184131E8EF6A51742DEC81B /* yap_vfs_shim.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = yap_vfs_shim.m; sourceTree = ""; }; - 8265A6748AA95A678811E939F791B15F /* YapDatabaseRTreeIndexHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRTreeIndexHandler.m; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexHandler.m; sourceTree = ""; }; - 82B13C59CC050B0FEAFB4837B944109D /* YapDatabaseStatement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseStatement.m; sourceTree = ""; }; - 8341304A140E835C0E1BB88310732CF0 /* YapActionItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapActionItem.m; path = YapDatabase/Extensions/ActionManager/YapActionItem.m; sourceTree = ""; }; - 838A0DBB7BD1F4EB016416D93B5E74F6 /* YapDatabaseActionManagerPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseActionManagerPrivate.h; sourceTree = ""; }; - 83E686D8AF083B8C95F9A02596115551 /* YapDatabaseCloudCorePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCorePrivate.h; sourceTree = ""; }; - 87327DE811DCFED5C2754E29C62E8A74 /* YapDatabaseCloudCoreOperationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCoreOperationPrivate.h; sourceTree = ""; }; - 88254EAEC6B013F26CDA8C87A72ECF53 /* DDAbstractDatabaseLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDAbstractDatabaseLogger.m; path = Classes/DDAbstractDatabaseLogger.m; sourceTree = ""; }; - 88AB9E6E95ED9752413FF6041D48A6A1 /* YapDatabaseExtensionTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseExtensionTransaction.h; sourceTree = ""; }; - 88C83CDCD12481FBB37436BB54068CFA /* YapDatabaseCloudCoreConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudCoreConnection.m; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCoreConnection.m; sourceTree = ""; }; - 8A613D5EC3696611D99F1F34E102C334 /* DDFileLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDFileLogger.m; path = Classes/DDFileLogger.m; sourceTree = ""; }; - 8AA91240EAEE0EE0835C05691579FF48 /* YapDatabaseViewChange.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseViewChange.m; sourceTree = ""; }; - 909D7AB401DD4027037B9A3CB4CF110B /* YapDatabaseViewTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseViewTransaction.h; path = YapDatabase/Extensions/View/YapDatabaseViewTransaction.h; sourceTree = ""; }; - 914F71F83B5BA4C3E544653E8B6CD7F7 /* YapDatabaseConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseConnection.h; path = YapDatabase/YapDatabaseConnection.h; sourceTree = ""; }; - 91D32BFF1C555995E8A56FD4F9BB17C6 /* YapDatabaseRelationshipConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRelationshipConnection.m; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipConnection.m; sourceTree = ""; }; - 92533212BE8155942338841BB18835EA /* YDBCKChangeRecord.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKChangeRecord.m; sourceTree = ""; }; - 92D888B1EBA4B1834BFE8F52B7A3DBFD /* YapDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabase.m; path = YapDatabase/YapDatabase.m; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9462CE0AC413A31AAFFB216DA72C3E3B /* YapDatabaseViewMappingsPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewMappingsPrivate.h; sourceTree = ""; }; - 952736898C9DCE62CE381DFC309631DE /* YapDatabaseViewTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseViewTypes.h; path = YapDatabase/Extensions/AutoView/YapDatabaseViewTypes.h; sourceTree = ""; }; - 96B89A6BB04F40A0812B5433D0956217 /* YapDatabaseConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseConnection.m; path = YapDatabase/YapDatabaseConnection.m; sourceTree = ""; }; - 96E85BA7EC10E6F4B54C6FEABDFAD839 /* YapDatabaseQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseQuery.m; sourceTree = ""; }; - 96F3EC5CEC6806C37579377868AA2529 /* YapDatabaseViewConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseViewConnection.h; path = YapDatabase/Extensions/View/YapDatabaseViewConnection.h; sourceTree = ""; }; - 976590F620695A4354FE2EC2ABAA9F11 /* YapDatabaseCloudKitTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudKitTypes.m; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTypes.m; sourceTree = ""; }; - 97D7E984AA2ED06FC886024282B47207 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 97EBC4D379A02101DF331E79ED3A79BC /* YapDatabaseExtensionPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseExtensionPrivate.h; sourceTree = ""; }; - 97F8D507EBA8C51D4453213EF1C6255B /* YapDatabaseCloudCoreTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudCoreTransaction.h; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCoreTransaction.h; sourceTree = ""; }; - 980A8D0CDC79441C29548033630A11A6 /* YapDatabaseRTreeIndexOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRTreeIndexOptions.m; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexOptions.m; sourceTree = ""; }; - 996DAA4F6E5412D07182A97386D397A4 /* YapDatabaseViewLocator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseViewLocator.m; sourceTree = ""; }; - 9A1D5E7BD7D100FBC5BB13A3BAC6CAAE /* YapDatabaseActionManagerConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseActionManagerConnection.m; path = YapDatabase/Extensions/ActionManager/YapDatabaseActionManagerConnection.m; sourceTree = ""; }; - 9C324596EDCF7E609C42019A25E86643 /* YapDatabaseFilteredViewConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFilteredViewConnection.m; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredViewConnection.m; sourceTree = ""; }; - 9CF942998AE2693B6058A66B11A49DCD /* YapDatabaseRelationshipConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRelationshipConnection.h; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipConnection.h; sourceTree = ""; }; - 9D36C7B94A2DB121983D176E294D034A /* YapActionItemPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapActionItemPrivate.h; sourceTree = ""; }; - A111BEAC290EBA7277DB97C7B3AD7D68 /* YapDatabaseCloudCorePipelineDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCorePipelineDelegate.h; sourceTree = ""; }; - A132DBDC8C60878CE61E263614EC2B4B /* YapReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapReachability.m; sourceTree = ""; }; - A38CC41E998861271E94328828343747 /* YapDatabaseRTreeIndexConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRTreeIndexConnection.m; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexConnection.m; sourceTree = ""; }; - A45A07D2ED8D2BB7C5420466115D0E72 /* YapDirtyDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDirtyDictionary.h; sourceTree = ""; }; - A5D528C0E6946A80F3C7CBDC619CE11D /* YapDatabaseViewOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseViewOptions.h; path = YapDatabase/Extensions/View/YapDatabaseViewOptions.h; sourceTree = ""; }; - A6295F37EA630F688AAE90851275D0C2 /* Pods-CloudKitTodo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CloudKitTodo.debug.xcconfig"; sourceTree = ""; }; - A6C18C3D232E91776BCF8661263EEB5F /* YapDatabaseCloudKit.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudKit.m; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKit.m; sourceTree = ""; }; - A709CC91A97AEA5090BFF954662F1CB3 /* YapDatabaseViewState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewState.h; sourceTree = ""; }; - A790AF136A3E340CD500E1532B99F2CB /* YapDatabaseHooks.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseHooks.m; path = YapDatabase/Extensions/Hooks/YapDatabaseHooks.m; sourceTree = ""; }; - A7D37732F9BC1CECE559C89CDD71B945 /* YapMemoryTable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapMemoryTable.h; sourceTree = ""; }; - A808CA87693ABF1782B9FBA11B1750D2 /* YapDatabase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YapDatabase.xcconfig; sourceTree = ""; }; - AB3A4565A955E4CADBA099FB96933705 /* YapDatabaseManualView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseManualView.m; path = YapDatabase/Extensions/ManualView/YapDatabaseManualView.m; sourceTree = ""; }; - AB55448A1CCA83C6137DDABA89EAF84D /* YapDatabaseHooksConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseHooksConnection.m; path = YapDatabase/Extensions/Hooks/YapDatabaseHooksConnection.m; sourceTree = ""; }; - ADB68302C095DBFE90240F77E7F0C771 /* YapDatabaseSearchResultsViewConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSearchResultsViewConnection.m; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsViewConnection.m; sourceTree = ""; }; - AE54598B25428D54B746B8081F060CB4 /* YapDatabaseSearchQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSearchQueue.h; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchQueue.h; sourceTree = ""; }; - AEAA4E94F260E11FA58139BE81650A94 /* YapDatabaseCloudCoreGraph.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCloudCoreGraph.m; sourceTree = ""; }; - AEC51C8788C1992AC316E656BF32EEE4 /* YapDatabaseLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseLogging.h; sourceTree = ""; }; - AF02153F8029F2AB8DAAECC0FC3895F4 /* Pods-CloudKitTodo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CloudKitTodo-acknowledgements.plist"; sourceTree = ""; }; - AF2C748E02F52038EACCF15BE23CBC01 /* Reachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = ""; }; - AF353A9860396BF97932F2302684D212 /* libYapDatabase.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libYapDatabase.a; sourceTree = BUILT_PRODUCTS_DIR; }; - B0272FAEE90CA422C2FBCDE43ACB064E /* YapActionItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapActionItem.h; path = YapDatabase/Extensions/ActionManager/YapActionItem.h; sourceTree = ""; }; - B0B310753BE2B56AFE448A1B05F9DF29 /* YapDatabaseViewRangeOptionsPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewRangeOptionsPrivate.h; sourceTree = ""; }; - B1CABDB55CCF8C87356A2809240CEA00 /* YDBCKRecordTableInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKRecordTableInfo.h; sourceTree = ""; }; - B26E6C44CA176AD2DEA8FA1CFEAE934F /* YapDatabaseCloudKitConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudKitConnection.h; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitConnection.h; sourceTree = ""; }; - B2EE29E9049716B095256927BFC1BEEE /* YapDatabase-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YapDatabase-prefix.pch"; sourceTree = ""; }; - B32316DC76D48D14949B2B9D8D64B2F4 /* YapDatabaseCloudKitConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudKitConnection.m; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitConnection.m; sourceTree = ""; }; - B3AC82C0043723F399823A7A8A21C179 /* YapDatabaseActionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseActionManager.m; path = YapDatabase/Extensions/ActionManager/YapDatabaseActionManager.m; sourceTree = ""; }; - B47C7069EECD030F28C73A69356D9EEF /* YapDatabaseFilteredViewTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFilteredViewTransaction.m; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredViewTransaction.m; sourceTree = ""; }; - B4D7EE3AFBD6255D3CEAAE2C1424E98A /* YapDatabaseFullTextSearch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFullTextSearch.h; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.h; sourceTree = ""; }; - B6722CEBF31F82169FC105CD147B5BBF /* YapDatabaseConnectionProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseConnectionProxy.m; path = YapDatabase/Extensions/ConnectionProxy/YapDatabaseConnectionProxy.m; sourceTree = ""; }; - B85D8765A08B2193BF84806D39642098 /* YapDatabaseOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseOptions.h; path = YapDatabase/YapDatabaseOptions.h; sourceTree = ""; }; - B8C1DDCD0D96A1A5BD42796375F8BD14 /* YapBidirectionalCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapBidirectionalCache.h; sourceTree = ""; }; - B97A025E4A01F6AAFE1FABCA2D347624 /* YapCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapCache.m; sourceTree = ""; }; - B9BFFCCBB62DB76F3A544D36D4998995 /* YDBCKAttachRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKAttachRequest.h; sourceTree = ""; }; - BA5C9299B9550A3054799E3F8D423CB6 /* DDOSLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDOSLogger.h; path = Classes/DDOSLogger.h; sourceTree = ""; }; - BB4FDF44FA617764EF1EBB3C8F66D030 /* DDASLLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDASLLogger.h; path = Classes/DDASLLogger.h; sourceTree = ""; }; - BC4A4CB2902E1B0AF72A5AA5F7AE2F71 /* YDBCKRecordInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKRecordInfo.m; sourceTree = ""; }; - BD63A5589B47FB74E2B2F542F12E634C /* YapDatabaseSecondaryIndexHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSecondaryIndexHandler.m; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexHandler.m; sourceTree = ""; }; - BE25955A57E3369178BDE2D460D0E4FA /* YapDatabaseViewPage.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; path = YapDatabaseViewPage.mm; sourceTree = ""; }; - C04CA457336DAECB164F3B4B9FB386A5 /* YapDatabaseCloudKitOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudKitOptions.h; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitOptions.h; sourceTree = ""; }; - C08BDA952C8D6D765C7EED4E3B72E93D /* YapDatabaseViewMappings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseViewMappings.m; sourceTree = ""; }; - C0F86BAC3DC001ED3BF80852B4412741 /* YapRowidSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapRowidSet.h; sourceTree = ""; }; - C155009B4FE2EC548CCCBD7139533759 /* YapDatabaseRTreeIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRTreeIndex.h; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndex.h; sourceTree = ""; }; - C200656519EDEAEC40620293D410EC26 /* YapDatabaseActionManagerConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseActionManagerConnection.h; path = YapDatabase/Extensions/ActionManager/YapDatabaseActionManagerConnection.h; sourceTree = ""; }; - C3A25B076ACDFA55284F5D1C4EE21156 /* YapDatabaseCrossProcessNotificationTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCrossProcessNotificationTransaction.m; path = YapDatabase/Extensions/CrossProcessNotification/YapDatabaseCrossProcessNotificationTransaction.m; sourceTree = ""; }; - C469EB166305BF5A2B4F2F7C49BFEB15 /* YapDatabaseFullTextSearchPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseFullTextSearchPrivate.h; sourceTree = ""; }; - C6A6097DC701BD67D8BDAAA8713C4FD8 /* Reachability-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Reachability-dummy.m"; sourceTree = ""; }; - C707D3FA75CA0D8230E0732C4C35C956 /* YapDatabaseCloudKitTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudKitTransaction.m; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m; sourceTree = ""; }; - C815AECDCCF37369E07137618B1E6AB9 /* YapDatabaseViewConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseViewConnection.m; path = YapDatabase/Extensions/View/YapDatabaseViewConnection.m; sourceTree = ""; }; - C81B4F738C47C80F14CAAD7B3694CFFE /* YapDatabaseRelationshipEdge.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRelationshipEdge.m; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipEdge.m; sourceTree = ""; }; - C8DBB7D8EA45538B20B417A0590C7F2B /* DDLegacyMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDLegacyMacros.h; path = Classes/DDLegacyMacros.h; sourceTree = ""; }; - C91D009781286B9DC7C795B7E9A91741 /* YapDatabaseTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseTransaction.m; path = YapDatabase/YapDatabaseTransaction.m; sourceTree = ""; }; - C9B1FECE9EF76633E3740BFA40B10A37 /* YapDatabaseHooksTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseHooksTransaction.h; path = YapDatabase/Extensions/Hooks/YapDatabaseHooksTransaction.h; sourceTree = ""; }; - CAD8C578BD605019E5C6E77EDE83019C /* YapDatabaseAutoView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseAutoView.h; path = YapDatabase/Extensions/AutoView/YapDatabaseAutoView.h; sourceTree = ""; }; - CC9B04F0173150371B3EA0A9507B23D9 /* YapDatabaseQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseQuery.h; sourceTree = ""; }; - CCC0CBEE9312924892EB03CFBE2692E2 /* YapDatabaseExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseExtension.m; sourceTree = ""; }; - CD892BF48C63853FD6A751D5B94C601F /* YapBidirectionalCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapBidirectionalCache.m; sourceTree = ""; }; - CDEE0E257A2ED445C93F097725834048 /* DDLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDLog.m; path = Classes/DDLog.m; sourceTree = ""; }; - CDF8478968B0569DD093B7DE7E4544D9 /* YDBCKMergeInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKMergeInfo.m; sourceTree = ""; }; - CE0AE88E13AB9ABD4E528C0FE67EB060 /* YapDatabaseCloudCoreOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCoreOperation.h; sourceTree = ""; }; - CE3F7217813A15B460957FF23CEF8268 /* YapDatabaseCrossProcessNotificationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCrossProcessNotificationPrivate.h; sourceTree = ""; }; - CFE3FAA0E5B4C80EE4FB4B5088443AEB /* NSDate+YapDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSDate+YapDatabase.h"; sourceTree = ""; }; - CFF05BCC8C8570BA4C3DBA600FA433CA /* YapDatabaseCloudKitPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudKitPrivate.h; sourceTree = ""; }; - D18874164D7636663E7112DA10DE5DD2 /* YapCollectionKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapCollectionKey.h; sourceTree = ""; }; - D258065D2A4D21CA9864F046761241EE /* YapDatabaseHooksConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseHooksConnection.h; path = YapDatabase/Extensions/Hooks/YapDatabaseHooksConnection.h; sourceTree = ""; }; - D2652D14DCD808781B60B4E19033FBB5 /* YapDatabaseSecondaryIndexConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSecondaryIndexConnection.m; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.m; sourceTree = ""; }; - D31F7CEF62B243AEA5FC89092A767D86 /* YapDatabaseFilteredViewTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFilteredViewTransaction.h; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredViewTransaction.h; sourceTree = ""; }; - D43D2F3DC90BB6711A12038B1750C46C /* YapDatabaseRTreeIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRTreeIndex.m; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndex.m; sourceTree = ""; }; - D45F53D30AA0DC35248B50C47CF7A2EC /* YapDatabaseSearchResultsViewConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSearchResultsViewConnection.h; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsViewConnection.h; sourceTree = ""; }; - D5DDAD5DD64A6DB6E07B55AEC5B75D59 /* YapDatabaseOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseOptions.m; path = YapDatabase/YapDatabaseOptions.m; sourceTree = ""; }; - D605C15956CA1189155F9C5E19F41E19 /* YapDatabaseConnectionConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseConnectionConfig.m; sourceTree = ""; }; - D7BA6D1156ABC5D219108E1E5244AF29 /* YapDatabaseCloudCoreOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCloudCoreOperation.m; sourceTree = ""; }; - DABBE1136D69972B218AE8DA7FD91502 /* YapDatabaseExtensionTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseExtensionTransaction.m; sourceTree = ""; }; - DAC117F312A8ACE8476361C4FD8FB20C /* YapMemoryTable.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapMemoryTable.m; sourceTree = ""; }; - DC99B918DC2C9579A186C80D70243F90 /* YapDatabaseManualView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseManualView.h; path = YapDatabase/Extensions/ManualView/YapDatabaseManualView.h; sourceTree = ""; }; - DCE121BB9934398BE778AE785CFE02D8 /* YapDatabaseViewPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewPrivate.h; sourceTree = ""; }; - DD1DACAF4BD5B19D9E591FDE752E0F2A /* CocoaLumberjack-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CocoaLumberjack-prefix.pch"; sourceTree = ""; }; - DDBF5136D462BB585763B71BDA71C37C /* YapDatabaseFilteredViewTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFilteredViewTypes.h; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredViewTypes.h; sourceTree = ""; }; - E032D69CD1F90FABA382EC845E0B9D28 /* YapDatabaseConnectionProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseConnectionProxy.h; path = YapDatabase/Extensions/ConnectionProxy/YapDatabaseConnectionProxy.h; sourceTree = ""; }; - E0F6EDE99C6037AE365DFAEF284366C9 /* YapDatabaseSecondaryIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSecondaryIndex.m; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.m; sourceTree = ""; }; - E2902E8C4561F30CCDD3738243ED1E2B /* YapDatabaseViewPageMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseViewPageMetadata.m; sourceTree = ""; }; - E363AE7AA8D42E3552ACF2B419887B91 /* YapDatabase-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "YapDatabase-dummy.m"; sourceTree = ""; }; - E3DC4C64E093CA1EFC7EC042C717B839 /* YapDirtyDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDirtyDictionary.m; sourceTree = ""; }; - E4BE3A1EED43E987C4DBA575252D7526 /* libPods-CloudKitTodo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-CloudKitTodo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - E564C82CF3E3A779C3BDBB4908FE2206 /* YapDatabaseViewChangePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewChangePrivate.h; sourceTree = ""; }; - E60E0092D603C3647CFE278761057B8D /* YapDatabaseSecondaryIndexPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseSecondaryIndexPrivate.h; sourceTree = ""; }; - E9D646E932D327CCD170D1975D7E4FD9 /* YapDatabaseManualViewPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseManualViewPrivate.h; sourceTree = ""; }; - EA698AB8C2148A86AC77B0036A4F086C /* YapDatabaseRelationship.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRelationship.h; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationship.h; sourceTree = ""; }; - EA9DD82C868B5BCECA185C8F9F2DC5D8 /* YDBCKChangeSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKChangeSet.h; sourceTree = ""; }; - EAF1E5EEC2E55FA1B06DA69B15BD649F /* YapDatabaseCrossProcessNotificationTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCrossProcessNotificationTransaction.h; path = YapDatabase/Extensions/CrossProcessNotification/YapDatabaseCrossProcessNotificationTransaction.h; sourceTree = ""; }; - EAF464C2A2F866087880260F1C092D5D /* YapDatabaseViewChange.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewChange.h; sourceTree = ""; }; - EB8FB1CCF79532FF56B8E92BC070A98F /* YDBCKChangeSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKChangeSet.m; sourceTree = ""; }; - EB914E09A11AE4737B9B56212EC55895 /* YapDatabaseCloudCorePipelinePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCorePipelinePrivate.h; sourceTree = ""; }; - EC291365E1BA10E2E226D8F95EF63ACF /* YapDatabaseConnectionState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseConnectionState.h; sourceTree = ""; }; - ECAE056A9B3BB47C3C94A05458615458 /* YapDatabaseSecondaryIndexHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSecondaryIndexHandler.h; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexHandler.h; sourceTree = ""; }; - ECC4E523B6103B2C669415A82A6CC129 /* YapDatabaseCloudCoreTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudCoreTransaction.m; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCoreTransaction.m; sourceTree = ""; }; - ECD70E0755E5518212E6B2EE1612847D /* YapWhitelistBlacklist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapWhitelistBlacklist.h; sourceTree = ""; }; - ED2605FB8E8D9F9FA673E606C679E886 /* YapDatabaseManualViewConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseManualViewConnection.m; path = YapDatabase/Extensions/ManualView/YapDatabaseManualViewConnection.m; sourceTree = ""; }; - ED50D6FB2D98AEE27BB70058956BBFBD /* YapDatabaseViewOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseViewOptions.m; path = YapDatabase/Extensions/View/YapDatabaseViewOptions.m; sourceTree = ""; }; - EDA2C9F67EB7D1E32E90E317E0E3FD34 /* YapDatabaseAutoViewPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseAutoViewPrivate.h; sourceTree = ""; }; - EFC0A2D60447E1F8D9C6F93228D8F6A7 /* Pods-CloudKitTodo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CloudKitTodo-dummy.m"; sourceTree = ""; }; - F042FEA6EED5039190071B72A808783D /* YapCollectionKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapCollectionKey.m; sourceTree = ""; }; - F23125BC3D8770E72EFA65B25F025A24 /* DDTTYLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDTTYLogger.m; path = Classes/DDTTYLogger.m; sourceTree = ""; }; - F2AF9EC704AAD470CAC8FE0D05A5430B /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; - F34DBAB6F28EE9C9DFD33103B1DA5BA7 /* YapDatabaseExtensionConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseExtensionConnection.m; sourceTree = ""; }; - F365F0DB3FF18F1016A1E47F6837F543 /* CocoaLumberjack-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CocoaLumberjack-dummy.m"; sourceTree = ""; }; - F44F24488C98FFD06B5D3FD768CA6670 /* YapDatabaseSearchQueuePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseSearchQueuePrivate.h; sourceTree = ""; }; - F4C94E93D8909E846976EF71CFBE6E7B /* YapDatabaseCloudCoreOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudCoreOptions.m; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCoreOptions.m; sourceTree = ""; }; - F5C80C7AA277F70F43F1936AF8DF3312 /* YapDatabaseString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseString.h; sourceTree = ""; }; - F6BCB5C23D33939DDE1D6F9ECF8E0456 /* YapDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabase.h; path = YapDatabase/YapDatabase.h; sourceTree = ""; }; - F79FBD8D361689E558F288F94F7442D9 /* YapDatabaseRTreeIndexHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRTreeIndexHandler.h; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexHandler.h; sourceTree = ""; }; - F90F7E7C54EC769010F335B8C54550DE /* YDBCKRecord.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKRecord.m; sourceTree = ""; }; - F9AE84702E97561D0344E97A9CA41733 /* DDOSLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDOSLogger.m; path = Classes/DDOSLogger.m; sourceTree = ""; }; - FB3ACB6420AD45F19A073030CAC45126 /* YapDatabaseFullTextSearchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFullTextSearchHandler.m; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchHandler.m; sourceTree = ""; }; - FCBAD08BE3395A7BABD335418754C8BE /* YapDatabaseCrossProcessNotificationConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCrossProcessNotificationConnection.h; path = YapDatabase/Extensions/CrossProcessNotification/YapDatabaseCrossProcessNotificationConnection.h; sourceTree = ""; }; - FD17EA6ED731B20E1A32A529788CE54E /* DDLog+LOGV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DDLog+LOGV.h"; path = "Classes/DDLog+LOGV.h"; sourceTree = ""; }; - FD90BCA21B25EB2D53F3ED584AA1C474 /* YapDatabaseCrossProcessNotification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCrossProcessNotification.h; path = YapDatabase/Extensions/CrossProcessNotification/YapDatabaseCrossProcessNotification.h; sourceTree = ""; }; - FE4F2A178A9D55F6B15D5D2A65183861 /* YapDatabaseSearchResultsViewPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseSearchResultsViewPrivate.h; sourceTree = ""; }; - FF0412665703A4A46FD1A46F24D87E93 /* Pods-CloudKitTodo-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CloudKitTodo-frameworks.sh"; sourceTree = ""; }; - FF8ADC88110AB44FAF84AC8DCB4EC1F2 /* DDASLLogCapture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDASLLogCapture.m; path = Classes/DDASLLogCapture.m; sourceTree = ""; }; - FFD7EC26BFDAB6E57B17F9EAE7629A40 /* YapDatabaseAutoViewTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseAutoViewTransaction.m; path = YapDatabase/Extensions/AutoView/YapDatabaseAutoViewTransaction.m; sourceTree = ""; }; + 013EB1D7EEDBB4242044BAF448BD8D23 /* YapDatabaseFilteredViewConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFilteredViewConnection.m; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredViewConnection.m; sourceTree = ""; }; + 034976B6D68A700F6A793215B7AD8386 /* YapDatabaseSecondaryIndexOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSecondaryIndexOptions.h; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexOptions.h; sourceTree = ""; }; + 03F32D9F23909DA5391F35AC1A3F757D /* YapDatabaseViewMappings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseViewMappings.m; sourceTree = ""; }; + 042BC3E35660AFA033090584A164332B /* YapDatabaseView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseView.swift; path = YapDatabase/Extensions/View/Swift/YapDatabaseView.swift; sourceTree = ""; }; + 0543C9D27D88410B384F4FD23974D57E /* YapDatabaseCloudKitOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudKitOptions.h; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitOptions.h; sourceTree = ""; }; + 066B3FC8C196D8214C098405865EB1A5 /* YapMutationStack.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapMutationStack.h; sourceTree = ""; }; + 07B068FA9125DD2FFC0B1EC5AF468164 /* YapWhitelistBlacklist.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapWhitelistBlacklist.m; sourceTree = ""; }; + 087E7327D63BB3B1E8D8651CC274145C /* YDBCKMappingTableInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKMappingTableInfo.m; sourceTree = ""; }; + 08D8334F6004A672D80552DC078C56F3 /* DDMultiFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDMultiFormatter.m; path = Sources/CocoaLumberjack/Extensions/DDMultiFormatter.m; sourceTree = ""; }; + 09BA0147FD6337594BCEB384A7BC4381 /* YapDatabaseSearchResultsViewConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSearchResultsViewConnection.m; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsViewConnection.m; sourceTree = ""; }; + 0B728903260D87269523D23FF7DC1E42 /* YapDatabaseSearchQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSearchQueue.h; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchQueue.h; sourceTree = ""; }; + 0BF1FA824D00439E314D3248BED0DEB1 /* YapDatabaseView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseView.h; path = YapDatabase/Extensions/View/YapDatabaseView.h; sourceTree = ""; }; + 0C2BF9B8A40ED88A76C930152CD7C347 /* YDBLogMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBLogMessage.m; sourceTree = ""; }; + 0C41F105C64306FABC1BF69696EC4FEB /* YapDatabaseViewTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseViewTypes.h; path = YapDatabase/Extensions/AutoView/YapDatabaseViewTypes.h; sourceTree = ""; }; + 0D0A6235E2BF201D7C300C629CF4ABC9 /* YapDatabaseExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseExtension.h; sourceTree = ""; }; + 1005046FD112EE1555CE16072AD88E3A /* YapDatabaseRelationshipPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseRelationshipPrivate.h; sourceTree = ""; }; + 104D443C264CE672855AEAD5F72DE59C /* YapDatabaseSearchResultsViewConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSearchResultsViewConnection.h; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsViewConnection.h; sourceTree = ""; }; + 11054BB8129A1EF6C35A240AE33279FA /* DDASLLogCapture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDASLLogCapture.m; path = Sources/CocoaLumberjack/DDASLLogCapture.m; sourceTree = ""; }; + 123A29626FE64CCB0825798D64C9FC2E /* YapCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapCache.m; sourceTree = ""; }; + 12C76D715107D99655DB7FFDC6E32273 /* YapDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabase.h; path = YapDatabase/YapDatabase.h; sourceTree = ""; }; + 13C644EDE4E6A2C788817020C828FCDD /* YapDatabaseRTreeIndexOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRTreeIndexOptions.m; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexOptions.m; sourceTree = ""; }; + 13D880D87484DCD70E70808285CF536C /* YDBCKChangeSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKChangeSet.h; sourceTree = ""; }; + 145BA590BA3C71107BD71AE674E6029A /* DDLoggerNames.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDLoggerNames.h; path = Sources/CocoaLumberjack/include/DDLoggerNames.h; sourceTree = ""; }; + 14E745BEA2DB95546F10657CD68C6058 /* YapDatabaseAutoView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseAutoView.swift; path = YapDatabase/Extensions/AutoView/Swift/YapDatabaseAutoView.swift; sourceTree = ""; }; + 157128D085D978163557A91F453C071A /* YapDatabaseViewMappings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewMappings.h; sourceTree = ""; }; + 15B972993005BDBD2A231056968B3299 /* YapDatabaseConnectionProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseConnectionProxy.h; sourceTree = ""; }; + 166D584671C3D55B820C82D3A2E0BF52 /* NSDate+YapDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSDate+YapDatabase.h"; sourceTree = ""; }; + 1676DBEC8B2DCE99A0AE3CBACB0A679F /* YapDatabaseQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseQuery.h; sourceTree = ""; }; + 181D2F2F146A1951D9C62C1AB8480161 /* YapReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapReachability.m; sourceTree = ""; }; + 1A4C85F6BE902C4AEB3A5A549A3F7A90 /* YDBCKChangeSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKChangeSet.m; sourceTree = ""; }; + 1B93C71C50DEC5A5B91C7206528CAD03 /* YapDatabaseRTreeIndexSetup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRTreeIndexSetup.m; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexSetup.m; sourceTree = ""; }; + 1BAAA2FB0352BB91ECA3A893DBB427D0 /* YapDatabase-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "YapDatabase-dummy.m"; sourceTree = ""; }; + 1C654B035ED5E063A16447A34B5437A9 /* DDLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDLog.h; path = Sources/CocoaLumberjack/include/DDLog.h; sourceTree = ""; }; + 1D8C1EB778F87AA4E72239E4F9A9FBF1 /* YapDatabaseTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseTypes.h; path = YapDatabase/YapDatabaseTypes.h; sourceTree = ""; }; + 1E31EC48A0135D33364CD8B42450D6DB /* YapDatabaseSearchResultsViewOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSearchResultsViewOptions.m; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsViewOptions.m; sourceTree = ""; }; + 1F3DE0BC2508A99C3038F22D34C949FF /* YapDatabaseSecondaryIndexHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSecondaryIndexHandler.h; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexHandler.h; sourceTree = ""; }; + 1FBBFEBF550EC1154B0C9C52C1FA8DF0 /* YapDatabaseHooksConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseHooksConnection.h; path = YapDatabase/Extensions/Hooks/YapDatabaseHooksConnection.h; sourceTree = ""; }; + 206E4350E662FA5A4A871890C8A3BA5C /* YapDatabaseString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseString.h; sourceTree = ""; }; + 20BC543EB4FB87B044ABFD6F95996421 /* YapActionItemPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapActionItemPrivate.h; sourceTree = ""; }; + 212604501E076321958DCACA187988F6 /* YapDatabaseExtensionConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseExtensionConnection.h; sourceTree = ""; }; + 22037F8BF6DC1FEFC41CC73CDF62620E /* YapDatabaseCollectionConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCollectionConfig.h; sourceTree = ""; }; + 22EA8F71F878C2399F0AD1170E8011AA /* NSDictionary+YapDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+YapDatabase.m"; sourceTree = ""; }; + 23A77FB8FB849F5D4F25719711C184F4 /* YapDatabaseFilteredViewTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFilteredViewTransaction.m; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredViewTransaction.m; sourceTree = ""; }; + 249830FC64BA9DC39E5A1A20035A6DDB /* CLIColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLIColor.h; path = Sources/CocoaLumberjack/include/CLIColor.h; sourceTree = ""; }; + 24AA268C2DCCDD348764DCDB67D04DDA /* Pods-CloudKitTodo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CloudKitTodo.release.xcconfig"; sourceTree = ""; }; + 262511120A4433E00B7E693F035EF467 /* YapDatabaseManualView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseManualView.m; path = YapDatabase/Extensions/ManualView/YapDatabaseManualView.m; sourceTree = ""; }; + 26F48588807083BBFD6B6862C1819587 /* YapDatabaseCloudCoreOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCoreOperation.h; sourceTree = ""; }; + 2793D46A4D1D6F26E53D4ED91A2F02F2 /* YapDatabaseExtensionTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseExtensionTransaction.m; sourceTree = ""; }; + 2818FA75CFBC5DAF02C1CE27B6D9CE97 /* YapDatabaseSecondaryIndexTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSecondaryIndexTransaction.m; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.m; sourceTree = ""; }; + 28693F75E172D1A8288FFCB5FBB4F7C5 /* DDAbstractDatabaseLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDAbstractDatabaseLogger.m; path = Sources/CocoaLumberjack/DDAbstractDatabaseLogger.m; sourceTree = ""; }; + 2A460229E912A807F438897E51BA9301 /* YapDatabaseCloudKitConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudKitConnection.h; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitConnection.h; sourceTree = ""; }; + 2AA96D2F4BC5790639E13A9FF289690F /* YapDatabaseSearchResultsViewTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSearchResultsViewTransaction.m; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsViewTransaction.m; sourceTree = ""; }; + 2BA888DE0F5B010909190F91DF10334D /* YapBidirectionalCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapBidirectionalCache.h; sourceTree = ""; }; + 2C57EB18FA1D70CF5CBEDE0E158DB8A9 /* libPods-CloudKitTodo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-CloudKitTodo.a"; path = "libPods-CloudKitTodo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2D25E6268B0015B7A77A96DBDA78E64D /* YapDatabaseCloudKit.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudKit.m; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKit.m; sourceTree = ""; }; + 2D37094FA7B2D1DEB35621D01B20C2E9 /* CocoaLumberjack-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CocoaLumberjack-dummy.m"; sourceTree = ""; }; + 2D6234A89B8BC032779BA5A2F0D9E932 /* YapDatabaseFullTextSearchConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFullTextSearchConnection.m; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.m; sourceTree = ""; }; + 2D931DF586EA6822C067FDE60761B5F9 /* YapDatabaseAutoViewConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseAutoViewConnection.h; path = YapDatabase/Extensions/AutoView/YapDatabaseAutoViewConnection.h; sourceTree = ""; }; + 2E0A60B2E952FAA7E7F3F9159EB5E988 /* CocoaLumberjack.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CocoaLumberjack.xcconfig; sourceTree = ""; }; + 2E81B3092F0E07E78C85AD807BD32377 /* YapDatabaseManualViewConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseManualViewConnection.m; path = YapDatabase/Extensions/ManualView/YapDatabaseManualViewConnection.m; sourceTree = ""; }; + 2ED3C2C6473466203EB1769AF1CFF1E0 /* YapDatabaseFilteredViewTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFilteredViewTypes.m; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredViewTypes.m; sourceTree = ""; }; + 2EED805F237A23915130FD2E24790624 /* YapDatabaseStatement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseStatement.h; sourceTree = ""; }; + 2F5388ACEFD064B3D0CE2E9AB205B53D /* DDASLLogCapture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDASLLogCapture.h; path = Sources/CocoaLumberjack/include/DDASLLogCapture.h; sourceTree = ""; }; + 2FB88D9DCE77EAA0865A1465E3B2A0B3 /* DDFileLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDFileLogger.m; path = Sources/CocoaLumberjack/DDFileLogger.m; sourceTree = ""; }; + 301D1F5564A374BD06595870D5AC5049 /* YapDatabaseFilteredViewTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFilteredViewTransaction.h; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredViewTransaction.h; sourceTree = ""; }; + 3049ABAFC13518236F9BFB18F7DFBF35 /* YapDatabase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabase.swift; path = YapDatabase/Swift/YapDatabase.swift; sourceTree = ""; }; + 3158E9F8224799FD55018CED387247C2 /* YapBidirectionalCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapBidirectionalCache.m; sourceTree = ""; }; + 31EDF30E4623E289704C098344548C92 /* YapDatabaseCloudCorePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCorePrivate.h; sourceTree = ""; }; + 32A972D7A25D4A6101F4EF5B75A55ABB /* DDLoggerNames.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDLoggerNames.m; path = Sources/CocoaLumberjack/DDLoggerNames.m; sourceTree = ""; }; + 32D326B7B030C9D803CA70F4A2A56E1B /* YapActionable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapActionable.h; path = YapDatabase/Extensions/ActionManager/YapActionable.h; sourceTree = ""; }; + 330A3629082AA781CE02818D0C2BEFD4 /* YapDatabaseViewPageMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseViewPageMetadata.m; sourceTree = ""; }; + 33B17276F1396AD382DB7340651DC364 /* YapDatabaseManualViewTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseManualViewTransaction.h; path = YapDatabase/Extensions/ManualView/YapDatabaseManualViewTransaction.h; sourceTree = ""; }; + 33DF2D1519A2BB95E52443791B6D5B29 /* Reachability.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Reachability.xcconfig; sourceTree = ""; }; + 3421941478AF4F7EB4EF013C79FBC240 /* YapDatabaseExtensionPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseExtensionPrivate.h; sourceTree = ""; }; + 34F00867358284FA98B66BE734260552 /* DDLogMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDLogMacros.h; path = Sources/CocoaLumberjack/include/DDLogMacros.h; sourceTree = ""; }; + 35B5F13EEBE84D317CF939C14B0B7C68 /* YapDatabaseCloudKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudKit.h; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKit.h; sourceTree = ""; }; + 36B03AD77B3B7CF4C1ABAAC1A3300E57 /* DDASLLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDASLLogger.h; path = Sources/CocoaLumberjack/include/DDASLLogger.h; sourceTree = ""; }; + 36D1C6A021EFE852197BF6D8297E8B15 /* Pods-CloudKitTodo.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-CloudKitTodo.modulemap"; sourceTree = ""; }; + 370D081156B1B9CF39ABD794EC3FBAB7 /* YapDatabaseRTreeIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRTreeIndex.h; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndex.h; sourceTree = ""; }; + 373CE5767DB41CFB4068B338C65C4DC8 /* YapDatabaseSearchResultsViewOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSearchResultsViewOptions.h; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsViewOptions.h; sourceTree = ""; }; + 39E15C14C3A865D14124E9221BCE7BB2 /* YapSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapSet.h; sourceTree = ""; }; + 3A050CD00C1D70A92D4C4F086380B089 /* YapDatabaseCloudKitOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudKitOptions.m; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitOptions.m; sourceTree = ""; }; + 3A1E7877431DA6044F3423650457CE8C /* YapDatabaseCloudCoreGraphPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCoreGraphPrivate.h; sourceTree = ""; }; + 3BA965E04C467A945353E40A3A32A9E4 /* YapDatabaseLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseLogging.h; sourceTree = ""; }; + 3C4FCFA261ED205EB94ADA9C92588CDC /* YapDatabaseActionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseActionManager.swift; path = YapDatabase/Extensions/ActionManager/Swift/YapDatabaseActionManager.swift; sourceTree = ""; }; + 3EECDE7BB1A798CB65DCB896D75D566A /* YapDatabaseCloudKitTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudKitTransaction.h; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.h; sourceTree = ""; }; + 3F49E0647B99802F5AA535BC366B0157 /* YapDatabaseFilteredViewConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFilteredViewConnection.h; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredViewConnection.h; sourceTree = ""; }; + 3F6FE75C072E6691E15395B29108960B /* YapDatabaseActionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseActionManager.h; path = YapDatabase/Extensions/ActionManager/YapDatabaseActionManager.h; sourceTree = ""; }; + 400FF55D0451E7A8F33A3D0D3E11C1B9 /* libReachability.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libReachability.a; path = libReachability.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 4013CB3C565F97B0D9B092958034EB3D /* YapDatabaseSecondaryIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSecondaryIndex.m; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.m; sourceTree = ""; }; + 402BC4E15E244BC415BA5946B484D1FD /* yap_vfs_shim.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = yap_vfs_shim.m; sourceTree = ""; }; + 404DFF3174A3AA4B142BEF98AA85DB9E /* YapDirtyDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDirtyDictionary.h; sourceTree = ""; }; + 40D8955EDCC6007327E62B4041966F49 /* YapDatabaseViewChange.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseViewChange.m; sourceTree = ""; }; + 4123EB3D1CD4131B9C363B5831143333 /* YapDatabaseConnectionPool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseConnectionPool.m; sourceTree = ""; }; + 44338274A72B61FC246DB539A84644C2 /* DDDispatchQueueLogFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDDispatchQueueLogFormatter.h; path = Sources/CocoaLumberjack/include/DDDispatchQueueLogFormatter.h; sourceTree = ""; }; + 453A9786A9452B24C55F77F5BBDD3123 /* YapProxyObjectPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapProxyObjectPrivate.h; sourceTree = ""; }; + 4592EE242F205BA430912588AC1FE62B /* DDFileLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDFileLogger.h; path = Sources/CocoaLumberjack/include/DDFileLogger.h; sourceTree = ""; }; + 45968D1B540A9B0446A132B1D6A84B09 /* YapMemoryTable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapMemoryTable.h; sourceTree = ""; }; + 45E58D4278AC30A43220D021DDD962FF /* YapDatabaseRTreeIndexPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseRTreeIndexPrivate.h; sourceTree = ""; }; + 46F7E54B0BE1D4583C6E7385A6AC871A /* YapDatabaseViewTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseViewTransaction.m; path = YapDatabase/Extensions/View/YapDatabaseViewTransaction.m; sourceTree = ""; }; + 470C4107509C9E3F227BEEC3B9B84CB6 /* YapWhitelistBlacklist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapWhitelistBlacklist.h; sourceTree = ""; }; + 47459EAE19B912ECFC98935DC23C25C7 /* YapDatabaseSecondaryIndexSetup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSecondaryIndexSetup.m; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.m; sourceTree = ""; }; + 47C1C60A48F49D45DDE3EC322E15EFED /* YapRowidSet.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = YapRowidSet.mm; sourceTree = ""; }; + 47D1126A7E585B606871CD1B6F9281E6 /* YapDatabaseAtomic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseAtomic.h; sourceTree = ""; }; + 48485700DFE4330A4702A35B297D8F07 /* NSDate+YapDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSDate+YapDatabase.m"; sourceTree = ""; }; + 48806294C5CB0B4921F4F340A77DD1D6 /* YapDatabaseCrossProcessNotificationConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCrossProcessNotificationConnection.m; path = YapDatabase/Extensions/CrossProcessNotification/YapDatabaseCrossProcessNotificationConnection.m; sourceTree = ""; }; + 494751970A2A1484CDB71B728CDA50D9 /* YapDatabaseAutoViewTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseAutoViewTransaction.h; path = YapDatabase/Extensions/AutoView/YapDatabaseAutoViewTransaction.h; sourceTree = ""; }; + 49987740C9B56C9CA63108F3370405DC /* YapDatabaseCloudCore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudCore.m; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCore.m; sourceTree = ""; }; + 4AC5980888A2C7CF0170017D841505F0 /* YapDatabaseFullTextSearchSnippetOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFullTextSearchSnippetOptions.m; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchSnippetOptions.m; sourceTree = ""; }; + 4B03A443B6F73C5F4C18B7720AF3FD4D /* YapDatabaseCloudKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseCloudKit.swift; path = YapDatabase/Extensions/CloudKit/Swift/YapDatabaseCloudKit.swift; sourceTree = ""; }; + 4C73FAC90ACF22689F72DEE1713AE8D0 /* YapDatabaseActionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseActionManager.m; path = YapDatabase/Extensions/ActionManager/YapDatabaseActionManager.m; sourceTree = ""; }; + 4D7C387B60F93072E9B3D2992616472F /* YapDatabaseExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseExtension.m; sourceTree = ""; }; + 4DBB979798E0032342E47771C359647F /* DDContextFilterLogFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDContextFilterLogFormatter.m; path = Sources/CocoaLumberjack/Extensions/DDContextFilterLogFormatter.m; sourceTree = ""; }; + 4DF6C2AD30BCBD23BD022036E0D7AD43 /* YapDatabaseHooksPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseHooksPrivate.h; sourceTree = ""; }; + 4E9CEF22EA2352AA29A6334CA9B300A8 /* YapDatabaseSecondaryIndexOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSecondaryIndexOptions.m; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexOptions.m; sourceTree = ""; }; + 4EB362EB183A044EFF0DBF33F7B0EAE7 /* YapDatabaseSecondaryIndexPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseSecondaryIndexPrivate.h; sourceTree = ""; }; + 4ED97CEB23B6BB124CAD59B55DF826E6 /* YapDatabaseFullTextSearch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFullTextSearch.h; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.h; sourceTree = ""; }; + 522633BA9440FAB7BA71873C8D61DBBE /* YapDatabaseViewOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseViewOptions.h; path = YapDatabase/Extensions/View/YapDatabaseViewOptions.h; sourceTree = ""; }; + 52C2A2D611D1688AA5B6FA9865265CCB /* YapDatabaseManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseManager.m; sourceTree = ""; }; + 5334B64AEF912A07E24DC287146DCE25 /* DDASLLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDASLLogger.m; path = Sources/CocoaLumberjack/DDASLLogger.m; sourceTree = ""; }; + 56CD01F8DB51D6BCAEC7B52589B447B2 /* NSDictionary+YapDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+YapDatabase.h"; sourceTree = ""; }; + 5890FF8F0102E07E1F69B93A54AAC0FF /* YapDatabaseFilteredView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseFilteredView.swift; path = YapDatabase/Extensions/FilteredView/Swift/YapDatabaseFilteredView.swift; sourceTree = ""; }; + 597C82C5DE3AE81B6BCEDFAAB789929B /* YapDatabaseSecondaryIndexConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSecondaryIndexConnection.m; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.m; sourceTree = ""; }; + 59C27D3BAD290762BA3D07ADAC95C43D /* YapDatabaseFullTextSearchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFullTextSearchHandler.h; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchHandler.h; sourceTree = ""; }; + 59EC571BEA4CD0B73CF92DC8C7E19299 /* YapDatabaseActionManagerTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseActionManagerTransaction.m; path = YapDatabase/Extensions/ActionManager/YapDatabaseActionManagerTransaction.m; sourceTree = ""; }; + 59F5DC6E3A0C700F5B799D789CE38EA7 /* YapMemoryTable.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapMemoryTable.m; sourceTree = ""; }; + 5A0D5E78CDF7C7C5D143F46F0868CF8C /* CocoaLumberjack.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CocoaLumberjack.h; path = "Sources/CocoaLumberjack/Supporting Files/CocoaLumberjack.h"; sourceTree = ""; }; + 5A88D8FC4504EE5EF7E4F663A87503E1 /* YapDatabaseRTreeIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRTreeIndex.m; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndex.m; sourceTree = ""; }; + 5C4301076674FA4B24DF31B1F93F72C6 /* YapDatabaseCloudCorePipeline.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCloudCorePipeline.m; sourceTree = ""; }; + 5C6270516D8F4F448598EDBC61806840 /* YapDatabaseRTreeIndexHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRTreeIndexHandler.m; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexHandler.m; sourceTree = ""; }; + 5C9313269258453FC029327667C6ED90 /* YDBCKMergeInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKMergeInfo.h; sourceTree = ""; }; + 5D2DDDAEAE6523007F9F20815ED1CD05 /* DDTTYLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDTTYLogger.m; path = Sources/CocoaLumberjack/DDTTYLogger.m; sourceTree = ""; }; + 5D4C810725A211211FC94CCC06ABB9CF /* CocoaLumberjack-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CocoaLumberjack-prefix.pch"; sourceTree = ""; }; + 5D52DF1E2CCA2C66920A34B4A70E853B /* YapDatabaseCloudKitTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudKitTransaction.m; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m; sourceTree = ""; }; + 5FA5DD0BC379AC73C9813088BE054B20 /* YapDatabaseConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseConnection.h; path = YapDatabase/YapDatabaseConnection.h; sourceTree = ""; }; + 60334989ACDC30BF87F8530F52F3B773 /* YapDatabaseViewRangeOptionsPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewRangeOptionsPrivate.h; sourceTree = ""; }; + 605F6A32D5D6ED9AE342EB7C2A749C48 /* YDBCKChangeQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKChangeQueue.m; sourceTree = ""; }; + 60C91238202C4799687425C0DF4C559B /* YapReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapReachability.h; sourceTree = ""; }; + 60E59D23A6031BD1212E8E8A0D179317 /* YapActionItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapActionItem.h; path = YapDatabase/Extensions/ActionManager/YapActionItem.h; sourceTree = ""; }; + 63BFD8A9CBD7BA2CA1BD1C3580EE6D7D /* YapDatabaseManualViewTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseManualViewTransaction.m; path = YapDatabase/Extensions/ManualView/YapDatabaseManualViewTransaction.m; sourceTree = ""; }; + 64BA37DFF1088FE944FA19457DC98EC1 /* YapDatabaseSearchQueuePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseSearchQueuePrivate.h; sourceTree = ""; }; + 6655B2E2B31B4EDB07720851846B9713 /* YapDatabaseConnectionPool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseConnectionPool.h; sourceTree = ""; }; + 66A123F94DFC07C0589B8D24B55CF3FA /* YapDatabaseSearchResultsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseSearchResultsView.swift; path = YapDatabase/Extensions/SearchResultsView/Swift/YapDatabaseSearchResultsView.swift; sourceTree = ""; }; + 66FFD31D8CCACEB86F2F757AC2C78499 /* YapDatabaseSearchResultsViewTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSearchResultsViewTransaction.h; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsViewTransaction.h; sourceTree = ""; }; + 67899823D41F2D2AB59B892B2E321B7D /* YapSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapSet.m; sourceTree = ""; }; + 67F6E4A3B38CE509283D012D053C8F73 /* YapDatabaseViewPage.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = YapDatabaseViewPage.mm; sourceTree = ""; }; + 680513C4274999423CD5DC1C7C47F5AA /* YapDatabaseCloudCore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseCloudCore.swift; path = YapDatabase/Extensions/CloudCore/Swift/YapDatabaseCloudCore.swift; sourceTree = ""; }; + 68060A42F7B57B88B1C0B118104BA4A7 /* LICENSE.txt */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE.txt; sourceTree = ""; }; + 6BABA5F90D27821758375978A45F6889 /* YapTouch.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapTouch.m; sourceTree = ""; }; + 6BE086866A9CBF0CC3072EF1FED0FA38 /* YapDatabaseFilteredView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFilteredView.m; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredView.m; sourceTree = ""; }; + 6C32BF8A0F91FAC5C316D2B2B1CBC827 /* YapDatabaseHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseHooks.swift; path = YapDatabase/Extensions/Hooks/Swift/YapDatabaseHooks.swift; sourceTree = ""; }; + 6D1D99C6799BA9B5C51ADD0156A03B4C /* YapDatabaseRTreeIndexOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRTreeIndexOptions.h; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexOptions.h; sourceTree = ""; }; + 6DBA543947B4091714A5F09655994974 /* YapDatabaseRelationshipConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRelationshipConnection.h; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipConnection.h; sourceTree = ""; }; + 6DBAF7BBC152D9209FC39B3BB0569046 /* DDMultiFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDMultiFormatter.h; path = Sources/CocoaLumberjack/include/DDMultiFormatter.h; sourceTree = ""; }; + 6E816577F8A65ABB95CE2C1AB6E40F23 /* YapDatabaseCloudCorePipelineDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCorePipelineDelegate.h; sourceTree = ""; }; + 6F9163650F39B37696B35A82B41C42D6 /* YapDatabaseViewPageMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewPageMetadata.h; sourceTree = ""; }; + 6FA2F07AEA369AB1EC687FF9856DB764 /* YapDatabaseViewLocator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseViewLocator.m; sourceTree = ""; }; + 6FA631381D2F5966E3661F4159CB94AD /* YapDatabaseConnectionState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseConnectionState.h; sourceTree = ""; }; + 6FE650DD25360138F32D6E96EB7F5104 /* YDBLogMessage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBLogMessage.h; sourceTree = ""; }; + 70B167BA04BF9659E1FE0E5C4C2EAAF1 /* YapDatabaseSecondaryIndexSetup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSecondaryIndexSetup.h; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.h; sourceTree = ""; }; + 71C4F1FDE0CB5468AC9A1BC8130975C0 /* YapDatabaseFullTextSearchPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseFullTextSearchPrivate.h; sourceTree = ""; }; + 73EB2D4BC70E35CC9B06D3DC6037157A /* Reachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = ""; }; + 741C6BA4F6A6FD9A35EC2639AC150365 /* YDBCKRecordTableInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKRecordTableInfo.h; sourceTree = ""; }; + 75DEE3CE7EB428E7DF23222FDD14C28C /* YapDatabaseRelationship.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRelationship.m; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationship.m; sourceTree = ""; }; + 765578694AE3E54B47FDEEB2079E6D2F /* YapDatabase.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = YapDatabase.modulemap; sourceTree = ""; }; + 767DD31CE54D1960D97F716D287D502A /* YapDatabaseConnectionConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseConnectionConfig.h; sourceTree = ""; }; + 76D3F5BEB91FD5F9AE1CE2EF5BE6C0DA /* YapDatabaseViewPage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewPage.h; sourceTree = ""; }; + 77BA7660186654CF8BF1DA4E6F72DF6F /* DDLegacyMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDLegacyMacros.h; path = "Sources/CocoaLumberjack/Supporting Files/DDLegacyMacros.h"; sourceTree = ""; }; + 77DD1D0F59405B93A09F15B1FBB8B20C /* YapDatabaseAutoView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseAutoView.h; path = YapDatabase/Extensions/AutoView/YapDatabaseAutoView.h; sourceTree = ""; }; + 7944BB4DD4A1A6F1F401C16C5824CEBF /* DDAssertMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDAssertMacros.h; path = Sources/CocoaLumberjack/include/DDAssertMacros.h; sourceTree = ""; }; + 79B7A3EFEBB3B45DB47245FB486EB66F /* YapDatabaseManualView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseManualView.h; path = YapDatabase/Extensions/ManualView/YapDatabaseManualView.h; sourceTree = ""; }; + 79C303BDBE2AA305661D708D0F4459CF /* YapDatabaseConnectionConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseConnectionConfig.m; sourceTree = ""; }; + 7BBDDB43B43ABFEFC10D4347F4B09A3D /* YapDatabaseSecondaryIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSecondaryIndex.h; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.h; sourceTree = ""; }; + 7D4B72762CBBA48A7F15638126EF032A /* YapNull.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapNull.m; sourceTree = ""; }; + 7DB226AE700501C9111CB3E87610B80C /* YapDatabaseRelationshipEdge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRelationshipEdge.h; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipEdge.h; sourceTree = ""; }; + 7E08FC3899730A65BB041952D452A338 /* YapDatabaseFullTextSearch.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFullTextSearch.m; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.m; sourceTree = ""; }; + 7E4BCC7C45B68EB5AA3FC8231C871259 /* YapDatabaseAutoViewConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseAutoViewConnection.m; path = YapDatabase/Extensions/AutoView/YapDatabaseAutoViewConnection.m; sourceTree = ""; }; + 81440BEFF1C4E3B57968FB26ED887C4B /* YapDatabaseFilteredViewPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseFilteredViewPrivate.h; sourceTree = ""; }; + 814A25AE76661C05BA95ADCE6308B006 /* YDBCKRecordInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKRecordInfo.h; sourceTree = ""; }; + 81AAB8AC6C0733C80BFCE930D935A4D4 /* YapDatabaseSearchResultsView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSearchResultsView.m; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsView.m; sourceTree = ""; }; + 822BD9DD365F08D045EB76DF61AF8A28 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + 82FFA8656983E7C63EA04CB4E86B1588 /* YapDatabaseFullTextSearchTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFullTextSearchTransaction.m; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.m; sourceTree = ""; }; + 83CBB9ECC8094880AFDFFEC7BD744C67 /* YapDatabaseRTreeIndexConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRTreeIndexConnection.m; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexConnection.m; sourceTree = ""; }; + 85A7D3C6F716DD6445E98161F5A2D690 /* YapDatabaseViewState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseViewState.m; sourceTree = ""; }; + 85AFCFCDF98443B6345CDF68EF7EFD69 /* Reachability-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Reachability-dummy.m"; sourceTree = ""; }; + 85BB247EBA65C2F9A2E274B1D5368740 /* YapDatabaseViewMappingsPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewMappingsPrivate.h; sourceTree = ""; }; + 8656148183EE3FF86B8DD7C7ABFDCC7D /* YapDatabaseHooksTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseHooksTransaction.m; path = YapDatabase/Extensions/Hooks/YapDatabaseHooksTransaction.m; sourceTree = ""; }; + 875F31FBAC2CF6B24AE493FB10D0D2D2 /* YapDatabase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YapDatabase.xcconfig; sourceTree = ""; }; + 877D55458589653811BBAF30BBCD0B86 /* YapDatabaseFullTextSearchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseFullTextSearchHandler.m; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchHandler.m; sourceTree = ""; }; + 8A80B9695462583B8FB850E106638743 /* YapDatabaseViewPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewPrivate.h; sourceTree = ""; }; + 8B36B28C8AE5E49A33730BC552A97696 /* YapDatabaseManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseManager.h; sourceTree = ""; }; + 8B4A514DEF30686D297DAC5B9529E949 /* YapDatabase.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = YapDatabase.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 8E3CBFD51DDA56CA2262211FC9BD5074 /* YapDatabaseCrossProcessNotificationConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCrossProcessNotificationConnection.h; path = YapDatabase/Extensions/CrossProcessNotification/YapDatabaseCrossProcessNotificationConnection.h; sourceTree = ""; }; + 8EA57FC933F1AD2493FB20A0E0EF2698 /* YapDatabaseCloudCoreConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudCoreConnection.m; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCoreConnection.m; sourceTree = ""; }; + 8F5557C3FFAFBE851223E1062BD5A4BB /* YapDatabaseCloudCoreGraph.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCloudCoreGraph.m; sourceTree = ""; }; + 90E9286C01E61051711DB6CFBF92F9A2 /* YapDatabaseCloudCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudCore.h; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCore.h; sourceTree = ""; }; + 90F36A240BB5E79F03719BAC292A1EBA /* DDContextFilterLogFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDContextFilterLogFormatter.h; path = Sources/CocoaLumberjack/include/DDContextFilterLogFormatter.h; sourceTree = ""; }; + 9107CDFDCE8A783239BEB01EB1F0FD2B /* YapManyToManyCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapManyToManyCache.h; sourceTree = ""; }; + 91C45BDBFDA6160386856A8E71514464 /* YDBCKRecordTableInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKRecordTableInfo.m; sourceTree = ""; }; + 92193246E86BE09485773884411B0FDE /* YapDatabaseSecondaryIndexTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSecondaryIndexTransaction.h; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.h; sourceTree = ""; }; + 93AF3C79889B8EE05C4C6F823D597CBE /* YapDatabaseExtensionTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseExtensionTypes.h; sourceTree = ""; }; + 93B14B0EBC508525B8FAE9CF0511D2E6 /* YapMurmurHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapMurmurHash.m; sourceTree = ""; }; + 942357AD4DDC444CD8D03A209B86CD26 /* YapDatabaseCloudCorePipelinePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCorePipelinePrivate.h; sourceTree = ""; }; + 95B443D4F86A2DCBE2DB1D5C2FBB1E74 /* YapDatabaseViewOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseViewOptions.m; path = YapDatabase/Extensions/View/YapDatabaseViewOptions.m; sourceTree = ""; }; + 95BCD366DB271E7A97573A453807AA0D /* YapDirtyDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDirtyDictionary.m; sourceTree = ""; }; + 965C3E45D61328F247BA6E62AE169883 /* YapRowidSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapRowidSet.h; sourceTree = ""; }; + 96A36D8483FDB32A7B531C19CA93AC91 /* YapProxyObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapProxyObject.m; sourceTree = ""; }; + 97E976FD87FCFBDD98E43A1D3B22D579 /* YapDatabaseRelationship.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseRelationship.swift; path = YapDatabase/Extensions/Relationships/Swift/YapDatabaseRelationship.swift; sourceTree = ""; }; + 98AD3BA5B73D8E7F3D2BBBF509E5760C /* YapDatabaseCryptoUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCryptoUtils.h; sourceTree = ""; }; + 9A1CDB915A4EB63D15B45A5E3CE380D2 /* YDBCKMappingTableInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKMappingTableInfo.h; sourceTree = ""; }; + 9A514338E2AE7D0F32BB586BEB2C3B73 /* libYapDatabase.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libYapDatabase.a; path = libYapDatabase.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 9B0B185D4E913BF729DE0A6C059F6922 /* YapDatabaseRTreeIndexHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRTreeIndexHandler.h; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexHandler.h; sourceTree = ""; }; + 9B879382F6254EEA101D0AD3762F2C2A /* YDBCKChangeRecord.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKChangeRecord.h; sourceTree = ""; }; + 9BA6CA377BC53274992588C3C883BD60 /* YapDatabaseSecondaryIndexHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSecondaryIndexHandler.m; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexHandler.m; sourceTree = ""; }; + 9C7A671047835A349D6236605ED787D4 /* YapDatabaseViewConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseViewConnection.m; path = YapDatabase/Extensions/View/YapDatabaseViewConnection.m; sourceTree = ""; }; + 9C8F83C81C86C0C168B56F29C60E0DC6 /* YapDatabaseRelationshipEdgePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseRelationshipEdgePrivate.h; sourceTree = ""; }; + 9D187CBBD60813137D2AFAF55C2C36D2 /* YapDatabaseCloudKitTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudKitTypes.m; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTypes.m; sourceTree = ""; }; + 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; }; + 9D9B39663FAA79B96292BB1FC5BC3C81 /* YapDatabaseExtensionConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseExtensionConnection.m; sourceTree = ""; }; + 9FDF54704887DDF302CD15A319DEEA18 /* YapDatabaseCloudCoreTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudCoreTransaction.h; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCoreTransaction.h; sourceTree = ""; }; + 9FF0684C8B06010E646A765440D512A9 /* YapDatabaseCloudCoreConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudCoreConnection.h; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCoreConnection.h; sourceTree = ""; }; + A00454F17A6827062EFA9FD74DDDF1EF /* YapManyToManyCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapManyToManyCache.m; sourceTree = ""; }; + A033AAEA56D36667C4B9B3672F51BA83 /* YapDatabaseCloudCorePipeline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCorePipeline.h; sourceTree = ""; }; + A05F34E9AC8312A1A998AAFE1B71CDFE /* YapDatabaseCollectionConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCollectionConfig.m; sourceTree = ""; }; + A0B980B13631F78458E96AD6C16F5DAF /* YapDatabaseRTreeIndexConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRTreeIndexConnection.h; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexConnection.h; sourceTree = ""; }; + A31546E23C1E89EF8953FF95508EACBF /* YapDatabaseCrossProcessNotificationTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCrossProcessNotificationTransaction.h; path = YapDatabase/Extensions/CrossProcessNotification/YapDatabaseCrossProcessNotificationTransaction.h; sourceTree = ""; }; + A4907FFD108659AD239912E8DC590ED0 /* YapDatabaseCloudCoreOperationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCoreOperationPrivate.h; sourceTree = ""; }; + A495D88E9C62E4F468E356FD6108155A /* YapDatabaseViewLocator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewLocator.h; sourceTree = ""; }; + A4F6F6AE7841E669689FC27DB270D96D /* YapDatabaseCrossProcessNotificationTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCrossProcessNotificationTransaction.m; path = YapDatabase/Extensions/CrossProcessNotification/YapDatabaseCrossProcessNotificationTransaction.m; sourceTree = ""; }; + A5952F0B8FAB82B9BAAF272FCD33BFE0 /* DDFileLogger+Buffering.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "DDFileLogger+Buffering.m"; path = "Sources/CocoaLumberjack/Extensions/DDFileLogger+Buffering.m"; sourceTree = ""; }; + A5A4A4993708AA8C213D3B20CD881F0B /* YDBCKRecordInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKRecordInfo.m; sourceTree = ""; }; + A695F639A0C20B30DB44293A9D3BB240 /* YapDatabaseRelationshipTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRelationshipTransaction.m; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipTransaction.m; sourceTree = ""; }; + A6A7CAC02E7D539193445CA27467B4AE /* DDFileLogger+Buffering.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DDFileLogger+Buffering.h"; path = "Sources/CocoaLumberjack/include/DDFileLogger+Buffering.h"; sourceTree = ""; }; + A6EAB758829572715927446EA3E3AEED /* YapCollectionKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapCollectionKey.h; sourceTree = ""; }; + A7029BADA556B063B8CAD2A02FD74930 /* YapDatabaseRelationshipTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRelationshipTransaction.h; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipTransaction.h; sourceTree = ""; }; + A7BA3D49805FAE5346A6B45E3F1F61A5 /* YapDatabaseConnectionProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseConnectionProxy.m; sourceTree = ""; }; + A97177956523C9713611F1606EEC814C /* Pods-CloudKitTodo-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CloudKitTodo-umbrella.h"; sourceTree = ""; }; + AAEC8A63D42A241118E6DC3C74585942 /* YapDatabaseQuery.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseQuery.swift; path = YapDatabase/Swift/YapDatabaseQuery.swift; sourceTree = ""; }; + AB205EDDBEC7958C10244A7DAFCA1FFE /* YDBCKChangeQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKChangeQueue.h; sourceTree = ""; }; + AB3B31A83EEBE199038BB8C8FB6CBFA3 /* YapDatabaseManualViewConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseManualViewConnection.h; path = YapDatabase/Extensions/ManualView/YapDatabaseManualViewConnection.h; sourceTree = ""; }; + AC12C96E98AB2C8498049164C90EC58C /* YapDatabaseViewTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseViewTypes.m; path = YapDatabase/Extensions/AutoView/YapDatabaseViewTypes.m; sourceTree = ""; }; + AC405F0D3113C75EA6E75929F007E9AF /* YapDatabaseSearchQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseSearchQueue.m; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchQueue.m; sourceTree = ""; }; + ADF8123C879533091791D4A38906F45F /* YDBCKRecord.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKRecord.m; sourceTree = ""; }; + ADFE6A8737FEDEE46A2CF885D496C408 /* YapDatabaseViewRangeOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewRangeOptions.h; sourceTree = ""; }; + AEF7BFABB81991855E9D9440A5F2FAB5 /* YapDatabaseCloudCoreOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCloudCoreOperation.m; sourceTree = ""; }; + AF3E9640F94306377BA8B29CE39A3049 /* YapDatabaseCloudKitPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudKitPrivate.h; sourceTree = ""; }; + B0541D4E97CAEE902EDF1802C1089C49 /* YapDatabaseViewState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewState.h; sourceTree = ""; }; + B16DF51454D5F80DFD25FF24E0BFB6B1 /* DDOSLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDOSLogger.h; path = Sources/CocoaLumberjack/include/DDOSLogger.h; sourceTree = ""; }; + B2DE864BE23B11217364D108D278C507 /* YapDatabaseSecondaryIndexConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSecondaryIndexConnection.h; path = YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.h; sourceTree = ""; }; + B34B0FC689724D510AB320905ECEA157 /* YapDatabaseTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseTransaction.m; path = YapDatabase/YapDatabaseTransaction.m; sourceTree = ""; }; + B46593AB7AC5E4D7DAD62CC2E3D95BF4 /* Reachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = ""; }; + B46CFB4820CE85B8AF80DD25CBD11C94 /* YapDatabaseRTreeIndexTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRTreeIndexTransaction.m; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexTransaction.m; sourceTree = ""; }; + B59D7384023E17FE3B459038E1F4C49F /* DDTTYLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDTTYLogger.h; path = Sources/CocoaLumberjack/include/DDTTYLogger.h; sourceTree = ""; }; + B79BB3BEF5D2C3B749C66F641A8EE25D /* YapDatabaseActionManagerTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseActionManagerTransaction.h; path = YapDatabase/Extensions/ActionManager/YapDatabaseActionManagerTransaction.h; sourceTree = ""; }; + B9C0F0CB3678CB2F7E8AF5FFFC36F498 /* YapDatabaseViewTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseViewTransaction.h; path = YapDatabase/Extensions/View/YapDatabaseViewTransaction.h; sourceTree = ""; }; + BA03294D09E7F14BF46818D68F9A0893 /* Pods-CloudKitTodo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CloudKitTodo-acknowledgements.markdown"; sourceTree = ""; }; + BA0C9C4EAF548A6F59A3E82C87BC4A15 /* YapDatabaseRTreeIndexTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRTreeIndexTransaction.h; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexTransaction.h; sourceTree = ""; }; + BB29D63B4F22F36CEB1213153E484B3A /* YapDatabase-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YapDatabase-prefix.pch"; sourceTree = ""; }; + BB6B0AE067833BAD26CE71B3C7FAA52D /* YapDatabaseHooks.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseHooks.m; path = YapDatabase/Extensions/Hooks/YapDatabaseHooks.m; sourceTree = ""; }; + BB91445D1C15384EA833D87DF354F562 /* YapDatabaseCloudCoreGraph.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCoreGraph.h; sourceTree = ""; }; + BC96973D657059A87175DB5FFDFE4DA3 /* YapDatabaseFilteredViewTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFilteredViewTypes.h; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredViewTypes.h; sourceTree = ""; }; + BD4E8F342BC003DCD58275FC3546D146 /* YapTouch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapTouch.h; sourceTree = ""; }; + BD7F82D18333EEBA12C4112767EEDC13 /* YapDatabaseAutoViewTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseAutoViewTransaction.m; path = YapDatabase/Extensions/AutoView/YapDatabaseAutoViewTransaction.m; sourceTree = ""; }; + BDB40660E7EFA17F7292E701EBB690C1 /* YapDatabaseView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseView.m; path = YapDatabase/Extensions/View/YapDatabaseView.m; sourceTree = ""; }; + BFB316468589CA433E33161A50B32617 /* YapDatabaseStatement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseStatement.m; sourceTree = ""; }; + C0E913509265037028C184397048380D /* YapDatabaseFullTextSearch.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseFullTextSearch.swift; path = YapDatabase/Extensions/FullTextSearch/Swift/YapDatabaseFullTextSearch.swift; sourceTree = ""; }; + C1722730E4F81ABDFAED29D82FBF4006 /* YapDatabaseRelationshipNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRelationshipNode.h; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipNode.h; sourceTree = ""; }; + C190C27B93B23B04BD7456C7D1217A8A /* YapActionItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapActionItem.m; path = YapDatabase/Extensions/ActionManager/YapActionItem.m; sourceTree = ""; }; + C261436D14052AE3C35F240BCD155CAC /* libCocoaLumberjack.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libCocoaLumberjack.a; path = libCocoaLumberjack.a; sourceTree = BUILT_PRODUCTS_DIR; }; + C28751E4241E68BF6C905F56B8168A8E /* YapCollectionKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapCollectionKey.m; sourceTree = ""; }; + C449B9A4035473F65C204CB744B6F218 /* YapDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabase.m; path = YapDatabase/YapDatabase.m; sourceTree = ""; }; + C4A41ADBB41A630040DA2DA5499E87E2 /* YapDatabaseRelationshipConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRelationshipConnection.m; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipConnection.m; sourceTree = ""; }; + C501B18F802524EA603BBB914F39884C /* YapDatabaseOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseOptions.h; path = YapDatabase/YapDatabaseOptions.h; sourceTree = ""; }; + C605800595C7C4D7557B3FDC52FBB8E9 /* YapDatabaseHooksTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseHooksTransaction.h; path = YapDatabase/Extensions/Hooks/YapDatabaseHooksTransaction.h; sourceTree = ""; }; + C61E0C9E1F81D3CF7FAA3E0E768B6560 /* YapDatabaseCrossProcessNotification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCrossProcessNotification.h; path = YapDatabase/Extensions/CrossProcessNotification/YapDatabaseCrossProcessNotification.h; sourceTree = ""; }; + C67C53D9494005B519FFEDEB629FEBB1 /* YapDatabaseCloudCoreTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudCoreTransaction.m; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCoreTransaction.m; sourceTree = ""; }; + C7121128B6C9CA39D47FAFA053AD77CB /* YapDatabaseTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseTransaction.h; path = YapDatabase/YapDatabaseTransaction.h; sourceTree = ""; }; + C8A8EA5CB846ACF469E632C025E8924B /* YapDatabaseCrossProcessNotificationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCrossProcessNotificationPrivate.h; sourceTree = ""; }; + C8CEE4E68EA7788C53B8DA42B1F2097B /* YapDatabaseActionManagerPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseActionManagerPrivate.h; sourceTree = ""; }; + C9367283416273682D0CFD8295189252 /* YapDatabaseRelationshipEdge.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRelationshipEdge.m; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipEdge.m; sourceTree = ""; }; + C9A25AE227A0815A5D15A7BFDE576D80 /* YapDatabaseCloudCoreOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudCoreOptions.m; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCoreOptions.m; sourceTree = ""; }; + C9B0CEF5CF027A908FDE5AACE1EF6F31 /* YapDatabaseActionManagerConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseActionManagerConnection.m; path = YapDatabase/Extensions/ActionManager/YapDatabaseActionManagerConnection.m; sourceTree = ""; }; + CAD28452F42B9C8C5C70B07F72512EBA /* YapDatabaseFullTextSearchSnippetOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFullTextSearchSnippetOptions.h; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchSnippetOptions.h; sourceTree = ""; }; + CB395EA3B42FA27D9C987645C7E77C93 /* DDFileLogger+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DDFileLogger+Internal.h"; path = "Sources/CocoaLumberjack/DDFileLogger+Internal.h"; sourceTree = ""; }; + CB501C8A12EA9D78031D4349120A0769 /* YapDatabaseCrossProcessNotification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCrossProcessNotification.m; path = YapDatabase/Extensions/CrossProcessNotification/YapDatabaseCrossProcessNotification.m; sourceTree = ""; }; + CCFB555BB12F8B5A74381CE5D9898FC2 /* YapDatabaseRelationship.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRelationship.h; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationship.h; sourceTree = ""; }; + CDC50EDD27F55BFBB0EA103F29BC6912 /* YapDatabaseSecondaryIndex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseSecondaryIndex.swift; path = YapDatabase/Extensions/SecondaryIndex/Swift/YapDatabaseSecondaryIndex.swift; sourceTree = ""; }; + CEAE0BA40F7C6130CF1E88F4116A3625 /* Pods-CloudKitTodo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CloudKitTodo.debug.xcconfig"; sourceTree = ""; }; + D1AFFC3BB1663C88FAAA095E86872B89 /* YapDatabaseManualView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseManualView.swift; path = YapDatabase/Extensions/ManualView/Swift/YapDatabaseManualView.swift; sourceTree = ""; }; + D1DD6DA8E7C9806B9AE16BECA2E9F0E6 /* YapMutationStack.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapMutationStack.m; sourceTree = ""; }; + D2093058F572596A109FD38444860401 /* YapDatabase-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YapDatabase-umbrella.h"; sourceTree = ""; }; + D252C2850A834C318B28F237D5D8E0A1 /* CLIColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CLIColor.m; path = Sources/CocoaLumberjack/CLI/CLIColor.m; sourceTree = ""; }; + D2569C18A9BC07361B5826C6708C156E /* YapDatabaseFullTextSearchConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFullTextSearchConnection.h; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.h; sourceTree = ""; }; + D2DCA750081E7C69D90748F850C5435B /* YapDatabaseActionManagerConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseActionManagerConnection.h; path = YapDatabase/Extensions/ActionManager/YapDatabaseActionManagerConnection.h; sourceTree = ""; }; + D386C98B26472097CAA5AA022D835C7D /* YapDatabaseQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseQuery.m; sourceTree = ""; }; + D3E71156436EF4BFD781870E960C9DED /* YDBCKAttachRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKAttachRequest.h; sourceTree = ""; }; + D4006169444C7A9E3C963A289A2AC0F7 /* YapDatabaseCrossProcessNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseCrossProcessNotification.swift; path = YapDatabase/Extensions/CrossProcessNotification/Swift/YapDatabaseCrossProcessNotification.swift; sourceTree = ""; }; + D5869948ACEB0CC9B6926414493AA112 /* YapDatabaseAutoViewPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseAutoViewPrivate.h; sourceTree = ""; }; + D70818D8E4079426F6C6141A62656F8D /* YapDatabaseHooksConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseHooksConnection.m; path = YapDatabase/Extensions/Hooks/YapDatabaseHooksConnection.m; sourceTree = ""; }; + D75173ED46540B34DC8D1F3D4D87E54E /* DDAbstractDatabaseLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDAbstractDatabaseLogger.h; path = Sources/CocoaLumberjack/include/DDAbstractDatabaseLogger.h; sourceTree = ""; }; + D95B7CFA7523C8983C5BDA83D03F8BE1 /* yap_vfs_shim.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = yap_vfs_shim.h; sourceTree = ""; }; + D988F65D2A4F1C911ACBEB99E833BC61 /* YapDatabaseCloudKitTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudKitTypes.h; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTypes.h; sourceTree = ""; }; + D9F0C2A1E1FD70066DD87313C1CFEC6E /* YapDatabaseViewConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseViewConnection.h; path = YapDatabase/Extensions/View/YapDatabaseViewConnection.h; sourceTree = ""; }; + DA2D4030735F324DA1C89D8222397CFC /* YapDatabaseSearchResultsView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseSearchResultsView.h; path = YapDatabase/Extensions/SearchResultsView/YapDatabaseSearchResultsView.h; sourceTree = ""; }; + DA44F4FBADBD8940BC4DCDB40B305961 /* Reachability-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reachability-prefix.pch"; sourceTree = ""; }; + DB8C972D351F36237703D7EA3807870B /* DDDispatchQueueLogFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDDispatchQueueLogFormatter.m; path = Sources/CocoaLumberjack/Extensions/DDDispatchQueueLogFormatter.m; sourceTree = ""; }; + DD3232216ED8C1BFF2923E6F9158D111 /* YapDatabaseViewChange.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewChange.h; sourceTree = ""; }; + DD4C2B55606F9E676FE7A3853B9CC7C3 /* YapDatabaseFilteredView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFilteredView.h; path = YapDatabase/Extensions/FilteredView/YapDatabaseFilteredView.h; sourceTree = ""; }; + DE3B4B831F160FFE801962FE528A2246 /* DDLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDLog.m; path = Sources/CocoaLumberjack/DDLog.m; sourceTree = ""; }; + E03AB2619369CFB66E9D286438CFB357 /* YapDatabaseOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseOptions.m; path = YapDatabase/YapDatabaseOptions.m; sourceTree = ""; }; + E03EEF17DD0F331E01DF541DACAAEF6C /* Pods-CloudKitTodo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CloudKitTodo-dummy.m"; sourceTree = ""; }; + E1148524AC23CB850E1805719550C188 /* YapDatabaseCloudKitConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseCloudKitConnection.m; path = YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitConnection.m; sourceTree = ""; }; + E1219E1B9A3A9AB7C3DA5DA531452BB3 /* YapDatabaseAutoView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseAutoView.m; path = YapDatabase/Extensions/AutoView/YapDatabaseAutoView.m; sourceTree = ""; }; + E3A68E061A9D87B8F89C02FEE470C395 /* YapDatabaseRTreeIndexSetup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRTreeIndexSetup.h; path = YapDatabase/Extensions/RTreeIndex/YapDatabaseRTreeIndexSetup.h; sourceTree = ""; }; + E4243C0E21F9FE55065FA0A6448F90F0 /* YapDatabaseExtensionTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseExtensionTransaction.h; sourceTree = ""; }; + E45E3BA1C1129A2CE059E373F3E2BA2E /* YapDatabaseHooks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseHooks.h; path = YapDatabase/Extensions/Hooks/YapDatabaseHooks.h; sourceTree = ""; }; + E46D692783A01BE96DFB81FEA211605C /* YapDatabaseSearchResultsViewPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseSearchResultsViewPrivate.h; sourceTree = ""; }; + E5CAC6D081C1A84BF41A9D1BDA78D2CB /* YapDatabaseFullTextSearchTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseFullTextSearchTransaction.h; path = YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.h; sourceTree = ""; }; + E5E85BC4DB308A4BCCF5079627BD807B /* YapDatabaseRelationshipOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseRelationshipOptions.m; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipOptions.m; sourceTree = ""; }; + E7B986A8529A9C1ED6AD4A18D0223B03 /* DDOSLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDOSLogger.m; path = Sources/CocoaLumberjack/DDOSLogger.m; sourceTree = ""; }; + E846D28CC65045B2E1485AFD556ABB90 /* YapDatabaseConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YapDatabaseConnection.m; path = YapDatabase/YapDatabaseConnection.m; sourceTree = ""; }; + E9366A242257C207B2B0F6FA7ABAF74D /* YapProxyObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapProxyObject.h; sourceTree = ""; }; + EA0E0331B91902167A51BB4756703BBD /* YapDatabaseViewRangeOptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseViewRangeOptions.m; sourceTree = ""; }; + F02D179A8E196265004AD447EA7F7703 /* YDBCKAttachRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKAttachRequest.m; sourceTree = ""; }; + F18C0B5E4F2B195F163995D366B41F23 /* YapDatabaseCloudCoreOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseCloudCoreOptions.h; path = YapDatabase/Extensions/CloudCore/YapDatabaseCloudCoreOptions.h; sourceTree = ""; }; + F3D51F478213041EDF2CF6713E40C460 /* YapMurmurHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapMurmurHash.h; sourceTree = ""; }; + F461FB86A0181AEB96BADD723C7C6A2B /* Pods-CloudKitTodo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CloudKitTodo-acknowledgements.plist"; sourceTree = ""; }; + F476A4E3A53B17F2D2AA0ECB2FE662E7 /* YapDatabaseRTreeIndex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YapDatabaseRTreeIndex.swift; path = YapDatabase/Extensions/RTreeIndex/Swift/YapDatabaseRTreeIndex.swift; sourceTree = ""; }; + F4BC1D6FCDDDE852052DBD9C32D3076E /* YDBCKMergeInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKMergeInfo.m; sourceTree = ""; }; + F59B953F12BEF4193447E82FA63784A5 /* YapNull.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapNull.h; sourceTree = ""; }; + F65B6892A8686986CAC812963880BC34 /* YapDatabaseConnectionState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseConnectionState.m; sourceTree = ""; }; + F69B7C7033A6962F46BECCA2AF80850F /* YDBCKChangeRecord.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YDBCKChangeRecord.m; sourceTree = ""; }; + F71948ECE95DD2F8AE4691738DA9F089 /* YapDatabaseRelationshipOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YapDatabaseRelationshipOptions.h; path = YapDatabase/Extensions/Relationships/YapDatabaseRelationshipOptions.h; sourceTree = ""; }; + F8E80BF141BAFBBF8A9A163B567FFE97 /* YDBCKRecord.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YDBCKRecord.h; sourceTree = ""; }; + FADBB0CDE767694F3A7CE7BA322EE795 /* YapDatabaseCryptoUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCryptoUtils.m; sourceTree = ""; }; + FAF30BBD26DAB73C7BAC908C5E95A2D9 /* YapDatabaseManualViewPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseManualViewPrivate.h; sourceTree = ""; }; + FB965E81D0205226B7826C0ABA4E1064 /* YapCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapCache.h; sourceTree = ""; }; + FC0324A51E603C4452877887AD1ECE7F /* YapDatabasePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabasePrivate.h; sourceTree = ""; }; + FDB97AEC408598025D7E58729388ED37 /* YapDatabaseViewChangePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YapDatabaseViewChangePrivate.h; sourceTree = ""; }; + FF9F6D367F29F4F22E4B123FA85D5905 /* DDLog+LOGV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DDLog+LOGV.h"; path = "Sources/CocoaLumberjack/include/DDLog+LOGV.h"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 1D3C084F0F85EE2BAFC3BB560CA516D8 /* Frameworks */ = { + 0A388FE37A03187F5ADE44D404A29DF2 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BE614A1CE66E55281A934A69CED1EBED /* Foundation.framework in Frameworks */, - C15C80FA52298D43B73F5AAD28372408 /* SystemConfiguration.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3442C69E3CD28F1CA09D4E6D61368DD6 /* Frameworks */ = { + 19187ABD1A692900D5045215C029ABF8 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4E1F0FDB2D0DDD0B4E932C4B3C62B900 /* Foundation.framework in Frameworks */, - 4214460A9A8DB8097D339BDF27346C08 /* SystemConfiguration.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9AF1B599A5BCAE0081FACB0CF30D9712 /* Frameworks */ = { + 26458EBFF491D7CD6BE474328070D21B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 10811A0C5774FFFBF1B763FA38A4BF7C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - EB5A58141A5222AC4D98822439E40C0C /* Frameworks */ = { + 515690CDBAFCCE604ADEFFC2534AF781 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4FEFF1501C7B9B24DDF29467E86EFB9B /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 034F61DF31C6922DCA9B000CA39B5BB3 /* Internal */ = { + 1446248F12C17C9079C14C4B1D972392 /* Internal */ = { isa = PBXGroup; children = ( - 3751AB8BEDF465401C5FA65B97558F2E /* YapDatabaseFilteredViewPrivate.h */, + 4DF6C2AD30BCBD23BD022036E0D7AD43 /* YapDatabaseHooksPrivate.h */, ); name = Internal; - path = YapDatabase/Extensions/FilteredView/Internal; + path = YapDatabase/Extensions/Hooks/Internal; sourceTree = ""; }; - 041C21177BAD4C94A54ECC955057EC12 /* YapDatabase */ = { + 1587CD742493120EC59F3472D5362A4A /* CloudKit */ = { isa = PBXGroup; children = ( - B57C443F06C9CB8A79E9E10E296BD70C /* Standard */, - 17930072171CC4B681D9F449AA70C5D3 /* Support Files */, + 35B5F13EEBE84D317CF939C14B0B7C68 /* YapDatabaseCloudKit.h */, + 2D25E6268B0015B7A77A96DBDA78E64D /* YapDatabaseCloudKit.m */, + 2A460229E912A807F438897E51BA9301 /* YapDatabaseCloudKitConnection.h */, + E1148524AC23CB850E1805719550C188 /* YapDatabaseCloudKitConnection.m */, + 0543C9D27D88410B384F4FD23974D57E /* YapDatabaseCloudKitOptions.h */, + 3A050CD00C1D70A92D4C4F086380B089 /* YapDatabaseCloudKitOptions.m */, + 3EECDE7BB1A798CB65DCB896D75D566A /* YapDatabaseCloudKitTransaction.h */, + 5D52DF1E2CCA2C66920A34B4A70E853B /* YapDatabaseCloudKitTransaction.m */, + D988F65D2A4F1C911ACBEB99E833BC61 /* YapDatabaseCloudKitTypes.h */, + 9D187CBBD60813137D2AFAF55C2C36D2 /* YapDatabaseCloudKitTypes.m */, + 3F32A7FB135074757D89B5A2A9776A1A /* Internal */, + 7790AE7CF78E0225823EAC5096E28AD8 /* Utilities */, ); - name = YapDatabase; - path = ../../..; + name = CloudKit; sourceTree = ""; }; - 0601C98AA1C8653E886B970FC543EA9E /* Products */ = { + 186DC701755965EF743935DD11C8BFDA /* SearchResultsView */ = { isa = PBXGroup; children = ( - 21C4819D3580D952A393EDEBA4B04D7A /* libCocoaLumberjack.a */, - E4BE3A1EED43E987C4DBA575252D7526 /* libPods-CloudKitTodo.a */, - 33CD89FD8C0920B81E0179838A4C01A9 /* libReachability.a */, - AF353A9860396BF97932F2302684D212 /* libYapDatabase.a */, + 0B728903260D87269523D23FF7DC1E42 /* YapDatabaseSearchQueue.h */, + AC405F0D3113C75EA6E75929F007E9AF /* YapDatabaseSearchQueue.m */, + DA2D4030735F324DA1C89D8222397CFC /* YapDatabaseSearchResultsView.h */, + 81AAB8AC6C0733C80BFCE930D935A4D4 /* YapDatabaseSearchResultsView.m */, + 104D443C264CE672855AEAD5F72DE59C /* YapDatabaseSearchResultsViewConnection.h */, + 09BA0147FD6337594BCEB384A7BC4381 /* YapDatabaseSearchResultsViewConnection.m */, + 373CE5767DB41CFB4068B338C65C4DC8 /* YapDatabaseSearchResultsViewOptions.h */, + 1E31EC48A0135D33364CD8B42450D6DB /* YapDatabaseSearchResultsViewOptions.m */, + 66FFD31D8CCACEB86F2F757AC2C78499 /* YapDatabaseSearchResultsViewTransaction.h */, + 2AA96D2F4BC5790639E13A9FF289690F /* YapDatabaseSearchResultsViewTransaction.m */, + 4BAD157E5E49E67B4BCD8C47A1EE3B32 /* Internal */, ); - name = Products; + name = SearchResultsView; sourceTree = ""; }; - 0D21BE1FC963484F36B9DC19345F79E5 /* ConnectionProxy */ = { + 1D011FDA319A312885824057F624FF83 /* Development Pods */ = { isa = PBXGroup; children = ( - E032D69CD1F90FABA382EC845E0B9D28 /* YapDatabaseConnectionProxy.h */, - B6722CEBF31F82169FC105CD147B5BBF /* YapDatabaseConnectionProxy.m */, + CC8935D531A194370FD92FEEF3262B3F /* YapDatabase */, ); - name = ConnectionProxy; + name = "Development Pods"; sourceTree = ""; }; - 17930072171CC4B681D9F449AA70C5D3 /* Support Files */ = { + 1E00E5A9C9BBFC8AB68DBE6FF14D11D6 /* FullTextSearch */ = { isa = PBXGroup; children = ( - A808CA87693ABF1782B9FBA11B1750D2 /* YapDatabase.xcconfig */, - E363AE7AA8D42E3552ACF2B419887B91 /* YapDatabase-dummy.m */, - B2EE29E9049716B095256927BFC1BEEE /* YapDatabase-prefix.pch */, + C0E913509265037028C184397048380D /* YapDatabaseFullTextSearch.swift */, ); - name = "Support Files"; - path = "Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase"; + name = FullTextSearch; sourceTree = ""; }; - 1BFD66651FE9C8A0561B63B2CC60C41F /* Operations */ = { + 1E0372E55D9EB7BB9A1F0389E28F9E1A /* RTreeIndex */ = { isa = PBXGroup; children = ( - CE0AE88E13AB9ABD4E528C0FE67EB060 /* YapDatabaseCloudCoreOperation.h */, - D7BA6D1156ABC5D219108E1E5244AF29 /* YapDatabaseCloudCoreOperation.m */, + 370D081156B1B9CF39ABD794EC3FBAB7 /* YapDatabaseRTreeIndex.h */, + 5A88D8FC4504EE5EF7E4F663A87503E1 /* YapDatabaseRTreeIndex.m */, + A0B980B13631F78458E96AD6C16F5DAF /* YapDatabaseRTreeIndexConnection.h */, + 83CBB9ECC8094880AFDFFEC7BD744C67 /* YapDatabaseRTreeIndexConnection.m */, + 9B0B185D4E913BF729DE0A6C059F6922 /* YapDatabaseRTreeIndexHandler.h */, + 5C6270516D8F4F448598EDBC61806840 /* YapDatabaseRTreeIndexHandler.m */, + 6D1D99C6799BA9B5C51ADD0156A03B4C /* YapDatabaseRTreeIndexOptions.h */, + 13C644EDE4E6A2C788817020C828FCDD /* YapDatabaseRTreeIndexOptions.m */, + E3A68E061A9D87B8F89C02FEE470C395 /* YapDatabaseRTreeIndexSetup.h */, + 1B93C71C50DEC5A5B91C7206528CAD03 /* YapDatabaseRTreeIndexSetup.m */, + BA0C9C4EAF548A6F59A3E82C87BC4A15 /* YapDatabaseRTreeIndexTransaction.h */, + B46CFB4820CE85B8AF80DD25CBD11C94 /* YapDatabaseRTreeIndexTransaction.m */, + AFCC810D2929ECBC84EF8C553139651C /* Internal */, ); - path = Operations; + name = RTreeIndex; sourceTree = ""; }; - 1D909D20774048A6F626C8711AD22DBC /* Utilities */ = { + 20414AB4DA29DE914DFC6026550A93E4 /* Internal */ = { isa = PBXGroup; children = ( - EA9DD82C868B5BCECA185C8F9F2DC5D8 /* YDBCKChangeSet.h */, - EB8FB1CCF79532FF56B8E92BC070A98F /* YDBCKChangeSet.m */, - 40ABE37A0863C13DF2288C0E457DC223 /* YDBCKMergeInfo.h */, - CDF8478968B0569DD093B7DE7E4544D9 /* YDBCKMergeInfo.m */, - 6FEB0C93C5BD1959F652E157D35E47FC /* YDBCKRecord.h */, - F90F7E7C54EC769010F335B8C54550DE /* YDBCKRecord.m */, - 2409D092496ACAF6D4EF498D44F18150 /* YDBCKRecordInfo.h */, - BC4A4CB2902E1B0AF72A5AA5F7AE2F71 /* YDBCKRecordInfo.m */, + 9C8F83C81C86C0C168B56F29C60E0DC6 /* YapDatabaseRelationshipEdgePrivate.h */, + 1005046FD112EE1555CE16072AD88E3A /* YapDatabaseRelationshipPrivate.h */, ); - name = Utilities; - path = YapDatabase/Extensions/CloudKit/Utilities; + name = Internal; + path = YapDatabase/Extensions/Relationships/Internal; sourceTree = ""; }; - 1E3C72761F8070A47637D6E9C938F248 /* Internal */ = { + 21EC30FAFF0E2CD0FC05FADFDD5C4750 /* Pod */ = { isa = PBXGroup; children = ( - 1630A9DC2E4923C63DF9D7089345082D /* YapDatabaseRTreeIndexPrivate.h */, + 68060A42F7B57B88B1C0B118104BA4A7 /* LICENSE.txt */, + 822BD9DD365F08D045EB76DF61AF8A28 /* README.md */, + 8B4A514DEF30686D297DAC5B9529E949 /* YapDatabase.podspec */, ); - name = Internal; - path = YapDatabase/Extensions/RTreeIndex/Internal; + name = Pod; sourceTree = ""; }; - 2189C1E2380ED855BB04F48D0D661A99 /* Pods */ = { + 27AE943E0490A7F02987F98DED3EA942 /* Operations */ = { isa = PBXGroup; children = ( - E04F7675F138A94286FA2ACE6FC08150 /* CocoaLumberjack */, - E11648C148A72472A82FFFBC81B1FA94 /* Reachability */, + 26F48588807083BBFD6B6862C1819587 /* YapDatabaseCloudCoreOperation.h */, + AEF7BFABB81991855E9D9440A5F2FAB5 /* YapDatabaseCloudCoreOperation.m */, ); - name = Pods; + name = Operations; + path = Operations; sourceTree = ""; }; - 24BCD8172AC5598EBDEC99D2E46E4D6B /* Targets Support Files */ = { + 321C446160918BFFACDBB7985D8E1E1D /* Hooks */ = { isa = PBXGroup; children = ( - 59B6071E0A7487EF17747BA986F7C312 /* Pods-CloudKitTodo */, + E45E3BA1C1129A2CE059E373F3E2BA2E /* YapDatabaseHooks.h */, + BB6B0AE067833BAD26CE71B3C7FAA52D /* YapDatabaseHooks.m */, + 1FBBFEBF550EC1154B0C9C52C1FA8DF0 /* YapDatabaseHooksConnection.h */, + D70818D8E4079426F6C6141A62656F8D /* YapDatabaseHooksConnection.m */, + C605800595C7C4D7557B3FDC52FBB8E9 /* YapDatabaseHooksTransaction.h */, + 8656148183EE3FF86B8DD7C7ABFDCC7D /* YapDatabaseHooksTransaction.m */, + 1446248F12C17C9079C14C4B1D972392 /* Internal */, ); - name = "Targets Support Files"; + name = Hooks; sourceTree = ""; }; - 25D62F34A3E3C6820C8DDE1CC5AB659A /* Protocol */ = { + 3A40A199EDF7C8206C9FCB14890475E8 /* Relationships */ = { isa = PBXGroup; children = ( - 3F0EAAC9123BE895D7EF99B984841D76 /* YapDatabaseExtension.h */, - CCC0CBEE9312924892EB03CFBE2692E2 /* YapDatabaseExtension.m */, - 48AECECBD70C182E9AAA0C4BD0DBE747 /* YapDatabaseExtensionConnection.h */, - F34DBAB6F28EE9C9DFD33103B1DA5BA7 /* YapDatabaseExtensionConnection.m */, - 88AB9E6E95ED9752413FF6041D48A6A1 /* YapDatabaseExtensionTransaction.h */, - DABBE1136D69972B218AE8DA7FD91502 /* YapDatabaseExtensionTransaction.m */, - 723C94106B1456063AB39E1D3EAFE14E /* YapDatabaseExtensionTypes.h */, - C402BE4677D245D094938D5A32A83E90 /* Internal */, + 97E976FD87FCFBDD98E43A1D3B22D579 /* YapDatabaseRelationship.swift */, ); - path = Protocol; + name = Relationships; sourceTree = ""; }; - 28588B4D48EA01A9E3D61737C054B0DC /* Default */ = { + 3A41E288117A7D0A7D2E3C2842B136CD /* Support Files */ = { isa = PBXGroup; children = ( - 2470CA52B299D3C2D3C743930F1FC2F4 /* CocoaLumberjack.h */, - 62994961B0B091E0745614B1A6059CB0 /* DDAbstractDatabaseLogger.h */, - 88254EAEC6B013F26CDA8C87A72ECF53 /* DDAbstractDatabaseLogger.m */, - 039697832C7577931624DB19A1E3266D /* DDASLLogCapture.h */, - FF8ADC88110AB44FAF84AC8DCB4EC1F2 /* DDASLLogCapture.m */, - BB4FDF44FA617764EF1EBB3C8F66D030 /* DDASLLogger.h */, - 6D3BA25B6B4F24013B5759D8E8BB288F /* DDASLLogger.m */, - 2919E503739018F479CFCC44471564C7 /* DDAssertMacros.h */, - 27474764F8A683C020EFF9CE3F7D39D2 /* DDFileLogger.h */, - 8A613D5EC3696611D99F1F34E102C334 /* DDFileLogger.m */, - C8DBB7D8EA45538B20B417A0590C7F2B /* DDLegacyMacros.h */, - 6E1F9463B4A6CB956B70915027E01FC3 /* DDLog.h */, - CDEE0E257A2ED445C93F097725834048 /* DDLog.m */, - FD17EA6ED731B20E1A32A529788CE54E /* DDLog+LOGV.h */, - 7E5F63A9F778BEFE1F7C9B66DF65FBBB /* DDLogMacros.h */, - BA5C9299B9550A3054799E3F8D423CB6 /* DDOSLogger.h */, - F9AE84702E97561D0344E97A9CA41733 /* DDOSLogger.m */, - 53961A117B1C8CD4E4AF766DDFE01FFF /* DDTTYLogger.h */, - F23125BC3D8770E72EFA65B25F025A24 /* DDTTYLogger.m */, + 765578694AE3E54B47FDEEB2079E6D2F /* YapDatabase.modulemap */, + 875F31FBAC2CF6B24AE493FB10D0D2D2 /* YapDatabase.xcconfig */, + 1BAAA2FB0352BB91ECA3A893DBB427D0 /* YapDatabase-dummy.m */, + BB29D63B4F22F36CEB1213153E484B3A /* YapDatabase-prefix.pch */, + D2093058F572596A109FD38444860401 /* YapDatabase-umbrella.h */, ); - name = Default; + name = "Support Files"; + path = "Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase"; sourceTree = ""; }; - 294CA369A3837B59BA2AE269B34B838A /* ManualView */ = { + 3D7B97B5ECB38F520682C5ABDB7DDE29 /* SecondaryIndex */ = { isa = PBXGroup; children = ( - DC99B918DC2C9579A186C80D70243F90 /* YapDatabaseManualView.h */, - AB3A4565A955E4CADBA099FB96933705 /* YapDatabaseManualView.m */, - 8115461217D5CE485224F41EB1B9E74A /* YapDatabaseManualViewConnection.h */, - ED2605FB8E8D9F9FA673E606C679E886 /* YapDatabaseManualViewConnection.m */, - 4283231EDEACBEEF2FD969E91F8C65A4 /* YapDatabaseManualViewTransaction.h */, - 12D197B633BAB118099F780187113D39 /* YapDatabaseManualViewTransaction.m */, - 7ED8DD0974D49367C304B1EC7F9B288B /* Internal */, + CDC50EDD27F55BFBB0EA103F29BC6912 /* YapDatabaseSecondaryIndex.swift */, ); - name = ManualView; + name = SecondaryIndex; sourceTree = ""; }; - 2E5C059D724246362F6AE7F4A0CE92AF /* Development Pods */ = { + 3F32A7FB135074757D89B5A2A9776A1A /* Internal */ = { isa = PBXGroup; children = ( - 041C21177BAD4C94A54ECC955057EC12 /* YapDatabase */, + AF3E9640F94306377BA8B29CE39A3049 /* YapDatabaseCloudKitPrivate.h */, + D3E71156436EF4BFD781870E960C9DED /* YDBCKAttachRequest.h */, + F02D179A8E196265004AD447EA7F7703 /* YDBCKAttachRequest.m */, + AB205EDDBEC7958C10244A7DAFCA1FFE /* YDBCKChangeQueue.h */, + 605F6A32D5D6ED9AE342EB7C2A749C48 /* YDBCKChangeQueue.m */, + 9B879382F6254EEA101D0AD3762F2C2A /* YDBCKChangeRecord.h */, + F69B7C7033A6962F46BECCA2AF80850F /* YDBCKChangeRecord.m */, + 9A1CDB915A4EB63D15B45A5E3CE380D2 /* YDBCKMappingTableInfo.h */, + 087E7327D63BB3B1E8D8651CC274145C /* YDBCKMappingTableInfo.m */, + 741C6BA4F6A6FD9A35EC2639AC150365 /* YDBCKRecordTableInfo.h */, + 91C45BDBFDA6160386856A8E71514464 /* YDBCKRecordTableInfo.m */, ); - name = "Development Pods"; + name = Internal; + path = YapDatabase/Extensions/CloudKit/Internal; sourceTree = ""; }; - 30767E735680543128CFE7C7570EC63D /* Extensions */ = { + 47186AADE61170AB8760ED4518E7AED1 /* CloudKit */ = { isa = PBXGroup; children = ( - 25D62F34A3E3C6820C8DDE1CC5AB659A /* Protocol */, + 4B03A443B6F73C5F4C18B7720AF3FD4D /* YapDatabaseCloudKit.swift */, ); - name = Extensions; - path = YapDatabase/Extensions; + name = CloudKit; sourceTree = ""; }; - 30F1988464A8C21B5013F335754D6A02 /* CrossProcessNotification */ = { + 49E4B98C1235776EFBBCFC20DD3FB63C /* RTreeIndex */ = { isa = PBXGroup; children = ( - FD90BCA21B25EB2D53F3ED584AA1C474 /* YapDatabaseCrossProcessNotification.h */, - 6B968CDB63FEE3CCA98D10DF0376DA25 /* YapDatabaseCrossProcessNotification.m */, - FCBAD08BE3395A7BABD335418754C8BE /* YapDatabaseCrossProcessNotificationConnection.h */, - 44D46B84D3215341069BAAB771FAF302 /* YapDatabaseCrossProcessNotificationConnection.m */, - EAF1E5EEC2E55FA1B06DA69B15BD649F /* YapDatabaseCrossProcessNotificationTransaction.h */, - C3A25B076ACDFA55284F5D1C4EE21156 /* YapDatabaseCrossProcessNotificationTransaction.m */, - 898527914ECF1DB52CEE0F123C03FF0A /* Internal */, + F476A4E3A53B17F2D2AA0ECB2FE662E7 /* YapDatabaseRTreeIndex.swift */, + ); + name = RTreeIndex; + sourceTree = ""; + }; + 4B7120FA12EE698E1DD38E3F144B1EC1 /* CrossProcessNotification */ = { + isa = PBXGroup; + children = ( + C61E0C9E1F81D3CF7FAA3E0E768B6560 /* YapDatabaseCrossProcessNotification.h */, + CB501C8A12EA9D78031D4349120A0769 /* YapDatabaseCrossProcessNotification.m */, + 8E3CBFD51DDA56CA2262211FC9BD5074 /* YapDatabaseCrossProcessNotificationConnection.h */, + 48806294C5CB0B4921F4F340A77DD1D6 /* YapDatabaseCrossProcessNotificationConnection.m */, + A31546E23C1E89EF8953FF95508EACBF /* YapDatabaseCrossProcessNotificationTransaction.h */, + A4F6F6AE7841E669689FC27DB270D96D /* YapDatabaseCrossProcessNotificationTransaction.m */, + 7A171D3A0483B354CB0D144C7508D2BD /* Internal */, ); name = CrossProcessNotification; sourceTree = ""; }; - 35CA2282EB50F5E8BFEE97B8EBF4AD26 /* Internal */ = { + 4BAD157E5E49E67B4BCD8C47A1EE3B32 /* Internal */ = { isa = PBXGroup; children = ( - 9D36C7B94A2DB121983D176E294D034A /* YapActionItemPrivate.h */, - 838A0DBB7BD1F4EB016416D93B5E74F6 /* YapDatabaseActionManagerPrivate.h */, + 64BA37DFF1088FE944FA19457DC98EC1 /* YapDatabaseSearchQueuePrivate.h */, + E46D692783A01BE96DFB81FEA211605C /* YapDatabaseSearchResultsViewPrivate.h */, ); name = Internal; - path = YapDatabase/Extensions/ActionManager/Internal; + path = YapDatabase/Extensions/SearchResultsView/Internal; + sourceTree = ""; + }; + 4C49D2D735E43DB2820E61512D800EC9 /* ManualView */ = { + isa = PBXGroup; + children = ( + 79B7A3EFEBB3B45DB47245FB486EB66F /* YapDatabaseManualView.h */, + 262511120A4433E00B7E693F035EF467 /* YapDatabaseManualView.m */, + AB3B31A83EEBE199038BB8C8FB6CBFA3 /* YapDatabaseManualViewConnection.h */, + 2E81B3092F0E07E78C85AD807BD32377 /* YapDatabaseManualViewConnection.m */, + 33B17276F1396AD382DB7340651DC364 /* YapDatabaseManualViewTransaction.h */, + 63BFD8A9CBD7BA2CA1BD1C3580EE6D7D /* YapDatabaseManualViewTransaction.m */, + 70BEC9269B36BE332250C7D2542EBF0F /* Internal */, + ); + name = ManualView; + sourceTree = ""; + }; + 4E01C60DF54E5BEDE3BD8AEB44BD11D9 /* FullTextSearch */ = { + isa = PBXGroup; + children = ( + 4ED97CEB23B6BB124CAD59B55DF826E6 /* YapDatabaseFullTextSearch.h */, + 7E08FC3899730A65BB041952D452A338 /* YapDatabaseFullTextSearch.m */, + D2569C18A9BC07361B5826C6708C156E /* YapDatabaseFullTextSearchConnection.h */, + 2D6234A89B8BC032779BA5A2F0D9E932 /* YapDatabaseFullTextSearchConnection.m */, + 59C27D3BAD290762BA3D07ADAC95C43D /* YapDatabaseFullTextSearchHandler.h */, + 877D55458589653811BBAF30BBCD0B86 /* YapDatabaseFullTextSearchHandler.m */, + CAD28452F42B9C8C5C70B07F72512EBA /* YapDatabaseFullTextSearchSnippetOptions.h */, + 4AC5980888A2C7CF0170017D841505F0 /* YapDatabaseFullTextSearchSnippetOptions.m */, + E5CAC6D081C1A84BF41A9D1BDA78D2CB /* YapDatabaseFullTextSearchTransaction.h */, + 82FFA8656983E7C63EA04CB4E86B1588 /* YapDatabaseFullTextSearchTransaction.m */, + E0436FF11CB9405CFBD7CA46166E065D /* Internal */, + ); + name = FullTextSearch; sourceTree = ""; }; - 3F594BF95A758BBE76C201D0CB5C1A0D /* ActionManager */ = { + 4F695494C26E64CC532C8C38A945A807 /* ActionManager */ = { isa = PBXGroup; children = ( - 0E16F67514521D6C0DBD469F534B52EC /* YapActionable.h */, - B0272FAEE90CA422C2FBCDE43ACB064E /* YapActionItem.h */, - 8341304A140E835C0E1BB88310732CF0 /* YapActionItem.m */, - 580DEAEA6B93C29BB6CEB91C380AC31E /* YapDatabaseActionManager.h */, - B3AC82C0043723F399823A7A8A21C179 /* YapDatabaseActionManager.m */, - C200656519EDEAEC40620293D410EC26 /* YapDatabaseActionManagerConnection.h */, - 9A1D5E7BD7D100FBC5BB13A3BAC6CAAE /* YapDatabaseActionManagerConnection.m */, - 37EB901D407502DF5B095564166362D4 /* YapDatabaseActionManagerTransaction.h */, - 4D57826F6CB9E2E80A059F83AD06E1C2 /* YapDatabaseActionManagerTransaction.m */, - 35CA2282EB50F5E8BFEE97B8EBF4AD26 /* Internal */, - B849BA288109BE28D210636776A1E051 /* Utilities */, + 3C4FCFA261ED205EB94ADA9C92588CDC /* YapDatabaseActionManager.swift */, ); name = ActionManager; sourceTree = ""; }; - 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { + 4FB3557D7BA9DBE43389BF657017BCF9 /* CrossProcessNotification */ = { isa = PBXGroup; children = ( - E7E283C74B7E79D37D9BAAFF277942F5 /* iOS */, + D4006169444C7A9E3C963A289A2AC0F7 /* YapDatabaseCrossProcessNotification.swift */, ); - name = Frameworks; + name = CrossProcessNotification; sourceTree = ""; }; - 44CBE3819CFC7815BE5B2C64E86B0841 /* Execution */ = { + 50183EBA55F04073AEA5AC1191A33A08 /* Protocol */ = { isa = PBXGroup; children = ( - 4C8824C12B080CA5D6D3539FD638E2CA /* YapDatabaseCloudCoreGraph.h */, - AEAA4E94F260E11FA58139BE81650A94 /* YapDatabaseCloudCoreGraph.m */, - 1898AC07F198B13741B55E8ADA57618C /* YapDatabaseCloudCorePipeline.h */, - 7ACA8883846880AD84B44DC6AD2BDC1B /* YapDatabaseCloudCorePipeline.m */, - A111BEAC290EBA7277DB97C7B3AD7D68 /* YapDatabaseCloudCorePipelineDelegate.h */, + 0D0A6235E2BF201D7C300C629CF4ABC9 /* YapDatabaseExtension.h */, + 4D7C387B60F93072E9B3D2992616472F /* YapDatabaseExtension.m */, + 212604501E076321958DCACA187988F6 /* YapDatabaseExtensionConnection.h */, + 9D9B39663FAA79B96292BB1FC5BC3C81 /* YapDatabaseExtensionConnection.m */, + E4243C0E21F9FE55065FA0A6448F90F0 /* YapDatabaseExtensionTransaction.h */, + 2793D46A4D1D6F26E53D4ED91A2F02F2 /* YapDatabaseExtensionTransaction.m */, + 93AF3C79889B8EE05C4C6F823D597CBE /* YapDatabaseExtensionTypes.h */, + 712B5E331FD2D2940E26C3AB8A81369E /* Internal */, + ); + name = Protocol; + path = Protocol; + sourceTree = ""; + }; + 5190593A574863206EB6DA3B1B61FD90 /* AutoView */ = { + isa = PBXGroup; + children = ( + 14E745BEA2DB95546F10657CD68C6058 /* YapDatabaseAutoView.swift */, ); - path = Execution; + name = AutoView; sourceTree = ""; }; - 49ECAC5F9AE6A5A81532B117D13C4795 /* Internal */ = { + 5511304C70293E0E7A953EA6F692530A /* ManualView */ = { isa = PBXGroup; children = ( - 1B601520D70CAA2023709A54E6F118DB /* YapDatabaseRelationshipEdgePrivate.h */, - 5F95C55E4699B19F29E3C75CFF969E87 /* YapDatabaseRelationshipPrivate.h */, + D1AFFC3BB1663C88FAAA095E86872B89 /* YapDatabaseManualView.swift */, ); - name = Internal; - path = YapDatabase/Extensions/Relationships/Internal; + name = ManualView; sourceTree = ""; }; - 59B6071E0A7487EF17747BA986F7C312 /* Pods-CloudKitTodo */ = { + 55E2F099E8E1DB3753349721ACD44BEC /* Extensions */ = { isa = PBXGroup; children = ( - 7F069331EC61E9D274BA40718F0E8349 /* Pods-CloudKitTodo-acknowledgements.markdown */, - AF02153F8029F2AB8DAAECC0FC3895F4 /* Pods-CloudKitTodo-acknowledgements.plist */, - EFC0A2D60447E1F8D9C6F93228D8F6A7 /* Pods-CloudKitTodo-dummy.m */, - FF0412665703A4A46FD1A46F24D87E93 /* Pods-CloudKitTodo-frameworks.sh */, - 00FD4C9040406CCC446A409F96140A07 /* Pods-CloudKitTodo-resources.sh */, - A6295F37EA630F688AAE90851275D0C2 /* Pods-CloudKitTodo.debug.xcconfig */, - 20BA54A0F2D8F81B3F76559A6EEE912D /* Pods-CloudKitTodo.release.xcconfig */, + 50183EBA55F04073AEA5AC1191A33A08 /* Protocol */, ); - name = "Pods-CloudKitTodo"; - path = "Target Support Files/Pods-CloudKitTodo"; + name = Extensions; + path = YapDatabase/Extensions; sourceTree = ""; }; - 5C12321486F13886965D6C56DD2DE608 /* Internal */ = { + 5AF6CBE8354E4D52DAB28C117BFA556A /* Utilities */ = { isa = PBXGroup; children = ( - EDA2C9F67EB7D1E32E90E317E0E3FD34 /* YapDatabaseAutoViewPrivate.h */, + 9107CDFDCE8A783239BEB01EB1F0FD2B /* YapManyToManyCache.h */, + A00454F17A6827062EFA9FD74DDDF1EF /* YapManyToManyCache.m */, + CF34712963676FFC19C7EDA716D44FA3 /* Execution */, + 27AE943E0490A7F02987F98DED3EA942 /* Operations */, ); - name = Internal; - path = YapDatabase/Extensions/AutoView/Internal; + name = Utilities; + path = YapDatabase/Extensions/CloudCore/Utilities; sourceTree = ""; }; - 5FE756754CAA0C302201CDAD54499367 /* View */ = { + 5C3A08E96D67733D861905A950EB4DA8 /* ActionManager */ = { isa = PBXGroup; children = ( - 63243C53951E88E63DF057974D8435A0 /* YapDatabaseView.h */, - 3317ECC9C5EC16D8BD251B5EEE2C5195 /* YapDatabaseView.m */, - 96F3EC5CEC6806C37579377868AA2529 /* YapDatabaseViewConnection.h */, - C815AECDCCF37369E07137618B1E6AB9 /* YapDatabaseViewConnection.m */, - A5D528C0E6946A80F3C7CBDC619CE11D /* YapDatabaseViewOptions.h */, - ED50D6FB2D98AEE27BB70058956BBFBD /* YapDatabaseViewOptions.m */, - 909D7AB401DD4027037B9A3CB4CF110B /* YapDatabaseViewTransaction.h */, - 1E6E30529CB14C2CE9434F496C56D06D /* YapDatabaseViewTransaction.m */, - 90BD25B5A52B6553D5FDC2324FC1D130 /* Internal */, - AA629620C92251745CB4BB6A9C0CFC8E /* Utilities */, + 32D326B7B030C9D803CA70F4A2A56E1B /* YapActionable.h */, + 60E59D23A6031BD1212E8E8A0D179317 /* YapActionItem.h */, + C190C27B93B23B04BD7456C7D1217A8A /* YapActionItem.m */, + 3F6FE75C072E6691E15395B29108960B /* YapDatabaseActionManager.h */, + 4C73FAC90ACF22689F72DEE1713AE8D0 /* YapDatabaseActionManager.m */, + D2DCA750081E7C69D90748F850C5435B /* YapDatabaseActionManagerConnection.h */, + C9B0CEF5CF027A908FDE5AACE1EF6F31 /* YapDatabaseActionManagerConnection.m */, + B79BB3BEF5D2C3B749C66F641A8EE25D /* YapDatabaseActionManagerTransaction.h */, + 59EC571BEA4CD0B73CF92DC8C7E19299 /* YapDatabaseActionManagerTransaction.m */, + E87C0A99C3B9E8ED0878CFE9AAE3658D /* Internal */, + DA09489D0EA9A8FCEAF1DD99E7397A2F /* Utilities */, ); - name = View; + name = ActionManager; sourceTree = ""; }; - 716ACADE46128D6C13883E8376870DAE /* SearchResultsView */ = { + 61E44C988C7E24E5E001FE90FBB15CF3 /* SecondaryIndex */ = { isa = PBXGroup; children = ( - AE54598B25428D54B746B8081F060CB4 /* YapDatabaseSearchQueue.h */, - 7AD759CF857C53665D54776D3B9BC36D /* YapDatabaseSearchQueue.m */, - 5776CE9E4F53C17FC136BEECA29513F4 /* YapDatabaseSearchResultsView.h */, - 7E3B7603A968773681855321B5058078 /* YapDatabaseSearchResultsView.m */, - D45F53D30AA0DC35248B50C47CF7A2EC /* YapDatabaseSearchResultsViewConnection.h */, - ADB68302C095DBFE90240F77E7F0C771 /* YapDatabaseSearchResultsViewConnection.m */, - 1D195546D9B8979D2BDA69B4AC48A1C1 /* YapDatabaseSearchResultsViewOptions.h */, - 6954969ABF3F5BBE4D6EE72A69D5D64A /* YapDatabaseSearchResultsViewOptions.m */, - 5CCDDFADB8E838B0FEDE68DF66DB0637 /* YapDatabaseSearchResultsViewTransaction.h */, - 5A9AF0ED7788C8A5007E75F94678C94C /* YapDatabaseSearchResultsViewTransaction.m */, - 8FE74869FFF8EE427B2A6EE07F6B3796 /* Internal */, + 7BBDDB43B43ABFEFC10D4347F4B09A3D /* YapDatabaseSecondaryIndex.h */, + 4013CB3C565F97B0D9B092958034EB3D /* YapDatabaseSecondaryIndex.m */, + B2DE864BE23B11217364D108D278C507 /* YapDatabaseSecondaryIndexConnection.h */, + 597C82C5DE3AE81B6BCEDFAAB789929B /* YapDatabaseSecondaryIndexConnection.m */, + 1F3DE0BC2508A99C3038F22D34C949FF /* YapDatabaseSecondaryIndexHandler.h */, + 9BA6CA377BC53274992588C3C883BD60 /* YapDatabaseSecondaryIndexHandler.m */, + 034976B6D68A700F6A793215B7AD8386 /* YapDatabaseSecondaryIndexOptions.h */, + 4E9CEF22EA2352AA29A6334CA9B300A8 /* YapDatabaseSecondaryIndexOptions.m */, + 70B167BA04BF9659E1FE0E5C4C2EAAF1 /* YapDatabaseSecondaryIndexSetup.h */, + 47459EAE19B912ECFC98935DC23C25C7 /* YapDatabaseSecondaryIndexSetup.m */, + 92193246E86BE09485773884411B0FDE /* YapDatabaseSecondaryIndexTransaction.h */, + 2818FA75CFBC5DAF02C1CE27B6D9CE97 /* YapDatabaseSecondaryIndexTransaction.m */, + 74CF2807C7C484A0BDDB0FF437396526 /* Internal */, ); - name = SearchResultsView; + name = SecondaryIndex; sourceTree = ""; }; - 7237866420D772C12DDA2E53CEB6D90B /* Internal */ = { + 63190CB736E62F59E968D2EFAD190E69 /* Internal */ = { isa = PBXGroup; children = ( - 87327DE811DCFED5C2754E29C62E8A74 /* YapDatabaseCloudCoreOperationPrivate.h */, - EB914E09A11AE4737B9B56212EC55895 /* YapDatabaseCloudCorePipelinePrivate.h */, - 83E686D8AF083B8C95F9A02596115551 /* YapDatabaseCloudCorePrivate.h */, + 81440BEFF1C4E3B57968FB26ED887C4B /* YapDatabaseFilteredViewPrivate.h */, ); name = Internal; - path = YapDatabase/Extensions/CloudCore/Internal; + path = YapDatabase/Extensions/FilteredView/Internal; sourceTree = ""; }; - 77946464DEECDC8B8F2836245D0CF1D6 /* Internal */ = { + 68668EFA9E6F99A9FE822D367A4937FB /* Hooks */ = { isa = PBXGroup; children = ( - CFF05BCC8C8570BA4C3DBA600FA433CA /* YapDatabaseCloudKitPrivate.h */, - B9BFFCCBB62DB76F3A544D36D4998995 /* YDBCKAttachRequest.h */, - 33422A84EE4D2CE044A15ED7F715522E /* YDBCKAttachRequest.m */, - 1B1E8AA9FA28E0157C2D9797357C425E /* YDBCKChangeQueue.h */, - 685B3E6E2CDFA4F3144637A093DEF9C0 /* YDBCKChangeQueue.m */, - 68D2D3E1B66C0A0EC49A8049A177CA4B /* YDBCKChangeRecord.h */, - 92533212BE8155942338841BB18835EA /* YDBCKChangeRecord.m */, - 35D7FF45DAC35CC2848DB25EFB7953AC /* YDBCKMappingTableInfo.h */, - 70E7547FD0039324F0919C75A74FCDC3 /* YDBCKMappingTableInfo.m */, - B1CABDB55CCF8C87356A2809240CEA00 /* YDBCKRecordTableInfo.h */, - 05B6E1EEA70594516287DF6660B75847 /* YDBCKRecordTableInfo.m */, + 6C32BF8A0F91FAC5C316D2B2B1CBC827 /* YapDatabaseHooks.swift */, ); - name = Internal; - path = YapDatabase/Extensions/CloudKit/Internal; + name = Hooks; + sourceTree = ""; + }; + 6A0F4E69AACDA053867AB48F8135CB3D /* Standard */ = { + isa = PBXGroup; + children = ( + 9C8A8E409607259C979BF1F620267B9A /* Core */, + 6DBADF5F5B9BF4B757A6F6C42BD59C5F /* Extensions */, + ); + name = Standard; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 6DBADF5F5B9BF4B757A6F6C42BD59C5F /* Extensions */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - 2E5C059D724246362F6AE7F4A0CE92AF /* Development Pods */, - 433CD3331B6C3787F473C941B61FC68F /* Frameworks */, - 2189C1E2380ED855BB04F48D0D661A99 /* Pods */, - 0601C98AA1C8653E886B970FC543EA9E /* Products */, - 24BCD8172AC5598EBDEC99D2E46E4D6B /* Targets Support Files */, + 4F695494C26E64CC532C8C38A945A807 /* ActionManager */, + 5190593A574863206EB6DA3B1B61FD90 /* AutoView */, + FF3CE04F3A582C0925B9BB3BC4DCC717 /* CloudCore */, + 47186AADE61170AB8760ED4518E7AED1 /* CloudKit */, + 4FB3557D7BA9DBE43389BF657017BCF9 /* CrossProcessNotification */, + D391B8D7F237C25570374BF25419273E /* FilteredView */, + 1E00E5A9C9BBFC8AB68DBE6FF14D11D6 /* FullTextSearch */, + 68668EFA9E6F99A9FE822D367A4937FB /* Hooks */, + 5511304C70293E0E7A953EA6F692530A /* ManualView */, + 3A40A199EDF7C8206C9FCB14890475E8 /* Relationships */, + 49E4B98C1235776EFBBCFC20DD3FB63C /* RTreeIndex */, + 6F6354017DD0EC391E7EE46E4144C0BB /* SearchResultsView */, + 3D7B97B5ECB38F520682C5ABDB7DDE29 /* SecondaryIndex */, + B51A14EB9CA255519857B0810361C7CA /* View */, ); + name = Extensions; sourceTree = ""; }; - 7ED8DD0974D49367C304B1EC7F9B288B /* Internal */ = { + 6F6354017DD0EC391E7EE46E4144C0BB /* SearchResultsView */ = { isa = PBXGroup; children = ( - E9D646E932D327CCD170D1975D7E4FD9 /* YapDatabaseManualViewPrivate.h */, + 66A123F94DFC07C0589B8D24B55CF3FA /* YapDatabaseSearchResultsView.swift */, + ); + name = SearchResultsView; + sourceTree = ""; + }; + 70BEC9269B36BE332250C7D2542EBF0F /* Internal */ = { + isa = PBXGroup; + children = ( + FAF30BBD26DAB73C7BAC908C5E95A2D9 /* YapDatabaseManualViewPrivate.h */, ); name = Internal; path = YapDatabase/Extensions/ManualView/Internal; sourceTree = ""; }; - 8383404C213B2FB9A06ED3DF5E6F55D4 /* Core */ = { + 712B5E331FD2D2940E26C3AB8A81369E /* Internal */ = { isa = PBXGroup; children = ( - F6BCB5C23D33939DDE1D6F9ECF8E0456 /* YapDatabase.h */, - 92D888B1EBA4B1834BFE8F52B7A3DBFD /* YapDatabase.m */, - 914F71F83B5BA4C3E544653E8B6CD7F7 /* YapDatabaseConnection.h */, - 96B89A6BB04F40A0812B5433D0956217 /* YapDatabaseConnection.m */, - B85D8765A08B2193BF84806D39642098 /* YapDatabaseOptions.h */, - D5DDAD5DD64A6DB6E07B55AEC5B75D59 /* YapDatabaseOptions.m */, - 14DB86D1FB028086140E96723536E3C2 /* YapDatabaseTransaction.h */, - C91D009781286B9DC7C795B7E9A91741 /* YapDatabaseTransaction.m */, - 30767E735680543128CFE7C7570EC63D /* Extensions */, - DB38A407A09EFEA58DA17B1976EADEFC /* Internal */, - 9CA059106047D7E8062206AB913D19A4 /* Utilities */, + 3421941478AF4F7EB4EF013C79FBC240 /* YapDatabaseExtensionPrivate.h */, ); - name = Core; + name = Internal; + path = Internal; sourceTree = ""; }; - 872AF91A345168CC7E3CBD649EF1B750 /* Internal */ = { + 74CF2807C7C484A0BDDB0FF437396526 /* Internal */ = { isa = PBXGroup; children = ( - C469EB166305BF5A2B4F2F7C49BFEB15 /* YapDatabaseFullTextSearchPrivate.h */, + 4EB362EB183A044EFF0DBF33F7B0EAE7 /* YapDatabaseSecondaryIndexPrivate.h */, ); name = Internal; - path = YapDatabase/Extensions/FullTextSearch/Internal; + path = YapDatabase/Extensions/SecondaryIndex/Internal; + sourceTree = ""; + }; + 7790AE7CF78E0225823EAC5096E28AD8 /* Utilities */ = { + isa = PBXGroup; + children = ( + 13D880D87484DCD70E70808285CF536C /* YDBCKChangeSet.h */, + 1A4C85F6BE902C4AEB3A5A549A3F7A90 /* YDBCKChangeSet.m */, + 5C9313269258453FC029327667C6ED90 /* YDBCKMergeInfo.h */, + F4BC1D6FCDDDE852052DBD9C32D3076E /* YDBCKMergeInfo.m */, + F8E80BF141BAFBBF8A9A163B567FFE97 /* YDBCKRecord.h */, + ADF8123C879533091791D4A38906F45F /* YDBCKRecord.m */, + 814A25AE76661C05BA95ADCE6308B006 /* YDBCKRecordInfo.h */, + A5A4A4993708AA8C213D3B20CD881F0B /* YDBCKRecordInfo.m */, + ); + name = Utilities; + path = YapDatabase/Extensions/CloudKit/Utilities; sourceTree = ""; }; - 898527914ECF1DB52CEE0F123C03FF0A /* Internal */ = { + 7A171D3A0483B354CB0D144C7508D2BD /* Internal */ = { isa = PBXGroup; children = ( - CE3F7217813A15B460957FF23CEF8268 /* YapDatabaseCrossProcessNotificationPrivate.h */, + C8A8EA5CB846ACF469E632C025E8924B /* YapDatabaseCrossProcessNotificationPrivate.h */, ); name = Internal; path = YapDatabase/Extensions/CrossProcessNotification/Internal; sourceTree = ""; }; - 8DB34FA64BBC0CA71BF0AC9FC3721195 /* Extensions */ = { + 7B83006FC0DF257CE9CD085FBBCE9FEE /* Pods-CloudKitTodo */ = { isa = PBXGroup; children = ( - 3F594BF95A758BBE76C201D0CB5C1A0D /* ActionManager */, - 97B01B3963D05BDF36AE33360B49D9E9 /* AutoView */, - C7D06869DB52EAB1737F46EA79ACF0C1 /* CloudCore */, - 96A2EC7BBA6CEA9FB7EC2025C8855966 /* CloudKit */, - 0D21BE1FC963484F36B9DC19345F79E5 /* ConnectionProxy */, - 30F1988464A8C21B5013F335754D6A02 /* CrossProcessNotification */, - D5DA4996F28A627BF23A0E2B166BE189 /* FilteredView */, - A280F314C10CE06BE7623270F849E122 /* FullTextSearch */, - A9518F56BF5FABB91F388ADD4DFE97CB /* Hooks */, - 294CA369A3837B59BA2AE269B34B838A /* ManualView */, - EAC791419407719AC3110E72E8E2A201 /* Relationships */, - D1EA8A4E32FC6BBA5ADBBF7597A6C5D1 /* RTreeIndex */, - 716ACADE46128D6C13883E8376870DAE /* SearchResultsView */, - CCCD85F99E1336AB2F0B1F8844B6DEE6 /* SecondaryIndex */, - 5FE756754CAA0C302201CDAD54499367 /* View */, + 36D1C6A021EFE852197BF6D8297E8B15 /* Pods-CloudKitTodo.modulemap */, + BA03294D09E7F14BF46818D68F9A0893 /* Pods-CloudKitTodo-acknowledgements.markdown */, + F461FB86A0181AEB96BADD723C7C6A2B /* Pods-CloudKitTodo-acknowledgements.plist */, + E03EEF17DD0F331E01DF541DACAAEF6C /* Pods-CloudKitTodo-dummy.m */, + A97177956523C9713611F1606EEC814C /* Pods-CloudKitTodo-umbrella.h */, + CEAE0BA40F7C6130CF1E88F4116A3625 /* Pods-CloudKitTodo.debug.xcconfig */, + 24AA268C2DCCDD348764DCDB67D04DDA /* Pods-CloudKitTodo.release.xcconfig */, ); - name = Extensions; + name = "Pods-CloudKitTodo"; + path = "Target Support Files/Pods-CloudKitTodo"; sourceTree = ""; }; - 8EF24C6C5EB6F317A3D3B75EDD3E3A57 /* Utilities */ = { + 7C69AE351C924DA78E9A8960B34399A5 /* CloudCore */ = { isa = PBXGroup; children = ( - 6CB4F7103E21630DA4D19E73371C8859 /* YapManyToManyCache.h */, - 17E4570CBC80142F7CB25000E4440F64 /* YapManyToManyCache.m */, - 44CBE3819CFC7815BE5B2C64E86B0841 /* Execution */, - 1BFD66651FE9C8A0561B63B2CC60C41F /* Operations */, + 90E9286C01E61051711DB6CFBF92F9A2 /* YapDatabaseCloudCore.h */, + 49987740C9B56C9CA63108F3370405DC /* YapDatabaseCloudCore.m */, + 9FF0684C8B06010E646A765440D512A9 /* YapDatabaseCloudCoreConnection.h */, + 8EA57FC933F1AD2493FB20A0E0EF2698 /* YapDatabaseCloudCoreConnection.m */, + F18C0B5E4F2B195F163995D366B41F23 /* YapDatabaseCloudCoreOptions.h */, + C9A25AE227A0815A5D15A7BFDE576D80 /* YapDatabaseCloudCoreOptions.m */, + 9FDF54704887DDF302CD15A319DEEA18 /* YapDatabaseCloudCoreTransaction.h */, + C67C53D9494005B519FFEDEB629FEBB1 /* YapDatabaseCloudCoreTransaction.m */, + C7C2BFA90DF3E466B5CEB102793B62C7 /* Internal */, + 5AF6CBE8354E4D52DAB28C117BFA556A /* Utilities */, ); - name = Utilities; - path = YapDatabase/Extensions/CloudCore/Utilities; + name = CloudCore; sourceTree = ""; }; - 8FE74869FFF8EE427B2A6EE07F6B3796 /* Internal */ = { + 7DB284FAE2B03D5EFA57DA9C337696DB /* Pods */ = { isa = PBXGroup; children = ( - F44F24488C98FFD06B5D3FD768CA6670 /* YapDatabaseSearchQueuePrivate.h */, - FE4F2A178A9D55F6B15D5D2A65183861 /* YapDatabaseSearchResultsViewPrivate.h */, + DADA1B96346D8EE461707CE88C7C71F1 /* CocoaLumberjack */, + 8CD2906858785C4C1F12E4DA5137CF2F /* Reachability */, ); - name = Internal; - path = YapDatabase/Extensions/SearchResultsView/Internal; + name = Pods; sourceTree = ""; }; - 90BD25B5A52B6553D5FDC2324FC1D130 /* Internal */ = { + 801AA90B989D4CDFFC7E6B07B428ADC3 /* Relationships */ = { isa = PBXGroup; children = ( - E564C82CF3E3A779C3BDBB4908FE2206 /* YapDatabaseViewChangePrivate.h */, - 783D42AB2AFD709CAC6388031A9EB92A /* YapDatabaseViewLocator.h */, - 996DAA4F6E5412D07182A97386D397A4 /* YapDatabaseViewLocator.m */, - 9462CE0AC413A31AAFFB216DA72C3E3B /* YapDatabaseViewMappingsPrivate.h */, - 4C47E28A07C754F8FFA16D4E9719A07C /* YapDatabaseViewPage.h */, - BE25955A57E3369178BDE2D460D0E4FA /* YapDatabaseViewPage.mm */, - 4599A5ED2DB00A78542F6FA88440F28D /* YapDatabaseViewPageMetadata.h */, - E2902E8C4561F30CCDD3738243ED1E2B /* YapDatabaseViewPageMetadata.m */, - DCE121BB9934398BE778AE785CFE02D8 /* YapDatabaseViewPrivate.h */, - B0B310753BE2B56AFE448A1B05F9DF29 /* YapDatabaseViewRangeOptionsPrivate.h */, - A709CC91A97AEA5090BFF954662F1CB3 /* YapDatabaseViewState.h */, - 4EBE03E124143DE358C8FFCE64CCE36C /* YapDatabaseViewState.m */, + CCFB555BB12F8B5A74381CE5D9898FC2 /* YapDatabaseRelationship.h */, + 75DEE3CE7EB428E7DF23222FDD14C28C /* YapDatabaseRelationship.m */, + 6DBA543947B4091714A5F09655994974 /* YapDatabaseRelationshipConnection.h */, + C4A41ADBB41A630040DA2DA5499E87E2 /* YapDatabaseRelationshipConnection.m */, + 7DB226AE700501C9111CB3E87610B80C /* YapDatabaseRelationshipEdge.h */, + C9367283416273682D0CFD8295189252 /* YapDatabaseRelationshipEdge.m */, + C1722730E4F81ABDFAED29D82FBF4006 /* YapDatabaseRelationshipNode.h */, + F71948ECE95DD2F8AE4691738DA9F089 /* YapDatabaseRelationshipOptions.h */, + E5E85BC4DB308A4BCCF5079627BD807B /* YapDatabaseRelationshipOptions.m */, + A7029BADA556B063B8CAD2A02FD74930 /* YapDatabaseRelationshipTransaction.h */, + A695F639A0C20B30DB44293A9D3BB240 /* YapDatabaseRelationshipTransaction.m */, + 20414AB4DA29DE914DFC6026550A93E4 /* Internal */, ); - name = Internal; - path = YapDatabase/Extensions/View/Internal; + name = Relationships; sourceTree = ""; }; - 96A2EC7BBA6CEA9FB7EC2025C8855966 /* CloudKit */ = { + 81105BE444F098D644C2F40F43B88FCF /* View */ = { isa = PBXGroup; children = ( - 62C82EBE9337E07444655C69430E345C /* YapDatabaseCloudKit.h */, - A6C18C3D232E91776BCF8661263EEB5F /* YapDatabaseCloudKit.m */, - B26E6C44CA176AD2DEA8FA1CFEAE934F /* YapDatabaseCloudKitConnection.h */, - B32316DC76D48D14949B2B9D8D64B2F4 /* YapDatabaseCloudKitConnection.m */, - C04CA457336DAECB164F3B4B9FB386A5 /* YapDatabaseCloudKitOptions.h */, - 5571364B744D8C7E76E698F18B624538 /* YapDatabaseCloudKitOptions.m */, - 8046B80AD8EA44E6B89607D72B01F4A6 /* YapDatabaseCloudKitTransaction.h */, - C707D3FA75CA0D8230E0732C4C35C956 /* YapDatabaseCloudKitTransaction.m */, - 52D2167F158840C823961E1432DD5465 /* YapDatabaseCloudKitTypes.h */, - 976590F620695A4354FE2EC2ABAA9F11 /* YapDatabaseCloudKitTypes.m */, - 77946464DEECDC8B8F2836245D0CF1D6 /* Internal */, - 1D909D20774048A6F626C8711AD22DBC /* Utilities */, + 0BF1FA824D00439E314D3248BED0DEB1 /* YapDatabaseView.h */, + BDB40660E7EFA17F7292E701EBB690C1 /* YapDatabaseView.m */, + D9F0C2A1E1FD70066DD87313C1CFEC6E /* YapDatabaseViewConnection.h */, + 9C7A671047835A349D6236605ED787D4 /* YapDatabaseViewConnection.m */, + 522633BA9440FAB7BA71873C8D61DBBE /* YapDatabaseViewOptions.h */, + 95B443D4F86A2DCBE2DB1D5C2FBB1E74 /* YapDatabaseViewOptions.m */, + B9C0F0CB3678CB2F7E8AF5FFFC36F498 /* YapDatabaseViewTransaction.h */, + 46F7E54B0BE1D4583C6E7385A6AC871A /* YapDatabaseViewTransaction.m */, + E5D623BC42AE76E9B4829845FA82D079 /* Internal */, + BBDDCC4C0105D3EA57E2C145B98B9755 /* Utilities */, ); - name = CloudKit; + name = View; sourceTree = ""; }; - 97B01B3963D05BDF36AE33360B49D9E9 /* AutoView */ = { + 8CD2906858785C4C1F12E4DA5137CF2F /* Reachability */ = { isa = PBXGroup; children = ( - CAD8C578BD605019E5C6E77EDE83019C /* YapDatabaseAutoView.h */, - 132C7159C99BB07A4CB992D99449782A /* YapDatabaseAutoView.m */, - 409A781FACEF3FF1AA7A11417FCB6604 /* YapDatabaseAutoViewConnection.h */, - 3B58ACAA1D91A577B32E8C52EC83BED8 /* YapDatabaseAutoViewConnection.m */, - 7096C0448F7BADB48F11423A50CAB768 /* YapDatabaseAutoViewTransaction.h */, - FFD7EC26BFDAB6E57B17F9EAE7629A40 /* YapDatabaseAutoViewTransaction.m */, - 952736898C9DCE62CE381DFC309631DE /* YapDatabaseViewTypes.h */, - 09BE3033C8E5EBE013DAA91256F31233 /* YapDatabaseViewTypes.m */, - 5C12321486F13886965D6C56DD2DE608 /* Internal */, + B46593AB7AC5E4D7DAD62CC2E3D95BF4 /* Reachability.h */, + 73EB2D4BC70E35CC9B06D3DC6037157A /* Reachability.m */, + E5FFB3BF4A6CE58A16A352BCC95D3818 /* Support Files */, ); - name = AutoView; + name = Reachability; + path = Reachability; + sourceTree = ""; + }; + 985BDEF6242E129911CAF5641BDB72A0 /* Core */ = { + isa = PBXGroup; + children = ( + 249830FC64BA9DC39E5A1A20035A6DDB /* CLIColor.h */, + D252C2850A834C318B28F237D5D8E0A1 /* CLIColor.m */, + 5A0D5E78CDF7C7C5D143F46F0868CF8C /* CocoaLumberjack.h */, + D75173ED46540B34DC8D1F3D4D87E54E /* DDAbstractDatabaseLogger.h */, + 28693F75E172D1A8288FFCB5FBB4F7C5 /* DDAbstractDatabaseLogger.m */, + 2F5388ACEFD064B3D0CE2E9AB205B53D /* DDASLLogCapture.h */, + 11054BB8129A1EF6C35A240AE33279FA /* DDASLLogCapture.m */, + 36B03AD77B3B7CF4C1ABAAC1A3300E57 /* DDASLLogger.h */, + 5334B64AEF912A07E24DC287146DCE25 /* DDASLLogger.m */, + 7944BB4DD4A1A6F1F401C16C5824CEBF /* DDAssertMacros.h */, + 90F36A240BB5E79F03719BAC292A1EBA /* DDContextFilterLogFormatter.h */, + 4DBB979798E0032342E47771C359647F /* DDContextFilterLogFormatter.m */, + 44338274A72B61FC246DB539A84644C2 /* DDDispatchQueueLogFormatter.h */, + DB8C972D351F36237703D7EA3807870B /* DDDispatchQueueLogFormatter.m */, + 4592EE242F205BA430912588AC1FE62B /* DDFileLogger.h */, + 2FB88D9DCE77EAA0865A1465E3B2A0B3 /* DDFileLogger.m */, + A6A7CAC02E7D539193445CA27467B4AE /* DDFileLogger+Buffering.h */, + A5952F0B8FAB82B9BAAF272FCD33BFE0 /* DDFileLogger+Buffering.m */, + CB395EA3B42FA27D9C987645C7E77C93 /* DDFileLogger+Internal.h */, + 77BA7660186654CF8BF1DA4E6F72DF6F /* DDLegacyMacros.h */, + 1C654B035ED5E063A16447A34B5437A9 /* DDLog.h */, + DE3B4B831F160FFE801962FE528A2246 /* DDLog.m */, + FF9F6D367F29F4F22E4B123FA85D5905 /* DDLog+LOGV.h */, + 145BA590BA3C71107BD71AE674E6029A /* DDLoggerNames.h */, + 32A972D7A25D4A6101F4EF5B75A55ABB /* DDLoggerNames.m */, + 34F00867358284FA98B66BE734260552 /* DDLogMacros.h */, + 6DBAF7BBC152D9209FC39B3BB0569046 /* DDMultiFormatter.h */, + 08D8334F6004A672D80552DC078C56F3 /* DDMultiFormatter.m */, + B16DF51454D5F80DFD25FF24E0BFB6B1 /* DDOSLogger.h */, + E7B986A8529A9C1ED6AD4A18D0223B03 /* DDOSLogger.m */, + B59D7384023E17FE3B459038E1F4C49F /* DDTTYLogger.h */, + 5D2DDDAEAE6523007F9F20815ED1CD05 /* DDTTYLogger.m */, + ); + name = Core; sourceTree = ""; }; - 9CA059106047D7E8062206AB913D19A4 /* Utilities */ = { - isa = PBXGroup; - children = ( - B8C1DDCD0D96A1A5BD42796375F8BD14 /* YapBidirectionalCache.h */, - CD892BF48C63853FD6A751D5B94C601F /* YapBidirectionalCache.m */, - 4C3A05CA5F484D89FBF0A1968DA44F7E /* YapCache.h */, - B97A025E4A01F6AAFE1FABCA2D347624 /* YapCache.m */, - D18874164D7636663E7112DA10DE5DD2 /* YapCollectionKey.h */, - F042FEA6EED5039190071B72A808783D /* YapCollectionKey.m */, - 5420F7CC4303B69382C43E6E881106A9 /* YapDatabaseConnectionConfig.h */, - D605C15956CA1189155F9C5E19F41E19 /* YapDatabaseConnectionConfig.m */, - CC9B04F0173150371B3EA0A9507B23D9 /* YapDatabaseQuery.h */, - 96E85BA7EC10E6F4B54C6FEABDFAD839 /* YapDatabaseQuery.m */, - A45A07D2ED8D2BB7C5420466115D0E72 /* YapDirtyDictionary.h */, - E3DC4C64E093CA1EFC7EC042C717B839 /* YapDirtyDictionary.m */, - 07053D894ACF7D4F9FD0B01E259DC37F /* YapMurmurHash.h */, - 7E0300B8EB45BD2B610C72ECACBBEA6F /* YapMurmurHash.m */, - 32026F5069D840DB5C0879D93B5FAC7A /* YapMutationStack.h */, - 65982A6E8BA27E160C3E885E0DE670EA /* YapMutationStack.m */, - 6413EE0BECB702EB33455C4AE92CCAAD /* YapProxyObject.h */, - 608A14B1661D26815E138126F7594181 /* YapProxyObject.m */, - 7605D82CA34B405A20F05F4B89F915CC /* YapSet.h */, - 527E3A749FBA0E8A14EE820D19782571 /* YapSet.m */, - ECD70E0755E5518212E6B2EE1612847D /* YapWhitelistBlacklist.h */, - 567206C6375105E3EE15F795EBADDE81 /* YapWhitelistBlacklist.m */, + 9C8A8E409607259C979BF1F620267B9A /* Core */ = { + isa = PBXGroup; + children = ( + 3049ABAFC13518236F9BFB18F7DFBF35 /* YapDatabase.swift */, + AAEC8A63D42A241118E6DC3C74585942 /* YapDatabaseQuery.swift */, ); - name = Utilities; - path = YapDatabase/Utilities; + name = Core; sourceTree = ""; }; - 9DE5570762280D61A00A410957EBCD28 /* Internal */ = { + AFCC810D2929ECBC84EF8C553139651C /* Internal */ = { isa = PBXGroup; children = ( - 2B9062B910594FA040BC06B7D48901E5 /* YapDatabaseHooksPrivate.h */, + 45E58D4278AC30A43220D021DDD962FF /* YapDatabaseRTreeIndexPrivate.h */, ); name = Internal; - path = YapDatabase/Extensions/Hooks/Internal; + path = YapDatabase/Extensions/RTreeIndex/Internal; sourceTree = ""; }; - A280F314C10CE06BE7623270F849E122 /* FullTextSearch */ = { + B1C2902B54BBEA1455B19F69D8013D81 /* Utilities */ = { isa = PBXGroup; children = ( - B4D7EE3AFBD6255D3CEAAE2C1424E98A /* YapDatabaseFullTextSearch.h */, - 11BF2A0AC74317457F59DE141C8CAD7E /* YapDatabaseFullTextSearch.m */, - 27C136600EC56791007EAA5F8D02C9C2 /* YapDatabaseFullTextSearchConnection.h */, - 2B28C665A9FCDB9C86B48640F410D4FC /* YapDatabaseFullTextSearchConnection.m */, - 29D05F0A5B53C105BAFB0564E061275F /* YapDatabaseFullTextSearchHandler.h */, - FB3ACB6420AD45F19A073030CAC45126 /* YapDatabaseFullTextSearchHandler.m */, - 5A418EC203C21FF9B446C3BB3BF3C4B2 /* YapDatabaseFullTextSearchSnippetOptions.h */, - 62F1F1D656AD496B8C8996705913D013 /* YapDatabaseFullTextSearchSnippetOptions.m */, - 3CB2AF9F4A2D5433AC123A9AECE36793 /* YapDatabaseFullTextSearchTransaction.h */, - 656D44B8BEED4654030675D048CE2F12 /* YapDatabaseFullTextSearchTransaction.m */, - 872AF91A345168CC7E3CBD649EF1B750 /* Internal */, + 2BA888DE0F5B010909190F91DF10334D /* YapBidirectionalCache.h */, + 3158E9F8224799FD55018CED387247C2 /* YapBidirectionalCache.m */, + FB965E81D0205226B7826C0ABA4E1064 /* YapCache.h */, + 123A29626FE64CCB0825798D64C9FC2E /* YapCache.m */, + A6EAB758829572715927446EA3E3AEED /* YapCollectionKey.h */, + C28751E4241E68BF6C905F56B8168A8E /* YapCollectionKey.m */, + 47D1126A7E585B606871CD1B6F9281E6 /* YapDatabaseAtomic.h */, + 767DD31CE54D1960D97F716D287D502A /* YapDatabaseConnectionConfig.h */, + 79C303BDBE2AA305661D708D0F4459CF /* YapDatabaseConnectionConfig.m */, + 6655B2E2B31B4EDB07720851846B9713 /* YapDatabaseConnectionPool.h */, + 4123EB3D1CD4131B9C363B5831143333 /* YapDatabaseConnectionPool.m */, + 15B972993005BDBD2A231056968B3299 /* YapDatabaseConnectionProxy.h */, + A7BA3D49805FAE5346A6B45E3F1F61A5 /* YapDatabaseConnectionProxy.m */, + 98AD3BA5B73D8E7F3D2BBBF509E5760C /* YapDatabaseCryptoUtils.h */, + FADBB0CDE767694F3A7CE7BA322EE795 /* YapDatabaseCryptoUtils.m */, + 1676DBEC8B2DCE99A0AE3CBACB0A679F /* YapDatabaseQuery.h */, + D386C98B26472097CAA5AA022D835C7D /* YapDatabaseQuery.m */, + 404DFF3174A3AA4B142BEF98AA85DB9E /* YapDirtyDictionary.h */, + 95BCD366DB271E7A97573A453807AA0D /* YapDirtyDictionary.m */, + F3D51F478213041EDF2CF6713E40C460 /* YapMurmurHash.h */, + 93B14B0EBC508525B8FAE9CF0511D2E6 /* YapMurmurHash.m */, + 066B3FC8C196D8214C098405865EB1A5 /* YapMutationStack.h */, + D1DD6DA8E7C9806B9AE16BECA2E9F0E6 /* YapMutationStack.m */, + E9366A242257C207B2B0F6FA7ABAF74D /* YapProxyObject.h */, + 96A36D8483FDB32A7B531C19CA93AC91 /* YapProxyObject.m */, + 39E15C14C3A865D14124E9221BCE7BB2 /* YapSet.h */, + 67899823D41F2D2AB59B892B2E321B7D /* YapSet.m */, + 470C4107509C9E3F227BEEC3B9B84CB6 /* YapWhitelistBlacklist.h */, + 07B068FA9125DD2FFC0B1EC5AF468164 /* YapWhitelistBlacklist.m */, + 6FE650DD25360138F32D6E96EB7F5104 /* YDBLogMessage.h */, + 0C2BF9B8A40ED88A76C930152CD7C347 /* YDBLogMessage.m */, ); - name = FullTextSearch; + name = Utilities; + path = YapDatabase/Utilities; sourceTree = ""; }; - A68837F013FDAA0F47A8D1271FBAEFD1 /* Support Files */ = { + B248CBD9D0F7E48CF1C934C01F9755AB /* Support Files */ = { isa = PBXGroup; children = ( - 3837FA37FCAE0A8BD14C4F71894234F0 /* CocoaLumberjack.xcconfig */, - F365F0DB3FF18F1016A1E47F6837F543 /* CocoaLumberjack-dummy.m */, - DD1DACAF4BD5B19D9E591FDE752E0F2A /* CocoaLumberjack-prefix.pch */, + 2E0A60B2E952FAA7E7F3F9159EB5E988 /* CocoaLumberjack.xcconfig */, + 2D37094FA7B2D1DEB35621D01B20C2E9 /* CocoaLumberjack-dummy.m */, + 5D4C810725A211211FC94CCC06ABB9CF /* CocoaLumberjack-prefix.pch */, ); name = "Support Files"; path = "../Target Support Files/CocoaLumberjack"; sourceTree = ""; }; - A9518F56BF5FABB91F388ADD4DFE97CB /* Hooks */ = { + B51A14EB9CA255519857B0810361C7CA /* View */ = { isa = PBXGroup; children = ( - 763E748E131FB51F36C52604EF847386 /* YapDatabaseHooks.h */, - A790AF136A3E340CD500E1532B99F2CB /* YapDatabaseHooks.m */, - D258065D2A4D21CA9864F046761241EE /* YapDatabaseHooksConnection.h */, - AB55448A1CCA83C6137DDABA89EAF84D /* YapDatabaseHooksConnection.m */, - C9B1FECE9EF76633E3740BFA40B10A37 /* YapDatabaseHooksTransaction.h */, - 36E2A0B2CE058779063CA3C544DD6D77 /* YapDatabaseHooksTransaction.m */, - 9DE5570762280D61A00A410957EBCD28 /* Internal */, + 042BC3E35660AFA033090584A164332B /* YapDatabaseView.swift */, ); - name = Hooks; + name = View; sourceTree = ""; }; - AA629620C92251745CB4BB6A9C0CFC8E /* Utilities */ = { + B911DFE40AE7A828EC562461354806F5 /* Internal */ = { isa = PBXGroup; children = ( - EAF464C2A2F866087880260F1C092D5D /* YapDatabaseViewChange.h */, - 8AA91240EAEE0EE0835C05691579FF48 /* YapDatabaseViewChange.m */, - 55A1FBA20B6FA63D9B1FD3E81BE853D2 /* YapDatabaseViewMappings.h */, - C08BDA952C8D6D765C7EED4E3B72E93D /* YapDatabaseViewMappings.m */, - 52A9A014F7DE085121BB80CC12DED0FD /* YapDatabaseViewRangeOptions.h */, - 3DD85112B0511D0D005F8D298906B47E /* YapDatabaseViewRangeOptions.m */, + 166D584671C3D55B820C82D3A2E0BF52 /* NSDate+YapDatabase.h */, + 48485700DFE4330A4702A35B297D8F07 /* NSDate+YapDatabase.m */, + 56CD01F8DB51D6BCAEC7B52589B447B2 /* NSDictionary+YapDatabase.h */, + 22EA8F71F878C2399F0AD1170E8011AA /* NSDictionary+YapDatabase.m */, + D95B7CFA7523C8983C5BDA83D03F8BE1 /* yap_vfs_shim.h */, + 402BC4E15E244BC415BA5946B484D1FD /* yap_vfs_shim.m */, + 22037F8BF6DC1FEFC41CC73CDF62620E /* YapDatabaseCollectionConfig.h */, + A05F34E9AC8312A1A998AAFE1B71CDFE /* YapDatabaseCollectionConfig.m */, + 6FA631381D2F5966E3661F4159CB94AD /* YapDatabaseConnectionState.h */, + F65B6892A8686986CAC812963880BC34 /* YapDatabaseConnectionState.m */, + 3BA965E04C467A945353E40A3A32A9E4 /* YapDatabaseLogging.h */, + 8B36B28C8AE5E49A33730BC552A97696 /* YapDatabaseManager.h */, + 52C2A2D611D1688AA5B6FA9865265CCB /* YapDatabaseManager.m */, + FC0324A51E603C4452877887AD1ECE7F /* YapDatabasePrivate.h */, + 2EED805F237A23915130FD2E24790624 /* YapDatabaseStatement.h */, + BFB316468589CA433E33161A50B32617 /* YapDatabaseStatement.m */, + 206E4350E662FA5A4A871890C8A3BA5C /* YapDatabaseString.h */, + 45968D1B540A9B0446A132B1D6A84B09 /* YapMemoryTable.h */, + 59F5DC6E3A0C700F5B799D789CE38EA7 /* YapMemoryTable.m */, + F59B953F12BEF4193447E82FA63784A5 /* YapNull.h */, + 7D4B72762CBBA48A7F15638126EF032A /* YapNull.m */, + 453A9786A9452B24C55F77F5BBDD3123 /* YapProxyObjectPrivate.h */, + 965C3E45D61328F247BA6E62AE169883 /* YapRowidSet.h */, + 47C1C60A48F49D45DDE3EC322E15EFED /* YapRowidSet.mm */, + BD4E8F342BC003DCD58275FC3546D146 /* YapTouch.h */, + 6BABA5F90D27821758375978A45F6889 /* YapTouch.m */, + ); + name = Internal; + path = YapDatabase/Internal; + sourceTree = ""; + }; + BBDDCC4C0105D3EA57E2C145B98B9755 /* Utilities */ = { + isa = PBXGroup; + children = ( + DD3232216ED8C1BFF2923E6F9158D111 /* YapDatabaseViewChange.h */, + 40D8955EDCC6007327E62B4041966F49 /* YapDatabaseViewChange.m */, + 157128D085D978163557A91F453C071A /* YapDatabaseViewMappings.h */, + 03F32D9F23909DA5391F35AC1A3F757D /* YapDatabaseViewMappings.m */, + ADFE6A8737FEDEE46A2CF885D496C408 /* YapDatabaseViewRangeOptions.h */, + EA0E0331B91902167A51BB4756703BBD /* YapDatabaseViewRangeOptions.m */, ); name = Utilities; path = YapDatabase/Extensions/View/Utilities; sourceTree = ""; }; - B0F113FF6324205B663E5F88F859F5C2 /* Support Files */ = { + C19BF2401068BED10CA34921E76A67B6 /* Standard-ObjC */ = { isa = PBXGroup; children = ( - 35ED255FA0C08CD23F3B60C17444197E /* Reachability.xcconfig */, - C6A6097DC701BD67D8BDAAA8713C4FD8 /* Reachability-dummy.m */, - 1BF5F7D3EE234CC59B65F810AAF25DE3 /* Reachability-prefix.pch */, + EEF38E4A59F23C95A13BB4C905781461 /* Core */, + E346F9CBD5BFE05F997C2777D547A847 /* Extensions */, ); - name = "Support Files"; - path = "../Target Support Files/Reachability"; + name = "Standard-ObjC"; sourceTree = ""; }; - B57C443F06C9CB8A79E9E10E296BD70C /* Standard */ = { + C7C2BFA90DF3E466B5CEB102793B62C7 /* Internal */ = { isa = PBXGroup; children = ( - 8383404C213B2FB9A06ED3DF5E6F55D4 /* Core */, - 8DB34FA64BBC0CA71BF0AC9FC3721195 /* Extensions */, + 3A1E7877431DA6044F3423650457CE8C /* YapDatabaseCloudCoreGraphPrivate.h */, + A4907FFD108659AD239912E8DC590ED0 /* YapDatabaseCloudCoreOperationPrivate.h */, + 942357AD4DDC444CD8D03A209B86CD26 /* YapDatabaseCloudCorePipelinePrivate.h */, + 31EDF30E4623E289704C098344548C92 /* YapDatabaseCloudCorePrivate.h */, ); - name = Standard; + name = Internal; + path = YapDatabase/Extensions/CloudCore/Internal; + sourceTree = ""; + }; + CC8935D531A194370FD92FEEF3262B3F /* YapDatabase */ = { + isa = PBXGroup; + children = ( + 21EC30FAFF0E2CD0FC05FADFDD5C4750 /* Pod */, + 6A0F4E69AACDA053867AB48F8135CB3D /* Standard */, + C19BF2401068BED10CA34921E76A67B6 /* Standard-ObjC */, + 3A41E288117A7D0A7D2E3C2842B136CD /* Support Files */, + ); + name = YapDatabase; + path = ../../..; + sourceTree = ""; + }; + CF1408CF629C7361332E53B88F7BD30C = { + isa = PBXGroup; + children = ( + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + 1D011FDA319A312885824057F624FF83 /* Development Pods */, + D89477F20FB1DE18A04690586D7808C4 /* Frameworks */, + 7DB284FAE2B03D5EFA57DA9C337696DB /* Pods */, + DBBE4C995C8FFE471A253191F49FDBEC /* Products */, + F3DA8408709B7283DE4046026048AD60 /* Targets Support Files */, + ); + sourceTree = ""; + }; + CF34712963676FFC19C7EDA716D44FA3 /* Execution */ = { + isa = PBXGroup; + children = ( + BB91445D1C15384EA833D87DF354F562 /* YapDatabaseCloudCoreGraph.h */, + 8F5557C3FFAFBE851223E1062BD5A4BB /* YapDatabaseCloudCoreGraph.m */, + A033AAEA56D36667C4B9B3672F51BA83 /* YapDatabaseCloudCorePipeline.h */, + 5C4301076674FA4B24DF31B1F93F72C6 /* YapDatabaseCloudCorePipeline.m */, + 6E816577F8A65ABB95CE2C1AB6E40F23 /* YapDatabaseCloudCorePipelineDelegate.h */, + ); + name = Execution; + path = Execution; + sourceTree = ""; + }; + D391B8D7F237C25570374BF25419273E /* FilteredView */ = { + isa = PBXGroup; + children = ( + 5890FF8F0102E07E1F69B93A54AAC0FF /* YapDatabaseFilteredView.swift */, + ); + name = FilteredView; + sourceTree = ""; + }; + D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; sourceTree = ""; }; - B849BA288109BE28D210636776A1E051 /* Utilities */ = { + DA09489D0EA9A8FCEAF1DD99E7397A2F /* Utilities */ = { isa = PBXGroup; children = ( - 773E939C82314587EBE788E1609BA93F /* YapReachability.h */, - A132DBDC8C60878CE61E263614EC2B4B /* YapReachability.m */, + 60C91238202C4799687425C0DF4C559B /* YapReachability.h */, + 181D2F2F146A1951D9C62C1AB8480161 /* YapReachability.m */, ); name = Utilities; path = YapDatabase/Extensions/ActionManager/Utilities; sourceTree = ""; }; - C402BE4677D245D094938D5A32A83E90 /* Internal */ = { + DADA1B96346D8EE461707CE88C7C71F1 /* CocoaLumberjack */ = { isa = PBXGroup; children = ( - 97EBC4D379A02101DF331E79ED3A79BC /* YapDatabaseExtensionPrivate.h */, + 985BDEF6242E129911CAF5641BDB72A0 /* Core */, + B248CBD9D0F7E48CF1C934C01F9755AB /* Support Files */, ); - path = Internal; + name = CocoaLumberjack; + path = CocoaLumberjack; sourceTree = ""; }; - C7D06869DB52EAB1737F46EA79ACF0C1 /* CloudCore */ = { + DBBE4C995C8FFE471A253191F49FDBEC /* Products */ = { isa = PBXGroup; children = ( - 1A4E6E66A15DCF40C39265C9D94E1087 /* YapDatabaseCloudCore.h */, - 7FAC1B6CA944FA3E417C412ED5A8657D /* YapDatabaseCloudCore.m */, - 3155D8E0E805EC632182B38551BF061A /* YapDatabaseCloudCoreConnection.h */, - 88C83CDCD12481FBB37436BB54068CFA /* YapDatabaseCloudCoreConnection.m */, - 22E51F2F52F50340FCAAEEEB652F26C3 /* YapDatabaseCloudCoreOptions.h */, - F4C94E93D8909E846976EF71CFBE6E7B /* YapDatabaseCloudCoreOptions.m */, - 97F8D507EBA8C51D4453213EF1C6255B /* YapDatabaseCloudCoreTransaction.h */, - ECC4E523B6103B2C669415A82A6CC129 /* YapDatabaseCloudCoreTransaction.m */, - 7237866420D772C12DDA2E53CEB6D90B /* Internal */, - 8EF24C6C5EB6F317A3D3B75EDD3E3A57 /* Utilities */, + C261436D14052AE3C35F240BCD155CAC /* libCocoaLumberjack.a */, + 2C57EB18FA1D70CF5CBEDE0E158DB8A9 /* libPods-CloudKitTodo.a */, + 400FF55D0451E7A8F33A3D0D3E11C1B9 /* libReachability.a */, + 9A514338E2AE7D0F32BB586BEB2C3B73 /* libYapDatabase.a */, ); - name = CloudCore; + name = Products; sourceTree = ""; }; - C98CC97FCA9EB24B9C2DB3F7E53A0E06 /* Internal */ = { + E0436FF11CB9405CFBD7CA46166E065D /* Internal */ = { isa = PBXGroup; children = ( - E60E0092D603C3647CFE278761057B8D /* YapDatabaseSecondaryIndexPrivate.h */, + 71C4F1FDE0CB5468AC9A1BC8130975C0 /* YapDatabaseFullTextSearchPrivate.h */, ); name = Internal; - path = YapDatabase/Extensions/SecondaryIndex/Internal; + path = YapDatabase/Extensions/FullTextSearch/Internal; sourceTree = ""; }; - CCCD85F99E1336AB2F0B1F8844B6DEE6 /* SecondaryIndex */ = { + E346F9CBD5BFE05F997C2777D547A847 /* Extensions */ = { isa = PBXGroup; children = ( - 06783BEC6E1B58BA997DCBE57ACA950A /* YapDatabaseSecondaryIndex.h */, - E0F6EDE99C6037AE365DFAEF284366C9 /* YapDatabaseSecondaryIndex.m */, - 2E6714012CCBF9DF13600AC381E537E2 /* YapDatabaseSecondaryIndexConnection.h */, - D2652D14DCD808781B60B4E19033FBB5 /* YapDatabaseSecondaryIndexConnection.m */, - ECAE056A9B3BB47C3C94A05458615458 /* YapDatabaseSecondaryIndexHandler.h */, - BD63A5589B47FB74E2B2F542F12E634C /* YapDatabaseSecondaryIndexHandler.m */, - 4B22D3E35E0259AB4EC60FBBA51D7B6B /* YapDatabaseSecondaryIndexOptions.h */, - 4CBFC7CC430E1D2EFEA5C46BF30DD0C0 /* YapDatabaseSecondaryIndexOptions.m */, - 2310CEA0EDD58D4A0F8D223CE886EB4C /* YapDatabaseSecondaryIndexSetup.h */, - 08FB2E69151A31AE1A76823884089177 /* YapDatabaseSecondaryIndexSetup.m */, - 28085C6FD2F83EF7477934B5EA62C828 /* YapDatabaseSecondaryIndexTransaction.h */, - 5BA0B0AA274373FDEA00F0E73442CE54 /* YapDatabaseSecondaryIndexTransaction.m */, - C98CC97FCA9EB24B9C2DB3F7E53A0E06 /* Internal */, + 5C3A08E96D67733D861905A950EB4DA8 /* ActionManager */, + E8865E2DE15E5210C913F9F1FD5DCE3E /* AutoView */, + 7C69AE351C924DA78E9A8960B34399A5 /* CloudCore */, + 1587CD742493120EC59F3472D5362A4A /* CloudKit */, + 4B7120FA12EE698E1DD38E3F144B1EC1 /* CrossProcessNotification */, + F31B9E1CCB236AD091927AFB4EA59A7C /* FilteredView */, + 4E01C60DF54E5BEDE3BD8AEB44BD11D9 /* FullTextSearch */, + 321C446160918BFFACDBB7985D8E1E1D /* Hooks */, + 4C49D2D735E43DB2820E61512D800EC9 /* ManualView */, + 801AA90B989D4CDFFC7E6B07B428ADC3 /* Relationships */, + 1E0372E55D9EB7BB9A1F0389E28F9E1A /* RTreeIndex */, + 186DC701755965EF743935DD11C8BFDA /* SearchResultsView */, + 61E44C988C7E24E5E001FE90FBB15CF3 /* SecondaryIndex */, + 81105BE444F098D644C2F40F43B88FCF /* View */, ); - name = SecondaryIndex; + name = Extensions; sourceTree = ""; }; - D1EA8A4E32FC6BBA5ADBBF7597A6C5D1 /* RTreeIndex */ = { + E5D623BC42AE76E9B4829845FA82D079 /* Internal */ = { isa = PBXGroup; children = ( - C155009B4FE2EC548CCCBD7139533759 /* YapDatabaseRTreeIndex.h */, - D43D2F3DC90BB6711A12038B1750C46C /* YapDatabaseRTreeIndex.m */, - 7BE9D83D8230384E8A1E3123522A26DD /* YapDatabaseRTreeIndexConnection.h */, - A38CC41E998861271E94328828343747 /* YapDatabaseRTreeIndexConnection.m */, - F79FBD8D361689E558F288F94F7442D9 /* YapDatabaseRTreeIndexHandler.h */, - 8265A6748AA95A678811E939F791B15F /* YapDatabaseRTreeIndexHandler.m */, - 5920BA416C7DAC3B824161BE752E1B61 /* YapDatabaseRTreeIndexOptions.h */, - 980A8D0CDC79441C29548033630A11A6 /* YapDatabaseRTreeIndexOptions.m */, - 43A23F6916CA05512A5C70FE31BE8254 /* YapDatabaseRTreeIndexSetup.h */, - 72146F42AB9B65887C722DFFA0F9205F /* YapDatabaseRTreeIndexSetup.m */, - 59ECC207808E198E30B3E1687871CB9F /* YapDatabaseRTreeIndexTransaction.h */, - 353DE5F5BA385A9F47E6B37309FCC7BA /* YapDatabaseRTreeIndexTransaction.m */, - 1E3C72761F8070A47637D6E9C938F248 /* Internal */, + FDB97AEC408598025D7E58729388ED37 /* YapDatabaseViewChangePrivate.h */, + A495D88E9C62E4F468E356FD6108155A /* YapDatabaseViewLocator.h */, + 6FA2F07AEA369AB1EC687FF9856DB764 /* YapDatabaseViewLocator.m */, + 85BB247EBA65C2F9A2E274B1D5368740 /* YapDatabaseViewMappingsPrivate.h */, + 76D3F5BEB91FD5F9AE1CE2EF5BE6C0DA /* YapDatabaseViewPage.h */, + 67F6E4A3B38CE509283D012D053C8F73 /* YapDatabaseViewPage.mm */, + 6F9163650F39B37696B35A82B41C42D6 /* YapDatabaseViewPageMetadata.h */, + 330A3629082AA781CE02818D0C2BEFD4 /* YapDatabaseViewPageMetadata.m */, + 8A80B9695462583B8FB850E106638743 /* YapDatabaseViewPrivate.h */, + 60334989ACDC30BF87F8530F52F3B773 /* YapDatabaseViewRangeOptionsPrivate.h */, + B0541D4E97CAEE902EDF1802C1089C49 /* YapDatabaseViewState.h */, + 85A7D3C6F716DD6445E98161F5A2D690 /* YapDatabaseViewState.m */, ); - name = RTreeIndex; + name = Internal; + path = YapDatabase/Extensions/View/Internal; sourceTree = ""; }; - D4A994E010CF16D02DEEA1BD119D6063 /* Extensions */ = { + E5FFB3BF4A6CE58A16A352BCC95D3818 /* Support Files */ = { isa = PBXGroup; children = ( - 4B07C5EBFD06C3246E6DAB903361E184 /* DDContextFilterLogFormatter.h */, - 03BBF770B921DF03CA30F286D22A46D1 /* DDContextFilterLogFormatter.m */, - 80400DD19103B51138062D4A0BD3DC8D /* DDDispatchQueueLogFormatter.h */, - 02A861CF5913B61D2280AE86C3CF7947 /* DDDispatchQueueLogFormatter.m */, - 018B403D669DFADB13F22248AEBE9858 /* DDMultiFormatter.h */, - 2A475B7DA333D958CE6A08C14B382A14 /* DDMultiFormatter.m */, + 33DF2D1519A2BB95E52443791B6D5B29 /* Reachability.xcconfig */, + 85AFCFCDF98443B6345CDF68EF7EFD69 /* Reachability-dummy.m */, + DA44F4FBADBD8940BC4DCDB40B305961 /* Reachability-prefix.pch */, ); - name = Extensions; + name = "Support Files"; + path = "../Target Support Files/Reachability"; sourceTree = ""; }; - D5DA4996F28A627BF23A0E2B166BE189 /* FilteredView */ = { + E87C0A99C3B9E8ED0878CFE9AAE3658D /* Internal */ = { isa = PBXGroup; children = ( - 78F30CC432A006055C318C380AB14B1E /* YapDatabaseFilteredView.h */, - 2230FF8D796C90EECDB107E0110C212E /* YapDatabaseFilteredView.m */, - 36672A70772176268A93A24574E7D73A /* YapDatabaseFilteredViewConnection.h */, - 9C324596EDCF7E609C42019A25E86643 /* YapDatabaseFilteredViewConnection.m */, - D31F7CEF62B243AEA5FC89092A767D86 /* YapDatabaseFilteredViewTransaction.h */, - B47C7069EECD030F28C73A69356D9EEF /* YapDatabaseFilteredViewTransaction.m */, - DDBF5136D462BB585763B71BDA71C37C /* YapDatabaseFilteredViewTypes.h */, - 0D020BC2600A51A14B28508E3EE801D0 /* YapDatabaseFilteredViewTypes.m */, - 034F61DF31C6922DCA9B000CA39B5BB3 /* Internal */, + 20BC543EB4FB87B044ABFD6F95996421 /* YapActionItemPrivate.h */, + C8CEE4E68EA7788C53B8DA42B1F2097B /* YapDatabaseActionManagerPrivate.h */, ); - name = FilteredView; + name = Internal; + path = YapDatabase/Extensions/ActionManager/Internal; sourceTree = ""; }; - DB38A407A09EFEA58DA17B1976EADEFC /* Internal */ = { - isa = PBXGroup; - children = ( - CFE3FAA0E5B4C80EE4FB4B5088443AEB /* NSDate+YapDatabase.h */, - 652F0E374DF630AB6B537636BB75F4FA /* NSDate+YapDatabase.m */, - 319D7F4B1424860E91439CB4306A0FFB /* NSDictionary+YapDatabase.h */, - 16CB3AB5FBB3BD1FFB24578B6D7DF4B2 /* NSDictionary+YapDatabase.m */, - 64D313E0E5AE2710923FFB1AFAC52FCF /* yap_vfs_shim.h */, - 819AF79AC184131E8EF6A51742DEC81B /* yap_vfs_shim.m */, - 24AFB736BE9B3A1E890F679046E7D72E /* YapDatabaseAtomic.h */, - EC291365E1BA10E2E226D8F95EF63ACF /* YapDatabaseConnectionState.h */, - 5D5274AC4960185C205C7FB5DF4B10C1 /* YapDatabaseConnectionState.m */, - AEC51C8788C1992AC316E656BF32EEE4 /* YapDatabaseLogging.h */, - 16A91FEB31A81C28C550BC19C09996BD /* YapDatabaseLogging.m */, - 3DBB4B1A8F00EF9BA733C71CFA9C2950 /* YapDatabaseManager.h */, - 742F74BE3C02F901FF00529A4C9EC7F3 /* YapDatabaseManager.m */, - 0EE7FCC054EA7D24BD73BA8DDAA051DA /* YapDatabasePrivate.h */, - 446676AF3848F63B04882F131FC24218 /* YapDatabaseStatement.h */, - 82B13C59CC050B0FEAFB4837B944109D /* YapDatabaseStatement.m */, - F5C80C7AA277F70F43F1936AF8DF3312 /* YapDatabaseString.h */, - A7D37732F9BC1CECE559C89CDD71B945 /* YapMemoryTable.h */, - DAC117F312A8ACE8476361C4FD8FB20C /* YapMemoryTable.m */, - 55A8B18879CDDFBE84A0605B1E04C685 /* YapNull.h */, - 34B70FE1A714BA3036CAA35B222B7325 /* YapNull.m */, - 1A45CD961CCE233D329784D970CF131A /* YapProxyObjectPrivate.h */, - C0F86BAC3DC001ED3BF80852B4412741 /* YapRowidSet.h */, - 2C78662D1D5FED14BDA0E38D89CE4F13 /* YapRowidSet.mm */, - 3B74B09A58D7BA0A64E66EDEA1742B56 /* YapTouch.h */, - 2770FCE96C4071EF5349CBDDC96DEB60 /* YapTouch.m */, + E8865E2DE15E5210C913F9F1FD5DCE3E /* AutoView */ = { + isa = PBXGroup; + children = ( + 77DD1D0F59405B93A09F15B1FBB8B20C /* YapDatabaseAutoView.h */, + E1219E1B9A3A9AB7C3DA5DA531452BB3 /* YapDatabaseAutoView.m */, + 2D931DF586EA6822C067FDE60761B5F9 /* YapDatabaseAutoViewConnection.h */, + 7E4BCC7C45B68EB5AA3FC8231C871259 /* YapDatabaseAutoViewConnection.m */, + 494751970A2A1484CDB71B728CDA50D9 /* YapDatabaseAutoViewTransaction.h */, + BD7F82D18333EEBA12C4112767EEDC13 /* YapDatabaseAutoViewTransaction.m */, + 0C41F105C64306FABC1BF69696EC4FEB /* YapDatabaseViewTypes.h */, + AC12C96E98AB2C8498049164C90EC58C /* YapDatabaseViewTypes.m */, + F871DD329F4356DAC1353357EDA9491F /* Internal */, ); - name = Internal; - path = YapDatabase/Internal; + name = AutoView; sourceTree = ""; }; - E04F7675F138A94286FA2ACE6FC08150 /* CocoaLumberjack */ = { + EEF38E4A59F23C95A13BB4C905781461 /* Core */ = { isa = PBXGroup; children = ( - 28588B4D48EA01A9E3D61737C054B0DC /* Default */, - D4A994E010CF16D02DEEA1BD119D6063 /* Extensions */, - A68837F013FDAA0F47A8D1271FBAEFD1 /* Support Files */, + 12C76D715107D99655DB7FFDC6E32273 /* YapDatabase.h */, + C449B9A4035473F65C204CB744B6F218 /* YapDatabase.m */, + 5FA5DD0BC379AC73C9813088BE054B20 /* YapDatabaseConnection.h */, + E846D28CC65045B2E1485AFD556ABB90 /* YapDatabaseConnection.m */, + C501B18F802524EA603BBB914F39884C /* YapDatabaseOptions.h */, + E03AB2619369CFB66E9D286438CFB357 /* YapDatabaseOptions.m */, + C7121128B6C9CA39D47FAFA053AD77CB /* YapDatabaseTransaction.h */, + B34B0FC689724D510AB320905ECEA157 /* YapDatabaseTransaction.m */, + 1D8C1EB778F87AA4E72239E4F9A9FBF1 /* YapDatabaseTypes.h */, + 55E2F099E8E1DB3753349721ACD44BEC /* Extensions */, + B911DFE40AE7A828EC562461354806F5 /* Internal */, + B1C2902B54BBEA1455B19F69D8013D81 /* Utilities */, ); - path = CocoaLumberjack; + name = Core; sourceTree = ""; }; - E11648C148A72472A82FFFBC81B1FA94 /* Reachability */ = { + F31B9E1CCB236AD091927AFB4EA59A7C /* FilteredView */ = { isa = PBXGroup; children = ( - 5A9CE885195D70B27D7A3ECF239B87F7 /* Reachability.h */, - AF2C748E02F52038EACCF15BE23CBC01 /* Reachability.m */, - B0F113FF6324205B663E5F88F859F5C2 /* Support Files */, + DD4C2B55606F9E676FE7A3853B9CC7C3 /* YapDatabaseFilteredView.h */, + 6BE086866A9CBF0CC3072EF1FED0FA38 /* YapDatabaseFilteredView.m */, + 3F49E0647B99802F5AA535BC366B0157 /* YapDatabaseFilteredViewConnection.h */, + 013EB1D7EEDBB4242044BAF448BD8D23 /* YapDatabaseFilteredViewConnection.m */, + 301D1F5564A374BD06595870D5AC5049 /* YapDatabaseFilteredViewTransaction.h */, + 23A77FB8FB849F5D4F25719711C184F4 /* YapDatabaseFilteredViewTransaction.m */, + BC96973D657059A87175DB5FFDFE4DA3 /* YapDatabaseFilteredViewTypes.h */, + 2ED3C2C6473466203EB1769AF1CFF1E0 /* YapDatabaseFilteredViewTypes.m */, + 63190CB736E62F59E968D2EFAD190E69 /* Internal */, ); - path = Reachability; + name = FilteredView; sourceTree = ""; }; - E7E283C74B7E79D37D9BAAFF277942F5 /* iOS */ = { + F3DA8408709B7283DE4046026048AD60 /* Targets Support Files */ = { isa = PBXGroup; children = ( - 97D7E984AA2ED06FC886024282B47207 /* Foundation.framework */, - F2AF9EC704AAD470CAC8FE0D05A5430B /* SystemConfiguration.framework */, + 7B83006FC0DF257CE9CD085FBBCE9FEE /* Pods-CloudKitTodo */, ); - name = iOS; + name = "Targets Support Files"; sourceTree = ""; }; - EAC791419407719AC3110E72E8E2A201 /* Relationships */ = { + F871DD329F4356DAC1353357EDA9491F /* Internal */ = { isa = PBXGroup; children = ( - EA698AB8C2148A86AC77B0036A4F086C /* YapDatabaseRelationship.h */, - 712EB4914F4EB302921DE1E41830EE55 /* YapDatabaseRelationship.m */, - 9CF942998AE2693B6058A66B11A49DCD /* YapDatabaseRelationshipConnection.h */, - 91D32BFF1C555995E8A56FD4F9BB17C6 /* YapDatabaseRelationshipConnection.m */, - 6A2678DBBB07013440E498FCA0524E75 /* YapDatabaseRelationshipEdge.h */, - C81B4F738C47C80F14CAAD7B3694CFFE /* YapDatabaseRelationshipEdge.m */, - 177F8DEAD231C4854DF04693089CEB2A /* YapDatabaseRelationshipNode.h */, - 7D6932DE3FAD438735682AEBFF5B640D /* YapDatabaseRelationshipOptions.h */, - 498C35E893D006CC49E9F8146924B1C7 /* YapDatabaseRelationshipOptions.m */, - 4493DD595FC8ACD34923115E2838B650 /* YapDatabaseRelationshipTransaction.h */, - 4662158BF3C128CA0AC0978E7A7F61DA /* YapDatabaseRelationshipTransaction.m */, - 49ECAC5F9AE6A5A81532B117D13C4795 /* Internal */, + D5869948ACEB0CC9B6926414493AA112 /* YapDatabaseAutoViewPrivate.h */, ); - name = Relationships; + name = Internal; + path = YapDatabase/Extensions/AutoView/Internal; + sourceTree = ""; + }; + FF3CE04F3A582C0925B9BB3BC4DCC717 /* CloudCore */ = { + isa = PBXGroup; + children = ( + 680513C4274999423CD5DC1C7C47F5AA /* YapDatabaseCloudCore.swift */, + ); + name = CloudCore; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 42D2C7BF8B1FCBE08D8661C1A6985D1A /* Headers */ = { + 13B6469EA34C624BD22A90838A51E4AF /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1189D8C6CB46D0FAADDF509C7DC3F082 /* CocoaLumberjack.h in Headers */, - DF84D530DF2BC33EEA61C6389AB1F746 /* DDAbstractDatabaseLogger.h in Headers */, - 8FF0F792D87F0F5A6F1578BEA3F04DCE /* DDASLLogCapture.h in Headers */, - A4B7EF6C5296F8B175118340855DD9AF /* DDASLLogger.h in Headers */, - ABB00A9FAB46BA0C44BF972CF261A764 /* DDAssertMacros.h in Headers */, - 55359F5DE0FAA9C383FECF4EE275DA6F /* DDContextFilterLogFormatter.h in Headers */, - 9E4074EE1199C4B07D01D2B7C820BA60 /* DDDispatchQueueLogFormatter.h in Headers */, - 3441D7B7F5F9A88883353237766D9FAD /* DDFileLogger.h in Headers */, - 246F324F191688B9EC06AEA374758D2D /* DDLegacyMacros.h in Headers */, - 8BB083D4FDC1F872F0F0246C9EB3A522 /* DDLog+LOGV.h in Headers */, - 9505573B785699BF7175E70041928F60 /* DDLog.h in Headers */, - F8D81E38BCC185BDCC5D8D6F466C077C /* DDLogMacros.h in Headers */, - 3BE590C43F6CF35CDF07D6A96A161C0E /* DDMultiFormatter.h in Headers */, - 2CD4F9B309F4DDA82DD35DB3E3375277 /* DDOSLogger.h in Headers */, - A90F92B6D535965E7E26E66001040594 /* DDTTYLogger.h in Headers */, + 3A7D93C34AD9926F93F70C47A8305B24 /* Pods-CloudKitTodo-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - CB429CE33015228902142D0DDE4A4725 /* Headers */ = { + CA790A7B0AE19E9F19F3B078CEC5DD3C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 7A3270CA2E0B754AB7940D5B69578EDC /* NSDate+YapDatabase.h in Headers */, - EB1EBA9CB5F9CB47945B8E9A4C30B7D7 /* NSDictionary+YapDatabase.h in Headers */, - EBD139D5E2E6387749F07A991C408BD5 /* yap_vfs_shim.h in Headers */, - 80FA430A185576115626943477262814 /* YapActionable.h in Headers */, - 943F4F4C7BC825B0A203F9B511FD8E40 /* YapActionItem.h in Headers */, - BA31EDBEF896C4B1185D610F2B8A9760 /* YapActionItemPrivate.h in Headers */, - 11FA14FA29BCB03205C860AC8404FD81 /* YapBidirectionalCache.h in Headers */, - 984F8740D859021AA56D9E42D7093A03 /* YapCache.h in Headers */, - B97EA33610F852D37B11498E0F868360 /* YapCollectionKey.h in Headers */, - C22BC5E75E5CC12551401E0DC979CF8F /* YapDatabase.h in Headers */, - BB20AEEB19CAC83D849ABC3B3B418C5C /* YapDatabaseActionManager.h in Headers */, - DBA48C82AB4A02C860666E6CBB28E5B3 /* YapDatabaseActionManagerConnection.h in Headers */, - 02A7618FDC32959B08E528723A642B74 /* YapDatabaseActionManagerPrivate.h in Headers */, - 8DFFE8151C0A4D5BD3E9459B4F49FCB5 /* YapDatabaseActionManagerTransaction.h in Headers */, - F97896392E726C80F2FAD40F2D136AD8 /* YapDatabaseAtomic.h in Headers */, - 63536F1AB99E71A7953533E8162C7756 /* YapDatabaseAutoView.h in Headers */, - 87609C65C4AF2E3F53304C6D01F4A1CC /* YapDatabaseAutoViewConnection.h in Headers */, - FD304C9FDDEE2A2F640C958625A56A87 /* YapDatabaseAutoViewPrivate.h in Headers */, - A42205AFAA275CB4999D61B47CF51116 /* YapDatabaseAutoViewTransaction.h in Headers */, - 3B93C1185C12D86BF5139A84F8E9BADB /* YapDatabaseCloudCore.h in Headers */, - B75E3D1CEC28358F23B1CC81810120C6 /* YapDatabaseCloudCoreConnection.h in Headers */, - 7664EAA8593D48ADE00AE751F5BC8A8A /* YapDatabaseCloudCoreGraph.h in Headers */, - F7C95C59C9A7FB41EEC6809AA9D59666 /* YapDatabaseCloudCoreOperation.h in Headers */, - 2578F6D5F15968206EC5A5DEB08D9CA5 /* YapDatabaseCloudCoreOperationPrivate.h in Headers */, - 69D564F2A66E363D2F6F5A2867F01739 /* YapDatabaseCloudCoreOptions.h in Headers */, - 0DD089E022CA41291E440E3710A19D98 /* YapDatabaseCloudCorePipeline.h in Headers */, - E4FFBE870B99D428C0C4E63F9903AB71 /* YapDatabaseCloudCorePipelineDelegate.h in Headers */, - 222E54D1CDE3159AF7AED1BF6FC65C32 /* YapDatabaseCloudCorePipelinePrivate.h in Headers */, - 8FA983A51E414D9E74477B71FA6AABA5 /* YapDatabaseCloudCorePrivate.h in Headers */, - 228B6BBBCB106C29E16BBBBA4CC7A326 /* YapDatabaseCloudCoreTransaction.h in Headers */, - F3DE82E469CFF503ED0849567EA7CD6F /* YapDatabaseCloudKit.h in Headers */, - F45E4316D1564C6594D884B033456B13 /* YapDatabaseCloudKitConnection.h in Headers */, - 24DE34BE82A486068AD589D589FA395E /* YapDatabaseCloudKitOptions.h in Headers */, - E60ED032FF48D59E1CAEC2EBEED243D5 /* YapDatabaseCloudKitPrivate.h in Headers */, - 4A5A26C8EC0B05FB3203AB44872D0F20 /* YapDatabaseCloudKitTransaction.h in Headers */, - F6F19CDE0C9E3BE5610AEFE95D2A4957 /* YapDatabaseCloudKitTypes.h in Headers */, - 076BFCE09763B3C20B1C30D9513CC9D0 /* YapDatabaseConnection.h in Headers */, - 9811C3D126C1CEAB8F46A002122BE790 /* YapDatabaseConnectionConfig.h in Headers */, - A5BCEE8DDC4F1A0F5586372648E577D3 /* YapDatabaseConnectionProxy.h in Headers */, - C860F87B17C67A29037EF6A7F14D8A28 /* YapDatabaseConnectionState.h in Headers */, - A1118798B885F223E28AC2A8D0DE085E /* YapDatabaseCrossProcessNotification.h in Headers */, - 7656EEDE8CC7F0D2E40A026874A4A08F /* YapDatabaseCrossProcessNotificationConnection.h in Headers */, - E16BB1B301319295F657D5E8E5C1D3BB /* YapDatabaseCrossProcessNotificationPrivate.h in Headers */, - C98AC29E035D17D77FFE1A9790F55858 /* YapDatabaseCrossProcessNotificationTransaction.h in Headers */, - 7DBE872ADDF1F3264019EDB63CCCC6CF /* YapDatabaseExtension.h in Headers */, - 134DBD60B3E8D76CD3DE39B70FF1358C /* YapDatabaseExtensionConnection.h in Headers */, - 02B10AB4B17F0F5381E37FE60B386057 /* YapDatabaseExtensionPrivate.h in Headers */, - 2897A28F743CD97494E40737C13B23C7 /* YapDatabaseExtensionTransaction.h in Headers */, - 75095D5A01FDADCA229F65EC72711596 /* YapDatabaseExtensionTypes.h in Headers */, - AB31074807519C329DB660D78BF99609 /* YapDatabaseFilteredView.h in Headers */, - 4161BDB36C0EBDA1E4A41121902530E4 /* YapDatabaseFilteredViewConnection.h in Headers */, - 7CFF6B55AB9FF3F15770AC43445E11DB /* YapDatabaseFilteredViewPrivate.h in Headers */, - 7A006FBC30495E5B253B45B7723A1FF1 /* YapDatabaseFilteredViewTransaction.h in Headers */, - 0AFFFDD9844C00487D78B1F05C1B6813 /* YapDatabaseFilteredViewTypes.h in Headers */, - 69C732FC64D4F0585097E1AFF69427F1 /* YapDatabaseFullTextSearch.h in Headers */, - 564A5E1E6162061133C313CB734EE1C8 /* YapDatabaseFullTextSearchConnection.h in Headers */, - 1C787C1414F17C80707C4DDC6F373AE1 /* YapDatabaseFullTextSearchHandler.h in Headers */, - F7B44D68D8FC0A6506A30D6BAAA3DF55 /* YapDatabaseFullTextSearchPrivate.h in Headers */, - 26FCA38EB6C9922FF5AEFB7E1CD75BA5 /* YapDatabaseFullTextSearchSnippetOptions.h in Headers */, - 891CE00703150A2E203E59115AA22228 /* YapDatabaseFullTextSearchTransaction.h in Headers */, - 61534BC90D0897F16371A052748326F9 /* YapDatabaseHooks.h in Headers */, - 7340E57FEC097872BEF9F3A0C91F2667 /* YapDatabaseHooksConnection.h in Headers */, - 609480D8C7921EBC8B35F8DCE497213E /* YapDatabaseHooksPrivate.h in Headers */, - 92ECCB48289D6799DC14A0D43BD4BD33 /* YapDatabaseHooksTransaction.h in Headers */, - E1D5B1931468F2D85682E6921DDEDAAF /* YapDatabaseLogging.h in Headers */, - 8139128D5CDDB96C7731561953CFE16E /* YapDatabaseManager.h in Headers */, - B349D0C2ACD3AACF02B06434F605EBCC /* YapDatabaseManualView.h in Headers */, - 8B5FD86CAC76308733E765284B04BAE2 /* YapDatabaseManualViewConnection.h in Headers */, - E71534CFA964C847BE4154A002AE8D9C /* YapDatabaseManualViewPrivate.h in Headers */, - F8C0E7EF9391B798BD87BA8CA37FC632 /* YapDatabaseManualViewTransaction.h in Headers */, - C7CAB63B434A27B0C1125DFC257F3EB8 /* YapDatabaseOptions.h in Headers */, - 786EF154DA73B91338C9E6966F4581DC /* YapDatabasePrivate.h in Headers */, - DC25D2344890AE12429D42FFDB98A1BA /* YapDatabaseQuery.h in Headers */, - E125383140D45D2707503EC2DC279D9A /* YapDatabaseRelationship.h in Headers */, - 21AD8346794EE18BA1D212E215A27674 /* YapDatabaseRelationshipConnection.h in Headers */, - 9DCDCCEF415A5EBC8DF396BA2C092D9A /* YapDatabaseRelationshipEdge.h in Headers */, - BC48121CC95DDDA37D34BBDBA161353F /* YapDatabaseRelationshipEdgePrivate.h in Headers */, - 1CF70A18EC19BA86BA7EC3B720E1748E /* YapDatabaseRelationshipNode.h in Headers */, - EC0B2121CF00E99602E3573B0A44E70E /* YapDatabaseRelationshipOptions.h in Headers */, - F91BF79BB84C8A040343314B244F2A48 /* YapDatabaseRelationshipPrivate.h in Headers */, - D0F6270F959013EB4411D431B651D5E4 /* YapDatabaseRelationshipTransaction.h in Headers */, - 1A0D31E44B374254F78DC7A1D3F25DD1 /* YapDatabaseRTreeIndex.h in Headers */, - 9C4D930569C6A39CA198336F950DF9F1 /* YapDatabaseRTreeIndexConnection.h in Headers */, - A2E71607E958A68DCD085C0BCA6CF705 /* YapDatabaseRTreeIndexHandler.h in Headers */, - 8646E7F0A4AEAD0CD06FEA5219CA7FE5 /* YapDatabaseRTreeIndexOptions.h in Headers */, - B66BB64834115FA1E04341D38F1648F2 /* YapDatabaseRTreeIndexPrivate.h in Headers */, - 6E73BC9C74A2517B950E4DA11B5A2803 /* YapDatabaseRTreeIndexSetup.h in Headers */, - D973BE263E635677495A2752DB759CE6 /* YapDatabaseRTreeIndexTransaction.h in Headers */, - 1CD3C33E7AAE81802C42909758CF47A5 /* YapDatabaseSearchQueue.h in Headers */, - 82E7F7556D68BECC62E6E4D331783F37 /* YapDatabaseSearchQueuePrivate.h in Headers */, - BF3B624FCD613AA9717DADC300EC2E8D /* YapDatabaseSearchResultsView.h in Headers */, - 7F15A08AF7D3FA71C82F521F9148729E /* YapDatabaseSearchResultsViewConnection.h in Headers */, - FD42CA2F762453A2EE2B681C7C964A60 /* YapDatabaseSearchResultsViewOptions.h in Headers */, - C6C6DEF5064964A50AACDA8218CFEFC6 /* YapDatabaseSearchResultsViewPrivate.h in Headers */, - 123FF43F3CEB9A3EFEE47DF6235A2EBB /* YapDatabaseSearchResultsViewTransaction.h in Headers */, - 4FE8C7243F1B5DA38AC21A05579A7227 /* YapDatabaseSecondaryIndex.h in Headers */, - 3E654B3BE5F1795BAE11574AAE898EB3 /* YapDatabaseSecondaryIndexConnection.h in Headers */, - 46C9BC50080438192E0260F4B3F7C395 /* YapDatabaseSecondaryIndexHandler.h in Headers */, - 924459A0E7DAFBDCD2C36860AED1A6FA /* YapDatabaseSecondaryIndexOptions.h in Headers */, - 461049FFF98CDD86536AB292004EBFE2 /* YapDatabaseSecondaryIndexPrivate.h in Headers */, - 5BEC123B45C4C631AC59736D1BFF85B6 /* YapDatabaseSecondaryIndexSetup.h in Headers */, - 6627CCBF89BB77B587344EC935DD9016 /* YapDatabaseSecondaryIndexTransaction.h in Headers */, - 6DC49A741DBE4BB537AF1D93ED499E27 /* YapDatabaseStatement.h in Headers */, - CB9DA3455256F2BC5F872E668003A9B7 /* YapDatabaseString.h in Headers */, - 1C0673E5BC90F97985F96398D388912A /* YapDatabaseTransaction.h in Headers */, - 6DD923038240E90736A907BD796FB633 /* YapDatabaseView.h in Headers */, - 81B217E87E495C53C3DC24D5058A6253 /* YapDatabaseViewChange.h in Headers */, - 8B4F083557A7CFCB7DA1071B3AFB52CC /* YapDatabaseViewChangePrivate.h in Headers */, - D1C010D6969F09D3E6303B7920ED8F99 /* YapDatabaseViewConnection.h in Headers */, - D93B8DA2D80EADAADA15DAAA0DEFB505 /* YapDatabaseViewLocator.h in Headers */, - 84BCDE739393E7A89D8AB6A83C52DAED /* YapDatabaseViewMappings.h in Headers */, - 8D46CE3A828C49CB17529F5E6083F20E /* YapDatabaseViewMappingsPrivate.h in Headers */, - 2904A52DDABC05D349309C8831C37D4C /* YapDatabaseViewOptions.h in Headers */, - 7FE4155F4154F1AA9B80276B156FD197 /* YapDatabaseViewPage.h in Headers */, - 18B6AF054CBC6BDBE1FF57BCCF6F2E2A /* YapDatabaseViewPageMetadata.h in Headers */, - 924F8AEF2B1C94FE03078511950A5B1C /* YapDatabaseViewPrivate.h in Headers */, - 2DEF1C8A8E4216D431D37870610542D7 /* YapDatabaseViewRangeOptions.h in Headers */, - 211EB7F5EFF96EE3EBFECC374F195D7B /* YapDatabaseViewRangeOptionsPrivate.h in Headers */, - E9AC976E90258CE5EE31C90F9AE9C70E /* YapDatabaseViewState.h in Headers */, - A1AA68EBD521E0A63389ACE0A1BB6502 /* YapDatabaseViewTransaction.h in Headers */, - A08C456DBDCC9521CB9B097E687EE0DF /* YapDatabaseViewTypes.h in Headers */, - 196F1670838EA8E5E4BC29EB51EAE839 /* YapDirtyDictionary.h in Headers */, - 49F5743C4F394A644A2DDBCA9A92BFE3 /* YapManyToManyCache.h in Headers */, - 20266D8E27F0E78A74E4F2C005E33D89 /* YapMemoryTable.h in Headers */, - 72F9F982B5D17DF1177FA196C4CC8153 /* YapMurmurHash.h in Headers */, - 61A573D59D662C4BE5F5C9762E9F3FA0 /* YapMutationStack.h in Headers */, - 3A1B0AC9ADD5956A66AB2A8DCE4DB004 /* YapNull.h in Headers */, - 6BD18584EB6E0CABECE61916B9EFC3F1 /* YapProxyObject.h in Headers */, - 07BA2EC686EE3736A724321591ED2E52 /* YapProxyObjectPrivate.h in Headers */, - 1AEDF8F603224F9AC05904D381731FA9 /* YapReachability.h in Headers */, - 1110A8C6E62134FA5824D7C796BFA80C /* YapRowidSet.h in Headers */, - 9C14958FB1A9EA81EACDED2E92261175 /* YapSet.h in Headers */, - AF1C32105A05879AB731F477B3D2A994 /* YapTouch.h in Headers */, - 69AD7CE13CF9C4C5FFBD84EB566CDF76 /* YapWhitelistBlacklist.h in Headers */, - E8326FDB49475CAAEDFEA1D04AC24180 /* YDBCKAttachRequest.h in Headers */, - F43614EE9CDB6285EBCF893B5D7442A5 /* YDBCKChangeQueue.h in Headers */, - BD0DEA4448724D6CF9309E46A817D4F0 /* YDBCKChangeRecord.h in Headers */, - 3048B421A2FCF7E94442F206A8940CDF /* YDBCKChangeSet.h in Headers */, - CDE2B91C982F409BF87E383AFE205748 /* YDBCKMappingTableInfo.h in Headers */, - 1991CC81AC9EDE528A40D20956D50CC7 /* YDBCKMergeInfo.h in Headers */, - E797E38ED7D4316A6925EFA094108306 /* YDBCKRecord.h in Headers */, - 9FD991C3E8D2762B9C58327C9D6A484D /* YDBCKRecordInfo.h in Headers */, - EC91DA802793F664FC85808CCD572FAD /* YDBCKRecordTableInfo.h in Headers */, + 3C5E76A165F44F325C3C00E881E39661 /* Reachability.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - FFCC79190B73BE9B54D82027A09D28D2 /* Headers */ = { + CDD8F5A347E56655240A4ECF86380EE9 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - E8E73BD2162DCD3E05CE37093E7C12E8 /* Reachability.h in Headers */, + 2F3B2DE28B106D05289470034BB9AD6C /* CLIColor.h in Headers */, + F6F22B2E26DCC4B5548FBD4708320743 /* CocoaLumberjack.h in Headers */, + C26065FF5D38D250982F6D8DBA4F3444 /* DDAbstractDatabaseLogger.h in Headers */, + 1727D018B9ED5A9380BF50DCF0C37B80 /* DDASLLogCapture.h in Headers */, + 175EA2A4ABA2006923240D7EC8FFFE02 /* DDASLLogger.h in Headers */, + 290DB556C6A3129DE66734A7A5A3EF38 /* DDAssertMacros.h in Headers */, + 69C6FEFEFC5E0A97047AB97B1CC43E9C /* DDContextFilterLogFormatter.h in Headers */, + 3D228CCDA86E98948C7C9D9896C6E406 /* DDDispatchQueueLogFormatter.h in Headers */, + D66A2B4A902D76DAA141144FED306C3E /* DDFileLogger+Buffering.h in Headers */, + 83B4A685693348CA8E816BAFE320D771 /* DDFileLogger+Internal.h in Headers */, + 1E726382275BC8BBF14B7F465BB531E0 /* DDFileLogger.h in Headers */, + DCBC1C00A77F9171878F562A8CBE7628 /* DDLegacyMacros.h in Headers */, + B05267BEAE81DF5CD23E7D2886ABC41A /* DDLog+LOGV.h in Headers */, + 6A70A9DB07E7DC569D5BEAD2F7EDEB5B /* DDLog.h in Headers */, + 33CDFA1EE84E7DC9B5B87822E5C2C4C0 /* DDLoggerNames.h in Headers */, + 3DE7AE8F8852470D66F3F6FAA8DC0661 /* DDLogMacros.h in Headers */, + 741C7DFA8EFAE27F37964A47921D3719 /* DDMultiFormatter.h in Headers */, + E82F1809A47CF86538A0B7EC27947504 /* DDOSLogger.h in Headers */, + D1D54EDE6B554012BDBDAFC37969A7D9 /* DDTTYLogger.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F95FEEA4E103BE2AFFCCB4AA7B2FA35F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + E10440C5C4DF379650D0377E4DA7C072 /* NSDate+YapDatabase.h in Headers */, + 57E470C445BC932163DCFA00DE79ECE6 /* NSDictionary+YapDatabase.h in Headers */, + 105704A3C53ADF84D4B0313685EDE712 /* yap_vfs_shim.h in Headers */, + E8C72F613B1217731DA2C429023B9218 /* YapActionable.h in Headers */, + E3C8A942DF2A98B2ACDCF9FBD4E619F4 /* YapActionItem.h in Headers */, + 67B2A2346FB0812CF91BE554A9611C07 /* YapActionItemPrivate.h in Headers */, + 4A3EBC0458684C663B5199FF7D69A851 /* YapBidirectionalCache.h in Headers */, + 8105385C6F935729A382D1163DA1D46A /* YapCache.h in Headers */, + 50AA12A8BEA1A3C12A3CDBA34CAAC78F /* YapCollectionKey.h in Headers */, + CD0137B19E763A0EA4E5EA7354F5EA86 /* YapDatabase-umbrella.h in Headers */, + A9A17D09AA876FEC0D91B6866662428E /* YapDatabase.h in Headers */, + 574BC4B1136F19FFB9C75689343D2A58 /* YapDatabaseActionManager.h in Headers */, + F450D9C5CF776AE293F37DD65F93C321 /* YapDatabaseActionManagerConnection.h in Headers */, + 0455290599B6FDB10E914F52E9C95D9C /* YapDatabaseActionManagerPrivate.h in Headers */, + CE45D5894A572DE5A436D89D21736F0B /* YapDatabaseActionManagerTransaction.h in Headers */, + F9D5F3427A3FEC6C36613C633C626503 /* YapDatabaseAtomic.h in Headers */, + 112BDEED36D06BC569652DDDD87328F6 /* YapDatabaseAutoView.h in Headers */, + 65BFDBC54DB2057906386A2A70E4A1D2 /* YapDatabaseAutoViewConnection.h in Headers */, + B60E4638344C0E33C11AD072344633ED /* YapDatabaseAutoViewPrivate.h in Headers */, + 8DDD6530B86D422169E60CA5530DDD71 /* YapDatabaseAutoViewTransaction.h in Headers */, + D47BAB51F22F2C0F739709FB07BD6C37 /* YapDatabaseCloudCore.h in Headers */, + 9140DD06EB3D97B0CE0B788C78DC810F /* YapDatabaseCloudCoreConnection.h in Headers */, + B54F7445B2EE6D770E78DFCF88D14527 /* YapDatabaseCloudCoreGraph.h in Headers */, + 10D8882DC27F190298B03DA6F1A947E1 /* YapDatabaseCloudCoreGraphPrivate.h in Headers */, + C315405BCBC79A3DE7C9E48B8DA5A52B /* YapDatabaseCloudCoreOperation.h in Headers */, + 31A15E6EF92797469F3FD3745293DA7B /* YapDatabaseCloudCoreOperationPrivate.h in Headers */, + E7E70936B68C139F7B6AAB64199518FC /* YapDatabaseCloudCoreOptions.h in Headers */, + 5E4BFDA82137F69DEBF728E308EA1A5D /* YapDatabaseCloudCorePipeline.h in Headers */, + E681FE4EF87DF0731EC549678923D6C1 /* YapDatabaseCloudCorePipelineDelegate.h in Headers */, + 5C340BE0ED04BE81C59F6E75F3BD09CB /* YapDatabaseCloudCorePipelinePrivate.h in Headers */, + E7F8977F60236B7EB57C008FA7DBD4B6 /* YapDatabaseCloudCorePrivate.h in Headers */, + 336B461993B5AE4E4F02D8A9E2C061F3 /* YapDatabaseCloudCoreTransaction.h in Headers */, + BA0451AF09637EB155B9C16F9D42E559 /* YapDatabaseCloudKit.h in Headers */, + 0BB5E308866867911A175C9E368227FF /* YapDatabaseCloudKitConnection.h in Headers */, + 94E8A72A2124DF003C945F09BAF8794B /* YapDatabaseCloudKitOptions.h in Headers */, + 0C9A5C51F50D56DB065C3B8BD8AA3334 /* YapDatabaseCloudKitPrivate.h in Headers */, + F60246B92E7690402E72E120E7B560F5 /* YapDatabaseCloudKitTransaction.h in Headers */, + 21B165B53A07D4358F1F28A05D2896AE /* YapDatabaseCloudKitTypes.h in Headers */, + 8ACFB343BA81C5D0071E998CF7B8A3DA /* YapDatabaseCollectionConfig.h in Headers */, + 0726DABCC5CA762744486BB4426AC590 /* YapDatabaseConnection.h in Headers */, + 9885D1676C83D2F9930E3BAC5A54B14F /* YapDatabaseConnectionConfig.h in Headers */, + 2E6C3D814FB11B0C5665E771376B7067 /* YapDatabaseConnectionPool.h in Headers */, + 108E0AA385BC6FAEE337068BBC89498A /* YapDatabaseConnectionProxy.h in Headers */, + F6BDE1009EABD2C0C4D1C4BCDF56052A /* YapDatabaseConnectionState.h in Headers */, + 77551EF9284BFC16DA7840DB513D6D09 /* YapDatabaseCrossProcessNotification.h in Headers */, + 88FF133EBBF1850374D40645E4441C1C /* YapDatabaseCrossProcessNotificationConnection.h in Headers */, + 62AA381C431B286443D99E32DB963041 /* YapDatabaseCrossProcessNotificationPrivate.h in Headers */, + 9DF4C344C5B97E2E43FFF058E3FD6521 /* YapDatabaseCrossProcessNotificationTransaction.h in Headers */, + 9E381DA2643D3A13EDC075A821E3AA9F /* YapDatabaseCryptoUtils.h in Headers */, + 65FF48B8295C23017C95D9D579A9F8DF /* YapDatabaseExtension.h in Headers */, + 471B26E621E49600E251FB939271F942 /* YapDatabaseExtensionConnection.h in Headers */, + 1DD2D546EA37FA72E7946A332C1D74AC /* YapDatabaseExtensionPrivate.h in Headers */, + AD9A38D7532B75450AA9638FC71BBD67 /* YapDatabaseExtensionTransaction.h in Headers */, + 1C999211167C77E7875BC6A40297F534 /* YapDatabaseExtensionTypes.h in Headers */, + 62046290801C6EF6072FE9E60BA07BCE /* YapDatabaseFilteredView.h in Headers */, + 0FF4A985A05D260C56B3564156300044 /* YapDatabaseFilteredViewConnection.h in Headers */, + 355E9CD00F1F8FC2B067BCF497618B20 /* YapDatabaseFilteredViewPrivate.h in Headers */, + E9FC0482EB9BC34E4557F0B6E2A82209 /* YapDatabaseFilteredViewTransaction.h in Headers */, + 2F74C4BEBE6390BB2621A809558380BB /* YapDatabaseFilteredViewTypes.h in Headers */, + 7994915536D3AEE77497C17B3B6A4D89 /* YapDatabaseFullTextSearch.h in Headers */, + CE465C82E039E712D09948D9214DA85B /* YapDatabaseFullTextSearchConnection.h in Headers */, + 2C9C057EFECE02206113D4F26D34F5C7 /* YapDatabaseFullTextSearchHandler.h in Headers */, + A6F7999720FE7BFF1776D40418970E87 /* YapDatabaseFullTextSearchPrivate.h in Headers */, + 8D908EA4DB77AB1CCC7EAE7D8164534C /* YapDatabaseFullTextSearchSnippetOptions.h in Headers */, + 227DCD4F3FD597CBEEAB3672B0E9C72C /* YapDatabaseFullTextSearchTransaction.h in Headers */, + 5216C3F8A716C1C833931A0DE5941696 /* YapDatabaseHooks.h in Headers */, + 4463C7AAE776F35F311427C5609AC243 /* YapDatabaseHooksConnection.h in Headers */, + 05D2FF4822C10BDD26120AA39869B60D /* YapDatabaseHooksPrivate.h in Headers */, + 73D033D32795E4DC89D6E31B8A423129 /* YapDatabaseHooksTransaction.h in Headers */, + 4DBC0C164A5D68445556B356D3EAC8FB /* YapDatabaseLogging.h in Headers */, + 917EF67319C13170E9F21628787AB19C /* YapDatabaseManager.h in Headers */, + 4138F98964BA268E73C3DF20074B7E39 /* YapDatabaseManualView.h in Headers */, + 3434EE9E6D5A38914DB6986DB8A7FBCB /* YapDatabaseManualViewConnection.h in Headers */, + 5CDD9A71C8569615DF74252E99010190 /* YapDatabaseManualViewPrivate.h in Headers */, + 8857F8FB76566BF6AC5BCBC88A68BE48 /* YapDatabaseManualViewTransaction.h in Headers */, + F484F89DB24166A4DC4D4AD022114EC6 /* YapDatabaseOptions.h in Headers */, + 13B0C4833EFD971BE0E85F969B2CE0C0 /* YapDatabasePrivate.h in Headers */, + E23DB59F5207CD8F2E5FC37A313A45CC /* YapDatabaseQuery.h in Headers */, + BBABDAE420EEF451A8F4DA7FADE23C6F /* YapDatabaseRelationship.h in Headers */, + 070B13857DB828F6087E7BB97143FBA4 /* YapDatabaseRelationshipConnection.h in Headers */, + EDF84031A5E9362A92EC0634DB3A41BB /* YapDatabaseRelationshipEdge.h in Headers */, + 6185E57CD5C4A3A7C508696C5A0C9D0A /* YapDatabaseRelationshipEdgePrivate.h in Headers */, + B35951BF343E8B4586E22B32FA80D69D /* YapDatabaseRelationshipNode.h in Headers */, + 169FE4511217B3E6161632FF4594A175 /* YapDatabaseRelationshipOptions.h in Headers */, + 467D449E9AAC58FE9611154BED11EF2E /* YapDatabaseRelationshipPrivate.h in Headers */, + F2B3C1BF0C21691E88BF577AB31464EB /* YapDatabaseRelationshipTransaction.h in Headers */, + D6EF127C3CED920C93FC1637D87F773A /* YapDatabaseRTreeIndex.h in Headers */, + 95D2C9C4D48144B7842CF643E7FA571B /* YapDatabaseRTreeIndexConnection.h in Headers */, + 473900701CB74647C5E86526F58D6698 /* YapDatabaseRTreeIndexHandler.h in Headers */, + 8C0DD3C2CEF863811847BD9C8CF7EDA7 /* YapDatabaseRTreeIndexOptions.h in Headers */, + 79191ABCA6649DF3C1C799D011FA2D78 /* YapDatabaseRTreeIndexPrivate.h in Headers */, + 87B971073DA9C2B6F966F1A01CE65186 /* YapDatabaseRTreeIndexSetup.h in Headers */, + 0F4CB0DC8091D952C345720BAC139E6C /* YapDatabaseRTreeIndexTransaction.h in Headers */, + AF39AF5F9749EDA011945DF1BC4101ED /* YapDatabaseSearchQueue.h in Headers */, + 6C6F09805CC43529521A6260ACE11F3F /* YapDatabaseSearchQueuePrivate.h in Headers */, + D228AC9550E52F274E5318D5535E8821 /* YapDatabaseSearchResultsView.h in Headers */, + E8BD6CE35859384914615EE4F88C163C /* YapDatabaseSearchResultsViewConnection.h in Headers */, + 0953ACE9C650E61B92E7D20A1D1DB5D3 /* YapDatabaseSearchResultsViewOptions.h in Headers */, + A1AD4D6F2922542D82990A46C6A9029C /* YapDatabaseSearchResultsViewPrivate.h in Headers */, + 65FBCA858F5E1B339ED3EB9C3033C324 /* YapDatabaseSearchResultsViewTransaction.h in Headers */, + 0589D24CCBB6F1646F235C8887F560C7 /* YapDatabaseSecondaryIndex.h in Headers */, + D8AA60A413BEFCF1E3314D69BC46E9C9 /* YapDatabaseSecondaryIndexConnection.h in Headers */, + E038C01057A8755720AC3FDAA18A0937 /* YapDatabaseSecondaryIndexHandler.h in Headers */, + 67FAB48855DFF514740EDA52F919EF24 /* YapDatabaseSecondaryIndexOptions.h in Headers */, + 5D5DDC7FE9A06101A8F57757F3E12043 /* YapDatabaseSecondaryIndexPrivate.h in Headers */, + D75D8B07E5BFCDB7A9C6A19F352FC471 /* YapDatabaseSecondaryIndexSetup.h in Headers */, + 565DF1ECEA619DD8B43A88D9CC0D5A74 /* YapDatabaseSecondaryIndexTransaction.h in Headers */, + 8D33A1802AE07FE822560BB4FDC8C70C /* YapDatabaseStatement.h in Headers */, + A0D39E46D10834A66A5AEB3A733DEF2E /* YapDatabaseString.h in Headers */, + 3D1F4DABE2F58C444EC184A497774BF7 /* YapDatabaseTransaction.h in Headers */, + 303C7876AFBF9A32E654BEA94FF2173E /* YapDatabaseTypes.h in Headers */, + B1A8DE3141327B530F4496D802B4AA34 /* YapDatabaseView.h in Headers */, + 18F9EAACD771F587A780B67C748134AF /* YapDatabaseViewChange.h in Headers */, + BD17D63EE59D6759F9EAC8BE3E1B5711 /* YapDatabaseViewChangePrivate.h in Headers */, + 9A43687808FED3C2D263519143118FB3 /* YapDatabaseViewConnection.h in Headers */, + 47069FB1BEA1FF09750ED7A82E003AD1 /* YapDatabaseViewLocator.h in Headers */, + 8D017F797E821E1600F560AE10FE06C0 /* YapDatabaseViewMappings.h in Headers */, + 3CF0879C2433D94CB8030DD84FD9594C /* YapDatabaseViewMappingsPrivate.h in Headers */, + 6AB3C5EA4B037B6C1F5FE0E73500EB4A /* YapDatabaseViewOptions.h in Headers */, + B6C02BCC85D8E86C19C394F5164868DF /* YapDatabaseViewPage.h in Headers */, + 6A89F3AABB185EA87709ADA2A53B7FD4 /* YapDatabaseViewPageMetadata.h in Headers */, + 67D41E5BAB54710456CEC31B6EEF0B25 /* YapDatabaseViewPrivate.h in Headers */, + 3D44B4967EA090B1402FAC60975C03F0 /* YapDatabaseViewRangeOptions.h in Headers */, + 7F0094E99446156D6CC8429C022ED64F /* YapDatabaseViewRangeOptionsPrivate.h in Headers */, + 8CCF7E188DA58917F83B406959329B9D /* YapDatabaseViewState.h in Headers */, + BAC40227A0BA0EDAA2E1C5814DD40F45 /* YapDatabaseViewTransaction.h in Headers */, + 8A08F5ED01052A9105BD6FACC8F07A20 /* YapDatabaseViewTypes.h in Headers */, + 4F8E913E9710F2791D06C9AE3E04DEEA /* YapDirtyDictionary.h in Headers */, + 7C8E9E83D4619E6EA6EC14623A5DD693 /* YapManyToManyCache.h in Headers */, + 3DD96AE670B93AD853FBA161FAEBF688 /* YapMemoryTable.h in Headers */, + B19AF3985E562C75530BF4B5622D3962 /* YapMurmurHash.h in Headers */, + 647247082EBE025350D0B159BA08B8A9 /* YapMutationStack.h in Headers */, + 454A3CF60121EEEB5A7450BAD08DDEB9 /* YapNull.h in Headers */, + 219F12ED8D9C0D501EE6414F46A8CC45 /* YapProxyObject.h in Headers */, + C7147A5BB7863385F655DBDA951E550A /* YapProxyObjectPrivate.h in Headers */, + 97B80FB30AFD01BE2DA2D2524F6202B8 /* YapReachability.h in Headers */, + 1C13111A6153D626420FE1846BD3FE4F /* YapRowidSet.h in Headers */, + 276516D2FB1F6D1A28FBB0CA90273099 /* YapSet.h in Headers */, + DA86E98F8FF2A768480EA438D5E6D02D /* YapTouch.h in Headers */, + 39776BD3FA0A1B69A7235C80A309FE01 /* YapWhitelistBlacklist.h in Headers */, + 9489EDB74B9A36EBB00A8445B879CD84 /* YDBCKAttachRequest.h in Headers */, + 9F1C7FA5E771B73DAC867C9926B93BEE /* YDBCKChangeQueue.h in Headers */, + 1A9CCD18DBA12BAE2B63DB315F620D32 /* YDBCKChangeRecord.h in Headers */, + C1105C84BB89067777E345AA9B3FE4DA /* YDBCKChangeSet.h in Headers */, + BF6DDD26FF59AB3EDB479E74A7B10135 /* YDBCKMappingTableInfo.h in Headers */, + B46146D71069405D694389BF78381491 /* YDBCKMergeInfo.h in Headers */, + 735BB14185B6C570839347067E210596 /* YDBCKRecord.h in Headers */, + D50B319EABC5DA7F871D6BFD7E92B47C /* YDBCKRecordInfo.h in Headers */, + 60E1DA617A5A84A268F34A3C68818239 /* YDBCKRecordTableInfo.h in Headers */, + 20C241E2C4C8A32E3526F1BDE0680D93 /* YDBLogMessage.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 52B639C6204FFEAE26068A2BAED3195E /* Reachability */ = { + 93855F3A5D1C4AF19C4A49AA90D4AD14 /* YapDatabase */ = { isa = PBXNativeTarget; - buildConfigurationList = 75BBE323B5D6A4A4EC08686CAF67A2A2 /* Build configuration list for PBXNativeTarget "Reachability" */; + buildConfigurationList = B2C2B606763D71A5106087B3FA3E4F82 /* Build configuration list for PBXNativeTarget "YapDatabase" */; buildPhases = ( - 8E98721C6AB5087931A486266CAC6DBB /* Sources */, - 3442C69E3CD28F1CA09D4E6D61368DD6 /* Frameworks */, - FFCC79190B73BE9B54D82027A09D28D2 /* Headers */, + F95FEEA4E103BE2AFFCCB4AA7B2FA35F /* Headers */, + 1809F2B46C11B466212711645C602F37 /* Sources */, + 19187ABD1A692900D5045215C029ABF8 /* Frameworks */, + 186CED8875F35B788E89FD1F6561C707 /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( ); - name = Reachability; - productName = Reachability; - productReference = 33CD89FD8C0920B81E0179838A4C01A9 /* libReachability.a */; + name = YapDatabase; + productName = YapDatabase; + productReference = 9A514338E2AE7D0F32BB586BEB2C3B73 /* libYapDatabase.a */; productType = "com.apple.product-type.library.static"; }; - A9D9DCCE5442795D0AD9E99D86389328 /* CocoaLumberjack */ = { + CAA047C0F5E4106F3904E8497FA17F97 /* Reachability */ = { isa = PBXNativeTarget; - buildConfigurationList = 8A9B5D67A449F89CF01669103DECD4BC /* Build configuration list for PBXNativeTarget "CocoaLumberjack" */; + buildConfigurationList = D7750FC6B1FA8CEF7FAE7682B1BFCA1F /* Build configuration list for PBXNativeTarget "Reachability" */; buildPhases = ( - 80A45846B04ED12BC4EBA15AE58930E0 /* Sources */, - 9AF1B599A5BCAE0081FACB0CF30D9712 /* Frameworks */, - 42D2C7BF8B1FCBE08D8661C1A6985D1A /* Headers */, + CA790A7B0AE19E9F19F3B078CEC5DD3C /* Headers */, + EDD0FB25B9D0961ACDDE2B7176489BBA /* Sources */, + 515690CDBAFCCE604ADEFFC2534AF781 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); - name = CocoaLumberjack; - productName = CocoaLumberjack; - productReference = 21C4819D3580D952A393EDEBA4B04D7A /* libCocoaLumberjack.a */; + name = Reachability; + productName = Reachability; + productReference = 400FF55D0451E7A8F33A3D0D3E11C1B9 /* libReachability.a */; productType = "com.apple.product-type.library.static"; }; - B1622B5D280EEB94DA1C7B14A0766D0D /* Pods-CloudKitTodo */ = { + CF5F5C956024381E48D6385B2F7C993C /* Pods-CloudKitTodo */ = { isa = PBXNativeTarget; - buildConfigurationList = AF9BB301A4BD81796F0971A8B9F61595 /* Build configuration list for PBXNativeTarget "Pods-CloudKitTodo" */; + buildConfigurationList = 4D1D779E1654F251A2AB3761DF6C1B1D /* Build configuration list for PBXNativeTarget "Pods-CloudKitTodo" */; buildPhases = ( - 56BFB7043BB27B42CEB6ACACDFD2F5CB /* Sources */, - EB5A58141A5222AC4D98822439E40C0C /* Frameworks */, + 13B6469EA34C624BD22A90838A51E4AF /* Headers */, + 29A7DBCF39B1B7A7AED7D693F04AC0E4 /* Sources */, + 0A388FE37A03187F5ADE44D404A29DF2 /* Frameworks */, ); buildRules = ( ); dependencies = ( - E257F9C74E1147F3355349EB997F9FBE /* PBXTargetDependency */, - 0F90DBB57B3B042E27F58E6B8F4E9CEE /* PBXTargetDependency */, - 5F94282D2CDAED13BDD79862C81724AF /* PBXTargetDependency */, + CADDCB02A3D64842200556FE1B049C98 /* PBXTargetDependency */, + 9FA3451B433B6C28D7F47DEEA8C88ABE /* PBXTargetDependency */, + 14764C478B8D8BF98821F1F9B78714D2 /* PBXTargetDependency */, ); name = "Pods-CloudKitTodo"; productName = "Pods-CloudKitTodo"; - productReference = E4BE3A1EED43E987C4DBA575252D7526 /* libPods-CloudKitTodo.a */; + productReference = 2C57EB18FA1D70CF5CBEDE0E158DB8A9 /* libPods-CloudKitTodo.a */; productType = "com.apple.product-type.library.static"; }; - E4124F3A6F096485F1B89CCDB3C06C07 /* YapDatabase */ = { + E95654B155D25890BE8E26081FCA8265 /* CocoaLumberjack */ = { isa = PBXNativeTarget; - buildConfigurationList = 602D7A4AB32630900B79EBD85F5EA26B /* Build configuration list for PBXNativeTarget "YapDatabase" */; + buildConfigurationList = BE14006AC937B304BA6C59A1730855C5 /* Build configuration list for PBXNativeTarget "CocoaLumberjack" */; buildPhases = ( - 3C19EC084C503C62B930D7E831F785E1 /* Sources */, - 1D3C084F0F85EE2BAFC3BB560CA516D8 /* Frameworks */, - CB429CE33015228902142D0DDE4A4725 /* Headers */, + CDD8F5A347E56655240A4ECF86380EE9 /* Headers */, + DF0333BEE6711DD6FA8DD660D1D04D5F /* Sources */, + 26458EBFF491D7CD6BE474328070D21B /* Frameworks */, ); buildRules = ( ); dependencies = ( - 7CC2B277D9FAE61ABED3A660CDD98D8A /* PBXTargetDependency */, ); - name = YapDatabase; - productName = YapDatabase; - productReference = AF353A9860396BF97932F2302684D212 /* libYapDatabase.a */; + name = CocoaLumberjack; + productName = CocoaLumberjack; + productReference = C261436D14052AE3C35F240BCD155CAC /* libCocoaLumberjack.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0900; + LastSwiftUpdateCheck = 1100; + LastUpgradeCheck = 1100; }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 0601C98AA1C8653E886B970FC543EA9E /* Products */; + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = DBBE4C995C8FFE471A253191F49FDBEC /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - A9D9DCCE5442795D0AD9E99D86389328 /* CocoaLumberjack */, - B1622B5D280EEB94DA1C7B14A0766D0D /* Pods-CloudKitTodo */, - 52B639C6204FFEAE26068A2BAED3195E /* Reachability */, - E4124F3A6F096485F1B89CCDB3C06C07 /* YapDatabase */, + E95654B155D25890BE8E26081FCA8265 /* CocoaLumberjack */, + CF5F5C956024381E48D6385B2F7C993C /* Pods-CloudKitTodo */, + CAA047C0F5E4106F3904E8497FA17F97 /* Reachability */, + 93855F3A5D1C4AF19C4A49AA90D4AD14 /* YapDatabase */, ); }; /* End PBXProject section */ +/* Begin PBXShellScriptBuildPhase section */ + 186CED8875F35B788E89FD1F6561C707 /* Copy generated compatibility header */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", + "${PODS_ROOT}/Headers/Public/YapDatabase/YapDatabase.modulemap", + "${PODS_ROOT}/Headers/Public/YapDatabase/YapDatabase-umbrella.h", + ); + name = "Copy generated compatibility header"; + outputFileListPaths = ( + ); + outputPaths = ( + "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", + "${BUILT_PRODUCTS_DIR}/YapDatabase-umbrella.h", + "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/YapDatabase/YapDatabase.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/YapDatabase/YapDatabase-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ - 3C19EC084C503C62B930D7E831F785E1 /* Sources */ = { + 1809F2B46C11B466212711645C602F37 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 7ED187A9B7218773053797DEFB4ADA99 /* NSDate+YapDatabase.m in Sources */, - 82492F58F613AD086C87CF983DB53C2E /* NSDictionary+YapDatabase.m in Sources */, - C4D4C568A82FE1153F74A2362BCD2A8E /* yap_vfs_shim.m in Sources */, - B7843F1C62A8315C47636F7E0FFC5EB5 /* YapActionItem.m in Sources */, - 70E6622C6FB106BB926112D608C17994 /* YapBidirectionalCache.m in Sources */, - F9E26731A5A02211244527D90573E127 /* YapCache.m in Sources */, - D9BB0C4EB7746472049E9FB68C6DE2D9 /* YapCollectionKey.m in Sources */, - B477A1982560D09BA2DA423685C9E3E2 /* YapDatabase-dummy.m in Sources */, - BA489B43C21E748033E3A97C354C2C10 /* YapDatabase.m in Sources */, - 6742454BB3CA67CBF9B36CF9AFE42752 /* YapDatabaseActionManager.m in Sources */, - 1C3549249CBE05CFD7CDDD3879450E9C /* YapDatabaseActionManagerConnection.m in Sources */, - 8E9B64E81738D8455A9E71A1099EF32E /* YapDatabaseActionManagerTransaction.m in Sources */, - 266A0B42393031EA40E1144030D52D1D /* YapDatabaseAutoView.m in Sources */, - 4A914B6C8C14E72D25C86C9C47D4097A /* YapDatabaseAutoViewConnection.m in Sources */, - C5C1153119EC0BEB8B971F41A000B32C /* YapDatabaseAutoViewTransaction.m in Sources */, - 4F21DFB9909C8A0C5AE84B79E75DFB51 /* YapDatabaseCloudCore.m in Sources */, - 001DE700AFB7146E4D14809FEFCD9242 /* YapDatabaseCloudCoreConnection.m in Sources */, - 724BFA77FA82663F85CEABA7A443D0F2 /* YapDatabaseCloudCoreGraph.m in Sources */, - 2AFFCFB22F1727114EA2523A3BAB620F /* YapDatabaseCloudCoreOperation.m in Sources */, - DD8015C4971AFB51435051247AEC2F92 /* YapDatabaseCloudCoreOptions.m in Sources */, - 53D351450078A1CADD4A6B86A1479BD6 /* YapDatabaseCloudCorePipeline.m in Sources */, - 0B250596E816C11461A1C6E71A14D4F3 /* YapDatabaseCloudCoreTransaction.m in Sources */, - 02E59C4C9ECE5F968C43DF660386AFEA /* YapDatabaseCloudKit.m in Sources */, - C5F12C1FA9FDAD4F4A4138E0A665B26F /* YapDatabaseCloudKitConnection.m in Sources */, - C9C62C2E4B7AC5626A3B6EB1DF8B803D /* YapDatabaseCloudKitOptions.m in Sources */, - AD4B5CD9D73C42F0447A9E4FDE0E7E0A /* YapDatabaseCloudKitTransaction.m in Sources */, - B6D5E1C4F9DEF031E04BF8B4422B295B /* YapDatabaseCloudKitTypes.m in Sources */, - B4F9373FCEB2B64F6F2BB684B5284E90 /* YapDatabaseConnection.m in Sources */, - A358081C2FC08A6CCF2819F3DB13FD9F /* YapDatabaseConnectionConfig.m in Sources */, - 248AE1C080EFFF91CBAA57A92B90FFCF /* YapDatabaseConnectionProxy.m in Sources */, - 81F55F206FE9ABAC13F900E8F2CC58B0 /* YapDatabaseConnectionState.m in Sources */, - 20BB3DBE38EA6621A00B7E96E55751D4 /* YapDatabaseCrossProcessNotification.m in Sources */, - 69E51870174116C671027DE3E05C44A0 /* YapDatabaseCrossProcessNotificationConnection.m in Sources */, - 6325EB484119CE481E65F451394BDB6F /* YapDatabaseCrossProcessNotificationTransaction.m in Sources */, - 4A0E56AFDE8B9BC3BEFCD394F411EEC5 /* YapDatabaseExtension.m in Sources */, - 70B92CFC3F0A7BDF69006A3A42D14FB1 /* YapDatabaseExtensionConnection.m in Sources */, - F9CDD0BA13DCBCF0FF15856844540A9D /* YapDatabaseExtensionTransaction.m in Sources */, - AFD841E106EC89DDE360FE9864C4D464 /* YapDatabaseFilteredView.m in Sources */, - C26C9B927FF927B6BA37FB677E31C7E1 /* YapDatabaseFilteredViewConnection.m in Sources */, - 8691B614FF1B2AA34A178FF5EFB5163C /* YapDatabaseFilteredViewTransaction.m in Sources */, - AD4EB9086AAE25FCC546EF700BE1F419 /* YapDatabaseFilteredViewTypes.m in Sources */, - F735395E8C1280254885DB8BE3BB68B0 /* YapDatabaseFullTextSearch.m in Sources */, - 542F6C742A8244EA441E75E0DC4E29A6 /* YapDatabaseFullTextSearchConnection.m in Sources */, - 1A5C64018D55119AAAA52FD80502767B /* YapDatabaseFullTextSearchHandler.m in Sources */, - 0A3CE8AA00DD86E7F6D10684E6ABD3E4 /* YapDatabaseFullTextSearchSnippetOptions.m in Sources */, - E48D88F4149651935FD68415C5C0A3BA /* YapDatabaseFullTextSearchTransaction.m in Sources */, - 939F5671D7DD13796106E8E75813836C /* YapDatabaseHooks.m in Sources */, - 800A9E5DE40F787EF2EE1E01A878CBF2 /* YapDatabaseHooksConnection.m in Sources */, - 99CBE2F87E3B40881C42470E01C0A44E /* YapDatabaseHooksTransaction.m in Sources */, - A30E329B0F588E3C006D85D561693794 /* YapDatabaseLogging.m in Sources */, - AA6721B08746E4001C554F7E74D0DF99 /* YapDatabaseManager.m in Sources */, - 3BC57A042E070BB1C06D599D562EC0BE /* YapDatabaseManualView.m in Sources */, - 9F79EB6B8B76195DBEE6E0CC1112C1F7 /* YapDatabaseManualViewConnection.m in Sources */, - 65303D597D32D1D19492C884C479E348 /* YapDatabaseManualViewTransaction.m in Sources */, - DC739B6E97D2F931CED3D1E2DA49A1FC /* YapDatabaseOptions.m in Sources */, - 25256291DAF2D216650676A38EDF7CE2 /* YapDatabaseQuery.m in Sources */, - 94E47CA354335C2DD763FAD7C247717F /* YapDatabaseRelationship.m in Sources */, - FE20A59B5EF8866EF06BA63781AA18A5 /* YapDatabaseRelationshipConnection.m in Sources */, - 6ED13C2E5B780DBAA9F730A38E3E67F7 /* YapDatabaseRelationshipEdge.m in Sources */, - 37586552FB784D15AAD00BE2469348DF /* YapDatabaseRelationshipOptions.m in Sources */, - 15ACD4668DC7D22E9116E7DCFAE7DCF2 /* YapDatabaseRelationshipTransaction.m in Sources */, - C4B7242B29A127EAFACFAA817F216F13 /* YapDatabaseRTreeIndex.m in Sources */, - D8D20C77359B0111BA2D01B277324D3A /* YapDatabaseRTreeIndexConnection.m in Sources */, - D2A48A87868645324DA4883FAE62B8B7 /* YapDatabaseRTreeIndexHandler.m in Sources */, - A03CD8E448A231DDB5FED188F0CBB969 /* YapDatabaseRTreeIndexOptions.m in Sources */, - D41E72BB2C4CD36D992F5BD7D3577D89 /* YapDatabaseRTreeIndexSetup.m in Sources */, - 00E803CC0BD2C7254C5745E754F96975 /* YapDatabaseRTreeIndexTransaction.m in Sources */, - 8F413B5F51A5A40B18534E480A75B8EF /* YapDatabaseSearchQueue.m in Sources */, - 364847DE22533D896FDAE2FDD18A167E /* YapDatabaseSearchResultsView.m in Sources */, - B2665EE6186C3C0A0A94FA7F04A58280 /* YapDatabaseSearchResultsViewConnection.m in Sources */, - F881A7D8FCDC8E9DEAC826AD58523C68 /* YapDatabaseSearchResultsViewOptions.m in Sources */, - 6FC5271B6386F3D88116B75FA751EC93 /* YapDatabaseSearchResultsViewTransaction.m in Sources */, - 48F036E009EBF6827C3B8768973B0581 /* YapDatabaseSecondaryIndex.m in Sources */, - F4BB2A704D725C18023C2B7A907597A0 /* YapDatabaseSecondaryIndexConnection.m in Sources */, - 9CDFD2DF36178A5C411E5AC7B4B871B9 /* YapDatabaseSecondaryIndexHandler.m in Sources */, - FB5DAE28F5107D573ABE56BB70E12F5B /* YapDatabaseSecondaryIndexOptions.m in Sources */, - B0E27BC44B9327595724EA0F7E55FB29 /* YapDatabaseSecondaryIndexSetup.m in Sources */, - 65542B942EE6D31EA35D5873A13E8228 /* YapDatabaseSecondaryIndexTransaction.m in Sources */, - F0D1215987267F66A6C342D235A4337A /* YapDatabaseStatement.m in Sources */, - 037C30EC7E564054C70C53AE2D904EC3 /* YapDatabaseTransaction.m in Sources */, - 78412BEB2246EF4D653E767A53C3D6BC /* YapDatabaseView.m in Sources */, - 322247B6BE0B2242D5B4160F3DF2AC70 /* YapDatabaseViewChange.m in Sources */, - 27E77B6F6E74E518742AB42595799F58 /* YapDatabaseViewConnection.m in Sources */, - EBC582C6FFC8E3480242DC6F1AD1188F /* YapDatabaseViewLocator.m in Sources */, - 1A5FBDF78FA01F33116D886A962A8032 /* YapDatabaseViewMappings.m in Sources */, - B6CFE17F761178D69134806152C37EA9 /* YapDatabaseViewOptions.m in Sources */, - BFAE04B2A5E62E9B7E4F1750AA45E554 /* YapDatabaseViewPage.mm in Sources */, - 80B5402E4611BCE14C262E11DA6C83A4 /* YapDatabaseViewPageMetadata.m in Sources */, - 2CBE8E54EF9E7E37697DEAF45A7C36AE /* YapDatabaseViewRangeOptions.m in Sources */, - DE48C5A0309B252C6C77DFC6DE9206AF /* YapDatabaseViewState.m in Sources */, - 37FF0439D532645659FAE1A5D7A966C8 /* YapDatabaseViewTransaction.m in Sources */, - 1952C1EC9BD427FBB3B8071F7A5CF569 /* YapDatabaseViewTypes.m in Sources */, - 949927EE866B02C54BD8FEFBB7DD7758 /* YapDirtyDictionary.m in Sources */, - 468D6CBEB3D8271D261DE57FAAC11B1C /* YapManyToManyCache.m in Sources */, - 99D3592A0B6293BE3BA0127534F5D989 /* YapMemoryTable.m in Sources */, - A1FF7AD4742961AE78120557F5330045 /* YapMurmurHash.m in Sources */, - 8BA880328124C06183FFCD41C1FE447E /* YapMutationStack.m in Sources */, - E9D2B486ECA53980B32CDFE0E7353876 /* YapNull.m in Sources */, - 323343CE61EBCFD5976E5500D3AF92E3 /* YapProxyObject.m in Sources */, - 382246AE81E7B276C654D46BFB079F79 /* YapReachability.m in Sources */, - DEC34F974341D15C9A0D62B5109B02B2 /* YapRowidSet.mm in Sources */, - B6713F9DA83C4B0AC9EB799B38C307E3 /* YapSet.m in Sources */, - 3DF2FCCCEE7F2238F4EEE7C0B0E50FFD /* YapTouch.m in Sources */, - DD04BEFD7463D12669C3E3ADA54ABB4C /* YapWhitelistBlacklist.m in Sources */, - 631EDC2660FB87824677C3B321280C0E /* YDBCKAttachRequest.m in Sources */, - 665C33086D0F682574663B916481BB99 /* YDBCKChangeQueue.m in Sources */, - 044DF87348BA19B813959CA53289DF2B /* YDBCKChangeRecord.m in Sources */, - B8CFF32C963A09ABF7618E5FCC247035 /* YDBCKChangeSet.m in Sources */, - 099108ABA56DBB60449DA942B67C08B4 /* YDBCKMappingTableInfo.m in Sources */, - D5C0967E7DE5922AF997E972304B49FC /* YDBCKMergeInfo.m in Sources */, - 2678E7C4E22A76E4805974C9D71C953F /* YDBCKRecord.m in Sources */, - 9B9697D790193E579401570CC5514853 /* YDBCKRecordInfo.m in Sources */, - D7630EC1A2005643EE853AC6B365BDA7 /* YDBCKRecordTableInfo.m in Sources */, + 6BF80908E89B2598D506275EA2EDA0A7 /* NSDate+YapDatabase.m in Sources */, + A11BD31F0614B6073A1185A4D7B570CF /* NSDictionary+YapDatabase.m in Sources */, + 23DABC2F4D2C1B75A565C78711C315D5 /* yap_vfs_shim.m in Sources */, + 21AC76B3908FC3158B0E5425CB0E2542 /* YapActionItem.m in Sources */, + E2EAACBDA615A90CC450C449527C2295 /* YapBidirectionalCache.m in Sources */, + C543C1B1C47C8DEF740D8E820A5FF041 /* YapCache.m in Sources */, + 4763D61BF046C7BBEDCC3680D5F906C3 /* YapCollectionKey.m in Sources */, + CB0DB0A510BF84E8913F97EDA256F5D8 /* YapDatabase-dummy.m in Sources */, + 4EEF41765891BE537E47BF257118BE22 /* YapDatabase.m in Sources */, + A81162ABB7D1443BDF039C3544FF566B /* YapDatabase.swift in Sources */, + 0E5E6B7148F2BAEFC377359FB21EA963 /* YapDatabaseActionManager.m in Sources */, + CD148E92B84F62E7F0B99C96245830DA /* YapDatabaseActionManager.swift in Sources */, + A8D752FE7AD403291D9773F63FEF7388 /* YapDatabaseActionManagerConnection.m in Sources */, + 9F45895661302A5421E485F75B4F0617 /* YapDatabaseActionManagerTransaction.m in Sources */, + ADB4E25D07E41AF6A19B47DE2327C4A5 /* YapDatabaseAutoView.m in Sources */, + 5D954669F8DD8DB51CDF6BB27ABFAE6B /* YapDatabaseAutoView.swift in Sources */, + C3E94E3060D03C63F12062B9818A1967 /* YapDatabaseAutoViewConnection.m in Sources */, + 0331E3ADE9E2834A47A0F56FE9601BB0 /* YapDatabaseAutoViewTransaction.m in Sources */, + E85AB1A472C42E3240C6294F049AF60C /* YapDatabaseCloudCore.m in Sources */, + A9FB6891449064C5622548B449DD5609 /* YapDatabaseCloudCore.swift in Sources */, + 9BFCB14468080CF76A0F3DA228D312E4 /* YapDatabaseCloudCoreConnection.m in Sources */, + D6450CB5BD23444530AD2838092F1EE7 /* YapDatabaseCloudCoreGraph.m in Sources */, + BD99F442BFB1D3CB170E3CEF9C231DFC /* YapDatabaseCloudCoreOperation.m in Sources */, + 1123C3C584766C18AD7DE6FCB5CEDF70 /* YapDatabaseCloudCoreOptions.m in Sources */, + 35C2E913F53C1CA3F3FDF274620F2AAA /* YapDatabaseCloudCorePipeline.m in Sources */, + C5277ED1F62E3A00373CCD6FF31A07BA /* YapDatabaseCloudCoreTransaction.m in Sources */, + 491FB8D85CA88CFFC76C16A7A759D55A /* YapDatabaseCloudKit.m in Sources */, + D67D56FFABA32210AD1F60748E641041 /* YapDatabaseCloudKit.swift in Sources */, + 204821E59E5AA3BDD6897833E911501D /* YapDatabaseCloudKitConnection.m in Sources */, + EF31056A82BC651812CA76DD33EF4B88 /* YapDatabaseCloudKitOptions.m in Sources */, + 162D7B64ABBD83B8CB4727B7CE212054 /* YapDatabaseCloudKitTransaction.m in Sources */, + CD24DFBED88E5FF875B8181AD570F967 /* YapDatabaseCloudKitTypes.m in Sources */, + 33A58DB8AB479141B8F380B34528EF69 /* YapDatabaseCollectionConfig.m in Sources */, + FE1E7A533C9756C1A46E4F05143D3A33 /* YapDatabaseConnection.m in Sources */, + F71BA8A4CDA9B128BBB32AD16A6F1ED2 /* YapDatabaseConnectionConfig.m in Sources */, + 864A998C4BF4BF9F4681FD66C912A1EE /* YapDatabaseConnectionPool.m in Sources */, + FF71919E6DCF509691F4C96F7CE9E1E8 /* YapDatabaseConnectionProxy.m in Sources */, + 4BBAE455FC953B11DEA7305990C097F3 /* YapDatabaseConnectionState.m in Sources */, + 504D7DFC41E59BA3F628AB23F09BEDEE /* YapDatabaseCrossProcessNotification.m in Sources */, + 91777677D3AF24D1CF868E2092636DB6 /* YapDatabaseCrossProcessNotification.swift in Sources */, + 771A9A874D06B190834DE9BB1903E0F4 /* YapDatabaseCrossProcessNotificationConnection.m in Sources */, + DE3057A1B53E982CF4ED7DFD61725767 /* YapDatabaseCrossProcessNotificationTransaction.m in Sources */, + CBC3A2F154750D8738B7C5A7B8832EC0 /* YapDatabaseCryptoUtils.m in Sources */, + 0621368E65EEE4FCA5662E0D41A2CDCF /* YapDatabaseExtension.m in Sources */, + 6A30DC5C1A5B13F905B391B2E419A117 /* YapDatabaseExtensionConnection.m in Sources */, + 4ACE06C62A332F9585C41DB5A7887937 /* YapDatabaseExtensionTransaction.m in Sources */, + 0BE38C190FF38E708A48150CB8A74BA9 /* YapDatabaseFilteredView.m in Sources */, + 020C9F6A35986806E9E26B896D3889E8 /* YapDatabaseFilteredView.swift in Sources */, + 0B97CE7BB19B2E30339CE0E7FD781EA2 /* YapDatabaseFilteredViewConnection.m in Sources */, + EF1E390772FC2A6B2EE246B1F7B34AF6 /* YapDatabaseFilteredViewTransaction.m in Sources */, + 0F8D5A885D656E9A4C914661F8A691BB /* YapDatabaseFilteredViewTypes.m in Sources */, + 83E6D0049EC90E20BC69ED067E479D2D /* YapDatabaseFullTextSearch.m in Sources */, + 35BC91C536194515944FBBC49C70FFD1 /* YapDatabaseFullTextSearch.swift in Sources */, + CEE0480995DACFA02E83D145BC73C802 /* YapDatabaseFullTextSearchConnection.m in Sources */, + 7CD28B1D4B041867300214B6A020F375 /* YapDatabaseFullTextSearchHandler.m in Sources */, + 0C81BF1199916C3EB16CED0620EF0FCA /* YapDatabaseFullTextSearchSnippetOptions.m in Sources */, + 1DCF988E442B0C8D15EC0D4A327B78DB /* YapDatabaseFullTextSearchTransaction.m in Sources */, + B28EA53A343C3B1FBFAEC20C1822A052 /* YapDatabaseHooks.m in Sources */, + 46606028159823EAA48510E86752943B /* YapDatabaseHooks.swift in Sources */, + 9B9953DB81A224B2B67E49F921532DCB /* YapDatabaseHooksConnection.m in Sources */, + E48CEF1B9DE9AF53530A8F92E59E7513 /* YapDatabaseHooksTransaction.m in Sources */, + 42F9F5016EED49D8376295AFE55CD0A0 /* YapDatabaseManager.m in Sources */, + EB4310B3A9E9EAC36D0419002ECA0873 /* YapDatabaseManualView.m in Sources */, + E76D6DE447A25927B591FF6317585AB1 /* YapDatabaseManualView.swift in Sources */, + FECAEF6A137857A10F287369908501D2 /* YapDatabaseManualViewConnection.m in Sources */, + 5F11C7698B1D6EBE01EDF4E644F98D8F /* YapDatabaseManualViewTransaction.m in Sources */, + BF8673C575D6C7F1E7BD6203A16C61D9 /* YapDatabaseOptions.m in Sources */, + 44505D7D68C840565581A4923618A063 /* YapDatabaseQuery.m in Sources */, + D5CB38BE053D8688FC6E7A9F22DCE1B2 /* YapDatabaseQuery.swift in Sources */, + 0D913C7F7F95929838E6376B78755CA0 /* YapDatabaseRelationship.m in Sources */, + C310CE7F4FC5E6145490BACAE866364A /* YapDatabaseRelationship.swift in Sources */, + 4CD17076C43520A151F9D2B619DC4AC2 /* YapDatabaseRelationshipConnection.m in Sources */, + A20F6EC08E833D0B354BEB174A59DA9C /* YapDatabaseRelationshipEdge.m in Sources */, + E5D89D8EE81E74C00FC39629A4B2AC96 /* YapDatabaseRelationshipOptions.m in Sources */, + 361AB83E6BE5C1524DAAA4A800227BC0 /* YapDatabaseRelationshipTransaction.m in Sources */, + 0AFB6CDE61DAF0B93E03EA946B3DC718 /* YapDatabaseRTreeIndex.m in Sources */, + A157C23D8CE869DCB8FE83FB059A6116 /* YapDatabaseRTreeIndex.swift in Sources */, + 25D1C9154A2135A5E06A2E05627C8B90 /* YapDatabaseRTreeIndexConnection.m in Sources */, + 6429CE53C9F0D20B117D6AEDAFB997B8 /* YapDatabaseRTreeIndexHandler.m in Sources */, + 45EC01E9BF4154A8035F926D7A37E2FC /* YapDatabaseRTreeIndexOptions.m in Sources */, + 0C332AC9A2448CBE301C17F076D8313D /* YapDatabaseRTreeIndexSetup.m in Sources */, + 17B6230BBABD3B34906E0D2548EF3EA6 /* YapDatabaseRTreeIndexTransaction.m in Sources */, + D057D91F30AC60ABE2916C86568CE705 /* YapDatabaseSearchQueue.m in Sources */, + 311F3E58DCAC90BB31EE50FD3EF5C4A8 /* YapDatabaseSearchResultsView.m in Sources */, + FC7FA22358D6F36977BB7B2DAD1AAF4E /* YapDatabaseSearchResultsView.swift in Sources */, + 21B919130962BCD60595A4F9C4E82BA9 /* YapDatabaseSearchResultsViewConnection.m in Sources */, + C7C1A5A0EFD29E67BB4E12725C45F72B /* YapDatabaseSearchResultsViewOptions.m in Sources */, + 060A74C03E0D32F15B3DB0CF65E30612 /* YapDatabaseSearchResultsViewTransaction.m in Sources */, + 3A6F4CA44A821C7310C8ADF962BBB98D /* YapDatabaseSecondaryIndex.m in Sources */, + 292F8D03A227E884F6A990D7E1DD7B9F /* YapDatabaseSecondaryIndex.swift in Sources */, + FA2FEBDF6F5C9E3C04586AB9D056FEBC /* YapDatabaseSecondaryIndexConnection.m in Sources */, + A08CCC9F13A2F77F4607C1BD844ECFDF /* YapDatabaseSecondaryIndexHandler.m in Sources */, + 59F1201291C7466CA23484CB239F8E6A /* YapDatabaseSecondaryIndexOptions.m in Sources */, + 61F5D38118CBAE9583FCE349C36DFB52 /* YapDatabaseSecondaryIndexSetup.m in Sources */, + 727101A6CBB36A899A719C950A33F4C7 /* YapDatabaseSecondaryIndexTransaction.m in Sources */, + B8D9C1DC3BC9125DFC8D3C25C8F16BCC /* YapDatabaseStatement.m in Sources */, + 70F7F1C764F451748B28D1248BBD4E84 /* YapDatabaseTransaction.m in Sources */, + C0A335B07D9B4FCA7A2D01EC6D3A539F /* YapDatabaseView.m in Sources */, + 3B2D61A826EBD3DD42DFFF03668986FA /* YapDatabaseView.swift in Sources */, + A3929BB1E3D1D60BB9DEF6B18C964934 /* YapDatabaseViewChange.m in Sources */, + 738ACC5B103C4F714BADD5A294F0BDEF /* YapDatabaseViewConnection.m in Sources */, + 9767650AA24FD63F69F43D4883E19929 /* YapDatabaseViewLocator.m in Sources */, + FB7E7EA641716EEF5E6217C603EA418F /* YapDatabaseViewMappings.m in Sources */, + 7E85D9D40D57BE8FAE3667CC213F3B34 /* YapDatabaseViewOptions.m in Sources */, + 122F31E78CF7F51F6FD83166A60FE1AB /* YapDatabaseViewPage.mm in Sources */, + DD0BFA2E94B428A673C43DD27DB13F33 /* YapDatabaseViewPageMetadata.m in Sources */, + 5827EFC5802620BF0B01F6588EA201AC /* YapDatabaseViewRangeOptions.m in Sources */, + C0FA733770F0A1C5CD5F4A2514CCDB39 /* YapDatabaseViewState.m in Sources */, + FF7A857339A63C01C85FA689596B167A /* YapDatabaseViewTransaction.m in Sources */, + 783A08B1AC272A4C4CE22F6F90C6476E /* YapDatabaseViewTypes.m in Sources */, + D25C6447A3F7AE9D64C82C098CC87132 /* YapDirtyDictionary.m in Sources */, + 3CE2288EF0EF53194EDB013DF14ED4F7 /* YapManyToManyCache.m in Sources */, + D9774DEA8A469F0A33ABF659F86A87E5 /* YapMemoryTable.m in Sources */, + B73892AC9F3A62727828AD2BCAF4C025 /* YapMurmurHash.m in Sources */, + 6EB05E53259CABC446ED435FDBA2D3BB /* YapMutationStack.m in Sources */, + 6C532C80A187DE9CE9489BEBDD34C2D7 /* YapNull.m in Sources */, + BDBF817D6C7AA3336CF757C8B6936800 /* YapProxyObject.m in Sources */, + 34A8E0A27683E2E2C755D59831D2C539 /* YapReachability.m in Sources */, + 89721261FD096FB012C1B20E01C85C51 /* YapRowidSet.mm in Sources */, + 609057BDA0B350A1218D036B677B0550 /* YapSet.m in Sources */, + D81C96BC31629F0F96EBF08A510E6ED7 /* YapTouch.m in Sources */, + 058EDEB4CB2454300F526414816D83D6 /* YapWhitelistBlacklist.m in Sources */, + 4C3AADADFFC16146D0CE7E3BE399E74F /* YDBCKAttachRequest.m in Sources */, + 0121D65F3DDE935862626618D32D1AB0 /* YDBCKChangeQueue.m in Sources */, + 0536AEBBA5CED76809B54E7A178B4D5E /* YDBCKChangeRecord.m in Sources */, + A60D6EC216E2A3C54AC12DF991AFAA82 /* YDBCKChangeSet.m in Sources */, + FD2FF86027DB2A2893B29A011C2D34E7 /* YDBCKMappingTableInfo.m in Sources */, + 7B6B17261259C68322EB6C703C1FA6BE /* YDBCKMergeInfo.m in Sources */, + 1385779E0FBA4AA142DADE272F522D96 /* YDBCKRecord.m in Sources */, + CF5572345349DA0CEAF8398C5AA70ED7 /* YDBCKRecordInfo.m in Sources */, + 87393848AE06BA0E4737BD36C5A7FDC6 /* YDBCKRecordTableInfo.m in Sources */, + DED9BF10D391B01CBC905F9AA0941DBB /* YDBLogMessage.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 56BFB7043BB27B42CEB6ACACDFD2F5CB /* Sources */ = { + 29A7DBCF39B1B7A7AED7D693F04AC0E4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9506F6DEC065E50C877D284B1ADD782B /* Pods-CloudKitTodo-dummy.m in Sources */, + 9DB3585AD1599549933E82F6AC46D1DD /* Pods-CloudKitTodo-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 80A45846B04ED12BC4EBA15AE58930E0 /* Sources */ = { + DF0333BEE6711DD6FA8DD660D1D04D5F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 95C5D891AB51E21A90472391D7C1C7A9 /* CocoaLumberjack-dummy.m in Sources */, - 742331B18E237BC0872FF0F21494F79B /* DDAbstractDatabaseLogger.m in Sources */, - E8D868301A1255CB5444135FD1A90A6A /* DDASLLogCapture.m in Sources */, - 488391F71FFEC819796C437A754BCC90 /* DDASLLogger.m in Sources */, - 767A7E255A89A4BAFC49814322F6FC39 /* DDContextFilterLogFormatter.m in Sources */, - EF3D8A5B9DFFD9312291E9997FF63E28 /* DDDispatchQueueLogFormatter.m in Sources */, - 38429612AFDFAB5B31C02D46018656C9 /* DDFileLogger.m in Sources */, - 9EEAFB8E4255CFFD7FF0746FB504C881 /* DDLog.m in Sources */, - 84494955C324A7BC1C3F150A6E2B870C /* DDMultiFormatter.m in Sources */, - 377F8D664706BBAD590AF4B128596B0C /* DDOSLogger.m in Sources */, - ACB55BC601F23C3CC5D90B87DB041BED /* DDTTYLogger.m in Sources */, + 4DC1EB07CAF6767118317408E62B60F0 /* CLIColor.m in Sources */, + 8383FF76CAAF25C8FE900AEC6EBBAEF8 /* CocoaLumberjack-dummy.m in Sources */, + E5B03E21C98E1E5DAD82764FC937A64C /* DDAbstractDatabaseLogger.m in Sources */, + D934026649CD29EE3938E5AF83D5BFF4 /* DDASLLogCapture.m in Sources */, + 2F7D25EA29E4167F1CED2641C0B06F01 /* DDASLLogger.m in Sources */, + 23264922C2BC9F97BAD4396AA4E911DC /* DDContextFilterLogFormatter.m in Sources */, + 929FF13C69854C325174F6367DF5E26E /* DDDispatchQueueLogFormatter.m in Sources */, + 6940EC88D79410C4B1F49B80483614EA /* DDFileLogger+Buffering.m in Sources */, + A3EC42FD150B91EAAE2B89E1239134E7 /* DDFileLogger.m in Sources */, + 225954BE08C2A11B58527BD7E486E224 /* DDLog.m in Sources */, + A61FC4A9CCAA7751D872043029A59D88 /* DDLoggerNames.m in Sources */, + 815A2D6583DADE9F65065C3AFE95E834 /* DDMultiFormatter.m in Sources */, + FA646634BBD8223C695F082C0D9FC097 /* DDOSLogger.m in Sources */, + CC89B598FE2D4105A8D3AA7E2B9BA8F4 /* DDTTYLogger.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8E98721C6AB5087931A486266CAC6DBB /* Sources */ = { + EDD0FB25B9D0961ACDDE2B7176489BBA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1362ACD1F0C5F810496D1CB754770E4D /* Reachability-dummy.m in Sources */, - 67C86F889849F434746A0526C9B51D3E /* Reachability.m in Sources */, + BDFC6900D7B2751F924DC99F79DBF8ED /* Reachability-dummy.m in Sources */, + 2ED1EDB1752822852CD42DA3D87CD694 /* Reachability.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 0F90DBB57B3B042E27F58E6B8F4E9CEE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Reachability; - target = 52B639C6204FFEAE26068A2BAED3195E /* Reachability */; - targetProxy = FDCB4FF4DA1FA2F55D9504A7FF4F8546 /* PBXContainerItemProxy */; - }; - 5F94282D2CDAED13BDD79862C81724AF /* PBXTargetDependency */ = { + 14764C478B8D8BF98821F1F9B78714D2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = YapDatabase; - target = E4124F3A6F096485F1B89CCDB3C06C07 /* YapDatabase */; - targetProxy = F6DA5FCA07EC0C95DCAA61A5496F81B5 /* PBXContainerItemProxy */; + target = 93855F3A5D1C4AF19C4A49AA90D4AD14 /* YapDatabase */; + targetProxy = E11C873C4278F81E890D5FF114324F3C /* PBXContainerItemProxy */; }; - 7CC2B277D9FAE61ABED3A660CDD98D8A /* PBXTargetDependency */ = { + 9FA3451B433B6C28D7F47DEEA8C88ABE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = CocoaLumberjack; - target = A9D9DCCE5442795D0AD9E99D86389328 /* CocoaLumberjack */; - targetProxy = A6C0411B710435191620A64FC983F0E2 /* PBXContainerItemProxy */; + name = Reachability; + target = CAA047C0F5E4106F3904E8497FA17F97 /* Reachability */; + targetProxy = 09D524E542E3998F5EFD59B0DD20D898 /* PBXContainerItemProxy */; }; - E257F9C74E1147F3355349EB997F9FBE /* PBXTargetDependency */ = { + CADDCB02A3D64842200556FE1B049C98 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = CocoaLumberjack; - target = A9D9DCCE5442795D0AD9E99D86389328 /* CocoaLumberjack */; - targetProxy = 1DD02BFB175EC55DD68EAFB0D44BB63F /* PBXContainerItemProxy */; + target = E95654B155D25890BE8E26081FCA8265 /* CocoaLumberjack */; + targetProxy = 55FA18B1A11C91782AC46A52358E0B6D /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 0FC73352B13BE82BDC5B192DE6FE9B70 /* Release */ = { + 11BC9283A528CD4E7F8AF098D3DFD8BA /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3837FA37FCAE0A8BD14C4F71894234F0 /* CocoaLumberjack.xcconfig */; + baseConfigurationReference = 875F31FBAC2CF6B24AE493FB10D0D2D2 /* YapDatabase.xcconfig */; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/CocoaLumberjack/CocoaLumberjack-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; + GCC_PREFIX_HEADER = "Target Support Files/YapDatabase/YapDatabase-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MODULEMAP_FILE = Headers/Public/YapDatabase/YapDatabase.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_MODULE_NAME = YapDatabase; + PRODUCT_NAME = YapDatabase; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; name = Release; }; - 601A2443ADEF30E7D4B98FAA7A99DDDD /* Release */ = { + 196DFA3E4A09A28224918543529A1885 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + 3C2150AF9DD854E642DF519463E7323C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A808CA87693ABF1782B9FBA11B1750D2 /* YapDatabase.xcconfig */; + baseConfigurationReference = 2E0A60B2E952FAA7E7F3F9159EB5E988 /* CocoaLumberjack.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/YapDatabase/YapDatabase-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/CocoaLumberjack/CocoaLumberjack-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_MODULE_NAME = CocoaLumberjack; + PRODUCT_NAME = CocoaLumberjack; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; }; - name = Release; + name = Debug; }; - 6F8D92433D634A6B9E98A3910ABC4803 /* Debug */ = { + 45E85DFAB03256379413326A65D5BCB5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 35ED255FA0C08CD23F3B60C17444197E /* Reachability.xcconfig */; + baseConfigurationReference = 2E0A60B2E952FAA7E7F3F9159EB5E988 /* CocoaLumberjack.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Reachability/Reachability-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/CocoaLumberjack/CocoaLumberjack-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_MODULE_NAME = CocoaLumberjack; + PRODUCT_NAME = CocoaLumberjack; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - 750D091B9996852086DB9848F3EDD4D1 /* Debug */ = { + 72EBAAD5A0EFA2D6728DE7E742A84B1C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A6295F37EA630F688AAE90851275D0C2 /* Pods-CloudKitTodo.debug.xcconfig */; + baseConfigurationReference = CEAE0BA40F7C6130CF1E88F4116A3625 /* Pods-CloudKitTodo.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; IPHONEOS_DEPLOYMENT_TARGET = 10.0; MACH_O_TYPE = staticlib; - MTL_ENABLE_DEBUG_INFO = YES; + MODULEMAP_FILE = "Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 7754A7B6C6DFDFEB0967AC8534340154 /* Debug */ = { + 85179D61A823C15EBEDE375E61731263 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A808CA87693ABF1782B9FBA11B1750D2 /* YapDatabase.xcconfig */; + baseConfigurationReference = 33DF2D1519A2BB95E52443791B6D5B29 /* Reachability.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/Reachability/Reachability-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = Reachability; + PRODUCT_NAME = Reachability; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9DCBE49900E65A2447661B580CBC1E58 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 875F31FBAC2CF6B24AE493FB10D0D2D2 /* YapDatabase.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; GCC_PREFIX_HEADER = "Target Support Files/YapDatabase/YapDatabase-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MODULEMAP_FILE = Headers/Public/YapDatabase/YapDatabase.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_MODULE_NAME = YapDatabase; + PRODUCT_NAME = YapDatabase; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 94AA18877C5944210B217C2738172BE5 /* Release */ = { + A26081984499868E52C81B028654CC22 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 35ED255FA0C08CD23F3B60C17444197E /* Reachability.xcconfig */; + baseConfigurationReference = 33DF2D1519A2BB95E52443791B6D5B29 /* Reachability.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; GCC_PREFIX_HEADER = "Target Support Files/Reachability/Reachability-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_MODULE_NAME = Reachability; + PRODUCT_NAME = Reachability; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; name = Release; }; - 9BFC9E4A7AAD7A607ACE06D95A401A5A /* Debug */ = { + A9F0F58B455031EA7400EB6C53041BA0 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 24AA268C2DCCDD348764DCDB67D04DDA /* Pods-CloudKitTodo.release.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; IPHONEOS_DEPLOYMENT_TARGET = 10.0; - ONLY_ACTIVE_ARCH = YES; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SYMROOT = "${SRCROOT}/../build"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - C03B8870130C98D1B02B59D003687524 /* Release */ = { + B01D14FDC83DCF9D4BE53066BEA96D05 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "POD_CONFIGURATION_RELEASE=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 10.0; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - C4CCECD787E88B12E81B58709C3BC78B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 20BA54A0F2D8F81B3F76559A6EEE912D /* Pods-CloudKitTodo.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MACH_O_TYPE = staticlib; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; }; name = Release; }; - CC329648826AF935894DAEE4E0BA798C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3837FA37FCAE0A8BD14C4F71894234F0 /* CocoaLumberjack.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/CocoaLumberjack/CocoaLumberjack-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - }; - name = Debug; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9BFC9E4A7AAD7A607ACE06D95A401A5A /* Debug */, - C03B8870130C98D1B02B59D003687524 /* Release */, + 196DFA3E4A09A28224918543529A1885 /* Debug */, + B01D14FDC83DCF9D4BE53066BEA96D05 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 602D7A4AB32630900B79EBD85F5EA26B /* Build configuration list for PBXNativeTarget "YapDatabase" */ = { + 4D1D779E1654F251A2AB3761DF6C1B1D /* Build configuration list for PBXNativeTarget "Pods-CloudKitTodo" */ = { isa = XCConfigurationList; buildConfigurations = ( - 7754A7B6C6DFDFEB0967AC8534340154 /* Debug */, - 601A2443ADEF30E7D4B98FAA7A99DDDD /* Release */, + 72EBAAD5A0EFA2D6728DE7E742A84B1C /* Debug */, + A9F0F58B455031EA7400EB6C53041BA0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 75BBE323B5D6A4A4EC08686CAF67A2A2 /* Build configuration list for PBXNativeTarget "Reachability" */ = { + B2C2B606763D71A5106087B3FA3E4F82 /* Build configuration list for PBXNativeTarget "YapDatabase" */ = { isa = XCConfigurationList; buildConfigurations = ( - 6F8D92433D634A6B9E98A3910ABC4803 /* Debug */, - 94AA18877C5944210B217C2738172BE5 /* Release */, + 9DCBE49900E65A2447661B580CBC1E58 /* Debug */, + 11BC9283A528CD4E7F8AF098D3DFD8BA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8A9B5D67A449F89CF01669103DECD4BC /* Build configuration list for PBXNativeTarget "CocoaLumberjack" */ = { + BE14006AC937B304BA6C59A1730855C5 /* Build configuration list for PBXNativeTarget "CocoaLumberjack" */ = { isa = XCConfigurationList; buildConfigurations = ( - CC329648826AF935894DAEE4E0BA798C /* Debug */, - 0FC73352B13BE82BDC5B192DE6FE9B70 /* Release */, + 3C2150AF9DD854E642DF519463E7323C /* Debug */, + 45E85DFAB03256379413326A65D5BCB5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - AF9BB301A4BD81796F0971A8B9F61595 /* Build configuration list for PBXNativeTarget "Pods-CloudKitTodo" */ = { + D7750FC6B1FA8CEF7FAE7682B1BFCA1F /* Build configuration list for PBXNativeTarget "Reachability" */ = { isa = XCConfigurationList; buildConfigurations = ( - 750D091B9996852086DB9848F3EDD4D1 /* Debug */, - C4CCECD787E88B12E81B58709C3BC78B /* Release */, + 85179D61A823C15EBEDE375E61731263 /* Debug */, + A26081984499868E52C81B028654CC22 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; } diff --git a/Examples/CloudKitTodo/Pods/Target Support Files/CocoaLumberjack/CocoaLumberjack.xcconfig b/Examples/CloudKitTodo/Pods/Target Support Files/CocoaLumberjack/CocoaLumberjack.xcconfig index 95f454f4a..e1e0fa2d0 100644 --- a/Examples/CloudKitTodo/Pods/Target Support Files/CocoaLumberjack/CocoaLumberjack.xcconfig +++ b/Examples/CloudKitTodo/Pods/Target Support Files/CocoaLumberjack/CocoaLumberjack.xcconfig @@ -1,9 +1,10 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/CocoaLumberjack" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/Reachability" "${PODS_ROOT}/Headers/Public/YapDatabase" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/CocoaLumberjack" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/CocoaLumberjack PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-acknowledgements.markdown b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-acknowledgements.markdown index 9f5d372b0..0430d37a7 100644 --- a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-acknowledgements.markdown +++ b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-acknowledgements.markdown @@ -3,24 +3,21 @@ This application makes use of the following third party libraries: ## CocoaLumberjack -Software License Agreement (BSD License) +BSD 3-Clause License -Copyright (c) 2010-2016, Deusty, LLC +Copyright (c) 2010-2020, Deusty, LLC All rights reserved. -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -* Neither the name of Deusty nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of Deusty, LLC. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of Deusty nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission of Deusty, LLC. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## Reachability diff --git a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-acknowledgements.plist b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-acknowledgements.plist index fbc4f75dd..3aaf42596 100644 --- a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-acknowledgements.plist +++ b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-acknowledgements.plist @@ -14,24 +14,21 @@ FooterText - Software License Agreement (BSD License) + BSD 3-Clause License -Copyright (c) 2010-2016, Deusty, LLC +Copyright (c) 2010-2020, Deusty, LLC All rights reserved. -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -* Neither the name of Deusty nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of Deusty, LLC. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +3. Neither the name of Deusty nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission of Deusty, LLC. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + License BSD Title diff --git a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-umbrella.h b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-umbrella.h new file mode 100644 index 000000000..af36078f2 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_CloudKitTodoVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_CloudKitTodoVersionString[]; + diff --git a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.debug.xcconfig b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.debug.xcconfig index 3339552b9..f0b0b9d0b 100644 --- a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.debug.xcconfig +++ b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.debug.xcconfig @@ -1,9 +1,13 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/Reachability" "${PODS_ROOT}/Headers/Public/YapDatabase" -LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack" "$PODS_CONFIGURATION_BUILD_DIR/Reachability" "$PODS_CONFIGURATION_BUILD_DIR/YapDatabase" -OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CocoaLumberjack" -isystem "${PODS_ROOT}/Headers/Public/Reachability" -isystem "${PODS_ROOT}/Headers/Public/YapDatabase" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase/YapDatabase.modulemap" $(inherited) -DYAP_STANDARD_SQLITE OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaLumberjack" -l"Reachability" -l"YapDatabase" -l"c++" -l"sqlite3" -framework "SystemConfiguration" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase/YapDatabase.modulemap" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase" +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.modulemap b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.modulemap new file mode 100644 index 000000000..ea3449736 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.modulemap @@ -0,0 +1,6 @@ +module Pods_CloudKitTodo { + umbrella header "Pods-CloudKitTodo-umbrella.h" + + export * + module * { export * } +} diff --git a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.release.xcconfig b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.release.xcconfig index 3339552b9..f0b0b9d0b 100644 --- a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.release.xcconfig +++ b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.release.xcconfig @@ -1,9 +1,13 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/Reachability" "${PODS_ROOT}/Headers/Public/YapDatabase" -LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack" "$PODS_CONFIGURATION_BUILD_DIR/Reachability" "$PODS_CONFIGURATION_BUILD_DIR/YapDatabase" -OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CocoaLumberjack" -isystem "${PODS_ROOT}/Headers/Public/Reachability" -isystem "${PODS_ROOT}/Headers/Public/YapDatabase" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase/YapDatabase.modulemap" $(inherited) -DYAP_STANDARD_SQLITE OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaLumberjack" -l"Reachability" -l"YapDatabase" -l"c++" -l"sqlite3" -framework "SystemConfiguration" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase/YapDatabase.modulemap" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase" +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Examples/CloudKitTodo/Pods/Target Support Files/Reachability/Reachability.xcconfig b/Examples/CloudKitTodo/Pods/Target Support Files/Reachability/Reachability.xcconfig index 97ea5ffab..7b7febc37 100644 --- a/Examples/CloudKitTodo/Pods/Target Support Files/Reachability/Reachability.xcconfig +++ b/Examples/CloudKitTodo/Pods/Target Support Files/Reachability/Reachability.xcconfig @@ -1,10 +1,10 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Reachability +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Reachability GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Reachability" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/Reachability" "${PODS_ROOT}/Headers/Public/YapDatabase" -OTHER_LDFLAGS = -framework "SystemConfiguration" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Reachability" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Reachability" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/Reachability PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase/YapDatabase-umbrella.h b/Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase/YapDatabase-umbrella.h new file mode 100644 index 000000000..25611033a --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase/YapDatabase-umbrella.h @@ -0,0 +1,122 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "YapDatabase.h" +#import "YapDatabaseConnection.h" +#import "YapDatabaseOptions.h" +#import "YapDatabaseTransaction.h" +#import "YapDatabaseTypes.h" +#import "YapBidirectionalCache.h" +#import "YapCache.h" +#import "YapCollectionKey.h" +#import "YapDatabaseAtomic.h" +#import "YapDatabaseConnectionConfig.h" +#import "YapDatabaseConnectionPool.h" +#import "YapDatabaseConnectionProxy.h" +#import "YapDatabaseCryptoUtils.h" +#import "YapDatabaseQuery.h" +#import "YapDirtyDictionary.h" +#import "YapMurmurHash.h" +#import "YapMutationStack.h" +#import "YapProxyObject.h" +#import "YapSet.h" +#import "YapWhitelistBlacklist.h" +#import "YDBLogMessage.h" +#import "YapDatabaseExtensionPrivate.h" +#import "YapDatabaseExtension.h" +#import "YapDatabaseExtensionConnection.h" +#import "YapDatabaseExtensionTransaction.h" +#import "YapDatabaseExtensionTypes.h" +#import "YapReachability.h" +#import "YapActionable.h" +#import "YapActionItem.h" +#import "YapDatabaseActionManager.h" +#import "YapDatabaseActionManagerConnection.h" +#import "YapDatabaseActionManagerTransaction.h" +#import "YapDatabaseAutoView.h" +#import "YapDatabaseAutoViewConnection.h" +#import "YapDatabaseAutoViewTransaction.h" +#import "YapDatabaseViewTypes.h" +#import "YapDatabaseCloudCoreGraphPrivate.h" +#import "YapDatabaseCloudCoreOperationPrivate.h" +#import "YapDatabaseCloudCorePipelinePrivate.h" +#import "YapDatabaseCloudCorePrivate.h" +#import "YapDatabaseCloudCoreGraph.h" +#import "YapDatabaseCloudCorePipeline.h" +#import "YapDatabaseCloudCorePipelineDelegate.h" +#import "YapDatabaseCloudCoreOperation.h" +#import "YapManyToManyCache.h" +#import "YapDatabaseCloudCore.h" +#import "YapDatabaseCloudCoreConnection.h" +#import "YapDatabaseCloudCoreOptions.h" +#import "YapDatabaseCloudCoreTransaction.h" +#import "YDBCKChangeSet.h" +#import "YDBCKMergeInfo.h" +#import "YDBCKRecord.h" +#import "YDBCKRecordInfo.h" +#import "YapDatabaseCloudKit.h" +#import "YapDatabaseCloudKitConnection.h" +#import "YapDatabaseCloudKitOptions.h" +#import "YapDatabaseCloudKitTransaction.h" +#import "YapDatabaseCloudKitTypes.h" +#import "YapDatabaseCrossProcessNotification.h" +#import "YapDatabaseCrossProcessNotificationConnection.h" +#import "YapDatabaseCrossProcessNotificationTransaction.h" +#import "YapDatabaseFilteredView.h" +#import "YapDatabaseFilteredViewConnection.h" +#import "YapDatabaseFilteredViewTransaction.h" +#import "YapDatabaseFilteredViewTypes.h" +#import "YapDatabaseFullTextSearch.h" +#import "YapDatabaseFullTextSearchConnection.h" +#import "YapDatabaseFullTextSearchHandler.h" +#import "YapDatabaseFullTextSearchSnippetOptions.h" +#import "YapDatabaseFullTextSearchTransaction.h" +#import "YapDatabaseHooks.h" +#import "YapDatabaseHooksConnection.h" +#import "YapDatabaseHooksTransaction.h" +#import "YapDatabaseManualView.h" +#import "YapDatabaseManualViewConnection.h" +#import "YapDatabaseManualViewTransaction.h" +#import "YapDatabaseRTreeIndex.h" +#import "YapDatabaseRTreeIndexConnection.h" +#import "YapDatabaseRTreeIndexHandler.h" +#import "YapDatabaseRTreeIndexOptions.h" +#import "YapDatabaseRTreeIndexSetup.h" +#import "YapDatabaseRTreeIndexTransaction.h" +#import "YapDatabaseRelationship.h" +#import "YapDatabaseRelationshipConnection.h" +#import "YapDatabaseRelationshipEdge.h" +#import "YapDatabaseRelationshipNode.h" +#import "YapDatabaseRelationshipOptions.h" +#import "YapDatabaseRelationshipTransaction.h" +#import "YapDatabaseSearchQueue.h" +#import "YapDatabaseSearchResultsView.h" +#import "YapDatabaseSearchResultsViewConnection.h" +#import "YapDatabaseSearchResultsViewOptions.h" +#import "YapDatabaseSearchResultsViewTransaction.h" +#import "YapDatabaseSecondaryIndex.h" +#import "YapDatabaseSecondaryIndexConnection.h" +#import "YapDatabaseSecondaryIndexHandler.h" +#import "YapDatabaseSecondaryIndexOptions.h" +#import "YapDatabaseSecondaryIndexSetup.h" +#import "YapDatabaseSecondaryIndexTransaction.h" +#import "YapDatabaseViewChange.h" +#import "YapDatabaseViewMappings.h" +#import "YapDatabaseViewRangeOptions.h" +#import "YapDatabaseView.h" +#import "YapDatabaseViewConnection.h" +#import "YapDatabaseViewOptions.h" +#import "YapDatabaseViewTransaction.h" + +FOUNDATION_EXPORT double YapDatabaseVersionNumber; +FOUNDATION_EXPORT const unsigned char YapDatabaseVersionString[]; + diff --git a/Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase/YapDatabase.modulemap b/Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase/YapDatabase.modulemap new file mode 100644 index 000000000..014f07203 --- /dev/null +++ b/Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase/YapDatabase.modulemap @@ -0,0 +1,6 @@ +module YapDatabase { + umbrella header "YapDatabase-umbrella.h" + + export * + module * { export * } +} diff --git a/Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase/YapDatabase.xcconfig b/Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase/YapDatabase.xcconfig index 744f2d77c..9a512d0ef 100644 --- a/Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase/YapDatabase.xcconfig +++ b/Examples/CloudKitTodo/Pods/Target Support Files/YapDatabase/YapDatabase.xcconfig @@ -1,12 +1,12 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/YapDatabase +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/YapDatabase" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/Reachability" "${PODS_ROOT}/Headers/Public/YapDatabase" -LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/YapDatabase" "${PODS_ROOT}/Headers/Public" OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE -OTHER_LDFLAGS = -l"c++" -l"sqlite3" -framework "SystemConfiguration" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../.. PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES From 8360d280020723b9d22cead23c6ae7bf906271b8 Mon Sep 17 00:00:00 2001 From: George Cox Date: Mon, 17 Feb 2020 06:35:48 -0500 Subject: [PATCH 04/14] CloudKitTodo example compiles again; Adds TODOs; (*) Adds a couple of TODOs: 1. objectPolicy/metadataPolicy issue: #502 2. YDBLogContext issue: #509 --- .../CloudKitTodo.xcodeproj/project.pbxproj | 14 +++++ .../CloudKitTodo/CloudKitTodo/AppDelegate.m | 52 ++++++++++--------- .../CloudKitTodo-Bridging-Header.h | 4 ++ .../CloudKitTodo/DONOTREMOVE.swift | 6 +++ .../CloudKitTodo/DatabaseManager.h | 2 +- .../CloudKitTodo/DatabaseManager.m | 36 +++++++------ .../CloudKitTodo/EditViewController.m | 5 +- 7 files changed, 76 insertions(+), 43 deletions(-) create mode 100644 Examples/CloudKitTodo/CloudKitTodo/CloudKitTodo-Bridging-Header.h create mode 100644 Examples/CloudKitTodo/CloudKitTodo/DONOTREMOVE.swift diff --git a/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj b/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj index e888c8401..5c0e915de 100644 --- a/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj +++ b/Examples/CloudKitTodo/CloudKitTodo.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 51EE553F951BF40945032BD5 /* libPods-CloudKitTodo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ABB1832E9FCC349F48EB4C9C /* libPods-CloudKitTodo.a */; }; + B9A9B95423FAADC500A187DD /* DONOTREMOVE.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9A9B95323FAADC500A187DD /* DONOTREMOVE.swift */; }; DC212CE11F6D98F600C11BF0 /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC212CE01F6D98F600C11BF0 /* CloudKit.framework */; }; DC6071471A33F3FF00207DE9 /* TodoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = DC6071461A33F3FF00207DE9 /* TodoCell.m */; }; DC60714A1A33FC3900207DE9 /* checkmark-off.png in Resources */ = {isa = PBXBuildFile; fileRef = DC6071481A33FC3900207DE9 /* checkmark-off.png */; }; @@ -33,6 +34,8 @@ B9A9B94F23FAA7E400A187DD /* Signing.sample.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Signing.sample.xcconfig; sourceTree = ""; }; B9A9B95023FAA8C600A187DD /* Signing.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Signing.xcconfig; sourceTree = ""; }; B9A9B95123FAAA9500A187DD /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B9A9B95223FAADC500A187DD /* CloudKitTodo-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CloudKitTodo-Bridging-Header.h"; sourceTree = ""; }; + B9A9B95323FAADC500A187DD /* DONOTREMOVE.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DONOTREMOVE.swift; sourceTree = ""; }; DC212CE01F6D98F600C11BF0 /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = System/Library/Frameworks/CloudKit.framework; sourceTree = SDKROOT; }; DC6071451A33F3FF00207DE9 /* TodoCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TodoCell.h; sourceTree = ""; }; DC6071461A33F3FF00207DE9 /* TodoCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TodoCell.m; sourceTree = ""; }; @@ -128,6 +131,8 @@ DCDE77201A3023E9001D8FCE /* main.m */, B9A9B94F23FAA7E400A187DD /* Signing.sample.xcconfig */, B9A9B95023FAA8C600A187DD /* Signing.xcconfig */, + B9A9B95323FAADC500A187DD /* DONOTREMOVE.swift */, + B9A9B95223FAADC500A187DD /* CloudKitTodo-Bridging-Header.h */, ); name = "Supporting Files"; sourceTree = ""; @@ -217,6 +222,7 @@ DCDE771A1A3023E9001D8FCE = { CreatedOnToolsVersion = 6.1; DevelopmentTeam = 8Y2R2YMCQT; + LastSwiftMigration = 1130; SystemCapabilities = { com.apple.BackgroundModes = { enabled = 1; @@ -293,6 +299,7 @@ files = ( DCDE78801A302B29001D8FCE /* MyDatabaseObject.m in Sources */, DCDE77771A302A66001D8FCE /* RootViewController.m in Sources */, + B9A9B95423FAADC500A187DD /* DONOTREMOVE.swift in Sources */, DCDE77701A302A44001D8FCE /* CloudKitManager.m in Sources */, DCDE77761A302A66001D8FCE /* EditViewController.m in Sources */, DC927FFD1A344BA500FEEAEA /* TodoTextView.m in Sources */, @@ -430,6 +437,7 @@ baseConfigurationReference = F32EDD3AE8334674ADF30C82 /* Pods-CloudKitTodo.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = CloudKitTodo/CloudKitTodo.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -445,6 +453,9 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; + SWIFT_OBJC_BRIDGING_HEADER = "CloudKitTodo/CloudKitTodo-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -453,6 +464,7 @@ baseConfigurationReference = 703B5BE0F88E9B9E927805E5 /* Pods-CloudKitTodo.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = CloudKitTodo/CloudKitTodo.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -468,6 +480,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; + SWIFT_OBJC_BRIDGING_HEADER = "CloudKitTodo/CloudKitTodo-Bridging-Header.h"; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/Examples/CloudKitTodo/CloudKitTodo/AppDelegate.m b/Examples/CloudKitTodo/CloudKitTodo/AppDelegate.m index c627ab0c2..358891472 100644 --- a/Examples/CloudKitTodo/CloudKitTodo/AppDelegate.m +++ b/Examples/CloudKitTodo/CloudKitTodo/AppDelegate.m @@ -35,31 +35,33 @@ - (id)init [DDLog addLogger:[DDTTYLogger sharedInstance]]; [[DDTTYLogger sharedInstance] setColorsEnabled:YES]; - - #if TARGET_OS_IPHONE - UIColor *redColor = [UIColor redColor]; - UIColor *orangeColor = [UIColor orangeColor]; - UIColor *grayColor = [UIColor grayColor]; - #else - NSColor *redColor = [NSColor redColor]; - NSColor *orangeColor = [NSColor orangeColor]; - NSColor *grayColor = [NSColor grayColor]; - #endif - - [[DDTTYLogger sharedInstance] setForegroundColor:redColor - backgroundColor:nil - forFlag:YDB_LOG_FLAG_ERROR // errors - context:YDBLogContext]; // from YapDatabase - - [[DDTTYLogger sharedInstance] setForegroundColor:orangeColor - backgroundColor:nil - forFlag:YDB_LOG_FLAG_WARN // warnings - context:YDBLogContext]; // from YapDatabase - - [[DDTTYLogger sharedInstance] setForegroundColor:grayColor - backgroundColor:nil - forFlag:YDB_LOG_FLAG_TRACE // trace (method invocations) - context:YDBLogContext]; // from YapDatabase + +// TODO: Restore if/when https://github.com/yapstudios/YapDatabase/issues/509 is resolved +// #if TARGET_OS_IPHONE +// UIColor *redColor = [UIColor redColor]; +// UIColor *orangeColor = [UIColor orangeColor]; +// UIColor *grayColor = [UIColor grayColor]; +// #else +// NSColor *redColor = [NSColor redColor]; +// NSColor *orangeColor = [NSColor orangeColor]; +// NSColor *grayColor = [NSColor grayColor]; +// #endif +// +// [[DDTTYLogger sharedInstance] setForegroundColor:redColor +// backgroundColor:nil +// forFlag:YDBLogFlagError // errors +// context:YDBLogContext]; // from YapDatabase +// +// [[DDTTYLogger sharedInstance] setForegroundColor:orangeColor +// backgroundColor:nil +// forFlag:YDBLogFlagWarn // warnings +// context:YDBLogContext]; // from YapDatabase +// +// [[DDTTYLogger sharedInstance] setForegroundColor:grayColor +// backgroundColor:nil +// forFlag:YDBLogFlagTrace // trace (method invocations) +// context:YDBLogContext]; // from YapDatabase +// ^^^^^ TODO: Restore if/when https://github.com/yapstudios/YapDatabase/issues/509 is resolved } return self; } diff --git a/Examples/CloudKitTodo/CloudKitTodo/CloudKitTodo-Bridging-Header.h b/Examples/CloudKitTodo/CloudKitTodo/CloudKitTodo-Bridging-Header.h new file mode 100644 index 000000000..1b2cb5d6d --- /dev/null +++ b/Examples/CloudKitTodo/CloudKitTodo/CloudKitTodo-Bridging-Header.h @@ -0,0 +1,4 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + diff --git a/Examples/CloudKitTodo/CloudKitTodo/DONOTREMOVE.swift b/Examples/CloudKitTodo/CloudKitTodo/DONOTREMOVE.swift new file mode 100644 index 000000000..20fc68d0f --- /dev/null +++ b/Examples/CloudKitTodo/CloudKitTodo/DONOTREMOVE.swift @@ -0,0 +1,6 @@ +/// +/// Created by George Cox on 2/17/20. +/// + +/// Without any Swift files in the target, Xcode throws tons of errors about not +/// being able to find Swift core libs. diff --git a/Examples/CloudKitTodo/CloudKitTodo/DatabaseManager.h b/Examples/CloudKitTodo/CloudKitTodo/DatabaseManager.h index 8b3da2369..d5138f7f5 100644 --- a/Examples/CloudKitTodo/CloudKitTodo/DatabaseManager.h +++ b/Examples/CloudKitTodo/CloudKitTodo/DatabaseManager.h @@ -71,7 +71,7 @@ extern DatabaseManager *MyDatabaseManager; /** * The path of the raw database file. **/ -+ (NSString *)databasePath; ++ (NSURL *)databaseURL; /** * The root database class, and extension(s) diff --git a/Examples/CloudKitTodo/CloudKitTodo/DatabaseManager.m b/Examples/CloudKitTodo/CloudKitTodo/DatabaseManager.m index eaf3140dc..3d94f240d 100644 --- a/Examples/CloudKitTodo/CloudKitTodo/DatabaseManager.m +++ b/Examples/CloudKitTodo/CloudKitTodo/DatabaseManager.m @@ -46,7 +46,7 @@ + (instancetype)sharedInstance return MyDatabaseManager; } -+ (NSString *)databasePath ++ (NSURL *)databaseURL { NSString *databaseName = @"MyAwesomeApp.sqlite"; @@ -56,9 +56,7 @@ + (NSString *)databasePath create:YES error:NULL]; - NSURL *databaseURL = [baseURL URLByAppendingPathComponent:databaseName isDirectory:NO]; - - return databaseURL.filePathURL.path; + return [baseURL URLByAppendingPathComponent:databaseName isDirectory:NO]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -149,8 +147,8 @@ - (YapDatabasePostSanitizer)databasePostSanitizer - (void)setupDatabase { - NSString *databasePath = [[self class] databasePath]; - DDLogVerbose(@"databasePath: %@", databasePath); + NSURL *databaseURL = [[self class] databaseURL]; + DDLogVerbose(@"databaseURL: %@", databaseURL); // Configure custom class mappings for NSCoding. // In a previous version of the app, the "MyTodo" class was named "MyTodoItem". @@ -159,21 +157,29 @@ - (void)setupDatabase [NSKeyedUnarchiver setClass:[MyTodo class] forClassName:@"MyTodoItem"]; // Create the database - - database = [[YapDatabase alloc] initWithPath:databasePath - serializer:[self databaseSerializer] - deserializer:[self databaseDeserializer] - preSanitizer:[self databasePreSanitizer] - postSanitizer:[self databasePostSanitizer] - options:nil]; + database = [[YapDatabase alloc] initWithURL:databaseURL options:nil]; + [database registerDefaultSerializer:[self databaseSerializer]]; + [database registerDefaultDeserializer:[self databaseDeserializer]]; + [database registerDefaultPreSanitizer:[self databasePreSanitizer]]; + [database registerDefaultPostSanitizer:[self databasePostSanitizer]]; // FOR ADVANCED USERS ONLY // // Do NOT copy this blindly into your app unless you know exactly what you're doing. // https://github.com/yapstudios/YapDatabase/wiki/Object-Policy // - database.defaultObjectPolicy = YapDatabasePolicyShare; - database.defaultMetadataPolicy = YapDatabasePolicyShare; + // TODO: Restore the following once https://github.com/yapstudios/YapDatabase/issues/502 is resolved + // database.defaultObjectPolicy = YapDatabasePolicyShare; + // database.defaultMetadataPolicy = YapDatabasePolicyShare; + // TODO: Remove the following once https://github.com/yapstudios/YapDatabase/issues/502 is resolved + [database setObjectPolicy:YapDatabasePolicyShare forCollection:Collection_CloudKit]; + [database setObjectPolicy:YapDatabasePolicyShare forCollection:Collection_Todos]; + [database setObjectPolicy:YapDatabasePolicyShare forCollection:nil]; + [database setMetadataPolicy:YapDatabasePolicyShare forCollection:Collection_CloudKit]; + [database setMetadataPolicy:YapDatabasePolicyShare forCollection:Collection_Todos]; + [database setMetadataPolicy:YapDatabasePolicyShare forCollection:nil]; + // ^^^ TODO: Remove the following once https://github.com/yapstudios/YapDatabase/issues/502 is resolved + // // ^^^ FOR ADVANCED USERS ONLY ^^^ diff --git a/Examples/CloudKitTodo/CloudKitTodo/EditViewController.m b/Examples/CloudKitTodo/CloudKitTodo/EditViewController.m index a927bd2e2..c958011b6 100644 --- a/Examples/CloudKitTodo/CloudKitTodo/EditViewController.m +++ b/Examples/CloudKitTodo/CloudKitTodo/EditViewController.m @@ -195,14 +195,15 @@ - (void)saveButtonTapped:(id)sender newPriority = TodoPriorityHigh; else newPriority = TodoPriorityNormal; - + + NSString *uuidLabelText = uuidLabel.text; [MyDatabaseManager.bgDatabaseConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { MyTodo *todo = [transaction objectForKey:todoID inCollection:Collection_Todos]; if (todo == nil) { - todo = [[MyTodo alloc] initWithUUID:uuidLabel.text]; + todo = [[MyTodo alloc] initWithUUID:uuidLabelText]; todo.title = newTitle; todo.isDone = newIsDone; From 72821830cab41a37a3b92f245743a112f74d9ee8 Mon Sep 17 00:00:00 2001 From: SofteqDG Date: Tue, 19 Jan 2016 22:36:50 +0300 Subject: [PATCH 05/14] Limitation for number of changes per one change request in CloudKit extension. --- .../CloudKit/Internal/YDBCKChangeQueue.h | 5 ++ .../CloudKit/Internal/YDBCKChangeQueue.m | 17 ++++ .../CloudKit/YapDatabaseCloudKitOptions.h | 8 ++ .../CloudKit/YapDatabaseCloudKitOptions.m | 2 + .../CloudKit/YapDatabaseCloudKitTransaction.m | 78 ++++++++++++------- 5 files changed, 84 insertions(+), 26 deletions(-) diff --git a/YapDatabase/Extensions/CloudKit/Internal/YDBCKChangeQueue.h b/YapDatabase/Extensions/CloudKit/Internal/YDBCKChangeQueue.h index 743b78ac3..a5b061739 100644 --- a/YapDatabase/Extensions/CloudKit/Internal/YDBCKChangeQueue.h +++ b/YapDatabase/Extensions/CloudKit/Internal/YDBCKChangeQueue.h @@ -130,6 +130,11 @@ @property (atomic, readonly) NSUInteger numberOfQueuedChangeSets; @property (atomic, readonly) NSUInteger numberOfPendingChangeSets; +/** + * Number of changes (saved and deleted objects) in current commit. + **/ +- (NSUInteger)numberOfChangesInCurrentCommit; + /** * Atomic access to all counts at once. */ diff --git a/YapDatabase/Extensions/CloudKit/Internal/YDBCKChangeQueue.m b/YapDatabase/Extensions/CloudKit/Internal/YDBCKChangeQueue.m index 04fe6b6a2..8702e0e87 100644 --- a/YapDatabase/Extensions/CloudKit/Internal/YDBCKChangeQueue.m +++ b/YapDatabase/Extensions/CloudKit/Internal/YDBCKChangeQueue.m @@ -372,6 +372,23 @@ - (NSUInteger)numberOfPendingChangeSets return count; } +/** + * Number of changes (saved and deleted objects) in current commit. + **/ +- (NSUInteger)numberOfChangesInCurrentCommit +{ + NSAssert(self.isPendingQueue, @"Method can only be invoked on pendingQueue"); + + NSUInteger count = 0; + + for (YDBCKChangeSet *newChangeSet in [newChangeSetsDict objectEnumerator]) + { + count += (newChangeSet.recordIDsToDeleteCount + newChangeSet.recordsToSaveCount); + } + + return count; +} + /** * Atomic access to all counts at once. **/ diff --git a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitOptions.h b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitOptions.h index 5f79427b9..cf9ea7aaa 100644 --- a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitOptions.h +++ b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitOptions.h @@ -27,6 +27,14 @@ NS_ASSUME_NONNULL_BEGIN */ @property (nonatomic, strong, readwrite, nullable) YapWhitelistBlacklist *allowedCollections; +/** + * CloudKit has a limitation for number of changes in one change request. + * Currenly CloudKit can't handle more than 400 changes at once. + * + * You can use this property to set limit for number of changes per one request. + * Default value is 0 (No limitation). + **/ +@property (nonatomic, assign, readwrite) NSUInteger maxChangesPerChangeRequest; // Todo: Need ability to set default options for CKModifyRecordsOperation diff --git a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitOptions.m b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitOptions.m index ce408393f..4c006a26d 100644 --- a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitOptions.m +++ b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitOptions.m @@ -3,11 +3,13 @@ @implementation YapDatabaseCloudKitOptions @synthesize allowedCollections = allowedCollections; +@synthesize maxChangesPerChangeRequest = maxChangesPerChangeRequest; - (id)copyWithZone:(NSZone *)zone { YapDatabaseCloudKitOptions *copy = [[[self class] alloc] init]; // [self class] required to support subclassing copy->allowedCollections = allowedCollections; + copy->maxChangesPerChangeRequest = maxChangesPerChangeRequest; return copy; } diff --git a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m index 8b51cd6c0..1c109c067 100644 --- a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m +++ b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m @@ -3009,20 +3009,57 @@ - (void)flushPendingChangesToExtensionTables #pragma clang diagnostic pop }]; + // Step 4 of 6: + // + // Use YDBCKChangeQueue tools to generate a list of updates for the queue table. + + void (^mergeQueueBlock)(YDBCKChangeQueue *, YDBCKChangeQueue *) = ^(YDBCKChangeQueue *masterQueue, YDBCKChangeQueue *pendingQueue) { + + // Step 5 of 6: + // + // Update queue table. + // This is the list of changes the pendingQueue gives us. + + for (YDBCKChangeSet *oldChangeSet in pendingQueue.changeSetsFromPreviousCommits) + { + if (oldChangeSet.hasChangesToDeletedRecordIDs || oldChangeSet.hasChangesToModifiedRecords) + { + [self updateQueueTableRowWithChangeSet:oldChangeSet]; + } + } + + for (YDBCKChangeSet *newChangeSet in pendingQueue.changeSetsFromCurrentCommit) + { + [self insertQueueTableRowWithChangeSet:newChangeSet]; + } + + // Step 6 of 6: + // + // Update the masterQueue, + // and unlock it so the next operation can be dispatched. + + [masterQueue mergePendingQueue:pendingQueue]; + }; + // Step 3 of 6: // // Create a pendingQueue, // and lock the masterQueue so we can make changes to it. - YDBCKChangeQueue *masterQueue = parentConnection->parent->masterQueue; - YDBCKChangeQueue *pendingQueue = [masterQueue newPendingQueue]; + __block YDBCKChangeQueue *masterQueue = parentConnection->parent->masterQueue; + __block YDBCKChangeQueue *pendingQueue = nil; - // Step 4 of 6: - // - // Use YDBCKChangeQueue tools to generate a list of updates for the queue table. + YapDatabaseCloudKitOptions *options = parentConnection->parent->options; + NSUInteger maxChangesPerChangeRequest = (options) ? (options.maxChangesPerChangeRequest) : (0); [parentConnection->dirtyRecordTableInfoDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + // Create pending queue if not exist. + if (pendingQueue == nil) + { + pendingQueue = [masterQueue newPendingQueue]; + } + // __unsafe_unretained NSString *hash = (NSString *)key; __unsafe_unretained YDBCKDirtyRecordTableInfo *dirtyRecordTableInfo = (YDBCKDirtyRecordTableInfo *)obj; @@ -3111,32 +3148,21 @@ - (void)flushPendingChangesToExtensionTables } } } - }]; - - // Step 5 of 6: - // - // Update queue table. - // This is the list of changes the pendingQueue gives us. - - for (YDBCKChangeSet *oldChangeSet in pendingQueue.changeSetsFromPreviousCommits) - { - if (oldChangeSet.hasChangesToDeletedRecordIDs || oldChangeSet.hasChangesToModifiedRecords) + + // Merge pending queue in master queue if number of changes is reached the limit. + if (maxChangesPerChangeRequest > 0 && maxChangesPerChangeRequest <= pendingQueue.numberOfChangesInCurrentCommit) { - [self updateQueueTableRowWithChangeSet:oldChangeSet]; + mergeQueueBlock(masterQueue, pendingQueue); + pendingQueue = nil; } - } + }]; - for (YDBCKChangeSet *newChangeSet in pendingQueue.changeSetsFromCurrentCommit) + // Merge the rest. + if (pendingQueue != nil) { - [self insertQueueTableRowWithChangeSet:newChangeSet]; + mergeQueueBlock(masterQueue, pendingQueue); + pendingQueue = nil; } - - // Step 6 of 6: - // - // Update the masterQueue, - // and unlock it so the next operation can be dispatched. - - [masterQueue mergePendingQueue:pendingQueue]; } /** From 16c5ae158bb4e5df71cb43e85d75ba06fdcaf9d4 Mon Sep 17 00:00:00 2001 From: SofteqDG Date: Thu, 21 Jan 2016 10:52:08 +0300 Subject: [PATCH 06/14] Code refactoring --- .../CloudKit/YapDatabaseCloudKitTransaction.m | 83 ++++++++++--------- 1 file changed, 43 insertions(+), 40 deletions(-) diff --git a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m index 1c109c067..f5eccfdef 100644 --- a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m +++ b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m @@ -2907,7 +2907,7 @@ - (void)flushPendingChangesToExtensionTables return; } - // Step 1 of 6: + // Step 1 of 5: // // Update mapping table. @@ -2943,7 +2943,7 @@ - (void)flushPendingChangesToExtensionTables #pragma clang diagnostic pop }]; - // Step 2 of 6: + // Step 2 of 5: // // Update record table. @@ -3009,39 +3009,7 @@ - (void)flushPendingChangesToExtensionTables #pragma clang diagnostic pop }]; - // Step 4 of 6: - // - // Use YDBCKChangeQueue tools to generate a list of updates for the queue table. - - void (^mergeQueueBlock)(YDBCKChangeQueue *, YDBCKChangeQueue *) = ^(YDBCKChangeQueue *masterQueue, YDBCKChangeQueue *pendingQueue) { - - // Step 5 of 6: - // - // Update queue table. - // This is the list of changes the pendingQueue gives us. - - for (YDBCKChangeSet *oldChangeSet in pendingQueue.changeSetsFromPreviousCommits) - { - if (oldChangeSet.hasChangesToDeletedRecordIDs || oldChangeSet.hasChangesToModifiedRecords) - { - [self updateQueueTableRowWithChangeSet:oldChangeSet]; - } - } - - for (YDBCKChangeSet *newChangeSet in pendingQueue.changeSetsFromCurrentCommit) - { - [self insertQueueTableRowWithChangeSet:newChangeSet]; - } - - // Step 6 of 6: - // - // Update the masterQueue, - // and unlock it so the next operation can be dispatched. - - [masterQueue mergePendingQueue:pendingQueue]; - }; - - // Step 3 of 6: + // Step 3 of 5: // // Create a pendingQueue, // and lock the masterQueue so we can make changes to it. @@ -3150,19 +3118,54 @@ - (void)flushPendingChangesToExtensionTables } // Merge pending queue in master queue if number of changes is reached the limit. + if (maxChangesPerChangeRequest > 0 && maxChangesPerChangeRequest <= pendingQueue.numberOfChangesInCurrentCommit) { - mergeQueueBlock(masterQueue, pendingQueue); + // Step 4 of 5: + // + // Update the masterQueue. + + [self mergePendingQueue:pendingQueue toMasterQueue:masterQueue]; pendingQueue = nil; } }]; - // Merge the rest. - if (pendingQueue != nil) + // Step 5 of 5: + // + // Update the masterQueue. Merge the rest. + + [self mergePendingQueue:pendingQueue toMasterQueue:masterQueue]; + pendingQueue = nil; +} + +- (void)mergePendingQueue:(YDBCKChangeQueue *)pendingQueue toMasterQueue:(YDBCKChangeQueue *)masterQueue +{ + // Check input arguments. + + if (!pendingQueue || !masterQueue) + { + return; + } + + // Update queue table. + // This is the list of changes the pendingQueue gives us. + + for (YDBCKChangeSet *oldChangeSet in pendingQueue.changeSetsFromPreviousCommits) + { + if (oldChangeSet.hasChangesToDeletedRecordIDs || oldChangeSet.hasChangesToModifiedRecords) + { + [self updateQueueTableRowWithChangeSet:oldChangeSet]; + } + } + + for (YDBCKChangeSet *newChangeSet in pendingQueue.changeSetsFromCurrentCommit) { - mergeQueueBlock(masterQueue, pendingQueue); - pendingQueue = nil; + [self insertQueueTableRowWithChangeSet:newChangeSet]; } + + // Update the masterQueue + + [masterQueue mergePendingQueue:pendingQueue]; } /** From 0f5c3bcfb6882803e952447c697a576108089613 Mon Sep 17 00:00:00 2001 From: George Cox Date: Sun, 16 Feb 2020 10:16:42 -0500 Subject: [PATCH 07/14] Updates CloudKit limit error handling to account for CKReferences The change adds an initial enumeration of the dirty records to find build a map of all the parent references that have references that are also changing. The existing enumeration was modified to ensure change sets are as large as possible given the configurable limit AND keep parent/child references in the same change set. --- .../CloudKit/YapDatabaseCloudKitTransaction.m | 251 ++++++++++++------ 1 file changed, 163 insertions(+), 88 deletions(-) diff --git a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m index f5eccfdef..bd93a192b 100644 --- a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m +++ b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m @@ -3019,7 +3019,26 @@ - (void)flushPendingChangesToExtensionTables YapDatabaseCloudKitOptions *options = parentConnection->parent->options; NSUInteger maxChangesPerChangeRequest = (options) ? (options.maxChangesPerChangeRequest) : (0); - + + // Build a map of dirty record CKRecordIDs to all of their associated CKReferences' + NSMutableDictionary *> *referenceMap = NSMutableDictionary.new; + + [parentConnection->dirtyRecordTableInfoDict + enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, + YDBCKDirtyRecordTableInfo * _Nonnull obj, + BOOL * _Nonnull stop) { + if (obj.dirty_record.parent) { + NSMutableArray *parentReferences = + (referenceMap[obj.dirty_record.parent.recordID] ?: NSMutableArray.new); + + [parentReferences addObject:obj.dirty_record.recordID]; + referenceMap[obj.dirty_record.recordID] = parentReferences; + } + }]; + + __block BOOL isResolvingReferences = NO; + __block NSMutableArray *accumulatedQueueOperations = NSMutableArray.new; + [parentConnection->dirtyRecordTableInfoDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { // Create pending queue if not exist. @@ -3027,95 +3046,151 @@ - (void)flushPendingChangesToExtensionTables { pendingQueue = [masterQueue newPendingQueue]; } - // __unsafe_unretained NSString *hash = (NSString *)key; __unsafe_unretained YDBCKDirtyRecordTableInfo *dirtyRecordTableInfo = (YDBCKDirtyRecordTableInfo *)obj; - - if ([dirtyRecordTableInfo hasNilRecordOrZeroOwnerCount]) - { - // The CKRecord has been deleted via one of the following: - // - // - [transaction removeObjectForKey:inCollection:] - // - [[transaction ext:ck] deleteRecordForKey:inCollection] - // - [[transaction ext:ck] detachKey:inCollection] - // - // Note: In the detached scenario, the user wants us to "detach" the local row - // from its associated CKRecord, but not to actually delete the CKRecord from the cloud. - - if (dirtyRecordTableInfo.clean_ownerCount <= 0 && - dirtyRecordTableInfo.dirty_record && - dirtyRecordTableInfo.remoteMerge) - { - // We were just updating CKRecords in the queue. - // We've already deleted/detached the CKRecord, so it's not in the record table. - - [masterQueue updatePendingQueue:pendingQueue - withMergedRecord:dirtyRecordTableInfo.dirty_record - databaseIdentifier:dirtyRecordTableInfo.databaseIdentifier]; - } - else if (dirtyRecordTableInfo.remoteDeletion) - { - [masterQueue updatePendingQueue:pendingQueue - withRemoteDeletedRecordID:dirtyRecordTableInfo.recordID - databaseIdentifier:dirtyRecordTableInfo.databaseIdentifier]; - } - else if (dirtyRecordTableInfo.skipUploadDeletion) - { - [masterQueue updatePendingQueue:pendingQueue - withDetachedRecordID:dirtyRecordTableInfo.recordID - databaseIdentifier:dirtyRecordTableInfo.databaseIdentifier]; - } - else - { - [masterQueue updatePendingQueue:pendingQueue - withDeletedRecordID:dirtyRecordTableInfo.recordID - databaseIdentifier:dirtyRecordTableInfo.databaseIdentifier]; - } - } - else - { - // The CKRecord has been modified via one or more of the following: - // - // - [transaction setObject:forKey:inCollection:] - // - [[transaction ext:ck] detachKey:inCollection:] - // - [[transaction ext:ck] attachRecord:forKey:inCollection:] - - if (dirtyRecordTableInfo.clean_ownerCount <= 0) - { - // Newly inserted record - - if (dirtyRecordTableInfo.remoteMerge) - { - [masterQueue updatePendingQueue:pendingQueue - withMergedRecord:dirtyRecordTableInfo.dirty_record - databaseIdentifier:dirtyRecordTableInfo.databaseIdentifier]; - } - else if (dirtyRecordTableInfo.skipUploadRecord == NO) - { - [masterQueue updatePendingQueue:pendingQueue - withInsertedRecord:dirtyRecordTableInfo.dirty_record - databaseIdentifier:dirtyRecordTableInfo.databaseIdentifier]; - } - } - else - { - // Modified record - - if (dirtyRecordTableInfo.remoteMerge) - { - [masterQueue updatePendingQueue:pendingQueue - withMergedRecord:dirtyRecordTableInfo.dirty_record - databaseIdentifier:dirtyRecordTableInfo.databaseIdentifier]; - } - else if (dirtyRecordTableInfo.skipUploadRecord == NO) - { - [masterQueue updatePendingQueue:pendingQueue - withModifiedRecord:dirtyRecordTableInfo.dirty_record - databaseIdentifier:dirtyRecordTableInfo.databaseIdentifier - originalValues:dirtyRecordTableInfo.originalValues]; - } - } - } + + NSMutableArray *references = referenceMap[dirtyRecordTableInfo.recordID]; + if (dirtyRecordTableInfo.dirty_record.parent.recordID + && referenceMap[dirtyRecordTableInfo.dirty_record.parent.recordID]) { + // This is a referenced record and it's parent has also changed + // We can remove this record from the parent's reference map + [references removeObject:dirtyRecordTableInfo.recordID]; + if (references.count == 0) { + // If there are no more references from the parent to account for, remove + // it from the reference map completely. + [referenceMap removeObjectForKey:dirtyRecordTableInfo.dirty_record.parent.recordID]; + } else { + // If there are still more references from the parent to account for, update + // the reference map with the new references from the parent + referenceMap[dirtyRecordTableInfo.dirty_record.parent.recordID] = references; + } + } + + if (references) { + // This is a record that has a CKReference to at least one more record + if ([references count] > 0) { + // It still has references we haven't encountered yet during this + // enumeration of the dirty records. + // We have to wait to queue this record and it's references until we're + // sure they will fit in the current change set before it reaches its max + // item limit. + isResolvingReferences = YES; + } else { + // All of this records references have been accounted for and fit in the + // change set prior to it reaching its max item limit. + // We can remove it from the reference map + } + } + + void(^queueBlock)(YDBCKChangeQueue *, + YDBCKChangeQueue *, + YDBCKDirtyRecordTableInfo *) = + ^(YDBCKChangeQueue *queue_master, + YDBCKChangeQueue *queue_pending, + YDBCKDirtyRecordTableInfo *info_dirtyRecord) { + if ([info_dirtyRecord hasNilRecordOrZeroOwnerCount]) + { + // The CKRecord has been deleted via one of the following: + // + // - [transaction removeObjectForKey:inCollection:] + // - [[transaction ext:ck] deleteRecordForKey:inCollection] + // - [[transaction ext:ck] detachKey:inCollection] + // + // Note: In the detached scenario, the user wants us to "detach" the local row + // from its associated CKRecord, but not to actually delete the CKRecord from the cloud. + + if (info_dirtyRecord.clean_ownerCount <= 0 && + info_dirtyRecord.dirty_record && + info_dirtyRecord.remoteMerge) + { + // We were just updating CKRecords in the queue. + // We've already deleted/detached the CKRecord, so it's not in the record table. + + [queue_master updatePendingQueue:queue_pending + withMergedRecord:info_dirtyRecord.dirty_record + databaseIdentifier:info_dirtyRecord.databaseIdentifier]; + } + else if (info_dirtyRecord.remoteDeletion) + { + [queue_master updatePendingQueue:queue_pending + withRemoteDeletedRecordID:info_dirtyRecord.recordID + databaseIdentifier:info_dirtyRecord.databaseIdentifier]; + } + else if (info_dirtyRecord.skipUploadDeletion) + { + [queue_master updatePendingQueue:queue_pending + withDetachedRecordID:info_dirtyRecord.recordID + databaseIdentifier:info_dirtyRecord.databaseIdentifier]; + } + else + { + [queue_master updatePendingQueue:queue_pending + withDeletedRecordID:info_dirtyRecord.recordID + databaseIdentifier:info_dirtyRecord.databaseIdentifier]; + } + } + else + { + // The CKRecord has been modified via one or more of the following: + // + // - [transaction setObject:forKey:inCollection:] + // - [[transaction ext:ck] detachKey:inCollection:] + // - [[transaction ext:ck] attachRecord:forKey:inCollection:] + + if (info_dirtyRecord.clean_ownerCount <= 0) + { + // Newly inserted record + + if (info_dirtyRecord.remoteMerge) + { + [queue_master updatePendingQueue:queue_pending + withMergedRecord:info_dirtyRecord.dirty_record + databaseIdentifier:info_dirtyRecord.databaseIdentifier]; + } + else if (info_dirtyRecord.skipUploadRecord == NO) + { + [queue_master updatePendingQueue:queue_pending + withInsertedRecord:info_dirtyRecord.dirty_record + databaseIdentifier:info_dirtyRecord.databaseIdentifier]; + } + } + else + { + // Modified record + + if (info_dirtyRecord.remoteMerge) + { + [queue_master updatePendingQueue:queue_pending + withMergedRecord:info_dirtyRecord.dirty_record + databaseIdentifier:info_dirtyRecord.databaseIdentifier]; + } + else if (info_dirtyRecord.skipUploadRecord == NO) + { + [queue_master updatePendingQueue:queue_pending + withModifiedRecord:info_dirtyRecord.dirty_record + databaseIdentifier:info_dirtyRecord.databaseIdentifier + originalValues:info_dirtyRecord.originalValues]; + } + } + } + }; + + if (isResolvingReferences) { + if (maxChangesPerChangeRequest > 0 + && maxChangesPerChangeRequest > (accumulatedQueueOperations.count + pendingQueue.numberOfChangesInCurrentCommit)) { + [self mergePendingQueue:pendingQueue toMasterQueue:masterQueue]; + pendingQueue = nil; + } + [accumulatedQueueOperations addObject:(YDBCKDirtyRecordTableInfo *)obj]; + return; + } else if (accumulatedQueueOperations.count > 0) { + for (YDBCKDirtyRecordTableInfo *accumulatedObj in accumulatedQueueOperations) { + queueBlock(masterQueue, pendingQueue, accumulatedObj); + } + queueBlock(masterQueue, pendingQueue, dirtyRecordTableInfo); + } else { + queueBlock(masterQueue, pendingQueue, dirtyRecordTableInfo); + } // Merge pending queue in master queue if number of changes is reached the limit. From a8c64bef7aafeaf7688ddd911464d75845b7c935 Mon Sep 17 00:00:00 2001 From: George Cox Date: Mon, 17 Feb 2020 05:11:13 -0500 Subject: [PATCH 08/14] Extracts `queueBlock` to a separate function for simplicity (*) * Fixes issue that would leave the `isResolvingReferences` flag set to YES --- .../CloudKit/YapDatabaseCloudKitTransaction.m | 215 +++++++++--------- 1 file changed, 107 insertions(+), 108 deletions(-) diff --git a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m index bd93a192b..3306d1baa 100644 --- a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m +++ b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m @@ -3079,122 +3079,30 @@ - (void)flushPendingChangesToExtensionTables // All of this records references have been accounted for and fit in the // change set prior to it reaching its max item limit. // We can remove it from the reference map - } - } - - void(^queueBlock)(YDBCKChangeQueue *, - YDBCKChangeQueue *, - YDBCKDirtyRecordTableInfo *) = - ^(YDBCKChangeQueue *queue_master, - YDBCKChangeQueue *queue_pending, - YDBCKDirtyRecordTableInfo *info_dirtyRecord) { - if ([info_dirtyRecord hasNilRecordOrZeroOwnerCount]) - { - // The CKRecord has been deleted via one of the following: - // - // - [transaction removeObjectForKey:inCollection:] - // - [[transaction ext:ck] deleteRecordForKey:inCollection] - // - [[transaction ext:ck] detachKey:inCollection] - // - // Note: In the detached scenario, the user wants us to "detach" the local row - // from its associated CKRecord, but not to actually delete the CKRecord from the cloud. - - if (info_dirtyRecord.clean_ownerCount <= 0 && - info_dirtyRecord.dirty_record && - info_dirtyRecord.remoteMerge) - { - // We were just updating CKRecords in the queue. - // We've already deleted/detached the CKRecord, so it's not in the record table. - - [queue_master updatePendingQueue:queue_pending - withMergedRecord:info_dirtyRecord.dirty_record - databaseIdentifier:info_dirtyRecord.databaseIdentifier]; - } - else if (info_dirtyRecord.remoteDeletion) - { - [queue_master updatePendingQueue:queue_pending - withRemoteDeletedRecordID:info_dirtyRecord.recordID - databaseIdentifier:info_dirtyRecord.databaseIdentifier]; - } - else if (info_dirtyRecord.skipUploadDeletion) - { - [queue_master updatePendingQueue:queue_pending - withDetachedRecordID:info_dirtyRecord.recordID - databaseIdentifier:info_dirtyRecord.databaseIdentifier]; - } - else - { - [queue_master updatePendingQueue:queue_pending - withDeletedRecordID:info_dirtyRecord.recordID - databaseIdentifier:info_dirtyRecord.databaseIdentifier]; + [referenceMap removeObjectForKey:dirtyRecordTableInfo.recordID]; + if (referenceMap.count == 0) { + isResolvingReferences = NO; } } - else - { - // The CKRecord has been modified via one or more of the following: - // - // - [transaction setObject:forKey:inCollection:] - // - [[transaction ext:ck] detachKey:inCollection:] - // - [[transaction ext:ck] attachRecord:forKey:inCollection:] - - if (info_dirtyRecord.clean_ownerCount <= 0) - { - // Newly inserted record - - if (info_dirtyRecord.remoteMerge) - { - [queue_master updatePendingQueue:queue_pending - withMergedRecord:info_dirtyRecord.dirty_record - databaseIdentifier:info_dirtyRecord.databaseIdentifier]; - } - else if (info_dirtyRecord.skipUploadRecord == NO) - { - [queue_master updatePendingQueue:queue_pending - withInsertedRecord:info_dirtyRecord.dirty_record - databaseIdentifier:info_dirtyRecord.databaseIdentifier]; - } - } - else - { - // Modified record + } - if (info_dirtyRecord.remoteMerge) - { - [queue_master updatePendingQueue:queue_pending - withMergedRecord:info_dirtyRecord.dirty_record - databaseIdentifier:info_dirtyRecord.databaseIdentifier]; - } - else if (info_dirtyRecord.skipUploadRecord == NO) - { - [queue_master updatePendingQueue:queue_pending - withModifiedRecord:info_dirtyRecord.dirty_record - databaseIdentifier:info_dirtyRecord.databaseIdentifier - originalValues:info_dirtyRecord.originalValues]; - } + if (!isResolvingReferences) { + if (accumulatedQueueOperations.count > 0) { + for (YDBCKDirtyRecordTableInfo *accumulatedDirtyRecordInfo in accumulatedQueueOperations) { + [self applyDirtyRecordInfo:accumulatedDirtyRecordInfo withMasterQueue:masterQueue andPendingQueue:pendingQueue]; } + [self applyDirtyRecordInfo:dirtyRecordTableInfo withMasterQueue:masterQueue andPendingQueue:pendingQueue]; + } else { + [self applyDirtyRecordInfo:dirtyRecordTableInfo withMasterQueue:masterQueue andPendingQueue:pendingQueue]; } - }; - - if (isResolvingReferences) { - if (maxChangesPerChangeRequest > 0 - && maxChangesPerChangeRequest > (accumulatedQueueOperations.count + pendingQueue.numberOfChangesInCurrentCommit)) { - [self mergePendingQueue:pendingQueue toMasterQueue:masterQueue]; - pendingQueue = nil; - } - [accumulatedQueueOperations addObject:(YDBCKDirtyRecordTableInfo *)obj]; - return; - } else if (accumulatedQueueOperations.count > 0) { - for (YDBCKDirtyRecordTableInfo *accumulatedObj in accumulatedQueueOperations) { - queueBlock(masterQueue, pendingQueue, accumulatedObj); - } - queueBlock(masterQueue, pendingQueue, dirtyRecordTableInfo); - } else { - queueBlock(masterQueue, pendingQueue, dirtyRecordTableInfo); } // Merge pending queue in master queue if number of changes is reached the limit. - - if (maxChangesPerChangeRequest > 0 && maxChangesPerChangeRequest <= pendingQueue.numberOfChangesInCurrentCommit) + NSUInteger changes = pendingQueue.numberOfChangesInCurrentCommit; + if (isResolvingReferences) { + changes += accumulatedQueueOperations.count; + } + if (maxChangesPerChangeRequest > 0 && maxChangesPerChangeRequest <= changes) { // Step 4 of 5: // @@ -3202,6 +3110,9 @@ - (void)flushPendingChangesToExtensionTables [self mergePendingQueue:pendingQueue toMasterQueue:masterQueue]; pendingQueue = nil; + if (isResolvingReferences) { + [accumulatedQueueOperations addObject:(YDBCKDirtyRecordTableInfo *)obj]; + } } }]; @@ -3213,6 +3124,94 @@ - (void)flushPendingChangesToExtensionTables pendingQueue = nil; } +- (void)applyDirtyRecordInfo:(YDBCKDirtyRecordTableInfo *)info withMasterQueue:(YDBCKChangeQueue *)masterQueue andPendingQueue:(YDBCKChangeQueue *)pendingQueue { + if ([info hasNilRecordOrZeroOwnerCount]) + { + // The CKRecord has been deleted via one of the following: + // + // - [transaction removeObjectForKey:inCollection:] + // - [[transaction ext:ck] deleteRecordForKey:inCollection] + // - [[transaction ext:ck] detachKey:inCollection] + // + // Note: In the detached scenario, the user wants us to "detach" the local row + // from its associated CKRecord, but not to actually delete the CKRecord from the cloud. + + if (info.clean_ownerCount <= 0 && + info.dirty_record && + info.remoteMerge) + { + // We were just updating CKRecords in the queue. + // We've already deleted/detached the CKRecord, so it's not in the record table. + + [masterQueue updatePendingQueue:pendingQueue + withMergedRecord:info.dirty_record + databaseIdentifier:info.databaseIdentifier]; + } + else if (info.remoteDeletion) + { + [masterQueue updatePendingQueue:pendingQueue + withRemoteDeletedRecordID:info.recordID + databaseIdentifier:info.databaseIdentifier]; + } + else if (info.skipUploadDeletion) + { + [masterQueue updatePendingQueue:pendingQueue + withDetachedRecordID:info.recordID + databaseIdentifier:info.databaseIdentifier]; + } + else + { + [masterQueue updatePendingQueue:pendingQueue + withDeletedRecordID:info.recordID + databaseIdentifier:info.databaseIdentifier]; + } + } + else + { + // The CKRecord has been modified via one or more of the following: + // + // - [transaction setObject:forKey:inCollection:] + // - [[transaction ext:ck] detachKey:inCollection:] + // - [[transaction ext:ck] attachRecord:forKey:inCollection:] + + if (info.clean_ownerCount <= 0) + { + // Newly inserted record + + if (info.remoteMerge) + { + [masterQueue updatePendingQueue:pendingQueue + withMergedRecord:info.dirty_record + databaseIdentifier:info.databaseIdentifier]; + } + else if (info.skipUploadRecord == NO) + { + [masterQueue updatePendingQueue:pendingQueue + withInsertedRecord:info.dirty_record + databaseIdentifier:info.databaseIdentifier]; + } + } + else + { + // Modified record + + if (info.remoteMerge) + { + [masterQueue updatePendingQueue:pendingQueue + withMergedRecord:info.dirty_record + databaseIdentifier:info.databaseIdentifier]; + } + else if (info.skipUploadRecord == NO) + { + [masterQueue updatePendingQueue:pendingQueue + withModifiedRecord:info.dirty_record + databaseIdentifier:info.databaseIdentifier + originalValues:info.originalValues]; + } + } + } +} + - (void)mergePendingQueue:(YDBCKChangeQueue *)pendingQueue toMasterQueue:(YDBCKChangeQueue *)masterQueue { // Check input arguments. From d909294949e6d8be503a373732ee8df673691981 Mon Sep 17 00:00:00 2001 From: George Cox Date: Mon, 17 Feb 2020 08:20:05 -0500 Subject: [PATCH 09/14] Checks in cocoapods changes --- .../Pods/Pods.xcodeproj/project.pbxproj | 100 +++++++++--------- .../Pods-CloudKitTodo.debug.xcconfig | 2 +- .../Pods-CloudKitTodo.release.xcconfig | 2 +- 3 files changed, 53 insertions(+), 51 deletions(-) diff --git a/Examples/CloudKitTodo/Pods/Pods.xcodeproj/project.pbxproj b/Examples/CloudKitTodo/Pods/Pods.xcodeproj/project.pbxproj index f8eea81c1..178778e1e 100644 --- a/Examples/CloudKitTodo/Pods/Pods.xcodeproj/project.pbxproj +++ b/Examples/CloudKitTodo/Pods/Pods.xcodeproj/project.pbxproj @@ -2253,6 +2253,31 @@ }; name = Release; }; + 181937B8140F6B49CBB58C7B81DD01E7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33DF2D1519A2BB95E52443791B6D5B29 /* Reachability.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/Reachability/Reachability-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = Reachability; + PRODUCT_NAME = Reachability; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; 196DFA3E4A09A28224918543529A1885 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2317,6 +2342,30 @@ }; name = Debug; }; + 1DC2BF1A4F52C614828F2CA46B12AF0C /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33DF2D1519A2BB95E52443791B6D5B29 /* Reachability.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/Reachability/Reachability-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = Reachability; + PRODUCT_NAME = Reachability; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 3C2150AF9DD854E642DF519463E7323C /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 2E0A60B2E952FAA7E7F3F9159EB5E988 /* CocoaLumberjack.xcconfig */; @@ -2389,29 +2438,6 @@ }; name = Debug; }; - 85179D61A823C15EBEDE375E61731263 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33DF2D1519A2BB95E52443791B6D5B29 /* Reachability.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Reachability/Reachability-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Reachability; - PRODUCT_NAME = Reachability; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 9DCBE49900E65A2447661B580CBC1E58 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 875F31FBAC2CF6B24AE493FB10D0D2D2 /* YapDatabase.xcconfig */; @@ -2438,30 +2464,6 @@ }; name = Debug; }; - A26081984499868E52C81B028654CC22 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33DF2D1519A2BB95E52443791B6D5B29 /* Reachability.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Reachability/Reachability-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Reachability; - PRODUCT_NAME = Reachability; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; A9F0F58B455031EA7400EB6C53041BA0 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 24AA268C2DCCDD348764DCDB67D04DDA /* Pods-CloudKitTodo.release.xcconfig */; @@ -2588,8 +2590,8 @@ D7750FC6B1FA8CEF7FAE7682B1BFCA1F /* Build configuration list for PBXNativeTarget "Reachability" */ = { isa = XCConfigurationList; buildConfigurations = ( - 85179D61A823C15EBEDE375E61731263 /* Debug */, - A26081984499868E52C81B028654CC22 /* Release */, + 1DC2BF1A4F52C614828F2CA46B12AF0C /* Debug */, + 181937B8140F6B49CBB58C7B81DD01E7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.debug.xcconfig b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.debug.xcconfig index f0b0b9d0b..a34796fa1 100644 --- a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.debug.xcconfig +++ b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.debug.xcconfig @@ -1,4 +1,4 @@ -EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/Reachability" "${PODS_ROOT}/Headers/Public/YapDatabase" LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase" diff --git a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.release.xcconfig b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.release.xcconfig index f0b0b9d0b..a34796fa1 100644 --- a/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.release.xcconfig +++ b/Examples/CloudKitTodo/Pods/Target Support Files/Pods-CloudKitTodo/Pods-CloudKitTodo.release.xcconfig @@ -1,4 +1,4 @@ -EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/Reachability" "${PODS_ROOT}/Headers/Public/YapDatabase" LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase" From 304e150aaea91f24bb25def0271787545d11818d Mon Sep 17 00:00:00 2001 From: George Cox Date: Tue, 18 Feb 2020 03:32:00 -0500 Subject: [PATCH 10/14] Fixes bug when generating parent->ref map --- .../Extensions/CloudKit/YapDatabaseCloudKitTransaction.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m index 3306d1baa..01f46f59c 100644 --- a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m +++ b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m @@ -3032,7 +3032,7 @@ - (void)flushPendingChangesToExtensionTables (referenceMap[obj.dirty_record.parent.recordID] ?: NSMutableArray.new); [parentReferences addObject:obj.dirty_record.recordID]; - referenceMap[obj.dirty_record.recordID] = parentReferences; + referenceMap[obj.dirty_record.parent.recordID] = parentReferences; } }]; From 3bb4701f1c60ffbfa87932065c6bee3c6c534e65 Mon Sep 17 00:00:00 2001 From: George Cox Date: Thu, 20 Feb 2020 07:45:19 -0500 Subject: [PATCH 11/14] Tracking order or dirty cloudkit records --- .../Internal/YapDatabaseCloudKitPrivate.h | 1 + .../CloudKit/YapDatabaseCloudKitConnection.m | 6 + .../CloudKit/YapDatabaseCloudKitTransaction.m | 180 +++++++++++++++--- 3 files changed, 164 insertions(+), 23 deletions(-) diff --git a/YapDatabase/Extensions/CloudKit/Internal/YapDatabaseCloudKitPrivate.h b/YapDatabase/Extensions/CloudKit/Internal/YapDatabaseCloudKitPrivate.h index f0c8ce272..e090b10b8 100644 --- a/YapDatabase/Extensions/CloudKit/Internal/YapDatabaseCloudKitPrivate.h +++ b/YapDatabase/Extensions/CloudKit/Internal/YapDatabaseCloudKitPrivate.h @@ -124,6 +124,7 @@ static NSString *const changeset_key_reset = @"reset"; NSMutableDictionary *dirtyMappingTableInfoDict; NSMutableDictionary *dirtyRecordTableInfoDict; + NSMutableOrderedSet *dirtyRecordTableInfoHashOrder; YapCache *recordKeysCache; diff --git a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitConnection.m b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitConnection.m index ecc760b76..11779662a 100644 --- a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitConnection.m +++ b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitConnection.m @@ -180,6 +180,10 @@ - (void)prepareForReadWriteTransaction if (dirtyRecordTableInfoDict == nil) dirtyRecordTableInfoDict = [[NSMutableDictionary alloc] init]; + + if (dirtyRecordTableInfoHashOrder == nil) { + dirtyRecordTableInfoHashOrder = [[NSMutableOrderedSet alloc] init]; + } } /** @@ -218,6 +222,7 @@ - (void)postCommitCleanup dirtyMappingTableInfoDict = nil; dirtyRecordTableInfoDict = nil; + dirtyRecordTableInfoHashOrder = nil; pendingAttachRequests = nil; reset = NO; @@ -242,6 +247,7 @@ - (void)postRollbackCleanup dirtyMappingTableInfoDict = nil; dirtyRecordTableInfoDict = nil; + dirtyRecordTableInfoHashOrder = nil; pendingAttachRequests = nil; reset = NO; diff --git a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m index 01f46f59c..6986364ca 100644 --- a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m +++ b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m @@ -629,7 +629,12 @@ - (BOOL)populateTables [dirtyRecordTableInfo incrementOwnerCount]; [dirtyRecordTableInfo mergeOriginalValues:recordInfo.originalValues]; } - + + // Remove the hash from the ordered set, then add it. `removeObject` is a noop + // if the hash isn't in the list yet. + // This ensures the order gets update. + [parentConnection->dirtyRecordTableInfoHashOrder removeObject:hash]; + [parentConnection->dirtyRecordTableInfoHashOrder addObject:hash]; #pragma clang diagnostic pop }; @@ -1234,6 +1239,12 @@ - (void)processRecord:(CKRecord *)record recordInfo:(YDBCKRecordInfo *)recordInf [parentConnection->cleanRecordTableInfoCache removeObjectForKey:prevRecordTableHash]; [parentConnection->dirtyRecordTableInfoDict setObject:dirtyRecordTableInfo forKey:prevRecordTableHash]; + + // Remove the hash from the ordered set, then add it. `removeObject` is a noop + // if the hash isn't in the list yet. + // This ensures the order gets update. + [parentConnection->dirtyRecordTableInfoHashOrder removeObject:prevRecordTableHash]; + [parentConnection->dirtyRecordTableInfoHashOrder addObject:prevRecordTableHash]; } } @@ -1285,6 +1296,11 @@ - (void)processRecord:(CKRecord *)record recordInfo:(YDBCKRecordInfo *)recordInf [parentConnection->cleanRecordTableInfoCache removeObjectForKey:newRecordTableHash]; [parentConnection->dirtyRecordTableInfoDict setObject:newDirtyRecordTableInfo forKey:newRecordTableHash]; + // Remove the hash from the ordered set, then add it. `removeObject` is a noop + // if the hash isn't in the list yet. + // This ensures the order gets update. + [parentConnection->dirtyRecordTableInfoHashOrder removeObject:newRecordTableHash]; + [parentConnection->dirtyRecordTableInfoHashOrder addObject:newRecordTableHash]; } else { @@ -1302,6 +1318,11 @@ - (void)processRecord:(CKRecord *)record recordInfo:(YDBCKRecordInfo *)recordInf [parentConnection->cleanRecordTableInfoCache removeObjectForKey:newRecordTableHash]; [parentConnection->dirtyRecordTableInfoDict setObject:newDirtyRecordTableInfo forKey:newRecordTableHash]; + // Remove the hash from the ordered set, then add it. `removeObject` is a noop + // if the hash isn't in the list yet. + // This ensures the order gets update. + [parentConnection->dirtyRecordTableInfoHashOrder removeObject:newRecordTableHash]; + [parentConnection->dirtyRecordTableInfoHashOrder addObject:newRecordTableHash]; } } @@ -1327,6 +1348,11 @@ - (void)processRecord:(CKRecord *)record recordInfo:(YDBCKRecordInfo *)recordInf [parentConnection->cleanRecordTableInfoCache removeObjectForKey:newRecordTableHash]; [parentConnection->dirtyRecordTableInfoDict setObject:dirtyRecordTableInfo forKey:newRecordTableHash]; + // Remove the hash from the ordered set, then add it. `removeObject` is a noop + // if the hash isn't in the list yet. + // This ensures the order gets update. + [parentConnection->dirtyRecordTableInfoHashOrder removeObject:newRecordTableHash]; + [parentConnection->dirtyRecordTableInfoHashOrder addObject:newRecordTableHash]; } else { @@ -1341,6 +1367,11 @@ - (void)processRecord:(CKRecord *)record recordInfo:(YDBCKRecordInfo *)recordInf [parentConnection->cleanRecordTableInfoCache removeObjectForKey:newRecordTableHash]; [parentConnection->dirtyRecordTableInfoDict setObject:newDirtyRecordTableInfo forKey:newRecordTableHash]; + // Remove the hash from the ordered set, then add it. `removeObject` is a noop + // if the hash isn't in the list yet. + // This ensures the order gets update. + [parentConnection->dirtyRecordTableInfoHashOrder removeObject:newRecordTableHash]; + [parentConnection->dirtyRecordTableInfoHashOrder addObject:newRecordTableHash]; } } } @@ -3039,15 +3070,22 @@ - (void)flushPendingChangesToExtensionTables __block BOOL isResolvingReferences = NO; __block NSMutableArray *accumulatedQueueOperations = NSMutableArray.new; - [parentConnection->dirtyRecordTableInfoDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { - - // Create pending queue if not exist. - if (pendingQueue == nil) - { - pendingQueue = [masterQueue newPendingQueue]; - } - // __unsafe_unretained NSString *hash = (NSString *)key; - __unsafe_unretained YDBCKDirtyRecordTableInfo *dirtyRecordTableInfo = (YDBCKDirtyRecordTableInfo *)obj; + [parentConnection->dirtyRecordTableInfoHashOrder enumerateObjectsUsingBlock:^(NSString *hash, NSUInteger idx, BOOL *stop) { + // Create pending queue if not exist. + if (pendingQueue == nil) + { + pendingQueue = [masterQueue newPendingQueue]; + } + // __unsafe_unretained NSString *hash = (NSString *)key; + + YDBCKDirtyRecordTableInfo *retainedDirtyRecordTableInfo = parentConnection->dirtyRecordTableInfoDict[hash]; + if (retainedDirtyRecordTableInfo == nil) { + // TODO: Should we be doing more here? Setting `stop` to YES? Throwing? + // This certainly shouldn't happen. If it does, something isn't working as + // intended. + return; + } + __unsafe_unretained YDBCKDirtyRecordTableInfo *dirtyRecordTableInfo = retainedDirtyRecordTableInfo; NSMutableArray *references = referenceMap[dirtyRecordTableInfo.recordID]; if (dirtyRecordTableInfo.dirty_record.parent.recordID @@ -3097,24 +3135,104 @@ - (void)flushPendingChangesToExtensionTables } } - // Merge pending queue in master queue if number of changes is reached the limit. + // Merge pending queue in master queue if number of changes is reached the limit. NSUInteger changes = pendingQueue.numberOfChangesInCurrentCommit; if (isResolvingReferences) { changes += accumulatedQueueOperations.count; } - if (maxChangesPerChangeRequest > 0 && maxChangesPerChangeRequest <= changes) - { - // Step 4 of 5: - // - // Update the masterQueue. - - [self mergePendingQueue:pendingQueue toMasterQueue:masterQueue]; - pendingQueue = nil; + if (maxChangesPerChangeRequest > 0 && maxChangesPerChangeRequest <= changes) + { + // Step 4 of 5: + // + // Update the masterQueue. + + [self mergePendingQueue:pendingQueue toMasterQueue:masterQueue]; + pendingQueue = nil; if (isResolvingReferences) { - [accumulatedQueueOperations addObject:(YDBCKDirtyRecordTableInfo *)obj]; + [accumulatedQueueOperations addObject:retainedDirtyRecordTableInfo]; + } else { + retainedDirtyRecordTableInfo = nil; } - } - }]; + } else { + retainedDirtyRecordTableInfo = nil; + } + }]; +// [parentConnection->dirtyRecordTableInfoDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { +// +// // Create pending queue if not exist. +// if (pendingQueue == nil) +// { +// pendingQueue = [masterQueue newPendingQueue]; +// } +// // __unsafe_unretained NSString *hash = (NSString *)key; +// __unsafe_unretained YDBCKDirtyRecordTableInfo *dirtyRecordTableInfo = (YDBCKDirtyRecordTableInfo *)obj; +// +// NSMutableArray *references = referenceMap[dirtyRecordTableInfo.recordID]; +// if (dirtyRecordTableInfo.dirty_record.parent.recordID +// && referenceMap[dirtyRecordTableInfo.dirty_record.parent.recordID]) { +// // This is a referenced record and it's parent has also changed +// // We can remove this record from the parent's reference map +// [references removeObject:dirtyRecordTableInfo.recordID]; +// if (references.count == 0) { +// // If there are no more references from the parent to account for, remove +// // it from the reference map completely. +// [referenceMap removeObjectForKey:dirtyRecordTableInfo.dirty_record.parent.recordID]; +// } else { +// // If there are still more references from the parent to account for, update +// // the reference map with the new references from the parent +// referenceMap[dirtyRecordTableInfo.dirty_record.parent.recordID] = references; +// } +// } +// +// if (references) { +// // This is a record that has a CKReference to at least one more record +// if ([references count] > 0) { +// // It still has references we haven't encountered yet during this +// // enumeration of the dirty records. +// // We have to wait to queue this record and it's references until we're +// // sure they will fit in the current change set before it reaches its max +// // item limit. +// isResolvingReferences = YES; +// } else { +// // All of this records references have been accounted for and fit in the +// // change set prior to it reaching its max item limit. +// // We can remove it from the reference map +// [referenceMap removeObjectForKey:dirtyRecordTableInfo.recordID]; +// if (referenceMap.count == 0) { +// isResolvingReferences = NO; +// } +// } +// } +// +// if (!isResolvingReferences) { +// if (accumulatedQueueOperations.count > 0) { +// for (YDBCKDirtyRecordTableInfo *accumulatedDirtyRecordInfo in accumulatedQueueOperations) { +// [self applyDirtyRecordInfo:accumulatedDirtyRecordInfo withMasterQueue:masterQueue andPendingQueue:pendingQueue]; +// } +// [self applyDirtyRecordInfo:dirtyRecordTableInfo withMasterQueue:masterQueue andPendingQueue:pendingQueue]; +// } else { +// [self applyDirtyRecordInfo:dirtyRecordTableInfo withMasterQueue:masterQueue andPendingQueue:pendingQueue]; +// } +// } +// +// // Merge pending queue in master queue if number of changes is reached the limit. +// NSUInteger changes = pendingQueue.numberOfChangesInCurrentCommit; +// if (isResolvingReferences) { +// changes += accumulatedQueueOperations.count; +// } +// if (maxChangesPerChangeRequest > 0 && maxChangesPerChangeRequest <= changes) +// { +// // Step 4 of 5: +// // +// // Update the masterQueue. +// +// [self mergePendingQueue:pendingQueue toMasterQueue:masterQueue]; +// pendingQueue = nil; +// if (isResolvingReferences) { +// [accumulatedQueueOperations addObject:(YDBCKDirtyRecordTableInfo *)obj]; +// } +// } +// }]; // Step 5 of 5: // @@ -3762,7 +3880,8 @@ - (void)didRemoveAllObjectsInAllCollections [parentConnection->dirtyMappingTableInfoDict removeAllObjects]; [parentConnection->dirtyRecordTableInfoDict removeAllObjects]; - + [parentConnection->dirtyRecordTableInfoHashOrder removeAllObjects]; + parentConnection->reset = YES; } @@ -4149,6 +4268,11 @@ - (void)mergeRecord:(CKRecord *)remoteRecord databaseIdentifier:(NSString *)data [parentConnection->cleanRecordTableInfoCache removeObjectForKey:hash]; [parentConnection->dirtyRecordTableInfoDict setObject:dirtyRecordTableInfo forKey:hash]; + // Remove the hash from the ordered set, then add it. `removeObject` is a noop + // if the hash isn't in the list yet. + // This ensures the order gets update. + [parentConnection->dirtyRecordTableInfoHashOrder removeObject:hash]; + [parentConnection->dirtyRecordTableInfoHashOrder addObject:hash]; } else // if ([recordTableInfo isKindOfClass:[YDBCKDirtyRecordTableInfo class]]) { @@ -4170,6 +4294,11 @@ - (void)mergeRecord:(CKRecord *)remoteRecord databaseIdentifier:(NSString *)data dirtyRecordTableInfo.remoteMerge = YES; [parentConnection->dirtyRecordTableInfoDict setObject:dirtyRecordTableInfo forKey:hash]; + // Remove the hash from the ordered set, then add it. `removeObject` is a noop + // if the hash isn't in the list yet. + // This ensures the order gets update. + [parentConnection->dirtyRecordTableInfoHashOrder removeObject:hash]; + [parentConnection->dirtyRecordTableInfoHashOrder addObject:hash]; } } @@ -4241,6 +4370,11 @@ - (BOOL)saveRecord:(CKRecord *)record databaseIdentifier:(NSString *)databaseIde [parentConnection->cleanRecordTableInfoCache removeObjectForKey:hash]; [parentConnection->dirtyRecordTableInfoDict setObject:dirtyRecordTableInfo forKey:hash]; + // Remove the hash from the ordered set, then add it. `removeObject` is a noop + // if the hash isn't in the list yet. + // This ensures the order gets update. + [parentConnection->dirtyRecordTableInfoHashOrder removeObject:hash]; + [parentConnection->dirtyRecordTableInfoHashOrder addObject:hash]; } else // if ([recordTableInfo isKindOfClass:[YDBCKDirtyRecordTableInfo class]]) { From 60497bd27d9e5cd7a92867420dd368062af3141b Mon Sep 17 00:00:00 2001 From: George Cox Date: Wed, 26 Feb 2020 11:53:40 -0500 Subject: [PATCH 12/14] Keeping parent and references side-by-side in change sets --- .../CloudKit/YapDatabaseCloudKitTransaction.m | 59 ++++++++++++++++++- 1 file changed, 56 insertions(+), 3 deletions(-) diff --git a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m index 6986364ca..f493e84a1 100644 --- a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m +++ b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m @@ -3053,9 +3053,9 @@ - (void)flushPendingChangesToExtensionTables // Build a map of dirty record CKRecordIDs to all of their associated CKReferences' NSMutableDictionary *> *referenceMap = NSMutableDictionary.new; - + NSMutableDictionary *parentRecordIDToHashMap = NSMutableDictionary.new; [parentConnection->dirtyRecordTableInfoDict - enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, + enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull hash, YDBCKDirtyRecordTableInfo * _Nonnull obj, BOOL * _Nonnull stop) { if (obj.dirty_record.parent) { @@ -3064,13 +3064,66 @@ - (void)flushPendingChangesToExtensionTables [parentReferences addObject:obj.dirty_record.recordID]; referenceMap[obj.dirty_record.parent.recordID] = parentReferences; + parentRecordIDToHashMap[obj.dirty_record.parent.recordID] = hash; + } + }]; + + // Created a sorted copy of the dirtyRecordTableInfoHashOrder that keeps parent + // and child references together so we always process them in the same CloudKit + // operation. + NSMutableOrderedSet *referenceSafeDirtyRecordTableInfoHashOrder = NSMutableOrderedSet.new; + NSMutableDictionary *> *referencesPendingProcessing = NSMutableDictionary.new; + [parentConnection->dirtyRecordTableInfoHashOrder enumerateObjectsUsingBlock:^(NSString *hash, NSUInteger idx, BOOL * _Nonnull stop) { + YDBCKDirtyRecordTableInfo *info = parentConnection->dirtyRecordTableInfoDict[hash]; + NSArray *references = referenceMap[info.recordID]; + if (references && references.count > 0) { + // Check to see if there are any cached references waiting to be inserted. + // If so, add them in order here. + [referenceSafeDirtyRecordTableInfoHashOrder addObject:hash]; + NSArray *pending = referencesPendingProcessing[hash]; + if (pending && pending.count > 0) { + for (NSString *referenceHash in pending) { + [referenceSafeDirtyRecordTableInfoHashOrder addObject:referenceHash]; + } + } + [referencesPendingProcessing removeObjectForKey:hash]; + } else if (info.dirty_record.parent) { + // Has a parent reference + + NSString *parentHash = parentRecordIDToHashMap[info.dirty_record.parent.recordID]; + NSInteger parentIdx = [referenceSafeDirtyRecordTableInfoHashOrder indexOfObject:parentHash]; + if (parentIdx >= 0) { + // If `referenceSafeDirtyRecordTableInfoHashOrder` already contains the parent's + // hash find the index of the last reference for the parent and insert this + // hash after it. + NSInteger insertIdx = parentIdx + 1; + for (NSInteger i = insertIdx; i < referenceSafeDirtyRecordTableInfoHashOrder.count; i++) { + NSString *nextHash = [referenceSafeDirtyRecordTableInfoHashOrder objectAtIndex:i]; + YDBCKDirtyRecordTableInfo *nextInfo = parentConnection->dirtyRecordTableInfoDict[nextHash]; + if (nextInfo.dirty_record.parent != info.dirty_record.parent) { + break; + } + insertIdx++; + } + [referenceSafeDirtyRecordTableInfoHashOrder insertObject:hash atIndex:insertIdx]; + } else { + // If the parent doesn't exist in the hash yet, which shouldn't happen, then + // cache this reference for processing later, once the parent is added to + // the set. + NSMutableArray *pending = [referencesPendingProcessing[parentHash] mutableCopy] ?: NSMutableArray.new; + [pending addObject:hash]; + referencesPendingProcessing[parentHash] = pending; + } + } else { + // No child references, add it to the end + [referenceSafeDirtyRecordTableInfoHashOrder addObject:hash]; } }]; __block BOOL isResolvingReferences = NO; __block NSMutableArray *accumulatedQueueOperations = NSMutableArray.new; - [parentConnection->dirtyRecordTableInfoHashOrder enumerateObjectsUsingBlock:^(NSString *hash, NSUInteger idx, BOOL *stop) { + [referenceSafeDirtyRecordTableInfoHashOrder enumerateObjectsUsingBlock:^(NSString *hash, NSUInteger idx, BOOL *stop) { // Create pending queue if not exist. if (pendingQueue == nil) { From dce58fc51d4c2722dbb2c93b1fd3d7164f6555ea Mon Sep 17 00:00:00 2001 From: George Cox Date: Wed, 26 Feb 2020 12:00:28 -0500 Subject: [PATCH 13/14] Fixes bug in producing the parent record ID -> hash map --- .../CloudKit/YapDatabaseCloudKitTransaction.m | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m index f493e84a1..87d6eb02c 100644 --- a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m +++ b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m @@ -3053,7 +3053,6 @@ - (void)flushPendingChangesToExtensionTables // Build a map of dirty record CKRecordIDs to all of their associated CKReferences' NSMutableDictionary *> *referenceMap = NSMutableDictionary.new; - NSMutableDictionary *parentRecordIDToHashMap = NSMutableDictionary.new; [parentConnection->dirtyRecordTableInfoDict enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull hash, YDBCKDirtyRecordTableInfo * _Nonnull obj, @@ -3064,7 +3063,17 @@ - (void)flushPendingChangesToExtensionTables [parentReferences addObject:obj.dirty_record.recordID]; referenceMap[obj.dirty_record.parent.recordID] = parentReferences; - parentRecordIDToHashMap[obj.dirty_record.parent.recordID] = hash; + } + }]; + + // Build a map of parent CKRecordID to its corresponding hash + NSMutableDictionary *parentRecordIDToHashMap = NSMutableDictionary.new; + [parentConnection->dirtyRecordTableInfoDict + enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull hash, + YDBCKDirtyRecordTableInfo * _Nonnull obj, + BOOL * _Nonnull stop) { + if (referenceMap[obj.dirty_record.recordID] != nil) { + parentRecordIDToHashMap[obj.dirty_record.recordID] = hash; } }]; From 300be05c00c0fb92a0d4e01202009dffcb8fe9b3 Mon Sep 17 00:00:00 2001 From: George Cox Date: Wed, 26 Feb 2020 12:05:34 -0500 Subject: [PATCH 14/14] Cleanup --- .../Extensions/CloudKit/YapDatabaseCloudKitTransaction.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m index 87d6eb02c..7ae7d4f4a 100644 --- a/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m +++ b/YapDatabase/Extensions/CloudKit/YapDatabaseCloudKitTransaction.m @@ -3084,9 +3084,8 @@ - (void)flushPendingChangesToExtensionTables NSMutableDictionary *> *referencesPendingProcessing = NSMutableDictionary.new; [parentConnection->dirtyRecordTableInfoHashOrder enumerateObjectsUsingBlock:^(NSString *hash, NSUInteger idx, BOOL * _Nonnull stop) { YDBCKDirtyRecordTableInfo *info = parentConnection->dirtyRecordTableInfoDict[hash]; - NSArray *references = referenceMap[info.recordID]; - if (references && references.count > 0) { - // Check to see if there are any cached references waiting to be inserted. + if (parentRecordIDToHashMap[info.dirty_record.recordID] != nil) { + // Check to see if there are any pending references waiting to be inserted. // If so, add them in order here. [referenceSafeDirtyRecordTableInfoHashOrder addObject:hash]; NSArray *pending = referencesPendingProcessing[hash];