From e72979b8ca0f6883c9ec75057ee7218af91d6576 Mon Sep 17 00:00:00 2001 From: Jullian Mercier <31648126+jullianm@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:10:10 +0200 Subject: [PATCH 01/22] add cellsState decoding property to API v8 in legacy and new code --- .../ConversationModelMappings.swift | 14 +++++++++- .../Conversations/Models/Conversation.swift | 6 +++++ .../ConversationsAPI/ConversationsAPIV8.swift | 20 +++++++++++++- .../Models/Conversation/Conversation.swift | 11 +++++++- ...rsations_givenV8AndSuccessResponse200.json | 1 + .../Events/Payload+CellsState.swift | 27 +++++++++++++++++++ .../Conversation/Payload+Conversation.swift | 7 ++++- .../project.pbxproj | 4 +++ 8 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 wire-ios-request-strategy/Sources/Payloads/Conversation/Events/Payload+CellsState.swift diff --git a/WireDomain/Sources/WireDomain/Repositories/Conversations/ConversationModelMappings.swift b/WireDomain/Sources/WireDomain/Repositories/Conversations/ConversationModelMappings.swift index badd35f493c..b40fef5066e 100644 --- a/WireDomain/Sources/WireDomain/Repositories/Conversations/ConversationModelMappings.swift +++ b/WireDomain/Sources/WireDomain/Repositories/Conversations/ConversationModelMappings.swift @@ -177,7 +177,8 @@ extension WireNetwork.Conversation { lastEvent: lastEvent, lastEventTime: lastEventTime, groupType: groupType?.toDomainModel(), - addPermission: addPermission?.toDomainModel() + addPermission: addPermission?.toDomainModel(), + cellsState: cellsState.toDomainModel() ) } } @@ -239,3 +240,14 @@ extension WireNetwork.ChannelPermission { } } + +extension WireNetwork.Conversation.CellsState { + func toDomainModel() -> WireDomain.Conversation.CellsState { + switch self { + case .enabled: + .enabled + case .disabled: + .disabled + } + } +} diff --git a/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift b/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift index 1e01fade67d..32006d1e489 100644 --- a/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift +++ b/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift @@ -54,6 +54,11 @@ public struct Conversation: Equatable { case admins case everyone } + + public enum CellsState: Equatable, Sendable { + case enabled + case disabled + } let id: UUID? let qualifiedID: QualifiedID? @@ -76,5 +81,6 @@ public struct Conversation: Equatable { let lastEventTime: Date? let groupType: GroupType? let addPermission: ChannelPermission? + let cellsState: CellsState } diff --git a/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift b/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift index 05423e7c87f..2577a90ac35 100644 --- a/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift +++ b/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift @@ -317,6 +317,7 @@ struct ConversationV8: Decodable, ToAPIModelConvertible { var type: ConversationTypeV0? var groupType: ConversationGroupTypeV8? // Introduced in v8 var addPermission: ChannelPermissionV8? // Introduced in v8 + var cellsState: CellsStateV8? // Introduced in v8 func toAPIModel() -> Conversation { let access = access?.map { $0.toAPIModel() } @@ -342,7 +343,24 @@ struct ConversationV8: Decodable, ToAPIModelConvertible { lastEvent: lastEvent, lastEventTime: lastEventTime?.date, groupType: groupType?.toAPIModel(), - addPermission: addPermission?.toAPIModel() + addPermission: addPermission?.toAPIModel(), + cellsState: cellsState?.toAPIModel() ?? .disabled ) } } + +extension ConversationV8 { + enum CellsStateV8: String, Decodable, ToAPIModelConvertible { + case enabled + case disabled + + func toAPIModel() -> Conversation.CellsState { + switch self { + case .enabled: + .enabled + case .disabled: + .disabled + } + } + } +} diff --git a/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift b/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift index 7b4afb17fc9..bd6cca25318 100644 --- a/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift +++ b/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift @@ -99,6 +99,13 @@ public struct Conversation: Equatable, Sendable { public var groupType: ConversationGroupType? public var addPermission: ChannelPermission? + + public enum CellsState: Equatable, Sendable { + case enabled + case disabled + } + + public var cellsState: CellsState enum CodingKeys: String, CodingKey { @@ -147,7 +154,8 @@ public struct Conversation: Equatable, Sendable { lastEvent: String? = nil, lastEventTime: Date? = nil, groupType: ConversationGroupType? = nil, - addPermission: ChannelPermission? = nil + addPermission: ChannelPermission? = nil, + cellsState: CellsState = .disabled ) { self.id = id self.qualifiedID = qualifiedID @@ -170,6 +178,7 @@ public struct Conversation: Equatable, Sendable { self.lastEventTime = lastEventTime self.groupType = groupType self.addPermission = addPermission + self.cellsState = cellsState } } diff --git a/WireNetwork/Tests/WireNetworkTests/APIs/ConversationsAPI/Resources/testGetConversations_givenV8AndSuccessResponse200.json b/WireNetwork/Tests/WireNetworkTests/APIs/ConversationsAPI/Resources/testGetConversations_givenV8AndSuccessResponse200.json index 30524bc8f78..1c943877e5a 100644 --- a/WireNetwork/Tests/WireNetworkTests/APIs/ConversationsAPI/Resources/testGetConversations_givenV8AndSuccessResponse200.json +++ b/WireNetwork/Tests/WireNetworkTests/APIs/ConversationsAPI/Resources/testGetConversations_givenV8AndSuccessResponse200.json @@ -19,6 +19,7 @@ "epoch_timestamp": "2021-05-12T10:52:02Z", "group_id": "string", "add_permission": "everyone", + "cells_state": "disabled", "id": "99db9768-04e3-4b5d-9268-831b6a25c4ab", "last_event": "string", "last_event_time": "2024-06-04T15:03:07.598Z", diff --git a/wire-ios-request-strategy/Sources/Payloads/Conversation/Events/Payload+CellsState.swift b/wire-ios-request-strategy/Sources/Payloads/Conversation/Events/Payload+CellsState.swift new file mode 100644 index 00000000000..c38427dafd8 --- /dev/null +++ b/wire-ios-request-strategy/Sources/Payloads/Conversation/Events/Payload+CellsState.swift @@ -0,0 +1,27 @@ +// +// Wire +// Copyright (C) 2025 Wire Swiss GmbH +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see http://www.gnu.org/licenses/. +// + +import Foundation + +extension Payload { + + enum CellsState: String, Codable { + case enabled + case disabled + } +} diff --git a/wire-ios-request-strategy/Sources/Payloads/Conversation/Payload+Conversation.swift b/wire-ios-request-strategy/Sources/Payloads/Conversation/Payload+Conversation.swift index 0b511a1a1af..322c4862ccf 100644 --- a/wire-ios-request-strategy/Sources/Payloads/Conversation/Payload+Conversation.swift +++ b/wire-ios-request-strategy/Sources/Payloads/Conversation/Payload+Conversation.swift @@ -42,6 +42,7 @@ extension Payload { case epochTimestamp = "epoch_timestamp" case groupType = "group_conv_type" case addPermission = "add_permission" + case cellsState = "cells_state" } static var eventType: ZMUpdateEventType { @@ -69,6 +70,7 @@ extension Payload { var epochTimestamp: Date? var groupType: ConversationGroupType? var addPermission: ChannelPermission? + var cellsState: CellsState? init( qualifiedID: QualifiedID? = nil, @@ -91,7 +93,8 @@ extension Payload { epoch: UInt? = nil, epochTimestamp: Date? = nil, groupType: ConversationGroupType? = nil, - addPermission: ChannelPermission? = nil + addPermission: ChannelPermission? = nil, + cellState: CellsState? = nil ) { self.qualifiedID = qualifiedID self.id = id @@ -114,6 +117,7 @@ extension Payload { self.epochTimestamp = epochTimestamp self.groupType = groupType self.addPermission = addPermission + self.cellsState = cellState } init(from decoder: Decoder, apiVersion: APIVersion) throws { @@ -168,6 +172,7 @@ extension Payload { case .v8, .v9, .v10, .v11: self.groupType = try container.decodeIfPresent(ConversationGroupType.self, forKey: .groupType) self.addPermission = try container.decodeIfPresent(ChannelPermission.self, forKey: .addPermission) + self.cellsState = try container.decodeIfPresent(CellsState.self, forKey: .cellsState) case .v0, .v1, .v2, .v3, .v4, .v5, .v6, .v7: break } diff --git a/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj b/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj index de3906a2742..fabffaa524e 100644 --- a/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj +++ b/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj @@ -251,6 +251,7 @@ BF7D9BE11D8C351900949267 /* WireRequestStrategy.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1669016A1D707509000FE4AF /* WireRequestStrategy.framework */; }; BFF9446620F5F79F00531BC3 /* ImageV2DownloadRequestStrategyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF9446520F5F79F00531BC3 /* ImageV2DownloadRequestStrategyTests.swift */; }; C93B11482D95621A000F6573 /* Payload+UpdateConversationPermission.swift in Sources */ = {isa = PBXBuildFile; fileRef = C93B11472D95621A000F6573 /* Payload+UpdateConversationPermission.swift */; }; + C9B8EC2B2E5C5C6900183723 /* Payload+CellsState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9B8EC2A2E5C5C6900183723 /* Payload+CellsState.swift */; }; CB5120532C6FD69F000C8FEC /* WireTransportSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB5120522C6FD69F000C8FEC /* WireTransportSupport.framework */; }; CB5A461D2D940BB700D469F1 /* Payload+ConversationGroupType.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB5A461C2D940BA600D469F1 /* Payload+ConversationGroupType.swift */; }; CB7979052C73663B006FBA58 /* WireRequestStrategySupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EEA58F192B71179D006DEE32 /* WireRequestStrategySupport.framework */; }; @@ -753,6 +754,7 @@ BF1F52C51ECC74E5002FB553 /* Array+RequestGenerator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Array+RequestGenerator.swift"; sourceTree = ""; }; BFF9446520F5F79F00531BC3 /* ImageV2DownloadRequestStrategyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageV2DownloadRequestStrategyTests.swift; sourceTree = ""; }; C93B11472D95621A000F6573 /* Payload+UpdateConversationPermission.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Payload+UpdateConversationPermission.swift"; sourceTree = ""; }; + C9B8EC2A2E5C5C6900183723 /* Payload+CellsState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Payload+CellsState.swift"; sourceTree = ""; }; CB5120522C6FD69F000C8FEC /* WireTransportSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WireTransportSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CB5A461C2D940BA600D469F1 /* Payload+ConversationGroupType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Payload+ConversationGroupType.swift"; sourceTree = ""; }; CBF2BD5E2C5BD468002BCBDD /* TestSetup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestSetup.swift; sourceTree = ""; }; @@ -1641,6 +1643,7 @@ E629E3BF2B47051D00D526AD /* Payload+UpdateConversationMemberJoin.swift */, E629E3BD2B4704E900D526AD /* Payload+UpdateConversationMemberLeave.swift */, C93B11472D95621A000F6573 /* Payload+UpdateConversationPermission.swift */, + C9B8EC2A2E5C5C6900183723 /* Payload+CellsState.swift */, E629E3C92B470AE600D526AD /* Payload+UpdateConversationAccess.swift */, E629E3C12B47054400D526AD /* Payload+UpdateConversationConnectionRequest.swift */, E629E3C32B47056B00D526AD /* Payload+UpdateConversationDeleted.swift */, @@ -2567,6 +2570,7 @@ D5D65A072074C23D00D7F3C3 /* AssetRequestFactory.swift in Sources */, E9EEC3FC2BCFC6B10064BE6A /* SetAllowGuestsAndServicesActionHandler.swift in Sources */, 168D7CA526FB0CFD00789960 /* ActionHandler.swift in Sources */, + C9B8EC2B2E5C5C6900183723 /* Payload+CellsState.swift in Sources */, 166901E61D7081C7000FE4AF /* ZMSyncOperationSet.m in Sources */, 0649D14B24F63C8F001DDC78 /* NotificationAction.swift in Sources */, EE0DE5062A24D4F70029746C /* DeleteSubgroupActionHandler.swift in Sources */, From 955f6ddcada15a3a7033e724ca8ec3f565d6deb6 Mon Sep 17 00:00:00 2001 From: Jullian Mercier <31648126+jullianm@users.noreply.github.com> Date: Mon, 25 Aug 2025 15:07:20 +0200 Subject: [PATCH 02/22] update db with cells state property --- .../Resources/Databases Changelog.md | 8 + .../zmessaging.xcdatamodeld/.xccurrentversion | 2 +- .../zmessaging2.125.0.xcdatamodel/contents | 2 +- .../zmessaging2.128.0.xcdatamodel/contents | 2 +- .../zmessaging2.129.0.xcdatamodel/contents | 444 ++++++++++++++++++ .../CoreDataMessagingMigrationVersion.swift | 5 +- .../ZMConversation+CellsState.swift | 35 ++ .../Model/Conversation/ZMConversation.m | 4 +- .../Tests/Resources/store2-129-0.wiredatabase | Bin 0 -> 638976 bytes .../WireDataModel.xcodeproj/project.pbxproj | 12 +- 10 files changed, 508 insertions(+), 6 deletions(-) create mode 100644 wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents create mode 100644 wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift create mode 100644 wire-ios-data-model/Tests/Resources/store2-129-0.wiredatabase diff --git a/wire-ios-data-model/Resources/Databases Changelog.md b/wire-ios-data-model/Resources/Databases Changelog.md index e23d8843ca3..e227bf2405a 100644 --- a/wire-ios-data-model/Resources/Databases Changelog.md +++ b/wire-ios-data-model/Resources/Databases Changelog.md @@ -4,6 +4,14 @@ As it is hard to spot changes from version to version of database models (.xcdat ## zmessaging +### 2.129.0 + +* added `cellsState` attribute on the Conversation entity + +### 2.128.0 + +* added `wireCellsLocalAssets` entity + ### 2.127.0 * renamed `asyncStreamCapable` attribute to `isConsumableNotificationsCapable` the UserClient entity diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/.xccurrentversion b/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/.xccurrentversion index 975283fe691..3293d55e83d 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/.xccurrentversion +++ b/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/.xccurrentversion @@ -3,6 +3,6 @@ _XCCurrentVersionName - zmessaging2.128.0.xcdatamodel + zmessaging2.129.0.xcdatamodel diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents b/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents index 05b8fe202a4..c8a3dd84b70 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents +++ b/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents @@ -1,5 +1,5 @@ - + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents b/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents index 21300a49b35..8668431f8b8 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents +++ b/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents @@ -1,5 +1,5 @@ - + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents b/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents new file mode 100644 index 00000000000..3ef2c8b84c9 --- /dev/null +++ b/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents @@ -0,0 +1,444 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataMessagingMigrationVersion.swift b/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataMessagingMigrationVersion.swift index 0a7e5ff51d8..4821aa233e7 100644 --- a/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataMessagingMigrationVersion.swift +++ b/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataMessagingMigrationVersion.swift @@ -29,6 +29,7 @@ enum CoreDataMessagingMigrationVersion: String, CoreDataMigrationVersion { // MARK: - // Note: add new versions here in first position! + case v129 = "zmessaging2.129.0" case v128 = "zmessaging2.128.0" case v127 = "zmessaging2.127.0" case v126 = "zmessaging2.126.0" @@ -81,8 +82,10 @@ enum CoreDataMessagingMigrationVersion: String, CoreDataMigrationVersion { var nextVersion: Self? { switch self { - case .v128: + case .v129: nil + case .v128: + .v129 case .v127: .v128 case .v125, .v126: diff --git a/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift b/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift new file mode 100644 index 00000000000..31b6bbcc0e2 --- /dev/null +++ b/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift @@ -0,0 +1,35 @@ +// +// Wire +// Copyright (C) 2025 Wire Swiss GmbH +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see http://www.gnu.org/licenses/. +// + +import Foundation + +@objc +public enum CellsState: Int16 { + + case enabled = 0 + + case disabled = 1 + +} + +public extension ZMConversation { + + /// The wire cells state (whether enabled or disabled) + + @NSManaged var cellsState: CellsState +} diff --git a/wire-ios-data-model/Source/Model/Conversation/ZMConversation.m b/wire-ios-data-model/Source/Model/Conversation/ZMConversation.m index a5b9adb4e82..6f4d40047f6 100644 --- a/wire-ios-data-model/Source/Model/Conversation/ZMConversation.m +++ b/wire-ios-data-model/Source/Model/Conversation/ZMConversation.m @@ -77,6 +77,7 @@ NSString *const ZMConversationMigratedToMLS = @"migratedToMLS"; NSString *const ZMConversationCellNameKey = @"cellName"; NSString *const ZMConversationWireCellsMessageAttachmentDraftsKey = @"wireCellsMessageAttachmentDrafts"; +NSString *const ZMConversationCellsState = @"cellsState"; static NSString *const ConnectedUserKey = @"connectedUser"; static NSString *const CreatorKey = @"creator"; @@ -366,7 +367,8 @@ - (NSSet *)ignoredKeys; ZMConversationPrivateChannelPermission, ZMConversationMigratedToMLS, ZMConversationCellNameKey, - ZMConversationWireCellsMessageAttachmentDraftsKey + ZMConversationWireCellsMessageAttachmentDraftsKey, + ZMConversationCellsState }; NSSet *additionalKeys = [NSSet setWithObjects:KeysIgnoredForTrackingModifications count:(sizeof(KeysIgnoredForTrackingModifications) / sizeof(*KeysIgnoredForTrackingModifications))]; diff --git a/wire-ios-data-model/Tests/Resources/store2-129-0.wiredatabase b/wire-ios-data-model/Tests/Resources/store2-129-0.wiredatabase new file mode 100644 index 0000000000000000000000000000000000000000..bb23261566c30d933c5e62ab7bd2d83638c4316b GIT binary patch literal 638976 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
r(d97u3w^Gzkfl$a6h46 zwqLw|b-#4KZognZu3vdObo+`)F8i3B2X|)gOoiP}cWXE=+pgmkjNQNScBw1w+@f}v z*UBR|KDdmZn`}25lRR=$X-i=Hjxn+AxmRvEIG!!TJ$?Ta+HOCvb-;Vfdu;U>?^xu( z@d4<-lY!8Ilz|lk9|txKTqCcF9}^o?UWpEJ>6vJ*Uvgqe=8`Wezk-H*$XA&+Uh*sUG#I$###s-PikwZyw(1C!`lsS zI$w2mcXoBY(NjF6xEiB_(OIp7(!rgCpTwU;p49I{^kMo?eYnJh)O`gsGELX;l;Kvx ze%d11iDQk&&K&bTR?zaOWwfQSCGZ%Owj#x0@iW4u?Oq?BUOmt29DiqD^5R8liWih( zQ`+~orx5lLQY!a`Cx@rJ-7A|cyZ6AI#JeVUb?%(J<9XNZ?z_8kchm3eaxOUk==|vU z#`C_;26rO%PAN^Uy6U`ReB#A0?;DLbZg1q?H2XLBpYor${QUBpu*Z0Ry)AmadXY7L z*=P%;6^qX!R8n=0*yc-RwDEf1O#Tu;lnv$`ojUQ zM{gZT2$fdW(5LUnnLr3hUUEBSs(2s$xTv@6A#r4y(?v(nYY1cHr2ZRQM29EnTUY6Uia9r$3*4CTl zZ#(=KU$*EB^3lk+t{xD0IlPm!Ji)#;=T$(Z-twcX8gt$*_sh7f+d1Bu()plsMW=74 za_6Q_gU(21p7s^(SnaxlEeGolevt|4yKhx16QUEY+s?I+?+Y+#-qmfj~^P39Zwq1xE6aYX~hkLdj>ZQ>Yu#sAG)!FSAW;Xy3nrb z;niPW?AWBg@9513@1eu>-`45pJa`p4T>V9F8XcK_?fRzIqF*W|z7HS$v}tIQaEMTd z@R*2%kc5Z~zYY(E+cHnRdBH+qGk!Uq!`JO!>8=st;U~rz5f7@+qNHE(_r{oU+p5Uy z;qQ;R5F;AX5ThH@A9Ez;Sjlg$-=PG+DpH^P3+(j7J@M%MzqEBgH zDbO{R`uc3%hr#LH&0KV}8aKZALrZ65ApKo#4yd9h!0v)zH zguaN>->mPagh|PT)3xF+0#il&Oj(ECSo3=AUur(3^0{`Tn0qR+VZ zAD1a^*l&X`^9$;li0Q8F<-Z;?0D!(5^8|qVohN|1T(V5^lI68Ew(c9;9r9ooR|G8| zSvCU8-gNo$xpKeYuCKLYwS#fnMIS)v%W^m9T@kW5XnWA!YJ-*S$c7Pzk&Pqvlx3>W zSh-jzSeG_||6 zSN()~rurB4+v?ZUZ%GAcy9-~Dxg>K{rd+04rsCl_%0^E+Pul`mIV^Zt@QRH#RTnRo z2f6lkwC*jkHw{hyutM2EziP*hFSkC`zin%1Z76FHY1r4$)KJ>+p&_^7MMFdbcSHBv z)VF1CKfS&8w(o7#+ud*PxZVkP67VtLJ910-j_`nR&v3_Z|M2kez%K)zzP!Cwn^XI| z_DbzkZ7fN+Yi*ZsmvR0vE!AYm_9lu^XsXNum38E9*eBT~lxWq1S|&2OiBR=K5$e*l z2_+k>mh?#mCvBths;0XepK^W!xISwc?iY?Q82X>oDuf*Aq{DJ+`#TR|9Dp4Zf99Y(BMQ?cgG3L^{o3@ z-?Cb>CbQmWjb}Z``fhjKuGwzLuE(z3?zY_{yGFYy1=lkkXM)XZE?v5G{!(Q~#Ng|W z#~qK#7xiy{Jbp&m#^7>9*i_HggweEqM*rjfq2TJ^_~7@!Pl8i|KL)?v*0k-#wi_!w zu7q9jx)P96^`geY-q-%4z4C@FXCY_lXFfmX?{Da@4Q~1RW%PKzGFHO7#OJUt-Yd*! z!fV1;1y_rGjZMW3Evj7faPQ;A-|v=g{O%drzXmdfRxj9eV>L5oaFIT(u#tbT%YG%eXr!tvDLn_hAibysxr&?H17(|-YKgDxJ zkr_Z5s)`knWJXo_Cv_Dq6}wHArYgo3R#ZbOL&cI|Y))j@s+dx3mjN-rQ-4IUf^^Hd zK_Zh$wW3%vh*rjQi#cj+xe?Xa(C9bq^~Mw{qdBTHV>2q#*p50!WNm3iCsLSJL@R6N z95I=0v5v}M{`xEm(TZqE1oB)*WRQ)B48TfOo)$!N>Ku`|u{qVs)^e`Mf=;3Sl8}`@ z;E6G1PD*QQAV@N!lT@^$$rDYI703C@@@SB3D4 zJ#*vOPW+mjW7%9aj(M|sEE^FRrV)L;v4tVa4tA7wG=DT&5K07C;eMJrYbE;=V$)9x z*mTm|_dGT;?;K48RN*jS_^~!?>dZe;UG|n$y?Kr8ZCS)2g}B z$lr{c8_Q-lPr%OPhoy64I0ny^{6=slQaf5D8Yu`hRO60z{%QK078(2F^G}0k1QEa4 z`a_fTcKrA}&%zlY+c?ZjfMXZCIO&WTn~W`(^YO+AM zH~<5&o;%iH1_s8A$g~393RWL%YeA+`Snu*WpoeBy83SO5KYG`Hp*F+lU*x#s7hL}$ z37g!%HG)I&U*yUG`p?<2;QmE+bH_)(+sqZcToAe%7-L$Mc z58zLUg`2vD+p!vlZ8I1+vA~!M7_k5k`g01lPpnjc%`<~VV63P@rkk0uMx7*M3)b+F z$Ruk=D@4P9Rv55h{ahQI!WpjKzCo_WF0MX79&R3hSuT!2j>hZ(F)QQnUrL2-$KR!z zYZB}Iv!WVPfZ>=i&6vvA#2O&}(K`O-%lcsqJ|Y;$$7aP)SaH7o4T zX8l2Zu06nT#GGgbjBqLJA?cqmEsoX|gjxfJ*#DIwRBuNQFQSV}fNNmjtU;mwWYBNP z{%jc49B77s=8FN$H~vKG50e(4%zWlyV%MXPKN&P%@6Q(eB^t44ZB7{(&qWjPr~1RT zAox!f{84?bA^*P4K%%vPjs_?y^SSoSx;U3O+n}I78T4oUxfadVntv*sXr5?IK`0$C zNta_1>kZmuN4KETEr841R$*os!BPmEZ`MDhnQPjga@J*y02L} z>x`Mkz*@;)=4s5N(AQhARwaO;` zXG~rHYZk^#q6M%J15h+Hrp-xWPNf)Io3r{fmO1kn(;3EwK<8`5UJ+r?$v|s9FP>;- zW<@2Mv)*+kd$2kuTMCuTu(f0rKb66tGkz&(cEPX0x=<$ENLbGxTU=+ie zJuPI{HY;Eu2*}vn5_l4Ip#x(Ai=RQDCm~ZgBPrHW7?6m)#Ai(TRYoTpv+ArBk!kwt5NswP zP~QQ7oXW{s_?wplr*{9jJDy4Zqn6K4s{)t=Os%cWfRQWEX8nBaw4*H+3qoNq?if0! z37%6Q8FVwM-7jI~`AzaKvHwxiJf~*Qt^0rxbAqgwb58KLq5&2m84`j}d3o-bNRC5h zL=x4^j(wG!Z#-M}pO_4+1DjGQz*`CQ9@JmDhF@O4Uzc0|P^JF5Q~{?H6$PQn%G@!6 zGaaQF(~v>8wzM;!`Jgo4wIAaD#5>kx3#js}HkM&bG@I#-e!j#&g_>RX4Ok=y#bCH& zf0)Nvn4jBg{^--^$`=1(^zW(u6Z?NDf!~`xpy&Ht_)7)*%XUsh8>1iqHCE&1Vvi~V z{k=SbTsJue2l=wYz$_T?WBFqfVopFYT3=oes;0&rL*^9atlk{0Mf1tb>ac;#tfKwp zTFRUk1X$nxu_E)c&7ZS_!J1b8Q*J;(&*q}7qHVBH0Lp~@o!>M47`r3oI6qgS5N!bE zG&zW$1m?!GESejZ|Bc1m*cl*mmJMfO=RrWvOY+wwe$R&O{k-G=0)(6Zl&bu92G&_RjE&BuXH#gbhAO6i-ESv8eTMscS`>lNEjSH9@k2r|{UslNo zKtt!q(>$=4@Cl8X+wR)z;>YS^U$h+1Q^|i=9^XH~(fee>nNe+V8AOKn+CC zQU6y3$kyjLJDU`6m?7Vli@Wx0(1fh!-amViDkT9pRhQC1b&$=y` z?;}UZcIf}*4(q?05?N9i=Eh9c)+LicT)z(J%;t_MI5ts8bLWGsiNG9)tQtHgIFo{C zHE$%#YGZz1S>tStiu0f266H7Gf-IKUFR@YlhPb}yv?!XtMZ{A?o!@}<@4sv24|)p{ z011Eu{v`ol;8YM{5qC6nW>p!%nwzqAnm8YRZ2GaJ%VxTmADc9PQe`jKZequruqdb0sswZ`SDHSD7{!7a!zrp8`gL1V94+Edu-c*d5}kRY@;{%|VlM*BB>Q=`Y0i-N zw@hc_ewkkUeEQF9*fWY>YyxHy(S{nodNTjS)$c8;*6*IoPXZj$VtX=QI&15kEPt9e z8~d9l^RwajF(dn#oHZv}ttJSCLb-R@a>|4?yRc(j)aTjD7X5!e8=9Fj{n)Z$b((V~ zgLX5~z+TwQo(^Z0HdlphHGS@k=$G|POJlN?HESOOIR83tReo*+>r}+-q13;dJwi`x8$ zvqb;Nljm;m%vL;3&G@YP5(lXF1CGM=QaJ0O~*I z!;<-K{Sb3rpV^ayb4&!5XxIxqv!Y*Lm)T^TH3YUg>qXzJ#5N`tGQ)P}oT432gV;M$ zD)Wu`DgFOqkh7pLTb2K?D*<$22cCU6^?C5~ z&cVr+@%WDh*Sa&NxFfemLcX_8Cw(JNIe$z0<~m(+t;68uwYqDakypOEeP28+JAG(6 znDslTUyhDldllL8J@Gr{yTo^k@7t##-;Pcgj7GjS=>ERE8Pg1FUfrzLjB3_xUe&DW zXZLF4x_mT>cME@$M7A^@=jZV1+nSfx`J+X7r+6~>mW!H+nL+MLEak}%Oy@6!bShn5 zaZZ0I?A4d+r=rh9FOGg5y)*hOuOUw)e_S4-M@S%MFeWGFdCcnAoiR`WLB6|uqOsH) z=WqDm7``EV!{dhS4I@7vzX(77p{iG-H|%4+i>bsHSh)`Mp5)%A*g!yr~uq>!ib`ugVLysbAp_}|NJuz}}o_Pe3Z ze@sL~G*RSEinsC^ofY5LoD*7iL!&Ncqo0t)4UE4_*DH5qYVs~=^|DZxuKj*xL5~j) zb)NK7wUsF?Sq4#Wmwr-L>z~+#ytqv4+R+8kzHd4*(&MFsV-nT``<(o|Q!9+?!ulcM zh$Sj~aXk5P%>f&NOBBzU8}G`zjZ(F;l}~8O7Ai?Ar=BNt^-LV3QaaY=B<(3YldR9R z>`WXss_0C!g*ya)?`BJ8y)8Acwp_TCCLy&kr+GodL*s=)vOSq)IZA1R46jRsNEi{tIx!k}HN67zpoI(N=*OnYJcgRC;m^EqpMeF5r7vSs4Dn zLdm2??vOiMOhj#_On2obkVSpx-`ZT6LMYVR7tWmwPB*o&ndvf@DZ|`Nt2UXXAU_YB==pw zWjFIJx4d($if*%=2bH?=K%0;%4`Gr1mi-sQmJk9WU8S z(Gz&CSn|{5UW!a)6=jUP!bs!IfnMwSA$+m(B88~Q6!8a%p1L>JJZiqB)%4o(%dTw^ z7W{TMQ6%fP#u5hQ`7K*zmnpfg9?R2GO4M+>^;)(Izn$w7yigB~;@%h=lo6@^d|*Od zt?mTZp;){9O_p3EvhKWb2Yf|8`fU)GIiav)?@;NG(i>Ol2bDsPm_=2QT!%;X;U^_T zI$=Aw%qAsmLXMm>d@3qd&2#t>V}kNjb3pKpH&iL^Nl2I83#X{1@(BSs$Ni$qZ7%C& zi=~{1zDpO@6driJkgHdC zppU%mzzbR{zr%~-RXrIeCBE(*f{8i2yt(Q9+Vg>SB`2Q7CazA%NX&V)yCVFB6<6p& z-(0R-_=|z~Cn5PL$%oQLeZ;DT#=c>1_pUz}N%FY)ruOBA*AJ~9xZjD~6={pYPNfyw zm0eBAUc*Cbp0s$+uezWYS=H)!Q1hT`XIGW1aoxGp>=V}y?+^DRXLPIGQaJeF&YsiN zB8Arc9)=Rj6-}g1l-TdhK9L*IdQ9V)SY?~{?wFD_Ju!B*70bKz4k;;6XfZAR%fA)T z{kh7igS&#wzCV1~v!_a=|8bs03966Oq`9-6f2$?#;o?yhXlg{aYOBAKc5-G{nbpx1 zTi$H78rpGt)m-GJ*tsMo~KaEI`JfRx3#-|<-)}1s+wJL1=Jo9O5Pc{V*!r#9WT~9J07Dx zmOgZ!*JDb$sLNemD>Oj3SF|JI+}d8!`hvIW0Sz>`+eq;#8{d1wy8JIOJsripHhW8* z_hfB5?ba`T{qd27_Vw`15B%;ZE%YvaBJp4VrWjXS@l5{Z2NgAiH}-Mo_C7kY!P6>Y zyYhNf^HVX_ItMnSD9Kb6#9x2hZ*r%^>c*mO^CA7^ysIo$TBZoC?uhDJw|{Pbb3^{T~=XObxcQ{>!L^^6*U>jgGV-PyZs5-k$u9$f%;Ok zUn#9R?~MDRZQ@t$r-Lv|l=#`YdW}gx6uabkr?Jb5q&LhGd z@ngq$dzd5gUln&ov%Z$+Yzr|+Xff?&o^MNN;eMF|=Uo)#=^Fc;kO$0E)9PiAhYs%d zSV}2QV=!p7E&`dxZU=-i&EM@0U=RzI(sb%KNNEbEF10SqdbmHlF#W!!=)z2cJmr=J zBho7qBWTz1HnsTngpLS)m7a>*m;a{6cLeekIu&oRnOiOS{GMPur2qUb@uz#tpC*4k z&u@QTyy5A-#ZMD9b_bO0S*BrH#|V(EOy5BFS&B=uuV3745df`>?=)POhH-(}8Y-#u z*T=f>hVRicQBq4uJ6@;pX<2w~jgf=uinPXV*|I}kYG)5TF}`b@=i`)*{P58{H+O96 zdfjMrk(}<{>ltMQmQEISVt3W^0uiF^7+r=yXguxF^s9r6Lw5z-y<9hMyme|~kI-_* zupN3EgniaKd4@T-E>-fpoD*=~QK)p^QdPK^TS44DKCb(50vTt`24yWulJB}9VFF`x zwBmA8u@uVt!j0v(p58-V-=s(nPfQpd!dNY|kTaBul^1sGDGX4zlubFrlkR8h=n@g8 z7x+4r+)%7@?8%yUR<~c5J0Cmm?hzKS6yfYer>3bCcg;Y(es8Z|b`lAJr+Y=j57#@$ z86Uhe0WGRcsFzK=X>}*Nxjw=6{K-$qxHBrsy&Ah|rnmBl4X;A>S1{Ikt+DaQDqAva zb34jXJFLXD@hQ(`10}9Rbpah$-3tCowb!p$E=R@mYp;RshAbRaJ7uGo|Ao6uYX5bv z1jE;B@7M4J*CyZhd3AkX40o!eC*Mv>ikSIHGd=7XsvORTUdDsK|Sj%W%f zyM3z%7z$KgKy zyq=0R0Sna=WFDNo)j&wcH7|-P(zLyEeuHuPBI4ve&3A66HFvDOO1wS(Y-o@~-=Vpq z-?+stahXn_@ai=!qPNV}>UYB5J4MDYLzFG~0-`c_<3uJi4(QA5Re!VBg;0~tlnu@h z5m3*%yRB04CWPm4JOeqVu}%71u6e1(F&8n+)!oMJd|{PY>1CQ$9a!oTgd4$|G+1? z%@^PFee~?%#K!$+2i>dB#U+;|nf9Ca_9w%4$))hF5UL7U-lU5>58Zhud_-=W?(J|5 zY21DjwdC8<2`FefzhVQFt8r;R>U!~Jd2yTECDME0ChL*Q+8dvQJyv1; z{4F-1dV$zMZ3U`5nimbXxm92e>kzG%QLD@;Xh;ZTl+@HXoI7&nP>)6LtI)7BFC5Fu zlFrDg>mAyeCFpzm`t3_S8zrWf3*MDpIPv{@r<9SgJ@@oZ9=rqJvIpF`P_Aip{@ADd zzH-km8)&{-9Tf?A^-)7KysNG5qGDpmfmY4iD8|kJXb1lQKI8N&vnv^+b&@rD=3_>~ z--1$PCX;w~1>PnO4Q|l6WI0|ZVKrc+XSFP9QSJuV#XS|xa20jt_}R@nKW&sU(f-am z6u3rhAK}DS1GN#klTm8V!k%mFxovr2yxlPSe$Ml?!$_=yv}ongWF(2YKGk}2n?*%` zgilog(^?iLeUs$tud$=wJpYEZ-Pq2=zCCdT6qP;sfEq;+mz3oKP#LFLx zI;p?8+5*R8eQFOneUX*|#d08~@3PpVN1>;yZ&*N$dQXU@RJZtSNJFTkA1GrIhq%A0 zh!PK@p_=@CzVs7u5W=W(fSOx%!9q8#bot|qZ%P+6PfcXH6l32FzPhPge zayP497%Gmbsr%KMq?}7hx0pm+-+8+4;)VJFdjDI2zI)xYb*2)f3)20qFPrZ$-?4av zr@!K89z6;IJrJL%$J*UbC1F$bX@2$Z_RBRcguH(CdX-M*3s{88hNT~(eW7cIrFDEP z$6roa>8-J|9420FQH6$!My;W};8saY)4aO;YHr_6$Rh1&AtBzc*xCkR3+sEkO_S>a zM6~)DzVq=-^2_657m_324zvwK<;e0qOBuVsT^(T+J9bJ%HcM>Hu=4PxrfJ@u zsC!&HV)Q)t*5k7pxHjZbih{O9xo!9gJ*T~)?*aOG{8G=Q^jguw4-0aQ$qIq7SzQO4 ziqn|cUk?WMF-u;zg$yr>vqg-pU6y9K+{xMesm!r5FA-RJef?NtkJw~!rN#T^QIkhK zfzRcm-UOB$*qk9|viDu;`?^l4%15uljo-zk%kDNk^}6ePi`8qTz|#lsVYhzeYGbJK zh}B5$>J}a0Uze#*PlF~ewRkOkV@SJeH(l9#?~uCht`+hkaWD8L-D9T`Z$=#2ZC;jw zP3qq&F&W(P`XtX&9oW}imFtVGdXIZDp6^(s+tDli-0QjGi#zen`P-iJdDq0%crL{Z zc^)ujr28*3juHrOYvlIQmaScRcR9m(>DgM*mGP*-7)XhErdJ1F4;-3z(=1A6UlVU{ z=J7b)mt37VozjP?cHYjN6*Wt)n&WQmh{`=%RQHkV!z$|oqIEn9NDcJZYO{md7^RF+o8HQCF=jo$0ec@jUMu6!V+UeiUnoi4GTUjM#Z^ppCR#2w}mspM|>m)$!|ud2OFQ?5(t z7W$H)sBVz9sqSny?$fF-vESrzn4X^@RO{EQ+~uv|^x zz%!TZBi_izkB%faLY4;}89LQ(l)fp)KEAP0k#Db}pfY!$@Yl{|jSk1D7gjLBp6scx z$>@T;YaIwYa*n&N%t^6vGBi;3`*Pm}fs*}Gt3I?nLLB{oYW8~7hM_lXxGmW5Sy$iY zUi*N=LAde&^Ia@rQ(H+~j_1^d<2~;;@V@QT5V%*B9L+eQ=#uOjJnEc@MKt*>>hF7g zr_(ON=hFL|_ul5x0|h2JY2rfy!|TO{Iv*Rzl&-oFe^@$k^Z|TFoqpx+g;DpVcMXP< zJoh+8ZLiCH*LlBkZ&haYyNgHKy^0ozOBYY-r7U=t7}e;lx_Lu}Jp6G?(E+^ObM0F# z>BZ-=2e==(hONoULbN3~>vdUVYl!ShiyaEKB~G{<@|RAJAm4mw|F!Z=b!GeGjT^57 zXEZpjlOevD-m$UR;B3CZ7MiMT1Tb^PmhUKwU7ykQ%42PuXa8l3^ZNqZeE~!-`z-1s zjvSHYca5W~wOz#I>U=9iD?#-Ax6_qPpGABP`+Vu>RUPliUTDt>=(Zl{jS8i1<>0(# z%7M(obuWjWA4HCgB#oLPPa8}f`nqUWaQ|q-4I6{xt8JT3U9*T>{RJve7!I%cW@ur# z^z@ULCD)82FHFl#o%#A~q=LCit5zmKrdR9UF(di`%F2Dtm$u6uaTkA(v@|tgZOg*} z)iCZaQl?pD5`9D5-5Kp`(hm-nIoe5%~CVXO7#?+3mIY{dwKEk0E=y^?wgQ71i+ zW_s$jtzq+%-p~sUCD$Axcbc49yydgBKw>h@Jvi)r;_};vdQzuDu3v`_3M4-xillt* zkxJ#_-|Xb;lx5SgzrJ+O#1kEVgVQ0}qc3}}Jvi8+*6MMeEMM~7IMS+u_&sTQ{gm(5 zm!pxd-hRC{a(CqJXk={n^r`RkNRrgjrH;mw_#!>y6~?JVq=`oTvbUyk^*ZfKZOcq0 z>b0HfVc|>9cBg$~tPwHcXNaCCdT8PaD?iX-GFUjq5Ik}0p>f}`-~&}A&kH{=ASaGL zH0^^CZ=aTFuaii0NgR+NXaz93RU5PenBDnxrUz1%<<-&GMir<~`DM!UO4O-m>hu!r zm=AXsT#_k2RXM>`H@*mQxjQUoH?-wwMExgex+3VCRQRQKX6YOYooQ=8rCL(MVAlmPi4qbZ)z(LTZ|HEYtdN+2pL(16{WP$U6J}m zJ8R8a1T{@Ni_~J3Xrh%xTPsg>OmwqErxn=BP_?qmTND%TX`jr~GFh8kV3PQb!Kcpk zV5@c(y@e-W5j9DxDn^yGpvWCTHPx~+X+b9Dt#QAxRjVq!pkJ#hw_uT0)q#Q|T2+~< zTs3J0-`55~sk&NKDFu_-cE&9_iR+jbcdy!4bn?Eux_#3jld2NBg=4?El(g=f1BsS3 zAvTBK-Y}FpcIb3vev44U+czFtrA>fUS(EgmYEtIA-?UhMX{LBK`nDG)>I~6EnSGDt zbzC!-ij}9@=PV4hOBl$MHA&uk=VpG{`4-By)xyWh^b`|yKX~WAesQV$Oa7>+QELKu zK=Zs#x_sKnJD2_RkjFy8!rV%}rP>g*LN=)~l=h|XZV+e^p>A=Txc_0`sRTVh+hjLc zR=q4kTxeNQ$+;z(n$)B#$*@mGEy&a@&2@|WY~lC=d`-mXhq7dMH*853UZ4J?xa{O1 z$K3|6lN_Gfpek3&X^W#i6?kD{Hag1LAKC9D*O|2RAo^n&BD?!jhqka>%ig8=Cm-z) z=RLN~Y~9YpEoJIxlU3Ea_oTB4%eYYmE`jGS4HKE`d1X(0GK_zthe%LgS6=E7kz*S3 z*3h-I+EJ*@+9gnanc>Nr9g_5~-Q@-eN2l)?(cdl!_S}6|?WwP`$!*s&Cng#p)gLT7wklnys3c7-VafS0?Kl1I(*8PH5%Rw#D71L8s6)wu47=h5uJFQ$_D=aEaKGc+@n6%pv z_`;%_rwgSj^AfT?_gS3Sb3ggBkfqnHA(Gq__nqQ(B?r%UnC*J}uK)OM35E4?r-Z0^ z1bcN)TLbqpY1#E!ilrCoRs-58%8+}= z{T}*t6gCX^o~DU>?*3fhxq#oXj1!$bi(L$T7Ns7V60InWSnFlvaQXfU^Jdu2f`ZBQ zQQr<-$4A(%?%J&LbZ>{q^j_$D<%YQIRD_ z>i9oy*f$-cQOkb}Rm)%5=tH}{>Hfgu??s27XY=5~C6-q%Zr$~i8kzig;P7iZm|AG8 z_8rTxfJLpR2i_=tz3gQ4x$MffRw0KbRQZK!S zE@Xf3!(HdaG@k{6M>0;`HW4}Gn4G`AUe;!mCr@A!Ti9)Be!S#i-C!S&l)J|F>y}=J z504!bZxdV6#Y5KKQ5}^?E(yD|^7|_(oqej@I=TEfp2}Mh2sOxnb99`PSlk*7=yuv> zWuH7buJEEEjd$9f7tXb#&kEcz-Ggu->D;M!mC>1YSxh0&{eI<{H5J_%?_9r_2<%NU zR*jdFwf)c}*;%UyUDIsB#5IlNW-Jh2`#R|M=diBulZh4YGMJVVuf}>&vijo{9qy_Q zsSAfw3;!SP-YP22Y;D)ZT|#gPkPzJ6gS)%CyAv$9gu;TmySsbn!rk2^I0O&2E9vgl z>0Vju+yD5+KKVJQQPi|&$~&cM-q$lJV3UkuSt|sXl>p%NBCh8qm~K#K(Y#Ir746+D~W^*iR|_^1`^@ z)SU2CFn?4OaUC*(WZ`Xsk_U>`%7~Q?BwPfK+jx9aDiS`P&OQ}BWN(&zWHq!GcL;#4 zo(zf<=dCRj*G4e6+6U~f->@KfHLl7{o&9cB>a#l*m3@azBvgxiZ69)w7e}*?slJ>% z?JVCccT`ED6!h{`s!SnaaIU1`7)qcHP5Hr-Y=hXb%aDXTiNk6Fhu-m0_K@iO z#w^Gud&DMNF}J-XWJO+#j-kSjfYU9iI(m$;VzB-C>dAGba>VFpAaoZepVK!q`WSK; zDK{BylyMcN2yE-s8C~=eD1#ipb0&B<^Jw==>kI zyJW6gQh)EDX45*Ya)4k1g?D3{-+Zc|T`zD(<`|n0Y9YSJ#E8ru@j{lp8oq6cQuWl- z?_S;uFPhS{RinSz*o@FFkYYS`CwFD!OA8{L<=I4vn2SgWU`nx9jlCE@i!16<+0w1j z&=WcMeFZJs%RwxBMI;8}Bq{4KS6VHlc+21xh`t^A+JG$qy;wQB-_6uNw04H zm>0aJaM89CYE=`=6I`F3bzR=gN@1fNysA+%NDsjdxtgOG73_N8BM>=&J=24wTp(Db zpdO=KYD6Suwg>rQH#|8a z?6`YwutcJaH)0=r?Q;E5JvM|ay$Wu?*KDEJa*@`Ikn}>AJv@&43k=Wqk5Q$Gs^9Px zd^zt0c-3Y1N8pNhgNu0QW8A%^{z{qO@4sIkF)CRExDUp>p%sy1@2&2`I_n z=%fPj_5eH+Fxm5!+wJ1~AL)(NZMaOiWYL;##>}wKxiQY06a&#U7m_sA*!BzeY6}T+ zH6T1jU;w((@R18hB42zG7wrl5*keZx5~dc%ju<_IbWP3Ov#~`|XYL5NDHbKZQhMOp zZWr$Mj?fO%GLsFB*bJu!xu7O3r7R^crE+KW?8;)a3r=7Gbo0%rQ+-#jeVfCYOPf=h zTbo0g$wev^F1bYP(lfpG$=s#t=vqFXD+dtyn3SV+5_#AUPsV^z2CfW62l$|niMBg5VM z^Ca$b#uV^1R)dF$tx9Lg-bZUFbNk+Sa(u@*Gd+>*|DY53LgrrzXmvqSz6dLuj z+Ey8vjpAwi6P_5yZ!*z*DGhmRlVK(XxKibz%OoHiBvy&#V()QvPCs+AtAS%ws~9Xz z5CUDn)rn!>NvhbYsvI`#GUpDzFKL-<-@Olfw;R8%*0cUCd-2l?%2_mO5h7nZn{u-O zO{ZN&n2Uhj_Zq7buop0OBMAx_@Vg@@gi}z za#$}FH3c;pHMNt`$LeYHq5Tf_B5IdpH*;8QgfG>H@mX@B5aWaB#2&^6fr&(n4B&AELhEM);=3o+|WXxNnG`ZwNEoJmRVLlZMNdMmYlb;!Q%4t=Ea1KrXA=tz&k} zIq)R{-c=;BOrLKF{*c!$(nQ9$He!{`*jXfsKyyuwq)D?flZ^G0Z=ur^-Ko1I-kkP| zytd{gWc%^>2Q7ICw&rM2g}#A>Ous=6H%2+3vd(D0cSxS|^fWf(h8_&#!e5YGkZH%h zY4?`gM0c|y)=4)k)lU*Fuz1-YyHzL&X(_|4mj|~!KrN5KvQJ8ZH=k60;%Cs`e)c+^ zPCGrGZrGQVMs>^*(gagL6yIE{TsOV`QaoE{%kk=6=HtDCGN8F+{H^3V&bJg6)lx)J%{Y;ycA`tEr9~m>QwV#`N~mk_H2GjO;zpm`ZHk#(Ue(C zHM4>WilA9~ng)zQ8PB2ZT^Ua)iN(6cKw9R&DVkdTCfQtd#nkIp6er@=7>C_;jrlb0 zQqB2qdg>aLHEs0^K7^HtRF;rddS#c^Y+uC&Ls!bszgMAmHIdSe2Ua-YCA65*INKOB zPdLWzm=4hTA-z zBQOLrB$NHZKxvFCiIbK$tBj^M$Eh-H zXNvVu)STp0%0voTo0Tq6d6=kG3WNIO@Jxqg9hv7D%-iB_Eg`ufS7=V?6fDnK7K3XC zQFFaxjaZX zexUBrt?saS^rfBR0jF{ba7n!SV33>rNrq{Jgqz|-&_Qi7IcM@}7PZ{7%(I+GgRjBc z@IcIg9nh+@9I%;zag)=;E^-69iX+is4%9^hjKL>@t`psTP28CWCm+`J+O zyc(&ms&+oL*3?t$_A$8!yz^pVr2Z@lxX#g?Y$b>ma$rA~!Y~*fG%(H&tVN>NE>{)V0yPTS3+_e(DHveQrH4c7iLK6ywyi zf!dc#GzKdHK+Me^?u|CF>;ut>*I2SoJ{b zcns7mH)5a=MMu)66a}H=c|Jyzz7%YFJTi69OCv$n!8WbpnC?kFjpsSv#a)=Ky9moxd`!zq?C9MO~*H3M#cq*7}>1?_q9S-<1MZ)K2P8m=(`$4UO5NIBQ5sREyw z0-qIlDi{M{@n2w3YCzTK+Q9aUYGBRs5^GajVzwX_!s`URdn^9%o4B>`n_1XEQV7gl z|InA{C6sgpZm)}tRC_6~O!nvVWaAz!(kU8av=FfeZMt<^KW$1_ro-VKJ3{2iyv>!U z%E*ayEJRADcpo29BQ80l6qeTy`Lt$4i6J+NR9F{BA0IN%vxD|k+&zv*vqPGY1ba~A ztGas{k8TDr_7M7x#8+c?0FMe?bm72j_ZDrc!~p~MV4m1bQ2P9)z)cH`fH>L0rnpTe zKo7=P7LGSV*d`pXmNG-gffI;{Ax0UgfW-BI4(I?t#~`Py$idMB|8~s-u%gTuqbWaY zGp^_wj46Pi1{UI|Yd9+E=c{Y!n@A}6#c#sM$vWwq3`qE41`8{JK6BL%60n3Tqp_f> zQuLDaizk(VRt3mWR@J=q45T7UfuNR3K`6t>H2je!-Y|!=s%AT{OS1YJR6r~Qb=h_r zC`|;cDqf)6pG7Dk{GMGIC~n?4D6ZviV`%CclWzK?E3a6gRTEe+)hXWrzgq|ivJmfw zg+Vit-_7}MqSEi?Om=A>gYqT^*~1E@I+-p)*yXzezCZdon9X%!TtN;nRE1y;7y?;N zr{pE+kW9MZfGg@7+%z0hu*n20#7NYLd6j4Yv;sxpq@+_yLrbjIi+80zo?|=JT~rCl zowuu9qr0qMgQq!>I>)qBIzR@jz4ZoQ`%&)5X~;fdS?(!fV-l0wn+a6y$dLDghe}uh{x+b~KJQ6$RTk@%X zwtOCWYJEh#2i-tF>O1N?_E~z)z9j?L72K)<>~e2i0ncLRIv8s*=j|A4V&{(-m3eNM zz*0(Gp>s{ZoWcVb5TC;Pqv5!2lzdzCrWmDn_+}raxBn(Nr8i)+kaAV{oEak^;FbnB zrtrW6q?dnq1Eg1YKmcZi>*c#q1D7bgBQ`--mj;SOysb@qyd+I1GFF{Kj@Qe#Rmgj5 zRwU-570>P6o47D!P(pz-h`e#M9At4Sl&~B!rm0_)3-zUpJ>P77+*uqvb2E8HYe1Hd z%j{;c>;)bLo(MlPWx$xB#wRk*MUaTET$DD%ON1*R$jbs!6uGDsSE~{SZzsP_gR76$ z*juzE5M{A*5Sn4sqURIvEG5DQy_raE3*2qDZ=edr?Bjo{(tpe5S2g^#dg)i@Blu~-9&(fgpG8+&^@Gl+H_YY(Q)c=&|Q2J5% zX@Ll|tPuYq(5hKDnh2R#TRTbH85vj$I60X(>lwPs+8LWj2>(7V{^fo_T24p+)MFrt z7nt8a+VX$QA3-#Jqd0hqtH-7hlu%bmkd=K24O2gI_R=|9c)ky6U@B>-T&>J@n7P{;R$M^V9TG zg2gtI0ryA#!`y!j3KA&jW;$mU^S1P0C77R>pB~8B0%(zd{q+PZ`!BHZ_W>wuVrpUgGYb0W+`vNqUI)Fu ztsCFxl|NC^zsl-|`9Ej(V|Mrx7yW%m3X6zJ$o>~{G^d{~EVd44t#JQURsO;Z|D*K3 zbrx9gf2+fP%;SG=JguJ&=y?Yj|L61mx5oSDqyB>t{&&NJ{+r>yO#dsR|M|54M_{<6 zpE@iyH)wwP!)?l6bB5lJdFUs+^6yiL!r$%tb^ISD{T1~6nFMt_2%P~=^Z#t0^#8Mr z{RsSwK-)ghD*q=X{9hC0PpiD`k2U_UnfIslGwkmjrT3qc|LCoM%~XG7@#D$;kL&tt zKSPj*C(ua$)APgMM*8n7*3V4-pXUTHz#qo_V`2O6S^R3C|F!x0)q>^+@23Xhh?7A4 z%n|>69P4R*r;CYz2x5Qy|2vQ7uR#kI`1c0exf4GPE zIY(g$B_WVk5|DsjP~(r)=-(bakVX!qYW@Lb{^85u|0?~zoAryLD1*`bRDKXH!z_N^ zrTvxnPumgCKg$1u?fqAr|J_auG%}P_WWGE0l9l`J-vGqf{!V=p0=dBY?(FL?1^w^r zR%Os$6NGO4Ip7EW;17g=jD*;~`R@7ykMKW0xc`Xt!w3yIWpNRZ8!V7V8$mf0kPnX^ z@B$DaS>$K$Uw=#SJ@QY+{t@;&g7rsTB%~#jC4Pl%_#Lec;=jtP2ue$U*x(>$@n5z6 zlSTdgW6-<~LKy!Y*bRaY{|FM06$6F->zn{OHvFQef65o6o&WC<{yu(xO8JkP{%~sY zqtE_LZ2xBg8vhpZ{n+@sH~Jtr-Pd6?~VWa<{h-6#8=i-Ld;AgW`p$=qT122WyzDRd)qX*f}_auU(@u!fRqUQglGIAdo^(XEuPX+(-Jsmw$sgx{;et6&DX*_o$1%355y*EQ3eNsvsg}ug*N!EA)Qe04B z9KU#~V-}Vvhy3Ea>PgYMwU(V;W_N=pg)X>@&gbcT(S~DijBp!FU&Rr&aXBe4Ob!a_ zk3N>7nX)Wqn3KKbpM#QB4Q!|UKFb5yWgG2^P6NtrXm=8|dm(KGr8J9JLHBl^$77E& zgDma~-SH#Yb}9=rqL=hkDBluhHrfr#i(4nZ&@GVg$9LkwdO0H1aJck#C{0V}-g`YU&VGAJ7wPWi0d= z%9E04$Bw6K-`yiQ9UPD4rFpDsRlLzp)y^+pP0r2^TCC;Vm#}>ljNwjIQaRmoZ_iYl zySEg5oEdSSsB@tAFet!IUvkfv;jToKn{m%4=d45w4fc{>bo0#>(ApV>RiU)az_nT{ zQ(c}r3u`EF3kvAWu?1M+-qxqoi5NLVgE|30GW9Djc7`Dp1ux}j|9tUl%s4hoFmrR1 z^5U$z;*TqWIgc+=F!1&y3k^SZ82AVU1#c!&t|G;^X1J?y$}8;f;Gf0ZCZ~+5jC$Ow zbB@DkCmw>&n7T3ZF2}Tz<{r45jhh<;ljfMr4}6?uda@YQ&nJhbz%433QcZc~q%O{4 zTE(=n)*a*%qIqkl|Jf&?p`tG;uI^O%eLMc0h|<1BbWV`wg_(sbPqIq$JD*wix35a< zpUN`09G`X_AD)Npfm%9riAy^U?m&ZEL^b|IXUrzeCe0SjP}B6)nb{eXHF83G7iSko z7grYt7oexkio^WO)C^)7H{iW|TkK{drFTerA6&+*C&p>c?FYai#j4CXECx9ByF52k zpeH4s)VUajkMub?#%Zn_9}u=58N)|%HUE|wz&Dn@+L9GYq9vNS`F7a<2=vA(H9%wh zw`kg2x$Zoft4e5%lIX2*7RXxSS~(|vWON3^6pk7b=U|tDeETcHklfG$_gLr%D+Arz zV(C{Rnlfr#+fhzXEJFK9Vj9f?>4bvoRIWR(h>4U! zE-V()JW6Bp)P42wB)QU;9w(E#Y+tchOtzyZ3N5#2`)kfQ7*lr1u~-N@Hjbvbc&oD< z4&RQT9oM3R%0R>|H*n0+&8l5i(Cr|za~9Zz8v!@)orNfPrxM_2fv`*8|4zloS(Ik& zSTHzb*|xFo*yVoN`+e6dXY3}eCN0GWQXnklQ}E^~7tG_>N~Y1)l-OE9HL~e^u>6A#Tf?#M2*_Kz&?9rz z2k?1OCu@h`;}DjHH^Iok3q-ZmpwGMrvc6?&72YSBh~^$WwsJ?gX@0o^oEOS2>Y^KOJnO=PL8k$BxZy%i^<#uGDR6Fy*1C} zooK&x@|%mikb6ABgv^IC{hl7nYx(Sbr+SBzr@=>;-s#Nys(V<26-^$5uG@c=fe!Mp_-jd+2huSWt$2j2u})DkXtk~Jm+VJ%y_xaYpS zcklf&_lX?=PBE8A4sU1pOnpi>tgpf}yl=Cw)hD>yoDpbc87^-fCIK7vF5MvU@63xb5VY)r86 zN|0ntMIo}>>>jtcS9Ow7 zR1FXbN`S<&i{Z23%i)(}XTt@CR#XkyhFXsFm`l}l=J(;^X_@Gg4D!+y08vRJ6V9lQ zGA;ok{yoeQE|6m^`S@k}fLzkf?S^4o=Z``m7_lirjhl(f{tXmMnd$;~30%ev&{m<} zMj{d+2&^U#lhJ_%S?fI>69}_N#}eX8NYigf-<&3w5AzpmGp(i_&qKv+#!=F`RhF=- znbz&%jV%t(YM(B^m0R3`zctQ%3wM9#>f&`J0lwcp$}%#wbkVd2Z$Pw!jruKcJ_w*A zQMv0`@cD!~a5(TzXmpv~yQ+@+C^@S08K=B! zh0Y=K)cMumlx>GD*J~wIPlX9+^j|lTO4{6YL#j^D9^qGD##A2_v|fE1O{I6a)NE%H z%C3qg)j8Fd7G_ImZ1)B1RUPvKor>KEmm;b!NOTM5cHCzUtJ_bn+#gqc*}u>-grEB_ zg3(>=(0YJNy~U=_GvuR!IO3;5G3Ra=~-4t=yueDtKT3ePfM zG+b>xtjMM1Xvoo-u%gkT6c9Y`q%)eX`7fkV!KG26PqVX2WEoAtjYk*D} z1*;wZ0`jaD6ot}bnpJ(+t!vdLm|JX@@k~q5?xdn(ONh$Ypfl*gMx2UfoA=(=FgAO9 z*v8`Su`O(wbq%ZE1clp0ho!oDZxpF?(++%fceTFARb|ArIAAiBUF#l0Q#(*#hGf<) zcYEemHF-A&xKZ|0Cf%=U;qERKag;^Rz^|4bs*!&bs!il}J5_p7vxBk;hxvI1X#zy3ppby0VIDEp^q}?s;tI z#^L^);-oCY7=Vg06gy1# z(Y2S-+0p{a=$jYXQouW9sN)ZunAnOAXqc76<2P{3+#;W5fXdpRXTx6GcO)n};9@4$ z(%_v_QR&KvyqLBsc6){ChskcwYEPmEhs}34Ub)HOwAmB-^zgO?hTY9xghFw(vkWQY zY`V$5jY~15dPXZua;N`#;(R__+`Szj$7i=BZcwZ=av2-F(5^z=iyXFmWG#!iW7_B_e{lzf0Wu2 zHe!`;P2LFZxj#U?R~)^@k1f#dR({iHoWaVCRY`e0fD9WF0Y7FU5%Lh%_>`Z2^rC(` z)T5ZWKWD(N`m1`H)^ThPF7h6T1yMp`vf+kzH7%X6hnJFIYJh+fdM_a%|zQi|$}!$S@{*M&LDsKbtVohkKN5_o)tSNmgL{(>&}q@DshzWMI? zh^0>#%Z~#q47&_pOvxdqWZKh(?9^DVjJ+qI()VMpD%qu3x+QV@u*KJ>5G-K=?5Xtg<4#N@dXEw($rh^69(>My{@5J* zOz~~>IqX@@dH%We8TC2ysq>+)to6Ysm#zi*>G^>iLJ$nP>ehq5Fcp0qHqZBU*99yv zr0AAGWU1&D4slI@``w`Sd|%Nm2WEFDRNoyXo5kCA$Sp6umSvQ^f&pWSXuYF*@DC5r zU#T$l@;0TE14S2x#WivJQPm-4eQAkdkHE#caP6U&!R5N}&!8XteAh53;OgM&km?ZX zQ0mb15bLH!P@LhMk(?2nO(kMBsg;)nf#u3j!~FAB%3kRJJNa`ND%-+MEoCS!S4FhN zU0$4*MNMIVQ>E%iKx^^sYs{NZVnw&$;23sF4)mCOIh%cXTX{7MPE@c7AxWig#7zDB zdI_5R1_z6Zi}4{3u_f=6P!czVkdaiVDsXPilooWk2D{%4`pu^^jY{Igr(s53xG+x{ zsSJE(SVJ(C#^I^(P@{LTgW^lYdrBH46Dh$jXjm9iMC=0H^;@W^kbgTU=amq9UIKFF z=@Pok1rce%qM*{Ptt-oau>2K@JlVa{FF57wZ2#=@gv!(qNj}nzy7!k$U zFn95Roke{^_v3hLUeQ;taxJI3z^4-b!CxIc5&4kUtc`e-!5sd%6up8IAzM<&d>`W)q#LL(6=102;u~q ziY{4+w<1FK&`4kw@{L4DkMw)jy*NeD*rmcL81o|!pJfX5J*(>cUlldcn?%5J_aMKh zes#6hTDZp-(4LaHiJXy;0eV5_QTsx~L)39qxVd*gxtdvYOKu?n99tJ1ii^NH!fvDJ zF-Jr}(xoc%B<7&t;NW=c=5Q9XE>Gnx0HiOz#l-9^*c6~5^dRP-;o#wT!@#^M`}R4P@sgc2>siG?%wMi#C3?MJojEz?(d!J^V1=X`+n*jr z521r#nZS#*33w)CZ)LA_R!^*c+E;wbj`^Iu*{S>x1t2ey)n6dv5_U;C5H6YGed)#A z#Cxl1FJ^CccD&9Vd>U{H{T_M^byh)#aAv<)Hirvx2Df-r*u~V9qlqr_fJWIYp9}vI zP*Nhk0L9kajq_8Z0S8@;5@b|{iI za}3cw_(YUaqbXgxp*ZS{OH1GxtV_jBfixkeZs2)`&}2l?9505tO|&^Oq|%wkvB57z zVip(Ugdi@SMrRUnwxz)C6ietSKXqOBq)^6^BQW(Rf`8o!XUZ;qno-;}^<7R=Agep` z8A*}%!WM%Wnqz=bvckb!M}Nr4U#A6Y5z(oNY_G>0HoEODFY$Nzs8$gE@44jPyO`sc~Yy zd8WLe!qK$12tC5p;GjVWfOQ&&5pheZsbP2&d2Q<4oumStsE{6V(6%LaxUg5}x-zW*$DgS=-fcn!%1?;=9h2;b=a7H)5C_#WOEyRQC`8G#LfU7B^8WtwT4 zZJJRT+dEUQ&$n?7vF93F7rodK^!R#=9hS?cUMsf+=d@e0Tim@j;ivfT@%dOzSiP;6 z&3N=5hHrz;ska2S47SkFncSsqWZGr+Qt22Y*n(snrZ5Xk3h<>HQ%_iVO*~dED=Zo< zGWWHn(54)w;A;n#7kRpPhIvM{4Kpn0*wvD;lhu;ulJr=8QtXD`Z=((oMe|WT*F1cF zsJ`2}2)iKPlN&+ZN!%G5&P>;fCK}32%^a>A%}neh_EC5@qL<=h@}zP%x4ZVqN9n2b z?sV5D&1d?JhNi}7ZFrq@jW7*s0zM79hHdq-X>$)qo3WCBnQ%`-O2Xn}Es4yWQp|c#ObP2BtOI=HINrPLRTccIoQ&X-{wl+btvTD`3eXM2mTlkgB zVd1P@`I?qb-IMVn@LTEC`@_sxquI{#XHB_zB(~P_((OzXZK zp62>xRa^S^aoj^XJGPFf&56rm8FV2#$&SJqBx?PPoOEgftY5wE9NnWI;@TveEQ=(c*Evqjox+K1Jr+GiEXPT<2OVwR!gh?h=g z)-iQZ$9XJUc=2*Ce{^FsdURrxaa3?meb3FT`T}OJeKdZQb<}0_Y7}`iBpp9JiaXQM z*74n*SNC1ah1p)^=vulDR}|;7>(kc57->`0(6Qyd<=(;i!S=ys%eYH%>9ERi%3jK8 z%W{3ch_+g5h11G<%Rv3;72wclPGHVpuCd}&hp#2F>B;$inRXewh2Aw}nR)rQ53TpI zH##St%Qr2j@A>w;XC71Tk#AgYz;Db>=+(Vj@5OG=ZWQG3$DUPORBb{Td|T4#$kTDF zwP@t4p~ZkFq8QbXkcdcC(5=vj7~Ei(h~QdiWfp~Lk#;SuMyF<(rM0%JK2;evw#5<_ z;uew?Qu~sA`Iq^`ilT~Sil&NKiUW$Aig$`Zif@Yzi(eKq6(bZ|7IPKD6pI#{7ONI} z7lRiIP$poY5`%L_T1#KZCdhdjNw2d-(zi4ki$c3``pgl^ARoY!?jCm(=$K zF+>@}EO@G~lP{vLlrL?UN|#F)+d9@d$~xgX_&VA;<2vO!=Q`;+>pJZ^?>fmk^E&l9 z_d5AH`+DUi%D&E|XWos3lq9u;Q2xfG-(>Y9)V|<8*FM(1!anjo?f&~oK4aHG@qUUy zFcWEGeWp<+@njs_9O-x@9aF_!z_3iR8k3&M`=P-B%OSi0u7PhuqWv$8Q%%&2fi+e& z_%*3Dd&czrx-ly;?Npv>vWh2hX>nRul-epy6-|2QSvi55Xh0)C z44@DrA0r>r1ak$07o#2X1Lh+p8bBOKEE4xdlTn#bG`eEGVm^C5e?E7y0R=l1J9Q%!bDUcITs(XH z7^R+kM_yaLm&#qr;OqDvDlwJFQt^^BMb2^v`Dle`B?q;0#dC#oC4nMh6@TS%Dg!Ds zstKxUDhDd0c-eT{c-?q#%mM@{6LAw^6Xl)iLC^Ros!WxR5-+8@?5|QgQGnJ|PwZyfgw*<7rw$!$iwzReswlua>dPI6;c=&llb7`~-w@bGR>J-r_>Z#}{ zt;zG1dh0&=eiQkm?T+vk0l=`^(r24G-#0#r33v2VVncMPn>?X)2#3uYE>?R^NFgG|i z95~oT@K?UF{McFed&E0<{FS z2(=1gVSGh=vB>z~EZ(%C1+oRQl|x-`9a&wICQtcuU4}XDlt;yt;$i))R{4!4QTapIUPu=su(fC4st(aNnDEO<7k2_Rv z&hPh6CRPeP`ENd*80e7dywb_D{bXB3r^&9&uFbBYAn^xhQOF~~ zK>}b&{bTqkvshjb#(@t)pb2nhIm$y9y;Mfd@jLN7@gwvl^dk(&@XrX)_16tp^!DF3Jc((b}8MSY7Z8g)Vfm`E@&Kcg-j zdmaw7G$>i{LcjBMBzvqRxKZ#uKg2E(eWoTTZI}u$H9xB^mvtBh%w;HB@To2veV8Wn zW#nD|xvtJ`pDWid$CFFBjdFIKs{*|6?Ia%Zyi&Z>yjHwT8R;1T8L=5*x*fXNgc6nN zmBN+Mm4cO$m70~RmAZDib_#YHaz*5mS~FU6OViwiHzKF0tElaI9zK^(`=`@u<#rXQ zGmX=YlZ_LNGmTU4$KOxBpBS5?pC;eOK1@7FJXHIlwmL4p!?q#8H$3Yo9uUxshH6iw2Vgn+9VA%L_^MFbB^D+Y6-`v=|h;?*3$+WRzr@ejC;(oXj3<5-Z=rDDyG1&=Z=4ecZZLO8yz7TE*UWxK^0LFVHt4{@tdfXD88s!#3;TFON()xiSx{tmg>NB zv@N4v5Mnq&4p$0S3V#S^2$veC6|WWF6VDU(9_JpHBs{uTpci9Hbjx%L%P7Smm9eL( zr)j9EuW9VI<{Wd&s&_7;F~Saajj_Y*p=-MizDu}QcvQGsctChTct&^y%6!vg(`eJo zpFto6Dj6y@FiBn-PbNi1Q|1fVF&R>olA-jL47yCL%#`$b0d9dtf$)^# z6w{RBl;jlF6u43W<&yJ!oDqn6VZdcV#iYZ$!oq9kF>ndkcbQ5pXp|vJ_GaTYcKvO5 zdUzSh($vD##MH>t%G55wG?;yeVTgq!$s~0rWhWIgB_b&zB_dTO$zjCJ6rvWlma~@J zbZl5Rsh!Ew=z8=hV1eAp-ATmB#7V`;#VM;fp*fOslBb_%p1_9ClF*jWg3yN0YSna< z;gsc+?Ub2_#SFwsa2oC#&P?KC_Az)Gd?^3HOVAtcOnt7Kw{n=?Oaj6qY9MkVLL70_R2G1?Po^<~PYkkT)s9!+@I!_Rsnz4>yft2@@nZ#&475Dlb-qIQ{AX z`YPy6mfyI(IRy&@9x{+0JxgL-nSw9{o>b5&8(RKl9h4>tH#j#mWEbe$76y|fJS4cO z;Qh~+`Y)0ghml}{()|{?j`SlLu#>ol5qA-Vx*!a?tK`+8Xz+slNV{V6iy3%m&_x4x zJ|pOhR2iz{mc3MkEDcdG7-7IGdo>Gx=y%nVRP`DMmJMa=^KBLGJdZVe1B6zPP1k5Q z-RB1VIsK(7tt$2ePnswVOHDj=F7_quZI; zX}BCcyiV7{^~`oKiXPgK9rkW&vU zr`K4kdNQb868+rU)jQfdMAk(%2xFzBKczoqRjcnbvPxJ!w>P7SbrVZhZVGGmf z+p})AK5NghOn3rC-c`HNeCFl$x(!Y?7`sPmW9N*LgXkS{rr%gM_WIBn<}KC3s|Uyj z<_GEr?g#RRsACk+G18*}rXjdNw1KR_v_W1=O3P}AV+l&D%%;Ysgm#pzCqaM7X31*F zj@x{w=2gwkeB{!*`VY4Elh^gfT1z(#MAm!@-qnw$g|@JDQ#Df!Q}vKbxbwJ+$@3zM zB1^zUgQLykm&Y;3ipOWJIfJ#B9WPs&$3 zTjj3%j`EK;u3fKDu4S+3u5GUguXV4X?yc{&@4fB?J!3wEerSG-<6ZM!^zQW@_3rjw z@CJI%Jf(tEm3r4cN6%bG_VYVcO9q)e0lYgx8yefJ)TWf96r%)CNB=ON>(mCgS*|?W9PDWKYdE9a7=bBEk0c(eJ0&+RCAPTRNoA8 z4{ncQ563Lrsm;lsd6sj4a|ZWxd1rZRd2jiY=gY7oq3bS36!)5w_xeNs9p4`L=vbN_ zSEsA@-kak$hi^`EzT_O`9OP`|?7ZCecZGL>e;?`?>Js|CyX9@`WeZYMm3FYUsJ5t1 zuMU}x8{HILEgd4A6rEtA9UY&xck6@8%6?0qOXVTB8vGndMNNfnMMuR`1$c!(h56iz zIr}+^Ih;9DwG^vV>YnUU?pZ*ad~oia)oK-qb;PZG<(C+r=^ceMN5JB za}lT4^T)+YPL0^MmCLJ5?eFiuTmz3QTccY;Ta#OZxQ8FZTjN_JTFXH{%cpR!^7imf zrLSikXYA>&%Q_Od5WUZI-fOv7hCZo1xj2zJv0Gki_OXBd^0e?+dXIXecjCj#!du7d z%-coyjqnAk5h`;OM-&ulnOKb&Kr97zm1Kovh-ArVJYa`$oAIdo9OokGGU@9JH=fJe zv8~WP<|u5!N}g2@uQTOKC5SJDE9-;99|)iH6%Q_JVrcQJm@^JJf1xF zJg_{;8A2HZV+v#NW0Z0odsbtOpi3ou9^U5AI7;D7vz`bh;I~C%PHB z?{vL&!F8c^MRbiTUsf_zB2-#da#eCxLRbEu_O3i0%CGI4>{}&iQesvK2~%79tHQBB7+Bw5U+hqF+?%SJ9&SRT9xoByFMvQSZ6$xyRfyM)f|=AMf*d zpX&3ed(L&8bFS+;%YDv$zUR7h%7V(2j7~J3Z9LQ%Q&!+}vFdy5V9(RnRgcybe8q%I zhew4MojLebIebZY#hI!z2hOCeI%ILl>XFqot2^iJ=Dqc9@qTaJcKhp|FMB@j>GA3E z`Qr1@=kxcr!E4_N?obM>ZN9~i?se={`E2>V^?B>d)|S@x*4M4At#6XLq(9;N3j2=7 zZ-}2|6JXP7v(;u!K}dmeK}>;8fl|RUn}qmPz3;o9ygS$UbzNEV2ft?l7qTz3Uog2a z@!9HUV!lViPloR@dTMe1OyikntM2B$zWGJp$sViL#jT59y?XxY?W@jL@7-TId@=ZJ@byUdk_Uqu3e&;^tZ#VmIelzGh(to5+bnx`xib2sq*YCkU z#{Mw=A@w8p$NV3wK}<2XgtG~GbFW;yfAQMII|+AxWdGRygZ1Oh_ebB)41DOHJ5Pn+ zsGgyop+QlnXcmq&m0FN&eOci}dIYgT>-^XYDJq01`^VyK$7?w$D5ZoF6!$CL+pthw zV(hePbIEDqN5zgx z9F=@5U!m5e|D5#q{dK;Wge~xY=>N<8vd7BTOS~x+0(N{`)K56d#F~!8_qg@SXTw_}Tci_!RX(8g1-s z{Tce2`m>94iwui2QYO`_)K99PP_Ga@vm@?q&0c4`d*U(iFv%w}XVYdU&rYAcY4(O} z!fspAzCzcN`g+@BYvtQAx^4UR4!B~9)S22-Wt5Vf><{j(qxBVyVrpzkF0nhkznLb- z)GL`>W50RtRhpu{;iiqdh}QPjL~94I<+iUP#?Ol%?I!Ie+aM(&u|)ihSW@EWMES(& ziTf^Xzcl(%#-)EQRX>0HeBk-zh4hH!5g`%8h!qiG5q8Gr6}Sq$3X2M()#|IqRf$$j zuENHP#7o6bj2|DbGCkF1v&7z@d)>i0@wJ26QP!c>@vI|3 zQ>0In{IzH0;W$g8p*Gn_cX?(StvVM+qj(pA-mJCapCHp{1d_(B^&g4W}g?-oW z?!Ei`?%lgxcZ=>my!#i;KG;2&8tmIKuVbOUL9~9f_9xel*1L=M8QJ=-zaSkyx!>kf zK*uZNcg9bQtBjM3uNb!)Z#6z;oMt?K;>>9})27R*ZJ)AT*wM$58p1&azUm-sc3*p1D)xjk=2XMzT0J%_WV$Qkq#(<)+4?S~wk?#=EgI^RL zVR$ZB2p$7439nqpeSwKNoIfE}@NLY00{9zKKsgT%03gOC*W`z~tT z;uU$e9CQ&I2*o2#SSr;zEHBjJcqpWYJ}!R}F~#P#!;FWe?{? z*MX+u;(?QjxnSDIAw8BGuN!*FaOPZOl0^s$`Rn7x=7y(M6hB-amx!A5p}EwQ7mFLW z1h|>72Gt`i#f^3iuBL;V%6JDNS5qVkwl9C}Bd~Ln<;L&U=az+A3%nowY!M2{k5nkI z_VeMdSAaTfc_lyx`a?zIyh)(Tt8%+MS3}sN5>hRa=FDH65KdS{Bpos@82z|JX-6q6 zTNIB;J+TFNr02H4jF;OeW#9))rns;-+#FZP7fI=JEzMC z7ZH9R8zagyg!15G9Kcc$%m9-)-FnD^pk;soxIa0%BELxdnsIrcZGd1F0qgT|;MfZG zl2~_8x0OKMZX^Z?I07J1&;yXa;T=bi;U`%IWD&}V3m{5hEmbiI0un*JVyMd_3OkG- z0-9H#P7VpTkRXAzP{phfsKk{8-cS5$+K*5NidCQrm;yFSc3>9=OpEN|hT6!H1lHxi zpTNkLC5}+#$TRX7hB*yh+iPz-^htb1myuvVP8fmyKN?Zahx)^Syjw!=ThRr7sq74!!RqdLric z?u>X7kr(kO;#t@#3)R~wXm|B@yn9e(8ZW9t{ymla*SXSIJ7@k7Sb$yIav=Y87Oapm5G zd&fJ>?z!FT3O*NnE%;UNnU2RDi5>fcBcn;tA<;3>#OM{#-sSqS=CNA+OF#8>q}|Ki ze`bG~z3-N+6w7f@bL>sqndwY9b$eZVLwk*@=2xw+nq4)xYH@Y0uDY(Vgc1X5ml~2D zk`a=+uco}l*nhVFS^rr7Wz~<tlA0-;47&SQx8>QAWwnwd9x?Qp@Ri!1r^>NFb*0`2|*39Ka6`2)X6-5;f zD|%-w^>R`%G}Ou%o2!_s=04tC#eIUivb&gK6gW`4dfs{Rd9U-f=jrDY=9t>(+svAxsy0b&ikh;TlA7X{)bRB1 zjPT8eYtCF-RlTa_YxUQff-M&(CRl!V8u;A%u6M!5RpThy`Q%KeOiHFpCY9z$bE1)G z&Qj!gI?39}Is|Qk4neP4w^~PAo2IyHoaeY;>37nq(%#b6(iY>E={_b^YsC>WWM=P2{*+fo8@aZ z1ROYSGGA`yl)QB{{##EJKU}s{ZKcS~>XRqz9x6-xOxIHjS%-M-rOV-p4(reRg(^Jw_(#hKDlwF%$K{~IE zuZynpsWy>RU$sBDJS~Vb_Rwt7Z8B`qXu>sFHkmhBH<>jV zH0d=NRT}Ty=9TZ2?X|~ir`K+;Jgd@I#-&2fb7#;K>Rc$}J zJJ#UyvgUo|S3(@_XB;FQ+U>N}2|y!UqMUokJ(M1o9;#iT#{E(EX(1iu+2tq8H8l(sP;R#95}trZgrmsX6`PY(!NBMn%yg zdBLTsYw^|bSK}|mUmL6*yfk>_!{s-v8mqO=n>>{ZXP>EF@Z!a4_w$pVimI)1Xi4hI z>75j(dI3YNv3RkdD|(LTv(yilzP^y`+Pd0st<0TkX=j^@;VHZRwo} z&aVnC>@Xx_50@P(I~;zf;O4`fC-ee*ud?M*)3uZx%qW5RwVAcF8xgl7!0r03f4XkY z3sg5tG<7noHJfTyVj61JX;!4{qFk!nl72dUbNcP{9%ZcAU#7i8Jx0+Qjap;y4y0_ zau=?4Agj-+$G731qt+hZPK^#E1*+bjy{9d+Ex&DhTUOidw%oRY^|x$;_MO^)D*I%F zhq6cV(YHs>PIGb#aC4queZ>06+_atM+sw0dZjB2n4GLSd`*v*RXWxdcM_+lAoqQS? zf4e{Hv(+1;7uqjo;CHDzWaav{Q=Hrxy>iIfL6)^uqv5Ief?%~@^xn=6r)a&{aaE}o2nm`w56OiJk5YG6 zPw}6dMN-j>Olc(;W>NDs{!z>Y=qOf;1UNR+T%NXibA`)!m-7yBj&bBT`#4gZU7W)} ze(CPgywcpT%&;9{`C-{%+rzTtZ)V)2T)(xu14ubt+q_e-g_4HNTEdX7g{>tH> zGOr}BD_&c@PI;wy%|8|d0I@E|!j?HL^E9-vu(mMB-I2F7FLyzvRsPKzsy9{dw6%9f zidULdMpYU``nFxT5uXRJ%8d89kHahHc1L&r9n&9^Ip+#ERK7pw)SR?A^L;|67#e9A z8En~+yEQj2x4?aeLv8CTmshvjroWutCf(!KT^+L|W^&Bjp6@RQZ$8_3(JF!Z{ldT? zzz6AcPwy%1dC|AB?@M1s-#>kZeapZ>U*SN@z{!D410@5y2AT)@s!$0 z-d)!A?E1x>2?jqX->U{B#T{fal=Ag6r_J&f(a*$X8qoB+rgs_5n;@nnhD{!yJRuoN zm_WeZm1&lpEpt}ptZb}ozpRAp4)M2%FB0>_&&a-?@YrDW{4U>1TN4+H8_67$IVc+> z+a{wVn87b=wK7wR9?->+X% zbRmUaKfj(??@2HUHR{ywoa(Q1B5gz3p-roaiTkm{vb3iYs*L*Qf2!r~Q%!r64uRHsng)7j0Aa&&C*#(L@`?Gui6+M`3# zXW(11dkdB8R6^M0WKWG$(vm`X5Mq;9H{tcv*Rw&B({=W=37_d#M>|Qkm{WI;PRMwfN;C)6I`5 z@3p^Xe!D^L9=p?SieA)>xNfD^}Cxh<+S-!`#p z`fIk=Jgs5Z+^8vR$!K}uzwG0pkAvA)bR3*Ba`W{qS)=r`re_(sPW@|RXUPAK^XWeIa@CDz z^aJ#*^d5R}aZoX5X!&{Y#`&xK0@LfP&smSyW1swA zyS>h-dvnmjIXw5mbcVrw{rgkz<3w{_=e*9v*QVE!Ysb|d55fh71ofUwKY7d4)?=l| zvZmEdfy!lM+RO!i(f*pRJ54dSG-uH8oBM@RajW_+bSJfKtlhFr%_w)8JMQarhizIn zlWJYtI=b(6AMZ}-F6!=&bczXxVZ|opQ5G>88w0U7N0N>e#eHhD?kj`iuXiS*dwC(e<9kJ@0#rd%l;B zPAr*NJn_hC`p2U!K{anSol*K=V8e_n>7{=xrB{uc4{YKsT~dE!M$wF;Gmgm>%N5!H)6`(&RLh(LIf^-qoPpZLoDWmyGS`+2c=jFWUffntqRKi~ zBEovl+QYJ8t!1T54P-4;Dv|M40$zDp43;~~mslEF5?Z{Ub(&S`9_F_D$ZX#g#i2(! zLmzxDdDmI>;Mcya%sJjF`S9-x-5tix%HLwyVng+mg`_RE}A?1uz2K zTWPJ#R(h*vt52(IE31_OPNBRR?hIeMVgL_67E-+LLHPsY(3wmAdEix4IsX(Z>U4YT z?UlDnJyV+xoW8b1X9=}o&oS|Or^ecb+Qzf>XCK7Y$2RoW_dk%RmuQe^+}`Nc;MUks z-_S@8%?n)+`ua3>iBY3ZX_e18?=?rhtbF&R`P=C+ZwfmL-@NP`-?^=m*~xrU|7P6^ z&lM@N1HEagC5DBDM-BHImKYw&@VQp>=IEPaZ;Ia>nOqdmaH4ZVr+w#?2iC{dxP9IK zp7kW}?3ooG-qD+nq zjlr9Zon;NaWzUXXWF?&WzIO0R|Bp!-7LGIXLuWlvf1>_K{n_4!dmlfqd*1N;-tz~~ zA3c9I_U_n+v^rV??H;X(cAwTbFC=(raL8Emqce|MES-_Rq~dNwPwLE>I@+>32ePUCfQOl_49rZaSLjPW)> zyG)&T9-ckr35#^TG5fA(WVi z$pn4|76oEqQ2>>DnuB8C#(W_%m?VIqA_7K;-Hytlpxqvizy=-dx`1+l^XC6W4my!W z_85sD6?}%LH;CNq641nNF@`1>tZGg?V}kvP@&POOe%;xfyx6M3lHZe zGk~jao~P?!rLlnNhvh;XO8=e{YY^qdjztDd$Z0`DKD5Y4aRjP6g-iv#2AqitA;WTd z3@MIMj6t+x(Me1|a|3>ud94Ev11j1RHkCr8QoujZSuTnZI(9 zy%6t0Qy+Q)=a+V5B51aeh*TFB5))};&=fQ(15Y02U3yr&B6Rr>5$ZZXQlR+|g--^E z=T~%&)txC+J7=K+Aguy>pa)GQL`o=557KG`U_8?pe9h@plPH1;bzJu3G?m^$DiRE0E~PtFFGCcP&*=*07k6? zoywwtm_|sA!cPqmBGi>fW>5zWMPeZR5_oTClJI1EB9m|K1_%S-Z=S&-@%gofWe}M4 zfeGEfxQ1GsLL`GYQIMN<&^1s)iQ@tvf-e9)Q0aC=GFc$h6qE!{P($wYacp8Vh}C6+ zNkl?|04OKP0W>b?W#l0ggkTaE>>`jp3wbHRWC+3{K!>5E0;O|!fkK+Y`88pDgFqn= zu3@NPZafEoDRqegA#s2n2pkCTfMEn+r$aFxIQZ9Li9@;|6hv+7VY&><3CS@mkzXJF zG7)_Q^KdlcXT?!gOF%Km{E!f2(5N8W;q4rWAUxR6vmXB{1Vw=?2Nn}hJS(_QAp=?8)Z82gsYC<8}@C)aEasDqaVIm?oN<&06XjH`*;^vAk^qXu z73stX7DagfiOE8>4pa@u&;as3wA=Tp8^1vgn3y=!A12ml3*AtF)iCAJd z-R9Rap$ZsTBA5v$7b?d3znhKz)cnT+e=P9-&H`)^bIwfzWa{-bha+J@dzV?r6S84J z2p0Tv+DQEHWX2^zD|)0fXrXS7{_4oUCHl+&0C^L4OcD~g4$8*;2*UZg!1-c^!tZmi z^1s2x6aH5v&K$1Tud=|`D}GmqA&dN~RLEMUGk#qxY)av5{00VB;{5;Lb=*G+{RdfK zm7yfo4g@e)Ae$>kHQR z;UjHE{A1vNro8P43BKSbxR^KM7shwkop;GDS({~+Z#JZTKF@Iinj!x{b^cnSRB3Ux$?tOZdizV=jSa3TcXDi=%^%nhL` zxCf@Z^Hg;ldxe}NR#g>~WX;jr9=I!D(TSeO|D*XeL{k49wEz?bIcNn3%Xk(Ujb1^3 z51cUH0+wVsO3vTqJw<> zRz!1_!eDR8-O8H`J<7Ak%1C0>z|H<}_Blz z=wv!cmeXjcji4v$S(3jAP?UdXq>~uL`7{y$C-AiOg!i?a0n5WB4WGhHjD^f=f-nv) zzy+vjFD8jKGQuQUanuytR1Q0xlHgZZkpJJ&T436OVE_aHXouhq7deer$4wWNz~U#5 zJf2M;2oN-4;Ro@!QIgon;FyVu3`sZ@A&T*<$jJdKW&(W?1fLjC&EjhcXXT{`bW3g) zxa+~JpmW7wIJJ`yqr;_oatasaubq?l@0b;BL3JFo|5wCJ6&c+!I!^w(e1zOLxoFvU zvH{@QjjQx|X)~!kl4TMXM=i(nVzMw(M+J@w{BK?51hRD{u~xwI4gwj1x+nCB2s+th zIFe|{rzI#k5@|CIDhBrNGMp3sXao0g=&+Al3NDbXBcvKIPg00*w?I|1Tv#=NoakzJ zG~7zIHaL<7+8{^L9Bl-LFRHQ#VU-EzM^`DxflF~>Ye{0USWIRVr?*2j!zK#l@97-V zK!_S=?r0JO;6N}R-sI;?rJ;X9@Hq+-09C1U!D$lj20Y*3ZAoMR?L-v-fVg%rNEdu)dl$M^dM6m0E&{Qw_p!Ik$C+P zmBxMq&eVazEH+t zxKJX%iINeuxUWtyp98QW0r=_S)!+gI04QHu4^$d@_62!(c+wFHLYuBG%ng?aZ80`mdQ$y=y_c?UwKtJ{(&c)Eu=o?!>bkY&+` zYoSbF@*x2(u-F?;#<7>MHNfiu>@t6Kk4Jp00LH(@<=JX;k2mVkAfhcy`?C@MN~MSxJLq(_uWSS|sv zP`3w0l4})PMG|tbH{{Ha+mn_JH5qr*NR1#0k5iy}_%qPR%_PB|4A2drYHIV2iRRahzXT3P`eyZ!mEM2_8WZer^Fdeq#WMvXzC45yaPPxnh`& zAO=6TfEd5-sgdk)pjq^WTxp`$7QQeN8(IFM2~2)j&?IyoSQs=Be1C%RjBFXUf+Us- zYBk_A0h-Czle^A=m*X7N2%3TQv)YH}6($9m3%7!hj24j{!~rwYW|JK?U4Bjwh4KvpteX9#-ctZf<1=0kSz2mpF+%S`w?Jg-Ke& z*>Ldcf$laUyvvZ%c{dw}3i;Q!AjJ9LE&zi{u?1^-a4iqDVEw)IJLjt`DjSoE`T>35 b;%p+IIS;z?$G`mLE?{`ezG163b=>~|wenT7 literal 0 HcmV?d00001 diff --git a/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj b/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj index a22c6b955f0..c6f7c0cd142 100644 --- a/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj +++ b/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj @@ -495,6 +495,8 @@ C912D5742E3131C10019959D /* ZMConversation+ChannelHistoryDepth.swift in Sources */ = {isa = PBXBuildFile; fileRef = C912D5732E3131C10019959D /* ZMConversation+ChannelHistoryDepth.swift */; }; C95C70682E535781004E4C79 /* Feature.ConsumableNotifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = C95C70672E535781004E4C79 /* Feature.ConsumableNotifications.swift */; }; C9954F8A2E38CA8600A5EB01 /* WireMessagingDomain in Frameworks */ = {isa = PBXBuildFile; productRef = C9954F892E38CA8600A5EB01 /* WireMessagingDomain */; }; + C9B8EC2E2E5C91C400183723 /* store2-129-0.wiredatabase in Resources */ = {isa = PBXBuildFile; fileRef = C9B8EC2D2E5C91C400183723 /* store2-129-0.wiredatabase */; }; + C9B8EC302E5C947500183723 /* ZMConversation+CellsState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9B8EC2F2E5C947500183723 /* ZMConversation+CellsState.swift */; }; C9D574D32CEF630500012A0E /* TypingUsers.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9D574D22CEF630500012A0E /* TypingUsers.swift */; }; C9D574D52CEF63AC00012A0E /* NSManagedObjectContext+TypingUsers.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9D574D42CEF63AC00012A0E /* NSManagedObjectContext+TypingUsers.swift */; }; CB181C7E2D3F8D8400A80AB4 /* OneOnOneSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB181C7D2D3F8D7F00A80AB4 /* OneOnOneSource.swift */; }; @@ -1380,6 +1382,9 @@ BFFBFD941D59E49D0079773E /* ZMClientMessageTests+Deletion.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ZMClientMessageTests+Deletion.swift"; sourceTree = ""; }; C912D5732E3131C10019959D /* ZMConversation+ChannelHistoryDepth.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZMConversation+ChannelHistoryDepth.swift"; sourceTree = ""; }; C95C70672E535781004E4C79 /* Feature.ConsumableNotifications.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Feature.ConsumableNotifications.swift; sourceTree = ""; }; + C9B8EC2C2E5C60BD00183723 /* zmessaging2.129.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.129.0.xcdatamodel; sourceTree = ""; }; + C9B8EC2D2E5C91C400183723 /* store2-129-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-129-0.wiredatabase"; sourceTree = ""; }; + C9B8EC2F2E5C947500183723 /* ZMConversation+CellsState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZMConversation+CellsState.swift"; sourceTree = ""; }; C9D574D22CEF630500012A0E /* TypingUsers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypingUsers.swift; sourceTree = ""; }; C9D574D42CEF63AC00012A0E /* NSManagedObjectContext+TypingUsers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+TypingUsers.swift"; sourceTree = ""; }; CB181C7D2D3F8D7F00A80AB4 /* OneOnOneSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OneOnOneSource.swift; sourceTree = ""; }; @@ -2826,6 +2831,7 @@ CB5212112D95A76800CF8099 /* ZMConversation+PrivateChannelPermission.swift */, C912D5732E3131C10019959D /* ZMConversation+ChannelHistoryDepth.swift */, CBED6B432D91B2F500328BED /* ZMConversation+ConversationGroupType.swift */, + C9B8EC2F2E5C947500183723 /* ZMConversation+CellsState.swift */, 63D41E4E2452EA080076826F /* ZMConversation+SelfConversation.swift */, A95E7BF4239134E600935B88 /* ZMConversation+Participants.swift */, A90B3E2C23A255D5003EFED4 /* ZMConversation+Creation.swift */, @@ -3625,6 +3631,7 @@ F9C9A83D1CAEDBC40039E10C /* Resources */ = { isa = PBXGroup; children = ( + C9B8EC2D2E5C91C400183723 /* store2-129-0.wiredatabase */, CBB67B692E33FA2200FA52AA /* store2-128-0.wiredatabase */, 01943A0C2E01A9B50005CD1E /* store2-127-0.wiredatabase */, CBAEABE82DC8DA8A00C62C4E /* store2-126-0.wiredatabase */, @@ -3959,6 +3966,7 @@ 16058B2E2BDBAF73003C82C2 /* store2-117-0.wiredatabase in Resources */, 06EED73F2525D5B90014FE1E /* store2-87-0.wiredatabase in Resources */, EE9ADC47286F38D1002B2148 /* store2-102-0.wiredatabase in Resources */, + C9B8EC2E2E5C91C400183723 /* store2-129-0.wiredatabase in Resources */, 16500C0325E3A7F80021B3AE /* store2-90-0.wiredatabase in Resources */, E6BDA1152B1642A400488D92 /* store2-110-0.wiredatabase in Resources */, EE980FB22834EB3A00CC6B9F /* store2-100-0.wiredatabase in Resources */, @@ -4180,6 +4188,7 @@ 0651D00623FC481B00411A22 /* ZMAssetClientMessage+Confirmations.swift in Sources */, CB50EB782DF07003005EECD7 /* MultipartAttachment.swift in Sources */, 54E3EE471F61A78B00A261E3 /* ZMAssetClientMessage+Deletion.swift in Sources */, + C9B8EC302E5C947500183723 /* ZMConversation+CellsState.swift in Sources */, F9331C781CB4165100139ECC /* NSString+ZMPersonName.m in Sources */, 63B1335529A503D100009D84 /* ProteusService.swift in Sources */, BF6EA4D21E2512E800B7BD4B /* ZMConversation+DisplayName.swift in Sources */, @@ -5238,6 +5247,7 @@ E6F443042B16294000D2B08A /* zmessaging.xcdatamodeld */ = { isa = XCVersionGroup; children = ( + C9B8EC2C2E5C60BD00183723 /* zmessaging2.129.0.xcdatamodel */, CBBCDA432E33BDE8002E1B17 /* zmessaging2.128.0.xcdatamodel */, 01943A0B2E01A11C0005CD1E /* zmessaging2.127.0.xcdatamodel */, CBAE486A2DC4C82900C62C4E /* zmessaging2.126.0.xcdatamodel */, @@ -5288,7 +5298,7 @@ E6F443102B16294000D2B08A /* zmessaging2.81.0.xcdatamodel */, E6F443182B16294000D2B08A /* zmessaging2.80.0.xcdatamodel */, ); - currentVersion = CBBCDA432E33BDE8002E1B17 /* zmessaging2.128.0.xcdatamodel */; + currentVersion = C9B8EC2C2E5C60BD00183723 /* zmessaging2.129.0.xcdatamodel */; path = zmessaging.xcdatamodeld; sourceTree = ""; versionGroupType = wrapper.xcdatamodel; From 4d891d4b1f1f63ae163562a78f9448a5974bc23e Mon Sep 17 00:00:00 2001 From: Jullian Mercier <31648126+jullianm@users.noreply.github.com> Date: Mon, 25 Aug 2025 16:00:41 +0200 Subject: [PATCH 03/22] map cellsState property, store locally, clean up code --- .../ConversationModelMappings.swift | 2 +- .../LocalStore/ConversationLocalStore.swift | 2 ++ .../Conversations/Models/Conversation.swift | 2 +- .../StorableConversationCreateEvent.swift | 31 +++++++++++++++++-- .../ConversationsAPI/ConversationsAPIV8.swift | 3 +- .../Models/Conversation/Conversation.swift | 5 +-- .../Conversation/Payload+Conversation.swift | 1 + .../ConversationEventPayloadProcessor.swift | 2 ++ 8 files changed, 41 insertions(+), 7 deletions(-) diff --git a/WireDomain/Sources/WireDomain/Repositories/Conversations/ConversationModelMappings.swift b/WireDomain/Sources/WireDomain/Repositories/Conversations/ConversationModelMappings.swift index b40fef5066e..fcb28803bb9 100644 --- a/WireDomain/Sources/WireDomain/Repositories/Conversations/ConversationModelMappings.swift +++ b/WireDomain/Sources/WireDomain/Repositories/Conversations/ConversationModelMappings.swift @@ -178,7 +178,7 @@ extension WireNetwork.Conversation { lastEventTime: lastEventTime, groupType: groupType?.toDomainModel(), addPermission: addPermission?.toDomainModel(), - cellsState: cellsState.toDomainModel() + cellsState: cellsState?.toDomainModel() ) } } diff --git a/WireDomain/Sources/WireDomain/Repositories/Conversations/LocalStore/ConversationLocalStore.swift b/WireDomain/Sources/WireDomain/Repositories/Conversations/LocalStore/ConversationLocalStore.swift index adbab4bb743..aee45472b65 100644 --- a/WireDomain/Sources/WireDomain/Repositories/Conversations/LocalStore/ConversationLocalStore.swift +++ b/WireDomain/Sources/WireDomain/Repositories/Conversations/LocalStore/ConversationLocalStore.swift @@ -1075,6 +1075,8 @@ public final class ConversationLocalStore: ConversationLocalStoreProtocol { localConversation.privateChannelPermission = conversation .addPermission.map { PrivateChannelPermission($0) } ?? .unset + + localConversation.cellsState = conversation.cellsState == .enabled ? .enabled : .disabled commonUpdate( from: conversation, diff --git a/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift b/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift index 32006d1e489..f85511aa534 100644 --- a/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift +++ b/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift @@ -81,6 +81,6 @@ public struct Conversation: Equatable { let lastEventTime: Date? let groupType: GroupType? let addPermission: ChannelPermission? - let cellsState: CellsState + let cellsState: CellsState? } diff --git a/WireDomain/Sources/WireUpdateEventCoding/Models/ConversationEvent/StorableConversationCreateEvent.swift b/WireDomain/Sources/WireUpdateEventCoding/Models/ConversationEvent/StorableConversationCreateEvent.swift index 33798d38af4..a4faa8d4a26 100644 --- a/WireDomain/Sources/WireUpdateEventCoding/Models/ConversationEvent/StorableConversationCreateEvent.swift +++ b/WireDomain/Sources/WireUpdateEventCoding/Models/ConversationEvent/StorableConversationCreateEvent.swift @@ -51,7 +51,8 @@ struct StorableConversationCreateEvent: Equatable, Codable, Sendable { lastEvent: value.conversation.lastEvent, lastEventTime: value.conversation.lastEventTime, groupType: value.conversation.groupType.map { StorableConversationGroupType($0) }, - addPermission: value.conversation.addPermission.map { StorableChannelPermission($0) } + addPermission: value.conversation.addPermission.map { StorableChannelPermission($0) }, + cellsState: value.conversation.cellsState.map { StorableCellsState($0) } ) } @@ -81,7 +82,8 @@ struct StorableConversationCreateEvent: Equatable, Codable, Sendable { lastEvent: conversation.lastEvent, lastEventTime: conversation.lastEventTime, groupType: conversation.groupType?.toAPIModel(), - addPermission: conversation.addPermission?.toAPIModel() + addPermission: conversation.addPermission?.toAPIModel(), + cellsState: conversation.cellsState?.toAPIModel() ) ) } @@ -111,6 +113,7 @@ private struct StorableConversation: Equatable, Codable, Sendable { let lastEventTime: Date? let groupType: StorableConversationGroupType? let addPermission: StorableChannelPermission? + let cellsState: StorableCellsState? } @@ -174,6 +177,30 @@ private enum StorableConversationGroupType: String, Codable, Sendable { } +private enum StorableCellsState: String, Codable, Sendable { + + case enabled + case disabled + + init(_ value: WireNetwork.Conversation.CellsState) { + switch value { + case .enabled: + self = .enabled + case .disabled: + self = .disabled + } + } + + func toAPIModel() -> WireNetwork.Conversation.CellsState { + switch self { + case .enabled: + .enabled + case .disabled: + .disabled + } + } +} + private struct StorableConversationMembers: Equatable, Codable, Sendable { let others: [StorableConversationMember] diff --git a/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift b/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift index 2577a90ac35..3bf69659e3a 100644 --- a/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift +++ b/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift @@ -295,6 +295,7 @@ struct ConversationV8: Decodable, ToAPIModelConvertible { case type case groupType = "group_conv_type" case addPermission = "add_permission" + case cellsState = "cells_state" } var access: Set? @@ -344,7 +345,7 @@ struct ConversationV8: Decodable, ToAPIModelConvertible { lastEventTime: lastEventTime?.date, groupType: groupType?.toAPIModel(), addPermission: addPermission?.toAPIModel(), - cellsState: cellsState?.toAPIModel() ?? .disabled + cellsState: cellsState?.toAPIModel() ) } } diff --git a/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift b/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift index bd6cca25318..89e78270029 100644 --- a/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift +++ b/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift @@ -105,7 +105,7 @@ public struct Conversation: Equatable, Sendable { case disabled } - public var cellsState: CellsState + public var cellsState: CellsState? enum CodingKeys: String, CodingKey { @@ -130,6 +130,7 @@ public struct Conversation: Equatable, Sendable { case lastEventTime = "last_event_time" case groupType = "group_conv_type" case addPermission = "add_permission" + case cellsState = "cells_state" } @@ -155,7 +156,7 @@ public struct Conversation: Equatable, Sendable { lastEventTime: Date? = nil, groupType: ConversationGroupType? = nil, addPermission: ChannelPermission? = nil, - cellsState: CellsState = .disabled + cellsState: CellsState? = nil ) { self.id = id self.qualifiedID = qualifiedID diff --git a/wire-ios-request-strategy/Sources/Payloads/Conversation/Payload+Conversation.swift b/wire-ios-request-strategy/Sources/Payloads/Conversation/Payload+Conversation.swift index 322c4862ccf..83537e04f9e 100644 --- a/wire-ios-request-strategy/Sources/Payloads/Conversation/Payload+Conversation.swift +++ b/wire-ios-request-strategy/Sources/Payloads/Conversation/Payload+Conversation.swift @@ -214,6 +214,7 @@ extension Payload { case .v8, .v9, .v10, .v11: try container.encodeIfPresent(groupType, forKey: .groupType) try container.encodeIfPresent(addPermission, forKey: .addPermission) + try container.encodeIfPresent(cellsState, forKey: .cellsState) case .v0, .v1, .v2, .v3, .v4, .v5, .v6, .v7: break } diff --git a/wire-ios-request-strategy/Sources/Payloads/Processing/ConversationEventPayloadProcessor.swift b/wire-ios-request-strategy/Sources/Payloads/Processing/ConversationEventPayloadProcessor.swift index 8128a98acdd..2b19018a6a6 100644 --- a/wire-ios-request-strategy/Sources/Payloads/Processing/ConversationEventPayloadProcessor.swift +++ b/wire-ios-request-strategy/Sources/Payloads/Processing/ConversationEventPayloadProcessor.swift @@ -550,6 +550,8 @@ struct ConversationEventPayloadProcessor { } ?? .none conversation.privateChannelPermission = payload.addPermission.map { PrivateChannelPermission($0) } ?? .unset + + conversation.cellsState = payload.cellsState == .enabled ? .enabled : .disabled updateAttributes(from: payload, for: conversation, context: context) updateMetadata(from: payload, for: conversation, context: context) From abf9b73bc2c4f510970d8a441a35082cb3d2b9bf Mon Sep 17 00:00:00 2001 From: Jullian Mercier <31648126+jullianm@users.noreply.github.com> Date: Mon, 25 Aug 2025 16:15:10 +0200 Subject: [PATCH 04/22] make decodable property non optional, update json for tests --- .../ConversationsAPI/ConversationsAPIV8.swift | 23 +++++++++---------- ...ersation_givenV8AndSuccessResponse200.json | 1 + ...ersation_givenV8AndSuccessResponse201.json | 1 + 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift b/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift index 3bf69659e3a..6b5f9d55dcb 100644 --- a/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift +++ b/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift @@ -318,7 +318,7 @@ struct ConversationV8: Decodable, ToAPIModelConvertible { var type: ConversationTypeV0? var groupType: ConversationGroupTypeV8? // Introduced in v8 var addPermission: ChannelPermissionV8? // Introduced in v8 - var cellsState: CellsStateV8? // Introduced in v8 + var cellsState: CellsStateV8 // Introduced in v8 func toAPIModel() -> Conversation { let access = access?.map { $0.toAPIModel() } @@ -345,23 +345,22 @@ struct ConversationV8: Decodable, ToAPIModelConvertible { lastEventTime: lastEventTime?.date, groupType: groupType?.toAPIModel(), addPermission: addPermission?.toAPIModel(), - cellsState: cellsState?.toAPIModel() + cellsState: cellsState.toAPIModel() ) } } -extension ConversationV8 { - enum CellsStateV8: String, Decodable, ToAPIModelConvertible { - case enabled - case disabled - - func toAPIModel() -> Conversation.CellsState { - switch self { - case .enabled: +enum CellsStateV8: String, Decodable, ToAPIModelConvertible { + case enabled + case disabled + + func toAPIModel() -> Conversation.CellsState { + switch self { + case .enabled: .enabled - case .disabled: + case .disabled: .disabled - } } } } + diff --git a/WireNetwork/Tests/WireNetworkTests/APIs/ConversationsAPI/Resources/testCreateGroupConversation_givenV8AndSuccessResponse200.json b/WireNetwork/Tests/WireNetworkTests/APIs/ConversationsAPI/Resources/testCreateGroupConversation_givenV8AndSuccessResponse200.json index 4076feee9f3..180553b2775 100644 --- a/WireNetwork/Tests/WireNetworkTests/APIs/ConversationsAPI/Resources/testCreateGroupConversation_givenV8AndSuccessResponse200.json +++ b/WireNetwork/Tests/WireNetworkTests/APIs/ConversationsAPI/Resources/testCreateGroupConversation_givenV8AndSuccessResponse200.json @@ -10,6 +10,7 @@ "epoch": 0, "epoch_timestamp": "2021-05-12T10:52:02Z", "group_conv_type": "group_conversation", + "cells_state": "disabled", "group_id": "string", "id": "99db9768-04e3-4b5d-9268-831b6a25c4ab", "last_event": "string", diff --git a/WireNetwork/Tests/WireNetworkTests/APIs/ConversationsAPI/Resources/testCreateGroupConversation_givenV8AndSuccessResponse201.json b/WireNetwork/Tests/WireNetworkTests/APIs/ConversationsAPI/Resources/testCreateGroupConversation_givenV8AndSuccessResponse201.json index 4076feee9f3..180553b2775 100644 --- a/WireNetwork/Tests/WireNetworkTests/APIs/ConversationsAPI/Resources/testCreateGroupConversation_givenV8AndSuccessResponse201.json +++ b/WireNetwork/Tests/WireNetworkTests/APIs/ConversationsAPI/Resources/testCreateGroupConversation_givenV8AndSuccessResponse201.json @@ -10,6 +10,7 @@ "epoch": 0, "epoch_timestamp": "2021-05-12T10:52:02Z", "group_conv_type": "group_conversation", + "cells_state": "disabled", "group_id": "string", "id": "99db9768-04e3-4b5d-9268-831b6a25c4ab", "last_event": "string", From 254b0b09ac243806f3dc6844cda55393f7a964ad Mon Sep 17 00:00:00 2001 From: Jullian Mercier <31648126+jullianm@users.noreply.github.com> Date: Mon, 25 Aug 2025 16:21:42 +0200 Subject: [PATCH 05/22] lint and format --- .../LocalStore/ConversationLocalStore.swift | 2 +- .../Conversations/Models/Conversation.swift | 2 +- .../StorableConversationCreateEvent.swift | 10 +++++----- .../APIs/ConversationsAPI/ConversationsAPIV8.swift | 7 +++---- .../WireNetwork/Models/Conversation/Conversation.swift | 4 ++-- .../Model/Conversation/ZMConversation+CellsState.swift | 2 +- .../Processing/ConversationEventPayloadProcessor.swift | 2 +- 7 files changed, 14 insertions(+), 15 deletions(-) diff --git a/WireDomain/Sources/WireDomain/Repositories/Conversations/LocalStore/ConversationLocalStore.swift b/WireDomain/Sources/WireDomain/Repositories/Conversations/LocalStore/ConversationLocalStore.swift index aee45472b65..a0d2ee86423 100644 --- a/WireDomain/Sources/WireDomain/Repositories/Conversations/LocalStore/ConversationLocalStore.swift +++ b/WireDomain/Sources/WireDomain/Repositories/Conversations/LocalStore/ConversationLocalStore.swift @@ -1075,7 +1075,7 @@ public final class ConversationLocalStore: ConversationLocalStoreProtocol { localConversation.privateChannelPermission = conversation .addPermission.map { PrivateChannelPermission($0) } ?? .unset - + localConversation.cellsState = conversation.cellsState == .enabled ? .enabled : .disabled commonUpdate( diff --git a/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift b/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift index f85511aa534..4c697e6ef7e 100644 --- a/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift +++ b/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift @@ -54,7 +54,7 @@ public struct Conversation: Equatable { case admins case everyone } - + public enum CellsState: Equatable, Sendable { case enabled case disabled diff --git a/WireDomain/Sources/WireUpdateEventCoding/Models/ConversationEvent/StorableConversationCreateEvent.swift b/WireDomain/Sources/WireUpdateEventCoding/Models/ConversationEvent/StorableConversationCreateEvent.swift index a4faa8d4a26..fd5ddbc2ccf 100644 --- a/WireDomain/Sources/WireUpdateEventCoding/Models/ConversationEvent/StorableConversationCreateEvent.swift +++ b/WireDomain/Sources/WireUpdateEventCoding/Models/ConversationEvent/StorableConversationCreateEvent.swift @@ -178,10 +178,10 @@ private enum StorableConversationGroupType: String, Codable, Sendable { } private enum StorableCellsState: String, Codable, Sendable { - + case enabled case disabled - + init(_ value: WireNetwork.Conversation.CellsState) { switch value { case .enabled: @@ -190,13 +190,13 @@ private enum StorableCellsState: String, Codable, Sendable { self = .disabled } } - + func toAPIModel() -> WireNetwork.Conversation.CellsState { switch self { case .enabled: - .enabled + .enabled case .disabled: - .disabled + .disabled } } } diff --git a/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift b/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift index 6b5f9d55dcb..574670fcba1 100644 --- a/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift +++ b/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift @@ -353,14 +353,13 @@ struct ConversationV8: Decodable, ToAPIModelConvertible { enum CellsStateV8: String, Decodable, ToAPIModelConvertible { case enabled case disabled - + func toAPIModel() -> Conversation.CellsState { switch self { case .enabled: - .enabled + .enabled case .disabled: - .disabled + .disabled } } } - diff --git a/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift b/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift index 89e78270029..de8bb38f1e2 100644 --- a/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift +++ b/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift @@ -99,12 +99,12 @@ public struct Conversation: Equatable, Sendable { public var groupType: ConversationGroupType? public var addPermission: ChannelPermission? - + public enum CellsState: Equatable, Sendable { case enabled case disabled } - + public var cellsState: CellsState? enum CodingKeys: String, CodingKey { diff --git a/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift b/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift index 31b6bbcc0e2..4a40eda9151 100644 --- a/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift +++ b/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift @@ -22,7 +22,7 @@ import Foundation public enum CellsState: Int16 { case enabled = 0 - + case disabled = 1 } diff --git a/wire-ios-request-strategy/Sources/Payloads/Processing/ConversationEventPayloadProcessor.swift b/wire-ios-request-strategy/Sources/Payloads/Processing/ConversationEventPayloadProcessor.swift index 2b19018a6a6..b3af36c8883 100644 --- a/wire-ios-request-strategy/Sources/Payloads/Processing/ConversationEventPayloadProcessor.swift +++ b/wire-ios-request-strategy/Sources/Payloads/Processing/ConversationEventPayloadProcessor.swift @@ -550,7 +550,7 @@ struct ConversationEventPayloadProcessor { } ?? .none conversation.privateChannelPermission = payload.addPermission.map { PrivateChannelPermission($0) } ?? .unset - + conversation.cellsState = payload.cellsState == .enabled ? .enabled : .disabled updateAttributes(from: payload, for: conversation, context: context) From c46423488f65ea68da2082eb38fa824143686330 Mon Sep 17 00:00:00 2001 From: Jullian Mercier <31648126+jullianm@users.noreply.github.com> Date: Tue, 26 Aug 2025 10:58:43 +0200 Subject: [PATCH 06/22] update CellsState cases --- .../ConversationModelMappings.swift | 6 ++++-- .../LocalStore/ConversationLocalStore.swift | 11 +++++++++- .../Conversations/Models/Conversation.swift | 3 ++- .../StorableConversationCreateEvent.swift | 15 +++++++++----- .../ConversationsAPI/ConversationsAPIV8.swift | 9 ++++++--- .../Models/Conversation/Conversation.swift | 3 ++- .../ZMConversation+CellsState.swift | 20 +++++++++++++++++-- .../Events/Payload+CellsState.swift | 3 ++- .../ConversationEventPayloadProcessor.swift | 11 +++++++++- 9 files changed, 64 insertions(+), 17 deletions(-) diff --git a/WireDomain/Sources/WireDomain/Repositories/Conversations/ConversationModelMappings.swift b/WireDomain/Sources/WireDomain/Repositories/Conversations/ConversationModelMappings.swift index fcb28803bb9..dbc9b5f4cc3 100644 --- a/WireDomain/Sources/WireDomain/Repositories/Conversations/ConversationModelMappings.swift +++ b/WireDomain/Sources/WireDomain/Repositories/Conversations/ConversationModelMappings.swift @@ -244,8 +244,10 @@ extension WireNetwork.ChannelPermission { extension WireNetwork.Conversation.CellsState { func toDomainModel() -> WireDomain.Conversation.CellsState { switch self { - case .enabled: - .enabled + case .ready: + .ready + case .pending: + .pending case .disabled: .disabled } diff --git a/WireDomain/Sources/WireDomain/Repositories/Conversations/LocalStore/ConversationLocalStore.swift b/WireDomain/Sources/WireDomain/Repositories/Conversations/LocalStore/ConversationLocalStore.swift index a0d2ee86423..4169bc847e6 100644 --- a/WireDomain/Sources/WireDomain/Repositories/Conversations/LocalStore/ConversationLocalStore.swift +++ b/WireDomain/Sources/WireDomain/Repositories/Conversations/LocalStore/ConversationLocalStore.swift @@ -1076,7 +1076,16 @@ public final class ConversationLocalStore: ConversationLocalStoreProtocol { localConversation.privateChannelPermission = conversation .addPermission.map { PrivateChannelPermission($0) } ?? .unset - localConversation.cellsState = conversation.cellsState == .enabled ? .enabled : .disabled + localConversation.cellsState = conversation.cellsState.map { cellsState in + switch cellsState { + case .ready: + .ready + case .pending: + .pending + case .disabled: + .disabled + } + } ?? .disabled commonUpdate( from: conversation, diff --git a/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift b/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift index 4c697e6ef7e..8f766917f2f 100644 --- a/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift +++ b/WireDomain/Sources/WireDomain/Repositories/Conversations/Models/Conversation.swift @@ -56,7 +56,8 @@ public struct Conversation: Equatable { } public enum CellsState: Equatable, Sendable { - case enabled + case ready + case pending case disabled } diff --git a/WireDomain/Sources/WireUpdateEventCoding/Models/ConversationEvent/StorableConversationCreateEvent.swift b/WireDomain/Sources/WireUpdateEventCoding/Models/ConversationEvent/StorableConversationCreateEvent.swift index fd5ddbc2ccf..8e1e48198ee 100644 --- a/WireDomain/Sources/WireUpdateEventCoding/Models/ConversationEvent/StorableConversationCreateEvent.swift +++ b/WireDomain/Sources/WireUpdateEventCoding/Models/ConversationEvent/StorableConversationCreateEvent.swift @@ -179,13 +179,16 @@ private enum StorableConversationGroupType: String, Codable, Sendable { private enum StorableCellsState: String, Codable, Sendable { - case enabled + case ready + case pending case disabled init(_ value: WireNetwork.Conversation.CellsState) { switch value { - case .enabled: - self = .enabled + case .ready: + self = .ready + case .pending: + self = .pending case .disabled: self = .disabled } @@ -193,8 +196,10 @@ private enum StorableCellsState: String, Codable, Sendable { func toAPIModel() -> WireNetwork.Conversation.CellsState { switch self { - case .enabled: - .enabled + case .ready: + .ready + case .pending: + .pending case .disabled: .disabled } diff --git a/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift b/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift index 574670fcba1..1ea7e9bb8a6 100644 --- a/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift +++ b/WireNetwork/Sources/WireNetwork/APIs/ConversationsAPI/ConversationsAPIV8.swift @@ -351,13 +351,16 @@ struct ConversationV8: Decodable, ToAPIModelConvertible { } enum CellsStateV8: String, Decodable, ToAPIModelConvertible { - case enabled + case ready + case pending case disabled func toAPIModel() -> Conversation.CellsState { switch self { - case .enabled: - .enabled + case .ready: + .ready + case .pending: + .pending case .disabled: .disabled } diff --git a/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift b/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift index de8bb38f1e2..7b137fc9d4c 100644 --- a/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift +++ b/WireNetwork/Sources/WireNetwork/Models/Conversation/Conversation.swift @@ -101,7 +101,8 @@ public struct Conversation: Equatable, Sendable { public var addPermission: ChannelPermission? public enum CellsState: Equatable, Sendable { - case enabled + case ready + case pending case disabled } diff --git a/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift b/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift index 4a40eda9151..384e489d7bc 100644 --- a/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift +++ b/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift @@ -18,12 +18,17 @@ import Foundation +/// An enum representing the three possible states of Wire cells, whether `ready`, `pending` or `disabled`. +/// Server side, this is value returned by Pydio backend forwarded to Wire backend. + @objc public enum CellsState: Int16 { - case enabled = 0 + case ready = 0 + + case pending = 1 - case disabled = 1 + case disabled = 2 } @@ -32,4 +37,15 @@ public extension ZMConversation { /// The wire cells state (whether enabled or disabled) @NSManaged var cellsState: CellsState + + /// Mapping `pending` state to enabled because the feature is considered ready to use on client side. + + var isEnabled: Bool { + switch cellsState { + case .ready, .pending: + true + case .disabled: + false + } + } } diff --git a/wire-ios-request-strategy/Sources/Payloads/Conversation/Events/Payload+CellsState.swift b/wire-ios-request-strategy/Sources/Payloads/Conversation/Events/Payload+CellsState.swift index c38427dafd8..b81288f1938 100644 --- a/wire-ios-request-strategy/Sources/Payloads/Conversation/Events/Payload+CellsState.swift +++ b/wire-ios-request-strategy/Sources/Payloads/Conversation/Events/Payload+CellsState.swift @@ -21,7 +21,8 @@ import Foundation extension Payload { enum CellsState: String, Codable { - case enabled + case ready + case pending case disabled } } diff --git a/wire-ios-request-strategy/Sources/Payloads/Processing/ConversationEventPayloadProcessor.swift b/wire-ios-request-strategy/Sources/Payloads/Processing/ConversationEventPayloadProcessor.swift index b3af36c8883..217833686eb 100644 --- a/wire-ios-request-strategy/Sources/Payloads/Processing/ConversationEventPayloadProcessor.swift +++ b/wire-ios-request-strategy/Sources/Payloads/Processing/ConversationEventPayloadProcessor.swift @@ -551,7 +551,16 @@ struct ConversationEventPayloadProcessor { conversation.privateChannelPermission = payload.addPermission.map { PrivateChannelPermission($0) } ?? .unset - conversation.cellsState = payload.cellsState == .enabled ? .enabled : .disabled + conversation.cellsState = payload.cellsState.map { cellsState in + switch cellsState { + case .ready: + .ready + case .pending: + .pending + case .disabled: + .disabled + } + } ?? .disabled updateAttributes(from: payload, for: conversation, context: context) updateMetadata(from: payload, for: conversation, context: context) From 1439e4b9d9021db10eaff7b0d85ab8a754ddafa0 Mon Sep 17 00:00:00 2001 From: Jullian Mercier <31648126+jullianm@users.noreply.github.com> Date: Tue, 26 Aug 2025 11:01:58 +0200 Subject: [PATCH 07/22] update code doc --- .../Source/Model/Conversation/ZMConversation+CellsState.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift b/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift index 384e489d7bc..453ff389d04 100644 --- a/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift +++ b/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift @@ -34,7 +34,7 @@ public enum CellsState: Int16 { public extension ZMConversation { - /// The wire cells state (whether enabled or disabled) + /// The wire cells state (whether ready, pending or disabled) @NSManaged var cellsState: CellsState From 6dc442569b43bbfe40b90fe9efd705e45182cc9f Mon Sep 17 00:00:00 2001 From: Jullian Mercier <31648126+jullianm@users.noreply.github.com> Date: Tue, 26 Aug 2025 14:19:00 +0200 Subject: [PATCH 08/22] updates db property attributes, make disabled default value --- .../zmessaging2.129.0.xcdatamodel/contents | 2 +- .../Source/Model/Conversation/ZMConversation+CellsState.swift | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents b/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents index 3ef2c8b84c9..6497832638d 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents +++ b/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents @@ -52,7 +52,7 @@ - + diff --git a/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift b/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift index 453ff389d04..e86e2b91d58 100644 --- a/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift +++ b/wire-ios-data-model/Source/Model/Conversation/ZMConversation+CellsState.swift @@ -24,11 +24,11 @@ import Foundation @objc public enum CellsState: Int16 { - case ready = 0 + case disabled = 0 case pending = 1 - case disabled = 2 + case ready = 2 } From da97cf03b549a7e2e72b93a8149081e9767e71c3 Mon Sep 17 00:00:00 2001 From: Jullian Mercier <31648126+jullianm@users.noreply.github.com> Date: Thu, 28 Aug 2025 12:23:56 +0200 Subject: [PATCH 09/22] fix failing test --- .../Tests/Resources/store2-129-0.wiredatabase | Bin 638976 -> 638976 bytes .../WireDataModel.xcodeproj/project.pbxproj | 14 +++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/wire-ios-data-model/Tests/Resources/store2-129-0.wiredatabase b/wire-ios-data-model/Tests/Resources/store2-129-0.wiredatabase index bb23261566c30d933c5e62ab7bd2d83638c4316b..f73cac6b83d909e7481162a2fc85e69ddc285974 100644 GIT binary patch delta 35708 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 DhbxqO delta 35655 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 Date: Fri, 29 Aug 2025 15:41:45 +0200 Subject: [PATCH 10/22] move db models messaging and event to WireData package, adjust code to properly load db models --- .../Sources/WireData}/Databases Changelog.md | 3 +- .../Sources/WireData/WireDataBundle.swift | 23 +++ .../.xccurrentversion | 0 .../ZMEventModel.xcdatamodel/contents | 0 .../ZMEventModel2.0.xcdatamodel/contents | 0 .../ZMEventModel3.0.xcdatamodel/contents | 0 .../ZMEventModel4.0.xcdatamodel/contents | 0 .../ZMEventModel5.0.xcdatamodel/contents | 0 .../ZMEventModel6.0.xcdatamodel/contents | 4 +- .../zmessaging.xcdatamodeld/.xccurrentversion | 0 .../zmessaging2.100.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.101.0.xcdatamodel/contents | 28 ++-- .../zmessaging2.102.0.xcdatamodel/contents | 26 ++-- .../zmessaging2.103.0.xcdatamodel/contents | 28 ++-- .../zmessaging2.104.0.xcdatamodel/contents | 28 ++-- .../zmessaging2.105.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.106.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.107.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.108.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.109.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.110.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.111.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.112.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.113.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.114.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.115.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.116.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.117.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.118.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.119.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.120.0.xcdatamodel/contents | 32 ++-- .../zmessaging2.121.0.xcdatamodel/contents | 32 ++-- .../zmessaging2.122.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.123.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.124.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.125.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.126.0.xcdatamodel/contents | 32 ++-- .../zmessaging2.127.0.xcdatamodel/contents | 32 ++-- .../zmessaging2.128.0.xcdatamodel/contents | 32 ++-- .../zmessaging2.129.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.80.0.xcdatamodel/contents | 53 ++----- .../zmessaging2.81.0.xcdatamodel/contents | 26 ++-- .../zmessaging2.82.0.xcdatamodel/contents | 28 ++-- .../zmessaging2.83.0.xcdatamodel/contents | 28 ++-- .../zmessaging2.84.0.xcdatamodel/contents | 28 ++-- .../zmessaging2.85.0.xcdatamodel/contents | 28 ++-- .../zmessaging2.86.0.xcdatamodel/contents | 28 ++-- .../zmessaging2.87.0.xcdatamodel/contents | 28 ++-- .../zmessaging2.88.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.89.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.90.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.91.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.92.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.93.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.94.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.95.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.96.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.97.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.98.0.xcdatamodel/contents | 30 ++-- .../zmessaging2.99.0.xcdatamodel/contents | 30 ++-- .../ManagedObjectContext/CoreDataStack.swift | 15 +- .../CoreDataEventsMigrationVersion.swift | 3 +- .../CoreDataMessagingMigrationVersion.swift | 3 +- .../Migration/CoreDataMigrationStep.swift | 3 +- .../Helper/DatabaseMigrationHelper.swift | 3 +- .../DatabaseMigrationTests.swift | 3 +- .../WireDataModel.xcodeproj/project.pbxproj | 141 ------------------ 67 files changed, 788 insertions(+), 920 deletions(-) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/Databases Changelog.md (99%) create mode 100644 WireData/Sources/WireData/WireDataBundle.swift rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/ZMEventModel.xcdatamodeld/.xccurrentversion (100%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/ZMEventModel.xcdatamodeld/ZMEventModel.xcdatamodel/contents (100%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/ZMEventModel.xcdatamodeld/ZMEventModel2.0.xcdatamodel/contents (100%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/ZMEventModel.xcdatamodeld/ZMEventModel3.0.xcdatamodel/contents (100%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/ZMEventModel.xcdatamodeld/ZMEventModel4.0.xcdatamodel/contents (100%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/ZMEventModel.xcdatamodeld/ZMEventModel5.0.xcdatamodel/contents (100%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/ZMEventModel.xcdatamodeld/ZMEventModel6.0.xcdatamodel/contents (87%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/.xccurrentversion (100%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents (97%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents (97%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents (97%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents (97%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents (97%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents (91%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents (97%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents (97%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents (97%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents (97%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents (96%) rename {wire-ios-data-model/Resources => WireData/Sources/WireData}/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents (96%) diff --git a/wire-ios-data-model/Resources/Databases Changelog.md b/WireData/Sources/WireData/Databases Changelog.md similarity index 99% rename from wire-ios-data-model/Resources/Databases Changelog.md rename to WireData/Sources/WireData/Databases Changelog.md index e227bf2405a..1618f98d4fc 100644 --- a/wire-ios-data-model/Resources/Databases Changelog.md +++ b/WireData/Sources/WireData/Databases Changelog.md @@ -111,7 +111,7 @@ PostAction to migrate oneOneOneConversations * removed `activationLocationLatitude` attribute from `UserClient` * removed `activationLocationLongitude` attribute from `UserClient` - + ## ZMEventModel ### 6.0 @@ -125,4 +125,3 @@ PostAction to migrate oneOneOneConversations ### 4.0 TBD - diff --git a/WireData/Sources/WireData/WireDataBundle.swift b/WireData/Sources/WireData/WireDataBundle.swift new file mode 100644 index 00000000000..0a05485c3c5 --- /dev/null +++ b/WireData/Sources/WireData/WireDataBundle.swift @@ -0,0 +1,23 @@ +// +// Wire +// Copyright (C) 2025 Wire Swiss GmbH +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see http://www.gnu.org/licenses/. +// + +import Foundation + +public final class WireDataBundle { + public static let bundle = Bundle.module +} diff --git a/wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/.xccurrentversion b/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/.xccurrentversion similarity index 100% rename from wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/.xccurrentversion rename to WireData/Sources/WireData/ZMEventModel.xcdatamodeld/.xccurrentversion diff --git a/wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/ZMEventModel.xcdatamodel/contents b/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel.xcdatamodel/contents similarity index 100% rename from wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/ZMEventModel.xcdatamodel/contents rename to WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel.xcdatamodel/contents diff --git a/wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/ZMEventModel2.0.xcdatamodel/contents b/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel2.0.xcdatamodel/contents similarity index 100% rename from wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/ZMEventModel2.0.xcdatamodel/contents rename to WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel2.0.xcdatamodel/contents diff --git a/wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/ZMEventModel3.0.xcdatamodel/contents b/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel3.0.xcdatamodel/contents similarity index 100% rename from wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/ZMEventModel3.0.xcdatamodel/contents rename to WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel3.0.xcdatamodel/contents diff --git a/wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/ZMEventModel4.0.xcdatamodel/contents b/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel4.0.xcdatamodel/contents similarity index 100% rename from wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/ZMEventModel4.0.xcdatamodel/contents rename to WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel4.0.xcdatamodel/contents diff --git a/wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/ZMEventModel5.0.xcdatamodel/contents b/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel5.0.xcdatamodel/contents similarity index 100% rename from wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/ZMEventModel5.0.xcdatamodel/contents rename to WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel5.0.xcdatamodel/contents diff --git a/wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/ZMEventModel6.0.xcdatamodel/contents b/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel6.0.xcdatamodel/contents similarity index 87% rename from wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/ZMEventModel6.0.xcdatamodel/contents rename to WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel6.0.xcdatamodel/contents index dc7897df3a4..c2804d205d4 100644 --- a/wire-ios-data-model/Resources/ZMEventModel.xcdatamodeld/ZMEventModel6.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel6.0.xcdatamodel/contents @@ -1,5 +1,5 @@ - + @@ -11,7 +11,7 @@ - + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/.xccurrentversion b/WireData/Sources/WireData/zmessaging.xcdatamodeld/.xccurrentversion similarity index 100% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/.xccurrentversion rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/.xccurrentversion diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents index 983632ae95b..d4a2b99b98b 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -134,7 +134,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -201,19 +201,19 @@ - + - + - + @@ -241,7 +241,7 @@ - + @@ -306,7 +306,7 @@ - + @@ -369,4 +369,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents similarity index 97% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents index bb8b10b9cb8..4a2df29d6e0 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -126,7 +126,7 @@ - + @@ -135,7 +135,7 @@ - + @@ -193,19 +193,19 @@ - + - + - + @@ -233,7 +233,7 @@ - + @@ -297,7 +297,7 @@ - + @@ -359,4 +359,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents similarity index 97% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents index 6910cc9381a..6c43006a244 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -126,7 +126,7 @@ - + @@ -135,7 +135,7 @@ - + @@ -193,19 +193,19 @@ - + - + - + @@ -233,7 +233,7 @@ - + @@ -297,7 +297,7 @@ - + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents similarity index 97% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents index 0f9caeeef48..3be8dc1322b 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -102,7 +102,7 @@ - + @@ -127,7 +127,7 @@ - + @@ -136,7 +136,7 @@ - + @@ -194,19 +194,19 @@ - + - + - + @@ -234,7 +234,7 @@ - + @@ -298,7 +298,7 @@ - + @@ -362,4 +362,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents similarity index 97% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents index 718471d9f12..338d8d6230a 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -104,7 +104,7 @@ - + @@ -129,7 +129,7 @@ - + @@ -138,7 +138,7 @@ - + @@ -196,19 +196,19 @@ - + - + - + @@ -236,7 +236,7 @@ - + @@ -300,7 +300,7 @@ - + @@ -364,4 +364,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents index 615aa4391ad..a217ec9cf80 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -106,7 +106,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -140,7 +140,7 @@ - + @@ -198,23 +198,23 @@ - + - + - + - + @@ -242,7 +242,7 @@ - + @@ -306,7 +306,7 @@ - + @@ -344,4 +344,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents index e7e43f2b256..42b456cb5b8 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -107,7 +107,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,23 +199,23 @@ - + - + - + - + @@ -243,7 +243,7 @@ - + @@ -307,7 +307,7 @@ - + @@ -345,4 +345,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents index 54836bd5f1c..058af143cbf 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -114,7 +114,7 @@ - + @@ -139,7 +139,7 @@ - + @@ -148,7 +148,7 @@ - + @@ -219,23 +219,23 @@ - + - + - + - + @@ -263,7 +263,7 @@ - + @@ -339,7 +339,7 @@ - + @@ -382,4 +382,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents index 48210b50b29..9a133e27914 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -116,7 +116,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -223,23 +223,23 @@ - + - + - + - + @@ -268,7 +268,7 @@ - + @@ -346,7 +346,7 @@ - + @@ -389,4 +389,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents index 9897331d3d9..06c167a66c1 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -116,7 +116,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -223,24 +223,24 @@ - + - + - + - + @@ -269,7 +269,7 @@ - + @@ -347,7 +347,7 @@ - + @@ -390,4 +390,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents index 63be342fcab..03dccc5468f 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -116,7 +116,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -223,24 +223,24 @@ - + - + - + - + @@ -269,7 +269,7 @@ - + @@ -347,7 +347,7 @@ - + @@ -387,4 +387,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents index 1ba620f09be..e8f663efaef 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -122,7 +122,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -229,24 +229,24 @@ - + - + - + - + @@ -275,7 +275,7 @@ - + @@ -364,7 +364,7 @@ - + @@ -404,4 +404,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents index 06f51fe635b..93420f7ed03 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -122,7 +122,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -229,24 +229,24 @@ - + - + - + - + @@ -275,7 +275,7 @@ - + @@ -364,7 +364,7 @@ - + @@ -403,4 +403,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents index 0dfe32f176e..6530976ec4d 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -122,7 +122,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -229,24 +229,24 @@ - + - + - + - + @@ -275,7 +275,7 @@ - + @@ -364,7 +364,7 @@ - + @@ -404,4 +404,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents index 44c889b94bd..f2d6b537b03 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -231,24 +231,24 @@ - + - + - + - + @@ -277,7 +277,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -408,4 +408,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents index ebfdd343caa..36371834239 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -122,7 +122,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -229,24 +229,24 @@ - + - + - + - + @@ -275,7 +275,7 @@ - + @@ -366,7 +366,7 @@ - + @@ -406,4 +406,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents index ed4af788bfb..de3fb8b857c 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -123,7 +123,7 @@ - + @@ -148,7 +148,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -230,24 +230,24 @@ - + - + - + - + @@ -276,7 +276,7 @@ - + @@ -367,7 +367,7 @@ - + @@ -407,4 +407,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents index d2dc9359121..b5aacdbdd50 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -231,24 +231,24 @@ - + - + - + - + @@ -277,7 +277,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -408,4 +408,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents index 293fd84fd28..58d186b137b 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -369,7 +369,7 @@ - + @@ -409,4 +409,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents index d5e758c70bc..7b433b039cd 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -408,4 +408,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents index 39f01d53794..867de285ebc 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -369,7 +369,7 @@ - + @@ -409,4 +409,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents index 1b82c231817..0ce727ebf08 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -369,7 +369,7 @@ - + @@ -408,4 +408,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents index 76a344faaf9..9d3147aa0b8 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -404,4 +404,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents index 006f494dbd9..bcf1e48c3ec 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -126,7 +126,7 @@ - + @@ -151,7 +151,7 @@ - + @@ -160,7 +160,7 @@ - + @@ -234,24 +234,24 @@ - + - + - + - + @@ -280,7 +280,7 @@ - + @@ -370,7 +370,7 @@ - + @@ -406,4 +406,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents index a2b8982eec3..fbff13849e2 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -127,7 +127,7 @@ - + @@ -152,7 +152,7 @@ - + @@ -161,7 +161,7 @@ - + @@ -235,24 +235,24 @@ - + - + - + - + @@ -281,7 +281,7 @@ - + @@ -371,7 +371,7 @@ - + @@ -407,4 +407,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents index c8a3dd84b70..391aa5e19eb 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -127,7 +127,7 @@ - + @@ -152,7 +152,7 @@ - + @@ -161,7 +161,7 @@ - + @@ -235,24 +235,24 @@ - + - + - + - + @@ -281,7 +281,7 @@ - + @@ -371,7 +371,7 @@ - + @@ -408,4 +408,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents index 9c43c867dfc..db3148eaa25 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - - + + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -129,7 +129,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -237,24 +237,24 @@ - + - + - + - + @@ -283,7 +283,7 @@ - + @@ -373,7 +373,7 @@ - + @@ -429,4 +429,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents index 16676ff9957..40a72cd4896 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - - + + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -129,7 +129,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -237,24 +237,24 @@ - + - + - + - + @@ -283,7 +283,7 @@ - + @@ -373,7 +373,7 @@ - + @@ -429,4 +429,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents index 8668431f8b8..fa1cf505f9d 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -129,7 +129,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -237,24 +237,24 @@ - + - + - + - + @@ -283,7 +283,7 @@ - + @@ -373,7 +373,7 @@ - + @@ -421,7 +421,7 @@ - + @@ -440,4 +440,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents similarity index 97% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents index 6497832638d..88882ab2d2d 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -130,7 +130,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -164,7 +164,7 @@ - + @@ -238,24 +238,24 @@ - + - + - + - + @@ -284,7 +284,7 @@ - + @@ -374,7 +374,7 @@ - + @@ -441,4 +441,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents similarity index 91% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents index 8577ea00a6d..e3b50e2cee6 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - - + + - + - + @@ -23,13 +23,13 @@ - + - + @@ -113,7 +113,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -180,19 +180,19 @@ - + - + - + @@ -218,7 +218,7 @@ - + @@ -280,7 +280,7 @@ - + @@ -313,29 +313,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents similarity index 97% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents index b43e1a3cc33..6d71177598d 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -113,7 +113,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -180,19 +180,19 @@ - + - + - + @@ -218,7 +218,7 @@ - + @@ -280,7 +280,7 @@ - + @@ -338,4 +338,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents index 0d03d62002b..0aca35c9571 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -97,7 +97,7 @@ - + @@ -120,7 +120,7 @@ - + @@ -129,7 +129,7 @@ - + @@ -187,19 +187,19 @@ - + - + - + @@ -225,7 +225,7 @@ - + @@ -288,7 +288,7 @@ - + @@ -347,4 +347,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents index 9abd72bc827..ca1d8abaaa4 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -97,7 +97,7 @@ - + @@ -121,7 +121,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -188,19 +188,19 @@ - + - + - + @@ -226,7 +226,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -348,4 +348,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents index 19f9e41667f..07d74f0de67 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -97,7 +97,7 @@ - + @@ -121,7 +121,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -188,19 +188,19 @@ - + - + - + @@ -226,7 +226,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -348,4 +348,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents similarity index 97% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents index eb6d55246c4..e9db093641b 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -98,7 +98,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -189,19 +189,19 @@ - + - + - + @@ -227,7 +227,7 @@ - + @@ -290,7 +290,7 @@ - + @@ -349,4 +349,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents similarity index 97% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents index 77dc4288008..33cb66092f9 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -98,7 +98,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -189,19 +189,19 @@ - + - + - + @@ -227,7 +227,7 @@ - + @@ -291,7 +291,7 @@ - + @@ -350,4 +350,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents similarity index 97% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents index e38e89d07a5..042f315edde 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -123,7 +123,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -190,19 +190,19 @@ - + - + - + @@ -228,7 +228,7 @@ - + @@ -292,7 +292,7 @@ - + @@ -351,4 +351,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents index 7e0002af938..68c7dfc9974 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -237,7 +237,7 @@ - + @@ -302,7 +302,7 @@ - + @@ -362,4 +362,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents index a9419b6d69c..eedd17af1e0 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -238,7 +238,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -364,4 +364,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents index cdcfef0b5a9..ea29c39b460 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -238,7 +238,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -365,4 +365,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents index 443f2eebabc..91e6b7cea0b 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -239,7 +239,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -366,4 +366,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents index 337b1037bcb..86eea3b478d 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -239,7 +239,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -367,4 +367,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents index 73f430c41ed..405b501f051 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -107,7 +107,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -140,7 +140,7 @@ - + @@ -198,19 +198,19 @@ - + - + - + @@ -238,7 +238,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -365,4 +365,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents index 36818d51457..7f201f511dd 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -100,7 +100,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -239,7 +239,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -366,4 +366,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents index 896647fa0f4..dc21f80e77a 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -100,7 +100,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -200,19 +200,19 @@ - + - + - + @@ -240,7 +240,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -367,4 +367,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents index bb1ebf98966..0eceea3aacf 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -100,7 +100,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -200,19 +200,19 @@ - + - + - + @@ -240,7 +240,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -368,4 +368,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents index 3c86d991e6c..1d0f5bed11d 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -100,7 +100,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -200,19 +200,19 @@ - + - + - + @@ -240,7 +240,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -368,4 +368,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents index 7463d5f2c5c..1471c5661c2 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -134,7 +134,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -201,19 +201,19 @@ - + - + - + @@ -241,7 +241,7 @@ - + @@ -306,7 +306,7 @@ - + @@ -369,4 +369,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents similarity index 96% rename from wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents rename to WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents index 6e6e9c82544..750d4d4e688 100644 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -134,7 +134,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -201,19 +201,19 @@ - + - + - + @@ -241,7 +241,7 @@ - + @@ -306,7 +306,7 @@ - + @@ -370,4 +370,4 @@ - \ No newline at end of file + diff --git a/wire-ios-data-model/Source/ManagedObjectContext/CoreDataStack.swift b/wire-ios-data-model/Source/ManagedObjectContext/CoreDataStack.swift index 41231b5ee04..605bbd14e60 100644 --- a/wire-ios-data-model/Source/ManagedObjectContext/CoreDataStack.swift +++ b/wire-ios-data-model/Source/ManagedObjectContext/CoreDataStack.swift @@ -21,6 +21,7 @@ import Foundation import WireLogging import WireSystem import WireUtilities +import WireData enum CoreDataStackError: Error { case simulateDatabaseLoadingFailure @@ -172,8 +173,14 @@ public class CoreDataStack: NSObject, CoreDataStackProtocol { self.accountContainer = accountDirectory - let eventContainer = PersistentContainer(name: "ZMEventModel") - let messagesContainer = PersistentContainer(name: "zmessaging") + let eventContainer = PersistentContainer( + name: "ZMEventModel", + managedObjectModel: CoreDataStack.loadEventsModel() + ) + let messagesContainer = PersistentContainer( + name: "zmessaging", + managedObjectModel: CoreDataStack.loadMessagingModel() + ) let description: NSPersistentStoreDescription let eventStoreDescription: NSPersistentStoreDescription @@ -431,7 +438,7 @@ public class CoreDataStack: NSObject, CoreDataStackProtocol { } public static func loadMessagingModel() -> NSManagedObjectModel { - let modelBundle = Bundle(for: ZMManagedObject.self) + let modelBundle = WireDataBundle.bundle guard let result = NSManagedObjectModel( contentsOf: modelBundle.bundleURL @@ -444,7 +451,7 @@ public class CoreDataStack: NSObject, CoreDataStackProtocol { } public static func loadEventsModel() -> NSManagedObjectModel { - let modelBundle = WireDataModelBundle.bundle + let modelBundle = WireDataBundle.bundle guard let result = NSManagedObjectModel( contentsOf: modelBundle.bundleURL diff --git a/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataEventsMigrationVersion.swift b/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataEventsMigrationVersion.swift index be09edce527..062ba33015c 100644 --- a/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataEventsMigrationVersion.swift +++ b/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataEventsMigrationVersion.swift @@ -17,6 +17,7 @@ // import Foundation +import WireData enum CoreDataEventsMigrationVersion: String, CoreDataMigrationVersion { @@ -64,7 +65,7 @@ enum CoreDataEventsMigrationVersion: String, CoreDataMigrationVersion { // MARK: Store URL func managedObjectModelURL() -> URL? { - WireDataModelBundle.bundle.url( + WireDataBundle.bundle.url( forResource: rawValue, withExtension: Constant.resourceExtension, subdirectory: Constant.modelDirectory diff --git a/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataMessagingMigrationVersion.swift b/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataMessagingMigrationVersion.swift index 4821aa233e7..ca3aebe7e92 100644 --- a/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataMessagingMigrationVersion.swift +++ b/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataMessagingMigrationVersion.swift @@ -17,6 +17,7 @@ // import Foundation +import WireData enum CoreDataMessagingMigrationVersion: String, CoreDataMigrationVersion { @@ -158,7 +159,7 @@ enum CoreDataMessagingMigrationVersion: String, CoreDataMigrationVersion { // MARK: Store URL func managedObjectModelURL() -> URL? { - WireDataModelBundle.bundle.url( + WireDataBundle.bundle.url( forResource: rawValue, withExtension: Constant.resourceExtension, subdirectory: Constant.modelDirectory diff --git a/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataMigrationStep.swift b/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataMigrationStep.swift index 94e05e1f6a2..6fa334b6085 100644 --- a/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataMigrationStep.swift +++ b/wire-ios-data-model/Source/ManagedObjectContext/Migration/CoreDataMigrationStep.swift @@ -17,6 +17,7 @@ // import CoreData +import WireData struct CoreDataMigrationStep { @@ -82,7 +83,7 @@ struct CoreDataMigrationStep { toDestinationModel destinationModel: NSManagedObjectModel ) -> NSMappingModel? { NSMappingModel( - from: [WireDataModelBundle.bundle], + from: [WireDataBundle.bundle], forSourceModel: sourceModel, destinationModel: destinationModel ) diff --git a/wire-ios-data-model/Tests/Source/Helper/DatabaseMigrationHelper.swift b/wire-ios-data-model/Tests/Source/Helper/DatabaseMigrationHelper.swift index 56353590a5d..d52acf9b22b 100644 --- a/wire-ios-data-model/Tests/Source/Helper/DatabaseMigrationHelper.swift +++ b/wire-ios-data-model/Tests/Source/Helper/DatabaseMigrationHelper.swift @@ -17,6 +17,7 @@ // import XCTest +import WireData @testable import WireDataModel enum Database { @@ -48,7 +49,7 @@ struct DatabaseMigrationHelper { typealias MigrationAction = (NSManagedObjectContext) throws -> Void - private let bundle = WireDataModelBundle.bundle + private let bundle = WireDataBundle.bundle private let dataModelName = "zmessaging" func createObjectModel(version: String) throws -> NSManagedObjectModel { diff --git a/wire-ios-data-model/Tests/Source/ManagedObjectContext/DatabaseMigrationTests.swift b/wire-ios-data-model/Tests/Source/ManagedObjectContext/DatabaseMigrationTests.swift index df9beac702b..6d4b54ee12b 100644 --- a/wire-ios-data-model/Tests/Source/ManagedObjectContext/DatabaseMigrationTests.swift +++ b/wire-ios-data-model/Tests/Source/ManagedObjectContext/DatabaseMigrationTests.swift @@ -18,6 +18,7 @@ // import XCTest +import WireData @testable import WireDataModel @@ -193,7 +194,7 @@ final class DatabaseMigrationTests: DatabaseBaseTest { func testThatTheVersionIdentifiersMatchModelNameAndDoNotDuplicate() throws { // given - guard let source = Bundle(for: ZMMessage.self).url(forResource: "zmessaging", withExtension: "momd") else { + guard let source = WireDataBundle.bundle.url(forResource: "zmessaging", withExtension: "momd") else { fatalError("missing resource") } let fm = FileManager.default diff --git a/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj b/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj index a3686cae27d..77c22a27783 100644 --- a/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj +++ b/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj @@ -24,7 +24,6 @@ 0153CA932B8554EC000000CA /* store2-113-0.wiredatabase in Resources */ = {isa = PBXBuildFile; fileRef = 0153CA8F2B855456000000CA /* store2-113-0.wiredatabase */; }; 01586D422CAED03900C3BCE1 /* FixDuplicateOneOnOneConversationsAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01586D402CAED03900C3BCE1 /* FixDuplicateOneOnOneConversationsAction.swift */; }; 01586D442CAED2B200C3BCE1 /* store2-119-0.wiredatabase in Resources */ = {isa = PBXBuildFile; fileRef = 01586D432CAED2B200C3BCE1 /* store2-119-0.wiredatabase */; }; - 0158DF212C594B3600C7BFFD /* ZMEventModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 0158DF1A2C594B1600C7BFFD /* ZMEventModel.xcdatamodeld */; }; 0158DF232C5A3C6700C7BFFD /* event_4.0.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = 0158DF222C5A3C6600C7BFFD /* event_4.0.sqlite */; }; 016D293A2C10FB2F00DB969A /* ZMMessageTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016D29392C10FB2F00DB969A /* ZMMessageTimer.swift */; }; 0176BDD12D515764002C33DE /* store2-122-0.wiredatabase in Resources */ = {isa = PBXBuildFile; fileRef = 0176BDD02D515764002C33DE /* store2-122-0.wiredatabase */; }; @@ -567,7 +566,6 @@ E6E5044C2BC56EA0004948E7 /* EARServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6E5044A2BC56EA0004948E7 /* EARServiceTests.swift */; }; E6E5044E2BC56EDE004948E7 /* LAContextStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6E5044D2BC56EDE004948E7 /* LAContextStorageTests.swift */; }; E6E504502BC571BF004948E7 /* AuthenticationContextTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6E5044F2BC571BF004948E7 /* AuthenticationContextTests.swift */; }; - E6F443232B16294400D2B08A /* zmessaging.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = E6F443042B16294000D2B08A /* zmessaging.xcdatamodeld */; }; E90AAE34279719D8003C7DB0 /* store2-98-0.wiredatabase in Resources */ = {isa = PBXBuildFile; fileRef = E90AAE33279719D8003C7DB0 /* store2-98-0.wiredatabase */; }; E999AC402BC9467E00569E79 /* CreateConversationGuestLinkAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = E999AC3F2BC9467E00569E79 /* CreateConversationGuestLinkAction.swift */; }; E9A96E7A2B88B64800914FDD /* PushSupportedProtocolsAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9A96E792B88B64800914FDD /* PushSupportedProtocolsAction.swift */; }; @@ -904,42 +902,27 @@ 013887A92B9A5C8B00323DD0 /* CoreDataMigrationActionFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataMigrationActionFactory.swift; sourceTree = ""; }; 013887AA2B9A5C8B00323DD0 /* CoreDataMigrationAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataMigrationAction.swift; sourceTree = ""; }; 013887AD2B9A5CA800323DD0 /* CoreDataMigrationActionFactoryTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataMigrationActionFactoryTests.swift; sourceTree = ""; }; - 01423BC72DB00D8200C49567 /* zmessaging2.125.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.125.0.xcdatamodel; sourceTree = ""; }; 01423BC82DB013DF00C49567 /* store2-125-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-125-0.wiredatabase"; sourceTree = ""; }; 014DD8D22B6D1FE9007ECFD1 /* UUID+SafeLogging.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UUID+SafeLogging.swift"; sourceTree = ""; }; - 0153CA842B8540F0000000CA /* zmessaging2.114.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.114.0.xcdatamodel; sourceTree = ""; }; 0153CA8F2B855456000000CA /* store2-113-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-113-0.wiredatabase"; sourceTree = ""; }; - 01586D3F2CAECE8B00C3BCE1 /* zmessaging2.119.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.119.0.xcdatamodel; sourceTree = ""; }; 01586D402CAED03900C3BCE1 /* FixDuplicateOneOnOneConversationsAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FixDuplicateOneOnOneConversationsAction.swift; sourceTree = ""; }; 01586D432CAED2B200C3BCE1 /* store2-119-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-119-0.wiredatabase"; sourceTree = ""; }; - 0158DF1B2C594B1600C7BFFD /* ZMEventModel5.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = ZMEventModel5.0.xcdatamodel; sourceTree = ""; }; - 0158DF1C2C594B1600C7BFFD /* ZMEventModel6.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = ZMEventModel6.0.xcdatamodel; sourceTree = ""; }; - 0158DF1D2C594B1600C7BFFD /* ZMEventModel2.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = ZMEventModel2.0.xcdatamodel; sourceTree = ""; }; - 0158DF1E2C594B1600C7BFFD /* ZMEventModel.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = ZMEventModel.xcdatamodel; sourceTree = ""; }; - 0158DF1F2C594B1600C7BFFD /* ZMEventModel3.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = ZMEventModel3.0.xcdatamodel; sourceTree = ""; }; - 0158DF202C594B1600C7BFFD /* ZMEventModel4.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = ZMEventModel4.0.xcdatamodel; sourceTree = ""; }; 0158DF222C5A3C6600C7BFFD /* event_4.0.sqlite */ = {isa = PBXFileReference; lastKnownFileType = file; path = event_4.0.sqlite; sourceTree = ""; }; 016D29392C10FB2F00DB969A /* ZMMessageTimer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZMMessageTimer.swift; sourceTree = ""; }; - 0176BDCF2D515224002C33DE /* zmessaging2.122.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.122.0.xcdatamodel; sourceTree = ""; }; 0176BDD02D515764002C33DE /* store2-122-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-122-0.wiredatabase"; sourceTree = ""; }; 017962952B83FC1400D6C7B6 /* DatabaseMigrationTests+UserUniqueness.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DatabaseMigrationTests+UserUniqueness.swift"; sourceTree = ""; }; 017962962B83FC1400D6C7B6 /* DatabaseMigrationTests+TeamUniqueness.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DatabaseMigrationTests+TeamUniqueness.swift"; sourceTree = ""; }; 017962972B83FC1400D6C7B6 /* DatabaseMigrationTests+ConversationUniqueness.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DatabaseMigrationTests+ConversationUniqueness.swift"; sourceTree = ""; }; 0179629B2B83FCA800D6C7B6 /* NSManagedObjectContext+Migration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+Migration.swift"; sourceTree = ""; }; 017962A72B85071B00D6C7B6 /* store2-112-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-112-0.wiredatabase"; sourceTree = ""; }; - 017962AB2B853C8600D6C7B6 /* Databases Changelog.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "Databases Changelog.md"; sourceTree = ""; }; 0179BC812BA9D08300A6C493 /* DatabaseRemoteIdentifierUniquenessTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DatabaseRemoteIdentifierUniquenessTests.swift; sourceTree = ""; }; - 017B55732CFFA599005FFBD4 /* zmessaging2.120.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.120.0.xcdatamodel; sourceTree = ""; }; 017B55752CFFA6B8005FFBD4 /* ForceSyncResourcesPostAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ForceSyncResourcesPostAction.swift; sourceTree = ""; }; 017B55782CFFB560005FFBD4 /* NSManagedObjectContext+SyncResources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+SyncResources.swift"; sourceTree = ""; }; 017B557C2CFFBCF5005FFBD4 /* DatabaseMigrationTests+ForceSyncResources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DatabaseMigrationTests+ForceSyncResources.swift"; sourceTree = ""; }; 017B55A82CFFC310005FFBD4 /* store2-120-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-120-0.wiredatabase"; sourceTree = ""; }; 0189815429A66B0800B52510 /* SafeCoreCryptoTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafeCoreCryptoTests.swift; sourceTree = ""; }; - 01943A0B2E01A11C0005CD1E /* zmessaging2.127.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.127.0.xcdatamodel; sourceTree = ""; }; 01943A0C2E01A9B50005CD1E /* store2-127-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-127-0.wiredatabase"; sourceTree = ""; }; - 01A4709E2DAD4A1D00B1B2E7 /* zmessaging2.124.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.124.0.xcdatamodel; sourceTree = ""; }; 01A4709F2DAD6F0C00B1B2E7 /* store2-124-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-124-0.wiredatabase"; sourceTree = ""; }; - 01B6A89E2B16252300E409A0 /* zmessaging2.111.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.111.0.xcdatamodel; sourceTree = ""; }; 01B6A89F2B16268300E409A0 /* store2-111-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-111-0.wiredatabase"; sourceTree = ""; }; 01B7A5742B0FB6DA00FE5132 /* CoreDataMessagingMigrationVersionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = CoreDataMessagingMigrationVersionTests.swift; path = Migrations/CoreDataMessagingMigrationVersionTests.swift; sourceTree = ""; }; 01BDA3122C59210300675DCB /* CoreDataMessagingMigratorProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataMessagingMigratorProtocol.swift; sourceTree = ""; }; @@ -1017,7 +1000,6 @@ 16030DAF21AD765D00F8032E /* ZMConversation+Confirmations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZMConversation+Confirmations.swift"; sourceTree = ""; }; 16030DBD21AE8FAB00F8032E /* ZMConversationTests+Confirmations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZMConversationTests+Confirmations.swift"; sourceTree = ""; }; 16030DC421AEE25500F8032E /* ZMOTRMessage+Confirmations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZMOTRMessage+Confirmations.swift"; sourceTree = ""; }; - 16058B262BDA8987003C82C2 /* zmessaging2.117.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.117.0.xcdatamodel; sourceTree = ""; }; 16058B292BDA9D27003C82C2 /* MLSCiphersuite.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MLSCiphersuite.swift; sourceTree = ""; }; 16058B2B2BDA9D83003C82C2 /* MLSSignatureAlgorithm.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MLSSignatureAlgorithm.swift; sourceTree = ""; }; 16058B2D2BDBAF73003C82C2 /* store2-117-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-117-0.wiredatabase"; sourceTree = ""; }; @@ -1028,7 +1010,6 @@ 1621E59120E62BD2006B2D17 /* ZMConversationTests+Silencing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZMConversationTests+Silencing.swift"; sourceTree = ""; }; 162294A4222038FA00A98679 /* CacheAssetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CacheAssetTests.swift; sourceTree = ""; }; 1626344A20D935C0000D4063 /* ZMConversation+Timestamps.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZMConversation+Timestamps.swift"; sourceTree = ""; }; - 162F85A62BC586A3007E2CB6 /* zmessaging2.116.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.116.0.xcdatamodel; sourceTree = ""; }; 162F85A82BC588A5007E2CB6 /* IsPendingInitialFetchMigrationAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IsPendingInitialFetchMigrationAction.swift; sourceTree = ""; }; 162F85AA2BC58DF8007E2CB6 /* store2-116-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-116-0.wiredatabase"; sourceTree = ""; }; 162F85AD2BC58FF7007E2CB6 /* DatabaseMigrationTests+IsPendingIntitialFetch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DatabaseMigrationTests+IsPendingIntitialFetch.swift"; sourceTree = ""; }; @@ -1111,7 +1092,6 @@ 16E70F97270F1F5700718E5D /* ZMConnection+Helper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ZMConnection+Helper.h"; sourceTree = ""; }; 16E70FA6270F212000718E5D /* ZMConnection+Helper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "ZMConnection+Helper.m"; sourceTree = ""; }; 16E7DA291FDABE440065B6A6 /* ZMOTRMessage+SelfConversationUpdateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZMOTRMessage+SelfConversationUpdateTests.swift"; sourceTree = ""; }; - 16EFC3AC2BAB1FFE0046C1D7 /* zmessaging2.115.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.115.0.xcdatamodel; sourceTree = ""; }; 16EFC3AD2BAB8AF20046C1D7 /* store2-114-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-114-0.wiredatabase"; sourceTree = ""; }; 16EFC3AF2BAB8B910046C1D7 /* store2-115-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-115-0.wiredatabase"; sourceTree = ""; }; 16F6BB391EDEC2D6009EA803 /* ZMConversation+ObserverHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ZMConversation+ObserverHelper.swift"; sourceTree = ""; }; @@ -1171,7 +1151,6 @@ 591F8A012B8CB4DE00D562A6 /* IsSelfUserE2EICertifiedUseCaseProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IsSelfUserE2EICertifiedUseCaseProtocol.swift; sourceTree = ""; }; 591F8A032B8CB4EF00D562A6 /* IsSelfUserE2EICertifiedUseCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IsSelfUserE2EICertifiedUseCase.swift; sourceTree = ""; }; 591F8A052B8CB81400D562A6 /* IsSelfUserE2EICertifiedUseCaseTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IsSelfUserE2EICertifiedUseCaseTests.swift; sourceTree = ""; }; - 5930D9C22D43BC33009E3514 /* zmessaging2.121.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.121.0.xcdatamodel; sourceTree = ""; }; 5966D82D2BD6A33F00305BBC /* UserPropertyValidating.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserPropertyValidating.swift; sourceTree = ""; }; 5966D82F2BD6AA4100305BBC /* UserPropertyNormalization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserPropertyNormalization.swift; sourceTree = ""; }; 5966D8312BD6AA8200305BBC /* UserPropertyNormalizer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserPropertyNormalizer.swift; sourceTree = ""; }; @@ -1248,7 +1227,6 @@ 6391A7FB2A6FD7C900832665 /* DatabaseMigrationTests+UserClientUniqueness.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DatabaseMigrationTests+UserClientUniqueness.swift"; sourceTree = ""; }; 6391A7FE2A6FDB9100832665 /* store2-107-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-107-0.wiredatabase"; sourceTree = ""; }; 6393EE7E2BC961150068A6D1 /* UserType+QualifiedID.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserType+QualifiedID.swift"; sourceTree = ""; }; - 6398545E2B346A0700AA10DE /* zmessaging2.112.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.112.0.xcdatamodel; sourceTree = ""; }; 639971A92B1E301E009DD5CF /* ReplaceSelfMLSKeyPackagesAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplaceSelfMLSKeyPackagesAction.swift; sourceTree = ""; }; 63AFE2D5244F49A90003F619 /* GenericMessage+MessageCapable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "GenericMessage+MessageCapable.swift"; sourceTree = ""; }; 63B1333729A503D000009D84 /* ProteusServiceInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProteusServiceInterface.swift; sourceTree = ""; }; @@ -1383,7 +1361,6 @@ BFFBFD941D59E49D0079773E /* ZMClientMessageTests+Deletion.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ZMClientMessageTests+Deletion.swift"; sourceTree = ""; }; C912D5732E3131C10019959D /* ZMConversation+ChannelHistoryDepth.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZMConversation+ChannelHistoryDepth.swift"; sourceTree = ""; }; C95C70672E535781004E4C79 /* Feature.ConsumableNotifications.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Feature.ConsumableNotifications.swift; sourceTree = ""; }; - C9B8074D2E605B3100183723 /* zmessaging2.129.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.129.0.xcdatamodel; sourceTree = ""; }; C9B82AAE2E60640000183723 /* store2-129-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-129-0.wiredatabase"; sourceTree = ""; }; C9B8EC2F2E5C947500183723 /* ZMConversation+CellsState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZMConversation+CellsState.swift"; sourceTree = ""; }; C9D574D22CEF630500012A0E /* TypingUsers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypingUsers.swift; sourceTree = ""; }; @@ -1398,11 +1375,8 @@ CB5212112D95A76800CF8099 /* ZMConversation+PrivateChannelPermission.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZMConversation+PrivateChannelPermission.swift"; sourceTree = ""; }; CB7979172C747652006FBA58 /* WireTransportSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WireTransportSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CB79791A2C7476AC006FBA58 /* TestSetup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestSetup.swift; sourceTree = ""; }; - CBAE486A2DC4C82900C62C4E /* zmessaging2.126.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.126.0.xcdatamodel; sourceTree = ""; }; CBAEABE82DC8DA8A00C62C4E /* store2-126-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-126-0.wiredatabase"; sourceTree = ""; }; CBB67B692E33FA2200FA52AA /* store2-128-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-128-0.wiredatabase"; sourceTree = ""; }; - CBBCDA432E33BDE8002E1B17 /* zmessaging2.128.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.128.0.xcdatamodel; sourceTree = ""; }; - CBED6B422D91A3FC00328BED /* zmessaging2.123.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.123.0.xcdatamodel; sourceTree = ""; }; CBED6B432D91B2F500328BED /* ZMConversation+ConversationGroupType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZMConversation+ConversationGroupType.swift"; sourceTree = ""; }; CBF4F17E2D36935300C9638B /* ConnectionValidator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectionValidator.swift; sourceTree = ""; }; CE4EDC081D6D9A3D002A20AA /* Reaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Reaction.swift; path = Reaction/Reaction.swift; sourceTree = ""; }; @@ -1431,9 +1405,7 @@ E6A239922B7F6F82004E48C2 /* MockActorOneOnOneProtocolSelector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockActorOneOnOneProtocolSelector.swift; sourceTree = ""; }; E6A5BBA52B0E33DB00ACC236 /* CoreDataMessagingMigrationVersion.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataMessagingMigrationVersion.swift; sourceTree = ""; }; E6A5BBAD2B0E564200ACC236 /* WireDataModelBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WireDataModelBundle.swift; sourceTree = ""; }; - E6BB79552C36DDA9003B821B /* zmessaging2.118.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.118.0.xcdatamodel; sourceTree = ""; }; E6BB79582C36EBE0003B821B /* store2-118-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-118-0.wiredatabase"; sourceTree = ""; }; - E6BDA1132B16421300488D92 /* zmessaging2.110.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.110.0.xcdatamodel; sourceTree = ""; }; E6BDA1142B1642A400488D92 /* store2-110-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-110-0.wiredatabase"; sourceTree = ""; }; E6BFE8372B3320C7000F0FBE /* DatabaseMigrationHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatabaseMigrationHelper.swift; sourceTree = ""; }; E6BFE8392B332DDB000F0FBE /* DatabaseMigrationTests+ParticipantRole.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DatabaseMigrationTests+ParticipantRole.swift"; sourceTree = ""; }; @@ -1459,36 +1431,6 @@ E6E5044D2BC56EDE004948E7 /* LAContextStorageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LAContextStorageTests.swift; sourceTree = ""; }; E6E5044F2BC571BF004948E7 /* AuthenticationContextTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationContextTests.swift; sourceTree = ""; }; E6E68B2A2B18D7B4003C29D2 /* ZMMessage+ServerTimestamp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZMMessage+ServerTimestamp.swift"; sourceTree = ""; }; - E6F443052B16294000D2B08A /* zmessaging2.98.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.98.0.xcdatamodel; sourceTree = ""; }; - E6F443062B16294000D2B08A /* zmessaging2.102.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.102.0.xcdatamodel; sourceTree = ""; }; - E6F443072B16294000D2B08A /* zmessaging2.106.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.106.0.xcdatamodel; sourceTree = ""; }; - E6F443082B16294000D2B08A /* zmessaging2.101.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.101.0.xcdatamodel; sourceTree = ""; }; - E6F443092B16294000D2B08A /* zmessaging2.105.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.105.0.xcdatamodel; sourceTree = ""; }; - E6F4430A2B16294000D2B08A /* zmessaging2.88.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.88.0.xcdatamodel; sourceTree = ""; }; - E6F4430B2B16294000D2B08A /* zmessaging2.95.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.95.0.xcdatamodel; sourceTree = ""; }; - E6F4430C2B16294000D2B08A /* zmessaging2.82.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.82.0.xcdatamodel; sourceTree = ""; }; - E6F4430D2B16294000D2B08A /* zmessaging2.86.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.86.0.xcdatamodel; sourceTree = ""; }; - E6F4430E2B16294000D2B08A /* zmessaging2.91.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.91.0.xcdatamodel; sourceTree = ""; }; - E6F4430F2B16294000D2B08A /* zmessaging2.108.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.108.0.xcdatamodel; sourceTree = ""; }; - E6F443102B16294000D2B08A /* zmessaging2.81.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.81.0.xcdatamodel; sourceTree = ""; }; - E6F443112B16294000D2B08A /* zmessaging2.96.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.96.0.xcdatamodel; sourceTree = ""; }; - E6F443122B16294000D2B08A /* zmessaging2.92.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.92.0.xcdatamodel; sourceTree = ""; }; - E6F443132B16294000D2B08A /* zmessaging2.85.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.85.0.xcdatamodel; sourceTree = ""; }; - E6F443142B16294000D2B08A /* zmessaging2.109.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.109.0.xcdatamodel; sourceTree = ""; }; - E6F443152B16294000D2B08A /* zmessaging2.84.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.84.0.xcdatamodel; sourceTree = ""; }; - E6F443162B16294000D2B08A /* zmessaging2.93.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.93.0.xcdatamodel; sourceTree = ""; }; - E6F443172B16294000D2B08A /* zmessaging2.97.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.97.0.xcdatamodel; sourceTree = ""; }; - E6F443182B16294000D2B08A /* zmessaging2.80.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.80.0.xcdatamodel; sourceTree = ""; }; - E6F443192B16294000D2B08A /* zmessaging2.90.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.90.0.xcdatamodel; sourceTree = ""; }; - E6F4431A2B16294000D2B08A /* zmessaging2.87.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.87.0.xcdatamodel; sourceTree = ""; }; - E6F4431B2B16294000D2B08A /* zmessaging2.83.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.83.0.xcdatamodel; sourceTree = ""; }; - E6F4431C2B16294000D2B08A /* zmessaging2.94.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.94.0.xcdatamodel; sourceTree = ""; }; - E6F4431D2B16294000D2B08A /* zmessaging2.104.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.104.0.xcdatamodel; sourceTree = ""; }; - E6F4431E2B16294000D2B08A /* zmessaging2.100.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.100.0.xcdatamodel; sourceTree = ""; }; - E6F4431F2B16294000D2B08A /* zmessaging2.89.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.89.0.xcdatamodel; sourceTree = ""; }; - E6F443202B16294000D2B08A /* zmessaging2.99.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.99.0.xcdatamodel; sourceTree = ""; }; - E6F443212B16294000D2B08A /* zmessaging2.107.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.107.0.xcdatamodel; sourceTree = ""; }; - E6F443222B16294000D2B08A /* zmessaging2.103.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.103.0.xcdatamodel; sourceTree = ""; }; E90AAE33279719D8003C7DB0 /* store2-98-0.wiredatabase */ = {isa = PBXFileReference; lastKnownFileType = file; path = "store2-98-0.wiredatabase"; sourceTree = ""; }; E999AC3F2BC9467E00569E79 /* CreateConversationGuestLinkAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateConversationGuestLinkAction.swift; sourceTree = ""; }; E9A96E792B88B64800914FDD /* PushSupportedProtocolsAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushSupportedProtocolsAction.swift; sourceTree = ""; }; @@ -1540,7 +1482,6 @@ EE7A90EF2B21E29E00B58E84 /* OneOnOneMigratorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OneOnOneMigratorTests.swift; sourceTree = ""; }; EE7CF5E72B725EA1001DC3F9 /* ConversationPredicateFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationPredicateFactory.swift; sourceTree = ""; }; EE84226F28EC353900B80FE5 /* MLSActionExecutorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MLSActionExecutorTests.swift; sourceTree = ""; }; - EE85C8AB2B55790400D3182D /* zmessaging2.113.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = zmessaging2.113.0.xcdatamodel; sourceTree = ""; }; EE85C8B12B557C3D00D3182D /* DatabaseMigrationTests+OneOnOneConversation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DatabaseMigrationTests+OneOnOneConversation.swift"; sourceTree = ""; }; EE86678D2A56CF77005CBEA4 /* ZMConversation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZMConversation.swift; sourceTree = ""; }; EE8B09AC25B86AB10057E85C /* AppLockError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLockError.swift; sourceTree = ""; }; @@ -3544,9 +3485,6 @@ F9C9A6771CAD7A790039E10C /* Resources */ = { isa = PBXGroup; children = ( - 017962AB2B853C8600D6C7B6 /* Databases Changelog.md */, - 0158DF1A2C594B1600C7BFFD /* ZMEventModel.xcdatamodeld */, - E6F443042B16294000D2B08A /* zmessaging.xcdatamodeld */, F9C9A5DC1CAD76A50039E10C /* Info.plist */, F9C9A6781CAD7A790039E10C /* Configurations */, ); @@ -4389,7 +4327,6 @@ 63370CC9242E3B990072C37F /* ZMMessage+Conversation.swift in Sources */, 63B1335729A503D100009D84 /* MLSActionsProvider.swift in Sources */, EEC794F42A384421008E1A3B /* MLSDecryptionService.swift in Sources */, - 0158DF212C594B3600C7BFFD /* ZMEventModel.xcdatamodeld in Sources */, 5966D8362BD6AF1700305BBC /* UserPropertyNormalizationResult.swift in Sources */, 547E66491F7503A5008CB1FA /* ZMConversation+Notifications.swift in Sources */, EF18C7E61F9E4F8A0085A832 /* UserType+Filename.swift in Sources */, @@ -4407,7 +4344,6 @@ F9A706A31CAEE01D00C2F5FE /* ConversationListChangeInfo.swift in Sources */, 873B88FC204044AC00FBE254 /* ConversationCreationOptions.swift in Sources */, 87E9508B2118B2DA00306AA7 /* ZMConversation+DeleteOlderMessages.swift in Sources */, - E6F443232B16294400D2B08A /* zmessaging.xcdatamodeld in Sources */, EE9AD9162696F01700DD5F51 /* LegacyFeatureRepository.swift in Sources */, 63B1337329A798C800009D84 /* ProteusProvider.swift in Sources */, 0630E4B6257F888600C75BFB /* NSManagedObjectContext+AppLock.swift in Sources */, @@ -5232,83 +5168,6 @@ productName = PINCache; }; /* End XCSwiftPackageProductDependency section */ - -/* Begin XCVersionGroup section */ - 0158DF1A2C594B1600C7BFFD /* ZMEventModel.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - 0158DF1B2C594B1600C7BFFD /* ZMEventModel5.0.xcdatamodel */, - 0158DF1C2C594B1600C7BFFD /* ZMEventModel6.0.xcdatamodel */, - 0158DF1D2C594B1600C7BFFD /* ZMEventModel2.0.xcdatamodel */, - 0158DF1E2C594B1600C7BFFD /* ZMEventModel.xcdatamodel */, - 0158DF1F2C594B1600C7BFFD /* ZMEventModel3.0.xcdatamodel */, - 0158DF202C594B1600C7BFFD /* ZMEventModel4.0.xcdatamodel */, - ); - currentVersion = 0158DF1C2C594B1600C7BFFD /* ZMEventModel6.0.xcdatamodel */; - path = ZMEventModel.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; - E6F443042B16294000D2B08A /* zmessaging.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - C9B8074D2E605B3100183723 /* zmessaging2.129.0.xcdatamodel */, - CBBCDA432E33BDE8002E1B17 /* zmessaging2.128.0.xcdatamodel */, - 01943A0B2E01A11C0005CD1E /* zmessaging2.127.0.xcdatamodel */, - CBAE486A2DC4C82900C62C4E /* zmessaging2.126.0.xcdatamodel */, - 01423BC72DB00D8200C49567 /* zmessaging2.125.0.xcdatamodel */, - 01A4709E2DAD4A1D00B1B2E7 /* zmessaging2.124.0.xcdatamodel */, - CBED6B422D91A3FC00328BED /* zmessaging2.123.0.xcdatamodel */, - 0176BDCF2D515224002C33DE /* zmessaging2.122.0.xcdatamodel */, - 5930D9C22D43BC33009E3514 /* zmessaging2.121.0.xcdatamodel */, - 017B55732CFFA599005FFBD4 /* zmessaging2.120.0.xcdatamodel */, - 01586D3F2CAECE8B00C3BCE1 /* zmessaging2.119.0.xcdatamodel */, - E6BB79552C36DDA9003B821B /* zmessaging2.118.0.xcdatamodel */, - 16058B262BDA8987003C82C2 /* zmessaging2.117.0.xcdatamodel */, - 162F85A62BC586A3007E2CB6 /* zmessaging2.116.0.xcdatamodel */, - 16EFC3AC2BAB1FFE0046C1D7 /* zmessaging2.115.0.xcdatamodel */, - 0153CA842B8540F0000000CA /* zmessaging2.114.0.xcdatamodel */, - EE85C8AB2B55790400D3182D /* zmessaging2.113.0.xcdatamodel */, - 6398545E2B346A0700AA10DE /* zmessaging2.112.0.xcdatamodel */, - 01B6A89E2B16252300E409A0 /* zmessaging2.111.0.xcdatamodel */, - E6BDA1132B16421300488D92 /* zmessaging2.110.0.xcdatamodel */, - E6F443142B16294000D2B08A /* zmessaging2.109.0.xcdatamodel */, - E6F4430F2B16294000D2B08A /* zmessaging2.108.0.xcdatamodel */, - E6F443212B16294000D2B08A /* zmessaging2.107.0.xcdatamodel */, - E6F443072B16294000D2B08A /* zmessaging2.106.0.xcdatamodel */, - E6F443092B16294000D2B08A /* zmessaging2.105.0.xcdatamodel */, - E6F4431D2B16294000D2B08A /* zmessaging2.104.0.xcdatamodel */, - E6F443222B16294000D2B08A /* zmessaging2.103.0.xcdatamodel */, - E6F443062B16294000D2B08A /* zmessaging2.102.0.xcdatamodel */, - E6F443082B16294000D2B08A /* zmessaging2.101.0.xcdatamodel */, - E6F4431E2B16294000D2B08A /* zmessaging2.100.0.xcdatamodel */, - E6F443202B16294000D2B08A /* zmessaging2.99.0.xcdatamodel */, - E6F443052B16294000D2B08A /* zmessaging2.98.0.xcdatamodel */, - E6F443172B16294000D2B08A /* zmessaging2.97.0.xcdatamodel */, - E6F443112B16294000D2B08A /* zmessaging2.96.0.xcdatamodel */, - E6F4430B2B16294000D2B08A /* zmessaging2.95.0.xcdatamodel */, - E6F4431C2B16294000D2B08A /* zmessaging2.94.0.xcdatamodel */, - E6F443162B16294000D2B08A /* zmessaging2.93.0.xcdatamodel */, - E6F443122B16294000D2B08A /* zmessaging2.92.0.xcdatamodel */, - E6F4430E2B16294000D2B08A /* zmessaging2.91.0.xcdatamodel */, - E6F443192B16294000D2B08A /* zmessaging2.90.0.xcdatamodel */, - E6F4431F2B16294000D2B08A /* zmessaging2.89.0.xcdatamodel */, - E6F4430A2B16294000D2B08A /* zmessaging2.88.0.xcdatamodel */, - E6F4431A2B16294000D2B08A /* zmessaging2.87.0.xcdatamodel */, - E6F4430D2B16294000D2B08A /* zmessaging2.86.0.xcdatamodel */, - E6F443132B16294000D2B08A /* zmessaging2.85.0.xcdatamodel */, - E6F443152B16294000D2B08A /* zmessaging2.84.0.xcdatamodel */, - E6F4431B2B16294000D2B08A /* zmessaging2.83.0.xcdatamodel */, - E6F4430C2B16294000D2B08A /* zmessaging2.82.0.xcdatamodel */, - E6F443102B16294000D2B08A /* zmessaging2.81.0.xcdatamodel */, - E6F443182B16294000D2B08A /* zmessaging2.80.0.xcdatamodel */, - ); - currentVersion = C9B8074D2E605B3100183723 /* zmessaging2.129.0.xcdatamodel */; - path = zmessaging.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; -/* End XCVersionGroup section */ }; rootObject = F9C9A4F31CAD5DF10039E10C /* Project object */; } From 03939c8e3a2b7a3d9da0ab588ad73d67ca3fe058 Mon Sep 17 00:00:00 2001 From: Jullian Mercier <31648126+jullianm@users.noreply.github.com> Date: Fri, 29 Aug 2025 16:27:01 +0200 Subject: [PATCH 11/22] lint and format --- WireData/Sources/WireData/WireDataBundle.swift | 2 +- .../Source/ManagedObjectContext/CoreDataStack.swift | 2 +- .../Tests/Source/Helper/DatabaseMigrationHelper.swift | 2 +- .../Source/ManagedObjectContext/DatabaseMigrationTests.swift | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/WireData/Sources/WireData/WireDataBundle.swift b/WireData/Sources/WireData/WireDataBundle.swift index 0a05485c3c5..0dbcadf31da 100644 --- a/WireData/Sources/WireData/WireDataBundle.swift +++ b/WireData/Sources/WireData/WireDataBundle.swift @@ -18,6 +18,6 @@ import Foundation -public final class WireDataBundle { +public enum WireDataBundle { public static let bundle = Bundle.module } diff --git a/wire-ios-data-model/Source/ManagedObjectContext/CoreDataStack.swift b/wire-ios-data-model/Source/ManagedObjectContext/CoreDataStack.swift index 605bbd14e60..46409587c6d 100644 --- a/wire-ios-data-model/Source/ManagedObjectContext/CoreDataStack.swift +++ b/wire-ios-data-model/Source/ManagedObjectContext/CoreDataStack.swift @@ -18,10 +18,10 @@ import CoreData import Foundation +import WireData import WireLogging import WireSystem import WireUtilities -import WireData enum CoreDataStackError: Error { case simulateDatabaseLoadingFailure diff --git a/wire-ios-data-model/Tests/Source/Helper/DatabaseMigrationHelper.swift b/wire-ios-data-model/Tests/Source/Helper/DatabaseMigrationHelper.swift index d52acf9b22b..c2d04f1c373 100644 --- a/wire-ios-data-model/Tests/Source/Helper/DatabaseMigrationHelper.swift +++ b/wire-ios-data-model/Tests/Source/Helper/DatabaseMigrationHelper.swift @@ -16,8 +16,8 @@ // along with this program. If not, see http://www.gnu.org/licenses/. // -import XCTest import WireData +import XCTest @testable import WireDataModel enum Database { diff --git a/wire-ios-data-model/Tests/Source/ManagedObjectContext/DatabaseMigrationTests.swift b/wire-ios-data-model/Tests/Source/ManagedObjectContext/DatabaseMigrationTests.swift index 6d4b54ee12b..c074b05dc6c 100644 --- a/wire-ios-data-model/Tests/Source/ManagedObjectContext/DatabaseMigrationTests.swift +++ b/wire-ios-data-model/Tests/Source/ManagedObjectContext/DatabaseMigrationTests.swift @@ -17,8 +17,8 @@ // // -import XCTest import WireData +import XCTest @testable import WireDataModel From 3339f09d1d8fe3d732fbe2156352924965bb718d Mon Sep 17 00:00:00 2001 From: Sam Wyndham Date: Mon, 1 Sep 2025 12:20:41 +0200 Subject: [PATCH 12/22] Delete zmessaging2.129.0 from its old location - it shouldn't be there. --- .../zmessaging2.129.0.xcdatamodel/contents | 444 ------------------ 1 file changed, 444 deletions(-) delete mode 100644 wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents diff --git a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents b/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents deleted file mode 100644 index 6497832638d..00000000000 --- a/wire-ios-data-model/Resources/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents +++ /dev/null @@ -1,444 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 346077efb52febbd4a0e64cd43557c496f52e0af Mon Sep 17 00:00:00 2001 From: Sam Wyndham Date: Mon, 1 Sep 2025 13:02:07 +0200 Subject: [PATCH 13/22] Remove `representedClassName` changes from all legacy data models --- .../zmessaging2.100.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.101.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.102.0.xcdatamodel/contents | 26 ++++----- .../zmessaging2.103.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.104.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.105.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.106.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.107.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.108.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.109.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.110.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.111.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.112.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.113.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.114.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.115.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.116.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.117.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.118.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.119.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.120.0.xcdatamodel/contents | 32 +++++------ .../zmessaging2.121.0.xcdatamodel/contents | 32 +++++------ .../zmessaging2.122.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.123.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.124.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.125.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.126.0.xcdatamodel/contents | 32 +++++------ .../zmessaging2.127.0.xcdatamodel/contents | 32 +++++------ .../zmessaging2.128.0.xcdatamodel/contents | 32 +++++------ .../zmessaging2.80.0.xcdatamodel/contents | 53 ++++++++++++++----- .../zmessaging2.81.0.xcdatamodel/contents | 26 ++++----- .../zmessaging2.82.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.83.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.84.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.85.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.86.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.87.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.88.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.89.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.90.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.91.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.92.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.93.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.94.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.95.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.96.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.97.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.98.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.99.0.xcdatamodel/contents | 30 +++++------ 49 files changed, 751 insertions(+), 726 deletions(-) diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents index d4a2b99b98b..983632ae95b 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -134,7 +134,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -201,19 +201,19 @@ - + - + - + @@ -241,7 +241,7 @@ - + @@ -306,7 +306,7 @@ - + @@ -369,4 +369,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents index 4a2df29d6e0..bb8b10b9cb8 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -126,7 +126,7 @@ - + @@ -135,7 +135,7 @@ - + @@ -193,19 +193,19 @@ - + - + - + @@ -233,7 +233,7 @@ - + @@ -297,7 +297,7 @@ - + @@ -359,4 +359,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents index 6c43006a244..6910cc9381a 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -126,7 +126,7 @@ - + @@ -135,7 +135,7 @@ - + @@ -193,19 +193,19 @@ - + - + - + @@ -233,7 +233,7 @@ - + @@ -297,7 +297,7 @@ - + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents index 3be8dc1322b..0f9caeeef48 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -102,7 +102,7 @@ - + @@ -127,7 +127,7 @@ - + @@ -136,7 +136,7 @@ - + @@ -194,19 +194,19 @@ - + - + - + @@ -234,7 +234,7 @@ - + @@ -298,7 +298,7 @@ - + @@ -362,4 +362,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents index 338d8d6230a..718471d9f12 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -104,7 +104,7 @@ - + @@ -129,7 +129,7 @@ - + @@ -138,7 +138,7 @@ - + @@ -196,19 +196,19 @@ - + - + - + @@ -236,7 +236,7 @@ - + @@ -300,7 +300,7 @@ - + @@ -364,4 +364,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents index a217ec9cf80..615aa4391ad 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -106,7 +106,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -140,7 +140,7 @@ - + @@ -198,23 +198,23 @@ - + - + - + - + @@ -242,7 +242,7 @@ - + @@ -306,7 +306,7 @@ - + @@ -344,4 +344,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents index 42b456cb5b8..e7e43f2b256 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -107,7 +107,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,23 +199,23 @@ - + - + - + - + @@ -243,7 +243,7 @@ - + @@ -307,7 +307,7 @@ - + @@ -345,4 +345,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents index 058af143cbf..54836bd5f1c 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -114,7 +114,7 @@ - + @@ -139,7 +139,7 @@ - + @@ -148,7 +148,7 @@ - + @@ -219,23 +219,23 @@ - + - + - + - + @@ -263,7 +263,7 @@ - + @@ -339,7 +339,7 @@ - + @@ -382,4 +382,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents index 9a133e27914..48210b50b29 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -116,7 +116,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -223,23 +223,23 @@ - + - + - + - + @@ -268,7 +268,7 @@ - + @@ -346,7 +346,7 @@ - + @@ -389,4 +389,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents index 06c167a66c1..9897331d3d9 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -116,7 +116,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -223,24 +223,24 @@ - + - + - + - + @@ -269,7 +269,7 @@ - + @@ -347,7 +347,7 @@ - + @@ -390,4 +390,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents index 03dccc5468f..63be342fcab 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -116,7 +116,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -223,24 +223,24 @@ - + - + - + - + @@ -269,7 +269,7 @@ - + @@ -347,7 +347,7 @@ - + @@ -387,4 +387,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents index e8f663efaef..1ba620f09be 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -122,7 +122,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -229,24 +229,24 @@ - + - + - + - + @@ -275,7 +275,7 @@ - + @@ -364,7 +364,7 @@ - + @@ -404,4 +404,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents index 93420f7ed03..06f51fe635b 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -122,7 +122,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -229,24 +229,24 @@ - + - + - + - + @@ -275,7 +275,7 @@ - + @@ -364,7 +364,7 @@ - + @@ -403,4 +403,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents index 6530976ec4d..0dfe32f176e 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -122,7 +122,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -229,24 +229,24 @@ - + - + - + - + @@ -275,7 +275,7 @@ - + @@ -364,7 +364,7 @@ - + @@ -404,4 +404,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents index f2d6b537b03..44c889b94bd 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -231,24 +231,24 @@ - + - + - + - + @@ -277,7 +277,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -408,4 +408,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents index 36371834239..ebfdd343caa 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -122,7 +122,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -229,24 +229,24 @@ - + - + - + - + @@ -275,7 +275,7 @@ - + @@ -366,7 +366,7 @@ - + @@ -406,4 +406,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents index de3fb8b857c..ed4af788bfb 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -123,7 +123,7 @@ - + @@ -148,7 +148,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -230,24 +230,24 @@ - + - + - + - + @@ -276,7 +276,7 @@ - + @@ -367,7 +367,7 @@ - + @@ -407,4 +407,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents index b5aacdbdd50..d2dc9359121 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -231,24 +231,24 @@ - + - + - + - + @@ -277,7 +277,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -408,4 +408,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents index 58d186b137b..293fd84fd28 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -369,7 +369,7 @@ - + @@ -409,4 +409,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents index 7b433b039cd..d5e758c70bc 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -408,4 +408,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents index 867de285ebc..39f01d53794 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -369,7 +369,7 @@ - + @@ -409,4 +409,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents index 0ce727ebf08..1b82c231817 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -369,7 +369,7 @@ - + @@ -408,4 +408,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents index 9d3147aa0b8..76a344faaf9 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -404,4 +404,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents index bcf1e48c3ec..006f494dbd9 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -126,7 +126,7 @@ - + @@ -151,7 +151,7 @@ - + @@ -160,7 +160,7 @@ - + @@ -234,24 +234,24 @@ - + - + - + - + @@ -280,7 +280,7 @@ - + @@ -370,7 +370,7 @@ - + @@ -406,4 +406,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents index fbff13849e2..a2b8982eec3 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -127,7 +127,7 @@ - + @@ -152,7 +152,7 @@ - + @@ -161,7 +161,7 @@ - + @@ -235,24 +235,24 @@ - + - + - + - + @@ -281,7 +281,7 @@ - + @@ -371,7 +371,7 @@ - + @@ -407,4 +407,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents index 391aa5e19eb..c8a3dd84b70 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -127,7 +127,7 @@ - + @@ -152,7 +152,7 @@ - + @@ -161,7 +161,7 @@ - + @@ -235,24 +235,24 @@ - + - + - + - + @@ -281,7 +281,7 @@ - + @@ -371,7 +371,7 @@ - + @@ -408,4 +408,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents index db3148eaa25..9c43c867dfc 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - - + + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -129,7 +129,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -237,24 +237,24 @@ - + - + - + - + @@ -283,7 +283,7 @@ - + @@ -373,7 +373,7 @@ - + @@ -429,4 +429,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents index 40a72cd4896..16676ff9957 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - - + + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -129,7 +129,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -237,24 +237,24 @@ - + - + - + - + @@ -283,7 +283,7 @@ - + @@ -373,7 +373,7 @@ - + @@ -429,4 +429,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents index fa1cf505f9d..8668431f8b8 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -129,7 +129,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -237,24 +237,24 @@ - + - + - + - + @@ -283,7 +283,7 @@ - + @@ -373,7 +373,7 @@ - + @@ -421,7 +421,7 @@ - + @@ -440,4 +440,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents index e3b50e2cee6..8577ea00a6d 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - - + + - + - + @@ -23,13 +23,13 @@ - + - + @@ -113,7 +113,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -180,19 +180,19 @@ - + - + - + @@ -218,7 +218,7 @@ - + @@ -280,7 +280,7 @@ - + @@ -313,4 +313,29 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents index 6d71177598d..b43e1a3cc33 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -113,7 +113,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -180,19 +180,19 @@ - + - + - + @@ -218,7 +218,7 @@ - + @@ -280,7 +280,7 @@ - + @@ -338,4 +338,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents index 0aca35c9571..0d03d62002b 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -97,7 +97,7 @@ - + @@ -120,7 +120,7 @@ - + @@ -129,7 +129,7 @@ - + @@ -187,19 +187,19 @@ - + - + - + @@ -225,7 +225,7 @@ - + @@ -288,7 +288,7 @@ - + @@ -347,4 +347,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents index ca1d8abaaa4..9abd72bc827 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -97,7 +97,7 @@ - + @@ -121,7 +121,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -188,19 +188,19 @@ - + - + - + @@ -226,7 +226,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -348,4 +348,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents index 07d74f0de67..19f9e41667f 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -97,7 +97,7 @@ - + @@ -121,7 +121,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -188,19 +188,19 @@ - + - + - + @@ -226,7 +226,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -348,4 +348,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents index e9db093641b..eb6d55246c4 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -98,7 +98,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -189,19 +189,19 @@ - + - + - + @@ -227,7 +227,7 @@ - + @@ -290,7 +290,7 @@ - + @@ -349,4 +349,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents index 33cb66092f9..77dc4288008 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -98,7 +98,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -189,19 +189,19 @@ - + - + - + @@ -227,7 +227,7 @@ - + @@ -291,7 +291,7 @@ - + @@ -350,4 +350,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents index 042f315edde..e38e89d07a5 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -123,7 +123,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -190,19 +190,19 @@ - + - + - + @@ -228,7 +228,7 @@ - + @@ -292,7 +292,7 @@ - + @@ -351,4 +351,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents index 68c7dfc9974..7e0002af938 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -237,7 +237,7 @@ - + @@ -302,7 +302,7 @@ - + @@ -362,4 +362,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents index eedd17af1e0..a9419b6d69c 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -238,7 +238,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -364,4 +364,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents index ea29c39b460..cdcfef0b5a9 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -238,7 +238,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -365,4 +365,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents index 91e6b7cea0b..443f2eebabc 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -239,7 +239,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -366,4 +366,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents index 86eea3b478d..337b1037bcb 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -239,7 +239,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -367,4 +367,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents index 405b501f051..73f430c41ed 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -107,7 +107,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -140,7 +140,7 @@ - + @@ -198,19 +198,19 @@ - + - + - + @@ -238,7 +238,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -365,4 +365,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents index 7f201f511dd..36818d51457 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -100,7 +100,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -239,7 +239,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -366,4 +366,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents index dc21f80e77a..896647fa0f4 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -100,7 +100,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -200,19 +200,19 @@ - + - + - + @@ -240,7 +240,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -367,4 +367,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents index 0eceea3aacf..bb1ebf98966 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -100,7 +100,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -200,19 +200,19 @@ - + - + - + @@ -240,7 +240,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -368,4 +368,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents index 1d0f5bed11d..3c86d991e6c 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -100,7 +100,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -200,19 +200,19 @@ - + - + - + @@ -240,7 +240,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -368,4 +368,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents index 1471c5661c2..7463d5f2c5c 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -134,7 +134,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -201,19 +201,19 @@ - + - + - + @@ -241,7 +241,7 @@ - + @@ -306,7 +306,7 @@ - + @@ -369,4 +369,4 @@ - + \ No newline at end of file diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents index 750d4d4e688..6e6e9c82544 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -134,7 +134,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -201,19 +201,19 @@ - + - + - + @@ -241,7 +241,7 @@ - + @@ -306,7 +306,7 @@ - + @@ -370,4 +370,4 @@ - + \ No newline at end of file From 87e3669150e92555b74fc73e2f1b12a7bce4610a Mon Sep 17 00:00:00 2001 From: Sam Wyndham Date: Mon, 1 Sep 2025 16:30:23 +0200 Subject: [PATCH 14/22] Revert "Remove `representedClassName` changes from all legacy data models" This reverts commit 346077efb52febbd4a0e64cd43557c496f52e0af. --- .../zmessaging2.100.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.101.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.102.0.xcdatamodel/contents | 26 ++++----- .../zmessaging2.103.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.104.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.105.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.106.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.107.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.108.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.109.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.110.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.111.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.112.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.113.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.114.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.115.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.116.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.117.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.118.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.119.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.120.0.xcdatamodel/contents | 32 +++++------ .../zmessaging2.121.0.xcdatamodel/contents | 32 +++++------ .../zmessaging2.122.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.123.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.124.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.125.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.126.0.xcdatamodel/contents | 32 +++++------ .../zmessaging2.127.0.xcdatamodel/contents | 32 +++++------ .../zmessaging2.128.0.xcdatamodel/contents | 32 +++++------ .../zmessaging2.80.0.xcdatamodel/contents | 53 +++++-------------- .../zmessaging2.81.0.xcdatamodel/contents | 26 ++++----- .../zmessaging2.82.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.83.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.84.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.85.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.86.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.87.0.xcdatamodel/contents | 28 +++++----- .../zmessaging2.88.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.89.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.90.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.91.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.92.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.93.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.94.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.95.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.96.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.97.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.98.0.xcdatamodel/contents | 30 +++++------ .../zmessaging2.99.0.xcdatamodel/contents | 30 +++++------ 49 files changed, 726 insertions(+), 751 deletions(-) diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents index 983632ae95b..d4a2b99b98b 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -134,7 +134,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -201,19 +201,19 @@ - + - + - + @@ -241,7 +241,7 @@ - + @@ -306,7 +306,7 @@ - + @@ -369,4 +369,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents index bb8b10b9cb8..4a2df29d6e0 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -126,7 +126,7 @@ - + @@ -135,7 +135,7 @@ - + @@ -193,19 +193,19 @@ - + - + - + @@ -233,7 +233,7 @@ - + @@ -297,7 +297,7 @@ - + @@ -359,4 +359,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents index 6910cc9381a..6c43006a244 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -126,7 +126,7 @@ - + @@ -135,7 +135,7 @@ - + @@ -193,19 +193,19 @@ - + - + - + @@ -233,7 +233,7 @@ - + @@ -297,7 +297,7 @@ - + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents index 0f9caeeef48..3be8dc1322b 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -102,7 +102,7 @@ - + @@ -127,7 +127,7 @@ - + @@ -136,7 +136,7 @@ - + @@ -194,19 +194,19 @@ - + - + - + @@ -234,7 +234,7 @@ - + @@ -298,7 +298,7 @@ - + @@ -362,4 +362,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents index 718471d9f12..338d8d6230a 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -104,7 +104,7 @@ - + @@ -129,7 +129,7 @@ - + @@ -138,7 +138,7 @@ - + @@ -196,19 +196,19 @@ - + - + - + @@ -236,7 +236,7 @@ - + @@ -300,7 +300,7 @@ - + @@ -364,4 +364,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents index 615aa4391ad..a217ec9cf80 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -106,7 +106,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -140,7 +140,7 @@ - + @@ -198,23 +198,23 @@ - + - + - + - + @@ -242,7 +242,7 @@ - + @@ -306,7 +306,7 @@ - + @@ -344,4 +344,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents index e7e43f2b256..42b456cb5b8 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -107,7 +107,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,23 +199,23 @@ - + - + - + - + @@ -243,7 +243,7 @@ - + @@ -307,7 +307,7 @@ - + @@ -345,4 +345,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents index 54836bd5f1c..058af143cbf 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -114,7 +114,7 @@ - + @@ -139,7 +139,7 @@ - + @@ -148,7 +148,7 @@ - + @@ -219,23 +219,23 @@ - + - + - + - + @@ -263,7 +263,7 @@ - + @@ -339,7 +339,7 @@ - + @@ -382,4 +382,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents index 48210b50b29..9a133e27914 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -116,7 +116,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -223,23 +223,23 @@ - + - + - + - + @@ -268,7 +268,7 @@ - + @@ -346,7 +346,7 @@ - + @@ -389,4 +389,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents index 9897331d3d9..06c167a66c1 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -116,7 +116,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -223,24 +223,24 @@ - + - + - + - + @@ -269,7 +269,7 @@ - + @@ -347,7 +347,7 @@ - + @@ -390,4 +390,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents index 63be342fcab..03dccc5468f 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -116,7 +116,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -223,24 +223,24 @@ - + - + - + - + @@ -269,7 +269,7 @@ - + @@ -347,7 +347,7 @@ - + @@ -387,4 +387,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents index 1ba620f09be..e8f663efaef 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -122,7 +122,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -229,24 +229,24 @@ - + - + - + - + @@ -275,7 +275,7 @@ - + @@ -364,7 +364,7 @@ - + @@ -404,4 +404,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents index 06f51fe635b..93420f7ed03 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -122,7 +122,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -229,24 +229,24 @@ - + - + - + - + @@ -275,7 +275,7 @@ - + @@ -364,7 +364,7 @@ - + @@ -403,4 +403,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents index 0dfe32f176e..6530976ec4d 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -122,7 +122,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -229,24 +229,24 @@ - + - + - + - + @@ -275,7 +275,7 @@ - + @@ -364,7 +364,7 @@ - + @@ -404,4 +404,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents index 44c889b94bd..f2d6b537b03 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -231,24 +231,24 @@ - + - + - + - + @@ -277,7 +277,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -408,4 +408,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents index ebfdd343caa..36371834239 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -122,7 +122,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -229,24 +229,24 @@ - + - + - + - + @@ -275,7 +275,7 @@ - + @@ -366,7 +366,7 @@ - + @@ -406,4 +406,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents index ed4af788bfb..de3fb8b857c 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -123,7 +123,7 @@ - + @@ -148,7 +148,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -230,24 +230,24 @@ - + - + - + - + @@ -276,7 +276,7 @@ - + @@ -367,7 +367,7 @@ - + @@ -407,4 +407,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents index d2dc9359121..b5aacdbdd50 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -231,24 +231,24 @@ - + - + - + - + @@ -277,7 +277,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -408,4 +408,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents index 293fd84fd28..58d186b137b 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -369,7 +369,7 @@ - + @@ -409,4 +409,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents index d5e758c70bc..7b433b039cd 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -408,4 +408,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents index 39f01d53794..867de285ebc 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -369,7 +369,7 @@ - + @@ -409,4 +409,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents index 1b82c231817..0ce727ebf08 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -369,7 +369,7 @@ - + @@ -408,4 +408,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents index 76a344faaf9..9d3147aa0b8 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -232,24 +232,24 @@ - + - + - + - + @@ -278,7 +278,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -404,4 +404,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents index 006f494dbd9..bcf1e48c3ec 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -126,7 +126,7 @@ - + @@ -151,7 +151,7 @@ - + @@ -160,7 +160,7 @@ - + @@ -234,24 +234,24 @@ - + - + - + - + @@ -280,7 +280,7 @@ - + @@ -370,7 +370,7 @@ - + @@ -406,4 +406,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents index a2b8982eec3..fbff13849e2 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -127,7 +127,7 @@ - + @@ -152,7 +152,7 @@ - + @@ -161,7 +161,7 @@ - + @@ -235,24 +235,24 @@ - + - + - + - + @@ -281,7 +281,7 @@ - + @@ -371,7 +371,7 @@ - + @@ -407,4 +407,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents index c8a3dd84b70..391aa5e19eb 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -127,7 +127,7 @@ - + @@ -152,7 +152,7 @@ - + @@ -161,7 +161,7 @@ - + @@ -235,24 +235,24 @@ - + - + - + - + @@ -281,7 +281,7 @@ - + @@ -371,7 +371,7 @@ - + @@ -408,4 +408,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents index 9c43c867dfc..db3148eaa25 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - - + + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -129,7 +129,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -237,24 +237,24 @@ - + - + - + - + @@ -283,7 +283,7 @@ - + @@ -373,7 +373,7 @@ - + @@ -429,4 +429,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents index 16676ff9957..40a72cd4896 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - - + + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -129,7 +129,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -237,24 +237,24 @@ - + - + - + - + @@ -283,7 +283,7 @@ - + @@ -373,7 +373,7 @@ - + @@ -429,4 +429,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents index 8668431f8b8..fa1cf505f9d 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -26,13 +26,13 @@ - + - + @@ -129,7 +129,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -237,24 +237,24 @@ - + - + - + - + @@ -283,7 +283,7 @@ - + @@ -373,7 +373,7 @@ - + @@ -421,7 +421,7 @@ - + @@ -440,4 +440,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents index 8577ea00a6d..e3b50e2cee6 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - - + + - + - + @@ -23,13 +23,13 @@ - + - + @@ -113,7 +113,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -180,19 +180,19 @@ - + - + - + @@ -218,7 +218,7 @@ - + @@ -280,7 +280,7 @@ - + @@ -313,29 +313,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents index b43e1a3cc33..6d71177598d 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -113,7 +113,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -180,19 +180,19 @@ - + - + - + @@ -218,7 +218,7 @@ - + @@ -280,7 +280,7 @@ - + @@ -338,4 +338,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents index 0d03d62002b..0aca35c9571 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -97,7 +97,7 @@ - + @@ -120,7 +120,7 @@ - + @@ -129,7 +129,7 @@ - + @@ -187,19 +187,19 @@ - + - + - + @@ -225,7 +225,7 @@ - + @@ -288,7 +288,7 @@ - + @@ -347,4 +347,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents index 9abd72bc827..ca1d8abaaa4 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -97,7 +97,7 @@ - + @@ -121,7 +121,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -188,19 +188,19 @@ - + - + - + @@ -226,7 +226,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -348,4 +348,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents index 19f9e41667f..07d74f0de67 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -97,7 +97,7 @@ - + @@ -121,7 +121,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -188,19 +188,19 @@ - + - + - + @@ -226,7 +226,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -348,4 +348,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents index eb6d55246c4..e9db093641b 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -98,7 +98,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -189,19 +189,19 @@ - + - + - + @@ -227,7 +227,7 @@ - + @@ -290,7 +290,7 @@ - + @@ -349,4 +349,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents index 77dc4288008..33cb66092f9 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -98,7 +98,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -189,19 +189,19 @@ - + - + - + @@ -227,7 +227,7 @@ - + @@ -291,7 +291,7 @@ - + @@ -350,4 +350,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents index e38e89d07a5..042f315edde 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -123,7 +123,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -190,19 +190,19 @@ - + - + - + @@ -228,7 +228,7 @@ - + @@ -292,7 +292,7 @@ - + @@ -351,4 +351,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents index 7e0002af938..68c7dfc9974 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -237,7 +237,7 @@ - + @@ -302,7 +302,7 @@ - + @@ -362,4 +362,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents index a9419b6d69c..eedd17af1e0 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -238,7 +238,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -364,4 +364,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents index cdcfef0b5a9..ea29c39b460 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -238,7 +238,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -365,4 +365,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents index 443f2eebabc..91e6b7cea0b 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -239,7 +239,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -366,4 +366,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents index 337b1037bcb..86eea3b478d 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -239,7 +239,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -367,4 +367,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents index 73f430c41ed..405b501f051 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -99,7 +99,7 @@ - + @@ -107,7 +107,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -140,7 +140,7 @@ - + @@ -198,19 +198,19 @@ - + - + - + @@ -238,7 +238,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -365,4 +365,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents index 36818d51457..7f201f511dd 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -100,7 +100,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -199,19 +199,19 @@ - + - + - + @@ -239,7 +239,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -366,4 +366,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents index 896647fa0f4..dc21f80e77a 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -100,7 +100,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -200,19 +200,19 @@ - + - + - + @@ -240,7 +240,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -367,4 +367,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents index bb1ebf98966..0eceea3aacf 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -100,7 +100,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -200,19 +200,19 @@ - + - + - + @@ -240,7 +240,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -368,4 +368,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents index 3c86d991e6c..1d0f5bed11d 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -100,7 +100,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -200,19 +200,19 @@ - + - + - + @@ -240,7 +240,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -368,4 +368,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents index 7463d5f2c5c..1471c5661c2 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -134,7 +134,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -201,19 +201,19 @@ - + - + - + @@ -241,7 +241,7 @@ - + @@ -306,7 +306,7 @@ - + @@ -369,4 +369,4 @@ - \ No newline at end of file + diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents index 6e6e9c82544..750d4d4e688 100644 --- a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents +++ b/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents @@ -1,15 +1,15 @@ - + - + - + @@ -23,13 +23,13 @@ - + - + @@ -101,7 +101,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -134,7 +134,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -201,19 +201,19 @@ - + - + - + @@ -241,7 +241,7 @@ - + @@ -306,7 +306,7 @@ - + @@ -370,4 +370,4 @@ - \ No newline at end of file + From 342dad9e6bb21e09e4694d54806c051f05163a46 Mon Sep 17 00:00:00 2001 From: Sam Wyndham Date: Mon, 1 Sep 2025 17:18:16 +0200 Subject: [PATCH 15/22] Add SchemaTests --- .../Tests/SchemaTests/SchemaTests.swift | 51 +++++++++++++++++++ .../WireDataModel.xcodeproj/project.pbxproj | 3 ++ 2 files changed, 54 insertions(+) create mode 100644 wire-ios-data-model/Tests/SchemaTests/SchemaTests.swift diff --git a/wire-ios-data-model/Tests/SchemaTests/SchemaTests.swift b/wire-ios-data-model/Tests/SchemaTests/SchemaTests.swift new file mode 100644 index 00000000000..f4db8b98f55 --- /dev/null +++ b/wire-ios-data-model/Tests/SchemaTests/SchemaTests.swift @@ -0,0 +1,51 @@ +// +// Wire +// Copyright (C) 2025 Wire Swiss GmbH +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see http://www.gnu.org/licenses/. +// + +import Testing + +@testable import WireDataModel + +struct SchemaTests { + + let stack = CoreDataStack( + account: Account(userName: "", userIdentifier: UUID()), + applicationContainer: .temporaryDirectory, + inMemoryStore: true + ) + + init() async throws { + try await stack.load() + } + + @Test + func everyManagedObjectSubclassesCanBeInitiated() async throws { + let entities = stack.messagesContainer.managedObjectModel.entities + let context = stack.viewContext + + try await context.perform { + for entity in entities { + let cls = try #require( + NSClassFromString(entity.managedObjectClassName) as? NSManagedObject.Type, + "Could not find class for entity \(entity.managedObjectClassName!)" + ) + _ = cls.init(context: stack.viewContext) + } + } + } + +} diff --git a/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj b/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj index 77c22a27783..3bef66bbd6b 100644 --- a/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj +++ b/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj @@ -1782,6 +1782,7 @@ 594C4E382CCAAB9B00F13D03 /* AccountImageSource */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = AccountImageSource; sourceTree = ""; }; 5991D76C2DAD037F00EF63C7 /* Support */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (5991D77C2DAD038000EF63C7 /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = Support; sourceTree = ""; }; 59D2642C2CF7249D0005317F /* TestPlans */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = TestPlans; sourceTree = ""; }; + CB202D4D2E65E99100852362 /* SchemaTests */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = SchemaTests; sourceTree = ""; }; CB5273202D9C0FA000CF8099 /* Channels */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = Channels; sourceTree = ""; }; CB9615DC2D47B0E10016389E /* EntityValidation */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = EntityValidation; sourceTree = ""; }; CBAE486D2DC5140300C62C4E /* WireCellsMessageAttachmentDraftEntity */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = WireCellsMessageAttachmentDraftEntity; sourceTree = ""; }; @@ -3547,6 +3548,7 @@ F9C9A79A1CAEA8FC0039E10C /* Source */ = { isa = PBXGroup; children = ( + CB202D4D2E65E99100852362 /* SchemaTests */, E6E504442BC56DF1004948E7 /* Authentication */, 59BAE10E2C3429DA00F8EEDC /* ConversationSearch */, 069BCC632B3098F500DF4EC2 /* E2EIdentity */, @@ -3771,6 +3773,7 @@ ); fileSystemSynchronizedGroups = ( 594C4E382CCAAB9B00F13D03 /* AccountImageSource */, + CB202D4D2E65E99100852362 /* SchemaTests */, CB5273202D9C0FA000CF8099 /* Channels */, CB9615DC2D47B0E10016389E /* EntityValidation */, CBAE486D2DC5140300C62C4E /* WireCellsMessageAttachmentDraftEntity */, From b0495354800aa71af7578c89cc6e59aeed585a28 Mon Sep 17 00:00:00 2001 From: Sam Wyndham Date: Mon, 1 Sep 2025 17:46:49 +0200 Subject: [PATCH 16/22] Move WireCellsLocalAssetTests to WireData --- .../Models}/WireCellsLocalAssetTests.swift | 37 +++++++++++++++---- .../WireDataModel.xcodeproj/project.pbxproj | 3 -- 2 files changed, 30 insertions(+), 10 deletions(-) rename {wire-ios-data-model/Tests/Source/Model/WireCellsLocalAsset => WireData/Tests/WireDataTests/Models}/WireCellsLocalAssetTests.swift (64%) diff --git a/wire-ios-data-model/Tests/Source/Model/WireCellsLocalAsset/WireCellsLocalAssetTests.swift b/WireData/Tests/WireDataTests/Models/WireCellsLocalAssetTests.swift similarity index 64% rename from wire-ios-data-model/Tests/Source/Model/WireCellsLocalAsset/WireCellsLocalAssetTests.swift rename to WireData/Tests/WireDataTests/Models/WireCellsLocalAssetTests.swift index 4e3b35e673f..3b8cb1120c5 100644 --- a/wire-ios-data-model/Tests/Source/Model/WireCellsLocalAsset/WireCellsLocalAssetTests.swift +++ b/WireData/Tests/WireDataTests/Models/WireCellsLocalAssetTests.swift @@ -16,25 +16,24 @@ // along with this program. If not, see http://www.gnu.org/licenses/. // +import CoreData import Testing -import WireData -import WireDataModelSupport -@testable import WireDataModel +@testable import WireData @MainActor struct WireCellsLocalAssetTests { - private let coreDataStack: CoreDataStack + private let container: NSPersistentContainer - init() async throws { - self.coreDataStack = try await CoreDataStackHelper().createStack() + init() throws { + container = try NSPersistentContainer.inMemoryContainer() } @Test func initialization() async throws { // given - let context = coreDataStack.viewContext + let context = container.viewContext let nodeID = UUID() let asset = WireCellsLocalAsset(context: context) @@ -61,3 +60,27 @@ struct WireCellsLocalAssetTests { } } + +// MARK: - Helpers + +private extension NSPersistentContainer { + + static func inMemoryContainer() throws -> NSPersistentContainer { + let model = NSManagedObjectModel.mergedModel(from: [WireDataBundle.bundle]) + + let description = NSPersistentStoreDescription() + description.type = NSInMemoryStoreType + let container = NSPersistentContainer(name: "zmessaging", managedObjectModel: model!) + container.persistentStoreDescriptions = [description] + var loadError: Error? + container.loadPersistentStores { _, error in + loadError = error + } + if let loadError { + throw loadError + } + return container + } + +} + diff --git a/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj b/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj index 3bef66bbd6b..568c7f70913 100644 --- a/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj +++ b/wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj @@ -1786,7 +1786,6 @@ CB5273202D9C0FA000CF8099 /* Channels */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = Channels; sourceTree = ""; }; CB9615DC2D47B0E10016389E /* EntityValidation */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = EntityValidation; sourceTree = ""; }; CBAE486D2DC5140300C62C4E /* WireCellsMessageAttachmentDraftEntity */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = WireCellsMessageAttachmentDraftEntity; sourceTree = ""; }; - CBBCDA452E33CD80002E1B17 /* WireCellsLocalAsset */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = WireCellsLocalAsset; sourceTree = ""; }; /* End PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFrameworksBuildPhase section */ @@ -3125,7 +3124,6 @@ F9A7080A1CAEEB7400C2F5FE /* Model */ = { isa = PBXGroup; children = ( - CBBCDA452E33CD80002E1B17 /* WireCellsLocalAsset */, CBAE486D2DC5140300C62C4E /* WireCellsMessageAttachmentDraftEntity */, 069D07B6256266F000DBA592 /* FeatureConfiguration */, 06F98D61243B2446007E914A /* DigitalSignature */, @@ -3777,7 +3775,6 @@ CB5273202D9C0FA000CF8099 /* Channels */, CB9615DC2D47B0E10016389E /* EntityValidation */, CBAE486D2DC5140300C62C4E /* WireCellsMessageAttachmentDraftEntity */, - CBBCDA452E33CD80002E1B17 /* WireCellsLocalAsset */, ); name = WireDataModelTests; productName = WireDataModelTests; From c26a0e4789e1b67076a9ebe06f4bdbd7e1c4117e Mon Sep 17 00:00:00 2001 From: Sam Wyndham Date: Mon, 1 Sep 2025 17:55:28 +0200 Subject: [PATCH 17/22] Move xcdatamodels to schema folder --- WireData/Sources/WireData/{ => Schema}/Databases Changelog.md | 0 .../{ => Schema}/ZMEventModel.xcdatamodeld/.xccurrentversion | 0 .../ZMEventModel.xcdatamodeld/ZMEventModel.xcdatamodel/contents | 0 .../ZMEventModel2.0.xcdatamodel/contents | 0 .../ZMEventModel3.0.xcdatamodel/contents | 0 .../ZMEventModel4.0.xcdatamodel/contents | 0 .../ZMEventModel5.0.xcdatamodel/contents | 0 .../ZMEventModel6.0.xcdatamodel/contents | 0 .../{ => Schema}/zmessaging.xcdatamodeld/.xccurrentversion | 0 .../zmessaging2.100.0.xcdatamodel/contents | 0 .../zmessaging2.101.0.xcdatamodel/contents | 0 .../zmessaging2.102.0.xcdatamodel/contents | 0 .../zmessaging2.103.0.xcdatamodel/contents | 0 .../zmessaging2.104.0.xcdatamodel/contents | 0 .../zmessaging2.105.0.xcdatamodel/contents | 0 .../zmessaging2.106.0.xcdatamodel/contents | 0 .../zmessaging2.107.0.xcdatamodel/contents | 0 .../zmessaging2.108.0.xcdatamodel/contents | 0 .../zmessaging2.109.0.xcdatamodel/contents | 0 .../zmessaging2.110.0.xcdatamodel/contents | 0 .../zmessaging2.111.0.xcdatamodel/contents | 0 .../zmessaging2.112.0.xcdatamodel/contents | 0 .../zmessaging2.113.0.xcdatamodel/contents | 0 .../zmessaging2.114.0.xcdatamodel/contents | 0 .../zmessaging2.115.0.xcdatamodel/contents | 0 .../zmessaging2.116.0.xcdatamodel/contents | 0 .../zmessaging2.117.0.xcdatamodel/contents | 0 .../zmessaging2.118.0.xcdatamodel/contents | 0 .../zmessaging2.119.0.xcdatamodel/contents | 0 .../zmessaging2.120.0.xcdatamodel/contents | 0 .../zmessaging2.121.0.xcdatamodel/contents | 0 .../zmessaging2.122.0.xcdatamodel/contents | 0 .../zmessaging2.123.0.xcdatamodel/contents | 0 .../zmessaging2.124.0.xcdatamodel/contents | 0 .../zmessaging2.125.0.xcdatamodel/contents | 0 .../zmessaging2.126.0.xcdatamodel/contents | 0 .../zmessaging2.127.0.xcdatamodel/contents | 0 .../zmessaging2.128.0.xcdatamodel/contents | 0 .../zmessaging2.129.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents | 0 .../zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents | 0 59 files changed, 0 insertions(+), 0 deletions(-) rename WireData/Sources/WireData/{ => Schema}/Databases Changelog.md (100%) rename WireData/Sources/WireData/{ => Schema}/ZMEventModel.xcdatamodeld/.xccurrentversion (100%) rename WireData/Sources/WireData/{ => Schema}/ZMEventModel.xcdatamodeld/ZMEventModel.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/ZMEventModel.xcdatamodeld/ZMEventModel2.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/ZMEventModel.xcdatamodeld/ZMEventModel3.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/ZMEventModel.xcdatamodeld/ZMEventModel4.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/ZMEventModel.xcdatamodeld/ZMEventModel5.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/ZMEventModel.xcdatamodeld/ZMEventModel6.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/.xccurrentversion (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents (100%) rename WireData/Sources/WireData/{ => Schema}/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents (100%) diff --git a/WireData/Sources/WireData/Databases Changelog.md b/WireData/Sources/WireData/Schema/Databases Changelog.md similarity index 100% rename from WireData/Sources/WireData/Databases Changelog.md rename to WireData/Sources/WireData/Schema/Databases Changelog.md diff --git a/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/.xccurrentversion b/WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/.xccurrentversion similarity index 100% rename from WireData/Sources/WireData/ZMEventModel.xcdatamodeld/.xccurrentversion rename to WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/.xccurrentversion diff --git a/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel.xcdatamodel/contents b/WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/ZMEventModel.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/ZMEventModel.xcdatamodel/contents diff --git a/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel2.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/ZMEventModel2.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel2.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/ZMEventModel2.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel3.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/ZMEventModel3.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel3.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/ZMEventModel3.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel4.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/ZMEventModel4.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel4.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/ZMEventModel4.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel5.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/ZMEventModel5.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel5.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/ZMEventModel5.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel6.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/ZMEventModel6.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/ZMEventModel.xcdatamodeld/ZMEventModel6.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/ZMEventModel.xcdatamodeld/ZMEventModel6.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/.xccurrentversion b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/.xccurrentversion similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/.xccurrentversion rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/.xccurrentversion diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.100.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.101.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.102.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.103.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.104.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.105.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.106.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.107.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.108.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.109.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.110.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.111.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.112.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.113.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.114.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.115.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.116.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.117.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.118.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.119.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.120.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.121.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.122.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.123.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.124.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.125.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.126.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.127.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.128.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.129.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.80.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.81.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.82.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.83.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.84.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.85.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.86.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.87.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.88.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.89.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.90.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.91.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.92.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.93.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.94.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.95.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.96.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.97.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.98.0.xcdatamodel/contents diff --git a/WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents b/WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents similarity index 100% rename from WireData/Sources/WireData/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents rename to WireData/Sources/WireData/Schema/zmessaging.xcdatamodeld/zmessaging2.99.0.xcdatamodel/contents From 89bde92da700dff82eb18e3e2bc032157ccef8b8 Mon Sep 17 00:00:00 2001 From: Sam Wyndham Date: Mon, 1 Sep 2025 17:57:17 +0200 Subject: [PATCH 18/22] Lint & format --- .../Tests/WireDataTests/Models/WireCellsLocalAssetTests.swift | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/WireData/Tests/WireDataTests/Models/WireCellsLocalAssetTests.swift b/WireData/Tests/WireDataTests/Models/WireCellsLocalAssetTests.swift index 3b8cb1120c5..6bf1610cc4a 100644 --- a/WireData/Tests/WireDataTests/Models/WireCellsLocalAssetTests.swift +++ b/WireData/Tests/WireDataTests/Models/WireCellsLocalAssetTests.swift @@ -27,7 +27,7 @@ struct WireCellsLocalAssetTests { private let container: NSPersistentContainer init() throws { - container = try NSPersistentContainer.inMemoryContainer() + self.container = try NSPersistentContainer.inMemoryContainer() } @Test @@ -83,4 +83,3 @@ private extension NSPersistentContainer { } } - From 15fb486981b00f26cfed37fb3107cd801b8ee04d Mon Sep 17 00:00:00 2001 From: Sam Wyndham Date: Wed, 3 Sep 2025 16:58:13 +0200 Subject: [PATCH 19/22] Add details of changes to changelog --- WireData/Sources/WireData/Schema/Databases Changelog.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/WireData/Sources/WireData/Schema/Databases Changelog.md b/WireData/Sources/WireData/Schema/Databases Changelog.md index 1618f98d4fc..7d1715ac3e7 100644 --- a/WireData/Sources/WireData/Schema/Databases Changelog.md +++ b/WireData/Sources/WireData/Schema/Databases Changelog.md @@ -2,6 +2,12 @@ As it is hard to spot changes from version to version of database models (.xcdatamodeld), here's a changelog highlighting changes per version. +## Special changes + +### Moving of `zmessaging` & `ZMEventModel` to `WireData` SPM target + +* Move `zmessaging` & `ZMEventModel` to `WireData` SPM target while keeping managed object subclasses in `WireDataModel` project target. This is an intermediary state. Eventually all managed object subclasses should be moved to `WireData` target. To achieve this, in **ALL VERSIONS** of `zmessaging` the _Module_ field in the Data Model Inspector was set to `WireDataModel` for non obj-c based entities. The same changes were applied to `ZMEventModel` in version `6.0`. These changes did not require a migration. See [PR](https://github.com/wireapp/wire-ios/pull/3521) for more information. + ## zmessaging ### 2.129.0 From 87ec5919e6a3ef5cc123001f58abd1ab793c7a75 Mon Sep 17 00:00:00 2001 From: Sam Wyndham Date: Thu, 4 Sep 2025 17:28:10 +0200 Subject: [PATCH 20/22] Fix bundle not loading in tests --- WireDomain/WireDomain Project.xcodeproj/project.pbxproj | 7 +++++++ .../WireRequestStrategy.xcodeproj/project.pbxproj | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/WireDomain/WireDomain Project.xcodeproj/project.pbxproj b/WireDomain/WireDomain Project.xcodeproj/project.pbxproj index c341a00794f..c0b2e30570e 100644 --- a/WireDomain/WireDomain Project.xcodeproj/project.pbxproj +++ b/WireDomain/WireDomain Project.xcodeproj/project.pbxproj @@ -26,6 +26,7 @@ C9E0C9BB2C91B76F00CE6607 /* WireTestingPackage in Frameworks */ = {isa = PBXBuildFile; productRef = C9E0C9BA2C91B76F00CE6607 /* WireTestingPackage */; }; CB6343F02DB7EF3D00A1C892 /* WireUpdateEventCoding in Frameworks */ = {isa = PBXBuildFile; productRef = CB6343EF2DB7EF3D00A1C892 /* WireUpdateEventCoding */; }; CB7979132C738508006FBA58 /* WireTransportSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB7979122C738508006FBA58 /* WireTransportSupport.framework */; }; + CBBCB3872E69E5CF00D79B11 /* WireData in Frameworks */ = {isa = PBXBuildFile; productRef = CBBCB3862E69E5CF00D79B11 /* WireData */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -97,6 +98,7 @@ buildActionMask = 2147483647; files = ( 598D042D2C89C63100B64D71 /* WireFoundation in Frameworks */, + CBBCB3872E69E5CF00D79B11 /* WireData in Frameworks */, 34DC44B32E01C206004D5DD5 /* WireNetwork in Frameworks */, CB6343F02DB7EF3D00A1C892 /* WireUpdateEventCoding in Frameworks */, C91D188E2D7212FC00B63B66 /* NeedleFoundation in Frameworks */, @@ -227,6 +229,7 @@ C91D188D2D7212FC00B63B66 /* NeedleFoundation */, CB6343EF2DB7EF3D00A1C892 /* WireUpdateEventCoding */, 34DC44B22E01C206004D5DD5 /* WireNetwork */, + CBBCB3862E69E5CF00D79B11 /* WireData */, ); productName = WireDomain; productReference = 01D0DCA62C1C8C870076CB1C /* WireDomain.framework */; @@ -830,6 +833,10 @@ isa = XCSwiftPackageProductDependency; productName = WireUpdateEventCoding; }; + CBBCB3862E69E5CF00D79B11 /* WireData */ = { + isa = XCSwiftPackageProductDependency; + productName = WireData; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 01D0DC9D2C1C8C870076CB1C /* Project object */; diff --git a/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj b/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj index fabffaa524e..972deff3722 100644 --- a/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj +++ b/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj @@ -255,6 +255,7 @@ CB5120532C6FD69F000C8FEC /* WireTransportSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB5120522C6FD69F000C8FEC /* WireTransportSupport.framework */; }; CB5A461D2D940BB700D469F1 /* Payload+ConversationGroupType.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB5A461C2D940BA600D469F1 /* Payload+ConversationGroupType.swift */; }; CB7979052C73663B006FBA58 /* WireRequestStrategySupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EEA58F192B71179D006DEE32 /* WireRequestStrategySupport.framework */; }; + CBBCB3852E69E19300D79B11 /* WireData in Frameworks */ = {isa = PBXBuildFile; productRef = CBBCB3842E69E19300D79B11 /* WireData */; }; CBF2BD5F2C5BD468002BCBDD /* TestSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBF2BD5E2C5BD468002BCBDD /* TestSetup.swift */; }; D33B57B12A56BDCA0078A4F9 /* FederationTerminationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D33B57B02A56BDCA0078A4F9 /* FederationTerminationManager.swift */; }; D3DA067C2A5D9EF700BA9CEB /* FederationTerminationManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3DA067B2A5D9EF700BA9CEB /* FederationTerminationManagerTest.swift */; }; @@ -972,6 +973,7 @@ buildActionMask = 2147483647; files = ( 598D04332C89C6CF00B64D71 /* WireFoundation in Frameworks */, + CBBCB3852E69E19300D79B11 /* WireData in Frameworks */, 59537D852CFF9D1600920B59 /* WireLogging in Frameworks */, 591B6E3B2C8B09AA009F8A7B /* WireDataModel.framework in Frameworks */, ); @@ -2197,6 +2199,7 @@ packageProductDependencies = ( 598D04322C89C6CF00B64D71 /* WireFoundation */, 59537D842CFF9D1600920B59 /* WireLogging */, + CBBCB3842E69E19300D79B11 /* WireData */, ); productName = WireRequestStrategy; productReference = 1669016A1D707509000FE4AF /* WireRequestStrategy.framework */; @@ -3219,6 +3222,10 @@ isa = XCSwiftPackageProductDependency; productName = WireTestingPackage; }; + CBBCB3842E69E19300D79B11 /* WireData */ = { + isa = XCSwiftPackageProductDependency; + productName = WireData; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 166901611D707509000FE4AF /* Project object */; From 2d4e5b5031ac9c0ce3a09c1dbb582261d852d2ca Mon Sep 17 00:00:00 2001 From: Sam Wyndham Date: Tue, 9 Sep 2025 22:42:48 +0200 Subject: [PATCH 21/22] Revert "Fix bundle not loading in tests" This reverts commit 87ec5919e6a3ef5cc123001f58abd1ab793c7a75. --- WireDomain/WireDomain Project.xcodeproj/project.pbxproj | 7 ------- .../WireRequestStrategy.xcodeproj/project.pbxproj | 7 ------- 2 files changed, 14 deletions(-) diff --git a/WireDomain/WireDomain Project.xcodeproj/project.pbxproj b/WireDomain/WireDomain Project.xcodeproj/project.pbxproj index c0b2e30570e..c341a00794f 100644 --- a/WireDomain/WireDomain Project.xcodeproj/project.pbxproj +++ b/WireDomain/WireDomain Project.xcodeproj/project.pbxproj @@ -26,7 +26,6 @@ C9E0C9BB2C91B76F00CE6607 /* WireTestingPackage in Frameworks */ = {isa = PBXBuildFile; productRef = C9E0C9BA2C91B76F00CE6607 /* WireTestingPackage */; }; CB6343F02DB7EF3D00A1C892 /* WireUpdateEventCoding in Frameworks */ = {isa = PBXBuildFile; productRef = CB6343EF2DB7EF3D00A1C892 /* WireUpdateEventCoding */; }; CB7979132C738508006FBA58 /* WireTransportSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB7979122C738508006FBA58 /* WireTransportSupport.framework */; }; - CBBCB3872E69E5CF00D79B11 /* WireData in Frameworks */ = {isa = PBXBuildFile; productRef = CBBCB3862E69E5CF00D79B11 /* WireData */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -98,7 +97,6 @@ buildActionMask = 2147483647; files = ( 598D042D2C89C63100B64D71 /* WireFoundation in Frameworks */, - CBBCB3872E69E5CF00D79B11 /* WireData in Frameworks */, 34DC44B32E01C206004D5DD5 /* WireNetwork in Frameworks */, CB6343F02DB7EF3D00A1C892 /* WireUpdateEventCoding in Frameworks */, C91D188E2D7212FC00B63B66 /* NeedleFoundation in Frameworks */, @@ -229,7 +227,6 @@ C91D188D2D7212FC00B63B66 /* NeedleFoundation */, CB6343EF2DB7EF3D00A1C892 /* WireUpdateEventCoding */, 34DC44B22E01C206004D5DD5 /* WireNetwork */, - CBBCB3862E69E5CF00D79B11 /* WireData */, ); productName = WireDomain; productReference = 01D0DCA62C1C8C870076CB1C /* WireDomain.framework */; @@ -833,10 +830,6 @@ isa = XCSwiftPackageProductDependency; productName = WireUpdateEventCoding; }; - CBBCB3862E69E5CF00D79B11 /* WireData */ = { - isa = XCSwiftPackageProductDependency; - productName = WireData; - }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 01D0DC9D2C1C8C870076CB1C /* Project object */; diff --git a/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj b/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj index 972deff3722..fabffaa524e 100644 --- a/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj +++ b/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj @@ -255,7 +255,6 @@ CB5120532C6FD69F000C8FEC /* WireTransportSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB5120522C6FD69F000C8FEC /* WireTransportSupport.framework */; }; CB5A461D2D940BB700D469F1 /* Payload+ConversationGroupType.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB5A461C2D940BA600D469F1 /* Payload+ConversationGroupType.swift */; }; CB7979052C73663B006FBA58 /* WireRequestStrategySupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EEA58F192B71179D006DEE32 /* WireRequestStrategySupport.framework */; }; - CBBCB3852E69E19300D79B11 /* WireData in Frameworks */ = {isa = PBXBuildFile; productRef = CBBCB3842E69E19300D79B11 /* WireData */; }; CBF2BD5F2C5BD468002BCBDD /* TestSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBF2BD5E2C5BD468002BCBDD /* TestSetup.swift */; }; D33B57B12A56BDCA0078A4F9 /* FederationTerminationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D33B57B02A56BDCA0078A4F9 /* FederationTerminationManager.swift */; }; D3DA067C2A5D9EF700BA9CEB /* FederationTerminationManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3DA067B2A5D9EF700BA9CEB /* FederationTerminationManagerTest.swift */; }; @@ -973,7 +972,6 @@ buildActionMask = 2147483647; files = ( 598D04332C89C6CF00B64D71 /* WireFoundation in Frameworks */, - CBBCB3852E69E19300D79B11 /* WireData in Frameworks */, 59537D852CFF9D1600920B59 /* WireLogging in Frameworks */, 591B6E3B2C8B09AA009F8A7B /* WireDataModel.framework in Frameworks */, ); @@ -2199,7 +2197,6 @@ packageProductDependencies = ( 598D04322C89C6CF00B64D71 /* WireFoundation */, 59537D842CFF9D1600920B59 /* WireLogging */, - CBBCB3842E69E19300D79B11 /* WireData */, ); productName = WireRequestStrategy; productReference = 1669016A1D707509000FE4AF /* WireRequestStrategy.framework */; @@ -3222,10 +3219,6 @@ isa = XCSwiftPackageProductDependency; productName = WireTestingPackage; }; - CBBCB3842E69E19300D79B11 /* WireData */ = { - isa = XCSwiftPackageProductDependency; - productName = WireData; - }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 166901611D707509000FE4AF /* Project object */; From 77fac826ab11ca204406cdda8fa1fc3d85c15475 Mon Sep 17 00:00:00 2001 From: Sam Wyndham Date: Wed, 10 Sep 2025 09:01:15 +0200 Subject: [PATCH 22/22] Fix unable to find module in WireRequestStrategy tests --- WireData/Package.swift | 1 + .../WireRequestStrategy.xcodeproj/project.pbxproj | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/WireData/Package.swift b/WireData/Package.swift index e1a36946eec..f9c98239ff2 100644 --- a/WireData/Package.swift +++ b/WireData/Package.swift @@ -8,6 +8,7 @@ let package = Package( products: [ .library( name: "WireData", + type: .dynamic, targets: ["WireData"] ), ], diff --git a/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj b/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj index fabffaa524e..4f85facc51c 100644 --- a/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj +++ b/wire-ios-request-strategy/WireRequestStrategy.xcodeproj/project.pbxproj @@ -255,6 +255,7 @@ CB5120532C6FD69F000C8FEC /* WireTransportSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB5120522C6FD69F000C8FEC /* WireTransportSupport.framework */; }; CB5A461D2D940BB700D469F1 /* Payload+ConversationGroupType.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB5A461C2D940BA600D469F1 /* Payload+ConversationGroupType.swift */; }; CB7979052C73663B006FBA58 /* WireRequestStrategySupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EEA58F192B71179D006DEE32 /* WireRequestStrategySupport.framework */; }; + CBCCE0E82E71516C008B491D /* WireRequestStrategy.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1669016A1D707509000FE4AF /* WireRequestStrategy.framework */; }; CBF2BD5F2C5BD468002BCBDD /* TestSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBF2BD5E2C5BD468002BCBDD /* TestSetup.swift */; }; D33B57B12A56BDCA0078A4F9 /* FederationTerminationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D33B57B02A56BDCA0078A4F9 /* FederationTerminationManager.swift */; }; D3DA067C2A5D9EF700BA9CEB /* FederationTerminationManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3DA067B2A5D9EF700BA9CEB /* FederationTerminationManagerTest.swift */; }; @@ -452,6 +453,13 @@ remoteGlobalIDString = EEA58F182B71179D006DEE32; remoteInfo = WireRequestStrategySupport; }; + CBCCE0EA2E71516C008B491D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 166901611D707509000FE4AF /* Project object */; + proxyType = 1; + remoteGlobalIDString = 166901691D707509000FE4AF; + remoteInfo = WireRequestStrategy; + }; F154EDD61F447BB600CB8184 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 166901611D707509000FE4AF /* Project object */; @@ -1004,6 +1012,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + CBCCE0E82E71516C008B491D /* WireRequestStrategy.framework in Frameworks */, 591B6E3F2C8B09B3009F8A7B /* WireTesting.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -2265,6 +2274,7 @@ buildRules = ( ); dependencies = ( + CBCCE0EB2E71516C008B491D /* PBXTargetDependency */, ); name = WireRequestStrategyTestHost; productName = WireRequestStrategyTestHost; @@ -2821,6 +2831,11 @@ target = EEA58F182B71179D006DEE32 /* WireRequestStrategySupport */; targetProxy = CB7979072C73663B006FBA58 /* PBXContainerItemProxy */; }; + CBCCE0EB2E71516C008B491D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 166901691D707509000FE4AF /* WireRequestStrategy */; + targetProxy = CBCCE0EA2E71516C008B491D /* PBXContainerItemProxy */; + }; F154EDD71F447BB600CB8184 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = F154EDC31F447B6C00CB8184 /* WireRequestStrategyTestHost */;