diff --git a/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj b/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj index 2145224..931c150 100644 --- a/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj +++ b/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj @@ -8,992 +8,1009 @@ /* Begin PBXBuildFile section */ 002685407B9C4D548571DA24AFD6E8F1 /* NSString+Paragraphs.m in Sources */ = {isa = PBXBuildFile; fileRef = B4A7F7402FAEE3A277A8716DDA115C95 /* NSString+Paragraphs.m */; }; - 00CB711CB9D36AC4F7C74C396C5EF095 /* wxread-dark.css in Resources */ = {isa = PBXBuildFile; fileRef = EB7C7A670C851744ACBCA45DA70795C8 /* wxread-dark.css */; }; + 00AD5F1F9E2E94C1D359676457840515 /* Entry+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76C1831768CE55090EADD902B29B6CD1 /* Entry+Serialization.swift */; }; 014449AE560FFF3C628FAE639D043004 /* DTAnchorHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 148B993AB228816D19FCB7CD13874C83 /* DTAnchorHTMLElement.m */; }; - 018DF9B10C77B0F9AB03693CB8E9FA7E /* RDEPUBCoreTextPageFrameFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09336B106D598DCD38F6B79AEA629066 /* RDEPUBCoreTextPageFrameFactory.swift */; }; - 01AC9A3EA5F344CDC16ACBC3A3E45492 /* NSArray+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = C7E09A6C247D465CA0EF71B939B2A040 /* NSArray+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 026BE0E38192F8E2F8A3119AB7E35952 /* NSString+DTPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = B76B1E836C34CB755AEE1FBF7DC26BDD /* NSString+DTPaths.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 02ABB9C568A16F8795CFEC2D01BBF067 /* RDEPUBWebContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B37A3A1274B29F6D04BFB081D22CB96 /* RDEPUBWebContentView.swift */; }; + 02DD8E465CE2BF1FA3954E939C26404C /* RDEPUBSemanticMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A9A32F96EBBCFD15780B8A62E38996 /* RDEPUBSemanticMarkerInjector.swift */; }; 03D90C831397E8636A33CE557024A136 /* NSMutableAttributedString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 044BEA679671E16EA9BA9AD627750742 /* NSMutableAttributedString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 050EA0297A5EC0E765F40F075245BDA7 /* epub-fixed-layout.html in Resources */ = {isa = PBXBuildFile; fileRef = C229DC7F5A2BB8C2A3C586FF6CF41D47 /* epub-fixed-layout.html */; }; - 054178AB372DF8BBB80B17504A4CFF8F /* RDEPUBPageCountCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F525CC259CDC719A02AC344AFC95E1F /* RDEPUBPageCountCache.swift */; }; - 054D18D9951E8B07F33EF4D35BAE26F6 /* RDEPUBChapterLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA788B1C32640B2F2761D3C04446BB67 /* RDEPUBChapterLocation.swift */; }; + 0415046466A4505448FA097120A58F3D /* FileManager+ZIPDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F49FC82A04EE9B3B49CBA6CB88ACBC67 /* FileManager+ZIPDeprecated.swift */; }; + 04C2B9E1EA2066F182077D33A4A9F64C /* RDEPUBFontFallbackResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1898AE1C59D386BC2A565897777C7C9 /* RDEPUBFontFallbackResolver.swift */; }; + 05050DE075D5D9ACE72CE730BCEC53E7 /* RDEPUBReaderController+ContentDelegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 785EFB63370FAE06B2485B755B42E2B5 /* RDEPUBReaderController+ContentDelegates.swift */; }; 0561DF6793C8516F469D9813F5CE3211 /* DTCoreTextLayouter.m in Sources */ = {isa = PBXBuildFile; fileRef = D80A72D8B7941D30246858D840EE1EF5 /* DTCoreTextLayouter.m */; }; - 067FB980EC11563DABA6377BA323F041 /* RDEPUBReaderController+TableOfContents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17A6573887F6DA388F2EA0B96400C892 /* RDEPUBReaderController+TableOfContents.swift */; }; - 06D28593D963E13161146C674594D3C1 /* NSURL+DTAppLinks.h in Headers */ = {isa = PBXBuildFile; fileRef = A3F7613E99CAA29881A015D0ED969B86 /* NSURL+DTAppLinks.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 07F8549C519E0712D1373654C4522D3B /* RDEPUBCFIUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6CA207039A89EF3323F6FFEA38A1C3F /* RDEPUBCFIUtilities.swift */; }; - 087551FB17CA91E8126B443D1BB2DB57 /* RDEPUBSelectionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0389417C712B5E7FA8F9FBB870FA2227 /* RDEPUBSelectionState.swift */; }; - 0942EF9F626D8448F7B4BEF9CEB112F1 /* RDEPUBAnnotationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 685FE9B1A888D8D05E9AC049787CBC8D /* RDEPUBAnnotationModels.swift */; }; - 09C14984907EF0E18430483195615CEF /* RDEPUBWebView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E6795B0D648B27CC7EB030E7550566 /* RDEPUBWebView+Configuration.swift */; }; - 0A0C40F35AA05AB2FA05621AD6620164 /* RDEPUBPageLayoutSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B02D527081372B04CC8FECF5940E6DC /* RDEPUBPageLayoutSnapshot.swift */; }; - 0A6A2B85150D31B0DA6C1154EF75544C /* NSString+DTPaths.m in Sources */ = {isa = PBXBuildFile; fileRef = D30DBDF1EDB20CF83690AC6619AA0C48 /* NSString+DTPaths.m */; }; + 0772C0CB588AA1183A682D00DEA0BDEF /* RDEPUBReaderAnnotationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BCE11DBF7C58BA594172E1D980C1626 /* RDEPUBReaderAnnotationCoordinator.swift */; }; + 07E74EEFF36512B9F4A805C13FBCD65C /* RDEPUBParser+Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CDD9C89E7009567107E9C16B4BE05C6 /* RDEPUBParser+Package.swift */; }; + 096DE56B035B002868AAE20C1D404B15 /* RDEPUBBackgroundTrace.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B0931BA1423E80768E11D26C280D4AF /* RDEPUBBackgroundTrace.swift */; }; + 09819232AC1E42F72943F2B9EBC3EFDB /* DTSmartPagingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = A20F6F0463A998DC3BD53DE9E63B63DE /* DTSmartPagingScrollView.m */; }; + 09BFA25E757EB9FAED6BE9D99EB1CEBD /* wxread-replace.css in Resources */ = {isa = PBXBuildFile; fileRef = 546293C95A2E9D6898E6E35EBAD67E3C /* wxread-replace.css */; }; + 0A7395089A78DF9BE4CDA924B947A584 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9726056B845AD5027986E5391D52D33D /* RDEPUBReaderController+AttachmentTooltip.swift */; }; 0AAA5BB1DBF584102B15CF8738F1815E /* NSScanner+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 057DBFBFC99448A0B77A3C0DBB13B4A9 /* NSScanner+HTML.m */; }; 0ABC4D62588EABAA636441FD9A82C940 /* CTLineUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6CE93FAA68605C6B90FF844A98E440 /* CTLineUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0B6FA1F22150D7F8B1865F41FF70C922 /* DTImage+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = E3CAAC46883B74B071843E5D38B5BF85 /* DTImage+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B94DCFED4A20BC2BC258B0A7AD84EE7 /* RDEPUBResourceURLSchemeHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B5686B2CD1ADB2443ECF94B15903873 /* RDEPUBResourceURLSchemeHandler.swift */; }; - 0CAD6415F436E49FB2DEB2CBEC0A3ED8 /* RDEPUBReaderDependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FB158582A185027BF7C5254A69DA213 /* RDEPUBReaderDependencies.swift */; }; - 0CEE2FF08EBBEDB2F8753C1C754DC5B1 /* RDEPUBCFIRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842B11843F82FBEA1D725543ACAB02CE /* RDEPUBCFIRange.swift */; }; - 0D90E5A76994C8CD2C68A5728CD7A1CA /* RDEPUBSelectionOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C64A40D0DAA97EF0A1E98A05DF28CE4 /* RDEPUBSelectionOverlayView.swift */; }; - 0E1CE5455B59D5A5B2E2A05A09CA06B5 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3B0AAC7948C4A103B284B0F3DCC1262 /* RDEPUBBuildDiagnosticsReporter.swift */; }; - 0E7CC48F667B0921973CCE39B5C99726 /* RDEPUBTextSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48121E38890812B2122D7CD791CB9F52 /* RDEPUBTextSelectionController.swift */; }; - 0EE7F18FF656A4EC05B960233F005AD5 /* DTCoreGraphicsUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C1A7359A45BB880877A672C57F522FE /* DTCoreGraphicsUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0B7F8836E65428B8F1D3D72C40D25382 /* RDEPUBFixedLayoutTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 703ED5D8DDE3AEF39CCBA1F75ED53574 /* RDEPUBFixedLayoutTemplate.swift */; }; + 0C2FE44A6F901C5E9E1494DC1CD6F2B8 /* RDReaderView+PageCurl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D66B85E6DC6F2833A9D9561D6235DCA /* RDReaderView+PageCurl.swift */; }; + 0CAF515592F47FAB5A21B4D9E44A577A /* RDEPUBMetadataParseCancellationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B91825A1F365A62C53FC349F17C7038 /* RDEPUBMetadataParseCancellationController.swift */; }; + 0CD4054BDD450C9D1D74E4E1DACD5461 /* RDEPUBCFIRecoveryEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D52809A0CFBA9664082FEDE2EBF420 /* RDEPUBCFIRecoveryEngine.swift */; }; + 0D3D1B4ACC6218895C3C62156C7A0913 /* RDEPUBTextPaginationInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F3DBD229B4D724EEC81A05AEF68C96B /* RDEPUBTextPaginationInterfaces.swift */; }; + 0DB4BC648855B5320E45859AE469FFDA /* Archive+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = D18519BCA8FAA9B01A704A0F0B9FFC78 /* Archive+ZIP64.swift */; }; + 0E0447CF04F1414B216B6F18B5AA2290 /* RDEPUBReaderSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94E4C09CA9FBF73F01D7DA481E085E0B /* RDEPUBReaderSettingsViewController.swift */; }; 0FCBC8C64D8862F2A0E8794EDADDECBD /* UIFont+DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 398DC798680E2CA64D46B9E19B380356 /* UIFont+DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; 100BFFBD24F234C095EDB001B8088DB1 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4476B58B93EE7476A4762FE0E26E8178 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.m */; }; + 106C982FD5D5C71CA843649664127C78 /* Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3E162E0261A5B0850158D3403191E62 /* Archive.swift */; }; 109458F9D48FD4F381F0E40E2DB3D91C /* DTLazyImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D5DD4142DF33E1BE0B5A057101E851C5 /* DTLazyImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1122A47ACC8E270202080A596BF6C153 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; + 10C5CE4C315EC9E77373B48B383E3372 /* RDEPUBCFIResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = F44654531A4D3A5E63F117378BDBA15E /* RDEPUBCFIResolver.swift */; }; 11AB1902A68385851FB81E870991F9A0 /* DTImageTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 57642B518C047A428FE1266A09E0513F /* DTImageTextAttachment.m */; }; - 11D18376068FF7361548016615E5D26A /* RDEPUBPageResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81514BCB47BC71C39284064C943C0DC3 /* RDEPUBPageResolver.swift */; }; + 11E5CACB61560ACC063C64C9801CB351 /* RDEPUBMemoryProbe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CEB851D42C524A554A2D26249EB6440 /* RDEPUBMemoryProbe.swift */; }; + 12374B35A5274F9053D51A1C41A246BA /* RDEPUBStyleSheetBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA427D1A69C32689C6C30A3C1CCE31A9 /* RDEPUBStyleSheetBuilder.swift */; }; 12B4A35B8E40C112E18A7C5511F023E9 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4472755F83C121DE5E1E505D145F6DBE /* CoreText.framework */; }; + 12C8BE5FE485F623F695BACC11DDF5B1 /* DTTiledLayerWithoutFade.m in Sources */ = {isa = PBXBuildFile; fileRef = 23006DBAC610AEB0A4B3EAFEA4FB0567 /* DTTiledLayerWithoutFade.m */; }; + 12E4DE7F5308A77C2548C7FC376065A0 /* NSString+DTFormatNumbers.h in Headers */ = {isa = PBXBuildFile; fileRef = A3BD3ED7913130D32E14D5572CBCC921 /* NSString+DTFormatNumbers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 12FD06AD8AA51C9E615E9094621D68CC /* NSURL+DTUnshorten.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A6A858B976D032A3C61540AFF19DEE4 /* NSURL+DTUnshorten.m */; }; 130C3A85D9F9F445222C2E31EC245B0A /* NSScanner+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = DD0A5FF70CDBE87597264762EC20EF43 /* NSScanner+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1415381C0EC999E8E0990C293F69164D /* NSMutableArray+DTMoving.h in Headers */ = {isa = PBXBuildFile; fileRef = 3046397381A83C2F6BAF344B86AD176E /* NSMutableArray+DTMoving.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14AAB86A7399B98D39121B49EEB90065 /* RDEPUBParser+Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 482C32ED3E6D23BBCED7BBE64E370A91 /* RDEPUBParser+Archive.swift */; }; + 1339E60ACC3CAA55D2A14496CA2C7F24 /* epub-bridge.js in Resources */ = {isa = PBXBuildFile; fileRef = 1AA0F27424B80E5D07E45D8DA86C9C26 /* epub-bridge.js */; }; + 142A627BB777C6927910C13A5AE04C22 /* RDEPUBPageBreakPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 875B4A5662D9C4B043C7C03DABF75E4B /* RDEPUBPageBreakPolicy.swift */; }; + 142F2CE735FD185C4CB812AFC1CC25A1 /* RDEPUBWebView+JavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAA4CD4C6398D41D3E73B895B41A6C2B /* RDEPUBWebView+JavaScriptBridge.swift */; }; 14BDD9FB7A7AC5C8ABFF8D24C381F3DA /* NSAttributedString+DTCoreText.m in Sources */ = {isa = PBXBuildFile; fileRef = 978449466D53EA6F5D40FCF0F353DDCA /* NSAttributedString+DTCoreText.m */; }; + 14CDD234BFB11FFA243EAB16C1BC620F /* RDEPUBReaderChapterListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 413360D0D62A7D3B12EAB6FD542C8B29 /* RDEPUBReaderChapterListController.swift */; }; + 14DEAFC2EAB11EDC3546281C050C226E /* RDEPUBBackgroundCoverageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B60943E11B87C06EB15D70467A9DAF42 /* RDEPUBBackgroundCoverageStore.swift */; }; 15A7ED15DA03DD3B9F26A017D270D1C2 /* DTCSSListStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C24F592C4F38F15DC8C46BE0442B59C /* DTCSSListStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 15F9DC2A3DBAC3293A93997078E721DE /* Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3E162E0261A5B0850158D3403191E62 /* Archive.swift */; }; - 182B6A0E130F7AF8D1C8FC02BB985B28 /* RDEPUBReaderServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9D06448CCB730D9D9ACF44F513FCA87 /* RDEPUBReaderServices.swift */; }; + 18FD31EA041A589A98B214078C77DE11 /* NSURL+DTComparing.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F1F7BFB63DE15D627EB8F64829B8AAD /* NSURL+DTComparing.h */; settings = {ATTRIBUTES = (Public, ); }; }; 191824B2B1E1B0A7DD3B6298100B4B8A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE4821B98DDE6C71411EC139EC6D2762 /* CoreGraphics.framework */; }; - 1963E9B2831753783ECAC37942D73D6A /* RDEPUBReaderLoadCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3656D2A32DB42AE8DD66E0079651906D /* RDEPUBReaderLoadCoordinator.swift */; }; 19649ED312D92A6F5D2D6AF4E540CE75 /* DTHorizontalRuleHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 89268DC8F1FBDE4F3167647B6A4F9216 /* DTHorizontalRuleHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1992A77ADA2B85372C51DE67DE656089 /* DTExtendedFileAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 56E8939081946D090FD77A04F879754C /* DTExtendedFileAttributes.m */; }; - 1B2004F66EE1D24FEDEB4CF2B82E1E6B /* RDEPUBFixedLayoutTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2159ABBE19F1408CF16A6EF0271404D /* RDEPUBFixedLayoutTemplate.swift */; }; - 1B671F75188F742245480EC8EB6DE72D /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = FECC02C082DBCB6126A7ECBA72C258B3 /* RDEPUBTextBuildPipelineInterfaces.swift */; }; - 1B74EC1BBEE68B9E2F86EC4F589E65EB /* NSMutableArray+DTMoving.m in Sources */ = {isa = PBXBuildFile; fileRef = ADD5B2F66FCCFB58393314E7B9FE4384 /* NSMutableArray+DTMoving.m */; }; - 1C25FD16E4A629E3F76B8F67BFAB5474 /* wxread-replace-latin.css in Resources */ = {isa = PBXBuildFile; fileRef = 4F5A145710C3E212B771C4E38BED9926 /* wxread-replace-latin.css */; }; - 1D4601F156BBC481DF8CBEA127933339 /* DTFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 23588B63FC4026A371F5C683744A664C /* DTFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 19B2498971C455730EC1B664350A780A /* RDEPUBNoteDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA9CF4A5EFC9FEEA82D723074F256E82 /* RDEPUBNoteDetector.swift */; }; + 1C68F8BB0A8D65266501F52F000F3276 /* Data+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C3615C94C147AEA92F022E119810E9F /* Data+Serialization.swift */; }; + 1C76A33A29D56E6009775DD05B32BD2B /* DTWeakSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = E4C5EB3F8F005C65005C101A9DBE488A /* DTWeakSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1D460603DCA4A4E5ECFE8FF1F1CACC10 /* DTColorFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4544C4444DCA90E700611D1281969883 /* DTColorFunctions.m */; }; - 1F485583C73D3833F600377BD756AB48 /* RDEPUBCFI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976DBE312D138856488A4DEF88606BC9 /* RDEPUBCFI.swift */; }; - 1FA1F998447124DD53EAEA05DCFAFF1C /* RDEPUBReaderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC30694BAEEC8DB2869AF8D85E0C5173 /* RDEPUBReaderConfiguration.swift */; }; - 2021D5E8FEE83065E27E6D0003A84F34 /* RDEPUBReaderPaginationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F9718E0B39AD8A3470522498E28F30F /* RDEPUBReaderPaginationCoordinator.swift */; }; - 20495C7DE93F1281E83BA8970C67C681 /* RDEPUBWebView+JavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 321FA16FF2FAD7985CCAC14EF5A221D4 /* RDEPUBWebView+JavaScriptBridge.swift */; }; - 218F054EC487B66920A6873618AE3482 /* RDReaderView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C3DEA097D20AC964CFB673C39B4A8AF /* RDReaderView-dummy.m */; }; - 22000F5527C48C68944C4F1758E2A069 /* RDEPUBTextAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F81C81E7CF8B0AE4646712FC2ADD8B0 /* RDEPUBTextAnchor.swift */; }; + 1E8126EDD960AD9D2F7A7C3FC5073749 /* RDEPUBCFIPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35AAB84F53D47E997BE5822C68A820E1 /* RDEPUBCFIPath.swift */; }; + 1F5436D85D7121B1B9383A1EE70EE9B6 /* RDEPUBCFIDOMPathBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABEB2DB799322EF9048487013D0E7DBC /* RDEPUBCFIDOMPathBuilder.swift */; }; + 1FD2290EC3449416DEBA4BDD5D7D7E22 /* DTLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 207CC0EEB74CECEB43A870FF80560E0F /* DTLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 20BDDBE5CE1A90B6CA1AC55C037357E0 /* DTHTMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 71BBE6384315D7F00F5ECFFF67A85AF9 /* DTHTMLParser.m */; }; + 218A26D957029BC85CE43998835273D0 /* RDEPUBCFIRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65D988AEE2A2A568F2F08472880C56D0 /* RDEPUBCFIRange.swift */; }; + 21FF2314438A1D9C326CFB7090FEDEFD /* Archive+Writing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0218A7B243387C79E099CA947CF243D /* Archive+Writing.swift */; }; 2203356EEA94A9172BC7902923E43CBE /* DTCoreTextFontCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 25DDD76CA572F0C7AB5A8178CF80169D /* DTCoreTextFontCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 23CD207519C6B07EC5537C7D524A15E0 /* Data+CompressionDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B46EF6F055A721AF370D705D026E9E /* Data+CompressionDeprecated.swift */; }; - 23EF24FC2D01FCAE8C72AB5C1BEBC719 /* NSString+DTUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C80941DE172AF972D2247659684D93A /* NSString+DTUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 23F5519DAB7AF448277328F67DF8427B /* RDEPUBFragmentMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587C2E270D5414FF4E3786D14BD36694 /* RDEPUBFragmentMarkerInjector.swift */; }; + 22EEC92067603F597E6A32D1C77D77A0 /* NSDictionary+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = 05838D65DEC339C51AADB17346B7E287 /* NSDictionary+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2317574A8F30CCDC88503F5F3A6BAC20 /* RDEPUBReaderSearchCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16735EDC0457A01293AE4660C1097B43 /* RDEPUBReaderSearchCoordinator.swift */; }; + 235AA99103BBEA2892393E721374924D /* RDEPUBBuildDiagnosticsReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74254B4DE3AD0907F43AB96CEED7408A /* RDEPUBBuildDiagnosticsReporter.swift */; }; + 237DE485DDB0995A62BF94834229A08F /* RDEPUBImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87031C18DFBCC980112E5A9F3BDE49C3 /* RDEPUBImageViewController.swift */; }; 24395BEB3C360D9DA5180BFB955B04A0 /* DTAttributedLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EFAE8DFDDEA1E6047289C86D66381C0 /* DTAttributedLabel.m */; }; 2445709667CB3820E51CD4AA915E6943 /* DTHTMLParserTextNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 558FCD3F7E481B782EBFA127486ED15D /* DTHTMLParserTextNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 246BB0637AF781853BFC822206467634 /* DTFolderMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CC38EFEF171FFEE008C32A6319BE6A /* DTFolderMonitor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2492C7282FC390E00AD92625292B948B /* RDEPUBReaderController+TableOfContents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96352099AD90E6B08B5178B06E6CD7CA /* RDEPUBReaderController+TableOfContents.swift */; }; 24C5B52FD2AA9C49731DC6859ABA7CDE /* NSDictionary+DTCoreText.m in Sources */ = {isa = PBXBuildFile; fileRef = 78887827FF15DE20865DF3A00660993B /* NSDictionary+DTCoreText.m */; }; - 2585104BFDD35B5513F93B5D4933B620 /* RDEPUBParser+TOC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43197856E7D06A21EF9B252FD37456A5 /* RDEPUBParser+TOC.swift */; }; - 2605545B3BDD0B4D316669BD3BC4DA7D /* RDEPUBReaderPersistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 852FB37B13A5612919954D97632ED37F /* RDEPUBReaderPersistence.swift */; }; + 24D662573BF450D8125295A73043FC6D /* DTCustomColoredAccessory.h in Headers */ = {isa = PBXBuildFile; fileRef = BAE45673EE2875DB23FA7BDD61FDE1EF /* DTCustomColoredAccessory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 24FD03B3A8C72A13747F946300D8264F /* RDEPUBWebView+FixedLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC3AB2ABB72B4569AE8FF72F31261641 /* RDEPUBWebView+FixedLayout.swift */; }; + 2500FB14F7728CA537DDBA9CCC7E242D /* RDEPUBChapterRuntimeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EAC09034BA70013D5EB674B407F2C63 /* RDEPUBChapterRuntimeStore.swift */; }; + 25599BEBB0B997F6742E00F7124C40D7 /* RDURLReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 475D625CDF9C41734A2045F2DF2DA3A5 /* RDURLReaderController.swift */; }; + 262F8039CD300F06804EF72ADE21296F /* DTFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FF1C41D226C0957F715EFF3F23893386 /* DTFoundation-dummy.m */; }; 270C5C10028F0BC5A62548326CCB379B /* DTColor+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FAAF640165FC1B4B47C546F80D98B1E /* DTColor+Compatibility.m */; }; - 28BA0924E7AB999F2E9E7676AE0B176C /* RDEPUBChapterTailNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A59C77DC849EDF86936A25873E674F72 /* RDEPUBChapterTailNormalizer.swift */; }; - 28D5C5DB7C2755A625FDD6446B248312 /* RDEPUBPaginator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65572083A10EE0C48AA7F493F923BCC0 /* RDEPUBPaginator.swift */; }; + 28B11155E99C2BC1AEC3A7ACD8E84A19 /* Data+Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22B69C9433F2FBE5CE8409BD4266DFE8 /* Data+Compression.swift */; }; 29D9B32DFFC59A157EDEF005DB92A5AC /* DTCoreTextLayoutLine.m in Sources */ = {isa = PBXBuildFile; fileRef = EB850927957E35DB8CE0F109188C99A9 /* DTCoreTextLayoutLine.m */; }; 2AAF9361720FC2D8FFCA93B5FAE42019 /* NSMutableString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 126E6ACAC7C0427806B58DA8E10BDD78 /* NSMutableString+HTML.m */; }; - 2B8CD3733FF7B0369B0D2C1CE69118DC /* RDEPUBReaderChromeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DF0A5A438D3319310C8FF50C82762F2 /* RDEPUBReaderChromeCoordinator.swift */; }; - 2BB4DB83A4971988729C48F6A97D9F7A /* RDEPUBBookPageMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40E88E1EF1BA62D99833E17E30E87DC5 /* RDEPUBBookPageMap.swift */; }; - 2C20B4A46EB9E16AE6DDFF6B330E3BDA /* FileManager+ZIPDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F49FC82A04EE9B3B49CBA6CB88ACBC67 /* FileManager+ZIPDeprecated.swift */; }; - 2C446ACD6B39988DAE88DB686C41940D /* RDEPUBChapterLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8CA2D533001FF2048A1A42F91A23085 /* RDEPUBChapterLoader.swift */; }; - 2CB00C61073E96CBC0EB977B756E552B /* RDEPUBSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78B43BA14CD70F5448082DE1EE73B034 /* RDEPUBSearchEngine.swift */; }; - 2DF99A7F490B72BAF469D0D13048C36B /* FileManager+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C3F8DF48C6EB28BFD05F5BB49793DDA /* FileManager+ZIP.swift */; }; - 2E179DBB9513ED69284AD20B7E867007 /* RDEPUBCFISerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F54575506F65B0B0E12AABF25A9E6C6F /* RDEPUBCFISerializer.swift */; }; - 2E2E05B3915B792EA3E1012A49C0C4D2 /* NSString+DTUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F3E93C4AC73A09DE1EAE805B0ADE3306 /* NSString+DTUtilities.m */; }; - 2F0A11C3ED02F7E7C3C4982DE5B6CDA3 /* RDEPUBReaderSearchCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED4AFBE65217F4B7692C91828CC9BF53 /* RDEPUBReaderSearchCoordinator.swift */; }; + 2B2FE2C2FA428E1532ACA1C76FB88DA1 /* RDEPUBReaderSearchBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03381B40A2B1AD4E41BCC3BE2C31B626 /* RDEPUBReaderSearchBarView.swift */; }; + 2B697D2B7F73C6C0C963C58B53C8A2B2 /* RDEPUBParser+ReadingProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EDE2594DAA2AA3DEE0DC6FBB8021FB4 /* RDEPUBParser+ReadingProfile.swift */; }; + 2C4FC496451BE7EB9804103EF5B5922F /* RDEPUBChapterSummaryDiskCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335C0A7F69EC3B4D9CB309D814D08733 /* RDEPUBChapterSummaryDiskCache.swift */; }; + 2C6EC9E937F7C828263E9B23CCE6F46D /* RDEPUBCFISerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E9FEEAFFD8790F7439A91AD283F5F3 /* RDEPUBCFISerializer.swift */; }; + 2DB041FA1AAE39A99CD1F0E74124671E /* RDEPUBModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3840A5C7212D01AADA285E04510E8020 /* RDEPUBModels.swift */; }; + 2DC6A079155266B323EC5D93D7E3C1A1 /* RDEPUBReaderContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1300C3BDE866D4C29C0792C55713758D /* RDEPUBReaderContext.swift */; }; + 2DDC7535CA3807D6711EE0FFAB21B6EA /* RDEPUBParser+TOC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60C982580B17056D1FD0076743AF2A20 /* RDEPUBParser+TOC.swift */; }; + 2E65B1871A829C3BD96472B1F86D34DF /* NSURL+DTAppLinks.m in Sources */ = {isa = PBXBuildFile; fileRef = 3453CFB9BDBF6F9D0937EDF5FB2BD07B /* NSURL+DTAppLinks.m */; }; 2FD7360250C2255A80583D4CF518FBFA /* DTTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 4944FE0BE3205F2EC91A6A0550D30B75 /* DTTextAttachment.m */; }; + 30398DEF7CAD19171A536D29ABFE4C66 /* RDReaderView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A3BC0875FF335D55BEBFD59BBC6BF914 /* RDReaderView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 30A2DE91620758A740D295AB29580245 /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B812E0491FA6CD09EEDF1B3B674C86A3 /* RDEPUBAttachmentTooltipOverlayView.swift */; }; 30C01FE491C26314F776AD8B2AF136FA /* NSAttributedStringRunDelegates.m in Sources */ = {isa = PBXBuildFile; fileRef = C69C7A531B5E021499D8FBF1DBE0E3BB /* NSAttributedStringRunDelegates.m */; }; + 30C834B23033B4F571143C336E72510A /* RDEPUBTextLayouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9B958811F45DE07F349083133787061 /* RDEPUBTextLayouter.swift */; }; + 314AF8C74F2F44FC844A3D405A93F87B /* RDEPUBCFICompatibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5E93EDC68FEB87F429AEE9DA66B1F0C /* RDEPUBCFICompatibility.swift */; }; + 31B065D428020BED69F0BB82C3C6CB6B /* RDEPUBWebContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62A03DB083C11C5FDA1D858BC447E3AD /* RDEPUBWebContentView.swift */; }; 31B805C50E0E187E6242B0C878C4D30D /* DTCoreTextMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = C495C74844982FAA1B846A2A89023D12 /* DTCoreTextMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 31DA191069436C02405F0744A4884295 /* RDEPUBTypesettingPipeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92960C67FEC64C10BA567184834F0DCC /* RDEPUBTypesettingPipeline.swift */; }; - 325368D9102D104F1711FA60620F35CD /* DTAnimatedGIF.h in Headers */ = {isa = PBXBuildFile; fileRef = F9D9BEF72311AF9E3239F9B92A9D2842 /* DTAnimatedGIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 33A618B45C6B0CE963A1E86B40FB1BC1 /* RDEPUBCFIPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDCA21771B2D145D7DCFEEDE00FEDADC /* RDEPUBCFIPath.swift */; }; + 32C88ACF7CE5CD2C7C808D6192F449C9 /* RDEPUBChapterCacheKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = A567490FF7183A9FAAD5EEEFCF9E286F /* RDEPUBChapterCacheKey.swift */; }; + 33A0F5C950CB119A009D62682928CC68 /* DTPieProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA617294E6371DD7FAC32B61E0873F2 /* DTPieProgressIndicator.m */; }; + 33D110E213D1F9F69A3EA84F20BADB11 /* RDEPUBImageViewerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6054D59EA001FB57A86513538FA8BB2D /* RDEPUBImageViewerCoordinator.swift */; }; 343E794F88AA503F5139C2244DC1A2B1 /* DTTextAttachmentHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8FDAF9E8370366F7FA8524CB0D80B3 /* DTTextAttachmentHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 344C8C38953CD3ABBB5CEE004D748DBE /* RDEPUBMetadataParseCancellationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04D90198F17A11D36ABBECA5A4F3AD7F /* RDEPUBMetadataParseCancellationController.swift */; }; + 3526C298B08D60279E5378EDA84C1A96 /* DTActivityTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 662D30C1E74D1D5122921475F4024F73 /* DTActivityTitleView.m */; }; + 35A655E299DC1E3EE7B316A18F2CE89D /* Archive+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C9CA544EBF55130625F6C3AD2ABFB4 /* Archive+Deprecated.swift */; }; + 35C487D1A21FC5ADE3DF56FDB6040C0C /* NSURL+DTComparing.m in Sources */ = {isa = PBXBuildFile; fileRef = 467CC59CEC3B3BC7ACDCA776FDCBDC1D /* NSURL+DTComparing.m */; }; 35C5BE59CA712CCDF93D6E7010D93883 /* DTAttributedTextContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = E96C0EEB2032D3CC18F4B37A7C34C84C /* DTAttributedTextContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35CA4D0B6A010869DC047DFF04A5EA9F /* RDEPUBWebView+Reflowable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AAC2FDC24D8604A39BD25111689D06A /* RDEPUBWebView+Reflowable.swift */; }; - 35EC832D6E6042D539F5CE9ACDEAB875 /* RDEPUBReaderContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF0585A8A2B50BF79245DF9365836C8 /* RDEPUBReaderContext.swift */; }; - 369FD67C7489AC14165FDB7096822ECC /* RDEPUBReadingSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 314E39CF7ADE645354AC8873D80957CA /* RDEPUBReadingSession.swift */; }; - 36C829C21BAD67EBA806B013689A8B8A /* RDEPUBNoteModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D0BFFD14B93A2F313B937F14652738C /* RDEPUBNoteModels.swift */; }; + 35CC934AA9BDDA78F314C5F7B6BC6992 /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9074F378D3B707959729C0DB2C2B8AB /* RDEPUBPageMapReconciliationCoordinator.swift */; }; 372E907DF08263D0E1AF904F1FCD66EB /* DTTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = E853AAB3B09E0662567752431CEF1D33 /* DTTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 37658AA02ED801B0F951BB353FD64478 /* RDEPUBBackgroundPriorityPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B4FEEF73E68688CF8770B9A3A368710 /* RDEPUBBackgroundPriorityPolicy.swift */; }; - 385F62303058B932DE2C5A7AA7DE61FB /* DTPieProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA617294E6371DD7FAC32B61E0873F2 /* DTPieProgressIndicator.m */; }; - 38983B574644AE41804DFFBE96A3F6F3 /* RDEPUBPublication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FA2158447C66C1AA074403C4AEF1BD9 /* RDEPUBPublication.swift */; }; + 3797E49E7BA8E8431B3366064E190D1F /* RDEPUBResourceResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44113776B1D8777D7989AA4A28E7AD89 /* RDEPUBResourceResolver.swift */; }; 389F7C8400F9223C019F2D7825CD2369 /* NSCharacterSet+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F242FC1357DD90FA4FD67E1DB90A837 /* NSCharacterSet+HTML.m */; }; - 3A3EEA702B6881089A65D1CB812C28E4 /* UIImage+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1300CC5794E609DB8FBA6FFF90A09408 /* UIImage+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3A5B7B0C74B75094BD4013076811A195 /* NSString+DTFormatNumbers.m in Sources */ = {isa = PBXBuildFile; fileRef = C5005A9E8F746647585CCAB26853E922 /* NSString+DTFormatNumbers.m */; }; - 3A699A68129DB8D0475C3B426B54903D /* RDEPUBReaderController+ExternalLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10E90103F330F58312FAAE9AA82E84B6 /* RDEPUBReaderController+ExternalLinks.swift */; }; - 3C6422E07A5FD5F61EE7C8E52CD81D9E /* RDReaderSpreadResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 008302A48FE881CADADBCB02832B880B /* RDReaderSpreadResolver.swift */; }; - 3CE81197AA8330FD15E1B78CB9C6999F /* UIApplication+DTNetworkActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 730B56BC97DFF2B1E04DD2608055D9E0 /* UIApplication+DTNetworkActivity.m */; }; + 3A653E4DA613026DC1C1C22CF6166DAE /* RDEPUBTextLayoutFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65C7DA34232B39F5D61DAD1C8D64BA55 /* RDEPUBTextLayoutFrame.swift */; }; + 3A79D34DFEF27437F551C74BF83B44CE /* RDReaderView-RDReaderViewAssets in Resources */ = {isa = PBXBuildFile; fileRef = 83410CC9CF2ABE63B90A92F2F988BF65 /* RDReaderView-RDReaderViewAssets */; }; + 3A84B52F3FC5DA28DB261B56F234DEC0 /* RDEPUBPaginationCacheCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5874C0AE2C0D64722A34980EB20368B4 /* RDEPUBPaginationCacheCoordinator.swift */; }; + 3AFA079E082223A8681E645F9995847F /* RDEPUBViewportTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13A624085502DB7A43EAEF62D179E1E /* RDEPUBViewportTypes.swift */; }; + 3BCE613C1A99CE80B7CBCF682022E6CC /* RDEPUBPaginator.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF03BFDA015FD626A53E9FDBC95985A /* RDEPUBPaginator.swift */; }; + 3C4ACDF8DA2D70C2B21014421406B818 /* RDEPUBTextContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92C7A06935B41D87D6CB878FDAD9867 /* RDEPUBTextContentView.swift */; }; + 3D8DF1B2E9B3BC529D727FBBE40D46AF /* DTFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 23588B63FC4026A371F5C683744A664C /* DTFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3DC8F9474FC6A0BB7E81A703CE958966 /* NSAttributedString+DTDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A086525BF509F4581693115438B82B /* NSAttributedString+DTDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3DD75C9E109518EC17CD1E6374CCAAA5 /* RDEPUBPageInteractionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 785AE7F19DADEDA041CFCC67D8B25189 /* RDEPUBPageInteractionController.swift */; }; - 3E1C9314B1519630D8FB24D35EFAF93E /* wxread-replace.css in Resources */ = {isa = PBXBuildFile; fileRef = E15D7179C6CF82530CF5E7264BBA1679 /* wxread-replace.css */; }; - 3E27F00334D3044C4DF18F5F9710EDB8 /* RDEPUBRenderDiagnosticsCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B7FCEEAD833F7C1706659E688B09BEA /* RDEPUBRenderDiagnosticsCollector.swift */; }; - 3E6FCEC88EF3618C15CCFDF85714F46A /* RDEPUBAttachmentNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63A75BF0478FAC7398F5E66A509F639D /* RDEPUBAttachmentNormalizer.swift */; }; - 3E72C32B4BB24CE2F9241C9336D2F026 /* NSString+DTURLEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 131C1D8C96DF2D44A2D4F50C5AEFFF11 /* NSString+DTURLEncoding.m */; }; - 3F0E1A921788D7E9621DD76499F94BE0 /* RDEPUBCSSCompatibilityLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3B770A5B6ED1C21FDA2BD1A8B06EE6 /* RDEPUBCSSCompatibilityLayer.swift */; }; - 3F488BC7AFBBB6998B9E06EB01D3CD8E /* Data+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C3615C94C147AEA92F022E119810E9F /* Data+Serialization.swift */; }; - 3F9BE434EB1085D1F90B83DB60FD00C5 /* RDEPUBImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 174D4D5E30ACC1B5266B20D621E65064 /* RDEPUBImageViewController.swift */; }; - 4141E28F9EF7A7626ECEA23E54C1437E /* RDEPUBNoteDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0430034A7AFBCEC269D7C46517004DF0 /* RDEPUBNoteDetector.swift */; }; - 41EB29FA06E55DE88B687C1F7AB4E97E /* RDEPUBTextContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C58FBF3697A8233DC5C9527094D6C3 /* RDEPUBTextContentView.swift */; }; - 432AAF1617C092D088B43B9AFD409C59 /* RDEPUBTextPaginationSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4609798012DB9C5B85641224CD6081D /* RDEPUBTextPaginationSupport.swift */; }; - 435BB5138F3187F4BF5ECB65AA61A12F /* RDEPUBNavigatorLayoutContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 055B53D0A60DC351390338A48800AE77 /* RDEPUBNavigatorLayoutContext.swift */; }; - 43A7FE65277A8D860FEC743C2E7F2627 /* RDEPUBChapterSummaryDiskCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02B2F8AC62D3CFC4C1A082B868C195F7 /* RDEPUBChapterSummaryDiskCache.swift */; }; - 43D97AE7AF25413C3F239057F503CFA7 /* NSDictionary+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = 05838D65DEC339C51AADB17346B7E287 /* NSDictionary+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 43E89A6EF34E4AB7DA97425018672890 /* RDEPUBParser+Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = F94780553A2ED7BE5E972D634F7F52DE /* RDEPUBParser+Package.swift */; }; - 445971F9045D5C639BCD4C361A5D99C4 /* NSData+DTCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = F63EBF2BF3000B3391F6E693581EA129 /* NSData+DTCrypto.m */; }; - 4495EAFF6740BE5C8D6C2319D2EBFE23 /* NSURL+DTUnshorten.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA6D26B26D2653D6E1C871A482BD6DF /* NSURL+DTUnshorten.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 44AB3853424577251B26484683243528 /* RDEPUBReaderTopToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB4FAD61ECDD132D743C6E8CFF267798 /* RDEPUBReaderTopToolView.swift */; }; + 3DF9D7FC3E7B18DE4FBB4935D747E57A /* NSString+DTUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F3E93C4AC73A09DE1EAE805B0ADE3306 /* NSString+DTUtilities.m */; }; + 3E52F1617157FA5312268F8E8D77E2DF /* Archive+ReadingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5193541848D2D1BF115A45D8A730611C /* Archive+ReadingDeprecated.swift */; }; + 40138948768EA675E92C18C3CB1D887A /* RDEPUBTextPositionConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D64719937C574F41EE90673FE70F681 /* RDEPUBTextPositionConverter.swift */; }; + 41873DE0BEAA19DCBA7C7375228752D8 /* RDEPUBResourceDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F64125A1A7278D5D5DBEE29D0A23289 /* RDEPUBResourceDataProvider.swift */; }; + 4251130F5ADB92686A2D713F37292FEA /* RDEPUBReaderViewportMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E28782DB94C6BAF80766A255BB55167 /* RDEPUBReaderViewportMonitor.swift */; }; + 43EA6AE86DAD9FF8AA228FFD06495F1D /* RDReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B503F169F6A42A61C4A4BBE13459E2B /* RDReaderView.swift */; }; + 44226BF89798AB351A5DD128C6BCBB34 /* DTBlockFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35417EC94F2D58CB80C991F875CE15C2 /* DTBlockFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4440862E007C4B31A86BAAA653FD3F98 /* RDEPUBTextBookCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB350DF3FC839EBAC2D622C87CE4C8AD /* RDEPUBTextBookCache.swift */; }; + 448798E8C31C4EE68A050057A4A7DA5E /* RDEPUBTextBookModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = C559731DDB39006B286108CFA2DDA230 /* RDEPUBTextBookModels.swift */; }; 44B1FBF893C06F314F8C9BD1405897D8 /* DTCoreTextGlyphRun.m in Sources */ = {isa = PBXBuildFile; fileRef = ED049C791713944233EE10C7A111C691 /* DTCoreTextGlyphRun.m */; }; 45133E47CC5FBCF78BFCD38981BA027F /* DTDictationPlaceholderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C12A4A5BB42D0F68DABBD3BDF103BC5 /* DTDictationPlaceholderView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 45EF68C719B84025A3AF68DD970F30B7 /* RDEPUBTextPageDecorationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F32976CA02F8617CB2E2A38D9261257F /* RDEPUBTextPageDecorationView.swift */; }; + 457B13114B2568C713898BEFEE2536A7 /* RDEPUBSelectionLoupeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975BFAACE86185AB89AAD8FABBD64FD5 /* RDEPUBSelectionLoupeView.swift */; }; 45F90B98546FDBA03AB112DFE859A185 /* DTCSSStylesheet.m in Sources */ = {isa = PBXBuildFile; fileRef = B37118B8D16847B0F82E06A5B33898AB /* DTCSSStylesheet.m */; }; - 467AC26DFF3A13AC921D7D396CA9A208 /* RDEPUBTextPaginationInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ED87665B0B64B6E8153C0490203E43B /* RDEPUBTextPaginationInterfaces.swift */; }; + 45FDB99F49312864726B866395136E29 /* String+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = B700F9E8C03D3F9C537B14755D984564 /* String+RDEPUB.swift */; }; 46EF32D586FF590CE2C60C66364B9357 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */; }; - 47D84DA606F549F8FAF0F034F0815BC2 /* RDEPUBHTMLNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3B908A78A947A1A9D66C368CB616DE4 /* RDEPUBHTMLNormalizer.swift */; }; - 4996BB43278BB26CE542E46CD76C5792 /* RDEPUBAttachmentTooltipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76DC91EBC1C9627AD0F09DFE57D04F52 /* RDEPUBAttachmentTooltipView.swift */; }; + 49047276A52DD55FA5A59AD240C6F3CF /* NSString+DTPaths.m in Sources */ = {isa = PBXBuildFile; fileRef = D30DBDF1EDB20CF83690AC6619AA0C48 /* NSString+DTPaths.m */; }; + 49837D2F0809E91BC1D12475C7B10621 /* RDEPUBParser+Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 668E98AD14CBB11B4F60DC21B9B6EC4C /* RDEPUBParser+Archive.swift */; }; 4A13B4E5EA8616A8F09D90BC6EAEEA64 /* CTLineUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FF4A2A7F2C7CFB5DD757BE1A6E59C7B /* CTLineUtils.m */; }; - 4A2BB9012F17EF067B8CFFDF6F6911EA /* RDEPUBCFIGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 104930ADAD326C90EB587485A6BFF755 /* RDEPUBCFIGenerator.swift */; }; - 4A576CC1A123AB214203367996A2E86E /* DTBase64Coding.h in Headers */ = {isa = PBXBuildFile; fileRef = 519087D9CD0F5E440E6D2C3B1AA1DFA2 /* DTBase64Coding.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4AA63EFA61156258C6E631DB9A17741C /* RDEPUBStyleSheetComposer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0796C7E8BEEA96989FCE6698868366D /* RDEPUBStyleSheetComposer.swift */; }; - 4BC9532587020653004B491C4651C1B8 /* RDEPUBNoteResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11D2090101EA891F21834863EE859AE8 /* RDEPUBNoteResolver.swift */; }; - 4C054FC76F0EE7FD9312B9CAA083A9F3 /* NSURL+DTAppLinks.m in Sources */ = {isa = PBXBuildFile; fileRef = 3453CFB9BDBF6F9D0937EDF5FB2BD07B /* NSURL+DTAppLinks.m */; }; - 4C583F9619384A0DD676E98122883CFA /* DTFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FF1C41D226C0957F715EFF3F23893386 /* DTFoundation-dummy.m */; }; - 4D42C6B8EA5DE066F6BAC45AC8679CE6 /* ZIPFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D8AB18960B56A997408E3235751624 /* ZIPFoundation-dummy.m */; }; - 4D452850D8D4B3518722B0399D49C0A4 /* wxread-default.css in Resources */ = {isa = PBXBuildFile; fileRef = 7667AF77CBF47AFAA7D5F190B16A51FF /* wxread-default.css */; }; + 4BEE03FBD65DFE217B496877CC2E7726 /* RDEPUBCFIGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF8D9CFA61CC68C8A808C2B39CE0C7F8 /* RDEPUBCFIGenerator.swift */; }; + 4D005BE2E0DC7CB926776C8406EE7A2A /* RDEPUBWebView+Reflowable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D7CCE90374184A7112FA1618B41674F /* RDEPUBWebView+Reflowable.swift */; }; + 4D23E316A728EAD4C30968F3D0C69E38 /* DTPieProgressIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 173194D38C897D8E38AD8A194E47DB5C /* DTPieProgressIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4D24904AD441B9BDD1194349EF8EFE6B /* RDEPUBReaderController+PublicAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = D368B75B200BA85AA29995C39AA63371 /* RDEPUBReaderController+PublicAPI.swift */; }; 4DA6EC46F8968265B96C6D7B2260C4E5 /* DTTextBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = C508E49F6BF9F50B05918C230B033069 /* DTTextBlock.m */; }; - 4DB471E8F49562EBC4E384451DF8657F /* RDEPUBReaderViewportMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08AF3CF7541223D386A278B79878A8DF /* RDEPUBReaderViewportMonitor.swift */; }; 4E4939F6592B06D2CA764DCACFB47871 /* NSString+Paragraphs.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B8321AB80CFE0B94537AEA63E9A79F5 /* NSString+Paragraphs.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4EFBD030D3E1FAB489E148E673ABEECE /* RDReaderView+ToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83041D1E40ECC246DB5539C712499A09 /* RDReaderView+ToolView.swift */; }; + 4EA1FC83A98FEBFB463619BD56F7723D /* RDEPUBAssetRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EAF25AD2B9FEE0FE357E3A433E3D92C /* RDEPUBAssetRepository.swift */; }; + 4F27DAE4E00D96562BD5EA6F4594E7F6 /* UIColor+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5501A46F5D094488C50D841B21AAE96 /* UIColor+RDEPUB.swift */; }; 4F50C703427747B88405080B221349A1 /* DTLinkButton.h in Headers */ = {isa = PBXBuildFile; fileRef = B12CE4962CDC324FB47FB92D6706D149 /* DTLinkButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5036A0CF9C43310D7BD87E3F27DB1619 /* DTBlockFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D2316F422A6C97F95F9CF43E6F8E94F /* DTBlockFunctions.m */; }; - 50529E178616769202F43EDBAE3E96EC /* DTLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 199E2ECC77BDAC03F644C20040F042D4 /* DTLog.m */; }; 5065D99E1588E8CC60677E74916A5C03 /* DTAttributedTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 814315319ED50AF916C3C8A68C0A47A0 /* DTAttributedTextCell.m */; }; - 518050A548F693F8ADC0CBACB9D1255A /* RDEPUBTextSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24130F5639CFFFA28D8BE6C2BD7A45FE /* RDEPUBTextSearchEngine.swift */; }; + 50887D3ADF90BFE2720EBA9B6FABBAA2 /* NSString+DTURLEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = CEEC8715398E89B42F9B04E290E8E4FE /* NSString+DTURLEncoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; 51A1B5800D23C355B1712E8D1103780C /* DTTextBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = EA2BF1D7535B036E1356E8DF42A04954 /* DTTextBlock.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 51F9E5819381C5AF4A17E26ADC97F144 /* UIImage+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 499E135F1FEB31C26EB0EF793A90086C /* UIImage+DTFoundation.m */; }; - 525377BAC7A4B942FF37A356DE08FC59 /* NSFileWrapper+DTCopying.m in Sources */ = {isa = PBXBuildFile; fileRef = D9A812C3E577A3ADC36BAE3FF7AA4D9C /* NSFileWrapper+DTCopying.m */; }; + 51A9091769AF0695E474F919A031FC2F /* cssInjector.js in Resources */ = {isa = PBXBuildFile; fileRef = 3C9F522B5818D3E8F6E4B10B22A9F3C9 /* cssInjector.js */; }; + 520E924195F1CDF43C04873E7D2BCC3A /* RDEPUBReaderTopToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FA75FCB2F9051FFC2C7EC7FD801B3B6 /* RDEPUBReaderTopToolView.swift */; }; 528DBAC7FCEFC7D6575C1F6CB4399AEA /* DTStylesheetHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A88AA04D7B29A217B432C19AC48AB6B /* DTStylesheetHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 530A22FD0D34843C3A2C842C4012E33C /* RDEPUBCFICompatibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F08538F2728E3B8B81113D12DB74E3A /* RDEPUBCFICompatibility.swift */; }; - 543FE9A0CE7B07A39615125194BEB1ED /* NSURL+DTUnshorten.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A6A858B976D032A3C61540AFF19DEE4 /* NSURL+DTUnshorten.m */; }; - 547BABC3CDBF7072E6A968A37C4F0B35 /* RDEPUBTextLayouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86526ADF32337683AA173B5FC1E6A94C /* RDEPUBTextLayouter.swift */; }; + 5375A13AE599ADE49B10C7934E1004B9 /* RDPlainTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7099DFE326BE72991030E977265222E8 /* RDPlainTextBookBuilder.swift */; }; + 5403D6294D176296755971502638A17F /* RDEPUBReaderState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 745DE64E801F69497754257504DF420A /* RDEPUBReaderState.swift */; }; + 544667F79E06E6ED8FE3CE0312D9A176 /* RDEPUBJavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E031BA35A851ED17BB97887FA36FC83 /* RDEPUBJavaScriptBridge.swift */; }; + 54F9E6B88ADCBEAE21A7FEE193A78133 /* RDEPUBTextPageRenderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CB104ADA375D292371993C1CB6AAB87 /* RDEPUBTextPageRenderView.swift */; }; + 554BFC9D469A47AED35DD43458B1F6B6 /* RDEPUBNavigatorLayoutContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF8F93382E48EBF445FDA4A10C34EE23 /* RDEPUBNavigatorLayoutContext.swift */; }; 5582735073EBB9F5078E6E8AEEFB646A /* DTCoreTextLayoutLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 37327141DC73DE2D5742BE6F989094CE /* DTCoreTextLayoutLine.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56733EB92902794487A13DF03E0026A6 /* RDReaderView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 36606A851BDB5FFF6E9BFFDD7FB72455 /* RDReaderView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56CD331F590F173B69E04D0D0557D74F /* NSURL+DTComparing.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F1F7BFB63DE15D627EB8F64829B8AAD /* NSURL+DTComparing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5795281D4176B3A8D936E9361B69BC97 /* RDEPUBTextLayoutFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E94387C53C6E054A73F8EE89787003D /* RDEPUBTextLayoutFrame.swift */; }; + 55F126D4401C2424C486390F1F5F52EB /* RDEPUBJumpSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 274FAE68017F54F1F939837B96E2826D /* RDEPUBJumpSession.swift */; }; + 56188173A91EF51B7010905C6FCB22D2 /* UIScreen+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C5E29D728B8CD4EABC0B3DD9CD9DE99 /* UIScreen+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 564A0E8D7EA1FD563D30ED1C269CF110 /* RDEPUBSafeArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B257B0E6084F9E4D8FE7DC39AF9B477 /* RDEPUBSafeArea.swift */; }; + 565478E359CF62028188FB8E8EEA2141 /* RDEPUBCFIParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0879F59F605F8E1512ADB3D29CB7912E /* RDEPUBCFIParser.swift */; }; + 56D733115E4EFD396C2A011ECA018C49 /* RDEPUBParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54626FDB51F5A24F21ED95B65F732EA6 /* RDEPUBParser.swift */; }; + 5705832CA2DB13EDF020F92EA8DB8AAF /* RDEPUBCFIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE8EE378CAD4622D735C39CD1B0D4FEB /* RDEPUBCFIError.swift */; }; + 57AC6E68683D2ABB49A4B67E02411534 /* DTExtendedFileAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 56E8939081946D090FD77A04F879754C /* DTExtendedFileAttributes.m */; }; 57D5228C8A85628772D4D78E7FBEAF3C /* DTDictationPlaceholderTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DA0F94C0870C1F0DFADE5E9045E5E6E /* DTDictationPlaceholderTextAttachment.m */; }; - 5874BB57522B4E62B6A8E13CE0D4F6A5 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0834E84632886CDD9911CAB76183F1CE /* QuartzCore.framework */; }; + 584975F754B7B0F6773141E5788D9002 /* DTCoreGraphicsUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C1A7359A45BB880877A672C57F522FE /* DTCoreGraphicsUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 58AAD72FB743C681166B895694907776 /* RDEPUBReaderController+DataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 449E7EAE1D47E608A23C4994EA5F9D4C /* RDEPUBReaderController+DataSource.swift */; }; + 592ED452831CE7352E921389136EA40C /* ZIPFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B41F7D27C2336F89BB0185ACB0B19EA9 /* ZIPFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 597DE4CDF5C674E269F03F6AA0AFFCC1 /* NSAttributedString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 71EE0B4D4D1B3D0A55E903E7E0CA44E7 /* NSAttributedString+HTML.m */; }; - 5B38B217D713ACA39F82D2CB1CC38F6F /* RDEPUBReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 773DBBEB900B259FCF917AD7299A4F34 /* RDEPUBReaderController.swift */; }; - 5BFB0AD88ABADB0492E6507292DC48FB /* RDEPUBRenderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 564F072D0966350F4C3986E01EB3EB2C /* RDEPUBRenderRequest.swift */; }; - 5CC4CD14F333EA81EFE68B04038276E7 /* UIView+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 67DA49B61A249C2B8241D8FE166608C9 /* UIView+DTFoundation.m */; }; + 59E0947D80CB9A9384CF0CF0473828BF /* RDEPUBReaderServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B4326BC8EF36B8BB0A32D8E047921AD /* RDEPUBReaderServices.swift */; }; + 5A1492BFEF8BB10D35DE16AFED75ED1C /* FileManager+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C3F8DF48C6EB28BFD05F5BB49793DDA /* FileManager+ZIP.swift */; }; + 5B649FCED26B4794B5AAAF837A3E9DBC /* wxread-replace-latin.css in Resources */ = {isa = PBXBuildFile; fileRef = C11CE525D0B420BD1FB8E289158F411D /* wxread-replace-latin.css */; }; + 5B8F73FF4F5FAEFD4DAD9A83F974DF47 /* RDEPUBPaginationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86BF6C6A415B964A3F3B66B76DE9F0E /* RDEPUBPaginationModels.swift */; }; + 5CAF56EF5E99F0788C26CB4C52182EDD /* NSString+DTPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = B76B1E836C34CB755AEE1FBF7DC26BDD /* NSString+DTPaths.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5CDE2B7D11CFF775C358BD68412E0F45 /* RDReaderGestureController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C859102801709085785434DA17448C /* RDReaderGestureController.swift */; }; 5D03A5B9DC067875CFEC9D4EA7B059E8 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 671C2429406FDB36B677F4B6EC85B52F /* DTCoreTextLayoutFrameAccessibilityElementGenerator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5D83C7A8F70D08CDDFD2BC1B716CD3EF /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69E5D0AD1240B6B0802F2647F5435EA3 /* RDEPUBPageMapReconciliationCoordinator.swift */; }; + 5D684BD54AB74B7C825E7BCB4834B3BA /* RDEPUBReaderTableOfContentsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2E80F85DC4DFBB0320EB582FCBD933 /* RDEPUBReaderTableOfContentsItem.swift */; }; 5D8D65121E87E419D8D2F23F8AF43673 /* DTColor+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 68D81DF1BB2A14F9C186F75BBA5CF50D /* DTColor+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E0945043D7BD6A600ECCC3A78A26709 /* RDEPUBMemoryProbe.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2648A6B239413226E9A72CCC64D4C79 /* RDEPUBMemoryProbe.swift */; }; - 5E518CA4C1BA58E3B88683FD04722D5D /* RDEPUBReaderHighlightsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAAA5CC57B64078C930CBC9221BAAB30 /* RDEPUBReaderHighlightsViewController.swift */; }; + 5DBD89A108305B3DAE1D415BE9CBFEC2 /* NSData+DTCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 94705DADD1F09F4162F7D733318238F4 /* NSData+DTCrypto.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5E90EBD876ED4E50AB890FB56C4BFA57 /* DTHTMLParserNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D28A3E79D83EA4B807E2D3A5EE086B8B /* DTHTMLParserNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5EFC094F491AADC10F5093D9836796AD /* RDEPUBBookPageMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28F849C864C21B91AE83565813ECE513 /* RDEPUBBookPageMap.swift */; }; + 5FA1ED066966420F71E6B562C351B5DE /* DTBlockFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D2316F422A6C97F95F9CF43E6F8E94F /* DTBlockFunctions.m */; }; 60532A2E06CCFF814933D2FAE6793AE9 /* DTCoreTextLayouter.h in Headers */ = {isa = PBXBuildFile; fileRef = 72225FB74594FCF18DA8064E7DB3947E /* DTCoreTextLayouter.h */; settings = {ATTRIBUTES = (Public, ); }; }; 61BE3607EABD2657BC71AF8ACB1C25D4 /* DTHTMLAttributedStringBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1066A8FE63AD2C818E26DDCE62DF58 /* DTHTMLAttributedStringBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 65D333231372A013B720415537BCFBC9 /* RDEPUBMetadataParseWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2120F356DBB0D7C46B15B379759AC7AE /* RDEPUBMetadataParseWorker.swift */; }; + 63C12C69A76CBC3CABBE2399D103B537 /* RDEPUBChapterWarmupOrchestrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = D246168B830810582866BFF9209DBFD3 /* RDEPUBChapterWarmupOrchestrator.swift */; }; + 6421A89E3EF3FC54EE02EF965D4C0C1B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; + 64273BE1153320103A7990C6742E9A11 /* RDEPUBSearchModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C6F4C9D48FC61243E5E405457EB1AB3 /* RDEPUBSearchModels.swift */; }; 6634D568E49F5610242E1454680E5885 /* NSAttributedString+SmallCaps.h in Headers */ = {isa = PBXBuildFile; fileRef = CACF20969583778CAC1BC92BB96F27FD /* NSAttributedString+SmallCaps.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 669A276238BD2AC9A9CD49A1C4E1359D /* RDReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9B4C7EA8E0601A462DDA753AFA93E66 /* RDReaderView.swift */; }; - 66F01F1C18E107408429B32EFB9B2A8E /* RDEPUBCFIResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC3591CDAEE16F7444AC3B176EFDAFD /* RDEPUBCFIResolver.swift */; }; - 66F23FCBD9ED7712B6CFA0AE5472B6BA /* RDEPUBChapterRuntimeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58C8FD645A1F2CB6BC9C86FE156721F1 /* RDEPUBChapterRuntimeStore.swift */; }; - 678DD680CD8788AB188780999CD2F36C /* DTAnimatedGIF.m in Sources */ = {isa = PBXBuildFile; fileRef = A3DE08AC23FE36A6C3F33A04700FDE57 /* DTAnimatedGIF.m */; }; + 6654C4AD722864C4EE65934D55682253 /* NSArray+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = C7E09A6C247D465CA0EF71B939B2A040 /* NSArray+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67AE2AC8D9B961D45871077774E11FD3 /* DTObjectTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 13597E7190F2C08C5906D7D128E43E99 /* DTObjectTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 67E1C9F9FA4C02105DC5B388B0B6F117 /* NSString+DTURLEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = CEEC8715398E89B42F9B04E290E8E4FE /* NSString+DTURLEncoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 684BDD6CF6B83CB31C2C96E7172241FD /* DTFolderMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CC38EFEF171FFEE008C32A6319BE6A /* DTFolderMonitor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 686B52ECD457E564858A3DEAA7829290 /* RDEPUBReaderToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFAE45005F7BB7D9114003D6F4AA87A /* RDEPUBReaderToolView.swift */; }; 69674FEA70899F07BE6098AAEC849978 /* DTAccessibilityViewProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AC1E707308CDBC9FFC09CECE3117A9A /* DTAccessibilityViewProxy.m */; }; - 6A041B02022A6CE792906DFF30FC65BD /* Entry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D93C2002AAECD29B3ED5A14026D3DFE /* Entry.swift */; }; - 6A233E2D67F005BCE55CBA9297463B2F /* DTCustomColoredAccessory.h in Headers */ = {isa = PBXBuildFile; fileRef = BAE45673EE2875DB23FA7BDD61FDE1EF /* DTCustomColoredAccessory.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6A340ECFF14E109203929637D3A312F9 /* Archive+MemoryFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF51E56E09E095C92CB5B9F21384027 /* Archive+MemoryFile.swift */; }; - 6A4933033D272D4B250818DA22556834 /* RDReaderFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56A9260F17C4825708B83598BEC99365 /* RDReaderFlowLayout.swift */; }; - 6A9D5B2D485B78E12A14EE0A6543D169 /* RDEPUBSemanticMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F4881006C6FAE4DFADBE2ACE4E9A744 /* RDEPUBSemanticMarkerInjector.swift */; }; - 6B4EA5315A9E5381ADB2792C43FEF71C /* RDEPUBReaderUIState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C2EDC5A62B0F36995A69620E5464B3 /* RDEPUBReaderUIState.swift */; }; - 6DF4156314ACD722DD64716D3A4304E1 /* NSString+DTFormatNumbers.h in Headers */ = {isa = PBXBuildFile; fileRef = A3BD3ED7913130D32E14D5572CBCC921 /* NSString+DTFormatNumbers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6974A64C25319EC60A3982F864FC01B2 /* Archive+WritingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2373DCA0FC45287BFC063BEA661B8367 /* Archive+WritingDeprecated.swift */; }; + 69E7F1738637501925C258F4134F96A4 /* RDEPUBReaderDependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9265A063637BD77FC50A93888BBAB11E /* RDEPUBReaderDependencies.swift */; }; + 6B497C1FA166F5DF043609FAC62C7C4B /* RDEPUBTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6F1C6F5695FAAA4BA13936F58275B89 /* RDEPUBTextBookBuilder.swift */; }; + 6BB57211BF6B933B65B0ED6CC81D2337 /* UIColor+RDEPUBHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 165E51AE35F6043DF9684A794A48F348 /* UIColor+RDEPUBHex.swift */; }; + 6C2BF3E69D66D8866F24DB24494E7A3C /* DTFoundationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F80AC45FB1DBF50E0E3AA4F26BFA676 /* DTFoundationConstants.m */; }; 6E3D0FDD78ECC20F4B3697ED21D64224 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C2B218B5EAA5831A036BBF7E1EFC1B9 /* MediaPlayer.framework */; }; - 6E5FC40818F90D13C4715DC82CAA05D0 /* RDEPUBReaderSearchBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F6418C1A247C2BC37337DE4C0A9C770 /* RDEPUBReaderSearchBarView.swift */; }; - 6F3D6640A523A3CDAE5042B420839D06 /* RDEPUBReaderTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C9154B6031E8FD71F71E3F89391A519 /* RDEPUBReaderTheme.swift */; }; + 6EA06E7FDDBB0E120C746B85A3F75151 /* RDEPUBRenderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49FF2BFED217D10DD3A12046FF81C511 /* RDEPUBRenderRequest.swift */; }; + 6EC7A64049EF9D2841493E494652993D /* epub-fixed-layout.html in Resources */ = {isa = PBXBuildFile; fileRef = F91BABC77F3FC64BDACE8400F2A1808B /* epub-fixed-layout.html */; }; + 6F3F15A3FBEF30BE7E78EA76BB1F8927 /* RDEPUBReaderRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6220F23ADB2582C577A0C44BA52657D /* RDEPUBReaderRuntime.swift */; }; 6FA0125F16DDEDAD341DB75DEB084F4B /* DTHTMLWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = B23C5F038DAC52B75213C0760C431F2B /* DTHTMLWriter.m */; }; 7027EF8D77D4082C1BB9B80FF61FCADC /* DTCoreTextLayoutFrame+Cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 214F0FC87DE99D3FCE69D98B357F3FFC /* DTCoreTextLayoutFrame+Cursor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7171BDF42DA8008320D1AC7E7A8FEB05 /* RDEPUBTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F5110430A322C853C80F6041B0EDF94 /* RDEPUBTextBookBuilder.swift */; }; - 71B76C3166DE0C5DF235A0C22EFEDE59 /* RDEPUBCFIRecoveryEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35803D654BE44326A28A0947DD178B63 /* RDEPUBCFIRecoveryEngine.swift */; }; - 7217CE578FE4452B04FDB29E272BAA21 /* RDEPUBReaderController+ContentDelegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = B359BD655F8361E4030C9E5F4FBAAD97 /* RDEPUBReaderController+ContentDelegates.swift */; }; - 72F720BE51962FC458B7A77B5635EFCF /* RDReaderView+ContentAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8BB0B072E5F24B51A6D348D8F9745CC /* RDReaderView+ContentAccess.swift */; }; + 714A34F8A6CF051D194F7EB767F30ED7 /* ZIPFoundation-ZIPFoundation_Privacy in Resources */ = {isa = PBXBuildFile; fileRef = CA4A114775B98CEA4A566C18123B145F /* ZIPFoundation-ZIPFoundation_Privacy */; }; + 7166B6127AC8ED73A5FF3A2351CC80B3 /* RDEPUBSelectionOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A18AC71FCC0D1D4F1FF1E6EAB3D229F0 /* RDEPUBSelectionOverlayView.swift */; }; 730ACB99580C5982DC08D50FC5084D41 /* DTAttributedTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = B4D20A2B33F9F4DD8499FB462DE2731F /* DTAttributedTextView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 738FAFC22719BC9A70AFBD0D3B05C79A /* RDEPUBPresentationRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88FB583F2D022D1B84B91F285F67FE76 /* RDEPUBPresentationRuntime.swift */; }; - 73C0E664C70F48D94EB4A95026909708 /* RDEPUBReaderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A357FC293046D648FE84D98C27AF2821 /* RDEPUBReaderDelegate.swift */; }; + 733DA50F18319A91EDBECA4E02C0F7A2 /* RDEPUBReaderController+Orientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87FAC4BEFBDC1FD8E9824724A68800F1 /* RDEPUBReaderController+Orientation.swift */; }; + 73BA62E3AE9D75624A414EA841AD187C /* RDEPUBReaderAssemblyCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A10956FC20C49EDDBFC8BABCC6EB098A /* RDEPUBReaderAssemblyCoordinator.swift */; }; 7408D293C24C3BD9CBBCBB530B50938B /* Pods-ReadViewDemo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AA0811310099A4BCB3D52683B70DB3D1 /* Pods-ReadViewDemo-dummy.m */; }; 7459A1656EDC29D685073B83561B783E /* NSNumber+RomanNumerals.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CFFB65C5D340A4B5C627B3EF02CD127 /* NSNumber+RomanNumerals.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 757A101F60F482793C65B07F301FC009 /* RDEPUBParser+Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 170D81239AF3CE5CD64BA2E44A505872 /* RDEPUBParser+Resources.swift */; }; - 763E0AE4634F863DA80C723AE8259806 /* RDEPUBTextBookModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33643E88B779A3DB1B3A14C7A194045B /* RDEPUBTextBookModels.swift */; }; + 76811D5B18D00F172575D6717BF9DA63 /* NSData+DTCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = F63EBF2BF3000B3391F6E693581EA129 /* NSData+DTCrypto.m */; }; + 769008E585DCB34E7440CE7E9C3E93CC /* RDEPUBTextAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AB8D9D0E868BF4DBDE6255D7F86E252 /* RDEPUBTextAnchor.swift */; }; + 76F2A74233A552DDC5AEDFC4C1D291F9 /* RDEPUBReaderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27A8E420B22CCB314B97FF093673D7A7 /* RDEPUBReaderConfiguration.swift */; }; 7821105EF320619993B3BF7FB90C7ADA /* DTCSSStylesheet.h in Headers */ = {isa = PBXBuildFile; fileRef = 796EF27FF6AA4B62367B6BD9CEBD85A8 /* DTCSSStylesheet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 783581535949175DA2E2C1D2D907E48C /* RDEPUBDarkImageAdjuster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 378AC6C2092D7E25BFF88FB4C743886C /* RDEPUBDarkImageAdjuster.swift */; }; + 7828DA98DD0559035F8A02686A44A281 /* RDReaderSpreadResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D513DFE7299EE03B0CB5A16A4798152 /* RDReaderSpreadResolver.swift */; }; + 7882FB8FD1A57CAEA4E4FDEF4952C621 /* UIView+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 29DEA4D201BB179BB6E228E9F688CD4C /* UIView+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 78D24D82D98D77E744FF73C9040618A8 /* DTHTMLParserNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5001C74FB9506AEC71E458047698A4AB /* DTHTMLParserNode.m */; }; - 793A9A3FCA9C44D959556F91F9706CB5 /* RDEPUBChapterOffsetMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33D775F257172C2AB560D7B9B5A918FD /* RDEPUBChapterOffsetMap.swift */; }; + 78FF4557AC434319860AD771F26E2697 /* URL+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6430501430329643C8280B3985C48711 /* URL+ZIP.swift */; }; + 7953853E6BE17879EBFCECF9551634A5 /* RDEPUBTextPageDecorationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12B21DE048B2D9B7F8A8075D627B518F /* RDEPUBTextPageDecorationView.swift */; }; + 7999290DC707639D8F4D2090D3F0878F /* ZIPFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D8AB18960B56A997408E3235751624 /* ZIPFoundation-dummy.m */; }; + 799E070BA323793383FA81BA733C4DA5 /* NSMutableArray+DTMoving.h in Headers */ = {isa = PBXBuildFile; fileRef = 3046397381A83C2F6BAF344B86AD176E /* NSMutableArray+DTMoving.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7A48CDFB40202EFD09A2A9AB0EE0770D /* DTCoreTextFontDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EF19AD0EF4889156D46061FB43E0F5D /* DTCoreTextFontDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7A7FF7B976849107A4083C537537FDD9 /* RDEPUBChapterPageCounter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 328AA616EE25AB53BFB60EFE1C7AAFCE /* RDEPUBChapterPageCounter.swift */; }; + 7A5AC3C3A3C1BF6B0DA2090F55970D2D /* RDEPUBPageCountCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CD96965442A5F874F9CE6864437A3F7 /* RDEPUBPageCountCache.swift */; }; + 7B09D184EAF3D5886E4B91AE9966FB48 /* RDEPUBCoreTextPageFrameFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F34C3AB5B2B7CFAED280AB097BF51C21 /* RDEPUBCoreTextPageFrameFactory.swift */; }; + 7B3A17CC46FA908545BBB3CA206702FF /* RDEPUBReaderController+RuntimeBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCADA127F117763F7DC1E99EC687D9F1 /* RDEPUBReaderController+RuntimeBridge.swift */; }; 7C05F56B62B15EFF344C5CDE4A52B8FB /* DTHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A4E9E54E556A72BC885CCC08B3791C1 /* DTHTMLElement.m */; }; - 7E0D7B35BB0767623CC6BA41C219E988 /* RDReaderContentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 410C5BB742936BFF1A02BAB0970CAF34 /* RDReaderContentCell.swift */; }; - 7E9E05AD2B6728C1D299F07941522290 /* RDEPUBChapterData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317357794EF461FA4C6992E798C900DF /* RDEPUBChapterData.swift */; }; - 7EF2739F9A5644F0A33A0BB5FBB847F9 /* DTActivityTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 662D30C1E74D1D5122921475F4024F73 /* DTActivityTitleView.m */; }; - 7F2BA0E2BCB6D4613A6A0F79CD8A0341 /* RDEPUBJavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = F69C9651823EAB579B078EC3B7435D16 /* RDEPUBJavaScriptBridge.swift */; }; - 7F99F1B51CCF451AE85BA8088FEB4519 /* RDEPUBPaginationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 422DAC763888F8667708F7B66F9C701E /* RDEPUBPaginationModels.swift */; }; + 7C39856468D7910473771D4D1BAC42B0 /* RDEPUBMetadataParseWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C49C3D57B022D024E68EDB3EF68D60F /* RDEPUBMetadataParseWorker.swift */; }; + 7D527AEF8B4001ADDEE64E24958BA9E6 /* RDEPUBStyleSheetComposer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 485EAD6F9C3A2212CF6CE024BA2FA1A6 /* RDEPUBStyleSheetComposer.swift */; }; + 7EA5C0BFEA6EFF3AFBA0543F64526A3A /* RDEPUBChapterDisplayContentCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B6CD2AB0DCDA662CD642765E8A5BE01 /* RDEPUBChapterDisplayContentCache.swift */; }; 7F9CC306B17D409DB903DF850FEDA64C /* DTListItemHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B18088896D291E0CE7718DFE82FAC1 /* DTListItemHTMLElement.m */; }; + 804E70CA6C95A89DD7997DDD48370800 /* RDEPUBChapterLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07EC70D349899B89F4546FFE4DE46EEC /* RDEPUBChapterLoader.swift */; }; 8099F1E613A15275EF5FC59ED3C73579 /* NSAttributedString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 7805DFC2CB71F5B6BBF7891876360EFB /* NSAttributedString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 80E95C784BB3D4FE6A6C0B71AE11F9B2 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F661A240C4FCF4610D249E6389CF34E /* RDEPUBReaderController+AttachmentTooltip.swift */; }; 811D7CBCD710AE45FF80A4B05BFE444C /* UIFont+DTCoreText.m in Sources */ = {isa = PBXBuildFile; fileRef = CEBA01360577AAD3FD089B6B17C24260 /* UIFont+DTCoreText.m */; }; 814D0D63E5FD4AB7231E63064FE9EB5C /* NSAttributedString+DTDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 5096458D9BD2818F786BC3B61B91EAC7 /* NSAttributedString+DTDebug.m */; }; + 815AD7AF46039FC8352B50AF272F102B /* RDEPUBWebView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAA04F0E10B06A24072628253625784 /* RDEPUBWebView+Configuration.swift */; }; + 81676AD4528CF268CB913CF3F27E00A2 /* DTExtendedFileAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F75437CE9F9324D315E417014797C1D /* DTExtendedFileAttributes.h */; settings = {ATTRIBUTES = (Public, ); }; }; 81905A7717925A17E6B98E934A75B8BA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0834E84632886CDD9911CAB76183F1CE /* QuartzCore.framework */; }; 82119A0DC4981CC2AF389C7C4CC08186 /* DTListItemHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DB480D0B78911DBF96986E64A714907 /* DTListItemHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 83336BED035B870BBC5CE6C13A4A5676 /* RDEPUBDTCoreTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 505D658FEB22042EEDC51D402700F8C9 /* RDEPUBDTCoreTextRenderer.swift */; }; + 82B1DCCA45467E31302FFFD7EB78EF08 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0634E78287117CD08963FC5011711674 /* RDEPUBTextContentInteractionCoordinator.swift */; }; 83A4BC9FE4765C9B848DD4925D99F362 /* DTAccessibilityElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D146C3F4B7878B5CE8EFF38765580C2 /* DTAccessibilityElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 85F3D006BBBB3C4B0D15F76801AE6518 /* RDEPUBTextIndexTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80F1F9A3C3AD1C55622B17CA5D503766 /* RDEPUBTextIndexTable.swift */; }; - 8602D332B12D56DF37C90CA9E8216DEF /* DTFoundationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = FF63F5E8902D6F3F5E845A924EBBC6D3 /* DTFoundationConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8704620DCD44CD027D5566BB69576C20 /* RDEPUBBackgroundTrace.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51DA940F74309B236AFA2A214D82D47C /* RDEPUBBackgroundTrace.swift */; }; - 8892F824CF5AE13E7951F21E83A1341F /* ZIPFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B41F7D27C2336F89BB0185ACB0B19EA9 /* ZIPFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 87CE9E7A1DFE5341BF42FD146FC7CC83 /* Date+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D23D8D10719754D93032F66EB98536 /* Date+ZIP.swift */; }; + 8820CABB87F28D4AA4F13165DEA40BF2 /* RDEPUBChapterTailNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3124D3BC58A0A9244ACC822A8BF0860E /* RDEPUBChapterTailNormalizer.swift */; }; + 886CBFD7FC5AD3F76DDA53D178447786 /* RDReaderView+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE12B04784ACE77BDF6F920F30699A70 /* RDReaderView+CollectionView.swift */; }; + 88F2D3A8852C62750F27E9DDBACC5E80 /* DTLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 199E2ECC77BDAC03F644C20040F042D4 /* DTLog.m */; }; + 899844C021BD16F2361E471087949E10 /* RDEPUBReaderTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE17B2F690F6065BB982FA37EB9DF24C /* RDEPUBReaderTheme.swift */; }; + 89B3A1D41C047AB90325994EEBFFC141 /* NSMutableArray+DTMoving.m in Sources */ = {isa = PBXBuildFile; fileRef = ADD5B2F66FCCFB58393314E7B9FE4384 /* NSMutableArray+DTMoving.m */; }; 8A0A0FB23DB0021ADC9AD0D90631883A /* NSMutableString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 52053ABC9CD3D4A72CD8A22173428AEB /* NSMutableString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8A35CC67F0AA6B26397C10D756EA34E8 /* DTTextHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = ED9A1EBDA0FD72671C7F6FE15F37B906 /* DTTextHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8A927D68F7759D6828B7A75ED7A4E313 /* RDEPUBCFIParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ADCC15F3965570C3568420F9A75845E /* RDEPUBCFIParser.swift */; }; + 8A99D64B1FFAA4754D40D044A9996A81 /* wxread-default.css in Resources */ = {isa = PBXBuildFile; fileRef = E169B071EF0569FFFECA74A68DA4ACB4 /* wxread-default.css */; }; 8AC90941E71199090BCED76DE89EFB60 /* DTAttributedTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = F46010C3A0C82AE5ABEC814D7EC6351B /* DTAttributedTextView.m */; }; + 8ACD0FAB855BF0922BAA860243DEDEDD /* RDEPUBWebDecorationOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7540C99450185F3D8B99D75A4C065F4 /* RDEPUBWebDecorationOverlayView.swift */; }; 8B405CE13E7D718A9340A82B52766AB2 /* NSCharacterSet+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E167717A18E0C858C6FD95804249E4 /* NSCharacterSet+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B998D74A270BB941E76E642DF7636C3 /* DTHTMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 71BBE6384315D7F00F5ECFFF67A85AF9 /* DTHTMLParser.m */; }; - 8BAB1EEE05BFB3B8B153BF2D92FDFFC8 /* DTExtendedFileAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F75437CE9F9324D315E417014797C1D /* DTExtendedFileAttributes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8CE17D58D28703A2311C974A430F4319 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25D28385D66ED93351515441996056D7 /* RDEPUBTextContentInteractionCoordinator.swift */; }; - 8D86B1DD0F6E09A3FBC9E5D03DCFF90C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; + 8BA9A995A14E1CBFB04D036C6722B01B /* RDEPUBAttachmentNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1429432AAB58A7FBEEA14E2716F7D97E /* RDEPUBAttachmentNormalizer.swift */; }; + 8C18DD5EEE9BE69DA1780604BFA096AD /* RDEPUBAttachmentTooltipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89A5207DD90D0FB2512C9B23FEEB1A02 /* RDEPUBAttachmentTooltipView.swift */; }; + 8CD67A11ACBEDE5F66DB9508B021BBF9 /* RDReaderView+ToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89A9008EF0A17C27F6EA9F37EF6DCFD0 /* RDReaderView+ToolView.swift */; }; + 8E71545C934B03B3131BD995D43D18BD /* DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F653EFBBEDAAC96A34BC93B4211E792 /* DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8E8726381CBCFB1EDB350183456D4EF7 /* DTHTMLParserTextNode.m in Sources */ = {isa = PBXBuildFile; fileRef = E5377786E80195587BF3E8A7589E5925 /* DTHTMLParserTextNode.m */; }; - 8F695E0579605768E29DDA8C50596D9D /* DTTiledLayerWithoutFade.h in Headers */ = {isa = PBXBuildFile; fileRef = 0764D155F69503AACFA7AD976825E986 /* DTTiledLayerWithoutFade.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 90DE245714318E23EB6D5A19B8091CC0 /* NSData+DTCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 94705DADD1F09F4162F7D733318238F4 /* NSData+DTCrypto.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 91085F6C691CF5E3B32E3B26BEC3605C /* ZIPFoundation-ZIPFoundation_Privacy in Resources */ = {isa = PBXBuildFile; fileRef = CA4A114775B98CEA4A566C18123B145F /* ZIPFoundation-ZIPFoundation_Privacy */; }; - 910CF6F57206CE880204D4A3F693885C /* RDEPUBTextPageVerticalJustifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05474A384503DBB6DB8EF47D660B849C /* RDEPUBTextPageVerticalJustifier.swift */; }; - 9186C2A051CD161DD0AD17023C9B8683 /* DTHTMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = CB2BD1F8CFECB82D427DF046439E68D6 /* DTHTMLParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8E909D0FE7B6AB696AA03294AC9DEA23 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; + 8EB24D1CF95A90D98DBD5C1F41443429 /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69D0D9087DAE27DCDC6CB950E20E3608 /* RDEPUBTextBuildPipelineInterfaces.swift */; }; + 8F2886944A775846FDCC6C64D78E6414 /* RDEPUBChapterPageCounter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22887CE9C9E366BD11055E6B101C9A00 /* RDEPUBChapterPageCounter.swift */; }; + 91B95F181020FC644E5508803BAC5BEC /* RDReaderPagingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9634274EF4914F6FCC9A1546501F2843 /* RDReaderPagingController.swift */; }; 91FDA47810CE5CE2C48AED9205AE89B5 /* DTStylesheetHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 354C1C3A74DB75C8B8608D538212A963 /* DTStylesheetHTMLElement.m */; }; 92C59F96D443525E8833676479FA60C5 /* DTVideoTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C2868064310B16D2B5FD9901C846DC /* DTVideoTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9305755E8D8376D85CE959EA84EA38B0 /* RDEPUBSafeArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA068568A9B92FE52049E190968609A8 /* RDEPUBSafeArea.swift */; }; - 9380666C109F9D0A903C936318A1C818 /* RDEPUBWebView+FixedLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD8F015377F898E4B0229FF584685390 /* RDEPUBWebView+FixedLayout.swift */; }; + 92D1AACEA741834540D7E848D1ECBCB0 /* RDEPUBReaderController+ExternalLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3BC3FFA41C912BB401CBEFA2A9D9964 /* RDEPUBReaderController+ExternalLinks.swift */; }; + 9317D936D1624DAFFC0665186084B9A7 /* DTBase64Coding.h in Headers */ = {isa = PBXBuildFile; fileRef = 519087D9CD0F5E440E6D2C3B1AA1DFA2 /* DTBase64Coding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 94A660CFA88E3A99BA840BC7C081FAF5 /* DTFoundationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = FF63F5E8902D6F3F5E845A924EBBC6D3 /* DTFoundationConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 94C9A09C6EF77DEDD1BD7E9DB8858F40 /* RDEPUBParser+Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 104CAC07B59B05601D706C051CFB2EB3 /* RDEPUBParser+Resources.swift */; }; 94F5846979DBC90E2B646E975F5ECBA8 /* DTHTMLWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 14E63A0D35D4A07BD0123021EA161C99 /* DTHTMLWriter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 971142A48582899957D6A526F2FB2895 /* RDEPUBTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B35A0451D9A3CF5477258E38D363189 /* RDEPUBTextRenderer.swift */; }; + 952F81C78437BA95611EBDD505BFF38B /* RDEPUBReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 169DD70FDD7715783E8DD88ADB49E35E /* RDEPUBReaderController.swift */; }; + 972B52AF13D8A6B21127218321F0FD01 /* RDEPUBChapterDataCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54AF51CFB19FCEF5B3306518C6B311A0 /* RDEPUBChapterDataCache.swift */; }; + 97FF7E96537BE785FC7D2BE9D3A6F48D /* NSString+DTFormatNumbers.m in Sources */ = {isa = PBXBuildFile; fileRef = C5005A9E8F746647585CCAB26853E922 /* NSString+DTFormatNumbers.m */; }; 9854DC3F1763B6272C2EA3FC6EC40B95 /* NSAttributedStringRunDelegates.h in Headers */ = {isa = PBXBuildFile; fileRef = 30EB4CF4AD4114DE53786C318621EB19 /* NSAttributedStringRunDelegates.h */; settings = {ATTRIBUTES = (Public, ); }; }; 987538B07E11741899878EA8BC947F51 /* NSCoder+DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = A592A34CA2EA792DDFAFAEB516FE8A10 /* NSCoder+DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 989CA2B28ED197B0B797FE317BFAC14B /* RDEPUBReadingLocationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C2C269173C1D497D6810C8BF62E7338 /* RDEPUBReadingLocationModels.swift */; }; + 98AEEF2F4FFB0DB64232732D150F2D69 /* RDEPUBReaderUIState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C5BF48946F992DC481016853F217CE2 /* RDEPUBReaderUIState.swift */; }; + 98C2A1EEBEFCC4EBD5C75BF45C4E76A5 /* RDEPUBPresentationRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6F13727884F1901CB2C0D4FFABB1763 /* RDEPUBPresentationRuntime.swift */; }; + 98D38E0AAD5F1C91FF9EF1757BDDBF1F /* RDEPUBCFITextAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9D122DED12EE5B85539805AB7010B32 /* RDEPUBCFITextAssertion.swift */; }; 9917E9B804CD33AF3BE2A992A3510C97 /* NSNumber+RomanNumerals.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E21B10EE150F00F245D297EAB7F2BA2 /* NSNumber+RomanNumerals.m */; }; 992B7C8C824B5EA190EF1DB096064DB7 /* DTDictationPlaceholderTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D0856C3894240A673B5AB7C2704E9144 /* DTDictationPlaceholderTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 995F0E20A1745FECE256E5984C281223 /* RDEPUBViewportTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 751A6591CCEC79FB3B33C8EADF3465B6 /* RDEPUBViewportTypes.swift */; }; - 9A2E0E076EA566C56A230AFED489353C /* RDReaderView+PageCurl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499C327E148794A7F09BAF1C83BE59EF /* RDReaderView+PageCurl.swift */; }; - 9AB60E5308E49D98017B2CF7F9F00CA5 /* RDEPUBFontFallbackResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29DE76CD63BD47DC86DF55C349B1CF91 /* RDEPUBFontFallbackResolver.swift */; }; + 99983AF5666F6E31BF186B2171765B6B /* Entry+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 288589D0B52F73505B43C743D9837578 /* Entry+ZIP64.swift */; }; + 9A250709DAD9354AF5EC1E2DB111096B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0834E84632886CDD9911CAB76183F1CE /* QuartzCore.framework */; }; + 9ADFD4C5CB7848BF8C877C8F0ECCF627 /* default.css in Resources */ = {isa = PBXBuildFile; fileRef = 47DC174612C98B2CFB4E7D158169139E /* default.css */; }; 9B199D71D2F48B2055A7FDF9BD7051CC /* NSString+CSS.m in Sources */ = {isa = PBXBuildFile; fileRef = 8718F2DB8F0DC085CB012D9996596F3F /* NSString+CSS.m */; }; - 9B836CB271EDBE823AC19F08BC0EC625 /* RDEPUBTextPerformanceSampler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8300EA716892548FEA44EC27801F5987 /* RDEPUBTextPerformanceSampler.swift */; }; 9BD146F72B29C703798001F138B069C2 /* NSCoder+DTCompatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 753994141ACB981C898B36B761321C23 /* NSCoder+DTCompatibility.m */; }; - 9BFD528442B295AED7E060DC26BB1065 /* DTVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C9575F05D72C239E7E6F079BACDF4C7 /* DTVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9C0DC170906447654EC656D17AD56645 /* default.css in Resources */ = {isa = PBXBuildFile; fileRef = 47DC174612C98B2CFB4E7D158169139E /* default.css */; }; - 9C9331448A1CBD31F9C64CBA0FBB793B /* DTBlockFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35417EC94F2D58CB80C991F875CE15C2 /* DTBlockFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9C9EEE7111F26FD3BECC39E97B674280 /* DTCustomColoredAccessory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9542AFE3A82C8AE56576254CE196E71A /* DTCustomColoredAccessory.m */; }; + 9C1D23CBBBF2403B55EF491818672155 /* RDEPUBReaderController+RenderSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CD0B4D61E7169153CE0968E2D6A923C /* RDEPUBReaderController+RenderSupport.swift */; }; + 9C4C10EBC3E762CE02A9616E6E64514C /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */; }; + 9DAAA92B75D5A98D770C8379D93C31CD /* RDEPUBReaderController+LocationResolution.swift in Sources */ = {isa = PBXBuildFile; fileRef = 960055C2836F036B9C45375852678BCE /* RDEPUBReaderController+LocationResolution.swift */; }; 9DE04C83A68C7512C0A860FFF5CEC113 /* DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CF7CEB31BED0554F3EF3D3442A89B47 /* DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9E4AB71DE8B3E7218B53B2C8EF6B843A /* DTAttributedTextContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7203B4D9D997037E0F9D154A3B049738 /* DTAttributedTextContentView.m */; }; - 9EB0170E3B12D184C78EEF4602A65309 /* RDReaderPreloadController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82B54A69DF5E94D0D1B34E9D31C0D997 /* RDReaderPreloadController.swift */; }; + 9EB0CAE0E721CF799B22772CD72DC159 /* RDEPUBDecryptingImageAttachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35F49784F5C7572343EA12BD542EC199 /* RDEPUBDecryptingImageAttachment.swift */; }; + 9ECF30F640D739DCEE8C5AD56C2BB4B4 /* Archive+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B9309F0BDDDE2C3EE13C97BF2C0F1E /* Archive+Helpers.swift */; }; + 9F77C5130284AF5B3A8E3CC488CCB537 /* DTCustomColoredAccessory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9542AFE3A82C8AE56576254CE196E71A /* DTCustomColoredAccessory.m */; }; + A0077D5C2CBF0E00081C059EFCEC6373 /* RDEPUBSelectionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AB1D76489DD745A028573570A736E59 /* RDEPUBSelectionState.swift */; }; + A05B5109498BFFDAE88FDF254CA1BC5B /* RDEPUBPageResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = A188018454C7E42DF794BA1BA829E6FB /* RDEPUBPageResolver.swift */; }; + A0F88E79F3568E7BF0FAB6D00845B559 /* RDEPUBRuntimeChapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96B2BF79370F179010B6481C20FA58C1 /* RDEPUBRuntimeChapter.swift */; }; A132A0C9EB13B65FB886B11AA2E6304C /* NSDictionary+DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C891B983F0CC956CAE3978A15875819 /* NSDictionary+DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A133DADCC4B6BC6D0C037DAC0A930B3F /* Archive+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C9CA544EBF55130625F6C3AD2ABFB4 /* Archive+Deprecated.swift */; }; + A29B6C78057AF83CE0FA325BE0AE95ED /* RDEPUBTypesettingPipeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD5FFE0C7676BB044875877B91485384 /* RDEPUBTypesettingPipeline.swift */; }; + A29CC045590581A0435ED48791DAB677 /* NSDictionary+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 45A67761829BBB3974CE24FE50E459EA /* NSDictionary+DTError.m */; }; A2CA9C27EB2B77637A12723F8CFE7AAB /* NSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = FA107BE47514D01B94B7A2670A9F83E5 /* NSString+HTML.m */; }; A30D5C1E413A3D319A83D3410A8A549F /* DTCoreTextParagraphStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = B7C4233DF4FA80BF4A9E6FA5082D49E5 /* DTCoreTextParagraphStyle.m */; }; - A48D92059E665D572F4752713D33D8F7 /* Entry+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76C1831768CE55090EADD902B29B6CD1 /* Entry+Serialization.swift */; }; - A5F4E73D08B78DC9FC63FF9E71AC5326 /* RDEPUBTextRendererSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E000FE659A8C4AE6C55AE7B9CC951AA /* RDEPUBTextRendererSupport.swift */; }; - A695F716FD1DFA3CAE43F52135ACDB66 /* RDEPUBSearchModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07E07EEE45C5439A207C5647210A4A7F /* RDEPUBSearchModels.swift */; }; + A4B4E6D986FC4F3E5A37A2667E0EFF66 /* RDEPUBNoteResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3850371BB41E7533AF689FAA5ED33F9B /* RDEPUBNoteResolver.swift */; }; + A4DB0F60CE6C88CA903892606BB2D666 /* RDEPUBReaderLocationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCCAE17086995415A5984D248EA420D6 /* RDEPUBReaderLocationCoordinator.swift */; }; + A5E13B16B918357268ABB9C6105F4379 /* RDEPUBTextRendererSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53A23BC49C365732A2CD9FCC08DEE23C /* RDEPUBTextRendererSupport.swift */; }; + A6455538113656F10265CBA70E89498C /* RDEPUBTextSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8F150BC8AD9B0E615F730AEC4CC9098 /* RDEPUBTextSelectionController.swift */; }; A72E9F983E5BBFA7485EFB482B80E89E /* DTWeakSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = E687628EF2FE92D093E3005D21B578E5 /* DTWeakSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A736290F32D0ED7B7EC1268AE1D72154 /* NSArray+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E5297E7F5769C61C1838962BA76D4F5 /* NSArray+DTError.m */; }; - A7C4CDACFC79ED3C0CC24B518CEEB5D5 /* RDEPUBFontNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63D23A912F5F91D0D3D83DF9E05515D0 /* RDEPUBFontNormalizer.swift */; }; A7D665BBDADBE3D64023FF52E218FCFA /* DTCoreTextConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = E89F199ECDE796B15CAF8E0C1775FAA6 /* DTCoreTextConstants.m */; }; - A8C4F1A966FA53FF2BBA7A97EA8E3BCF /* UIColor+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21D501067A95E18D0DCAEF44170D36F2 /* UIColor+RDEPUB.swift */; }; + A8A98F9B70972C0AC1C7FA4C0F42D8CE /* RDEPUBReaderLoadCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E1C8E681EAA73E10C3BE26F8951E5D6 /* RDEPUBReaderLoadCoordinator.swift */; }; + A8F69E3E478FFE8D6AC8DAD05787660C /* RDEPUBChapterLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750B16C9E2C4617CC27FCF04222EEAEF /* RDEPUBChapterLocation.swift */; }; + A99834FF2DD87F43190B51C700D3CEA5 /* UIImage+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 499E135F1FEB31C26EB0EF793A90086C /* UIImage+DTFoundation.m */; }; + AA3118D4EEB37AEE0A1F82C042A21092 /* RDEPUBCFIMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18CD683F1DDEBEF3EDA621F9D3E95178 /* RDEPUBCFIMap.swift */; }; AA3722CC8B4992EDA8A9F5E9116835B7 /* DTCoreText-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B6CA8CC4525EF64AA5CEE4A722737F1C /* DTCoreText-dummy.m */; }; - AAF0A60FD7C1F632134A65AC34A37F93 /* RDEPUBReaderTableOfContentsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5ECDA952875E7B452D3D15796C20046 /* RDEPUBReaderTableOfContentsItem.swift */; }; - AB57C91A5A85BDC769B0B16F93902861 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */; }; + AAC5E6A45E892B280F2F507EAA68A2C4 /* RDEPUBTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70AAB379D168256A54BC162D9CD200B7 /* RDEPUBTextRenderer.swift */; }; + AC0E244868EE1BB06DA2FC31EE7FEFF0 /* DTHTMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = CB2BD1F8CFECB82D427DF046439E68D6 /* DTHTMLParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC24EE11636D8101C9678987A7D7E56B /* DTSmartPagingScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 21CCCCAAF832BE9C859BEDDC79B4E9E2 /* DTSmartPagingScrollView.h */; settings = {ATTRIBUTES = (Public, ); }; }; AC7000465258822B466855B12F1F97A3 /* DTCoreTextGlyphRun.h in Headers */ = {isa = PBXBuildFile; fileRef = 771E0D5CBCBC013BF5780FEE5BBA81FF /* DTCoreTextGlyphRun.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AD9C79AE20497F6795AD6AB0826DD3A7 /* RDEPUBReaderLocationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30B0AB500258357278F5D4E6C1AA2848 /* RDEPUBReaderLocationCoordinator.swift */; }; - ADB0613F7A7821828D71DE9B36F215A8 /* RDEPUBWebDecorationOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 636939AFA1CB3F49FE41D1160D512A54 /* RDEPUBWebDecorationOverlayView.swift */; }; - AE3D20CC98B01ED32FF4508114769A82 /* RDEPUBJumpSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35C2BF4CF393A0130124600E79ECC3D6 /* RDEPUBJumpSession.swift */; }; + AD1C9A89324683F04573E4DE479DCDE5 /* RDEPUBReaderBottomToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 680ADAD990534743F965D6B6E96D7E9B /* RDEPUBReaderBottomToolView.swift */; }; + AE90B64916BAAB2132F880C33316EFCB /* WeReadApi.js in Resources */ = {isa = PBXBuildFile; fileRef = CA02E7C359334DEF7C203F369B5D6AAD /* WeReadApi.js */; }; + AED1E11539E157D1123D4AFB20BB3BFC /* RDEPUBTextPerformanceSampler.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54F008AC6146B84C53BC2ECB8725B94 /* RDEPUBTextPerformanceSampler.swift */; }; AF7A1DC953992A149CB0815C90769529 /* DTIframeTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D4C731AA2088D7E873D8E3D21B95D215 /* DTIframeTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AF7CACF0474B9FE3D9172AB298CDA425 /* RDEPUBCFIDOMPathBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49DF44BF9FBD9CCC9CDE0A998C428D86 /* RDEPUBCFIDOMPathBuilder.swift */; }; - AF9028B73D9C5575E3FCA3CEDC377A21 /* UIScreen+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = AF436E76C893E223A4F0BE86C1276054 /* UIScreen+DTFoundation.m */; }; - AFF25E38A6547A1360F0F1C7A13A4E16 /* Archive+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = D18519BCA8FAA9B01A704A0F0B9FFC78 /* Archive+ZIP64.swift */; }; - B002E59779E939442511C792C82E5DE8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - B226D57B4C6D260E22B067D428F6DCE9 /* RDEPUBCFIMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0390F2BB06B9CE8FCBCD30D60C154B9 /* RDEPUBCFIMap.swift */; }; + B059193A5A552F53D38C1B38E65AADAC /* RDEPUBBackgroundPriorityPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED3B8B105513BA029A8DAC14677F712 /* RDEPUBBackgroundPriorityPolicy.swift */; }; + B0C819B1181CB7AC0ED2AE0F785C05E2 /* DTBase64Coding.m in Sources */ = {isa = PBXBuildFile; fileRef = E5D4D6E12779C54F17AE98A1E6C9B699 /* DTBase64Coding.m */; }; + B1D4240422AFD323C59B17BE24A1E1B7 /* RDEPUBSettingsFlipAutomation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C2BB1CB63F11F03F2A9AF85735EA076 /* RDEPUBSettingsFlipAutomation.swift */; }; B24FAD34A7915FC4B90FE9038E814FF2 /* DTLazyImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA5630DC0E663F38A9EC713323697EE1 /* DTLazyImageView.m */; }; - B27621CA258E768A16E5E25A89668C6C /* DTSmartPagingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = A20F6F0463A998DC3BD53DE9E63B63DE /* DTSmartPagingScrollView.m */; }; - B2D4278E2D1008B9717940F438726A34 /* DTActivityTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = AF1516035C269F7A41EE064AAB14D562 /* DTActivityTitleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B2E8E9B9519C8E8190BD47194D788CE9 /* NSURL+DTComparing.m in Sources */ = {isa = PBXBuildFile; fileRef = 467CC59CEC3B3BC7ACDCA776FDCBDC1D /* NSURL+DTComparing.m */; }; - B32BBAE5F349A30AB57236C3CC062A81 /* RDEPUBNotePopupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B86020325578905B4D3E1E685C01CDA6 /* RDEPUBNotePopupViewController.swift */; }; - B634D426705F479A169E41DAC10D1955 /* RDEPUBTextPositionConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BE089AF845973208A11AA41A9B6AAB /* RDEPUBTextPositionConverter.swift */; }; - B6A555BBEB8B42FFCE02D75862378B4E /* RDEPUBTextAnnotationOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF82A90409132033768049C49798C3 /* RDEPUBTextAnnotationOverlay.swift */; }; - B73D7A2503F92B5935924A7E3E370901 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EA9EC765AA36B44104989E818B13326 /* RDEPUBReaderAssemblyCoordinator.swift */; }; + B250A5E09EA67FE88C2CED128EFC70CE /* UIApplication+DTNetworkActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 730B56BC97DFF2B1E04DD2608055D9E0 /* UIApplication+DTNetworkActivity.m */; }; + B3F712BE87B6441DE9CE079F98A65CEF /* Data+CompressionDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B46EF6F055A721AF370D705D026E9E /* Data+CompressionDeprecated.swift */; }; + B47F908F2572E4D7FB9B8B02CF406A75 /* RDEPUBNotePopupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D7EB46EC2C4DD8B46B6FADEFD16BB6 /* RDEPUBNotePopupViewController.swift */; }; + B511D4D936A2B51C2E64C456B160E661 /* RDEPUBCFIMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CE5DDE420852CFC895FEF2572577505 /* RDEPUBCFIMarkerInjector.swift */; }; + B52D7D4008111E537A88A33E349A337C /* RDEPUBReaderController+Trial.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6707BF75590797EB88552A6829CBAF19 /* RDEPUBReaderController+Trial.swift */; }; + B5386D5AFA1F546EFEE6E310BFF4D707 /* NSString+DTUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C80941DE172AF972D2247659684D93A /* NSString+DTUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B6835AAD31E05403BE3372062CDB785F /* RDEPUBChapterData.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2B2A40829A4A7C9D9B922A44179609E /* RDEPUBChapterData.swift */; }; B7BDD79FC06A1E4E0E17592860844108 /* NSAttributedString+DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 3985FED7BD8EC49191663BEF73FB2C79 /* NSAttributedString+DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; B8332F36582F7A001FE85A8D54B27C9E /* DTCoreTextParagraphStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = BD65B936E2A6FEB74718EA86D9AC1899 /* DTCoreTextParagraphStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; B86493B996A888D1DA7814ECB6028E22 /* DTHorizontalRuleHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = DD7A2DE5BDF72ABC066484CE554BDEF0 /* DTHorizontalRuleHTMLElement.m */; }; - B8802F744D06EF02E7DBB6151F874688 /* RDEPUBStyleCompatibilityModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DFA3BB3F5BC48BF4CA6F8DE4559318C /* RDEPUBStyleCompatibilityModels.swift */; }; - B94583A5C6CEB6C22B65B1572E3A1B9A /* RDEPUBReaderController+LocationResolution.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67BEEE595D865F7E86B156385CDF6111 /* RDEPUBReaderController+LocationResolution.swift */; }; B94CD41727DFCA8791EED8FB2CA397DD /* DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C3D91FFA65414A2787FEB95576E0097 /* DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BA7C1EC8FF514D08BB64EC4E9BEFFAC0 /* RDEPUBTextPageBoundaryValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74A0B8ECDC21C0F91EAB0484A86289DA /* RDEPUBTextPageBoundaryValidator.swift */; }; - BAB70BF6EB8A7F22ED7FAFE0B210D9FF /* RDEPUBWebView+Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = CADF4452F89F7A5F419D2841FABC8CBC /* RDEPUBWebView+Search.swift */; }; - BC8E238263BDB456890A5BE8EC82FE09 /* DTVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = CCC633BF76C79E0B4A6750337D5DCDB8 /* DTVersion.m */; }; - BD1601EB1923096C0D1E60D9BD1BD2DE /* RDEPUBReaderController+RenderSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08ABF9E1CC5582725B03469178A59A0A /* RDEPUBReaderController+RenderSupport.swift */; }; - BDFDDC4A48A5FACFBC1DC1CDE1350357 /* RDEPUBReaderSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FADE8129957738A63AA3387FEC5222B /* RDEPUBReaderSettings.swift */; }; + BB72EACBFD0C77D61A9AA9142C100B10 /* NSFileWrapper+DTCopying.m in Sources */ = {isa = PBXBuildFile; fileRef = D9A812C3E577A3ADC36BAE3FF7AA4D9C /* NSFileWrapper+DTCopying.m */; }; + BC017F711B983AD8E6EE8775B3AB3602 /* UIImage+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1300CC5794E609DB8FBA6FFF90A09408 /* UIImage+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; BE12CD112F82AD9050D7FB29395F27F9 /* DTVideoTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = B83D7A73677A2C3141EDEF56B9CE6584 /* DTVideoTextAttachment.m */; }; - BE9C1998CCE5DFB92AAB95691E08AA1F /* DTSmartPagingScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 21CCCCAAF832BE9C859BEDDC79B4E9E2 /* DTSmartPagingScrollView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C09D441F47DC9EA1B655BFB0E2B4C042 /* Archive+Writing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0218A7B243387C79E099CA947CF243D /* Archive+Writing.swift */; }; - C108E606A900A4EE495AE04E08BDEA59 /* DTCoreGraphicsUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0372FD1824BC43F7BD6B337430201420 /* DTCoreGraphicsUtils.m */; }; - C21094B9FCEAF6D8D94B2575C5D0C47D /* RDReaderViewProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF55DCBC3A5B0BEC5B1A4C6187F20D38 /* RDReaderViewProtocols.swift */; }; - C2AD0159F00DB585A1684EB0BCBFE610 /* RDEPUBReaderController+PublicAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 321B4FCED5571F74A0AAD75BF9637505 /* RDEPUBReaderController+PublicAPI.swift */; }; - C2EAD6705E64932D7957A88F9B85708C /* RDEPUBSelectionLoupeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1BEE21B44C49B23A7AAD27A4ACABF44 /* RDEPUBSelectionLoupeView.swift */; }; - C2F559074FF9F0354C733F8B175B91C8 /* Entry+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 288589D0B52F73505B43C743D9837578 /* Entry+ZIP64.swift */; }; - C3295FC9C627664107C0D3DD41938EBA /* RDEPUBResourceResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 677182E8663D93C2C9E5617999F649C7 /* RDEPUBResourceResolver.swift */; }; - C3612EECF20AE2BC8C1B84C468A7EF51 /* RDEPUBReaderChapterListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE57F56B1368E2617F06DE5FF893AA7 /* RDEPUBReaderChapterListController.swift */; }; - C48915AC691D47F3880D347B775C403C /* RDEPUBSettingsFlipAutomation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894D74C9B59F1EE9BE4DFF5D3B60B772 /* RDEPUBSettingsFlipAutomation.swift */; }; - C53F4357A355E1BF6695F05E1021A22B /* RDEPUBWebViewDebug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C59CB44187E054E80CA13F60FF8EE303 /* RDEPUBWebViewDebug.swift */; }; - C5DE018B3EBA50BC4F9D87EB03F810A4 /* RDEPUBReaderToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59600B93DBD35077CC79C74D07BC03CE /* RDEPUBReaderToolView.swift */; }; + BED12B4CA012BB2D1EC92E136D6457F0 /* DTCoreGraphicsUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0372FD1824BC43F7BD6B337430201420 /* DTCoreGraphicsUtils.m */; }; + BF0E4C081EC75F17692C703A2B9BE71B /* RDEPUBTextPaginationSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C55ACB797975D1F898B13F069C609C /* RDEPUBTextPaginationSupport.swift */; }; + C049CDA9C12E413E2B63AD404564CD9E /* RDEPUBChapterOffsetMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BFA10454111B92A9838334E4C3BDD21 /* RDEPUBChapterOffsetMap.swift */; }; + C26DC956E5E05FE85127A36EAE538876 /* RDEPUBPageLayoutSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = C23F9EE5E57C3681A4372C8884901664 /* RDEPUBPageLayoutSnapshot.swift */; }; + C28649DD763E6E5EFC7D60F47B865966 /* RDEPUBReaderPersistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54C212FF935AF7337E5CDE1C37D5785A /* RDEPUBReaderPersistence.swift */; }; + C407660D1DD8D9EBEE6B70B0BB18043D /* RDEPUBTextSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44D834B66794C6899B84C5782F3624C6 /* RDEPUBTextSearchEngine.swift */; }; + C557F129B5958D29FA4015DD182ED2CC /* UIApplication+DTNetworkActivity.h in Headers */ = {isa = PBXBuildFile; fileRef = 55423549E54A01F039B5F379B264C73F /* UIApplication+DTNetworkActivity.h */; settings = {ATTRIBUTES = (Public, ); }; }; C5EE8E7373FBD24E66C678356393D871 /* DTCoreTextFontCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 722AF38F5106ADDE6F98D282F886A769 /* DTCoreTextFontCollection.m */; }; - C5F367B6EC933668EAD90AB7B6394AE6 /* RDEPUBModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDFEB59EC6040AB3CF58E4E1045A8913 /* RDEPUBModels.swift */; }; C6B65C0EA759DF426FBBBB113BA3C3E8 /* DTBreakHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D8AE4BEBD1998839BA83AD05CA6CAC5 /* DTBreakHTMLElement.m */; }; - C6E901F7E1180BFAD5FFDD7D9D60DBB9 /* WeReadApi.js in Resources */ = {isa = PBXBuildFile; fileRef = 3AF63806C4793F384C4CF28201BC756C /* WeReadApi.js */; }; C72CE4B974DFAE2C3037D425EB559314 /* DTCoreTextLayoutFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = C46FCF109DBCB37595D2A3366CF1D765 /* DTCoreTextLayoutFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C86E362D36C74FE4559A54576F7C04A5 /* rangy-core.js in Resources */ = {isa = PBXBuildFile; fileRef = 15A5AF469CA067562D1516F98913D4DF /* rangy-core.js */; }; - C8C6CE8DEFF63D9D5FDA9DB100A45DD0 /* DTFoundationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F80AC45FB1DBF50E0E3AA4F26BFA676 /* DTFoundationConstants.m */; }; + C759F2FD36CAF63381C0AB0B99D7BAE3 /* Archive+Progress.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE83356F8FBC1801D29CA93C1A190D81 /* Archive+Progress.swift */; }; + C7CD4D8F66564DF81E180FFDB30F572B /* RDEPUBReaderHighlightsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93F324654B96751DA93FFC59A3679ED6 /* RDEPUBReaderHighlightsViewController.swift */; }; + C85F3E3ED00BE6DBA524F1BE53E008DC /* RDEPUBTextIndexTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 674CA023806B055868320A59D18FD977 /* RDEPUBTextIndexTable.swift */; }; C8F753B56A6C4D2A938B6EA68CF522F8 /* DTColorFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 720396ED306E768BAD28007D5E96B757 /* DTColorFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C964A7EFF40B8EB307EEA1E9EFE07FEE /* RDEPUBWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CD9D3B5B4DC5B0B3B51CC6B8F9AAD86 /* RDEPUBWebView.swift */; }; C9DD05EF2D27FFEBFA7BF6F437168501 /* DTCoreTextConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = A61C8F1BDD76EA59082F65269083BD08 /* DTCoreTextConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9E30ED66CBBE352C35305AC6E1A5F2A /* RDEPUBPaginationCacheCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528643F4F0CD2FEC7AD5C0ACA9895D9D /* RDEPUBPaginationCacheCoordinator.swift */; }; - CAE9C7E8F8BF6322155DB2AA530C905B /* UIView+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 29DEA4D201BB179BB6E228E9F688CD4C /* UIView+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CB177A8E7BE40959C8C71E15CDBA0688 /* RDReaderView-RDReaderViewAssets in Resources */ = {isa = PBXBuildFile; fileRef = 83410CC9CF2ABE63B90A92F2F988BF65 /* RDReaderView-RDReaderViewAssets */; }; - CB26464A5790BA24495D6BEEB5BA4216 /* RDReaderGestureController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE6582B1336C77B6C366DAA669570B4A /* RDReaderGestureController.swift */; }; - CBCADFEE601640B09A1F70DAE191A882 /* RDEPUBAssetRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = E97B6B6C59BBCD6685CE808E64981E76 /* RDEPUBAssetRepository.swift */; }; - CC6B05241A40971D95985E73574BF325 /* DTPieProgressIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 173194D38C897D8E38AD8A194E47DB5C /* DTPieProgressIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA1F1B6F7C24CCC6F7F8A75E8CD73B5C /* NSFileWrapper+DTCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = B43D7603C0D66635268842EC0A2655AC /* NSFileWrapper+DTCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CBF966E59BA90842D96F8AC0F63506D5 /* RDEPUBResourceURLSchemeHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA7439F32DE1A2349B94E9F3EA60EFB /* RDEPUBResourceURLSchemeHandler.swift */; }; CC8B8F3D758E98B51F69EDFAA69663A4 /* NSString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = DC7D3AB85C954DA41E1500936C166C0E /* NSString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CCB0E720D8A29B7877E15196ED3F1712 /* RDEPUBNotePopupCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38063F3F0C8D42DC9970AD664B475B0 /* RDEPUBNotePopupCoordinator.swift */; }; - CDC518E9F14CC95B4A08177DE9844405 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 006D002D86B43AA52E0AFD2E18459107 /* PrivacyInfo.xcprivacy */; }; - CE1AD32EC47B914878C96D72C1DF0407 /* RDEPUBCFIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C1CDD44F96B466A619015AA0A7B2D17 /* RDEPUBCFIError.swift */; }; - CE407E1A7424F091BD8CA5AF29F11D1D /* NSDictionary+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 45A67761829BBB3974CE24FE50E459EA /* NSDictionary+DTError.m */; }; + CE8512459F54E41A09977E6EF2DD9933 /* RDEPUBTextPageVerticalJustifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A53E7C06029DCDA8A67E02513AB726E /* RDEPUBTextPageVerticalJustifier.swift */; }; + CEBD70C204E9891A9D5CF70CCF4C9D29 /* UIView+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 67DA49B61A249C2B8241D8FE166608C9 /* UIView+DTFoundation.m */; }; + CF5E634F602E6E8723852FE93912CCBA /* NSArray+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E5297E7F5769C61C1838962BA76D4F5 /* NSArray+DTError.m */; }; CFC49467FE75BFABC22A1CE2FFA26570 /* DTImage+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = CF1CED3ED65443999913BC0D96ACA151 /* DTImage+HTML.m */; }; - CFE6B9E809438CC90BBC76C4496FF9A2 /* DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F653EFBBEDAAC96A34BC93B4211E792 /* DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D05A5FC200F6862A31CBCEE97B4EB3A4 /* RDEPUBWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09608C067F73D7A137B9F22AF1384DF2 /* RDEPUBWebView.swift */; }; D063317214AFF5143D9C958E5FAFBB38 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - D095B75FDCDDCF2603F89B00FE810F29 /* RDEPUBParser+ReadingProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31B49361D4C4F119B135F85B7A8219DB /* RDEPUBParser+ReadingProfile.swift */; }; - D0F01595DA430FF422E4444660C65D66 /* String+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46B8E1584FAC5111CD0C46A159AB951 /* String+RDEPUB.swift */; }; + D11000ABBDC9F4AA8C2D2D81A640F380 /* RDEPUBSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DD41010C7FC84E0AD4545E0B751822C /* RDEPUBSearchEngine.swift */; }; + D19AB62540BEEDAD415D616509B08445 /* DTAnimatedGIF.m in Sources */ = {isa = PBXBuildFile; fileRef = A3DE08AC23FE36A6C3F33A04700FDE57 /* DTAnimatedGIF.m */; }; D1A93B2D7F1B312755C48790338D7712 /* DTIframeTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = BA8A527A4CCB2AF1C1E26744B301F6B8 /* DTIframeTextAttachment.m */; }; - D1AD11465484A539562B97EACA5A7294 /* RDEPUBReaderEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CDA4D9D71528F8C1070DBF2AFB21AED /* RDEPUBReaderEnvironment.swift */; }; - D35C453CE2934D63A534C3DF14DB1193 /* RDEPUBPageBreakPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD3430DE68FE0020F68C496C24E87470 /* RDEPUBPageBreakPolicy.swift */; }; - D3821C1D1240C48382C3DC9EE086BFC3 /* UIColor+RDEPUBHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABD7D7079A2D977E38F0289E27447EC /* UIColor+RDEPUBHex.swift */; }; - D4978BF32F70F56DC0336ABA26D5B43B /* RDEPUBReaderAnnotationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AB6F109E02D97808539FB0F9B894487 /* RDEPUBReaderAnnotationCoordinator.swift */; }; + D2345E70DE161E0570492E70BD9CD20E /* RDEPUBTextAnnotationOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = D994416DB1DCB53E8D1F4A20D10A3D58 /* RDEPUBTextAnnotationOverlay.swift */; }; + D2D38EFF7A6086D40028DA14F8DAFB9C /* RDEPUBStyleCompatibilityModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41DE1F810FCEEA86135A8828CE7E0B2E /* RDEPUBStyleCompatibilityModels.swift */; }; + D2EFBE6B2968BD4AA79349D2D1558280 /* RDEPUBFontNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42C462DBD1028C2B2C741726F0C4F7D6 /* RDEPUBFontNormalizer.swift */; }; D526E03C098DA6CF8F01C1BC126C9BBA /* DTCoreText-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 13F8FC8B51AD434F5D4B0CF5150D7563 /* DTCoreText-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D5B7E7EE50571CDD4CC29DC213B484D1 /* RDEPUBTextBookCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 696C8561F8104D867B50A79E1147DE02 /* RDEPUBTextBookCache.swift */; }; - D5D4C9E7AF6B052B16C49CFE42C3256D /* RDEPUBChapterDisplayContentCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A6AD2E4A78A3060ED880D0ADFC9C5C7 /* RDEPUBChapterDisplayContentCache.swift */; }; - D774B677F70DE8690AEE544D300325FC /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25B061393791774B154F5F8759A2BDD9 /* RDEPUBAttachmentTooltipOverlayView.swift */; }; + D5D9BDF382C943902AC2A3368DCD932C /* NSURL+DTAppLinks.h in Headers */ = {isa = PBXBuildFile; fileRef = A3F7613E99CAA29881A015D0ED969B86 /* NSURL+DTAppLinks.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D60AA4D9F0BBEF49EE1473A2F0A1CFB5 /* RDEPUBReadingSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFC5E77754171DA25D9A8A76A0985CCF /* RDEPUBReadingSession.swift */; }; + D69EB259E24B2E1077A03FE945FCB5FC /* rangy-serializer.js in Resources */ = {isa = PBXBuildFile; fileRef = 86DD8A5C0624A7C2C0C328A40118C3E8 /* rangy-serializer.js */; }; + D6DF49537490F8634E2BC8778FFDF0F3 /* RDReaderViewProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB3D7F9A13B102C659531CCAAB50035F /* RDReaderViewProtocols.swift */; }; + D796C3C8958054CF0A67EC2BA3E87206 /* RDEPUBNotePopupCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 893B4227196A12B86EF2F32C46FCA05E /* RDEPUBNotePopupCoordinator.swift */; }; + D7D76E53192009455FC0FEE7D341EAB9 /* Archive+MemoryFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF51E56E09E095C92CB5B9F21384027 /* Archive+MemoryFile.swift */; }; + D81B82D5420A636836F8771B438ED8D3 /* Entry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D93C2002AAECD29B3ED5A14026D3DFE /* Entry.swift */; }; D82DDA4C1E5C4D5378A9E5EA3F8E9DFE /* DTBreakHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 14283024FA4A0231B32CA22AA907FEFA /* DTBreakHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D8C46305AAB14F8F5064D519B029AA67 /* RDEPUBRuntimeChapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8590506F0EECF12909B4BBA8CCCF3D6 /* RDEPUBRuntimeChapter.swift */; }; - D9198DC4DEF107D39DA38B282418727B /* UIApplication+DTNetworkActivity.h in Headers */ = {isa = PBXBuildFile; fileRef = 55423549E54A01F039B5F379B264C73F /* UIApplication+DTNetworkActivity.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D9605D2EA0DFC00D02A4DF6BDACB3537 /* Archive+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B9309F0BDDDE2C3EE13C97BF2C0F1E /* Archive+Helpers.swift */; }; + D862245B5224688D82612E8C376A8761 /* RDEPUBNoteModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AC44A856D45E8522194A048ABEAAF86 /* RDEPUBNoteModels.swift */; }; + D894E108A7402D9ACB0E7BB65D938AC2 /* RDReaderPageChildViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F1CF1FACBA97E3B87ED0ECBBA7271E2 /* RDReaderPageChildViewController.swift */; }; + D92F1EB12DB274D47F77C097BDBA2866 /* RDReaderFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFB982B05AC5435F003EC90F8A93EDA0 /* RDReaderFlowLayout.swift */; }; DA5B51E5D80C161D2902B6FC60DA5EC8 /* DTImageTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 27372A23AA4B051867E7D2C749D1DE81 /* DTImageTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA79394BEF363C93BA15CBB18882387F /* RDEPUBStyleSheetBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72F99D96321DF0F2BC595BC7B6A66EA2 /* RDEPUBStyleSheetBuilder.swift */; }; - DACE30D73A9F24E47169758E96D2FB22 /* rangy-serializer.js in Resources */ = {isa = PBXBuildFile; fileRef = 1527510DA54482E3557D6BB3EB651015 /* rangy-serializer.js */; }; DAD16D3E6EBB32FF96C63BFE6037065F /* DTLinkButton.m in Sources */ = {isa = PBXBuildFile; fileRef = CE761A55BD57C0BFD6336CD073F85C31 /* DTLinkButton.m */; }; + DAD96B682717D81AD3D3D22BD899A7EA /* RDEPUBCFI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D1978442C3B21E292AEF661B6F98568 /* RDEPUBCFI.swift */; }; + DBA57C2841C8BCB36412B8CEAAA6AFDC /* RDEPUBWebView+Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = F98C79337772FFEE3E718C3A251E5B9D /* RDEPUBWebView+Search.swift */; }; + DBB66507EB07AB5F08E6D305AA35B8FB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; DBCA42F7E1697F4EC82E0E7C9657851D /* DTAttributedTextCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 068885F1B54CFD5DBBE6E2DC253F7819 /* DTAttributedTextCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DC1D4FD92F5860C25B1827B2570C79E4 /* DTTiledLayerWithoutFade.m in Sources */ = {isa = PBXBuildFile; fileRef = 23006DBAC610AEB0A4B3EAFEA4FB0567 /* DTTiledLayerWithoutFade.m */; }; - DC24B5B7425A85CAA327121EFC13F7A2 /* RDEPUBReaderRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFF9AAECD5FDC285A509FEED0B29951E /* RDEPUBReaderRuntime.swift */; }; DC3E2932A82AD5D88D8B1EFBF004BEC8 /* DTCSSListStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 40FD7C9E2E05FB4A73F4C4C70A3AFAF0 /* DTCSSListStyle.m */; }; - DC5B3968CF64D52B02A9BEC6E775FDD4 /* RDEPUBTextPageRenderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6859E00AB232CC21F2C63A4CCB9EB108 /* RDEPUBTextPageRenderView.swift */; }; + DC976BFEBC952457D8C728BA9C43DC55 /* NSURL+DTUnshorten.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA6D26B26D2653D6E1C871A482BD6DF /* NSURL+DTUnshorten.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DCA2EB6A9C43728C911B1084BABADB13 /* NSString+DTURLEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 131C1D8C96DF2D44A2D4F50C5AEFFF11 /* NSString+DTURLEncoding.m */; }; DD73CD0E5148961D1ABD80E050122314 /* DTCoreTextFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA2ED17D0DDF5F1C5606BFFD9A512DE4 /* DTCoreTextFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; DE68AD2F426FD462BC70F968E5AF5553 /* DTTextAttachmentHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = AC0A4ED7E936923A29A5EEB1D95D6B55 /* DTTextAttachmentHTMLElement.m */; }; - DEF9A0575535DB791E2C22F10A3B0762 /* Archive+BackingConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 765A94769106D14615FFB30EE1BD5E65 /* Archive+BackingConfiguration.swift */; }; + DF711B907615C160BB94C6A1E42D8A4D /* RDReaderPreloadController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C69FCCE0841CEE98E2EBE9D173C0622C /* RDReaderPreloadController.swift */; }; DFB5A1C64C7908FD05BEFF7C7B571353 /* DTAttributedLabel.h in Headers */ = {isa = PBXBuildFile; fileRef = 09FF858DC29B73E9B67B32B03CFF4084 /* DTAttributedLabel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E0ACC692A6E030A3BC76B4C463FC5633 /* RDEPUBReadingLocationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = E67A535D80CEA637777BC317BCFE28C6 /* RDEPUBReadingLocationModels.swift */; }; - E1375BF50702AF2715E3D6B128553DBB /* Data+Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22B69C9433F2FBE5CE8409BD4266DFE8 /* Data+Compression.swift */; }; - E1C9EA6A9255ED661104908CE5FDD37F /* RDPlainTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F44A99D2304FE5397B4DCD6BABAF2B /* RDPlainTextBookBuilder.swift */; }; - E1D7C3ECB222249108F6A0C3DC8B71D1 /* RDReaderView+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D24E48ADEAADE831B2F5FAFBF67CD53D /* RDReaderView+CollectionView.swift */; }; + E014AE1BA45C5E083D1FFB337ECB3222 /* RDEPUBReaderToolViewProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3429C49A65BE1911C634E1C95A0579BA /* RDEPUBReaderToolViewProtocols.swift */; }; + E02468E0045376BD3A3A0E804151674F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 006D002D86B43AA52E0AFD2E18459107 /* PrivacyInfo.xcprivacy */; }; E1DA58105A72D6C0B77A8A9F7822BD68 /* DTCoreTextLayoutFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 4641C3C93CE32054665ACF80457A7A94 /* DTCoreTextLayoutFrame.m */; }; - E2743CECD77E9F0CBBBBE0208C06A4F5 /* Archive+Reading.swift in Sources */ = {isa = PBXBuildFile; fileRef = E865600EE9117A9153716299FFA7912D /* Archive+Reading.swift */; }; - E2C8F99C0D397CB91F64EE73021E60AA /* RDReaderPageChildViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33452E6D078F6CC1EF8A17DF42966CAA /* RDReaderPageChildViewController.swift */; }; + E28DE61EC40C0EB8EE1467CA5996673B /* RDEPUBWebViewDebug.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF774474543DB1EEE0F2F8BCC54382AE /* RDEPUBWebViewDebug.swift */; }; + E35D15D74F94257E29D10826BFB666FC /* RDEPUBCFIUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53BFEB15CE78B6B97488049218D34E0C /* RDEPUBCFIUtilities.swift */; }; + E37E3251D86E8B673CB16F60CA1151C1 /* UIScreen+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = AF436E76C893E223A4F0BE86C1276054 /* UIScreen+DTFoundation.m */; }; E38FC7829B5BDD1588FA487E0FBAC208 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - E398FC9914DF2A5088DB753AD361A4AC /* RDEPUBReaderController+DataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A42607282986A7CB11AD3361E82530C /* RDEPUBReaderController+DataSource.swift */; }; - E4088DFB00F106A3BEA476A1570497B8 /* RDEPUBBackgroundCoverageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92BDC596AE388602E419B3750DAD4229 /* RDEPUBBackgroundCoverageStore.swift */; }; - E48E862AD8952D3C1C6873484996A37E /* RDEPUBChapterCacheKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = E07FDF85BE977EC47B3B8194DA98648E /* RDEPUBChapterCacheKey.swift */; }; - E735D9E4200242DD1A20A21BD5DE96E8 /* RDURLReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5253C9907BB440614610BB054B001181 /* RDURLReaderController.swift */; }; - E7BBD037775F4E4FC8C5F5B2C1F6DE74 /* RDEPUBImageViewerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75DA84652E7A2A0529D8385085690062 /* RDEPUBImageViewerCoordinator.swift */; }; - E8401B395AE4914B5EE2D0C09CDCF841 /* RDEPUBChapterDataCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842C60964BEEDCF50FFF84E40B135751 /* RDEPUBChapterDataCache.swift */; }; - E847811FA489F675A69816A24E89C7C0 /* RDEPUBReaderBottomToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA7348D6DBED868AB2EC3A252840235A /* RDEPUBReaderBottomToolView.swift */; }; + E3F85B1C4C7D7FEEFCD2035465E062A8 /* RDEPUBRuntimePageCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = F518D64E810A583A82D13ED1FEF8ACF8 /* RDEPUBRuntimePageCount.swift */; }; + E414D1C3659D3390E1429E8E450972D1 /* DTActivityTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = AF1516035C269F7A41EE064AAB14D562 /* DTActivityTitleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E7581E6A941BC4B761D6FB321E311B4E /* RDEPUBRenderDiagnosticsCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3011B53A527F51AB7C6ABF0151CC130 /* RDEPUBRenderDiagnosticsCollector.swift */; }; E8AB5CE26A5224EF09E9E363D70C7775 /* DTDictationPlaceholderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FA88D00B7B2B2F0BA98BB92DF035906 /* DTDictationPlaceholderView.m */; }; - E90D43AA0AD458CB37C055A739FC7F45 /* RDEPUBRuntimePageCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36B0EC72869740D8DB68B51304CC9B48 /* RDEPUBRuntimePageCount.swift */; }; + E8E13704514FAF7EF892BBBB71FB9C0E /* RDReaderView+ContentAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B84F7CB373F124B5ADA362B7A204376 /* RDReaderView+ContentAccess.swift */; }; + E944A14E0C8C3352C2DF3AF4586F0B7B /* RDEPUBReaderSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67B9C855C41D2A2276BB04970B73D00B /* RDEPUBReaderSettings.swift */; }; EA0040823CCF8E97363DB5891F5DA6D0 /* DTCoreTextFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4917E08E6E59460594AC443EDDAB7E77 /* DTCoreTextFunctions.m */; }; - EAF13D2953FCD72F195E9570B52E3912 /* Date+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D23D8D10719754D93032F66EB98536 /* Date+ZIP.swift */; }; - EB30F253217E1FEF29C352010550227C /* RDEPUBPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1EAAFA56DA59E80D53DA0DC7C6532D2 /* RDEPUBPreferences.swift */; }; + EA5614D5101DCABD4056EED65EB1A393 /* RDReaderTapRegionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = B023EBCF5E4ECC879A57A325F2015CAA /* RDReaderTapRegionHandler.swift */; }; + EA9A53D3DDE22E73A6D8DE79D54547C1 /* Archive+BackingConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 765A94769106D14615FFB30EE1BD5E65 /* Archive+BackingConfiguration.swift */; }; + EB2E030B0EF64230A77CAE0CF3CED75B /* RDReaderView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 085DA39E20C3A758783B115AB62B1E72 /* RDReaderView-dummy.m */; }; EBB7E4D4DB253B5F1267CF9B4DDB4E93 /* DTCoreTextFontDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 88464D2E3579F1A5B25DCCA128528938 /* DTCoreTextFontDescriptor.m */; }; - EC421506FB12180BE48E4066B67176DD /* DTFolderMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = BEA46E51E3616ECEAF0ACCEA9B8C67EF /* DTFolderMonitor.m */; }; + ECEA44771F14DE0FC56B152EE4B3DB79 /* RDEPUBPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9191031A62C049190D2BAAF26FCB4894 /* RDEPUBPreferences.swift */; }; + ED77BE7CC7893313B521DBD76A6046F6 /* RDEPUBPublication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F16DD7BE31C1407239419FAB208F7E9 /* RDEPUBPublication.swift */; }; EDA269B595D70EC2B9D81DC890157D63 /* DTAccessibilityViewProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 399AED6BF151EC39BE4450784795A832 /* DTAccessibilityViewProxy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EDB22948AD6C7DFB5AF514AAC74CCEB4 /* UIScreen+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C5E29D728B8CD4EABC0B3DD9CD9DE99 /* UIScreen+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDA8BF97142B946BABB6CB8FFF83AD77 /* wxread-dark.css in Resources */ = {isa = PBXBuildFile; fileRef = B52A7884E951C3C2064E5610DD417DA5 /* wxread-dark.css */; }; + EDEFE5CF02BBC892F19412E18C611C41 /* RDEPUBFragmentMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1310063EDD27977AEF26DC0B83BA0811 /* RDEPUBFragmentMarkerInjector.swift */; }; EE4F0992A0F597320FF7BDE4691D0FD4 /* NSString+CSS.h in Headers */ = {isa = PBXBuildFile; fileRef = 3578B97A85BCDC60888FDF87B8F2600C /* NSString+CSS.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EE82D71B45FB3F5253C20CED00A83905 /* epub-bridge.js in Resources */ = {isa = PBXBuildFile; fileRef = 64676B6C8A9F9195A481010213F37B6C /* epub-bridge.js */; }; - EF83C2E1CFBB5E27E20DB1CBED62B356 /* DTWeakSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = E4C5EB3F8F005C65005C101A9DBE488A /* DTWeakSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EFD93ED339F0D5CB242D3D1316AACE15 /* DTLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 207CC0EEB74CECEB43A870FF80560E0F /* DTLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EE6F2222A52155B6C4295C6E85E6E43F /* RDEPUBAnnotationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17E520FDB2483CFB8A76E13BAB2BFFD8 /* RDEPUBAnnotationModels.swift */; }; + EEE698A9AA88E431076CF2F530BD82A9 /* DTFolderMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = BEA46E51E3616ECEAF0ACCEA9B8C67EF /* DTFolderMonitor.m */; }; F006F73F17F2E3CC0E7852E9357BA946 /* DTAnchorHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 599172147A32B6978EB5AAE1BE55FF7A /* DTAnchorHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F01B5B179687BFD9F9926BBDB6ACF96A /* Archive+WritingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2373DCA0FC45287BFC063BEA661B8367 /* Archive+WritingDeprecated.swift */; }; - F044036C609628883322321D708E6A8B /* RDEPUBCFITextAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE1B490DE56DE55724779E3E8BF6D14A /* RDEPUBCFITextAssertion.swift */; }; - F0CCACFC44ACC09F51A457F95A5079E4 /* DTBase64Coding.m in Sources */ = {isa = PBXBuildFile; fileRef = E5D4D6E12779C54F17AE98A1E6C9B699 /* DTBase64Coding.m */; }; F0F631056BADA32253528247DF493272 /* DTHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C508BE899A1397560A767CAEADB7B9 /* DTHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F1CDC4F8B2FA28E00CBD282DFA72D49C /* RDEPUBReaderSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5857420A221729DB0D3EBBC59AA4BFF2 /* RDEPUBReaderSettingsViewController.swift */; }; - F28C5B831BFD35396E6F45BF65AD1F28 /* RDReaderPagingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C99F4EC07FF6B3DD8C8B72E54DEB008 /* RDReaderPagingController.swift */; }; - F36F09BAA9AE57FF3DCBABA061CAC4A0 /* NSFileWrapper+DTCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = B43D7603C0D66635268842EC0A2655AC /* NSFileWrapper+DTCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F1B14CF589E4B3B29B40C70508CB3466 /* RDEPUBTextPageBoundaryValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 713A7931BFA76291ACE4C095423CA7C2 /* RDEPUBTextPageBoundaryValidator.swift */; }; + F1EAB3BF7B71E2FE5F88E8544F95E69A /* rangy-core.js in Resources */ = {isa = PBXBuildFile; fileRef = 4568EB88B6EDC55FAC77D565DA1A2750 /* rangy-core.js */; }; + F282B0A9FAE1B412D35B15D948B35386 /* RDEPUBCSSCompatibilityLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A48622CB59921725556CF92DE20EC3C0 /* RDEPUBCSSCompatibilityLayer.swift */; }; + F49D68621947F34F8F87BAC589B249E6 /* RDEPUBDTCoreTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 635FB53F5F49CC7F40F7C5E700A3A3EE /* RDEPUBDTCoreTextRenderer.swift */; }; F4A2E3C4237B8931F61B72FF0BDD6D69 /* DTObjectTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EDA1618562CC224690CF6FC03AFED38 /* DTObjectTextAttachment.m */; }; - F4B2FA0C6A5D681F76C6C6F41F06D437 /* RDReaderTapRegionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = D75F5147BF67C9935CC45C16F0118C14 /* RDReaderTapRegionHandler.swift */; }; - F4B3D5E720E9ECEF3813E3F20392725F /* Archive+Progress.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE83356F8FBC1801D29CA93C1A190D81 /* Archive+Progress.swift */; }; + F4D1800D694F5268E261595E762CA5DD /* DTVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = CCC633BF76C79E0B4A6750337D5DCDB8 /* DTVersion.m */; }; + F4DA7A510251FD67DE5B9A05D542FA21 /* RDEPUBReaderEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = B34DC8A160DF20B18E04242D92D54346 /* RDEPUBReaderEnvironment.swift */; }; F58ABA106C6200175DF574DF05A75BA8 /* DTAccessibilityElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F842408AB76A580B80255453F2FDF6 /* DTAccessibilityElement.m */; }; F5A424E67F41C4F7B830CE2F7E71570D /* DTCoreText-Resources in Resources */ = {isa = PBXBuildFile; fileRef = F4E2B1AC73977F10254628C0B7EBE38F /* DTCoreText-Resources */; }; + F5DD147A6DA2FB3DE8E6EC4770E0F03F /* RDEPUBReaderPaginationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A33BBD0D82DD401D9A3FF02B10B320B6 /* RDEPUBReaderPaginationCoordinator.swift */; }; F6036BBDFE7484F5A453F6876C97C098 /* NSAttributedString+SmallCaps.m in Sources */ = {isa = PBXBuildFile; fileRef = 98CF9C5D504838741E399811F4D5A0B7 /* NSAttributedString+SmallCaps.m */; }; F61102C9BF3D6296CB6C6B754ABF98C5 /* DTTextHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 69076FC9D4201719C319547346DA3E21 /* DTTextHTMLElement.m */; }; - FB2C643CD9553D5BD03E4BA5088E71EB /* cssInjector.js in Resources */ = {isa = PBXBuildFile; fileRef = 2EBD41467F344F6091AD0C1A3981EDC3 /* cssInjector.js */; }; - FB4199352AAC811E9BC4FEBAEFDBE66C /* RDEPUBReaderState.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE9B612343098773F84020F02EF8FB23 /* RDEPUBReaderState.swift */; }; - FBDD7D73613BCCAE82217DEDC25F3827 /* RDEPUBParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AACA59CA4CBD2AFAACC3D162C2C75B5 /* RDEPUBParser.swift */; }; + F6888700DC52E960BF105470D3CB15F3 /* Archive+Reading.swift in Sources */ = {isa = PBXBuildFile; fileRef = E865600EE9117A9153716299FFA7912D /* Archive+Reading.swift */; }; + F7AA4D5FCE8E17C48A14FB08E61781C2 /* RDEPUBPageInteractionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1156A086D0660F13701595F2CA185B73 /* RDEPUBPageInteractionController.swift */; }; + F881F0F632ED90609AF3055471A3E5B2 /* RDEPUBHTMLNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C8C8F9EC45583D9AC337EE967208872 /* RDEPUBHTMLNormalizer.swift */; }; + F978F917AEE877B3955CC71F69AEDA3F /* RDEPUBReaderChromeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15C30720702E12C08A23F03FF9F06A46 /* RDEPUBReaderChromeCoordinator.swift */; }; + FAC3DC7E5DE280771DD4A21A7436E52F /* DTTiledLayerWithoutFade.h in Headers */ = {isa = PBXBuildFile; fileRef = 0764D155F69503AACFA7AD976825E986 /* DTTiledLayerWithoutFade.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FB6229275E860304DE410C3ABACA8368 /* RDReaderContentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5CA72BC08E08AF5467ECB9D87611149 /* RDReaderContentCell.swift */; }; + FBB3C772E5087E1951F211ED447FD8C2 /* RDEPUBDarkImageAdjuster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E6187139F503118F5A562E9A48344D4 /* RDEPUBDarkImageAdjuster.swift */; }; FC5F52919451A15639442B46B38E4C67 /* DTCoreTextLayoutFrame+Cursor.m in Sources */ = {isa = PBXBuildFile; fileRef = EF625CF6A790938F5CE0F0C7DC36E340 /* DTCoreTextLayoutFrame+Cursor.m */; }; - FCD2420C80CC980EEED544B1BF12A5E1 /* RDEPUBChapterWarmupOrchestrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2622CEF5D9B34D713B60EB2991499EDC /* RDEPUBChapterWarmupOrchestrator.swift */; }; - FCD460BA901F28C1098FE3E601D67E06 /* RDEPUBCFIMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11C3B7C93919D787AAC0C4D25E52805A /* RDEPUBCFIMarkerInjector.swift */; }; - FCD556E1A22809B004BBB7722C5F0D8E /* Archive+ReadingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5193541848D2D1BF115A45D8A730611C /* Archive+ReadingDeprecated.swift */; }; + FC9DC8D4C96D819E9BE20F05441E0459 /* DTVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C9575F05D72C239E7E6F079BACDF4C7 /* DTVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; FD5D68887297CFA94F543C49DC68A156 /* DTHTMLAttributedStringBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = E0192469A486DA7CECFECEA37518B6B9 /* DTHTMLAttributedStringBuilder.m */; }; - FDE567E1D200A599BDB6090ED4C8E577 /* RDEPUBReaderController+RuntimeBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90779E903799E06765C8410408D06C76 /* RDEPUBReaderController+RuntimeBridge.swift */; }; + FDFFFDA2B22F1AF0F845CB42C63CFDFB /* DTAnimatedGIF.h in Headers */ = {isa = PBXBuildFile; fileRef = F9D9BEF72311AF9E3239F9B92A9D2842 /* DTAnimatedGIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; FEB00C614DCB6A8A7BDF8DEE11260984 /* NSMutableAttributedString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CA72FA9A4F2F42A75C58325738A44AC /* NSMutableAttributedString+HTML.m */; }; - FF459F7B0C40924DB0D1F4AE703C2133 /* URL+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6430501430329643C8280B3985C48711 /* URL+ZIP.swift */; }; + FEBA341DB483809E5E6867783DDA6A11 /* RDEPUBReaderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4EA2355F64BEA505537D228D101D967 /* RDEPUBReaderDelegate.swift */; }; FFEB74D61E54DC46EFE0DBE2E76EFAA1 /* Pods-ReadViewDemo-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EBA0272559B0F7FAD8AC670AC7431188 /* Pods-ReadViewDemo-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 074F879ADE9999797C86C3740B5E32D4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = AA2E57587AA8EECA63C4BE08EA3CB6D2; - remoteInfo = RDReaderView; - }; - 2ED6C00B62E16EDD0756021F22DF82D0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C7A8D82E407CD3FDC3BA55CEE519B252; - remoteInfo = "ZIPFoundation-ZIPFoundation_Privacy"; - }; - 3868F6EA6B9BF861CF7177F46830F1BD /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; - remoteInfo = DTFoundation; - }; - 7A2CCFC5E3869A63E6A282D8684D7A53 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; - remoteInfo = DTFoundation; - }; - 97B0BF093C37416184C7A171B080AC06 /* PBXContainerItemProxy */ = { + 14DAE0FAD0D1B19388CB9AA5D13DC5A4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C24CB0E87A728A11AA1124CB360D6A1; remoteInfo = "DTCoreText-Resources"; }; - A4328450FDA153EAB4BD0783C46E485B /* PBXContainerItemProxy */ = { + 34C38B7572F96194A86992F982080DE3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; remoteInfo = DTCoreText; }; - A67D6F565DADD3E0774013433C994B6E /* PBXContainerItemProxy */ = { + 351888AD0675DE4DF54F06BC38FB2999 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; - remoteInfo = ZIPFoundation; + remoteGlobalIDString = C7A8D82E407CD3FDC3BA55CEE519B252; + remoteInfo = "ZIPFoundation-ZIPFoundation_Privacy"; }; - AAFAB68D136C5F2D92DBAB8B29FD0AB5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; - remoteInfo = DTCoreText; - }; - AD4ABAC26C7FD0B1AF7E70325A736A1D /* PBXContainerItemProxy */ = { + 7677F420C9062853DC411E1D6CD67450 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = AE7F393FB7805DE2664AB4111873F907; remoteInfo = "RDReaderView-RDReaderViewAssets"; }; - D6606DA782022F182AB83DC44599FC10 /* PBXContainerItemProxy */ = { + 84ADF252286F6B6A90FDCAF49CFD1CF7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; + remoteInfo = DTFoundation; + }; + 909CE499960E68FFEEAC3F07CCED816D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AA2E57587AA8EECA63C4BE08EA3CB6D2; + remoteInfo = RDReaderView; + }; + DA8CE4540395617C72E05FAD18A9E528 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; remoteInfo = ZIPFoundation; }; + E02D487CC5FCE17A09C6D7F992E61FA5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; + remoteInfo = ZIPFoundation; + }; + E6196200916399BA1FC57E48F75BEA93 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; + remoteInfo = DTCoreText; + }; + FC2A40799EA5B233DDF797D1E36600CE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; + remoteInfo = DTFoundation; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 006D002D86B43AA52E0AFD2E18459107 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/ZIPFoundation/Resources/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 008302A48FE881CADADBCB02832B880B /* RDReaderSpreadResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderSpreadResolver.swift; sourceTree = ""; }; - 02B2F8AC62D3CFC4C1A082B868C195F7 /* RDEPUBChapterSummaryDiskCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterSummaryDiskCache.swift; sourceTree = ""; }; + 00E9FEEAFFD8790F7439A91AD283F5F3 /* RDEPUBCFISerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFISerializer.swift; sourceTree = ""; }; + 03381B40A2B1AD4E41BCC3BE2C31B626 /* RDEPUBReaderSearchBarView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchBarView.swift; sourceTree = ""; }; 0372FD1824BC43F7BD6B337430201420 /* DTCoreGraphicsUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreGraphicsUtils.m; path = Core/Source/DTCoreGraphicsUtils.m; sourceTree = ""; }; - 0389417C712B5E7FA8F9FBB870FA2227 /* RDEPUBSelectionState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionState.swift; sourceTree = ""; }; - 0430034A7AFBCEC269D7C46517004DF0 /* RDEPUBNoteDetector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteDetector.swift; sourceTree = ""; }; 044BEA679671E16EA9BA9AD627750742 /* NSMutableAttributedString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableAttributedString+HTML.h"; path = "Core/Source/NSMutableAttributedString+HTML.h"; sourceTree = ""; }; 045ADBF2087ADD914A9CA0B62EBF2A9F /* Pods-ReadViewDemo.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ReadViewDemo.modulemap"; sourceTree = ""; }; - 04D90198F17A11D36ABBECA5A4F3AD7F /* RDEPUBMetadataParseCancellationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseCancellationController.swift; sourceTree = ""; }; - 05474A384503DBB6DB8EF47D660B849C /* RDEPUBTextPageVerticalJustifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageVerticalJustifier.swift; sourceTree = ""; }; - 055B53D0A60DC351390338A48800AE77 /* RDEPUBNavigatorLayoutContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNavigatorLayoutContext.swift; sourceTree = ""; }; 057DBFBFC99448A0B77A3C0DBB13B4A9 /* NSScanner+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSScanner+HTML.m"; path = "Core/Source/NSScanner+HTML.m"; sourceTree = ""; }; 05838D65DEC339C51AADB17346B7E287 /* NSDictionary+DTError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+DTError.h"; path = "Core/Source/NSDictionary+DTError.h"; sourceTree = ""; }; + 0634E78287117CD08963FC5011711674 /* RDEPUBTextContentInteractionCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentInteractionCoordinator.swift; sourceTree = ""; }; 068885F1B54CFD5DBBE6E2DC253F7819 /* DTAttributedTextCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedTextCell.h; path = Core/Source/DTAttributedTextCell.h; sourceTree = ""; }; 0764D155F69503AACFA7AD976825E986 /* DTTiledLayerWithoutFade.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTiledLayerWithoutFade.h; path = Core/Source/iOS/DTTiledLayerWithoutFade.h; sourceTree = ""; }; - 07E07EEE45C5439A207C5647210A4A7F /* RDEPUBSearchModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSearchModels.swift; sourceTree = ""; }; + 07EC70D349899B89F4546FFE4DE46EEC /* RDEPUBChapterLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLoader.swift; sourceTree = ""; }; 0834E84632886CDD9911CAB76183F1CE /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 08ABF9E1CC5582725B03469178A59A0A /* RDEPUBReaderController+RenderSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RenderSupport.swift"; sourceTree = ""; }; - 08AF3CF7541223D386A278B79878A8DF /* RDEPUBReaderViewportMonitor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderViewportMonitor.swift; sourceTree = ""; }; + 085DA39E20C3A758783B115AB62B1E72 /* RDReaderView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RDReaderView-dummy.m"; sourceTree = ""; }; + 0879F59F605F8E1512ADB3D29CB7912E /* RDEPUBCFIParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIParser.swift; sourceTree = ""; }; 08F54C3D9B4AECA08A47309615DC2715 /* DTFoundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTFoundation-prefix.pch"; sourceTree = ""; }; - 09336B106D598DCD38F6B79AEA629066 /* RDEPUBCoreTextPageFrameFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCoreTextPageFrameFactory.swift; sourceTree = ""; }; - 09608C067F73D7A137B9F22AF1384DF2 /* RDEPUBWebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebView.swift; sourceTree = ""; }; 09FF858DC29B73E9B67B32B03CFF4084 /* DTAttributedLabel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedLabel.h; path = Core/Source/DTAttributedLabel.h; sourceTree = ""; }; - 0ABD7D7079A2D977E38F0289E27447EC /* UIColor+RDEPUBHex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUBHex.swift"; sourceTree = ""; }; - 0ADCC15F3965570C3568420F9A75845E /* RDEPUBCFIParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIParser.swift; sourceTree = ""; }; - 0B4FEEF73E68688CF8770B9A3A368710 /* RDEPUBBackgroundPriorityPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundPriorityPolicy.swift; sourceTree = ""; }; 0B8321AB80CFE0B94537AEA63E9A79F5 /* NSString+Paragraphs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Paragraphs.h"; path = "Core/Source/NSString+Paragraphs.h"; sourceTree = ""; }; + 0BFA10454111B92A9838334E4C3BDD21 /* RDEPUBChapterOffsetMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterOffsetMap.swift; sourceTree = ""; }; 0C24F592C4F38F15DC8C46BE0442B59C /* DTCSSListStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCSSListStyle.h; path = Core/Source/DTCSSListStyle.h; sourceTree = ""; }; + 0C6F4C9D48FC61243E5E405457EB1AB3 /* RDEPUBSearchModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSearchModels.swift; sourceTree = ""; }; + 0CE5DDE420852CFC895FEF2572577505 /* RDEPUBCFIMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIMarkerInjector.swift; sourceTree = ""; }; 0D93C2002AAECD29B3ED5A14026D3DFE /* Entry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Entry.swift; path = Sources/ZIPFoundation/Entry.swift; sourceTree = ""; }; - 0EA81A6E9B081AC375550C90411530B8 /* RDReaderView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RDReaderView-Info.plist"; sourceTree = ""; }; - 0F5110430A322C853C80F6041B0EDF94 /* RDEPUBTextBookBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookBuilder.swift; sourceTree = ""; }; + 0EA7439F32DE1A2349B94E9F3EA60EFB /* RDEPUBResourceURLSchemeHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBResourceURLSchemeHandler.swift; sourceTree = ""; }; + 0ED3B8B105513BA029A8DAC14677F712 /* RDEPUBBackgroundPriorityPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundPriorityPolicy.swift; sourceTree = ""; }; 0F80AC45FB1DBF50E0E3AA4F26BFA676 /* DTFoundationConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTFoundationConstants.m; path = Core/Source/DTFoundationConstants.m; sourceTree = ""; }; - 104930ADAD326C90EB587485A6BFF755 /* RDEPUBCFIGenerator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIGenerator.swift; sourceTree = ""; }; - 10E90103F330F58312FAAE9AA82E84B6 /* RDEPUBReaderController+ExternalLinks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ExternalLinks.swift"; sourceTree = ""; }; - 11C3B7C93919D787AAC0C4D25E52805A /* RDEPUBCFIMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIMarkerInjector.swift; sourceTree = ""; }; - 11D2090101EA891F21834863EE859AE8 /* RDEPUBNoteResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteResolver.swift; sourceTree = ""; }; + 104CAC07B59B05601D706C051CFB2EB3 /* RDEPUBParser+Resources.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Resources.swift"; sourceTree = ""; }; + 1156A086D0660F13701595F2CA185B73 /* RDEPUBPageInteractionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageInteractionController.swift; sourceTree = ""; }; 126E6ACAC7C0427806B58DA8E10BDD78 /* NSMutableString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableString+HTML.m"; path = "Core/Source/NSMutableString+HTML.m"; sourceTree = ""; }; + 12B21DE048B2D9B7F8A8075D627B518F /* RDEPUBTextPageDecorationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageDecorationView.swift; sourceTree = ""; }; + 1300C3BDE866D4C29C0792C55713758D /* RDEPUBReaderContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderContext.swift; sourceTree = ""; }; 1300CC5794E609DB8FBA6FFF90A09408 /* UIImage+DTFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+DTFoundation.h"; path = "Core/Source/iOS/UIImage+DTFoundation.h"; sourceTree = ""; }; + 1310063EDD27977AEF26DC0B83BA0811 /* RDEPUBFragmentMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFragmentMarkerInjector.swift; sourceTree = ""; }; 131C1D8C96DF2D44A2D4F50C5AEFFF11 /* NSString+DTURLEncoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTURLEncoding.m"; path = "Core/Source/NSString+DTURLEncoding.m"; sourceTree = ""; }; 13597E7190F2C08C5906D7D128E43E99 /* DTObjectTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTObjectTextAttachment.h; path = Core/Source/DTObjectTextAttachment.h; sourceTree = ""; }; 13F8FC8B51AD434F5D4B0CF5150D7563 /* DTCoreText-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTCoreText-umbrella.h"; sourceTree = ""; }; 14283024FA4A0231B32CA22AA907FEFA /* DTBreakHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTBreakHTMLElement.h; path = Core/Source/DTBreakHTMLElement.h; sourceTree = ""; }; + 1429432AAB58A7FBEEA14E2716F7D97E /* RDEPUBAttachmentNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentNormalizer.swift; sourceTree = ""; }; 148B993AB228816D19FCB7CD13874C83 /* DTAnchorHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAnchorHTMLElement.m; path = Core/Source/DTAnchorHTMLElement.m; sourceTree = ""; }; 14E63A0D35D4A07BD0123021EA161C99 /* DTHTMLWriter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLWriter.h; path = Core/Source/DTHTMLWriter.h; sourceTree = ""; }; - 1527510DA54482E3557D6BB3EB651015 /* rangy-serializer.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "rangy-serializer.js"; path = "Sources/RDReaderView/EPUBCore/Resources/rangy-serializer.js"; sourceTree = ""; }; - 15A5AF469CA067562D1516F98913D4DF /* rangy-core.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "rangy-core.js"; path = "Sources/RDReaderView/EPUBCore/Resources/rangy-core.js"; sourceTree = ""; }; - 170D81239AF3CE5CD64BA2E44A505872 /* RDEPUBParser+Resources.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Resources.swift"; sourceTree = ""; }; + 15C30720702E12C08A23F03FF9F06A46 /* RDEPUBReaderChromeCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChromeCoordinator.swift; sourceTree = ""; }; + 165E51AE35F6043DF9684A794A48F348 /* UIColor+RDEPUBHex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUBHex.swift"; sourceTree = ""; }; + 16735EDC0457A01293AE4660C1097B43 /* RDEPUBReaderSearchCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchCoordinator.swift; sourceTree = ""; }; + 169DD70FDD7715783E8DD88ADB49E35E /* RDEPUBReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderController.swift; sourceTree = ""; }; 173194D38C897D8E38AD8A194E47DB5C /* DTPieProgressIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTPieProgressIndicator.h; path = Core/Source/iOS/DTPieProgressIndicator.h; sourceTree = ""; }; - 174D4D5E30ACC1B5266B20D621E65064 /* RDEPUBImageViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewController.swift; sourceTree = ""; }; - 17A6573887F6DA388F2EA0B96400C892 /* RDEPUBReaderController+TableOfContents.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+TableOfContents.swift"; sourceTree = ""; }; + 17E520FDB2483CFB8A76E13BAB2BFFD8 /* RDEPUBAnnotationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAnnotationModels.swift; sourceTree = ""; }; + 18CD683F1DDEBEF3EDA621F9D3E95178 /* RDEPUBCFIMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIMap.swift; sourceTree = ""; }; 18D23D8D10719754D93032F66EB98536 /* Date+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Date+ZIP.swift"; path = "Sources/ZIPFoundation/Date+ZIP.swift"; sourceTree = ""; }; + 18D7EB46EC2C4DD8B46B6FADEFD16BB6 /* RDEPUBNotePopupViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupViewController.swift; sourceTree = ""; }; 18F842408AB76A580B80255453F2FDF6 /* DTAccessibilityElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAccessibilityElement.m; path = Core/Source/DTAccessibilityElement.m; sourceTree = ""; }; 199E2ECC77BDAC03F644C20040F042D4 /* DTLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTLog.m; path = Core/Source/DTLog.m; sourceTree = ""; }; 1A88AA04D7B29A217B432C19AC48AB6B /* DTStylesheetHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTStylesheetHTMLElement.h; path = Core/Source/DTStylesheetHTMLElement.h; sourceTree = ""; }; - 1AAF82A90409132033768049C49798C3 /* RDEPUBTextAnnotationOverlay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnnotationOverlay.swift; sourceTree = ""; }; - 1AB6F109E02D97808539FB0F9B894487 /* RDEPUBReaderAnnotationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAnnotationCoordinator.swift; sourceTree = ""; }; + 1AA0F27424B80E5D07E45D8DA86C9C26 /* epub-bridge.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "epub-bridge.js"; path = "Sources/RDReaderView/EPUBCore/Resources/epub-bridge.js"; sourceTree = ""; }; 1AD502A1FA6EB1E38200B5283F979504 /* Pods-ReadViewDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReadViewDemo.release.xcconfig"; sourceTree = ""; }; - 1C3DEA097D20AC964CFB673C39B4A8AF /* RDReaderView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RDReaderView-dummy.m"; sourceTree = ""; }; - 1CDA4D9D71528F8C1070DBF2AFB21AED /* RDEPUBReaderEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderEnvironment.swift; sourceTree = ""; }; + 1EAC09034BA70013D5EB674B407F2C63 /* RDEPUBChapterRuntimeStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterRuntimeStore.swift; sourceTree = ""; }; 1EF19AD0EF4889156D46061FB43E0F5D /* DTCoreTextFontDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextFontDescriptor.h; path = Core/Source/DTCoreTextFontDescriptor.h; sourceTree = ""; }; 1F1F7BFB63DE15D627EB8F64829B8AAD /* NSURL+DTComparing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURL+DTComparing.h"; path = "Core/Source/NSURL+DTComparing.h"; sourceTree = ""; }; - 1F6418C1A247C2BC37337DE4C0A9C770 /* RDEPUBReaderSearchBarView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchBarView.swift; sourceTree = ""; }; + 1FA75FCB2F9051FFC2C7EC7FD801B3B6 /* RDEPUBReaderTopToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTopToolView.swift; sourceTree = ""; }; 1FA88D00B7B2B2F0BA98BB92DF035906 /* DTDictationPlaceholderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTDictationPlaceholderView.m; path = Core/Source/DTDictationPlaceholderView.m; sourceTree = ""; }; 2047430DF5C84E0A8FC8874A2B915FC3 /* Pods-ReadViewDemo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReadViewDemo-acknowledgements.markdown"; sourceTree = ""; }; 207CC0EEB74CECEB43A870FF80560E0F /* DTLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTLog.h; path = Core/Source/DTLog.h; sourceTree = ""; }; - 2120F356DBB0D7C46B15B379759AC7AE /* RDEPUBMetadataParseWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseWorker.swift; sourceTree = ""; }; 214F0FC87DE99D3FCE69D98B357F3FFC /* DTCoreTextLayoutFrame+Cursor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DTCoreTextLayoutFrame+Cursor.h"; path = "Core/Source/DTCoreTextLayoutFrame+Cursor.h"; sourceTree = ""; }; 21CCCCAAF832BE9C859BEDDC79B4E9E2 /* DTSmartPagingScrollView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTSmartPagingScrollView.h; path = Core/Source/iOS/DTSmartPagingScrollView.h; sourceTree = ""; }; - 21D501067A95E18D0DCAEF44170D36F2 /* UIColor+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUB.swift"; sourceTree = ""; }; + 22887CE9C9E366BD11055E6B101C9A00 /* RDEPUBChapterPageCounter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterPageCounter.swift; sourceTree = ""; }; 22B69C9433F2FBE5CE8409BD4266DFE8 /* Data+Compression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Compression.swift"; path = "Sources/ZIPFoundation/Data+Compression.swift"; sourceTree = ""; }; 23006DBAC610AEB0A4B3EAFEA4FB0567 /* DTTiledLayerWithoutFade.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTiledLayerWithoutFade.m; path = Core/Source/iOS/DTTiledLayerWithoutFade.m; sourceTree = ""; }; 23588B63FC4026A371F5C683744A664C /* DTFoundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTFoundation-umbrella.h"; sourceTree = ""; }; 2361BC151481D2717ED43C5659725945 /* ZIPFoundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ZIPFoundation.modulemap; sourceTree = ""; }; 2373DCA0FC45287BFC063BEA661B8367 /* Archive+WritingDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+WritingDeprecated.swift"; path = "Sources/ZIPFoundation/Archive+WritingDeprecated.swift"; sourceTree = ""; }; 238893C9CBD95CB9BDF069EB5A303E17 /* RDReaderView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = RDReaderView; path = RDReaderView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 24130F5639CFFFA28D8BE6C2BD7A45FE /* RDEPUBTextSearchEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSearchEngine.swift; sourceTree = ""; }; - 25B061393791774B154F5F8759A2BDD9 /* RDEPUBAttachmentTooltipOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipOverlayView.swift; sourceTree = ""; }; - 25D28385D66ED93351515441996056D7 /* RDEPUBTextContentInteractionCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentInteractionCoordinator.swift; sourceTree = ""; }; 25DDD76CA572F0C7AB5A8178CF80169D /* DTCoreTextFontCollection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextFontCollection.h; path = Core/Source/DTCoreTextFontCollection.h; sourceTree = ""; }; - 2622CEF5D9B34D713B60EB2991499EDC /* RDEPUBChapterWarmupOrchestrator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterWarmupOrchestrator.swift; sourceTree = ""; }; 27372A23AA4B051867E7D2C749D1DE81 /* DTImageTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTImageTextAttachment.h; path = Core/Source/DTImageTextAttachment.h; sourceTree = ""; }; + 274FAE68017F54F1F939837B96E2826D /* RDEPUBJumpSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJumpSession.swift; sourceTree = ""; }; + 27A8E420B22CCB314B97FF093673D7A7 /* RDEPUBReaderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderConfiguration.swift; sourceTree = ""; }; 288589D0B52F73505B43C743D9837578 /* Entry+ZIP64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Entry+ZIP64.swift"; path = "Sources/ZIPFoundation/Entry+ZIP64.swift"; sourceTree = ""; }; - 29DE76CD63BD47DC86DF55C349B1CF91 /* RDEPUBFontFallbackResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFontFallbackResolver.swift; sourceTree = ""; }; + 28F849C864C21B91AE83565813ECE513 /* RDEPUBBookPageMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBookPageMap.swift; sourceTree = ""; }; 29DEA4D201BB179BB6E228E9F688CD4C /* UIView+DTFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+DTFoundation.h"; path = "Core/Source/iOS/UIView+DTFoundation.h"; sourceTree = ""; }; - 2AACA59CA4CBD2AFAACC3D162C2C75B5 /* RDEPUBParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBParser.swift; sourceTree = ""; }; - 2B02D527081372B04CC8FECF5940E6DC /* RDEPUBPageLayoutSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageLayoutSnapshot.swift; sourceTree = ""; }; - 2B73CF24646475E517B8FDF110972E77 /* RDReaderView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RDReaderView.release.xcconfig; sourceTree = ""; }; - 2B7FCEEAD833F7C1706659E688B09BEA /* RDEPUBRenderDiagnosticsCollector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRenderDiagnosticsCollector.swift; sourceTree = ""; }; + 2B0931BA1423E80768E11D26C280D4AF /* RDEPUBBackgroundTrace.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundTrace.swift; sourceTree = ""; }; 2C1A7359A45BB880877A672C57F522FE /* DTCoreGraphicsUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreGraphicsUtils.h; path = Core/Source/DTCoreGraphicsUtils.h; sourceTree = ""; }; - 2EBD41467F344F6091AD0C1A3981EDC3 /* cssInjector.js */ = {isa = PBXFileReference; includeInIndex = 1; name = cssInjector.js; path = Sources/RDReaderView/EPUBCore/Resources/cssInjector.js; sourceTree = ""; }; + 2C5BF48946F992DC481016853F217CE2 /* RDEPUBReaderUIState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderUIState.swift; sourceTree = ""; }; + 2CB104ADA375D292371993C1CB6AAB87 /* RDEPUBTextPageRenderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageRenderView.swift; sourceTree = ""; }; + 2F1CF1FACBA97E3B87ED0ECBBA7271E2 /* RDReaderPageChildViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPageChildViewController.swift; sourceTree = ""; }; 2F242FC1357DD90FA4FD67E1DB90A837 /* NSCharacterSet+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSCharacterSet+HTML.m"; path = "Core/Source/NSCharacterSet+HTML.m"; sourceTree = ""; }; 2F75437CE9F9324D315E417014797C1D /* DTExtendedFileAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTExtendedFileAttributes.h; path = Core/Source/DTExtendedFileAttributes.h; sourceTree = ""; }; - 2FA2158447C66C1AA074403C4AEF1BD9 /* RDEPUBPublication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPublication.swift; sourceTree = ""; }; - 2FADE8129957738A63AA3387FEC5222B /* RDEPUBReaderSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettings.swift; sourceTree = ""; }; 3046397381A83C2F6BAF344B86AD176E /* NSMutableArray+DTMoving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+DTMoving.h"; path = "Core/Source/NSMutableArray+DTMoving.h"; sourceTree = ""; }; 306477706BBB1E784F55BCF8EB1AD737 /* Pods-ReadViewDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReadViewDemo.debug.xcconfig"; sourceTree = ""; }; - 30B0AB500258357278F5D4E6C1AA2848 /* RDEPUBReaderLocationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLocationCoordinator.swift; sourceTree = ""; }; 30EB4CF4AD4114DE53786C318621EB19 /* NSAttributedStringRunDelegates.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NSAttributedStringRunDelegates.h; path = Core/Source/NSAttributedStringRunDelegates.h; sourceTree = ""; }; - 314E39CF7ADE645354AC8873D80957CA /* RDEPUBReadingSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReadingSession.swift; sourceTree = ""; }; - 317357794EF461FA4C6992E798C900DF /* RDEPUBChapterData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterData.swift; sourceTree = ""; }; - 31B49361D4C4F119B135F85B7A8219DB /* RDEPUBParser+ReadingProfile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+ReadingProfile.swift"; sourceTree = ""; }; - 321B4FCED5571F74A0AAD75BF9637505 /* RDEPUBReaderController+PublicAPI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+PublicAPI.swift"; sourceTree = ""; }; - 321FA16FF2FAD7985CCAC14EF5A221D4 /* RDEPUBWebView+JavaScriptBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+JavaScriptBridge.swift"; sourceTree = ""; }; - 328AA616EE25AB53BFB60EFE1C7AAFCE /* RDEPUBChapterPageCounter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterPageCounter.swift; sourceTree = ""; }; - 33452E6D078F6CC1EF8A17DF42966CAA /* RDReaderPageChildViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPageChildViewController.swift; sourceTree = ""; }; - 33643E88B779A3DB1B3A14C7A194045B /* RDEPUBTextBookModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookModels.swift; sourceTree = ""; }; - 33D775F257172C2AB560D7B9B5A918FD /* RDEPUBChapterOffsetMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterOffsetMap.swift; sourceTree = ""; }; + 3124D3BC58A0A9244ACC822A8BF0860E /* RDEPUBChapterTailNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterTailNormalizer.swift; sourceTree = ""; }; + 335C0A7F69EC3B4D9CB309D814D08733 /* RDEPUBChapterSummaryDiskCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterSummaryDiskCache.swift; sourceTree = ""; }; + 3429C49A65BE1911C634E1C95A0579BA /* RDEPUBReaderToolViewProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderToolViewProtocols.swift; sourceTree = ""; }; 3453CFB9BDBF6F9D0937EDF5FB2BD07B /* NSURL+DTAppLinks.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURL+DTAppLinks.m"; path = "Core/Source/iOS/NSURL+DTAppLinks.m"; sourceTree = ""; }; + 34D52809A0CFBA9664082FEDE2EBF420 /* RDEPUBCFIRecoveryEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIRecoveryEngine.swift; sourceTree = ""; }; 35417EC94F2D58CB80C991F875CE15C2 /* DTBlockFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTBlockFunctions.h; path = Core/Source/DTBlockFunctions.h; sourceTree = ""; }; 354C1C3A74DB75C8B8608D538212A963 /* DTStylesheetHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTStylesheetHTMLElement.m; path = Core/Source/DTStylesheetHTMLElement.m; sourceTree = ""; }; 3578B97A85BCDC60888FDF87B8F2600C /* NSString+CSS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+CSS.h"; path = "Core/Source/NSString+CSS.h"; sourceTree = ""; }; - 35803D654BE44326A28A0947DD178B63 /* RDEPUBCFIRecoveryEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIRecoveryEngine.swift; sourceTree = ""; }; - 35C2BF4CF393A0130124600E79ECC3D6 /* RDEPUBJumpSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJumpSession.swift; sourceTree = ""; }; - 3656D2A32DB42AE8DD66E0079651906D /* RDEPUBReaderLoadCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLoadCoordinator.swift; sourceTree = ""; }; - 36606A851BDB5FFF6E9BFFDD7FB72455 /* RDReaderView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RDReaderView-umbrella.h"; sourceTree = ""; }; - 36B0EC72869740D8DB68B51304CC9B48 /* RDEPUBRuntimePageCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimePageCount.swift; sourceTree = ""; }; + 35AAB84F53D47E997BE5822C68A820E1 /* RDEPUBCFIPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIPath.swift; sourceTree = ""; }; + 35F49784F5C7572343EA12BD542EC199 /* RDEPUBDecryptingImageAttachment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDecryptingImageAttachment.swift; sourceTree = ""; }; 37327141DC73DE2D5742BE6F989094CE /* DTCoreTextLayoutLine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextLayoutLine.h; path = Core/Source/DTCoreTextLayoutLine.h; sourceTree = ""; }; - 378AC6C2092D7E25BFF88FB4C743886C /* RDEPUBDarkImageAdjuster.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDarkImageAdjuster.swift; sourceTree = ""; }; + 3840A5C7212D01AADA285E04510E8020 /* RDEPUBModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBModels.swift; sourceTree = ""; }; + 3850371BB41E7533AF689FAA5ED33F9B /* RDEPUBNoteResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteResolver.swift; sourceTree = ""; }; + 38C859102801709085785434DA17448C /* RDReaderGestureController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderGestureController.swift; sourceTree = ""; }; 3985FED7BD8EC49191663BEF73FB2C79 /* NSAttributedString+DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+DTCoreText.h"; path = "Core/Source/NSAttributedString+DTCoreText.h"; sourceTree = ""; }; 398DC798680E2CA64D46B9E19B380356 /* UIFont+DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIFont+DTCoreText.h"; path = "Core/Source/UIFont+DTCoreText.h"; sourceTree = ""; }; 399AED6BF151EC39BE4450784795A832 /* DTAccessibilityViewProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAccessibilityViewProxy.h; path = Core/Source/DTAccessibilityViewProxy.h; sourceTree = ""; }; 3A6A858B976D032A3C61540AFF19DEE4 /* NSURL+DTUnshorten.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURL+DTUnshorten.m"; path = "Core/Source/NSURL+DTUnshorten.m"; sourceTree = ""; }; - 3A6AD2E4A78A3060ED880D0ADFC9C5C7 /* RDEPUBChapterDisplayContentCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterDisplayContentCache.swift; sourceTree = ""; }; - 3AF63806C4793F384C4CF28201BC756C /* WeReadApi.js */ = {isa = PBXFileReference; includeInIndex = 1; name = WeReadApi.js; path = Sources/RDReaderView/EPUBCore/Resources/WeReadApi.js; sourceTree = ""; }; - 3B35A0451D9A3CF5477258E38D363189 /* RDEPUBTextRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextRenderer.swift; sourceTree = ""; }; + 3B2E80F85DC4DFBB0320EB582FCBD933 /* RDEPUBReaderTableOfContentsItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTableOfContentsItem.swift; sourceTree = ""; }; + 3B4326BC8EF36B8BB0A32D8E047921AD /* RDEPUBReaderServices.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderServices.swift; sourceTree = ""; }; + 3C9F522B5818D3E8F6E4B10B22A9F3C9 /* cssInjector.js */ = {isa = PBXFileReference; includeInIndex = 1; name = cssInjector.js; path = Sources/RDReaderView/EPUBCore/Resources/cssInjector.js; sourceTree = ""; }; + 3CEB851D42C524A554A2D26249EB6440 /* RDEPUBMemoryProbe.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMemoryProbe.swift; sourceTree = ""; }; 3DAC9D3802A9F165B2F6B09C2DCF0EB7 /* ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist"; sourceTree = ""; }; - 3EF0585A8A2B50BF79245DF9365836C8 /* RDEPUBReaderContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderContext.swift; sourceTree = ""; }; + 3EDE2594DAA2AA3DEE0DC6FBB8021FB4 /* RDEPUBParser+ReadingProfile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+ReadingProfile.swift"; sourceTree = ""; }; 3EFAE8DFDDEA1E6047289C86D66381C0 /* DTAttributedLabel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedLabel.m; path = Core/Source/DTAttributedLabel.m; sourceTree = ""; }; - 3FB158582A185027BF7C5254A69DA213 /* RDEPUBReaderDependencies.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDependencies.swift; sourceTree = ""; }; - 40E88E1EF1BA62D99833E17E30E87DC5 /* RDEPUBBookPageMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBookPageMap.swift; sourceTree = ""; }; + 3F64125A1A7278D5D5DBEE29D0A23289 /* RDEPUBResourceDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBResourceDataProvider.swift; sourceTree = ""; }; 40FD7C9E2E05FB4A73F4C4C70A3AFAF0 /* DTCSSListStyle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCSSListStyle.m; path = Core/Source/DTCSSListStyle.m; sourceTree = ""; }; - 410C5BB742936BFF1A02BAB0970CAF34 /* RDReaderContentCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderContentCell.swift; sourceTree = ""; }; - 422DAC763888F8667708F7B66F9C701E /* RDEPUBPaginationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationModels.swift; sourceTree = ""; }; - 43197856E7D06A21EF9B252FD37456A5 /* RDEPUBParser+TOC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+TOC.swift"; sourceTree = ""; }; + 413360D0D62A7D3B12EAB6FD542C8B29 /* RDEPUBReaderChapterListController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChapterListController.swift; sourceTree = ""; }; + 41DE1F810FCEEA86135A8828CE7E0B2E /* RDEPUBStyleCompatibilityModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleCompatibilityModels.swift; sourceTree = ""; }; + 42C462DBD1028C2B2C741726F0C4F7D6 /* RDEPUBFontNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFontNormalizer.swift; sourceTree = ""; }; + 44113776B1D8777D7989AA4A28E7AD89 /* RDEPUBResourceResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBResourceResolver.swift; sourceTree = ""; }; 44133205D7FD87B481BF89EA607CA7A4 /* ZIPFoundation-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ZIPFoundation-Info.plist"; sourceTree = ""; }; 4472755F83C121DE5E1E505D145F6DBE /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/CoreText.framework; sourceTree = DEVELOPER_DIR; }; 4476B58B93EE7476A4762FE0E26E8178 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayoutFrameAccessibilityElementGenerator.m; path = Core/Source/DTCoreTextLayoutFrameAccessibilityElementGenerator.m; sourceTree = ""; }; + 449E7EAE1D47E608A23C4994EA5F9D4C /* RDEPUBReaderController+DataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+DataSource.swift"; sourceTree = ""; }; + 44D834B66794C6899B84C5782F3624C6 /* RDEPUBTextSearchEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSearchEngine.swift; sourceTree = ""; }; 4544C4444DCA90E700611D1281969883 /* DTColorFunctions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTColorFunctions.m; path = Core/Source/DTColorFunctions.m; sourceTree = ""; }; + 4568EB88B6EDC55FAC77D565DA1A2750 /* rangy-core.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "rangy-core.js"; path = "Sources/RDReaderView/EPUBCore/Resources/rangy-core.js"; sourceTree = ""; }; 45A67761829BBB3974CE24FE50E459EA /* NSDictionary+DTError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+DTError.m"; path = "Core/Source/NSDictionary+DTError.m"; sourceTree = ""; }; 4641C3C93CE32054665ACF80457A7A94 /* DTCoreTextLayoutFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayoutFrame.m; path = Core/Source/DTCoreTextLayoutFrame.m; sourceTree = ""; }; 467CC59CEC3B3BC7ACDCA776FDCBDC1D /* NSURL+DTComparing.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURL+DTComparing.m"; path = "Core/Source/NSURL+DTComparing.m"; sourceTree = ""; }; + 475D625CDF9C41734A2045F2DF2DA3A5 /* RDURLReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDURLReaderController.swift; sourceTree = ""; }; 47DC174612C98B2CFB4E7D158169139E /* default.css */ = {isa = PBXFileReference; includeInIndex = 1; name = default.css; path = Core/Source/default.css; sourceTree = ""; }; - 48121E38890812B2122D7CD791CB9F52 /* RDEPUBTextSelectionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSelectionController.swift; sourceTree = ""; }; - 482C32ED3E6D23BBCED7BBE64E370A91 /* RDEPUBParser+Archive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Archive.swift"; sourceTree = ""; }; + 485EAD6F9C3A2212CF6CE024BA2FA1A6 /* RDEPUBStyleSheetComposer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleSheetComposer.swift; sourceTree = ""; }; 48A4A6EDC08C8AC933D0DCD507E9D173 /* ZIPFoundation */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ZIPFoundation; path = ZIPFoundation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 4917E08E6E59460594AC443EDDAB7E77 /* DTCoreTextFunctions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextFunctions.m; path = Core/Source/DTCoreTextFunctions.m; sourceTree = ""; }; 4944FE0BE3205F2EC91A6A0550D30B75 /* DTTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextAttachment.m; path = Core/Source/DTTextAttachment.m; sourceTree = ""; }; - 499C327E148794A7F09BAF1C83BE59EF /* RDReaderView+PageCurl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+PageCurl.swift"; sourceTree = ""; }; 499E135F1FEB31C26EB0EF793A90086C /* UIImage+DTFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+DTFoundation.m"; path = "Core/Source/iOS/UIImage+DTFoundation.m"; sourceTree = ""; }; - 49DF44BF9FBD9CCC9CDE0A998C428D86 /* RDEPUBCFIDOMPathBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIDOMPathBuilder.swift; sourceTree = ""; }; - 4AAC2FDC24D8604A39BD25111689D06A /* RDEPUBWebView+Reflowable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Reflowable.swift"; sourceTree = ""; }; + 49FF2BFED217D10DD3A12046FF81C511 /* RDEPUBRenderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRenderRequest.swift; sourceTree = ""; }; + 4A53E7C06029DCDA8A67E02513AB726E /* RDEPUBTextPageVerticalJustifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageVerticalJustifier.swift; sourceTree = ""; }; + 4AB1D76489DD745A028573570A736E59 /* RDEPUBSelectionState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionState.swift; sourceTree = ""; }; + 4B257B0E6084F9E4D8FE7DC39AF9B477 /* RDEPUBSafeArea.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSafeArea.swift; sourceTree = ""; }; 4C2B218B5EAA5831A036BBF7E1EFC1B9 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/MediaPlayer.framework; sourceTree = DEVELOPER_DIR; }; - 4C9154B6031E8FD71F71E3F89391A519 /* RDEPUBReaderTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTheme.swift; sourceTree = ""; }; + 4C2C269173C1D497D6810C8BF62E7338 /* RDEPUBReadingLocationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReadingLocationModels.swift; sourceTree = ""; }; + 4D64719937C574F41EE90673FE70F681 /* RDEPUBTextPositionConverter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPositionConverter.swift; sourceTree = ""; }; + 4D66B85E6DC6F2833A9D9561D6235DCA /* RDReaderView+PageCurl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+PageCurl.swift"; sourceTree = ""; }; + 4E031BA35A851ED17BB97887FA36FC83 /* RDEPUBJavaScriptBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJavaScriptBridge.swift; sourceTree = ""; }; 4E1066A8FE63AD2C818E26DDCE62DF58 /* DTHTMLAttributedStringBuilder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLAttributedStringBuilder.h; path = Core/Source/DTHTMLAttributedStringBuilder.h; sourceTree = ""; }; - 4F525CC259CDC719A02AC344AFC95E1F /* RDEPUBPageCountCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageCountCache.swift; sourceTree = ""; }; - 4F5A145710C3E212B771C4E38BED9926 /* wxread-replace-latin.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-replace-latin.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-replace-latin.css"; sourceTree = ""; }; + 4E1C8E681EAA73E10C3BE26F8951E5D6 /* RDEPUBReaderLoadCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLoadCoordinator.swift; sourceTree = ""; }; 4FF4A2A7F2C7CFB5DD757BE1A6E59C7B /* CTLineUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CTLineUtils.m; path = Core/Source/CTLineUtils.m; sourceTree = ""; }; 5001C74FB9506AEC71E458047698A4AB /* DTHTMLParserNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLParserNode.m; path = Core/Source/DTHTMLParserNode.m; sourceTree = ""; }; - 505D658FEB22042EEDC51D402700F8C9 /* RDEPUBDTCoreTextRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDTCoreTextRenderer.swift; sourceTree = ""; }; 5096458D9BD2818F786BC3B61B91EAC7 /* NSAttributedString+DTDebug.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+DTDebug.m"; path = "Core/Source/NSAttributedString+DTDebug.m"; sourceTree = ""; }; 50C2868064310B16D2B5FD9901C846DC /* DTVideoTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTVideoTextAttachment.h; path = Core/Source/DTVideoTextAttachment.h; sourceTree = ""; }; 519087D9CD0F5E440E6D2C3B1AA1DFA2 /* DTBase64Coding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTBase64Coding.h; path = Core/Source/DTBase64Coding.h; sourceTree = ""; }; 5193541848D2D1BF115A45D8A730611C /* Archive+ReadingDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+ReadingDeprecated.swift"; path = "Sources/ZIPFoundation/Archive+ReadingDeprecated.swift"; sourceTree = ""; }; - 51DA940F74309B236AFA2A214D82D47C /* RDEPUBBackgroundTrace.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundTrace.swift; sourceTree = ""; }; 52053ABC9CD3D4A72CD8A22173428AEB /* NSMutableString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableString+HTML.h"; path = "Core/Source/NSMutableString+HTML.h"; sourceTree = ""; }; - 5253C9907BB440614610BB054B001181 /* RDURLReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDURLReaderController.swift; sourceTree = ""; }; - 528643F4F0CD2FEC7AD5C0ACA9895D9D /* RDEPUBPaginationCacheCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationCacheCoordinator.swift; sourceTree = ""; }; - 5514CEBB75D8BFFC1D1CA08E8E46BE62 /* RDReaderView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RDReaderView-prefix.pch"; sourceTree = ""; }; + 53A23BC49C365732A2CD9FCC08DEE23C /* RDEPUBTextRendererSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextRendererSupport.swift; sourceTree = ""; }; + 53BFEB15CE78B6B97488049218D34E0C /* RDEPUBCFIUtilities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIUtilities.swift; sourceTree = ""; }; + 54626FDB51F5A24F21ED95B65F732EA6 /* RDEPUBParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBParser.swift; sourceTree = ""; }; + 546293C95A2E9D6898E6E35EBAD67E3C /* wxread-replace.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-replace.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-replace.css"; sourceTree = ""; }; + 54AF51CFB19FCEF5B3306518C6B311A0 /* RDEPUBChapterDataCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterDataCache.swift; sourceTree = ""; }; + 54C212FF935AF7337E5CDE1C37D5785A /* RDEPUBReaderPersistence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPersistence.swift; sourceTree = ""; }; 55423549E54A01F039B5F379B264C73F /* UIApplication+DTNetworkActivity.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIApplication+DTNetworkActivity.h"; path = "Core/Source/iOS/UIApplication+DTNetworkActivity.h"; sourceTree = ""; }; 558FCD3F7E481B782EBFA127486ED15D /* DTHTMLParserTextNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLParserTextNode.h; path = Core/Source/DTHTMLParserTextNode.h; sourceTree = ""; }; 55B9309F0BDDDE2C3EE13C97BF2C0F1E /* Archive+Helpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Helpers.swift"; path = "Sources/ZIPFoundation/Archive+Helpers.swift"; sourceTree = ""; }; - 55C2EDC5A62B0F36995A69620E5464B3 /* RDEPUBReaderUIState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderUIState.swift; sourceTree = ""; }; - 564F072D0966350F4C3986E01EB3EB2C /* RDEPUBRenderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRenderRequest.swift; sourceTree = ""; }; - 56A9260F17C4825708B83598BEC99365 /* RDReaderFlowLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderFlowLayout.swift; sourceTree = ""; }; 56E8939081946D090FD77A04F879754C /* DTExtendedFileAttributes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTExtendedFileAttributes.m; path = Core/Source/DTExtendedFileAttributes.m; sourceTree = ""; }; 57642B518C047A428FE1266A09E0513F /* DTImageTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTImageTextAttachment.m; path = Core/Source/DTImageTextAttachment.m; sourceTree = ""; }; - 5857420A221729DB0D3EBBC59AA4BFF2 /* RDEPUBReaderSettingsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettingsViewController.swift; sourceTree = ""; }; - 587C2E270D5414FF4E3786D14BD36694 /* RDEPUBFragmentMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFragmentMarkerInjector.swift; sourceTree = ""; }; - 58C8FD645A1F2CB6BC9C86FE156721F1 /* RDEPUBChapterRuntimeStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterRuntimeStore.swift; sourceTree = ""; }; - 59600B93DBD35077CC79C74D07BC03CE /* RDEPUBReaderToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderToolView.swift; sourceTree = ""; }; + 5874C0AE2C0D64722A34980EB20368B4 /* RDEPUBPaginationCacheCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationCacheCoordinator.swift; sourceTree = ""; }; 5977986EDFE76D5EF96A6D95483B12F7 /* Pods-ReadViewDemo-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReadViewDemo-frameworks.sh"; sourceTree = ""; }; 599172147A32B6978EB5AAE1BE55FF7A /* DTAnchorHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAnchorHTMLElement.h; path = Core/Source/DTAnchorHTMLElement.h; sourceTree = ""; }; - 5B37A3A1274B29F6D04BFB081D22CB96 /* RDEPUBWebContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebContentView.swift; sourceTree = ""; }; - 5B5686B2CD1ADB2443ECF94B15903873 /* RDEPUBResourceURLSchemeHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBResourceURLSchemeHandler.swift; sourceTree = ""; }; + 5B6CD2AB0DCDA662CD642765E8A5BE01 /* RDEPUBChapterDisplayContentCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterDisplayContentCache.swift; sourceTree = ""; }; 5C3D91FFA65414A2787FEB95576E0097 /* DTCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCompatibility.h; path = Core/Source/DTCompatibility.h; sourceTree = ""; }; 5C891B983F0CC956CAE3978A15875819 /* NSDictionary+DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+DTCoreText.h"; path = "Core/Source/NSDictionary+DTCoreText.h"; sourceTree = ""; }; + 5CD9D3B5B4DC5B0B3B51CC6B8F9AAD86 /* RDEPUBWebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebView.swift; sourceTree = ""; }; 5D146C3F4B7878B5CE8EFF38765580C2 /* DTAccessibilityElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAccessibilityElement.h; path = Core/Source/DTAccessibilityElement.h; sourceTree = ""; }; 5DB480D0B78911DBF96986E64A714907 /* DTListItemHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTListItemHTMLElement.h; path = Core/Source/DTListItemHTMLElement.h; sourceTree = ""; }; - 5E000FE659A8C4AE6C55AE7B9CC951AA /* RDEPUBTextRendererSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextRendererSupport.swift; sourceTree = ""; }; - 5F3B770A5B6ED1C21FDA2BD1A8B06EE6 /* RDEPUBCSSCompatibilityLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCSSCompatibilityLayer.swift; sourceTree = ""; }; - 5F81C81E7CF8B0AE4646712FC2ADD8B0 /* RDEPUBTextAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnchor.swift; sourceTree = ""; }; + 5F346BE7A196241EDCEEF3795731C9D7 /* RDReaderView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RDReaderView.modulemap; sourceTree = ""; }; + 6054D59EA001FB57A86513538FA8BB2D /* RDEPUBImageViewerCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewerCoordinator.swift; sourceTree = ""; }; + 60C982580B17056D1FD0076743AF2A20 /* RDEPUBParser+TOC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+TOC.swift"; sourceTree = ""; }; 61B18088896D291E0CE7718DFE82FAC1 /* DTListItemHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTListItemHTMLElement.m; path = Core/Source/DTListItemHTMLElement.m; sourceTree = ""; }; - 636939AFA1CB3F49FE41D1160D512A54 /* RDEPUBWebDecorationOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebDecorationOverlayView.swift; sourceTree = ""; }; - 63A75BF0478FAC7398F5E66A509F639D /* RDEPUBAttachmentNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentNormalizer.swift; sourceTree = ""; }; - 63D23A912F5F91D0D3D83DF9E05515D0 /* RDEPUBFontNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFontNormalizer.swift; sourceTree = ""; }; + 62A03DB083C11C5FDA1D858BC447E3AD /* RDEPUBWebContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebContentView.swift; sourceTree = ""; }; + 635FB53F5F49CC7F40F7C5E700A3A3EE /* RDEPUBDTCoreTextRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDTCoreTextRenderer.swift; sourceTree = ""; }; + 63DA2C409280DA03F0E29C87EC858664 /* RDReaderView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RDReaderView-prefix.pch"; sourceTree = ""; }; 6430501430329643C8280B3985C48711 /* URL+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+ZIP.swift"; path = "Sources/ZIPFoundation/URL+ZIP.swift"; sourceTree = ""; }; - 64676B6C8A9F9195A481010213F37B6C /* epub-bridge.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "epub-bridge.js"; path = "Sources/RDReaderView/EPUBCore/Resources/epub-bridge.js"; sourceTree = ""; }; - 65572083A10EE0C48AA7F493F923BCC0 /* RDEPUBPaginator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginator.swift; sourceTree = ""; }; + 65C7DA34232B39F5D61DAD1C8D64BA55 /* RDEPUBTextLayoutFrame.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextLayoutFrame.swift; sourceTree = ""; }; + 65D988AEE2A2A568F2F08472880C56D0 /* RDEPUBCFIRange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIRange.swift; sourceTree = ""; }; 662D30C1E74D1D5122921475F4024F73 /* DTActivityTitleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTActivityTitleView.m; path = Core/Source/iOS/DTActivityTitleView.m; sourceTree = ""; }; + 668E98AD14CBB11B4F60DC21B9B6EC4C /* RDEPUBParser+Archive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Archive.swift"; sourceTree = ""; }; + 6707BF75590797EB88552A6829CBAF19 /* RDEPUBReaderController+Trial.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+Trial.swift"; sourceTree = ""; }; 671C2429406FDB36B677F4B6EC85B52F /* DTCoreTextLayoutFrameAccessibilityElementGenerator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextLayoutFrameAccessibilityElementGenerator.h; path = Core/Source/DTCoreTextLayoutFrameAccessibilityElementGenerator.h; sourceTree = ""; }; - 677182E8663D93C2C9E5617999F649C7 /* RDEPUBResourceResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBResourceResolver.swift; sourceTree = ""; }; - 67BEEE595D865F7E86B156385CDF6111 /* RDEPUBReaderController+LocationResolution.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+LocationResolution.swift"; sourceTree = ""; }; + 674CA023806B055868320A59D18FD977 /* RDEPUBTextIndexTable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextIndexTable.swift; sourceTree = ""; }; + 67B9C855C41D2A2276BB04970B73D00B /* RDEPUBReaderSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettings.swift; sourceTree = ""; }; 67DA49B61A249C2B8241D8FE166608C9 /* UIView+DTFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+DTFoundation.m"; path = "Core/Source/iOS/UIView+DTFoundation.m"; sourceTree = ""; }; - 6859E00AB232CC21F2C63A4CCB9EB108 /* RDEPUBTextPageRenderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageRenderView.swift; sourceTree = ""; }; - 685FE9B1A888D8D05E9AC049787CBC8D /* RDEPUBAnnotationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAnnotationModels.swift; sourceTree = ""; }; + 680ADAD990534743F965D6B6E96D7E9B /* RDEPUBReaderBottomToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderBottomToolView.swift; sourceTree = ""; }; 68D81DF1BB2A14F9C186F75BBA5CF50D /* DTColor+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DTColor+Compatibility.h"; path = "Core/Source/DTColor+Compatibility.h"; sourceTree = ""; }; 69076FC9D4201719C319547346DA3E21 /* DTTextHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextHTMLElement.m; path = Core/Source/DTTextHTMLElement.m; sourceTree = ""; }; - 696C8561F8104D867B50A79E1147DE02 /* RDEPUBTextBookCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookCache.swift; sourceTree = ""; }; - 69E5D0AD1240B6B0802F2647F5435EA3 /* RDEPUBPageMapReconciliationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageMapReconciliationCoordinator.swift; sourceTree = ""; }; - 6A42607282986A7CB11AD3361E82530C /* RDEPUBReaderController+DataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+DataSource.swift"; sourceTree = ""; }; + 69D0D9087DAE27DCDC6CB950E20E3608 /* RDEPUBTextBuildPipelineInterfaces.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBuildPipelineInterfaces.swift; sourceTree = ""; }; 6AC1E707308CDBC9FFC09CECE3117A9A /* DTAccessibilityViewProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAccessibilityViewProxy.m; path = Core/Source/DTAccessibilityViewProxy.m; sourceTree = ""; }; + 6C2BB1CB63F11F03F2A9AF85735EA076 /* RDEPUBSettingsFlipAutomation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSettingsFlipAutomation.swift; sourceTree = ""; }; 6C3F8DF48C6EB28BFD05F5BB49793DDA /* FileManager+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FileManager+ZIP.swift"; path = "Sources/ZIPFoundation/FileManager+ZIP.swift"; sourceTree = ""; }; + 6C49C3D57B022D024E68EDB3EF68D60F /* RDEPUBMetadataParseWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseWorker.swift; sourceTree = ""; }; + 6CDD9C89E7009567107E9C16B4BE05C6 /* RDEPUBParser+Package.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Package.swift"; sourceTree = ""; }; + 6D1978442C3B21E292AEF661B6F98568 /* RDEPUBCFI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFI.swift; sourceTree = ""; }; 6D2316F422A6C97F95F9CF43E6F8E94F /* DTBlockFunctions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTBlockFunctions.m; path = Core/Source/DTBlockFunctions.m; sourceTree = ""; }; - 6DF0A5A438D3319310C8FF50C82762F2 /* RDEPUBReaderChromeCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChromeCoordinator.swift; sourceTree = ""; }; 6E21B10EE150F00F245D297EAB7F2BA2 /* NSNumber+RomanNumerals.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNumber+RomanNumerals.m"; path = "Core/Source/NSNumber+RomanNumerals.m"; sourceTree = ""; }; + 6F3DBD229B4D724EEC81A05AEF68C96B /* RDEPUBTextPaginationInterfaces.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPaginationInterfaces.swift; sourceTree = ""; }; + 703ED5D8DDE3AEF39CCBA1F75ED53574 /* RDEPUBFixedLayoutTemplate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFixedLayoutTemplate.swift; sourceTree = ""; }; + 7099DFE326BE72991030E977265222E8 /* RDPlainTextBookBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDPlainTextBookBuilder.swift; sourceTree = ""; }; + 70AAB379D168256A54BC162D9CD200B7 /* RDEPUBTextRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextRenderer.swift; sourceTree = ""; }; + 713A7931BFA76291ACE4C095423CA7C2 /* RDEPUBTextPageBoundaryValidator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageBoundaryValidator.swift; sourceTree = ""; }; 71BBE6384315D7F00F5ECFFF67A85AF9 /* DTHTMLParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLParser.m; path = Core/Source/DTHTMLParser/DTHTMLParser.m; sourceTree = ""; }; 71EE0B4D4D1B3D0A55E903E7E0CA44E7 /* NSAttributedString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+HTML.m"; path = "Core/Source/NSAttributedString+HTML.m"; sourceTree = ""; }; 720396ED306E768BAD28007D5E96B757 /* DTColorFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTColorFunctions.h; path = Core/Source/DTColorFunctions.h; sourceTree = ""; }; 7203B4D9D997037E0F9D154A3B049738 /* DTAttributedTextContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedTextContentView.m; path = Core/Source/DTAttributedTextContentView.m; sourceTree = ""; }; 72225FB74594FCF18DA8064E7DB3947E /* DTCoreTextLayouter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextLayouter.h; path = Core/Source/DTCoreTextLayouter.h; sourceTree = ""; }; 722AF38F5106ADDE6F98D282F886A769 /* DTCoreTextFontCollection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextFontCollection.m; path = Core/Source/DTCoreTextFontCollection.m; sourceTree = ""; }; - 72F99D96321DF0F2BC595BC7B6A66EA2 /* RDEPUBStyleSheetBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleSheetBuilder.swift; sourceTree = ""; }; 730B56BC97DFF2B1E04DD2608055D9E0 /* UIApplication+DTNetworkActivity.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIApplication+DTNetworkActivity.m"; path = "Core/Source/iOS/UIApplication+DTNetworkActivity.m"; sourceTree = ""; }; 741D74BC489AF6715191F2A88E50B016 /* DTCoreText.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DTCoreText.modulemap; sourceTree = ""; }; - 74A0B8ECDC21C0F91EAB0484A86289DA /* RDEPUBTextPageBoundaryValidator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageBoundaryValidator.swift; sourceTree = ""; }; + 74254B4DE3AD0907F43AB96CEED7408A /* RDEPUBBuildDiagnosticsReporter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBuildDiagnosticsReporter.swift; sourceTree = ""; }; + 745DE64E801F69497754257504DF420A /* RDEPUBReaderState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderState.swift; sourceTree = ""; }; 7503926237A4785CCB864B2BCD1F4C2B /* DTFoundation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTFoundation.release.xcconfig; sourceTree = ""; }; - 751A6591CCEC79FB3B33C8EADF3465B6 /* RDEPUBViewportTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBViewportTypes.swift; sourceTree = ""; }; + 750B16C9E2C4617CC27FCF04222EEAEF /* RDEPUBChapterLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLocation.swift; sourceTree = ""; }; 753994141ACB981C898B36B761321C23 /* NSCoder+DTCompatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSCoder+DTCompatibility.m"; path = "Core/Source/NSCoder+DTCompatibility.m"; sourceTree = ""; }; - 75C58FBF3697A8233DC5C9527094D6C3 /* RDEPUBTextContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentView.swift; sourceTree = ""; }; - 75DA84652E7A2A0529D8385085690062 /* RDEPUBImageViewerCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewerCoordinator.swift; sourceTree = ""; }; - 75F44A99D2304FE5397B4DCD6BABAF2B /* RDPlainTextBookBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDPlainTextBookBuilder.swift; sourceTree = ""; }; 765A94769106D14615FFB30EE1BD5E65 /* Archive+BackingConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+BackingConfiguration.swift"; path = "Sources/ZIPFoundation/Archive+BackingConfiguration.swift"; sourceTree = ""; }; 766227355308600EFC048F797274454A /* ZIPFoundation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.release.xcconfig; sourceTree = ""; }; - 7667AF77CBF47AFAA7D5F190B16A51FF /* wxread-default.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-default.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-default.css"; sourceTree = ""; }; 76C1831768CE55090EADD902B29B6CD1 /* Entry+Serialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Entry+Serialization.swift"; path = "Sources/ZIPFoundation/Entry+Serialization.swift"; sourceTree = ""; }; - 76DC91EBC1C9627AD0F09DFE57D04F52 /* RDEPUBAttachmentTooltipView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipView.swift; sourceTree = ""; }; 771E0D5CBCBC013BF5780FEE5BBA81FF /* DTCoreTextGlyphRun.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextGlyphRun.h; path = Core/Source/DTCoreTextGlyphRun.h; sourceTree = ""; }; - 773DBBEB900B259FCF917AD7299A4F34 /* RDEPUBReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderController.swift; sourceTree = ""; }; 7805DFC2CB71F5B6BBF7891876360EFB /* NSAttributedString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+HTML.h"; path = "Core/Source/NSAttributedString+HTML.h"; sourceTree = ""; }; - 785AE7F19DADEDA041CFCC67D8B25189 /* RDEPUBPageInteractionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageInteractionController.swift; sourceTree = ""; }; + 785EFB63370FAE06B2485B755B42E2B5 /* RDEPUBReaderController+ContentDelegates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ContentDelegates.swift"; sourceTree = ""; }; 78887827FF15DE20865DF3A00660993B /* NSDictionary+DTCoreText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+DTCoreText.m"; path = "Core/Source/NSDictionary+DTCoreText.m"; sourceTree = ""; }; - 78B43BA14CD70F5448082DE1EE73B034 /* RDEPUBSearchEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSearchEngine.swift; sourceTree = ""; }; 78EA0DF405F8465A86BFD3DDFD2EC295 /* Pods-ReadViewDemo */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-ReadViewDemo"; path = Pods_ReadViewDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 796EF27FF6AA4B62367B6BD9CEBD85A8 /* DTCSSStylesheet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCSSStylesheet.h; path = Core/Source/DTCSSStylesheet.h; sourceTree = ""; }; 79D13938A04579CD1E9E042A39CC4D86 /* ZIPFoundation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.debug.xcconfig; sourceTree = ""; }; 7A13F9221A300A89F9F8D0A2AB1794BF /* DTCoreText.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTCoreText.release.xcconfig; sourceTree = ""; }; 7A4E9E54E556A72BC885CCC08B3791C1 /* DTHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLElement.m; path = Core/Source/DTHTMLElement.m; sourceTree = ""; }; - 7B0179A6B7825D9A269A8A50C2BCBDDB /* RDReaderView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RDReaderView.modulemap; sourceTree = ""; }; - 7C64A40D0DAA97EF0A1E98A05DF28CE4 /* RDEPUBSelectionOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionOverlayView.swift; sourceTree = ""; }; + 7B84F7CB373F124B5ADA362B7A204376 /* RDReaderView+ContentAccess.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+ContentAccess.swift"; sourceTree = ""; }; 7C80941DE172AF972D2247659684D93A /* NSString+DTUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTUtilities.h"; path = "Core/Source/NSString+DTUtilities.h"; sourceTree = ""; }; 7CA72FA9A4F2F42A75C58325738A44AC /* NSMutableAttributedString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableAttributedString+HTML.m"; path = "Core/Source/NSMutableAttributedString+HTML.m"; sourceTree = ""; }; 7CFFB65C5D340A4B5C627B3EF02CD127 /* NSNumber+RomanNumerals.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNumber+RomanNumerals.h"; path = "Core/Source/NSNumber+RomanNumerals.h"; sourceTree = ""; }; 7D4062C36BA5FFBAE9122CAD0DCEC6B6 /* DTCoreText-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTCoreText-prefix.pch"; sourceTree = ""; }; + 7D513DFE7299EE03B0CB5A16A4798152 /* RDReaderSpreadResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderSpreadResolver.swift; sourceTree = ""; }; 7D8AE4BEBD1998839BA83AD05CA6CAC5 /* DTBreakHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTBreakHTMLElement.m; path = Core/Source/DTBreakHTMLElement.m; sourceTree = ""; }; - 80F1F9A3C3AD1C55622B17CA5D503766 /* RDEPUBTextIndexTable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextIndexTable.swift; sourceTree = ""; }; + 7E28782DB94C6BAF80766A255BB55167 /* RDEPUBReaderViewportMonitor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderViewportMonitor.swift; sourceTree = ""; }; 814315319ED50AF916C3C8A68C0A47A0 /* DTAttributedTextCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedTextCell.m; path = Core/Source/DTAttributedTextCell.m; sourceTree = ""; }; - 81514BCB47BC71C39284064C943C0DC3 /* RDEPUBPageResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageResolver.swift; sourceTree = ""; }; - 82B54A69DF5E94D0D1B34E9D31C0D997 /* RDReaderPreloadController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPreloadController.swift; sourceTree = ""; }; - 8300EA716892548FEA44EC27801F5987 /* RDEPUBTextPerformanceSampler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPerformanceSampler.swift; sourceTree = ""; }; - 83041D1E40ECC246DB5539C712499A09 /* RDReaderView+ToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+ToolView.swift"; sourceTree = ""; }; 83410CC9CF2ABE63B90A92F2F988BF65 /* RDReaderView-RDReaderViewAssets */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "RDReaderView-RDReaderViewAssets"; path = RDReaderViewAssets.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 842B11843F82FBEA1D725543ACAB02CE /* RDEPUBCFIRange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIRange.swift; sourceTree = ""; }; - 842C60964BEEDCF50FFF84E40B135751 /* RDEPUBChapterDataCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterDataCache.swift; sourceTree = ""; }; - 852FB37B13A5612919954D97632ED37F /* RDEPUBReaderPersistence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPersistence.swift; sourceTree = ""; }; + 83610D7D676D5E06082204EDE1A1431B /* RDReaderView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RDReaderView-Info.plist"; sourceTree = ""; }; 85E8DA9DE1F796F12171763D20CBAF27 /* DTFoundation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTFoundation.debug.xcconfig; sourceTree = ""; }; - 86526ADF32337683AA173B5FC1E6A94C /* RDEPUBTextLayouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextLayouter.swift; sourceTree = ""; }; + 86DD8A5C0624A7C2C0C328A40118C3E8 /* rangy-serializer.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "rangy-serializer.js"; path = "Sources/RDReaderView/EPUBCore/Resources/rangy-serializer.js"; sourceTree = ""; }; + 87031C18DFBCC980112E5A9F3BDE49C3 /* RDEPUBImageViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewController.swift; sourceTree = ""; }; 8718F2DB8F0DC085CB012D9996596F3F /* NSString+CSS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+CSS.m"; path = "Core/Source/NSString+CSS.m"; sourceTree = ""; }; + 875B4A5662D9C4B043C7C03DABF75E4B /* RDEPUBPageBreakPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageBreakPolicy.swift; sourceTree = ""; }; + 87FAC4BEFBDC1FD8E9824724A68800F1 /* RDEPUBReaderController+Orientation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+Orientation.swift"; sourceTree = ""; }; 88464D2E3579F1A5B25DCCA128528938 /* DTCoreTextFontDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextFontDescriptor.m; path = Core/Source/DTCoreTextFontDescriptor.m; sourceTree = ""; }; - 88FB583F2D022D1B84B91F285F67FE76 /* RDEPUBPresentationRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPresentationRuntime.swift; sourceTree = ""; }; 89268DC8F1FBDE4F3167647B6A4F9216 /* DTHorizontalRuleHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHorizontalRuleHTMLElement.h; path = Core/Source/DTHorizontalRuleHTMLElement.h; sourceTree = ""; }; - 894D74C9B59F1EE9BE4DFF5D3B60B772 /* RDEPUBSettingsFlipAutomation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSettingsFlipAutomation.swift; sourceTree = ""; }; + 893B4227196A12B86EF2F32C46FCA05E /* RDEPUBNotePopupCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupCoordinator.swift; sourceTree = ""; }; + 89A5207DD90D0FB2512C9B23FEEB1A02 /* RDEPUBAttachmentTooltipView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipView.swift; sourceTree = ""; }; + 89A9008EF0A17C27F6EA9F37EF6DCFD0 /* RDReaderView+ToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+ToolView.swift"; sourceTree = ""; }; 8B35D0622F339A5B8A864FAA0C9EAE47 /* Pods-ReadViewDemo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReadViewDemo-acknowledgements.plist"; sourceTree = ""; }; 8B8FDAF9E8370366F7FA8524CB0D80B3 /* DTTextAttachmentHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextAttachmentHTMLElement.h; path = Core/Source/DTTextAttachmentHTMLElement.h; sourceTree = ""; }; + 8B91825A1F365A62C53FC349F17C7038 /* RDEPUBMetadataParseCancellationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseCancellationController.swift; sourceTree = ""; }; 8BA617294E6371DD7FAC32B61E0873F2 /* DTPieProgressIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTPieProgressIndicator.m; path = Core/Source/iOS/DTPieProgressIndicator.m; sourceTree = ""; }; + 8BCE11DBF7C58BA594172E1D980C1626 /* RDEPUBReaderAnnotationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAnnotationCoordinator.swift; sourceTree = ""; }; 8C9575F05D72C239E7E6F079BACDF4C7 /* DTVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTVersion.h; path = Core/Source/DTVersion.h; sourceTree = ""; }; - 8C99F4EC07FF6B3DD8C8B72E54DEB008 /* RDReaderPagingController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPagingController.swift; sourceTree = ""; }; + 8CD96965442A5F874F9CE6864437A3F7 /* RDEPUBPageCountCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageCountCache.swift; sourceTree = ""; }; 8CF7CEB31BED0554F3EF3D3442A89B47 /* DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreText.h; path = Core/Source/DTCoreText.h; sourceTree = ""; }; - 8D0BFFD14B93A2F313B937F14652738C /* RDEPUBNoteModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteModels.swift; sourceTree = ""; }; + 8D7CCE90374184A7112FA1618B41674F /* RDEPUBWebView+Reflowable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Reflowable.swift"; sourceTree = ""; }; 8DA0F94C0870C1F0DFADE5E9045E5E6E /* DTDictationPlaceholderTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTDictationPlaceholderTextAttachment.m; path = Core/Source/DTDictationPlaceholderTextAttachment.m; sourceTree = ""; }; - 8DFA3BB3F5BC48BF4CA6F8DE4559318C /* RDEPUBStyleCompatibilityModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleCompatibilityModels.swift; sourceTree = ""; }; + 8DD41010C7FC84E0AD4545E0B751822C /* RDEPUBSearchEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSearchEngine.swift; sourceTree = ""; }; 8E5297E7F5769C61C1838962BA76D4F5 /* NSArray+DTError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+DTError.m"; path = "Core/Source/NSArray+DTError.m"; sourceTree = ""; }; - 8ED87665B0B64B6E8153C0490203E43B /* RDEPUBTextPaginationInterfaces.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPaginationInterfaces.swift; sourceTree = ""; }; + 8E6187139F503118F5A562E9A48344D4 /* RDEPUBDarkImageAdjuster.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDarkImageAdjuster.swift; sourceTree = ""; }; + 8EAF25AD2B9FEE0FE357E3A433E3D92C /* RDEPUBAssetRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAssetRepository.swift; sourceTree = ""; }; 8EDA1618562CC224690CF6FC03AFED38 /* DTObjectTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTObjectTextAttachment.m; path = Core/Source/DTObjectTextAttachment.m; sourceTree = ""; }; - 8F08538F2728E3B8B81113D12DB74E3A /* RDEPUBCFICompatibility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFICompatibility.swift; sourceTree = ""; }; - 8F4881006C6FAE4DFADBE2ACE4E9A744 /* RDEPUBSemanticMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSemanticMarkerInjector.swift; sourceTree = ""; }; + 8F16DD7BE31C1407239419FAB208F7E9 /* RDEPUBPublication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPublication.swift; sourceTree = ""; }; 8F653EFBBEDAAC96A34BC93B4211E792 /* DTCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCompatibility.h; path = Core/Source/DTCompatibility.h; sourceTree = ""; }; - 8F661A240C4FCF4610D249E6389CF34E /* RDEPUBReaderController+AttachmentTooltip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+AttachmentTooltip.swift"; sourceTree = ""; }; - 8F9718E0B39AD8A3470522498E28F30F /* RDEPUBReaderPaginationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPaginationCoordinator.swift; sourceTree = ""; }; 8FAAF640165FC1B4B47C546F80D98B1E /* DTColor+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "DTColor+Compatibility.m"; path = "Core/Source/DTColor+Compatibility.m"; sourceTree = ""; }; - 90779E903799E06765C8410408D06C76 /* RDEPUBReaderController+RuntimeBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RuntimeBridge.swift"; sourceTree = ""; }; - 92960C67FEC64C10BA567184834F0DCC /* RDEPUBTypesettingPipeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTypesettingPipeline.swift; sourceTree = ""; }; - 92BDC596AE388602E419B3750DAD4229 /* RDEPUBBackgroundCoverageStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundCoverageStore.swift; sourceTree = ""; }; - 93A4E820E3592827FF87F820BBAC3179 /* RDReaderView.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RDReaderView.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9191031A62C049190D2BAAF26FCB4894 /* RDEPUBPreferences.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPreferences.swift; sourceTree = ""; }; + 9265A063637BD77FC50A93888BBAB11E /* RDEPUBReaderDependencies.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDependencies.swift; sourceTree = ""; }; + 93F324654B96751DA93FFC59A3679ED6 /* RDEPUBReaderHighlightsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderHighlightsViewController.swift; sourceTree = ""; }; 94705DADD1F09F4162F7D733318238F4 /* NSData+DTCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+DTCrypto.h"; path = "Core/Source/NSData+DTCrypto.h"; sourceTree = ""; }; + 94E4C09CA9FBF73F01D7DA481E085E0B /* RDEPUBReaderSettingsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettingsViewController.swift; sourceTree = ""; }; 9542AFE3A82C8AE56576254CE196E71A /* DTCustomColoredAccessory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCustomColoredAccessory.m; path = Core/Source/iOS/DTCustomColoredAccessory.m; sourceTree = ""; }; - 976DBE312D138856488A4DEF88606BC9 /* RDEPUBCFI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFI.swift; sourceTree = ""; }; + 95C55ACB797975D1F898B13F069C609C /* RDEPUBTextPaginationSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPaginationSupport.swift; sourceTree = ""; }; + 960055C2836F036B9C45375852678BCE /* RDEPUBReaderController+LocationResolution.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+LocationResolution.swift"; sourceTree = ""; }; + 9634274EF4914F6FCC9A1546501F2843 /* RDReaderPagingController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPagingController.swift; sourceTree = ""; }; + 96352099AD90E6B08B5178B06E6CD7CA /* RDEPUBReaderController+TableOfContents.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+TableOfContents.swift"; sourceTree = ""; }; + 96B2BF79370F179010B6481C20FA58C1 /* RDEPUBRuntimeChapter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimeChapter.swift; sourceTree = ""; }; + 9726056B845AD5027986E5391D52D33D /* RDEPUBReaderController+AttachmentTooltip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+AttachmentTooltip.swift"; sourceTree = ""; }; + 975BFAACE86185AB89AAD8FABBD64FD5 /* RDEPUBSelectionLoupeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionLoupeView.swift; sourceTree = ""; }; + 976C896B7BFA4C535F93A1CFF5F63077 /* ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; sourceTree = ""; }; 978449466D53EA6F5D40FCF0F353DDCA /* NSAttributedString+DTCoreText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+DTCoreText.m"; path = "Core/Source/NSAttributedString+DTCoreText.m"; sourceTree = ""; }; 98CF9C5D504838741E399811F4D5A0B7 /* NSAttributedString+SmallCaps.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+SmallCaps.m"; path = "Core/Source/NSAttributedString+SmallCaps.m"; sourceTree = ""; }; + 9AB8D9D0E868BF4DBDE6255D7F86E252 /* RDEPUBTextAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnchor.swift; sourceTree = ""; }; + 9AC44A856D45E8522194A048ABEAAF86 /* RDEPUBNoteModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteModels.swift; sourceTree = ""; }; + 9B503F169F6A42A61C4A4BBE13459E2B /* RDReaderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderView.swift; sourceTree = ""; }; 9C12A4A5BB42D0F68DABBD3BDF103BC5 /* DTDictationPlaceholderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTDictationPlaceholderView.h; path = Core/Source/DTDictationPlaceholderView.h; sourceTree = ""; }; - 9C1CDD44F96B466A619015AA0A7B2D17 /* RDEPUBCFIError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIError.swift; sourceTree = ""; }; 9C3615C94C147AEA92F022E119810E9F /* Data+Serialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Serialization.swift"; path = "Sources/ZIPFoundation/Data+Serialization.swift"; sourceTree = ""; }; 9C5E29D728B8CD4EABC0B3DD9CD9DE99 /* UIScreen+DTFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScreen+DTFoundation.h"; path = "Core/Source/iOS/UIScreen+DTFoundation.h"; sourceTree = ""; }; 9C6CE93FAA68605C6B90FF844A98E440 /* CTLineUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CTLineUtils.h; path = Core/Source/CTLineUtils.h; sourceTree = ""; }; + 9C8C8F9EC45583D9AC337EE967208872 /* RDEPUBHTMLNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBHTMLNormalizer.swift; sourceTree = ""; }; + 9CD0B4D61E7169153CE0968E2D6A923C /* RDEPUBReaderController+RenderSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RenderSupport.swift"; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9E94387C53C6E054A73F8EE89787003D /* RDEPUBTextLayoutFrame.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextLayoutFrame.swift; sourceTree = ""; }; - 9EA9EC765AA36B44104989E818B13326 /* RDEPUBReaderAssemblyCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAssemblyCoordinator.swift; sourceTree = ""; }; + 9EAA04F0E10B06A24072628253625784 /* RDEPUBWebView+Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Configuration.swift"; sourceTree = ""; }; + A10956FC20C49EDDBFC8BABCC6EB098A /* RDEPUBReaderAssemblyCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAssemblyCoordinator.swift; sourceTree = ""; }; + A188018454C7E42DF794BA1BA829E6FB /* RDEPUBPageResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageResolver.swift; sourceTree = ""; }; + A1898AE1C59D386BC2A565897777C7C9 /* RDEPUBFontFallbackResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFontFallbackResolver.swift; sourceTree = ""; }; + A18AC71FCC0D1D4F1FF1E6EAB3D229F0 /* RDEPUBSelectionOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionOverlayView.swift; sourceTree = ""; }; A20F6F0463A998DC3BD53DE9E63B63DE /* DTSmartPagingScrollView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTSmartPagingScrollView.m; path = Core/Source/iOS/DTSmartPagingScrollView.m; sourceTree = ""; }; - A357FC293046D648FE84D98C27AF2821 /* RDEPUBReaderDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDelegate.swift; sourceTree = ""; }; + A33BBD0D82DD401D9A3FF02B10B320B6 /* RDEPUBReaderPaginationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPaginationCoordinator.swift; sourceTree = ""; }; + A3BC0875FF335D55BEBFD59BBC6BF914 /* RDReaderView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RDReaderView-umbrella.h"; sourceTree = ""; }; + A3BC3FFA41C912BB401CBEFA2A9D9964 /* RDEPUBReaderController+ExternalLinks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ExternalLinks.swift"; sourceTree = ""; }; A3BD3ED7913130D32E14D5572CBCC921 /* NSString+DTFormatNumbers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTFormatNumbers.h"; path = "Core/Source/NSString+DTFormatNumbers.h"; sourceTree = ""; }; A3DE08AC23FE36A6C3F33A04700FDE57 /* DTAnimatedGIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAnimatedGIF.m; path = Core/Source/iOS/DTAnimatedGIF/DTAnimatedGIF.m; sourceTree = ""; }; A3F7613E99CAA29881A015D0ED969B86 /* NSURL+DTAppLinks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURL+DTAppLinks.h"; path = "Core/Source/iOS/NSURL+DTAppLinks.h"; sourceTree = ""; }; + A48622CB59921725556CF92DE20EC3C0 /* RDEPUBCSSCompatibilityLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCSSCompatibilityLayer.swift; sourceTree = ""; }; + A4EA2355F64BEA505537D228D101D967 /* RDEPUBReaderDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDelegate.swift; sourceTree = ""; }; + A567490FF7183A9FAAD5EEEFCF9E286F /* RDEPUBChapterCacheKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterCacheKey.swift; sourceTree = ""; }; A592A34CA2EA792DDFAFAEB516FE8A10 /* NSCoder+DTCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSCoder+DTCompatibility.h"; path = "Core/Source/NSCoder+DTCompatibility.h"; sourceTree = ""; }; - A59C77DC849EDF86936A25873E674F72 /* RDEPUBChapterTailNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterTailNormalizer.swift; sourceTree = ""; }; A5D1FFCB042340FB917DAAE076DD1CCF /* DTFoundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DTFoundation.modulemap; sourceTree = ""; }; + A5E93EDC68FEB87F429AEE9DA66B1F0C /* RDEPUBCFICompatibility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFICompatibility.swift; sourceTree = ""; }; A61C8F1BDD76EA59082F65269083BD08 /* DTCoreTextConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextConstants.h; path = Core/Source/DTCoreTextConstants.h; sourceTree = ""; }; A7E167717A18E0C858C6FD95804249E4 /* NSCharacterSet+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSCharacterSet+HTML.h"; path = "Core/Source/NSCharacterSet+HTML.h"; sourceTree = ""; }; A8A086525BF509F4581693115438B82B /* NSAttributedString+DTDebug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+DTDebug.h"; path = "Core/Source/NSAttributedString+DTDebug.h"; sourceTree = ""; }; - A8CA2D533001FF2048A1A42F91A23085 /* RDEPUBChapterLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLoader.swift; sourceTree = ""; }; A8CC38EFEF171FFEE008C32A6319BE6A /* DTFolderMonitor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTFolderMonitor.h; path = Core/Source/DTFolderMonitor.h; sourceTree = ""; }; - A9B4C7EA8E0601A462DDA753AFA93E66 /* RDReaderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderView.swift; sourceTree = ""; }; + A92C7A06935B41D87D6CB878FDAD9867 /* RDEPUBTextContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentView.swift; sourceTree = ""; }; + A9B958811F45DE07F349083133787061 /* RDEPUBTextLayouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextLayouter.swift; sourceTree = ""; }; AA0811310099A4BCB3D52683B70DB3D1 /* Pods-ReadViewDemo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReadViewDemo-dummy.m"; sourceTree = ""; }; - AA7348D6DBED868AB2EC3A252840235A /* RDEPUBReaderBottomToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderBottomToolView.swift; sourceTree = ""; }; - AA788B1C32640B2F2761D3C04446BB67 /* RDEPUBChapterLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLocation.swift; sourceTree = ""; }; - AB4FAD61ECDD132D743C6E8CFF267798 /* RDEPUBReaderTopToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTopToolView.swift; sourceTree = ""; }; + ABEB2DB799322EF9048487013D0E7DBC /* RDEPUBCFIDOMPathBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIDOMPathBuilder.swift; sourceTree = ""; }; AC0A4ED7E936923A29A5EEB1D95D6B55 /* DTTextAttachmentHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextAttachmentHTMLElement.m; path = Core/Source/DTTextAttachmentHTMLElement.m; sourceTree = ""; }; + AC3AB2ABB72B4569AE8FF72F31261641 /* RDEPUBWebView+FixedLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+FixedLayout.swift"; sourceTree = ""; }; ACA6D26B26D2653D6E1C871A482BD6DF /* NSURL+DTUnshorten.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURL+DTUnshorten.h"; path = "Core/Source/NSURL+DTUnshorten.h"; sourceTree = ""; }; ACD2A4FF41C5A223C2D4B74E0EDA9B2C /* DTCoreText-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DTCoreText-Info.plist"; sourceTree = ""; }; ADD5B2F66FCCFB58393314E7B9FE4384 /* NSMutableArray+DTMoving.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+DTMoving.m"; path = "Core/Source/NSMutableArray+DTMoving.m"; sourceTree = ""; }; - AE6582B1336C77B6C366DAA669570B4A /* RDReaderGestureController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderGestureController.swift; sourceTree = ""; }; - AE9B612343098773F84020F02EF8FB23 /* RDEPUBReaderState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderState.swift; sourceTree = ""; }; + AE8EE378CAD4622D735C39CD1B0D4FEB /* RDEPUBCFIError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIError.swift; sourceTree = ""; }; AF1516035C269F7A41EE064AAB14D562 /* DTActivityTitleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTActivityTitleView.h; path = Core/Source/iOS/DTActivityTitleView.h; sourceTree = ""; }; AF436E76C893E223A4F0BE86C1276054 /* UIScreen+DTFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScreen+DTFoundation.m"; path = "Core/Source/iOS/UIScreen+DTFoundation.m"; sourceTree = ""; }; + AF774474543DB1EEE0F2F8BCC54382AE /* RDEPUBWebViewDebug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebViewDebug.swift; sourceTree = ""; }; B0218A7B243387C79E099CA947CF243D /* Archive+Writing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Writing.swift"; path = "Sources/ZIPFoundation/Archive+Writing.swift"; sourceTree = ""; }; - B0390F2BB06B9CE8FCBCD30D60C154B9 /* RDEPUBCFIMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIMap.swift; sourceTree = ""; }; + B023EBCF5E4ECC879A57A325F2015CAA /* RDReaderTapRegionHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderTapRegionHandler.swift; sourceTree = ""; }; B12CE4962CDC324FB47FB92D6706D149 /* DTLinkButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTLinkButton.h; path = Core/Source/DTLinkButton.h; sourceTree = ""; }; B23C5F038DAC52B75213C0760C431F2B /* DTHTMLWriter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLWriter.m; path = Core/Source/DTHTMLWriter.m; sourceTree = ""; }; - B359BD655F8361E4030C9E5F4FBAAD97 /* RDEPUBReaderController+ContentDelegates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ContentDelegates.swift"; sourceTree = ""; }; + B34DC8A160DF20B18E04242D92D54346 /* RDEPUBReaderEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderEnvironment.swift; sourceTree = ""; }; B37118B8D16847B0F82E06A5B33898AB /* DTCSSStylesheet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCSSStylesheet.m; path = Core/Source/DTCSSStylesheet.m; sourceTree = ""; }; - B3B0AAC7948C4A103B284B0F3DCC1262 /* RDEPUBBuildDiagnosticsReporter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBuildDiagnosticsReporter.swift; sourceTree = ""; }; B41F7D27C2336F89BB0185ACB0B19EA9 /* ZIPFoundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-umbrella.h"; sourceTree = ""; }; B43D7603C0D66635268842EC0A2655AC /* NSFileWrapper+DTCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSFileWrapper+DTCopying.h"; path = "Core/Source/NSFileWrapper+DTCopying.h"; sourceTree = ""; }; B4A7F7402FAEE3A277A8716DDA115C95 /* NSString+Paragraphs.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Paragraphs.m"; path = "Core/Source/NSString+Paragraphs.m"; sourceTree = ""; }; B4D20A2B33F9F4DD8499FB462DE2731F /* DTAttributedTextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedTextView.h; path = Core/Source/DTAttributedTextView.h; sourceTree = ""; }; B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B52A7884E951C3C2064E5610DD417DA5 /* wxread-dark.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-dark.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-dark.css"; sourceTree = ""; }; + B54F008AC6146B84C53BC2ECB8725B94 /* RDEPUBTextPerformanceSampler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPerformanceSampler.swift; sourceTree = ""; }; + B5CA72BC08E08AF5467ECB9D87611149 /* RDReaderContentCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderContentCell.swift; sourceTree = ""; }; + B60943E11B87C06EB15D70467A9DAF42 /* RDEPUBBackgroundCoverageStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundCoverageStore.swift; sourceTree = ""; }; B6CA8CC4525EF64AA5CEE4A722737F1C /* DTCoreText-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DTCoreText-dummy.m"; sourceTree = ""; }; + B6F13727884F1901CB2C0D4FFABB1763 /* RDEPUBPresentationRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPresentationRuntime.swift; sourceTree = ""; }; + B700F9E8C03D3F9C537B14755D984564 /* String+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+RDEPUB.swift"; sourceTree = ""; }; B76B1E836C34CB755AEE1FBF7DC26BDD /* NSString+DTPaths.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTPaths.h"; path = "Core/Source/NSString+DTPaths.h"; sourceTree = ""; }; B7C4233DF4FA80BF4A9E6FA5082D49E5 /* DTCoreTextParagraphStyle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextParagraphStyle.m; path = Core/Source/DTCoreTextParagraphStyle.m; sourceTree = ""; }; + B812E0491FA6CD09EEDF1B3B674C86A3 /* RDEPUBAttachmentTooltipOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipOverlayView.swift; sourceTree = ""; }; B83D7A73677A2C3141EDEF56B9CE6584 /* DTVideoTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTVideoTextAttachment.m; path = Core/Source/DTVideoTextAttachment.m; sourceTree = ""; }; - B86020325578905B4D3E1E685C01CDA6 /* RDEPUBNotePopupViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupViewController.swift; sourceTree = ""; }; B8717A7A7BC5A1529A0F80FB3B22675D /* DTFoundation-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DTFoundation-Info.plist"; sourceTree = ""; }; - B9D06448CCB730D9D9ACF44F513FCA87 /* RDEPUBReaderServices.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderServices.swift; sourceTree = ""; }; + B8F150BC8AD9B0E615F730AEC4CC9098 /* RDEPUBTextSelectionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSelectionController.swift; sourceTree = ""; }; + BA427D1A69C32689C6C30A3C1CCE31A9 /* RDEPUBStyleSheetBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleSheetBuilder.swift; sourceTree = ""; }; BA8A527A4CCB2AF1C1E26744B301F6B8 /* DTIframeTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTIframeTextAttachment.m; path = Core/Source/DTIframeTextAttachment.m; sourceTree = ""; }; BAE45673EE2875DB23FA7BDD61FDE1EF /* DTCustomColoredAccessory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCustomColoredAccessory.h; path = Core/Source/iOS/DTCustomColoredAccessory.h; sourceTree = ""; }; BC59BBF6628D93AAC30CBFE0FF0151F2 /* ZIPFoundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-prefix.pch"; sourceTree = ""; }; BD65B936E2A6FEB74718EA86D9AC1899 /* DTCoreTextParagraphStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextParagraphStyle.h; path = Core/Source/DTCoreTextParagraphStyle.h; sourceTree = ""; }; - BD8F015377F898E4B0229FF584685390 /* RDEPUBWebView+FixedLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+FixedLayout.swift"; sourceTree = ""; }; BEA46E51E3616ECEAF0ACCEA9B8C67EF /* DTFolderMonitor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTFolderMonitor.m; path = Core/Source/DTFolderMonitor.m; sourceTree = ""; }; - BF55DCBC3A5B0BEC5B1A4C6187F20D38 /* RDReaderViewProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderViewProtocols.swift; sourceTree = ""; }; + BFF03BFDA015FD626A53E9FDBC95985A /* RDEPUBPaginator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginator.swift; sourceTree = ""; }; BFF51E56E09E095C92CB5B9F21384027 /* Archive+MemoryFile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+MemoryFile.swift"; path = "Sources/ZIPFoundation/Archive+MemoryFile.swift"; sourceTree = ""; }; C0DCB00F0B62D7DBE628D2B5FF006E93 /* DTCoreText.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTCoreText.debug.xcconfig; sourceTree = ""; }; - C229DC7F5A2BB8C2A3C586FF6CF41D47 /* epub-fixed-layout.html */ = {isa = PBXFileReference; includeInIndex = 1; name = "epub-fixed-layout.html"; path = "Sources/RDReaderView/EPUBCore/Resources/epub-fixed-layout.html"; sourceTree = ""; }; - C38063F3F0C8D42DC9970AD664B475B0 /* RDEPUBNotePopupCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupCoordinator.swift; sourceTree = ""; }; + C11CE525D0B420BD1FB8E289158F411D /* wxread-replace-latin.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-replace-latin.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-replace-latin.css"; sourceTree = ""; }; + C13A624085502DB7A43EAEF62D179E1E /* RDEPUBViewportTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBViewportTypes.swift; sourceTree = ""; }; + C23F9EE5E57C3681A4372C8884901664 /* RDEPUBPageLayoutSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageLayoutSnapshot.swift; sourceTree = ""; }; + C39473D9AF5F23B7886FFC138E4E7644 /* RDReaderView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RDReaderView.debug.xcconfig; sourceTree = ""; }; + C3A9A32F96EBBCFD15780B8A62E38996 /* RDEPUBSemanticMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSemanticMarkerInjector.swift; sourceTree = ""; }; C3E162E0261A5B0850158D3403191E62 /* Archive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Archive.swift; path = Sources/ZIPFoundation/Archive.swift; sourceTree = ""; }; - C46B8E1584FAC5111CD0C46A159AB951 /* String+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+RDEPUB.swift"; sourceTree = ""; }; C46FCF109DBCB37595D2A3366CF1D765 /* DTCoreTextLayoutFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextLayoutFrame.h; path = Core/Source/DTCoreTextLayoutFrame.h; sourceTree = ""; }; C495C74844982FAA1B846A2A89023D12 /* DTCoreTextMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextMacros.h; path = Core/Source/DTCoreTextMacros.h; sourceTree = ""; }; C5005A9E8F746647585CCAB26853E922 /* NSString+DTFormatNumbers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTFormatNumbers.m"; path = "Core/Source/NSString+DTFormatNumbers.m"; sourceTree = ""; }; C508E49F6BF9F50B05918C230B033069 /* DTTextBlock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextBlock.m; path = Core/Source/DTTextBlock.m; sourceTree = ""; }; - C59CB44187E054E80CA13F60FF8EE303 /* RDEPUBWebViewDebug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebViewDebug.swift; sourceTree = ""; }; + C559731DDB39006B286108CFA2DDA230 /* RDEPUBTextBookModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookModels.swift; sourceTree = ""; }; C69C7A531B5E021499D8FBF1DBE0E3BB /* NSAttributedStringRunDelegates.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NSAttributedStringRunDelegates.m; path = Core/Source/NSAttributedStringRunDelegates.m; sourceTree = ""; }; + C69FCCE0841CEE98E2EBE9D173C0622C /* RDReaderPreloadController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPreloadController.swift; sourceTree = ""; }; + C6F1C6F5695FAAA4BA13936F58275B89 /* RDEPUBTextBookBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookBuilder.swift; sourceTree = ""; }; C7E09A6C247D465CA0EF71B939B2A040 /* NSArray+DTError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+DTError.h"; path = "Core/Source/NSArray+DTError.h"; sourceTree = ""; }; - C8BE089AF845973208A11AA41A9B6AAB /* RDEPUBTextPositionConverter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPositionConverter.swift; sourceTree = ""; }; - C8E6795B0D648B27CC7EB030E7550566 /* RDEPUBWebView+Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Configuration.swift"; sourceTree = ""; }; + C86BF6C6A415B964A3F3B66B76DE9F0E /* RDEPUBPaginationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationModels.swift; sourceTree = ""; }; + C9D122DED12EE5B85539805AB7010B32 /* RDEPUBCFITextAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFITextAssertion.swift; sourceTree = ""; }; + CA02E7C359334DEF7C203F369B5D6AAD /* WeReadApi.js */ = {isa = PBXFileReference; includeInIndex = 1; name = WeReadApi.js; path = Sources/RDReaderView/EPUBCore/Resources/WeReadApi.js; sourceTree = ""; }; CA4A114775B98CEA4A566C18123B145F /* ZIPFoundation-ZIPFoundation_Privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "ZIPFoundation-ZIPFoundation_Privacy"; path = ZIPFoundation_Privacy.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; CA5630DC0E663F38A9EC713323697EE1 /* DTLazyImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTLazyImageView.m; path = Core/Source/DTLazyImageView.m; sourceTree = ""; }; CACF20969583778CAC1BC92BB96F27FD /* NSAttributedString+SmallCaps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+SmallCaps.h"; path = "Core/Source/NSAttributedString+SmallCaps.h"; sourceTree = ""; }; - CADF4452F89F7A5F419D2841FABC8CBC /* RDEPUBWebView+Search.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Search.swift"; sourceTree = ""; }; CB2BD1F8CFECB82D427DF046439E68D6 /* DTHTMLParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLParser.h; path = Core/Source/DTHTMLParser/DTHTMLParser.h; sourceTree = ""; }; CCC633BF76C79E0B4A6750337D5DCDB8 /* DTVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTVersion.m; path = Core/Source/DTVersion.m; sourceTree = ""; }; - CD3430DE68FE0020F68C496C24E87470 /* RDEPUBPageBreakPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageBreakPolicy.swift; sourceTree = ""; }; - CDCA21771B2D145D7DCFEEDE00FEDADC /* RDEPUBCFIPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIPath.swift; sourceTree = ""; }; + CCCAE17086995415A5984D248EA420D6 /* RDEPUBReaderLocationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLocationCoordinator.swift; sourceTree = ""; }; + CE12B04784ACE77BDF6F920F30699A70 /* RDReaderView+CollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+CollectionView.swift"; sourceTree = ""; }; CE761A55BD57C0BFD6336CD073F85C31 /* DTLinkButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTLinkButton.m; path = Core/Source/DTLinkButton.m; sourceTree = ""; }; CEBA01360577AAD3FD089B6B17C24260 /* UIFont+DTCoreText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIFont+DTCoreText.m"; path = "Core/Source/UIFont+DTCoreText.m"; sourceTree = ""; }; CEEC8715398E89B42F9B04E290E8E4FE /* NSString+DTURLEncoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTURLEncoding.h"; path = "Core/Source/NSString+DTURLEncoding.h"; sourceTree = ""; }; CF1CED3ED65443999913BC0D96ACA151 /* DTImage+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "DTImage+HTML.m"; path = "Core/Source/DTImage+HTML.m"; sourceTree = ""; }; - CFE57F56B1368E2617F06DE5FF893AA7 /* RDEPUBReaderChapterListController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChapterListController.swift; sourceTree = ""; }; D0856C3894240A673B5AB7C2704E9144 /* DTDictationPlaceholderTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTDictationPlaceholderTextAttachment.h; path = Core/Source/DTDictationPlaceholderTextAttachment.h; sourceTree = ""; }; D18519BCA8FAA9B01A704A0F0B9FFC78 /* Archive+ZIP64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+ZIP64.swift"; path = "Sources/ZIPFoundation/Archive+ZIP64.swift"; sourceTree = ""; }; - D1BEE21B44C49B23A7AAD27A4ACABF44 /* RDEPUBSelectionLoupeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionLoupeView.swift; sourceTree = ""; }; D1E89A31867FF1FB44B4B999988F1B82 /* DTFoundation */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DTFoundation; path = DTFoundation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D1EAAFA56DA59E80D53DA0DC7C6532D2 /* RDEPUBPreferences.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPreferences.swift; sourceTree = ""; }; - D24E48ADEAADE831B2F5FAFBF67CD53D /* RDReaderView+CollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+CollectionView.swift"; sourceTree = ""; }; - D2648A6B239413226E9A72CCC64D4C79 /* RDEPUBMemoryProbe.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMemoryProbe.swift; sourceTree = ""; }; + D246168B830810582866BFF9209DBFD3 /* RDEPUBChapterWarmupOrchestrator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterWarmupOrchestrator.swift; sourceTree = ""; }; D28A3E79D83EA4B807E2D3A5EE086B8B /* DTHTMLParserNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLParserNode.h; path = Core/Source/DTHTMLParserNode.h; sourceTree = ""; }; D30DBDF1EDB20CF83690AC6619AA0C48 /* NSString+DTPaths.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTPaths.m"; path = "Core/Source/NSString+DTPaths.m"; sourceTree = ""; }; - D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RDReaderView.debug.xcconfig; sourceTree = ""; }; + D368B75B200BA85AA29995C39AA63371 /* RDEPUBReaderController+PublicAPI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+PublicAPI.swift"; sourceTree = ""; }; D4C731AA2088D7E873D8E3D21B95D215 /* DTIframeTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTIframeTextAttachment.h; path = Core/Source/DTIframeTextAttachment.h; sourceTree = ""; }; + D5501A46F5D094488C50D841B21AAE96 /* UIColor+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUB.swift"; sourceTree = ""; }; D5DD4142DF33E1BE0B5A057101E851C5 /* DTLazyImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTLazyImageView.h; path = Core/Source/DTLazyImageView.h; sourceTree = ""; }; - D6DAFB416DE591A656C8614E117EEBEF /* ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; sourceTree = ""; }; - D75F5147BF67C9935CC45C16F0118C14 /* RDReaderTapRegionHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderTapRegionHandler.swift; sourceTree = ""; }; + D5E4801FDC3D9637688B1ADC282597D0 /* RDReaderView.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RDReaderView.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + D6220F23ADB2582C577A0C44BA52657D /* RDEPUBReaderRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderRuntime.swift; sourceTree = ""; }; + D7540C99450185F3D8B99D75A4C065F4 /* RDEPUBWebDecorationOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebDecorationOverlayView.swift; sourceTree = ""; }; D80A72D8B7941D30246858D840EE1EF5 /* DTCoreTextLayouter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayouter.m; path = Core/Source/DTCoreTextLayouter.m; sourceTree = ""; }; - D8590506F0EECF12909B4BBA8CCCF3D6 /* RDEPUBRuntimeChapter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimeChapter.swift; sourceTree = ""; }; + D994416DB1DCB53E8D1F4A20D10A3D58 /* RDEPUBTextAnnotationOverlay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnnotationOverlay.swift; sourceTree = ""; }; D9A812C3E577A3ADC36BAE3FF7AA4D9C /* NSFileWrapper+DTCopying.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSFileWrapper+DTCopying.m"; path = "Core/Source/NSFileWrapper+DTCopying.m"; sourceTree = ""; }; - DA068568A9B92FE52049E190968609A8 /* RDEPUBSafeArea.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSafeArea.swift; sourceTree = ""; }; DA2ED17D0DDF5F1C5606BFFD9A512DE4 /* DTCoreTextFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextFunctions.h; path = Core/Source/DTCoreTextFunctions.h; sourceTree = ""; }; - DAAA5CC57B64078C930CBC9221BAAB30 /* RDEPUBReaderHighlightsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderHighlightsViewController.swift; sourceTree = ""; }; - DC30694BAEEC8DB2869AF8D85E0C5173 /* RDEPUBReaderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderConfiguration.swift; sourceTree = ""; }; + DB350DF3FC839EBAC2D622C87CE4C8AD /* RDEPUBTextBookCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookCache.swift; sourceTree = ""; }; + DB3D7F9A13B102C659531CCAAB50035F /* RDReaderViewProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderViewProtocols.swift; sourceTree = ""; }; DC7D3AB85C954DA41E1500936C166C0E /* NSString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+HTML.h"; path = "Core/Source/NSString+HTML.h"; sourceTree = ""; }; + DCADA127F117763F7DC1E99EC687D9F1 /* RDEPUBReaderController+RuntimeBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RuntimeBridge.swift"; sourceTree = ""; }; DD0A5FF70CDBE87597264762EC20EF43 /* NSScanner+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSScanner+HTML.h"; path = "Core/Source/NSScanner+HTML.h"; sourceTree = ""; }; DD7A2DE5BDF72ABC066484CE554BDEF0 /* DTHorizontalRuleHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHorizontalRuleHTMLElement.m; path = Core/Source/DTHorizontalRuleHTMLElement.m; sourceTree = ""; }; + DDFAE45005F7BB7D9114003D6F4AA87A /* RDEPUBReaderToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderToolView.swift; sourceTree = ""; }; + DE0E862DE5230ECE5406E1D3EB3ED840 /* RDReaderView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RDReaderView.release.xcconfig; sourceTree = ""; }; DE4821B98DDE6C71411EC139EC6D2762 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; DE83356F8FBC1801D29CA93C1A190D81 /* Archive+Progress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Progress.swift"; path = "Sources/ZIPFoundation/Archive+Progress.swift"; sourceTree = ""; }; - DFC3591CDAEE16F7444AC3B176EFDAFD /* RDEPUBCFIResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIResolver.swift; sourceTree = ""; }; + DF8F93382E48EBF445FDA4A10C34EE23 /* RDEPUBNavigatorLayoutContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNavigatorLayoutContext.swift; sourceTree = ""; }; E0192469A486DA7CECFECEA37518B6B9 /* DTHTMLAttributedStringBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLAttributedStringBuilder.m; path = Core/Source/DTHTMLAttributedStringBuilder.m; sourceTree = ""; }; - E07FDF85BE977EC47B3B8194DA98648E /* RDEPUBChapterCacheKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterCacheKey.swift; sourceTree = ""; }; - E15D7179C6CF82530CF5E7264BBA1679 /* wxread-replace.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-replace.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-replace.css"; sourceTree = ""; }; - E2159ABBE19F1408CF16A6EF0271404D /* RDEPUBFixedLayoutTemplate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFixedLayoutTemplate.swift; sourceTree = ""; }; - E3B908A78A947A1A9D66C368CB616DE4 /* RDEPUBHTMLNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBHTMLNormalizer.swift; sourceTree = ""; }; + E169B071EF0569FFFECA74A68DA4ACB4 /* wxread-default.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-default.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-default.css"; sourceTree = ""; }; + E2B2A40829A4A7C9D9B922A44179609E /* RDEPUBChapterData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterData.swift; sourceTree = ""; }; + E3011B53A527F51AB7C6ABF0151CC130 /* RDEPUBRenderDiagnosticsCollector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRenderDiagnosticsCollector.swift; sourceTree = ""; }; E3CAAC46883B74B071843E5D38B5BF85 /* DTImage+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DTImage+HTML.h"; path = "Core/Source/DTImage+HTML.h"; sourceTree = ""; }; E4C5EB3F8F005C65005C101A9DBE488A /* DTWeakSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTWeakSupport.h; path = Core/Source/DTWeakSupport.h; sourceTree = ""; }; E5377786E80195587BF3E8A7589E5925 /* DTHTMLParserTextNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLParserTextNode.m; path = Core/Source/DTHTMLParserTextNode.m; sourceTree = ""; }; E5D4D6E12779C54F17AE98A1E6C9B699 /* DTBase64Coding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTBase64Coding.m; path = Core/Source/DTBase64Coding.m; sourceTree = ""; }; - E5ECDA952875E7B452D3D15796C20046 /* RDEPUBReaderTableOfContentsItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTableOfContentsItem.swift; sourceTree = ""; }; - E67A535D80CEA637777BC317BCFE28C6 /* RDEPUBReadingLocationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReadingLocationModels.swift; sourceTree = ""; }; E687628EF2FE92D093E3005D21B578E5 /* DTWeakSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTWeakSupport.h; path = Core/Source/DTWeakSupport.h; sourceTree = ""; }; E6B46EF6F055A721AF370D705D026E9E /* Data+CompressionDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+CompressionDeprecated.swift"; path = "Sources/ZIPFoundation/Data+CompressionDeprecated.swift"; sourceTree = ""; }; - E6CA207039A89EF3323F6FFEA38A1C3F /* RDEPUBCFIUtilities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIUtilities.swift; sourceTree = ""; }; E74132875CC4A311B230B68C085D8CE6 /* ResourceBundle-Resources-DTCoreText-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-Resources-DTCoreText-Info.plist"; sourceTree = ""; }; E853AAB3B09E0662567752431CEF1D33 /* DTTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextAttachment.h; path = Core/Source/DTTextAttachment.h; sourceTree = ""; }; E865600EE9117A9153716299FFA7912D /* Archive+Reading.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Reading.swift"; path = "Sources/ZIPFoundation/Archive+Reading.swift"; sourceTree = ""; }; E89F199ECDE796B15CAF8E0C1775FAA6 /* DTCoreTextConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextConstants.m; path = Core/Source/DTCoreTextConstants.m; sourceTree = ""; }; + E9074F378D3B707959729C0DB2C2B8AB /* RDEPUBPageMapReconciliationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageMapReconciliationCoordinator.swift; sourceTree = ""; }; E96C0EEB2032D3CC18F4B37A7C34C84C /* DTAttributedTextContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedTextContentView.h; path = Core/Source/DTAttributedTextContentView.h; sourceTree = ""; }; - E97B6B6C59BBCD6685CE808E64981E76 /* RDEPUBAssetRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAssetRepository.swift; sourceTree = ""; }; E9D8AB18960B56A997408E3235751624 /* ZIPFoundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ZIPFoundation-dummy.m"; sourceTree = ""; }; EA2BF1D7535B036E1356E8DF42A04954 /* DTTextBlock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextBlock.h; path = Core/Source/DTTextBlock.h; sourceTree = ""; }; - EB7C7A670C851744ACBCA45DA70795C8 /* wxread-dark.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-dark.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-dark.css"; sourceTree = ""; }; EB850927957E35DB8CE0F109188C99A9 /* DTCoreTextLayoutLine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayoutLine.m; path = Core/Source/DTCoreTextLayoutLine.m; sourceTree = ""; }; EBA0272559B0F7FAD8AC670AC7431188 /* Pods-ReadViewDemo-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReadViewDemo-umbrella.h"; sourceTree = ""; }; ED049C791713944233EE10C7A111C691 /* DTCoreTextGlyphRun.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextGlyphRun.m; path = Core/Source/DTCoreTextGlyphRun.m; sourceTree = ""; }; - ED4AFBE65217F4B7692C91828CC9BF53 /* RDEPUBReaderSearchCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchCoordinator.swift; sourceTree = ""; }; ED9A1EBDA0FD72671C7F6FE15F37B906 /* DTTextHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextHTMLElement.h; path = Core/Source/DTTextHTMLElement.h; sourceTree = ""; }; EDA6D5D7D0A04878EE78FAAE94F65068 /* DTCoreText */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DTCoreText; path = DTCoreText.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EDFEB59EC6040AB3CF58E4E1045A8913 /* RDEPUBModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBModels.swift; sourceTree = ""; }; EF625CF6A790938F5CE0F0C7DC36E340 /* DTCoreTextLayoutFrame+Cursor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "DTCoreTextLayoutFrame+Cursor.m"; path = "Core/Source/DTCoreTextLayoutFrame+Cursor.m"; sourceTree = ""; }; - F0796C7E8BEEA96989FCE6698868366D /* RDEPUBStyleSheetComposer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleSheetComposer.swift; sourceTree = ""; }; - F32976CA02F8617CB2E2A38D9261257F /* RDEPUBTextPageDecorationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageDecorationView.swift; sourceTree = ""; }; + EFB982B05AC5435F003EC90F8A93EDA0 /* RDReaderFlowLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderFlowLayout.swift; sourceTree = ""; }; + EFC5E77754171DA25D9A8A76A0985CCF /* RDEPUBReadingSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReadingSession.swift; sourceTree = ""; }; + F34C3AB5B2B7CFAED280AB097BF51C21 /* RDEPUBCoreTextPageFrameFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCoreTextPageFrameFactory.swift; sourceTree = ""; }; F3C9CA544EBF55130625F6C3AD2ABFB4 /* Archive+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Deprecated.swift"; path = "Sources/ZIPFoundation/Archive+Deprecated.swift"; sourceTree = ""; }; F3E93C4AC73A09DE1EAE805B0ADE3306 /* NSString+DTUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTUtilities.m"; path = "Core/Source/NSString+DTUtilities.m"; sourceTree = ""; }; + F44654531A4D3A5E63F117378BDBA15E /* RDEPUBCFIResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIResolver.swift; sourceTree = ""; }; F46010C3A0C82AE5ABEC814D7EC6351B /* DTAttributedTextView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedTextView.m; path = Core/Source/DTAttributedTextView.m; sourceTree = ""; }; - F4609798012DB9C5B85641224CD6081D /* RDEPUBTextPaginationSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPaginationSupport.swift; sourceTree = ""; }; F49FC82A04EE9B3B49CBA6CB88ACBC67 /* FileManager+ZIPDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FileManager+ZIPDeprecated.swift"; path = "Sources/ZIPFoundation/FileManager+ZIPDeprecated.swift"; sourceTree = ""; }; F4E2B1AC73977F10254628C0B7EBE38F /* DTCoreText-Resources */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "DTCoreText-Resources"; path = Resources.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - F54575506F65B0B0E12AABF25A9E6C6F /* RDEPUBCFISerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFISerializer.swift; sourceTree = ""; }; + F518D64E810A583A82D13ED1FEF8ACF8 /* RDEPUBRuntimePageCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimePageCount.swift; sourceTree = ""; }; F63EBF2BF3000B3391F6E693581EA129 /* NSData+DTCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+DTCrypto.m"; path = "Core/Source/NSData+DTCrypto.m"; sourceTree = ""; }; - F69C9651823EAB579B078EC3B7435D16 /* RDEPUBJavaScriptBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJavaScriptBridge.swift; sourceTree = ""; }; F7C508BE899A1397560A767CAEADB7B9 /* DTHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLElement.h; path = Core/Source/DTHTMLElement.h; sourceTree = ""; }; - F8BB0B072E5F24B51A6D348D8F9745CC /* RDReaderView+ContentAccess.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+ContentAccess.swift"; sourceTree = ""; }; - F94780553A2ED7BE5E972D634F7F52DE /* RDEPUBParser+Package.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Package.swift"; sourceTree = ""; }; + F91BABC77F3FC64BDACE8400F2A1808B /* epub-fixed-layout.html */ = {isa = PBXFileReference; includeInIndex = 1; name = "epub-fixed-layout.html"; path = "Sources/RDReaderView/EPUBCore/Resources/epub-fixed-layout.html"; sourceTree = ""; }; + F98C79337772FFEE3E718C3A251E5B9D /* RDEPUBWebView+Search.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Search.swift"; sourceTree = ""; }; F9D9BEF72311AF9E3239F9B92A9D2842 /* DTAnimatedGIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAnimatedGIF.h; path = Core/Source/iOS/DTAnimatedGIF/DTAnimatedGIF.h; sourceTree = ""; }; FA107BE47514D01B94B7A2670A9F83E5 /* NSString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+HTML.m"; path = "Core/Source/NSString+HTML.m"; sourceTree = ""; }; - FE1B490DE56DE55724779E3E8BF6D14A /* RDEPUBCFITextAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFITextAssertion.swift; sourceTree = ""; }; + FA9CF4A5EFC9FEEA82D723074F256E82 /* RDEPUBNoteDetector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteDetector.swift; sourceTree = ""; }; + FAA4CD4C6398D41D3E73B895B41A6C2B /* RDEPUBWebView+JavaScriptBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+JavaScriptBridge.swift"; sourceTree = ""; }; + FD5FFE0C7676BB044875877B91485384 /* RDEPUBTypesettingPipeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTypesettingPipeline.swift; sourceTree = ""; }; + FE17B2F690F6065BB982FA37EB9DF24C /* RDEPUBReaderTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTheme.swift; sourceTree = ""; }; FEA9F91758013B23B0EEA71DA22E7475 /* Pods-ReadViewDemo-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReadViewDemo-Info.plist"; sourceTree = ""; }; FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; - FECC02C082DBCB6126A7ECBA72C258B3 /* RDEPUBTextBuildPipelineInterfaces.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBuildPipelineInterfaces.swift; sourceTree = ""; }; FF1C41D226C0957F715EFF3F23893386 /* DTFoundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DTFoundation-dummy.m"; sourceTree = ""; }; FF63F5E8902D6F3F5E845A924EBBC6D3 /* DTFoundationConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTFoundationConstants.h; path = Core/Source/DTFoundationConstants.h; sourceTree = ""; }; - FFF9AAECD5FDC285A509FEED0B29951E /* RDEPUBReaderRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderRuntime.swift; sourceTree = ""; }; + FF8D9CFA61CC68C8A808C2B39CE0C7F8 /* RDEPUBCFIGenerator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIGenerator.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 02FD61DAA6380EBDC9D98B4644F4791F /* Frameworks */ = { + 002B78A4F01BC47F7C7339F0DD6A71BD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DBB66507EB07AB5F08E6D305AA35B8FB /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0E04762C7E5292C5A68246FB22B73AA6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1122A47ACC8E270202080A596BF6C153 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1005,20 +1022,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 2A1FC717178B248B6BB29FD676DA5C06 /* Frameworks */ = { + 2E80BB883280157F55CC1A24FD8FDD42 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 6421A89E3EF3FC54EE02EF965D4C0C1B /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 675C36B63C7099735ABF05C8415239F4 /* Frameworks */ = { + 622158A80ADA036B99DF9CBB09B11567 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8D86B1DD0F6E09A3FBC9E5D03DCFF90C /* Foundation.framework in Frameworks */, - AB57C91A5A85BDC769B0B16F93902861 /* ImageIO.framework in Frameworks */, - 5874BB57522B4E62B6A8E13CE0D4F6A5 /* QuartzCore.framework in Frameworks */, + 8E909D0FE7B6AB696AA03294AC9DEA23 /* Foundation.framework in Frameworks */, + 9C4C10EBC3E762CE02A9616E6E64514C /* ImageIO.framework in Frameworks */, + 9A250709DAD9354AF5EC1E2DB111096B /* QuartzCore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1035,31 +1053,41 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D6628DA002F520A4D4D4AA1E070A16D6 /* Frameworks */ = { + B39787E0F2B7900159C968B18DC80D2D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - E59106FD1BF297D3A64453E60776A85B /* Frameworks */ = { + FAD0182437679AAA39F0EDBF1BC1A05E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - F0FD7205A630E9BC2296E4014DAD1A46 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B002E59779E939442511C792C82E5DE8 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 01B04F0BE9DE512C31BD8B4DE265A3D1 /* EPUBTextRendering */ = { + isa = PBXGroup; + children = ( + E2B2A40829A4A7C9D9B922A44179609E /* RDEPUBChapterData.swift */, + 635FB53F5F49CC7F40F7C5E700A3A3EE /* RDEPUBDTCoreTextRenderer.swift */, + 674CA023806B055868320A59D18FD977 /* RDEPUBTextIndexTable.swift */, + 4D64719937C574F41EE90673FE70F681 /* RDEPUBTextPositionConverter.swift */, + 70AAB379D168256A54BC162D9CD200B7 /* RDEPUBTextRenderer.swift */, + 44D834B66794C6899B84C5782F3624C6 /* RDEPUBTextSearchEngine.swift */, + 7099DFE326BE72991030E977265222E8 /* RDPlainTextBookBuilder.swift */, + 84242A364B178500A166441993CF3C9D /* BuildPipeline */, + BFC039C2D19544126D270E60A9A1BD89 /* Pagination */, + D6DFD3B4A9DBC501F19BD5F07EBC6341 /* Typesetter */, + ); + name = EPUBTextRendering; + path = Sources/RDReaderView/EPUBTextRendering; + sourceTree = ""; + }; 06C22A27383EA079F8FF2367C9567BC0 /* DTCoreText */ = { isa = PBXGroup; children = ( @@ -1223,41 +1251,40 @@ name = DTAnimatedGIF; sourceTree = ""; }; - 1D9804819EBDA4A6E80B0DC0E8B5CEF0 /* EPUBTextRendering */ = { + 1AC1EBE8B740242D8ED52884A9881E9B /* Settings */ = { isa = PBXGroup; children = ( - 317357794EF461FA4C6992E798C900DF /* RDEPUBChapterData.swift */, - 505D658FEB22042EEDC51D402700F8C9 /* RDEPUBDTCoreTextRenderer.swift */, - 80F1F9A3C3AD1C55622B17CA5D503766 /* RDEPUBTextIndexTable.swift */, - C8BE089AF845973208A11AA41A9B6AAB /* RDEPUBTextPositionConverter.swift */, - 3B35A0451D9A3CF5477258E38D363189 /* RDEPUBTextRenderer.swift */, - 24130F5639CFFFA28D8BE6C2BD7A45FE /* RDEPUBTextSearchEngine.swift */, - 75F44A99D2304FE5397B4DCD6BABAF2B /* RDPlainTextBookBuilder.swift */, - B9550C76BFCCB8D00C45A27D139400B1 /* BuildPipeline */, - C0A487BA5466E564181169CA28A4FDFF /* Pagination */, - CF0890FDD57F8AE21A281CF5336F2D6D /* Typesetter */, + 27A8E420B22CCB314B97FF093673D7A7 /* RDEPUBReaderConfiguration.swift */, + 67B9C855C41D2A2276BB04970B73D00B /* RDEPUBReaderSettings.swift */, + 94E4C09CA9FBF73F01D7DA481E085E0B /* RDEPUBReaderSettingsViewController.swift */, + FE17B2F690F6065BB982FA37EB9DF24C /* RDEPUBReaderTheme.swift */, ); - name = EPUBTextRendering; - path = Sources/RDReaderView/EPUBTextRendering; + name = Settings; + path = Settings; sourceTree = ""; }; - 20DA68B2AE07089744D3DF8E725D162D /* ReaderView */ = { + 1C5AC06F32CDDE751C9C6BA935BEB1E3 /* RDReaderView */ = { isa = PBXGroup; children = ( - 410C5BB742936BFF1A02BAB0970CAF34 /* RDReaderContentCell.swift */, - 56A9260F17C4825708B83598BEC99365 /* RDReaderFlowLayout.swift */, - AE6582B1336C77B6C366DAA669570B4A /* RDReaderGestureController.swift */, - 33452E6D078F6CC1EF8A17DF42966CAA /* RDReaderPageChildViewController.swift */, - A9B4C7EA8E0601A462DDA753AFA93E66 /* RDReaderView.swift */, - D24E48ADEAADE831B2F5FAFBF67CD53D /* RDReaderView+CollectionView.swift */, - F8BB0B072E5F24B51A6D348D8F9745CC /* RDReaderView+ContentAccess.swift */, - 499C327E148794A7F09BAF1C83BE59EF /* RDReaderView+PageCurl.swift */, - 83041D1E40ECC246DB5539C712499A09 /* RDReaderView+ToolView.swift */, - BF55DCBC3A5B0BEC5B1A4C6187F20D38 /* RDReaderViewProtocols.swift */, - 33FF4304BAE6D19ABD62A40CC34BEBD6 /* Paging */, + 3C9F522B5818D3E8F6E4B10B22A9F3C9 /* cssInjector.js */, + 1AA0F27424B80E5D07E45D8DA86C9C26 /* epub-bridge.js */, + F91BABC77F3FC64BDACE8400F2A1808B /* epub-fixed-layout.html */, + 4568EB88B6EDC55FAC77D565DA1A2750 /* rangy-core.js */, + 86DD8A5C0624A7C2C0C328A40118C3E8 /* rangy-serializer.js */, + CA02E7C359334DEF7C203F369B5D6AAD /* WeReadApi.js */, + B52A7884E951C3C2064E5610DD417DA5 /* wxread-dark.css */, + E169B071EF0569FFFECA74A68DA4ACB4 /* wxread-default.css */, + 546293C95A2E9D6898E6E35EBAD67E3C /* wxread-replace.css */, + C11CE525D0B420BD1FB8E289158F411D /* wxread-replace-latin.css */, + 3F336D21B18772F72103036E6462A145 /* EPUBCore */, + 01B04F0BE9DE512C31BD8B4DE265A3D1 /* EPUBTextRendering */, + 88A30917BF0A7F49821B57F828197F51 /* EPUBUI */, + 913AE0D51BBCBADFBCA8DEFE33FA874C /* Pod */, + A55FE0149CE18136E8CDCA6B7F3D6AD4 /* ReaderView */, + BA377FB14D6835880328094AAF737A9C /* Support Files */, ); - name = ReaderView; - path = Sources/RDReaderView/ReaderView; + name = RDReaderView; + path = ../..; sourceTree = ""; }; 30694C306AB98E50937E9ECB722C31A4 /* Core */ = { @@ -1267,18 +1294,6 @@ name = Core; sourceTree = ""; }; - 33FF4304BAE6D19ABD62A40CC34BEBD6 /* Paging */ = { - isa = PBXGroup; - children = ( - 8C99F4EC07FF6B3DD8C8B72E54DEB008 /* RDReaderPagingController.swift */, - 82B54A69DF5E94D0D1B34E9D31C0D997 /* RDReaderPreloadController.swift */, - 008302A48FE881CADADBCB02832B880B /* RDReaderSpreadResolver.swift */, - D75F5147BF67C9935CC45C16F0118C14 /* RDReaderTapRegionHandler.swift */, - ); - name = Paging; - path = Paging; - sourceTree = ""; - }; 387832C7C64B3B352215F0FD83B927AC /* Support Files */ = { isa = PBXGroup; children = ( @@ -1295,6 +1310,48 @@ path = "../Target Support Files/DTCoreText"; sourceTree = ""; }; + 3F336D21B18772F72103036E6462A145 /* EPUBCore */ = { + isa = PBXGroup; + children = ( + 8EAF25AD2B9FEE0FE357E3A433E3D92C /* RDEPUBAssetRepository.swift */, + 703ED5D8DDE3AEF39CCBA1F75ED53574 /* RDEPUBFixedLayoutTemplate.swift */, + 4E031BA35A851ED17BB97887FA36FC83 /* RDEPUBJavaScriptBridge.swift */, + 3840A5C7212D01AADA285E04510E8020 /* RDEPUBModels.swift */, + DF8F93382E48EBF445FDA4A10C34EE23 /* RDEPUBNavigatorLayoutContext.swift */, + BFF03BFDA015FD626A53E9FDBC95985A /* RDEPUBPaginator.swift */, + 54626FDB51F5A24F21ED95B65F732EA6 /* RDEPUBParser.swift */, + 668E98AD14CBB11B4F60DC21B9B6EC4C /* RDEPUBParser+Archive.swift */, + 6CDD9C89E7009567107E9C16B4BE05C6 /* RDEPUBParser+Package.swift */, + 3EDE2594DAA2AA3DEE0DC6FBB8021FB4 /* RDEPUBParser+ReadingProfile.swift */, + 104CAC07B59B05601D706C051CFB2EB3 /* RDEPUBParser+Resources.swift */, + 60C982580B17056D1FD0076743AF2A20 /* RDEPUBParser+TOC.swift */, + 9191031A62C049190D2BAAF26FCB4894 /* RDEPUBPreferences.swift */, + 8F16DD7BE31C1407239419FAB208F7E9 /* RDEPUBPublication.swift */, + EFC5E77754171DA25D9A8A76A0985CCF /* RDEPUBReadingSession.swift */, + 49FF2BFED217D10DD3A12046FF81C511 /* RDEPUBRenderRequest.swift */, + 3F64125A1A7278D5D5DBEE29D0A23289 /* RDEPUBResourceDataProvider.swift */, + 44113776B1D8777D7989AA4A28E7AD89 /* RDEPUBResourceResolver.swift */, + 0EA7439F32DE1A2349B94E9F3EA60EFB /* RDEPUBResourceURLSchemeHandler.swift */, + 4B257B0E6084F9E4D8FE7DC39AF9B477 /* RDEPUBSafeArea.swift */, + 8DD41010C7FC84E0AD4545E0B751822C /* RDEPUBSearchEngine.swift */, + 0C6F4C9D48FC61243E5E405457EB1AB3 /* RDEPUBSearchModels.swift */, + BA427D1A69C32689C6C30A3C1CCE31A9 /* RDEPUBStyleSheetBuilder.swift */, + 9AB8D9D0E868BF4DBDE6255D7F86E252 /* RDEPUBTextAnchor.swift */, + 5CD9D3B5B4DC5B0B3B51CC6B8F9AAD86 /* RDEPUBWebView.swift */, + 9EAA04F0E10B06A24072628253625784 /* RDEPUBWebView+Configuration.swift */, + AC3AB2ABB72B4569AE8FF72F31261641 /* RDEPUBWebView+FixedLayout.swift */, + FAA4CD4C6398D41D3E73B895B41A6C2B /* RDEPUBWebView+JavaScriptBridge.swift */, + 8D7CCE90374184A7112FA1618B41674F /* RDEPUBWebView+Reflowable.swift */, + F98C79337772FFEE3E718C3A251E5B9D /* RDEPUBWebView+Search.swift */, + AF774474543DB1EEE0F2F8BCC54382AE /* RDEPUBWebViewDebug.swift */, + 9062C25885FC0EE21CF8F8921F75F063 /* CFI */, + B07D95F4F241310D6092EFC5D7B05BB0 /* Models */, + 5FC978C96AD989841519C7504A1065A3 /* Notes */, + ); + name = EPUBCore; + path = Sources/RDReaderView/EPUBCore; + sourceTree = ""; + }; 426395460B992FC2D2EF86AF65197AD4 /* Pods */ = { isa = PBXGroup; children = ( @@ -1305,16 +1362,15 @@ name = Pods; sourceTree = ""; }; - 4858F5F9C1EDB780E6E01A377CD98EA0 /* Settings */ = { + 49DDC7DDC84496BE70FB8D02D1AE579D /* Compatibility */ = { isa = PBXGroup; children = ( - DC30694BAEEC8DB2869AF8D85E0C5173 /* RDEPUBReaderConfiguration.swift */, - 2FADE8129957738A63AA3387FEC5222B /* RDEPUBReaderSettings.swift */, - 5857420A221729DB0D3EBBC59AA4BFF2 /* RDEPUBReaderSettingsViewController.swift */, - 4C9154B6031E8FD71F71E3F89391A519 /* RDEPUBReaderTheme.swift */, + A48622CB59921725556CF92DE20EC3C0 /* RDEPUBCSSCompatibilityLayer.swift */, + A1898AE1C59D386BC2A565897777C7C9 /* RDEPUBFontFallbackResolver.swift */, + 41DE1F810FCEEA86135A8828CE7E0B2E /* RDEPUBStyleCompatibilityModels.swift */, ); - name = Settings; - path = Settings; + name = Compatibility; + path = Compatibility; sourceTree = ""; }; 4B9763CFE13CC8B0D8AA60EE28156E6D /* Support Files */ = { @@ -1346,17 +1402,6 @@ name = iOS; sourceTree = ""; }; - 4FC26BA2882A9DCE49E8D0B4EFA5D1EE /* Compatibility */ = { - isa = PBXGroup; - children = ( - 5F3B770A5B6ED1C21FDA2BD1A8B06EE6 /* RDEPUBCSSCompatibilityLayer.swift */, - 29DE76CD63BD47DC86DF55C349B1CF91 /* RDEPUBFontFallbackResolver.swift */, - 8DFA3BB3F5BC48BF4CA6F8DE4559318C /* RDEPUBStyleCompatibilityModels.swift */, - ); - name = Compatibility; - path = Compatibility; - sourceTree = ""; - }; 53105D96992884E1673FC639B3987E2C /* DTHTMLParser */ = { isa = PBXGroup; children = ( @@ -1366,55 +1411,121 @@ name = DTHTMLParser; sourceTree = ""; }; - 5A0DF31FEBA61B1697993F27E68CD307 /* Notes */ = { + 55545D8C5ECD57C236F1C7E4B5CEB6F9 /* ChapterRuntime */ = { isa = PBXGroup; children = ( - C38063F3F0C8D42DC9970AD664B475B0 /* RDEPUBNotePopupCoordinator.swift */, - B86020325578905B4D3E1E685C01CDA6 /* RDEPUBNotePopupViewController.swift */, + 2B0931BA1423E80768E11D26C280D4AF /* RDEPUBBackgroundTrace.swift */, + 28F849C864C21B91AE83565813ECE513 /* RDEPUBBookPageMap.swift */, + A567490FF7183A9FAAD5EEEFCF9E286F /* RDEPUBChapterCacheKey.swift */, + 54AF51CFB19FCEF5B3306518C6B311A0 /* RDEPUBChapterDataCache.swift */, + 07EC70D349899B89F4546FFE4DE46EEC /* RDEPUBChapterLoader.swift */, + 750B16C9E2C4617CC27FCF04222EEAEF /* RDEPUBChapterLocation.swift */, + 0BFA10454111B92A9838334E4C3BDD21 /* RDEPUBChapterOffsetMap.swift */, + 1EAC09034BA70013D5EB674B407F2C63 /* RDEPUBChapterRuntimeStore.swift */, + 335C0A7F69EC3B4D9CB309D814D08733 /* RDEPUBChapterSummaryDiskCache.swift */, + D246168B830810582866BFF9209DBFD3 /* RDEPUBChapterWarmupOrchestrator.swift */, + 8CD96965442A5F874F9CE6864437A3F7 /* RDEPUBPageCountCache.swift */, + A188018454C7E42DF794BA1BA829E6FB /* RDEPUBPageResolver.swift */, + 96B2BF79370F179010B6481C20FA58C1 /* RDEPUBRuntimeChapter.swift */, + F518D64E810A583A82D13ED1FEF8ACF8 /* RDEPUBRuntimePageCount.swift */, + ); + name = ChapterRuntime; + path = ChapterRuntime; + sourceTree = ""; + }; + 5FC978C96AD989841519C7504A1065A3 /* Notes */ = { + isa = PBXGroup; + children = ( + FA9CF4A5EFC9FEEA82D723074F256E82 /* RDEPUBNoteDetector.swift */, + 9AC44A856D45E8522194A048ABEAAF86 /* RDEPUBNoteModels.swift */, + 3850371BB41E7533AF689FAA5ED33F9B /* RDEPUBNoteResolver.swift */, ); name = Notes; path = Notes; sourceTree = ""; }; - 828B7FE388769409E56A0166AC98DE46 /* EPUBCore */ = { + 702EB560B7AA81818A62FC2BC089122F /* TextPage */ = { isa = PBXGroup; children = ( - E97B6B6C59BBCD6685CE808E64981E76 /* RDEPUBAssetRepository.swift */, - E2159ABBE19F1408CF16A6EF0271404D /* RDEPUBFixedLayoutTemplate.swift */, - F69C9651823EAB579B078EC3B7435D16 /* RDEPUBJavaScriptBridge.swift */, - EDFEB59EC6040AB3CF58E4E1045A8913 /* RDEPUBModels.swift */, - 055B53D0A60DC351390338A48800AE77 /* RDEPUBNavigatorLayoutContext.swift */, - 65572083A10EE0C48AA7F493F923BCC0 /* RDEPUBPaginator.swift */, - 2AACA59CA4CBD2AFAACC3D162C2C75B5 /* RDEPUBParser.swift */, - 482C32ED3E6D23BBCED7BBE64E370A91 /* RDEPUBParser+Archive.swift */, - F94780553A2ED7BE5E972D634F7F52DE /* RDEPUBParser+Package.swift */, - 31B49361D4C4F119B135F85B7A8219DB /* RDEPUBParser+ReadingProfile.swift */, - 170D81239AF3CE5CD64BA2E44A505872 /* RDEPUBParser+Resources.swift */, - 43197856E7D06A21EF9B252FD37456A5 /* RDEPUBParser+TOC.swift */, - D1EAAFA56DA59E80D53DA0DC7C6532D2 /* RDEPUBPreferences.swift */, - 2FA2158447C66C1AA074403C4AEF1BD9 /* RDEPUBPublication.swift */, - 314E39CF7ADE645354AC8873D80957CA /* RDEPUBReadingSession.swift */, - 564F072D0966350F4C3986E01EB3EB2C /* RDEPUBRenderRequest.swift */, - 677182E8663D93C2C9E5617999F649C7 /* RDEPUBResourceResolver.swift */, - 5B5686B2CD1ADB2443ECF94B15903873 /* RDEPUBResourceURLSchemeHandler.swift */, - DA068568A9B92FE52049E190968609A8 /* RDEPUBSafeArea.swift */, - 78B43BA14CD70F5448082DE1EE73B034 /* RDEPUBSearchEngine.swift */, - 07E07EEE45C5439A207C5647210A4A7F /* RDEPUBSearchModels.swift */, - 72F99D96321DF0F2BC595BC7B6A66EA2 /* RDEPUBStyleSheetBuilder.swift */, - 5F81C81E7CF8B0AE4646712FC2ADD8B0 /* RDEPUBTextAnchor.swift */, - 09608C067F73D7A137B9F22AF1384DF2 /* RDEPUBWebView.swift */, - C8E6795B0D648B27CC7EB030E7550566 /* RDEPUBWebView+Configuration.swift */, - BD8F015377F898E4B0229FF584685390 /* RDEPUBWebView+FixedLayout.swift */, - 321FA16FF2FAD7985CCAC14EF5A221D4 /* RDEPUBWebView+JavaScriptBridge.swift */, - 4AAC2FDC24D8604A39BD25111689D06A /* RDEPUBWebView+Reflowable.swift */, - CADF4452F89F7A5F419D2841FABC8CBC /* RDEPUBWebView+Search.swift */, - C59CB44187E054E80CA13F60FF8EE303 /* RDEPUBWebViewDebug.swift */, - B3ECE7071D970FABF7CC926558951E2F /* CFI */, - EDB7CA736956B024AA10C0D144AC906D /* Models */, - A876037B9729B7D0BE726EB488D682BC /* Notes */, + 5B6CD2AB0DCDA662CD642765E8A5BE01 /* RDEPUBChapterDisplayContentCache.swift */, + 8E6187139F503118F5A562E9A48344D4 /* RDEPUBDarkImageAdjuster.swift */, + 1156A086D0660F13701595F2CA185B73 /* RDEPUBPageInteractionController.swift */, + C23F9EE5E57C3681A4372C8884901664 /* RDEPUBPageLayoutSnapshot.swift */, + 975BFAACE86185AB89AAD8FABBD64FD5 /* RDEPUBSelectionLoupeView.swift */, + A18AC71FCC0D1D4F1FF1E6EAB3D229F0 /* RDEPUBSelectionOverlayView.swift */, + D994416DB1DCB53E8D1F4A20D10A3D58 /* RDEPUBTextAnnotationOverlay.swift */, + 0634E78287117CD08963FC5011711674 /* RDEPUBTextContentInteractionCoordinator.swift */, + A92C7A06935B41D87D6CB878FDAD9867 /* RDEPUBTextContentView.swift */, + 713A7931BFA76291ACE4C095423CA7C2 /* RDEPUBTextPageBoundaryValidator.swift */, + 12B21DE048B2D9B7F8A8075D627B518F /* RDEPUBTextPageDecorationView.swift */, + 2CB104ADA375D292371993C1CB6AAB87 /* RDEPUBTextPageRenderView.swift */, + 4A53E7C06029DCDA8A67E02513AB726E /* RDEPUBTextPageVerticalJustifier.swift */, + B8F150BC8AD9B0E615F730AEC4CC9098 /* RDEPUBTextSelectionController.swift */, ); - name = EPUBCore; - path = Sources/RDReaderView/EPUBCore; + name = TextPage; + path = TextPage; + sourceTree = ""; + }; + 84242A364B178500A166441993CF3C9D /* BuildPipeline */ = { + isa = PBXGroup; + children = ( + 74254B4DE3AD0907F43AB96CEED7408A /* RDEPUBBuildDiagnosticsReporter.swift */, + 3124D3BC58A0A9244ACC822A8BF0860E /* RDEPUBChapterTailNormalizer.swift */, + 5874C0AE2C0D64722A34980EB20368B4 /* RDEPUBPaginationCacheCoordinator.swift */, + C6F1C6F5695FAAA4BA13936F58275B89 /* RDEPUBTextBookBuilder.swift */, + DB350DF3FC839EBAC2D622C87CE4C8AD /* RDEPUBTextBookCache.swift */, + C559731DDB39006B286108CFA2DDA230 /* RDEPUBTextBookModels.swift */, + 69D0D9087DAE27DCDC6CB950E20E3608 /* RDEPUBTextBuildPipelineInterfaces.swift */, + B54F008AC6146B84C53BC2ECB8725B94 /* RDEPUBTextPerformanceSampler.swift */, + ); + name = BuildPipeline; + path = BuildPipeline; + sourceTree = ""; + }; + 88A30917BF0A7F49821B57F828197F51 /* EPUBUI */ = { + isa = PBXGroup; + children = ( + B812E0491FA6CD09EEDF1B3B674C86A3 /* RDEPUBAttachmentTooltipOverlayView.swift */, + 89A5207DD90D0FB2512C9B23FEEB1A02 /* RDEPUBAttachmentTooltipView.swift */, + 87031C18DFBCC980112E5A9F3BDE49C3 /* RDEPUBImageViewController.swift */, + 6054D59EA001FB57A86513538FA8BB2D /* RDEPUBImageViewerCoordinator.swift */, + 680ADAD990534743F965D6B6E96D7E9B /* RDEPUBReaderBottomToolView.swift */, + 413360D0D62A7D3B12EAB6FD542C8B29 /* RDEPUBReaderChapterListController.swift */, + 169DD70FDD7715783E8DD88ADB49E35E /* RDEPUBReaderController.swift */, + 9726056B845AD5027986E5391D52D33D /* RDEPUBReaderController+AttachmentTooltip.swift */, + 785EFB63370FAE06B2485B755B42E2B5 /* RDEPUBReaderController+ContentDelegates.swift */, + 449E7EAE1D47E608A23C4994EA5F9D4C /* RDEPUBReaderController+DataSource.swift */, + A3BC3FFA41C912BB401CBEFA2A9D9964 /* RDEPUBReaderController+ExternalLinks.swift */, + 960055C2836F036B9C45375852678BCE /* RDEPUBReaderController+LocationResolution.swift */, + 87FAC4BEFBDC1FD8E9824724A68800F1 /* RDEPUBReaderController+Orientation.swift */, + D368B75B200BA85AA29995C39AA63371 /* RDEPUBReaderController+PublicAPI.swift */, + 9CD0B4D61E7169153CE0968E2D6A923C /* RDEPUBReaderController+RenderSupport.swift */, + DCADA127F117763F7DC1E99EC687D9F1 /* RDEPUBReaderController+RuntimeBridge.swift */, + 96352099AD90E6B08B5178B06E6CD7CA /* RDEPUBReaderController+TableOfContents.swift */, + 6707BF75590797EB88552A6829CBAF19 /* RDEPUBReaderController+Trial.swift */, + A4EA2355F64BEA505537D228D101D967 /* RDEPUBReaderDelegate.swift */, + 93F324654B96751DA93FFC59A3679ED6 /* RDEPUBReaderHighlightsViewController.swift */, + 54C212FF935AF7337E5CDE1C37D5785A /* RDEPUBReaderPersistence.swift */, + 03381B40A2B1AD4E41BCC3BE2C31B626 /* RDEPUBReaderSearchBarView.swift */, + 3B2E80F85DC4DFBB0320EB582FCBD933 /* RDEPUBReaderTableOfContentsItem.swift */, + DDFAE45005F7BB7D9114003D6F4AA87A /* RDEPUBReaderToolView.swift */, + 3429C49A65BE1911C634E1C95A0579BA /* RDEPUBReaderToolViewProtocols.swift */, + 1FA75FCB2F9051FFC2C7EC7FD801B3B6 /* RDEPUBReaderTopToolView.swift */, + 6C2BB1CB63F11F03F2A9AF85735EA076 /* RDEPUBSettingsFlipAutomation.swift */, + C13A624085502DB7A43EAEF62D179E1E /* RDEPUBViewportTypes.swift */, + 62A03DB083C11C5FDA1D858BC447E3AD /* RDEPUBWebContentView.swift */, + D7540C99450185F3D8B99D75A4C065F4 /* RDEPUBWebDecorationOverlayView.swift */, + 475D625CDF9C41734A2045F2DF2DA3A5 /* RDURLReaderController.swift */, + B700F9E8C03D3F9C537B14755D984564 /* String+RDEPUB.swift */, + D5501A46F5D094488C50D841B21AAE96 /* UIColor+RDEPUB.swift */, + 165E51AE35F6043DF9684A794A48F348 /* UIColor+RDEPUBHex.swift */, + 9F512A0F0A7184A87C378200CF177064 /* Notes */, + A963665562EFFC19E5A34047CDF1BB12 /* ReaderController */, + 1AC1EBE8B740242D8ED52884A9881E9B /* Settings */, + 702EB560B7AA81818A62FC2BC089122F /* TextPage */, + ); + name = EPUBUI; + path = Sources/RDReaderView/EPUBUI; sourceTree = ""; }; 8AE80DCE6937729AEA82EC094AC470AE /* Resources */ = { @@ -1425,6 +1536,36 @@ name = Resources; sourceTree = ""; }; + 9062C25885FC0EE21CF8F8921F75F063 /* CFI */ = { + isa = PBXGroup; + children = ( + 6D1978442C3B21E292AEF661B6F98568 /* RDEPUBCFI.swift */, + A5E93EDC68FEB87F429AEE9DA66B1F0C /* RDEPUBCFICompatibility.swift */, + ABEB2DB799322EF9048487013D0E7DBC /* RDEPUBCFIDOMPathBuilder.swift */, + AE8EE378CAD4622D735C39CD1B0D4FEB /* RDEPUBCFIError.swift */, + FF8D9CFA61CC68C8A808C2B39CE0C7F8 /* RDEPUBCFIGenerator.swift */, + 18CD683F1DDEBEF3EDA621F9D3E95178 /* RDEPUBCFIMap.swift */, + 0879F59F605F8E1512ADB3D29CB7912E /* RDEPUBCFIParser.swift */, + 35AAB84F53D47E997BE5822C68A820E1 /* RDEPUBCFIPath.swift */, + 65D988AEE2A2A568F2F08472880C56D0 /* RDEPUBCFIRange.swift */, + 34D52809A0CFBA9664082FEDE2EBF420 /* RDEPUBCFIRecoveryEngine.swift */, + F44654531A4D3A5E63F117378BDBA15E /* RDEPUBCFIResolver.swift */, + 00E9FEEAFFD8790F7439A91AD283F5F3 /* RDEPUBCFISerializer.swift */, + C9D122DED12EE5B85539805AB7010B32 /* RDEPUBCFITextAssertion.swift */, + 53BFEB15CE78B6B97488049218D34E0C /* RDEPUBCFIUtilities.swift */, + ); + name = CFI; + path = CFI; + sourceTree = ""; + }; + 913AE0D51BBCBADFBCA8DEFE33FA874C /* Pod */ = { + isa = PBXGroup; + children = ( + D5E4801FDC3D9637688B1ADC282597D0 /* RDReaderView.podspec */, + ); + name = Pod; + sourceTree = ""; + }; 994C39A644C0722C7A9E97AB46DB8965 /* Targets Support Files */ = { isa = PBXGroup; children = ( @@ -1480,77 +1621,89 @@ name = Core; sourceTree = ""; }; - A6E4119383355B5EB9579F43D584B9FD /* RDReaderView */ = { + 9F512A0F0A7184A87C378200CF177064 /* Notes */ = { isa = PBXGroup; children = ( - 2EBD41467F344F6091AD0C1A3981EDC3 /* cssInjector.js */, - 64676B6C8A9F9195A481010213F37B6C /* epub-bridge.js */, - C229DC7F5A2BB8C2A3C586FF6CF41D47 /* epub-fixed-layout.html */, - 15A5AF469CA067562D1516F98913D4DF /* rangy-core.js */, - 1527510DA54482E3557D6BB3EB651015 /* rangy-serializer.js */, - 3AF63806C4793F384C4CF28201BC756C /* WeReadApi.js */, - EB7C7A670C851744ACBCA45DA70795C8 /* wxread-dark.css */, - 7667AF77CBF47AFAA7D5F190B16A51FF /* wxread-default.css */, - E15D7179C6CF82530CF5E7264BBA1679 /* wxread-replace.css */, - 4F5A145710C3E212B771C4E38BED9926 /* wxread-replace-latin.css */, - 828B7FE388769409E56A0166AC98DE46 /* EPUBCore */, - 1D9804819EBDA4A6E80B0DC0E8B5CEF0 /* EPUBTextRendering */, - BD102190D5C3EBD65EF2520B52413541 /* EPUBUI */, - F98C9DB9E125F328B2B30E1CE7F0C09A /* Pod */, - 20DA68B2AE07089744D3DF8E725D162D /* ReaderView */, - A873C6C06E8019679E6189DCC59175B4 /* Support Files */, - ); - name = RDReaderView; - path = ../..; - sourceTree = ""; - }; - A873C6C06E8019679E6189DCC59175B4 /* Support Files */ = { - isa = PBXGroup; - children = ( - 7B0179A6B7825D9A269A8A50C2BCBDDB /* RDReaderView.modulemap */, - 1C3DEA097D20AC964CFB673C39B4A8AF /* RDReaderView-dummy.m */, - 0EA81A6E9B081AC375550C90411530B8 /* RDReaderView-Info.plist */, - 5514CEBB75D8BFFC1D1CA08E8E46BE62 /* RDReaderView-prefix.pch */, - 36606A851BDB5FFF6E9BFFDD7FB72455 /* RDReaderView-umbrella.h */, - D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */, - 2B73CF24646475E517B8FDF110972E77 /* RDReaderView.release.xcconfig */, - D6DAFB416DE591A656C8614E117EEBEF /* ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist */, - ); - name = "Support Files"; - path = "ReadViewDemo/Pods/Target Support Files/RDReaderView"; - sourceTree = ""; - }; - A876037B9729B7D0BE726EB488D682BC /* Notes */ = { - isa = PBXGroup; - children = ( - 0430034A7AFBCEC269D7C46517004DF0 /* RDEPUBNoteDetector.swift */, - 8D0BFFD14B93A2F313B937F14652738C /* RDEPUBNoteModels.swift */, - 11D2090101EA891F21834863EE859AE8 /* RDEPUBNoteResolver.swift */, + 893B4227196A12B86EF2F32C46FCA05E /* RDEPUBNotePopupCoordinator.swift */, + 18D7EB46EC2C4DD8B46B6FADEFD16BB6 /* RDEPUBNotePopupViewController.swift */, ); name = Notes; path = Notes; sourceTree = ""; }; - B3ECE7071D970FABF7CC926558951E2F /* CFI */ = { + A3A292F57EFDA9C7CE6BEB56A6109C3B /* Paging */ = { isa = PBXGroup; children = ( - 976DBE312D138856488A4DEF88606BC9 /* RDEPUBCFI.swift */, - 8F08538F2728E3B8B81113D12DB74E3A /* RDEPUBCFICompatibility.swift */, - 49DF44BF9FBD9CCC9CDE0A998C428D86 /* RDEPUBCFIDOMPathBuilder.swift */, - 9C1CDD44F96B466A619015AA0A7B2D17 /* RDEPUBCFIError.swift */, - 104930ADAD326C90EB587485A6BFF755 /* RDEPUBCFIGenerator.swift */, - B0390F2BB06B9CE8FCBCD30D60C154B9 /* RDEPUBCFIMap.swift */, - 0ADCC15F3965570C3568420F9A75845E /* RDEPUBCFIParser.swift */, - CDCA21771B2D145D7DCFEEDE00FEDADC /* RDEPUBCFIPath.swift */, - 842B11843F82FBEA1D725543ACAB02CE /* RDEPUBCFIRange.swift */, - 35803D654BE44326A28A0947DD178B63 /* RDEPUBCFIRecoveryEngine.swift */, - DFC3591CDAEE16F7444AC3B176EFDAFD /* RDEPUBCFIResolver.swift */, - F54575506F65B0B0E12AABF25A9E6C6F /* RDEPUBCFISerializer.swift */, - FE1B490DE56DE55724779E3E8BF6D14A /* RDEPUBCFITextAssertion.swift */, - E6CA207039A89EF3323F6FFEA38A1C3F /* RDEPUBCFIUtilities.swift */, + 9634274EF4914F6FCC9A1546501F2843 /* RDReaderPagingController.swift */, + C69FCCE0841CEE98E2EBE9D173C0622C /* RDReaderPreloadController.swift */, + 7D513DFE7299EE03B0CB5A16A4798152 /* RDReaderSpreadResolver.swift */, + B023EBCF5E4ECC879A57A325F2015CAA /* RDReaderTapRegionHandler.swift */, ); - name = CFI; - path = CFI; + name = Paging; + path = Paging; + sourceTree = ""; + }; + A55FE0149CE18136E8CDCA6B7F3D6AD4 /* ReaderView */ = { + isa = PBXGroup; + children = ( + B5CA72BC08E08AF5467ECB9D87611149 /* RDReaderContentCell.swift */, + EFB982B05AC5435F003EC90F8A93EDA0 /* RDReaderFlowLayout.swift */, + 38C859102801709085785434DA17448C /* RDReaderGestureController.swift */, + 2F1CF1FACBA97E3B87ED0ECBBA7271E2 /* RDReaderPageChildViewController.swift */, + 9B503F169F6A42A61C4A4BBE13459E2B /* RDReaderView.swift */, + CE12B04784ACE77BDF6F920F30699A70 /* RDReaderView+CollectionView.swift */, + 7B84F7CB373F124B5ADA362B7A204376 /* RDReaderView+ContentAccess.swift */, + 4D66B85E6DC6F2833A9D9561D6235DCA /* RDReaderView+PageCurl.swift */, + 89A9008EF0A17C27F6EA9F37EF6DCFD0 /* RDReaderView+ToolView.swift */, + DB3D7F9A13B102C659531CCAAB50035F /* RDReaderViewProtocols.swift */, + A3A292F57EFDA9C7CE6BEB56A6109C3B /* Paging */, + ); + name = ReaderView; + path = Sources/RDReaderView/ReaderView; + sourceTree = ""; + }; + A963665562EFFC19E5A34047CDF1BB12 /* ReaderController */ = { + isa = PBXGroup; + children = ( + B60943E11B87C06EB15D70467A9DAF42 /* RDEPUBBackgroundCoverageStore.swift */, + 0ED3B8B105513BA029A8DAC14677F712 /* RDEPUBBackgroundPriorityPolicy.swift */, + 274FAE68017F54F1F939837B96E2826D /* RDEPUBJumpSession.swift */, + 3CEB851D42C524A554A2D26249EB6440 /* RDEPUBMemoryProbe.swift */, + 8B91825A1F365A62C53FC349F17C7038 /* RDEPUBMetadataParseCancellationController.swift */, + 6C49C3D57B022D024E68EDB3EF68D60F /* RDEPUBMetadataParseWorker.swift */, + E9074F378D3B707959729C0DB2C2B8AB /* RDEPUBPageMapReconciliationCoordinator.swift */, + B6F13727884F1901CB2C0D4FFABB1763 /* RDEPUBPresentationRuntime.swift */, + 8BCE11DBF7C58BA594172E1D980C1626 /* RDEPUBReaderAnnotationCoordinator.swift */, + A10956FC20C49EDDBFC8BABCC6EB098A /* RDEPUBReaderAssemblyCoordinator.swift */, + 15C30720702E12C08A23F03FF9F06A46 /* RDEPUBReaderChromeCoordinator.swift */, + 1300C3BDE866D4C29C0792C55713758D /* RDEPUBReaderContext.swift */, + 9265A063637BD77FC50A93888BBAB11E /* RDEPUBReaderDependencies.swift */, + B34DC8A160DF20B18E04242D92D54346 /* RDEPUBReaderEnvironment.swift */, + 4E1C8E681EAA73E10C3BE26F8951E5D6 /* RDEPUBReaderLoadCoordinator.swift */, + CCCAE17086995415A5984D248EA420D6 /* RDEPUBReaderLocationCoordinator.swift */, + A33BBD0D82DD401D9A3FF02B10B320B6 /* RDEPUBReaderPaginationCoordinator.swift */, + D6220F23ADB2582C577A0C44BA52657D /* RDEPUBReaderRuntime.swift */, + 16735EDC0457A01293AE4660C1097B43 /* RDEPUBReaderSearchCoordinator.swift */, + 3B4326BC8EF36B8BB0A32D8E047921AD /* RDEPUBReaderServices.swift */, + 745DE64E801F69497754257504DF420A /* RDEPUBReaderState.swift */, + 2C5BF48946F992DC481016853F217CE2 /* RDEPUBReaderUIState.swift */, + 7E28782DB94C6BAF80766A255BB55167 /* RDEPUBReaderViewportMonitor.swift */, + 4AB1D76489DD745A028573570A736E59 /* RDEPUBSelectionState.swift */, + 55545D8C5ECD57C236F1C7E4B5CEB6F9 /* ChapterRuntime */, + ); + name = ReaderController; + path = ReaderController; + sourceTree = ""; + }; + B07D95F4F241310D6092EFC5D7B05BB0 /* Models */ = { + isa = PBXGroup; + children = ( + 17E520FDB2483CFB8A76E13BAB2BFFD8 /* RDEPUBAnnotationModels.swift */, + C86BF6C6A415B964A3F3B66B76DE9F0E /* RDEPUBPaginationModels.swift */, + 4C2C269173C1D497D6810C8BF62E7338 /* RDEPUBReadingLocationModels.swift */, + ); + name = Models; + path = Models; sourceTree = ""; }; B45E17EA805660F2389832287623284D /* ZIPFoundation */ = { @@ -1584,83 +1737,40 @@ path = ZIPFoundation; sourceTree = ""; }; - B9550C76BFCCB8D00C45A27D139400B1 /* BuildPipeline */ = { - isa = PBXGroup; - children = ( - B3B0AAC7948C4A103B284B0F3DCC1262 /* RDEPUBBuildDiagnosticsReporter.swift */, - A59C77DC849EDF86936A25873E674F72 /* RDEPUBChapterTailNormalizer.swift */, - 528643F4F0CD2FEC7AD5C0ACA9895D9D /* RDEPUBPaginationCacheCoordinator.swift */, - 0F5110430A322C853C80F6041B0EDF94 /* RDEPUBTextBookBuilder.swift */, - 696C8561F8104D867B50A79E1147DE02 /* RDEPUBTextBookCache.swift */, - 33643E88B779A3DB1B3A14C7A194045B /* RDEPUBTextBookModels.swift */, - FECC02C082DBCB6126A7ECBA72C258B3 /* RDEPUBTextBuildPipelineInterfaces.swift */, - 8300EA716892548FEA44EC27801F5987 /* RDEPUBTextPerformanceSampler.swift */, - ); - name = BuildPipeline; - path = BuildPipeline; - sourceTree = ""; - }; B9CF9F63ECCD4435AA8F5FEDC37E6258 /* Development Pods */ = { isa = PBXGroup; children = ( - A6E4119383355B5EB9579F43D584B9FD /* RDReaderView */, + 1C5AC06F32CDDE751C9C6BA935BEB1E3 /* RDReaderView */, ); name = "Development Pods"; sourceTree = ""; }; - BD102190D5C3EBD65EF2520B52413541 /* EPUBUI */ = { + BA377FB14D6835880328094AAF737A9C /* Support Files */ = { isa = PBXGroup; children = ( - 25B061393791774B154F5F8759A2BDD9 /* RDEPUBAttachmentTooltipOverlayView.swift */, - 76DC91EBC1C9627AD0F09DFE57D04F52 /* RDEPUBAttachmentTooltipView.swift */, - 174D4D5E30ACC1B5266B20D621E65064 /* RDEPUBImageViewController.swift */, - 75DA84652E7A2A0529D8385085690062 /* RDEPUBImageViewerCoordinator.swift */, - AA7348D6DBED868AB2EC3A252840235A /* RDEPUBReaderBottomToolView.swift */, - CFE57F56B1368E2617F06DE5FF893AA7 /* RDEPUBReaderChapterListController.swift */, - 773DBBEB900B259FCF917AD7299A4F34 /* RDEPUBReaderController.swift */, - 8F661A240C4FCF4610D249E6389CF34E /* RDEPUBReaderController+AttachmentTooltip.swift */, - B359BD655F8361E4030C9E5F4FBAAD97 /* RDEPUBReaderController+ContentDelegates.swift */, - 6A42607282986A7CB11AD3361E82530C /* RDEPUBReaderController+DataSource.swift */, - 10E90103F330F58312FAAE9AA82E84B6 /* RDEPUBReaderController+ExternalLinks.swift */, - 67BEEE595D865F7E86B156385CDF6111 /* RDEPUBReaderController+LocationResolution.swift */, - 321B4FCED5571F74A0AAD75BF9637505 /* RDEPUBReaderController+PublicAPI.swift */, - 08ABF9E1CC5582725B03469178A59A0A /* RDEPUBReaderController+RenderSupport.swift */, - 90779E903799E06765C8410408D06C76 /* RDEPUBReaderController+RuntimeBridge.swift */, - 17A6573887F6DA388F2EA0B96400C892 /* RDEPUBReaderController+TableOfContents.swift */, - A357FC293046D648FE84D98C27AF2821 /* RDEPUBReaderDelegate.swift */, - DAAA5CC57B64078C930CBC9221BAAB30 /* RDEPUBReaderHighlightsViewController.swift */, - 852FB37B13A5612919954D97632ED37F /* RDEPUBReaderPersistence.swift */, - 1F6418C1A247C2BC37337DE4C0A9C770 /* RDEPUBReaderSearchBarView.swift */, - E5ECDA952875E7B452D3D15796C20046 /* RDEPUBReaderTableOfContentsItem.swift */, - 59600B93DBD35077CC79C74D07BC03CE /* RDEPUBReaderToolView.swift */, - AB4FAD61ECDD132D743C6E8CFF267798 /* RDEPUBReaderTopToolView.swift */, - 894D74C9B59F1EE9BE4DFF5D3B60B772 /* RDEPUBSettingsFlipAutomation.swift */, - 751A6591CCEC79FB3B33C8EADF3465B6 /* RDEPUBViewportTypes.swift */, - 5B37A3A1274B29F6D04BFB081D22CB96 /* RDEPUBWebContentView.swift */, - 636939AFA1CB3F49FE41D1160D512A54 /* RDEPUBWebDecorationOverlayView.swift */, - 5253C9907BB440614610BB054B001181 /* RDURLReaderController.swift */, - C46B8E1584FAC5111CD0C46A159AB951 /* String+RDEPUB.swift */, - 21D501067A95E18D0DCAEF44170D36F2 /* UIColor+RDEPUB.swift */, - 0ABD7D7079A2D977E38F0289E27447EC /* UIColor+RDEPUBHex.swift */, - 5A0DF31FEBA61B1697993F27E68CD307 /* Notes */, - DAD1CF22E2CEE4FF1740DB9F6E221942 /* ReaderController */, - 4858F5F9C1EDB780E6E01A377CD98EA0 /* Settings */, - E8DB0A553F41A3FD84BD21409EFA60C0 /* TextPage */, + 5F346BE7A196241EDCEEF3795731C9D7 /* RDReaderView.modulemap */, + 085DA39E20C3A758783B115AB62B1E72 /* RDReaderView-dummy.m */, + 83610D7D676D5E06082204EDE1A1431B /* RDReaderView-Info.plist */, + 63DA2C409280DA03F0E29C87EC858664 /* RDReaderView-prefix.pch */, + A3BC0875FF335D55BEBFD59BBC6BF914 /* RDReaderView-umbrella.h */, + C39473D9AF5F23B7886FFC138E4E7644 /* RDReaderView.debug.xcconfig */, + DE0E862DE5230ECE5406E1D3EB3ED840 /* RDReaderView.release.xcconfig */, + 976C896B7BFA4C535F93A1CFF5F63077 /* ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist */, ); - name = EPUBUI; - path = Sources/RDReaderView/EPUBUI; + name = "Support Files"; + path = "ReadViewDemo/Pods/Target Support Files/RDReaderView"; sourceTree = ""; }; - C0A487BA5466E564181169CA28A4FDFF /* Pagination */ = { + BFC039C2D19544126D270E60A9A1BD89 /* Pagination */ = { isa = PBXGroup; children = ( - 328AA616EE25AB53BFB60EFE1C7AAFCE /* RDEPUBChapterPageCounter.swift */, - 09336B106D598DCD38F6B79AEA629066 /* RDEPUBCoreTextPageFrameFactory.swift */, - CD3430DE68FE0020F68C496C24E87470 /* RDEPUBPageBreakPolicy.swift */, - 86526ADF32337683AA173B5FC1E6A94C /* RDEPUBTextLayouter.swift */, - 9E94387C53C6E054A73F8EE89787003D /* RDEPUBTextLayoutFrame.swift */, - 8ED87665B0B64B6E8153C0490203E43B /* RDEPUBTextPaginationInterfaces.swift */, - F4609798012DB9C5B85641224CD6081D /* RDEPUBTextPaginationSupport.swift */, + 22887CE9C9E366BD11055E6B101C9A00 /* RDEPUBChapterPageCounter.swift */, + F34C3AB5B2B7CFAED280AB097BF51C21 /* RDEPUBCoreTextPageFrameFactory.swift */, + 875B4A5662D9C4B043C7C03DABF75E4B /* RDEPUBPageBreakPolicy.swift */, + A9B958811F45DE07F349083133787061 /* RDEPUBTextLayouter.swift */, + 65C7DA34232B39F5D61DAD1C8D64BA55 /* RDEPUBTextLayoutFrame.swift */, + 6F3DBD229B4D724EEC81A05AEF68C96B /* RDEPUBTextPaginationInterfaces.swift */, + 95C55ACB797975D1F898B13F069C609C /* RDEPUBTextPaginationSupport.swift */, ); name = Pagination; path = Pagination; @@ -1693,25 +1803,6 @@ name = UIKit; sourceTree = ""; }; - CF0890FDD57F8AE21A281CF5336F2D6D /* Typesetter */ = { - isa = PBXGroup; - children = ( - 63A75BF0478FAC7398F5E66A509F639D /* RDEPUBAttachmentNormalizer.swift */, - 11C3B7C93919D787AAC0C4D25E52805A /* RDEPUBCFIMarkerInjector.swift */, - 63D23A912F5F91D0D3D83DF9E05515D0 /* RDEPUBFontNormalizer.swift */, - 587C2E270D5414FF4E3786D14BD36694 /* RDEPUBFragmentMarkerInjector.swift */, - E3B908A78A947A1A9D66C368CB616DE4 /* RDEPUBHTMLNormalizer.swift */, - 2B7FCEEAD833F7C1706659E688B09BEA /* RDEPUBRenderDiagnosticsCollector.swift */, - 8F4881006C6FAE4DFADBE2ACE4E9A744 /* RDEPUBSemanticMarkerInjector.swift */, - F0796C7E8BEEA96989FCE6698868366D /* RDEPUBStyleSheetComposer.swift */, - 5E000FE659A8C4AE6C55AE7B9CC951AA /* RDEPUBTextRendererSupport.swift */, - 92960C67FEC64C10BA567184834F0DCC /* RDEPUBTypesettingPipeline.swift */, - 4FC26BA2882A9DCE49E8D0B4EFA5D1EE /* Compatibility */, - ); - name = Typesetter; - path = Typesetter; - sourceTree = ""; - }; CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( @@ -1724,28 +1815,6 @@ ); sourceTree = ""; }; - D0618DA78651C576D5A9688963EC9519 /* ChapterRuntime */ = { - isa = PBXGroup; - children = ( - 51DA940F74309B236AFA2A214D82D47C /* RDEPUBBackgroundTrace.swift */, - 40E88E1EF1BA62D99833E17E30E87DC5 /* RDEPUBBookPageMap.swift */, - E07FDF85BE977EC47B3B8194DA98648E /* RDEPUBChapterCacheKey.swift */, - 842C60964BEEDCF50FFF84E40B135751 /* RDEPUBChapterDataCache.swift */, - A8CA2D533001FF2048A1A42F91A23085 /* RDEPUBChapterLoader.swift */, - AA788B1C32640B2F2761D3C04446BB67 /* RDEPUBChapterLocation.swift */, - 33D775F257172C2AB560D7B9B5A918FD /* RDEPUBChapterOffsetMap.swift */, - 58C8FD645A1F2CB6BC9C86FE156721F1 /* RDEPUBChapterRuntimeStore.swift */, - 02B2F8AC62D3CFC4C1A082B868C195F7 /* RDEPUBChapterSummaryDiskCache.swift */, - 2622CEF5D9B34D713B60EB2991499EDC /* RDEPUBChapterWarmupOrchestrator.swift */, - 4F525CC259CDC719A02AC344AFC95E1F /* RDEPUBPageCountCache.swift */, - 81514BCB47BC71C39284064C943C0DC3 /* RDEPUBPageResolver.swift */, - D8590506F0EECF12909B4BBA8CCCF3D6 /* RDEPUBRuntimeChapter.swift */, - 36B0EC72869740D8DB68B51304CC9B48 /* RDEPUBRuntimePageCount.swift */, - ); - name = ChapterRuntime; - path = ChapterRuntime; - sourceTree = ""; - }; D4D1573132E3E8DD3B99E449658562B8 /* Resources */ = { isa = PBXGroup; children = ( @@ -1762,6 +1831,26 @@ name = Frameworks; sourceTree = ""; }; + D6DFD3B4A9DBC501F19BD5F07EBC6341 /* Typesetter */ = { + isa = PBXGroup; + children = ( + 1429432AAB58A7FBEEA14E2716F7D97E /* RDEPUBAttachmentNormalizer.swift */, + 0CE5DDE420852CFC895FEF2572577505 /* RDEPUBCFIMarkerInjector.swift */, + 35F49784F5C7572343EA12BD542EC199 /* RDEPUBDecryptingImageAttachment.swift */, + 42C462DBD1028C2B2C741726F0C4F7D6 /* RDEPUBFontNormalizer.swift */, + 1310063EDD27977AEF26DC0B83BA0811 /* RDEPUBFragmentMarkerInjector.swift */, + 9C8C8F9EC45583D9AC337EE967208872 /* RDEPUBHTMLNormalizer.swift */, + E3011B53A527F51AB7C6ABF0151CC130 /* RDEPUBRenderDiagnosticsCollector.swift */, + C3A9A32F96EBBCFD15780B8A62E38996 /* RDEPUBSemanticMarkerInjector.swift */, + 485EAD6F9C3A2212CF6CE024BA2FA1A6 /* RDEPUBStyleSheetComposer.swift */, + 53A23BC49C365732A2CD9FCC08DEE23C /* RDEPUBTextRendererSupport.swift */, + FD5FFE0C7676BB044875877B91485384 /* RDEPUBTypesettingPipeline.swift */, + 49DDC7DDC84496BE70FB8D02D1AE579D /* Compatibility */, + ); + name = Typesetter; + path = Typesetter; + sourceTree = ""; + }; DA2E3A6B928E59EEA59E8967EC93C73E /* DTFoundation */ = { isa = PBXGroup; children = ( @@ -1775,39 +1864,6 @@ path = DTFoundation; sourceTree = ""; }; - DAD1CF22E2CEE4FF1740DB9F6E221942 /* ReaderController */ = { - isa = PBXGroup; - children = ( - 92BDC596AE388602E419B3750DAD4229 /* RDEPUBBackgroundCoverageStore.swift */, - 0B4FEEF73E68688CF8770B9A3A368710 /* RDEPUBBackgroundPriorityPolicy.swift */, - 35C2BF4CF393A0130124600E79ECC3D6 /* RDEPUBJumpSession.swift */, - D2648A6B239413226E9A72CCC64D4C79 /* RDEPUBMemoryProbe.swift */, - 04D90198F17A11D36ABBECA5A4F3AD7F /* RDEPUBMetadataParseCancellationController.swift */, - 2120F356DBB0D7C46B15B379759AC7AE /* RDEPUBMetadataParseWorker.swift */, - 69E5D0AD1240B6B0802F2647F5435EA3 /* RDEPUBPageMapReconciliationCoordinator.swift */, - 88FB583F2D022D1B84B91F285F67FE76 /* RDEPUBPresentationRuntime.swift */, - 1AB6F109E02D97808539FB0F9B894487 /* RDEPUBReaderAnnotationCoordinator.swift */, - 9EA9EC765AA36B44104989E818B13326 /* RDEPUBReaderAssemblyCoordinator.swift */, - 6DF0A5A438D3319310C8FF50C82762F2 /* RDEPUBReaderChromeCoordinator.swift */, - 3EF0585A8A2B50BF79245DF9365836C8 /* RDEPUBReaderContext.swift */, - 3FB158582A185027BF7C5254A69DA213 /* RDEPUBReaderDependencies.swift */, - 1CDA4D9D71528F8C1070DBF2AFB21AED /* RDEPUBReaderEnvironment.swift */, - 3656D2A32DB42AE8DD66E0079651906D /* RDEPUBReaderLoadCoordinator.swift */, - 30B0AB500258357278F5D4E6C1AA2848 /* RDEPUBReaderLocationCoordinator.swift */, - 8F9718E0B39AD8A3470522498E28F30F /* RDEPUBReaderPaginationCoordinator.swift */, - FFF9AAECD5FDC285A509FEED0B29951E /* RDEPUBReaderRuntime.swift */, - ED4AFBE65217F4B7692C91828CC9BF53 /* RDEPUBReaderSearchCoordinator.swift */, - B9D06448CCB730D9D9ACF44F513FCA87 /* RDEPUBReaderServices.swift */, - AE9B612343098773F84020F02EF8FB23 /* RDEPUBReaderState.swift */, - 55C2EDC5A62B0F36995A69620E5464B3 /* RDEPUBReaderUIState.swift */, - 08AF3CF7541223D386A278B79878A8DF /* RDEPUBReaderViewportMonitor.swift */, - 0389417C712B5E7FA8F9FBB870FA2227 /* RDEPUBSelectionState.swift */, - D0618DA78651C576D5A9688963EC9519 /* ChapterRuntime */, - ); - name = ReaderController; - path = ReaderController; - sourceTree = ""; - }; E21916B80D2B8A09E76AB2CFCB1E1232 /* Support Files */ = { isa = PBXGroup; children = ( @@ -1823,39 +1879,6 @@ path = "../Target Support Files/DTFoundation"; sourceTree = ""; }; - E8DB0A553F41A3FD84BD21409EFA60C0 /* TextPage */ = { - isa = PBXGroup; - children = ( - 3A6AD2E4A78A3060ED880D0ADFC9C5C7 /* RDEPUBChapterDisplayContentCache.swift */, - 378AC6C2092D7E25BFF88FB4C743886C /* RDEPUBDarkImageAdjuster.swift */, - 785AE7F19DADEDA041CFCC67D8B25189 /* RDEPUBPageInteractionController.swift */, - 2B02D527081372B04CC8FECF5940E6DC /* RDEPUBPageLayoutSnapshot.swift */, - D1BEE21B44C49B23A7AAD27A4ACABF44 /* RDEPUBSelectionLoupeView.swift */, - 7C64A40D0DAA97EF0A1E98A05DF28CE4 /* RDEPUBSelectionOverlayView.swift */, - 1AAF82A90409132033768049C49798C3 /* RDEPUBTextAnnotationOverlay.swift */, - 25D28385D66ED93351515441996056D7 /* RDEPUBTextContentInteractionCoordinator.swift */, - 75C58FBF3697A8233DC5C9527094D6C3 /* RDEPUBTextContentView.swift */, - 74A0B8ECDC21C0F91EAB0484A86289DA /* RDEPUBTextPageBoundaryValidator.swift */, - F32976CA02F8617CB2E2A38D9261257F /* RDEPUBTextPageDecorationView.swift */, - 6859E00AB232CC21F2C63A4CCB9EB108 /* RDEPUBTextPageRenderView.swift */, - 05474A384503DBB6DB8EF47D660B849C /* RDEPUBTextPageVerticalJustifier.swift */, - 48121E38890812B2122D7CD791CB9F52 /* RDEPUBTextSelectionController.swift */, - ); - name = TextPage; - path = TextPage; - sourceTree = ""; - }; - EDB7CA736956B024AA10C0D144AC906D /* Models */ = { - isa = PBXGroup; - children = ( - 685FE9B1A888D8D05E9AC049787CBC8D /* RDEPUBAnnotationModels.swift */, - 422DAC763888F8667708F7B66F9C701E /* RDEPUBPaginationModels.swift */, - E67A535D80CEA637777BC317BCFE28C6 /* RDEPUBReadingLocationModels.swift */, - ); - name = Models; - path = Models; - sourceTree = ""; - }; F8A2B0DD84CEFC61D2C703C767D33C43 /* Products */ = { isa = PBXGroup; children = ( @@ -1871,14 +1894,6 @@ name = Products; sourceTree = ""; }; - F98C9DB9E125F328B2B30E1CE7F0C09A /* Pod */ = { - isa = PBXGroup; - children = ( - 93A4E820E3592827FF87F820BBAC3179 /* RDReaderView.podspec */, - ); - name = Pod; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -1963,60 +1978,60 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 648DFED59DCC5D3BE0B81D2B602CD9C0 /* Headers */ = { + 3BFDEF898E3D10A958893D2D0B92B00B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B2D4278E2D1008B9717940F438726A34 /* DTActivityTitleView.h in Headers */, - 325368D9102D104F1711FA60620F35CD /* DTAnimatedGIF.h in Headers */, - 4A576CC1A123AB214203367996A2E86E /* DTBase64Coding.h in Headers */, - 9C9331448A1CBD31F9C64CBA0FBB793B /* DTBlockFunctions.h in Headers */, - CFE6B9E809438CC90BBC76C4496FF9A2 /* DTCompatibility.h in Headers */, - 0EE7F18FF656A4EC05B960233F005AD5 /* DTCoreGraphicsUtils.h in Headers */, - 6A233E2D67F005BCE55CBA9297463B2F /* DTCustomColoredAccessory.h in Headers */, - 8BAB1EEE05BFB3B8B153BF2D92FDFFC8 /* DTExtendedFileAttributes.h in Headers */, - 246BB0637AF781853BFC822206467634 /* DTFolderMonitor.h in Headers */, - 1D4601F156BBC481DF8CBEA127933339 /* DTFoundation-umbrella.h in Headers */, - 8602D332B12D56DF37C90CA9E8216DEF /* DTFoundationConstants.h in Headers */, - 9186C2A051CD161DD0AD17023C9B8683 /* DTHTMLParser.h in Headers */, - EFD93ED339F0D5CB242D3D1316AACE15 /* DTLog.h in Headers */, - CC6B05241A40971D95985E73574BF325 /* DTPieProgressIndicator.h in Headers */, - BE9C1998CCE5DFB92AAB95691E08AA1F /* DTSmartPagingScrollView.h in Headers */, - 8F695E0579605768E29DDA8C50596D9D /* DTTiledLayerWithoutFade.h in Headers */, - 9BFD528442B295AED7E060DC26BB1065 /* DTVersion.h in Headers */, - EF83C2E1CFBB5E27E20DB1CBED62B356 /* DTWeakSupport.h in Headers */, - 01AC9A3EA5F344CDC16ACBC3A3E45492 /* NSArray+DTError.h in Headers */, - 90DE245714318E23EB6D5A19B8091CC0 /* NSData+DTCrypto.h in Headers */, - 43D97AE7AF25413C3F239057F503CFA7 /* NSDictionary+DTError.h in Headers */, - F36F09BAA9AE57FF3DCBABA061CAC4A0 /* NSFileWrapper+DTCopying.h in Headers */, - 1415381C0EC999E8E0990C293F69164D /* NSMutableArray+DTMoving.h in Headers */, - 6DF4156314ACD722DD64716D3A4304E1 /* NSString+DTFormatNumbers.h in Headers */, - 026BE0E38192F8E2F8A3119AB7E35952 /* NSString+DTPaths.h in Headers */, - 67E1C9F9FA4C02105DC5B388B0B6F117 /* NSString+DTURLEncoding.h in Headers */, - 23EF24FC2D01FCAE8C72AB5C1BEBC719 /* NSString+DTUtilities.h in Headers */, - 06D28593D963E13161146C674594D3C1 /* NSURL+DTAppLinks.h in Headers */, - 56CD331F590F173B69E04D0D0557D74F /* NSURL+DTComparing.h in Headers */, - 4495EAFF6740BE5C8D6C2319D2EBFE23 /* NSURL+DTUnshorten.h in Headers */, - D9198DC4DEF107D39DA38B282418727B /* UIApplication+DTNetworkActivity.h in Headers */, - 3A3EEA702B6881089A65D1CB812C28E4 /* UIImage+DTFoundation.h in Headers */, - EDB22948AD6C7DFB5AF514AAC74CCEB4 /* UIScreen+DTFoundation.h in Headers */, - CAE9C7E8F8BF6322155DB2AA530C905B /* UIView+DTFoundation.h in Headers */, + 592ED452831CE7352E921389136EA40C /* ZIPFoundation-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - A5BB6B2E06EC42961845E25F0D1D06F6 /* Headers */ = { + 4847A210BF9226B4A6E136CA9791D750 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 56733EB92902794487A13DF03E0026A6 /* RDReaderView-umbrella.h in Headers */, + 30398DEF7CAD19171A536D29ABFE4C66 /* RDReaderView-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - EC886D5795CB6796D132E47FBF28249F /* Headers */ = { + 87C04C786AEF5A0362E76E20393D92CB /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 8892F824CF5AE13E7951F21E83A1341F /* ZIPFoundation-umbrella.h in Headers */, + E414D1C3659D3390E1429E8E450972D1 /* DTActivityTitleView.h in Headers */, + FDFFFDA2B22F1AF0F845CB42C63CFDFB /* DTAnimatedGIF.h in Headers */, + 9317D936D1624DAFFC0665186084B9A7 /* DTBase64Coding.h in Headers */, + 44226BF89798AB351A5DD128C6BCBB34 /* DTBlockFunctions.h in Headers */, + 8E71545C934B03B3131BD995D43D18BD /* DTCompatibility.h in Headers */, + 584975F754B7B0F6773141E5788D9002 /* DTCoreGraphicsUtils.h in Headers */, + 24D662573BF450D8125295A73043FC6D /* DTCustomColoredAccessory.h in Headers */, + 81676AD4528CF268CB913CF3F27E00A2 /* DTExtendedFileAttributes.h in Headers */, + 684BDD6CF6B83CB31C2C96E7172241FD /* DTFolderMonitor.h in Headers */, + 3D8DF1B2E9B3BC529D727FBBE40D46AF /* DTFoundation-umbrella.h in Headers */, + 94A660CFA88E3A99BA840BC7C081FAF5 /* DTFoundationConstants.h in Headers */, + AC0E244868EE1BB06DA2FC31EE7FEFF0 /* DTHTMLParser.h in Headers */, + 1FD2290EC3449416DEBA4BDD5D7D7E22 /* DTLog.h in Headers */, + 4D23E316A728EAD4C30968F3D0C69E38 /* DTPieProgressIndicator.h in Headers */, + AC24EE11636D8101C9678987A7D7E56B /* DTSmartPagingScrollView.h in Headers */, + FAC3DC7E5DE280771DD4A21A7436E52F /* DTTiledLayerWithoutFade.h in Headers */, + FC9DC8D4C96D819E9BE20F05441E0459 /* DTVersion.h in Headers */, + 1C76A33A29D56E6009775DD05B32BD2B /* DTWeakSupport.h in Headers */, + 6654C4AD722864C4EE65934D55682253 /* NSArray+DTError.h in Headers */, + 5DBD89A108305B3DAE1D415BE9CBFEC2 /* NSData+DTCrypto.h in Headers */, + 22EEC92067603F597E6A32D1C77D77A0 /* NSDictionary+DTError.h in Headers */, + CA1F1B6F7C24CCC6F7F8A75E8CD73B5C /* NSFileWrapper+DTCopying.h in Headers */, + 799E070BA323793383FA81BA733C4DA5 /* NSMutableArray+DTMoving.h in Headers */, + 12E4DE7F5308A77C2548C7FC376065A0 /* NSString+DTFormatNumbers.h in Headers */, + 5CAF56EF5E99F0788C26CB4C52182EDD /* NSString+DTPaths.h in Headers */, + 50887D3ADF90BFE2720EBA9B6FABBAA2 /* NSString+DTURLEncoding.h in Headers */, + B5386D5AFA1F546EFEE6E310BFF4D707 /* NSString+DTUtilities.h in Headers */, + D5D9BDF382C943902AC2A3368DCD932C /* NSURL+DTAppLinks.h in Headers */, + 18FD31EA041A589A98B214078C77DE11 /* NSURL+DTComparing.h in Headers */, + DC976BFEBC952457D8C728BA9C43DC55 /* NSURL+DTUnshorten.h in Headers */, + C557F129B5958D29FA4015DD182ED2CC /* UIApplication+DTNetworkActivity.h in Headers */, + BC017F711B983AD8E6EE8775B3AB3602 /* UIImage+DTFoundation.h in Headers */, + 56188173A91EF51B7010905C6FCB22D2 /* UIScreen+DTFoundation.h in Headers */, + 7882FB8FD1A57CAEA4E4FDEF4952C621 /* UIView+DTFoundation.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2025,11 +2040,11 @@ /* Begin PBXNativeTarget section */ 0C24CB0E87A728A11AA1124CB360D6A1 /* DTCoreText-Resources */ = { isa = PBXNativeTarget; - buildConfigurationList = C7129EF2434C8874397E54D62D12DED8 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */; + buildConfigurationList = 6D4878B1090649FAD56F25B2145334DE /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */; buildPhases = ( - 472A5E64903370EAB6901860800ED24C /* Sources */, - E59106FD1BF297D3A64453E60776A85B /* Frameworks */, - 3EB4C7E274284DAE9A5BD1585CC1B3CA /* Resources */, + E67568179BECE9060450A68A54A2E0FA /* Sources */, + FAD0182437679AAA39F0EDBF1BC1A05E /* Frameworks */, + 229D057473C710AD9E925A4DF80E5C56 /* Resources */, ); buildRules = ( ); @@ -2052,10 +2067,10 @@ buildRules = ( ); dependencies = ( - 19907CCC257DD9F92B515448B5A2975C /* PBXTargetDependency */, - 92A6DACDBF5DE6549B548C7CBB39DCBD /* PBXTargetDependency */, - 1B4F75AF848B46CF23A6BA22675D6627 /* PBXTargetDependency */, - 3A511A70A083978857166D53697B2DD1 /* PBXTargetDependency */, + DFA128FE3AA2D6360EBE3901CA609FEC /* PBXTargetDependency */, + C36FE402BBAD13F1322853208B3F26EE /* PBXTargetDependency */, + 1A81973F692B2B1BA74FB6E5A9B7C526 /* PBXTargetDependency */, + 86F72F6F95E48B50E90565CCC2617B60 /* PBXTargetDependency */, ); name = "Pods-ReadViewDemo"; productName = Pods_ReadViewDemo; @@ -2064,12 +2079,12 @@ }; 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */ = { isa = PBXNativeTarget; - buildConfigurationList = 6D990C2C8650568DCA444C68C8A54BD4 /* Build configuration list for PBXNativeTarget "DTFoundation" */; + buildConfigurationList = 7FECBCCB85A6EAD26E9CC72B8864A863 /* Build configuration list for PBXNativeTarget "DTFoundation" */; buildPhases = ( - 648DFED59DCC5D3BE0B81D2B602CD9C0 /* Headers */, - F5F1FC469BD99BD8FE391C7AA7B69D6C /* Sources */, - 675C36B63C7099735ABF05C8415239F4 /* Frameworks */, - 446F6DC518306FABDD2651CF27638B18 /* Resources */, + 87C04C786AEF5A0362E76E20393D92CB /* Headers */, + C087664E69A7DDC123A3D00480FA100C /* Sources */, + 622158A80ADA036B99DF9CBB09B11567 /* Frameworks */, + 8EC456D15BEA781946652E8A0134E477 /* Resources */, ); buildRules = ( ); @@ -2082,17 +2097,17 @@ }; AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */ = { isa = PBXNativeTarget; - buildConfigurationList = D1EC69BAD25E2A3F988B19C5623BB9ED /* Build configuration list for PBXNativeTarget "ZIPFoundation" */; + buildConfigurationList = 2CC157438E43F8FADB5A73A6D96D87CD /* Build configuration list for PBXNativeTarget "ZIPFoundation" */; buildPhases = ( - EC886D5795CB6796D132E47FBF28249F /* Headers */, - 53470AA1E22D75D11969ABA65F897C7E /* Sources */, - F0FD7205A630E9BC2296E4014DAD1A46 /* Frameworks */, - 261B987294C9F9BF26E53F632D5681C9 /* Resources */, + 3BFDEF898E3D10A958893D2D0B92B00B /* Headers */, + B93FAED387C4F9F71AB33C5E2AAE246D /* Sources */, + 2E80BB883280157F55CC1A24FD8FDD42 /* Frameworks */, + 7A567339AAB92574CD921640506F8738 /* Resources */, ); buildRules = ( ); dependencies = ( - 323F230337D07BED6644D3793F84BE5F /* PBXTargetDependency */, + C91E1D59F6BC9C8277B2CED2D15F0AFA /* PBXTargetDependency */, ); name = ZIPFoundation; productName = ZIPFoundation; @@ -2101,19 +2116,19 @@ }; AA2E57587AA8EECA63C4BE08EA3CB6D2 /* RDReaderView */ = { isa = PBXNativeTarget; - buildConfigurationList = 395E1ADD7C4572E07F9F15529B893917 /* Build configuration list for PBXNativeTarget "RDReaderView" */; + buildConfigurationList = 88A749A76163B4114B76F1489777EFB2 /* Build configuration list for PBXNativeTarget "RDReaderView" */; buildPhases = ( - A5BB6B2E06EC42961845E25F0D1D06F6 /* Headers */, - AB8B92BE0F0C87AA0022B19A1F25C7AD /* Sources */, - 02FD61DAA6380EBDC9D98B4644F4791F /* Frameworks */, - 09AEAE654B6AD617E854D73003D34086 /* Resources */, + 4847A210BF9226B4A6E136CA9791D750 /* Headers */, + 0743027E3F2D9A52681FC4071768E436 /* Sources */, + 002B78A4F01BC47F7C7339F0DD6A71BD /* Frameworks */, + 7FE68E2127B13073088B2BAC0CB9A30E /* Resources */, ); buildRules = ( ); dependencies = ( - 2502DD303A8608D0713BD3D51E7000A9 /* PBXTargetDependency */, - 24D7C9680789D00DF9C75051814D1BA0 /* PBXTargetDependency */, - FE93D297488A807E698F9F36D740C412 /* PBXTargetDependency */, + 8FAA51D0E55C0CC6C11C56E8B5117428 /* PBXTargetDependency */, + 7BA66A0536D199195F48545FC6C74888 /* PBXTargetDependency */, + 0DC04BA41A0DC1E304A94063EAEF8EB1 /* PBXTargetDependency */, ); name = RDReaderView; productName = RDReaderView; @@ -2122,11 +2137,11 @@ }; AE7F393FB7805DE2664AB4111873F907 /* RDReaderView-RDReaderViewAssets */ = { isa = PBXNativeTarget; - buildConfigurationList = 3B6A47CF0BB2BB255AA059547D63FCE6 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */; + buildConfigurationList = 35127788D4B8EA3B2A33A086A96F6692 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */; buildPhases = ( - 6AAF679C4EE4227FBB3FD78048647B8B /* Sources */, - D6628DA002F520A4D4D4AA1E070A16D6 /* Frameworks */, - 854968C777261C5DD24F0234EEB79219 /* Resources */, + 364142EF580BEBCFFA43C8B98013B6F8 /* Sources */, + 0E04762C7E5292C5A68246FB22B73AA6 /* Frameworks */, + 9D6D7F76DEC23545B41BBC74877C00F5 /* Resources */, ); buildRules = ( ); @@ -2149,8 +2164,8 @@ buildRules = ( ); dependencies = ( - 773F814832EEF86B603BDB3BEE4BAC30 /* PBXTargetDependency */, - 1FE255033CE2931F14A8B432913B1C07 /* PBXTargetDependency */, + F89BE326BA8B06B1007631FA78D53A6A /* PBXTargetDependency */, + 8A57936B99831660CED2C2AE2656E553 /* PBXTargetDependency */, ); name = DTCoreText; productName = DTCoreText; @@ -2159,11 +2174,11 @@ }; C7A8D82E407CD3FDC3BA55CEE519B252 /* ZIPFoundation-ZIPFoundation_Privacy */ = { isa = PBXNativeTarget; - buildConfigurationList = B67E3207991BCCFC1AE95B4BC8FF8FB5 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */; + buildConfigurationList = CBA94F1763131C44221ECC4537E2EC32 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */; buildPhases = ( - 5399BA0EDBD025ECAEB298D6CF183356 /* Sources */, - 2A1FC717178B248B6BB29FD676DA5C06 /* Frameworks */, - BA6F338D23A08095E62F2E770A67AA7F /* Resources */, + 41A31B1132D292A790ACC09C7248B14D /* Sources */, + B39787E0F2B7900159C968B18DC80D2D /* Frameworks */, + 1B6FDB2DB6F38C14405348521A129398 /* Resources */, ); buildRules = ( ); @@ -2211,19 +2226,19 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 09AEAE654B6AD617E854D73003D34086 /* Resources */ = { + 1B6FDB2DB6F38C14405348521A129398 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - CB177A8E7BE40959C8C71E15CDBA0688 /* RDReaderView-RDReaderViewAssets in Resources */, + E02468E0045376BD3A3A0E804151674F /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 261B987294C9F9BF26E53F632D5681C9 /* Resources */ = { + 229D057473C710AD9E925A4DF80E5C56 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 91085F6C691CF5E3B32E3B26BEC3605C /* ZIPFoundation-ZIPFoundation_Privacy in Resources */, + 9ADFD4C5CB7848BF8C877C8F0ECCF627 /* default.css in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2235,35 +2250,43 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 3EB4C7E274284DAE9A5BD1585CC1B3CA /* Resources */ = { + 7A567339AAB92574CD921640506F8738 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9C0DC170906447654EC656D17AD56645 /* default.css in Resources */, + 714A34F8A6CF051D194F7EB767F30ED7 /* ZIPFoundation-ZIPFoundation_Privacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 446F6DC518306FABDD2651CF27638B18 /* Resources */ = { + 7FE68E2127B13073088B2BAC0CB9A30E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3A79D34DFEF27437F551C74BF83B44CE /* RDReaderView-RDReaderViewAssets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8EC456D15BEA781946652E8A0134E477 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 854968C777261C5DD24F0234EEB79219 /* Resources */ = { + 9D6D7F76DEC23545B41BBC74877C00F5 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - FB2C643CD9553D5BD03E4BA5088E71EB /* cssInjector.js in Resources */, - EE82D71B45FB3F5253C20CED00A83905 /* epub-bridge.js in Resources */, - 050EA0297A5EC0E765F40F075245BDA7 /* epub-fixed-layout.html in Resources */, - C86E362D36C74FE4559A54576F7C04A5 /* rangy-core.js in Resources */, - DACE30D73A9F24E47169758E96D2FB22 /* rangy-serializer.js in Resources */, - C6E901F7E1180BFAD5FFDD7D9D60DBB9 /* WeReadApi.js in Resources */, - 00CB711CB9D36AC4F7C74C396C5EF095 /* wxread-dark.css in Resources */, - 4D452850D8D4B3518722B0399D49C0A4 /* wxread-default.css in Resources */, - 3E1C9314B1519630D8FB24D35EFAF93E /* wxread-replace.css in Resources */, - 1C25FD16E4A629E3F76B8F67BFAB5474 /* wxread-replace-latin.css in Resources */, + 51A9091769AF0695E474F919A031FC2F /* cssInjector.js in Resources */, + 1339E60ACC3CAA55D2A14496CA2C7F24 /* epub-bridge.js in Resources */, + 6EC7A64049EF9D2841493E494652993D /* epub-fixed-layout.html in Resources */, + F1EAB3BF7B71E2FE5F88E8544F95E69A /* rangy-core.js in Resources */, + D69EB259E24B2E1077A03FE945FCB5FC /* rangy-serializer.js in Resources */, + AE90B64916BAAB2132F880C33316EFCB /* WeReadApi.js in Resources */, + EDA8BF97142B946BABB6CB8FFF83AD77 /* wxread-dark.css in Resources */, + 8A99D64B1FFAA4754D40D044A9996A81 /* wxread-default.css in Resources */, + 09BFA25E757EB9FAED6BE9D99EB1CEBD /* wxread-replace.css in Resources */, + 5B649FCED26B4794B5AAAF837A3E9DBC /* wxread-replace-latin.css in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2274,260 +2297,221 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - BA6F338D23A08095E62F2E770A67AA7F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - CDC518E9F14CC95B4A08177DE9844405 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 472A5E64903370EAB6901860800ED24C /* Sources */ = { + 0743027E3F2D9A52681FC4071768E436 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EE6F2222A52155B6C4295C6E85E6E43F /* RDEPUBAnnotationModels.swift in Sources */, + 4EA1FC83A98FEBFB463619BD56F7723D /* RDEPUBAssetRepository.swift in Sources */, + 8BA9A995A14E1CBFB04D036C6722B01B /* RDEPUBAttachmentNormalizer.swift in Sources */, + 30A2DE91620758A740D295AB29580245 /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */, + 8C18DD5EEE9BE69DA1780604BFA096AD /* RDEPUBAttachmentTooltipView.swift in Sources */, + 14DEAFC2EAB11EDC3546281C050C226E /* RDEPUBBackgroundCoverageStore.swift in Sources */, + B059193A5A552F53D38C1B38E65AADAC /* RDEPUBBackgroundPriorityPolicy.swift in Sources */, + 096DE56B035B002868AAE20C1D404B15 /* RDEPUBBackgroundTrace.swift in Sources */, + 5EFC094F491AADC10F5093D9836796AD /* RDEPUBBookPageMap.swift in Sources */, + 235AA99103BBEA2892393E721374924D /* RDEPUBBuildDiagnosticsReporter.swift in Sources */, + DAD96B682717D81AD3D3D22BD899A7EA /* RDEPUBCFI.swift in Sources */, + 314AF8C74F2F44FC844A3D405A93F87B /* RDEPUBCFICompatibility.swift in Sources */, + 1F5436D85D7121B1B9383A1EE70EE9B6 /* RDEPUBCFIDOMPathBuilder.swift in Sources */, + 5705832CA2DB13EDF020F92EA8DB8AAF /* RDEPUBCFIError.swift in Sources */, + 4BEE03FBD65DFE217B496877CC2E7726 /* RDEPUBCFIGenerator.swift in Sources */, + AA3118D4EEB37AEE0A1F82C042A21092 /* RDEPUBCFIMap.swift in Sources */, + B511D4D936A2B51C2E64C456B160E661 /* RDEPUBCFIMarkerInjector.swift in Sources */, + 565478E359CF62028188FB8E8EEA2141 /* RDEPUBCFIParser.swift in Sources */, + 1E8126EDD960AD9D2F7A7C3FC5073749 /* RDEPUBCFIPath.swift in Sources */, + 218A26D957029BC85CE43998835273D0 /* RDEPUBCFIRange.swift in Sources */, + 0CD4054BDD450C9D1D74E4E1DACD5461 /* RDEPUBCFIRecoveryEngine.swift in Sources */, + 10C5CE4C315EC9E77373B48B383E3372 /* RDEPUBCFIResolver.swift in Sources */, + 2C6EC9E937F7C828263E9B23CCE6F46D /* RDEPUBCFISerializer.swift in Sources */, + 98D38E0AAD5F1C91FF9EF1757BDDBF1F /* RDEPUBCFITextAssertion.swift in Sources */, + E35D15D74F94257E29D10826BFB666FC /* RDEPUBCFIUtilities.swift in Sources */, + 32C88ACF7CE5CD2C7C808D6192F449C9 /* RDEPUBChapterCacheKey.swift in Sources */, + B6835AAD31E05403BE3372062CDB785F /* RDEPUBChapterData.swift in Sources */, + 972B52AF13D8A6B21127218321F0FD01 /* RDEPUBChapterDataCache.swift in Sources */, + 7EA5C0BFEA6EFF3AFBA0543F64526A3A /* RDEPUBChapterDisplayContentCache.swift in Sources */, + 804E70CA6C95A89DD7997DDD48370800 /* RDEPUBChapterLoader.swift in Sources */, + A8F69E3E478FFE8D6AC8DAD05787660C /* RDEPUBChapterLocation.swift in Sources */, + C049CDA9C12E413E2B63AD404564CD9E /* RDEPUBChapterOffsetMap.swift in Sources */, + 8F2886944A775846FDCC6C64D78E6414 /* RDEPUBChapterPageCounter.swift in Sources */, + 2500FB14F7728CA537DDBA9CCC7E242D /* RDEPUBChapterRuntimeStore.swift in Sources */, + 2C4FC496451BE7EB9804103EF5B5922F /* RDEPUBChapterSummaryDiskCache.swift in Sources */, + 8820CABB87F28D4AA4F13165DEA40BF2 /* RDEPUBChapterTailNormalizer.swift in Sources */, + 63C12C69A76CBC3CABBE2399D103B537 /* RDEPUBChapterWarmupOrchestrator.swift in Sources */, + 7B09D184EAF3D5886E4B91AE9966FB48 /* RDEPUBCoreTextPageFrameFactory.swift in Sources */, + F282B0A9FAE1B412D35B15D948B35386 /* RDEPUBCSSCompatibilityLayer.swift in Sources */, + FBB3C772E5087E1951F211ED447FD8C2 /* RDEPUBDarkImageAdjuster.swift in Sources */, + 9EB0CAE0E721CF799B22772CD72DC159 /* RDEPUBDecryptingImageAttachment.swift in Sources */, + F49D68621947F34F8F87BAC589B249E6 /* RDEPUBDTCoreTextRenderer.swift in Sources */, + 0B7F8836E65428B8F1D3D72C40D25382 /* RDEPUBFixedLayoutTemplate.swift in Sources */, + 04C2B9E1EA2066F182077D33A4A9F64C /* RDEPUBFontFallbackResolver.swift in Sources */, + D2EFBE6B2968BD4AA79349D2D1558280 /* RDEPUBFontNormalizer.swift in Sources */, + EDEFE5CF02BBC892F19412E18C611C41 /* RDEPUBFragmentMarkerInjector.swift in Sources */, + F881F0F632ED90609AF3055471A3E5B2 /* RDEPUBHTMLNormalizer.swift in Sources */, + 237DE485DDB0995A62BF94834229A08F /* RDEPUBImageViewController.swift in Sources */, + 33D110E213D1F9F69A3EA84F20BADB11 /* RDEPUBImageViewerCoordinator.swift in Sources */, + 544667F79E06E6ED8FE3CE0312D9A176 /* RDEPUBJavaScriptBridge.swift in Sources */, + 55F126D4401C2424C486390F1F5F52EB /* RDEPUBJumpSession.swift in Sources */, + 11E5CACB61560ACC063C64C9801CB351 /* RDEPUBMemoryProbe.swift in Sources */, + 0CAF515592F47FAB5A21B4D9E44A577A /* RDEPUBMetadataParseCancellationController.swift in Sources */, + 7C39856468D7910473771D4D1BAC42B0 /* RDEPUBMetadataParseWorker.swift in Sources */, + 2DB041FA1AAE39A99CD1F0E74124671E /* RDEPUBModels.swift in Sources */, + 554BFC9D469A47AED35DD43458B1F6B6 /* RDEPUBNavigatorLayoutContext.swift in Sources */, + 19B2498971C455730EC1B664350A780A /* RDEPUBNoteDetector.swift in Sources */, + D862245B5224688D82612E8C376A8761 /* RDEPUBNoteModels.swift in Sources */, + D796C3C8958054CF0A67EC2BA3E87206 /* RDEPUBNotePopupCoordinator.swift in Sources */, + B47F908F2572E4D7FB9B8B02CF406A75 /* RDEPUBNotePopupViewController.swift in Sources */, + A4B4E6D986FC4F3E5A37A2667E0EFF66 /* RDEPUBNoteResolver.swift in Sources */, + 142A627BB777C6927910C13A5AE04C22 /* RDEPUBPageBreakPolicy.swift in Sources */, + 7A5AC3C3A3C1BF6B0DA2090F55970D2D /* RDEPUBPageCountCache.swift in Sources */, + F7AA4D5FCE8E17C48A14FB08E61781C2 /* RDEPUBPageInteractionController.swift in Sources */, + C26DC956E5E05FE85127A36EAE538876 /* RDEPUBPageLayoutSnapshot.swift in Sources */, + 35CC934AA9BDDA78F314C5F7B6BC6992 /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */, + A05B5109498BFFDAE88FDF254CA1BC5B /* RDEPUBPageResolver.swift in Sources */, + 3A84B52F3FC5DA28DB261B56F234DEC0 /* RDEPUBPaginationCacheCoordinator.swift in Sources */, + 5B8F73FF4F5FAEFD4DAD9A83F974DF47 /* RDEPUBPaginationModels.swift in Sources */, + 3BCE613C1A99CE80B7CBCF682022E6CC /* RDEPUBPaginator.swift in Sources */, + 56D733115E4EFD396C2A011ECA018C49 /* RDEPUBParser.swift in Sources */, + 49837D2F0809E91BC1D12475C7B10621 /* RDEPUBParser+Archive.swift in Sources */, + 07E74EEFF36512B9F4A805C13FBCD65C /* RDEPUBParser+Package.swift in Sources */, + 2B697D2B7F73C6C0C963C58B53C8A2B2 /* RDEPUBParser+ReadingProfile.swift in Sources */, + 94C9A09C6EF77DEDD1BD7E9DB8858F40 /* RDEPUBParser+Resources.swift in Sources */, + 2DDC7535CA3807D6711EE0FFAB21B6EA /* RDEPUBParser+TOC.swift in Sources */, + ECEA44771F14DE0FC56B152EE4B3DB79 /* RDEPUBPreferences.swift in Sources */, + 98C2A1EEBEFCC4EBD5C75BF45C4E76A5 /* RDEPUBPresentationRuntime.swift in Sources */, + ED77BE7CC7893313B521DBD76A6046F6 /* RDEPUBPublication.swift in Sources */, + 0772C0CB588AA1183A682D00DEA0BDEF /* RDEPUBReaderAnnotationCoordinator.swift in Sources */, + 73BA62E3AE9D75624A414EA841AD187C /* RDEPUBReaderAssemblyCoordinator.swift in Sources */, + AD1C9A89324683F04573E4DE479DCDE5 /* RDEPUBReaderBottomToolView.swift in Sources */, + 14CDD234BFB11FFA243EAB16C1BC620F /* RDEPUBReaderChapterListController.swift in Sources */, + F978F917AEE877B3955CC71F69AEDA3F /* RDEPUBReaderChromeCoordinator.swift in Sources */, + 76F2A74233A552DDC5AEDFC4C1D291F9 /* RDEPUBReaderConfiguration.swift in Sources */, + 2DC6A079155266B323EC5D93D7E3C1A1 /* RDEPUBReaderContext.swift in Sources */, + 952F81C78437BA95611EBDD505BFF38B /* RDEPUBReaderController.swift in Sources */, + 0A7395089A78DF9BE4CDA924B947A584 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */, + 05050DE075D5D9ACE72CE730BCEC53E7 /* RDEPUBReaderController+ContentDelegates.swift in Sources */, + 58AAD72FB743C681166B895694907776 /* RDEPUBReaderController+DataSource.swift in Sources */, + 92D1AACEA741834540D7E848D1ECBCB0 /* RDEPUBReaderController+ExternalLinks.swift in Sources */, + 9DAAA92B75D5A98D770C8379D93C31CD /* RDEPUBReaderController+LocationResolution.swift in Sources */, + 733DA50F18319A91EDBECA4E02C0F7A2 /* RDEPUBReaderController+Orientation.swift in Sources */, + 4D24904AD441B9BDD1194349EF8EFE6B /* RDEPUBReaderController+PublicAPI.swift in Sources */, + 9C1D23CBBBF2403B55EF491818672155 /* RDEPUBReaderController+RenderSupport.swift in Sources */, + 7B3A17CC46FA908545BBB3CA206702FF /* RDEPUBReaderController+RuntimeBridge.swift in Sources */, + 2492C7282FC390E00AD92625292B948B /* RDEPUBReaderController+TableOfContents.swift in Sources */, + B52D7D4008111E537A88A33E349A337C /* RDEPUBReaderController+Trial.swift in Sources */, + FEBA341DB483809E5E6867783DDA6A11 /* RDEPUBReaderDelegate.swift in Sources */, + 69E7F1738637501925C258F4134F96A4 /* RDEPUBReaderDependencies.swift in Sources */, + F4DA7A510251FD67DE5B9A05D542FA21 /* RDEPUBReaderEnvironment.swift in Sources */, + C7CD4D8F66564DF81E180FFDB30F572B /* RDEPUBReaderHighlightsViewController.swift in Sources */, + A8A98F9B70972C0AC1C7FA4C0F42D8CE /* RDEPUBReaderLoadCoordinator.swift in Sources */, + A4DB0F60CE6C88CA903892606BB2D666 /* RDEPUBReaderLocationCoordinator.swift in Sources */, + F5DD147A6DA2FB3DE8E6EC4770E0F03F /* RDEPUBReaderPaginationCoordinator.swift in Sources */, + C28649DD763E6E5EFC7D60F47B865966 /* RDEPUBReaderPersistence.swift in Sources */, + 6F3F15A3FBEF30BE7E78EA76BB1F8927 /* RDEPUBReaderRuntime.swift in Sources */, + 2B2FE2C2FA428E1532ACA1C76FB88DA1 /* RDEPUBReaderSearchBarView.swift in Sources */, + 2317574A8F30CCDC88503F5F3A6BAC20 /* RDEPUBReaderSearchCoordinator.swift in Sources */, + 59E0947D80CB9A9384CF0CF0473828BF /* RDEPUBReaderServices.swift in Sources */, + E944A14E0C8C3352C2DF3AF4586F0B7B /* RDEPUBReaderSettings.swift in Sources */, + 0E0447CF04F1414B216B6F18B5AA2290 /* RDEPUBReaderSettingsViewController.swift in Sources */, + 5403D6294D176296755971502638A17F /* RDEPUBReaderState.swift in Sources */, + 5D684BD54AB74B7C825E7BCB4834B3BA /* RDEPUBReaderTableOfContentsItem.swift in Sources */, + 899844C021BD16F2361E471087949E10 /* RDEPUBReaderTheme.swift in Sources */, + 686B52ECD457E564858A3DEAA7829290 /* RDEPUBReaderToolView.swift in Sources */, + E014AE1BA45C5E083D1FFB337ECB3222 /* RDEPUBReaderToolViewProtocols.swift in Sources */, + 520E924195F1CDF43C04873E7D2BCC3A /* RDEPUBReaderTopToolView.swift in Sources */, + 98AEEF2F4FFB0DB64232732D150F2D69 /* RDEPUBReaderUIState.swift in Sources */, + 4251130F5ADB92686A2D713F37292FEA /* RDEPUBReaderViewportMonitor.swift in Sources */, + 989CA2B28ED197B0B797FE317BFAC14B /* RDEPUBReadingLocationModels.swift in Sources */, + D60AA4D9F0BBEF49EE1473A2F0A1CFB5 /* RDEPUBReadingSession.swift in Sources */, + E7581E6A941BC4B761D6FB321E311B4E /* RDEPUBRenderDiagnosticsCollector.swift in Sources */, + 6EA06E7FDDBB0E120C746B85A3F75151 /* RDEPUBRenderRequest.swift in Sources */, + 41873DE0BEAA19DCBA7C7375228752D8 /* RDEPUBResourceDataProvider.swift in Sources */, + 3797E49E7BA8E8431B3366064E190D1F /* RDEPUBResourceResolver.swift in Sources */, + CBF966E59BA90842D96F8AC0F63506D5 /* RDEPUBResourceURLSchemeHandler.swift in Sources */, + A0F88E79F3568E7BF0FAB6D00845B559 /* RDEPUBRuntimeChapter.swift in Sources */, + E3F85B1C4C7D7FEEFCD2035465E062A8 /* RDEPUBRuntimePageCount.swift in Sources */, + 564A0E8D7EA1FD563D30ED1C269CF110 /* RDEPUBSafeArea.swift in Sources */, + D11000ABBDC9F4AA8C2D2D81A640F380 /* RDEPUBSearchEngine.swift in Sources */, + 64273BE1153320103A7990C6742E9A11 /* RDEPUBSearchModels.swift in Sources */, + 457B13114B2568C713898BEFEE2536A7 /* RDEPUBSelectionLoupeView.swift in Sources */, + 7166B6127AC8ED73A5FF3A2351CC80B3 /* RDEPUBSelectionOverlayView.swift in Sources */, + A0077D5C2CBF0E00081C059EFCEC6373 /* RDEPUBSelectionState.swift in Sources */, + 02DD8E465CE2BF1FA3954E939C26404C /* RDEPUBSemanticMarkerInjector.swift in Sources */, + B1D4240422AFD323C59B17BE24A1E1B7 /* RDEPUBSettingsFlipAutomation.swift in Sources */, + D2D38EFF7A6086D40028DA14F8DAFB9C /* RDEPUBStyleCompatibilityModels.swift in Sources */, + 12374B35A5274F9053D51A1C41A246BA /* RDEPUBStyleSheetBuilder.swift in Sources */, + 7D527AEF8B4001ADDEE64E24958BA9E6 /* RDEPUBStyleSheetComposer.swift in Sources */, + 769008E585DCB34E7440CE7E9C3E93CC /* RDEPUBTextAnchor.swift in Sources */, + D2345E70DE161E0570492E70BD9CD20E /* RDEPUBTextAnnotationOverlay.swift in Sources */, + 6B497C1FA166F5DF043609FAC62C7C4B /* RDEPUBTextBookBuilder.swift in Sources */, + 4440862E007C4B31A86BAAA653FD3F98 /* RDEPUBTextBookCache.swift in Sources */, + 448798E8C31C4EE68A050057A4A7DA5E /* RDEPUBTextBookModels.swift in Sources */, + 8EB24D1CF95A90D98DBD5C1F41443429 /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */, + 82B1DCCA45467E31302FFFD7EB78EF08 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */, + 3C4ACDF8DA2D70C2B21014421406B818 /* RDEPUBTextContentView.swift in Sources */, + C85F3E3ED00BE6DBA524F1BE53E008DC /* RDEPUBTextIndexTable.swift in Sources */, + 30C834B23033B4F571143C336E72510A /* RDEPUBTextLayouter.swift in Sources */, + 3A653E4DA613026DC1C1C22CF6166DAE /* RDEPUBTextLayoutFrame.swift in Sources */, + F1B14CF589E4B3B29B40C70508CB3466 /* RDEPUBTextPageBoundaryValidator.swift in Sources */, + 7953853E6BE17879EBFCECF9551634A5 /* RDEPUBTextPageDecorationView.swift in Sources */, + 54F9E6B88ADCBEAE21A7FEE193A78133 /* RDEPUBTextPageRenderView.swift in Sources */, + CE8512459F54E41A09977E6EF2DD9933 /* RDEPUBTextPageVerticalJustifier.swift in Sources */, + 0D3D1B4ACC6218895C3C62156C7A0913 /* RDEPUBTextPaginationInterfaces.swift in Sources */, + BF0E4C081EC75F17692C703A2B9BE71B /* RDEPUBTextPaginationSupport.swift in Sources */, + AED1E11539E157D1123D4AFB20BB3BFC /* RDEPUBTextPerformanceSampler.swift in Sources */, + 40138948768EA675E92C18C3CB1D887A /* RDEPUBTextPositionConverter.swift in Sources */, + AAC5E6A45E892B280F2F507EAA68A2C4 /* RDEPUBTextRenderer.swift in Sources */, + A5E13B16B918357268ABB9C6105F4379 /* RDEPUBTextRendererSupport.swift in Sources */, + C407660D1DD8D9EBEE6B70B0BB18043D /* RDEPUBTextSearchEngine.swift in Sources */, + A6455538113656F10265CBA70E89498C /* RDEPUBTextSelectionController.swift in Sources */, + A29B6C78057AF83CE0FA325BE0AE95ED /* RDEPUBTypesettingPipeline.swift in Sources */, + 3AFA079E082223A8681E645F9995847F /* RDEPUBViewportTypes.swift in Sources */, + 31B065D428020BED69F0BB82C3C6CB6B /* RDEPUBWebContentView.swift in Sources */, + 8ACD0FAB855BF0922BAA860243DEDEDD /* RDEPUBWebDecorationOverlayView.swift in Sources */, + C964A7EFF40B8EB307EEA1E9EFE07FEE /* RDEPUBWebView.swift in Sources */, + 815AD7AF46039FC8352B50AF272F102B /* RDEPUBWebView+Configuration.swift in Sources */, + 24FD03B3A8C72A13747F946300D8264F /* RDEPUBWebView+FixedLayout.swift in Sources */, + 142F2CE735FD185C4CB812AFC1CC25A1 /* RDEPUBWebView+JavaScriptBridge.swift in Sources */, + 4D005BE2E0DC7CB926776C8406EE7A2A /* RDEPUBWebView+Reflowable.swift in Sources */, + DBA57C2841C8BCB36412B8CEAAA6AFDC /* RDEPUBWebView+Search.swift in Sources */, + E28DE61EC40C0EB8EE1467CA5996673B /* RDEPUBWebViewDebug.swift in Sources */, + 5375A13AE599ADE49B10C7934E1004B9 /* RDPlainTextBookBuilder.swift in Sources */, + FB6229275E860304DE410C3ABACA8368 /* RDReaderContentCell.swift in Sources */, + D92F1EB12DB274D47F77C097BDBA2866 /* RDReaderFlowLayout.swift in Sources */, + 5CDE2B7D11CFF775C358BD68412E0F45 /* RDReaderGestureController.swift in Sources */, + D894E108A7402D9ACB0E7BB65D938AC2 /* RDReaderPageChildViewController.swift in Sources */, + 91B95F181020FC644E5508803BAC5BEC /* RDReaderPagingController.swift in Sources */, + DF711B907615C160BB94C6A1E42D8A4D /* RDReaderPreloadController.swift in Sources */, + 7828DA98DD0559035F8A02686A44A281 /* RDReaderSpreadResolver.swift in Sources */, + EA5614D5101DCABD4056EED65EB1A393 /* RDReaderTapRegionHandler.swift in Sources */, + 43EA6AE86DAD9FF8AA228FFD06495F1D /* RDReaderView.swift in Sources */, + 886CBFD7FC5AD3F76DDA53D178447786 /* RDReaderView+CollectionView.swift in Sources */, + E8E13704514FAF7EF892BBBB71FB9C0E /* RDReaderView+ContentAccess.swift in Sources */, + 0C2FE44A6F901C5E9E1494DC1CD6F2B8 /* RDReaderView+PageCurl.swift in Sources */, + 8CD67A11ACBEDE5F66DB9508B021BBF9 /* RDReaderView+ToolView.swift in Sources */, + EB2E030B0EF64230A77CAE0CF3CED75B /* RDReaderView-dummy.m in Sources */, + D6DF49537490F8634E2BC8778FFDF0F3 /* RDReaderViewProtocols.swift in Sources */, + 25599BEBB0B997F6742E00F7124C40D7 /* RDURLReaderController.swift in Sources */, + 45FDB99F49312864726B866395136E29 /* String+RDEPUB.swift in Sources */, + 4F27DAE4E00D96562BD5EA6F4594E7F6 /* UIColor+RDEPUB.swift in Sources */, + 6BB57211BF6B933B65B0ED6CC81D2337 /* UIColor+RDEPUBHex.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 364142EF580BEBCFFA43C8B98013B6F8 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 53470AA1E22D75D11969ABA65F897C7E /* Sources */ = { + 41A31B1132D292A790ACC09C7248B14D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 15F9DC2A3DBAC3293A93997078E721DE /* Archive.swift in Sources */, - DEF9A0575535DB791E2C22F10A3B0762 /* Archive+BackingConfiguration.swift in Sources */, - A133DADCC4B6BC6D0C037DAC0A930B3F /* Archive+Deprecated.swift in Sources */, - D9605D2EA0DFC00D02A4DF6BDACB3537 /* Archive+Helpers.swift in Sources */, - 6A340ECFF14E109203929637D3A312F9 /* Archive+MemoryFile.swift in Sources */, - F4B3D5E720E9ECEF3813E3F20392725F /* Archive+Progress.swift in Sources */, - E2743CECD77E9F0CBBBBE0208C06A4F5 /* Archive+Reading.swift in Sources */, - FCD556E1A22809B004BBB7722C5F0D8E /* Archive+ReadingDeprecated.swift in Sources */, - C09D441F47DC9EA1B655BFB0E2B4C042 /* Archive+Writing.swift in Sources */, - F01B5B179687BFD9F9926BBDB6ACF96A /* Archive+WritingDeprecated.swift in Sources */, - AFF25E38A6547A1360F0F1C7A13A4E16 /* Archive+ZIP64.swift in Sources */, - E1375BF50702AF2715E3D6B128553DBB /* Data+Compression.swift in Sources */, - 23CD207519C6B07EC5537C7D524A15E0 /* Data+CompressionDeprecated.swift in Sources */, - 3F488BC7AFBBB6998B9E06EB01D3CD8E /* Data+Serialization.swift in Sources */, - EAF13D2953FCD72F195E9570B52E3912 /* Date+ZIP.swift in Sources */, - 6A041B02022A6CE792906DFF30FC65BD /* Entry.swift in Sources */, - A48D92059E665D572F4752713D33D8F7 /* Entry+Serialization.swift in Sources */, - C2F559074FF9F0354C733F8B175B91C8 /* Entry+ZIP64.swift in Sources */, - 2DF99A7F490B72BAF469D0D13048C36B /* FileManager+ZIP.swift in Sources */, - 2C20B4A46EB9E16AE6DDFF6B330E3BDA /* FileManager+ZIPDeprecated.swift in Sources */, - FF459F7B0C40924DB0D1F4AE703C2133 /* URL+ZIP.swift in Sources */, - 4D42C6B8EA5DE066F6BAC45AC8679CE6 /* ZIPFoundation-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5399BA0EDBD025ECAEB298D6CF183356 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6AAF679C4EE4227FBB3FD78048647B8B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AB8B92BE0F0C87AA0022B19A1F25C7AD /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0942EF9F626D8448F7B4BEF9CEB112F1 /* RDEPUBAnnotationModels.swift in Sources */, - CBCADFEE601640B09A1F70DAE191A882 /* RDEPUBAssetRepository.swift in Sources */, - 3E6FCEC88EF3618C15CCFDF85714F46A /* RDEPUBAttachmentNormalizer.swift in Sources */, - D774B677F70DE8690AEE544D300325FC /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */, - 4996BB43278BB26CE542E46CD76C5792 /* RDEPUBAttachmentTooltipView.swift in Sources */, - E4088DFB00F106A3BEA476A1570497B8 /* RDEPUBBackgroundCoverageStore.swift in Sources */, - 37658AA02ED801B0F951BB353FD64478 /* RDEPUBBackgroundPriorityPolicy.swift in Sources */, - 8704620DCD44CD027D5566BB69576C20 /* RDEPUBBackgroundTrace.swift in Sources */, - 2BB4DB83A4971988729C48F6A97D9F7A /* RDEPUBBookPageMap.swift in Sources */, - 0E1CE5455B59D5A5B2E2A05A09CA06B5 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */, - 1F485583C73D3833F600377BD756AB48 /* RDEPUBCFI.swift in Sources */, - 530A22FD0D34843C3A2C842C4012E33C /* RDEPUBCFICompatibility.swift in Sources */, - AF7CACF0474B9FE3D9172AB298CDA425 /* RDEPUBCFIDOMPathBuilder.swift in Sources */, - CE1AD32EC47B914878C96D72C1DF0407 /* RDEPUBCFIError.swift in Sources */, - 4A2BB9012F17EF067B8CFFDF6F6911EA /* RDEPUBCFIGenerator.swift in Sources */, - B226D57B4C6D260E22B067D428F6DCE9 /* RDEPUBCFIMap.swift in Sources */, - FCD460BA901F28C1098FE3E601D67E06 /* RDEPUBCFIMarkerInjector.swift in Sources */, - 8A927D68F7759D6828B7A75ED7A4E313 /* RDEPUBCFIParser.swift in Sources */, - 33A618B45C6B0CE963A1E86B40FB1BC1 /* RDEPUBCFIPath.swift in Sources */, - 0CEE2FF08EBBEDB2F8753C1C754DC5B1 /* RDEPUBCFIRange.swift in Sources */, - 71B76C3166DE0C5DF235A0C22EFEDE59 /* RDEPUBCFIRecoveryEngine.swift in Sources */, - 66F01F1C18E107408429B32EFB9B2A8E /* RDEPUBCFIResolver.swift in Sources */, - 2E179DBB9513ED69284AD20B7E867007 /* RDEPUBCFISerializer.swift in Sources */, - F044036C609628883322321D708E6A8B /* RDEPUBCFITextAssertion.swift in Sources */, - 07F8549C519E0712D1373654C4522D3B /* RDEPUBCFIUtilities.swift in Sources */, - E48E862AD8952D3C1C6873484996A37E /* RDEPUBChapterCacheKey.swift in Sources */, - 7E9E05AD2B6728C1D299F07941522290 /* RDEPUBChapterData.swift in Sources */, - E8401B395AE4914B5EE2D0C09CDCF841 /* RDEPUBChapterDataCache.swift in Sources */, - D5D4C9E7AF6B052B16C49CFE42C3256D /* RDEPUBChapterDisplayContentCache.swift in Sources */, - 2C446ACD6B39988DAE88DB686C41940D /* RDEPUBChapterLoader.swift in Sources */, - 054D18D9951E8B07F33EF4D35BAE26F6 /* RDEPUBChapterLocation.swift in Sources */, - 793A9A3FCA9C44D959556F91F9706CB5 /* RDEPUBChapterOffsetMap.swift in Sources */, - 7A7FF7B976849107A4083C537537FDD9 /* RDEPUBChapterPageCounter.swift in Sources */, - 66F23FCBD9ED7712B6CFA0AE5472B6BA /* RDEPUBChapterRuntimeStore.swift in Sources */, - 43A7FE65277A8D860FEC743C2E7F2627 /* RDEPUBChapterSummaryDiskCache.swift in Sources */, - 28BA0924E7AB999F2E9E7676AE0B176C /* RDEPUBChapterTailNormalizer.swift in Sources */, - FCD2420C80CC980EEED544B1BF12A5E1 /* RDEPUBChapterWarmupOrchestrator.swift in Sources */, - 018DF9B10C77B0F9AB03693CB8E9FA7E /* RDEPUBCoreTextPageFrameFactory.swift in Sources */, - 3F0E1A921788D7E9621DD76499F94BE0 /* RDEPUBCSSCompatibilityLayer.swift in Sources */, - 783581535949175DA2E2C1D2D907E48C /* RDEPUBDarkImageAdjuster.swift in Sources */, - 83336BED035B870BBC5CE6C13A4A5676 /* RDEPUBDTCoreTextRenderer.swift in Sources */, - 1B2004F66EE1D24FEDEB4CF2B82E1E6B /* RDEPUBFixedLayoutTemplate.swift in Sources */, - 9AB60E5308E49D98017B2CF7F9F00CA5 /* RDEPUBFontFallbackResolver.swift in Sources */, - A7C4CDACFC79ED3C0CC24B518CEEB5D5 /* RDEPUBFontNormalizer.swift in Sources */, - 23F5519DAB7AF448277328F67DF8427B /* RDEPUBFragmentMarkerInjector.swift in Sources */, - 47D84DA606F549F8FAF0F034F0815BC2 /* RDEPUBHTMLNormalizer.swift in Sources */, - 3F9BE434EB1085D1F90B83DB60FD00C5 /* RDEPUBImageViewController.swift in Sources */, - E7BBD037775F4E4FC8C5F5B2C1F6DE74 /* RDEPUBImageViewerCoordinator.swift in Sources */, - 7F2BA0E2BCB6D4613A6A0F79CD8A0341 /* RDEPUBJavaScriptBridge.swift in Sources */, - AE3D20CC98B01ED32FF4508114769A82 /* RDEPUBJumpSession.swift in Sources */, - 5E0945043D7BD6A600ECCC3A78A26709 /* RDEPUBMemoryProbe.swift in Sources */, - 344C8C38953CD3ABBB5CEE004D748DBE /* RDEPUBMetadataParseCancellationController.swift in Sources */, - 65D333231372A013B720415537BCFBC9 /* RDEPUBMetadataParseWorker.swift in Sources */, - C5F367B6EC933668EAD90AB7B6394AE6 /* RDEPUBModels.swift in Sources */, - 435BB5138F3187F4BF5ECB65AA61A12F /* RDEPUBNavigatorLayoutContext.swift in Sources */, - 4141E28F9EF7A7626ECEA23E54C1437E /* RDEPUBNoteDetector.swift in Sources */, - 36C829C21BAD67EBA806B013689A8B8A /* RDEPUBNoteModels.swift in Sources */, - CCB0E720D8A29B7877E15196ED3F1712 /* RDEPUBNotePopupCoordinator.swift in Sources */, - B32BBAE5F349A30AB57236C3CC062A81 /* RDEPUBNotePopupViewController.swift in Sources */, - 4BC9532587020653004B491C4651C1B8 /* RDEPUBNoteResolver.swift in Sources */, - D35C453CE2934D63A534C3DF14DB1193 /* RDEPUBPageBreakPolicy.swift in Sources */, - 054178AB372DF8BBB80B17504A4CFF8F /* RDEPUBPageCountCache.swift in Sources */, - 3DD75C9E109518EC17CD1E6374CCAAA5 /* RDEPUBPageInteractionController.swift in Sources */, - 0A0C40F35AA05AB2FA05621AD6620164 /* RDEPUBPageLayoutSnapshot.swift in Sources */, - 5D83C7A8F70D08CDDFD2BC1B716CD3EF /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */, - 11D18376068FF7361548016615E5D26A /* RDEPUBPageResolver.swift in Sources */, - C9E30ED66CBBE352C35305AC6E1A5F2A /* RDEPUBPaginationCacheCoordinator.swift in Sources */, - 7F99F1B51CCF451AE85BA8088FEB4519 /* RDEPUBPaginationModels.swift in Sources */, - 28D5C5DB7C2755A625FDD6446B248312 /* RDEPUBPaginator.swift in Sources */, - FBDD7D73613BCCAE82217DEDC25F3827 /* RDEPUBParser.swift in Sources */, - 14AAB86A7399B98D39121B49EEB90065 /* RDEPUBParser+Archive.swift in Sources */, - 43E89A6EF34E4AB7DA97425018672890 /* RDEPUBParser+Package.swift in Sources */, - D095B75FDCDDCF2603F89B00FE810F29 /* RDEPUBParser+ReadingProfile.swift in Sources */, - 757A101F60F482793C65B07F301FC009 /* RDEPUBParser+Resources.swift in Sources */, - 2585104BFDD35B5513F93B5D4933B620 /* RDEPUBParser+TOC.swift in Sources */, - EB30F253217E1FEF29C352010550227C /* RDEPUBPreferences.swift in Sources */, - 738FAFC22719BC9A70AFBD0D3B05C79A /* RDEPUBPresentationRuntime.swift in Sources */, - 38983B574644AE41804DFFBE96A3F6F3 /* RDEPUBPublication.swift in Sources */, - D4978BF32F70F56DC0336ABA26D5B43B /* RDEPUBReaderAnnotationCoordinator.swift in Sources */, - B73D7A2503F92B5935924A7E3E370901 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */, - E847811FA489F675A69816A24E89C7C0 /* RDEPUBReaderBottomToolView.swift in Sources */, - C3612EECF20AE2BC8C1B84C468A7EF51 /* RDEPUBReaderChapterListController.swift in Sources */, - 2B8CD3733FF7B0369B0D2C1CE69118DC /* RDEPUBReaderChromeCoordinator.swift in Sources */, - 1FA1F998447124DD53EAEA05DCFAFF1C /* RDEPUBReaderConfiguration.swift in Sources */, - 35EC832D6E6042D539F5CE9ACDEAB875 /* RDEPUBReaderContext.swift in Sources */, - 5B38B217D713ACA39F82D2CB1CC38F6F /* RDEPUBReaderController.swift in Sources */, - 80E95C784BB3D4FE6A6C0B71AE11F9B2 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */, - 7217CE578FE4452B04FDB29E272BAA21 /* RDEPUBReaderController+ContentDelegates.swift in Sources */, - E398FC9914DF2A5088DB753AD361A4AC /* RDEPUBReaderController+DataSource.swift in Sources */, - 3A699A68129DB8D0475C3B426B54903D /* RDEPUBReaderController+ExternalLinks.swift in Sources */, - B94583A5C6CEB6C22B65B1572E3A1B9A /* RDEPUBReaderController+LocationResolution.swift in Sources */, - C2AD0159F00DB585A1684EB0BCBFE610 /* RDEPUBReaderController+PublicAPI.swift in Sources */, - BD1601EB1923096C0D1E60D9BD1BD2DE /* RDEPUBReaderController+RenderSupport.swift in Sources */, - FDE567E1D200A599BDB6090ED4C8E577 /* RDEPUBReaderController+RuntimeBridge.swift in Sources */, - 067FB980EC11563DABA6377BA323F041 /* RDEPUBReaderController+TableOfContents.swift in Sources */, - 73C0E664C70F48D94EB4A95026909708 /* RDEPUBReaderDelegate.swift in Sources */, - 0CAD6415F436E49FB2DEB2CBEC0A3ED8 /* RDEPUBReaderDependencies.swift in Sources */, - D1AD11465484A539562B97EACA5A7294 /* RDEPUBReaderEnvironment.swift in Sources */, - 5E518CA4C1BA58E3B88683FD04722D5D /* RDEPUBReaderHighlightsViewController.swift in Sources */, - 1963E9B2831753783ECAC37942D73D6A /* RDEPUBReaderLoadCoordinator.swift in Sources */, - AD9C79AE20497F6795AD6AB0826DD3A7 /* RDEPUBReaderLocationCoordinator.swift in Sources */, - 2021D5E8FEE83065E27E6D0003A84F34 /* RDEPUBReaderPaginationCoordinator.swift in Sources */, - 2605545B3BDD0B4D316669BD3BC4DA7D /* RDEPUBReaderPersistence.swift in Sources */, - DC24B5B7425A85CAA327121EFC13F7A2 /* RDEPUBReaderRuntime.swift in Sources */, - 6E5FC40818F90D13C4715DC82CAA05D0 /* RDEPUBReaderSearchBarView.swift in Sources */, - 2F0A11C3ED02F7E7C3C4982DE5B6CDA3 /* RDEPUBReaderSearchCoordinator.swift in Sources */, - 182B6A0E130F7AF8D1C8FC02BB985B28 /* RDEPUBReaderServices.swift in Sources */, - BDFDDC4A48A5FACFBC1DC1CDE1350357 /* RDEPUBReaderSettings.swift in Sources */, - F1CDC4F8B2FA28E00CBD282DFA72D49C /* RDEPUBReaderSettingsViewController.swift in Sources */, - FB4199352AAC811E9BC4FEBAEFDBE66C /* RDEPUBReaderState.swift in Sources */, - AAF0A60FD7C1F632134A65AC34A37F93 /* RDEPUBReaderTableOfContentsItem.swift in Sources */, - 6F3D6640A523A3CDAE5042B420839D06 /* RDEPUBReaderTheme.swift in Sources */, - C5DE018B3EBA50BC4F9D87EB03F810A4 /* RDEPUBReaderToolView.swift in Sources */, - 44AB3853424577251B26484683243528 /* RDEPUBReaderTopToolView.swift in Sources */, - 6B4EA5315A9E5381ADB2792C43FEF71C /* RDEPUBReaderUIState.swift in Sources */, - 4DB471E8F49562EBC4E384451DF8657F /* RDEPUBReaderViewportMonitor.swift in Sources */, - E0ACC692A6E030A3BC76B4C463FC5633 /* RDEPUBReadingLocationModels.swift in Sources */, - 369FD67C7489AC14165FDB7096822ECC /* RDEPUBReadingSession.swift in Sources */, - 3E27F00334D3044C4DF18F5F9710EDB8 /* RDEPUBRenderDiagnosticsCollector.swift in Sources */, - 5BFB0AD88ABADB0492E6507292DC48FB /* RDEPUBRenderRequest.swift in Sources */, - C3295FC9C627664107C0D3DD41938EBA /* RDEPUBResourceResolver.swift in Sources */, - 0B94DCFED4A20BC2BC258B0A7AD84EE7 /* RDEPUBResourceURLSchemeHandler.swift in Sources */, - D8C46305AAB14F8F5064D519B029AA67 /* RDEPUBRuntimeChapter.swift in Sources */, - E90D43AA0AD458CB37C055A739FC7F45 /* RDEPUBRuntimePageCount.swift in Sources */, - 9305755E8D8376D85CE959EA84EA38B0 /* RDEPUBSafeArea.swift in Sources */, - 2CB00C61073E96CBC0EB977B756E552B /* RDEPUBSearchEngine.swift in Sources */, - A695F716FD1DFA3CAE43F52135ACDB66 /* RDEPUBSearchModels.swift in Sources */, - C2EAD6705E64932D7957A88F9B85708C /* RDEPUBSelectionLoupeView.swift in Sources */, - 0D90E5A76994C8CD2C68A5728CD7A1CA /* RDEPUBSelectionOverlayView.swift in Sources */, - 087551FB17CA91E8126B443D1BB2DB57 /* RDEPUBSelectionState.swift in Sources */, - 6A9D5B2D485B78E12A14EE0A6543D169 /* RDEPUBSemanticMarkerInjector.swift in Sources */, - C48915AC691D47F3880D347B775C403C /* RDEPUBSettingsFlipAutomation.swift in Sources */, - B8802F744D06EF02E7DBB6151F874688 /* RDEPUBStyleCompatibilityModels.swift in Sources */, - DA79394BEF363C93BA15CBB18882387F /* RDEPUBStyleSheetBuilder.swift in Sources */, - 4AA63EFA61156258C6E631DB9A17741C /* RDEPUBStyleSheetComposer.swift in Sources */, - 22000F5527C48C68944C4F1758E2A069 /* RDEPUBTextAnchor.swift in Sources */, - B6A555BBEB8B42FFCE02D75862378B4E /* RDEPUBTextAnnotationOverlay.swift in Sources */, - 7171BDF42DA8008320D1AC7E7A8FEB05 /* RDEPUBTextBookBuilder.swift in Sources */, - D5B7E7EE50571CDD4CC29DC213B484D1 /* RDEPUBTextBookCache.swift in Sources */, - 763E0AE4634F863DA80C723AE8259806 /* RDEPUBTextBookModels.swift in Sources */, - 1B671F75188F742245480EC8EB6DE72D /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */, - 8CE17D58D28703A2311C974A430F4319 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */, - 41EB29FA06E55DE88B687C1F7AB4E97E /* RDEPUBTextContentView.swift in Sources */, - 85F3D006BBBB3C4B0D15F76801AE6518 /* RDEPUBTextIndexTable.swift in Sources */, - 547BABC3CDBF7072E6A968A37C4F0B35 /* RDEPUBTextLayouter.swift in Sources */, - 5795281D4176B3A8D936E9361B69BC97 /* RDEPUBTextLayoutFrame.swift in Sources */, - BA7C1EC8FF514D08BB64EC4E9BEFFAC0 /* RDEPUBTextPageBoundaryValidator.swift in Sources */, - 45EF68C719B84025A3AF68DD970F30B7 /* RDEPUBTextPageDecorationView.swift in Sources */, - DC5B3968CF64D52B02A9BEC6E775FDD4 /* RDEPUBTextPageRenderView.swift in Sources */, - 910CF6F57206CE880204D4A3F693885C /* RDEPUBTextPageVerticalJustifier.swift in Sources */, - 467AC26DFF3A13AC921D7D396CA9A208 /* RDEPUBTextPaginationInterfaces.swift in Sources */, - 432AAF1617C092D088B43B9AFD409C59 /* RDEPUBTextPaginationSupport.swift in Sources */, - 9B836CB271EDBE823AC19F08BC0EC625 /* RDEPUBTextPerformanceSampler.swift in Sources */, - B634D426705F479A169E41DAC10D1955 /* RDEPUBTextPositionConverter.swift in Sources */, - 971142A48582899957D6A526F2FB2895 /* RDEPUBTextRenderer.swift in Sources */, - A5F4E73D08B78DC9FC63FF9E71AC5326 /* RDEPUBTextRendererSupport.swift in Sources */, - 518050A548F693F8ADC0CBACB9D1255A /* RDEPUBTextSearchEngine.swift in Sources */, - 0E7CC48F667B0921973CCE39B5C99726 /* RDEPUBTextSelectionController.swift in Sources */, - 31DA191069436C02405F0744A4884295 /* RDEPUBTypesettingPipeline.swift in Sources */, - 995F0E20A1745FECE256E5984C281223 /* RDEPUBViewportTypes.swift in Sources */, - 02ABB9C568A16F8795CFEC2D01BBF067 /* RDEPUBWebContentView.swift in Sources */, - ADB0613F7A7821828D71DE9B36F215A8 /* RDEPUBWebDecorationOverlayView.swift in Sources */, - D05A5FC200F6862A31CBCEE97B4EB3A4 /* RDEPUBWebView.swift in Sources */, - 09C14984907EF0E18430483195615CEF /* RDEPUBWebView+Configuration.swift in Sources */, - 9380666C109F9D0A903C936318A1C818 /* RDEPUBWebView+FixedLayout.swift in Sources */, - 20495C7DE93F1281E83BA8970C67C681 /* RDEPUBWebView+JavaScriptBridge.swift in Sources */, - 35CA4D0B6A010869DC047DFF04A5EA9F /* RDEPUBWebView+Reflowable.swift in Sources */, - BAB70BF6EB8A7F22ED7FAFE0B210D9FF /* RDEPUBWebView+Search.swift in Sources */, - C53F4357A355E1BF6695F05E1021A22B /* RDEPUBWebViewDebug.swift in Sources */, - E1C9EA6A9255ED661104908CE5FDD37F /* RDPlainTextBookBuilder.swift in Sources */, - 7E0D7B35BB0767623CC6BA41C219E988 /* RDReaderContentCell.swift in Sources */, - 6A4933033D272D4B250818DA22556834 /* RDReaderFlowLayout.swift in Sources */, - CB26464A5790BA24495D6BEEB5BA4216 /* RDReaderGestureController.swift in Sources */, - E2C8F99C0D397CB91F64EE73021E60AA /* RDReaderPageChildViewController.swift in Sources */, - F28C5B831BFD35396E6F45BF65AD1F28 /* RDReaderPagingController.swift in Sources */, - 9EB0170E3B12D184C78EEF4602A65309 /* RDReaderPreloadController.swift in Sources */, - 3C6422E07A5FD5F61EE7C8E52CD81D9E /* RDReaderSpreadResolver.swift in Sources */, - F4B2FA0C6A5D681F76C6C6F41F06D437 /* RDReaderTapRegionHandler.swift in Sources */, - 669A276238BD2AC9A9CD49A1C4E1359D /* RDReaderView.swift in Sources */, - E1D7C3ECB222249108F6A0C3DC8B71D1 /* RDReaderView+CollectionView.swift in Sources */, - 72F720BE51962FC458B7A77B5635EFCF /* RDReaderView+ContentAccess.swift in Sources */, - 9A2E0E076EA566C56A230AFED489353C /* RDReaderView+PageCurl.swift in Sources */, - 4EFBD030D3E1FAB489E148E673ABEECE /* RDReaderView+ToolView.swift in Sources */, - 218F054EC487B66920A6873618AE3482 /* RDReaderView-dummy.m in Sources */, - C21094B9FCEAF6D8D94B2575C5D0C47D /* RDReaderViewProtocols.swift in Sources */, - E735D9E4200242DD1A20A21BD5DE96E8 /* RDURLReaderController.swift in Sources */, - D0F01595DA430FF422E4444660C65D66 /* String+RDEPUB.swift in Sources */, - A8C4F1A966FA53FF2BBA7A97EA8E3BCF /* UIColor+RDEPUB.swift in Sources */, - D3821C1D1240C48382C3DC9EE086BFC3 /* UIColor+RDEPUBHex.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2539,42 +2523,78 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - F5F1FC469BD99BD8FE391C7AA7B69D6C /* Sources */ = { + B93FAED387C4F9F71AB33C5E2AAE246D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 106C982FD5D5C71CA843649664127C78 /* Archive.swift in Sources */, + EA9A53D3DDE22E73A6D8DE79D54547C1 /* Archive+BackingConfiguration.swift in Sources */, + 35A655E299DC1E3EE7B316A18F2CE89D /* Archive+Deprecated.swift in Sources */, + 9ECF30F640D739DCEE8C5AD56C2BB4B4 /* Archive+Helpers.swift in Sources */, + D7D76E53192009455FC0FEE7D341EAB9 /* Archive+MemoryFile.swift in Sources */, + C759F2FD36CAF63381C0AB0B99D7BAE3 /* Archive+Progress.swift in Sources */, + F6888700DC52E960BF105470D3CB15F3 /* Archive+Reading.swift in Sources */, + 3E52F1617157FA5312268F8E8D77E2DF /* Archive+ReadingDeprecated.swift in Sources */, + 21FF2314438A1D9C326CFB7090FEDEFD /* Archive+Writing.swift in Sources */, + 6974A64C25319EC60A3982F864FC01B2 /* Archive+WritingDeprecated.swift in Sources */, + 0DB4BC648855B5320E45859AE469FFDA /* Archive+ZIP64.swift in Sources */, + 28B11155E99C2BC1AEC3A7ACD8E84A19 /* Data+Compression.swift in Sources */, + B3F712BE87B6441DE9CE079F98A65CEF /* Data+CompressionDeprecated.swift in Sources */, + 1C68F8BB0A8D65266501F52F000F3276 /* Data+Serialization.swift in Sources */, + 87CE9E7A1DFE5341BF42FD146FC7CC83 /* Date+ZIP.swift in Sources */, + D81B82D5420A636836F8771B438ED8D3 /* Entry.swift in Sources */, + 00AD5F1F9E2E94C1D359676457840515 /* Entry+Serialization.swift in Sources */, + 99983AF5666F6E31BF186B2171765B6B /* Entry+ZIP64.swift in Sources */, + 5A1492BFEF8BB10D35DE16AFED75ED1C /* FileManager+ZIP.swift in Sources */, + 0415046466A4505448FA097120A58F3D /* FileManager+ZIPDeprecated.swift in Sources */, + 78FF4557AC434319860AD771F26E2697 /* URL+ZIP.swift in Sources */, + 7999290DC707639D8F4D2090D3F0878F /* ZIPFoundation-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C087664E69A7DDC123A3D00480FA100C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3526C298B08D60279E5378EDA84C1A96 /* DTActivityTitleView.m in Sources */, + D19AB62540BEEDAD415D616509B08445 /* DTAnimatedGIF.m in Sources */, + B0C819B1181CB7AC0ED2AE0F785C05E2 /* DTBase64Coding.m in Sources */, + 5FA1ED066966420F71E6B562C351B5DE /* DTBlockFunctions.m in Sources */, + BED12B4CA012BB2D1EC92E136D6457F0 /* DTCoreGraphicsUtils.m in Sources */, + 9F77C5130284AF5B3A8E3CC488CCB537 /* DTCustomColoredAccessory.m in Sources */, + 57AC6E68683D2ABB49A4B67E02411534 /* DTExtendedFileAttributes.m in Sources */, + EEE698A9AA88E431076CF2F530BD82A9 /* DTFolderMonitor.m in Sources */, + 262F8039CD300F06804EF72ADE21296F /* DTFoundation-dummy.m in Sources */, + 6C2BF3E69D66D8866F24DB24494E7A3C /* DTFoundationConstants.m in Sources */, + 20BDDBE5CE1A90B6CA1AC55C037357E0 /* DTHTMLParser.m in Sources */, + 88F2D3A8852C62750F27E9DDBACC5E80 /* DTLog.m in Sources */, + 33A0F5C950CB119A009D62682928CC68 /* DTPieProgressIndicator.m in Sources */, + 09819232AC1E42F72943F2B9EBC3EFDB /* DTSmartPagingScrollView.m in Sources */, + 12C8BE5FE485F623F695BACC11DDF5B1 /* DTTiledLayerWithoutFade.m in Sources */, + F4D1800D694F5268E261595E762CA5DD /* DTVersion.m in Sources */, + CF5E634F602E6E8723852FE93912CCBA /* NSArray+DTError.m in Sources */, + 76811D5B18D00F172575D6717BF9DA63 /* NSData+DTCrypto.m in Sources */, + A29CC045590581A0435ED48791DAB677 /* NSDictionary+DTError.m in Sources */, + BB72EACBFD0C77D61A9AA9142C100B10 /* NSFileWrapper+DTCopying.m in Sources */, + 89B3A1D41C047AB90325994EEBFFC141 /* NSMutableArray+DTMoving.m in Sources */, + 97FF7E96537BE785FC7D2BE9D3A6F48D /* NSString+DTFormatNumbers.m in Sources */, + 49047276A52DD55FA5A59AD240C6F3CF /* NSString+DTPaths.m in Sources */, + DCA2EB6A9C43728C911B1084BABADB13 /* NSString+DTURLEncoding.m in Sources */, + 3DF9D7FC3E7B18DE4FBB4935D747E57A /* NSString+DTUtilities.m in Sources */, + 2E65B1871A829C3BD96472B1F86D34DF /* NSURL+DTAppLinks.m in Sources */, + 35C487D1A21FC5ADE3DF56FDB6040C0C /* NSURL+DTComparing.m in Sources */, + 12FD06AD8AA51C9E615E9094621D68CC /* NSURL+DTUnshorten.m in Sources */, + B250A5E09EA67FE88C2CED128EFC70CE /* UIApplication+DTNetworkActivity.m in Sources */, + A99834FF2DD87F43190B51C700D3CEA5 /* UIImage+DTFoundation.m in Sources */, + E37E3251D86E8B673CB16F60CA1151C1 /* UIScreen+DTFoundation.m in Sources */, + CEBD70C204E9891A9D5CF70CCF4C9D29 /* UIView+DTFoundation.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E67568179BECE9060450A68A54A2E0FA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 7EF2739F9A5644F0A33A0BB5FBB847F9 /* DTActivityTitleView.m in Sources */, - 678DD680CD8788AB188780999CD2F36C /* DTAnimatedGIF.m in Sources */, - F0CCACFC44ACC09F51A457F95A5079E4 /* DTBase64Coding.m in Sources */, - 5036A0CF9C43310D7BD87E3F27DB1619 /* DTBlockFunctions.m in Sources */, - C108E606A900A4EE495AE04E08BDEA59 /* DTCoreGraphicsUtils.m in Sources */, - 9C9EEE7111F26FD3BECC39E97B674280 /* DTCustomColoredAccessory.m in Sources */, - 1992A77ADA2B85372C51DE67DE656089 /* DTExtendedFileAttributes.m in Sources */, - EC421506FB12180BE48E4066B67176DD /* DTFolderMonitor.m in Sources */, - 4C583F9619384A0DD676E98122883CFA /* DTFoundation-dummy.m in Sources */, - C8C6CE8DEFF63D9D5FDA9DB100A45DD0 /* DTFoundationConstants.m in Sources */, - 8B998D74A270BB941E76E642DF7636C3 /* DTHTMLParser.m in Sources */, - 50529E178616769202F43EDBAE3E96EC /* DTLog.m in Sources */, - 385F62303058B932DE2C5A7AA7DE61FB /* DTPieProgressIndicator.m in Sources */, - B27621CA258E768A16E5E25A89668C6C /* DTSmartPagingScrollView.m in Sources */, - DC1D4FD92F5860C25B1827B2570C79E4 /* DTTiledLayerWithoutFade.m in Sources */, - BC8E238263BDB456890A5BE8EC82FE09 /* DTVersion.m in Sources */, - A736290F32D0ED7B7EC1268AE1D72154 /* NSArray+DTError.m in Sources */, - 445971F9045D5C639BCD4C361A5D99C4 /* NSData+DTCrypto.m in Sources */, - CE407E1A7424F091BD8CA5AF29F11D1D /* NSDictionary+DTError.m in Sources */, - 525377BAC7A4B942FF37A356DE08FC59 /* NSFileWrapper+DTCopying.m in Sources */, - 1B74EC1BBEE68B9E2F86EC4F589E65EB /* NSMutableArray+DTMoving.m in Sources */, - 3A5B7B0C74B75094BD4013076811A195 /* NSString+DTFormatNumbers.m in Sources */, - 0A6A2B85150D31B0DA6C1154EF75544C /* NSString+DTPaths.m in Sources */, - 3E72C32B4BB24CE2F9241C9336D2F026 /* NSString+DTURLEncoding.m in Sources */, - 2E2E05B3915B792EA3E1012A49C0C4D2 /* NSString+DTUtilities.m in Sources */, - 4C054FC76F0EE7FD9312B9CAA083A9F3 /* NSURL+DTAppLinks.m in Sources */, - B2E8E9B9519C8E8190BD47194D788CE9 /* NSURL+DTComparing.m in Sources */, - 543FE9A0CE7B07A39615125194BEB1ED /* NSURL+DTUnshorten.m in Sources */, - 3CE81197AA8330FD15E1B78CB9C6999F /* UIApplication+DTNetworkActivity.m in Sources */, - 51F9E5819381C5AF4A17E26ADC97F144 /* UIImage+DTFoundation.m in Sources */, - AF9028B73D9C5575E3FCA3CEDC377A21 /* UIScreen+DTFoundation.m in Sources */, - 5CC4CD14F333EA81EFE68B04038276E7 /* UIView+DTFoundation.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2650,69 +2670,105 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 19907CCC257DD9F92B515448B5A2975C /* PBXTargetDependency */ = { + 0DC04BA41A0DC1E304A94063EAEF8EB1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DTCoreText; - target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; - targetProxy = A4328450FDA153EAB4BD0783C46E485B /* PBXContainerItemProxy */; + name = ZIPFoundation; + target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; + targetProxy = DA8CE4540395617C72E05FAD18A9E528 /* PBXContainerItemProxy */; }; - 1B4F75AF848B46CF23A6BA22675D6627 /* PBXTargetDependency */ = { + 1A81973F692B2B1BA74FB6E5A9B7C526 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RDReaderView; target = AA2E57587AA8EECA63C4BE08EA3CB6D2 /* RDReaderView */; - targetProxy = 074F879ADE9999797C86C3740B5E32D4 /* PBXContainerItemProxy */; + targetProxy = 909CE499960E68FFEEAC3F07CCED816D /* PBXContainerItemProxy */; }; - 1FE255033CE2931F14A8B432913B1C07 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DTFoundation; - target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; - targetProxy = 7A2CCFC5E3869A63E6A282D8684D7A53 /* PBXContainerItemProxy */; - }; - 24D7C9680789D00DF9C75051814D1BA0 /* PBXTargetDependency */ = { + 7BA66A0536D199195F48545FC6C74888 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RDReaderView-RDReaderViewAssets"; target = AE7F393FB7805DE2664AB4111873F907 /* RDReaderView-RDReaderViewAssets */; - targetProxy = AD4ABAC26C7FD0B1AF7E70325A736A1D /* PBXContainerItemProxy */; + targetProxy = 7677F420C9062853DC411E1D6CD67450 /* PBXContainerItemProxy */; }; - 2502DD303A8608D0713BD3D51E7000A9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DTCoreText; - target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; - targetProxy = AAFAB68D136C5F2D92DBAB8B29FD0AB5 /* PBXContainerItemProxy */; - }; - 323F230337D07BED6644D3793F84BE5F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "ZIPFoundation-ZIPFoundation_Privacy"; - target = C7A8D82E407CD3FDC3BA55CEE519B252 /* ZIPFoundation-ZIPFoundation_Privacy */; - targetProxy = 2ED6C00B62E16EDD0756021F22DF82D0 /* PBXContainerItemProxy */; - }; - 3A511A70A083978857166D53697B2DD1 /* PBXTargetDependency */ = { + 86F72F6F95E48B50E90565CCC2617B60 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ZIPFoundation; target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; - targetProxy = A67D6F565DADD3E0774013433C994B6E /* PBXContainerItemProxy */; + targetProxy = E02D487CC5FCE17A09C6D7F992E61FA5 /* PBXContainerItemProxy */; }; - 773F814832EEF86B603BDB3BEE4BAC30 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "DTCoreText-Resources"; - target = 0C24CB0E87A728A11AA1124CB360D6A1 /* DTCoreText-Resources */; - targetProxy = 97B0BF093C37416184C7A171B080AC06 /* PBXContainerItemProxy */; - }; - 92A6DACDBF5DE6549B548C7CBB39DCBD /* PBXTargetDependency */ = { + 8A57936B99831660CED2C2AE2656E553 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DTFoundation; target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; - targetProxy = 3868F6EA6B9BF861CF7177F46830F1BD /* PBXContainerItemProxy */; + targetProxy = FC2A40799EA5B233DDF797D1E36600CE /* PBXContainerItemProxy */; }; - FE93D297488A807E698F9F36D740C412 /* PBXTargetDependency */ = { + 8FAA51D0E55C0CC6C11C56E8B5117428 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = ZIPFoundation; - target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; - targetProxy = D6606DA782022F182AB83DC44599FC10 /* PBXContainerItemProxy */; + name = DTCoreText; + target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; + targetProxy = E6196200916399BA1FC57E48F75BEA93 /* PBXContainerItemProxy */; + }; + C36FE402BBAD13F1322853208B3F26EE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DTFoundation; + target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; + targetProxy = 84ADF252286F6B6A90FDCAF49CFD1CF7 /* PBXContainerItemProxy */; + }; + C91E1D59F6BC9C8277B2CED2D15F0AFA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "ZIPFoundation-ZIPFoundation_Privacy"; + target = C7A8D82E407CD3FDC3BA55CEE519B252 /* ZIPFoundation-ZIPFoundation_Privacy */; + targetProxy = 351888AD0675DE4DF54F06BC38FB2999 /* PBXContainerItemProxy */; + }; + DFA128FE3AA2D6360EBE3901CA609FEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DTCoreText; + target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; + targetProxy = 34C38B7572F96194A86992F982080DE3 /* PBXContainerItemProxy */; + }; + F89BE326BA8B06B1007631FA78D53A6A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "DTCoreText-Resources"; + target = 0C24CB0E87A728A11AA1124CB360D6A1 /* DTCoreText-Resources */; + targetProxy = 14DAE0FAD0D1B19388CB9AA5D13DC5A4 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 02D9064198969F75468B7756D2A0CA5E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DE0E862DE5230ECE5406E1D3EB3ED840 /* RDReaderView.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/RDReaderView"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + IBSC_MODULE = RDReaderView; + INFOPLIST_FILE = "Target Support Files/RDReaderView/ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + PRODUCT_NAME = RDReaderViewAssets; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 09AE6F08A8CECD592D907C0A8AEF4FB0 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 766227355308600EFC048F797274454A /* ZIPFoundation.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ZIPFoundation"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + IBSC_MODULE = ZIPFoundation; + INFOPLIST_FILE = "Target Support Files/ZIPFoundation/ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + PRODUCT_NAME = ZIPFoundation_Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; 1DBA69CFBAB5965CF41704A7A4699A8A /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 306477706BBB1E784F55BCF8EB1AD737 /* Pods-ReadViewDemo.debug.xcconfig */; @@ -2752,7 +2808,64 @@ }; name = Debug; }; - 2B6B5D81EC4916A616D4136067EC6CBA /* Debug */ = { + 23DEE767AD9A95A36965BBF0E1B95EE0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C0DCB00F0B62D7DBE628D2B5FF006E93 /* DTCoreText.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DTCoreText"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + IBSC_MODULE = DTCoreText; + INFOPLIST_FILE = "Target Support Files/DTCoreText/ResourceBundle-Resources-DTCoreText-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + PRODUCT_NAME = Resources; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 3E0792C6BCBD78FE928FEDF7FE083B8B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 85E8DA9DE1F796F12171763D20CBAF27 /* DTFoundation.debug.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/DTFoundation/DTFoundation-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/DTFoundation/DTFoundation-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/DTFoundation/DTFoundation.modulemap"; + PRODUCT_MODULE_NAME = DTFoundation; + PRODUCT_NAME = DTFoundation; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 44897BD47178DC27ABD838521D880722 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 79D13938A04579CD1E9E042A39CC4D86 /* ZIPFoundation.debug.xcconfig */; buildSettings = { @@ -2770,45 +2883,6 @@ }; name = Debug; }; - 43926DAD74F3FB4106D6CAFD2D33C65A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/RDReaderView/RDReaderView-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/RDReaderView/RDReaderView-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/RDReaderView/RDReaderView.modulemap"; - PRODUCT_MODULE_NAME = RDReaderView; - PRODUCT_NAME = RDReaderView; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.10; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; 44A4B2FB6211B90C1949A44A381F6D1F /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2872,7 +2946,7 @@ }; name = Release; }; - 6767C5E1DC52A0BE002A0C4E711BCF8F /* Release */ = { + 7E9B342A72B3CA971528D14086E8FA77 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 766227355308600EFC048F797274454A /* ZIPFoundation.release.xcconfig */; buildSettings = { @@ -2912,43 +2986,7 @@ }; name = Release; }; - 728BBFA17689D3903EA612AB78729477 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 766227355308600EFC048F797274454A /* ZIPFoundation.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ZIPFoundation"; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = ZIPFoundation; - INFOPLIST_FILE = "Target Support Files/ZIPFoundation/ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = ZIPFoundation_Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 72BCE8A6E5445D5E4AC3C95653FE2FC2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C0DCB00F0B62D7DBE628D2B5FF006E93 /* DTCoreText.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DTCoreText"; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = DTCoreText; - INFOPLIST_FILE = "Target Support Files/DTCoreText/ResourceBundle-Resources-DTCoreText-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = Resources; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 86CF8109EF9105EBB952A39235F39FE5 /* Release */ = { + 878C92DA590BE3C7155CD32C9C84FBA8 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7503926237A4785CCB864B2BCD1F4C2B /* DTFoundation.release.xcconfig */; buildSettings = { @@ -2988,84 +3026,6 @@ }; name = Release; }; - 8D70C3AB7CF44B384FC6A2ACB0D2C244 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 85E8DA9DE1F796F12171763D20CBAF27 /* DTFoundation.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/DTFoundation/DTFoundation-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/DTFoundation/DTFoundation-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/DTFoundation/DTFoundation.modulemap"; - PRODUCT_MODULE_NAME = DTFoundation; - PRODUCT_NAME = DTFoundation; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 98B0EF1FDF2EF48983C1255D7889235F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 79D13938A04579CD1E9E042A39CC4D86 /* ZIPFoundation.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/ZIPFoundation/ZIPFoundation-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/ZIPFoundation/ZIPFoundation.modulemap"; - PRODUCT_MODULE_NAME = ZIPFoundation; - PRODUCT_NAME = ZIPFoundation; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; A0DC1C2C814704734F83EAB35BB20B21 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3212,24 +3172,85 @@ }; name = Debug; }; - B71DB293E6D1DF3D49E94CF7A4C69680 /* Release */ = { + B29B08EB754E81F21963B11AE2FA57EF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2B73CF24646475E517B8FDF110972E77 /* RDReaderView.release.xcconfig */; + baseConfigurationReference = DE0E862DE5230ECE5406E1D3EB3ED840 /* RDReaderView.release.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/RDReaderView"; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = RDReaderView; - INFOPLIST_FILE = "Target Support Files/RDReaderView/ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/RDReaderView/RDReaderView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/RDReaderView/RDReaderView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = RDReaderViewAssets; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/RDReaderView/RDReaderView.modulemap"; + PRODUCT_MODULE_NAME = RDReaderView; + PRODUCT_NAME = RDReaderView; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.10; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Release; }; + B57CEDA4B87E320F9FE64C2C83050112 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C39473D9AF5F23B7886FFC138E4E7644 /* RDReaderView.debug.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/RDReaderView/RDReaderView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/RDReaderView/RDReaderView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/RDReaderView/RDReaderView.modulemap"; + PRODUCT_MODULE_NAME = RDReaderView; + PRODUCT_NAME = RDReaderView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.10; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; C9A3C41671C64664CEDC2482C0D7591C /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1AD502A1FA6EB1E38200B5283F979504 /* Pods-ReadViewDemo.release.xcconfig */; @@ -3270,25 +3291,7 @@ }; name = Release; }; - CF85D159E3F5E5FB20444807A150AD9D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/RDReaderView"; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = RDReaderView; - INFOPLIST_FILE = "Target Support Files/RDReaderView/ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = RDReaderViewAssets; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - DE19A2C5E7462906B427FCED351481FD /* Release */ = { + CF3B3A6EE9088299CBAF7500D2133580 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7A13F9221A300A89F9F8D0A2AB1794BF /* DTCoreText.release.xcconfig */; buildSettings = { @@ -3306,9 +3309,9 @@ }; name = Release; }; - FADA68181260E5AB0971EDFE840CC75A /* Release */ = { + D2692243E03689CAACAC289155F37112 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2B73CF24646475E517B8FDF110972E77 /* RDReaderView.release.xcconfig */; + baseConfigurationReference = 79D13938A04579CD1E9E042A39CC4D86 /* ZIPFoundation.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3321,9 +3324,9 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/RDReaderView/RDReaderView-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/RDReaderView/RDReaderView-Info.plist"; + INFOPLIST_FILE = "Target Support Files/ZIPFoundation/ZIPFoundation-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( @@ -3331,20 +3334,37 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/RDReaderView/RDReaderView.modulemap"; - PRODUCT_MODULE_NAME = RDReaderView; - PRODUCT_NAME = RDReaderView; + MODULEMAP_FILE = "Target Support Files/ZIPFoundation/ZIPFoundation.modulemap"; + PRODUCT_MODULE_NAME = ZIPFoundation; + PRODUCT_NAME = ZIPFoundation; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.10; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; + }; + DF2BF92C9A97D2A5DA2D1C61D1F8D00C /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C39473D9AF5F23B7886FFC138E4E7644 /* RDReaderView.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/RDReaderView"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + IBSC_MODULE = RDReaderView; + INFOPLIST_FILE = "Target Support Files/RDReaderView/ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + PRODUCT_NAME = RDReaderViewAssets; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; }; /* End XCBuildConfiguration section */ @@ -3358,20 +3378,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 395E1ADD7C4572E07F9F15529B893917 /* Build configuration list for PBXNativeTarget "RDReaderView" */ = { + 2CC157438E43F8FADB5A73A6D96D87CD /* Build configuration list for PBXNativeTarget "ZIPFoundation" */ = { isa = XCConfigurationList; buildConfigurations = ( - 43926DAD74F3FB4106D6CAFD2D33C65A /* Debug */, - FADA68181260E5AB0971EDFE840CC75A /* Release */, + D2692243E03689CAACAC289155F37112 /* Debug */, + 7E9B342A72B3CA971528D14086E8FA77 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3B6A47CF0BB2BB255AA059547D63FCE6 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */ = { + 35127788D4B8EA3B2A33A086A96F6692 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */ = { isa = XCConfigurationList; buildConfigurations = ( - CF85D159E3F5E5FB20444807A150AD9D /* Debug */, - B71DB293E6D1DF3D49E94CF7A4C69680 /* Release */, + DF2BF92C9A97D2A5DA2D1C61D1F8D00C /* Debug */, + 02D9064198969F75468B7756D2A0CA5E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3385,11 +3405,29 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6D990C2C8650568DCA444C68C8A54BD4 /* Build configuration list for PBXNativeTarget "DTFoundation" */ = { + 6D4878B1090649FAD56F25B2145334DE /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8D70C3AB7CF44B384FC6A2ACB0D2C244 /* Debug */, - 86CF8109EF9105EBB952A39235F39FE5 /* Release */, + 23DEE767AD9A95A36965BBF0E1B95EE0 /* Debug */, + CF3B3A6EE9088299CBAF7500D2133580 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7FECBCCB85A6EAD26E9CC72B8864A863 /* Build configuration list for PBXNativeTarget "DTFoundation" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E0792C6BCBD78FE928FEDF7FE083B8B /* Debug */, + 878C92DA590BE3C7155CD32C9C84FBA8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 88A749A76163B4114B76F1489777EFB2 /* Build configuration list for PBXNativeTarget "RDReaderView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B57CEDA4B87E320F9FE64C2C83050112 /* Debug */, + B29B08EB754E81F21963B11AE2FA57EF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3403,29 +3441,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B67E3207991BCCFC1AE95B4BC8FF8FB5 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */ = { + CBA94F1763131C44221ECC4537E2EC32 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */ = { isa = XCConfigurationList; buildConfigurations = ( - 2B6B5D81EC4916A616D4136067EC6CBA /* Debug */, - 728BBFA17689D3903EA612AB78729477 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C7129EF2434C8874397E54D62D12DED8 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 72BCE8A6E5445D5E4AC3C95653FE2FC2 /* Debug */, - DE19A2C5E7462906B427FCED351481FD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - D1EC69BAD25E2A3F988B19C5623BB9ED /* Build configuration list for PBXNativeTarget "ZIPFoundation" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 98B0EF1FDF2EF48983C1255D7889235F /* Debug */, - 6767C5E1DC52A0BE002A0C4E711BCF8F /* Release */, + 44897BD47178DC27ABD838521D880722 /* Debug */, + 09AE6F08A8CECD592D907C0A8AEF4FB0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/ReadViewDemo/ReadViewDemo.xcodeproj/project.pbxproj b/ReadViewDemo/ReadViewDemo.xcodeproj/project.pbxproj index 13be87f..b166ea4 100644 --- a/ReadViewDemo/ReadViewDemo.xcodeproj/project.pbxproj +++ b/ReadViewDemo/ReadViewDemo.xcodeproj/project.pbxproj @@ -18,9 +18,9 @@ 1A2B3C4D00000011AABBCC01 /* DemoReaderState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2B3C4D00000012AABBCC01 /* DemoReaderState.swift */; }; 1A2B3C4D00000014AABBCC01 /* FanrenParseTimeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2B3C4D00000013AABBCC01 /* FanrenParseTimeTest.swift */; }; 1A2B3C4D00000015AABBCC01 /* AsyncChapterLoadingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2B3C4D00000016AABBCC01 /* AsyncChapterLoadingTests.swift */; }; + 1A2B3C4D00000021AABBCC01 /* MemoryFootprintTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2B3C4D00000020AABBCC01 /* MemoryFootprintTests.swift */; }; 23BB1155EA379786DAA10A89 /* DisplayTypeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB49AFCCBC2BE04C82B8F286 /* DisplayTypeTests.swift */; }; 369C9658D870DCAFC17EB7F7 /* SearchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE01DBDCB8D790832A4DE3F /* SearchTests.swift */; }; - 1A2B3C4D00000021AABBCC01 /* MemoryFootprintTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2B3C4D00000020AABBCC01 /* MemoryFootprintTests.swift */; }; 3BC5C96D7A0ACF35F2192CC7 /* XCUIApplication+Launch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74B4C44287820D68ED6570F8 /* XCUIApplication+Launch.swift */; }; 4509ED928F228F43888E063D /* ReaderToolbarTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BADF0A18AD034B74A482A4C1 /* ReaderToolbarTests.swift */; }; 52A6A0C9941A4B5F9B88C6B0 /* ReaderAnnotationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20BD15E5D8F04E7E9A239E14 /* ReaderAnnotationTests.swift */; }; @@ -54,6 +54,7 @@ 1A2B3C4D00000012AABBCC01 /* DemoReaderState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DemoReaderState.swift; sourceTree = ""; }; 1A2B3C4D00000013AABBCC01 /* FanrenParseTimeTest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FanrenParseTimeTest.swift; sourceTree = ""; }; 1A2B3C4D00000016AABBCC01 /* AsyncChapterLoadingTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AsyncChapterLoadingTests.swift; sourceTree = ""; }; + 1A2B3C4D00000020AABBCC01 /* MemoryFootprintTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MemoryFootprintTests.swift; sourceTree = ""; }; 201C2B482287866487EFAE66 /* SettingsPanelTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SettingsPanelTests.swift; sourceTree = ""; }; 20BD15E5D8F04E7E9A239E14 /* ReaderAnnotationTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ReaderAnnotationTests.swift; sourceTree = ""; }; 3A43AED288BFCA3ADBA97DD7 /* Pods-ReadViewDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReadViewDemo.release.xcconfig"; path = "Target Support Files/Pods-ReadViewDemo/Pods-ReadViewDemo.release.xcconfig"; sourceTree = ""; }; @@ -65,7 +66,6 @@ 9EDF066BA12974E6CFBE519F /* ReaderOpenCloseTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ReaderOpenCloseTests.swift; sourceTree = ""; }; BADF0A18AD034B74A482A4C1 /* ReaderToolbarTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ReaderToolbarTests.swift; sourceTree = ""; }; CFE01DBDCB8D790832A4DE3F /* SearchTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SearchTests.swift; sourceTree = ""; }; - 1A2B3C4D00000020AABBCC01 /* MemoryFootprintTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MemoryFootprintTests.swift; sourceTree = ""; }; DE070C1D2FBF0CC900ED065F /* ReadViewDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReadViewDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; FB49AFCCBC2BE04C82B8F286 /* DisplayTypeTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DisplayTypeTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ diff --git a/Sources/RDReaderView/EPUBCore/Notes/RDEPUBNoteResolver.swift b/Sources/RDReaderView/EPUBCore/Notes/RDEPUBNoteResolver.swift index 1f88217..357fb32 100644 --- a/Sources/RDReaderView/EPUBCore/Notes/RDEPUBNoteResolver.swift +++ b/Sources/RDReaderView/EPUBCore/Notes/RDEPUBNoteResolver.swift @@ -59,13 +59,22 @@ public final class RDEPUBNoteResolver { guard let fragment, !fragment.isEmpty, let fileURL = resourceResolver.fileURL(forRelativePath: href), - let html = try? String(contentsOf: fileURL, encoding: .utf8) else { + let html = chapterHTML(at: fileURL) else { return nil } return elementHTML(withID: fragment, in: html) } + /// 读取章节 HTML:优先经加密资源 provider 解密,明文文件保持原直读路径 + private func chapterHTML(at fileURL: URL) -> String? { + if let provided = resourceResolver.providedResourceData(at: fileURL) { + return String(data: provided, encoding: .utf8) + ?? String(data: provided, encoding: .utf16) + } + return try? String(contentsOf: fileURL, encoding: .utf8) + } + private func elementHTML(withID id: String, in html: String) -> String? { let escapedID = NSRegularExpression.escapedPattern(for: id) let pattern = #"<([A-Za-z][A-Za-z0-9:_-]*)(?=[^>]*(?:id|xml:id)\s*=\s*(['"])"# + escapedID + #"\2)[^>]*>"# diff --git a/Sources/RDReaderView/EPUBCore/RDEPUBModels.swift b/Sources/RDReaderView/EPUBCore/RDEPUBModels.swift index 58e76ed..7f4fe0e 100644 --- a/Sources/RDReaderView/EPUBCore/RDEPUBModels.swift +++ b/Sources/RDReaderView/EPUBCore/RDEPUBModels.swift @@ -24,6 +24,13 @@ public enum RDEPUBPageSpread: String, Codable { case center } +/// EPUB 渲染朝向(rendition:orientation / iBooks display-options)。 +public enum RDEPUBOrientation: String, Codable { + case portrait + case landscape + case auto +} + public struct RDEPUBMetadata: Codable, Equatable { public var identifier: String? @@ -42,6 +49,10 @@ public struct RDEPUBMetadata: Codable, Equatable { public var readingProgression: RDEPUBReadingProgression + /// 渲染朝向;nil = 未声明(不锁定,跟随系统)。 + /// 来源优先级:OPF rendition:orientation > META-INF/com.apple.ibooks.display-options.xml。 + public var orientation: RDEPUBOrientation? + public init( identifier: String? = nil, title: String = "", @@ -50,7 +61,8 @@ public struct RDEPUBMetadata: Codable, Equatable { version: String? = nil, layout: RDEPUBLayout = .reflowable, spread: String? = nil, - readingProgression: RDEPUBReadingProgression = .auto + readingProgression: RDEPUBReadingProgression = .auto, + orientation: RDEPUBOrientation? = nil ) { self.identifier = identifier self.title = title @@ -60,6 +72,7 @@ public struct RDEPUBMetadata: Codable, Equatable { self.layout = layout self.spread = spread self.readingProgression = readingProgression + self.orientation = orientation } } diff --git a/Sources/RDReaderView/EPUBCore/RDEPUBParser+Archive.swift b/Sources/RDReaderView/EPUBCore/RDEPUBParser+Archive.swift index 7cb301b..fd76ea5 100644 --- a/Sources/RDReaderView/EPUBCore/RDEPUBParser+Archive.swift +++ b/Sources/RDReaderView/EPUBCore/RDEPUBParser+Archive.swift @@ -151,3 +151,48 @@ private final class ContainerXMLParserDelegate: NSObject, XMLParserDelegate { rootFilePath = attributeDict["full-path"]?.trimmingCharacters(in: .whitespacesAndNewlines) } } + +/// 解析 com.apple.ibooks.display-options.xml,提取 orientation-lock 选项值。 +final class IBooksDisplayOptionsParserDelegate: NSObject, XMLParserDelegate { + + private(set) var orientationLock: String? + + private var isCapturingOrientationOption = false + private var buffer = "" + + func parser( + _ parser: XMLParser, + didStartElement elementName: String, + namespaceURI: String?, + qualifiedName qName: String?, + attributes attributeDict: [String: String] = [:] + ) { + let name = XMLName.localName(from: qName ?? elementName) + guard name == "option" else { return } + let optionName = (attributeDict["name"] ?? "").lowercased() + if optionName == "orientation-lock" { + isCapturingOrientationOption = true + buffer = "" + } + } + + func parser(_ parser: XMLParser, foundCharacters string: String) { + guard isCapturingOrientationOption else { return } + buffer += string + } + + func parser( + _ parser: XMLParser, + didEndElement elementName: String, + namespaceURI: String?, + qualifiedName qName: String? + ) { + let name = XMLName.localName(from: qName ?? elementName) + guard name == "option", isCapturingOrientationOption else { return } + isCapturingOrientationOption = false + let value = buffer.trimmingCharacters(in: .whitespacesAndNewlines) + if !value.isEmpty, orientationLock == nil { + orientationLock = value + } + } +} diff --git a/Sources/RDReaderView/EPUBCore/RDEPUBParser+Package.swift b/Sources/RDReaderView/EPUBCore/RDEPUBParser+Package.swift index f8625fc..cfe4892 100644 --- a/Sources/RDReaderView/EPUBCore/RDEPUBParser+Package.swift +++ b/Sources/RDReaderView/EPUBCore/RDEPUBParser+Package.swift @@ -180,6 +180,11 @@ final class OPFPackageParserDelegate: NSObject, XMLParserDelegate { property == "rendition:spread" { metadata.spread = attributeDict["content"] } + if let property = currentMetaProperty?.lowercased(), + property == "rendition:orientation", + let value = attributeDict["content"] { + metadata.orientation = orientation(from: value) + } if let property = currentMetaProperty?.lowercased(), property == "title", let refinesID = currentMetaRefinesID, @@ -270,6 +275,8 @@ final class OPFPackageParserDelegate: NSObject, XMLParserDelegate { metadata.layout = layout(from: normalizedValue) case "rendition:spread": metadata.spread = normalizedValue + case "rendition:orientation": + metadata.orientation = orientation(from: normalizedValue) case "dcterms:identifier", "identifier": if metadata.identifier == nil { metadata.identifier = normalizedValue @@ -315,6 +322,19 @@ final class OPFPackageParserDelegate: NSObject, XMLParserDelegate { private func layout(from rawValue: String) -> RDEPUBLayout { rawValue.lowercased().contains("pre-paginated") ? .fixed : .reflowable } + + private func orientation(from rawValue: String) -> RDEPUBOrientation? { + switch rawValue.lowercased().trimmingCharacters(in: .whitespacesAndNewlines) { + case "portrait": + return .portrait + case "landscape": + return .landscape + case "auto": + return .auto + default: + return nil + } + } } enum XMLSection { diff --git a/Sources/RDReaderView/EPUBCore/RDEPUBParser+Resources.swift b/Sources/RDReaderView/EPUBCore/RDEPUBParser+Resources.swift index 624f236..24bc728 100644 --- a/Sources/RDReaderView/EPUBCore/RDEPUBParser+Resources.swift +++ b/Sources/RDReaderView/EPUBCore/RDEPUBParser+Resources.swift @@ -62,7 +62,8 @@ extension RDEPUBParser { } for item in coverCandidates { if let fileURL = fileURL(forRelativePath: item.href), - let image = UIImage(contentsOfFile: fileURL.path) { + let data = resourceData(at: fileURL), + let image = UIImage(data: data) { return image } } @@ -80,6 +81,10 @@ extension RDEPUBParser { guard let fileURL = fileURL(forRelativePath: relativePath) else { return nil } + if let provided = providedResourceData(at: fileURL) { + return String(data: provided, encoding: .utf8) + ?? String(data: provided, encoding: .utf16) + } return try? String(contentsOf: fileURL) } diff --git a/Sources/RDReaderView/EPUBCore/RDEPUBParser.swift b/Sources/RDReaderView/EPUBCore/RDEPUBParser.swift index 2bec998..1126233 100644 --- a/Sources/RDReaderView/EPUBCore/RDEPUBParser.swift +++ b/Sources/RDReaderView/EPUBCore/RDEPUBParser.swift @@ -19,6 +19,28 @@ public final class RDEPUBParser { opfURL?.deletingLastPathComponent() } + /// 加密资源数据提供者;nil 时所有资源按明文直读。 + /// 必须在 `parse(epubURL:)` 之前设置(推荐通过 `RDEPUBReaderDependencies.live(resourceDataProvider:)` 注入)。 + public var resourceDataProvider: RDEPUBResourceDataProvider? { + didSet { + guard resourceDataProvider != nil else { return } + RDEPUBResourceAccessRegistry.register(self) + } + } + + /// 仅经 provider 获取解密数据;无 provider 或 provider 判定无需解密时返回 nil + public func providedResourceData(at fileURL: URL) -> Data? { + resourceDataProvider?.resourceData(at: fileURL) + } + + /// 统一资源读取入口:优先 provider 解密,其次磁盘明文 + public func resourceData(at fileURL: URL) -> Data? { + if let provided = providedResourceData(at: fileURL) { + return provided + } + return try? Data(contentsOf: fileURL) + } + public init() {} // MARK: - Cache Management @@ -101,6 +123,37 @@ public final class RDEPUBParser { } try parseOPF(at: packageURL) + + // 兜底:OPF 未声明朝向时,回退读取 iBooks display-options + if metadata.orientation == nil { + let displayOptionsURL = extractionURL + .appendingPathComponent("META-INF/com.apple.ibooks.display-options.xml") + if let orientation = parseIBooksOrientation(at: displayOptionsURL) { + metadata.orientation = orientation + } + } + } + + /// 解析 `com.apple.ibooks.display-options.xml` 中的 orientation-lock。 + /// 结构:platform[@name] / option[@name="orientation-lock"] 文本值。 + private func parseIBooksOrientation(at url: URL) -> RDEPUBOrientation? { + guard FileManager.default.fileExists(atPath: url.path), + let parser = XMLParser(contentsOf: url) else { + return nil + } + let delegate = IBooksDisplayOptionsParserDelegate() + parser.delegate = delegate + guard parser.parse() else { return nil } + switch delegate.orientationLock?.lowercased() { + case "portrait-orientation", "portrait": + return .portrait + case "landscape-orientation", "landscape": + return .landscape + case "none": + return .auto + default: + return nil + } } public func parseOPF(at opfURL: URL) throws { diff --git a/Sources/RDReaderView/EPUBCore/RDEPUBResourceDataProvider.swift b/Sources/RDReaderView/EPUBCore/RDEPUBResourceDataProvider.swift new file mode 100644 index 0000000..3f4ae8d --- /dev/null +++ b/Sources/RDReaderView/EPUBCore/RDEPUBResourceDataProvider.swift @@ -0,0 +1,63 @@ +import Foundation + +/// 加密 EPUB 资源数据提供者。 +/// +/// 宿主 App 实现该协议以支持“解压目录内单文件加密”的 EPUB: +/// SDK 读取章节 HTML、图片、内联 CSS 等资源时会优先向 provider 索取解密后的数据, +/// provider 返回 nil 表示该文件无需解密,SDK 回退为直接读取磁盘明文 +/// (明文书、或加密书内的明文文件均走该兜底路径,因此对明文书零影响)。 +/// +/// 密钥推导与解密算法完全由宿主实现,SDK 不持有任何密钥。 +/// +/// 注意:方法会在排版 / 渲染的后台队列被同步调用,实现必须线程安全, +/// 且除必要的文件 I/O 与解密计算外不得阻塞(例如不要在其中发起网络请求)。 +public protocol RDEPUBResourceDataProvider: AnyObject { + + /// 返回指定文件解密后的数据。 + /// - Parameter fileURL: 解压目录内资源文件的绝对路径 + /// - Returns: 解密后的数据;返回 nil 表示该文件不需要解密,由 SDK 直读磁盘 + func resourceData(at fileURL: URL) -> Data? +} + +/// 加密资源访问登记表。 +/// +/// DTCoreText 在解析 `` 时由自己内部加载图片文件,拿不到 parser 实例, +/// 因此这里以弱引用登记所有启用了 provider 的 parser, +/// 供 `RDEPUBDecryptingImageAttachment` 按文件路径反查所属书籍的 provider。 +enum RDEPUBResourceAccessRegistry { + + private struct WeakParserBox { + weak var parser: RDEPUBParser? + } + + private static let lock = NSLock() + + private static var boxes: [WeakParserBox] = [] + + /// 登记启用了 provider 的 parser(重复登记会被去重,弱引用失效项顺带清理) + static func register(_ parser: RDEPUBParser) { + lock.lock() + defer { lock.unlock() } + boxes.removeAll { $0.parser == nil || $0.parser === parser } + boxes.append(WeakParserBox(parser: parser)) +#if canImport(DTCoreText) + RDEPUBDecryptingImageAttachment.registerTagClassIfNeeded() +#endif + } + + /// 按文件路径反查 provider 并返回解密数据; + /// 仅当文件位于某个已登记 parser 的解压目录内才会命中 + static func providedResourceData(at fileURL: URL) -> Data? { + let targetPath = fileURL.resolvingSymlinksInPath().standardizedFileURL.path + lock.lock() + let parsers = boxes.compactMap(\.parser) + lock.unlock() + for parser in parsers { + guard let rootURL = parser.extractionRootURL else { continue } + let rootPath = rootURL.resolvingSymlinksInPath().standardizedFileURL.path + guard targetPath.hasPrefix(rootPath + "/") else { continue } + return parser.providedResourceData(at: fileURL) + } + return nil + } +} diff --git a/Sources/RDReaderView/EPUBCore/RDEPUBResourceResolver.swift b/Sources/RDReaderView/EPUBCore/RDEPUBResourceResolver.swift index fcf4eaf..6caae2a 100644 --- a/Sources/RDReaderView/EPUBCore/RDEPUBResourceResolver.swift +++ b/Sources/RDReaderView/EPUBCore/RDEPUBResourceResolver.swift @@ -25,6 +25,21 @@ public final class RDEPUBResourceResolver { parser.fileURL(forResourceURL: resourceURL) } + /// 是否配置了加密资源数据提供者 + public var hasResourceDataProvider: Bool { + parser.resourceDataProvider != nil + } + + /// 仅经 provider 获取解密数据;无 provider 或 provider 判定无需解密时返回 nil + public func providedResourceData(at fileURL: URL) -> Data? { + parser.providedResourceData(at: fileURL) + } + + /// 统一资源读取入口:优先 provider 解密,其次磁盘明文 + public func resourceData(at fileURL: URL) -> Data? { + parser.resourceData(at: fileURL) + } + public func normalizedHref(_ href: String, relativeToSpineIndex spineIndex: Int? = nil) -> String? { guard let opfDirectoryURL else { return href.components(separatedBy: "#").first diff --git a/Sources/RDReaderView/EPUBCore/RDEPUBResourceURLSchemeHandler.swift b/Sources/RDReaderView/EPUBCore/RDEPUBResourceURLSchemeHandler.swift index e456ac3..7f6163e 100644 --- a/Sources/RDReaderView/EPUBCore/RDEPUBResourceURLSchemeHandler.swift +++ b/Sources/RDReaderView/EPUBCore/RDEPUBResourceURLSchemeHandler.swift @@ -87,7 +87,9 @@ public final class RDEPUBResourceURLSchemeHandler: NSObject, WKURLSchemeHandler RDEPUBWebViewDebug.logSchemeTask("ResourceScheme", requestURL: requestURL, fileURL: fileURL, event: "resolved") let fileSize = resourceSize(for: fileURL) - if let fileSize, fileSize > 524_288 { + // 配置了加密资源 provider 时不能走流式分支:密文必须整体解密后再响应, + // 统一改走内存分支(内部会先询问 provider,明文文件仍按磁盘直读) + if let fileSize, fileSize > 524_288, parser.resourceDataProvider == nil { respondWithStreaming(fileURL: fileURL, requestURL: requestURL, taskID: taskID, urlSchemeTask: urlSchemeTask, fileSize: fileSize) } else { respondWithInMemoryData(fileURL: fileURL, requestURL: requestURL, taskID: taskID, urlSchemeTask: urlSchemeTask) @@ -133,7 +135,13 @@ public final class RDEPUBResourceURLSchemeHandler: NSObject, WKURLSchemeHandler return } do { - let data = try Data(contentsOf: fileURL) + // 优先向加密资源 provider 索取解密数据,provider 放行的明文文件仍直读磁盘 + let data: Data + if let provided = self.parser?.providedResourceData(at: fileURL) { + data = provided + } else { + data = try Data(contentsOf: fileURL) + } guard self.isTaskActive(taskID) else { DispatchQueue.main.async { urlSchemeTask.didFailWithError(NSError(domain: NSURLErrorDomain, code: NSURLErrorCancelled)) diff --git a/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBDecryptingImageAttachment.swift b/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBDecryptingImageAttachment.swift new file mode 100644 index 0000000..0fe84c8 --- /dev/null +++ b/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBDecryptingImageAttachment.swift @@ -0,0 +1,56 @@ +import UIKit + +#if canImport(DTCoreText) +import DTCoreText + +/// 支持加密图片的 DTCoreText 图片附件。 +/// +/// DTCoreText 解析 `` 时会直接读磁盘文件来取图并推算尺寸; +/// 对加密图片该读取会解码失败,表现为 `image == nil` 且 `contentURL` 被保留。 +/// 本子类在 super 初始化完成后接管这种失败场景: +/// 经 `RDEPUBResourceAccessRegistry` 反查 provider 解密数据并调用 `setImage` +/// (setter 会自动补齐 originalSize / displaySize,后续 willFlush 阶段的 +/// 附件规范化与绘制均按明文图片的既有路径工作)。 +/// +/// 通过 `DTTextAttachment.registerClass(_:forTagName:)` 全局注册, +/// 未启用 provider 的书行为与父类完全一致。 +final class RDEPUBDecryptingImageAttachment: DTImageTextAttachment { + + private static var didRegisterTagClass = false + + private static let registerLock = NSLock() + + /// 将本类注册为 `` 标签的附件类(进程内一次性,线程安全) + static func registerTagClassIfNeeded() { + registerLock.lock() + defer { registerLock.unlock() } + guard !didRegisterTagClass else { return } + DTTextAttachment.registerClass(RDEPUBDecryptingImageAttachment.self, forTagName: "img") + didRegisterTagClass = true + } + + override init!(element: DTHTMLElement!, options: [AnyHashable: Any]! = [:]) { + super.init(element: element, options: options) + decryptImageIfNeeded() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + } + + private func decryptImageIfNeeded() { + // super 已成功取到图(明文图片 / data: 内联图)时不干预 + guard image == nil, + let contentURL, + contentURL.isFileURL, + let data = RDEPUBResourceAccessRegistry.providedResourceData(at: contentURL.standardizedFileURL), + let decrypted = UIImage(data: data) else { + return + } + image = decrypted + // 对齐 DTCoreText 本地图片加载成功的行为:置空 contentURL, + // 避免下游误当作待加载的远程 / 磁盘图片再次直读密文 + self.contentURL = nil + } +} +#endif diff --git a/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBRenderDiagnosticsCollector.swift b/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBRenderDiagnosticsCollector.swift index c4d0043..8bc00b1 100644 --- a/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBRenderDiagnosticsCollector.swift +++ b/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBRenderDiagnosticsCollector.swift @@ -89,7 +89,7 @@ struct RDEPUBRenderDiagnosticsCollector { diagnostics.append(resolution.diagnostic) if let fileURL = resolution.resolvedFileURL, - let css = try? String(contentsOf: fileURL), + let css = styleSheetContent(at: fileURL, resourceResolver: resourceResolver), resolution.diagnostic.existsOnDisk { let cssWithResolvedURLs = rewriteCSSResourceURLs( in: css, @@ -106,9 +106,19 @@ struct RDEPUBRenderDiagnosticsCollector { return (rewrittenHTML, inlinedCSSBlocks.reversed().joined(separator: "\n\n"), diagnostics.reversed()) } - + /// 读取样式表内容:优先经加密资源 provider 解密,明文文件保持原直读路径 + private static func styleSheetContent( + at fileURL: URL, + resourceResolver: RDEPUBResourceResolver? + ) -> String? { + if let provided = resourceResolver?.providedResourceData(at: fileURL) { + return String(data: provided, encoding: .utf8) + ?? String(data: provided, encoding: .utf16) + } + return try? String(contentsOf: fileURL) + } + - static func rewriteCSSResourceURLs( in css: String, styleSheetFileURL: URL diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBImageViewerCoordinator.swift b/Sources/RDReaderView/EPUBUI/RDEPUBImageViewerCoordinator.swift index 4af9fdd..d0dcf09 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBImageViewerCoordinator.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBImageViewerCoordinator.swift @@ -54,7 +54,8 @@ final class RDEPUBImageViewerCoordinator { fileURL = normalized.flatMap { resourceResolver.fileURL(forRelativePath: $0) } } - guard let fileURL, let data = try? Data(contentsOf: fileURL) else { return nil } + // 经统一资源入口读取:加密图片由 provider 解密,明文图片直读磁盘 + guard let fileURL, let data = resourceResolver.resourceData(at: fileURL) else { return nil } return UIImage(data: data) } } \ No newline at end of file diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderBottomToolView.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderBottomToolView.swift index 21f57dd..c33ebf6 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBReaderBottomToolView.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderBottomToolView.swift @@ -1,6 +1,6 @@ import UIKit -final class RDEPUBReaderBottomToolView: RDEPUBReaderToolView { +final class RDEPUBReaderBottomToolView: RDEPUBReaderToolView, RDEPUBReaderBottomToolViewProtocol { var onShowTableOfContents: (() -> Void)? diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+DataSource.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+DataSource.swift index c663c07..138033d 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+DataSource.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+DataSource.swift @@ -4,7 +4,7 @@ import UIKit extension RDEPUBReaderController: RDReaderDataSource, RDReaderPageProvider, RDReaderDelegate { public func numberOfPages(in readerView: RDReaderView) -> Int { - pageCountOfReaderView(readerView: readerView) + effectiveNumberOfPages } public func readerView(_ readerView: RDReaderView, viewForPageAt index: Int, reusableView: UIView?) -> UIView { @@ -28,6 +28,11 @@ extension RDEPUBReaderController: RDReaderDataSource, RDReaderPageProvider, RDRe } public func pageContentView(readerView: RDReaderView, pageNum: Int, containerView: UIView?) -> UIView { + // 试读墙页:位于最后一个可读页之后,展示宿主提供的墙视图 + if let wallIndex = trialWallPageIndex, pageNum == wallIndex { + return makeTrialWallPageView(reusableView: containerView) + } + if readerContext.bookPageMap != nil { _ = runtime.prepareOnDemandChapter( forAbsolutePageNumber: pageNum + 1, @@ -133,7 +138,10 @@ extension RDEPUBReaderController: RDReaderDataSource, RDReaderPageProvider, RDRe } public func pageIdentifier(readerView: RDReaderView, pageNum: Int) -> String? { - (textBook == nil && readerContext.bookPageMap == nil) + if let wallIndex = trialWallPageIndex, pageNum == wallIndex { + return NSStringFromClass(RDEPUBTrialWallContainerView.self) + } + return (textBook == nil && readerContext.bookPageMap == nil) ? NSStringFromClass(RDEPUBWebContentView.self) : NSStringFromClass(RDEPUBTextContentView.self) } @@ -376,6 +384,12 @@ extension RDEPUBReaderController: RDReaderDataSource, RDReaderPageProvider, RDRe runtime.extendPartialBookPageMapIfNeeded(currentPageNumber: effectivePageNum + 1) } + // 翻到试读墙页:触发回调,跳过内容定位(墙页不属于书籍内容,无 location/CFI) + if let wallIndex = trialWallPageIndex, effectivePageNum == wallIndex { + delegate?.epubReaderDidReachTrialWall(self) + return + } + let totalPages = pageCountOfReaderView(readerView: readerView) if totalPages > 0, effectivePageNum == totalPages - 1 { delegate?.epubReaderDidReachEnd(self) diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+LocationResolution.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+LocationResolution.swift index 6699afb..7ff047e 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+LocationResolution.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+LocationResolution.swift @@ -173,6 +173,13 @@ extension RDEPUBReaderController { if let decodedRangeInfo = decodedRangeInfo(from: rangeInfo, matching: location) { return decodedRangeInfo.start } + // Native text anchors carry the exact UTF-16 chapter offset and remain + // stable across font/layout changes. Prefer them over CFI recovery, + // which may temporarily resolve to the chapter's first marker while a + // new CFI map is still being prepared. + if let anchor = location.rangeAnchor?.start { + return anchor.chapterOffset + } if let spineIndex = readerContext.normalizedSpineIndex(for: location), let runtimeChapter = runtime.chapterRuntimeStore.chapterData(for: spineIndex), let cfi = primaryLocationCFI(for: location), @@ -184,9 +191,6 @@ extension RDEPUBReaderController { let cfiOffset = RDEPUBCFIResolver.resolve(cfi).chapterOffset { return cfiOffset } - if let anchor = location.rangeAnchor?.start { - return anchor.chapterOffset - } if let fragment = location.fragment, let offset = fallbackEntry.fragmentOffsets[fragment] { return offset diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+Orientation.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+Orientation.swift new file mode 100644 index 0000000..32dd893 --- /dev/null +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+Orientation.swift @@ -0,0 +1,48 @@ +import UIKit + +/// 朝向锁定支持。 +/// +/// 依据 `publication.metadata.orientation`(来源 OPF rendition:orientation, +/// 或兜底的 iBooks display-options)返回受限的支持朝向,并在书籍打开后主动请求转向。 +/// 未声明朝向(nil / .auto)时不干预,跟随系统与容器。 +/// +/// 注意:`supportedInterfaceOrientations` 只有当阅读器是当前决定朝向的控制器时才生效 +/// (通常需宿主保证它被 present 或位于导航栈顶;若被包在自定义容器里,容器需转发该值)。 +extension RDEPUBReaderController { + + /// 由 EPUB 元数据推导的受限支持朝向;nil = 不限制(跟随系统) + var epubSupportedOrientationMask: UIInterfaceOrientationMask? { + switch publication?.metadata.orientation { + case .portrait: + return .portrait + case .landscape: + return .landscape + case .auto, .none: + return nil + } + } + + public override var supportedInterfaceOrientations: UIInterfaceOrientationMask { + epubSupportedOrientationMask ?? super.supportedInterfaceOrientations + } + + public override var shouldAutorotate: Bool { + // 已锁定单一朝向时不自动旋转 + epubSupportedOrientationMask == nil + } + + /// 打开书籍后按元数据主动转向(iOS 16+ 用 requestGeometryUpdate,旧系统回退到刷新支持朝向)。 + /// 由加载完成流程调用。 + func applyOrientationLockIfNeeded() { + guard let mask = epubSupportedOrientationMask else { return } + if #available(iOS 16.0, *) { + setNeedsUpdateOfSupportedInterfaceOrientations() + guard let scene = view.window?.windowScene else { return } + scene.requestGeometryUpdate(.iOS(interfaceOrientations: mask)) { _ in } + } else { + let target: UIInterfaceOrientation = (mask == .landscape) ? .landscapeRight : .portrait + UIDevice.current.setValue(target.rawValue, forKey: "orientation") + UIViewController.attemptRotationToDeviceOrientation() + } + } +} diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+Trial.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+Trial.swift new file mode 100644 index 0000000..9d75f09 --- /dev/null +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+Trial.swift @@ -0,0 +1,86 @@ +import UIKit + +/// 试读墙支持。 +/// +/// 设计:`pageCountOfReaderView` 仍返回原始内容页数(内容页显示的总页数不受影响), +/// 仅 `numberOfPages(in:)` 在启用试读墙时 +1;试读墙页固定位于最后一个可读页之后。 +/// 两种形态统一覆盖: +/// - readoor 独立试读 epub(整本都是试读章节):readableChapterCount 传 nil,墙追加在全书末尾; +/// - 整本 epub + 按章限制:readableChapterCount 传 N,超出章节页不展示(仅 bookPageMap 路径)。 +extension RDEPUBReaderController { + + /// 试读墙视图(首次访问经 delegate 获取并缓存) + var trialWallView: UIView? { + if let cached = cachedTrialWallView { + return cached + } + guard configuration.trialPolicy != nil else { return nil } + let view = delegate?.epubReaderTrialWallView(self) + cachedTrialWallView = view + return view + } + + /// 是否启用试读墙:配置了试读策略且宿主提供了墙视图 + var isTrialWallEnabled: Bool { + configuration.trialPolicy != nil && trialWallView != nil + } + + /// 原始可读内容页数(不含试读墙页)。 + /// readableChapterCount 指定且存在 bookPageMap 时按章截断,否则为全部内容页。 + var readableContentPageCount: Int { + let rawCount = pageCountOfReaderView(readerView: readerView) + guard let policy = configuration.trialPolicy, + let readableChapterCount = policy.readableChapterCount, + readableChapterCount > 0, + let pageMap = readerContext.bookPageMap else { + return rawCount + } + // 第一个不可读章节(spineIndex >= readableChapterCount)的起始绝对页 = 可读页数 + let firstLockedStart = pageMap.entries + .first { $0.spineIndex >= readableChapterCount }? + .absolutePageStart + return firstLockedStart ?? rawCount + } + + /// 试读墙页的绝对索引(0-based);未启用时为 nil + var trialWallPageIndex: Int? { + guard isTrialWallEnabled else { return nil } + return readableContentPageCount + } + + /// 供 RDReaderView 使用的有效页数:启用试读墙时为可读页数 + 1(墙页) + var effectiveNumberOfPages: Int { + guard isTrialWallEnabled else { + return pageCountOfReaderView(readerView: readerView) + } + return readableContentPageCount + 1 + } + + /// 构建试读墙页承载视图(铺满一页,居中放置宿主提供的墙视图) + func makeTrialWallPageView(reusableView: UIView?) -> UIView { + let container = (reusableView as? RDEPUBTrialWallContainerView) ?? RDEPUBTrialWallContainerView() + container.setWallView(trialWallView) + return container + } +} + +/// 试读墙页容器:让宿主墙视图铺满整页 +final class RDEPUBTrialWallContainerView: UIView { + + private weak var wallView: UIView? + + func setWallView(_ view: UIView?) { + guard wallView !== view else { return } + wallView?.removeFromSuperview() + guard let view else { return } + view.translatesAutoresizingMaskIntoConstraints = false + addSubview(view) + NSLayoutConstraint.activate([ + view.leadingAnchor.constraint(equalTo: leadingAnchor), + view.trailingAnchor.constraint(equalTo: trailingAnchor), + view.topAnchor.constraint(equalTo: topAnchor), + view.bottomAnchor.constraint(equalTo: bottomAnchor) + ]) + wallView = view + } +} diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift index 89f5345..55232b3 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift @@ -146,6 +146,9 @@ public final class RDEPUBReaderController: UIViewController { lazy var searchBarView = RDEPUBReaderSearchBarView() + /// 试读墙视图缓存(经 delegate 获取一次后复用;见 RDEPUBReaderController+Trial) + var cachedTrialWallView: UIView? + private(set) var isSearchBarVisible = false var currentBookIdentifier: String? { diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderDelegate.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderDelegate.swift index 305dd7d..30f23fb 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBReaderDelegate.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderDelegate.swift @@ -26,7 +26,15 @@ public protocol RDEPUBReaderDelegate: AnyObject { func epubReader(_ reader: UIViewController, didFailWithError error: Error) - func epubReader(_ reader: UIViewController, configureTopToolView topToolView: RDEPUBReaderTopToolView) + func epubReader(_ reader: UIViewController, configureTopToolView topToolView: RDEPUBReaderTopToolViewProviding) + + /// 提供试读墙视图(configuration.trialPolicy 非 nil 时生效)。 + /// 返回非 nil 时,阅读器在最后一个可读页之后追加一页展示该视图;返回 nil 则不追加试读墙。 + /// 视图的购买 / 登录按钮由宿主自行处理(可在点击后调用 reloadBook() 切换到完整 epub)。 + func epubReaderTrialWallView(_ reader: UIViewController) -> UIView? + + /// 用户翻到试读墙页时回调(宿主可在此触发购买引导 / 埋点等)。 + func epubReaderDidReachTrialWall(_ reader: UIViewController) } public extension RDEPUBReaderDelegate { @@ -42,5 +50,7 @@ public extension RDEPUBReaderDelegate { func epubReader(_ reader: UIViewController, didActivateExternalLink url: URL) {} func epubReader(_ reader: UIViewController, shouldOpenExternalURL url: URL) -> Bool { true } func epubReader(_ reader: UIViewController, didFailWithError error: Error) {} - func epubReader(_ reader: UIViewController, configureTopToolView topToolView: RDEPUBReaderTopToolView) {} + func epubReader(_ reader: UIViewController, configureTopToolView topToolView: RDEPUBReaderTopToolViewProviding) {} + func epubReaderTrialWallView(_ reader: UIViewController) -> UIView? { nil } + func epubReaderDidReachTrialWall(_ reader: UIViewController) {} } diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderToolViewProtocols.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderToolViewProtocols.swift new file mode 100644 index 0000000..25ba54a --- /dev/null +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderToolViewProtocols.swift @@ -0,0 +1,69 @@ +import UIKit + +/// 顶部工具栏协议:宿主可提供自定义顶栏,只需实现以下回调与状态方法。 +/// 内置 `RDEPUBReaderTopToolView` 已实现本协议。 +/// 通过 `RDEPUBReaderDependencies.makeTopToolView` 工厂注入自定义实现。 +public protocol RDEPUBReaderTopToolViewProtocol: AnyObject { + + /// 返回 / 关闭 + var onBack: (() -> Void)? { get set } + + /// 搜索 + var onSearch: (() -> Void)? { get set } + + /// 切换书签 + var onToggleBookmark: (() -> Void)? { get set } + + /// 应用主题 + func apply(theme: RDEPUBReaderTheme) + + /// 设置标题 + func setTitle(_ title: String?) + + /// 书签按钮是否可用 + func setBookmarkEnabled(_ isEnabled: Bool) + + /// 书签按钮选中态(当前页是否已加书签) + func setBookmarkSelected(_ isSelected: Bool) +} + +/// 底部工具栏协议:宿主可提供自定义底栏。内置 `RDEPUBReaderBottomToolView` 已实现本协议。 +/// 通过 `RDEPUBReaderDependencies.makeBottomToolView` 工厂注入自定义实现。 +public protocol RDEPUBReaderBottomToolViewProtocol: AnyObject { + + /// 目录 + var onShowTableOfContents: (() -> Void)? { get set } + + /// 书签列表 + var onShowBookmarks: (() -> Void)? { get set } + + /// 高亮列表 + var onShowHighlights: (() -> Void)? { get set } + + /// 新增高亮 / 标注 + var onAddHighlight: (() -> Void)? { get set } + + /// 设置面板 + var onShowSettings: (() -> Void)? { get set } + + /// 应用主题 + func apply(theme: RDEPUBReaderTheme) + + /// 按配置更新各入口可见性 + func updateVisibility(showsTableOfContents: Bool, allowsHighlights: Bool, showsSettingsPanel: Bool) + + /// 书签列表按钮是否可用 + func setBookmarksEnabled(_ isEnabled: Bool) + + /// 新增高亮按钮是否可用(有选区时) + func setAddHighlightEnabled(_ isEnabled: Bool) + + /// 高亮列表按钮是否可用 + func setHighlightsEnabled(_ isEnabled: Bool) +} + +/// 顶部工具栏具体类型:UIView 且实现顶栏协议 +public typealias RDEPUBReaderTopToolViewProviding = UIView & RDEPUBReaderTopToolViewProtocol + +/// 底部工具栏具体类型:UIView 且实现底栏协议 +public typealias RDEPUBReaderBottomToolViewProviding = UIView & RDEPUBReaderBottomToolViewProtocol diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderTopToolView.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderTopToolView.swift index 3cb665f..28ddb84 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBReaderTopToolView.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderTopToolView.swift @@ -1,12 +1,12 @@ import UIKit -public final class RDEPUBReaderTopToolView: RDEPUBReaderToolView { +public final class RDEPUBReaderTopToolView: RDEPUBReaderToolView, RDEPUBReaderTopToolViewProtocol { - var onBack: (() -> Void)? + public var onBack: (() -> Void)? - var onToggleBookmark: (() -> Void)? + public var onToggleBookmark: (() -> Void)? - var onSearch: (() -> Void)? + public var onSearch: (() -> Void)? private let backButton = RDEPUBReaderTintButton(type: .system) private let searchButton = RDEPUBReaderTintButton(type: .system) @@ -98,16 +98,16 @@ public final class RDEPUBReaderTopToolView: RDEPUBReaderToolView { updateBookmarkButtonAppearance() } - func setTitle(_ title: String?) { + public func setTitle(_ title: String?) { titleLabel.text = title } - func setBookmarkSelected(_ isSelected: Bool) { + public func setBookmarkSelected(_ isSelected: Bool) { isBookmarked = isSelected updateBookmarkButtonAppearance() } - func setBookmarkEnabled(_ isEnabled: Bool) { + public func setBookmarkEnabled(_ isEnabled: Bool) { bookmarkButton.isEnabled = isEnabled bookmarkButton.alpha = isEnabled ? 1 : 0.45 } diff --git a/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderChromeCoordinator.swift b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderChromeCoordinator.swift index a5b936f..b714576 100644 --- a/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderChromeCoordinator.swift +++ b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderChromeCoordinator.swift @@ -17,8 +17,9 @@ final class RDEPUBReaderChromeCoordinator: NSObject, UIAdaptivePresentationContr context.runtime?.settingsPanelDidDisappear() } - func makeTopToolView() -> RDEPUBReaderTopToolView { - let toolView = RDEPUBReaderTopToolView() + func makeTopToolView() -> RDEPUBReaderTopToolViewProviding { + let toolView: RDEPUBReaderTopToolViewProviding = + context.controller?.dependencies.makeTopToolView?() ?? RDEPUBReaderTopToolView() toolView.onBack = { [weak self] in self?.handleBackAction() } @@ -31,8 +32,9 @@ final class RDEPUBReaderChromeCoordinator: NSObject, UIAdaptivePresentationContr return toolView } - func makeBottomToolView() -> RDEPUBReaderBottomToolView { - let toolView = RDEPUBReaderBottomToolView() + func makeBottomToolView() -> RDEPUBReaderBottomToolViewProviding { + let toolView: RDEPUBReaderBottomToolViewProviding = + context.controller?.dependencies.makeBottomToolView?() ?? RDEPUBReaderBottomToolView() toolView.onShowTableOfContents = { [weak self] in self?.presentTableOfContents() } diff --git a/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderDependencies.swift b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderDependencies.swift index 386a9d1..b2849cc 100644 --- a/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderDependencies.swift +++ b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderDependencies.swift @@ -35,13 +35,21 @@ public struct RDEPUBReaderDependencies { public var makeTextRenderer: (RDEPUBTextRenderingEngine) -> RDEPUBTextRenderer + /// 自定义顶部工具栏工厂;nil 时使用内置 `RDEPUBReaderTopToolView` + public var makeTopToolView: (() -> RDEPUBReaderTopToolViewProviding)? + + /// 自定义底部工具栏工厂;nil 时使用内置 `RDEPUBReaderBottomToolView` + public var makeBottomToolView: (() -> RDEPUBReaderBottomToolViewProviding)? + public init( environment: any RDEPUBReaderDisplayEnvironment, makeParser: @escaping () -> RDEPUBParser, makePaginator: @escaping () -> RDEPUBPaginator, makeTextBookBuilder: @escaping (RDEPUBTextRenderer, RDEPUBTextBookCache?, RDEPUBTextLayoutConfig) -> RDEPUBTextBookBuilder, makePlainTextBookBuilder: @escaping (RDEPUBTextRenderer, RDEPUBTextLayoutConfig) -> RDPlainTextBookBuilder, - makeTextRenderer: @escaping (RDEPUBTextRenderingEngine) -> RDEPUBTextRenderer + makeTextRenderer: @escaping (RDEPUBTextRenderingEngine) -> RDEPUBTextRenderer, + makeTopToolView: (() -> RDEPUBReaderTopToolViewProviding)? = nil, + makeBottomToolView: (() -> RDEPUBReaderBottomToolViewProviding)? = nil ) { self.environment = environment self.makeParser = makeParser @@ -49,6 +57,22 @@ public struct RDEPUBReaderDependencies { self.makeTextBookBuilder = makeTextBookBuilder self.makePlainTextBookBuilder = makePlainTextBookBuilder self.makeTextRenderer = makeTextRenderer + self.makeTopToolView = makeTopToolView + self.makeBottomToolView = makeBottomToolView + } + + /// 构建带加密资源 provider 的默认依赖: + /// 宿主实现 `RDEPUBResourceDataProvider` 后经此注入,即可打开单文件加密的 EPUB。 + /// - Parameter resourceDataProvider: 解密数据提供者;传 nil 等价于 `.live` + public static func live(resourceDataProvider: RDEPUBResourceDataProvider?) -> RDEPUBReaderDependencies { + var dependencies = RDEPUBReaderDependencies.live + guard let resourceDataProvider else { return dependencies } + dependencies.makeParser = { + let parser = RDEPUBParser() + parser.resourceDataProvider = resourceDataProvider + return parser + } + return dependencies } public static var live: RDEPUBReaderDependencies { diff --git a/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderLoadCoordinator.swift b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderLoadCoordinator.swift index 43405f0..f98286f 100644 --- a/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderLoadCoordinator.swift +++ b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderLoadCoordinator.swift @@ -80,6 +80,7 @@ final class RDEPUBReaderLoadCoordinator { controller.applyReaderViewConfiguration() context.updateReaderChrome() controller.delegate?.epubReader(controller, didOpen: publication) + controller.applyOrientationLockIfNeeded() context.runtime?.paginatePublication(restoreLocation: restoreLocation) } } diff --git a/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderPaginationCoordinator.swift b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderPaginationCoordinator.swift index e4bdecf..6134c66 100644 --- a/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderPaginationCoordinator.swift +++ b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderPaginationCoordinator.swift @@ -114,9 +114,12 @@ final class RDEPUBReaderPaginationCoordinator { context.runtime?.viewportMonitor.processPendingChangeAfterPagination() } - func repaginatePreservingCurrentLocation() { + func repaginatePreservingCurrentLocation( + preferredRestoreLocation: RDEPUBLocation? = nil + ) { guard context.publication != nil else { return } - let restoreLocation = context.runtime?.viewportMonitor.consumePendingPresentationRestoreLocation() + let restoreLocation = preferredRestoreLocation + ?? context.runtime?.viewportMonitor.consumePendingPresentationRestoreLocation() ?? context.currentVisibleLocation() ?? context.persistenceLocation() paginatePublication(restoreLocation: restoreLocation) diff --git a/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderRuntime.swift b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderRuntime.swift index 847ff22..2b36c62 100644 --- a/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderRuntime.swift +++ b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderRuntime.swift @@ -69,6 +69,15 @@ final class RDEPUBReaderRuntime { private var pendingSettingsPreviewWorkItem: DispatchWorkItem? + /// The location before the settings preview replaces the full book page map + /// with the current chapter's temporary map. The temporary map rebases that + /// chapter at page zero, so it must never be used as the final restore source. + private var settingsRestoreLocation: RDEPUBLocation? + + /// A settings session must keep one immutable text offset. Re-capturing the + /// start of each preview page makes repeated font-size changes drift backward. + private var settingsPreviewAnchor: SettingsPreviewAnchor? + private let settingsPreviewDebounceDelay: TimeInterval = 0.2 private struct SettingsPreviewAnchor { @@ -84,11 +93,11 @@ final class RDEPUBReaderRuntime { self.context = context } - func makeTopToolView() -> RDEPUBReaderTopToolView { + func makeTopToolView() -> RDEPUBReaderTopToolViewProviding { chromeCoordinator.makeTopToolView() } - func makeBottomToolView() -> RDEPUBReaderBottomToolView { + func makeBottomToolView() -> RDEPUBReaderBottomToolViewProviding { chromeCoordinator.makeBottomToolView() } @@ -379,7 +388,8 @@ final class RDEPUBReaderRuntime { return } self.pendingSettingsPreviewWorkItem = nil - let previewAnchor = self.captureSettingsPreviewAnchor() + let previewAnchor = self.settingsPreviewAnchor + ?? self.captureSettingsPreviewAnchor() self.chapterRuntimeStore.invalidateAllForSettingsChange() self.repaginateCurrentChapterOnly( previewGeneration: previewGeneration, @@ -504,6 +514,13 @@ final class RDEPUBReaderRuntime { pendingSettingsPreviewWorkItem = nil isSettingsPanelOpen = true needsFullRepaginationAfterSettingsClose = false + let fallbackLocation = locationCoordinator.currentVisibleLocation() + ?? context.persistenceLocation() + settingsPreviewAnchor = captureSettingsPreviewAnchor() + settingsRestoreLocation = exactSettingsRestoreLocation( + anchor: settingsPreviewAnchor, + fallbackLocation: fallbackLocation + ) settingsPreviewGeneration += 1 } @@ -515,8 +532,35 @@ final class RDEPUBReaderRuntime { if needsFullRepaginationAfterSettingsClose { needsFullRepaginationAfterSettingsClose = false - paginationCoordinator.repaginatePreservingCurrentLocation() + paginationCoordinator.repaginatePreservingCurrentLocation( + preferredRestoreLocation: settingsRestoreLocation + ) } + settingsRestoreLocation = nil + settingsPreviewAnchor = nil + } + + private func exactSettingsRestoreLocation( + anchor: SettingsPreviewAnchor?, + fallbackLocation: RDEPUBLocation? + ) -> RDEPUBLocation? { + guard let anchor else { return fallbackLocation } + + let textAnchor = RDEPUBTextAnchor( + fileIndex: anchor.spineIndex, + row: 0, + column: 0, + chapterOffset: anchor.offset, + fragmentID: fallbackLocation?.fragment + ) + return RDEPUBLocation( + bookIdentifier: fallbackLocation?.bookIdentifier ?? context.currentBookIdentifier, + href: anchor.href, + progression: fallbackLocation?.progression ?? 0, + lastProgression: fallbackLocation?.lastProgression, + fragment: fallbackLocation?.fragment, + rangeAnchor: RDEPUBTextRangeAnchor(start: textAnchor, end: textAnchor) + ) } func refreshVisibleContentPreservingLocation() { diff --git a/Sources/RDReaderView/EPUBUI/Settings/RDEPUBReaderConfiguration.swift b/Sources/RDReaderView/EPUBUI/Settings/RDEPUBReaderConfiguration.swift index 3c17ce9..ee96946 100644 --- a/Sources/RDReaderView/EPUBUI/Settings/RDEPUBReaderConfiguration.swift +++ b/Sources/RDReaderView/EPUBUI/Settings/RDEPUBReaderConfiguration.swift @@ -46,6 +46,19 @@ public enum RDEPUBReaderFontChoice: String, Codable, CaseIterable, Equatable { } } +/// 试读策略:开启后,阅读器在最后一个可读页之后追加一页“试读墙”(UI 由宿主经 delegate 提供)。 +public struct RDEPUBReaderTrialPolicy: Equatable { + + /// 可读章节数(可读 spine 为 0.. = ["https"], requiresExternalLinkConfirmation: Bool = true, allowsInspectableWebViews: Bool = false, - enablesVerboseWebViewLogging: Bool = false + enablesVerboseWebViewLogging: Bool = false, + trialPolicy: RDEPUBReaderTrialPolicy? = nil ) { self.fontSize = fontSize self.lineHeightMultiple = lineHeightMultiple @@ -150,6 +167,7 @@ public struct RDEPUBReaderConfiguration: Equatable { self.requiresExternalLinkConfirmation = requiresExternalLinkConfirmation self.allowsInspectableWebViews = allowsInspectableWebViews self.enablesVerboseWebViewLogging = enablesVerboseWebViewLogging + self.trialPolicy = trialPolicy } public static let `default` = RDEPUBReaderConfiguration() diff --git a/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift index 117753b..9e902cd 100644 --- a/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift +++ b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift @@ -584,6 +584,11 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader private func image(from attachmentValue: Any?) -> UIImage? { #if canImport(DTCoreText) + // 附件本体已持有图片时(含加密书解密后的图)优先使用,避免二次读盘或误读密文 + if let attachment = attachmentValue as? DTImageTextAttachment, + let image = attachment.image { + return image + } if let attachment = attachmentValue as? DTTextAttachment, let url = attachment.contentURL { return UIImage(contentsOfFile: url.path)