diff --git a/tests/Test-13.0.0.photoslibrary/database/DataModelVersion.plist b/tests/Test-13.0.0.photoslibrary/database/DataModelVersion.plist
new file mode 100644
index 00000000..be9740fe
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/database/DataModelVersion.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ LibrarySchemaVersion
+ 5001
+ MetaSchemaVersion
+ 3
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/database/Photos.sqlite b/tests/Test-13.0.0.photoslibrary/database/Photos.sqlite
new file mode 100644
index 00000000..d4785d20
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/database/Photos.sqlite differ
diff --git a/tests/Test-13.0.0.photoslibrary/database/Photos.sqlite-shm b/tests/Test-13.0.0.photoslibrary/database/Photos.sqlite-shm
new file mode 100644
index 00000000..78aff461
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/database/Photos.sqlite-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/database/Photos.sqlite-wal b/tests/Test-13.0.0.photoslibrary/database/Photos.sqlite-wal
new file mode 100644
index 00000000..1ebe4ce9
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/database/Photos.sqlite-wal differ
diff --git a/tests/Test-13.0.0.photoslibrary/database/Photos.sqlite.lock b/tests/Test-13.0.0.photoslibrary/database/Photos.sqlite.lock
new file mode 100644
index 00000000..625f0f37
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/database/Photos.sqlite.lock
@@ -0,0 +1,16 @@
+
+
+
+
+ hostname
+ ddrucker-mba.local
+ hostuuid
+ 3C58BD83-C174-52E3-B12D-D7EBDED55622
+ pid
+ 940
+ processname
+ photolibraryd
+ uid
+ 502
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/database/metaSchema.db b/tests/Test-13.0.0.photoslibrary/database/metaSchema.db
new file mode 100644
index 00000000..2d75bd40
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/database/metaSchema.db differ
diff --git a/tests/Test-13.0.0.photoslibrary/database/photos.db b/tests/Test-13.0.0.photoslibrary/database/photos.db
new file mode 100644
index 00000000..2d75bd40
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/database/photos.db differ
diff --git a/tests/Test-13.0.0.photoslibrary/database/protection b/tests/Test-13.0.0.photoslibrary/database/protection
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/database/search/graphDataProgress.plist b/tests/Test-13.0.0.photoslibrary/database/search/graphDataProgress.plist
new file mode 100644
index 00000000..c4e5e427
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/database/search/graphDataProgress.plist differ
diff --git a/tests/Test-13.0.0.photoslibrary/database/search/psi.sqlite b/tests/Test-13.0.0.photoslibrary/database/search/psi.sqlite
new file mode 100644
index 00000000..3e13f523
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/database/search/psi.sqlite differ
diff --git a/tests/Test-13.0.0.photoslibrary/database/search/psi.sqlite-shm b/tests/Test-13.0.0.photoslibrary/database/search/psi.sqlite-shm
new file mode 100644
index 00000000..f637d347
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/database/search/psi.sqlite-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/database/search/psi.sqlite-wal b/tests/Test-13.0.0.photoslibrary/database/search/psi.sqlite-wal
new file mode 100644
index 00000000..4b69d4b1
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/database/search/psi.sqlite-wal differ
diff --git a/tests/Test-13.0.0.photoslibrary/database/search/searchMetadata.plist b/tests/Test-13.0.0.photoslibrary/database/search/searchMetadata.plist
new file mode 100644
index 00000000..5f9011c0
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/database/search/searchMetadata.plist
@@ -0,0 +1,19 @@
+
+
+
+
+ BlacklistedMeaningsByMeaning
+
+ SceneWhitelist
+
+ Art
+ Flower
+ Food
+ Jewelry
+ Lake
+ Shore
+ Sport
+ Vehicle
+
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/database/search/searchProgress.plist b/tests/Test-13.0.0.photoslibrary/database/search/searchProgress.plist
new file mode 100644
index 00000000..d243cc99
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/database/search/searchProgress.plist
@@ -0,0 +1,28 @@
+
+
+
+
+ insertAlbum
+
+ insertAsset
+
+ insertHighlight
+
+ insertMemory
+
+ insertMoment
+
+ removeAlbum
+
+ removeAsset
+
+ removeHighlight
+
+ removeMemory
+
+ removeMoment
+
+ renamePerson
+
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/database/search/searchSystemInfo.plist b/tests/Test-13.0.0.photoslibrary/database/search/searchSystemInfo.plist
new file mode 100644
index 00000000..1f72c67e
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/database/search/searchSystemInfo.plist
@@ -0,0 +1,18 @@
+
+
+
+
+ embeddingVersion
+ 1
+ featureFlags
+ 319
+ featuredContentAllowed
+ 1
+ localeIdentifier
+ en_US
+ sceneTaxonomySHA
+ 64d078bafc0035e1ec26dfa565c2ac0479fcbab329fda1c16cd17e0fdbf2f4c0,4afa5d3c45c08a664cf73cff957aaeeae3a325d2970aada51268407b9ad0f03e
+ searchIndexVersion
+ 16025
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/database/search/synonymsProcess.plist b/tests/Test-13.0.0.photoslibrary/database/search/synonymsProcess.plist
new file mode 100644
index 00000000..f660dee3
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/database/search/synonymsProcess.plist differ
diff --git a/tests/Test-13.0.0.photoslibrary/database/search/zeroKeywords.data b/tests/Test-13.0.0.photoslibrary/database/search/zeroKeywords.data
new file mode 100644
index 00000000..ea7c3a0c
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/database/search/zeroKeywords.data differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/1/1EB2B765-0765-43BA-A90C-0D0580E6172C.jpeg b/tests/Test-13.0.0.photoslibrary/originals/1/1EB2B765-0765-43BA-A90C-0D0580E6172C.jpeg
new file mode 100644
index 00000000..136dfe8d
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/1/1EB2B765-0765-43BA-A90C-0D0580E6172C.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/3/3DD2C897-F19E-4CA6-8C22-B027D5A71907.jpeg b/tests/Test-13.0.0.photoslibrary/originals/3/3DD2C897-F19E-4CA6-8C22-B027D5A71907.jpeg
new file mode 100644
index 00000000..ca03f665
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/3/3DD2C897-F19E-4CA6-8C22-B027D5A71907.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/4/4D521201-92AC-43E5-8F7C-59BC41C37A96.jpeg b/tests/Test-13.0.0.photoslibrary/originals/4/4D521201-92AC-43E5-8F7C-59BC41C37A96.jpeg
new file mode 100755
index 00000000..143e9532
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/4/4D521201-92AC-43E5-8F7C-59BC41C37A96.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/4/4D521201-92AC-43E5-8F7C-59BC41C37A96_4.cr2 b/tests/Test-13.0.0.photoslibrary/originals/4/4D521201-92AC-43E5-8F7C-59BC41C37A96_4.cr2
new file mode 100755
index 00000000..f2adc62f
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/4/4D521201-92AC-43E5-8F7C-59BC41C37A96_4.cr2 differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4.jpeg b/tests/Test-13.0.0.photoslibrary/originals/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4.jpeg
new file mode 100644
index 00000000..31eb2ab3
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/6/6FD38366-3BF2-407D-81FE-7153EB6125B6.jpeg b/tests/Test-13.0.0.photoslibrary/originals/6/6FD38366-3BF2-407D-81FE-7153EB6125B6.jpeg
new file mode 100644
index 00000000..88caa537
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/6/6FD38366-3BF2-407D-81FE-7153EB6125B6.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/7/71E3E212-00EB-430D-8A63-5E294B268554.jpeg b/tests/Test-13.0.0.photoslibrary/originals/7/71E3E212-00EB-430D-8A63-5E294B268554.jpeg
new file mode 100644
index 00000000..829a2345
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/7/71E3E212-00EB-430D-8A63-5E294B268554.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266.heic b/tests/Test-13.0.0.photoslibrary/originals/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266.heic
new file mode 100644
index 00000000..8f103814
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266.heic differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/8/8846E3E6-8AC8-4857-8448-E3D025784410.tiff b/tests/Test-13.0.0.photoslibrary/originals/8/8846E3E6-8AC8-4857-8448-E3D025784410.tiff
new file mode 100644
index 00000000..69654411
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/8/8846E3E6-8AC8-4857-8448-E3D025784410.tiff differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/A/A92D9C26-3A50-4197-9388-CB5F7DB9FA91.jpeg b/tests/Test-13.0.0.photoslibrary/originals/A/A92D9C26-3A50-4197-9388-CB5F7DB9FA91.jpeg
new file mode 100755
index 00000000..c1872812
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/A/A92D9C26-3A50-4197-9388-CB5F7DB9FA91.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/A/A92D9C26-3A50-4197-9388-CB5F7DB9FA91_4.cr2 b/tests/Test-13.0.0.photoslibrary/originals/A/A92D9C26-3A50-4197-9388-CB5F7DB9FA91_4.cr2
new file mode 100755
index 00000000..6cd12fb4
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/A/A92D9C26-3A50-4197-9388-CB5F7DB9FA91_4.cr2 differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/D/D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068.dng b/tests/Test-13.0.0.photoslibrary/originals/D/D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068.dng
new file mode 100755
index 00000000..1f96242c
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/D/D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068.dng differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/D/D79B8D77-BFFC-460B-9312-034F2877D35B.jpeg b/tests/Test-13.0.0.photoslibrary/originals/D/D79B8D77-BFFC-460B-9312-034F2877D35B.jpeg
new file mode 100644
index 00000000..f23a024a
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/D/D79B8D77-BFFC-460B-9312-034F2877D35B.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/D/DC99FBDD-7A52-4100-A5BB-344131646C30.jpeg b/tests/Test-13.0.0.photoslibrary/originals/D/DC99FBDD-7A52-4100-A5BB-344131646C30.jpeg
new file mode 100644
index 00000000..e5a6b0bd
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/D/DC99FBDD-7A52-4100-A5BB-344131646C30.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51.jpeg b/tests/Test-13.0.0.photoslibrary/originals/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51.jpeg
new file mode 100644
index 00000000..ad8137e3
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/originals/F/F12384F6-CD17-4151-ACBA-AE0E3688539E.jpeg b/tests/Test-13.0.0.photoslibrary/originals/F/F12384F6-CD17-4151-ACBA-AE0E3688539E.jpeg
new file mode 100644
index 00000000..b1615930
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/originals/F/F12384F6-CD17-4151-ACBA-AE0E3688539E.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/.metadata_never_index b/tests/Test-13.0.0.photoslibrary/private/.metadata_never_index
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.Photos.Migration/appPrivateData.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.Photos.Migration/appPrivateData.plist
new file mode 100644
index 00000000..651ed0ad
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.Photos.Migration/appPrivateData.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ MigrationService
+
+ State
+ 4
+
+ MigrationService.LastCompletedTask
+ 12
+ MigrationService.ValidationCounts
+
+ MigrationDetectedFaceprint
+ 6
+ MigrationManagedAsset
+ 0
+ MigrationSceneClassification
+ 44
+ MigrationUnmanagedAdjustment
+ 0
+ RDVersion.cloudLocalState.CPLIsNotPushed
+ 7
+
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.Photos/appPrivateData.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.Photos/appPrivateData.plist
new file mode 100644
index 00000000..85aa3811
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.Photos/appPrivateData.plist
@@ -0,0 +1,58 @@
+
+
+
+
+ CollapsedSidebarSectionIdentifiers
+
+ ExpandedSidebarItemIdentifiers
+
+ 92D68107-B6C7-453B-96D2-97B0F26D5B8B/L0/020
+ 88A5F8B8-5B9A-43C7-BB85-3952B81580EB/L0/020
+ 29EF7A97-7E76-4D5F-A5E0-CC0A93E8524C/L0/020
+ 2C2AF115-BD1D-4434-A747-D1C8BD8E2045/L0/020
+ CB051A4C-2CB7-4B90-B59B-08CC4D0C2823/L0/020
+
+ IPXWorkspaceControllerZoomLevelsKey
+
+ kZoomLevelIdentifierPhotosGrid
+ 1
+
+ Photos
+
+ CollapsedSidebarSectionIdentifiers
+
+ ExpandedSidebarItemIdentifiers
+
+ TopLevelAlbums
+ TopLevelSlideshows
+
+ IPXWorkspaceControllerZoomLevelsKey
+
+ kZoomLevelIdentifierAlbums
+ 7
+ kZoomLevelIdentifierVersions
+ 7
+
+ lastAddToDestination
+
+ key
+ 1
+ lastKnownDisplayName
+ September 28, 2018
+ type
+ album
+ uuid
+ DFFKmHt3Tk+AGzZLe2Xq+g
+
+ lastKnownItemCounts
+
+ other
+ 0
+ photos
+ 7
+ videos
+ 0
+
+
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/MediaAnalysis/mediaanalysis.db b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/MediaAnalysis/mediaanalysis.db
new file mode 100644
index 00000000..1261ded5
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/MediaAnalysis/mediaanalysis.db differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/MediaAnalysis/mediaanalysis.db-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/MediaAnalysis/mediaanalysis.db-shm
new file mode 100644
index 00000000..aba95f37
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/MediaAnalysis/mediaanalysis.db-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/MediaAnalysis/mediaanalysis.db-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/MediaAnalysis/mediaanalysis.db-wal
new file mode 100644
index 00000000..c8ea010e
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/MediaAnalysis/mediaanalysis.db-wal differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/7B6C018B-59FD-44F0-96B7-E3C10BAB8EC7.cmap b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/7B6C018B-59FD-44F0-96B7-E3C10BAB8EC7.cmap
new file mode 100644
index 00000000..739f0a82
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/7B6C018B-59FD-44F0-96B7-E3C10BAB8EC7.cmap differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/AlgoFaceClusterCache.data b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/AlgoFaceClusterCache.data
new file mode 100644
index 00000000..d76b9c9d
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/AlgoFaceClusterCache.data differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/CE532FCE-EFBA-4139-A85A-880B1C67ABAF.cmap b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/CE532FCE-EFBA-4139-A85A-880B1C67ABAF.cmap
new file mode 100644
index 00000000..d49c947f
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/CE532FCE-EFBA-4139-A85A-880B1C67ABAF.cmap differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/PersonPromoter b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/PersonPromoter
new file mode 100644
index 00000000..e569f1fd
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/PersonPromoter
@@ -0,0 +1,14 @@
+
+
+
+
+ NumberOfFacesProcessedOnLastRun
+ 12
+ ProcessedInQuiescentState
+
+ SuggestedMeIdentifier
+
+ Version
+ 13
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/PhotoAnalysisServicePreferences.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/PhotoAnalysisServicePreferences.plist
new file mode 100644
index 00000000..b5ef8337
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/PhotoAnalysisServicePreferences.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ FaceIDModelLastGenerationKey
+ 2022-11-12T21:51:03Z
+ PetIDModelLastGenerationKey
+ 2022-11-12T21:51:03Z
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/clustererState.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/clustererState.plist
new file mode 100644
index 00000000..f9a83697
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/clustererState.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ VCPClustererBringUpState
+ 40
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/faceWorkerState.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/faceWorkerState.plist
new file mode 100644
index 00000000..92c2f00d
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/faceWorkerState.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ PersonBuilderLastMinimumFaceGroupSizeForCreatingMergeCandidates
+ 15
+ PersonBuilderMergeCandidatesEnabled
+
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/mediaAnalysisVersionState.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/mediaAnalysisVersionState.plist
new file mode 100644
index 00000000..bccaa03d
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/mediaAnalysisVersionState.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ FaceProcessingInternalVersion
+ 11
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/vnpersonsmodel.bin b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/vnpersonsmodel.bin
new file mode 100644
index 00000000..cfe114f4
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/vnpersonsmodel.bin differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/vnpetsmodel.bin b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/vnpetsmodel.bin
new file mode 100644
index 00000000..3eb27d95
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.mediaanalysisd/caches/vision/vnpetsmodel.bin differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.AOI.sqlite b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.AOI.sqlite
new file mode 100644
index 00000000..52f449c8
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.AOI.sqlite differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.AOI.sqlite-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.AOI.sqlite-shm
new file mode 100644
index 00000000..47bf77d7
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.AOI.sqlite-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.AOI.sqlite-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.AOI.sqlite-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.Nature.sqlite b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.Nature.sqlite
new file mode 100644
index 00000000..1e3878b8
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.Nature.sqlite differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.Nature.sqlite-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.Nature.sqlite-shm
new file mode 100644
index 00000000..282e171a
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.Nature.sqlite-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.Nature.sqlite-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.Nature.sqlite-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.POI.sqlite b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.POI.sqlite
new file mode 100644
index 00000000..91a64686
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.POI.sqlite differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.POI.sqlite-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.POI.sqlite-shm
new file mode 100644
index 00000000..fa07251d
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.POI.sqlite-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.POI.sqlite-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.POI.sqlite-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.ROI.sqlite b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.ROI.sqlite
new file mode 100644
index 00000000..a804bc09
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.ROI.sqlite differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.ROI.sqlite-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.ROI.sqlite-shm
new file mode 100644
index 00000000..b0a49a7f
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.ROI.sqlite-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.ROI.sqlite-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSBusinessCategoryCache.ROI.sqlite-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSContactCache.sqlite b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSContactCache.sqlite
new file mode 100644
index 00000000..d66ed5de
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSContactCache.sqlite differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSContactCache.sqlite-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSContactCache.sqlite-shm
new file mode 100644
index 00000000..681449ef
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSContactCache.sqlite-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSContactCache.sqlite-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSContactCache.sqlite-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSLocationCache.sqlite b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSLocationCache.sqlite
new file mode 100644
index 00000000..031d074d
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSLocationCache.sqlite differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSLocationCache.sqlite-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSLocationCache.sqlite-shm
new file mode 100644
index 00000000..b2b1d9b1
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSLocationCache.sqlite-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSLocationCache.sqlite-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSLocationCache.sqlite-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSPublicEventCache.sqlite b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSPublicEventCache.sqlite
new file mode 100644
index 00000000..49248440
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSPublicEventCache.sqlite differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSPublicEventCache.sqlite-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSPublicEventCache.sqlite-shm
new file mode 100644
index 00000000..fe9ac284
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSPublicEventCache.sqlite-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSPublicEventCache.sqlite-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/CLSPublicEventCache.sqlite-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGCurationCache.sqlite.sqlite b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGCurationCache.sqlite.sqlite
new file mode 100644
index 00000000..d81b267b
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGCurationCache.sqlite.sqlite differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGCurationCache.sqlite.sqlite-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGCurationCache.sqlite.sqlite-shm
new file mode 100644
index 00000000..54b70fb6
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGCurationCache.sqlite.sqlite-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGCurationCache.sqlite.sqlite-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGCurationCache.sqlite.sqlite-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGSearchComputationCache.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGSearchComputationCache.plist
new file mode 100644
index 00000000..b5885dc4
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGSearchComputationCache.plist differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGSharingFeatureExtractorRecords.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGSharingFeatureExtractorRecords.plist
new file mode 100644
index 00000000..0de953ba
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PGSharingFeatureExtractorRecords.plist differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotoAnalysisServiceFeaturesAnalytics.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotoAnalysisServiceFeaturesAnalytics.plist
new file mode 100644
index 00000000..bb438fb2
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotoAnalysisServiceFeaturesAnalytics.plist
@@ -0,0 +1,916 @@
+
+
+
+
+ firstSeenDates
+
+ com.apple.photos.CPAnalytics.addAssetsToLibrary
+ 11/12/22
+ com.apple.photos.CPAnalytics.appleMusicPreparationFailed
+ 11/12/22
+ com.apple.photos.CPAnalytics.appleMusicPreparationSucceeded
+ 11/12/22
+ com.apple.photos.CPAnalytics.appleMusicPreparedToPlay
+ 11/12/22
+ com.apple.photos.CPAnalytics.appleMusicSongDownloaded
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetCollectionBlocked
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetCollectionDeleted
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetCollectionFavorited
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetCollectionMoviePlayed
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetCollectionUnfavorited
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetCollectionViewed
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetExportItemPreparationCompleted
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetExportPreparationCanceled
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetExportPreparationCompleted
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetExportPreparationFailed
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetFavorited
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetSharedStandardSelectionSize
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetUnfavorited
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetViewed
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetsDeleted
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetsDeletedFromTrash
+ 11/12/22
+ com.apple.photos.CPAnalytics.assetsRestored
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmAddAssetToLibrary
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmPublishFromDetailViewMenuAction
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmPublishFromForYouSendBackSuggestions
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmPublishFromForYouSuggestion
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmPublishFromMessagesSuggestion
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmPublishFromShareSheet
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmPublishFromUnknown
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmReceivedSharesOpened
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmReceivedSharesSeen
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmSentSharesOpened
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmSentSharesSeen
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmShareBackOpened
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmShareBackPresentable
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmShareBackShown
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmSuggestionComposeFlowOpened
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmSuggestionOpened
+ 11/12/22
+ com.apple.photos.CPAnalytics.cmmSuggestionSeen
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationEventFailed
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationEventOneUpSelect
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationEventSkip
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationFromAlbumSection
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationFromAlbumSelection
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationFromOneUpMergeAll
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationFromOneUpSelection
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationFromUnspecified
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationMerge1
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationMerge11+
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationMerge2
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationMerge3-5
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationMerge6-10
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationMergeAll
+ 11/12/22
+ com.apple.photos.CPAnalytics.deduplicationSkipPerceptualMerge
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterAllItemsSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterDuplicatesSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterEditedSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterFavoritedSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterHeaderSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterIncludeSharedWithYouSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterKeywordHeaderSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterKeywordManagerSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterKeywordsSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterPhotosSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterSavedItemsOnlySelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterSharedLibraryAllDisplayed
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterSharedLibraryAllSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterSharedLibraryDismissed
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterSharedLibraryMineDisplayed
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterSharedLibraryMineSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterSharedLibraryPresented
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterSharedLibrarySharedDisplayed
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterSharedLibrarySharedSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterUnsavedItemsOnlySelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.filterVideosSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.firstTimeExperienceNotReady
+ 11/12/22
+ com.apple.photos.CPAnalytics.firstTimeExperienceReady
+ 11/12/22
+ com.apple.photos.CPAnalytics.flexMusicDownloadRequiredAtPlaybackTime
+ 11/12/22
+ com.apple.photos.CPAnalytics.flexMusicSongArtworkDownloaded
+ 11/12/22
+ com.apple.photos.CPAnalytics.flexMusicSongAudioDownloaded
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouInboxItemSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouInboxItemSelectedWithTypeCMMPublishedShare
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouInboxItemSelectedWithTypeCMMReceivedShare
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouInboxItemSelectedWithTypeSharedAlbumAccept
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouInboxItemSelectedWithTypeSharedAlbumCoalescedWithComments
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouInboxItemSelectedWithTypeSharedAlbumCoalescedWithCommentsAndLikes
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouInboxItemSelectedWithTypeSharedAlbumComment
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouInboxItemSelectedWithTypeSharedAlbumDecline
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouInboxItemSelectedWithTypeSharedAlbumInvitation
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouInboxItemSelectedWithTypeSharedAlbumLike
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouInboxItemSelectedWithTypeSharedAlbumPost
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouTabOpenedFromInAppUserNavigation
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouTabOpenedFromNotification
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouTabOpenedFromOtherURL
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouTabOpenedFromStateRestoration
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouTabOpenedFromUndefined
+ 11/12/22
+ com.apple.photos.CPAnalytics.forYouTabOpenedFromWidget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeAlbumGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeAlbumListGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeCMMInviteGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeCMMSuggestionGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeCPLCMMSuggestionGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeContentSyndication
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeDebugGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeFooterGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeInboxGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeListViewGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeMemoryRowGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeNoContentGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeRecentPhotosGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeRecentSearchesGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeSearchZeroKeywordGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeSettingsAdvisory
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeSharedAlbumActivityGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeSharedAlbumGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeSharedAlbumInviteGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeSuggestedEditGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeSuggestionGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeSurveyCongratulations
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeSurveyQuestionGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetSeenWithTypeTapToRadarGadget
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetWithTypeMemoryRowGadgetSelectedAccessoryButtonWithTypeSeeAll
+ 11/12/22
+ com.apple.photos.CPAnalytics.gadgetWithTypeSharedAlbumGadgetSelectedAccessoryButtonWithTypeSeeAll
+ 11/12/22
+ com.apple.photos.CPAnalytics.infoPanelAddLocationTapped
+ 11/12/22
+ com.apple.photos.CPAnalytics.infoPanelAdjustLocationTapped
+ 11/12/22
+ com.apple.photos.CPAnalytics.infoPanelLocationTapped
+ 11/12/22
+ com.apple.photos.CPAnalytics.mapViewAdjustLocationTapped
+ 11/12/22
+ com.apple.photos.CPAnalytics.mediaViewed
+ 11/12/22
+ com.apple.photos.CPAnalytics.memoryCreatedViaAddToMemories
+ 11/12/22
+ com.apple.photos.CPAnalytics.memoryNotificationResponded
+ 11/12/22
+ com.apple.photos.CPAnalytics.memoryNotificationSeen
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigateToFailedToUploadItemsAlbumFailed
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigateToFailedToUploadItemsAlbumSucceeded
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigatedToSharedAlbumActivityViewFromCollageView
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigatedToSharedAlbumActivityViewFromRecentActivityEntry
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigatedToSharedAlbumActivityViewFromSeeAllButton
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.favorites
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.hidden
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.imports
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.animated
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.bursts
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.cinematicVideos
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.depthEffect
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.livePhotos
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.longExposures
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.panoramas
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.proRes
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.raw
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.screenrecordings
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.screenshots
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.selfPortraits
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.slomoVideos
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.timelapses
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.mediaTypes.videos
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.people
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.places
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.recentlyedited
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.recentlysaved
+ 11/12/22
+ com.apple.photos.CPAnalytics.navigationList.trashBin
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpCaptionEditExited
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpCaptionEditExitedWith1-10Characters
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpCaptionEditExitedWith101+Characters
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpCaptionEditExitedWith11+Hashtags
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpCaptionEditExitedWith11-20Characters
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpCaptionEditExitedWith1Hashtags
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpCaptionEditExitedWith21-30Characters
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpCaptionEditExitedWith2Hashtags
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpCaptionEditExitedWith31-50Characters
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpCaptionEditExitedWith3Hashtags
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpCaptionEditExitedWith4-5Hashtags
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpCaptionEditExitedWith51-100Characters
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpCaptionEditExitedWith6-10Hashtags
+ 11/12/22
+ com.apple.photos.CPAnalytics.oneUpLivePhotoEffectApplied
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.addToPeopleHome
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.bootstrap.inlineControl.dismiss
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.bootstrap.inlineControl.review
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.bootstrap.mergeCandidates.confirmedAndRejectedCounts
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.bootstrap.speedbump.advance
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.bootstrap.speedbump.cancel
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.confirmAdditional.mergeCandidates.confirmedAndRejectedCounts
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.confirmAdditional.personSuggestions.confirmedAndRejectedCounts
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.detailView.keyPhotoChanged
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.detailView.notThisPerson
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.detailView.showFaces
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.manageTags.commitTapped
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.me.confirmed
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.me.rejected
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.naming.contactChosen
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.naming.personChosen
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.naming.skipped
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.naming.stringChosen
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.removeFromPeopleHome
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.untag.cancelTapped
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.untag.newTagTapped
+ 11/12/22
+ com.apple.photos.CPAnalytics.people.untag.untagTapped
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosCloudQuotaOfferAdded
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosCloudQuotaOfferRemoved
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosCloudQuotaOfferReplaced
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsAllAssetsCounted
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth1
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth10
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth11-12
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth13-15
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth16-20
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth2
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth21-30
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth3
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth31-50
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth4
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth5
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth51+
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth6
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth7
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth8
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsNavigatedToDepth9
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsShowMoreButtonSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsSummaryAssetsCounted
+ 11/12/22
+ com.apple.photos.CPAnalytics.photosDetailsSummaryButtonSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.places.locationAction
+ 11/12/22
+ com.apple.photos.CPAnalytics.rendering.livePhotoEffectFailed
+ 11/12/22
+ com.apple.photos.CPAnalytics.rendering.livePhotoEffectPreviewRenderingDuration
+ 11/12/22
+ com.apple.photos.CPAnalytics.search.session
+ 11/12/22
+ com.apple.photos.CPAnalytics.search.siri
+ 11/12/22
+ com.apple.photos.CPAnalytics.selectModeEntered
+ 11/12/22
+ com.apple.photos.CPAnalytics.shareCanceled
+ 11/12/22
+ com.apple.photos.CPAnalytics.shareCompleted
+ 11/12/22
+ com.apple.photos.CPAnalytics.shareFailed
+ 11/12/22
+ com.apple.photos.CPAnalytics.sharedAlbumInvitationAccepted
+ 11/12/22
+ com.apple.photos.CPAnalytics.sharedAlbumInvitationDeclined
+ 11/12/22
+ com.apple.photos.CPAnalytics.sharedAlbumInvitationReportedAsJunk
+ 11/12/22
+ com.apple.photos.CPAnalytics.sharedAlbumsActivityFeedPostLiked
+ 11/12/22
+ com.apple.photos.CPAnalytics.sharedAlbumsActivityFeedPostUnliked
+ 11/12/22
+ com.apple.photos.CPAnalytics.sharedLibrary.suggestionsBanner.dismissed
+ 11/12/22
+ com.apple.photos.CPAnalytics.sharedLibrary.suggestionsBanner.presented
+ 11/12/22
+ com.apple.photos.CPAnalytics.sharedLibrary.suggestionsBanner.reviewed
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportCancelledAfter10.0-60.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportCancelledAfter2.0-10.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportCancelledAfter<2.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportCancelledAfter>60.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportEndedSuccessfullyAfter0.0-1.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportEndedSuccessfullyAfter1.0-2.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportEndedSuccessfullyAfter10.0-20.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportEndedSuccessfullyAfter120.0-300.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportEndedSuccessfullyAfter2.0-5.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportEndedSuccessfullyAfter20.0-60.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportEndedSuccessfullyAfter300.0-600.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportEndedSuccessfullyAfter5.0-10.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportEndedSuccessfullyAfter60.0-120.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportEndedSuccessfullyAfter600.0-3600.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportEndedSuccessfullyAfter<0.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportEndedSuccessfullyAfter>3600.0Seconds
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportFailed
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowExportStarted
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction0.0-0.1
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction0.1-0.2
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction0.2-0.2
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction0.3-0.4
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction0.4-0.5
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction0.5-0.6
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction0.6-0.7
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction0.7-0.8
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction0.8-0.9
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction0.9-1.0
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction1.0-1.5
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction1.5-2.0
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction2.0-3.0
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction3.0-5.0
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction<0.0
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedAfterTimeFraction>5.0
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedByEndReached
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedByUndefined
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackEndedByUser
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStarted
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStartedWith0-Assets
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStartedWith1-5Assets
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStartedWith1001+Assets
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStartedWith101-200Assets
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStartedWith11-15Assets
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStartedWith16-20Assets
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStartedWith201-300Assets
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStartedWith21-30Assets
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStartedWith301-500Assets
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStartedWith31-50Assets
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStartedWith501-1000Assets
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStartedWith51-100Assets
+ 11/12/22
+ com.apple.photos.CPAnalytics.slideshowPlaybackStartedWith6-10Assets
+ 11/12/22
+ com.apple.photos.CPAnalytics.syndicatedAssetsFilterTipAnchorButtonTapped
+ 11/12/22
+ com.apple.photos.CPAnalytics.syndicatedAssetsFilterTipDismissed
+ 11/12/22
+ com.apple.photos.CPAnalytics.syndicatedAssetsFilterTipPresented
+ 11/12/22
+ com.apple.photos.CPAnalytics.syndicatedAssetsSaved
+ 11/12/22
+ com.apple.photos.CPAnalytics.syndicationSuggestionRemoved
+ 11/12/22
+ com.apple.photos.CPAnalytics.tabIdentifierChanged
+ 11/12/22
+ com.apple.photos.CPAnalytics.toggleMineAndSharedSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.toggleMyPhotosOnlySelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.userChoices.livePhotoEffectBounceSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.userChoices.livePhotoEffectLongExposureSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.userChoices.livePhotoEffectLoopSelected
+ 11/12/22
+ com.apple.photos.CPAnalytics.userChoices.livePhotoEffectsAppeared
+ 11/12/22
+ com.apple.photos.CPAnalytics.viewScrolledToBottom
+ 11/12/22
+ com.apple.photos.CPAnalytics.viewScrolledToInitialPosition
+ 11/12/22
+ com.apple.photos.CPAnalytics.widget.open
+ 11/12/22
+ com.apple.photos.cpa.active_user_feature.actionOnSharedLibrarySuggestions
+ 11/12/22
+ com.apple.photos.cpa.active_user_feature.interactiveMemoryExport
+ 11/12/22
+ com.apple.photos.cpa.active_user_feature.interactiveMemoryPlayback
+ 11/12/22
+ com.apple.photos.cpa.active_user_feature.memoryMoviePlayed
+ 11/12/22
+ com.apple.photos.cpa.active_user_feature.memoryViewed
+ 11/12/22
+ com.apple.photos.cpa.active_user_feature.mobileSlideShowActive
+ 11/12/22
+ com.apple.photos.cpa.active_user_feature.slideshowExported
+ 11/12/22
+ com.apple.photos.cpa.active_user_feature.slideshowPlayed
+ 11/12/22
+ com.apple.photos.edit.perf.exitedit
+ 11/12/22
+ com.apple.photos.memory.appleMusicFixation
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurred
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInAdditionalAutoEditDecisionLists
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInAssets
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInAssetsPreloading
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInAutoEditClip
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInAutoEditDecisionLists
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInAutoEditTransitionInfo
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInColorNormalization
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInCuratedSongs
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInInitialStyle
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInMovieHighlights
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInMusicPlayback
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInPersistableRecipe
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInPersistence
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInRecipePersistence
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInStoryModel
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInStyleManager
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInStyles
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInTargetDurationCuration
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInTimelineManager
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInTimelineValidation
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryErrorOccurredInTransitions
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryExportCancelled
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryExportFailed
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryExported
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStarted
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedByAutoplayedRelated
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedByUserSelectingRelated
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedWith1-10CuratedAssets
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedWith10001-20000CuratedAssets
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedWith1001-2000CuratedAssets
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedWith101-200CuratedAssets
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedWith11-50CuratedAssets
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedWith20000+CuratedAssets
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedWith2001-5000CuratedAssets
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedWith201-300CuratedAssets
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedWith301-500CuratedAssets
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedWith5001-10000CuratedAssets
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedWith501-1000CuratedAssets
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryFullscreenPlaybackStartedWith51-100CuratedAssets
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryMusicFellBackToLocalFlexSong
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryMusicUsedFlexMusic
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryMusicUseedAppleMusic
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackFinishedMuted
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackFinishedTruncated
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackFinishedUnmuted
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackFinishedWith0Pauses
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackFinishedWith1-2Pauses
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackFinishedWith101+Pauses
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackFinishedWith11-50Pauses
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackFinishedWith3-5Pauses
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackFinishedWith51-100Pauses
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackFinishedWith6-10Pauses
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackMutedDueToExplicitUserAction
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackMutedDueToSilentModeSwitch
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackUnmutedDueToExplicitUserAction
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackUnmutedDueToSilentModeSwitch
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackUnmutedDueToSongPick
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryPlaybackUnmutedDueToVolumeIncrease
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryRecipeErrorOccurred
+ 11/12/22
+ com.apple.photos.memory.interactiveMemorySessionBegan
+ 11/12/22
+ com.apple.photos.memory.interactiveMemorySessionEnded
+ 11/12/22
+ com.apple.photos.memory.interactiveMemorySessionPaused
+ 11/12/22
+ com.apple.photos.memory.interactiveMemorySessionPlayed
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryTimelinePlayedWith0-49PercentTransitionsOnBar
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryTimelinePlayedWith50-74PercentTransitionsOnBar
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryTimelinePlayedWith75-84PercentTransitionsOnBar
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryTimelinePlayedWith85-94PercentTransitionsOnBar
+ 11/12/22
+ com.apple.photos.memory.interactiveMemoryTimelinePlayedWith95-100PercentTransitionsOnBar
+ 11/12/22
+ com.apple.photos.memory.playbackLaunchPerformance
+ 11/12/22
+ com.apple.photos.memory.playbackReliability
+ 11/12/22
+ screen_CuratedLibrary_AllPhotos
+ 11/12/22
+ screen_CuratedLibrary_Days
+ 11/12/22
+ screen_CuratedLibrary_Months
+ 11/12/22
+ screen_CuratedLibrary_Years
+ 11/12/22
+ screen_DuplicatesAlbum
+ 11/12/22
+ screen_FavoriteMemories
+ 11/12/22
+ screen_IPXFeedViewController
+ 11/12/22
+ screen_InteractiveMemory
+ 11/12/22
+ screen_InteractiveMemoryBrowserGrid
+ 11/12/22
+ screen_InteractiveMemoryStyleSwitcher
+ 11/12/22
+ screen_MFMailComposeViewController
+ 11/12/22
+ screen_MFMessageComposeViewController
+ 11/12/22
+ screen_Memories
+ 11/12/22
+ screen_MemoriesFeed
+ 11/12/22
+ screen_MemoriesWidget
+ 11/12/22
+ screen_ObjectManipulationViewController
+ 11/12/22
+ screen_PMEditorNavigationController
+ 11/12/22
+ screen_PMiOSMainViewController
+ 11/12/22
+ screen_PXAssistantController
+ 11/12/22
+ screen_PXCMMAssetsViewController
+ 11/12/22
+ screen_PXEducationalTipViewController
+ 11/12/22
+ screen_PXFeedViewController
+ 11/12/22
+ screen_PXFeedbackTapToRadarViewController
+ 11/12/22
+ screen_PXFloatingCardViewController
+ 11/12/22
+ screen_PXForYouGadgetViewController
+ 11/12/22
+ screen_PXPeopleBootstrapConfirmationViewController
+ 11/12/22
+ screen_PXPeopleBootstrapSummaryViewController
+ 11/12/22
+ screen_PXPeopleCollectionViewController
+ 11/12/22
+ screen_PXPeopleConfirmationSummaryViewController
+ 11/12/22
+ screen_PXPeopleDetailViewController
+ 11/12/22
+ screen_PXPeopleNamePickerViewController
+ 11/12/22
+ screen_PXPeopleRecoCollectionViewController
+ 11/12/22
+ screen_PXPlacesMapInfoViewController
+ 11/12/22
+ screen_PXPlacesMapViewController
+ 11/12/22
+ screen_PXSharedLibraryAssistantCameraViewController
+ 11/12/22
+ screen_PXSharedLibraryAssistantHowToViewController
+ 11/12/22
+ screen_PXSharedLibraryAssistantReviewParticipantsViewController
+ 11/12/22
+ screen_PXSharedLibraryAssistantRulesViewController
+ 11/12/22
+ screen_PXSharedLibraryAssistantSummaryViewController
+ 11/12/22
+ screen_PXSurveyRadarReporterViewController
+ 11/12/22
+ screen_PXUIPeopleBootstrapNamingViewController
+ 11/12/22
+ screen_PhotosDetails_Collection
+ 11/12/22
+ screen_PhotosDetails_CuratedLibraryDays
+ 11/12/22
+ screen_PhotosDetails_CuratedLibraryMonths
+ 11/12/22
+ screen_PhotosDetails_CuratedLibraryYears
+ 11/12/22
+ screen_PhotosDetails_Memories
+ 11/12/22
+ screen_PhotosDetails_Moment
+ 11/12/22
+ screen_PhotosDetails_NonTracking
+ 11/12/22
+ screen_PhotosDetails_OneUpAccessory
+ 11/12/22
+ screen_PhotosDetails_OtherAlbums
+ 11/12/22
+ screen_PhotosDetails_People
+ 11/12/22
+ screen_PhotosDetails_Places
+ 11/12/22
+ screen_PhotosDetails_RelatedWidget
+ 11/12/22
+ screen_PhotosDetails_Search
+ 11/12/22
+ screen_PhotosDetails_Year
+ 11/12/22
+ screen_PhotosUIApps.PUXStoryColorGradeEditorViewController
+ 11/12/22
+ screen_PhotosUIApps.PUXStoryExportActivityPreviewViewController
+ 11/12/22
+ screen_PhotosUIApps.PUXStoryExportActivityViewController
+ 11/12/22
+ screen_PhotosUIApps.PUXStoryMusicEditorViewController
+ 11/12/22
+ screen_PhotosView
+ 11/12/22
+ screen_SBSUIWallpaperPreviewViewController
+ 11/12/22
+ screen_SLComposeViewController
+ 11/12/22
+ screen_TPKContentPopoverViewController
+ 11/12/22
+ screen_UIImagePickerController
+ 11/12/22
+ screen__UIActivityUserDefaultsViewController
+ 11/12/22
+
+ lastSeenDates
+
+ com.apple.photos.CPAnalytics.assetCollectionViewed
+ 11/12/22
+ com.apple.photos.CPAnalytics.mediaViewed
+ 11/12/22
+ com.apple.photos.CPAnalytics.search.session
+ 11/12/22
+ screen_CuratedLibrary_AllPhotos
+ 11/12/22
+ screen_PhotosView
+ 11/12/22
+
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotoAnalysisServicePreferences.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotoAnalysisServicePreferences.plist
new file mode 100644
index 00000000..60f1cbb0
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotoAnalysisServicePreferences.plist
@@ -0,0 +1,60 @@
+
+
+
+
+ BackgroundHighlightCollection
+ 2020-06-24T04:02:13Z
+ BackgroundHighlightEnrichment
+ 2020-06-24T04:02:12Z
+ BackgroundJobAssetRevGeocode
+ 2020-06-24T04:02:13Z
+ BackgroundJobSearch
+ 2020-06-24T04:02:13Z
+ BackgroundPeopleSuggestion
+ 2020-06-24T04:02:12Z
+ BackgroundUserBehaviorProcessor
+ 2020-06-24T04:02:13Z
+ PHAAssetRevGeocodeEnrichmentTask
+ 2022-11-12T21:54:14Z
+ PHACachingCPAnalyticsPropertiesTask
+ 2022-11-12T21:54:15Z
+ PHAContactClassificationTask
+ 2022-11-12T21:54:24Z
+ PHAFeaturesUsageReportingTask
+ 2022-11-12T21:54:00Z
+ PHAForcedHighlightEnrichmentTask
+ 2022-11-12T21:54:25Z
+ PHAGraphConsistencyTask
+ 2022-11-12T21:54:08Z
+ PHAGraphRebuildTask
+ 2022-11-12T21:54:05Z
+ PHAHighlightCollectionEnrichmentTask
+ 2022-11-12T21:54:06Z
+ PHAHighlightEnrichmentTask
+ 2022-11-12T21:54:06Z
+ PHAMediaSampleReportingTask
+ 2022-11-12T21:54:15Z
+ PHAMemoriesEnrichmentTask
+ 2022-11-12T21:54:15Z
+ PHAMemoryElectionTask
+ 2022-11-12T21:54:13Z
+ PHAPeopleSuggestionEnrichmentTask
+ 2022-11-12T21:54:05Z
+ PHAPortraitDonationEnrichmentTask
+ 2022-11-12T21:54:15Z
+ PHASearchEnrichmentTask
+ 2022-11-12T21:54:15Z
+ PHASuggestionGenerationTask
+ 2022-11-12T21:54:14Z
+ PHAUserBehaviorEnrichmentTask
+ 2022-11-12T21:54:15Z
+ PhotoAnalysisGraphLastBackgroundGraphConsistencyUpdateJobDateKey
+ 2020-05-30T02:16:06Z
+ PhotoAnalysisGraphLastBackgroundGraphRebuildJobDate
+ 2020-05-29T04:31:37Z
+ PhotoAnalysisGraphLastBackgroundMemoryGenerationJobDate
+ 2020-06-24T04:02:13Z
+ SiriPortraitDonation
+ 2020-06-24T04:02:13Z
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/construction-photosgraph.kgdb b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/construction-photosgraph.kgdb
new file mode 100644
index 00000000..47e1e3a1
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/construction-photosgraph.kgdb differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/construction-photosgraph.kgdb-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/construction-photosgraph.kgdb-shm
new file mode 100644
index 00000000..fe9ac284
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/construction-photosgraph.kgdb-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/construction-photosgraph.kgdb-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/construction-photosgraph.kgdb-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/liveupdate-photosgraph.kgdb b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/liveupdate-photosgraph.kgdb
new file mode 100644
index 00000000..4ab71e6c
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/liveupdate-photosgraph.kgdb differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/liveupdate-photosgraph.kgdb-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/liveupdate-photosgraph.kgdb-shm
new file mode 100644
index 00000000..fe9ac284
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/liveupdate-photosgraph.kgdb-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/liveupdate-photosgraph.kgdb-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/liveupdate-photosgraph.kgdb-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph-tmp.kgdb b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph-tmp.kgdb
new file mode 100644
index 00000000..47e1e3a1
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph-tmp.kgdb differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph-tmp.kgdb-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph-tmp.kgdb-shm
new file mode 100644
index 00000000..fe9ac284
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph-tmp.kgdb-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph-tmp.kgdb-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph-tmp.kgdb-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph.kgdb b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph.kgdb
new file mode 100644
index 00000000..fbc9ff44
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph.kgdb differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph.kgdb-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph.kgdb-shm
new file mode 100644
index 00000000..fd95e397
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph.kgdb-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph.kgdb-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph.kgdb-wal
new file mode 100644
index 00000000..46c88aae
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/PhotosGraph/photosgraph.kgdb-wal differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/changetoken.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/changetoken.plist
new file mode 100644
index 00000000..7b397bf2
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/changetoken.plist differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/ftemetrics b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/ftemetrics
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/revgeoprovider.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/revgeoprovider.plist
new file mode 100644
index 00000000..bf8f1e5d
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/graph/revgeoprovider.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ revgeoprovider
+ 7618
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/4E294112-DC9D-4B49-9561-1946B53A4E19.cmap b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/4E294112-DC9D-4B49-9561-1946B53A4E19.cmap
new file mode 100644
index 00000000..cca93d7c
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/4E294112-DC9D-4B49-9561-1946B53A4E19.cmap differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/9A5E0437-04AA-45DC-AAA7-FDC74A91F170.cmap b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/9A5E0437-04AA-45DC-AAA7-FDC74A91F170.cmap
new file mode 100644
index 00000000..40018f76
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/9A5E0437-04AA-45DC-AAA7-FDC74A91F170.cmap differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/AlgoFaceClusterCache.data b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/AlgoFaceClusterCache.data
new file mode 100644
index 00000000..f16b4a76
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/AlgoFaceClusterCache.data differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/PersonPromoter b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/PersonPromoter
new file mode 100644
index 00000000..5feb64f2
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/PersonPromoter
@@ -0,0 +1,14 @@
+
+
+
+
+ NumberOfFacesProcessedOnLastRun
+ 7
+ ProcessedInQuiescentState
+
+ SuggestedMeIdentifier
+
+ Version
+ 4
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/PhotoAnalysisServicePreferences.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/PhotoAnalysisServicePreferences.plist
new file mode 100644
index 00000000..bdd3d753
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/PhotoAnalysisServicePreferences.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ FaceIDModelLastGenerationKey
+ 2020-05-29T03:44:04Z
+ LastContactClassificationKey
+ 2020-05-29T04:31:40Z
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/clustererState.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/clustererState.plist
new file mode 100644
index 00000000..cb4560b6
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/clustererState.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ PVClustererBringUpState
+ 50
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/faceWorkerState.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/faceWorkerState.plist
new file mode 100644
index 00000000..c36206de
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/faceWorkerState.plist
@@ -0,0 +1,12 @@
+
+
+
+
+ IncrementalPersonProcessingStage
+ 6
+ PersonBuilderLastMinimumFaceGroupSizeForCreatingMergeCandidates
+ 15
+ PersonBuilderMergeCandidatesEnabled
+
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/vnpersonsmodel.bin b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/vnpersonsmodel.bin
new file mode 100644
index 00000000..211a83f7
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/caches/vision/vnpersonsmodel.bin differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotoAnalysisServicePreferences.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotoAnalysisServicePreferences.plist
new file mode 100644
index 00000000..be5ca4c7
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotoAnalysisServicePreferences.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ PhotoAnalysisGraphLastBackgroundGraphRebuildJobDate
+ 2019-08-07T02:26:15Z
+ PhotoAnalysisGraphLastBackgroundMemoryGenerationJobDate
+ 2019-08-17T14:26:34Z
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/construction-photosgraph.graphdb b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/construction-photosgraph.graphdb
new file mode 100644
index 00000000..96fee1ce
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/construction-photosgraph.graphdb differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/construction-photosgraph.graphdb-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/construction-photosgraph.graphdb-shm
new file mode 100644
index 00000000..fe9ac284
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/construction-photosgraph.graphdb-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/construction-photosgraph.graphdb-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/construction-photosgraph.graphdb-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/liveupdate-photosgraph.graphdb b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/liveupdate-photosgraph.graphdb
new file mode 100644
index 00000000..4d8a5dfb
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/liveupdate-photosgraph.graphdb differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/liveupdate-photosgraph.graphdb-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/liveupdate-photosgraph.graphdb-shm
new file mode 100644
index 00000000..fe9ac284
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/liveupdate-photosgraph.graphdb-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/liveupdate-photosgraph.graphdb-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/liveupdate-photosgraph.graphdb-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph-tmp.graphdb b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph-tmp.graphdb
new file mode 100644
index 00000000..96fee1ce
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph-tmp.graphdb differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph-tmp.graphdb-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph-tmp.graphdb-shm
new file mode 100644
index 00000000..fe9ac284
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph-tmp.graphdb-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph-tmp.graphdb-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph-tmp.graphdb-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph.graphdb b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph.graphdb
new file mode 100644
index 00000000..147ce400
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph.graphdb differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph.graphdb-shm b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph.graphdb-shm
new file mode 100644
index 00000000..fe9ac284
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph.graphdb-shm differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph.graphdb-wal b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/graph/PhotosGraph/photosgraph.graphdb-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/2E578BF2-718A-43E1-81BA-80AC61004DCF.cmap b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/2E578BF2-718A-43E1-81BA-80AC61004DCF.cmap
new file mode 100644
index 00000000..4aaf1638
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/2E578BF2-718A-43E1-81BA-80AC61004DCF.cmap differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/AlgoFaceClusterCache.data b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/AlgoFaceClusterCache.data
new file mode 100644
index 00000000..1f14d535
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/AlgoFaceClusterCache.data differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/C7589FFF-A378-4059-ABDC-19C4316A8B69.cmap b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/C7589FFF-A378-4059-ABDC-19C4316A8B69.cmap
new file mode 100644
index 00000000..1d6b6446
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/C7589FFF-A378-4059-ABDC-19C4316A8B69.cmap differ
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/PersonPromoter b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/PersonPromoter
new file mode 100644
index 00000000..4fdc85b4
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/PersonPromoter
@@ -0,0 +1,12 @@
+
+
+
+
+ ProcessedInQuiescentState
+
+ SuggestedMeIdentifier
+
+ Version
+ 3
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/clustererState.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/clustererState.plist
new file mode 100644
index 00000000..cb4560b6
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/clustererState.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ PVClustererBringUpState
+ 50
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/faceWorkerState.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/faceWorkerState.plist
new file mode 100644
index 00000000..736db69d
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.photoanalysisd/vision/faceWorkerState.plist
@@ -0,0 +1,12 @@
+
+
+
+
+ IncrementalPersonProcessingStage
+ 0
+ PersonBuilderLastMinimumFaceGroupSizeForCreatingMergeCandidates
+ 15
+ PersonBuilderMergeCandidatesEnabled
+
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photolibraryd/appPrivateData.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photolibraryd/appPrivateData.plist
new file mode 100644
index 00000000..544e5190
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.photolibraryd/appPrivateData.plist
@@ -0,0 +1,139 @@
+
+
+
+
+ MigrationAction
+
+ Background
+
+ PLModelMigrationAction_AddMissingExtendedAttributeDateTimezone
+
+ PLBackgroundMigrationStartDate
+ 2022-11-12T21:33:04Z
+ PLBackgroundMigrationStatus
+ 2
+ PLBackgroundMigrationStatusAttempts
+ 1
+ PLBackgroundMigrationStatusDate
+ 2022-11-12T21:33:04Z
+
+ PLModelMigrationAction_AddMissingExtendedAttributeDigitalZoomRatio
+
+ PLBackgroundMigrationStartDate
+ 2022-11-12T21:33:04Z
+ PLBackgroundMigrationStatus
+ 2
+ PLBackgroundMigrationStatusAttempts
+ 1
+ PLBackgroundMigrationStatusDate
+ 2022-11-12T21:33:04Z
+
+ PLModelMigrationAction_AddMissingExtendedAttributeFocalLengthIn35mm
+
+ PLBackgroundMigrationStartDate
+ 2022-11-12T21:33:04Z
+ PLBackgroundMigrationStatus
+ 2
+ PLBackgroundMigrationStatusAttempts
+ 1
+ PLBackgroundMigrationStatusDate
+ 2022-11-12T21:33:04Z
+
+ PLModelMigrationAction_AddMissingExtendedAttributeLocation
+
+ PLBackgroundMigrationStartDate
+ 2022-11-12T21:33:04Z
+ PLBackgroundMigrationStatus
+ 2
+ PLBackgroundMigrationStatusAttempts
+ 1
+ PLBackgroundMigrationStatusDate
+ 2022-11-12T21:33:04Z
+
+ PLModelMigrationAction_CinematicVideoPopulateDepthType
+
+ PLBackgroundMigrationStartDate
+ 2022-11-12T21:33:04Z
+ PLBackgroundMigrationStatus
+ 2
+ PLBackgroundMigrationStatusAttempts
+ 1
+ PLBackgroundMigrationStatusDate
+ 2022-11-12T21:33:04Z
+
+ PLModelMigrationAction_FixExtendedAttributeDateCreated
+
+ PLBackgroundMigrationStartDate
+ 2022-11-12T21:33:04Z
+ PLBackgroundMigrationStatus
+ 2
+ PLBackgroundMigrationStatusAttempts
+ 1
+ PLBackgroundMigrationStatusDate
+ 2022-11-12T21:33:04Z
+
+ PLModelMigrationAction_PopulateExtendedAttributes
+
+ PLBackgroundMigrationStartDate
+ 2022-11-12T21:33:04Z
+ PLBackgroundMigrationStatus
+ 2
+ PLBackgroundMigrationStatusAttempts
+ 1
+ PLBackgroundMigrationStatusDate
+ 2022-11-12T21:33:04Z
+
+ PLModelMigrationAction_RemoveOrphanedMediaAnalysisAttributes
+
+ PLBackgroundMigrationStartDate
+ 2022-11-12T21:33:04Z
+ PLBackgroundMigrationStatus
+ 2
+ PLBackgroundMigrationStatusAttempts
+ 1
+ PLBackgroundMigrationStatusDate
+ 2022-11-12T21:33:04Z
+
+ PLModelMigrationAction_RemoveOrphanedSceneprint
+
+ PLBackgroundMigrationStartDate
+ 2022-11-12T21:33:04Z
+ PLBackgroundMigrationStatus
+ 2
+ PLBackgroundMigrationStatusAttempts
+ 1
+ PLBackgroundMigrationStatusDate
+ 2022-11-12T21:33:04Z
+
+ PLModelMigrationAction_RevalidateFaceAreaPoints
+
+ PLBackgroundMigrationStartDate
+ 2022-11-12T21:33:04Z
+ PLBackgroundMigrationStatus
+ 2
+ PLBackgroundMigrationStatusAttempts
+ 1
+ PLBackgroundMigrationStatusDate
+ 2022-11-12T21:33:04Z
+
+ PLModelMigrationAction_updateACVideos
+
+ PLBackgroundMigrationStartDate
+ 2022-11-12T21:33:04Z
+ PLBackgroundMigrationStatus
+ 2
+ PLBackgroundMigrationStatusAttempts
+ 1
+ PLBackgroundMigrationStatusDate
+ 2022-11-12T21:33:04Z
+
+
+ ResumeMaker
+
+
+ PLDeferredCriticalMaintenanceTask
+ 2022-11-12T21:34:06Z
+ PLLibraryServicesManager.LocaleIdentifier
+ en_US
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/private/com.apple.photomodel/appPrivateData.plist b/tests/Test-13.0.0.photoslibrary/private/com.apple.photomodel/appPrivateData.plist
new file mode 100644
index 00000000..106cedb0
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/private/com.apple.photomodel/appPrivateData.plist
@@ -0,0 +1,11 @@
+
+
+
+
+ LithiumMessageTracer
+
+ LastReportedDate
+ 2019-08-04T13:32:55Z
+
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/.metadata_never_index b/tests/Test-13.0.0.photoslibrary/resources/.metadata_never_index
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/resources/caches/analytics/CPAnalyticsPropertiesCache.plist b/tests/Test-13.0.0.photoslibrary/resources/caches/analytics/CPAnalyticsPropertiesCache.plist
new file mode 100644
index 00000000..e5fc1522
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/caches/analytics/CPAnalyticsPropertiesCache.plist
@@ -0,0 +1,46 @@
+
+
+
+
+ cpa_cache_demographicSummary
+
+ cpa_demographic_userAgeRange
+ Unknown
+ cpa_demographic_userGender
+ Unknown
+
+ cpa_cache_lastCacheTime
+ 2022-11-12T21:54:15Z
+ cpa_cache_librarySummary
+
+ cpa_common_collectionCount
+ 16
+ cpa_common_faceAnalysisProgress
+ 1
+ cpa_common_fullAnalysisProgress
+ 0.92307692307692313
+ cpa_common_icpl_enabled
+
+ cpa_common_icpl_exceedingQuota
+
+ cpa_common_icpl_hasChangesToProcess
+
+ cpa_common_icpl_lowDiskSpace
+
+ cpa_common_icpl_veryLowDiskSpace
+
+ cpa_common_momentCount
+ 10
+ cpa_common_personCount
+ 3
+ cpa_common_photoCount
+ 16
+ cpa_common_sceneAnalysisProgress
+ 1
+ cpa_common_videoCount
+ 0
+
+ cpa_music_hasAppleMusicSubscription
+
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/1/1EB2B765-0765-43BA-A90C-0D0580E6172C_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/1/1EB2B765-0765-43BA-A90C-0D0580E6172C_1_105_c.jpeg
new file mode 100644
index 00000000..8a612cdc
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/1/1EB2B765-0765-43BA-A90C-0D0580E6172C_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/3/3DD2C897-F19E-4CA6-8C22-B027D5A71907_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/3/3DD2C897-F19E-4CA6-8C22-B027D5A71907_1_105_c.jpeg
new file mode 100644
index 00000000..c19de1d4
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/3/3DD2C897-F19E-4CA6-8C22-B027D5A71907_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/4/4D521201-92AC-43E5-8F7C-59BC41C37A96_1_100_o.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/4/4D521201-92AC-43E5-8F7C-59BC41C37A96_1_100_o.jpeg
new file mode 100644
index 00000000..d5ece67d
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/4/4D521201-92AC-43E5-8F7C-59BC41C37A96_1_100_o.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/4/4D521201-92AC-43E5-8F7C-59BC41C37A96_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/4/4D521201-92AC-43E5-8F7C-59BC41C37A96_1_105_c.jpeg
new file mode 100644
index 00000000..bb5e38af
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/4/4D521201-92AC-43E5-8F7C-59BC41C37A96_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4_1_105_c.jpeg
new file mode 100644
index 00000000..c36ba3a5
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/6/6FD38366-3BF2-407D-81FE-7153EB6125B6_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/6/6FD38366-3BF2-407D-81FE-7153EB6125B6_1_105_c.jpeg
new file mode 100644
index 00000000..4b8730c6
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/6/6FD38366-3BF2-407D-81FE-7153EB6125B6_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/7/71E3E212-00EB-430D-8A63-5E294B268554_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/7/71E3E212-00EB-430D-8A63-5E294B268554_1_105_c.jpeg
new file mode 100644
index 00000000..ccbb2fd0
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/7/71E3E212-00EB-430D-8A63-5E294B268554_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266_1_105_c.jpeg
new file mode 100644
index 00000000..ed80532d
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/8/8846E3E6-8AC8-4857-8448-E3D025784410_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/8/8846E3E6-8AC8-4857-8448-E3D025784410_1_105_c.jpeg
new file mode 100644
index 00000000..539b4e59
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/8/8846E3E6-8AC8-4857-8448-E3D025784410_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/8/8E1D7BC9-9321-44F9-8CFB-4083F6B9232A_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/8/8E1D7BC9-9321-44F9-8CFB-4083F6B9232A_1_105_c.jpeg
new file mode 100644
index 00000000..312b01d2
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/8/8E1D7BC9-9321-44F9-8CFB-4083F6B9232A_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/A/A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/A/A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C_1_105_c.jpeg
new file mode 100644
index 00000000..f8943c5c
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/A/A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/A/A92D9C26-3A50-4197-9388-CB5F7DB9FA91_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/A/A92D9C26-3A50-4197-9388-CB5F7DB9FA91_1_105_c.jpeg
new file mode 100644
index 00000000..82af4102
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/A/A92D9C26-3A50-4197-9388-CB5F7DB9FA91_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/D/D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068_1_100_o.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/D/D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068_1_100_o.jpeg
new file mode 100644
index 00000000..03d2c6ce
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/D/D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068_1_100_o.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/D/D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/D/D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068_1_105_c.jpeg
new file mode 100644
index 00000000..82a19c3a
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/D/D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/D/D79B8D77-BFFC-460B-9312-034F2877D35B_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/D/D79B8D77-BFFC-460B-9312-034F2877D35B_1_105_c.jpeg
new file mode 100644
index 00000000..4f0c1479
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/D/D79B8D77-BFFC-460B-9312-034F2877D35B_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/D/DC99FBDD-7A52-4100-A5BB-344131646C30_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/D/DC99FBDD-7A52-4100-A5BB-344131646C30_1_105_c.jpeg
new file mode 100644
index 00000000..5a00c324
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/D/DC99FBDD-7A52-4100-A5BB-344131646C30_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51_1_105_c.jpeg
new file mode 100644
index 00000000..db88ba04
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/F/F12384F6-CD17-4151-ACBA-AE0E3688539E_1_105_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/F/F12384F6-CD17-4151-ACBA-AE0E3688539E_1_105_c.jpeg
new file mode 100644
index 00000000..6881aa31
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/F/F12384F6-CD17-4151-ACBA-AE0E3688539E_1_105_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/1/1EB2B765-0765-43BA-A90C-0D0580E6172C_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/1/1EB2B765-0765-43BA-A90C-0D0580E6172C_4_5005_c.jpeg
new file mode 100644
index 00000000..839cdcbd
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/1/1EB2B765-0765-43BA-A90C-0D0580E6172C_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/3/3DD2C897-F19E-4CA6-8C22-B027D5A71907_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/3/3DD2C897-F19E-4CA6-8C22-B027D5A71907_4_5005_c.jpeg
new file mode 100644
index 00000000..e68f1ee6
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/3/3DD2C897-F19E-4CA6-8C22-B027D5A71907_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/4/4D521201-92AC-43E5-8F7C-59BC41C37A96_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/4/4D521201-92AC-43E5-8F7C-59BC41C37A96_4_5005_c.jpeg
new file mode 100644
index 00000000..a4a8a5ed
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/4/4D521201-92AC-43E5-8F7C-59BC41C37A96_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4_4_5005_c.jpeg
new file mode 100644
index 00000000..4e1d70f6
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/6/6FD38366-3BF2-407D-81FE-7153EB6125B6_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/6/6FD38366-3BF2-407D-81FE-7153EB6125B6_4_5005_c.jpeg
new file mode 100644
index 00000000..03d0ff79
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/6/6FD38366-3BF2-407D-81FE-7153EB6125B6_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/7/71E3E212-00EB-430D-8A63-5E294B268554_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/7/71E3E212-00EB-430D-8A63-5E294B268554_4_5005_c.jpeg
new file mode 100644
index 00000000..c48aa6ea
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/7/71E3E212-00EB-430D-8A63-5E294B268554_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266_4_5005_c.jpeg
new file mode 100644
index 00000000..8b5467f6
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/8/8846E3E6-8AC8-4857-8448-E3D025784410_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/8/8846E3E6-8AC8-4857-8448-E3D025784410_4_5005_c.jpeg
new file mode 100644
index 00000000..a2680855
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/8/8846E3E6-8AC8-4857-8448-E3D025784410_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/8/8E1D7BC9-9321-44F9-8CFB-4083F6B9232A_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/8/8E1D7BC9-9321-44F9-8CFB-4083F6B9232A_4_5005_c.jpeg
new file mode 100644
index 00000000..c0d826ff
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/8/8E1D7BC9-9321-44F9-8CFB-4083F6B9232A_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/A/A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/A/A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C_4_5005_c.jpeg
new file mode 100644
index 00000000..b3e0f930
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/A/A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/A/A92D9C26-3A50-4197-9388-CB5F7DB9FA91_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/A/A92D9C26-3A50-4197-9388-CB5F7DB9FA91_4_5005_c.jpeg
new file mode 100644
index 00000000..c41dcce5
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/A/A92D9C26-3A50-4197-9388-CB5F7DB9FA91_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/D/D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/D/D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068_4_5005_c.jpeg
new file mode 100644
index 00000000..f4939048
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/D/D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/D/D79B8D77-BFFC-460B-9312-034F2877D35B_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/D/D79B8D77-BFFC-460B-9312-034F2877D35B_4_5005_c.jpeg
new file mode 100644
index 00000000..3cdee08c
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/D/D79B8D77-BFFC-460B-9312-034F2877D35B_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/D/DC99FBDD-7A52-4100-A5BB-344131646C30_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/D/DC99FBDD-7A52-4100-A5BB-344131646C30_4_5005_c.jpeg
new file mode 100644
index 00000000..6e9e2b12
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/D/DC99FBDD-7A52-4100-A5BB-344131646C30_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51_4_5005_c.jpeg
new file mode 100644
index 00000000..f510f714
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/F/F12384F6-CD17-4151-ACBA-AE0E3688539E_4_5005_c.jpeg b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/F/F12384F6-CD17-4151-ACBA-AE0E3688539E_4_5005_c.jpeg
new file mode 100644
index 00000000..95c0ea85
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/masters/F/F12384F6-CD17-4151-ACBA-AE0E3688539E_4_5005_c.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/thumbs/3356.ithmb b/tests/Test-13.0.0.photoslibrary/resources/derivatives/thumbs/3356.ithmb
new file mode 100644
index 00000000..3197081d
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/thumbs/3356.ithmb differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/thumbs/4133.ithmb b/tests/Test-13.0.0.photoslibrary/resources/derivatives/thumbs/4133.ithmb
new file mode 100644
index 00000000..a2675e6c
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/thumbs/4133.ithmb differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/thumbs/4532.ithmb b/tests/Test-13.0.0.photoslibrary/resources/derivatives/thumbs/4532.ithmb
new file mode 100644
index 00000000..7a3f381e
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/derivatives/thumbs/4532.ithmb differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/derivatives/thumbs/thumbnailConfiguration b/tests/Test-13.0.0.photoslibrary/resources/derivatives/thumbs/thumbnailConfiguration
new file mode 100644
index 00000000..7667f94d
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/derivatives/thumbs/thumbnailConfiguration
@@ -0,0 +1,19 @@
+
+
+
+
+ PLThumbnailManagerRebuildingTablesOnly
+
+ PLThumbnailManagerThumbnailFormatKey
+ 5005
+ PLThumbnailManagerThumbnailFormatsKey
+
+ 5005
+ 4532
+ 4133
+ 3356
+
+ PLThumbnailManagerVersionKey
+ 31
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Album-change.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/Album-change.plj
new file mode 100644
index 00000000..ae920f99
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/Album-change.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Album-snapshot.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/Album-snapshot.plj
new file mode 100644
index 00000000..f6e35acd
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/Album-snapshot.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Album.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/Album.plist
new file mode 100644
index 00000000..1ca75572
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/journals/Album.plist
@@ -0,0 +1,16 @@
+
+
+
+
+ coalesceDate
+ 2022-11-12T21:34:07Z
+ coalescePayloadVersion
+ 1
+ currentPayloadVersion
+ 1
+ snapshotDate
+ 2019-10-27T15:02:55Z
+ snapshotPayloadVersion
+ 1
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Asset-change.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/Asset-change.plj
new file mode 100644
index 00000000..d0f6a695
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/Asset-change.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Asset-snapshot.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/Asset-snapshot.plj
new file mode 100644
index 00000000..33c37cd2
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/Asset-snapshot.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Asset.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/Asset.plist
new file mode 100644
index 00000000..94c4a2ef
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/journals/Asset.plist
@@ -0,0 +1,16 @@
+
+
+
+
+ coalesceDate
+ 2022-11-12T21:34:07Z
+ coalescePayloadVersion
+ 103
+ currentPayloadVersion
+ 103
+ snapshotDate
+ 2019-11-11T04:16:28Z
+ snapshotPayloadVersion
+ 10
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/DeferredRebuildFace-snapshot.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/DeferredRebuildFace-snapshot.plj
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/DeferredRebuildFace.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/DeferredRebuildFace.plist
new file mode 100644
index 00000000..3a4b9140
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/journals/DeferredRebuildFace.plist
@@ -0,0 +1,12 @@
+
+
+
+
+ currentPayloadVersion
+ 1
+ snapshotDate
+ 2019-10-27T15:02:57Z
+ snapshotPayloadVersion
+ 1
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/DetectedFace-change.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/DetectedFace-change.plj
new file mode 100644
index 00000000..171ec860
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/DetectedFace-change.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/DetectedFace-snapshot.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/DetectedFace-snapshot.plj
new file mode 100644
index 00000000..f78df5b7
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/DetectedFace-snapshot.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/DetectedFace.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/DetectedFace.plist
new file mode 100644
index 00000000..1ca75572
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/journals/DetectedFace.plist
@@ -0,0 +1,16 @@
+
+
+
+
+ coalesceDate
+ 2022-11-12T21:34:07Z
+ coalescePayloadVersion
+ 1
+ currentPayloadVersion
+ 1
+ snapshotDate
+ 2019-10-27T15:02:55Z
+ snapshotPayloadVersion
+ 1
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/FetchingAlbum-snapshot.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/FetchingAlbum-snapshot.plj
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/FetchingAlbum.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/FetchingAlbum.plist
new file mode 100644
index 00000000..3ece9a2c
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/journals/FetchingAlbum.plist
@@ -0,0 +1,12 @@
+
+
+
+
+ currentPayloadVersion
+ 1
+ snapshotDate
+ 2019-10-27T15:02:55Z
+ snapshotPayloadVersion
+ 1
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/FileSystemVolume-snapshot.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/FileSystemVolume-snapshot.plj
new file mode 100644
index 00000000..71155590
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/FileSystemVolume-snapshot.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/FileSystemVolume.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/FileSystemVolume.plist
new file mode 100644
index 00000000..ac1db136
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/journals/FileSystemVolume.plist
@@ -0,0 +1,16 @@
+
+
+
+
+ coalesceDate
+ 2020-05-29T15:20:05Z
+ coalescePayloadVersion
+ 1
+ currentPayloadVersion
+ 1
+ snapshotDate
+ 2019-10-27T15:02:55Z
+ snapshotPayloadVersion
+ 1
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Folder-change.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/Folder-change.plj
new file mode 100644
index 00000000..86758e01
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/Folder-change.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Folder-snapshot.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/Folder-snapshot.plj
new file mode 100644
index 00000000..751122fe
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/Folder-snapshot.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Folder.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/Folder.plist
new file mode 100644
index 00000000..1ca75572
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/journals/Folder.plist
@@ -0,0 +1,16 @@
+
+
+
+
+ coalesceDate
+ 2022-11-12T21:34:07Z
+ coalescePayloadVersion
+ 1
+ currentPayloadVersion
+ 1
+ snapshotDate
+ 2019-10-27T15:02:55Z
+ snapshotPayloadVersion
+ 1
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/HistoryToken.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/HistoryToken.plist
new file mode 100644
index 00000000..c56c4d6b
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/HistoryToken.plist differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/ImportSession-snapshot.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/ImportSession-snapshot.plj
new file mode 100644
index 00000000..98b7b9f8
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/ImportSession-snapshot.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/ImportSession.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/ImportSession.plist
new file mode 100644
index 00000000..1ca75572
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/journals/ImportSession.plist
@@ -0,0 +1,16 @@
+
+
+
+
+ coalesceDate
+ 2022-11-12T21:34:07Z
+ coalescePayloadVersion
+ 1
+ currentPayloadVersion
+ 1
+ snapshotDate
+ 2019-10-27T15:02:55Z
+ snapshotPayloadVersion
+ 1
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Keyword-change.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/Keyword-change.plj
new file mode 100644
index 00000000..bc1570ab
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/Keyword-change.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Keyword-snapshot.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/Keyword-snapshot.plj
new file mode 100644
index 00000000..f512308e
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/Keyword-snapshot.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Keyword.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/Keyword.plist
new file mode 100644
index 00000000..3ece9a2c
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/journals/Keyword.plist
@@ -0,0 +1,12 @@
+
+
+
+
+ currentPayloadVersion
+ 1
+ snapshotDate
+ 2019-10-27T15:02:55Z
+ snapshotPayloadVersion
+ 1
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Memory-snapshot.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/Memory-snapshot.plj
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Memory.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/Memory.plist
new file mode 100644
index 00000000..3ece9a2c
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/journals/Memory.plist
@@ -0,0 +1,12 @@
+
+
+
+
+ currentPayloadVersion
+ 1
+ snapshotDate
+ 2019-10-27T15:02:55Z
+ snapshotPayloadVersion
+ 1
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/MigrationHistory-change.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/MigrationHistory-change.plj
new file mode 100644
index 00000000..fdaf3615
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/MigrationHistory-change.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/MigrationHistory-snapshot.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/MigrationHistory-snapshot.plj
new file mode 100644
index 00000000..d5eda50a
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/MigrationHistory-snapshot.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/MigrationHistory.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/MigrationHistory.plist
new file mode 100644
index 00000000..4ec37c7f
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/journals/MigrationHistory.plist
@@ -0,0 +1,12 @@
+
+
+
+
+ currentPayloadVersion
+ 1
+ snapshotDate
+ 2020-10-02T13:39:59Z
+ snapshotPayloadVersion
+ 1
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Person-snapshot.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/Person-snapshot.plj
new file mode 100644
index 00000000..c2eac19c
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/journals/Person-snapshot.plj differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/Person.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/Person.plist
new file mode 100644
index 00000000..1ca75572
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/journals/Person.plist
@@ -0,0 +1,16 @@
+
+
+
+
+ coalesceDate
+ 2022-11-12T21:34:07Z
+ coalescePayloadVersion
+ 1
+ currentPayloadVersion
+ 1
+ snapshotDate
+ 2019-10-27T15:02:55Z
+ snapshotPayloadVersion
+ 1
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/ProjectAlbum-snapshot.plj b/tests/Test-13.0.0.photoslibrary/resources/journals/ProjectAlbum-snapshot.plj
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-13.0.0.photoslibrary/resources/journals/ProjectAlbum.plist b/tests/Test-13.0.0.photoslibrary/resources/journals/ProjectAlbum.plist
new file mode 100644
index 00000000..3ece9a2c
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/journals/ProjectAlbum.plist
@@ -0,0 +1,12 @@
+
+
+
+
+ currentPayloadVersion
+ 1
+ snapshotDate
+ 2019-10-27T15:02:55Z
+ snapshotPayloadVersion
+ 1
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/renders/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4.plist b/tests/Test-13.0.0.photoslibrary/resources/renders/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4.plist
new file mode 100644
index 00000000..b69a9147
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/renders/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4.plist
@@ -0,0 +1,24 @@
+
+
+
+
+ adjustmentBaseVersion
+ 0
+ adjustmentData
+
+ bZBNS8NAEIb/y5xDaGxTSa62Yi8VFFQQD5PspJmS3Q27k15C/ruTBBTB68zzfsyMcKMQ
+ 2buTazyUI1QDd+Y82IoClJAVj8UeEsC+f1u5eZhnaVakWb7RTaxbsvhCN163WQJ9h9L4
+ YBV9fv2AKQFLggYF5wCLUSi8s5EWyrvN7l4F3FPHjn4jVJfu1H2Fn4gvraj3dp8n4AOT
+ E5Q1Tt3nLJQfsTZAcx2iWMUilJ/jPwQ5rDoyUEoYSK8gEXaXOBekpqH6L7xMzmhJq20P
+ h4DqxvWD9918HRsN4oaXjx0XFqav6Rs=
+
+ adjustmentEditorBundleID
+ com.apple.Photos
+ adjustmentFormatIdentifier
+ com.apple.photo
+ adjustmentFormatVersion
+ 1.4
+ adjustmentTimestamp
+ 2020-05-29T03:39:38Z
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/renders/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4_1_201_a.jpeg b/tests/Test-13.0.0.photoslibrary/resources/renders/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4_1_201_a.jpeg
new file mode 100644
index 00000000..c2b53111
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/renders/6/6191423D-8DB8-4D4C-92BE-9BBBA308AAC4_1_201_a.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/renders/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266.plist b/tests/Test-13.0.0.photoslibrary/resources/renders/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266.plist
new file mode 100644
index 00000000..080450e0
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/renders/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266.plist
@@ -0,0 +1,68 @@
+
+
+
+
+ adjustmentBaseVersion
+ 0
+ adjustmentData
+
+ bVfbkqM6sv0Xv1ZHl8BgQ0fMAyCJm8EgbsZT84ABczVggwvsHfvfj1zdfXZPxPCGMrVy
+ KSVlLv21+sxvY9V3enfuVz/+Wp3uVZvZ98spv61+rFgg8WuBS1ffVskwhD9d6fiaAd+Z
+ 7wwDqGFMy/ySkPyz+mlkvq2GNpnO/e1CPffeYfX3t9Uln5IsmZJXiEsyTvktqrKpXP1Y
+ A5ajE6ohb6su/ycCnfedo+g/nbW8Kspp9YMDa/bbqr9VeTcl089wFP0VK5n+fzJlkGT1
+ fZwu1G1c/fj3X//DI++SU5tnqx/T7Z7TVeTTVHXF+CLYn8/0d9enSbv7GRd8+zWo0f/2
+ NTZ+DVbdcJ9++3xnhA0QNzzgOLAFPMMKv2ehZejH+y3/A0huk7Rx+qr7E12+vaC6fPyJ
+ Pr7WOE5V+sVqAOwrCABbgVsz6y3LcyJgxA3Y0vzx4MsmCmAtsgy/ETbsluMBZZDcpz5M
+ 2vsr+HdW4Dfgj48m8/QnEYq+ZsTthmdopnlRYJkt/2019V3SkqQr8l9BOH6z2fKABZQF
+ y1KPgeW/TGueFTmG2W44mgBBYNfUJAovEy/+90eZfeXRSga62xgPZgaGkxc2biTxB8I0
+ diTbEcbxYCnmYODiFMmXO2bislb8rTGhqgFhqUcGbhlHD9U2SphsiiIxSVuGPaxb+PG+
+ 4Bm2gRM2WWzg1AmJNKPlqEeojNXQRpFsHFAYx5Gi6kbS2vHyWeC1VJyC2xxkYsi0xzFk
+ meOJGZaDFp5z+QKh19jhzEe4jYMQ4ogwmRaC8uDhjOK2FLfxo+amO8n8+fEebDewHZ2j
+ TKbgcgwSHF7DT+42emczOi9p2/IcfqAjmUUKFCeh3KTI53wNZQcvLA0KePTa1ozAlPqY
+ sQ5VWJAzspVCbO2OeOeQ9KE6hM2j+Hg3QZCSsgGB0+912TiTN8psBhasrUSTxdjDvwEH
+ M2qm0xdgwxc+i524ACqMXOYTko/3ULPYQsFjyBkKs3gFPkn+XOoelvUgXMhhH/UkJJXp
+ mbIeN78YNnTvmIUCMucvwJLmyg3sqDU2tmoFGZEZW5QOi7zvUOX6qLRc2MQHIqcBDovQ
+ ezhnw0yrYzBUXwTBiyDFC37htbiBUWzLBXMPHY7siWkgSSCI6B7q3CBjeCGOAzdc7JBO
+ i0CZHfClaD/em/XHu/cp/sMwYPLfiMHBsjOZn5xrQTdrfhPNeL72uAVRZ59GzK/pMSqv
+ r2PZ9lFEyM2Y5iGCb2fvLm0OaOi+cgh+5ZDBrdP13dHLAj3S41zuSvXSZ2X51mtdXFte
+ dNTYJvqUpZ338W6bFOCkNkV4kxOTJKW1aZ5HPxP3DPp4z/034rJY84Md5xWzUMLHTPYy
+ ilA0ltvFbfTn+CQ+TW2j3x152KA+pEtbcoxnB87CHj5dl5Q7jNLZuy+mqA3uKV3mO37M
+ jutyZxgB7ym9JXCeHSQHD7jEg+MzexdLgvcMkW331yZ4LBgDFxYUr0TUTxtQJHlxOdUG
+ a/VuFbD60zolhXiDxeyqBUcg6W04Aw97em5XjbgHohLAydqteWuGV4KWwEsJvuBdGi6y
+ 66pn22lbuQ6i4Hb0jp0eDeFJDqewk+zUBTvoWUdTQTdd6WvLlwSrZtIc87zWNedHtXWt
+ oXdguZyQMjs6ibbavgkECWjQTZ08tEVtn0UpbhfUSXtVmjVIwMV6zGvzGd+sqpktCG65
+ qljxYf48yxvFMMOKlUOEJ4nM0sd7AY+9rbkgg8Xo8AV7fp1qhfCMMehONjNrSCRb9UbB
+ blzg1vrH+64e73slEw53uy6aSFL1ueiq50Vr9eNQdp5/vvYf7xRahFJjmWTXmWfLFmaW
+ oC72MlmnOQKeLs0u3eOt50/mHgVPh1Wloy7xtZooIWdlVWW8mWIr31xx0gLr6JOnAN+Q
+ jWTXw/p8uMq7G9y4gUqaQlOszJDnC127bT5aZAbFQBRLgBy+lPi6P4qkruh9VY/BLOLO
+ gYngXuXa3luFu5C5U2sri8l8pliB6kk3o5auttcwBrTyXQFMTObWfIwP+BAcXAh20LeX
+ Sr1bu0GoOkXJDNM6tjIakSx4TrmuNS9tdlXwaUC93j3Q03zOTwJtbAU0nCw9UakfVDJf
+ DJB6iCARwdSrGdVJjDBqlmqv9XPeL8VA82TDAlzgQ69tj9taPlgcT3jT/aB0/WHvhBLn
+ zYyMXHDQFetueNyQlKFttDOXEfFi4rQ5PmxGPQLPqcxSZWILzcIRyVZqePpF8/vSqayP
+ dwsKo6OMYOcXte3OJ2WJd5gUF80rxv3jmRmWlCfK1tG5oLt6xNHWXFDKtgLZYG/M4hUt
+ Y6xX1kWvgtLwKJHn/HBhCCnhaa/on7BMLZ24PpSlzvENbsc19efj+GnZ49RWd2xcxuJa
+ Dp+oLk7t0hZGB4a6QoNepbWpBDdjPYp+zdh2EDzdamJhq3v0Qtr4IFnKLGQYjOemTmiP
+ 0Irq4oXF7pYeCNn46FY46TKtsTqXdcmusTlerCqbadkIulm4o53k0mazV9PRlhcK2qAg
+ kbiANrrQWcRZM9EFyHmGGekUyu2gXqSkJnKtGU2YLg9P74BfldkDtRbZyb5n7NN46woR
+ cnsyFkDDcrB3iH7EXHAs5ERSw7lYPAfipIlKJWrxMY6yMmwgp9sHV6zgZcrWM09bZm+H
+ 7sc72YkpLW8nHePGUSgwPeKBKh9lNeTO41LecZpOdQVjTZ+TqswR4l33RMIWrXUvcBkP
+ 4cJJJDaFnEQeEt/gfh668rHTVFCeCjGGRWErLnDUsC8Lb7/FPHcoypuM++BwKWORXm7a
+ yI0SdZxjyWaJ8mZPce7wQWVCKW+wMF6B4pW7o8t8vD92H+/atdgrrwIVjMNU3R8GbVtT
+ aZT40PvJYvQQAJLLtNTzVkBk9IYUQAs6LYSkCXEhunTX3aR8sJDlXLfELBRHt5Y4ndal
+ vVNppqm7QTILVxTFdKOFGXWBE8wMjw7BbSS4RFhyEtIktNjQs/F2QhoXNMRg1FFK7654
+ hjLwkvkthS7ttsSQ1clNn5Wp6VzsBwSdUdgcGnkRUO/6HbHv8NDbhst9onC0YxLVSHC9
+ +LEL/Bwbd5ctoOTatfsWwQc9QgXQtbYhqOoI3sQZnd8gQ3J2rmiqB+TQhunBdeGcC1DA
+ df8vKv/blwiX/pSw6w3L/SlhN99Wc1lN+S8Jy7wk7B8S+PUaYX6K439k8S+Z/G1VUglq
+ 5o+XWQCbNbd5+bBUxLP85u/fqlzpu+lGnyF/CHWvTLJ+fql06lVl9JlRnauvF5N3SW6T
+ 33f56u///P1/
+
+ adjustmentEditorBundleID
+ com.apple.Photos
+ adjustmentFormatIdentifier
+ com.apple.photo
+ adjustmentFormatVersion
+ 1.5
+ adjustmentTimestamp
+ 2020-10-04T06:00:14Z
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/renders/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266_1_201_a.heic b/tests/Test-13.0.0.photoslibrary/resources/renders/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266_1_201_a.heic
new file mode 100644
index 00000000..c7b00d6c
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/renders/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266_1_201_a.heic differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/renders/D/DC99FBDD-7A52-4100-A5BB-344131646C30.plist b/tests/Test-13.0.0.photoslibrary/resources/renders/D/DC99FBDD-7A52-4100-A5BB-344131646C30.plist
new file mode 100644
index 00000000..b298f6be
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/renders/D/DC99FBDD-7A52-4100-A5BB-344131646C30.plist
@@ -0,0 +1,20 @@
+
+
+
+
+ adjustmentBaseVersion
+ 0
+ adjustmentData
+
+ shkyAAAAAAACAAAA
+
+ adjustmentEditorBundleID
+ com.apple.Photos
+ adjustmentFormatIdentifier
+ com.apple.Photos.externalEdit
+ adjustmentFormatVersion
+ 1
+ adjustmentTimestamp
+ 2019-12-01T15:27:48Z
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/renders/D/DC99FBDD-7A52-4100-A5BB-344131646C30_1_201_a.jpeg b/tests/Test-13.0.0.photoslibrary/resources/renders/D/DC99FBDD-7A52-4100-A5BB-344131646C30_1_201_a.jpeg
new file mode 100644
index 00000000..7bcb36b9
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/renders/D/DC99FBDD-7A52-4100-A5BB-344131646C30_1_201_a.jpeg differ
diff --git a/tests/Test-13.0.0.photoslibrary/resources/renders/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51.plist b/tests/Test-13.0.0.photoslibrary/resources/renders/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51.plist
new file mode 100644
index 00000000..4117c731
--- /dev/null
+++ b/tests/Test-13.0.0.photoslibrary/resources/renders/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51.plist
@@ -0,0 +1,25 @@
+
+
+
+
+ adjustmentBaseVersion
+ 0
+ adjustmentData
+
+ bVFNT4RADP0vPSNh+FgWbsbE6MVNNFET42F2KVADAxnKqiH8dwvIukZP0+l77XtvZoAj
+ 2o4ac2vyBtIB9j1V2V1f79FCCmp7rQIfHNBt+7gQpRuEkXJjV/meIN2hxFrf45EWVDnQ
+ VprzxtZC3T08w+hAjawzzXpSqHXHaJ8o4xJS3wu3MkAtVmTwR0Lm3FC2L+QbpKJk2R1s
+ YgcaS2hY8yIn2yctzadhcaCzt77jWmgdpC/DPww0el9hBinbHiUFMpMpuslgeVLzI0HY
+ 6umO5tIUFUJ64TlwaMzcN/ydQ3rvS6Uif+PAx85SQWYGPtdanQ+umTwJQJk4pZzmN7+y
+ TTu9eM/zh6znHx/eb5VVPk5E5hRBJdGZgcQbx/F1/AI=
+
+ adjustmentEditorBundleID
+ com.apple.photos
+ adjustmentFormatIdentifier
+ com.apple.photo
+ adjustmentFormatVersion
+ 1.4
+ adjustmentRenderTypes
+ 0
+
+
diff --git a/tests/Test-13.0.0.photoslibrary/resources/renders/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51_1_201_a.jpeg b/tests/Test-13.0.0.photoslibrary/resources/renders/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51_1_201_a.jpeg
new file mode 100644
index 00000000..88caa537
Binary files /dev/null and b/tests/Test-13.0.0.photoslibrary/resources/renders/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51_1_201_a.jpeg differ
diff --git a/tests/test_ventura_13_0_0.py b/tests/test_ventura_13_0_0.py
new file mode 100644
index 00000000..c4b2b3ca
--- /dev/null
+++ b/tests/test_ventura_13_0_0.py
@@ -0,0 +1,1175 @@
+"""Test macOS 13.0 Photos library"""
+
+from collections import namedtuple
+
+import pytest
+
+import osxphotos
+from osxphotos._constants import _UNKNOWN_PERSON
+
+PHOTOS_DB = "tests/Test-13.0.0.photoslibrary/database/photos.db"
+PHOTOS_DB_PATH = "/Test-13.0.0.photoslibrary/database/photos.db"
+PHOTOS_LIBRARY_PATH = "/Test-13.0.0.photoslibrary"
+
+PHOTOS_DB_LEN = 16
+PHOTOS_NOT_IN_TRASH_LEN = 14
+PHOTOS_IN_TRASH_LEN = 2
+
+KEYWORDS = [
+ "Kids",
+ "wedding",
+ "flowers",
+ "England",
+ "London",
+ "London 2018",
+ "St. James's Park",
+ "UK",
+ "United Kingdom",
+]
+# Photos 5 includes blank person for detected face but looks like these aren't in Photos 7?
+PERSONS = ["Katie", "Suzy", "Maria", "_UNKNOWN_"]
+ALBUMS = [
+ "Pumpkin Farm",
+ "Test Album", # there are 2 albums named "Test Album" for testing duplicate album names
+ "AlbumInFolder",
+ "Raw",
+ "I have a deleted twin", # there's an empty album with same name that has been deleted
+ "EmptyAlbum",
+ "2018-10 - Sponsion, Museum, Frühstück, Römermuseum",
+ "2019-10/11 Paris Clermont",
+]
+KEYWORDS_DICT = {
+ "Kids": 4,
+ "wedding": 3,
+ "flowers": 1,
+ "England": 1,
+ "London": 1,
+ "London 2018": 1,
+ "St. James's Park": 1,
+ "UK": 1,
+ "United Kingdom": 1,
+}
+PERSONS_DICT = {
+ "Katie": 3,
+ "Suzy": 2,
+ "Maria": 2,
+ "_UNKNOWN_": 2,
+}
+
+ALBUM_DICT = {
+ "Pumpkin Farm": 3,
+ "Test Album": 2,
+ "AlbumInFolder": 2,
+ "Raw": 4,
+ "I have a deleted twin": 1,
+ "EmptyAlbum": 0,
+ "2018-10 - Sponsion, Museum, Frühstück, Römermuseum": 1,
+ "2019-10/11 Paris Clermont": 1,
+} # Note: there are 2 albums named "Test Album" for testing duplicate album names
+
+UUID_DICT = {
+ "missing": "A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C",
+ "favorite": "E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51",
+ "not_favorite": "A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C",
+ "hidden": "A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C",
+ "not_hidden": "E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51",
+ "has_adjustments": "E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51",
+ "adjustments_info": "7783E8E6-9CAC-40F3-BE22-81FB7051C266",
+ "no_adjustments": "D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068",
+ "location": "DC99FBDD-7A52-4100-A5BB-344131646C30",
+ "no_location": "6191423D-8DB8-4D4C-92BE-9BBBA308AAC4",
+ "external_edit": "DC99FBDD-7A52-4100-A5BB-344131646C30",
+ "no_external_edit": "E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51",
+ "export": "D79B8D77-BFFC-460B-9312-034F2877D35B", # "Pumkins2.jpg"
+ "export_tif": "8846E3E6-8AC8-4857-8448-E3D025784410",
+ "in_album": "D79B8D77-BFFC-460B-9312-034F2877D35B", # "Pumkins2.jpg"
+ "date_invalid": "8846E3E6-8AC8-4857-8448-E3D025784410",
+ "intrash": "71E3E212-00EB-430D-8A63-5E294B268554",
+ "not_intrash": "DC99FBDD-7A52-4100-A5BB-344131646C30",
+ "intrash_person_keywords": "6FD38366-3BF2-407D-81FE-7153EB6125B6",
+}
+
+UUID_PUMPKIN_FARM = [
+ "F12384F6-CD17-4151-ACBA-AE0E3688539E",
+ "D79B8D77-BFFC-460B-9312-034F2877D35B",
+ "1EB2B765-0765-43BA-A90C-0D0580E6172C",
+]
+
+ALBUM_SORT_ORDER = [
+ "1EB2B765-0765-43BA-A90C-0D0580E6172C",
+ "F12384F6-CD17-4151-ACBA-AE0E3688539E",
+ "D79B8D77-BFFC-460B-9312-034F2877D35B",
+]
+ALBUM_KEY_PHOTO = "D79B8D77-BFFC-460B-9312-034F2877D35B"
+
+UTI_DICT = {
+ "8846E3E6-8AC8-4857-8448-E3D025784410": "public.tiff",
+ "7783E8E6-9CAC-40F3-BE22-81FB7051C266": "public.heic",
+ "1EB2B765-0765-43BA-A90C-0D0580E6172C": "public.jpeg",
+ "4D521201-92AC-43E5-8F7C-59BC41C37A96": "public.jpeg",
+}
+
+UTI_ORIGINAL_DICT = {
+ "8846E3E6-8AC8-4857-8448-E3D025784410": "public.tiff",
+ "7783E8E6-9CAC-40F3-BE22-81FB7051C266": "public.heic",
+ "1EB2B765-0765-43BA-A90C-0D0580E6172C": "public.jpeg",
+ "4D521201-92AC-43E5-8F7C-59BC41C37A96": "public.jpeg",
+}
+
+
+RawInfo = namedtuple(
+ "RawInfo",
+ [
+ "comment",
+ "original_filename",
+ "has_raw",
+ "israw",
+ "raw_original",
+ "uti",
+ "uti_original",
+ "uti_raw",
+ ],
+)
+RAW_DICT = {
+ "D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068": RawInfo(
+ "raw image, no jpeg pair",
+ "DSC03584.dng",
+ False,
+ True,
+ False,
+ "com.adobe.raw-image",
+ "com.adobe.raw-image",
+ None,
+ ),
+ "A92D9C26-3A50-4197-9388-CB5F7DB9FA91": RawInfo(
+ "raw+jpeg, jpeg original",
+ "IMG_1994.JPG",
+ True,
+ False,
+ False,
+ "public.jpeg",
+ "public.jpeg",
+ "com.canon.cr2-raw-image",
+ ),
+ "4D521201-92AC-43E5-8F7C-59BC41C37A96": RawInfo(
+ "raw+jpeg, raw original",
+ "IMG_1997.JPG",
+ True,
+ False,
+ True,
+ "public.jpeg",
+ "public.jpeg",
+ "com.canon.cr2-raw-image",
+ ),
+ "E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51": RawInfo(
+ "jpeg, no raw",
+ "wedding.jpg",
+ False,
+ False,
+ False,
+ "public.jpeg",
+ "public.jpeg",
+ None,
+ ),
+}
+
+# HEIC image that's been edited in Big Sur, resulting edit is .HEIC
+UUID_HEIC_EDITED = "7783E8E6-9CAC-40F3-BE22-81FB7051C266"
+PATH_HEIC_EDITED = (
+ "resources/renders/7/7783E8E6-9CAC-40F3-BE22-81FB7051C266_1_201_a.heic"
+)
+
+# file is reference (not copied to library)
+UUID_IS_REFERENCE = "A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C"
+UUID_NOT_REFERENCE = "E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51"
+
+UUID_MOMENT = {
+ "3DD2C897-F19E-4CA6-8C22-B027D5A71907": {
+ "uuid": "3DD2C897-F19E-4CA6-8C22-B027D5A71907",
+ "location": (-34.91889167000001, 138.59686167),
+ "title": "Adelaide",
+ "subtitle": "",
+ "start_date": "2017-06-20T17:18:56.518000+09:30",
+ "end_date": "2017-06-20T17:18:56.518000+09:30",
+ "date": "2017-06-20T17:18:56.518000+09:30",
+ "modification_date": "2020-04-06T15:22:24.595584+09:30",
+ }
+}
+
+UUID_LABELS = {"6191423D-8DB8-4D4C-92BE-9BBBA308AAC4": ["Plant", "Flower Arrangement"]}
+
+
+@pytest.fixture(scope="module")
+def photosdb():
+ return osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+
+
+def test_init1():
+ # test named argument
+ import osxphotos
+
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ assert isinstance(photosdb, osxphotos.PhotosDB)
+
+
+def test_init2():
+ # test positional argument
+ import osxphotos
+
+ photosdb = osxphotos.PhotosDB(PHOTOS_DB)
+ assert isinstance(photosdb, osxphotos.PhotosDB)
+
+
+def test_init3():
+ # test positional and named argument (raises exception)
+ import osxphotos
+
+ with pytest.raises(Exception):
+ assert osxphotos.PhotosDB(PHOTOS_DB, dbfile=PHOTOS_DB)
+
+
+def test_init4():
+ # test invalid db
+ import os
+ import tempfile
+
+ import osxphotos
+
+ (bad_db, bad_db_name) = tempfile.mkstemp(suffix=".db", prefix="osxphotos-")
+ os.close(bad_db)
+
+ with pytest.raises(Exception):
+ assert osxphotos.PhotosDB(bad_db_name)
+
+ with pytest.raises(Exception):
+ assert osxphotos.PhotosDB(dbfile=bad_db_name)
+
+ try:
+ os.remove(bad_db_name)
+ except:
+ pass
+
+
+def test_init5(mocker):
+ # test failed get_last_library_path
+ import osxphotos
+
+ def bad_library():
+ return None
+
+ # get_last_library actually in utils but need to patch it in photosdb because it's imported into photosdb
+ # because of the layout of photosdb/ need to patch it this way...don't really understand why, but it works
+ mocker.patch("osxphotos.photosdb.photosdb.get_last_library_path", new=bad_library)
+
+ with pytest.raises(Exception):
+ assert osxphotos.PhotosDB()
+
+
+def test_db_len(photosdb):
+ # assert photosdb.db_version in osxphotos._TESTED_DB_VERSIONS
+ assert len(photosdb) == PHOTOS_DB_LEN
+
+
+def test_db_version(photosdb):
+ # assert photosdb.db_version in osxphotos._TESTED_DB_VERSIONS
+ assert photosdb.db_version == "6000"
+
+
+def test_persons(photosdb):
+ import collections
+
+ assert "Katie" in photosdb.persons
+ assert collections.Counter(PERSONS) == collections.Counter(photosdb.persons)
+
+
+def test_keywords(photosdb):
+ import collections
+
+ assert "wedding" in photosdb.keywords
+ assert collections.Counter(KEYWORDS) == collections.Counter(photosdb.keywords)
+
+
+def test_album_names(photosdb):
+ import collections
+
+ assert "Pumpkin Farm" in photosdb.albums
+ assert collections.Counter(ALBUMS) == collections.Counter(photosdb.albums)
+
+
+def test_keywords_dict(photosdb):
+ keywords = photosdb.keywords_as_dict
+ assert keywords["wedding"] == 3
+ assert keywords == KEYWORDS_DICT
+
+
+def test_persons_as_dict(photosdb):
+ persons = photosdb.persons_as_dict
+ assert persons["Maria"] == 2
+ assert persons == PERSONS_DICT
+
+
+def test_albums_as_dict(photosdb):
+ albums = photosdb.albums_as_dict
+ assert albums["Pumpkin Farm"] == 3
+ assert albums == ALBUM_DICT
+
+
+def test_album_sort_order(photosdb):
+ album = [a for a in photosdb.album_info if a.title == "Pumpkin Farm"][0]
+ photos = album.photos
+
+ uuids = [p.uuid for p in photos]
+ assert uuids == ALBUM_SORT_ORDER
+
+
+def test_album_empty_album(photosdb):
+ album = [a for a in photosdb.album_info if a.title == "EmptyAlbum"][0]
+ photos = album.photos
+ assert photos == []
+
+
+def test_attributes(photosdb):
+ import datetime
+
+ photos = photosdb.photos(uuid=["D79B8D77-BFFC-460B-9312-034F2877D35B"])
+ assert len(photos) == 1
+ p = photos[0]
+ assert p.keywords == ["Kids"]
+ assert p.original_filename == "Pumkins2.jpg"
+ assert p.filename == "D79B8D77-BFFC-460B-9312-034F2877D35B.jpeg"
+ assert p.date == datetime.datetime(
+ 2018, 9, 28, 16, 7, 7, 0, datetime.timezone(datetime.timedelta(seconds=-14400))
+ )
+ assert p.date_added == datetime.datetime(
+ 2019,
+ 7,
+ 27,
+ 9,
+ 16,
+ 49,
+ 778432,
+ tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=72000)),
+ )
+ assert p.description == "Girl holding pumpkin"
+ assert p.title == "I found one!"
+ assert sorted(p.albums) == ["Pumpkin Farm", "Test Album"]
+ assert p.persons == ["Katie"]
+ assert p.path.endswith(
+ "tests/Test-13.0.0.photoslibrary/originals/D/D79B8D77-BFFC-460B-9312-034F2877D35B.jpeg"
+ )
+ assert p.ismissing == False
+
+
+def test_attributes_2(photosdb):
+ """Test attributes including height, width, etc"""
+ import datetime
+
+ photos = photosdb.photos(uuid=[UUID_DICT["has_adjustments"]])
+ assert len(photos) == 1
+ p = photos[0]
+ assert p.keywords == ["wedding"]
+ assert p.original_filename == "wedding.jpg"
+ assert p.filename == "E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51.jpeg"
+ assert p.date == datetime.datetime(
+ 2019,
+ 4,
+ 15,
+ 14,
+ 40,
+ 24,
+ 86000,
+ datetime.timezone(datetime.timedelta(seconds=-14400)),
+ )
+ assert p.description == "Bride Wedding day"
+ assert p.title is None
+ assert sorted(p.albums) == ["AlbumInFolder", "I have a deleted twin"]
+ assert p.persons == ["Maria"]
+ assert p.path.endswith(
+ "tests/Test-13.0.0.photoslibrary/originals/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51.jpeg"
+ )
+ assert not p.ismissing
+ assert p.hasadjustments
+ assert p.height == 1325
+ assert p.width == 1526
+ assert p.original_height == 1367
+ assert p.original_width == 2048
+ assert p.orientation == 1
+ assert p.original_orientation == 1
+ assert p.original_filesize == 460483
+
+
+def test_missing(photosdb):
+ photos = photosdb.photos(uuid=[UUID_DICT["missing"]])
+ assert len(photos) == 1
+ p = photos[0]
+ assert p.path is None
+ assert p.ismissing == True
+
+
+def test_favorite(photosdb):
+ photos = photosdb.photos(uuid=[UUID_DICT["favorite"]])
+ assert len(photos) == 1
+ p = photos[0]
+ assert p.favorite == True
+
+
+def test_not_favorite(photosdb):
+ photos = photosdb.photos(uuid=[UUID_DICT["not_favorite"]])
+ assert len(photos) == 1
+ p = photos[0]
+ assert p.favorite == False
+
+
+def test_hidden(photosdb):
+ photos = photosdb.photos(uuid=[UUID_DICT["hidden"]])
+ assert len(photos) == 1
+ p = photos[0]
+ assert p.hidden == True
+
+
+def test_not_hidden(photosdb):
+ photos = photosdb.photos(uuid=[UUID_DICT["not_hidden"]])
+ assert len(photos) == 1
+ p = photos[0]
+ assert p.hidden == False
+
+
+def test_location_1(photosdb):
+ # test photo with lat/lon info
+ photos = photosdb.photos(uuid=[UUID_DICT["location"]])
+ assert len(photos) == 1
+ p = photos[0]
+ lat, lon = p.location
+ assert lat == pytest.approx(51.50357167)
+ assert lon == pytest.approx(-0.1318055)
+
+
+def test_location_2(photosdb):
+ # test photo with no location info
+ photos = photosdb.photos(uuid=[UUID_DICT["no_location"]])
+ assert len(photos) == 1
+ p = photos[0]
+ lat, lon = p.location
+ assert lat is None
+ assert lon is None
+
+
+def test_hasadjustments1(photosdb):
+ # test hasadjustments == True
+ photos = photosdb.photos(uuid=[UUID_DICT["has_adjustments"]])
+ assert len(photos) == 1
+ p = photos[0]
+ assert p.hasadjustments == True
+
+
+def test_hasadjustments2(photosdb):
+ # test hasadjustments == False
+ photos = photosdb.photos(uuid=[UUID_DICT["no_adjustments"]])
+ assert len(photos) == 1
+ p = photos[0]
+ assert p.hasadjustments == False
+
+
+def test_external_edit1(photosdb):
+ # test image has been edited in external editor
+ photos = photosdb.photos(uuid=[UUID_DICT["external_edit"]])
+ assert len(photos) == 1
+ p = photos[0]
+
+ assert p.external_edit == True
+
+
+def test_external_edit2(photosdb):
+ # test image has not been edited in external editor
+ photos = photosdb.photos(uuid=[UUID_DICT["no_external_edit"]])
+ assert len(photos) == 1
+ p = photos[0]
+
+ assert p.external_edit == False
+
+
+def test_path_edited_jpeg(photosdb):
+ # test a valid edited path
+ import os.path
+
+ photos = photosdb.photos(uuid=["E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51"])
+ assert len(photos) == 1
+ p = photos[0]
+ path = p.path_edited
+ assert path.endswith(
+ "resources/renders/E/E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51_1_201_a.jpeg"
+ )
+ assert os.path.exists(path)
+
+
+def test_path_edited_heic(photosdb):
+ # test a valid edited path for .heic image
+ import pathlib
+
+ photo = photosdb.get_photo(UUID_HEIC_EDITED)
+ assert photo.path_edited.endswith(PATH_HEIC_EDITED)
+ assert pathlib.Path(photo.path_edited).is_file()
+
+
+def test_path_edited2(photosdb):
+ # test an invalid edited path
+ photos = photosdb.photos(uuid=[UUID_DICT["no_adjustments"]])
+ assert len(photos) == 1
+ p = photos[0]
+ path = p.path_edited
+ assert path is None
+
+
+def test_path_derivatives(photosdb):
+ # test an path_derivatives
+
+ photos = photosdb.photos(uuid=[UUID_DICT["no_adjustments"]])
+ assert len(photos) == 1
+ p = photos[0]
+ path = p.path_derivatives
+ derivs = [
+ "D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068_1_100_o.jpeg",
+ "D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068_1_105_c.jpeg",
+ "D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068_4_5005_c.jpeg",
+ ]
+ for i, p in enumerate(path):
+ assert p.endswith(derivs[i])
+
+
+def test_count(photosdb):
+ photos = photosdb.photos()
+ assert len(photos) == PHOTOS_NOT_IN_TRASH_LEN
+
+
+def test_photos_intrash_1(photosdb):
+ """test PhotosDB.photos(intrash=True)"""
+ photos = photosdb.photos(intrash=True)
+ assert len(photos) == PHOTOS_IN_TRASH_LEN
+
+
+def test_photos_intrash_2(photosdb):
+ """test PhotosDB.photos(intrash=True)"""
+ photos = photosdb.photos(intrash=True)
+ for p in photos:
+ assert p.intrash
+
+
+def test_photos_intrash_3(photosdb):
+ """test PhotosDB.photos(intrash=False)"""
+ photos = photosdb.photos(intrash=False)
+ for p in photos:
+ assert not p.intrash
+
+
+def test_photoinfo_intrash_1(photosdb):
+ """Test PhotoInfo.intrash"""
+ p = photosdb.photos(uuid=[UUID_DICT["intrash"]], intrash=True)[0]
+ assert p.intrash
+
+
+def test_photoinfo_intrash_2(photosdb):
+ """Test PhotoInfo.intrash and intrash=default"""
+ p = photosdb.photos(uuid=[UUID_DICT["intrash"]])
+ assert not p
+
+
+def test_photoinfo_intrash_3(photosdb):
+ """Test PhotoInfo.intrash and photo has keyword and person"""
+ p = photosdb.photos(uuid=[UUID_DICT["intrash_person_keywords"]], intrash=True)[0]
+ assert p.intrash
+ assert "Maria" in p.persons
+ assert "wedding" in p.keywords
+
+
+def test_photoinfo_intrash_4(photosdb):
+ """Test PhotoInfo.intrash and photo has keyword and person"""
+ p = photosdb.photos(persons=["Maria"], intrash=True)[0]
+ assert p.intrash
+ assert "Maria" in p.persons
+ assert "wedding" in p.keywords
+
+
+def test_photoinfo_intrash_5(photosdb):
+ """Test PhotoInfo.intrash and photo has keyword and person"""
+ p = photosdb.photos(keywords=["wedding"], intrash=True)[0]
+ assert p.intrash
+ assert "Maria" in p.persons
+ assert "wedding" in p.keywords
+
+
+def test_photoinfo_not_intrash(photosdb):
+ """Test PhotoInfo.intrash"""
+ p = photosdb.photos(uuid=[UUID_DICT["not_intrash"]])[0]
+ assert not p.intrash
+
+
+def test_keyword_2(photosdb):
+ photos = photosdb.photos(keywords=["wedding"])
+ assert len(photos) == 2 # won't show the one in the trash
+
+
+def test_keyword_not_in_album(photosdb):
+
+ # find all photos with keyword "Kids" not in the album "Pumpkin Farm"
+ photos1 = photosdb.photos(albums=["Pumpkin Farm"])
+ photos2 = photosdb.photos(keywords=["Kids"])
+ photos3 = [p for p in photos2 if p not in photos1]
+ assert len(photos3) == 1
+ assert photos3[0].uuid == "A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C"
+
+
+def test_album_folder_name(photosdb):
+ """Test query with album name same as a folder name"""
+
+ photos = photosdb.photos(albums=["Pumpkin Farm"])
+ assert sorted(p.uuid for p in photos) == sorted(UUID_PUMPKIN_FARM)
+
+
+def test_multi_person(photosdb):
+ photos = photosdb.photos(persons=["Katie", "Suzy"])
+
+ assert len(photos) == 3
+
+
+def test_get_db_path(photosdb):
+ db_path = photosdb.db_path
+ assert db_path.endswith(PHOTOS_DB_PATH)
+
+
+def test_get_library_path(photosdb):
+ lib_path = photosdb.library_path
+ assert lib_path.endswith(PHOTOS_LIBRARY_PATH)
+
+
+def test_get_db_connection(photosdb):
+ """Test PhotosDB.get_db_connection"""
+ import sqlite3
+
+ conn, cursor = photosdb.get_db_connection()
+
+ assert isinstance(conn, sqlite3.Connection)
+ assert isinstance(cursor, sqlite3.Cursor)
+
+ results = conn.execute("SELECT ZUUID FROM ZASSET WHERE ZFAVORITE = 1;").fetchall()
+ assert len(results) == 1
+ assert results[0][0] == "E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51" # uuid
+
+ conn.close()
+
+
+def test_export_1(photosdb):
+ # test basic export
+ # get an unedited image and export it using default filename
+ import os
+ import os.path
+ import tempfile
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+ photos = photosdb.photos(uuid=[UUID_DICT["export"]])
+
+ filename = photos[0].original_filename
+ expected_dest = os.path.join(dest, filename)
+ got_dest = photos[0].export(dest)[0]
+
+ assert got_dest == expected_dest
+ assert os.path.isfile(got_dest)
+
+
+def test_export_2(photosdb):
+ # test export with user provided filename
+ import os
+ import os.path
+ import tempfile
+ import time
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+ photos = photosdb.photos(uuid=[UUID_DICT["export"]])
+
+ timestamp = time.time()
+ filename = f"osxphotos-export-2-test-{timestamp}.jpg"
+ expected_dest = os.path.join(dest, filename)
+ got_dest = photos[0].export(dest, filename)[0]
+
+ assert got_dest == expected_dest
+ assert os.path.isfile(got_dest)
+
+
+def test_export_3(photosdb):
+ # test file already exists and test increment=True (default)
+ import os
+ import os.path
+ import pathlib
+ import tempfile
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+ photos = photosdb.photos(uuid=[UUID_DICT["export"]])
+
+ filename = photos[0].original_filename
+ filename2 = pathlib.Path(filename)
+ filename2 = f"{filename2.stem} (1){filename2.suffix}"
+ expected_dest_2 = os.path.join(dest, filename2)
+
+ got_dest = photos[0].export(dest)[0]
+ got_dest_2 = photos[0].export(dest)[0]
+
+ assert got_dest_2 == expected_dest_2
+ assert os.path.isfile(got_dest_2)
+
+
+def test_export_4(photosdb):
+ # test user supplied file already exists and test increment=True (default)
+ import os
+ import os.path
+ import pathlib
+ import tempfile
+ import time
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+ photos = photosdb.photos(uuid=[UUID_DICT["export"]])
+
+ timestamp = time.time()
+ filename = f"osxphotos-export-2-test-{timestamp}.jpg"
+ filename2 = f"osxphotos-export-2-test-{timestamp} (1).jpg"
+ expected_dest_2 = os.path.join(dest, filename2)
+
+ got_dest = photos[0].export(dest, filename)[0]
+ got_dest_2 = photos[0].export(dest, filename)[0]
+
+ assert got_dest_2 == expected_dest_2
+ assert os.path.isfile(got_dest_2)
+
+
+def test_export_5(photosdb):
+ # test file already exists and test increment=True (default)
+ # and overwrite = True
+ import os
+ import os.path
+ import tempfile
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+ photos = photosdb.photos(uuid=[UUID_DICT["export"]])
+
+ filename = photos[0].original_filename
+ expected_dest = os.path.join(dest, filename)
+
+ got_dest = photos[0].export(dest)[0]
+ got_dest_2 = photos[0].export(dest, overwrite=True)[0]
+
+ assert got_dest_2 == got_dest
+ assert got_dest_2 == expected_dest
+ assert os.path.isfile(got_dest_2)
+
+
+def test_export_6(photosdb):
+ # test user supplied file already exists and test increment=True (default)
+ # and overwrite = True
+ import os
+ import os.path
+ import pathlib
+ import tempfile
+ import time
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+ photos = photosdb.photos(uuid=[UUID_DICT["export"]])
+
+ timestamp = time.time()
+ filename = f"osxphotos-export-test-{timestamp}.jpg"
+ expected_dest = os.path.join(dest, filename)
+
+ got_dest = photos[0].export(dest, filename)[0]
+ got_dest_2 = photos[0].export(dest, filename, overwrite=True)[0]
+
+ assert got_dest_2 == got_dest
+ assert got_dest_2 == expected_dest
+ assert os.path.isfile(got_dest_2)
+
+
+def test_export_7(photosdb):
+ # test file already exists and test increment=False (not default), overwrite=False (default)
+ # should raise exception
+ import os
+ import os.path
+ import tempfile
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+ photos = photosdb.photos(uuid=[UUID_DICT["export"]])
+
+ filename = photos[0].filename
+
+ got_dest = photos[0].export(dest)[0]
+ with pytest.raises(Exception) as e:
+ # try to export again with increment = False
+ assert photos[0].export(dest, increment=False)
+ assert e.type == type(FileExistsError())
+
+
+def test_export_8(photosdb):
+ # try to export missing file
+ # should return empty list
+ import os
+ import os.path
+ import tempfile
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+ photos = photosdb.photos(uuid=[UUID_DICT["missing"]])
+
+ assert photos[0].export(dest) == []
+
+
+def test_export_9(photosdb):
+ # try to export edited file that's not edited
+ # should raise exception
+ import os
+ import os.path
+ import tempfile
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+ photos = photosdb.photos(uuid=[UUID_DICT["no_adjustments"]])
+
+ filename = photos[0].filename
+
+ with pytest.raises(Exception) as e:
+ assert photos[0].export(dest, edited=True)
+ assert e.type == ValueError
+
+
+def test_export_10(photosdb):
+ # try to export edited file that's not edited and name provided
+ # should raise exception
+ import os
+ import os.path
+ import tempfile
+ import time
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+ photos = photosdb.photos(uuid=[UUID_DICT["no_adjustments"]])
+
+ timestamp = time.time()
+ filename = f"osxphotos-export-test-{timestamp}.jpg"
+
+ with pytest.raises(Exception) as e:
+ assert photos[0].export(dest, filename, edited=True)
+ assert e.type == ValueError
+
+
+def test_export_11(photosdb):
+ # export edited file with name provided
+ import os
+ import os.path
+ import tempfile
+ import time
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+ photos = photosdb.photos(uuid=[UUID_DICT["has_adjustments"]])
+
+ timestamp = time.time()
+ filename = f"osxphotos-export-test-{timestamp}.jpg"
+ expected_dest = os.path.join(dest, filename)
+
+ got_dest = photos[0].export(dest, filename, edited=True)[0]
+ assert got_dest == expected_dest
+
+
+def test_export_12(photosdb):
+ # export edited file with default name
+ import os
+ import os.path
+ import pathlib
+ import tempfile
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+ photos = photosdb.photos(uuid=[UUID_DICT["has_adjustments"]])
+
+ edited_name = pathlib.Path(photos[0].path_edited).name
+ edited_suffix = pathlib.Path(edited_name).suffix
+ filename = (
+ pathlib.Path(photos[0].original_filename).stem + "_edited" + edited_suffix
+ )
+ expected_dest = os.path.join(dest, filename)
+
+ got_dest = photos[0].export(dest, edited=True)[0]
+ assert got_dest == expected_dest
+
+
+def test_export_13(photosdb):
+ # export to invalid destination
+ # should raise exception
+ import os
+ import os.path
+ import tempfile
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+
+ # create a folder that doesn't exist
+ i = 0
+ while os.path.isdir(dest):
+ dest = os.path.join(dest, str(i))
+ i += 1
+
+ photos = photosdb.photos(uuid=[UUID_DICT["export"]])
+
+ filename = photos[0].filename
+
+ with pytest.raises(Exception) as e:
+ assert photos[0].export(dest)
+ assert e.type == type(FileNotFoundError())
+
+
+def test_export_14(caplog, photosdb):
+ # test export with user provided filename with different (but valid) extension than source
+ import os
+ import os.path
+ import tempfile
+ import time
+
+ tempdir = tempfile.TemporaryDirectory(prefix="osxphotos_")
+ dest = tempdir.name
+ photos = photosdb.photos(uuid=[UUID_DICT["export_tif"]])
+
+ timestamp = time.time()
+ filename = f"osxphotos-export-2-test-{timestamp}.tif"
+ expected_dest = os.path.join(dest, filename)
+ got_dest = photos[0].export(dest, filename)[0]
+
+ assert got_dest == expected_dest
+ assert os.path.isfile(got_dest)
+
+ assert "Invalid destination suffix" not in caplog.text
+
+
+def test_eq(photosdb):
+ """Test equality of two PhotoInfo objects"""
+ import osxphotos
+
+ photosdb2 = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ photos1 = photosdb.photos(uuid=[UUID_DICT["export"]])
+ photos2 = photosdb2.photos(uuid=[UUID_DICT["export"]])
+ assert photos1[0] == photos2[0]
+
+
+def test_eq_2(photosdb):
+ """Test equality of two PhotoInfo objects when one has memoized property"""
+ import osxphotos
+
+ photosdb2 = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ photos1 = photosdb.photos(uuid=[UUID_DICT["in_album"]])
+ photos2 = photosdb2.photos(uuid=[UUID_DICT["in_album"]])
+
+ # memoize a value
+ albums = photos1[0].albums
+ assert albums
+
+ assert photos1[0] == photos2[0]
+
+
+def test_not_eq(photosdb):
+ photos1 = photosdb.photos(uuid=[UUID_DICT["export"]])
+ photos2 = photosdb.photos(uuid=[UUID_DICT["missing"]])
+ assert photos1[0] != photos2[0]
+
+
+def test_photosdb_repr():
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ photosdb2 = eval(repr(photosdb))
+
+ ignore_keys = ["_tmp_db", "_tempdir", "_tempdir_name", "_db_connection"]
+ assert {k: v for k, v in photosdb.__dict__.items() if k not in ignore_keys} == {
+ k: v for k, v in photosdb2.__dict__.items() if k not in ignore_keys
+ }
+
+
+def test_photosinfo_repr(photosdb):
+ import datetime
+
+ photos = photosdb.photos(uuid=[UUID_DICT["favorite"]])
+ photo = photos[0]
+ photo2 = eval(repr(photo))
+
+ assert {k: str(v).encode("utf-8") for k, v in photo.__dict__.items()} == {
+ k: str(v).encode("utf-8") for k, v in photo2.__dict__.items()
+ }
+
+
+def test_from_to_date(photosdb):
+ import datetime as dt
+ import os
+ import time
+
+ os.environ["TZ"] = "US/Pacific"
+ time.tzset()
+
+ photos = photosdb.photos(from_date=dt.datetime(2018, 10, 28))
+ assert len(photos) == 7
+
+ photos = photosdb.photos(to_date=dt.datetime(2018, 10, 28))
+ assert len(photos) == 7
+
+ photos = photosdb.photos(
+ from_date=dt.datetime(2018, 9, 28), to_date=dt.datetime(2018, 9, 29)
+ )
+ assert len(photos) == 4
+
+
+def test_date_invalid():
+ """Test date is invalid"""
+ # doesn't run correctly with the module-level fixture
+ from datetime import datetime, timedelta, timezone
+
+ import osxphotos
+
+ # UUID_DICT["date_invalid"] has an invalid date that's
+ # been manually adjusted in the database
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ photos = photosdb.photos(uuid=[UUID_DICT["date_invalid"]])
+ assert len(photos) == 1
+ p = photos[0]
+ delta = timedelta(seconds=p.tzoffset)
+ tz = timezone(delta)
+ assert p.date == datetime(1970, 1, 1).astimezone(tz=tz)
+
+
+def test_date_modified_invalid(photosdb):
+ """Test date modified is invalid"""
+ from datetime import datetime, timedelta, timezone
+
+ # UUID_DICT["date_invalid"] has an invalid modified date that's
+ # been manually adjusted in the database
+ photos = photosdb.photos(uuid=[UUID_DICT["date_invalid"]])
+ assert len(photos) == 1
+ p = photos[0]
+ assert p.date_modified is None
+
+
+def test_uti(photosdb):
+ """test uti"""
+
+ for uuid, uti in UTI_DICT.items():
+ photo = photosdb.get_photo(uuid)
+ assert photo.uti == uti
+ assert photo.uti_original == UTI_ORIGINAL_DICT[uuid]
+
+
+def test_raw(photosdb):
+ """Test various raw properties"""
+
+ for uuid, rawinfo in RAW_DICT.items():
+ photo = photosdb.get_photo(uuid)
+ assert photo.original_filename == rawinfo.original_filename
+ assert photo.has_raw == rawinfo.has_raw
+ assert photo.israw == rawinfo.israw
+ assert photo.uti == rawinfo.uti
+ assert photo.uti_original == rawinfo.uti_original
+ assert photo.uti_raw == rawinfo.uti_raw
+
+
+def test_is_reference(photosdb):
+ """test isreference"""
+
+ photo = photosdb.get_photo(UUID_IS_REFERENCE)
+ assert photo.isreference
+ photo = photosdb.get_photo(UUID_NOT_REFERENCE)
+ assert not photo.isreference
+
+
+def test_adjustments(photosdb):
+ """test adjustments/AdjustmentsInfo"""
+ from osxphotos.adjustmentsinfo import AdjustmentsInfo
+
+ photo = photosdb.get_photo(UUID_DICT["adjustments_info"])
+ adjustments = photo.adjustments
+ assert isinstance(adjustments, AdjustmentsInfo)
+ assert adjustments.asdict() == {
+ "data": b"mW\xdb\x92\xa3:\xb2\xfd\x17\xbfVG\x97\xc0`CG\xcc\x03 \x89\x9b\xc1 n\xc6S\xf3\x80\x01s5`\x83\x0b\xec\x1d\xfb\xdf\x8f\\\xdd}vO\xc4\xf0\x862\xb5r)%e.\xfd\xb5\xfa\xccoc\xd5wzw\xeeW?\xfeZ\x9d\xeeU\x9b\xd9\xf7\xcb)\xbf\xad~\xacX \xf1k\x81KW\xdfV\xc90\x84?]\xe9\xf8\x9a\x01\xdf\x99\xef\x0c\x03\xa8aL\xcb\xfc\x92\x90\xfc\xb3\xfaid\xbe\xad\x866\x99\xce\xfd\xedB=\xf7\xdea\xf5\xf7\xb7\xd5%\x9f\x92,\x99\x92W\x88K2N\xf9-\xaa\xb2\xa9\\\xfdX\x03\x96\xa3\x13\xaa!o\xab.\xff'\x02\x9d\xf7\x9d\xa3\xe8?\x9d\xb5\xbc*\xcai\xf5\x83\x03k\xf6\xdb\xaa\xbfUy7%\xd3\xcfp\x14\xfd\x15+\x99\xfe\x7f2e\x90d\xf5}\x9c.\xd4m\\\xfd\xf8\xf7_\xff\xc3#\xef\x92S\x9bg\xab\x1f\xd3\xed\x9e\xd3U\xe4\xd3Tu\xc5\xf8\"\xd8\x9f\xcf\xf4w\xd7\xa7I\xbb\xfb\x19\x17|\xfb5\xa8\xd1\xff\xf656~\rV\xddp\x9f~\xfb|g\x84\r\x107<\xe08\xb0\x05<\xc3\n\xbfg\xa1e\xe8\xc7\xfb-\xff\x03Hn\x93\xb4q\xfa\xaa\xfb\x13]\xbe\xbd\xa0\xba|\xfc\x89>\xbe\xd68NU\xfa\xc5j\x00\xec+\x08\x00[\x81[3\xeb-\xcbs\"`\xc4\r\xd8\xd2\xfc\xf1\xe0\xcb&\n`-\xb2\x0c\xbf\x116\xec\x96\xe3\x01e\x90\xdc\xa7>L\xda\xfb+\xf8wV\xe07\xe0\x8f\x8f&\xf3\xf4'\x11\x8a\xbef\xc4\xed\x86gh\xa6yQ`\x99-\xffm5\xf5]\xd2\x92\xa4+\xf2_A8~\xb3\xd9\xf2\x80\x05\x94\x05\xcbR\x8f\x81\xe5\xbfLk\x9e\x159\x86\xd9n8\x9a\x00A`\xd7\xd4$\n/\x13/\xfe\xf7G\x99}\xe5\xd1J\x06\xba\xdb\x18\x0ff\x06\x86\x93\x176n$\xf1\x07\xc24v$\xdb\x11\xc6\xf1`)\xe6`\xe0\xe2\x14\xc9\x97;f\xe2\xb2V\xfc\xad1\xa1\xaa\x01a\xa9G\x06n\x19G\x0f\xd56J\x98l\x8a\"1I[\x86=\xac[\xf8\xf1\xbe\xe0\x19\xb6\x81\x136Yl\xe0\xd4\t\x894\xa3\xe5\xa8G\xa8\x8c\xd5\xd0F\x91l\x1cP\x18\xc7\x91\xa2\xeaF\xd2\xda\xf1\xf2Y\xe0\xb5T\x9c\x82\xdb\x1cdb\xc8\xb4\xc71d\x99\xe3\x89\x19\x96\x83\x16\x9es\xf9\x02\xa1\xd7\xd8\xe1\xccG\xb8\x8d\x83\x10\xe2\x880\x99\x16\x82\xf2\xe0\xe1\x8c\xe2\xb6\x14\xb7\xf1\xa3\xe6\xa6;\xc9\xfc\xf9\xf1\x1el7\xb0\x1d\x9d\xa3L\xa6\xe0r\x0c\x12\x1c^\xc3O\xee6zg3:/i\xdb\xf2\x1c~\xa0#\x99E\n\x14'\xa1\xdc\xa4\xc8\xe7|\re\x07/,\r\nx\xf4\xda\xd6\x8c\xc0\x94\xfa\x98\xb1\x0eUX\x903\xb2\x95Bl\xed\x8ex\xe7\x90\xf4\xa1:\x84\xcd\xa3\xf8x7A\x90\x92\xb2\x01\x81\xd3\xefu\xd98\x937\xcal\x06\x16\xac\xadD\x93\xc5\xd8\xc3\xbf\x01\x073j\xa6\xd3\x17`\xc3\x17>\x8b\x9d\xb8\x00*\x8c\\\xe6\x13\x92\x8f\xf7P\xb3\xd8B\xc1c\xc8\x19\n\xb3x\x05>I\xfe\\\xea\x1e\x96\xf5 \\\xc8a\x1f\xf5$$\x95\xe9\x99\xb2\x1e7\xbf\x186t\xef\x98\x85\x022\xe7/\xc0\x92\xe6\xca\r\xec\xa856\xb6j\x05\x19\x91\x19[\x94\x0e\x8b\xbc\xefP\xe5\xfa\xa8\xb4\\\xd8\xc4\x07\"\xa7\x01\x0e\x8b\xd0{8g\xc3L\xabc0T_\x04\xc1\x8b \xc5\x0b~\xe1\xb5\xb8\x81Ql\xcb\x05s\x0f\x1d\x8e\xec\x89i I \x88\xe8\x1e\xea\xdc cx!\x8e\x037\\\xec\x90N\x8b@\x99\x1d\xf0\xa5h?\xde\x9b\xf5\xc7\xbb\xf7)\xfe\xc30`\xf2\xdf\x88\xc1\xc1\xb23\x99\x9f\x9ckA7k~\x13\xcdx\xbe\xf6\xb8\x05Qg\x9fF\xcc\xaf\xe91*\xaf\xafc\xd9\xf6QD\xc8\xcd\x98\xe6!\x82og\xef.m\x0eh\xe8\xber\x08~\xe5\x90\xc1\xad\xd3\xf5\xdd\xd1\xcb\x02=\xd2\xe3\\\xeeJ\xf5\xd2ge\xf9\xd6k]\\[^t\xd4\xd8&\xfa\x94\xa5\x9d\xf7\xf1n\x9b\x14\xe0\xa46Ex\x93\x13\x93$\xa5\xb5i\x9eG?\x13\xf7\x0c\xfax\xcf\xfd7\xe2\xb2X\xf3\x83\x1d\xe7\x15\xb3P\xc2\xc7L\xf62\x8aP4\x96\xdb\xc5m\xf4\xe7\xf8$>Mm\xa3\xdf\x1dy\xd8\xa0>\xa4K[r\x8cg\x07\xce\xc2\x1e>]\x97\x94;\x8c\xd2\xd9\xbb/\xa6\xa8\r\xee)]\xe6;~\xcc\x8e\xebrg\x18\x01\xef)\xbd%p\x9e\x1d$\x07\x0f\xb8\xc4\x83\xe33{\x17K\x82\xf7\x0c\x91m\xf7\xd7&x,\x18\x03\x17\x16\x14\xafD\xd4O\x1bP$yq9\xd5\x06k\xf5n\x15\xb0\xfa\xd3:%\x85x\x83\xc5\xec\xaa\x05G \xe9m8\x03\x0f{znW\x8d\xb8\x07\xa2\x12\xc0\xc9\xda\xadyk\x86W\x82\x96\xc0K\t\xbe\xe0]\x1a.\xb2\xeb\xaag\xdbi[\xb9\x0e\xa2\xe0v\xf4\x8e\x9d\x1e\r\xe1I\x0e\xa7\xb0\x93\xec\xd4\x05;\xe8YGSA7]\xe9k\xcb\x97\x04\xabf\xd2\x1c\xf3\xbc\xd65\xe7G\xb5u\xad\xa1w`\xb9\x9c\x902;:\x89\xb6\xda\xbe\t\x04\th\xd0M\x9d<\xb4Em\x9fE)n\x17\xd4I{U\x9a5H\xc0\xc5z\xcck\xf3\x19\xdf\xac\xaa\x99-\x08n\xb9\xaaX\xf1a\xfe<\xcb\x1b\xc50\xc3\x8a\x95C\x84'\x89\xcc\xd2\xc7{\x01\x8f\xbd\xad\xb9 \x83\xc5\xe8\xf0\x05{~\x9dj\x85\xf0\x8c1\xe8N63kH$[\xf5F\xc1n\\\xe0\xd6\xfa\xc7\xfb\xae\x1e\xef{%\x13\x0ew\xbb.\x9aHR\xf5\xb9\xe8\xaa\xe7Ek\xf5\xe3Pv\x9e\x7f\xbe\xf6\x1f\xef\x14Z\x84Rc\x99d\xd7\x99g\xcb\x16f\x96\xa0.\xf62Y\xa79\x02\x9e.\xcd.\xdd\xe3\xad\xe7O\xe6\x1e\x05O\x87U\xa5\xa3.\xf1\xb5\x9a(!geUe\xbc\x99b+\xdf\\q\xd2\x02\xeb\xe8\x93\xa7\x00\xdf\x90\x8dd\xd7\xc3\xfa|\xb8\xca\xbb\x1b\xdc\xb8\x81J\x9aBS\xac\xcc\x90\xe7\x0b]\xbbm>Zd\x06\xc5@\x14K\x80\x1c\xbe\x94\xf8\xba?\x8a\xa4\xae\xe8}U\x8f\xc1,\xe2\xce\x81\x89\xe0^\xe5\xda\xde[\x85\xbb\x90\xb9Sk+\x8b\xc9|\xa6X\x81\xeaI7\xa3\x96\xae\xb6\xd70\x06\xb4\xf2]\x01LL\xe6\xd6|\x8c\x0f\xf8\x10\x1c\\\x08v\xd0\xb7\x97J\xbd[\xbbA\xa8:E\xc9\x0c\xd3:\xb62\x1a\x91,xN\xb9\xae5/mvU\xf0i@\xbd\xde=\xd0\xd3|\xceO\x02ml\x054\x9c,=Q\xa9\x1fT2_\x0c\x90z\x88 \x11\xc1\xd4\xab\x19\xd5I\x8c0j\x96j\xaf\xf5s\xde/\xc5@\xf3d\xc3\x02\\\xe0C\xafm\x8f\xdbZ>X\x1cOx\xd3\xfd\xa0t\xfda\xef\x84\x12\xe7\xcd\x8c\x8c\\p\xd0\x15\xebnx\xdc\x90\x94\xa1m\xb43\x97\x11\xf1b\xe2\xb49>lF=\x02\xcf\xa9\xccReb\x0b\xcd\xc2\x11\xc9Vjx\xfaE\xf3\xfb\xd2\xa9\xac\x8fw\x0b\n\xa3\xa3\x8c`\xe7\x17\xb5\xed\xce'e\x89w\x98\x14\x17\xcd+\xc6\xfd\xe3\x99\x19\x96\x94'\xca\xd6\xd1\xb9\xa0\xbbz\xc4\xd1\xd6\\P\xca\xb6\x02\xd9`o\xcc\xe2\x15-c\xacW\xd6E\xaf\x82\xd2\xf0(\x91\xe7\xfcpa\x08)\xe1i\xaf\xe8\x9f\xb0L-\x9d\xb8>\x94\xa5\xce\xf1\rn\xc75\xf5\xe7\xe3\xf8i\xd9\xe3\xd4Vwl\\\xc6\xe2Z\x0e\x9f\xa8.N\xed\xd2\x16F\x07\x86\xbaB\x83^\xa5\xb5\xa9\x047c=\x8a~\xcd\xd8v\x10<\xddjba\xab{\xf4B\xda\xf8 Y\xca,d\x18\x8c\xe7\xa6Nh\x8f\xd0\x8a\xea\xe2\x85\xc5\xee\x96\x1e\x08\xd9\xf8\xe8V8\xe92\xad\xb1:\x97u\xc9\xae\xb19^\xac*\x9bi\xd9\x08\xbaY\xb8\xa3\x9d\xe4\xd2f\xb3W\xd3\xd1\x96\x17\n\xda\xa0 \x91\xb8\x806\xba\xd0Y\xc4Y3\xd1\x05\xc8y\x86\x19\xe9\x14\xca\xed\xa0^\xa4\xa4&r\xad\x19M\x98.\x0fO\xef\x80_\x95\xd9\x03\xb5\x16\xd9\xc9\xbeg\xec\xd3x\xeb\n\x11r{2\x16@\xc3r\xb0w\x88~\xc4\\p,\xe4DR\xc3\xb9X<\x07\xe2\xa4\x89J%j\xf11\x8e\xb22l \xa7\xdb\x07W\xac\xe0e\xca\xd63O[fo\x87\xee\xc7;\xd9\x89)-o'\x1d\xe3\xc6Q(0=\xe2\x81*\x1fe5\xe4\xce\xe3R\xdeq\x9aNu\x05cM\x9f\x93\xaa\xcc\x11\xe2]\xf7D\xc2\x16\xadu/p\x19\x0f\xe1\xc2I$6\x85\x9cD\x1e\x12\xdf\xe0~\x1e\xba\xf2\xb1\xd3TP\x9e\n1\x86Ea+.p\xd4\xb0/\x0bo\xbf\xc5