From d7f28c3f10d31635e54547354c6685fbf37b18d6 Mon Sep 17 00:00:00 2001 From: shenlei Date: Thu, 25 Jun 2026 15:39:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=8F=B3=E5=AF=B9?= =?UTF-8?q?=E9=BD=90=E7=9F=AD=E6=96=87=E6=9C=AC=E6=98=BE=E7=A4=BA=E4=B8=8D?= =?UTF-8?q?=E5=AE=8C=E6=95=B4=E5=8F=8A=E5=A4=9A=E9=A1=B9=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=94=B9=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 右对齐文本显示修复(如"巫鸿"只显示"鸿"的问题): - RDEPUBChapterTailNormalizer: 短尾页合并时检查 avoidPageBreakInside 语义, 避免将带有此标记的短文本(如 right-info 署名)错误合并回上一页 - RDEPUBTextContentView: 续段归一化时跳过右对齐/居中对齐的段落, 防止错误修改 firstLineHeadIndent 导致首字不可见 - RDEPUBCSSCompatibilityLayer: 为含 text-align:right/center 的 CSS 块 自动注入 text-indent:0 !important,确保右对齐/居中文本无首行缩进 - RDEPUBTextRendererSupport: 排版属性归一化时将右对齐/居中段落的 firstLineHeadIndent 重置为 0 图片查看器及脚注点击功能: - 新增 RDEPUBImageViewController 和 RDEPUBImageViewerCoordinator, 支持从 WebView 和 TextPage 两种模式查看图片 - epub-bridge.js: 检测图片和脚注图片的点击事件,脚注图片显示弹窗 - RDEPUBJavaScriptBridge: 新增 imageDidTap/footnoteDidTap 桥接消息 - RDEPUBWebView: 新增图片和脚注点击的 delegate 方法 - RDEPUBAttachmentNormalizer: 改进脚注检测,优先使用 alt 文本判断 - RDEPUBPaginationModels: 新增 .footnote 附件类型 - RDEPUBPageLayoutSnapshot: 运行时动态解析附件类型,脚注优先级高于图片 位置解析改进: - RDEPUBReaderController+LocationResolution: 利用 rangeInfo 提升页码定位精度 其他: - RDEPUBTextBookCache: schema 版本升级至 13 - RDEPUBReaderTheme: 主题更新 - Pod 项目文件更新 Co-Authored-By: Claude --- .../Pods/Pods.xcodeproj/project.pbxproj | 3826 +++++++++-------- .../Models/RDEPUBPaginationModels.swift | 2 + .../EPUBCore/RDEPUBJavaScriptBridge.swift | 8 +- .../RDEPUBWebView+JavaScriptBridge.swift | 35 + .../RDReaderView/EPUBCore/RDEPUBWebView.swift | 6 + .../EPUBCore/Resources/epub-bridge.js | 37 + .../RDEPUBChapterTailNormalizer.swift | 39 + .../BuildPipeline/RDEPUBTextBookCache.swift | 2 +- .../RDEPUBCSSCompatibilityLayer.swift | 57 + .../RDEPUBAttachmentNormalizer.swift | 28 +- .../RDEPUBTextRendererSupport.swift | 16 +- .../EPUBUI/RDEPUBImageViewController.swift | 241 ++ .../EPUBUI/RDEPUBImageViewerCoordinator.swift | 60 + ...PUBReaderController+ContentDelegates.swift | 24 + ...BReaderController+LocationResolution.swift | 81 +- .../EPUBUI/RDEPUBWebContentView.swift | 24 + .../RDEPUBChapterSummaryDiskCache.swift | 2 +- .../RDEPUBReaderLocationCoordinator.swift | 2 +- .../EPUBUI/Settings/RDEPUBReaderTheme.swift | 6 + .../TextPage/RDEPUBPageLayoutSnapshot.swift | 17 +- .../TextPage/RDEPUBTextContentView.swift | 69 + 21 files changed, 2649 insertions(+), 1933 deletions(-) create mode 100644 Sources/RDReaderView/EPUBUI/RDEPUBImageViewController.swift create mode 100644 Sources/RDReaderView/EPUBUI/RDEPUBImageViewerCoordinator.swift diff --git a/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj b/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj index 74a02b2..df30df1 100644 --- a/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj +++ b/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj @@ -7,768 +7,770 @@ objects = { /* Begin PBXBuildFile section */ + 00012FDC4E0B6E7D2912581B460A8992 /* RDEPUBAnnotationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B3221062F7881536685FE3C927CC7D /* RDEPUBAnnotationModels.swift */; }; 002685407B9C4D548571DA24AFD6E8F1 /* NSString+Paragraphs.m in Sources */ = {isa = PBXBuildFile; fileRef = F53CCB60DE5D06A43E4A52EDB274E7D2 /* NSString+Paragraphs.m */; }; - 00E8757FB94E0A8100BE11635D545831 /* ConstraintMakerPrioritizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E138EC76D0DF24544D29D1A4D7429E3 /* ConstraintMakerPrioritizable.swift */; }; - 00EC20B980D829A07C2F25D0E317DBAA /* NSData+DTCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 17F750F38183302BF345F40F5A4CDD43 /* NSData+DTCrypto.m */; }; 014449AE560FFF3C628FAE639D043004 /* DTAnchorHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D63AE1801C7AB149219317BE7529B26 /* DTAnchorHTMLElement.m */; }; - 017C8BDE742F347FB3D4D7E5A365B757 /* DTLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B007AEEACE9EA271DD73AFD80A74D83 /* DTLog.m */; }; - 01B1B8AF1056EF71658BE02D0850C34F /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F090A0289338B14050FAF16C22605B0 /* ConstraintConstantTarget.swift */; }; - 020F2DBF2B0D499C7D5FDB014AA03CF5 /* NSURL+DTUnshorten.h in Headers */ = {isa = PBXBuildFile; fileRef = 054674EB90C625BB4BEA9368ED92592B /* NSURL+DTUnshorten.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 02CBB350FE8E8C48D48347519605408E /* RDEPUBModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DCD2E4F44A79B62DF96C3ABAE2B8592 /* RDEPUBModels.swift */; }; - 034CDAD58DD721808C23222EE79E2FB6 /* RDEPUBReaderController+LocationResolution.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCEB096B8A5CC40D05995D4C8BCE6996 /* RDEPUBReaderController+LocationResolution.swift */; }; - 03BC4A9B24919C76E85CB50869D47858 /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0B32EA4B7A492EEF26CE260E9AEFA0B /* ConstraintMakerFinalizable.swift */; }; 03D90C831397E8636A33CE557024A136 /* NSMutableAttributedString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = A2C299CFB47AA6ECF86F7348E1EB751F /* NSMutableAttributedString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 040559B03C1A5E027594EAF859293F6C /* DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = B5FCE04EBB553439D1C2BA1001936293 /* DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 04CF747CD2BE5158C1B372F1CC7B5009 /* RDReaderContentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1689173E78766BA24FA271006949DD2 /* RDReaderContentCell.swift */; }; + 055EF156631EA5706DCECFC0F49D9392 /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0B32EA4B7A492EEF26CE260E9AEFA0B /* ConstraintMakerFinalizable.swift */; }; 0561DF6793C8516F469D9813F5CE3211 /* DTCoreTextLayouter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D6DA580F40DF113709E15CF6542A35C /* DTCoreTextLayouter.m */; }; - 062898C7FA5797A1327D7CDDEB000DAA /* RDEPUBReaderController+PublicAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38CC6A6BEE99B6DD8A2CB0C3D94D3C2D /* RDEPUBReaderController+PublicAPI.swift */; }; - 069C5149522B38C8AB7C735FF83EE099 /* DTFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FAB3C7F19A511C2B1B7DFBA3CA308C4 /* DTFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 06DF025C3F6A6A0BAE23D1AA2ACB9BB7 /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A02EA0374C693F881AB36202FB276DCD /* ConstraintView.swift */; }; - 074DAE005137E6E89D69DC0E8765EAB0 /* NSFileWrapper+DTCopying.m in Sources */ = {isa = PBXBuildFile; fileRef = 1756C6FFCA695290BA62DA4E7B6DD20B /* NSFileWrapper+DTCopying.m */; }; - 08742D7AA435FD9CA20294F408FC44AC /* RDEPUBCFIDOMPathBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53FC89DDB339BF2C7F6BEAFEE0097F4 /* RDEPUBCFIDOMPathBuilder.swift */; }; - 08AF1E234EC84C5B105AD119DD68C7C7 /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C647A2EB2720BCBF88B160D124B57BF /* UILayoutSupport+Extensions.swift */; }; - 08D7E5A0D65FAEA0FFE71946A00FFF1E /* RDEPUBChapterWindowSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = F13DE2B771ECF4C1C6DDAC4FCD18CD0A /* RDEPUBChapterWindowSnapshot.swift */; }; - 08F54A15BE50EA69DC223672EC21DC36 /* Archive+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5693BD171B879406EA14C97F4AD8D8 /* Archive+ZIP64.swift */; }; - 093B7188B6717318AD5CD0CBBB6BB1B6 /* RDEPUBRuntimePageCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8A22827641532F651809A316008577 /* RDEPUBRuntimePageCount.swift */; }; - 099FEDF9807830FA98B165701170023D /* RDEPUBAttachmentTooltipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34649E5DA563878B374E0488CF7B450A /* RDEPUBAttachmentTooltipView.swift */; }; + 058883809CB161BCD5DFB310221A5C9E /* RDPlainTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2739EAD69AB2F5F6FA80E254D294440D /* RDPlainTextBookBuilder.swift */; }; + 064481778FF8671650240A03A9371744 /* DTBlockFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 375179DD3A4576CEF947E1760BBDC69B /* DTBlockFunctions.m */; }; + 06BD685726847318A09C9590891CD7ED /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45C7129757B54DFD9E445D0A17D73A83 /* ConstraintPriority.swift */; }; + 0787448DED429142330009FBEEFA6C20 /* RDEPUBPageBreakPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE10A5C6934704218EB16F8966AA0814 /* RDEPUBPageBreakPolicy.swift */; }; + 090F57E692EEA5A8B0FF67920032C543 /* SSAlertCommonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE4EE750340347ED584C5A2C1164331A /* SSAlertCommonView.swift */; }; + 09BD533E8A50F83694A170194678AE8E /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28D62D3200AC3D4E42C81CDFF7E884E8 /* ConstraintItem.swift */; }; + 0AA3A80E4DD1062BA4641DF71F00F773 /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F090A0289338B14050FAF16C22605B0 /* ConstraintConstantTarget.swift */; }; 0AAA5BB1DBF584102B15CF8738F1815E /* NSScanner+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = CA538A48DD3691701EC6B5021D7B7381 /* NSScanner+HTML.m */; }; + 0AAC638E0C699A21D53F86B82546D9B5 /* RDReaderView+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4682C38E0A66C0E9760FC62C00A327 /* RDReaderView+CollectionView.swift */; }; + 0AB5DF1362C7A7A1798E6E453EE48E52 /* DTFolderMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 2101691D5743105B2E3E40376584B91C /* DTFolderMonitor.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0ABC4D62588EABAA636441FD9A82C940 /* CTLineUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = DD58A1908F3C532210EA65ACE410A44D /* CTLineUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B32362B15FCBE685C9515F89022F858 /* UIImage+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 15941683D394FB8D7EAE91CD2CF03FF1 /* UIImage+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0ABC5070A4608ADE7CEEA759C9B5EC82 /* DTSmartPagingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 96EEB6B022E22A4ABC86D87469D4815B /* DTSmartPagingScrollView.m */; }; + 0AC506D604FCC73E73FEABDB9F62984F /* RDEPUBParser+Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DE1D663A9451374F0417DAC8CDAE2BF /* RDEPUBParser+Archive.swift */; }; 0B6FA1F22150D7F8B1865F41FF70C922 /* DTImage+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AB9016408894675D11069CDAACEDE94 /* DTImage+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0CB5057B141757B491EA31E8D6DB33EB /* DTPieProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA1E8494B86FFD79C639DCB8C21E1BB /* DTPieProgressIndicator.m */; }; - 0D92A7F76F994F8709CACA82062165CC /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 53D473C6F07982D3D25781A343EC5A99 /* PrivacyInfo.xcprivacy */; }; - 0E5A4BBE6AEFFCC15F458099FAAA65E7 /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5B34EE2160C27947D1EEFD42184CF5D /* ConstraintLayoutSupportDSL.swift */; }; - 0E7D32BFD4B09BEB911DB10CCD874648 /* UIColor+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EB4A1F095257F5F9410518DCB1053FB /* UIColor+RDEPUB.swift */; }; - 0EC42ADE0B83491854E458B0D00EE49A /* DTBase64Coding.m in Sources */ = {isa = PBXBuildFile; fileRef = 061BD3911E4E530C792E65CED7868C33 /* DTBase64Coding.m */; }; + 0B7603CC7E4C2D7A63E2BB4D1EB1BA71 /* Archive+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A2659DB0685E16ABAE0382F726DA8C8 /* Archive+Helpers.swift */; }; + 0BECE54788017FB1138CAF0006752F85 /* Archive+WritingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98C7359A7C3FC7675FED220200A43A17 /* Archive+WritingDeprecated.swift */; }; + 0E7C316F098CD51BAF6DF9337F4D4FF3 /* RDEPUBPageResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45C2C1DE970403173708119093BE0108 /* RDEPUBPageResolver.swift */; }; + 0E9FF4ED55C539850AA4023C7EF7FC4A /* wxread-replace.css in Resources */ = {isa = PBXBuildFile; fileRef = F81B70DF51F9CD64A7DC5AAF3941F72C /* wxread-replace.css */; }; + 0F0C6DAF9F3854B998337C3A06546C7D /* ZIPFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D927F128EBF26AD2C61FD0E6B6F6F5ED /* ZIPFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0FCBC8C64D8862F2A0E8794EDADDECBD /* UIFont+DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 647FB0C5AAF84C71A7784DD277E48910 /* UIFont+DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; 100BFFBD24F234C095EDB001B8088DB1 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = D1599698B5A62671C488F13E07272B09 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.m */; }; - 108BB5B3F866558C1DA53A5A684A2C9D /* RDEPUBMetadataParseWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBECF99D05CF4651818FB884017A0C69 /* RDEPUBMetadataParseWorker.swift */; }; + 1081E871F8472C4F6FA1190EFC80109D /* RDReaderTapRegionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C1B2F1D8E3F93A60375AA8853FF1842 /* RDReaderTapRegionHandler.swift */; }; 109458F9D48FD4F381F0E40E2DB3D91C /* DTLazyImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = E5F69A1E1260BAD7737BEB533F643A15 /* DTLazyImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 10E2206844CFF1FFD5815CDD1EA2CB5D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - 11154670AA2AB4CC361FB7A3E5D47B2C /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6DB34ACB132E465CDF8191F7DB71EF6 /* ConstraintView+Extensions.swift */; }; + 10FF832A1AF85DA716C94D9E10A85BF3 /* Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C8F0DCEAA5A3DF38C503CA30DC94C1C /* Archive.swift */; }; + 11949D3539DAA668EF241BFCA2817B99 /* RDEPUBPaginator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 766C440DABE7721B3D2CE226D8189551 /* RDEPUBPaginator.swift */; }; 11AB1902A68385851FB81E870991F9A0 /* DTImageTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = FEEB15F87BA6575BBFE1C5FD19B17CD7 /* DTImageTextAttachment.m */; }; 12B4A35B8E40C112E18A7C5511F023E9 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4472755F83C121DE5E1E505D145F6DBE /* CoreText.framework */; }; + 1303874CF4BC7EDF7BAA430702202C9D /* DTCustomColoredAccessory.h in Headers */ = {isa = PBXBuildFile; fileRef = 33DB57DF8C5AE334B1BBE9F989352F1D /* DTCustomColoredAccessory.h */; settings = {ATTRIBUTES = (Public, ); }; }; 130C3A85D9F9F445222C2E31EC245B0A /* NSScanner+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = A0927A875CA1F11DBCE60DFC6F0CA0B6 /* NSScanner+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 13CCBD97D8AF4C50A6888B78325A192B /* RDEPUBTextPageRenderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 839B80DCB8EBDB9BFDEE18C4B160FE81 /* RDEPUBTextPageRenderView.swift */; }; - 146CE7A97D2DAC1A9CB084C0E2ADD67A /* RDEPUBNotePopupCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA7C5D50017972C1AF6905C1B3733B08 /* RDEPUBNotePopupCoordinator.swift */; }; + 1389F2DE24EAF82D9003C16996BB9255 /* Archive+ReadingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 934F9BB2B3A313294F121484C3A97A14 /* Archive+ReadingDeprecated.swift */; }; + 14B212F03E50D9F5D5C9CB9AC1AEB06F /* RDEPUBTextIndexTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89755690B804A64EE69FE2D7321CA9B6 /* RDEPUBTextIndexTable.swift */; }; 14BDD9FB7A7AC5C8ABFF8D24C381F3DA /* NSAttributedString+DTCoreText.m in Sources */ = {isa = PBXBuildFile; fileRef = DBC9280BA00935565E9658775DD7404D /* NSAttributedString+DTCoreText.m */; }; + 1501ABBDADA4CFC28913368EEA52B109 /* UIView+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4219E7C32019899890CAB66E5FBDF524 /* UIView+DTFoundation.m */; }; + 1510A538CB762F72F7990C17EC617299 /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945D4549E0B9168D7DDB910DE874B874 /* Typealiases.swift */; }; 15A7ED15DA03DD3B9F26A017D270D1C2 /* DTCSSListStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = FDD333B409D528E5006FA48F4D70A6F5 /* DTCSSListStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 15E9894983D8DC1E17BDAF2DAA245360 /* RDEPUBWebView+JavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = F661AA03BC0EBFBDBBC00AC38E62EF34 /* RDEPUBWebView+JavaScriptBridge.swift */; }; - 162118890D7B65D3C4E7D257A1C10913 /* RDEPUBReaderHighlightsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98E0E994653153A8BF5451529E78BD86 /* RDEPUBReaderHighlightsViewController.swift */; }; - 16C0E9481964DFB28C80DB847403036A /* RDReaderGestureController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 172DDB09A6DD0C1A92FCD7AF5060B657 /* RDReaderGestureController.swift */; }; - 171DCD68BA95D701F1FBA8F02A865BCE /* RDReaderPreloadController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC2313F8B75FDFEFD0DBDD842F76D012 /* RDReaderPreloadController.swift */; }; - 17254666C151CD8FED29CD9ED51556D8 /* RDEPUBCFIMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 963DB0508456E313DFDD8A01BD92C4AD /* RDEPUBCFIMarkerInjector.swift */; }; - 175182AF75968DA8966AFC28250C3E0F /* NSString+DTURLEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = CB7F3535507F56824BA21509302CF8B3 /* NSString+DTURLEncoding.m */; }; - 1763403B89A04B154B404C19CEBA335F /* DTFoundationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = FD03567681A79FFB6E81B3105503065D /* DTFoundationConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 17B3296FE8254C2D47DFE4FD19949503 /* RDEPUBCFIUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3C14E09958710059E09B6816BC50FF1 /* RDEPUBCFIUtilities.swift */; }; - 187488196599FAE35DE1E51925A0DF6A /* RDEPUBTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80CBF12B91CD7E30B52521195ACD8066 /* RDEPUBTextBookBuilder.swift */; }; - 1908212D1BAB262381AEE80002D1C7FC /* RDEPUBReaderServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = B83D2091A24AC3D4A98E99AD499C381A /* RDEPUBReaderServices.swift */; }; + 1616B926586677612AEF659A23ECCD0D /* wxread-replace-latin.css in Resources */ = {isa = PBXBuildFile; fileRef = 6E7E8438D5E5533B7BE96AC6FA8FD8BD /* wxread-replace-latin.css */; }; + 18798C14A4AF8ACA5A0FDED17DDAF370 /* RDEPUBSemanticMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE0BE26FBA95F74B6173965BEC302EB /* RDEPUBSemanticMarkerInjector.swift */; }; + 1898FECC9A67C5227BF5346B043B1A4C /* RDEPUBReaderSearchBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF6879143052D4942E4FEA0F92504804 /* RDEPUBReaderSearchBarView.swift */; }; 191824B2B1E1B0A7DD3B6298100B4B8A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE4821B98DDE6C71411EC139EC6D2762 /* CoreGraphics.framework */; }; - 194A976E63A09667F53C9FE293F5B8C6 /* RDEPUBChapterCacheKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2205C761CC6E3BD03E29D00247B8017 /* RDEPUBChapterCacheKey.swift */; }; + 19310CB1E02EB814225E353079EF6DBD /* RDReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FE1D4A863768FC78F6B76B6A181267C /* RDReaderView.swift */; }; + 194664799DF7F4D9E2D1F16EADCA0823 /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6BA0ECCB0ACF8580C3B5192CA9F11B /* ConstraintLayoutGuide.swift */; }; 19649ED312D92A6F5D2D6AF4E540CE75 /* DTHorizontalRuleHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = E28CA95D89DBAB2FE56BC8513D5838D7 /* DTHorizontalRuleHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1982F649017D511A11E32DEAC7236CE4 /* RDEPUBNavigationStateMachine.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4AC6CA9870D7941FA2F27711C6038E4 /* RDEPUBNavigationStateMachine.swift */; }; - 1B0EA0C22B5B0469D49C4E19BB68D7DE /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28D62D3200AC3D4E42C81CDFF7E884E8 /* ConstraintItem.swift */; }; - 1B274610DB6E2AABA67FFC50BF1B5BDE /* RDEPUBCFIGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97F7B41CF52C44365ABC89D0081C7DDF /* RDEPUBCFIGenerator.swift */; }; - 1B3D933930FC50612BEEADBB84204EA6 /* RDEPUBChapterSummaryDiskCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 385AC715B035543F28D98F44262302E3 /* RDEPUBChapterSummaryDiskCache.swift */; }; - 1D236F47AD10304D7E61547C956BDD9B /* RDEPUBChapterWindowCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA25825AB5D083AD35744145AF10E718 /* RDEPUBChapterWindowCoordinator.swift */; }; - 1D397699D725D0B63980271F92D9672F /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90D060B1A624B2699F408C993E8C418B /* RDEPUBReaderController+AttachmentTooltip.swift */; }; + 1A3FDFA1A68A13644CB7D7E28066EAA1 /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E5637603691B9B35C2A886B686D3CE7 /* ConstraintViewDSL.swift */; }; + 1BE5D635C9CA65847543497C535CDDD7 /* SSAlertSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 937CEFA81DA4227008DBFB114783A08B /* SSAlertSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C90896663D69FFC15D8EE09ED2789DA /* RDEPUBAttachmentTooltipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D3CFCA211B02F4FB8BEE828C37A318B /* RDEPUBAttachmentTooltipView.swift */; }; + 1D128324740E7CCDDBBA92208805578D /* RDEPUBChapterRuntimeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BCCEDB0636CEB528ED4786686A5767F /* RDEPUBChapterRuntimeStore.swift */; }; + 1D1C0972DCB88C93667236180986F7DA /* RDEPUBCFITextAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 414962A3F7230445216E714935F3C22F /* RDEPUBCFITextAssertion.swift */; }; 1D460603DCA4A4E5ECFE8FF1F1CACC10 /* DTColorFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = AFC4C9F69BF2D0CAEBAA83896C139D2C /* DTColorFunctions.m */; }; - 1D4D78DA0BD6B1928CD54AC5DC82353B /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15EBEFE87571B56DE884F4C60118CE5 /* RDEPUBPageMapReconciliationCoordinator.swift */; }; - 1D5093C35F8EF012FF48FCB91F312F0C /* RDEPUBReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACBDBAB2D4A07BA86ABF3F196E275CD2 /* RDEPUBReaderController.swift */; }; - 1EA6B0C9801AAFE8C4A27717B91E7A7A /* Date+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = F76A97683FB5E8E8B86EA4AD71F6F4B4 /* Date+ZIP.swift */; }; - 1EB37E83C162AEBF22EFA71AECE18298 /* Entry.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDD081272B47A3B73CE693D21DC26827 /* Entry.swift */; }; - 1F89F883CC03311F2801F0B80B3A1CF3 /* RDEPUBParser+TOC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE4E65CBFE33A55487727CE851F95C96 /* RDEPUBParser+TOC.swift */; }; - 1FEEAE25C66FA8EA607876915ADC1830 /* Archive+WritingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98C7359A7C3FC7675FED220200A43A17 /* Archive+WritingDeprecated.swift */; }; - 207D9BDB05964DA9EA4418E83C1530FE /* RDEPUBPageBreakPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2ABBF727ED6EB3FA3EA88597AD35642B /* RDEPUBPageBreakPolicy.swift */; }; - 20EBD9A7748D5BB4D24ACCF08EAEBC17 /* ConstraintDirectionalInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91144FC099DD458E61625CD939577DAA /* ConstraintDirectionalInsets.swift */; }; + 1DA904F591DD5587E18A3958EF462EC9 /* UIApplication+DTNetworkActivity.h in Headers */ = {isa = PBXBuildFile; fileRef = 957DB4675D5CCBD3CB1762F08619F3F7 /* UIApplication+DTNetworkActivity.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1DCBB39D25EBEDB3B18C44EBD601AFA9 /* RDEPUBReaderContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2D39C06DF04E8847916639D58650315 /* RDEPUBReaderContext.swift */; }; + 1DE4CF0A937A4535FAD88245B7B0B577 /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 885653999BD237A574B67DB279DE7E87 /* ConstraintRelatableTarget.swift */; }; + 1E130859A8AB1AE05E4593D519C219A9 /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = C241AD9CEC9D6732CFBA6A55B49E64C9 /* ConstraintInsets.swift */; }; + 1F01823286B1441AD4B9465B923FA9FC /* DTWeakSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = C422BCADBB48E28B549495663705A0FB /* DTWeakSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 212D840F1F1FFA819A65E20B1B3CF7DF /* RDEPUBReaderToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F270A5E6ACC194137AB15688F6F4C759 /* RDEPUBReaderToolView.swift */; }; 2203356EEA94A9172BC7902923E43CBE /* DTCoreTextFontCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B7771FDE9AB1688166584C0AA03F12A /* DTCoreTextFontCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 23AC535B4DC5D8475ED2B1273C501F95 /* RDEPUBChapterData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5EF7020C5BFFD68865D54D1B940E73C /* RDEPUBChapterData.swift */; }; - 23F8E9928335EB706B9D340097111305 /* NSURL+DTComparing.h in Headers */ = {isa = PBXBuildFile; fileRef = 731C0C61E3AD227D691FBA1C2C17BF7B /* NSURL+DTComparing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 221B7E4A6D3AACF716E2830AA77F4163 /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3593ADF561D422F73C8EABAD4A4F440 /* ConstraintRelation.swift */; }; + 2336E3B7C72AB1702DEAA87786A98284 /* DTActivityTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EEFAE80193E1F0DA53400C9AD641410 /* DTActivityTitleView.m */; }; + 23E6664A8F705A42969CC4456211DC37 /* RDEPUBWebViewDebug.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4EDAF459D89DEFB5A597F8278CE222F /* RDEPUBWebViewDebug.swift */; }; 24395BEB3C360D9DA5180BFB955B04A0 /* DTAttributedLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 21BAA93E67D8CBC5297302D798FB4F7A /* DTAttributedLabel.m */; }; 2445709667CB3820E51CD4AA915E6943 /* DTHTMLParserTextNode.h in Headers */ = {isa = PBXBuildFile; fileRef = C30D143134EEC5D4BA99459104B76A2E /* DTHTMLParserTextNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; 24C5B52FD2AA9C49731DC6859ABA7CDE /* NSDictionary+DTCoreText.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C50CAB4241C141EF6EC9ED22AB3A7E8 /* NSDictionary+DTCoreText.m */; }; - 256B83F8FFBB3009C30A49DC549A6EC3 /* RDEPUBTextAnnotationOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E8DDA0C0AF445B5BC5E2B60508BE58 /* RDEPUBTextAnnotationOverlay.swift */; }; - 25D59C50A9C2B60F797B1BFDB50A8AE0 /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6578DFAB51436E8DF266FD087700E26B /* ConstraintDescription.swift */; }; - 25FDC87B68FFF9003A4DDA8C20C9B8D2 /* RDReaderView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F29D75FFF877587EAEA07BBE58C097FB /* RDReaderView-dummy.m */; }; - 26EA72F11D12D8B2990F0EAC76459EA3 /* RDEPUBDarkImageAdjuster.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAA57C95D8912B8505C8DA1AD4B6AC6 /* RDEPUBDarkImageAdjuster.swift */; }; + 255C0D1CD0B98AF28752B5477E33E56C /* SSAlertAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97995C73297871C353364E685939DED9 /* SSAlertAnimationController.swift */; }; + 26918ED45C33C4A0887D6BB4529F7A9E /* RDReaderFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4C4605A9B7326DBE0CED7EB66A7416F /* RDReaderFlowLayout.swift */; }; 270C5C10028F0BC5A62548326CCB379B /* DTColor+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = E196F56E68578181D5BDE787DE5C0F3A /* DTColor+Compatibility.m */; }; - 2744CEF2A6D29AD6AD3B262FE5A17395 /* RDEPUBAnnotationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B888CEDF0E6ECE3807EF95D1BB7D400 /* RDEPUBAnnotationModels.swift */; }; - 2787D611BA02BB3CF87E83D0D576BD1E /* RDEPUBReaderSearchBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F0670803E8267332E1891D6AB6E5A3F /* RDEPUBReaderSearchBarView.swift */; }; - 27A49CAF4369774F8BAFA4829F4DC303 /* Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C8F0DCEAA5A3DF38C503CA30DC94C1C /* Archive.swift */; }; - 27CB714678010A30099E9B7A6A945451 /* RDURLReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEDA10329B118CA762890DD7D8B64C6C /* RDURLReaderController.swift */; }; - 2869C86624156F94B05ABC01C47DA085 /* RDEPUBPublication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34AAF33D5968FF88E52BE323BE82F631 /* RDEPUBPublication.swift */; }; + 2814E48108DD3E83904D5C9318EE89D9 /* RDEPUBFontFallbackResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F9FE9924520900BBDF724D9903C5309 /* RDEPUBFontFallbackResolver.swift */; }; + 28A5B812ECDE6E94D5346EF33AB4908D /* RDEPUBSelectionLoupeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C518633651B8B05BFB5292862EB4B642 /* RDEPUBSelectionLoupeView.swift */; }; 29D9B32DFFC59A157EDEF005DB92A5AC /* DTCoreTextLayoutLine.m in Sources */ = {isa = PBXBuildFile; fileRef = C71D83D6AEF198FA680B8A80BF2D9605 /* DTCoreTextLayoutLine.m */; }; + 2A58CC63B5184D7047EF8794F5FCC014 /* RDEPUBChapterOffsetMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4E89D45F05E7E9797A973AC12579973 /* RDEPUBChapterOffsetMap.swift */; }; 2AAF9361720FC2D8FFCA93B5FAE42019 /* NSMutableString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 31F3F91D5624C451E5D44D85B1DDE7C5 /* NSMutableString+HTML.m */; }; - 2ACF19FB7F905D8831BF3779A1D2E0DC /* NSString+DTFormatNumbers.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA5E519F100582F0D772FCD76125C0 /* NSString+DTFormatNumbers.m */; }; - 2B636C6C8FFECF2614162FD48ED07017 /* DTHTMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FB2B1B0498DCBE7B79BDF49E963E3D /* DTHTMLParser.m */; }; - 2BBF15A41205114D992E57839B93A738 /* RDEPUBViewportTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6886C52EAE45B38A526CD917C8CBFED8 /* RDEPUBViewportTypes.swift */; }; - 2CD768D642EF8DE4EBD5F9D5836FAFD2 /* RDEPUBWebView+Reflowable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E474E1489E80ABDF6B665BEA40856E40 /* RDEPUBWebView+Reflowable.swift */; }; - 2D9711ECF31F92B6344A4B4769E7D18F /* RDReaderView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BF8C1B2C40980FB07D49180D7285667 /* RDReaderView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2DC30426D54A9ACE171812C9B71CAC68 /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7176B677A350927FC670368313DC2CA1 /* ConstraintConfig.swift */; }; - 2E2F479275A0D936C2A1E87C6765A47D /* RDEPUBStyleCompatibilityModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEEE722A6CEB62B173B8C71F0E7336C7 /* RDEPUBStyleCompatibilityModels.swift */; }; - 2F24F22928E575299BF137619DE2C018 /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E8C0D83EB6EDE71B264B6B0DD4644F5 /* LayoutConstraintItem.swift */; }; - 2F4CB2CA3F00A4AAA725F3C17D95D991 /* RDEPUBResourceURLSchemeHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4245A0DA8D1ED324142168C60B775253 /* RDEPUBResourceURLSchemeHandler.swift */; }; + 2ADC21293994C745E3534DCF850B5994 /* RDEPUBModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8421441F10DCB0EDBCF03EAC1018BAD2 /* RDEPUBModels.swift */; }; + 2B4A9056AEC7A8D350EE3CD248F08DE8 /* ConstraintDirectionalInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91144FC099DD458E61625CD939577DAA /* ConstraintDirectionalInsets.swift */; }; + 2B749B511B49409D51CB106A6592D32A /* RDEPUBWebView+Reflowable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F34551B808D265BCB3443EE33D6C1EF4 /* RDEPUBWebView+Reflowable.swift */; }; + 2C1372BF284AB062A1B6B8C026073E73 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD0C3C872488B6341E22BF47B6F9BBD6 /* RDEPUBBuildDiagnosticsReporter.swift */; }; + 2D34BC78BEF8168B26C829D4A4CB0DEE /* RDEPUBStyleCompatibilityModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5077339D9632D68EDAB64BBEF622E154 /* RDEPUBStyleCompatibilityModels.swift */; }; + 2E9A526389D5AED82CEECF4A40CAD66A /* SSAlertPresentAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E481007A8174943868EBC81CF3B04B9F /* SSAlertPresentAnimation.swift */; }; 2FD7360250C2255A80583D4CF518FBFA /* DTTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = F35039A8D0AA1F7BAFC4E5E016057E15 /* DTTextAttachment.m */; }; - 2FE5650E3D74E35D130BD0BAC8C37E5B /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A9A82CB094636AFB53D6D130D6219BA /* ConstraintLayoutGuide+Extensions.swift */; }; - 301B3D81C6A28B5777E01246CD33D13F /* DTSmartPagingScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = D2BA6D5DBD4C6A9285C4592721790A26 /* DTSmartPagingScrollView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3044AAD1DE4C39601994F84CEE57223D /* DTCoreGraphicsUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = A8DFDCAB69B471EB5667C964865C26CF /* DTCoreGraphicsUtils.m */; }; - 307AA99D0BF12F418BB9CA6275F5EFA0 /* DTVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BD9F2023FF826F67E69E3407A70A8A6 /* DTVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2FE74F960A0ACAC1C71ACDC89972E183 /* RDEPUBImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F20E15B3473E29738F2A09C625A687BB /* RDEPUBImageViewController.swift */; }; + 309724DCA5F394FC0187A8EF5094647E /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A027614C026728AE2CA282D837F97936 /* RDEPUBPageMapReconciliationCoordinator.swift */; }; 30C01FE491C26314F776AD8B2AF136FA /* NSAttributedStringRunDelegates.m in Sources */ = {isa = PBXBuildFile; fileRef = E6F2E79CC33E0823C4E719ECDDFBBE08 /* NSAttributedStringRunDelegates.m */; }; - 31936037BAEE5E4BEE51079EBCBE7979 /* DTActivityTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EEFAE80193E1F0DA53400C9AD641410 /* DTActivityTitleView.m */; }; + 31656AC7A50C1938C94131120B77B277 /* RDReaderView-RDReaderViewAssets in Resources */ = {isa = PBXBuildFile; fileRef = 83410CC9CF2ABE63B90A92F2F988BF65 /* RDReaderView-RDReaderViewAssets */; }; + 316654F1450305B61B2FE4F3CEA4543F /* UIImage+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = D85A85D891A320165843EF9F489178F7 /* UIImage+DTFoundation.m */; }; + 31A151A1FC37F975CB9B1880C5816546 /* RDEPUBChapterLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = F60BBDE3C78317A1DF3E2FF97B966899 /* RDEPUBChapterLoader.swift */; }; 31B805C50E0E187E6242B0C878C4D30D /* DTCoreTextMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5D34047BAA894BEF1DFA23E6A9DAB1 /* DTCoreTextMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 31D1715DF1621964DCA8D10501899FF8 /* DTBlockFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 375179DD3A4576CEF947E1760BBDC69B /* DTBlockFunctions.m */; }; - 31E3EDECC6470B4E92C97F58E80965E8 /* RDEPUBChapterTailNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0348219C5299B3BE84133818923C2495 /* RDEPUBChapterTailNormalizer.swift */; }; - 32ACD94F1F25F38FB0D6073734C3436C /* RDEPUBDTCoreTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 902C1572982F594CBCFA71AF8CB6749A /* RDEPUBDTCoreTextRenderer.swift */; }; - 32DC4D93DFCF2924AAF7EF4AD7447DB7 /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50297AAB8278F2BB6FCFE82B20C7A049 /* ConstraintLayoutSupport.swift */; }; - 332B3EE547B4ECCFD2179D50888BDF6A /* RDEPUBReaderSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B19C4570618CC1C8B9E8488EBCD9B0F5 /* RDEPUBReaderSettingsViewController.swift */; }; + 31ECE641ED1AC3888D6C9BB35DFCC7A0 /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5B34EE2160C27947D1EEFD42184CF5D /* ConstraintLayoutSupportDSL.swift */; }; + 3258B5B23366506DD494C46AFB1C84B8 /* NSString+DTFormatNumbers.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D86C7063D1128EAEB3A30EBEF214B3F /* NSString+DTFormatNumbers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32BE965A17859BA8C63263A2674BD0C6 /* RDEPUBReaderTopToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAA89AE50DEA94816C5333CC1325DDA8 /* RDEPUBReaderTopToolView.swift */; }; + 33BF364D51A0EC9CC944BBDDF2AC4065 /* RDEPUBSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD0BB5D8B2ADEBDD25F740A7185B516E /* RDEPUBSearchEngine.swift */; }; 343E794F88AA503F5139C2244DC1A2B1 /* DTTextAttachmentHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = C298199F5DC5390E8B6666F638B34C10 /* DTTextAttachmentHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 34F6005B80DA064C0B099A3288AD95D5 /* RDEPUBSelectionOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB5E488026478CA9CD4FAF23BF378F77 /* RDEPUBSelectionOverlayView.swift */; }; - 35C3A7AAA0BC0F615EF7159D64EB4372 /* DTFolderMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 2101691D5743105B2E3E40376584B91C /* DTFolderMonitor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 350C0168585FC1AD0C216F769FBF709A /* RDEPUBReaderSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FC4B1718DDF94A99192ABD5C1B24DAC /* RDEPUBReaderSettingsViewController.swift */; }; + 3534F4FAFC0636E50CB8D9200515E974 /* RDEPUBChapterData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1AF2749008FE67A3281B83EE327E41D /* RDEPUBChapterData.swift */; }; 35C5BE59CA712CCDF93D6E7010D93883 /* DTAttributedTextContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = C123C127CC539ACCB510F665DB774899 /* DTAttributedTextContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 361AAB8943E201F1BF3256580CA4ACDE /* RDEPUBPresentationRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 033DD9B982E8F1F948C5787EBF92FF84 /* RDEPUBPresentationRuntime.swift */; }; + 36DEB3A282F5A6B8CD1CA2F085B805F5 /* RDEPUBReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CF99F8C8ED42F614BB051509F8E065B /* RDEPUBReaderController.swift */; }; 372E907DF08263D0E1AF904F1FCD66EB /* DTTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D36ED8209C907E3E9B074DDB399F54FF /* DTTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 375E640C8EA1A38D61C1566EE7691017 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B62D239E65A52677A36BA68DB820FEA /* RDEPUBBuildDiagnosticsReporter.swift */; }; + 382D4752DB1D51511A713736629A120B /* RDEPUBCFIMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD2CC39C57A942917B961FC8E73D80F7 /* RDEPUBCFIMap.swift */; }; 389F7C8400F9223C019F2D7825CD2369 /* NSCharacterSet+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 713C9FD0354D16AFCCFA630A97F2DA68 /* NSCharacterSet+HTML.m */; }; - 38B74778B7E961F82ED9083E7BC612DF /* NSString+DTURLEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 31BD7533867336DEA9B835F471767178 /* NSString+DTURLEncoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 38CE5AE7F08F51BCA49E57210C73DD8A /* RDEPUBReaderRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC010729FF0DC7965F4E61FE4B7DAED8 /* RDEPUBReaderRuntime.swift */; }; - 38DA59D7FEE7CE3915421A2AB5AC24A0 /* RDEPUBRenderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44A3A2C05CEC2C66E821919A93A14590 /* RDEPUBRenderRequest.swift */; }; - 3970919FD97D377196BA9EC376C18679 /* RDEPUBCoreTextPageFrameFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 620F6EB9BD2515CCF9666EBD79D1E206 /* RDEPUBCoreTextPageFrameFactory.swift */; }; - 3A3A1DC5BEAF852DDD4816158D34F2C8 /* RDEPUBPageLayoutSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16945B1BA7C2D8D318AA4A97FB53A619 /* RDEPUBPageLayoutSnapshot.swift */; }; - 3C976145343B9E986CF8D88E0D0EF51F /* RDEPUBChapterRuntimeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B72D18F1336296178742C907A3956E45 /* RDEPUBChapterRuntimeStore.swift */; }; + 395F5B39BB0D706C1C461E3C7D6117A6 /* RDEPUBReadingSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 736A135E9B22B812EE7A51484408FDE1 /* RDEPUBReadingSession.swift */; }; + 3A5CC932C1E41AB85D67620EEA2D0BA8 /* Archive+BackingConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61E36C4FE448DDDA03450847FCB785B6 /* Archive+BackingConfiguration.swift */; }; + 3B60579AE4F0DAF5C15349148708AEF3 /* DTLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A1EBB9497F4846C84CA0BF5E4F84FC7 /* DTLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C37CBADF5A9D153099D9DD26851B012 /* cssInjector.js in Resources */ = {isa = PBXBuildFile; fileRef = ECBE8305E343FF00B5DDF4F8F9D18623 /* cssInjector.js */; }; + 3D8657B60B919094A50D9CE9A5F454A4 /* RDEPUBReaderAnnotationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 174A6B5E9BDD0636D95688D70EEEF226 /* RDEPUBReaderAnnotationCoordinator.swift */; }; 3DC8F9474FC6A0BB7E81A703CE958966 /* NSAttributedString+DTDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 71E2D85A099C99CD82FD1842EE7C52D2 /* NSAttributedString+DTDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3DDC7432B3FE5E5A9B1A42256329F234 /* RDEPUBParser+Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = F53F2F0463AC1292BFE9AFE159F8016F /* RDEPUBParser+Resources.swift */; }; - 3FB97DCC2725FEDD8D19633B8C363F4B /* Archive+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A2659DB0685E16ABAE0382F726DA8C8 /* Archive+Helpers.swift */; }; - 40221D5B7717ED1BE8F6AC59EC9F3CEC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - 40BFADA4560F1139652A89FA86489ABE /* SSAlertSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DE4FA5133891593CB45AF36B8EBF60C /* SSAlertSwift-dummy.m */; }; - 418D49534E919DB3A6D1285C6550DF52 /* RDEPUBReaderDependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 744C73D1186E82ACC4BDB4FBB30CFACE /* RDEPUBReaderDependencies.swift */; }; - 4287D10B8D0884C63F409C49114962DC /* RDEPUBPageCountCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = E05401D6B263F054E8B15A3B594BC5A5 /* RDEPUBPageCountCache.swift */; }; - 42CC3E0AE7FD1C91407FA62F312257D0 /* RDEPUBWebDecorationOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CF30C46F1B4F469D06B27690215880A /* RDEPUBWebDecorationOverlayView.swift */; }; + 3DFAACFD146FD0704B2D180361A1885F /* RDEPUBReaderController+RuntimeBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80F37ED477F71A78A2658E146A2A5CB3 /* RDEPUBReaderController+RuntimeBridge.swift */; }; + 404A17D320743603ED7F97AEBB655C1A /* RDEPUBTextPaginationSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78C97EDF23543CE63904C4D8A066A7A1 /* RDEPUBTextPaginationSupport.swift */; }; + 406988E005ADB31DF5140AA2018B3C7C /* DTTiledLayerWithoutFade.h in Headers */ = {isa = PBXBuildFile; fileRef = DF5EDCA3B21964D0462BE0982E2F0BF8 /* DTTiledLayerWithoutFade.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 41461DCE168703F25B2447BCA1B4AF2F /* RDEPUBSelectionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66EEA7DA60C7DCD504C673D6CF9B74FC /* RDEPUBSelectionState.swift */; }; + 4216E83BBAC1EDC764B64A7959687531 /* DTExtendedFileAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 538572A5C098252D629F2185F1B1C9E8 /* DTExtendedFileAttributes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 432C14A294814368D5984610B27E43C4 /* RDEPUBReaderPersistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FADF7F2A0784AA8BE178F33CACE42C9 /* RDEPUBReaderPersistence.swift */; }; + 4340432D9A9490D9CF9BC31F6B50B2F2 /* wxread-default.css in Resources */ = {isa = PBXBuildFile; fileRef = 0D253DF65322509913DE34899979C30B /* wxread-default.css */; }; + 437298A17902FD1B6BCD2E4FE084DDC2 /* RDEPUBNavigationStateMachine.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3CE87842A4B39DB8691712AEC0E5FD /* RDEPUBNavigationStateMachine.swift */; }; + 43C4F3118715BCDB6941E2FDD47536AE /* RDEPUBTextBookModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F34FF3B7E71CCE4E9C73115AA710B1C /* RDEPUBTextBookModels.swift */; }; + 44199BE5D667C171C4A97EF5D7908D3C /* RDEPUBTextPageDecorationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C89744F4424D96B176330404D1D82C7 /* RDEPUBTextPageDecorationView.swift */; }; + 446FDD2DE47E045F80C995422F12224C /* NSArray+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = CEA93EDA6ED54D374265AA5D6B9EBBA9 /* NSArray+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4479AD171E4AD6640B04604493ED0A3C /* NSString+DTPaths.m in Sources */ = {isa = PBXBuildFile; fileRef = A3565FEE19F19CB43A43409AFFF2BD2C /* NSString+DTPaths.m */; }; 44B1FBF893C06F314F8C9BD1405897D8 /* DTCoreTextGlyphRun.m in Sources */ = {isa = PBXBuildFile; fileRef = 36FCB869246FE45FD1C9609A34EB4E74 /* DTCoreTextGlyphRun.m */; }; 45133E47CC5FBCF78BFCD38981BA027F /* DTDictationPlaceholderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 982391EC8620A617B8788C8A6101C96A /* DTDictationPlaceholderView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 455B57E7D4F7025BCAA9686237ECE4D6 /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83FE23C4421208A77C790E396C2391EC /* RDEPUBAttachmentTooltipOverlayView.swift */; }; - 4586631E0F11BDF2C667A8DAB6E33D7C /* Archive+ReadingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 934F9BB2B3A313294F121484C3A97A14 /* Archive+ReadingDeprecated.swift */; }; + 455DDDB5ED14B07E3E178FCD46B6D6B8 /* RDReaderViewProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1058DD74F97F43193DBA11E135ACFF22 /* RDReaderViewProtocols.swift */; }; 45F90B98546FDBA03AB112DFE859A185 /* DTCSSStylesheet.m in Sources */ = {isa = PBXBuildFile; fileRef = E0D90EB06FC37D534934542F9CAB1D74 /* DTCSSStylesheet.m */; }; - 463882F4C6BCD5B6329CEC1CAADADD0A /* RDEPUBParser+Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEEA0316D9580EFCF73105A138F13E33 /* RDEPUBParser+Package.swift */; }; - 46489255286B880DBCB326C15E0058BF /* RDReaderView-RDReaderViewAssets in Resources */ = {isa = PBXBuildFile; fileRef = 83410CC9CF2ABE63B90A92F2F988BF65 /* RDReaderView-RDReaderViewAssets */; }; + 4617A3DACB97ECC22D8F2989294DB7CF /* DTSmartPagingScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = D2BA6D5DBD4C6A9285C4592721790A26 /* DTSmartPagingScrollView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 468A2F854012BBA18B8CC0458FC89B3F /* Entry.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDD081272B47A3B73CE693D21DC26827 /* Entry.swift */; }; + 46BC83888CC2216F28287B7FA1E81136 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0595FF1B5274FDF6F9143B6F7FA18D61 /* RDEPUBReaderController+AttachmentTooltip.swift */; }; 46EF32D586FF590CE2C60C66364B9357 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */; }; - 4722E3071B57E0DF9CB521EC230360E3 /* RDEPUBWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC162013E2626B2489739C731077B43C /* RDEPUBWebView.swift */; }; - 475B19074137EFDA4106EBCCCF36FC6F /* RDEPUBParser+ReadingProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76610C58FDE0133C7B8E5E15CD84C663 /* RDEPUBParser+ReadingProfile.swift */; }; - 47DC0686898DE2FE0A1603ED796362B7 /* RDReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F20C5D28C46992997B5F00839C906E95 /* RDReaderView.swift */; }; - 48B88876F05C31838B1F49392467CD64 /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6BA0ECCB0ACF8580C3B5192CA9F11B /* ConstraintLayoutGuide.swift */; }; + 475A20655711B38721CA7D0F558DB434 /* RDEPUBReaderLoadCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F058E473114A5A8FE875FD5ABBE02F5E /* RDEPUBReaderLoadCoordinator.swift */; }; + 491EFCE38A3F50F71087473BE0421212 /* RDEPUBChapterLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41EB07D58D668A3EE943B8A619CF70E7 /* RDEPUBChapterLocation.swift */; }; + 49493EF208D8B0FD2F8D7FE4B0605F59 /* RDEPUBSelectionOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F8D349DB593AF848B64723FBF1DF717 /* RDEPUBSelectionOverlayView.swift */; }; + 4975956E880208083B5F22F8B5BB2BB3 /* RDEPUBNoteResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8C6B44716EC22054F92F4ED84DA6A85 /* RDEPUBNoteResolver.swift */; }; + 4A09AA29561E2A2483171BE5F449E451 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; 4A13B4E5EA8616A8F09D90BC6EAEEA64 /* CTLineUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D24FE8634A7AD2562DB8ADB9D4BBB36A /* CTLineUtils.m */; }; - 4AFFC3A7A62BC90E2BBD7529AE89CD36 /* RDEPUBHTMLNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46B833FD47EDD18F132A4F3DABFD3E55 /* RDEPUBHTMLNormalizer.swift */; }; - 4B640F3B02D43DE8B78B644E0A95449A /* RDEPUBParser+Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ABD098B435C30F2039019D7646E87ED /* RDEPUBParser+Archive.swift */; }; + 4A891B04317BB3931238875910CE7772 /* ZIPFoundation-ZIPFoundation_Privacy in Resources */ = {isa = PBXBuildFile; fileRef = CA4A114775B98CEA4A566C18123B145F /* ZIPFoundation-ZIPFoundation_Privacy */; }; + 4AAD976AEFCB0BCC55B8585323321885 /* RDEPUBChapterDataCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9FD96F86CD108FB55F99EDCC82B3771 /* RDEPUBChapterDataCache.swift */; }; + 4ACCCA93DA06B2666E192996213E0B0B /* NSString+DTFormatNumbers.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA5E519F100582F0D772FCD76125C0 /* NSString+DTFormatNumbers.m */; }; + 4B5274DA733FBDE60596AEF43A61320E /* DTVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AF6156128A1A0CA24D9D06E346B9445 /* DTVersion.m */; }; + 4C17BB41AB2B816631F9477DCA0AAB7E /* RDReaderView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D28F67E16027AF4FA4F9D501C4D0712 /* RDReaderView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4DA6EC46F8968265B96C6D7B2260C4E5 /* DTTextBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = ADC5AC8FD4EC45E9BA5654A38715BB93 /* DTTextBlock.m */; }; 4E4939F6592B06D2CA764DCACFB47871 /* NSString+Paragraphs.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E37DC74BB53F90A5AD54842858A62F /* NSString+Paragraphs.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4E66B9A8089866D932E7127403C0DC52 /* RDEPUBChapterCacheKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = B84FD477EF687A49F011E7FA557C1791 /* RDEPUBChapterCacheKey.swift */; }; 4F50C703427747B88405080B221349A1 /* DTLinkButton.h in Headers */ = {isa = PBXBuildFile; fileRef = D7B5E61166782ED8D585D4FCEE2074DB /* DTLinkButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 500F1BD399C196CDACC137DCD7D53541 /* RDReaderView+PageCurl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77E36CB709B0609F38B9C5F40B7A18C0 /* RDReaderView+PageCurl.swift */; }; + 502C53D46B40E13673AB6F26044BE287 /* RDEPUBCFIResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = A24AB4F9BE6993854E38FD95A30B9845 /* RDEPUBCFIResolver.swift */; }; 5065D99E1588E8CC60677E74916A5C03 /* DTAttributedTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E1F63A854BBF28E93AC1D3F71CD48CBE /* DTAttributedTextCell.m */; }; - 50E6F4B858B375E9AA9C0307C166513F /* RDEPUBCFIPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = F25A8801661F7DE4DEAC12BE1F80C332 /* RDEPUBCFIPath.swift */; }; - 5130C9666BA0D9DACF1D4017B6E94D96 /* RDEPUBReaderController+ContentDelegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EFA16D97F8CC8E61C22F3CEF546EAA3 /* RDEPUBReaderController+ContentDelegates.swift */; }; + 50FBFEC57DA9CC749DA0D1E8B2B75F7C /* NSDictionary+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = C18480913E002315E3F5EC6945371697 /* NSDictionary+DTError.m */; }; + 51287FBF548A17A568489D31DA8947FD /* DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = B5FCE04EBB553439D1C2BA1001936293 /* DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5152CE03325B9F978C9C5326A45A9DA6 /* DTPieProgressIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B443D035BA5652B03A41BE905C5AC17 /* DTPieProgressIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; 51A1B5800D23C355B1712E8D1103780C /* DTTextBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = D497C3CA364E37DAAFF2C3B90CC7DBE8 /* DTTextBlock.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 51BE76461ABF61F23EF33C7806706720 /* NSURL+DTAppLinks.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D36F7CDCD7D5788CDCB3A1421DB242B /* NSURL+DTAppLinks.m */; }; + 51EA2808E014EFABCFD4AF05C3CC153F /* RDEPUBWebDecorationOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9551DE4A9087AF37320340372B24F7CA /* RDEPUBWebDecorationOverlayView.swift */; }; + 526BC0691731F81C69DB9755158CB9EF /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A9A82CB094636AFB53D6D130D6219BA /* ConstraintLayoutGuide+Extensions.swift */; }; 528DBAC7FCEFC7D6575C1F6CB4399AEA /* DTStylesheetHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 96FA99AA7D4AD0D4246C8DAC1CC0C24E /* DTStylesheetHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 539FF993AAAE6D3C0F5D0038DB1E0673 /* Archive+MemoryFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 174FC0CA05D20BB995E211DE5A0857DB /* Archive+MemoryFile.swift */; }; - 53AA94D0D8A26ADEA82DF5FF5A984948 /* RDEPUBStyleSheetComposer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A0A410374DBCE1B5533846F0BCBC36C /* RDEPUBStyleSheetComposer.swift */; }; - 54E64A136D38FA0FD478BD00E3783754 /* RDEPUBReaderViewportMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C18CB52F788E649EF3C7AA2AC11100A4 /* RDEPUBReaderViewportMonitor.swift */; }; + 537A4BFAF3D622FCB0C3A31B71F0D8C0 /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7176B677A350927FC670368313DC2CA1 /* ConstraintConfig.swift */; }; + 53E23429B7E072BE1D580C47944785A3 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */; }; + 5462A8578E68D9DA6636976F732133F8 /* DTHTMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FB2B1B0498DCBE7B79BDF49E963E3D /* DTHTMLParser.m */; }; + 5476A8BC3143ABF3716F21AF18C67ECB /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 392A75EAF280876545D14AA00517BA4C /* ConstraintMakerEditable.swift */; }; + 54A90EEE707DC23289088EDEF91F543C /* NSURL+DTComparing.h in Headers */ = {isa = PBXBuildFile; fileRef = 731C0C61E3AD227D691FBA1C2C17BF7B /* NSURL+DTComparing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 552386640F85BA29D72638B3652F87EE /* RDURLReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEA02BC05A988384DC4551B451ED1E7E /* RDURLReaderController.swift */; }; 5582735073EBB9F5078E6E8AEEFB646A /* DTCoreTextLayoutLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 64AB89EAB10148C39B726B26BE04F4F8 /* DTCoreTextLayoutLine.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 55A24FCD955BEC5081C3AB397905B17C /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F950CEF31AC0065C0BEAB26BA2CEFA1 /* ConstraintOffsetTarget.swift */; }; + 55E455C9B7A3ED583443CDE8E668163B /* RDEPUBReaderState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16A3654E9B076CBACAB460CDD311C9B6 /* RDEPUBReaderState.swift */; }; + 55F4D3C5BE4D81A6A193E0799AF0834E /* RDEPUBMetadataParseCancellationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F3F0149FB61996B3FFFD4771F697189 /* RDEPUBMetadataParseCancellationController.swift */; }; + 56D49829FADCD7075A95452CD3D193B2 /* RDEPUBTextPositionConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A971ECCC1DDFDE6D5417E949E3B1FD2 /* RDEPUBTextPositionConverter.swift */; }; + 57429646273801FBDE2E8306B96D9415 /* RDEPUBPublication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AC8A746E7DE5FC77159ABF4085CAC7 /* RDEPUBPublication.swift */; }; 57D5228C8A85628772D4D78E7FBEAF3C /* DTDictationPlaceholderTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 477A0FC2A1F0B7F7CCF72D201ECEBAB0 /* DTDictationPlaceholderTextAttachment.m */; }; - 57F03CA9FCCEFDCB22586C14B9D81E35 /* RDEPUBWebView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5687CEB04DF925FAE0FC801EFA943FD8 /* RDEPUBWebView+Configuration.swift */; }; - 587C85989F02ACED1B59047E57DD68A7 /* RDReaderSpreadResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F439346FABB45D193709E61E908A616 /* RDReaderSpreadResolver.swift */; }; + 57DD3A0EBB0E32B4D804E8D49FE99001 /* RDEPUBDarkImageAdjuster.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1AE55A8C17840C96761BE01A89653E /* RDEPUBDarkImageAdjuster.swift */; }; + 58445DE0477FD63B598AD8785C45DD1F /* RDEPUBCFICompatibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9688BB6F63743F17F842CE97BCF847C /* RDEPUBCFICompatibility.swift */; }; + 587D6FEA096B959DB159958EA85DE7AA /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A02EA0374C693F881AB36202FB276DCD /* ConstraintView.swift */; }; + 58DF82D5893CEB68C83816F91A3587AA /* DTFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FAB3C7F19A511C2B1B7DFBA3CA308C4 /* DTFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 597DE4CDF5C674E269F03F6AA0AFFCC1 /* NSAttributedString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 92460D196C5300656C9649784EBD3C58 /* NSAttributedString+HTML.m */; }; - 59BFBA6A99843138AE3FAD9B61093B4C /* DTBase64Coding.h in Headers */ = {isa = PBXBuildFile; fileRef = B8E40E302B85493BDE0FE91F829EC01E /* DTBase64Coding.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5A4C8D7A61A831DFE6191CE9EE8FC0FF /* RDEPUBCFIMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84432C44761FA9535E1C1C00A97581F8 /* RDEPUBCFIMap.swift */; }; - 5B2118C44FFE62D2001AFA9857425C8F /* RDEPUBTextRendererSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523B2C383DBC263294C404FA85A5DE82 /* RDEPUBTextRendererSupport.swift */; }; - 5BDB7BAE4BE48E109F955C3497E31026 /* RDEPUBReadingLocationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13DBC142B0461E436AACC85794DA80D0 /* RDEPUBReadingLocationModels.swift */; }; - 5C6705569165F0E5D806396692FD8953 /* RDEPUBWebViewDebug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269D68D156A9D97C9C623160D509981D /* RDEPUBWebViewDebug.swift */; }; - 5C6C440EBBA7062516303A3D7AF1001A /* RDEPUBChapterLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 167AF6E907DF607CF1D5F5B0FA05B565 /* RDEPUBChapterLocation.swift */; }; - 5CA39C9A333268929BA1DDE1254ADD9A /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD768C27E392C934C06DFB4AC401037C /* ConstraintMakerRelatable.swift */; }; + 5AB50C364F62809013394E49588190C8 /* RDEPUBDTCoreTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E160FF00EF4B6DB318FEDCD72A026F3 /* RDEPUBDTCoreTextRenderer.swift */; }; + 5BC03D1F8B6ED13FB6EE44A06D5B56F8 /* DTFolderMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = B245F7E143F3091652C64F6593E33F7A /* DTFolderMonitor.m */; }; + 5C5E3146F1526E09C1F510BD514D8A65 /* RDEPUBCFIGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0524B881754B1D6EBC90981B8760C6B7 /* RDEPUBCFIGenerator.swift */; }; + 5CCD132DD04800227A43A475DAE36FEF /* RDEPUBReadingLocationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5077CB33FD2EA6584AF290C95617DC0 /* RDEPUBReadingLocationModels.swift */; }; 5D03A5B9DC067875CFEC9D4EA7B059E8 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = D863AE4F659A0F71B22DC9FF334DDF4E /* DTCoreTextLayoutFrameAccessibilityElementGenerator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5D52B44C0898B6A4860C9EE59DA59ED4 /* RDEPUBReaderSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 010BA37F9FCB8C9AF363CC966A76A455 /* RDEPUBReaderSettings.swift */; }; - 5D5FDFA60EDACF69E7CE113BB41859E9 /* UIApplication+DTNetworkActivity.h in Headers */ = {isa = PBXBuildFile; fileRef = 957DB4675D5CCBD3CB1762F08619F3F7 /* UIApplication+DTNetworkActivity.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5D8D65121E87E419D8D2F23F8AF43673 /* DTColor+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 80B3D15ED0D19D020663EF055386291A /* DTColor+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5E1420A9BFA59300AAA3F5ADC85B651A /* SSAlertDefaultAnmation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81B8F42440B802E6EC2B1FF7E3022F3A /* SSAlertDefaultAnmation.swift */; }; + 5E58335E84B16D33094CBE684E8065FC /* RDEPUBPageCountCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D58FC9E6A5173BAA575CE45D07134D0 /* RDEPUBPageCountCache.swift */; }; 5E90EBD876ED4E50AB890FB56C4BFA57 /* DTHTMLParserNode.h in Headers */ = {isa = PBXBuildFile; fileRef = C8343CDCF82729A8EBCCA37A6650E34F /* DTHTMLParserNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5EBCD616AF7BB46CB2CC43B5736F94A1 /* RDEPUBResourceResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = D24D7F3F52B5BE585E06538DBA3CD6F7 /* RDEPUBResourceResolver.swift */; }; - 5EC18CDFDFBA1F4F0E3357D8079F68D4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - 5EC723A8387A3F88A30A25863FFBA52F /* DTFolderMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = B245F7E143F3091652C64F6593E33F7A /* DTFolderMonitor.m */; }; - 60290057447E24C8AE5CAE49B2B628F8 /* RDEPUBNoteResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1A5E5B0F978E87E788096796E498EE1 /* RDEPUBNoteResolver.swift */; }; + 5EE0E6A4CE24D4F834E95A41DEE57121 /* DTCoreGraphicsUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = A8DFDCAB69B471EB5667C964865C26CF /* DTCoreGraphicsUtils.m */; }; + 5EF61759B9D9C035F921104933AEE7B5 /* RDEPUBCoreTextPageFrameFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81211446372A6A55789AA7E7152E7084 /* RDEPUBCoreTextPageFrameFactory.swift */; }; + 5FA01E9E77A69E8AB98EAD70E51A0FCC /* RDEPUBCSSCompatibilityLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30EE98BBC2688DFF0B50F9C417007886 /* RDEPUBCSSCompatibilityLayer.swift */; }; 60532A2E06CCFF814933D2FAE6793AE9 /* DTCoreTextLayouter.h in Headers */ = {isa = PBXBuildFile; fileRef = C26DBE1150BC9A30B69839783E000358 /* DTCoreTextLayouter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6143B5040E1B4A7149C35447B8DE2CD0 /* RDEPUBReaderState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FDBB942C7F43B24B5A42E6837AE5A80 /* RDEPUBReaderState.swift */; }; - 614F13CF514CEAEAE30F07B22E58DDA5 /* RDEPUBTextSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7DF49DAD850A270AF8E92ED70F66184 /* RDEPUBTextSearchEngine.swift */; }; + 60DEFF3031960C170BD930117DDBFDE7 /* RDEPUBParser+TOC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67E71F44D9FE962AA1D19EB945E7E657 /* RDEPUBParser+TOC.swift */; }; + 60E8ADC216658A673DEF71C298CAE616 /* NSURL+DTAppLinks.h in Headers */ = {isa = PBXBuildFile; fileRef = 557DA029E15EC99631B647AE8922007F /* NSURL+DTAppLinks.h */; settings = {ATTRIBUTES = (Public, ); }; }; 61BE3607EABD2657BC71AF8ACB1C25D4 /* DTHTMLAttributedStringBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B59C9A1B265393E4BA8383B308A5917 /* DTHTMLAttributedStringBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61D7D7C7063E2E3F3EFBEA67343D5BC1 /* RDEPUBReaderTopToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD88D55D7F7F1667E4466071F740A3C9 /* RDEPUBReaderTopToolView.swift */; }; - 622B1B472DED191F34262A04CE05DD83 /* DTCustomColoredAccessory.h in Headers */ = {isa = PBXBuildFile; fileRef = 33DB57DF8C5AE334B1BBE9F989352F1D /* DTCustomColoredAccessory.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 622E2F71BD252D844AC6838D3B58CB84 /* cssInjector.js in Resources */ = {isa = PBXBuildFile; fileRef = DAB14DCFE26C506AB370FDEE79883AE8 /* cssInjector.js */; }; - 62D144BF0E62D22C5C0C8C4F2F80342F /* RDEPUBBackgroundPriorityPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B092BF12D8045E3C72C39C19010E067F /* RDEPUBBackgroundPriorityPolicy.swift */; }; - 651E573C03B07E8930AE7A3E61A5C5A3 /* RDReaderPagingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C24BD0148D661DA92DCD300C67D590D /* RDReaderPagingController.swift */; }; - 653FF238952AF22C828EFD68EA3A2BBE /* NSURL+DTComparing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BFCAC7C2AEA867E67C63A852576774F /* NSURL+DTComparing.m */; }; - 6576F9624F055FF3E27A20613FBF8EAF /* UIApplication+DTNetworkActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 77213203802F44012346181FED2856F9 /* UIApplication+DTNetworkActivity.m */; }; + 6321BE6DE0C6F2AC7D53FE5BEABD4F83 /* RDEPUBParser+Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA89765B94A26A186DC7829FF979DBC3 /* RDEPUBParser+Package.swift */; }; + 63ABC14E426657DEAF0A5309CDC81A48 /* RDEPUBPaginationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14DBB472BDBF872F8A5C3A7460B17A31 /* RDEPUBPaginationState.swift */; }; + 63B386907330D3174C4354A68F5BB911 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA55250015C69FA24DCF3808A74ACA5 /* RDEPUBTextContentInteractionCoordinator.swift */; }; + 63BD507DCFB9657844C5822E2BD7C72E /* RDEPUBReaderLocationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A138DB38231B185E189787D33D3B4950 /* RDEPUBReaderLocationCoordinator.swift */; }; + 63E3F3AA068ADE79B61FA2B9682F03ED /* RDEPUBChapterTailNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A8597AE94ED09E9828E2EEA0D8FFFA /* RDEPUBChapterTailNormalizer.swift */; }; + 643C97526CC9533DCA363EB5704559FB /* RDEPUBReaderServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F07C9C63CCAC0DAFE81B6A625199293 /* RDEPUBReaderServices.swift */; }; + 64EA4D70BFC27B08051A38CFD34E9EEB /* rangy-serializer.js in Resources */ = {isa = PBXBuildFile; fileRef = 25E8E62C9DC0A4AE49F168F04CF8B9D3 /* rangy-serializer.js */; }; + 65AA4E5DD815EA54256EB4F859B2CBE1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; + 65C27A19D68F8932FDDC9DEE58D392FF /* UIView+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 79A77584AB3B92B2508AE0BCFCB8FD87 /* UIView+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6634D568E49F5610242E1454680E5885 /* NSAttributedString+SmallCaps.h in Headers */ = {isa = PBXBuildFile; fileRef = DD189DA6054AAE2242F6644A2623B50E /* NSAttributedString+SmallCaps.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 663A22A63DF740DE2DDD9F94FBCDED1B /* SSAlertDefaultAnmation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81B8F42440B802E6EC2B1FF7E3022F3A /* SSAlertDefaultAnmation.swift */; }; - 665EE2D835C5DF71A6A4FFA82994C388 /* DTFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FCC718115E5C31C88A680522AE36B089 /* DTFoundation-dummy.m */; }; - 66CA591CC2C5DDEB9F10DF6201AC73E2 /* RDEPUBReadingSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 236E0B22C7FAE0F5E5BC44A2D1C4726B /* RDEPUBReadingSession.swift */; }; + 6795652F3E65BD7FB9B422F192768372 /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32A5ABB8F3656A110B955B0306E9A8C3 /* ConstraintInsetTarget.swift */; }; 67AE2AC8D9B961D45871077774E11FD3 /* DTObjectTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 073A7F9DF1A554BD1B324EA9E0090E91 /* DTObjectTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 67E3C97E134504F622FB9E68D5647BF2 /* RDEPUBTextContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 995FB0A24F88A5F7204BDE00B97BF00C /* RDEPUBTextContentView.swift */; }; - 682C728128E3E53A525D713B9123F6B2 /* ZIPFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A06A36ADBE678DB44158D32E751FAFF /* ZIPFoundation-dummy.m */; }; - 687C9429B0D64C0F4BA4C79242D42E66 /* NSString+DTPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = FC5EC7C3D1808C9CF53354D7A3D69EE7 /* NSString+DTPaths.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 68CBC6AA38AD3DB5067BEFF8E42886D0 /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 885653999BD237A574B67DB279DE7E87 /* ConstraintRelatableTarget.swift */; }; + 6840A456B0498FA5A20F9F1713E21479 /* RDEPUBNoteModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A2A285973A8C8A81A03D472845DA414 /* RDEPUBNoteModels.swift */; }; + 68C89390714FFBFDFCFD1248A346E8E8 /* RDEPUBNoteDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D0C0A9C17CB99D2B116A2E6450CE89D /* RDEPUBNoteDetector.swift */; }; 69674FEA70899F07BE6098AAEC849978 /* DTAccessibilityViewProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 43CFADE0F46014990052AD67F17C86FF /* DTAccessibilityViewProxy.m */; }; - 69D8C5CBC71777316973C43255140F0B /* default.css in Resources */ = {isa = PBXBuildFile; fileRef = 05D57D16346FAF830F1F82067307EA9F /* default.css */; }; - 6AC430FFDF68F98357C898D6858904DB /* DTSmartPagingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 96EEB6B022E22A4ABC86D87469D4815B /* DTSmartPagingScrollView.m */; }; - 6CAB0255B42E803CEB8C200E106583F2 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0EBAC7714A5F73B75AAB47D24B08B71 /* Constraint.swift */; }; - 6D4D2109A2EAD67D4A9C158FD694F0ED /* RDEPUBSearchModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96E5EDA71849C1703A80094A7160A3D2 /* RDEPUBSearchModels.swift */; }; - 6DB057884F6AC5E5F0DB8664760A0C70 /* RDEPUBCFITextAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = A974D11C3D99A37FECDAB079565A275F /* RDEPUBCFITextAssertion.swift */; }; + 6B574191C6DBFD6A34B1F5850E599DBB /* RDEPUBReaderController+TableOfContents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E01ED3AA3B7599EB648D7BD507B4D92 /* RDEPUBReaderController+TableOfContents.swift */; }; + 6BADF8A33B372ECD3F1A335EA4A22C07 /* RDEPUBSearchModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3207A69E5A8BC344BDC277A8BEA51979 /* RDEPUBSearchModels.swift */; }; + 6C5BB6C686AF9EAAA7934C9F45648A4F /* RDEPUBRenderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46B85AED3D53815F95E435FA3529141C /* RDEPUBRenderRequest.swift */; }; + 6C762AFC299FFD839633723E95F3524D /* rangy-core.js in Resources */ = {isa = PBXBuildFile; fileRef = 8F9C05A5DE7C804D6531F4BBF31A3045 /* rangy-core.js */; }; 6E3D0FDD78ECC20F4B3697ED21D64224 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C2B218B5EAA5831A036BBF7E1EFC1B9 /* MediaPlayer.framework */; }; - 6E703383272C4AC66B55E946FB0F9E57 /* RDEPUBSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2DA7CBEF685373784172A46130ECE9 /* RDEPUBSearchEngine.swift */; }; - 6EE3C48B9A280E4DFD4D8E7A85B7DB02 /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45C7129757B54DFD9E445D0A17D73A83 /* ConstraintPriority.swift */; }; - 6F5B28572DAF44B005898C57F42B2DED /* NSURL+DTAppLinks.h in Headers */ = {isa = PBXBuildFile; fileRef = 557DA029E15EC99631B647AE8922007F /* NSURL+DTAppLinks.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6E7463B2C7BE39639F53BF3B9171750E /* RDEPUBReaderController+ExternalLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EBAE1E92B0DEECFFA57D82DC828AB30 /* RDEPUBReaderController+ExternalLinks.swift */; }; 6FA0125F16DDEDAD341DB75DEB084F4B /* DTHTMLWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = E16D20FA492E085BD0871B107B3077B7 /* DTHTMLWriter.m */; }; 7027EF8D77D4082C1BB9B80FF61FCADC /* DTCoreTextLayoutFrame+Cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 28043173CA3B3787DC401ACEB5398108 /* DTCoreTextLayoutFrame+Cursor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 706B5BEE0D5AD080E9A835105AD37405 /* RDEPUBReaderBottomToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62CA2B8137FC8E99994C84CF0B18EBD1 /* RDEPUBReaderBottomToolView.swift */; }; - 710ABD1A096056EFC2A092E018DB1BA8 /* wxread-replace-latin.css in Resources */ = {isa = PBXBuildFile; fileRef = 6F768932648B61D9731F923A824F7617 /* wxread-replace-latin.css */; }; - 71154B7C21DE7DF8DD200B3C7CEA4ED8 /* RDEPUBTextPerformanceSampler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DD02085DF060BFA07C4C65AC0F9ADAE /* RDEPUBTextPerformanceSampler.swift */; }; - 717AD0B57C4143CBBDB3FBA66DB48837 /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60657D08CCDB38BFED30BD40F4720CE4 /* ConstraintMaker.swift */; }; - 7257D4B97C3B2C046A950B54C6AD31FB /* SSAlertCommonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE4EE750340347ED584C5A2C1164331A /* SSAlertCommonView.swift */; }; - 72AB99A1D05F6F5840DF1FD72BA3D54A /* RDEPUBReaderPersistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4517A0658C991352A0B5ED4B851CED2 /* RDEPUBReaderPersistence.swift */; }; - 72C8E000CCE9BD5F41657C2E08D4B83B /* RDEPUBTextLayoutFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66E601E685D0E9888AAFFDCAF0C0D1D6 /* RDEPUBTextLayoutFrame.swift */; }; + 7061077F19BD8B9339FD53134B0E6652 /* RDEPUBReaderController+LocationResolution.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F003AB5BAC52B6BF426F57E7C500BA8 /* RDEPUBReaderController+LocationResolution.swift */; }; + 707175A0385225FCA5CE079773062EE7 /* RDEPUBReaderSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96331868591D020B267B45CA8EF65355 /* RDEPUBReaderSettings.swift */; }; + 71EEBB949DF9F1894B271C4268B1A907 /* RDEPUBTypesettingPipeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3424A6DFBC2AC519C7C599F18DCDC89D /* RDEPUBTypesettingPipeline.swift */; }; + 72E212C2DAC151323027585C8DD020B5 /* SSAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F410ED25E4E84C3D5166261CDF4B58F2 /* SSAlertView.swift */; }; 730ACB99580C5982DC08D50FC5084D41 /* DTAttributedTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = A276DE925253460239BFAEC7663F60D3 /* DTAttributedTextView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7326101D5DD269D447F2D8842D268255 /* RDEPUBPaginationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89F92BE384325A770DEEB46797F1E54A /* RDEPUBPaginationState.swift */; }; - 73B3EE6535C27C69AB029A1BD1CA7D1F /* Entry+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F991240340FA026C71B68EB25B9F9C8 /* Entry+Serialization.swift */; }; - 73D3BF552CEC4CFA6C76B920B60A5715 /* Archive+BackingConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61E36C4FE448DDDA03450847FCB785B6 /* Archive+BackingConfiguration.swift */; }; 7459A1656EDC29D685073B83561B783E /* NSNumber+RomanNumerals.h in Headers */ = {isa = PBXBuildFile; fileRef = 8552BE1A1F6A6D2879763DE3B2B8A2DD /* NSNumber+RomanNumerals.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76F23BA6E5F23E12B41BDB8E0DCEBAF7 /* RDEPUBWebContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCCB7B202BEDC5F5B8895F56085A2DCA /* RDEPUBWebContentView.swift */; }; - 77B7D4B5365FF6066E205393AD2DBA3A /* FileManager+ZIPDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F9B298989305B9569B71E448E8C1D4 /* FileManager+ZIPDeprecated.swift */; }; + 74B266A15F5B1DFA3B1D005C7CDBFF0D /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6DB34ACB132E465CDF8191F7DB71EF6 /* ConstraintView+Extensions.swift */; }; + 753E3BDEDB52F0D6B6ACEDC7EA577DA8 /* RDReaderPreloadController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E5D2C72E80EF71ECCFDFE5C476ADADE /* RDReaderPreloadController.swift */; }; + 75442F59FAA9FD0FBB4F803BB9BB35CD /* RDEPUBTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B4081F4EC77470F1257F11DB2A4B55D /* RDEPUBTextRenderer.swift */; }; + 75668A2C0006C07A19D8D7752400689C /* RDEPUBHTMLNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0F6036722A2FEED169B57120EB274D1 /* RDEPUBHTMLNormalizer.swift */; }; + 75A45AE93B151C5A396F302394426A4F /* RDEPUBWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67EA3C4114F424563E73EE3FB42D7CD7 /* RDEPUBWebView.swift */; }; + 75DD13197B3A50B7DB6E8C0D453194B3 /* DTFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FCC718115E5C31C88A680522AE36B089 /* DTFoundation-dummy.m */; }; + 76025C51C72D8110BD74286B4EEFD793 /* RDEPUBTextPageRenderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F9E2282A0A515A241F80997B2F28767 /* RDEPUBTextPageRenderView.swift */; }; + 76470054E16EAA6B2E465088A40E2287 /* RDReaderView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A61F5753AE7B5122FE65CF07CF1AD5FD /* RDReaderView-dummy.m */; }; + 76B6DF0A60F3BB8E9B53581AA2B89ECA /* RDEPUBCFIRecoveryEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 078D30B87BEEB64D27E0BDB8EB562475 /* RDEPUBCFIRecoveryEngine.swift */; }; + 777AD7CB7399E49BF110AAA8C9036583 /* FileManager+ZIPDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F9B298989305B9569B71E448E8C1D4 /* FileManager+ZIPDeprecated.swift */; }; + 780837EAC09D97BF7EB4CC1415EEF0AE /* RDEPUBFixedLayoutTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 033D935836CD653A79E9152E2D84CEEF /* RDEPUBFixedLayoutTemplate.swift */; }; 7821105EF320619993B3BF7FB90C7ADA /* DTCSSStylesheet.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B610E558C4917C4257DC198EAFEE2F6 /* DTCSSStylesheet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 789B886DB594DC9497BB011790BBF7E8 /* RDEPUBPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE150E8FBF2AC59607D94086EF644B6 /* RDEPUBPreferences.swift */; }; 78D24D82D98D77E744FF73C9040618A8 /* DTHTMLParserNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 11B604FC3B0D5C91FEA763DCC0BE4DC5 /* DTHTMLParserNode.m */; }; - 7956B31CC6E4A4F49AD636605FE6E825 /* RDEPUBReaderContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD059368898F7F8B822A49571413B2B9 /* RDEPUBReaderContext.swift */; }; - 7A41EE89AA05F85E78CDC5A90963F6B0 /* NSMutableArray+DTMoving.h in Headers */ = {isa = PBXBuildFile; fileRef = B0AC307F12521444C973EA0DE38B4608 /* NSMutableArray+DTMoving.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 78E85BE5ACA8B34F0F0875795AA5227B /* DTBlockFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = A0BD48DAF5AE9DB087F2552E99069709 /* DTBlockFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7A48CDFB40202EFD09A2A9AB0EE0770D /* DTCoreTextFontDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 56489D9BA834497E48438A4B4E1CCCFF /* DTCoreTextFontDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7B4E49B136C527BD20AD000696440B14 /* DTCoreGraphicsUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = B6425B2235BA00FE865AF58EF44F1144 /* DTCoreGraphicsUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7B57128D05B37B1935F9371C272A2397 /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3593ADF561D422F73C8EABAD4A4F440 /* ConstraintRelation.swift */; }; + 7ABAC9BAA6E1F4DC0792041AA718DB32 /* RDEPUBTextLayouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F8C64CB3F3D0B7D4AA66798C740CB20 /* RDEPUBTextLayouter.swift */; }; + 7B83FABA52CF86EF8529E566EAC9367B /* NSURL+DTComparing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BFCAC7C2AEA867E67C63A852576774F /* NSURL+DTComparing.m */; }; + 7BF35387E788616E1A159B0229909E94 /* RDEPUBTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72BE58BB9BF4DCDFDC6D5430AA2E82E9 /* RDEPUBTextBookBuilder.swift */; }; + 7BFDB986A8372D1D292F341704ADF419 /* RDEPUBResourceURLSchemeHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3E5029439FC2CDA4E874FBB500F3FE0 /* RDEPUBResourceURLSchemeHandler.swift */; }; 7C05F56B62B15EFF344C5CDE4A52B8FB /* DTHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D4C9B7ED5E04C216AB28E3A4065C1C5 /* DTHTMLElement.m */; }; - 7C1789D42D48D122F21683DFE0117C05 /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = C241AD9CEC9D6732CFBA6A55B49E64C9 /* ConstraintInsets.swift */; }; - 7C235EE866F95546F32C0F12A4777356 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */; }; - 7C5B4C8F6E0057ABF4BBC399146391D2 /* RDReaderView+ToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5C92D6A531895CC82CDB6FFCE7205BC /* RDReaderView+ToolView.swift */; }; - 7CCC53404B62789AE3793E760997097D /* SSAlertSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 937CEFA81DA4227008DBFB114783A08B /* SSAlertSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7D1E7DDB0AD74FFCFED59D1D5900BDE9 /* RDEPUBCFIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF8BD4198F6FFF3793A1EDD6E9FE2259 /* RDEPUBCFIError.swift */; }; + 7C40890FF94AE3B5E3A73AEF73FD0701 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0EBAC7714A5F73B75AAB47D24B08B71 /* Constraint.swift */; }; + 7C43EAC7CB850A7675D2A6D61C8FBF01 /* RDEPUBCFIUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = E992F389B960CB699FDDEA5FBD8F31C8 /* RDEPUBCFIUtilities.swift */; }; + 7C88864F32B503C4E54A5A9B1C332981 /* RDEPUBPaginationCacheCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3008F6944BA740CD6E6F5CA33733C911 /* RDEPUBPaginationCacheCoordinator.swift */; }; 7D29C0A53AB1B4C1B257D46EBBDC9DA3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - 7D56C992720BEBF70F07BC75928B7E3A /* WeReadApi.js in Resources */ = {isa = PBXBuildFile; fileRef = 5214F772AE3CD906C0E5AE335E0A27E0 /* WeReadApi.js */; }; - 7EDD9B2DDD80A196D7798433666ACC95 /* RDEPUBTextLayouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC81F5F271A26EA7C1D7AFF9374188B8 /* RDEPUBTextLayouter.swift */; }; - 7EF238EB1273A1441D89BAEF214A773B /* RDEPUBTextPositionConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD39D5D16074428C43CD870060DBACA6 /* RDEPUBTextPositionConverter.swift */; }; - 7F6E040D6F0BD6E9CA8954018542D8EC /* RDEPUBCFI.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFB1ABFCCAC4DAE451803B7620A3E75B /* RDEPUBCFI.swift */; }; + 7D588676C1FAEE3023C55FD8B37EED1B /* RDEPUBTextAnnotationOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = A988B95153188D52B4BF9F4083BB18E9 /* RDEPUBTextAnnotationOverlay.swift */; }; + 7DBEB16F3A755F919B8AA710F5593C1A /* Archive+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5693BD171B879406EA14C97F4AD8D8 /* Archive+ZIP64.swift */; }; + 7DDFB8CE7FA04A4304D5A44026DE1BC0 /* NSFileWrapper+DTCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = 09C957F3199C596781EFA1DEA1DDCEC8 /* NSFileWrapper+DTCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7F9CC306B17D409DB903DF850FEDA64C /* DTListItemHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = F7B0087DE7C394A677F5883541AB4FB7 /* DTListItemHTMLElement.m */; }; - 807EE34D2B6A76F67762766AE970F4EB /* Archive+Progress.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD987C2FA7C8FBC96FD024E421DA0E68 /* Archive+Progress.swift */; }; + 7FA38108813D4CB4C8ED33502E91BB5D /* RDEPUBChapterPageCounter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B62755E9A395FF22E7405C3FE192D5F3 /* RDEPUBChapterPageCounter.swift */; }; + 7FF0C80B19CF042F6ADF4A7954DF69AF /* DTCustomColoredAccessory.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C6BE3B2DA9A8C4CD3760CDAD6F305A5 /* DTCustomColoredAccessory.m */; }; 8099F1E613A15275EF5FC59ED3C73579 /* NSAttributedString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D3D7C8444F58D9B3FCB4F3006D2CFBA /* NSAttributedString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 80AA377071E2AF381B547027B16FEDF3 /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945D4549E0B9168D7DDB910DE874B874 /* Typealiases.swift */; }; - 80CCC9CEF8628C97D09B51EA7F588A04 /* DTWeakSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = C422BCADBB48E28B549495663705A0FB /* DTWeakSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 80A95AF17AF71F69504BF2B6639E2AF4 /* DTBase64Coding.m in Sources */ = {isa = PBXBuildFile; fileRef = 061BD3911E4E530C792E65CED7868C33 /* DTBase64Coding.m */; }; 811D7CBCD710AE45FF80A4B05BFE444C /* UIFont+DTCoreText.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E1548FC42118F1A4164739DE6BE4E9 /* UIFont+DTCoreText.m */; }; 814D0D63E5FD4AB7231E63064FE9EB5C /* NSAttributedString+DTDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = BF4F3EC137168B92A5DA85AF50CD239F /* NSAttributedString+DTDebug.m */; }; 81905A7717925A17E6B98E934A75B8BA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0834E84632886CDD9911CAB76183F1CE /* QuartzCore.framework */; }; + 81EDF2465ACC1ECD6EC9ED3FDBCFAA8B /* RDEPUBTextPaginationInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4721E12B4121C46B8368D085D91EC2B /* RDEPUBTextPaginationInterfaces.swift */; }; 82119A0DC4981CC2AF389C7C4CC08186 /* DTListItemHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 98658510AA525496EBF5792E5D9884ED /* DTListItemHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 822AF86AA4BF4CE9FAA4548CDB8E1BD4 /* RDEPUBCSSCompatibilityLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8441EA66830E22726BE52E29AA8FBA0 /* RDEPUBCSSCompatibilityLayer.swift */; }; - 8232E2F21AA4746F8FF80842EE706168 /* NSDictionary+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC368BD2A8D266EB771E5FB9A5A5B3C /* NSDictionary+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 821AC919160B6FCE4FEC3F37F99FEA22 /* RDEPUBReaderEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02FE773F7655B2174F160FE1621181BB /* RDEPUBReaderEnvironment.swift */; }; + 83A0424762C166BEC92729C7897D70B6 /* RDEPUBReaderUIState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81F0FDEEC9D85F08CD97F555356F985C /* RDEPUBReaderUIState.swift */; }; 83A4BC9FE4765C9B848DD4925D99F362 /* DTAccessibilityElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 99299A9FD6EF739D18352AC5B9325CB0 /* DTAccessibilityElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 854FA236832E01DEBB7E96C36877C147 /* DTVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AF6156128A1A0CA24D9D06E346B9445 /* DTVersion.m */; }; - 860F6C94A7F6AC88CDC0EBCF54FBEB74 /* RDEPUBCFISerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F96D2805CAFF0D2370A761DD023C745 /* RDEPUBCFISerializer.swift */; }; - 8630480459E3E037BF860528792A5C9C /* RDEPUBPaginator.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCF3686E574510BF6B5D13293E85F0E1 /* RDEPUBPaginator.swift */; }; - 8676468774C95A019F96AC16510826C2 /* RDEPUBSelectionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0461A4D5A2D3198072DA0E85F0365880 /* RDEPUBSelectionState.swift */; }; - 872C5B6669490993860FB068B6EECA6C /* Data+CompressionDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D641809A99849F80FDCB02F8CE8D6A0 /* Data+CompressionDeprecated.swift */; }; - 881F85E9E489847191F88182118C8018 /* SSAlertPresentAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E481007A8174943868EBC81CF3B04B9F /* SSAlertPresentAnimation.swift */; }; - 884EB17E0A17502856F505A72A7B854A /* RDEPUBTextIndexTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C186CC4BD7D2CFECDD3B037A8C1D5114 /* RDEPUBTextIndexTable.swift */; }; - 89E1D4F05CD7B039976926997D4F484D /* epub-fixed-layout.html in Resources */ = {isa = PBXBuildFile; fileRef = 435BCDDA491498B312BF8B10335F5F6D /* epub-fixed-layout.html */; }; + 84148D57904E24318934EE3997698D38 /* DTFoundationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = FD03567681A79FFB6E81B3105503065D /* DTFoundationConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8593CD0CD62E27B97579259D350ECD85 /* UIImage+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 15941683D394FB8D7EAE91CD2CF03FF1 /* UIImage+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 859E8344D0307DD5FDA218AC68F9743A /* RDReaderPageChildViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB3DF251DDD78EDAEE82FBEBDF9CE79B /* RDReaderPageChildViewController.swift */; }; + 85FBBBEDAD699D4749D2FC02F79CC369 /* RDEPUBRuntimeChapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEC2659F6ADAB5F211964D1A8CA88C26 /* RDEPUBRuntimeChapter.swift */; }; + 86001EE984D0EB14AADF337C5C1BA05B /* NSString+DTURLEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 31BD7533867336DEA9B835F471767178 /* NSString+DTURLEncoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 864317F17E7247F95AE8763CDC571AC7 /* RDEPUBImageViewerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B749BBD9F9ECB3CB4876AFB35FA577 /* RDEPUBImageViewerCoordinator.swift */; }; + 87466854F854640618D9ECC4DD87732C /* SnapKit-SnapKit_Privacy in Resources */ = {isa = PBXBuildFile; fileRef = B9DCB5EC0B1CDADD221717CADDF62359 /* SnapKit-SnapKit_Privacy */; }; + 87B07B9129E0E431CAF116B4EE4C0A5D /* RDEPUBChapterWarmupOrchestrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92AD29D1A051D00F5525A240E49B00A2 /* RDEPUBChapterWarmupOrchestrator.swift */; }; + 87E6B7A76709BC55FD95D822811D521E /* RDEPUBNavigatorLayoutContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4BC2CE5C3B20971FF99A9C8EC487481 /* RDEPUBNavigatorLayoutContext.swift */; }; + 88670A69EF411C639C3AAC8B39848340 /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5245010774F8F1C4857763CC7B96E7B4 /* ConstraintMakerExtendable.swift */; }; + 88D5FBA8614CC1A84A6B1288627CB93C /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F950CEF31AC0065C0BEAB26BA2CEFA1 /* ConstraintOffsetTarget.swift */; }; + 896026287F9D8443581759A53020022C /* NSMutableArray+DTMoving.h in Headers */ = {isa = PBXBuildFile; fileRef = B0AC307F12521444C973EA0DE38B4608 /* NSMutableArray+DTMoving.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8A0A0FB23DB0021ADC9AD0D90631883A /* NSMutableString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6293E97E128E98559FB74D9A342EAD /* NSMutableString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8A2EE040670C6715A4F913614E5CC40B /* NSString+DTUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = BE547E464E5D34F9FFB24BAC81D1E4CC /* NSString+DTUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8A35CC67F0AA6B26397C10D756EA34E8 /* DTTextHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = FB2ABB1D297442D91AA42F1407DB4A58 /* DTTextHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8A36D24AF7E197C7C3A37C7F6D6B3453 /* wxread-dark.css in Resources */ = {isa = PBXBuildFile; fileRef = 1541A3CEA0FCBABEF9872A60FAEF47B5 /* wxread-dark.css */; }; 8AC90941E71199090BCED76DE89EFB60 /* DTAttributedTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 77A613841EB90827AF321DD50B21DB5D /* DTAttributedTextView.m */; }; 8B405CE13E7D718A9340A82B52766AB2 /* NSCharacterSet+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 75FA8E843D9225BD65EB9D17825EC0F4 /* NSCharacterSet+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BDE0118B6C160D20F0216C903323B9F /* RDEPUBWebView+FixedLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D9A0C2A7BCE48EB6E02279F8770F67B /* RDEPUBWebView+FixedLayout.swift */; }; - 8DE6BE54092C4BBC29DE857182C6893B /* RDEPUBReaderUIState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B157210E873E2C199310B838E53286FD /* RDEPUBReaderUIState.swift */; }; - 8E1A93C0442BC9FC1E131BB841AACA59 /* UIScreen+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F051D813D50D20D53205D5FDCAA877C /* UIScreen+DTFoundation.m */; }; - 8E79DA8D4AECEE0ECC24F9BA2117A9EB /* RDEPUBRuntimeChapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E2E2ACE965436483EDC14EC4262BAFC /* RDEPUBRuntimeChapter.swift */; }; + 8BDD1C103484829B9DDD106A067C5C02 /* RDEPUBPaginationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 711A407CD08421E62F3C143957DD10DA /* RDEPUBPaginationModels.swift */; }; + 8C37B65B5FF8C31744B80DAF99CEF0E9 /* Archive+MemoryFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 174FC0CA05D20BB995E211DE5A0857DB /* Archive+MemoryFile.swift */; }; + 8CAC2DBDC2672B8F227875C2D05D7555 /* Entry+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F991240340FA026C71B68EB25B9F9C8 /* Entry+Serialization.swift */; }; + 8D8786B29D0ADDC25829805E11BBDA08 /* DTExtendedFileAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = F5389D4E96A4AFE175691B4D3D4524E7 /* DTExtendedFileAttributes.m */; }; + 8E5F3603B41FE2CF3FBEC4C9D1337F3C /* RDEPUBReaderChromeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84EB75472DB29B600C9185A097D117B7 /* RDEPUBReaderChromeCoordinator.swift */; }; 8E8726381CBCFB1EDB350183456D4EF7 /* DTHTMLParserTextNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 13AB6A32A293E3DC21A7047C6DB958CA /* DTHTMLParserTextNode.m */; }; - 8F2972EE318ED16FFBFD216728961BB2 /* DTActivityTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8272D0B59ABD6652D0CAE3DFCC2C5EE1 /* DTActivityTitleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8FB2AD1EFD08F0B66A34FCFB9385F2E9 /* RDEPUBRenderDiagnosticsCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63CB91E70707FEFE07F01B11C0DB5055 /* RDEPUBRenderDiagnosticsCollector.swift */; }; - 903C3E894FA36582171914FBBAAB044D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - 90B16160AC5C4F3DFE8A93ADDCD9EB21 /* RDEPUBChapterLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = D64D8C9DC33119921466055ACC5347C7 /* RDEPUBChapterLoader.swift */; }; - 91F2004931EEB74080582412EC4A7E3E /* RDEPUBReaderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC94637FA2BC2BB996CB04F3AD382D7 /* RDEPUBReaderConfiguration.swift */; }; + 8F756349AF82AC16C8B2675AFC2C2578 /* RDEPUBViewportTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 520E0A63146D08FBEFF05CA61FA4B8B6 /* RDEPUBViewportTypes.swift */; }; + 8F95D356B3818234A49F50063C4AA46C /* RDEPUBReaderRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEC9D27C90F465491EF9BA9CC8CDA1E1 /* RDEPUBReaderRuntime.swift */; }; + 8FD8FE08A1F383BD78DFEC51D7EE5DF8 /* UIApplication+DTNetworkActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 77213203802F44012346181FED2856F9 /* UIApplication+DTNetworkActivity.m */; }; + 9010223E727BEFED1915B2BB2A35ECFD /* RDEPUBReaderDependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 214727C456892B390492D84CDD20BB88 /* RDEPUBReaderDependencies.swift */; }; + 9032E6A1A4F1FA89178E3DCF9E76843F /* RDEPUBJavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = E97368D346BF315D1080DBA98C0788AA /* RDEPUBJavaScriptBridge.swift */; }; + 913F50C87F33408387D2FABFB364FEF1 /* NSData+DTCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 17F750F38183302BF345F40F5A4CDD43 /* NSData+DTCrypto.m */; }; + 91D8F6C54391A9D3E37F08CC4315AE99 /* RDEPUBReaderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E53AFDDED09CAFF8EFC5BC809DB5855 /* RDEPUBReaderConfiguration.swift */; }; 91FDA47810CE5CE2C48AED9205AE89B5 /* DTStylesheetHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = DA25968B7C9A40031DA45BB328EA8A2E /* DTStylesheetHTMLElement.m */; }; - 92A408637C2F3E65E93800222550C88A /* RDEPUBPageInteractionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C30031E4337458E885FA7A27960620DE /* RDEPUBPageInteractionController.swift */; }; + 9272A0B4C967A5616574EAA5802FA096 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; + 9295ACA6C5CEA110E02F9A8E7A55D08A /* WeReadApi.js in Resources */ = {isa = PBXBuildFile; fileRef = F46977FAF9F0EAEDF840BDA49288CC99 /* WeReadApi.js */; }; 92C59F96D443525E8833676479FA60C5 /* DTVideoTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 73A99927E52B24583A6A2CF7E6F23848 /* DTVideoTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 92CF67B6061DB4721656519090E6F3E5 /* RDReaderView+ContentAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23C0CE03056D1EF27F50F55B85D3A0D2 /* RDReaderView+ContentAccess.swift */; }; + 92F6111C95FCD2F3E9A181E4D943A1EE /* RDEPUBCFIDOMPathBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 575B2D957760E0B9F1480FCB092B6B78 /* RDEPUBCFIDOMPathBuilder.swift */; }; + 931695433DC077003590F79665E0622A /* RDEPUBCFIRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB48BF4B843D518C890BDD2AC749E640 /* RDEPUBCFIRange.swift */; }; + 945A77521BE95FB18A3D1577A50B7F24 /* RDEPUBReaderController+RenderSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15DB2B4B89706EFDAB413FC86A6C29C0 /* RDEPUBReaderController+RenderSupport.swift */; }; 94F5846979DBC90E2B646E975F5ECBA8 /* DTHTMLWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B96B0998B49D8E149C995474DA5FE5F /* DTHTMLWriter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 956D4311C0980B3A1C848EF22C8AEE7F /* RDEPUBTextPerformanceSampler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5B003AC0B46623423334F97FEE379B8 /* RDEPUBTextPerformanceSampler.swift */; }; 96507B8910C8C9DE0B221CFF0E8518D0 /* Pods-ReadViewDemo-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EBA0272559B0F7FAD8AC670AC7431188 /* Pods-ReadViewDemo-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 974B4B4C1037959C0374DBD8A0591EA5 /* URL+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 537BB06317FA188DF7A8A960152520E8 /* URL+ZIP.swift */; }; - 97CC0A64419AC54341D34421B22B7034 /* DTExtendedFileAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 538572A5C098252D629F2185F1B1C9E8 /* DTExtendedFileAttributes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 984027EA31EE692C1B917CE3B5B4D010 /* String+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = C409593D5FA3DD26DD8A3CDE6F8B221C /* String+RDEPUB.swift */; }; 9854DC3F1763B6272C2EA3FC6EC40B95 /* NSAttributedStringRunDelegates.h in Headers */ = {isa = PBXBuildFile; fileRef = E20272295EC253826AEE1F83A15D47C5 /* NSAttributedStringRunDelegates.h */; settings = {ATTRIBUTES = (Public, ); }; }; 987538B07E11741899878EA8BC947F51 /* NSCoder+DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 354C5DD0ACC742762200A640ADA859C6 /* NSCoder+DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9917E9B804CD33AF3BE2A992A3510C97 /* NSNumber+RomanNumerals.m in Sources */ = {isa = PBXBuildFile; fileRef = B7672A26922DBD934FA1AC60D49EB322 /* NSNumber+RomanNumerals.m */; }; 992B7C8C824B5EA190EF1DB096064DB7 /* DTDictationPlaceholderTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = F9A2565B302334B662AB51DCF8E65EEE /* DTDictationPlaceholderTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 996F4301B6B7371F064F6C16A4242434 /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 882FA707ED3513D263A1E0656AAD2D33 /* ConstraintPriorityTarget.swift */; }; - 9A7858B00D72FBEA2FE7774D92BACA32 /* UIScreen+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = A3765B289CB7E6C5DF6160D8EBC83C3C /* UIScreen+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A878F793DEF9410001A3025DFA30BD8 /* RDEPUBFixedLayoutTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 786487AD4F6B37AE4B483566F3000C6F /* RDEPUBFixedLayoutTemplate.swift */; }; + 9A0376FF1CA9B7ED0356E0354DE826E5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; 9B199D71D2F48B2055A7FDF9BD7051CC /* NSString+CSS.m in Sources */ = {isa = PBXBuildFile; fileRef = E27C503C8128BC3CE109FFE077AEF325 /* NSString+CSS.m */; }; - 9B6C11AC9941D02F1BCC15F5124ACB60 /* DTTiledLayerWithoutFade.h in Headers */ = {isa = PBXBuildFile; fileRef = DF5EDCA3B21964D0462BE0982E2F0BF8 /* DTTiledLayerWithoutFade.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9B30CF6B565D4828956508A42E01F44E /* DTVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BD9F2023FF826F67E69E3407A70A8A6 /* DTVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9B582B59618B5F7674FD433A97389BDF /* RDReaderView+PageCurl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E281F0688B1D356CF1654C6063AE77D /* RDReaderView+PageCurl.swift */; }; + 9B9B71183A91A2257C7563C345E664CC /* RDReaderView+ToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648D6AC5A8FA53918EDB418D8A36710E /* RDReaderView+ToolView.swift */; }; + 9B9FE1C8A205EFB1EA6081CB2885DF5F /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BE22EE711B7A38A4443E1C1C12BD79 /* ConstraintMultiplierTarget.swift */; }; + 9BC6FB16B5F8448E55D8A5A5FCA15CF1 /* RDEPUBReaderSearchCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92E7747B6F898FB12DFE1CE4ABDC3531 /* RDEPUBReaderSearchCoordinator.swift */; }; 9BD146F72B29C703798001F138B069C2 /* NSCoder+DTCompatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 9129D37C7F89AD8FD530663BB4503FC0 /* NSCoder+DTCompatibility.m */; }; - 9C37EBD71CE0C06085606E06B9602E07 /* Archive+Reading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0619F98DA80922E78A07321D0DC54F62 /* Archive+Reading.swift */; }; - 9DA15711057EECC0039842A782024C2C /* RDEPUBNavigatorState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC59639D756DEA2914DF1A97050137A1 /* RDEPUBNavigatorState.swift */; }; 9DE04C83A68C7512C0A860FFF5CEC113 /* DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 53F98F0F060B066CAFBCD3C85C26B2B4 /* DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E0BECACB09C20F2A4C0B2C676D074DE /* NSMutableArray+DTMoving.m in Sources */ = {isa = PBXBuildFile; fileRef = 53499F40E1790A6CBE8AFEB3AC5BEFC8 /* NSMutableArray+DTMoving.m */; }; - 9E2751BDEA29783950FDBC6DA7805483 /* RDEPUBReaderTableOfContentsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AE9447E94AD6DD5AA1A3E1BBB03977A /* RDEPUBReaderTableOfContentsItem.swift */; }; - 9E3AB25F2D6F511C03EFB50D2256A6FD /* NSURL+DTUnshorten.m in Sources */ = {isa = PBXBuildFile; fileRef = C80065DBA5634DAA71129404975D7349 /* NSURL+DTUnshorten.m */; }; 9E4AB71DE8B3E7218B53B2C8EF6B843A /* DTAttributedTextContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = F0D72C5680EBE6CA716EE77281AA4436 /* DTAttributedTextContentView.m */; }; - 9F3A7E6E019A523F112D66622F13D2C4 /* DTExtendedFileAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = F5389D4E96A4AFE175691B4D3D4524E7 /* DTExtendedFileAttributes.m */; }; - 9FAE9BBC8C82AFDB267CF042CAE91557 /* SSAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F410ED25E4E84C3D5166261CDF4B58F2 /* SSAlertView.swift */; }; + A0086BC42F0345BCC2FD3B88E3440613 /* URL+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 537BB06317FA188DF7A8A960152520E8 /* URL+ZIP.swift */; }; + A0BDB089F8F7C3478AAC3756C3FED67C /* NSURL+DTUnshorten.m in Sources */ = {isa = PBXBuildFile; fileRef = C80065DBA5634DAA71129404975D7349 /* NSURL+DTUnshorten.m */; }; + A0EFD4BB76E51AF257290001AF4944D2 /* Date+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = F76A97683FB5E8E8B86EA4AD71F6F4B4 /* Date+ZIP.swift */; }; A132A0C9EB13B65FB886B11AA2E6304C /* NSDictionary+DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 27205D159B39090908CA0E9C3997B784 /* NSDictionary+DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A2C4931C097B54AE8F7B1D61D99D512F /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9593E7B37569219F8D9A504B47707DC /* ConstraintAttributes.swift */; }; A2CA9C27EB2B77637A12723F8CFE7AAB /* NSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 4428633C8EC3F6289CCF376F588CE0C4 /* NSString+HTML.m */; }; - A2E1164041C2D80612C202F2766A9E9A /* RDEPUBCFICompatibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = C29508133496D51D5F24DDBFFEC54798 /* RDEPUBCFICompatibility.swift */; }; + A2CF42E4C725A1969A6211211C82138A /* RDEPUBBookPageMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEE1B7CF6E54E7876BBF28948CD65B9E /* RDEPUBBookPageMap.swift */; }; A30D5C1E413A3D319A83D3410A8A549F /* DTCoreTextParagraphStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F760D62F6C6F083374702146337F2CB /* DTCoreTextParagraphStyle.m */; }; - A3FBC31F5CCE7882ABAC0C50BE2F1B9C /* DTBlockFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = A0BD48DAF5AE9DB087F2552E99069709 /* DTBlockFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A617AECE5C0565EC362D58CECE76E01B /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 392A75EAF280876545D14AA00517BA4C /* ConstraintMakerEditable.swift */; }; - A691BA8AC2E9668EC2D30BF7C300086D /* RDEPUBBackgroundTrace.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50244AA9BC4821A6CB64A7AF6D8BB332 /* RDEPUBBackgroundTrace.swift */; }; + A6306344331E00A5BE222BF52F4D5129 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9593E7B37569219F8D9A504B47707DC /* ConstraintAttributes.swift */; }; A72E9F983E5BBFA7485EFB482B80E89E /* DTWeakSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 5155CCDD61E030184249A020FE5D74B0 /* DTWeakSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A77F198B69481699E6FCEAFBCDA2F8DA /* UIView+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4219E7C32019899890CAB66E5FBDF524 /* UIView+DTFoundation.m */; }; + A77E807D439F105930DF42E053013624 /* RDEPUBCFISerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9A8B5491FF7E8AB9CD6015AE4E1C0D2 /* RDEPUBCFISerializer.swift */; }; A7D665BBDADBE3D64023FF52E218FCFA /* DTCoreTextConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = B2B3D0CB47B0A8E9EC5AF48B7F2DD6B0 /* DTCoreTextConstants.m */; }; - A8D3597AB26C2CBA7B5966BEAA1A252B /* RDEPUBNotePopupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2FEFB9BEB8FDB1839B78DBC6861BB90 /* RDEPUBNotePopupViewController.swift */; }; - A8DBD4A1E923298D4959A63CAA45746A /* RDEPUBTextAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD1A3ADD8E5C9D2A848AA57AA083E168 /* RDEPUBTextAnchor.swift */; }; + A8DC6885FE405B71BCF13D91D9CFFF71 /* Archive+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA251BAC8B430B3A4D4C4321046B990 /* Archive+Deprecated.swift */; }; + A8FC7A36DEF3E31E296CD4D26A815B3D /* Data+Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5964AF1336E2F0DA0E2C32991E76C78C /* Data+Compression.swift */; }; AA3722CC8B4992EDA8A9F5E9116835B7 /* DTCoreText-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 015F3EE69253C66E11B931E3360BA5FE /* DTCoreText-dummy.m */; }; - AAB706F10104FB95DD95EFD0530C4C6D /* RDEPUBMetadataParseCancellationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B300D661A4E613B36517DEC8EC312AEA /* RDEPUBMetadataParseCancellationController.swift */; }; - AB75C75F5D829A0BF57969234A63ED59 /* NSString+DTUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = DCECDBD73595CA88A2208000B4B68352 /* NSString+DTUtilities.m */; }; + AA6C9B258173656A1241F1CF0E80D7D4 /* ConstraintMakerRelatable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFE19508E12BF8B0B52E8CB4F724217 /* ConstraintMakerRelatable+Extensions.swift */; }; AC7000465258822B466855B12F1F97A3 /* DTCoreTextGlyphRun.h in Headers */ = {isa = PBXBuildFile; fileRef = 49A21AE1A0AB5383F895B34EA7D6973D /* DTCoreTextGlyphRun.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AD3AA582C65B0D42CC2AA6053738737C /* RDEPUBTextBookCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 384B29CBEB4465D86BDA4AF5BF10C2F7 /* RDEPUBTextBookCache.swift */; }; - AEEE68A6A3456F7B4DC24A7163D98F5F /* ZIPFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D927F128EBF26AD2C61FD0E6B6F6F5ED /* ZIPFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC957DB48302A58F9CA91D3735ADF86A /* NSURL+DTAppLinks.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D36F7CDCD7D5788CDCB3A1421DB242B /* NSURL+DTAppLinks.m */; }; + ACA56466FFD614410CCB31E0A2931D56 /* ZIPFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A06A36ADBE678DB44158D32E751FAFF /* ZIPFoundation-dummy.m */; }; + AD1EC7ACCECE8F6EEEA2A26C980135BC /* DTAnimatedGIF.h in Headers */ = {isa = PBXBuildFile; fileRef = A9FBC69C7DA29A7283920FDA9EBBCE8A /* DTAnimatedGIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AE43D161B808037299043EC4C7E02B7A /* RDEPUBPageInteractionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAE1CB7D6F5BB8E33C9562663C93A51 /* RDEPUBPageInteractionController.swift */; }; + AE861D884A8004EF8F7CFADCE86D8411 /* RDEPUBParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BEEDD6EDB66B0EECC515EDCDB618914 /* RDEPUBParser.swift */; }; + AEF180508B84AAB5A0712C04958E0AF0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; AF7A1DC953992A149CB0815C90769529 /* DTIframeTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B931AB189BDDE2CCE8578B50BD60AF0 /* DTIframeTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AFDC339729E3167A94E6D3EB45E8D4AA /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CF362F88AB69253F1898E53D7A286A /* ConstraintDSL.swift */; }; - AFEC35CEF2F2F0F83DF93E373C44AEB3 /* rangy-serializer.js in Resources */ = {isa = PBXBuildFile; fileRef = 7315B7878D20AD386748BCFFF68812DB /* rangy-serializer.js */; }; - B21B66EF9EFBAA49EE4E8FFD51292FEF /* DTPieProgressIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B443D035BA5652B03A41BE905C5AC17 /* DTPieProgressIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B0060F62ADE3A4E081F443F6C46333C8 /* DTHTMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D75FEDE65722CF41F7F32A164376926 /* DTHTMLParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B07FDC47F5F68E14BED9EC6512D5817F /* epub-fixed-layout.html in Resources */ = {isa = PBXBuildFile; fileRef = 5E958924060294CE9417399BB02AB344 /* epub-fixed-layout.html */; }; + B08BB5940DA74FF036FFC44380C7848B /* RDEPUBTextLayoutFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07C08997AE3D75194E400010A0AE4820 /* RDEPUBTextLayoutFrame.swift */; }; + B113395265911C8296BC5FAABD0D3667 /* RDEPUBReaderController+PublicAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1485847E9CA847239AB24742D72ABB /* RDEPUBReaderController+PublicAPI.swift */; }; + B1C2E803A0F46195770A6E288270C00B /* RDEPUBReaderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7036B7E2D1B623419E1EB950E58865CC /* RDEPUBReaderDelegate.swift */; }; B24FAD34A7915FC4B90FE9038E814FF2 /* DTLazyImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = A4E43DCDE0C8751557E7E65FEEB1C865 /* DTLazyImageView.m */; }; - B35733574DA8B973FF3B77D92B8756B0 /* RDEPUBStyleSheetBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B9B9C10492C2477D3CA1E3B7027D4C5 /* RDEPUBStyleSheetBuilder.swift */; }; - B499FCB6EB1F8BAE70CF0AAC369EA7E2 /* RDEPUBNavigatorLayoutContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0146E639757C4B0ED78C4CA12DA7FDD7 /* RDEPUBNavigatorLayoutContext.swift */; }; - B4C2FB1FFAA1E94B6266CE735A8A130F /* RDEPUBSelectionLoupeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A845B04B94B0E1C1F7CAC1A19D0340D6 /* RDEPUBSelectionLoupeView.swift */; }; - B50E295EEF6CBA47808C7520A79BEC5F /* RDEPUBBackgroundCoverageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07F94C7EE98654BB19A56E9BB717727B /* RDEPUBBackgroundCoverageStore.swift */; }; - B53E867CFD518A62EA593F4F4B3A3FAA /* RDEPUBNoteModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 902FAE3EE7603EA74B421F4F8B5160E1 /* RDEPUBNoteModels.swift */; }; - B77E45849D821FEDD79D5446B6A490ED /* NSData+DTCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 02EDFE0EEA47398F3E1A361A73AF6A6C /* NSData+DTCrypto.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B794BC94DCEAB911E625BB167073309D /* RDEPUBReaderLoadCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 013A3E32348433787547280A0B53E82D /* RDEPUBReaderLoadCoordinator.swift */; }; + B2D82D043AA2A89BA9000314FE7A45AC /* RDEPUBNavigatorState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AD15109A0B89D836EFB914732706228 /* RDEPUBNavigatorState.swift */; }; + B4267497AB5BF50898ECA9B77E75EA14 /* ConstraintDirectionalInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A651CEE8062C84A597DBC44ECA3DBCC1 /* ConstraintDirectionalInsetTarget.swift */; }; + B51DAE85A896F9709CD80CA9D33102D1 /* RDEPUBWebView+JavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F752E31955268C74AB0B05584B9CA9D /* RDEPUBWebView+JavaScriptBridge.swift */; }; + B532D38C5A7FC5AE5F0968DC9C9DBCF8 /* RDEPUBParser+Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = E808E517A1FE8666CB17EA9D94B4747A /* RDEPUBParser+Resources.swift */; }; + B634BD7CC872DEA5B558A56F0E737005 /* RDReaderSpreadResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0786D6430A29C2F90E4832048559BE21 /* RDReaderSpreadResolver.swift */; }; + B6DC5982F88F75B77C49C0DCBF412A14 /* String+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E78795FD43E657B2F567418E0A7EB30 /* String+RDEPUB.swift */; }; + B72FCEF30FCF820E9434CAB06B502027 /* DTTiledLayerWithoutFade.m in Sources */ = {isa = PBXBuildFile; fileRef = 70F5D03B9B3B7F182C8F5C1F5D4FA7E7 /* DTTiledLayerWithoutFade.m */; }; B7BDD79FC06A1E4E0E17592860844108 /* NSAttributedString+DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = FF3F7BA20A1213804048557D946CEEA9 /* NSAttributedString+DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; B8332F36582F7A001FE85A8D54B27C9E /* DTCoreTextParagraphStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D62C5531667F364F14DB67D33FFA554 /* DTCoreTextParagraphStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B838F1859B7D755B45253F6D3F8A29DA /* UIViewFrameExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8C351514678D41C58869BD057D5483F /* UIViewFrameExtension.swift */; }; B86493B996A888D1DA7814ECB6028E22 /* DTHorizontalRuleHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = A68D72764140BC3DF67A2B9E52CEC7A4 /* DTHorizontalRuleHTMLElement.m */; }; - B93AFFE0B94B3B0C9E3E53A5689643AE /* ConstraintMakerRelatable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFE19508E12BF8B0B52E8CB4F724217 /* ConstraintMakerRelatable+Extensions.swift */; }; + B933F0519580CB0C2441B4E30743887D /* DTCoreGraphicsUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = B6425B2235BA00FE865AF58EF44F1144 /* DTCoreGraphicsUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; B94CD41727DFCA8791EED8FB2CA397DD /* DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 2702E05AA7A266B7D8D0F881FD4E09DA /* DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9F50F644BF6273ECA00198152792102 /* RDEPUBChapterPageCounter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8189DB90B82FC06292365152D19B2393 /* RDEPUBChapterPageCounter.swift */; }; - BAAB9C658BA5CE90D5A2DCB9FBCE1918 /* RDEPUBCFIParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5819FE718F1A4114395EBB6B8A8E8455 /* RDEPUBCFIParser.swift */; }; - BCD5820BDBB0AC37772A5D613123BAAF /* RDEPUBPaginationCacheCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A759645FBF673FDEACE775045ADD6223 /* RDEPUBPaginationCacheCoordinator.swift */; }; - BD9B40C9C8474E86F212487107F68A99 /* RDEPUBFragmentMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4221E1543BD892BF6D14538441477241 /* RDEPUBFragmentMarkerInjector.swift */; }; + BA92ADE493399D9EF1855FC2ECEF4C85 /* RDEPUBReaderHighlightsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA80D2B3DB04B3530C801B06AC694048 /* RDEPUBReaderHighlightsViewController.swift */; }; + BABB631D3E75C2401B0186D33D45F028 /* RDEPUBJumpSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B29AA7038EA68CF6B91D18CC87E743 /* RDEPUBJumpSession.swift */; }; + BC034149400280A8BB07C18A027494CF /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E8C0D83EB6EDE71B264B6B0DD4644F5 /* LayoutConstraintItem.swift */; }; + BC81EFE1BD216C5B18F013ADD05FC416 /* RDEPUBCFIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D2063CE799735F3C4AE37FE11567CBC /* RDEPUBCFIError.swift */; }; + BCCA1BD09411BFFD19A14D48D087C1C5 /* DTFoundationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD568D38C209BA1CC0EBFA809A35204 /* DTFoundationConstants.m */; }; + BCF71935893826A0C7E4D94AE9690198 /* RDEPUBMetadataParseWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 447E4906FE72C6E3E2AE1CC89D208CAE /* RDEPUBMetadataParseWorker.swift */; }; + BD6F470C950D397B0ADB9C78E460C445 /* RDReaderContentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76919E99E9F16C30FA06F643643AA997 /* RDReaderContentCell.swift */; }; + BDFB313B8C690747D6B8C974338A1B03 /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CE078B465FDEF40EC0469626A2C2469 /* SnapKit-dummy.m */; }; + BE0ECECF6F3D871AFE88627E8042FA4D /* DTAnimatedGIF.m in Sources */ = {isa = PBXBuildFile; fileRef = BC332335B380BC51C4F05C5CCDFB9189 /* DTAnimatedGIF.m */; }; BE12CD112F82AD9050D7FB29395F27F9 /* DTVideoTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 63A6EDF10DA5A051C6CDCBE5D97AF11E /* DTVideoTextAttachment.m */; }; - BE485F99DA45D2B416F45A0A869BFDEA /* DTAnimatedGIF.h in Headers */ = {isa = PBXBuildFile; fileRef = A9FBC69C7DA29A7283920FDA9EBBCE8A /* DTAnimatedGIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BF4C58CBD2578B555B57EAD2D527DA01 /* UIView+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 79A77584AB3B92B2508AE0BCFCB8FD87 /* UIView+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BF609F036C668EFAC178F93D521C1285 /* RDEPUBReaderChapterListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 646429B6D94AE5D9F3ADDB5B9C6FBCCF /* RDEPUBReaderChapterListController.swift */; }; - C00E44460F4E1E1B7100F7B97CC964AD /* RDEPUBChapterWarmupOrchestrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCF1D4F0258C1F7B53CE73485F48442 /* RDEPUBChapterWarmupOrchestrator.swift */; }; - C01F8DF6EB0351A95971D4ED5C00BA64 /* Data+Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5964AF1336E2F0DA0E2C32991E76C78C /* Data+Compression.swift */; }; - C21E42AA79E5C63040B163B0C2FFC947 /* NSDictionary+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = C18480913E002315E3F5EC6945371697 /* NSDictionary+DTError.m */; }; - C294B8A5C58978A6A6BF0ECFD4D8461F /* RDReaderFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59C9316B92152118F5AE8FD0EC0B9683 /* RDReaderFlowLayout.swift */; }; - C44AC1B338F7162DA062A24F37F8B607 /* UIImage+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = D85A85D891A320165843EF9F489178F7 /* UIImage+DTFoundation.m */; }; - C4B90D10F9C4624C785803714C280807 /* RDEPUBTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17D3B9EA3167BDEF0F47AA6554DF7D86 /* RDEPUBTextRenderer.swift */; }; - C4FF52162D560D713AE888D84B0B5CDF /* RDEPUBPaginationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23A9ED0D9E5AF895754BB1D2CA08DEF2 /* RDEPUBPaginationModels.swift */; }; - C520AF807149FCF55A7F3C2C16165174 /* RDEPUBReaderChromeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2140116657415560314C2D9847AEA192 /* RDEPUBReaderChromeCoordinator.swift */; }; + BEAF0452878110B598B76B6AD4F46518 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20D029F1D415730DFA1FD010AD485185 /* RDEPUBReaderAssemblyCoordinator.swift */; }; + C09A25A26F0214CC046A27560A5C4254 /* NSDictionary+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC368BD2A8D266EB771E5FB9A5A5B3C /* NSDictionary+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2BCA92E8E4BB077023BA1AC445962B3 /* Archive+Writing.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF988440049800DB7824A94B81D20254 /* Archive+Writing.swift */; }; + C2C21878B6B70BC91A9A54894A546250 /* RDEPUBStyleSheetBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8052EE9D31E2F5253234D9A7C6A8218 /* RDEPUBStyleSheetBuilder.swift */; }; + C3D195BDEB02E070383985241CCD749B /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6578DFAB51436E8DF266FD087700E26B /* ConstraintDescription.swift */; }; C5EE8E7373FBD24E66C678356393D871 /* DTCoreTextFontCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E791886E59DC0FAB02C6BBAB5BE5B6B /* DTCoreTextFontCollection.m */; }; - C611AD73978B800E1A2BCE318CF9F467 /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = D495E2AB1223BD4D4909F8FF1FF47DAF /* Debugging.swift */; }; - C635E005C211CAF7E9C78CA7C6143980 /* RDEPUBReaderController+ExternalLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDA124143D52EAC7EDD8AB1F554C329 /* RDEPUBReaderController+ExternalLinks.swift */; }; + C6308C05D9FEBC66D46E90617BA932FC /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = D495E2AB1223BD4D4909F8FF1FF47DAF /* Debugging.swift */; }; + C6A49A308880D341DDE7D6D90A579684 /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50297AAB8278F2BB6FCFE82B20C7A049 /* ConstraintLayoutSupport.swift */; }; C6B65C0EA759DF426FBBBB113BA3C3E8 /* DTBreakHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = F734214E067BDBDB581911E1A5CDAADB /* DTBreakHTMLElement.m */; }; C72CE4B974DFAE2C3037D425EB559314 /* DTCoreTextLayoutFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = CE6907AC04870132CCE3177E894607DD /* DTCoreTextLayoutFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C88B339BEFAEC890D15B89A0ABF3FD4E /* RDEPUBCFIRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B63D29E831F61A0A7CD86FE7CD9CDA9 /* RDEPUBCFIRange.swift */; }; C8F753B56A6C4D2A938B6EA68CF522F8 /* DTColorFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 86A0361390AA0C29BC1A5487083A12A7 /* DTColorFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9C4CFBF5EF3AF45C5525D585DC3B486 /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4684B406B325B35F39322D75B59B6479 /* ConstraintLayoutGuideDSL.swift */; }; + C9A5F7678CAA29D2360F5E9664326A84 /* epub-bridge.js in Resources */ = {isa = PBXBuildFile; fileRef = 091E53DC8215AED45D88A2ABA24A2140 /* epub-bridge.js */; }; C9DD05EF2D27FFEBFA7BF6F437168501 /* DTCoreTextConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = C8C20D9A71E6605DEE80342E7122B683 /* DTCoreTextConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9F845A486E47895A25C9C6885C606B6 /* NSString+DTURLEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = CB7F3535507F56824BA21509302CF8B3 /* NSString+DTURLEncoding.m */; }; + CA1210C0EBDE84C367D23D69B4470853 /* RDEPUBReaderBottomToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A7D80430EE63D6EA20B3BBA26A89B34 /* RDEPUBReaderBottomToolView.swift */; }; + CBEF43E74744676839326C2D833FC6FF /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 53D473C6F07982D3D25781A343EC5A99 /* PrivacyInfo.xcprivacy */; }; CC8B8F3D758E98B51F69EDFAA69663A4 /* NSString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 8ABDEFEA94DC6408D92AC66DA3625DE5 /* NSString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CD34CD25B6D8F562DAACBF8A8DBFB4A7 /* DTAnimatedGIF.m in Sources */ = {isa = PBXBuildFile; fileRef = BC332335B380BC51C4F05C5CCDFB9189 /* DTAnimatedGIF.m */; }; - CD9B90F6EB39FFE1E34CCFE1304067BC /* RDEPUBWebView+Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCC472137332414147193AA5DB35E4E0 /* RDEPUBWebView+Search.swift */; }; - CE4876B563FC74C40E0A5DD83F79B486 /* DTLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A1EBB9497F4846C84CA0BF5E4F84FC7 /* DTLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CF00DDCDE77C37AEF1EF253DB73AC6E3 /* RDEPUBTextBookModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 118CEB0580740B0E6F1922515A582397 /* RDEPUBTextBookModels.swift */; }; - CF1E18BDAEB4D8D2DED3E2DD38C23E95 /* RDEPUBJumpSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0212A000358F15ACC53BA2FDEA31CB19 /* RDEPUBJumpSession.swift */; }; + CD423A7A8D8F156279C62233AA4DAF1D /* DTPieProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA1E8494B86FFD79C639DCB8C21E1BB /* DTPieProgressIndicator.m */; }; + CD5204849FC7E2964D7B81BAA7F77264 /* default.css in Resources */ = {isa = PBXBuildFile; fileRef = 05D57D16346FAF830F1F82067307EA9F /* default.css */; }; + CD9B02582D2A74BF9508F0509696B271 /* RDEPUBReaderViewportMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5539807EBDC1A071F4E7C8C3DA8F4121 /* RDEPUBReaderViewportMonitor.swift */; }; + CE452E92A6D250A7CEC5FCA1DB3F2559 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 1E89FE5F2996336E862E82C1E14E0EE7 /* PrivacyInfo.xcprivacy */; }; + CE4F13F2F2812EB7B3919F0A91F2E858 /* ConstraintMakerPrioritizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E138EC76D0DF24544D29D1A4D7429E3 /* ConstraintMakerPrioritizable.swift */; }; + CE62D88B2B0EC135F19EF16E1EE898FB /* RDEPUBCFI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 930D75A53D2FD874346BF17C0A2CB1BC /* RDEPUBCFI.swift */; }; + CF2D91AB9CCA3E706A39D5126BA04C3B /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD768C27E392C934C06DFB4AC401037C /* ConstraintMakerRelatable.swift */; }; + CF9676D97EB35D85E8982BA0B31922CC /* SSAlertAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D2EC0B845131A88247902AEA26F40AE /* SSAlertAnimation.swift */; }; CFC49467FE75BFABC22A1CE2FFA26570 /* DTImage+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 12A5EA26EE7539EDDA90649D22FB675D /* DTImage+HTML.m */; }; + D02C303FBC1B11C826C8202F4CA02A09 /* RDEPUBReaderPaginationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EC91512D3BEFEDF5FCCF2E267E48B32 /* RDEPUBReaderPaginationCoordinator.swift */; }; + D0871D1ABC6B5B4B121BD9D1F77ED113 /* NSString+DTUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = DCECDBD73595CA88A2208000B4B68352 /* NSString+DTUtilities.m */; }; + D10EF7F047A9E5F6E96D92BE4A567C82 /* DTActivityTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8272D0B59ABD6652D0CAE3DFCC2C5EE1 /* DTActivityTitleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D1173237922081A644444BC00B51B8B8 /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDC41111F7B2BF68994C924BC0C5794C /* RDEPUBAttachmentTooltipOverlayView.swift */; }; D1A93B2D7F1B312755C48790338D7712 /* DTIframeTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = AA3CFD777AD76F97EBA05B3920F5786A /* DTIframeTextAttachment.m */; }; - D1BF333A09A6BDABFA1AF5A6D7F0364D /* RDEPUBReaderTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 244A872053DAE74B0F4DC07228A08353 /* RDEPUBReaderTheme.swift */; }; - D24F349DFE20048204D240D20C3144D2 /* NSFileWrapper+DTCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = 09C957F3199C596781EFA1DEA1DDCEC8 /* NSFileWrapper+DTCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D39BB74D08A120EADBBD1A2F5D306B9C /* DTHTMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D75FEDE65722CF41F7F32A164376926 /* DTHTMLParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D43CB99286214EB5B234FF938ABC3BBD /* wxread-default.css in Resources */ = {isa = PBXBuildFile; fileRef = 111B17BCED09E0F8D5AA9E8F7A335AF0 /* wxread-default.css */; }; - D4B8FE79789D1319E5EB3FDA4CF81F77 /* RDReaderViewProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B52533C54FDB9B4BEB5B173C34670F /* RDReaderViewProtocols.swift */; }; + D22006C17391103A0D2F496D05F012B3 /* Archive+Reading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0619F98DA80922E78A07321D0DC54F62 /* Archive+Reading.swift */; }; + D3D2648D63A8BED58114E8456BD73229 /* RDEPUBReaderController+ContentDelegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD0189649153ACCA56C4C8AD0BEF1E0D /* RDEPUBReaderController+ContentDelegates.swift */; }; D526E03C098DA6CF8F01C1BC126C9BBA /* DTCoreText-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CE7768E097F8BDE9FBE3752B98CD0101 /* DTCoreText-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D5824E0CE23134116C927AB027FED5AC /* RDEPUBReaderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87A3F451AC74F9A3D57EAD938B435AD6 /* RDEPUBReaderDelegate.swift */; }; - D6BB51AC76A2639666B4C3B11E4F53A6 /* NSString+DTPaths.m in Sources */ = {isa = PBXBuildFile; fileRef = A3565FEE19F19CB43A43409AFFF2BD2C /* NSString+DTPaths.m */; }; - D777DF8307388E85113173F9E88824CF /* RDEPUBReaderSearchCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC476BD15E1101987A52B894DC3CB02 /* RDEPUBReaderSearchCoordinator.swift */; }; - D7ABE878F849DA06F8A108420028D0B1 /* wxread-replace.css in Resources */ = {isa = PBXBuildFile; fileRef = 8C63018B1CE90D338115DC072191A153 /* wxread-replace.css */; }; - D82009338CF0770A05644859B1D9B2EE /* RDEPUBTypesettingPipeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87D486D53C26F9A8106173A8E30B255A /* RDEPUBTypesettingPipeline.swift */; }; - D8216D4D553B85B657B45D539A8E4777 /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF73643D6C558218A30F86F03A594CBA /* RDEPUBTextBuildPipelineInterfaces.swift */; }; - D82545E53018482BDC16B0FCB5CB6E6C /* ZIPFoundation-ZIPFoundation_Privacy in Resources */ = {isa = PBXBuildFile; fileRef = CA4A114775B98CEA4A566C18123B145F /* ZIPFoundation-ZIPFoundation_Privacy */; }; + D5D469DD6B6F98BCF293C5B83B693459 /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60657D08CCDB38BFED30BD40F4720CE4 /* ConstraintMaker.swift */; }; + D5FC94BE4999365112D0537777CA2FAB /* RDEPUBChapterSummaryDiskCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7DD486B95807F803EF1DD2976017779 /* RDEPUBChapterSummaryDiskCache.swift */; }; + D65E3E389E974CA5EC85C14F8AAC2197 /* RDEPUBStyleSheetComposer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 361565CCC385512EA14A6A2C9CFAF08B /* RDEPUBStyleSheetComposer.swift */; }; + D76431C60233FF62242A2BD1AE3C826A /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CF362F88AB69253F1898E53D7A286A /* ConstraintDSL.swift */; }; + D769636C7B23A599034D81095789FB99 /* NSURL+DTUnshorten.h in Headers */ = {isa = PBXBuildFile; fileRef = 054674EB90C625BB4BEA9368ED92592B /* NSURL+DTUnshorten.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D7C1729E34F5F2CBF878385EABB0F78A /* RDEPUBBackgroundTrace.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67580684B7C70423FB1C82CD1F685012 /* RDEPUBBackgroundTrace.swift */; }; + D7C8270984BB0CAC469E055BF18385FC /* NSData+DTCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 02EDFE0EEA47398F3E1A361A73AF6A6C /* NSData+DTCrypto.h */; settings = {ATTRIBUTES = (Public, ); }; }; D82DDA4C1E5C4D5378A9E5EA3F8E9DFE /* DTBreakHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 533CFFF04BE7BC4BDEAE11DF675A84CA /* DTBreakHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D8A67D6CCD80C9BDCE4DFB88AF6A7A37 /* SnapKit-SnapKit_Privacy in Resources */ = {isa = PBXBuildFile; fileRef = B9DCB5EC0B1CDADD221717CADDF62359 /* SnapKit-SnapKit_Privacy */; }; - D97F221A17BC3146FFA3C9D63EE5B232 /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 932FD688DE493323BA6B691BC2CB5094 /* LayoutConstraint.swift */; }; - DA1847B8B46AE4E2BEA8B767EE215437 /* UIViewFrameExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8C351514678D41C58869BD057D5483F /* UIViewFrameExtension.swift */; }; + D97D7DD788C4D18A1F59DBAE61D4B5D5 /* DTBase64Coding.h in Headers */ = {isa = PBXBuildFile; fileRef = B8E40E302B85493BDE0FE91F829EC01E /* DTBase64Coding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D9C976EBF3720A5029D15AAD3EC15E59 /* RDEPUBWebContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48325761E589FE657E084982A81D5DA6 /* RDEPUBWebContentView.swift */; }; DA5B51E5D80C161D2902B6FC60DA5EC8 /* DTImageTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 426D442C01742E4361F5BC34D43152A6 /* DTImageTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; DAD16D3E6EBB32FF96C63BFE6037065F /* DTLinkButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B75050E71BDD96FC19EC6BA129E6A /* DTLinkButton.m */; }; - DBA443EC801ABC4A0A3B6B47F8FEC945 /* UIColor+RDEPUBHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EE6DDF24FEC8EC73F462A296083A37B /* UIColor+RDEPUBHex.swift */; }; + DB0F934EA8172F157992E1909D319C41 /* RDEPUBPresentationRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76C28DE5D3FBC9B7F9C1477C95F14725 /* RDEPUBPresentationRuntime.swift */; }; + DB241AE043EAA24F7BF4EED186988C66 /* UIColor+RDEPUBHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFE6D8828F2634226CDA2F79A19625E3 /* UIColor+RDEPUBHex.swift */; }; DBCA42F7E1697F4EC82E0E7C9657851D /* DTAttributedTextCell.h in Headers */ = {isa = PBXBuildFile; fileRef = D4093D30B372960168C1349100DF7DE0 /* DTAttributedTextCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DC249D01F1F962D4AFF9C73F1034B746 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 100543FF7E9F503BC7C3380C327A2DE2 /* RDEPUBReaderAssemblyCoordinator.swift */; }; DC3E2932A82AD5D88D8B1EFBF004BEC8 /* DTCSSListStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = B509CD4B498635D4536245E43D802ED9 /* DTCSSListStyle.m */; }; - DD1CED401299E73280127E52CAB9C692 /* RDEPUBBookPageMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = E980E36577B236C9DC52A497F85388C3 /* RDEPUBBookPageMap.swift */; }; + DC7462EE3634E61D37537277E0D1C173 /* RDEPUBBackgroundPriorityPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B8F910B6B575B689194F9E306239FD5 /* RDEPUBBackgroundPriorityPolicy.swift */; }; + DD304690E329A997954FD30B7E101746 /* RDEPUBFontNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 545DD46BEAB1D1F7E0530E787095FCB2 /* RDEPUBFontNormalizer.swift */; }; DD73CD0E5148961D1ABD80E050122314 /* DTCoreTextFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = A1B031E2B903C2F177195C1C3D1D1EDB /* DTCoreTextFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DD75D0287B74630B9D2E4CC87ECA5D63 /* NSString+DTPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = FC5EC7C3D1808C9CF53354D7A3D69EE7 /* NSString+DTPaths.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DD909F2C768FC2BE36DA19EB9A2E9630 /* SSAlertSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DE4FA5133891593CB45AF36B8EBF60C /* SSAlertSwift-dummy.m */; }; + DDF0419BFB80D9D1E36AEE87218FC1F6 /* RDEPUBTextRendererSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = B55E6E99C6F879CFD19D3674CE20075C /* RDEPUBTextRendererSupport.swift */; }; DE68AD2F426FD462BC70F968E5AF5553 /* DTTextAttachmentHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ABC2F552388CD08EC1EFDEF606AE222 /* DTTextAttachmentHTMLElement.m */; }; - DEF81BE500F074BE66B148987D5CD8A3 /* RDEPUBTextPaginationInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D37EDA6C8F32FB02D2F5433B481ADDB /* RDEPUBTextPaginationInterfaces.swift */; }; - DF36E555D742A4D54A6E9FE7CA4818C9 /* RDEPUBAttachmentNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B3BB74CCE3CE21C373751EFECCB8116 /* RDEPUBAttachmentNormalizer.swift */; }; + DF1DCBB316F5B9BCF4A51CC20108CDE1 /* RDEPUBReaderTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 953EF1E3CA69D8F4BF3E4D41B1BEAE2C /* RDEPUBReaderTheme.swift */; }; DFB5A1C64C7908FD05BEFF7C7B571353 /* DTAttributedLabel.h in Headers */ = {isa = PBXBuildFile; fileRef = 5679D281C282896E6FC352C48E0AF439 /* DTAttributedLabel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DFC9D618545AE33032AEF2CA1BB3E07D /* SSAlertAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D2EC0B845131A88247902AEA26F40AE /* SSAlertAnimation.swift */; }; - E0B3A75AFA1355C7D966546FCCECEDAB /* RDEPUBReaderLocationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60CCD58E796945CC72B9D6E8F81B2A9F /* RDEPUBReaderLocationCoordinator.swift */; }; - E109CD1D23AF8F3224915E1B4821E305 /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CE078B465FDEF40EC0469626A2C2469 /* SnapKit-dummy.m */; }; - E1B3D40F705149804531ABB02BABAB2D /* RDEPUBReaderToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9A160FAAD45590651794EEF3A2F67FE /* RDEPUBReaderToolView.swift */; }; - E1D10A5A280E6697386740CB34C2DD54 /* RDEPUBNoteDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29AA31A90AEE6DCF012E1800AA10068B /* RDEPUBNoteDetector.swift */; }; + E14170A54A9726BECBB355762C685602 /* Data+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DC78D0B0F37BF9AD1058CACA9AAF9BE /* Data+Serialization.swift */; }; E1DA58105A72D6C0B77A8A9F7822BD68 /* DTCoreTextLayoutFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 029130886CE8E422D16ADF97468CB1B0 /* DTCoreTextLayoutFrame.m */; }; - E2EF13E16C0AD5AA232A647699EBE949 /* DTTiledLayerWithoutFade.m in Sources */ = {isa = PBXBuildFile; fileRef = 70F5D03B9B3B7F182C8F5C1F5D4FA7E7 /* DTTiledLayerWithoutFade.m */; }; E38FC7829B5BDD1588FA487E0FBAC208 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - E3DABD5EB079D2F846A71E05D6F9C58C /* DTFoundationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD568D38C209BA1CC0EBFA809A35204 /* DTFoundationConstants.m */; }; - E3EA77281840BF381947CA2DEFABB6E9 /* FileManager+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27B7D3C6F0C845E3D42BBA613FFB0465 /* FileManager+ZIP.swift */; }; - E6A0C3405B2EDFE7309A03DE216EBE6C /* RDEPUBReaderPaginationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40BBB1A6045BDF1E2F96D996DCCA1EF9 /* RDEPUBReaderPaginationCoordinator.swift */; }; - E6A9F131D1E9D30C00A05682E8BB348A /* RDReaderView+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A389B363039049240F249F3421CD7734 /* RDReaderView+CollectionView.swift */; }; - E75650616E01EFA39EF0F42279CDB0DE /* DTCustomColoredAccessory.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C6BE3B2DA9A8C4CD3760CDAD6F305A5 /* DTCustomColoredAccessory.m */; }; - E7D79D77E971BB2A846AAA0E545D1173 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9957BD076B5327D9E830B98BDCF61189 /* RDEPUBTextContentInteractionCoordinator.swift */; }; - E86782FC51128CD6D297E633D9D0F26E /* RDEPUBParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F6C930B6A92EF1CEA65FC355E7EABB /* RDEPUBParser.swift */; }; - E89192AC5F15EB1326A03A886F9B5B73 /* ConstraintDirectionalInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A651CEE8062C84A597DBC44ECA3DBCC1 /* ConstraintDirectionalInsetTarget.swift */; }; + E4B55D3DA872FD60436501A4880E8559 /* RDEPUBNotePopupCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AD7F70FD18BED0C429A85E579ABF569 /* RDEPUBNotePopupCoordinator.swift */; }; + E4B6BEF132A110AB19F8244537562719 /* RDEPUBBackgroundCoverageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A19E1D6BC8D283B9BC4BA0EBECBF172 /* RDEPUBBackgroundCoverageStore.swift */; }; + E6480EA3947A2C71A3096CCAEBFA9131 /* RDEPUBAssetRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49291029E1AB55E3D96DCB4484849F65 /* RDEPUBAssetRepository.swift */; }; + E72EC8AFFB5D6940C67E93D7D8BF8AA4 /* RDReaderView+ContentAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D170B1455CB3C94EFC34D7B67EDC001 /* RDReaderView+ContentAccess.swift */; }; E8AB5CE26A5224EF09E9E363D70C7775 /* DTDictationPlaceholderView.m in Sources */ = {isa = PBXBuildFile; fileRef = AFE0B56638AFB77F4455784A7ED59876 /* DTDictationPlaceholderView.m */; }; - E997293FB896E1C65526C5DEE74B4911 /* RDEPUBAssetRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB8ACC635A2AF36962035B54B2CC2C6 /* RDEPUBAssetRepository.swift */; }; + E8B4718E98F761D7BD63E98A96D79354 /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 882FA707ED3513D263A1E0656AAD2D33 /* ConstraintPriorityTarget.swift */; }; + E92E331262CD68DBE05495F8EA560548 /* wxread-dark.css in Resources */ = {isa = PBXBuildFile; fileRef = 8AE69217E6A738AC11FEB58F2603B17F /* wxread-dark.css */; }; + E95694741292C43023C955DDE54CC86C /* RDEPUBWebView+FixedLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = A47E648062E9BDBB9E46BD3DC4E12801 /* RDEPUBWebView+FixedLayout.swift */; }; EA0040823CCF8E97363DB5891F5DA6D0 /* DTCoreTextFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F2D44B82815CA3397BE2C9F64819B88 /* DTCoreTextFunctions.m */; }; - EA2A236F1F116705DE1A6C053969A220 /* RDEPUBReaderController+DataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = F080C0809566114997B5E6B9AF967C76 /* RDEPUBReaderController+DataSource.swift */; }; - EB0713283E3F74926A79C2E7D9151603 /* RDEPUBReaderController+RuntimeBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 019F2E2CAC5314EC6ACF38451D83955D /* RDEPUBReaderController+RuntimeBridge.swift */; }; - EB443E9860A66D1EFC70136AC83E2FCA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0834E84632886CDD9911CAB76183F1CE /* QuartzCore.framework */; }; + EA9136B1358F8EFA993DE6CFEEBEACF1 /* FileManager+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27B7D3C6F0C845E3D42BBA613FFB0465 /* FileManager+ZIP.swift */; }; + EBB6868C2AA00A71178273EA633FC2E5 /* RDEPUBResourceResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42B212FB3162CFF37D51BB3E93F765F5 /* RDEPUBResourceResolver.swift */; }; EBB7E4D4DB253B5F1267CF9B4DDB4E93 /* DTCoreTextFontDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = BCCA590DB72AA93275262A414F16578A /* DTCoreTextFontDescriptor.m */; }; - EC8BE26122FA096D22E9A3204847F5F6 /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B10D3EC1701BBA4D69926915F942558 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ED9EE6BE3F0C590D9E36A371406821BF /* RDEPUBFontFallbackResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED40EE4143B1EC69166CD58B11C00B40 /* RDEPUBFontFallbackResolver.swift */; }; + ECFA20CFAACA1435FC6E6458F774FE56 /* RDEPUBTextBookCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF164505A477C6ED40FE8EF0CB2E6693 /* RDEPUBTextBookCache.swift */; }; + ECFB291BFD3228FABB8D7CE994E44B61 /* RDEPUBChapterWindowCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8428598288FB3C84E993319B4E11B03 /* RDEPUBChapterWindowCoordinator.swift */; }; + ED1258ECC58FC5AC544DDE1883E42034 /* RDEPUBAttachmentNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5847BF261408B9B82FB3BF7A9390AB3 /* RDEPUBAttachmentNormalizer.swift */; }; + ED3BD7326F33BCB93CD0B8643A4F1BAB /* RDEPUBReaderChapterListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58AD77A6558F2424BFBBB829F7651AAC /* RDEPUBReaderChapterListController.swift */; }; + ED95A429520E9CFB6C09FF1DC88AEF00 /* RDEPUBParser+ReadingProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B4D7B26E7ADBB6053AB3D0ECFDBF379 /* RDEPUBParser+ReadingProfile.swift */; }; EDA269B595D70EC2B9D81DC890157D63 /* DTAccessibilityViewProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = F37563A56C180CE18EEFADE56FA3C17F /* DTAccessibilityViewProxy.h */; settings = {ATTRIBUTES = (Public, ); }; }; EE4F0992A0F597320FF7BDE4691D0FD4 /* NSString+CSS.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D6C48939A8498A09DCFC7F41ECB8A25 /* NSString+CSS.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EF1B4ECA85C386854877F6F8EB9B19DC /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 1E89FE5F2996336E862E82C1E14E0EE7 /* PrivacyInfo.xcprivacy */; }; - EF2FC7B0D522E2F9B299079073295EA7 /* Data+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DC78D0B0F37BF9AD1058CACA9AAF9BE /* Data+Serialization.swift */; }; - EFBB4EBD4D8E1397CBAB0C89EB735322 /* RDReaderPageChildViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDFBDFD59B4D9B04D1AA516EA1A41F88 /* RDReaderPageChildViewController.swift */; }; + EE719709C9E809F3CA56B801792C1CF8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0834E84632886CDD9911CAB76183F1CE /* QuartzCore.framework */; }; + EF4307848004954110D2EBDA5399C02F /* Entry+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7345CE45F696634CEA692A86D16F684C /* Entry+ZIP64.swift */; }; + EF8FD9D42EB2AC4A434E6FEA3E84B47D /* UIColor+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB8FBD335486F255F42811FC49E5657C /* UIColor+RDEPUB.swift */; }; + EFAE66F7F5876B3C3F2357E5D52DF341 /* NSFileWrapper+DTCopying.m in Sources */ = {isa = PBXBuildFile; fileRef = 1756C6FFCA695290BA62DA4E7B6DD20B /* NSFileWrapper+DTCopying.m */; }; + F000848FB2DEADE8E5FBA17C3F6756CF /* RDEPUBNotePopupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7FB9FD3FFFF0D8E3D9D354EC7AF35E1 /* RDEPUBNotePopupViewController.swift */; }; F006F73F17F2E3CC0E7852E9357BA946 /* DTAnchorHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 424F12BEB0EDAAF1C719B5103D30C653 /* DTAnchorHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F0B19530682C9B4FA79A5D238CEA771E /* RDEPUBFontNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FED226E2FA9815E3B5D4F7081930466 /* RDEPUBFontNormalizer.swift */; }; + F038DE4614358844588617D12CB7C530 /* RDEPUBTextSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFA3CC091FA3A16CC09C9C66D1BC0E50 /* RDEPUBTextSelectionController.swift */; }; + F09125B0FFA7F64C4682813E3B607E2D /* RDEPUBRenderDiagnosticsCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = B898A07D2E7D8E62F64BD28BAFA3DEFA /* RDEPUBRenderDiagnosticsCollector.swift */; }; + F0DCEA4158B69D4D7F327C580EB8CDE5 /* RDEPUBFragmentMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E8C914D69561C6C9736FCB3C6698CCC /* RDEPUBFragmentMarkerInjector.swift */; }; F0F631056BADA32253528247DF493272 /* DTHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = EE9D4A455723797A27F04A15C4E47823 /* DTHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F11AE2A2CF1BF53592BA52A221BE5C73 /* RDEPUBReaderEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F887E8F4A5F82464101B5352D2AF31 /* RDEPUBReaderEnvironment.swift */; }; - F1DA41F2D5EB8A732EB2E1A3D3775368 /* NSArray+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 73940D215D644B6815A09DA802CFBDDF /* NSArray+DTError.m */; }; + F12E325A7ED834D878D4DA821D57594A /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4684B406B325B35F39322D75B59B6479 /* ConstraintLayoutGuideDSL.swift */; }; F1E9B6D0728711AE4D7154616DBC17EC /* Pods-ReadViewDemo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AA0811310099A4BCB3D52683B70DB3D1 /* Pods-ReadViewDemo-dummy.m */; }; - F28F3DAE50B7D667187EF4CF4F6F79B9 /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BE22EE711B7A38A4443E1C1C12BD79 /* ConstraintMultiplierTarget.swift */; }; - F2BBFDBFAA439DB5545BBBE960CE81D7 /* RDEPUBJavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16A4528D7724EB07379829622EC7C8BE /* RDEPUBJavaScriptBridge.swift */; }; + F2B594C44772081247BCDBCBC43625D7 /* RDEPUBReaderController+DataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = B99FF5D96CD045BCC53A9F6F8493C379 /* RDEPUBReaderController+DataSource.swift */; }; + F4422D0EBA217138896E901214ABB8E2 /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59036F71583DAE2641D9DAA567DBD208 /* RDEPUBTextBuildPipelineInterfaces.swift */; }; F4A2E3C4237B8931F61B72FF0BDD6D69 /* DTObjectTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = F038FB491B9A4A53447EF0DC333301AE /* DTObjectTextAttachment.m */; }; - F4FA2E5B5507F0658C4E886A00795A22 /* RDEPUBCFIRecoveryEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F28B33E9CEA8C57E5E55EDC33C596 /* RDEPUBCFIRecoveryEngine.swift */; }; - F5367C578F9CA3E525919A16F00120C9 /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E5637603691B9B35C2A886B686D3CE7 /* ConstraintViewDSL.swift */; }; - F545EE19BBCEFA1C7C58B15D9255859F /* RDEPUBSemanticMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FEFC049D874D868076BE0F19A3F643B /* RDEPUBSemanticMarkerInjector.swift */; }; + F4E1C9E1686B902C7D26BF68B034AFEE /* RDEPUBCFIMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05ECE185AAFC5A857734DF5495F8E7C2 /* RDEPUBCFIMarkerInjector.swift */; }; + F51FF3BE649DB4F45C1CEDBE5B9992AB /* NSMutableArray+DTMoving.m in Sources */ = {isa = PBXBuildFile; fileRef = 53499F40E1790A6CBE8AFEB3AC5BEFC8 /* NSMutableArray+DTMoving.m */; }; F58ABA106C6200175DF574DF05A75BA8 /* DTAccessibilityElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F0486D3B46DC92AB254D6EE9CC233BF /* DTAccessibilityElement.m */; }; - F5935539246A112F248693526C1503FC /* rangy-core.js in Resources */ = {isa = PBXBuildFile; fileRef = 212C8E23F9694FF5B5B5FEF9E774E0C6 /* rangy-core.js */; }; F5A424E67F41C4F7B830CE2F7E71570D /* DTCoreText-Resources in Resources */ = {isa = PBXBuildFile; fileRef = F4E2B1AC73977F10254628C0B7EBE38F /* DTCoreText-Resources */; }; - F5F01F1B8993CC080F1F4EAFF1D19E40 /* RDEPUBChapterDataCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DE61097D0F21BED63801FD97D420AA7 /* RDEPUBChapterDataCache.swift */; }; + F5CF4159843CE7E2E3C023B1E326B7EE /* UIScreen+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = A3765B289CB7E6C5DF6160D8EBC83C3C /* UIScreen+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; F6036BBDFE7484F5A453F6876C97C098 /* NSAttributedString+SmallCaps.m in Sources */ = {isa = PBXBuildFile; fileRef = 76F99C8130EE83A22CD223C7F5E6E66E /* NSAttributedString+SmallCaps.m */; }; F61102C9BF3D6296CB6C6B754ABF98C5 /* DTTextHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CFEE298DD52246B46E6FA62B16B38DF /* DTTextHTMLElement.m */; }; - F64C61879DA335A141871B74060C3659 /* RDEPUBTextPaginationSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02288EA3830887D01C4E6E67E9708C18 /* RDEPUBTextPaginationSupport.swift */; }; - F6658D5406B461AC7E42F7A969A5F673 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - F67A787600193EFF9F366980B3538A96 /* NSArray+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = CEA93EDA6ED54D374265AA5D6B9EBBA9 /* NSArray+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F69B4C0B51AA5CEF254C09A066F90D32 /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32A5ABB8F3656A110B955B0306E9A8C3 /* ConstraintInsetTarget.swift */; }; - F80C879270B540C7F5FBA52ED93EC572 /* Archive+Writing.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF988440049800DB7824A94B81D20254 /* Archive+Writing.swift */; }; - F838B75559262C543111C53B7587AB9D /* RDPlainTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C2FB3A2214ED9328FC7A0B36FA1C5B /* RDPlainTextBookBuilder.swift */; }; - F866E4E4499F3638ED1281A74171D2C8 /* RDEPUBPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F799B8BE1C80D381CED94E9496512A6 /* RDEPUBPreferences.swift */; }; - FA1D78A8365F3A6C455670459C164745 /* RDEPUBTextPageDecorationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04DB4D5A8B4DC5C6698F73C872584EC6 /* RDEPUBTextPageDecorationView.swift */; }; - FA61965EA4E8C06A34051FD983B851E3 /* RDEPUBReaderController+TableOfContents.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF1EFC40E2A42337D7C758A6A4F26D7 /* RDEPUBReaderController+TableOfContents.swift */; }; - FAC4A4BC1E708303B032039339027FE9 /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5245010774F8F1C4857763CC7B96E7B4 /* ConstraintMakerExtendable.swift */; }; - FB7DB5861C466FAC927E77FA86E49E84 /* RDEPUBTextSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E79BD89A1ED27EEDC4DE2290FF3118DF /* RDEPUBTextSelectionController.swift */; }; - FB85B50672F0BFADF5AA7F3B430B7B95 /* SSAlertViewExtention.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2280F2302F54E90122747821FE681543 /* SSAlertViewExtention.swift */; }; - FBED75A2764DF39E8AFDF8B66AB145CF /* SSAlertAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97995C73297871C353364E685939DED9 /* SSAlertAnimationController.swift */; }; + F61F52F9C7061BEBF0F04FE32C57963F /* RDEPUBWebView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3BFB23BF28CE5120D1FFBD76664087B /* RDEPUBWebView+Configuration.swift */; }; + F630BEC2086983146AD26D9396323AF1 /* RDEPUBCFIParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE28C0B33B3E44975093B0F177FDD67F /* RDEPUBCFIParser.swift */; }; + F65BAED40531ADE85C230A2D779A5182 /* Data+CompressionDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D641809A99849F80FDCB02F8CE8D6A0 /* Data+CompressionDeprecated.swift */; }; + F6D6059B11756279D4DDC1C6550091E6 /* RDEPUBReaderTableOfContentsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA142E0FB9C9440BA93BE7BF027F095F /* RDEPUBReaderTableOfContentsItem.swift */; }; + F7198C456F52C6ADFDC43B4B111EBB4B /* RDEPUBWebView+Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50319253F9CADECC2B97F1734E0C834A /* RDEPUBWebView+Search.swift */; }; + F8054331081E9008FFBB542F83B40AAA /* RDReaderGestureController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10617286346E2E6D7BB30203A65302CA /* RDReaderGestureController.swift */; }; + F894C4D1E75C1E9D24AE2CCCC8FFF519 /* RDEPUBTextSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06733E30802CA08ACF312C763BD37795 /* RDEPUBTextSearchEngine.swift */; }; + F8D8F88FF462C764E9B8B3D86DC90837 /* RDEPUBTextContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C7F146589FBD04B46D846AE1ECBD10A /* RDEPUBTextContentView.swift */; }; + F94303E469C66C27A25A2596C357318E /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 932FD688DE493323BA6B691BC2CB5094 /* LayoutConstraint.swift */; }; + FA3F2F0647033F749B690F1F43F1FF9E /* DTLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B007AEEACE9EA271DD73AFD80A74D83 /* DTLog.m */; }; + FA58AAD5F76A38FA6D32BF44408811E4 /* RDEPUBCFIPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11CD06780A381427FE5EDE9D07D4D970 /* RDEPUBCFIPath.swift */; }; + FB01A47EE1D09C33FE942CE56D3A874E /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B10D3EC1701BBA4D69926915F942558 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FC2546E55A86C4D94D5F8B809FB5C897 /* RDEPUBChapterWindowSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23D09A34060F1B615AA1CA4089B37AC2 /* RDEPUBChapterWindowSnapshot.swift */; }; + FC2603B7B764AACD1C0BFA66BFC597B2 /* SSAlertViewExtention.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2280F2302F54E90122747821FE681543 /* SSAlertViewExtention.swift */; }; + FC261482E0571EF1D2C176DCC1416271 /* NSArray+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 73940D215D644B6815A09DA802CFBDDF /* NSArray+DTError.m */; }; + FC372F89CBD06240B936AB0B8C4AC67D /* RDReaderPagingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7F40EAB66363D681DA68981B17FB492 /* RDReaderPagingController.swift */; }; FC5F52919451A15639442B46B38E4C67 /* DTCoreTextLayoutFrame+Cursor.m in Sources */ = {isa = PBXBuildFile; fileRef = E62C5E593037EF8A45E7FAA847D0277C /* DTCoreTextLayoutFrame+Cursor.m */; }; - FC665839522860AD2F7C6B4BB3464BE2 /* RDEPUBReaderAnnotationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED00B070AB7D3CFFF967D5978A298DA3 /* RDEPUBReaderAnnotationCoordinator.swift */; }; - FD224ECAFC982C3AB83000CC33A6FAE3 /* Entry+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7345CE45F696634CEA692A86D16F684C /* Entry+ZIP64.swift */; }; + FC9E9F7AC93678A4D81A3F0D28D198E9 /* RDEPUBRuntimePageCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DE4FAC18642D5E8D148D8A1E5A566 /* RDEPUBRuntimePageCount.swift */; }; + FCD1FF6DA0BBED5100CEA56D71B2EB04 /* RDEPUBPageLayoutSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47889215B9D350817A491970E6AED97C /* RDEPUBPageLayoutSnapshot.swift */; }; FD5D68887297CFA94F543C49DC68A156 /* DTHTMLAttributedStringBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C496AB6A73C2D0BD0FF340A6A2960D5 /* DTHTMLAttributedStringBuilder.m */; }; - FD8E2F19C9BB614D91B36531A67C528C /* RDReaderTapRegionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A8108BD01EDCF1A37193D87427C6D2 /* RDReaderTapRegionHandler.swift */; }; - FDFEE2DFE07412D7170E12942E66BF2A /* RDEPUBPageResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = D61ED230892882E40FEE83CDBB7A9D93 /* RDEPUBPageResolver.swift */; }; - FE0E10A48B6213CD3FDA7737C07EE445 /* NSString+DTFormatNumbers.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D86C7063D1128EAEB3A30EBEF214B3F /* NSString+DTFormatNumbers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FD6C4803D3BD6697D01780015FAA1458 /* RDEPUBTextAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80D9ED51333D0F99752A8408020C77AF /* RDEPUBTextAnchor.swift */; }; + FE33334602C29ADE729F7AAE4C686668 /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C647A2EB2720BCBF88B160D124B57BF /* UILayoutSupport+Extensions.swift */; }; FEB00C614DCB6A8A7BDF8DEE11260984 /* NSMutableAttributedString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = B0500CA69405E23B09291359EB28331E /* NSMutableAttributedString+HTML.m */; }; - FECA4D68B4246B2EF9483B1C55180EBD /* Archive+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA251BAC8B430B3A4D4C4321046B990 /* Archive+Deprecated.swift */; }; - FEF320B563A2815CFEFD132F9420F8E9 /* NSString+DTUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = BE547E464E5D34F9FFB24BAC81D1E4CC /* NSString+DTUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FF005292EE0721AD1102DB5A34A97E9D /* RDEPUBCFIResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645B67E60B0E03563BF2A759753BEEE2 /* RDEPUBCFIResolver.swift */; }; - FF18F99842B1E8108D72650D124C49A0 /* RDEPUBReaderController+RenderSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0FCBCDE580CFE3B2A980871EE253246 /* RDEPUBReaderController+RenderSupport.swift */; }; - FF30530E9BFE73D2EC9A20EB624B4528 /* epub-bridge.js in Resources */ = {isa = PBXBuildFile; fileRef = 2EDD5A25D7DC1EED92829AE2851EEF2A /* epub-bridge.js */; }; - FF70E3AAA12064457129DF56B253D8AE /* RDEPUBChapterOffsetMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48051F94914D1A8DE273B7F6F3D8E9EB /* RDEPUBChapterOffsetMap.swift */; }; + FEE25EB95A909D28146B01F50AB9C904 /* UIScreen+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F051D813D50D20D53205D5FDCAA877C /* UIScreen+DTFoundation.m */; }; + FFCD89F746514E86CC9E99A60E64D61B /* Archive+Progress.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD987C2FA7C8FBC96FD024E421DA0E68 /* Archive+Progress.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 26971A0E8DB2A61E3862ECEEF1EEFCA1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8619D5ADECF2B26CFD9A9826D61D289A; - remoteInfo = SSAlertSwift; - }; - 3A10B21C14EB4C43BF4ACC905763F74A /* PBXContainerItemProxy */ = { + 04FFC401B252E7BCD021482951CB6BF1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 19622742EBA51E823D6DAE3F8CDBFAD4; remoteInfo = SnapKit; }; - 55CF96AB18DBA5FBFAD43C7B70064B3A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; - remoteInfo = DTFoundation; - }; - 59B49D2484B7E1D9D18A00AB4FF4BDB1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; - remoteInfo = ZIPFoundation; - }; - 5AFE7731761C5AFC7B80D0792B571B09 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C7A8D82E407CD3FDC3BA55CEE519B252; - remoteInfo = "ZIPFoundation-ZIPFoundation_Privacy"; - }; - 724D7793A1E88452A32F4F274C9D605C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = AE7F393FB7805DE2664AB4111873F907; - remoteInfo = "RDReaderView-RDReaderViewAssets"; - }; - 7261C923474564FED3877DEB0109CDE2 /* PBXContainerItemProxy */ = { + 22BB1F120B8BE2CDBECB11ED2A9C4EFB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8619D5ADECF2B26CFD9A9826D61D289A; remoteInfo = SSAlertSwift; }; - 72E3B02DD9EF31111102B5A7D352AD70 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = AA2E57587AA8EECA63C4BE08EA3CB6D2; - remoteInfo = RDReaderView; - }; - 9A1EA07419B17A0670A5EB80AA680965 /* PBXContainerItemProxy */ = { + 29E236F5FC2EAE3DC8E25AE4B11C749B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; remoteInfo = ZIPFoundation; }; - A4A04C0B68BF1A6736FC99F5AA474861 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; - remoteInfo = DTFoundation; - }; - A73CA8977765B10396E9958EA55DA3A2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 19622742EBA51E823D6DAE3F8CDBFAD4; - remoteInfo = SnapKit; - }; - B0DABEAAF6A0CA044722029D7BC1092E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; - remoteInfo = DTCoreText; - }; - BD30C0E521B2BEE7799F9A6F7344848A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0C24CB0E87A728A11AA1124CB360D6A1; - remoteInfo = "DTCoreText-Resources"; - }; - EEC2953A3DDE3647455056298820283D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; - remoteInfo = DTCoreText; - }; - FE70E592BC251F07D191F6827E2CF57C /* PBXContainerItemProxy */ = { + 3E6D8EDF5498446099B387DD9BB81D95 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8A8DB685241263AFDF5E6B20FE67B93A; remoteInfo = "SnapKit-SnapKit_Privacy"; }; + 417F80B067DF93DCD6E6ED0DCC7BDE0B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; + remoteInfo = DTFoundation; + }; + 544B5AD60561B80F8F55BB1203814841 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; + remoteInfo = DTFoundation; + }; + 6642083DC898BC7F864CCCA3293ECEE0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; + remoteInfo = ZIPFoundation; + }; + 672E86FACF832D60405977714EFBB3A4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C7A8D82E407CD3FDC3BA55CEE519B252; + remoteInfo = "ZIPFoundation-ZIPFoundation_Privacy"; + }; + 6A1037ABDFA57F93BA3EEA2239EF8BD4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; + remoteInfo = DTCoreText; + }; + 834DE8DAF657C6E3C86813C528C3AF5A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AE7F393FB7805DE2664AB4111873F907; + remoteInfo = "RDReaderView-RDReaderViewAssets"; + }; + B8B574023C6A5A8EB40C86AC78E6E104 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AA2E57587AA8EECA63C4BE08EA3CB6D2; + remoteInfo = RDReaderView; + }; + CBC99AD96DBA1A12A5A3D7EBD99EA30B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 19622742EBA51E823D6DAE3F8CDBFAD4; + remoteInfo = SnapKit; + }; + CE2FD9FBF5539D25AFA1E7A15E4C86E4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; + remoteInfo = DTCoreText; + }; + D3E98DD4790BB372C0E5F91F8321F7DE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8619D5ADECF2B26CFD9A9826D61D289A; + remoteInfo = SSAlertSwift; + }; + FED8F0022C504C26192D989340E637E7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0C24CB0E87A728A11AA1124CB360D6A1; + remoteInfo = "DTCoreText-Resources"; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 010BA37F9FCB8C9AF363CC966A76A455 /* RDEPUBReaderSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettings.swift; sourceTree = ""; }; - 013A3E32348433787547280A0B53E82D /* RDEPUBReaderLoadCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLoadCoordinator.swift; sourceTree = ""; }; - 0146E639757C4B0ED78C4CA12DA7FDD7 /* RDEPUBNavigatorLayoutContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNavigatorLayoutContext.swift; sourceTree = ""; }; 015F3EE69253C66E11B931E3360BA5FE /* DTCoreText-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DTCoreText-dummy.m"; sourceTree = ""; }; - 019F2E2CAC5314EC6ACF38451D83955D /* RDEPUBReaderController+RuntimeBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RuntimeBridge.swift"; sourceTree = ""; }; - 0212A000358F15ACC53BA2FDEA31CB19 /* RDEPUBJumpSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJumpSession.swift; sourceTree = ""; }; - 02288EA3830887D01C4E6E67E9708C18 /* RDEPUBTextPaginationSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPaginationSupport.swift; sourceTree = ""; }; 029130886CE8E422D16ADF97468CB1B0 /* DTCoreTextLayoutFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayoutFrame.m; path = Core/Source/DTCoreTextLayoutFrame.m; sourceTree = ""; }; + 02946CDDA8033AFAA82187D50800FEA8 /* ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; sourceTree = ""; }; 02CF362F88AB69253F1898E53D7A286A /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Sources/ConstraintDSL.swift; sourceTree = ""; }; 02EDFE0EEA47398F3E1A361A73AF6A6C /* NSData+DTCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+DTCrypto.h"; path = "Core/Source/NSData+DTCrypto.h"; sourceTree = ""; }; - 033DD9B982E8F1F948C5787EBF92FF84 /* RDEPUBPresentationRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPresentationRuntime.swift; sourceTree = ""; }; - 0348219C5299B3BE84133818923C2495 /* RDEPUBChapterTailNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterTailNormalizer.swift; sourceTree = ""; }; + 02FE773F7655B2174F160FE1621181BB /* RDEPUBReaderEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderEnvironment.swift; sourceTree = ""; }; + 033D935836CD653A79E9152E2D84CEEF /* RDEPUBFixedLayoutTemplate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFixedLayoutTemplate.swift; sourceTree = ""; }; 045ADBF2087ADD914A9CA0B62EBF2A9F /* Pods-ReadViewDemo.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ReadViewDemo.modulemap"; sourceTree = ""; }; - 0461A4D5A2D3198072DA0E85F0365880 /* RDEPUBSelectionState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionState.swift; sourceTree = ""; }; - 04DB4D5A8B4DC5C6698F73C872584EC6 /* RDEPUBTextPageDecorationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageDecorationView.swift; sourceTree = ""; }; 04F9B298989305B9569B71E448E8C1D4 /* FileManager+ZIPDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FileManager+ZIPDeprecated.swift"; path = "Sources/ZIPFoundation/FileManager+ZIPDeprecated.swift"; sourceTree = ""; }; + 0524B881754B1D6EBC90981B8760C6B7 /* RDEPUBCFIGenerator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIGenerator.swift; sourceTree = ""; }; 054674EB90C625BB4BEA9368ED92592B /* NSURL+DTUnshorten.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURL+DTUnshorten.h"; path = "Core/Source/NSURL+DTUnshorten.h"; sourceTree = ""; }; + 0595FF1B5274FDF6F9143B6F7FA18D61 /* RDEPUBReaderController+AttachmentTooltip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+AttachmentTooltip.swift"; sourceTree = ""; }; 05D57D16346FAF830F1F82067307EA9F /* default.css */ = {isa = PBXFileReference; includeInIndex = 1; name = default.css; path = Core/Source/default.css; sourceTree = ""; }; + 05ECE185AAFC5A857734DF5495F8E7C2 /* RDEPUBCFIMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIMarkerInjector.swift; sourceTree = ""; }; 0619F98DA80922E78A07321D0DC54F62 /* Archive+Reading.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Reading.swift"; path = "Sources/ZIPFoundation/Archive+Reading.swift"; sourceTree = ""; }; 061BD3911E4E530C792E65CED7868C33 /* DTBase64Coding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTBase64Coding.m; path = Core/Source/DTBase64Coding.m; sourceTree = ""; }; + 06733E30802CA08ACF312C763BD37795 /* RDEPUBTextSearchEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSearchEngine.swift; sourceTree = ""; }; 073A7F9DF1A554BD1B324EA9E0090E91 /* DTObjectTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTObjectTextAttachment.h; path = Core/Source/DTObjectTextAttachment.h; sourceTree = ""; }; - 07F94C7EE98654BB19A56E9BB717727B /* RDEPUBBackgroundCoverageStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundCoverageStore.swift; sourceTree = ""; }; + 0786D6430A29C2F90E4832048559BE21 /* RDReaderSpreadResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderSpreadResolver.swift; sourceTree = ""; }; + 078D30B87BEEB64D27E0BDB8EB562475 /* RDEPUBCFIRecoveryEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIRecoveryEngine.swift; sourceTree = ""; }; + 07C08997AE3D75194E400010A0AE4820 /* RDEPUBTextLayoutFrame.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextLayoutFrame.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; }; + 091E53DC8215AED45D88A2ABA24A2140 /* epub-bridge.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "epub-bridge.js"; path = "Sources/RDReaderView/EPUBCore/Resources/epub-bridge.js"; sourceTree = ""; }; 09BE22EE711B7A38A4443E1C1C12BD79 /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Sources/ConstraintMultiplierTarget.swift; sourceTree = ""; }; 09C2D4A3D4F602D125FF38B56C91CF84 /* ZIPFoundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ZIPFoundation.modulemap; sourceTree = ""; }; 09C957F3199C596781EFA1DEA1DDCEC8 /* NSFileWrapper+DTCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSFileWrapper+DTCopying.h"; path = "Core/Source/NSFileWrapper+DTCopying.h"; sourceTree = ""; }; - 0A0A410374DBCE1B5533846F0BCBC36C /* RDEPUBStyleSheetComposer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleSheetComposer.swift; sourceTree = ""; }; + 0AE0BE26FBA95F74B6173965BEC302EB /* RDEPUBSemanticMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSemanticMarkerInjector.swift; sourceTree = ""; }; 0B10D3EC1701BBA4D69926915F942558 /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = ""; }; 0B7771FDE9AB1688166584C0AA03F12A /* DTCoreTextFontCollection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextFontCollection.h; path = Core/Source/DTCoreTextFontCollection.h; sourceTree = ""; }; 0C6BE3B2DA9A8C4CD3760CDAD6F305A5 /* DTCustomColoredAccessory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCustomColoredAccessory.m; path = Core/Source/iOS/DTCustomColoredAccessory.m; sourceTree = ""; }; + 0D170B1455CB3C94EFC34D7B67EDC001 /* RDReaderView+ContentAccess.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+ContentAccess.swift"; sourceTree = ""; }; + 0D253DF65322509913DE34899979C30B /* wxread-default.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-default.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-default.css"; sourceTree = ""; }; 0D75FEDE65722CF41F7F32A164376926 /* DTHTMLParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLParser.h; path = Core/Source/DTHTMLParser/DTHTMLParser.h; sourceTree = ""; }; 0E138EC76D0DF24544D29D1A4D7429E3 /* ConstraintMakerPrioritizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPrioritizable.swift; path = Sources/ConstraintMakerPrioritizable.swift; sourceTree = ""; }; + 0E160FF00EF4B6DB318FEDCD72A026F3 /* RDEPUBDTCoreTextRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDTCoreTextRenderer.swift; sourceTree = ""; }; + 0E5D2C72E80EF71ECCFDFE5C476ADADE /* RDReaderPreloadController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPreloadController.swift; sourceTree = ""; }; + 0E78795FD43E657B2F567418E0A7EB30 /* String+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+RDEPUB.swift"; sourceTree = ""; }; 0E8C0D83EB6EDE71B264B6B0DD4644F5 /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Sources/LayoutConstraintItem.swift; sourceTree = ""; }; - 0EA2FAD0839C3EB52650B2300B7E74AB /* RDReaderView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RDReaderView.debug.xcconfig; sourceTree = ""; }; - 0EB4A1F095257F5F9410518DCB1053FB /* UIColor+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUB.swift"; sourceTree = ""; }; - 0F0670803E8267332E1891D6AB6E5A3F /* RDEPUBReaderSearchBarView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchBarView.swift; sourceTree = ""; }; + 0F3F0149FB61996B3FFFD4771F697189 /* RDEPUBMetadataParseCancellationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseCancellationController.swift; sourceTree = ""; }; 0F5D34047BAA894BEF1DFA23E6A9DAB1 /* DTCoreTextMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextMacros.h; path = Core/Source/DTCoreTextMacros.h; sourceTree = ""; }; + 0F9E2282A0A515A241F80997B2F28767 /* RDEPUBTextPageRenderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageRenderView.swift; sourceTree = ""; }; + 0FADF7F2A0784AA8BE178F33CACE42C9 /* RDEPUBReaderPersistence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPersistence.swift; sourceTree = ""; }; 0FC368BD2A8D266EB771E5FB9A5A5B3C /* NSDictionary+DTError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+DTError.h"; path = "Core/Source/NSDictionary+DTError.h"; sourceTree = ""; }; - 100543FF7E9F503BC7C3380C327A2DE2 /* RDEPUBReaderAssemblyCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAssemblyCoordinator.swift; sourceTree = ""; }; - 111B17BCED09E0F8D5AA9E8F7A335AF0 /* wxread-default.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-default.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-default.css"; sourceTree = ""; }; - 118CEB0580740B0E6F1922515A582397 /* RDEPUBTextBookModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookModels.swift; sourceTree = ""; }; + 1058DD74F97F43193DBA11E135ACFF22 /* RDReaderViewProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderViewProtocols.swift; sourceTree = ""; }; + 10617286346E2E6D7BB30203A65302CA /* RDReaderGestureController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderGestureController.swift; sourceTree = ""; }; 11B604FC3B0D5C91FEA763DCC0BE4DC5 /* DTHTMLParserNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLParserNode.m; path = Core/Source/DTHTMLParserNode.m; sourceTree = ""; }; + 11CD06780A381427FE5EDE9D07D4D970 /* RDEPUBCFIPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIPath.swift; sourceTree = ""; }; 12A5EA26EE7539EDDA90649D22FB675D /* DTImage+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "DTImage+HTML.m"; path = "Core/Source/DTImage+HTML.m"; sourceTree = ""; }; 13AB6A32A293E3DC21A7047C6DB958CA /* DTHTMLParserTextNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLParserTextNode.m; path = Core/Source/DTHTMLParserTextNode.m; sourceTree = ""; }; - 13DBC142B0461E436AACC85794DA80D0 /* RDEPUBReadingLocationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReadingLocationModels.swift; sourceTree = ""; }; 13E1548FC42118F1A4164739DE6BE4E9 /* UIFont+DTCoreText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIFont+DTCoreText.m"; path = "Core/Source/UIFont+DTCoreText.m"; sourceTree = ""; }; - 1541A3CEA0FCBABEF9872A60FAEF47B5 /* wxread-dark.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-dark.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-dark.css"; sourceTree = ""; }; + 14DBB472BDBF872F8A5C3A7460B17A31 /* RDEPUBPaginationState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationState.swift; sourceTree = ""; }; 15941683D394FB8D7EAE91CD2CF03FF1 /* UIImage+DTFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+DTFoundation.h"; path = "Core/Source/iOS/UIImage+DTFoundation.h"; sourceTree = ""; }; - 167AF6E907DF607CF1D5F5B0FA05B565 /* RDEPUBChapterLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLocation.swift; sourceTree = ""; }; - 16945B1BA7C2D8D318AA4A97FB53A619 /* RDEPUBPageLayoutSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageLayoutSnapshot.swift; sourceTree = ""; }; - 16A4528D7724EB07379829622EC7C8BE /* RDEPUBJavaScriptBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJavaScriptBridge.swift; sourceTree = ""; }; - 172DDB09A6DD0C1A92FCD7AF5060B657 /* RDReaderGestureController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderGestureController.swift; sourceTree = ""; }; + 15DB2B4B89706EFDAB413FC86A6C29C0 /* RDEPUBReaderController+RenderSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RenderSupport.swift"; sourceTree = ""; }; + 16A3654E9B076CBACAB460CDD311C9B6 /* RDEPUBReaderState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderState.swift; sourceTree = ""; }; + 174A6B5E9BDD0636D95688D70EEEF226 /* RDEPUBReaderAnnotationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAnnotationCoordinator.swift; sourceTree = ""; }; 174FC0CA05D20BB995E211DE5A0857DB /* Archive+MemoryFile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+MemoryFile.swift"; path = "Sources/ZIPFoundation/Archive+MemoryFile.swift"; sourceTree = ""; }; 1756C6FFCA695290BA62DA4E7B6DD20B /* NSFileWrapper+DTCopying.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSFileWrapper+DTCopying.m"; path = "Core/Source/NSFileWrapper+DTCopying.m"; sourceTree = ""; }; - 17D3B9EA3167BDEF0F47AA6554DF7D86 /* RDEPUBTextRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextRenderer.swift; sourceTree = ""; }; 17F750F38183302BF345F40F5A4CDD43 /* NSData+DTCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+DTCrypto.m"; path = "Core/Source/NSData+DTCrypto.m"; sourceTree = ""; }; 18387159515E0523AFB4204B1AF940ED /* SSAlertSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SSAlertSwift.debug.xcconfig; sourceTree = ""; }; + 1A7D80430EE63D6EA20B3BBA26A89B34 /* RDEPUBReaderBottomToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderBottomToolView.swift; sourceTree = ""; }; 1ABC2F552388CD08EC1EFDEF606AE222 /* DTTextAttachmentHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextAttachmentHTMLElement.m; path = Core/Source/DTTextAttachmentHTMLElement.m; sourceTree = ""; }; 1ACA5E519F100582F0D772FCD76125C0 /* NSString+DTFormatNumbers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTFormatNumbers.m"; path = "Core/Source/NSString+DTFormatNumbers.m"; sourceTree = ""; }; 1AD502A1FA6EB1E38200B5283F979504 /* Pods-ReadViewDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReadViewDemo.release.xcconfig"; sourceTree = ""; }; - 1B3BB74CCE3CE21C373751EFECCB8116 /* RDEPUBAttachmentNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentNormalizer.swift; sourceTree = ""; }; 1B443D035BA5652B03A41BE905C5AC17 /* DTPieProgressIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTPieProgressIndicator.h; path = Core/Source/iOS/DTPieProgressIndicator.h; sourceTree = ""; }; - 1C24BD0148D661DA92DCD300C67D590D /* RDReaderPagingController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPagingController.swift; sourceTree = ""; }; 1C8F0DCEAA5A3DF38C503CA30DC94C1C /* Archive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Archive.swift; path = Sources/ZIPFoundation/Archive.swift; sourceTree = ""; }; 1D4C9B7ED5E04C216AB28E3A4065C1C5 /* DTHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLElement.m; path = Core/Source/DTHTMLElement.m; sourceTree = ""; }; 1D6DA580F40DF113709E15CF6542A35C /* DTCoreTextLayouter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayouter.m; path = Core/Source/DTCoreTextLayouter.m; sourceTree = ""; }; - 1DCD2E4F44A79B62DF96C3ABAE2B8592 /* RDEPUBModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBModels.swift; sourceTree = ""; }; + 1DE1D663A9451374F0417DAC8CDAE2BF /* RDEPUBParser+Archive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Archive.swift"; sourceTree = ""; }; 1E89FE5F2996336E862E82C1E14E0EE7 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/ZIPFoundation/Resources/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 1EB8ACC635A2AF36962035B54B2CC2C6 /* RDEPUBAssetRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAssetRepository.swift; sourceTree = ""; }; - 1EFA16D97F8CC8E61C22F3CEF546EAA3 /* RDEPUBReaderController+ContentDelegates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ContentDelegates.swift"; sourceTree = ""; }; + 1EBAE1E92B0DEECFFA57D82DC828AB30 /* RDEPUBReaderController+ExternalLinks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ExternalLinks.swift"; sourceTree = ""; }; 1F090A0289338B14050FAF16C22605B0 /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Sources/ConstraintConstantTarget.swift; sourceTree = ""; }; + 1FE1D4A863768FC78F6B76B6A181267C /* RDReaderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderView.swift; sourceTree = ""; }; 2047430DF5C84E0A8FC8874A2B915FC3 /* Pods-ReadViewDemo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReadViewDemo-acknowledgements.markdown"; sourceTree = ""; }; + 20D029F1D415730DFA1FD010AD485185 /* RDEPUBReaderAssemblyCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAssemblyCoordinator.swift; sourceTree = ""; }; 2101691D5743105B2E3E40376584B91C /* DTFolderMonitor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTFolderMonitor.h; path = Core/Source/DTFolderMonitor.h; sourceTree = ""; }; - 212C8E23F9694FF5B5B5FEF9E774E0C6 /* rangy-core.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "rangy-core.js"; path = "Sources/RDReaderView/EPUBCore/Resources/rangy-core.js"; sourceTree = ""; }; - 2140116657415560314C2D9847AEA192 /* RDEPUBReaderChromeCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChromeCoordinator.swift; sourceTree = ""; }; - 21716AE96E14363317AB8A817ED38F1D /* RDReaderView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RDReaderView.release.xcconfig; sourceTree = ""; }; + 214727C456892B390492D84CDD20BB88 /* RDEPUBReaderDependencies.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDependencies.swift; sourceTree = ""; }; 21BAA93E67D8CBC5297302D798FB4F7A /* DTAttributedLabel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedLabel.m; path = Core/Source/DTAttributedLabel.m; sourceTree = ""; }; 2280F2302F54E90122747821FE681543 /* SSAlertViewExtention.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSAlertViewExtention.swift; path = Sources/SSAlertSwift/SSAlertViewExtention.swift; sourceTree = ""; }; - 236E0B22C7FAE0F5E5BC44A2D1C4726B /* RDEPUBReadingSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReadingSession.swift; sourceTree = ""; }; 238893C9CBD95CB9BDF069EB5A303E17 /* RDReaderView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = RDReaderView; path = RDReaderView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 23A9ED0D9E5AF895754BB1D2CA08DEF2 /* RDEPUBPaginationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationModels.swift; sourceTree = ""; }; - 23C0CE03056D1EF27F50F55B85D3A0D2 /* RDReaderView+ContentAccess.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+ContentAccess.swift"; sourceTree = ""; }; - 244A872053DAE74B0F4DC07228A08353 /* RDEPUBReaderTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTheme.swift; sourceTree = ""; }; + 23D09A34060F1B615AA1CA4089B37AC2 /* RDEPUBChapterWindowSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterWindowSnapshot.swift; sourceTree = ""; }; 249747495DE8349E480E4789B12D366D /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapKit.modulemap; sourceTree = ""; }; + 25E8E62C9DC0A4AE49F168F04CF8B9D3 /* rangy-serializer.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "rangy-serializer.js"; path = "Sources/RDReaderView/EPUBCore/Resources/rangy-serializer.js"; sourceTree = ""; }; 25F52D9C765ED2FA87834D4310203E0B /* DTFoundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTFoundation-prefix.pch"; sourceTree = ""; }; - 269D68D156A9D97C9C623160D509981D /* RDEPUBWebViewDebug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebViewDebug.swift; sourceTree = ""; }; 2702E05AA7A266B7D8D0F881FD4E09DA /* DTCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCompatibility.h; path = Core/Source/DTCompatibility.h; sourceTree = ""; }; 27205D159B39090908CA0E9C3997B784 /* NSDictionary+DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+DTCoreText.h"; path = "Core/Source/NSDictionary+DTCoreText.h"; sourceTree = ""; }; + 2739EAD69AB2F5F6FA80E254D294440D /* RDPlainTextBookBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDPlainTextBookBuilder.swift; sourceTree = ""; }; 27B7D3C6F0C845E3D42BBA613FFB0465 /* FileManager+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FileManager+ZIP.swift"; path = "Sources/ZIPFoundation/FileManager+ZIP.swift"; sourceTree = ""; }; 28043173CA3B3787DC401ACEB5398108 /* DTCoreTextLayoutFrame+Cursor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DTCoreTextLayoutFrame+Cursor.h"; path = "Core/Source/DTCoreTextLayoutFrame+Cursor.h"; sourceTree = ""; }; 28D62D3200AC3D4E42C81CDFF7E884E8 /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Sources/ConstraintItem.swift; sourceTree = ""; }; - 29AA31A90AEE6DCF012E1800AA10068B /* RDEPUBNoteDetector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteDetector.swift; sourceTree = ""; }; - 2ABBF727ED6EB3FA3EA88597AD35642B /* RDEPUBPageBreakPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageBreakPolicy.swift; sourceTree = ""; }; - 2B62D239E65A52677A36BA68DB820FEA /* RDEPUBBuildDiagnosticsReporter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBuildDiagnosticsReporter.swift; sourceTree = ""; }; - 2B7F28B33E9CEA8C57E5E55EDC33C596 /* RDEPUBCFIRecoveryEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIRecoveryEngine.swift; sourceTree = ""; }; 2BA19BD582C1BD54AF673014C04848B6 /* DTFoundation-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DTFoundation-Info.plist"; sourceTree = ""; }; - 2BF8C1B2C40980FB07D49180D7285667 /* RDReaderView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RDReaderView-umbrella.h"; sourceTree = ""; }; 2C50CAB4241C141EF6EC9ED22AB3A7E8 /* NSDictionary+DTCoreText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+DTCoreText.m"; path = "Core/Source/NSDictionary+DTCoreText.m"; sourceTree = ""; }; 2CD63BBDA1CB02B15A54D2CDD8A3ACD7 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = ""; }; 2D36F7CDCD7D5788CDCB3A1421DB242B /* NSURL+DTAppLinks.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURL+DTAppLinks.m"; path = "Core/Source/iOS/NSURL+DTAppLinks.m"; sourceTree = ""; }; 2D3D7C8444F58D9B3FCB4F3006D2CFBA /* NSAttributedString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+HTML.h"; path = "Core/Source/NSAttributedString+HTML.h"; sourceTree = ""; }; 2DE4FA5133891593CB45AF36B8EBF60C /* SSAlertSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SSAlertSwift-dummy.m"; sourceTree = ""; }; - 2EDD5A25D7DC1EED92829AE2851EEF2A /* epub-bridge.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "epub-bridge.js"; path = "Sources/RDReaderView/EPUBCore/Resources/epub-bridge.js"; sourceTree = ""; }; - 2EE6DDF24FEC8EC73F462A296083A37B /* UIColor+RDEPUBHex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUBHex.swift"; sourceTree = ""; }; + 2E281F0688B1D356CF1654C6063AE77D /* RDReaderView+PageCurl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+PageCurl.swift"; sourceTree = ""; }; + 2E53AFDDED09CAFF8EFC5BC809DB5855 /* RDEPUBReaderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderConfiguration.swift; sourceTree = ""; }; + 2F07C9C63CCAC0DAFE81B6A625199293 /* RDEPUBReaderServices.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderServices.swift; sourceTree = ""; }; + 2F34FF3B7E71CCE4E9C73115AA710B1C /* RDEPUBTextBookModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookModels.swift; sourceTree = ""; }; + 2F752E31955268C74AB0B05584B9CA9D /* RDEPUBWebView+JavaScriptBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+JavaScriptBridge.swift"; sourceTree = ""; }; + 2F8D349DB593AF848B64723FBF1DF717 /* RDEPUBSelectionOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionOverlayView.swift; sourceTree = ""; }; + 3008F6944BA740CD6E6F5CA33733C911 /* RDEPUBPaginationCacheCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationCacheCoordinator.swift; sourceTree = ""; }; 306477706BBB1E784F55BCF8EB1AD737 /* Pods-ReadViewDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReadViewDemo.debug.xcconfig"; sourceTree = ""; }; + 30EE98BBC2688DFF0B50F9C417007886 /* RDEPUBCSSCompatibilityLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCSSCompatibilityLayer.swift; sourceTree = ""; }; 31BD7533867336DEA9B835F471767178 /* NSString+DTURLEncoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTURLEncoding.h"; path = "Core/Source/NSString+DTURLEncoding.h"; sourceTree = ""; }; 31F3F91D5624C451E5D44D85B1DDE7C5 /* NSMutableString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableString+HTML.m"; path = "Core/Source/NSMutableString+HTML.m"; sourceTree = ""; }; + 3207A69E5A8BC344BDC277A8BEA51979 /* RDEPUBSearchModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSearchModels.swift; sourceTree = ""; }; 32A5ABB8F3656A110B955B0306E9A8C3 /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Sources/ConstraintInsetTarget.swift; sourceTree = ""; }; 32A8BED62113FF47E3925378065FA3BE /* SSAlertSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SSAlertSwift-prefix.pch"; sourceTree = ""; }; 32FB2B1B0498DCBE7B79BDF49E963E3D /* DTHTMLParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLParser.m; path = Core/Source/DTHTMLParser/DTHTMLParser.m; sourceTree = ""; }; 33DB57DF8C5AE334B1BBE9F989352F1D /* DTCustomColoredAccessory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCustomColoredAccessory.h; path = Core/Source/iOS/DTCustomColoredAccessory.h; sourceTree = ""; }; - 34649E5DA563878B374E0488CF7B450A /* RDEPUBAttachmentTooltipView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipView.swift; sourceTree = ""; }; - 34AAF33D5968FF88E52BE323BE82F631 /* RDEPUBPublication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPublication.swift; sourceTree = ""; }; + 3424A6DFBC2AC519C7C599F18DCDC89D /* RDEPUBTypesettingPipeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTypesettingPipeline.swift; sourceTree = ""; }; 354C5DD0ACC742762200A640ADA859C6 /* NSCoder+DTCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSCoder+DTCompatibility.h"; path = "Core/Source/NSCoder+DTCompatibility.h"; sourceTree = ""; }; + 361565CCC385512EA14A6A2C9CFAF08B /* RDEPUBStyleSheetComposer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleSheetComposer.swift; sourceTree = ""; }; 365FB4C3E0FF364C076EE4E9E47C32EA /* DTCoreText.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DTCoreText.modulemap; sourceTree = ""; }; 36FCB869246FE45FD1C9609A34EB4E74 /* DTCoreTextGlyphRun.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextGlyphRun.m; path = Core/Source/DTCoreTextGlyphRun.m; sourceTree = ""; }; 375179DD3A4576CEF947E1760BBDC69B /* DTBlockFunctions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTBlockFunctions.m; path = Core/Source/DTBlockFunctions.m; sourceTree = ""; }; - 384B29CBEB4465D86BDA4AF5BF10C2F7 /* RDEPUBTextBookCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookCache.swift; sourceTree = ""; }; - 385AC715B035543F28D98F44262302E3 /* RDEPUBChapterSummaryDiskCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterSummaryDiskCache.swift; sourceTree = ""; }; - 38CC6A6BEE99B6DD8A2CB0C3D94D3C2D /* RDEPUBReaderController+PublicAPI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+PublicAPI.swift"; sourceTree = ""; }; 392A75EAF280876545D14AA00517BA4C /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Sources/ConstraintMakerEditable.swift; sourceTree = ""; }; 3B610E558C4917C4257DC198EAFEE2F6 /* DTCSSStylesheet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCSSStylesheet.h; path = Core/Source/DTCSSStylesheet.h; sourceTree = ""; }; 3B931AB189BDDE2CCE8578B50BD60AF0 /* DTIframeTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTIframeTextAttachment.h; path = Core/Source/DTIframeTextAttachment.h; sourceTree = ""; }; - 3BDA124143D52EAC7EDD8AB1F554C329 /* RDEPUBReaderController+ExternalLinks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ExternalLinks.swift"; sourceTree = ""; }; - 3D9A0C2A7BCE48EB6E02279F8770F67B /* RDEPUBWebView+FixedLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+FixedLayout.swift"; sourceTree = ""; }; + 3BEEDD6EDB66B0EECC515EDCDB618914 /* RDEPUBParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBParser.swift; sourceTree = ""; }; 3DC78D0B0F37BF9AD1058CACA9AAF9BE /* Data+Serialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Serialization.swift"; path = "Sources/ZIPFoundation/Data+Serialization.swift"; sourceTree = ""; }; - 3F799B8BE1C80D381CED94E9496512A6 /* RDEPUBPreferences.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPreferences.swift; sourceTree = ""; }; - 3FDBB942C7F43B24B5A42E6837AE5A80 /* RDEPUBReaderState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderState.swift; sourceTree = ""; }; - 40BBB1A6045BDF1E2F96D996DCCA1EF9 /* RDEPUBReaderPaginationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPaginationCoordinator.swift; sourceTree = ""; }; + 3E01ED3AA3B7599EB648D7BD507B4D92 /* RDEPUBReaderController+TableOfContents.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+TableOfContents.swift"; sourceTree = ""; }; + 3E1485847E9CA847239AB24742D72ABB /* RDEPUBReaderController+PublicAPI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+PublicAPI.swift"; sourceTree = ""; }; + 414962A3F7230445216E714935F3C22F /* RDEPUBCFITextAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFITextAssertion.swift; sourceTree = ""; }; + 41EB07D58D668A3EE943B8A619CF70E7 /* RDEPUBChapterLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLocation.swift; sourceTree = ""; }; 4219E7C32019899890CAB66E5FBDF524 /* UIView+DTFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+DTFoundation.m"; path = "Core/Source/iOS/UIView+DTFoundation.m"; sourceTree = ""; }; - 4221E1543BD892BF6D14538441477241 /* RDEPUBFragmentMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFragmentMarkerInjector.swift; sourceTree = ""; }; - 4245A0DA8D1ED324142168C60B775253 /* RDEPUBResourceURLSchemeHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBResourceURLSchemeHandler.swift; sourceTree = ""; }; 424F12BEB0EDAAF1C719B5103D30C653 /* DTAnchorHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAnchorHTMLElement.h; path = Core/Source/DTAnchorHTMLElement.h; sourceTree = ""; }; 426D442C01742E4361F5BC34D43152A6 /* DTImageTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTImageTextAttachment.h; path = Core/Source/DTImageTextAttachment.h; sourceTree = ""; }; - 435BCDDA491498B312BF8B10335F5F6D /* epub-fixed-layout.html */ = {isa = PBXFileReference; includeInIndex = 1; name = "epub-fixed-layout.html"; path = "Sources/RDReaderView/EPUBCore/Resources/epub-fixed-layout.html"; sourceTree = ""; }; + 42B212FB3162CFF37D51BB3E93F765F5 /* RDEPUBResourceResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBResourceResolver.swift; sourceTree = ""; }; + 43B3221062F7881536685FE3C927CC7D /* RDEPUBAnnotationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAnnotationModels.swift; sourceTree = ""; }; 43CFADE0F46014990052AD67F17C86FF /* DTAccessibilityViewProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAccessibilityViewProxy.m; path = Core/Source/DTAccessibilityViewProxy.m; sourceTree = ""; }; 4428633C8EC3F6289CCF376F588CE0C4 /* NSString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+HTML.m"; path = "Core/Source/NSString+HTML.m"; 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; }; - 44A3A2C05CEC2C66E821919A93A14590 /* RDEPUBRenderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRenderRequest.swift; sourceTree = ""; }; + 447E4906FE72C6E3E2AE1CC89D208CAE /* RDEPUBMetadataParseWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseWorker.swift; sourceTree = ""; }; + 45C2C1DE970403173708119093BE0108 /* RDEPUBPageResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageResolver.swift; sourceTree = ""; }; 45C7129757B54DFD9E445D0A17D73A83 /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Sources/ConstraintPriority.swift; sourceTree = ""; }; 4600E9C0EF3B23864C9D7E5E90155F9D /* SSAlertSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SSAlertSwift.modulemap; sourceTree = ""; }; 4684B406B325B35F39322D75B59B6479 /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Sources/ConstraintLayoutGuideDSL.swift; sourceTree = ""; }; - 46A60E7129B6B8BA7355B63E9608DF37 /* RDReaderView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RDReaderView-Info.plist"; sourceTree = ""; }; - 46B833FD47EDD18F132A4F3DABFD3E55 /* RDEPUBHTMLNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBHTMLNormalizer.swift; sourceTree = ""; }; + 46B85AED3D53815F95E435FA3529141C /* RDEPUBRenderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRenderRequest.swift; sourceTree = ""; }; 477A0FC2A1F0B7F7CCF72D201ECEBAB0 /* DTDictationPlaceholderTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTDictationPlaceholderTextAttachment.m; path = Core/Source/DTDictationPlaceholderTextAttachment.m; sourceTree = ""; }; - 48051F94914D1A8DE273B7F6F3D8E9EB /* RDEPUBChapterOffsetMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterOffsetMap.swift; sourceTree = ""; }; + 47889215B9D350817A491970E6AED97C /* RDEPUBPageLayoutSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageLayoutSnapshot.swift; sourceTree = ""; }; + 47B749BBD9F9ECB3CB4876AFB35FA577 /* RDEPUBImageViewerCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewerCoordinator.swift; sourceTree = ""; }; + 48325761E589FE657E084982A81D5DA6 /* RDEPUBWebContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebContentView.swift; sourceTree = ""; }; 48A4A6EDC08C8AC933D0DCD507E9D173 /* ZIPFoundation */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ZIPFoundation; path = ZIPFoundation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 49291029E1AB55E3D96DCB4484849F65 /* RDEPUBAssetRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAssetRepository.swift; sourceTree = ""; }; 49A21AE1A0AB5383F895B34EA7D6973D /* DTCoreTextGlyphRun.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextGlyphRun.h; path = Core/Source/DTCoreTextGlyphRun.h; sourceTree = ""; }; 4A06A36ADBE678DB44158D32E751FAFF /* ZIPFoundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ZIPFoundation-dummy.m"; sourceTree = ""; }; 4A2659DB0685E16ABAE0382F726DA8C8 /* Archive+Helpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Helpers.swift"; path = "Sources/ZIPFoundation/Archive+Helpers.swift"; sourceTree = ""; }; + 4AD15109A0B89D836EFB914732706228 /* RDEPUBNavigatorState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNavigatorState.swift; sourceTree = ""; }; 4AF6156128A1A0CA24D9D06E346B9445 /* DTVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTVersion.m; path = Core/Source/DTVersion.m; sourceTree = ""; }; - 4B63D29E831F61A0A7CD86FE7CD9CDA9 /* RDEPUBCFIRange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIRange.swift; sourceTree = ""; }; + 4BCCEDB0636CEB528ED4786686A5767F /* RDEPUBChapterRuntimeStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterRuntimeStore.swift; sourceTree = ""; }; 4BEC60CB3EDA1C189D3B062E29217440 /* ZIPFoundation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.debug.xcconfig; 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; }; + 4C4682C38E0A66C0E9760FC62C00A327 /* RDReaderView+CollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+CollectionView.swift"; sourceTree = ""; }; + 4D2063CE799735F3C4AE37FE11567CBC /* RDEPUBCFIError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIError.swift; sourceTree = ""; }; + 4D58FC9E6A5173BAA575CE45D07134D0 /* RDEPUBPageCountCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageCountCache.swift; sourceTree = ""; }; 4D641809A99849F80FDCB02F8CE8D6A0 /* Data+CompressionDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+CompressionDeprecated.swift"; path = "Sources/ZIPFoundation/Data+CompressionDeprecated.swift"; sourceTree = ""; }; - 4DD02085DF060BFA07C4C65AC0F9ADAE /* RDEPUBTextPerformanceSampler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPerformanceSampler.swift; sourceTree = ""; }; - 4E2E2ACE965436483EDC14EC4262BAFC /* RDEPUBRuntimeChapter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimeChapter.swift; sourceTree = ""; }; 4EEFAE80193E1F0DA53400C9AD641410 /* DTActivityTitleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTActivityTitleView.m; path = Core/Source/iOS/DTActivityTitleView.m; sourceTree = ""; }; 4F0486D3B46DC92AB254D6EE9CC233BF /* DTAccessibilityElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAccessibilityElement.m; path = Core/Source/DTAccessibilityElement.m; sourceTree = ""; }; - 50244AA9BC4821A6CB64A7AF6D8BB332 /* RDEPUBBackgroundTrace.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundTrace.swift; sourceTree = ""; }; 50297AAB8278F2BB6FCFE82B20C7A049 /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Sources/ConstraintLayoutSupport.swift; sourceTree = ""; }; + 50319253F9CADECC2B97F1734E0C834A /* RDEPUBWebView+Search.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Search.swift"; sourceTree = ""; }; + 5077339D9632D68EDAB64BBEF622E154 /* RDEPUBStyleCompatibilityModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleCompatibilityModels.swift; sourceTree = ""; }; 5155CCDD61E030184249A020FE5D74B0 /* DTWeakSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTWeakSupport.h; path = Core/Source/DTWeakSupport.h; sourceTree = ""; }; - 51E8DDA0C0AF445B5BC5E2B60508BE58 /* RDEPUBTextAnnotationOverlay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnnotationOverlay.swift; sourceTree = ""; }; - 5214F772AE3CD906C0E5AE335E0A27E0 /* WeReadApi.js */ = {isa = PBXFileReference; includeInIndex = 1; name = WeReadApi.js; path = Sources/RDReaderView/EPUBCore/Resources/WeReadApi.js; sourceTree = ""; }; - 523B2C383DBC263294C404FA85A5DE82 /* RDEPUBTextRendererSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextRendererSupport.swift; sourceTree = ""; }; + 520E0A63146D08FBEFF05CA61FA4B8B6 /* RDEPUBViewportTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBViewportTypes.swift; sourceTree = ""; }; 5245010774F8F1C4857763CC7B96E7B4 /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Sources/ConstraintMakerExtendable.swift; sourceTree = ""; }; 533CFFF04BE7BC4BDEAE11DF675A84CA /* DTBreakHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTBreakHTMLElement.h; path = Core/Source/DTBreakHTMLElement.h; sourceTree = ""; }; 53499F40E1790A6CBE8AFEB3AC5BEFC8 /* NSMutableArray+DTMoving.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+DTMoving.m"; path = "Core/Source/NSMutableArray+DTMoving.m"; sourceTree = ""; }; @@ -777,393 +779,386 @@ 53D2AB2348A9B9C582FDC2CDB2E434FC /* SnapKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.release.xcconfig; sourceTree = ""; }; 53D473C6F07982D3D25781A343EC5A99 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/PrivacyInfo.xcprivacy; sourceTree = ""; }; 53F98F0F060B066CAFBCD3C85C26B2B4 /* DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreText.h; path = Core/Source/DTCoreText.h; sourceTree = ""; }; + 545DD46BEAB1D1F7E0530E787095FCB2 /* RDEPUBFontNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFontNormalizer.swift; sourceTree = ""; }; + 5539807EBDC1A071F4E7C8C3DA8F4121 /* RDEPUBReaderViewportMonitor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderViewportMonitor.swift; sourceTree = ""; }; 557DA029E15EC99631B647AE8922007F /* NSURL+DTAppLinks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURL+DTAppLinks.h"; path = "Core/Source/iOS/NSURL+DTAppLinks.h"; sourceTree = ""; }; + 55CA6158EBEFCD459EB481660A12EB86 /* RDReaderView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RDReaderView.release.xcconfig; sourceTree = ""; }; 56489D9BA834497E48438A4B4E1CCCFF /* DTCoreTextFontDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextFontDescriptor.h; path = Core/Source/DTCoreTextFontDescriptor.h; sourceTree = ""; }; 5679D281C282896E6FC352C48E0AF439 /* DTAttributedLabel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedLabel.h; path = Core/Source/DTAttributedLabel.h; sourceTree = ""; }; - 5687CEB04DF925FAE0FC801EFA943FD8 /* RDEPUBWebView+Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Configuration.swift"; sourceTree = ""; }; - 5819FE718F1A4114395EBB6B8A8E8455 /* RDEPUBCFIParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIParser.swift; sourceTree = ""; }; + 575B2D957760E0B9F1480FCB092B6B78 /* RDEPUBCFIDOMPathBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIDOMPathBuilder.swift; sourceTree = ""; }; + 58AD77A6558F2424BFBBB829F7651AAC /* RDEPUBReaderChapterListController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChapterListController.swift; sourceTree = ""; }; + 59036F71583DAE2641D9DAA567DBD208 /* RDEPUBTextBuildPipelineInterfaces.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBuildPipelineInterfaces.swift; sourceTree = ""; }; 5964AF1336E2F0DA0E2C32991E76C78C /* Data+Compression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Compression.swift"; path = "Sources/ZIPFoundation/Data+Compression.swift"; sourceTree = ""; }; 5977986EDFE76D5EF96A6D95483B12F7 /* Pods-ReadViewDemo-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReadViewDemo-frameworks.sh"; sourceTree = ""; }; - 59C9316B92152118F5AE8FD0EC0B9683 /* RDReaderFlowLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderFlowLayout.swift; sourceTree = ""; }; 5A9A82CB094636AFB53D6D130D6219BA /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Sources/ConstraintLayoutGuide+Extensions.swift"; sourceTree = ""; }; 5B007AEEACE9EA271DD73AFD80A74D83 /* DTLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTLog.m; path = Core/Source/DTLog.m; sourceTree = ""; }; - 5B888CEDF0E6ECE3807EF95D1BB7D400 /* RDEPUBAnnotationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAnnotationModels.swift; sourceTree = ""; }; + 5B4081F4EC77470F1257F11DB2A4B55D /* RDEPUBTextRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextRenderer.swift; sourceTree = ""; }; + 5B4D7B26E7ADBB6053AB3D0ECFDBF379 /* RDEPUBParser+ReadingProfile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+ReadingProfile.swift"; sourceTree = ""; }; 5BA251BAC8B430B3A4D4C4321046B990 /* Archive+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Deprecated.swift"; path = "Sources/ZIPFoundation/Archive+Deprecated.swift"; sourceTree = ""; }; - 5C2DA7CBEF685373784172A46130ECE9 /* RDEPUBSearchEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSearchEngine.swift; sourceTree = ""; }; + 5D3CFCA211B02F4FB8BEE828C37A318B /* RDEPUBAttachmentTooltipView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipView.swift; sourceTree = ""; }; 5D62C5531667F364F14DB67D33FFA554 /* DTCoreTextParagraphStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextParagraphStyle.h; path = Core/Source/DTCoreTextParagraphStyle.h; sourceTree = ""; }; 5DA1E8494B86FFD79C639DCB8C21E1BB /* DTPieProgressIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTPieProgressIndicator.m; path = Core/Source/iOS/DTPieProgressIndicator.m; sourceTree = ""; }; - 5DE61097D0F21BED63801FD97D420AA7 /* RDEPUBChapterDataCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterDataCache.swift; sourceTree = ""; }; 5E791886E59DC0FAB02C6BBAB5BE5B6B /* DTCoreTextFontCollection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextFontCollection.m; path = Core/Source/DTCoreTextFontCollection.m; sourceTree = ""; }; + 5E8C914D69561C6C9736FCB3C6698CCC /* RDEPUBFragmentMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFragmentMarkerInjector.swift; sourceTree = ""; }; + 5E958924060294CE9417399BB02AB344 /* epub-fixed-layout.html */ = {isa = PBXFileReference; includeInIndex = 1; name = "epub-fixed-layout.html"; path = "Sources/RDReaderView/EPUBCore/Resources/epub-fixed-layout.html"; sourceTree = ""; }; + 5F003AB5BAC52B6BF426F57E7C500BA8 /* RDEPUBReaderController+LocationResolution.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+LocationResolution.swift"; sourceTree = ""; }; 5F760D62F6C6F083374702146337F2CB /* DTCoreTextParagraphStyle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextParagraphStyle.m; path = Core/Source/DTCoreTextParagraphStyle.m; sourceTree = ""; }; 5F991240340FA026C71B68EB25B9F9C8 /* Entry+Serialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Entry+Serialization.swift"; path = "Sources/ZIPFoundation/Entry+Serialization.swift"; sourceTree = ""; }; + 5F9FE9924520900BBDF724D9903C5309 /* RDEPUBFontFallbackResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFontFallbackResolver.swift; sourceTree = ""; }; 5FAB3C7F19A511C2B1B7DFBA3CA308C4 /* DTFoundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTFoundation-umbrella.h"; sourceTree = ""; }; 6014DA7213E4687224F2BF921E30002C /* DTFoundation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTFoundation.debug.xcconfig; sourceTree = ""; }; 60657D08CCDB38BFED30BD40F4720CE4 /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Sources/ConstraintMaker.swift; sourceTree = ""; }; - 60CCD58E796945CC72B9D6E8F81B2A9F /* RDEPUBReaderLocationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLocationCoordinator.swift; sourceTree = ""; }; 61E36C4FE448DDDA03450847FCB785B6 /* Archive+BackingConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+BackingConfiguration.swift"; path = "Sources/ZIPFoundation/Archive+BackingConfiguration.swift"; sourceTree = ""; }; - 620F6EB9BD2515CCF9666EBD79D1E206 /* RDEPUBCoreTextPageFrameFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCoreTextPageFrameFactory.swift; sourceTree = ""; }; - 62CA2B8137FC8E99994C84CF0B18EBD1 /* RDEPUBReaderBottomToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderBottomToolView.swift; sourceTree = ""; }; 63A6EDF10DA5A051C6CDCBE5D97AF11E /* DTVideoTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTVideoTextAttachment.m; path = Core/Source/DTVideoTextAttachment.m; sourceTree = ""; }; - 63CB91E70707FEFE07F01B11C0DB5055 /* RDEPUBRenderDiagnosticsCollector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRenderDiagnosticsCollector.swift; sourceTree = ""; }; - 645B67E60B0E03563BF2A759753BEEE2 /* RDEPUBCFIResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIResolver.swift; sourceTree = ""; }; - 646429B6D94AE5D9F3ADDB5B9C6FBCCF /* RDEPUBReaderChapterListController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChapterListController.swift; sourceTree = ""; }; 647FB0C5AAF84C71A7784DD277E48910 /* UIFont+DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIFont+DTCoreText.h"; path = "Core/Source/UIFont+DTCoreText.h"; sourceTree = ""; }; 64868ADD0419A5D112863F638932DA34 /* ZIPFoundation-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ZIPFoundation-Info.plist"; sourceTree = ""; }; + 648D6AC5A8FA53918EDB418D8A36710E /* RDReaderView+ToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+ToolView.swift"; sourceTree = ""; }; 64AB89EAB10148C39B726B26BE04F4F8 /* DTCoreTextLayoutLine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextLayoutLine.h; path = Core/Source/DTCoreTextLayoutLine.h; sourceTree = ""; }; 6578DFAB51436E8DF266FD087700E26B /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Sources/ConstraintDescription.swift; sourceTree = ""; }; - 66E601E685D0E9888AAFFDCAF0C0D1D6 /* RDEPUBTextLayoutFrame.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextLayoutFrame.swift; sourceTree = ""; }; - 6886C52EAE45B38A526CD917C8CBFED8 /* RDEPUBViewportTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBViewportTypes.swift; sourceTree = ""; }; - 69510290E334432CAAC474A360B115BA /* ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; sourceTree = ""; }; + 66EEA7DA60C7DCD504C673D6CF9B74FC /* RDEPUBSelectionState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionState.swift; sourceTree = ""; }; + 67580684B7C70423FB1C82CD1F685012 /* RDEPUBBackgroundTrace.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundTrace.swift; sourceTree = ""; }; + 67E71F44D9FE962AA1D19EB945E7E657 /* RDEPUBParser+TOC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+TOC.swift"; sourceTree = ""; }; + 67EA3C4114F424563E73EE3FB42D7CD7 /* RDEPUBWebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebView.swift; sourceTree = ""; }; + 68A8597AE94ED09E9828E2EEA0D8FFFA /* RDEPUBChapterTailNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterTailNormalizer.swift; sourceTree = ""; }; 6A1EBB9497F4846C84CA0BF5E4F84FC7 /* DTLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTLog.h; path = Core/Source/DTLog.h; sourceTree = ""; }; - 6AE9447E94AD6DD5AA1A3E1BBB03977A /* RDEPUBReaderTableOfContentsItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTableOfContentsItem.swift; sourceTree = ""; }; 6B96B0998B49D8E149C995474DA5FE5F /* DTHTMLWriter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLWriter.h; path = Core/Source/DTHTMLWriter.h; sourceTree = ""; }; 6C647A2EB2720BCBF88B160D124B57BF /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Sources/UILayoutSupport+Extensions.swift"; sourceTree = ""; }; - 6CF30C46F1B4F469D06B27690215880A /* RDEPUBWebDecorationOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebDecorationOverlayView.swift; sourceTree = ""; }; + 6CF99F8C8ED42F614BB051509F8E065B /* RDEPUBReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderController.swift; sourceTree = ""; }; 6D2EC0B845131A88247902AEA26F40AE /* SSAlertAnimation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSAlertAnimation.swift; path = Sources/SSAlertSwift/SSAlertAnimation.swift; sourceTree = ""; }; 6D86C7063D1128EAEB3A30EBEF214B3F /* NSString+DTFormatNumbers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTFormatNumbers.h"; path = "Core/Source/NSString+DTFormatNumbers.h"; sourceTree = ""; }; - 6E8A22827641532F651809A316008577 /* RDEPUBRuntimePageCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimePageCount.swift; sourceTree = ""; }; - 6F768932648B61D9731F923A824F7617 /* wxread-replace-latin.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-replace-latin.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-replace-latin.css"; sourceTree = ""; }; + 6E7E8438D5E5533B7BE96AC6FA8FD8BD /* wxread-replace-latin.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-replace-latin.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-replace-latin.css"; sourceTree = ""; }; + 7036B7E2D1B623419E1EB950E58865CC /* RDEPUBReaderDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDelegate.swift; sourceTree = ""; }; 70F5D03B9B3B7F182C8F5C1F5D4FA7E7 /* DTTiledLayerWithoutFade.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTiledLayerWithoutFade.m; path = Core/Source/iOS/DTTiledLayerWithoutFade.m; sourceTree = ""; }; + 711A407CD08421E62F3C143957DD10DA /* RDEPUBPaginationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationModels.swift; sourceTree = ""; }; 713C9FD0354D16AFCCFA630A97F2DA68 /* NSCharacterSet+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSCharacterSet+HTML.m"; path = "Core/Source/NSCharacterSet+HTML.m"; sourceTree = ""; }; 7176B677A350927FC670368313DC2CA1 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Sources/ConstraintConfig.swift; sourceTree = ""; }; 71E2D85A099C99CD82FD1842EE7C52D2 /* NSAttributedString+DTDebug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+DTDebug.h"; path = "Core/Source/NSAttributedString+DTDebug.h"; sourceTree = ""; }; - 7315B7878D20AD386748BCFFF68812DB /* rangy-serializer.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "rangy-serializer.js"; path = "Sources/RDReaderView/EPUBCore/Resources/rangy-serializer.js"; sourceTree = ""; }; + 72BE58BB9BF4DCDFDC6D5430AA2E82E9 /* RDEPUBTextBookBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookBuilder.swift; sourceTree = ""; }; 731C0C61E3AD227D691FBA1C2C17BF7B /* NSURL+DTComparing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURL+DTComparing.h"; path = "Core/Source/NSURL+DTComparing.h"; sourceTree = ""; }; 7345CE45F696634CEA692A86D16F684C /* Entry+ZIP64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Entry+ZIP64.swift"; path = "Sources/ZIPFoundation/Entry+ZIP64.swift"; sourceTree = ""; }; + 736A135E9B22B812EE7A51484408FDE1 /* RDEPUBReadingSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReadingSession.swift; sourceTree = ""; }; 73940D215D644B6815A09DA802CFBDDF /* NSArray+DTError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+DTError.m"; path = "Core/Source/NSArray+DTError.m"; sourceTree = ""; }; 73A99927E52B24583A6A2CF7E6F23848 /* DTVideoTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTVideoTextAttachment.h; path = Core/Source/DTVideoTextAttachment.h; sourceTree = ""; }; - 744C73D1186E82ACC4BDB4FBB30CFACE /* RDEPUBReaderDependencies.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDependencies.swift; sourceTree = ""; }; - 75B52533C54FDB9B4BEB5B173C34670F /* RDReaderViewProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderViewProtocols.swift; sourceTree = ""; }; 75C5986EF2D63801A8A30B9D77A7FDD0 /* ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist"; sourceTree = ""; }; 75FA8E843D9225BD65EB9D17825EC0F4 /* NSCharacterSet+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSCharacterSet+HTML.h"; path = "Core/Source/NSCharacterSet+HTML.h"; sourceTree = ""; }; - 76610C58FDE0133C7B8E5E15CD84C663 /* RDEPUBParser+ReadingProfile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+ReadingProfile.swift"; sourceTree = ""; }; + 766C440DABE7721B3D2CE226D8189551 /* RDEPUBPaginator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginator.swift; sourceTree = ""; }; + 76919E99E9F16C30FA06F643643AA997 /* RDReaderContentCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderContentCell.swift; sourceTree = ""; }; + 76C28DE5D3FBC9B7F9C1477C95F14725 /* RDEPUBPresentationRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPresentationRuntime.swift; sourceTree = ""; }; 76F99C8130EE83A22CD223C7F5E6E66E /* NSAttributedString+SmallCaps.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+SmallCaps.m"; path = "Core/Source/NSAttributedString+SmallCaps.m"; sourceTree = ""; }; 77213203802F44012346181FED2856F9 /* UIApplication+DTNetworkActivity.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIApplication+DTNetworkActivity.m"; path = "Core/Source/iOS/UIApplication+DTNetworkActivity.m"; sourceTree = ""; }; - 775E375A8BF4CD67FD85FF4C6E217AE5 /* RDReaderView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RDReaderView.modulemap; sourceTree = ""; }; 77A613841EB90827AF321DD50B21DB5D /* DTAttributedTextView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedTextView.m; path = Core/Source/DTAttributedTextView.m; sourceTree = ""; }; - 77E36CB709B0609F38B9C5F40B7A18C0 /* RDReaderView+PageCurl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+PageCurl.swift"; sourceTree = ""; }; - 786487AD4F6B37AE4B483566F3000C6F /* RDEPUBFixedLayoutTemplate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFixedLayoutTemplate.swift; sourceTree = ""; }; 78873FAFC0AD9E930D6050A7F976714B /* DTCoreText.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTCoreText.debug.xcconfig; sourceTree = ""; }; + 78C97EDF23543CE63904C4D8A066A7A1 /* RDEPUBTextPaginationSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPaginationSupport.swift; sourceTree = ""; }; 78EA0DF405F8465A86BFD3DDFD2EC295 /* Pods-ReadViewDemo */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-ReadViewDemo"; path = Pods_ReadViewDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 79A77584AB3B92B2508AE0BCFCB8FD87 /* UIView+DTFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+DTFoundation.h"; path = "Core/Source/iOS/UIView+DTFoundation.h"; sourceTree = ""; }; + 7A971ECCC1DDFDE6D5417E949E3B1FD2 /* RDEPUBTextPositionConverter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPositionConverter.swift; sourceTree = ""; }; 7AB9016408894675D11069CDAACEDE94 /* DTImage+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DTImage+HTML.h"; path = "Core/Source/DTImage+HTML.h"; sourceTree = ""; }; - 7B9B9C10492C2477D3CA1E3B7027D4C5 /* RDEPUBStyleSheetBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleSheetBuilder.swift; sourceTree = ""; }; 7C496AB6A73C2D0BD0FF340A6A2960D5 /* DTHTMLAttributedStringBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLAttributedStringBuilder.m; path = Core/Source/DTHTMLAttributedStringBuilder.m; sourceTree = ""; }; - 7D37EDA6C8F32FB02D2F5433B481ADDB /* RDEPUBTextPaginationInterfaces.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPaginationInterfaces.swift; sourceTree = ""; }; + 7D0C0A9C17CB99D2B116A2E6450CE89D /* RDEPUBNoteDetector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteDetector.swift; sourceTree = ""; }; 7D63AE1801C7AB149219317BE7529B26 /* DTAnchorHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAnchorHTMLElement.m; path = Core/Source/DTAnchorHTMLElement.m; sourceTree = ""; }; + 7EC91512D3BEFEDF5FCCF2E267E48B32 /* RDEPUBReaderPaginationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPaginationCoordinator.swift; sourceTree = ""; }; 7F051D813D50D20D53205D5FDCAA877C /* UIScreen+DTFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScreen+DTFoundation.m"; path = "Core/Source/iOS/UIScreen+DTFoundation.m"; sourceTree = ""; }; - 7FEFC049D874D868076BE0F19A3F643B /* RDEPUBSemanticMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSemanticMarkerInjector.swift; sourceTree = ""; }; + 7F8C64CB3F3D0B7D4AA66798C740CB20 /* RDEPUBTextLayouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextLayouter.swift; sourceTree = ""; }; + 7FC4B1718DDF94A99192ABD5C1B24DAC /* RDEPUBReaderSettingsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettingsViewController.swift; sourceTree = ""; }; + 80A3A50AC272F9C52395F4818E87EA19 /* RDReaderView.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RDReaderView.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 80B3D15ED0D19D020663EF055386291A /* DTColor+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DTColor+Compatibility.h"; path = "Core/Source/DTColor+Compatibility.h"; sourceTree = ""; }; - 80CBF12B91CD7E30B52521195ACD8066 /* RDEPUBTextBookBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookBuilder.swift; sourceTree = ""; }; - 8189DB90B82FC06292365152D19B2393 /* RDEPUBChapterPageCounter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterPageCounter.swift; sourceTree = ""; }; + 80D9ED51333D0F99752A8408020C77AF /* RDEPUBTextAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnchor.swift; sourceTree = ""; }; + 80F37ED477F71A78A2658E146A2A5CB3 /* RDEPUBReaderController+RuntimeBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RuntimeBridge.swift"; sourceTree = ""; }; + 81211446372A6A55789AA7E7152E7084 /* RDEPUBCoreTextPageFrameFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCoreTextPageFrameFactory.swift; sourceTree = ""; }; 81B8F42440B802E6EC2B1FF7E3022F3A /* SSAlertDefaultAnmation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSAlertDefaultAnmation.swift; path = Sources/SSAlertSwift/SSAlertDefaultAnmation.swift; sourceTree = ""; }; - 81C2FB3A2214ED9328FC7A0B36FA1C5B /* RDPlainTextBookBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDPlainTextBookBuilder.swift; sourceTree = ""; }; + 81F0FDEEC9D85F08CD97F555356F985C /* RDEPUBReaderUIState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderUIState.swift; sourceTree = ""; }; 8272D0B59ABD6652D0CAE3DFCC2C5EE1 /* DTActivityTitleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTActivityTitleView.h; path = Core/Source/iOS/DTActivityTitleView.h; sourceTree = ""; }; 83410CC9CF2ABE63B90A92F2F988BF65 /* RDReaderView-RDReaderViewAssets */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "RDReaderView-RDReaderViewAssets"; path = RDReaderViewAssets.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 839B80DCB8EBDB9BFDEE18C4B160FE81 /* RDEPUBTextPageRenderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageRenderView.swift; sourceTree = ""; }; 83E37DC74BB53F90A5AD54842858A62F /* NSString+Paragraphs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Paragraphs.h"; path = "Core/Source/NSString+Paragraphs.h"; sourceTree = ""; }; - 83FE23C4421208A77C790E396C2391EC /* RDEPUBAttachmentTooltipOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipOverlayView.swift; sourceTree = ""; }; - 84432C44761FA9535E1C1C00A97581F8 /* RDEPUBCFIMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIMap.swift; sourceTree = ""; }; + 8421441F10DCB0EDBCF03EAC1018BAD2 /* RDEPUBModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBModels.swift; sourceTree = ""; }; + 84EB75472DB29B600C9185A097D117B7 /* RDEPUBReaderChromeCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChromeCoordinator.swift; sourceTree = ""; }; 8552BE1A1F6A6D2879763DE3B2B8A2DD /* NSNumber+RomanNumerals.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNumber+RomanNumerals.h"; path = "Core/Source/NSNumber+RomanNumerals.h"; sourceTree = ""; }; + 85AC8A746E7DE5FC77159ABF4085CAC7 /* RDEPUBPublication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPublication.swift; sourceTree = ""; }; 86A0361390AA0C29BC1A5487083A12A7 /* DTColorFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTColorFunctions.h; path = Core/Source/DTColorFunctions.h; sourceTree = ""; }; - 87A3F451AC74F9A3D57EAD938B435AD6 /* RDEPUBReaderDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDelegate.swift; sourceTree = ""; }; - 87D486D53C26F9A8106173A8E30B255A /* RDEPUBTypesettingPipeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTypesettingPipeline.swift; sourceTree = ""; }; 882FA707ED3513D263A1E0656AAD2D33 /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Sources/ConstraintPriorityTarget.swift; sourceTree = ""; }; 885653999BD237A574B67DB279DE7E87 /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Sources/ConstraintRelatableTarget.swift; sourceTree = ""; }; - 89F92BE384325A770DEEB46797F1E54A /* RDEPUBPaginationState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationState.swift; sourceTree = ""; }; - 8ABD098B435C30F2039019D7646E87ED /* RDEPUBParser+Archive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Archive.swift"; sourceTree = ""; }; + 89755690B804A64EE69FE2D7321CA9B6 /* RDEPUBTextIndexTable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextIndexTable.swift; sourceTree = ""; }; + 8A19E1D6BC8D283B9BC4BA0EBECBF172 /* RDEPUBBackgroundCoverageStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundCoverageStore.swift; sourceTree = ""; }; + 8A1D29D22B94FD4B310B5A419E79057B /* RDReaderView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RDReaderView-Info.plist"; sourceTree = ""; }; 8ABDEFEA94DC6408D92AC66DA3625DE5 /* NSString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+HTML.h"; path = "Core/Source/NSString+HTML.h"; sourceTree = ""; }; + 8AE69217E6A738AC11FEB58F2603B17F /* wxread-dark.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-dark.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-dark.css"; sourceTree = ""; }; 8B35D0622F339A5B8A864FAA0C9EAE47 /* Pods-ReadViewDemo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReadViewDemo-acknowledgements.plist"; sourceTree = ""; }; 8B59C9A1B265393E4BA8383B308A5917 /* DTHTMLAttributedStringBuilder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLAttributedStringBuilder.h; path = Core/Source/DTHTMLAttributedStringBuilder.h; sourceTree = ""; }; 8BD568D38C209BA1CC0EBFA809A35204 /* DTFoundationConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTFoundationConstants.m; path = Core/Source/DTFoundationConstants.m; sourceTree = ""; }; 8BD9F2023FF826F67E69E3407A70A8A6 /* DTVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTVersion.h; path = Core/Source/DTVersion.h; sourceTree = ""; }; - 8C63018B1CE90D338115DC072191A153 /* wxread-replace.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-replace.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-replace.css"; sourceTree = ""; }; + 8C7F146589FBD04B46D846AE1ECBD10A /* RDEPUBTextContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentView.swift; sourceTree = ""; }; 8CFEE298DD52246B46E6FA62B16B38DF /* DTTextHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextHTMLElement.m; path = Core/Source/DTTextHTMLElement.m; sourceTree = ""; }; 8E3E834CCC952717089550F50A2DE59C /* SSAlertSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SSAlertSwift-Info.plist"; sourceTree = ""; }; 8E5637603691B9B35C2A886B686D3CE7 /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Sources/ConstraintViewDSL.swift; sourceTree = ""; }; 8F2D44B82815CA3397BE2C9F64819B88 /* DTCoreTextFunctions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextFunctions.m; path = Core/Source/DTCoreTextFunctions.m; sourceTree = ""; }; 8F950CEF31AC0065C0BEAB26BA2CEFA1 /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Sources/ConstraintOffsetTarget.swift; sourceTree = ""; }; - 8FED226E2FA9815E3B5D4F7081930466 /* RDEPUBFontNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFontNormalizer.swift; sourceTree = ""; }; - 902C1572982F594CBCFA71AF8CB6749A /* RDEPUBDTCoreTextRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDTCoreTextRenderer.swift; sourceTree = ""; }; - 902FAE3EE7603EA74B421F4F8B5160E1 /* RDEPUBNoteModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteModels.swift; sourceTree = ""; }; - 90D060B1A624B2699F408C993E8C418B /* RDEPUBReaderController+AttachmentTooltip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+AttachmentTooltip.swift"; sourceTree = ""; }; + 8F9C05A5DE7C804D6531F4BBF31A3045 /* rangy-core.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "rangy-core.js"; path = "Sources/RDReaderView/EPUBCore/Resources/rangy-core.js"; sourceTree = ""; }; 91144FC099DD458E61625CD939577DAA /* ConstraintDirectionalInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsets.swift; path = Sources/ConstraintDirectionalInsets.swift; sourceTree = ""; }; 9129D37C7F89AD8FD530663BB4503FC0 /* NSCoder+DTCompatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSCoder+DTCompatibility.m"; path = "Core/Source/NSCoder+DTCompatibility.m"; sourceTree = ""; }; 92460D196C5300656C9649784EBD3C58 /* NSAttributedString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+HTML.m"; path = "Core/Source/NSAttributedString+HTML.m"; sourceTree = ""; }; + 92AD29D1A051D00F5525A240E49B00A2 /* RDEPUBChapterWarmupOrchestrator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterWarmupOrchestrator.swift; sourceTree = ""; }; + 92E7747B6F898FB12DFE1CE4ABDC3531 /* RDEPUBReaderSearchCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchCoordinator.swift; sourceTree = ""; }; + 930D75A53D2FD874346BF17C0A2CB1BC /* RDEPUBCFI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFI.swift; sourceTree = ""; }; 932FD688DE493323BA6B691BC2CB5094 /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Sources/LayoutConstraint.swift; sourceTree = ""; }; 934F9BB2B3A313294F121484C3A97A14 /* Archive+ReadingDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+ReadingDeprecated.swift"; path = "Sources/ZIPFoundation/Archive+ReadingDeprecated.swift"; sourceTree = ""; }; 937CEFA81DA4227008DBFB114783A08B /* SSAlertSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SSAlertSwift-umbrella.h"; sourceTree = ""; }; 945D4549E0B9168D7DDB910DE874B874 /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Sources/Typealiases.swift; sourceTree = ""; }; + 953EF1E3CA69D8F4BF3E4D41B1BEAE2C /* RDEPUBReaderTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTheme.swift; sourceTree = ""; }; + 9551DE4A9087AF37320340372B24F7CA /* RDEPUBWebDecorationOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebDecorationOverlayView.swift; sourceTree = ""; }; 957DB4675D5CCBD3CB1762F08619F3F7 /* UIApplication+DTNetworkActivity.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIApplication+DTNetworkActivity.h"; path = "Core/Source/iOS/UIApplication+DTNetworkActivity.h"; sourceTree = ""; }; - 963DB0508456E313DFDD8A01BD92C4AD /* RDEPUBCFIMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIMarkerInjector.swift; sourceTree = ""; }; - 96E5EDA71849C1703A80094A7160A3D2 /* RDEPUBSearchModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSearchModels.swift; sourceTree = ""; }; + 96331868591D020B267B45CA8EF65355 /* RDEPUBReaderSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettings.swift; sourceTree = ""; }; 96EEB6B022E22A4ABC86D87469D4815B /* DTSmartPagingScrollView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTSmartPagingScrollView.m; path = Core/Source/iOS/DTSmartPagingScrollView.m; sourceTree = ""; }; 96FA99AA7D4AD0D4246C8DAC1CC0C24E /* DTStylesheetHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTStylesheetHTMLElement.h; path = Core/Source/DTStylesheetHTMLElement.h; sourceTree = ""; }; 979486118B3E90C08386079D57962701 /* SnapKit */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapKit; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 97995C73297871C353364E685939DED9 /* SSAlertAnimationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSAlertAnimationController.swift; path = Sources/SSAlertSwift/SSAlertAnimationController.swift; sourceTree = ""; }; - 97F7B41CF52C44365ABC89D0081C7DDF /* RDEPUBCFIGenerator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIGenerator.swift; sourceTree = ""; }; 982391EC8620A617B8788C8A6101C96A /* DTDictationPlaceholderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTDictationPlaceholderView.h; path = Core/Source/DTDictationPlaceholderView.h; sourceTree = ""; }; 98658510AA525496EBF5792E5D9884ED /* DTListItemHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTListItemHTMLElement.h; path = Core/Source/DTListItemHTMLElement.h; sourceTree = ""; }; 98C7359A7C3FC7675FED220200A43A17 /* Archive+WritingDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+WritingDeprecated.swift"; path = "Sources/ZIPFoundation/Archive+WritingDeprecated.swift"; sourceTree = ""; }; - 98E0E994653153A8BF5451529E78BD86 /* RDEPUBReaderHighlightsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderHighlightsViewController.swift; sourceTree = ""; }; 99299A9FD6EF739D18352AC5B9325CB0 /* DTAccessibilityElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAccessibilityElement.h; path = Core/Source/DTAccessibilityElement.h; sourceTree = ""; }; - 9957BD076B5327D9E830B98BDCF61189 /* RDEPUBTextContentInteractionCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentInteractionCoordinator.swift; sourceTree = ""; }; - 995FB0A24F88A5F7204BDE00B97BF00C /* RDEPUBTextContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentView.swift; sourceTree = ""; }; 9A1B75050E71BDD96FC19EC6BA129E6A /* DTLinkButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTLinkButton.m; path = Core/Source/DTLinkButton.m; sourceTree = ""; }; + 9A2A285973A8C8A81A03D472845DA414 /* RDEPUBNoteModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteModels.swift; sourceTree = ""; }; + 9AD7F70FD18BED0C429A85E579ABF569 /* RDEPUBNotePopupCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupCoordinator.swift; sourceTree = ""; }; + 9B8F910B6B575B689194F9E306239FD5 /* RDEPUBBackgroundPriorityPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundPriorityPolicy.swift; sourceTree = ""; }; 9BFCAC7C2AEA867E67C63A852576774F /* NSURL+DTComparing.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURL+DTComparing.m"; path = "Core/Source/NSURL+DTComparing.m"; sourceTree = ""; }; + 9C1B2F1D8E3F93A60375AA8853FF1842 /* RDReaderTapRegionHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderTapRegionHandler.swift; sourceTree = ""; }; 9C6293E97E128E98559FB74D9A342EAD /* NSMutableString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableString+HTML.h"; path = "Core/Source/NSMutableString+HTML.h"; sourceTree = ""; }; + 9C89744F4424D96B176330404D1D82C7 /* RDEPUBTextPageDecorationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageDecorationView.swift; sourceTree = ""; }; 9CE078B465FDEF40EC0469626A2C2469 /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = ""; }; + 9D28F67E16027AF4FA4F9D501C4D0712 /* RDReaderView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RDReaderView-umbrella.h"; sourceTree = ""; }; 9D6C48939A8498A09DCFC7F41ECB8A25 /* NSString+CSS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+CSS.h"; path = "Core/Source/NSString+CSS.h"; 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; }; 9E6BA0ECCB0ACF8580C3B5192CA9F11B /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Sources/ConstraintLayoutGuide.swift; sourceTree = ""; }; - 9F439346FABB45D193709E61E908A616 /* RDReaderSpreadResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderSpreadResolver.swift; sourceTree = ""; }; + 9F8BA45FA0D8E3CBAAE6E18272EB0644 /* RDReaderView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RDReaderView.debug.xcconfig; sourceTree = ""; }; 9F8F40493DF0BBB3EA5FC1F759A883C4 /* ResourceBundle-Resources-DTCoreText-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-Resources-DTCoreText-Info.plist"; sourceTree = ""; }; - 9F96D2805CAFF0D2370A761DD023C745 /* RDEPUBCFISerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFISerializer.swift; sourceTree = ""; }; + A027614C026728AE2CA282D837F97936 /* RDEPUBPageMapReconciliationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageMapReconciliationCoordinator.swift; sourceTree = ""; }; A02EA0374C693F881AB36202FB276DCD /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Sources/ConstraintView.swift; sourceTree = ""; }; A0927A875CA1F11DBCE60DFC6F0CA0B6 /* NSScanner+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSScanner+HTML.h"; path = "Core/Source/NSScanner+HTML.h"; sourceTree = ""; }; A0BD48DAF5AE9DB087F2552E99069709 /* DTBlockFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTBlockFunctions.h; path = Core/Source/DTBlockFunctions.h; sourceTree = ""; }; A0EBAC7714A5F73B75AAB47D24B08B71 /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Sources/Constraint.swift; sourceTree = ""; }; - A1A5E5B0F978E87E788096796E498EE1 /* RDEPUBNoteResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteResolver.swift; sourceTree = ""; }; + A138DB38231B185E189787D33D3B4950 /* RDEPUBReaderLocationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLocationCoordinator.swift; sourceTree = ""; }; A1B031E2B903C2F177195C1C3D1D1EDB /* DTCoreTextFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextFunctions.h; path = Core/Source/DTCoreTextFunctions.h; sourceTree = ""; }; + A24AB4F9BE6993854E38FD95A30B9845 /* RDEPUBCFIResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIResolver.swift; sourceTree = ""; }; A276DE925253460239BFAEC7663F60D3 /* DTAttributedTextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedTextView.h; path = Core/Source/DTAttributedTextView.h; sourceTree = ""; }; A2C299CFB47AA6ECF86F7348E1EB751F /* NSMutableAttributedString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableAttributedString+HTML.h"; path = "Core/Source/NSMutableAttributedString+HTML.h"; sourceTree = ""; }; - A2FEFB9BEB8FDB1839B78DBC6861BB90 /* RDEPUBNotePopupViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupViewController.swift; sourceTree = ""; }; A3565FEE19F19CB43A43409AFFF2BD2C /* NSString+DTPaths.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTPaths.m"; path = "Core/Source/NSString+DTPaths.m"; sourceTree = ""; }; A3765B289CB7E6C5DF6160D8EBC83C3C /* UIScreen+DTFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScreen+DTFoundation.h"; path = "Core/Source/iOS/UIScreen+DTFoundation.h"; sourceTree = ""; }; - A389B363039049240F249F3421CD7734 /* RDReaderView+CollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+CollectionView.swift"; sourceTree = ""; }; - A4AC6CA9870D7941FA2F27711C6038E4 /* RDEPUBNavigationStateMachine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNavigationStateMachine.swift; sourceTree = ""; }; + A47E648062E9BDBB9E46BD3DC4E12801 /* RDEPUBWebView+FixedLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+FixedLayout.swift"; sourceTree = ""; }; A4E43DCDE0C8751557E7E65FEEB1C865 /* DTLazyImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTLazyImageView.m; path = Core/Source/DTLazyImageView.m; sourceTree = ""; }; + A61F5753AE7B5122FE65CF07CF1AD5FD /* RDReaderView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RDReaderView-dummy.m"; sourceTree = ""; }; A651CEE8062C84A597DBC44ECA3DBCC1 /* ConstraintDirectionalInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsetTarget.swift; path = Sources/ConstraintDirectionalInsetTarget.swift; sourceTree = ""; }; A68D72764140BC3DF67A2B9E52CEC7A4 /* DTHorizontalRuleHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHorizontalRuleHTMLElement.m; path = Core/Source/DTHorizontalRuleHTMLElement.m; sourceTree = ""; }; - A759645FBF673FDEACE775045ADD6223 /* RDEPUBPaginationCacheCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationCacheCoordinator.swift; sourceTree = ""; }; - A8441EA66830E22726BE52E29AA8FBA0 /* RDEPUBCSSCompatibilityLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCSSCompatibilityLayer.swift; sourceTree = ""; }; - A845B04B94B0E1C1F7CAC1A19D0340D6 /* RDEPUBSelectionLoupeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionLoupeView.swift; sourceTree = ""; }; + A7F40EAB66363D681DA68981B17FB492 /* RDReaderPagingController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPagingController.swift; sourceTree = ""; }; + A8052EE9D31E2F5253234D9A7C6A8218 /* RDEPUBStyleSheetBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleSheetBuilder.swift; sourceTree = ""; }; A8DFDCAB69B471EB5667C964865C26CF /* DTCoreGraphicsUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreGraphicsUtils.m; path = Core/Source/DTCoreGraphicsUtils.m; sourceTree = ""; }; - A974D11C3D99A37FECDAB079565A275F /* RDEPUBCFITextAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFITextAssertion.swift; sourceTree = ""; }; + A988B95153188D52B4BF9F4083BB18E9 /* RDEPUBTextAnnotationOverlay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnnotationOverlay.swift; sourceTree = ""; }; A9FBC69C7DA29A7283920FDA9EBBCE8A /* DTAnimatedGIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAnimatedGIF.h; path = Core/Source/iOS/DTAnimatedGIF/DTAnimatedGIF.h; sourceTree = ""; }; AA0811310099A4BCB3D52683B70DB3D1 /* Pods-ReadViewDemo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReadViewDemo-dummy.m"; sourceTree = ""; }; AA3CFD777AD76F97EBA05B3920F5786A /* DTIframeTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTIframeTextAttachment.m; path = Core/Source/DTIframeTextAttachment.m; sourceTree = ""; }; - AC2313F8B75FDFEFD0DBDD842F76D012 /* RDReaderPreloadController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPreloadController.swift; sourceTree = ""; }; - ACBDBAB2D4A07BA86ABF3F196E275CD2 /* RDEPUBReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderController.swift; sourceTree = ""; }; + AA89765B94A26A186DC7829FF979DBC3 /* RDEPUBParser+Package.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Package.swift"; sourceTree = ""; }; + AB3DF251DDD78EDAEE82FBEBDF9CE79B /* RDReaderPageChildViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPageChildViewController.swift; sourceTree = ""; }; + AB48BF4B843D518C890BDD2AC749E640 /* RDEPUBCFIRange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIRange.swift; sourceTree = ""; }; + AB8FBD335486F255F42811FC49E5657C /* UIColor+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUB.swift"; sourceTree = ""; }; + AD2CC39C57A942917B961FC8E73D80F7 /* RDEPUBCFIMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIMap.swift; sourceTree = ""; }; AD987C2FA7C8FBC96FD024E421DA0E68 /* Archive+Progress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Progress.swift"; path = "Sources/ZIPFoundation/Archive+Progress.swift"; sourceTree = ""; }; ADC5AC8FD4EC45E9BA5654A38715BB93 /* DTTextBlock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextBlock.m; path = Core/Source/DTTextBlock.m; sourceTree = ""; }; + AF6879143052D4942E4FEA0F92504804 /* RDEPUBReaderSearchBarView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchBarView.swift; sourceTree = ""; }; AFC4C9F69BF2D0CAEBAA83896C139D2C /* DTColorFunctions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTColorFunctions.m; path = Core/Source/DTColorFunctions.m; sourceTree = ""; }; AFE0B56638AFB77F4455784A7ED59876 /* DTDictationPlaceholderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTDictationPlaceholderView.m; path = Core/Source/DTDictationPlaceholderView.m; sourceTree = ""; }; + AFE6D8828F2634226CDA2F79A19625E3 /* UIColor+RDEPUBHex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUBHex.swift"; sourceTree = ""; }; B0500CA69405E23B09291359EB28331E /* NSMutableAttributedString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableAttributedString+HTML.m"; path = "Core/Source/NSMutableAttributedString+HTML.m"; sourceTree = ""; }; - B092BF12D8045E3C72C39C19010E067F /* RDEPUBBackgroundPriorityPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundPriorityPolicy.swift; sourceTree = ""; }; B0AC307F12521444C973EA0DE38B4608 /* NSMutableArray+DTMoving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+DTMoving.h"; path = "Core/Source/NSMutableArray+DTMoving.h"; sourceTree = ""; }; B0B32EA4B7A492EEF26CE260E9AEFA0B /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Sources/ConstraintMakerFinalizable.swift; sourceTree = ""; }; - B157210E873E2C199310B838E53286FD /* RDEPUBReaderUIState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderUIState.swift; sourceTree = ""; }; - B19C4570618CC1C8B9E8488EBCD9B0F5 /* RDEPUBReaderSettingsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettingsViewController.swift; sourceTree = ""; }; - B2205C761CC6E3BD03E29D00247B8017 /* RDEPUBChapterCacheKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterCacheKey.swift; sourceTree = ""; }; + B1AF2749008FE67A3281B83EE327E41D /* RDEPUBChapterData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterData.swift; sourceTree = ""; }; B245F7E143F3091652C64F6593E33F7A /* DTFolderMonitor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTFolderMonitor.m; path = Core/Source/DTFolderMonitor.m; sourceTree = ""; }; B2B3D0CB47B0A8E9EC5AF48B7F2DD6B0 /* DTCoreTextConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextConstants.m; path = Core/Source/DTCoreTextConstants.m; sourceTree = ""; }; - B300D661A4E613B36517DEC8EC312AEA /* RDEPUBMetadataParseCancellationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseCancellationController.swift; sourceTree = ""; }; - B3C14E09958710059E09B6816BC50FF1 /* RDEPUBCFIUtilities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIUtilities.swift; sourceTree = ""; }; + B2D39C06DF04E8847916639D58650315 /* RDEPUBReaderContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderContext.swift; 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; }; B509CD4B498635D4536245E43D802ED9 /* DTCSSListStyle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCSSListStyle.m; path = Core/Source/DTCSSListStyle.m; sourceTree = ""; }; - B5EF7020C5BFFD68865D54D1B940E73C /* RDEPUBChapterData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterData.swift; sourceTree = ""; }; + B55E6E99C6F879CFD19D3674CE20075C /* RDEPUBTextRendererSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextRendererSupport.swift; sourceTree = ""; }; B5FCE04EBB553439D1C2BA1001936293 /* DTCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCompatibility.h; path = Core/Source/DTCompatibility.h; sourceTree = ""; }; + B62755E9A395FF22E7405C3FE192D5F3 /* RDEPUBChapterPageCounter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterPageCounter.swift; sourceTree = ""; }; B6425B2235BA00FE865AF58EF44F1144 /* DTCoreGraphicsUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreGraphicsUtils.h; path = Core/Source/DTCoreGraphicsUtils.h; sourceTree = ""; }; - B72D18F1336296178742C907A3956E45 /* RDEPUBChapterRuntimeStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterRuntimeStore.swift; sourceTree = ""; }; B7672A26922DBD934FA1AC60D49EB322 /* NSNumber+RomanNumerals.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNumber+RomanNumerals.m"; path = "Core/Source/NSNumber+RomanNumerals.m"; sourceTree = ""; }; - B83D2091A24AC3D4A98E99AD499C381A /* RDEPUBReaderServices.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderServices.swift; sourceTree = ""; }; + B7DD486B95807F803EF1DD2976017779 /* RDEPUBChapterSummaryDiskCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterSummaryDiskCache.swift; sourceTree = ""; }; + B84FD477EF687A49F011E7FA557C1791 /* RDEPUBChapterCacheKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterCacheKey.swift; sourceTree = ""; }; + B898A07D2E7D8E62F64BD28BAFA3DEFA /* RDEPUBRenderDiagnosticsCollector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRenderDiagnosticsCollector.swift; sourceTree = ""; }; B8E40E302B85493BDE0FE91F829EC01E /* DTBase64Coding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTBase64Coding.h; path = Core/Source/DTBase64Coding.h; sourceTree = ""; }; - B9A160FAAD45590651794EEF3A2F67FE /* RDEPUBReaderToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderToolView.swift; sourceTree = ""; }; + B99FF5D96CD045BCC53A9F6F8493C379 /* RDEPUBReaderController+DataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+DataSource.swift"; sourceTree = ""; }; B9DCB5EC0B1CDADD221717CADDF62359 /* SnapKit-SnapKit_Privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "SnapKit-SnapKit_Privacy"; path = SnapKit_Privacy.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; B9E40164920C9AC1B1413C51835CD370 /* DTCoreText-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DTCoreText-Info.plist"; sourceTree = ""; }; - BA7C5D50017972C1AF6905C1B3733B08 /* RDEPUBNotePopupCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupCoordinator.swift; sourceTree = ""; }; + BA142E0FB9C9440BA93BE7BF027F095F /* RDEPUBReaderTableOfContentsItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTableOfContentsItem.swift; sourceTree = ""; }; + BAA55250015C69FA24DCF3808A74ACA5 /* RDEPUBTextContentInteractionCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentInteractionCoordinator.swift; sourceTree = ""; }; + BC1AE55A8C17840C96761BE01A89653E /* RDEPUBDarkImageAdjuster.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDarkImageAdjuster.swift; sourceTree = ""; }; BC332335B380BC51C4F05C5CCDFB9189 /* DTAnimatedGIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAnimatedGIF.m; path = Core/Source/iOS/DTAnimatedGIF/DTAnimatedGIF.m; sourceTree = ""; }; - BCC472137332414147193AA5DB35E4E0 /* RDEPUBWebView+Search.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Search.swift"; sourceTree = ""; }; BCCA590DB72AA93275262A414F16578A /* DTCoreTextFontDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextFontDescriptor.m; path = Core/Source/DTCoreTextFontDescriptor.m; sourceTree = ""; }; - BCF3686E574510BF6B5D13293E85F0E1 /* RDEPUBPaginator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginator.swift; sourceTree = ""; }; - BD1A3ADD8E5C9D2A848AA57AA083E168 /* RDEPUBTextAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnchor.swift; sourceTree = ""; }; BD768C27E392C934C06DFB4AC401037C /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Sources/ConstraintMakerRelatable.swift; sourceTree = ""; }; - BD88D55D7F7F1667E4466071F740A3C9 /* RDEPUBReaderTopToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTopToolView.swift; sourceTree = ""; }; BDD081272B47A3B73CE693D21DC26827 /* Entry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Entry.swift; path = Sources/ZIPFoundation/Entry.swift; sourceTree = ""; }; BE547E464E5D34F9FFB24BAC81D1E4CC /* NSString+DTUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTUtilities.h"; path = "Core/Source/NSString+DTUtilities.h"; sourceTree = ""; }; BF4F3EC137168B92A5DA85AF50CD239F /* NSAttributedString+DTDebug.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+DTDebug.m"; path = "Core/Source/NSAttributedString+DTDebug.m"; sourceTree = ""; }; - BFCF1D4F0258C1F7B53CE73485F48442 /* RDEPUBChapterWarmupOrchestrator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterWarmupOrchestrator.swift; sourceTree = ""; }; - C0FCBCDE580CFE3B2A980871EE253246 /* RDEPUBReaderController+RenderSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RenderSupport.swift"; sourceTree = ""; }; C123C127CC539ACCB510F665DB774899 /* DTAttributedTextContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedTextContentView.h; path = Core/Source/DTAttributedTextContentView.h; sourceTree = ""; }; C18480913E002315E3F5EC6945371697 /* NSDictionary+DTError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+DTError.m"; path = "Core/Source/NSDictionary+DTError.m"; sourceTree = ""; }; - C186CC4BD7D2CFECDD3B037A8C1D5114 /* RDEPUBTextIndexTable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextIndexTable.swift; sourceTree = ""; }; - C18CB52F788E649EF3C7AA2AC11100A4 /* RDEPUBReaderViewportMonitor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderViewportMonitor.swift; sourceTree = ""; }; C241AD9CEC9D6732CFBA6A55B49E64C9 /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Sources/ConstraintInsets.swift; sourceTree = ""; }; C26DBE1150BC9A30B69839783E000358 /* DTCoreTextLayouter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextLayouter.h; path = Core/Source/DTCoreTextLayouter.h; sourceTree = ""; }; C2840BE6D91479CCBC2E908FBD9DA183 /* DTCoreText.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTCoreText.release.xcconfig; sourceTree = ""; }; - C29508133496D51D5F24DDBFFEC54798 /* RDEPUBCFICompatibility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFICompatibility.swift; sourceTree = ""; }; C298199F5DC5390E8B6666F638B34C10 /* DTTextAttachmentHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextAttachmentHTMLElement.h; path = Core/Source/DTTextAttachmentHTMLElement.h; sourceTree = ""; }; - C30031E4337458E885FA7A27960620DE /* RDEPUBPageInteractionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageInteractionController.swift; sourceTree = ""; }; C30D143134EEC5D4BA99459104B76A2E /* DTHTMLParserTextNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLParserTextNode.h; path = Core/Source/DTHTMLParserTextNode.h; sourceTree = ""; }; - C409593D5FA3DD26DD8A3CDE6F8B221C /* String+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+RDEPUB.swift"; sourceTree = ""; }; C422BCADBB48E28B549495663705A0FB /* DTWeakSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTWeakSupport.h; path = Core/Source/DTWeakSupport.h; sourceTree = ""; }; + C5077CB33FD2EA6584AF290C95617DC0 /* RDEPUBReadingLocationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReadingLocationModels.swift; sourceTree = ""; }; + C518633651B8B05BFB5292862EB4B642 /* RDEPUBSelectionLoupeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionLoupeView.swift; sourceTree = ""; }; + C5B003AC0B46623423334F97FEE379B8 /* RDEPUBTextPerformanceSampler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPerformanceSampler.swift; sourceTree = ""; }; C6DB34ACB132E465CDF8191F7DB71EF6 /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Sources/ConstraintView+Extensions.swift"; sourceTree = ""; }; C71D83D6AEF198FA680B8A80BF2D9605 /* DTCoreTextLayoutLine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayoutLine.m; path = Core/Source/DTCoreTextLayoutLine.m; sourceTree = ""; }; C80065DBA5634DAA71129404975D7349 /* NSURL+DTUnshorten.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURL+DTUnshorten.m"; path = "Core/Source/NSURL+DTUnshorten.m"; sourceTree = ""; }; + C80DE4FAC18642D5E8D148D8A1E5A566 /* RDEPUBRuntimePageCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimePageCount.swift; sourceTree = ""; }; C8343CDCF82729A8EBCCA37A6650E34F /* DTHTMLParserNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLParserNode.h; path = Core/Source/DTHTMLParserNode.h; sourceTree = ""; }; + C8B29AA7038EA68CF6B91D18CC87E743 /* RDEPUBJumpSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJumpSession.swift; sourceTree = ""; }; C8C20D9A71E6605DEE80342E7122B683 /* DTCoreTextConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextConstants.h; path = Core/Source/DTCoreTextConstants.h; sourceTree = ""; }; C8E2FC7BE14F90878CE3FB3E317996ED /* ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist"; sourceTree = ""; }; C9593E7B37569219F8D9A504B47707DC /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Sources/ConstraintAttributes.swift; sourceTree = ""; }; C960B7AA0B9B8CC473FACFEC64F9906D /* SnapKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.debug.xcconfig; sourceTree = ""; }; + C9FD96F86CD108FB55F99EDCC82B3771 /* RDEPUBChapterDataCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterDataCache.swift; sourceTree = ""; }; CA4A114775B98CEA4A566C18123B145F /* ZIPFoundation-ZIPFoundation_Privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "ZIPFoundation-ZIPFoundation_Privacy"; path = ZIPFoundation_Privacy.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; CA538A48DD3691701EC6B5021D7B7381 /* NSScanner+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSScanner+HTML.m"; path = "Core/Source/NSScanner+HTML.m"; sourceTree = ""; }; - CB5E488026478CA9CD4FAF23BF378F77 /* RDEPUBSelectionOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionOverlayView.swift; sourceTree = ""; }; CB7F3535507F56824BA21509302CF8B3 /* NSString+DTURLEncoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTURLEncoding.m"; path = "Core/Source/NSString+DTURLEncoding.m"; sourceTree = ""; }; - CBECF99D05CF4651818FB884017A0C69 /* RDEPUBMetadataParseWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseWorker.swift; sourceTree = ""; }; - CC162013E2626B2489739C731077B43C /* RDEPUBWebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebView.swift; sourceTree = ""; }; - CCEB096B8A5CC40D05995D4C8BCE6996 /* RDEPUBReaderController+LocationResolution.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+LocationResolution.swift"; sourceTree = ""; }; + CD0C3C872488B6341E22BF47B6F9BBD6 /* RDEPUBBuildDiagnosticsReporter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBuildDiagnosticsReporter.swift; sourceTree = ""; }; + CDC41111F7B2BF68994C924BC0C5794C /* RDEPUBAttachmentTooltipOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipOverlayView.swift; sourceTree = ""; }; CE6907AC04870132CCE3177E894607DD /* DTCoreTextLayoutFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextLayoutFrame.h; path = Core/Source/DTCoreTextLayoutFrame.h; sourceTree = ""; }; CE7768E097F8BDE9FBE3752B98CD0101 /* DTCoreText-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTCoreText-umbrella.h"; sourceTree = ""; }; CEA93EDA6ED54D374265AA5D6B9EBBA9 /* NSArray+DTError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+DTError.h"; path = "Core/Source/NSArray+DTError.h"; sourceTree = ""; }; - CEEA0316D9580EFCF73105A138F13E33 /* RDEPUBParser+Package.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Package.swift"; sourceTree = ""; }; - CFC94637FA2BC2BB996CB04F3AD382D7 /* RDEPUBReaderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderConfiguration.swift; sourceTree = ""; }; D1599698B5A62671C488F13E07272B09 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayoutFrameAccessibilityElementGenerator.m; path = Core/Source/DTCoreTextLayoutFrameAccessibilityElementGenerator.m; sourceTree = ""; }; - D15EBEFE87571B56DE884F4C60118CE5 /* RDEPUBPageMapReconciliationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageMapReconciliationCoordinator.swift; sourceTree = ""; }; D1E89A31867FF1FB44B4B999988F1B82 /* DTFoundation */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DTFoundation; path = DTFoundation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D24D7F3F52B5BE585E06538DBA3CD6F7 /* RDEPUBResourceResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBResourceResolver.swift; sourceTree = ""; }; D24FE8634A7AD2562DB8ADB9D4BBB36A /* CTLineUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CTLineUtils.m; path = Core/Source/CTLineUtils.m; sourceTree = ""; }; D2BA6D5DBD4C6A9285C4592721790A26 /* DTSmartPagingScrollView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTSmartPagingScrollView.h; path = Core/Source/iOS/DTSmartPagingScrollView.h; sourceTree = ""; }; D3593ADF561D422F73C8EABAD4A4F440 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Sources/ConstraintRelation.swift; sourceTree = ""; }; D36ED8209C907E3E9B074DDB399F54FF /* DTTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextAttachment.h; path = Core/Source/DTTextAttachment.h; sourceTree = ""; }; + D3BFB23BF28CE5120D1FFBD76664087B /* RDEPUBWebView+Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Configuration.swift"; sourceTree = ""; }; D4093D30B372960168C1349100DF7DE0 /* DTAttributedTextCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedTextCell.h; path = Core/Source/DTAttributedTextCell.h; sourceTree = ""; }; - D4517A0658C991352A0B5ED4B851CED2 /* RDEPUBReaderPersistence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPersistence.swift; sourceTree = ""; }; + D4721E12B4121C46B8368D085D91EC2B /* RDEPUBTextPaginationInterfaces.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPaginationInterfaces.swift; sourceTree = ""; }; D495E2AB1223BD4D4909F8FF1FF47DAF /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Sources/Debugging.swift; sourceTree = ""; }; D497C3CA364E37DAAFF2C3B90CC7DBE8 /* DTTextBlock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextBlock.h; path = Core/Source/DTTextBlock.h; sourceTree = ""; }; - D53FC89DDB339BF2C7F6BEAFEE0097F4 /* RDEPUBCFIDOMPathBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIDOMPathBuilder.swift; sourceTree = ""; }; - D5C92D6A531895CC82CDB6FFCE7205BC /* RDReaderView+ToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+ToolView.swift"; sourceTree = ""; }; - D5FB089C00DA0BE4FB492881E5CEFE62 /* RDReaderView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RDReaderView-prefix.pch"; sourceTree = ""; }; - D61ED230892882E40FEE83CDBB7A9D93 /* RDEPUBPageResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageResolver.swift; sourceTree = ""; }; - D64D8C9DC33119921466055ACC5347C7 /* RDEPUBChapterLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLoader.swift; sourceTree = ""; }; D7B5E61166782ED8D585D4FCEE2074DB /* DTLinkButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTLinkButton.h; path = Core/Source/DTLinkButton.h; sourceTree = ""; }; + D7FB9FD3FFFF0D8E3D9D354EC7AF35E1 /* RDEPUBNotePopupViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupViewController.swift; sourceTree = ""; }; D80CD20CB452B31CCCB14AF8567524D3 /* DTCoreText-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTCoreText-prefix.pch"; sourceTree = ""; }; D85A85D891A320165843EF9F489178F7 /* UIImage+DTFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+DTFoundation.m"; path = "Core/Source/iOS/UIImage+DTFoundation.m"; sourceTree = ""; }; D863AE4F659A0F71B22DC9FF334DDF4E /* DTCoreTextLayoutFrameAccessibilityElementGenerator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextLayoutFrameAccessibilityElementGenerator.h; path = Core/Source/DTCoreTextLayoutFrameAccessibilityElementGenerator.h; sourceTree = ""; }; D8C351514678D41C58869BD057D5483F /* UIViewFrameExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIViewFrameExtension.swift; path = Sources/SSAlertSwift/UIViewFrameExtension.swift; sourceTree = ""; }; D927F128EBF26AD2C61FD0E6B6F6F5ED /* ZIPFoundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-umbrella.h"; sourceTree = ""; }; - D929EFDAB7B825037CC25F4A5D4C0462 /* RDReaderView.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RDReaderView.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; D9AFC4B66F872436A059FE53780D216F /* SSAlertSwift */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SSAlertSwift; path = SSAlertSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DA25968B7C9A40031DA45BB328EA8A2E /* DTStylesheetHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTStylesheetHTMLElement.m; path = Core/Source/DTStylesheetHTMLElement.m; sourceTree = ""; }; + DA80D2B3DB04B3530C801B06AC694048 /* RDEPUBReaderHighlightsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderHighlightsViewController.swift; sourceTree = ""; }; DA9E9711A4073440ECC06C5BD6D8702F /* SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapKit-Info.plist"; sourceTree = ""; }; - DAB14DCFE26C506AB370FDEE79883AE8 /* cssInjector.js */ = {isa = PBXFileReference; includeInIndex = 1; name = cssInjector.js; path = Sources/RDReaderView/EPUBCore/Resources/cssInjector.js; sourceTree = ""; }; - DBC476BD15E1101987A52B894DC3CB02 /* RDEPUBReaderSearchCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchCoordinator.swift; sourceTree = ""; }; + DAA89AE50DEA94816C5333CC1325DDA8 /* RDEPUBReaderTopToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTopToolView.swift; sourceTree = ""; }; DBC9280BA00935565E9658775DD7404D /* NSAttributedString+DTCoreText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+DTCoreText.m"; path = "Core/Source/NSAttributedString+DTCoreText.m"; sourceTree = ""; }; DCECDBD73595CA88A2208000B4B68352 /* NSString+DTUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTUtilities.m"; path = "Core/Source/NSString+DTUtilities.m"; sourceTree = ""; }; DD189DA6054AAE2242F6644A2623B50E /* NSAttributedString+SmallCaps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+SmallCaps.h"; path = "Core/Source/NSAttributedString+SmallCaps.h"; sourceTree = ""; }; - DD39D5D16074428C43CD870060DBACA6 /* RDEPUBTextPositionConverter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPositionConverter.swift; sourceTree = ""; }; DD58A1908F3C532210EA65ACE410A44D /* CTLineUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CTLineUtils.h; path = Core/Source/CTLineUtils.h; sourceTree = ""; }; + DE28C0B33B3E44975093B0F177FDD67F /* RDEPUBCFIParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIParser.swift; 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; }; - DEDA10329B118CA762890DD7D8B64C6C /* RDURLReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDURLReaderController.swift; sourceTree = ""; }; - DEEE722A6CEB62B173B8C71F0E7336C7 /* RDEPUBStyleCompatibilityModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleCompatibilityModels.swift; sourceTree = ""; }; DF5EDCA3B21964D0462BE0982E2F0BF8 /* DTTiledLayerWithoutFade.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTiledLayerWithoutFade.h; path = Core/Source/iOS/DTTiledLayerWithoutFade.h; sourceTree = ""; }; DF670EC438F05ACC1F1C7B725DBDAA18 /* DTFoundation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTFoundation.release.xcconfig; sourceTree = ""; }; DF988440049800DB7824A94B81D20254 /* Archive+Writing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Writing.swift"; path = "Sources/ZIPFoundation/Archive+Writing.swift"; sourceTree = ""; }; - DFB1ABFCCAC4DAE451803B7620A3E75B /* RDEPUBCFI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFI.swift; sourceTree = ""; }; - E05401D6B263F054E8B15A3B594BC5A5 /* RDEPUBPageCountCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageCountCache.swift; sourceTree = ""; }; E0D90EB06FC37D534934542F9CAB1D74 /* DTCSSStylesheet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCSSStylesheet.m; path = Core/Source/DTCSSStylesheet.m; sourceTree = ""; }; - E1689173E78766BA24FA271006949DD2 /* RDReaderContentCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderContentCell.swift; sourceTree = ""; }; + E0F6036722A2FEED169B57120EB274D1 /* RDEPUBHTMLNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBHTMLNormalizer.swift; sourceTree = ""; }; E16D20FA492E085BD0871B107B3077B7 /* DTHTMLWriter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLWriter.m; path = Core/Source/DTHTMLWriter.m; sourceTree = ""; }; E196F56E68578181D5BDE787DE5C0F3A /* DTColor+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "DTColor+Compatibility.m"; path = "Core/Source/DTColor+Compatibility.m"; sourceTree = ""; }; E1F63A854BBF28E93AC1D3F71CD48CBE /* DTAttributedTextCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedTextCell.m; path = Core/Source/DTAttributedTextCell.m; sourceTree = ""; }; E20272295EC253826AEE1F83A15D47C5 /* NSAttributedStringRunDelegates.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NSAttributedStringRunDelegates.h; path = Core/Source/NSAttributedStringRunDelegates.h; sourceTree = ""; }; E27C503C8128BC3CE109FFE077AEF325 /* NSString+CSS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+CSS.m"; path = "Core/Source/NSString+CSS.m"; sourceTree = ""; }; E28CA95D89DBAB2FE56BC8513D5838D7 /* DTHorizontalRuleHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHorizontalRuleHTMLElement.h; path = Core/Source/DTHorizontalRuleHTMLElement.h; sourceTree = ""; }; - E474E1489E80ABDF6B665BEA40856E40 /* RDEPUBWebView+Reflowable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Reflowable.swift"; sourceTree = ""; }; + E3E5029439FC2CDA4E874FBB500F3FE0 /* RDEPUBResourceURLSchemeHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBResourceURLSchemeHandler.swift; sourceTree = ""; }; E481007A8174943868EBC81CF3B04B9F /* SSAlertPresentAnimation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSAlertPresentAnimation.swift; path = Sources/SSAlertSwift/SSAlertPresentAnimation.swift; sourceTree = ""; }; + E4BC2CE5C3B20971FF99A9C8EC487481 /* RDEPUBNavigatorLayoutContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNavigatorLayoutContext.swift; sourceTree = ""; }; + E4C4605A9B7326DBE0CED7EB66A7416F /* RDReaderFlowLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderFlowLayout.swift; sourceTree = ""; }; + E4EDAF459D89DEFB5A597F8278CE222F /* RDEPUBWebViewDebug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebViewDebug.swift; sourceTree = ""; }; E5F69A1E1260BAD7737BEB533F643A15 /* DTLazyImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTLazyImageView.h; path = Core/Source/DTLazyImageView.h; sourceTree = ""; }; E62C5E593037EF8A45E7FAA847D0277C /* DTCoreTextLayoutFrame+Cursor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "DTCoreTextLayoutFrame+Cursor.m"; path = "Core/Source/DTCoreTextLayoutFrame+Cursor.m"; sourceTree = ""; }; - E6A8108BD01EDCF1A37193D87427C6D2 /* RDReaderTapRegionHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderTapRegionHandler.swift; sourceTree = ""; }; E6F2E79CC33E0823C4E719ECDDFBBE08 /* NSAttributedStringRunDelegates.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NSAttributedStringRunDelegates.m; path = Core/Source/NSAttributedStringRunDelegates.m; sourceTree = ""; }; - E79BD89A1ED27EEDC4DE2290FF3118DF /* RDEPUBTextSelectionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSelectionController.swift; sourceTree = ""; }; - E980E36577B236C9DC52A497F85388C3 /* RDEPUBBookPageMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBookPageMap.swift; sourceTree = ""; }; - EA25825AB5D083AD35744145AF10E718 /* RDEPUBChapterWindowCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterWindowCoordinator.swift; sourceTree = ""; }; + E808E517A1FE8666CB17EA9D94B4747A /* RDEPUBParser+Resources.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Resources.swift"; sourceTree = ""; }; + E8428598288FB3C84E993319B4E11B03 /* RDEPUBChapterWindowCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterWindowCoordinator.swift; sourceTree = ""; }; + E8C6B44716EC22054F92F4ED84DA6A85 /* RDEPUBNoteResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteResolver.swift; sourceTree = ""; }; + E97368D346BF315D1080DBA98C0788AA /* RDEPUBJavaScriptBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJavaScriptBridge.swift; sourceTree = ""; }; + E992F389B960CB699FDDEA5FBD8F31C8 /* RDEPUBCFIUtilities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIUtilities.swift; sourceTree = ""; }; + E9A8B5491FF7E8AB9CD6015AE4E1C0D2 /* RDEPUBCFISerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFISerializer.swift; sourceTree = ""; }; + EA3CE87842A4B39DB8691712AEC0E5FD /* RDEPUBNavigationStateMachine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNavigationStateMachine.swift; sourceTree = ""; }; EBA0272559B0F7FAD8AC670AC7431188 /* Pods-ReadViewDemo-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReadViewDemo-umbrella.h"; sourceTree = ""; }; - EC59639D756DEA2914DF1A97050137A1 /* RDEPUBNavigatorState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNavigatorState.swift; sourceTree = ""; }; - EC81F5F271A26EA7C1D7AFF9374188B8 /* RDEPUBTextLayouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextLayouter.swift; sourceTree = ""; }; + EBE150E8FBF2AC59607D94086EF644B6 /* RDEPUBPreferences.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPreferences.swift; sourceTree = ""; }; + ECBE8305E343FF00B5DDF4F8F9D18623 /* cssInjector.js */ = {isa = PBXFileReference; includeInIndex = 1; name = cssInjector.js; path = Sources/RDReaderView/EPUBCore/Resources/cssInjector.js; sourceTree = ""; }; ECFE19508E12BF8B0B52E8CB4F724217 /* ConstraintMakerRelatable+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintMakerRelatable+Extensions.swift"; path = "Sources/ConstraintMakerRelatable+Extensions.swift"; sourceTree = ""; }; - ED00B070AB7D3CFFF967D5978A298DA3 /* RDEPUBReaderAnnotationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAnnotationCoordinator.swift; sourceTree = ""; }; - ED40EE4143B1EC69166CD58B11C00B40 /* RDEPUBFontFallbackResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFontFallbackResolver.swift; sourceTree = ""; }; ED5693BD171B879406EA14C97F4AD8D8 /* Archive+ZIP64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+ZIP64.swift"; path = "Sources/ZIPFoundation/Archive+ZIP64.swift"; sourceTree = ""; }; EDA6D5D7D0A04878EE78FAAE94F65068 /* DTCoreText */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DTCoreText; path = DTCoreText.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EE4E65CBFE33A55487727CE851F95C96 /* RDEPUBParser+TOC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+TOC.swift"; sourceTree = ""; }; EE4EE750340347ED584C5A2C1164331A /* SSAlertCommonView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSAlertCommonView.swift; path = Sources/SSAlertSwift/SSAlertCommonView.swift; sourceTree = ""; }; EE9D4A455723797A27F04A15C4E47823 /* DTHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLElement.h; path = Core/Source/DTHTMLElement.h; sourceTree = ""; }; - EEAA57C95D8912B8505C8DA1AD4B6AC6 /* RDEPUBDarkImageAdjuster.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDarkImageAdjuster.swift; sourceTree = ""; }; + EEA02BC05A988384DC4551B451ED1E7E /* RDURLReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDURLReaderController.swift; sourceTree = ""; }; + EEAE1CB7D6F5BB8E33C9562663C93A51 /* RDEPUBPageInteractionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageInteractionController.swift; sourceTree = ""; }; + EEC9D27C90F465491EF9BA9CC8CDA1E1 /* RDEPUBReaderRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderRuntime.swift; sourceTree = ""; }; + EEE1B7CF6E54E7876BBF28948CD65B9E /* RDEPUBBookPageMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBookPageMap.swift; sourceTree = ""; }; EF27E643619E369E8A9C1FE6EFE18C78 /* DTFoundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DTFoundation.modulemap; sourceTree = ""; }; - EF8BD4198F6FFF3793A1EDD6E9FE2259 /* RDEPUBCFIError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIError.swift; sourceTree = ""; }; - EFF1EFC40E2A42337D7C758A6A4F26D7 /* RDEPUBReaderController+TableOfContents.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+TableOfContents.swift"; sourceTree = ""; }; + EFA3CC091FA3A16CC09C9C66D1BC0E50 /* RDEPUBTextSelectionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSelectionController.swift; sourceTree = ""; }; F038FB491B9A4A53447EF0DC333301AE /* DTObjectTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTObjectTextAttachment.m; path = Core/Source/DTObjectTextAttachment.m; sourceTree = ""; }; F0548F684CA2D8C445086389A2BD5265 /* ZIPFoundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-prefix.pch"; sourceTree = ""; }; - F080C0809566114997B5E6B9AF967C76 /* RDEPUBReaderController+DataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+DataSource.swift"; sourceTree = ""; }; + F058E473114A5A8FE875FD5ABBE02F5E /* RDEPUBReaderLoadCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLoadCoordinator.swift; sourceTree = ""; }; F0D72C5680EBE6CA716EE77281AA4436 /* DTAttributedTextContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedTextContentView.m; path = Core/Source/DTAttributedTextContentView.m; sourceTree = ""; }; - F13DE2B771ECF4C1C6DDAC4FCD18CD0A /* RDEPUBChapterWindowSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterWindowSnapshot.swift; sourceTree = ""; }; - F20C5D28C46992997B5F00839C906E95 /* RDReaderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderView.swift; sourceTree = ""; }; - F25A8801661F7DE4DEAC12BE1F80C332 /* RDEPUBCFIPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIPath.swift; sourceTree = ""; }; - F29D75FFF877587EAEA07BBE58C097FB /* RDReaderView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RDReaderView-dummy.m"; sourceTree = ""; }; + F20E15B3473E29738F2A09C625A687BB /* RDEPUBImageViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewController.swift; sourceTree = ""; }; + F270A5E6ACC194137AB15688F6F4C759 /* RDEPUBReaderToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderToolView.swift; sourceTree = ""; }; + F34551B808D265BCB3443EE33D6C1EF4 /* RDEPUBWebView+Reflowable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Reflowable.swift"; sourceTree = ""; }; F35039A8D0AA1F7BAFC4E5E016057E15 /* DTTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextAttachment.m; path = Core/Source/DTTextAttachment.m; sourceTree = ""; }; F37563A56C180CE18EEFADE56FA3C17F /* DTAccessibilityViewProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAccessibilityViewProxy.h; path = Core/Source/DTAccessibilityViewProxy.h; sourceTree = ""; }; F410ED25E4E84C3D5166261CDF4B58F2 /* SSAlertView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSAlertView.swift; path = Sources/SSAlertSwift/SSAlertView.swift; sourceTree = ""; }; + F46977FAF9F0EAEDF840BDA49288CC99 /* WeReadApi.js */ = {isa = PBXFileReference; includeInIndex = 1; name = WeReadApi.js; path = Sources/RDReaderView/EPUBCore/Resources/WeReadApi.js; sourceTree = ""; }; F4E2B1AC73977F10254628C0B7EBE38F /* DTCoreText-Resources */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "DTCoreText-Resources"; path = Resources.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - F4F887E8F4A5F82464101B5352D2AF31 /* RDEPUBReaderEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderEnvironment.swift; sourceTree = ""; }; + F4E89D45F05E7E9797A973AC12579973 /* RDEPUBChapterOffsetMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterOffsetMap.swift; sourceTree = ""; }; F5389D4E96A4AFE175691B4D3D4524E7 /* DTExtendedFileAttributes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTExtendedFileAttributes.m; path = Core/Source/DTExtendedFileAttributes.m; sourceTree = ""; }; F53CCB60DE5D06A43E4A52EDB274E7D2 /* NSString+Paragraphs.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Paragraphs.m"; path = "Core/Source/NSString+Paragraphs.m"; sourceTree = ""; }; - F53F2F0463AC1292BFE9AFE159F8016F /* RDEPUBParser+Resources.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Resources.swift"; sourceTree = ""; }; + F5847BF261408B9B82FB3BF7A9390AB3 /* RDEPUBAttachmentNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentNormalizer.swift; sourceTree = ""; }; F5B34EE2160C27947D1EEFD42184CF5D /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Sources/ConstraintLayoutSupportDSL.swift; sourceTree = ""; }; - F661AA03BC0EBFBDBBC00AC38E62EF34 /* RDEPUBWebView+JavaScriptBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+JavaScriptBridge.swift"; sourceTree = ""; }; + F60BBDE3C78317A1DF3E2FF97B966899 /* RDEPUBChapterLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLoader.swift; sourceTree = ""; }; F699881ABDBEB419AEBA661AD5A21F35 /* ZIPFoundation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.release.xcconfig; sourceTree = ""; }; F734214E067BDBDB581911E1A5CDAADB /* DTBreakHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTBreakHTMLElement.m; path = Core/Source/DTBreakHTMLElement.m; sourceTree = ""; }; F76A97683FB5E8E8B86EA4AD71F6F4B4 /* Date+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Date+ZIP.swift"; path = "Sources/ZIPFoundation/Date+ZIP.swift"; sourceTree = ""; }; F7B0087DE7C394A677F5883541AB4FB7 /* DTListItemHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTListItemHTMLElement.m; path = Core/Source/DTListItemHTMLElement.m; sourceTree = ""; }; - F7DF49DAD850A270AF8E92ED70F66184 /* RDEPUBTextSearchEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSearchEngine.swift; sourceTree = ""; }; - F7F6C930B6A92EF1CEA65FC355E7EABB /* RDEPUBParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBParser.swift; sourceTree = ""; }; + F81B70DF51F9CD64A7DC5AAF3941F72C /* wxread-replace.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-replace.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-replace.css"; sourceTree = ""; }; + F9688BB6F63743F17F842CE97BCF847C /* RDEPUBCFICompatibility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFICompatibility.swift; sourceTree = ""; }; F9A2565B302334B662AB51DCF8E65EEE /* DTDictationPlaceholderTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTDictationPlaceholderTextAttachment.h; path = Core/Source/DTDictationPlaceholderTextAttachment.h; sourceTree = ""; }; + FABA3ECEE6A89B4087086F0D2377CB5A /* RDReaderView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RDReaderView.modulemap; sourceTree = ""; }; FB2ABB1D297442D91AA42F1407DB4A58 /* DTTextHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextHTMLElement.h; path = Core/Source/DTTextHTMLElement.h; sourceTree = ""; }; - FC010729FF0DC7965F4E61FE4B7DAED8 /* RDEPUBReaderRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderRuntime.swift; sourceTree = ""; }; + FB36F27A8101BA01699CFD777FC1CAFA /* RDReaderView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RDReaderView-prefix.pch"; sourceTree = ""; }; FC5EC7C3D1808C9CF53354D7A3D69EE7 /* NSString+DTPaths.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTPaths.h"; path = "Core/Source/NSString+DTPaths.h"; sourceTree = ""; }; FCC718115E5C31C88A680522AE36B089 /* DTFoundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DTFoundation-dummy.m"; sourceTree = ""; }; - FCCB7B202BEDC5F5B8895F56085A2DCA /* RDEPUBWebContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebContentView.swift; sourceTree = ""; }; + FD0189649153ACCA56C4C8AD0BEF1E0D /* RDEPUBReaderController+ContentDelegates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ContentDelegates.swift"; sourceTree = ""; }; FD03567681A79FFB6E81B3105503065D /* DTFoundationConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTFoundationConstants.h; path = Core/Source/DTFoundationConstants.h; sourceTree = ""; }; - FD059368898F7F8B822A49571413B2B9 /* RDEPUBReaderContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderContext.swift; sourceTree = ""; }; + FD0BB5D8B2ADEBDD25F740A7185B516E /* RDEPUBSearchEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSearchEngine.swift; sourceTree = ""; }; FDD333B409D528E5006FA48F4D70A6F5 /* DTCSSListStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCSSListStyle.h; path = Core/Source/DTCSSListStyle.h; sourceTree = ""; }; - FDFBDFD59B4D9B04D1AA516EA1A41F88 /* RDReaderPageChildViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPageChildViewController.swift; sourceTree = ""; }; + FE10A5C6934704218EB16F8966AA0814 /* RDEPUBPageBreakPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageBreakPolicy.swift; sourceTree = ""; }; FE2991699D0391172DEADF2F4613E320 /* SSAlertSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SSAlertSwift.release.xcconfig; 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; }; + FEC2659F6ADAB5F211964D1A8CA88C26 /* RDEPUBRuntimeChapter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimeChapter.swift; sourceTree = ""; }; FEEB15F87BA6575BBFE1C5FD19B17CD7 /* DTImageTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTImageTextAttachment.m; path = Core/Source/DTImageTextAttachment.m; sourceTree = ""; }; + FF164505A477C6ED40FE8EF0CB2E6693 /* RDEPUBTextBookCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookCache.swift; sourceTree = ""; }; FF3F7BA20A1213804048557D946CEEA9 /* NSAttributedString+DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+DTCoreText.h"; path = "Core/Source/NSAttributedString+DTCoreText.h"; sourceTree = ""; }; - FF73643D6C558218A30F86F03A594CBA /* RDEPUBTextBuildPipelineInterfaces.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBuildPipelineInterfaces.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 2FB1B011B93858D09A0C6CD143EA8261 /* Frameworks */ = { + 0690E2F3423B489C060C58F052BA27E8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 65AA4E5DD815EA54256EB4F859B2CBE1 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 18ADF4391AD2B9AFFB8C22BB8E39073A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 34461B07A262A084CD6DF7F81D13DE0E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 903C3E894FA36582171914FBBAAB044D /* Foundation.framework in Frameworks */, - 7C235EE866F95546F32C0F12A4777356 /* ImageIO.framework in Frameworks */, - EB443E9860A66D1EFC70136AC83E2FCA /* QuartzCore.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4FDA977A2376EC004EF757911EA147C2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 40221D5B7717ED1BE8F6AC59EC9F3CEC /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 53B99546E8009C9D78F6F6D12AE65A9A /* Frameworks */ = { + 3E819BE9BEE6A082564F6D50AC1FE536 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4A09AA29561E2A2483171BE5F449E451 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1175,14 +1170,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 5B6486B0E226A306E01E2AE183A60429 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6C5083F9338B8851E15F70B79A7F44F4 /* Frameworks */ = { + 5F41B71D619CE5CB2F653FD0EAD76A81 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -1202,33 +1190,71 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 781CAC434111081986005D6AE179F45B /* Frameworks */ = { + 7A27B9BB2F93CD6A273034C4F5C15307 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 10E2206844CFF1FFD5815CDD1EA2CB5D /* Foundation.framework in Frameworks */, + 9272A0B4C967A5616574EAA5802FA096 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B1EC0A3CE04A823BC0DC435834EF6C64 /* Frameworks */ = { + 9EA8986C070A5282511443AA1423116E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5EC18CDFDFBA1F4F0E3357D8079F68D4 /* Foundation.framework in Frameworks */, + AEF180508B84AAB5A0712C04958E0AF0 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - E3E7B730857EF8492B63F6A72BA7E464 /* Frameworks */ = { + CDE0C51D4CC555811724B28FB8285A10 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A0376FF1CA9B7ED0356E0354DE826E5 /* Foundation.framework in Frameworks */, + 53E23429B7E072BE1D580C47944785A3 /* ImageIO.framework in Frameworks */, + EE719709C9E809F3CA56B801792C1CF8 /* QuartzCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + CE5A833C5532ED1B29593567E3B5AA66 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E5A91F32DDA2E21F380CDBBFC1CD94C7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F6658D5406B461AC7E42F7A969A5F673 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 02ADBDED67BF477D7F4068FECEFEFAFE /* CFI */ = { + isa = PBXGroup; + children = ( + 930D75A53D2FD874346BF17C0A2CB1BC /* RDEPUBCFI.swift */, + F9688BB6F63743F17F842CE97BCF847C /* RDEPUBCFICompatibility.swift */, + 575B2D957760E0B9F1480FCB092B6B78 /* RDEPUBCFIDOMPathBuilder.swift */, + 4D2063CE799735F3C4AE37FE11567CBC /* RDEPUBCFIError.swift */, + 0524B881754B1D6EBC90981B8760C6B7 /* RDEPUBCFIGenerator.swift */, + AD2CC39C57A942917B961FC8E73D80F7 /* RDEPUBCFIMap.swift */, + DE28C0B33B3E44975093B0F177FDD67F /* RDEPUBCFIParser.swift */, + 11CD06780A381427FE5EDE9D07D4D970 /* RDEPUBCFIPath.swift */, + AB48BF4B843D518C890BDD2AC749E640 /* RDEPUBCFIRange.swift */, + 078D30B87BEEB64D27E0BDB8EB562475 /* RDEPUBCFIRecoveryEngine.swift */, + A24AB4F9BE6993854E38FD95A30B9845 /* RDEPUBCFIResolver.swift */, + E9A8B5491FF7E8AB9CD6015AE4E1C0D2 /* RDEPUBCFISerializer.swift */, + 414962A3F7230445216E714935F3C22F /* RDEPUBCFITextAssertion.swift */, + E992F389B960CB699FDDEA5FBD8F31C8 /* RDEPUBCFIUtilities.swift */, + ); + name = CFI; + path = CFI; + sourceTree = ""; + }; 0388AB194A762ACB56242F4BF9BA4498 /* Resources */ = { isa = PBXGroup; children = ( @@ -1237,38 +1263,6 @@ name = Resources; sourceTree = ""; }; - 05C1EB52F20A7DC6028431405637EAB2 /* RDReaderView */ = { - isa = PBXGroup; - children = ( - DAB14DCFE26C506AB370FDEE79883AE8 /* cssInjector.js */, - 2EDD5A25D7DC1EED92829AE2851EEF2A /* epub-bridge.js */, - 435BCDDA491498B312BF8B10335F5F6D /* epub-fixed-layout.html */, - 212C8E23F9694FF5B5B5FEF9E774E0C6 /* rangy-core.js */, - 7315B7878D20AD386748BCFFF68812DB /* rangy-serializer.js */, - 5214F772AE3CD906C0E5AE335E0A27E0 /* WeReadApi.js */, - 1541A3CEA0FCBABEF9872A60FAEF47B5 /* wxread-dark.css */, - 111B17BCED09E0F8D5AA9E8F7A335AF0 /* wxread-default.css */, - 8C63018B1CE90D338115DC072191A153 /* wxread-replace.css */, - 6F768932648B61D9731F923A824F7617 /* wxread-replace-latin.css */, - B992E04B329FC58B492A21B64F4D498D /* EPUBCore */, - 4C802C971A396CAC03ED8A12D7664C03 /* EPUBTextRendering */, - E3A38F6522C2FB2799085A7CB3D55545 /* EPUBUI */, - 071B90FD836A050A94621A34445BAF70 /* Pod */, - 2792EC5669A2F913CCBBE84DBA8899AF /* ReaderView */, - A1C2DFEF90972D588DE06D2F96C32B6B /* Support Files */, - ); - name = RDReaderView; - path = ../..; - sourceTree = ""; - }; - 071B90FD836A050A94621A34445BAF70 /* Pod */ = { - isa = PBXGroup; - children = ( - D929EFDAB7B825037CC25F4A5D4C0462 /* RDReaderView.podspec */, - ); - name = Pod; - sourceTree = ""; - }; 0B2E031EFC525508B0D167AAA6E70507 /* SnapKit */ = { isa = PBXGroup; children = ( @@ -1316,6 +1310,18 @@ path = SnapKit; sourceTree = ""; }; + 0BCB541A25608F56871618A1D03E9C54 /* Paging */ = { + isa = PBXGroup; + children = ( + A7F40EAB66363D681DA68981B17FB492 /* RDReaderPagingController.swift */, + 0E5D2C72E80EF71ECCFDFE5C476ADADE /* RDReaderPreloadController.swift */, + 0786D6430A29C2F90E4832048559BE21 /* RDReaderSpreadResolver.swift */, + 9C1B2F1D8E3F93A60375AA8853FF1842 /* RDReaderTapRegionHandler.swift */, + ); + name = Paging; + path = Paging; + sourceTree = ""; + }; 0D4A349829D1C0DC0E69C0A64B9A4139 /* Pods-ReadViewDemo */ = { isa = PBXGroup; children = ( @@ -1333,6 +1339,36 @@ path = "Target Support Files/Pods-ReadViewDemo"; sourceTree = ""; }; + 0F7BCD3D7E88C5382380E13EE7B5535F /* Models */ = { + isa = PBXGroup; + children = ( + 43B3221062F7881536685FE3C927CC7D /* RDEPUBAnnotationModels.swift */, + 711A407CD08421E62F3C143957DD10DA /* RDEPUBPaginationModels.swift */, + C5077CB33FD2EA6584AF290C95617DC0 /* RDEPUBReadingLocationModels.swift */, + ); + name = Models; + path = Models; + sourceTree = ""; + }; + 13D36789CF3D460E6FFE303B68A66962 /* Typesetter */ = { + isa = PBXGroup; + children = ( + F5847BF261408B9B82FB3BF7A9390AB3 /* RDEPUBAttachmentNormalizer.swift */, + 05ECE185AAFC5A857734DF5495F8E7C2 /* RDEPUBCFIMarkerInjector.swift */, + 545DD46BEAB1D1F7E0530E787095FCB2 /* RDEPUBFontNormalizer.swift */, + 5E8C914D69561C6C9736FCB3C6698CCC /* RDEPUBFragmentMarkerInjector.swift */, + E0F6036722A2FEED169B57120EB274D1 /* RDEPUBHTMLNormalizer.swift */, + B898A07D2E7D8E62F64BD28BAFA3DEFA /* RDEPUBRenderDiagnosticsCollector.swift */, + 0AE0BE26FBA95F74B6173965BEC302EB /* RDEPUBSemanticMarkerInjector.swift */, + 361565CCC385512EA14A6A2C9CFAF08B /* RDEPUBStyleSheetComposer.swift */, + B55E6E99C6F879CFD19D3674CE20075C /* RDEPUBTextRendererSupport.swift */, + 3424A6DFBC2AC519C7C599F18DCDC89D /* RDEPUBTypesettingPipeline.swift */, + 946AB5EF65FFA0C796D6B4E19D4B646D /* Compatibility */, + ); + name = Typesetter; + path = Typesetter; + sourceTree = ""; + }; 1B7515007EDD63EDCCE4BAD15D6CA9BA /* Support Files */ = { isa = PBXGroup; children = ( @@ -1348,23 +1384,20 @@ path = "../Target Support Files/DTFoundation"; sourceTree = ""; }; - 2792EC5669A2F913CCBBE84DBA8899AF /* ReaderView */ = { + 27F2A646BFA6F6504139570B69BEDF9B /* BuildPipeline */ = { isa = PBXGroup; children = ( - E1689173E78766BA24FA271006949DD2 /* RDReaderContentCell.swift */, - 59C9316B92152118F5AE8FD0EC0B9683 /* RDReaderFlowLayout.swift */, - 172DDB09A6DD0C1A92FCD7AF5060B657 /* RDReaderGestureController.swift */, - FDFBDFD59B4D9B04D1AA516EA1A41F88 /* RDReaderPageChildViewController.swift */, - F20C5D28C46992997B5F00839C906E95 /* RDReaderView.swift */, - A389B363039049240F249F3421CD7734 /* RDReaderView+CollectionView.swift */, - 23C0CE03056D1EF27F50F55B85D3A0D2 /* RDReaderView+ContentAccess.swift */, - 77E36CB709B0609F38B9C5F40B7A18C0 /* RDReaderView+PageCurl.swift */, - D5C92D6A531895CC82CDB6FFCE7205BC /* RDReaderView+ToolView.swift */, - 75B52533C54FDB9B4BEB5B173C34670F /* RDReaderViewProtocols.swift */, - A7DAD901D5C37AB60C0AE6E26C800756 /* Paging */, + CD0C3C872488B6341E22BF47B6F9BBD6 /* RDEPUBBuildDiagnosticsReporter.swift */, + 68A8597AE94ED09E9828E2EEA0D8FFFA /* RDEPUBChapterTailNormalizer.swift */, + 3008F6944BA740CD6E6F5CA33733C911 /* RDEPUBPaginationCacheCoordinator.swift */, + 72BE58BB9BF4DCDFDC6D5430AA2E82E9 /* RDEPUBTextBookBuilder.swift */, + FF164505A477C6ED40FE8EF0CB2E6693 /* RDEPUBTextBookCache.swift */, + 2F34FF3B7E71CCE4E9C73115AA710B1C /* RDEPUBTextBookModels.swift */, + 59036F71583DAE2641D9DAA567DBD208 /* RDEPUBTextBuildPipelineInterfaces.swift */, + C5B003AC0B46623423334F97FEE379B8 /* RDEPUBTextPerformanceSampler.swift */, ); - name = ReaderView; - path = Sources/RDReaderView/ReaderView; + name = BuildPipeline; + path = BuildPipeline; sourceTree = ""; }; 29A410FBD4C19138B1D732EC94D8EFB2 /* DTFoundation */ = { @@ -1380,18 +1413,6 @@ path = DTFoundation; sourceTree = ""; }; - 2AD3A82A102AC964D00BED8F3EB01CD4 /* Settings */ = { - isa = PBXGroup; - children = ( - CFC94637FA2BC2BB996CB04F3AD382D7 /* RDEPUBReaderConfiguration.swift */, - 010BA37F9FCB8C9AF363CC966A76A455 /* RDEPUBReaderSettings.swift */, - B19C4570618CC1C8B9E8488EBCD9B0F5 /* RDEPUBReaderSettingsViewController.swift */, - 244A872053DAE74B0F4DC07228A08353 /* RDEPUBReaderTheme.swift */, - ); - name = Settings; - path = Settings; - sourceTree = ""; - }; 3595ED200AA07F0B71CB42506574798F /* Support Files */ = { isa = PBXGroup; children = ( @@ -1408,6 +1429,14 @@ path = "../Target Support Files/SnapKit"; sourceTree = ""; }; + 399DBAA31AC98F6F98B27CE5ED36F63D /* Pod */ = { + isa = PBXGroup; + children = ( + 80A3A50AC272F9C52395F4818E87EA19 /* RDReaderView.podspec */, + ); + name = Pod; + sourceTree = ""; + }; 3C15BAF0B39DC004AB2E6FA38175E25D /* DTAnimatedGIF */ = { isa = PBXGroup; children = ( @@ -1452,22 +1481,23 @@ path = SSAlertSwift; sourceTree = ""; }; - 4C802C971A396CAC03ED8A12D7664C03 /* EPUBTextRendering */ = { + 4C9B2E5C384CA278DFF20A6A25A57C31 /* TextPage */ = { isa = PBXGroup; children = ( - B5EF7020C5BFFD68865D54D1B940E73C /* RDEPUBChapterData.swift */, - 902C1572982F594CBCFA71AF8CB6749A /* RDEPUBDTCoreTextRenderer.swift */, - C186CC4BD7D2CFECDD3B037A8C1D5114 /* RDEPUBTextIndexTable.swift */, - DD39D5D16074428C43CD870060DBACA6 /* RDEPUBTextPositionConverter.swift */, - 17D3B9EA3167BDEF0F47AA6554DF7D86 /* RDEPUBTextRenderer.swift */, - F7DF49DAD850A270AF8E92ED70F66184 /* RDEPUBTextSearchEngine.swift */, - 81C2FB3A2214ED9328FC7A0B36FA1C5B /* RDPlainTextBookBuilder.swift */, - 92146D1114F0840EF719BD3DE95D0FDE /* BuildPipeline */, - B922B4FD78A0C64D71B91A88E584C15C /* Pagination */, - A18EE9BDF8C601503312B2EB5B11520B /* Typesetter */, + BC1AE55A8C17840C96761BE01A89653E /* RDEPUBDarkImageAdjuster.swift */, + EEAE1CB7D6F5BB8E33C9562663C93A51 /* RDEPUBPageInteractionController.swift */, + 47889215B9D350817A491970E6AED97C /* RDEPUBPageLayoutSnapshot.swift */, + C518633651B8B05BFB5292862EB4B642 /* RDEPUBSelectionLoupeView.swift */, + 2F8D349DB593AF848B64723FBF1DF717 /* RDEPUBSelectionOverlayView.swift */, + A988B95153188D52B4BF9F4083BB18E9 /* RDEPUBTextAnnotationOverlay.swift */, + BAA55250015C69FA24DCF3808A74ACA5 /* RDEPUBTextContentInteractionCoordinator.swift */, + 8C7F146589FBD04B46D846AE1ECBD10A /* RDEPUBTextContentView.swift */, + 9C89744F4424D96B176330404D1D82C7 /* RDEPUBTextPageDecorationView.swift */, + 0F9E2282A0A515A241F80997B2F28767 /* RDEPUBTextPageRenderView.swift */, + EFA3CC091FA3A16CC09C9C66D1BC0E50 /* RDEPUBTextSelectionController.swift */, ); - name = EPUBTextRendering; - path = Sources/RDReaderView/EPUBTextRendering; + name = TextPage; + path = TextPage; sourceTree = ""; }; 4DABD1D106D01055A2AB87F3DA58A3CC /* iOS */ = { @@ -1499,17 +1529,6 @@ path = "../Target Support Files/DTCoreText"; sourceTree = ""; }; - 575231379BA6373258A5E3546CF4C366 /* Models */ = { - isa = PBXGroup; - children = ( - 5B888CEDF0E6ECE3807EF95D1BB7D400 /* RDEPUBAnnotationModels.swift */, - 23A9ED0D9E5AF895754BB1D2CA08DEF2 /* RDEPUBPaginationModels.swift */, - 13DBC142B0461E436AACC85794DA80D0 /* RDEPUBReadingLocationModels.swift */, - ); - name = Models; - path = Models; - sourceTree = ""; - }; 62598D566A90C2374701CEB798B77521 /* Support Files */ = { isa = PBXGroup; children = ( @@ -1556,6 +1575,22 @@ path = ZIPFoundation; sourceTree = ""; }; + 62F2A978E55ACE107C18809C9C197080 /* Support Files */ = { + isa = PBXGroup; + children = ( + FABA3ECEE6A89B4087086F0D2377CB5A /* RDReaderView.modulemap */, + A61F5753AE7B5122FE65CF07CF1AD5FD /* RDReaderView-dummy.m */, + 8A1D29D22B94FD4B310B5A419E79057B /* RDReaderView-Info.plist */, + FB36F27A8101BA01699CFD777FC1CAFA /* RDReaderView-prefix.pch */, + 9D28F67E16027AF4FA4F9D501C4D0712 /* RDReaderView-umbrella.h */, + 9F8BA45FA0D8E3CBAAE6E18272EB0644 /* RDReaderView.debug.xcconfig */, + 55CA6158EBEFCD459EB481660A12EB86 /* RDReaderView.release.xcconfig */, + 02946CDDA8033AFAA82187D50800FEA8 /* ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist */, + ); + name = "Support Files"; + path = "ReadViewDemo/Pods/Target Support Files/RDReaderView"; + sourceTree = ""; + }; 64771901367D11DEDD868C197369EA56 /* DTHTMLParser */ = { isa = PBXGroup; children = ( @@ -1565,36 +1600,6 @@ name = DTHTMLParser; sourceTree = ""; }; - 665A0BFB45C3F21B94BE1DB54BF3168F /* TextPage */ = { - isa = PBXGroup; - children = ( - EEAA57C95D8912B8505C8DA1AD4B6AC6 /* RDEPUBDarkImageAdjuster.swift */, - C30031E4337458E885FA7A27960620DE /* RDEPUBPageInteractionController.swift */, - 16945B1BA7C2D8D318AA4A97FB53A619 /* RDEPUBPageLayoutSnapshot.swift */, - A845B04B94B0E1C1F7CAC1A19D0340D6 /* RDEPUBSelectionLoupeView.swift */, - CB5E488026478CA9CD4FAF23BF378F77 /* RDEPUBSelectionOverlayView.swift */, - 51E8DDA0C0AF445B5BC5E2B60508BE58 /* RDEPUBTextAnnotationOverlay.swift */, - 9957BD076B5327D9E830B98BDCF61189 /* RDEPUBTextContentInteractionCoordinator.swift */, - 995FB0A24F88A5F7204BDE00B97BF00C /* RDEPUBTextContentView.swift */, - 04DB4D5A8B4DC5C6698F73C872584EC6 /* RDEPUBTextPageDecorationView.swift */, - 839B80DCB8EBDB9BFDEE18C4B160FE81 /* RDEPUBTextPageRenderView.swift */, - E79BD89A1ED27EEDC4DE2290FF3118DF /* RDEPUBTextSelectionController.swift */, - ); - name = TextPage; - path = TextPage; - sourceTree = ""; - }; - 68A54DEB33F41B15979C2E733EB04E42 /* Notes */ = { - isa = PBXGroup; - children = ( - 29AA31A90AEE6DCF012E1800AA10068B /* RDEPUBNoteDetector.swift */, - 902FAE3EE7603EA74B421F4F8B5160E1 /* RDEPUBNoteModels.swift */, - A1A5E5B0F978E87E788096796E498EE1 /* RDEPUBNoteResolver.swift */, - ); - name = Notes; - path = Notes; - sourceTree = ""; - }; 81FAF4124052D4A411C0A8C21B48174C /* Core */ = { isa = PBXGroup; children = ( @@ -1602,64 +1607,105 @@ name = Core; sourceTree = ""; }; - 852FAD9A7443AEE27600BD2805ADF45D /* ReaderController */ = { + 889CE3BF1849B77422823421266A37D1 /* Notes */ = { isa = PBXGroup; children = ( - 07F94C7EE98654BB19A56E9BB717727B /* RDEPUBBackgroundCoverageStore.swift */, - B092BF12D8045E3C72C39C19010E067F /* RDEPUBBackgroundPriorityPolicy.swift */, - 0212A000358F15ACC53BA2FDEA31CB19 /* RDEPUBJumpSession.swift */, - B300D661A4E613B36517DEC8EC312AEA /* RDEPUBMetadataParseCancellationController.swift */, - CBECF99D05CF4651818FB884017A0C69 /* RDEPUBMetadataParseWorker.swift */, - A4AC6CA9870D7941FA2F27711C6038E4 /* RDEPUBNavigationStateMachine.swift */, - D15EBEFE87571B56DE884F4C60118CE5 /* RDEPUBPageMapReconciliationCoordinator.swift */, - 89F92BE384325A770DEEB46797F1E54A /* RDEPUBPaginationState.swift */, - 033DD9B982E8F1F948C5787EBF92FF84 /* RDEPUBPresentationRuntime.swift */, - ED00B070AB7D3CFFF967D5978A298DA3 /* RDEPUBReaderAnnotationCoordinator.swift */, - 100543FF7E9F503BC7C3380C327A2DE2 /* RDEPUBReaderAssemblyCoordinator.swift */, - 2140116657415560314C2D9847AEA192 /* RDEPUBReaderChromeCoordinator.swift */, - FD059368898F7F8B822A49571413B2B9 /* RDEPUBReaderContext.swift */, - 744C73D1186E82ACC4BDB4FBB30CFACE /* RDEPUBReaderDependencies.swift */, - F4F887E8F4A5F82464101B5352D2AF31 /* RDEPUBReaderEnvironment.swift */, - 013A3E32348433787547280A0B53E82D /* RDEPUBReaderLoadCoordinator.swift */, - 60CCD58E796945CC72B9D6E8F81B2A9F /* RDEPUBReaderLocationCoordinator.swift */, - 40BBB1A6045BDF1E2F96D996DCCA1EF9 /* RDEPUBReaderPaginationCoordinator.swift */, - FC010729FF0DC7965F4E61FE4B7DAED8 /* RDEPUBReaderRuntime.swift */, - DBC476BD15E1101987A52B894DC3CB02 /* RDEPUBReaderSearchCoordinator.swift */, - B83D2091A24AC3D4A98E99AD499C381A /* RDEPUBReaderServices.swift */, - 3FDBB942C7F43B24B5A42E6837AE5A80 /* RDEPUBReaderState.swift */, - B157210E873E2C199310B838E53286FD /* RDEPUBReaderUIState.swift */, - C18CB52F788E649EF3C7AA2AC11100A4 /* RDEPUBReaderViewportMonitor.swift */, - 0461A4D5A2D3198072DA0E85F0365880 /* RDEPUBSelectionState.swift */, - FC1E68C4DD26E7918B807243D1B45C58 /* ChapterRuntime */, - ); - name = ReaderController; - path = ReaderController; - sourceTree = ""; - }; - 906A945E02FD727B889DD116C6C0C0AF /* Notes */ = { - isa = PBXGroup; - children = ( - BA7C5D50017972C1AF6905C1B3733B08 /* RDEPUBNotePopupCoordinator.swift */, - A2FEFB9BEB8FDB1839B78DBC6861BB90 /* RDEPUBNotePopupViewController.swift */, + 7D0C0A9C17CB99D2B116A2E6450CE89D /* RDEPUBNoteDetector.swift */, + 9A2A285973A8C8A81A03D472845DA414 /* RDEPUBNoteModels.swift */, + E8C6B44716EC22054F92F4ED84DA6A85 /* RDEPUBNoteResolver.swift */, ); name = Notes; path = Notes; sourceTree = ""; }; - 92146D1114F0840EF719BD3DE95D0FDE /* BuildPipeline */ = { + 88DDD441541D3FB5E20C9F271215D7E7 /* EPUBUI */ = { isa = PBXGroup; children = ( - 2B62D239E65A52677A36BA68DB820FEA /* RDEPUBBuildDiagnosticsReporter.swift */, - 0348219C5299B3BE84133818923C2495 /* RDEPUBChapterTailNormalizer.swift */, - A759645FBF673FDEACE775045ADD6223 /* RDEPUBPaginationCacheCoordinator.swift */, - 80CBF12B91CD7E30B52521195ACD8066 /* RDEPUBTextBookBuilder.swift */, - 384B29CBEB4465D86BDA4AF5BF10C2F7 /* RDEPUBTextBookCache.swift */, - 118CEB0580740B0E6F1922515A582397 /* RDEPUBTextBookModels.swift */, - FF73643D6C558218A30F86F03A594CBA /* RDEPUBTextBuildPipelineInterfaces.swift */, - 4DD02085DF060BFA07C4C65AC0F9ADAE /* RDEPUBTextPerformanceSampler.swift */, + CDC41111F7B2BF68994C924BC0C5794C /* RDEPUBAttachmentTooltipOverlayView.swift */, + 5D3CFCA211B02F4FB8BEE828C37A318B /* RDEPUBAttachmentTooltipView.swift */, + F20E15B3473E29738F2A09C625A687BB /* RDEPUBImageViewController.swift */, + 47B749BBD9F9ECB3CB4876AFB35FA577 /* RDEPUBImageViewerCoordinator.swift */, + 1A7D80430EE63D6EA20B3BBA26A89B34 /* RDEPUBReaderBottomToolView.swift */, + 58AD77A6558F2424BFBBB829F7651AAC /* RDEPUBReaderChapterListController.swift */, + 6CF99F8C8ED42F614BB051509F8E065B /* RDEPUBReaderController.swift */, + 0595FF1B5274FDF6F9143B6F7FA18D61 /* RDEPUBReaderController+AttachmentTooltip.swift */, + FD0189649153ACCA56C4C8AD0BEF1E0D /* RDEPUBReaderController+ContentDelegates.swift */, + B99FF5D96CD045BCC53A9F6F8493C379 /* RDEPUBReaderController+DataSource.swift */, + 1EBAE1E92B0DEECFFA57D82DC828AB30 /* RDEPUBReaderController+ExternalLinks.swift */, + 5F003AB5BAC52B6BF426F57E7C500BA8 /* RDEPUBReaderController+LocationResolution.swift */, + 3E1485847E9CA847239AB24742D72ABB /* RDEPUBReaderController+PublicAPI.swift */, + 15DB2B4B89706EFDAB413FC86A6C29C0 /* RDEPUBReaderController+RenderSupport.swift */, + 80F37ED477F71A78A2658E146A2A5CB3 /* RDEPUBReaderController+RuntimeBridge.swift */, + 3E01ED3AA3B7599EB648D7BD507B4D92 /* RDEPUBReaderController+TableOfContents.swift */, + 7036B7E2D1B623419E1EB950E58865CC /* RDEPUBReaderDelegate.swift */, + DA80D2B3DB04B3530C801B06AC694048 /* RDEPUBReaderHighlightsViewController.swift */, + 0FADF7F2A0784AA8BE178F33CACE42C9 /* RDEPUBReaderPersistence.swift */, + AF6879143052D4942E4FEA0F92504804 /* RDEPUBReaderSearchBarView.swift */, + BA142E0FB9C9440BA93BE7BF027F095F /* RDEPUBReaderTableOfContentsItem.swift */, + F270A5E6ACC194137AB15688F6F4C759 /* RDEPUBReaderToolView.swift */, + DAA89AE50DEA94816C5333CC1325DDA8 /* RDEPUBReaderTopToolView.swift */, + 520E0A63146D08FBEFF05CA61FA4B8B6 /* RDEPUBViewportTypes.swift */, + 48325761E589FE657E084982A81D5DA6 /* RDEPUBWebContentView.swift */, + 9551DE4A9087AF37320340372B24F7CA /* RDEPUBWebDecorationOverlayView.swift */, + EEA02BC05A988384DC4551B451ED1E7E /* RDURLReaderController.swift */, + 0E78795FD43E657B2F567418E0A7EB30 /* String+RDEPUB.swift */, + AB8FBD335486F255F42811FC49E5657C /* UIColor+RDEPUB.swift */, + AFE6D8828F2634226CDA2F79A19625E3 /* UIColor+RDEPUBHex.swift */, + 96F1B22B2BFA646D65069B83727B0839 /* Notes */, + FC15689DA3F1CFC314BD4FF13CED527E /* ReaderController */, + 8C1A01D4918AD5C5E8AC59A16E2404E4 /* Settings */, + 4C9B2E5C384CA278DFF20A6A25A57C31 /* TextPage */, ); - name = BuildPipeline; - path = BuildPipeline; + name = EPUBUI; + path = Sources/RDReaderView/EPUBUI; + sourceTree = ""; + }; + 8C1A01D4918AD5C5E8AC59A16E2404E4 /* Settings */ = { + isa = PBXGroup; + children = ( + 2E53AFDDED09CAFF8EFC5BC809DB5855 /* RDEPUBReaderConfiguration.swift */, + 96331868591D020B267B45CA8EF65355 /* RDEPUBReaderSettings.swift */, + 7FC4B1718DDF94A99192ABD5C1B24DAC /* RDEPUBReaderSettingsViewController.swift */, + 953EF1E3CA69D8F4BF3E4D41B1BEAE2C /* RDEPUBReaderTheme.swift */, + ); + name = Settings; + path = Settings; + sourceTree = ""; + }; + 8FC974FE4013F8502C8F4C9902F99124 /* Pagination */ = { + isa = PBXGroup; + children = ( + B62755E9A395FF22E7405C3FE192D5F3 /* RDEPUBChapterPageCounter.swift */, + 81211446372A6A55789AA7E7152E7084 /* RDEPUBCoreTextPageFrameFactory.swift */, + FE10A5C6934704218EB16F8966AA0814 /* RDEPUBPageBreakPolicy.swift */, + 7F8C64CB3F3D0B7D4AA66798C740CB20 /* RDEPUBTextLayouter.swift */, + 07C08997AE3D75194E400010A0AE4820 /* RDEPUBTextLayoutFrame.swift */, + D4721E12B4121C46B8368D085D91EC2B /* RDEPUBTextPaginationInterfaces.swift */, + 78C97EDF23543CE63904C4D8A066A7A1 /* RDEPUBTextPaginationSupport.swift */, + ); + name = Pagination; + path = Pagination; + sourceTree = ""; + }; + 946AB5EF65FFA0C796D6B4E19D4B646D /* Compatibility */ = { + isa = PBXGroup; + children = ( + 30EE98BBC2688DFF0B50F9C417007886 /* RDEPUBCSSCompatibilityLayer.swift */, + 5F9FE9924520900BBDF724D9903C5309 /* RDEPUBFontFallbackResolver.swift */, + 5077339D9632D68EDAB64BBEF622E154 /* RDEPUBStyleCompatibilityModels.swift */, + ); + name = Compatibility; + path = Compatibility; + sourceTree = ""; + }; + 96F1B22B2BFA646D65069B83727B0839 /* Notes */ = { + isa = PBXGroup; + children = ( + 9AD7F70FD18BED0C429A85E579ABF569 /* RDEPUBNotePopupCoordinator.swift */, + D7FB9FD3FFFF0D8E3D9D354EC7AF35E1 /* RDEPUBNotePopupViewController.swift */, + ); + name = Notes; + path = Notes; sourceTree = ""; }; 994C39A644C0722C7A9E97AB46DB8965 /* Targets Support Files */ = { @@ -1670,39 +1716,23 @@ name = "Targets Support Files"; sourceTree = ""; }; - A18EE9BDF8C601503312B2EB5B11520B /* Typesetter */ = { + 9E100780A98E22AF423BFB0DC63B601C /* ReaderView */ = { isa = PBXGroup; children = ( - 1B3BB74CCE3CE21C373751EFECCB8116 /* RDEPUBAttachmentNormalizer.swift */, - 963DB0508456E313DFDD8A01BD92C4AD /* RDEPUBCFIMarkerInjector.swift */, - 8FED226E2FA9815E3B5D4F7081930466 /* RDEPUBFontNormalizer.swift */, - 4221E1543BD892BF6D14538441477241 /* RDEPUBFragmentMarkerInjector.swift */, - 46B833FD47EDD18F132A4F3DABFD3E55 /* RDEPUBHTMLNormalizer.swift */, - 63CB91E70707FEFE07F01B11C0DB5055 /* RDEPUBRenderDiagnosticsCollector.swift */, - 7FEFC049D874D868076BE0F19A3F643B /* RDEPUBSemanticMarkerInjector.swift */, - 0A0A410374DBCE1B5533846F0BCBC36C /* RDEPUBStyleSheetComposer.swift */, - 523B2C383DBC263294C404FA85A5DE82 /* RDEPUBTextRendererSupport.swift */, - 87D486D53C26F9A8106173A8E30B255A /* RDEPUBTypesettingPipeline.swift */, - D1BC245F7C0CCFC2996BC960FAE48404 /* Compatibility */, + 76919E99E9F16C30FA06F643643AA997 /* RDReaderContentCell.swift */, + E4C4605A9B7326DBE0CED7EB66A7416F /* RDReaderFlowLayout.swift */, + 10617286346E2E6D7BB30203A65302CA /* RDReaderGestureController.swift */, + AB3DF251DDD78EDAEE82FBEBDF9CE79B /* RDReaderPageChildViewController.swift */, + 1FE1D4A863768FC78F6B76B6A181267C /* RDReaderView.swift */, + 4C4682C38E0A66C0E9760FC62C00A327 /* RDReaderView+CollectionView.swift */, + 0D170B1455CB3C94EFC34D7B67EDC001 /* RDReaderView+ContentAccess.swift */, + 2E281F0688B1D356CF1654C6063AE77D /* RDReaderView+PageCurl.swift */, + 648D6AC5A8FA53918EDB418D8A36710E /* RDReaderView+ToolView.swift */, + 1058DD74F97F43193DBA11E135ACFF22 /* RDReaderViewProtocols.swift */, + 0BCB541A25608F56871618A1D03E9C54 /* Paging */, ); - name = Typesetter; - path = Typesetter; - sourceTree = ""; - }; - A1C2DFEF90972D588DE06D2F96C32B6B /* Support Files */ = { - isa = PBXGroup; - children = ( - 775E375A8BF4CD67FD85FF4C6E217AE5 /* RDReaderView.modulemap */, - F29D75FFF877587EAEA07BBE58C097FB /* RDReaderView-dummy.m */, - 46A60E7129B6B8BA7355B63E9608DF37 /* RDReaderView-Info.plist */, - D5FB089C00DA0BE4FB492881E5CEFE62 /* RDReaderView-prefix.pch */, - 2BF8C1B2C40980FB07D49180D7285667 /* RDReaderView-umbrella.h */, - 0EA2FAD0839C3EB52650B2300B7E74AB /* RDReaderView.debug.xcconfig */, - 21716AE96E14363317AB8A817ED38F1D /* RDReaderView.release.xcconfig */, - 69510290E334432CAAC474A360B115BA /* ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist */, - ); - name = "Support Files"; - path = "ReadViewDemo/Pods/Target Support Files/RDReaderView"; + name = ReaderView; + path = Sources/RDReaderView/ReaderView; sourceTree = ""; }; A5E1FCBC8B49DE230DF2EACDA19A840B /* DTCoreText */ = { @@ -1842,82 +1872,62 @@ path = DTCoreText; sourceTree = ""; }; - A7DAD901D5C37AB60C0AE6E26C800756 /* Paging */ = { - isa = PBXGroup; - children = ( - 1C24BD0148D661DA92DCD300C67D590D /* RDReaderPagingController.swift */, - AC2313F8B75FDFEFD0DBDD842F76D012 /* RDReaderPreloadController.swift */, - 9F439346FABB45D193709E61E908A616 /* RDReaderSpreadResolver.swift */, - E6A8108BD01EDCF1A37193D87427C6D2 /* RDReaderTapRegionHandler.swift */, - ); - name = Paging; - path = Paging; - sourceTree = ""; - }; - B922B4FD78A0C64D71B91A88E584C15C /* Pagination */ = { - isa = PBXGroup; - children = ( - 8189DB90B82FC06292365152D19B2393 /* RDEPUBChapterPageCounter.swift */, - 620F6EB9BD2515CCF9666EBD79D1E206 /* RDEPUBCoreTextPageFrameFactory.swift */, - 2ABBF727ED6EB3FA3EA88597AD35642B /* RDEPUBPageBreakPolicy.swift */, - EC81F5F271A26EA7C1D7AFF9374188B8 /* RDEPUBTextLayouter.swift */, - 66E601E685D0E9888AAFFDCAF0C0D1D6 /* RDEPUBTextLayoutFrame.swift */, - 7D37EDA6C8F32FB02D2F5433B481ADDB /* RDEPUBTextPaginationInterfaces.swift */, - 02288EA3830887D01C4E6E67E9708C18 /* RDEPUBTextPaginationSupport.swift */, - ); - name = Pagination; - path = Pagination; - sourceTree = ""; - }; - B992E04B329FC58B492A21B64F4D498D /* EPUBCore */ = { - isa = PBXGroup; - children = ( - 1EB8ACC635A2AF36962035B54B2CC2C6 /* RDEPUBAssetRepository.swift */, - 786487AD4F6B37AE4B483566F3000C6F /* RDEPUBFixedLayoutTemplate.swift */, - 16A4528D7724EB07379829622EC7C8BE /* RDEPUBJavaScriptBridge.swift */, - 1DCD2E4F44A79B62DF96C3ABAE2B8592 /* RDEPUBModels.swift */, - 0146E639757C4B0ED78C4CA12DA7FDD7 /* RDEPUBNavigatorLayoutContext.swift */, - EC59639D756DEA2914DF1A97050137A1 /* RDEPUBNavigatorState.swift */, - BCF3686E574510BF6B5D13293E85F0E1 /* RDEPUBPaginator.swift */, - F7F6C930B6A92EF1CEA65FC355E7EABB /* RDEPUBParser.swift */, - 8ABD098B435C30F2039019D7646E87ED /* RDEPUBParser+Archive.swift */, - CEEA0316D9580EFCF73105A138F13E33 /* RDEPUBParser+Package.swift */, - 76610C58FDE0133C7B8E5E15CD84C663 /* RDEPUBParser+ReadingProfile.swift */, - F53F2F0463AC1292BFE9AFE159F8016F /* RDEPUBParser+Resources.swift */, - EE4E65CBFE33A55487727CE851F95C96 /* RDEPUBParser+TOC.swift */, - 3F799B8BE1C80D381CED94E9496512A6 /* RDEPUBPreferences.swift */, - 34AAF33D5968FF88E52BE323BE82F631 /* RDEPUBPublication.swift */, - 236E0B22C7FAE0F5E5BC44A2D1C4726B /* RDEPUBReadingSession.swift */, - 44A3A2C05CEC2C66E821919A93A14590 /* RDEPUBRenderRequest.swift */, - D24D7F3F52B5BE585E06538DBA3CD6F7 /* RDEPUBResourceResolver.swift */, - 4245A0DA8D1ED324142168C60B775253 /* RDEPUBResourceURLSchemeHandler.swift */, - 5C2DA7CBEF685373784172A46130ECE9 /* RDEPUBSearchEngine.swift */, - 96E5EDA71849C1703A80094A7160A3D2 /* RDEPUBSearchModels.swift */, - 7B9B9C10492C2477D3CA1E3B7027D4C5 /* RDEPUBStyleSheetBuilder.swift */, - BD1A3ADD8E5C9D2A848AA57AA083E168 /* RDEPUBTextAnchor.swift */, - CC162013E2626B2489739C731077B43C /* RDEPUBWebView.swift */, - 5687CEB04DF925FAE0FC801EFA943FD8 /* RDEPUBWebView+Configuration.swift */, - 3D9A0C2A7BCE48EB6E02279F8770F67B /* RDEPUBWebView+FixedLayout.swift */, - F661AA03BC0EBFBDBBC00AC38E62EF34 /* RDEPUBWebView+JavaScriptBridge.swift */, - E474E1489E80ABDF6B665BEA40856E40 /* RDEPUBWebView+Reflowable.swift */, - BCC472137332414147193AA5DB35E4E0 /* RDEPUBWebView+Search.swift */, - 269D68D156A9D97C9C623160D509981D /* RDEPUBWebViewDebug.swift */, - C7AF89767F8BF2FD706F74657E1FB740 /* CFI */, - 575231379BA6373258A5E3546CF4C366 /* Models */, - 68A54DEB33F41B15979C2E733EB04E42 /* Notes */, - ); - name = EPUBCore; - path = Sources/RDReaderView/EPUBCore; - sourceTree = ""; - }; B9CF9F63ECCD4435AA8F5FEDC37E6258 /* Development Pods */ = { isa = PBXGroup; children = ( - 05C1EB52F20A7DC6028431405637EAB2 /* RDReaderView */, + C0BBFCB6AFC32A8E77FD4ABAB76E1332 /* RDReaderView */, ); name = "Development Pods"; sourceTree = ""; }; + BE577249DE43AE4728C935914617B087 /* ChapterRuntime */ = { + isa = PBXGroup; + children = ( + 67580684B7C70423FB1C82CD1F685012 /* RDEPUBBackgroundTrace.swift */, + EEE1B7CF6E54E7876BBF28948CD65B9E /* RDEPUBBookPageMap.swift */, + B84FD477EF687A49F011E7FA557C1791 /* RDEPUBChapterCacheKey.swift */, + C9FD96F86CD108FB55F99EDCC82B3771 /* RDEPUBChapterDataCache.swift */, + F60BBDE3C78317A1DF3E2FF97B966899 /* RDEPUBChapterLoader.swift */, + 41EB07D58D668A3EE943B8A619CF70E7 /* RDEPUBChapterLocation.swift */, + F4E89D45F05E7E9797A973AC12579973 /* RDEPUBChapterOffsetMap.swift */, + 4BCCEDB0636CEB528ED4786686A5767F /* RDEPUBChapterRuntimeStore.swift */, + B7DD486B95807F803EF1DD2976017779 /* RDEPUBChapterSummaryDiskCache.swift */, + 92AD29D1A051D00F5525A240E49B00A2 /* RDEPUBChapterWarmupOrchestrator.swift */, + E8428598288FB3C84E993319B4E11B03 /* RDEPUBChapterWindowCoordinator.swift */, + 23D09A34060F1B615AA1CA4089B37AC2 /* RDEPUBChapterWindowSnapshot.swift */, + 4D58FC9E6A5173BAA575CE45D07134D0 /* RDEPUBPageCountCache.swift */, + 45C2C1DE970403173708119093BE0108 /* RDEPUBPageResolver.swift */, + FEC2659F6ADAB5F211964D1A8CA88C26 /* RDEPUBRuntimeChapter.swift */, + C80DE4FAC18642D5E8D148D8A1E5A566 /* RDEPUBRuntimePageCount.swift */, + ); + name = ChapterRuntime; + path = ChapterRuntime; + sourceTree = ""; + }; + C0BBFCB6AFC32A8E77FD4ABAB76E1332 /* RDReaderView */ = { + isa = PBXGroup; + children = ( + ECBE8305E343FF00B5DDF4F8F9D18623 /* cssInjector.js */, + 091E53DC8215AED45D88A2ABA24A2140 /* epub-bridge.js */, + 5E958924060294CE9417399BB02AB344 /* epub-fixed-layout.html */, + 8F9C05A5DE7C804D6531F4BBF31A3045 /* rangy-core.js */, + 25E8E62C9DC0A4AE49F168F04CF8B9D3 /* rangy-serializer.js */, + F46977FAF9F0EAEDF840BDA49288CC99 /* WeReadApi.js */, + 8AE69217E6A738AC11FEB58F2603B17F /* wxread-dark.css */, + 0D253DF65322509913DE34899979C30B /* wxread-default.css */, + F81B70DF51F9CD64A7DC5AAF3941F72C /* wxread-replace.css */, + 6E7E8438D5E5533B7BE96AC6FA8FD8BD /* wxread-replace-latin.css */, + E5E26B54ABA56C00E408CFDA5AA1D213 /* EPUBCore */, + C51190ED4FDD85541ECC59886B5B7142 /* EPUBTextRendering */, + 88DDD441541D3FB5E20C9F271215D7E7 /* EPUBUI */, + 399DBAA31AC98F6F98B27CE5ED36F63D /* Pod */, + 9E100780A98E22AF423BFB0DC63B601C /* ReaderView */, + 62F2A978E55ACE107C18809C9C197080 /* Support Files */, + ); + name = RDReaderView; + path = ../..; + sourceTree = ""; + }; C2775EE99F51E41166DFC2EFD6739CA0 /* Resources */ = { isa = PBXGroup; children = ( @@ -1926,26 +1936,22 @@ name = Resources; sourceTree = ""; }; - C7AF89767F8BF2FD706F74657E1FB740 /* CFI */ = { + C51190ED4FDD85541ECC59886B5B7142 /* EPUBTextRendering */ = { isa = PBXGroup; children = ( - DFB1ABFCCAC4DAE451803B7620A3E75B /* RDEPUBCFI.swift */, - C29508133496D51D5F24DDBFFEC54798 /* RDEPUBCFICompatibility.swift */, - D53FC89DDB339BF2C7F6BEAFEE0097F4 /* RDEPUBCFIDOMPathBuilder.swift */, - EF8BD4198F6FFF3793A1EDD6E9FE2259 /* RDEPUBCFIError.swift */, - 97F7B41CF52C44365ABC89D0081C7DDF /* RDEPUBCFIGenerator.swift */, - 84432C44761FA9535E1C1C00A97581F8 /* RDEPUBCFIMap.swift */, - 5819FE718F1A4114395EBB6B8A8E8455 /* RDEPUBCFIParser.swift */, - F25A8801661F7DE4DEAC12BE1F80C332 /* RDEPUBCFIPath.swift */, - 4B63D29E831F61A0A7CD86FE7CD9CDA9 /* RDEPUBCFIRange.swift */, - 2B7F28B33E9CEA8C57E5E55EDC33C596 /* RDEPUBCFIRecoveryEngine.swift */, - 645B67E60B0E03563BF2A759753BEEE2 /* RDEPUBCFIResolver.swift */, - 9F96D2805CAFF0D2370A761DD023C745 /* RDEPUBCFISerializer.swift */, - A974D11C3D99A37FECDAB079565A275F /* RDEPUBCFITextAssertion.swift */, - B3C14E09958710059E09B6816BC50FF1 /* RDEPUBCFIUtilities.swift */, + B1AF2749008FE67A3281B83EE327E41D /* RDEPUBChapterData.swift */, + 0E160FF00EF4B6DB318FEDCD72A026F3 /* RDEPUBDTCoreTextRenderer.swift */, + 89755690B804A64EE69FE2D7321CA9B6 /* RDEPUBTextIndexTable.swift */, + 7A971ECCC1DDFDE6D5417E949E3B1FD2 /* RDEPUBTextPositionConverter.swift */, + 5B4081F4EC77470F1257F11DB2A4B55D /* RDEPUBTextRenderer.swift */, + 06733E30802CA08ACF312C763BD37795 /* RDEPUBTextSearchEngine.swift */, + 2739EAD69AB2F5F6FA80E254D294440D /* RDPlainTextBookBuilder.swift */, + 27F2A646BFA6F6504139570B69BEDF9B /* BuildPipeline */, + 8FC974FE4013F8502C8F4C9902F99124 /* Pagination */, + 13D36789CF3D460E6FFE303B68A66962 /* Typesetter */, ); - name = CFI; - path = CFI; + name = EPUBTextRendering; + path = Sources/RDReaderView/EPUBTextRendering; sourceTree = ""; }; CA6142FEF8E51F79243E3C87378F50AF /* UIKit */ = { @@ -1987,17 +1993,6 @@ ); sourceTree = ""; }; - D1BC245F7C0CCFC2996BC960FAE48404 /* Compatibility */ = { - isa = PBXGroup; - children = ( - A8441EA66830E22726BE52E29AA8FBA0 /* RDEPUBCSSCompatibilityLayer.swift */, - ED40EE4143B1EC69166CD58B11C00B40 /* RDEPUBFontFallbackResolver.swift */, - DEEE722A6CEB62B173B8C71F0E7336C7 /* RDEPUBStyleCompatibilityModels.swift */, - ); - name = Compatibility; - path = Compatibility; - sourceTree = ""; - }; D68CA58901FBF589D75F5E40F1EAF5BA /* Frameworks */ = { isa = PBXGroup; children = ( @@ -2061,44 +2056,45 @@ name = Core; sourceTree = ""; }; - E3A38F6522C2FB2799085A7CB3D55545 /* EPUBUI */ = { + E5E26B54ABA56C00E408CFDA5AA1D213 /* EPUBCore */ = { isa = PBXGroup; children = ( - 83FE23C4421208A77C790E396C2391EC /* RDEPUBAttachmentTooltipOverlayView.swift */, - 34649E5DA563878B374E0488CF7B450A /* RDEPUBAttachmentTooltipView.swift */, - 62CA2B8137FC8E99994C84CF0B18EBD1 /* RDEPUBReaderBottomToolView.swift */, - 646429B6D94AE5D9F3ADDB5B9C6FBCCF /* RDEPUBReaderChapterListController.swift */, - ACBDBAB2D4A07BA86ABF3F196E275CD2 /* RDEPUBReaderController.swift */, - 90D060B1A624B2699F408C993E8C418B /* RDEPUBReaderController+AttachmentTooltip.swift */, - 1EFA16D97F8CC8E61C22F3CEF546EAA3 /* RDEPUBReaderController+ContentDelegates.swift */, - F080C0809566114997B5E6B9AF967C76 /* RDEPUBReaderController+DataSource.swift */, - 3BDA124143D52EAC7EDD8AB1F554C329 /* RDEPUBReaderController+ExternalLinks.swift */, - CCEB096B8A5CC40D05995D4C8BCE6996 /* RDEPUBReaderController+LocationResolution.swift */, - 38CC6A6BEE99B6DD8A2CB0C3D94D3C2D /* RDEPUBReaderController+PublicAPI.swift */, - C0FCBCDE580CFE3B2A980871EE253246 /* RDEPUBReaderController+RenderSupport.swift */, - 019F2E2CAC5314EC6ACF38451D83955D /* RDEPUBReaderController+RuntimeBridge.swift */, - EFF1EFC40E2A42337D7C758A6A4F26D7 /* RDEPUBReaderController+TableOfContents.swift */, - 87A3F451AC74F9A3D57EAD938B435AD6 /* RDEPUBReaderDelegate.swift */, - 98E0E994653153A8BF5451529E78BD86 /* RDEPUBReaderHighlightsViewController.swift */, - D4517A0658C991352A0B5ED4B851CED2 /* RDEPUBReaderPersistence.swift */, - 0F0670803E8267332E1891D6AB6E5A3F /* RDEPUBReaderSearchBarView.swift */, - 6AE9447E94AD6DD5AA1A3E1BBB03977A /* RDEPUBReaderTableOfContentsItem.swift */, - B9A160FAAD45590651794EEF3A2F67FE /* RDEPUBReaderToolView.swift */, - BD88D55D7F7F1667E4466071F740A3C9 /* RDEPUBReaderTopToolView.swift */, - 6886C52EAE45B38A526CD917C8CBFED8 /* RDEPUBViewportTypes.swift */, - FCCB7B202BEDC5F5B8895F56085A2DCA /* RDEPUBWebContentView.swift */, - 6CF30C46F1B4F469D06B27690215880A /* RDEPUBWebDecorationOverlayView.swift */, - DEDA10329B118CA762890DD7D8B64C6C /* RDURLReaderController.swift */, - C409593D5FA3DD26DD8A3CDE6F8B221C /* String+RDEPUB.swift */, - 0EB4A1F095257F5F9410518DCB1053FB /* UIColor+RDEPUB.swift */, - 2EE6DDF24FEC8EC73F462A296083A37B /* UIColor+RDEPUBHex.swift */, - 906A945E02FD727B889DD116C6C0C0AF /* Notes */, - 852FAD9A7443AEE27600BD2805ADF45D /* ReaderController */, - 2AD3A82A102AC964D00BED8F3EB01CD4 /* Settings */, - 665A0BFB45C3F21B94BE1DB54BF3168F /* TextPage */, + 49291029E1AB55E3D96DCB4484849F65 /* RDEPUBAssetRepository.swift */, + 033D935836CD653A79E9152E2D84CEEF /* RDEPUBFixedLayoutTemplate.swift */, + E97368D346BF315D1080DBA98C0788AA /* RDEPUBJavaScriptBridge.swift */, + 8421441F10DCB0EDBCF03EAC1018BAD2 /* RDEPUBModels.swift */, + E4BC2CE5C3B20971FF99A9C8EC487481 /* RDEPUBNavigatorLayoutContext.swift */, + 4AD15109A0B89D836EFB914732706228 /* RDEPUBNavigatorState.swift */, + 766C440DABE7721B3D2CE226D8189551 /* RDEPUBPaginator.swift */, + 3BEEDD6EDB66B0EECC515EDCDB618914 /* RDEPUBParser.swift */, + 1DE1D663A9451374F0417DAC8CDAE2BF /* RDEPUBParser+Archive.swift */, + AA89765B94A26A186DC7829FF979DBC3 /* RDEPUBParser+Package.swift */, + 5B4D7B26E7ADBB6053AB3D0ECFDBF379 /* RDEPUBParser+ReadingProfile.swift */, + E808E517A1FE8666CB17EA9D94B4747A /* RDEPUBParser+Resources.swift */, + 67E71F44D9FE962AA1D19EB945E7E657 /* RDEPUBParser+TOC.swift */, + EBE150E8FBF2AC59607D94086EF644B6 /* RDEPUBPreferences.swift */, + 85AC8A746E7DE5FC77159ABF4085CAC7 /* RDEPUBPublication.swift */, + 736A135E9B22B812EE7A51484408FDE1 /* RDEPUBReadingSession.swift */, + 46B85AED3D53815F95E435FA3529141C /* RDEPUBRenderRequest.swift */, + 42B212FB3162CFF37D51BB3E93F765F5 /* RDEPUBResourceResolver.swift */, + E3E5029439FC2CDA4E874FBB500F3FE0 /* RDEPUBResourceURLSchemeHandler.swift */, + FD0BB5D8B2ADEBDD25F740A7185B516E /* RDEPUBSearchEngine.swift */, + 3207A69E5A8BC344BDC277A8BEA51979 /* RDEPUBSearchModels.swift */, + A8052EE9D31E2F5253234D9A7C6A8218 /* RDEPUBStyleSheetBuilder.swift */, + 80D9ED51333D0F99752A8408020C77AF /* RDEPUBTextAnchor.swift */, + 67EA3C4114F424563E73EE3FB42D7CD7 /* RDEPUBWebView.swift */, + D3BFB23BF28CE5120D1FFBD76664087B /* RDEPUBWebView+Configuration.swift */, + A47E648062E9BDBB9E46BD3DC4E12801 /* RDEPUBWebView+FixedLayout.swift */, + 2F752E31955268C74AB0B05584B9CA9D /* RDEPUBWebView+JavaScriptBridge.swift */, + F34551B808D265BCB3443EE33D6C1EF4 /* RDEPUBWebView+Reflowable.swift */, + 50319253F9CADECC2B97F1734E0C834A /* RDEPUBWebView+Search.swift */, + E4EDAF459D89DEFB5A597F8278CE222F /* RDEPUBWebViewDebug.swift */, + 02ADBDED67BF477D7F4068FECEFEFAFE /* CFI */, + 0F7BCD3D7E88C5382380E13EE7B5535F /* Models */, + 889CE3BF1849B77422823421266A37D1 /* Notes */, ); - name = EPUBUI; - path = Sources/RDReaderView/EPUBUI; + name = EPUBCore; + path = Sources/RDReaderView/EPUBCore; sourceTree = ""; }; E861498A78913BA984BA96358FC61449 /* Pods */ = { @@ -2129,33 +2125,51 @@ path = "../Target Support Files/ZIPFoundation"; sourceTree = ""; }; - FC1E68C4DD26E7918B807243D1B45C58 /* ChapterRuntime */ = { + FC15689DA3F1CFC314BD4FF13CED527E /* ReaderController */ = { isa = PBXGroup; children = ( - 50244AA9BC4821A6CB64A7AF6D8BB332 /* RDEPUBBackgroundTrace.swift */, - E980E36577B236C9DC52A497F85388C3 /* RDEPUBBookPageMap.swift */, - B2205C761CC6E3BD03E29D00247B8017 /* RDEPUBChapterCacheKey.swift */, - 5DE61097D0F21BED63801FD97D420AA7 /* RDEPUBChapterDataCache.swift */, - D64D8C9DC33119921466055ACC5347C7 /* RDEPUBChapterLoader.swift */, - 167AF6E907DF607CF1D5F5B0FA05B565 /* RDEPUBChapterLocation.swift */, - 48051F94914D1A8DE273B7F6F3D8E9EB /* RDEPUBChapterOffsetMap.swift */, - B72D18F1336296178742C907A3956E45 /* RDEPUBChapterRuntimeStore.swift */, - 385AC715B035543F28D98F44262302E3 /* RDEPUBChapterSummaryDiskCache.swift */, - BFCF1D4F0258C1F7B53CE73485F48442 /* RDEPUBChapterWarmupOrchestrator.swift */, - EA25825AB5D083AD35744145AF10E718 /* RDEPUBChapterWindowCoordinator.swift */, - F13DE2B771ECF4C1C6DDAC4FCD18CD0A /* RDEPUBChapterWindowSnapshot.swift */, - E05401D6B263F054E8B15A3B594BC5A5 /* RDEPUBPageCountCache.swift */, - D61ED230892882E40FEE83CDBB7A9D93 /* RDEPUBPageResolver.swift */, - 4E2E2ACE965436483EDC14EC4262BAFC /* RDEPUBRuntimeChapter.swift */, - 6E8A22827641532F651809A316008577 /* RDEPUBRuntimePageCount.swift */, + 8A19E1D6BC8D283B9BC4BA0EBECBF172 /* RDEPUBBackgroundCoverageStore.swift */, + 9B8F910B6B575B689194F9E306239FD5 /* RDEPUBBackgroundPriorityPolicy.swift */, + C8B29AA7038EA68CF6B91D18CC87E743 /* RDEPUBJumpSession.swift */, + 0F3F0149FB61996B3FFFD4771F697189 /* RDEPUBMetadataParseCancellationController.swift */, + 447E4906FE72C6E3E2AE1CC89D208CAE /* RDEPUBMetadataParseWorker.swift */, + EA3CE87842A4B39DB8691712AEC0E5FD /* RDEPUBNavigationStateMachine.swift */, + A027614C026728AE2CA282D837F97936 /* RDEPUBPageMapReconciliationCoordinator.swift */, + 14DBB472BDBF872F8A5C3A7460B17A31 /* RDEPUBPaginationState.swift */, + 76C28DE5D3FBC9B7F9C1477C95F14725 /* RDEPUBPresentationRuntime.swift */, + 174A6B5E9BDD0636D95688D70EEEF226 /* RDEPUBReaderAnnotationCoordinator.swift */, + 20D029F1D415730DFA1FD010AD485185 /* RDEPUBReaderAssemblyCoordinator.swift */, + 84EB75472DB29B600C9185A097D117B7 /* RDEPUBReaderChromeCoordinator.swift */, + B2D39C06DF04E8847916639D58650315 /* RDEPUBReaderContext.swift */, + 214727C456892B390492D84CDD20BB88 /* RDEPUBReaderDependencies.swift */, + 02FE773F7655B2174F160FE1621181BB /* RDEPUBReaderEnvironment.swift */, + F058E473114A5A8FE875FD5ABBE02F5E /* RDEPUBReaderLoadCoordinator.swift */, + A138DB38231B185E189787D33D3B4950 /* RDEPUBReaderLocationCoordinator.swift */, + 7EC91512D3BEFEDF5FCCF2E267E48B32 /* RDEPUBReaderPaginationCoordinator.swift */, + EEC9D27C90F465491EF9BA9CC8CDA1E1 /* RDEPUBReaderRuntime.swift */, + 92E7747B6F898FB12DFE1CE4ABDC3531 /* RDEPUBReaderSearchCoordinator.swift */, + 2F07C9C63CCAC0DAFE81B6A625199293 /* RDEPUBReaderServices.swift */, + 16A3654E9B076CBACAB460CDD311C9B6 /* RDEPUBReaderState.swift */, + 81F0FDEEC9D85F08CD97F555356F985C /* RDEPUBReaderUIState.swift */, + 5539807EBDC1A071F4E7C8C3DA8F4121 /* RDEPUBReaderViewportMonitor.swift */, + 66EEA7DA60C7DCD504C673D6CF9B74FC /* RDEPUBSelectionState.swift */, + BE577249DE43AE4728C935914617B087 /* ChapterRuntime */, ); - name = ChapterRuntime; - path = ChapterRuntime; + name = ReaderController; + path = ReaderController; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 05F35E6BA63DE209CE2DE67CDF2991AF /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0F0C6DAF9F3854B998337C3A06546C7D /* ZIPFoundation-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 29CB77F5EC62298B8E19FEFFD791AEAD /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2229,60 +2243,68 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 571F382EFC19F10F5C7722C9E796B9A5 /* Headers */ = { + 3454132B21348ADC70E5D998978134A5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 8F2972EE318ED16FFBFD216728961BB2 /* DTActivityTitleView.h in Headers */, - BE485F99DA45D2B416F45A0A869BFDEA /* DTAnimatedGIF.h in Headers */, - 59BFBA6A99843138AE3FAD9B61093B4C /* DTBase64Coding.h in Headers */, - A3FBC31F5CCE7882ABAC0C50BE2F1B9C /* DTBlockFunctions.h in Headers */, - 040559B03C1A5E027594EAF859293F6C /* DTCompatibility.h in Headers */, - 7B4E49B136C527BD20AD000696440B14 /* DTCoreGraphicsUtils.h in Headers */, - 622B1B472DED191F34262A04CE05DD83 /* DTCustomColoredAccessory.h in Headers */, - 97CC0A64419AC54341D34421B22B7034 /* DTExtendedFileAttributes.h in Headers */, - 35C3A7AAA0BC0F615EF7159D64EB4372 /* DTFolderMonitor.h in Headers */, - 069C5149522B38C8AB7C735FF83EE099 /* DTFoundation-umbrella.h in Headers */, - 1763403B89A04B154B404C19CEBA335F /* DTFoundationConstants.h in Headers */, - D39BB74D08A120EADBBD1A2F5D306B9C /* DTHTMLParser.h in Headers */, - CE4876B563FC74C40E0A5DD83F79B486 /* DTLog.h in Headers */, - B21B66EF9EFBAA49EE4E8FFD51292FEF /* DTPieProgressIndicator.h in Headers */, - 301B3D81C6A28B5777E01246CD33D13F /* DTSmartPagingScrollView.h in Headers */, - 9B6C11AC9941D02F1BCC15F5124ACB60 /* DTTiledLayerWithoutFade.h in Headers */, - 307AA99D0BF12F418BB9CA6275F5EFA0 /* DTVersion.h in Headers */, - 80CCC9CEF8628C97D09B51EA7F588A04 /* DTWeakSupport.h in Headers */, - F67A787600193EFF9F366980B3538A96 /* NSArray+DTError.h in Headers */, - B77E45849D821FEDD79D5446B6A490ED /* NSData+DTCrypto.h in Headers */, - 8232E2F21AA4746F8FF80842EE706168 /* NSDictionary+DTError.h in Headers */, - D24F349DFE20048204D240D20C3144D2 /* NSFileWrapper+DTCopying.h in Headers */, - 7A41EE89AA05F85E78CDC5A90963F6B0 /* NSMutableArray+DTMoving.h in Headers */, - FE0E10A48B6213CD3FDA7737C07EE445 /* NSString+DTFormatNumbers.h in Headers */, - 687C9429B0D64C0F4BA4C79242D42E66 /* NSString+DTPaths.h in Headers */, - 38B74778B7E961F82ED9083E7BC612DF /* NSString+DTURLEncoding.h in Headers */, - FEF320B563A2815CFEFD132F9420F8E9 /* NSString+DTUtilities.h in Headers */, - 6F5B28572DAF44B005898C57F42B2DED /* NSURL+DTAppLinks.h in Headers */, - 23F8E9928335EB706B9D340097111305 /* NSURL+DTComparing.h in Headers */, - 020F2DBF2B0D499C7D5FDB014AA03CF5 /* NSURL+DTUnshorten.h in Headers */, - 5D5FDFA60EDACF69E7CE113BB41859E9 /* UIApplication+DTNetworkActivity.h in Headers */, - 0B32362B15FCBE685C9515F89022F858 /* UIImage+DTFoundation.h in Headers */, - 9A7858B00D72FBEA2FE7774D92BACA32 /* UIScreen+DTFoundation.h in Headers */, - BF4C58CBD2578B555B57EAD2D527DA01 /* UIView+DTFoundation.h in Headers */, + 4C17BB41AB2B816631F9477DCA0AAB7E /* RDReaderView-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5AD1BB607FC19B3D2A843E71EAD9C079 /* Headers */ = { + 38DD53377E43123969C7117C22004B72 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - AEEE68A6A3456F7B4DC24A7163D98F5F /* ZIPFoundation-umbrella.h in Headers */, + 1BE5D635C9CA65847543497C535CDDD7 /* SSAlertSwift-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6265744458134AF241442FE14DC7C075 /* Headers */ = { + 68BE767CD2728366CEB889E27AD94683 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - EC8BE26122FA096D22E9A3204847F5F6 /* SnapKit-umbrella.h in Headers */, + FB01A47EE1D09C33FE942CE56D3A874E /* SnapKit-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8A28DB98484AC536EEC1D4F3DDD426DA /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D10EF7F047A9E5F6E96D92BE4A567C82 /* DTActivityTitleView.h in Headers */, + AD1EC7ACCECE8F6EEEA2A26C980135BC /* DTAnimatedGIF.h in Headers */, + D97D7DD788C4D18A1F59DBAE61D4B5D5 /* DTBase64Coding.h in Headers */, + 78E85BE5ACA8B34F0F0875795AA5227B /* DTBlockFunctions.h in Headers */, + 51287FBF548A17A568489D31DA8947FD /* DTCompatibility.h in Headers */, + B933F0519580CB0C2441B4E30743887D /* DTCoreGraphicsUtils.h in Headers */, + 1303874CF4BC7EDF7BAA430702202C9D /* DTCustomColoredAccessory.h in Headers */, + 4216E83BBAC1EDC764B64A7959687531 /* DTExtendedFileAttributes.h in Headers */, + 0AB5DF1362C7A7A1798E6E453EE48E52 /* DTFolderMonitor.h in Headers */, + 58DF82D5893CEB68C83816F91A3587AA /* DTFoundation-umbrella.h in Headers */, + 84148D57904E24318934EE3997698D38 /* DTFoundationConstants.h in Headers */, + B0060F62ADE3A4E081F443F6C46333C8 /* DTHTMLParser.h in Headers */, + 3B60579AE4F0DAF5C15349148708AEF3 /* DTLog.h in Headers */, + 5152CE03325B9F978C9C5326A45A9DA6 /* DTPieProgressIndicator.h in Headers */, + 4617A3DACB97ECC22D8F2989294DB7CF /* DTSmartPagingScrollView.h in Headers */, + 406988E005ADB31DF5140AA2018B3C7C /* DTTiledLayerWithoutFade.h in Headers */, + 9B30CF6B565D4828956508A42E01F44E /* DTVersion.h in Headers */, + 1F01823286B1441AD4B9465B923FA9FC /* DTWeakSupport.h in Headers */, + 446FDD2DE47E045F80C995422F12224C /* NSArray+DTError.h in Headers */, + D7C8270984BB0CAC469E055BF18385FC /* NSData+DTCrypto.h in Headers */, + C09A25A26F0214CC046A27560A5C4254 /* NSDictionary+DTError.h in Headers */, + 7DDFB8CE7FA04A4304D5A44026DE1BC0 /* NSFileWrapper+DTCopying.h in Headers */, + 896026287F9D8443581759A53020022C /* NSMutableArray+DTMoving.h in Headers */, + 3258B5B23366506DD494C46AFB1C84B8 /* NSString+DTFormatNumbers.h in Headers */, + DD75D0287B74630B9D2E4CC87ECA5D63 /* NSString+DTPaths.h in Headers */, + 86001EE984D0EB14AADF337C5C1BA05B /* NSString+DTURLEncoding.h in Headers */, + 8A2EE040670C6715A4F913614E5CC40B /* NSString+DTUtilities.h in Headers */, + 60E8ADC216658A673DEF71C298CAE616 /* NSURL+DTAppLinks.h in Headers */, + 54A90EEE707DC23289088EDEF91F543C /* NSURL+DTComparing.h in Headers */, + D769636C7B23A599034D81095789FB99 /* NSURL+DTUnshorten.h in Headers */, + 1DA904F591DD5587E18A3958EF462EC9 /* UIApplication+DTNetworkActivity.h in Headers */, + 8593CD0CD62E27B97579259D350ECD85 /* UIImage+DTFoundation.h in Headers */, + F5CF4159843CE7E2E3C023B1E326B7EE /* UIScreen+DTFoundation.h in Headers */, + 65C27A19D68F8932FDDC9DEE58D392FF /* UIView+DTFoundation.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2294,32 +2316,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D88B7D67BC75EF5FD2DC460CA1594EDC /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 7CCC53404B62789AE3793E760997097D /* SSAlertSwift-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DE3F4C7F9377D100DB74BA3F000B09AF /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 2D9711ECF31F92B6344A4B4769E7D18F /* RDReaderView-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ 0C24CB0E87A728A11AA1124CB360D6A1 /* DTCoreText-Resources */ = { isa = PBXNativeTarget; - buildConfigurationList = 42DB324304DB4062633BD5C0B743F536 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */; + buildConfigurationList = 78AC23F3D0C09D48F14375E47BC46FA9 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */; buildPhases = ( - 9C4295C345FBDB725AC038F15F3C6185 /* Sources */, - 6C5083F9338B8851E15F70B79A7F44F4 /* Frameworks */, - C2B4CAC57336570A5968115BB042A4AB /* Resources */, + FC10E832A2E014898EC28BFEF85842F5 /* Sources */, + 18ADF4391AD2B9AFFB8C22BB8E39073A /* Frameworks */, + A1C467E6329FB71A32BEF2B48C0C1472 /* Resources */, ); buildRules = ( ); @@ -2332,17 +2338,17 @@ }; 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 188A603D94CFDFC4ECFFB0A731A69DB3 /* Build configuration list for PBXNativeTarget "SnapKit" */; + buildConfigurationList = 443B884E65FAE484ACCBE366E916F115 /* Build configuration list for PBXNativeTarget "SnapKit" */; buildPhases = ( - 6265744458134AF241442FE14DC7C075 /* Headers */, - BC13B8090DA45467A744E6CAF3DE34C8 /* Sources */, - B1EC0A3CE04A823BC0DC435834EF6C64 /* Frameworks */, - F9E2A4D154004CF62A22F6BAFDA37431 /* Resources */, + 68BE767CD2728366CEB889E27AD94683 /* Headers */, + 6D5D9A2CC6D992C1EA0D7B05A6CE9FB2 /* Sources */, + 3E819BE9BEE6A082564F6D50AC1FE536 /* Frameworks */, + 4219728B70BF84CA9DF3AB415875AF83 /* Resources */, ); buildRules = ( ); dependencies = ( - B9E2159A01F2995BDD2FACD0ECC521C0 /* PBXTargetDependency */, + 70839219DD5C745549587E2185086ABB /* PBXTargetDependency */, ); name = SnapKit; productName = SnapKit; @@ -2351,12 +2357,12 @@ }; 8619D5ADECF2B26CFD9A9826D61D289A /* SSAlertSwift */ = { isa = PBXNativeTarget; - buildConfigurationList = 48F9AC50432927A34356729C1F4F40CF /* Build configuration list for PBXNativeTarget "SSAlertSwift" */; + buildConfigurationList = E5E7FE632631B0276CC3F3B2CAABF993 /* Build configuration list for PBXNativeTarget "SSAlertSwift" */; buildPhases = ( - D88B7D67BC75EF5FD2DC460CA1594EDC /* Headers */, - 37F8F3221F85D579243C81EB7F1B3791 /* Sources */, - 4FDA977A2376EC004EF757911EA147C2 /* Frameworks */, - 86ACDD3DC75BBF3794E1D7168E84C2A1 /* Resources */, + 38DD53377E43123969C7117C22004B72 /* Headers */, + FE95AEAB6389AEE07DF7CD0D22860983 /* Sources */, + 9EA8986C070A5282511443AA1423116E /* Frameworks */, + 8CDEF0DC1171CEB7621981915CB3E562 /* Resources */, ); buildRules = ( ); @@ -2379,12 +2385,12 @@ buildRules = ( ); dependencies = ( - 73FE24F20CEB796A3A23687C50F6D477 /* PBXTargetDependency */, - 274DD071CC54BE127BC9F94B8A04FD08 /* PBXTargetDependency */, - D3B19E5313783C954E0A3FBE9BF2DCA3 /* PBXTargetDependency */, - CA1C9D3EA1543C5004456530ED9E56AE /* PBXTargetDependency */, - 7D1896023BCA82E202B28B0753AC68C8 /* PBXTargetDependency */, - E543D69FB495D7206BFA590CEF0ED78B /* PBXTargetDependency */, + A15C9621FEB9E916A0F697C7CD3B4540 /* PBXTargetDependency */, + C50AEE3EDC2E805057072F84F96232C3 /* PBXTargetDependency */, + 2B6415BE84BD798D27F9428CC5D3B68C /* PBXTargetDependency */, + B431640511BC4589F59EE4103D234874 /* PBXTargetDependency */, + F2207952E96E8659148FCB854A8B2E67 /* PBXTargetDependency */, + 5423625E8450816B30A8475F01E8AAFF /* PBXTargetDependency */, ); name = "Pods-ReadViewDemo"; productName = Pods_ReadViewDemo; @@ -2393,11 +2399,11 @@ }; 8A8DB685241263AFDF5E6B20FE67B93A /* SnapKit-SnapKit_Privacy */ = { isa = PBXNativeTarget; - buildConfigurationList = DB4C9521DD01DA7BACFF7BF85DE74E69 /* Build configuration list for PBXNativeTarget "SnapKit-SnapKit_Privacy" */; + buildConfigurationList = FA0D8FD2632665E77D3755C64F4EFC74 /* Build configuration list for PBXNativeTarget "SnapKit-SnapKit_Privacy" */; buildPhases = ( - 45178994E85B3554E2F8C03CE228B2F8 /* Sources */, - 5B6486B0E226A306E01E2AE183A60429 /* Frameworks */, - E5B263B619ECBCC8AF126A3C64B39129 /* Resources */, + DDDD9AB047F97F9AAA2C9EBFE6CF7D6B /* Sources */, + CE5A833C5532ED1B29593567E3B5AA66 /* Frameworks */, + 9CE7AB2E55BF3FFBF3DDFD65B42528A9 /* Resources */, ); buildRules = ( ); @@ -2410,12 +2416,12 @@ }; 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */ = { isa = PBXNativeTarget; - buildConfigurationList = 1D0D2A022E25C95190510FD3F7ECB9B6 /* Build configuration list for PBXNativeTarget "DTFoundation" */; + buildConfigurationList = 43899D66EDA58F53D3766F46D93C4EC3 /* Build configuration list for PBXNativeTarget "DTFoundation" */; buildPhases = ( - 571F382EFC19F10F5C7722C9E796B9A5 /* Headers */, - 33C49E2D6C2695929880A62FAE989328 /* Sources */, - 34461B07A262A084CD6DF7F81D13DE0E /* Frameworks */, - 723A5A68AB37315B01EF2160C4D58249 /* Resources */, + 8A28DB98484AC536EEC1D4F3DDD426DA /* Headers */, + 793D446342B037C64E840F94217F48EB /* Sources */, + CDE0C51D4CC555811724B28FB8285A10 /* Frameworks */, + 83D397186F065AFB2763E0DFCAA40555 /* Resources */, ); buildRules = ( ); @@ -2428,17 +2434,17 @@ }; AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */ = { isa = PBXNativeTarget; - buildConfigurationList = A70F5C0077A52024EC5922BD4B5EACE2 /* Build configuration list for PBXNativeTarget "ZIPFoundation" */; + buildConfigurationList = DA2CC49129AD3F4620303440F05AC2BE /* Build configuration list for PBXNativeTarget "ZIPFoundation" */; buildPhases = ( - 5AD1BB607FC19B3D2A843E71EAD9C079 /* Headers */, - B3BC25F2B6585813D66042BA127945B4 /* Sources */, - 781CAC434111081986005D6AE179F45B /* Frameworks */, - 2A8C522002C381BD6379B621162EBD6C /* Resources */, + 05F35E6BA63DE209CE2DE67CDF2991AF /* Headers */, + 201147F8E6A364F2F8ACB5C99C1E82DD /* Sources */, + 7A27B9BB2F93CD6A273034C4F5C15307 /* Frameworks */, + D965ACEA0CABB8C050BF0A133CC81021 /* Resources */, ); buildRules = ( ); dependencies = ( - 43AFA46D98684D09B99287E674E5F02E /* PBXTargetDependency */, + 0CA0593E3860B08AD087CD14D2EDA869 /* PBXTargetDependency */, ); name = ZIPFoundation; productName = ZIPFoundation; @@ -2447,21 +2453,21 @@ }; AA2E57587AA8EECA63C4BE08EA3CB6D2 /* RDReaderView */ = { isa = PBXNativeTarget; - buildConfigurationList = 8540EC9800531BDA0C03FB4845F659B1 /* Build configuration list for PBXNativeTarget "RDReaderView" */; + buildConfigurationList = 657380B0395B73E23E564C39924CCB23 /* Build configuration list for PBXNativeTarget "RDReaderView" */; buildPhases = ( - DE3F4C7F9377D100DB74BA3F000B09AF /* Headers */, - E6425B0EE108EC8A74541DB0B963F16C /* Sources */, - E3E7B730857EF8492B63F6A72BA7E464 /* Frameworks */, - FFD07DB66DA92409892FE96247148801 /* Resources */, + 3454132B21348ADC70E5D998978134A5 /* Headers */, + 7DA2B691BD63CB512949EDE4AC687847 /* Sources */, + 0690E2F3423B489C060C58F052BA27E8 /* Frameworks */, + 558711D4117F2F78B7305380DCF8E95D /* Resources */, ); buildRules = ( ); dependencies = ( - 9AD27F66DA7E0D563340B6F20847F1C1 /* PBXTargetDependency */, - 78502F06764BDC57A62D0C0A9F6E47D7 /* PBXTargetDependency */, - AC5A977034ED0B78AB5AE6C0C01DF0F4 /* PBXTargetDependency */, - 1A6C9AD23C6554E3B62FA27710F2529D /* PBXTargetDependency */, - 1030C22C57487EEEEE38DA568E70CBAB /* PBXTargetDependency */, + 135CCBF62F02544774EBD62971FFA7BF /* PBXTargetDependency */, + CC4284E96A8A43831A29D84D6DA599D3 /* PBXTargetDependency */, + 05CE4FE9872739B4C815A7EF2478D2A8 /* PBXTargetDependency */, + 5555F6F21ADFD0EBE205EF667713FB4E /* PBXTargetDependency */, + E07882A0DC0DED8B43811D8AE79B7757 /* PBXTargetDependency */, ); name = RDReaderView; productName = RDReaderView; @@ -2470,11 +2476,11 @@ }; AE7F393FB7805DE2664AB4111873F907 /* RDReaderView-RDReaderViewAssets */ = { isa = PBXNativeTarget; - buildConfigurationList = FFB0B0C7770CDF7D1B0D2C8AB9A23EBC /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */; + buildConfigurationList = 7031824EF6D3A2ABDDDAB4A47F8B7092 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */; buildPhases = ( - 5F464A0FAD44FF0690CE3793A04B3CBC /* Sources */, - 2FB1B011B93858D09A0C6CD143EA8261 /* Frameworks */, - BBCA1427D5F1E8B09DA951857DF20A2F /* Resources */, + 6AA8E48835DD29CE7D4EE25FBF55EB1A /* Sources */, + 5F41B71D619CE5CB2F653FD0EAD76A81 /* Frameworks */, + FD5333C08A361CBCC8E2E33B619E567D /* Resources */, ); buildRules = ( ); @@ -2497,8 +2503,8 @@ buildRules = ( ); dependencies = ( - F63064D99717857A12A17BB77C2AF85D /* PBXTargetDependency */, - B8836D5EED68BA0E84AB53546B21C8C4 /* PBXTargetDependency */, + 0ACC6A1B934384D248550F31995477C3 /* PBXTargetDependency */, + FF7A1364D5F46BB26DD0C620A2AE9992 /* PBXTargetDependency */, ); name = DTCoreText; productName = DTCoreText; @@ -2507,11 +2513,11 @@ }; C7A8D82E407CD3FDC3BA55CEE519B252 /* ZIPFoundation-ZIPFoundation_Privacy */ = { isa = PBXNativeTarget; - buildConfigurationList = 75FB14909AEE2EADAF6FE7C23AFBFF36 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */; + buildConfigurationList = 442D0A561D1A27F605362B5185B9866A /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */; buildPhases = ( - 8842B178264377602772367EC5CA5E6B /* Sources */, - 53B99546E8009C9D78F6F6D12AE65A9A /* Frameworks */, - EFD3E676324FAF2E9105D56BF9F44307 /* Resources */, + C577A8863C17DFA378B7D16B073FD552 /* Sources */, + E5A91F32DDA2E21F380CDBBFC1CD94C7 /* Frameworks */, + ECF39B7DFD8973930B27332F58345109 /* Resources */, ); buildRules = ( ); @@ -2562,14 +2568,6 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 2A8C522002C381BD6379B621162EBD6C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D82545E53018482BDC16B0FCB5CB6E6C /* ZIPFoundation-ZIPFoundation_Privacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 378BF991D3B318AACBF6D78F57218233 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -2578,10 +2576,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 723A5A68AB37315B01EF2160C4D58249 /* Resources */ = { + 4219728B70BF84CA9DF3AB415875AF83 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 87466854F854640618D9ECC4DD87732C /* SnapKit-SnapKit_Privacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 558711D4117F2F78B7305380DCF8E95D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 31656AC7A50C1938C94131120B77B277 /* RDReaderView-RDReaderViewAssets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2592,139 +2599,150 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 86ACDD3DC75BBF3794E1D7168E84C2A1 /* Resources */ = { + 83D397186F065AFB2763E0DFCAA40555 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - BBCA1427D5F1E8B09DA951857DF20A2F /* Resources */ = { + 8CDEF0DC1171CEB7621981915CB3E562 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 622E2F71BD252D844AC6838D3B58CB84 /* cssInjector.js in Resources */, - FF30530E9BFE73D2EC9A20EB624B4528 /* epub-bridge.js in Resources */, - 89E1D4F05CD7B039976926997D4F484D /* epub-fixed-layout.html in Resources */, - F5935539246A112F248693526C1503FC /* rangy-core.js in Resources */, - AFEC35CEF2F2F0F83DF93E373C44AEB3 /* rangy-serializer.js in Resources */, - 7D56C992720BEBF70F07BC75928B7E3A /* WeReadApi.js in Resources */, - 8A36D24AF7E197C7C3A37C7F6D6B3453 /* wxread-dark.css in Resources */, - D43CB99286214EB5B234FF938ABC3BBD /* wxread-default.css in Resources */, - D7ABE878F849DA06F8A108420028D0B1 /* wxread-replace.css in Resources */, - 710ABD1A096056EFC2A092E018DB1BA8 /* wxread-replace-latin.css in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C2B4CAC57336570A5968115BB042A4AB /* Resources */ = { + 9CE7AB2E55BF3FFBF3DDFD65B42528A9 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 69D8C5CBC71777316973C43255140F0B /* default.css in Resources */, + CBEF43E74744676839326C2D833FC6FF /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - E5B263B619ECBCC8AF126A3C64B39129 /* Resources */ = { + A1C467E6329FB71A32BEF2B48C0C1472 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0D92A7F76F994F8709CACA82062165CC /* PrivacyInfo.xcprivacy in Resources */, + CD5204849FC7E2964D7B81BAA7F77264 /* default.css in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - EFD3E676324FAF2E9105D56BF9F44307 /* Resources */ = { + D965ACEA0CABB8C050BF0A133CC81021 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - EF1B4ECA85C386854877F6F8EB9B19DC /* PrivacyInfo.xcprivacy in Resources */, + 4A891B04317BB3931238875910CE7772 /* ZIPFoundation-ZIPFoundation_Privacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - F9E2A4D154004CF62A22F6BAFDA37431 /* Resources */ = { + ECF39B7DFD8973930B27332F58345109 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - D8A67D6CCD80C9BDCE4DFB88AF6A7A37 /* SnapKit-SnapKit_Privacy in Resources */, + CE452E92A6D250A7CEC5FCA1DB3F2559 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - FFD07DB66DA92409892FE96247148801 /* Resources */ = { + FD5333C08A361CBCC8E2E33B619E567D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 46489255286B880DBCB326C15E0058BF /* RDReaderView-RDReaderViewAssets in Resources */, + 3C37CBADF5A9D153099D9DD26851B012 /* cssInjector.js in Resources */, + C9A5F7678CAA29D2360F5E9664326A84 /* epub-bridge.js in Resources */, + B07FDC47F5F68E14BED9EC6512D5817F /* epub-fixed-layout.html in Resources */, + 6C762AFC299FFD839633723E95F3524D /* rangy-core.js in Resources */, + 64EA4D70BFC27B08051A38CFD34E9EEB /* rangy-serializer.js in Resources */, + 9295ACA6C5CEA110E02F9A8E7A55D08A /* WeReadApi.js in Resources */, + E92E331262CD68DBE05495F8EA560548 /* wxread-dark.css in Resources */, + 4340432D9A9490D9CF9BC31F6B50B2F2 /* wxread-default.css in Resources */, + 0E9FF4ED55C539850AA4023C7EF7FC4A /* wxread-replace.css in Resources */, + 1616B926586677612AEF659A23ECCD0D /* wxread-replace-latin.css in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 33C49E2D6C2695929880A62FAE989328 /* Sources */ = { + 201147F8E6A364F2F8ACB5C99C1E82DD /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 31936037BAEE5E4BEE51079EBCBE7979 /* DTActivityTitleView.m in Sources */, - CD34CD25B6D8F562DAACBF8A8DBFB4A7 /* DTAnimatedGIF.m in Sources */, - 0EC42ADE0B83491854E458B0D00EE49A /* DTBase64Coding.m in Sources */, - 31D1715DF1621964DCA8D10501899FF8 /* DTBlockFunctions.m in Sources */, - 3044AAD1DE4C39601994F84CEE57223D /* DTCoreGraphicsUtils.m in Sources */, - E75650616E01EFA39EF0F42279CDB0DE /* DTCustomColoredAccessory.m in Sources */, - 9F3A7E6E019A523F112D66622F13D2C4 /* DTExtendedFileAttributes.m in Sources */, - 5EC723A8387A3F88A30A25863FFBA52F /* DTFolderMonitor.m in Sources */, - 665EE2D835C5DF71A6A4FFA82994C388 /* DTFoundation-dummy.m in Sources */, - E3DABD5EB079D2F846A71E05D6F9C58C /* DTFoundationConstants.m in Sources */, - 2B636C6C8FFECF2614162FD48ED07017 /* DTHTMLParser.m in Sources */, - 017C8BDE742F347FB3D4D7E5A365B757 /* DTLog.m in Sources */, - 0CB5057B141757B491EA31E8D6DB33EB /* DTPieProgressIndicator.m in Sources */, - 6AC430FFDF68F98357C898D6858904DB /* DTSmartPagingScrollView.m in Sources */, - E2EF13E16C0AD5AA232A647699EBE949 /* DTTiledLayerWithoutFade.m in Sources */, - 854FA236832E01DEBB7E96C36877C147 /* DTVersion.m in Sources */, - F1DA41F2D5EB8A732EB2E1A3D3775368 /* NSArray+DTError.m in Sources */, - 00EC20B980D829A07C2F25D0E317DBAA /* NSData+DTCrypto.m in Sources */, - C21E42AA79E5C63040B163B0C2FFC947 /* NSDictionary+DTError.m in Sources */, - 074DAE005137E6E89D69DC0E8765EAB0 /* NSFileWrapper+DTCopying.m in Sources */, - 9E0BECACB09C20F2A4C0B2C676D074DE /* NSMutableArray+DTMoving.m in Sources */, - 2ACF19FB7F905D8831BF3779A1D2E0DC /* NSString+DTFormatNumbers.m in Sources */, - D6BB51AC76A2639666B4C3B11E4F53A6 /* NSString+DTPaths.m in Sources */, - 175182AF75968DA8966AFC28250C3E0F /* NSString+DTURLEncoding.m in Sources */, - AB75C75F5D829A0BF57969234A63ED59 /* NSString+DTUtilities.m in Sources */, - 51BE76461ABF61F23EF33C7806706720 /* NSURL+DTAppLinks.m in Sources */, - 653FF238952AF22C828EFD68EA3A2BBE /* NSURL+DTComparing.m in Sources */, - 9E3AB25F2D6F511C03EFB50D2256A6FD /* NSURL+DTUnshorten.m in Sources */, - 6576F9624F055FF3E27A20613FBF8EAF /* UIApplication+DTNetworkActivity.m in Sources */, - C44AC1B338F7162DA062A24F37F8B607 /* UIImage+DTFoundation.m in Sources */, - 8E1A93C0442BC9FC1E131BB841AACA59 /* UIScreen+DTFoundation.m in Sources */, - A77F198B69481699E6FCEAFBCDA2F8DA /* UIView+DTFoundation.m in Sources */, + 10FF832A1AF85DA716C94D9E10A85BF3 /* Archive.swift in Sources */, + 3A5CC932C1E41AB85D67620EEA2D0BA8 /* Archive+BackingConfiguration.swift in Sources */, + A8DC6885FE405B71BCF13D91D9CFFF71 /* Archive+Deprecated.swift in Sources */, + 0B7603CC7E4C2D7A63E2BB4D1EB1BA71 /* Archive+Helpers.swift in Sources */, + 8C37B65B5FF8C31744B80DAF99CEF0E9 /* Archive+MemoryFile.swift in Sources */, + FFCD89F746514E86CC9E99A60E64D61B /* Archive+Progress.swift in Sources */, + D22006C17391103A0D2F496D05F012B3 /* Archive+Reading.swift in Sources */, + 1389F2DE24EAF82D9003C16996BB9255 /* Archive+ReadingDeprecated.swift in Sources */, + C2BCA92E8E4BB077023BA1AC445962B3 /* Archive+Writing.swift in Sources */, + 0BECE54788017FB1138CAF0006752F85 /* Archive+WritingDeprecated.swift in Sources */, + 7DBEB16F3A755F919B8AA710F5593C1A /* Archive+ZIP64.swift in Sources */, + A8FC7A36DEF3E31E296CD4D26A815B3D /* Data+Compression.swift in Sources */, + F65BAED40531ADE85C230A2D779A5182 /* Data+CompressionDeprecated.swift in Sources */, + E14170A54A9726BECBB355762C685602 /* Data+Serialization.swift in Sources */, + A0EFD4BB76E51AF257290001AF4944D2 /* Date+ZIP.swift in Sources */, + 468A2F854012BBA18B8CC0458FC89B3F /* Entry.swift in Sources */, + 8CAC2DBDC2672B8F227875C2D05D7555 /* Entry+Serialization.swift in Sources */, + EF4307848004954110D2EBDA5399C02F /* Entry+ZIP64.swift in Sources */, + EA9136B1358F8EFA993DE6CFEEBEACF1 /* FileManager+ZIP.swift in Sources */, + 777AD7CB7399E49BF110AAA8C9036583 /* FileManager+ZIPDeprecated.swift in Sources */, + A0086BC42F0345BCC2FD3B88E3440613 /* URL+ZIP.swift in Sources */, + ACA56466FFD614410CCB31E0A2931D56 /* ZIPFoundation-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 37F8F3221F85D579243C81EB7F1B3791 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DFC9D618545AE33032AEF2CA1BB3E07D /* SSAlertAnimation.swift in Sources */, - FBED75A2764DF39E8AFDF8B66AB145CF /* SSAlertAnimationController.swift in Sources */, - 7257D4B97C3B2C046A950B54C6AD31FB /* SSAlertCommonView.swift in Sources */, - 663A22A63DF740DE2DDD9F94FBCDED1B /* SSAlertDefaultAnmation.swift in Sources */, - 881F85E9E489847191F88182118C8018 /* SSAlertPresentAnimation.swift in Sources */, - 40BFADA4560F1139652A89FA86489ABE /* SSAlertSwift-dummy.m in Sources */, - 9FAE9BBC8C82AFDB267CF042CAE91557 /* SSAlertView.swift in Sources */, - FB85B50672F0BFADF5AA7F3B430B7B95 /* SSAlertViewExtention.swift in Sources */, - DA1847B8B46AE4E2BEA8B767EE215437 /* UIViewFrameExtension.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 45178994E85B3554E2F8C03CE228B2F8 /* Sources */ = { + 6AA8E48835DD29CE7D4EE25FBF55EB1A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 5F464A0FAD44FF0690CE3793A04B3CBC /* Sources */ = { + 6D5D9A2CC6D992C1EA0D7B05A6CE9FB2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 7C40890FF94AE3B5E3A73AEF73FD0701 /* Constraint.swift in Sources */, + A6306344331E00A5BE222BF52F4D5129 /* ConstraintAttributes.swift in Sources */, + 537A4BFAF3D622FCB0C3A31B71F0D8C0 /* ConstraintConfig.swift in Sources */, + 0AA3A80E4DD1062BA4641DF71F00F773 /* ConstraintConstantTarget.swift in Sources */, + C3D195BDEB02E070383985241CCD749B /* ConstraintDescription.swift in Sources */, + 2B4A9056AEC7A8D350EE3CD248F08DE8 /* ConstraintDirectionalInsets.swift in Sources */, + B4267497AB5BF50898ECA9B77E75EA14 /* ConstraintDirectionalInsetTarget.swift in Sources */, + D76431C60233FF62242A2BD1AE3C826A /* ConstraintDSL.swift in Sources */, + 1E130859A8AB1AE05E4593D519C219A9 /* ConstraintInsets.swift in Sources */, + 6795652F3E65BD7FB9B422F192768372 /* ConstraintInsetTarget.swift in Sources */, + 09BD533E8A50F83694A170194678AE8E /* ConstraintItem.swift in Sources */, + 194664799DF7F4D9E2D1F16EADCA0823 /* ConstraintLayoutGuide.swift in Sources */, + 526BC0691731F81C69DB9755158CB9EF /* ConstraintLayoutGuide+Extensions.swift in Sources */, + F12E325A7ED834D878D4DA821D57594A /* ConstraintLayoutGuideDSL.swift in Sources */, + C6A49A308880D341DDE7D6D90A579684 /* ConstraintLayoutSupport.swift in Sources */, + 31ECE641ED1AC3888D6C9BB35DFCC7A0 /* ConstraintLayoutSupportDSL.swift in Sources */, + D5D469DD6B6F98BCF293C5B83B693459 /* ConstraintMaker.swift in Sources */, + 5476A8BC3143ABF3716F21AF18C67ECB /* ConstraintMakerEditable.swift in Sources */, + 88670A69EF411C639C3AAC8B39848340 /* ConstraintMakerExtendable.swift in Sources */, + 055EF156631EA5706DCECFC0F49D9392 /* ConstraintMakerFinalizable.swift in Sources */, + CE4F13F2F2812EB7B3919F0A91F2E858 /* ConstraintMakerPrioritizable.swift in Sources */, + CF2D91AB9CCA3E706A39D5126BA04C3B /* ConstraintMakerRelatable.swift in Sources */, + AA6C9B258173656A1241F1CF0E80D7D4 /* ConstraintMakerRelatable+Extensions.swift in Sources */, + 9B9FE1C8A205EFB1EA6081CB2885DF5F /* ConstraintMultiplierTarget.swift in Sources */, + 88D5FBA8614CC1A84A6B1288627CB93C /* ConstraintOffsetTarget.swift in Sources */, + 06BD685726847318A09C9590891CD7ED /* ConstraintPriority.swift in Sources */, + E8B4718E98F761D7BD63E98A96D79354 /* ConstraintPriorityTarget.swift in Sources */, + 1DE4CF0A937A4535FAD88245B7B0B577 /* ConstraintRelatableTarget.swift in Sources */, + 221B7E4A6D3AACF716E2830AA77F4163 /* ConstraintRelation.swift in Sources */, + 587D6FEA096B959DB159958EA85DE7AA /* ConstraintView.swift in Sources */, + 74B266A15F5B1DFA3B1D005C7CDBFF0D /* ConstraintView+Extensions.swift in Sources */, + 1A3FDFA1A68A13644CB7D7E28066EAA1 /* ConstraintViewDSL.swift in Sources */, + C6308C05D9FEBC66D46E90617BA932FC /* Debugging.swift in Sources */, + F94303E469C66C27A25A2596C357318E /* LayoutConstraint.swift in Sources */, + BC034149400280A8BB07C18A027494CF /* LayoutConstraintItem.swift in Sources */, + BDFB313B8C690747D6B8C974338A1B03 /* SnapKit-dummy.m in Sources */, + 1510A538CB762F72F7990C17EC617299 /* Typealiases.swift in Sources */, + FE33334602C29ADE729F7AAE4C686668 /* UILayoutSupport+Extensions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2736,287 +2754,254 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8842B178264377602772367EC5CA5E6B /* Sources */ = { + 793D446342B037C64E840F94217F48EB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2336E3B7C72AB1702DEAA87786A98284 /* DTActivityTitleView.m in Sources */, + BE0ECECF6F3D871AFE88627E8042FA4D /* DTAnimatedGIF.m in Sources */, + 80A95AF17AF71F69504BF2B6639E2AF4 /* DTBase64Coding.m in Sources */, + 064481778FF8671650240A03A9371744 /* DTBlockFunctions.m in Sources */, + 5EE0E6A4CE24D4F834E95A41DEE57121 /* DTCoreGraphicsUtils.m in Sources */, + 7FF0C80B19CF042F6ADF4A7954DF69AF /* DTCustomColoredAccessory.m in Sources */, + 8D8786B29D0ADDC25829805E11BBDA08 /* DTExtendedFileAttributes.m in Sources */, + 5BC03D1F8B6ED13FB6EE44A06D5B56F8 /* DTFolderMonitor.m in Sources */, + 75DD13197B3A50B7DB6E8C0D453194B3 /* DTFoundation-dummy.m in Sources */, + BCCA1BD09411BFFD19A14D48D087C1C5 /* DTFoundationConstants.m in Sources */, + 5462A8578E68D9DA6636976F732133F8 /* DTHTMLParser.m in Sources */, + FA3F2F0647033F749B690F1F43F1FF9E /* DTLog.m in Sources */, + CD423A7A8D8F156279C62233AA4DAF1D /* DTPieProgressIndicator.m in Sources */, + 0ABC5070A4608ADE7CEEA759C9B5EC82 /* DTSmartPagingScrollView.m in Sources */, + B72FCEF30FCF820E9434CAB06B502027 /* DTTiledLayerWithoutFade.m in Sources */, + 4B5274DA733FBDE60596AEF43A61320E /* DTVersion.m in Sources */, + FC261482E0571EF1D2C176DCC1416271 /* NSArray+DTError.m in Sources */, + 913F50C87F33408387D2FABFB364FEF1 /* NSData+DTCrypto.m in Sources */, + 50FBFEC57DA9CC749DA0D1E8B2B75F7C /* NSDictionary+DTError.m in Sources */, + EFAE66F7F5876B3C3F2357E5D52DF341 /* NSFileWrapper+DTCopying.m in Sources */, + F51FF3BE649DB4F45C1CEDBE5B9992AB /* NSMutableArray+DTMoving.m in Sources */, + 4ACCCA93DA06B2666E192996213E0B0B /* NSString+DTFormatNumbers.m in Sources */, + 4479AD171E4AD6640B04604493ED0A3C /* NSString+DTPaths.m in Sources */, + C9F845A486E47895A25C9C6885C606B6 /* NSString+DTURLEncoding.m in Sources */, + D0871D1ABC6B5B4B121BD9D1F77ED113 /* NSString+DTUtilities.m in Sources */, + AC957DB48302A58F9CA91D3735ADF86A /* NSURL+DTAppLinks.m in Sources */, + 7B83FABA52CF86EF8529E566EAC9367B /* NSURL+DTComparing.m in Sources */, + A0BDB089F8F7C3478AAC3756C3FED67C /* NSURL+DTUnshorten.m in Sources */, + 8FD8FE08A1F383BD78DFEC51D7EE5DF8 /* UIApplication+DTNetworkActivity.m in Sources */, + 316654F1450305B61B2FE4F3CEA4543F /* UIImage+DTFoundation.m in Sources */, + FEE25EB95A909D28146B01F50AB9C904 /* UIScreen+DTFoundation.m in Sources */, + 1501ABBDADA4CFC28913368EEA52B109 /* UIView+DTFoundation.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7DA2B691BD63CB512949EDE4AC687847 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 00012FDC4E0B6E7D2912581B460A8992 /* RDEPUBAnnotationModels.swift in Sources */, + E6480EA3947A2C71A3096CCAEBFA9131 /* RDEPUBAssetRepository.swift in Sources */, + ED1258ECC58FC5AC544DDE1883E42034 /* RDEPUBAttachmentNormalizer.swift in Sources */, + D1173237922081A644444BC00B51B8B8 /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */, + 1C90896663D69FFC15D8EE09ED2789DA /* RDEPUBAttachmentTooltipView.swift in Sources */, + E4B6BEF132A110AB19F8244537562719 /* RDEPUBBackgroundCoverageStore.swift in Sources */, + DC7462EE3634E61D37537277E0D1C173 /* RDEPUBBackgroundPriorityPolicy.swift in Sources */, + D7C1729E34F5F2CBF878385EABB0F78A /* RDEPUBBackgroundTrace.swift in Sources */, + A2CF42E4C725A1969A6211211C82138A /* RDEPUBBookPageMap.swift in Sources */, + 2C1372BF284AB062A1B6B8C026073E73 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */, + CE62D88B2B0EC135F19EF16E1EE898FB /* RDEPUBCFI.swift in Sources */, + 58445DE0477FD63B598AD8785C45DD1F /* RDEPUBCFICompatibility.swift in Sources */, + 92F6111C95FCD2F3E9A181E4D943A1EE /* RDEPUBCFIDOMPathBuilder.swift in Sources */, + BC81EFE1BD216C5B18F013ADD05FC416 /* RDEPUBCFIError.swift in Sources */, + 5C5E3146F1526E09C1F510BD514D8A65 /* RDEPUBCFIGenerator.swift in Sources */, + 382D4752DB1D51511A713736629A120B /* RDEPUBCFIMap.swift in Sources */, + F4E1C9E1686B902C7D26BF68B034AFEE /* RDEPUBCFIMarkerInjector.swift in Sources */, + F630BEC2086983146AD26D9396323AF1 /* RDEPUBCFIParser.swift in Sources */, + FA58AAD5F76A38FA6D32BF44408811E4 /* RDEPUBCFIPath.swift in Sources */, + 931695433DC077003590F79665E0622A /* RDEPUBCFIRange.swift in Sources */, + 76B6DF0A60F3BB8E9B53581AA2B89ECA /* RDEPUBCFIRecoveryEngine.swift in Sources */, + 502C53D46B40E13673AB6F26044BE287 /* RDEPUBCFIResolver.swift in Sources */, + A77E807D439F105930DF42E053013624 /* RDEPUBCFISerializer.swift in Sources */, + 1D1C0972DCB88C93667236180986F7DA /* RDEPUBCFITextAssertion.swift in Sources */, + 7C43EAC7CB850A7675D2A6D61C8FBF01 /* RDEPUBCFIUtilities.swift in Sources */, + 4E66B9A8089866D932E7127403C0DC52 /* RDEPUBChapterCacheKey.swift in Sources */, + 3534F4FAFC0636E50CB8D9200515E974 /* RDEPUBChapterData.swift in Sources */, + 4AAD976AEFCB0BCC55B8585323321885 /* RDEPUBChapterDataCache.swift in Sources */, + 31A151A1FC37F975CB9B1880C5816546 /* RDEPUBChapterLoader.swift in Sources */, + 491EFCE38A3F50F71087473BE0421212 /* RDEPUBChapterLocation.swift in Sources */, + 2A58CC63B5184D7047EF8794F5FCC014 /* RDEPUBChapterOffsetMap.swift in Sources */, + 7FA38108813D4CB4C8ED33502E91BB5D /* RDEPUBChapterPageCounter.swift in Sources */, + 1D128324740E7CCDDBBA92208805578D /* RDEPUBChapterRuntimeStore.swift in Sources */, + D5FC94BE4999365112D0537777CA2FAB /* RDEPUBChapterSummaryDiskCache.swift in Sources */, + 63E3F3AA068ADE79B61FA2B9682F03ED /* RDEPUBChapterTailNormalizer.swift in Sources */, + 87B07B9129E0E431CAF116B4EE4C0A5D /* RDEPUBChapterWarmupOrchestrator.swift in Sources */, + ECFB291BFD3228FABB8D7CE994E44B61 /* RDEPUBChapterWindowCoordinator.swift in Sources */, + FC2546E55A86C4D94D5F8B809FB5C897 /* RDEPUBChapterWindowSnapshot.swift in Sources */, + 5EF61759B9D9C035F921104933AEE7B5 /* RDEPUBCoreTextPageFrameFactory.swift in Sources */, + 5FA01E9E77A69E8AB98EAD70E51A0FCC /* RDEPUBCSSCompatibilityLayer.swift in Sources */, + 57DD3A0EBB0E32B4D804E8D49FE99001 /* RDEPUBDarkImageAdjuster.swift in Sources */, + 5AB50C364F62809013394E49588190C8 /* RDEPUBDTCoreTextRenderer.swift in Sources */, + 780837EAC09D97BF7EB4CC1415EEF0AE /* RDEPUBFixedLayoutTemplate.swift in Sources */, + 2814E48108DD3E83904D5C9318EE89D9 /* RDEPUBFontFallbackResolver.swift in Sources */, + DD304690E329A997954FD30B7E101746 /* RDEPUBFontNormalizer.swift in Sources */, + F0DCEA4158B69D4D7F327C580EB8CDE5 /* RDEPUBFragmentMarkerInjector.swift in Sources */, + 75668A2C0006C07A19D8D7752400689C /* RDEPUBHTMLNormalizer.swift in Sources */, + 2FE74F960A0ACAC1C71ACDC89972E183 /* RDEPUBImageViewController.swift in Sources */, + 864317F17E7247F95AE8763CDC571AC7 /* RDEPUBImageViewerCoordinator.swift in Sources */, + 9032E6A1A4F1FA89178E3DCF9E76843F /* RDEPUBJavaScriptBridge.swift in Sources */, + BABB631D3E75C2401B0186D33D45F028 /* RDEPUBJumpSession.swift in Sources */, + 55F4D3C5BE4D81A6A193E0799AF0834E /* RDEPUBMetadataParseCancellationController.swift in Sources */, + BCF71935893826A0C7E4D94AE9690198 /* RDEPUBMetadataParseWorker.swift in Sources */, + 2ADC21293994C745E3534DCF850B5994 /* RDEPUBModels.swift in Sources */, + 437298A17902FD1B6BCD2E4FE084DDC2 /* RDEPUBNavigationStateMachine.swift in Sources */, + 87E6B7A76709BC55FD95D822811D521E /* RDEPUBNavigatorLayoutContext.swift in Sources */, + B2D82D043AA2A89BA9000314FE7A45AC /* RDEPUBNavigatorState.swift in Sources */, + 68C89390714FFBFDFCFD1248A346E8E8 /* RDEPUBNoteDetector.swift in Sources */, + 6840A456B0498FA5A20F9F1713E21479 /* RDEPUBNoteModels.swift in Sources */, + E4B55D3DA872FD60436501A4880E8559 /* RDEPUBNotePopupCoordinator.swift in Sources */, + F000848FB2DEADE8E5FBA17C3F6756CF /* RDEPUBNotePopupViewController.swift in Sources */, + 4975956E880208083B5F22F8B5BB2BB3 /* RDEPUBNoteResolver.swift in Sources */, + 0787448DED429142330009FBEEFA6C20 /* RDEPUBPageBreakPolicy.swift in Sources */, + 5E58335E84B16D33094CBE684E8065FC /* RDEPUBPageCountCache.swift in Sources */, + AE43D161B808037299043EC4C7E02B7A /* RDEPUBPageInteractionController.swift in Sources */, + FCD1FF6DA0BBED5100CEA56D71B2EB04 /* RDEPUBPageLayoutSnapshot.swift in Sources */, + 309724DCA5F394FC0187A8EF5094647E /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */, + 0E7C316F098CD51BAF6DF9337F4D4FF3 /* RDEPUBPageResolver.swift in Sources */, + 7C88864F32B503C4E54A5A9B1C332981 /* RDEPUBPaginationCacheCoordinator.swift in Sources */, + 8BDD1C103484829B9DDD106A067C5C02 /* RDEPUBPaginationModels.swift in Sources */, + 63ABC14E426657DEAF0A5309CDC81A48 /* RDEPUBPaginationState.swift in Sources */, + 11949D3539DAA668EF241BFCA2817B99 /* RDEPUBPaginator.swift in Sources */, + AE861D884A8004EF8F7CFADCE86D8411 /* RDEPUBParser.swift in Sources */, + 0AC506D604FCC73E73FEABDB9F62984F /* RDEPUBParser+Archive.swift in Sources */, + 6321BE6DE0C6F2AC7D53FE5BEABD4F83 /* RDEPUBParser+Package.swift in Sources */, + ED95A429520E9CFB6C09FF1DC88AEF00 /* RDEPUBParser+ReadingProfile.swift in Sources */, + B532D38C5A7FC5AE5F0968DC9C9DBCF8 /* RDEPUBParser+Resources.swift in Sources */, + 60DEFF3031960C170BD930117DDBFDE7 /* RDEPUBParser+TOC.swift in Sources */, + 789B886DB594DC9497BB011790BBF7E8 /* RDEPUBPreferences.swift in Sources */, + DB0F934EA8172F157992E1909D319C41 /* RDEPUBPresentationRuntime.swift in Sources */, + 57429646273801FBDE2E8306B96D9415 /* RDEPUBPublication.swift in Sources */, + 3D8657B60B919094A50D9CE9A5F454A4 /* RDEPUBReaderAnnotationCoordinator.swift in Sources */, + BEAF0452878110B598B76B6AD4F46518 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */, + CA1210C0EBDE84C367D23D69B4470853 /* RDEPUBReaderBottomToolView.swift in Sources */, + ED3BD7326F33BCB93CD0B8643A4F1BAB /* RDEPUBReaderChapterListController.swift in Sources */, + 8E5F3603B41FE2CF3FBEC4C9D1337F3C /* RDEPUBReaderChromeCoordinator.swift in Sources */, + 91D8F6C54391A9D3E37F08CC4315AE99 /* RDEPUBReaderConfiguration.swift in Sources */, + 1DCBB39D25EBEDB3B18C44EBD601AFA9 /* RDEPUBReaderContext.swift in Sources */, + 36DEB3A282F5A6B8CD1CA2F085B805F5 /* RDEPUBReaderController.swift in Sources */, + 46BC83888CC2216F28287B7FA1E81136 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */, + D3D2648D63A8BED58114E8456BD73229 /* RDEPUBReaderController+ContentDelegates.swift in Sources */, + F2B594C44772081247BCDBCBC43625D7 /* RDEPUBReaderController+DataSource.swift in Sources */, + 6E7463B2C7BE39639F53BF3B9171750E /* RDEPUBReaderController+ExternalLinks.swift in Sources */, + 7061077F19BD8B9339FD53134B0E6652 /* RDEPUBReaderController+LocationResolution.swift in Sources */, + B113395265911C8296BC5FAABD0D3667 /* RDEPUBReaderController+PublicAPI.swift in Sources */, + 945A77521BE95FB18A3D1577A50B7F24 /* RDEPUBReaderController+RenderSupport.swift in Sources */, + 3DFAACFD146FD0704B2D180361A1885F /* RDEPUBReaderController+RuntimeBridge.swift in Sources */, + 6B574191C6DBFD6A34B1F5850E599DBB /* RDEPUBReaderController+TableOfContents.swift in Sources */, + B1C2E803A0F46195770A6E288270C00B /* RDEPUBReaderDelegate.swift in Sources */, + 9010223E727BEFED1915B2BB2A35ECFD /* RDEPUBReaderDependencies.swift in Sources */, + 821AC919160B6FCE4FEC3F37F99FEA22 /* RDEPUBReaderEnvironment.swift in Sources */, + BA92ADE493399D9EF1855FC2ECEF4C85 /* RDEPUBReaderHighlightsViewController.swift in Sources */, + 475A20655711B38721CA7D0F558DB434 /* RDEPUBReaderLoadCoordinator.swift in Sources */, + 63BD507DCFB9657844C5822E2BD7C72E /* RDEPUBReaderLocationCoordinator.swift in Sources */, + D02C303FBC1B11C826C8202F4CA02A09 /* RDEPUBReaderPaginationCoordinator.swift in Sources */, + 432C14A294814368D5984610B27E43C4 /* RDEPUBReaderPersistence.swift in Sources */, + 8F95D356B3818234A49F50063C4AA46C /* RDEPUBReaderRuntime.swift in Sources */, + 1898FECC9A67C5227BF5346B043B1A4C /* RDEPUBReaderSearchBarView.swift in Sources */, + 9BC6FB16B5F8448E55D8A5A5FCA15CF1 /* RDEPUBReaderSearchCoordinator.swift in Sources */, + 643C97526CC9533DCA363EB5704559FB /* RDEPUBReaderServices.swift in Sources */, + 707175A0385225FCA5CE079773062EE7 /* RDEPUBReaderSettings.swift in Sources */, + 350C0168585FC1AD0C216F769FBF709A /* RDEPUBReaderSettingsViewController.swift in Sources */, + 55E455C9B7A3ED583443CDE8E668163B /* RDEPUBReaderState.swift in Sources */, + F6D6059B11756279D4DDC1C6550091E6 /* RDEPUBReaderTableOfContentsItem.swift in Sources */, + DF1DCBB316F5B9BCF4A51CC20108CDE1 /* RDEPUBReaderTheme.swift in Sources */, + 212D840F1F1FFA819A65E20B1B3CF7DF /* RDEPUBReaderToolView.swift in Sources */, + 32BE965A17859BA8C63263A2674BD0C6 /* RDEPUBReaderTopToolView.swift in Sources */, + 83A0424762C166BEC92729C7897D70B6 /* RDEPUBReaderUIState.swift in Sources */, + CD9B02582D2A74BF9508F0509696B271 /* RDEPUBReaderViewportMonitor.swift in Sources */, + 5CCD132DD04800227A43A475DAE36FEF /* RDEPUBReadingLocationModels.swift in Sources */, + 395F5B39BB0D706C1C461E3C7D6117A6 /* RDEPUBReadingSession.swift in Sources */, + F09125B0FFA7F64C4682813E3B607E2D /* RDEPUBRenderDiagnosticsCollector.swift in Sources */, + 6C5BB6C686AF9EAAA7934C9F45648A4F /* RDEPUBRenderRequest.swift in Sources */, + EBB6868C2AA00A71178273EA633FC2E5 /* RDEPUBResourceResolver.swift in Sources */, + 7BFDB986A8372D1D292F341704ADF419 /* RDEPUBResourceURLSchemeHandler.swift in Sources */, + 85FBBBEDAD699D4749D2FC02F79CC369 /* RDEPUBRuntimeChapter.swift in Sources */, + FC9E9F7AC93678A4D81A3F0D28D198E9 /* RDEPUBRuntimePageCount.swift in Sources */, + 33BF364D51A0EC9CC944BBDDF2AC4065 /* RDEPUBSearchEngine.swift in Sources */, + 6BADF8A33B372ECD3F1A335EA4A22C07 /* RDEPUBSearchModels.swift in Sources */, + 28A5B812ECDE6E94D5346EF33AB4908D /* RDEPUBSelectionLoupeView.swift in Sources */, + 49493EF208D8B0FD2F8D7FE4B0605F59 /* RDEPUBSelectionOverlayView.swift in Sources */, + 41461DCE168703F25B2447BCA1B4AF2F /* RDEPUBSelectionState.swift in Sources */, + 18798C14A4AF8ACA5A0FDED17DDAF370 /* RDEPUBSemanticMarkerInjector.swift in Sources */, + 2D34BC78BEF8168B26C829D4A4CB0DEE /* RDEPUBStyleCompatibilityModels.swift in Sources */, + C2C21878B6B70BC91A9A54894A546250 /* RDEPUBStyleSheetBuilder.swift in Sources */, + D65E3E389E974CA5EC85C14F8AAC2197 /* RDEPUBStyleSheetComposer.swift in Sources */, + FD6C4803D3BD6697D01780015FAA1458 /* RDEPUBTextAnchor.swift in Sources */, + 7D588676C1FAEE3023C55FD8B37EED1B /* RDEPUBTextAnnotationOverlay.swift in Sources */, + 7BF35387E788616E1A159B0229909E94 /* RDEPUBTextBookBuilder.swift in Sources */, + ECFA20CFAACA1435FC6E6458F774FE56 /* RDEPUBTextBookCache.swift in Sources */, + 43C4F3118715BCDB6941E2FDD47536AE /* RDEPUBTextBookModels.swift in Sources */, + F4422D0EBA217138896E901214ABB8E2 /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */, + 63B386907330D3174C4354A68F5BB911 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */, + F8D8F88FF462C764E9B8B3D86DC90837 /* RDEPUBTextContentView.swift in Sources */, + 14B212F03E50D9F5D5C9CB9AC1AEB06F /* RDEPUBTextIndexTable.swift in Sources */, + 7ABAC9BAA6E1F4DC0792041AA718DB32 /* RDEPUBTextLayouter.swift in Sources */, + B08BB5940DA74FF036FFC44380C7848B /* RDEPUBTextLayoutFrame.swift in Sources */, + 44199BE5D667C171C4A97EF5D7908D3C /* RDEPUBTextPageDecorationView.swift in Sources */, + 76025C51C72D8110BD74286B4EEFD793 /* RDEPUBTextPageRenderView.swift in Sources */, + 81EDF2465ACC1ECD6EC9ED3FDBCFAA8B /* RDEPUBTextPaginationInterfaces.swift in Sources */, + 404A17D320743603ED7F97AEBB655C1A /* RDEPUBTextPaginationSupport.swift in Sources */, + 956D4311C0980B3A1C848EF22C8AEE7F /* RDEPUBTextPerformanceSampler.swift in Sources */, + 56D49829FADCD7075A95452CD3D193B2 /* RDEPUBTextPositionConverter.swift in Sources */, + 75442F59FAA9FD0FBB4F803BB9BB35CD /* RDEPUBTextRenderer.swift in Sources */, + DDF0419BFB80D9D1E36AEE87218FC1F6 /* RDEPUBTextRendererSupport.swift in Sources */, + F894C4D1E75C1E9D24AE2CCCC8FFF519 /* RDEPUBTextSearchEngine.swift in Sources */, + F038DE4614358844588617D12CB7C530 /* RDEPUBTextSelectionController.swift in Sources */, + 71EEBB949DF9F1894B271C4268B1A907 /* RDEPUBTypesettingPipeline.swift in Sources */, + 8F756349AF82AC16C8B2675AFC2C2578 /* RDEPUBViewportTypes.swift in Sources */, + D9C976EBF3720A5029D15AAD3EC15E59 /* RDEPUBWebContentView.swift in Sources */, + 51EA2808E014EFABCFD4AF05C3CC153F /* RDEPUBWebDecorationOverlayView.swift in Sources */, + 75A45AE93B151C5A396F302394426A4F /* RDEPUBWebView.swift in Sources */, + F61F52F9C7061BEBF0F04FE32C57963F /* RDEPUBWebView+Configuration.swift in Sources */, + E95694741292C43023C955DDE54CC86C /* RDEPUBWebView+FixedLayout.swift in Sources */, + B51DAE85A896F9709CD80CA9D33102D1 /* RDEPUBWebView+JavaScriptBridge.swift in Sources */, + 2B749B511B49409D51CB106A6592D32A /* RDEPUBWebView+Reflowable.swift in Sources */, + F7198C456F52C6ADFDC43B4B111EBB4B /* RDEPUBWebView+Search.swift in Sources */, + 23E6664A8F705A42969CC4456211DC37 /* RDEPUBWebViewDebug.swift in Sources */, + 058883809CB161BCD5DFB310221A5C9E /* RDPlainTextBookBuilder.swift in Sources */, + BD6F470C950D397B0ADB9C78E460C445 /* RDReaderContentCell.swift in Sources */, + 26918ED45C33C4A0887D6BB4529F7A9E /* RDReaderFlowLayout.swift in Sources */, + F8054331081E9008FFBB542F83B40AAA /* RDReaderGestureController.swift in Sources */, + 859E8344D0307DD5FDA218AC68F9743A /* RDReaderPageChildViewController.swift in Sources */, + FC372F89CBD06240B936AB0B8C4AC67D /* RDReaderPagingController.swift in Sources */, + 753E3BDEDB52F0D6B6ACEDC7EA577DA8 /* RDReaderPreloadController.swift in Sources */, + B634BD7CC872DEA5B558A56F0E737005 /* RDReaderSpreadResolver.swift in Sources */, + 1081E871F8472C4F6FA1190EFC80109D /* RDReaderTapRegionHandler.swift in Sources */, + 19310CB1E02EB814225E353079EF6DBD /* RDReaderView.swift in Sources */, + 0AAC638E0C699A21D53F86B82546D9B5 /* RDReaderView+CollectionView.swift in Sources */, + E72EC8AFFB5D6940C67E93D7D8BF8AA4 /* RDReaderView+ContentAccess.swift in Sources */, + 9B582B59618B5F7674FD433A97389BDF /* RDReaderView+PageCurl.swift in Sources */, + 9B9B71183A91A2257C7563C345E664CC /* RDReaderView+ToolView.swift in Sources */, + 76470054E16EAA6B2E465088A40E2287 /* RDReaderView-dummy.m in Sources */, + 455DDDB5ED14B07E3E178FCD46B6D6B8 /* RDReaderViewProtocols.swift in Sources */, + 552386640F85BA29D72638B3652F87EE /* RDURLReaderController.swift in Sources */, + B6DC5982F88F75B77C49C0DCBF412A14 /* String+RDEPUB.swift in Sources */, + EF8FD9D42EB2AC4A434E6FEA3E84B47D /* UIColor+RDEPUB.swift in Sources */, + DB241AE043EAA24F7BF4EED186988C66 /* UIColor+RDEPUBHex.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C577A8863C17DFA378B7D16B073FD552 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 9C4295C345FBDB725AC038F15F3C6185 /* Sources */ = { + DDDD9AB047F97F9AAA2C9EBFE6CF7D6B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B3BC25F2B6585813D66042BA127945B4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 27A49CAF4369774F8BAFA4829F4DC303 /* Archive.swift in Sources */, - 73D3BF552CEC4CFA6C76B920B60A5715 /* Archive+BackingConfiguration.swift in Sources */, - FECA4D68B4246B2EF9483B1C55180EBD /* Archive+Deprecated.swift in Sources */, - 3FB97DCC2725FEDD8D19633B8C363F4B /* Archive+Helpers.swift in Sources */, - 539FF993AAAE6D3C0F5D0038DB1E0673 /* Archive+MemoryFile.swift in Sources */, - 807EE34D2B6A76F67762766AE970F4EB /* Archive+Progress.swift in Sources */, - 9C37EBD71CE0C06085606E06B9602E07 /* Archive+Reading.swift in Sources */, - 4586631E0F11BDF2C667A8DAB6E33D7C /* Archive+ReadingDeprecated.swift in Sources */, - F80C879270B540C7F5FBA52ED93EC572 /* Archive+Writing.swift in Sources */, - 1FEEAE25C66FA8EA607876915ADC1830 /* Archive+WritingDeprecated.swift in Sources */, - 08F54A15BE50EA69DC223672EC21DC36 /* Archive+ZIP64.swift in Sources */, - C01F8DF6EB0351A95971D4ED5C00BA64 /* Data+Compression.swift in Sources */, - 872C5B6669490993860FB068B6EECA6C /* Data+CompressionDeprecated.swift in Sources */, - EF2FC7B0D522E2F9B299079073295EA7 /* Data+Serialization.swift in Sources */, - 1EA6B0C9801AAFE8C4A27717B91E7A7A /* Date+ZIP.swift in Sources */, - 1EB37E83C162AEBF22EFA71AECE18298 /* Entry.swift in Sources */, - 73B3EE6535C27C69AB029A1BD1CA7D1F /* Entry+Serialization.swift in Sources */, - FD224ECAFC982C3AB83000CC33A6FAE3 /* Entry+ZIP64.swift in Sources */, - E3EA77281840BF381947CA2DEFABB6E9 /* FileManager+ZIP.swift in Sources */, - 77B7D4B5365FF6066E205393AD2DBA3A /* FileManager+ZIPDeprecated.swift in Sources */, - 974B4B4C1037959C0374DBD8A0591EA5 /* URL+ZIP.swift in Sources */, - 682C728128E3E53A525D713B9123F6B2 /* ZIPFoundation-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BC13B8090DA45467A744E6CAF3DE34C8 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6CAB0255B42E803CEB8C200E106583F2 /* Constraint.swift in Sources */, - A2C4931C097B54AE8F7B1D61D99D512F /* ConstraintAttributes.swift in Sources */, - 2DC30426D54A9ACE171812C9B71CAC68 /* ConstraintConfig.swift in Sources */, - 01B1B8AF1056EF71658BE02D0850C34F /* ConstraintConstantTarget.swift in Sources */, - 25D59C50A9C2B60F797B1BFDB50A8AE0 /* ConstraintDescription.swift in Sources */, - 20EBD9A7748D5BB4D24ACCF08EAEBC17 /* ConstraintDirectionalInsets.swift in Sources */, - E89192AC5F15EB1326A03A886F9B5B73 /* ConstraintDirectionalInsetTarget.swift in Sources */, - AFDC339729E3167A94E6D3EB45E8D4AA /* ConstraintDSL.swift in Sources */, - 7C1789D42D48D122F21683DFE0117C05 /* ConstraintInsets.swift in Sources */, - F69B4C0B51AA5CEF254C09A066F90D32 /* ConstraintInsetTarget.swift in Sources */, - 1B0EA0C22B5B0469D49C4E19BB68D7DE /* ConstraintItem.swift in Sources */, - 48B88876F05C31838B1F49392467CD64 /* ConstraintLayoutGuide.swift in Sources */, - 2FE5650E3D74E35D130BD0BAC8C37E5B /* ConstraintLayoutGuide+Extensions.swift in Sources */, - C9C4CFBF5EF3AF45C5525D585DC3B486 /* ConstraintLayoutGuideDSL.swift in Sources */, - 32DC4D93DFCF2924AAF7EF4AD7447DB7 /* ConstraintLayoutSupport.swift in Sources */, - 0E5A4BBE6AEFFCC15F458099FAAA65E7 /* ConstraintLayoutSupportDSL.swift in Sources */, - 717AD0B57C4143CBBDB3FBA66DB48837 /* ConstraintMaker.swift in Sources */, - A617AECE5C0565EC362D58CECE76E01B /* ConstraintMakerEditable.swift in Sources */, - FAC4A4BC1E708303B032039339027FE9 /* ConstraintMakerExtendable.swift in Sources */, - 03BC4A9B24919C76E85CB50869D47858 /* ConstraintMakerFinalizable.swift in Sources */, - 00E8757FB94E0A8100BE11635D545831 /* ConstraintMakerPrioritizable.swift in Sources */, - 5CA39C9A333268929BA1DDE1254ADD9A /* ConstraintMakerRelatable.swift in Sources */, - B93AFFE0B94B3B0C9E3E53A5689643AE /* ConstraintMakerRelatable+Extensions.swift in Sources */, - F28F3DAE50B7D667187EF4CF4F6F79B9 /* ConstraintMultiplierTarget.swift in Sources */, - 55A24FCD955BEC5081C3AB397905B17C /* ConstraintOffsetTarget.swift in Sources */, - 6EE3C48B9A280E4DFD4D8E7A85B7DB02 /* ConstraintPriority.swift in Sources */, - 996F4301B6B7371F064F6C16A4242434 /* ConstraintPriorityTarget.swift in Sources */, - 68CBC6AA38AD3DB5067BEFF8E42886D0 /* ConstraintRelatableTarget.swift in Sources */, - 7B57128D05B37B1935F9371C272A2397 /* ConstraintRelation.swift in Sources */, - 06DF025C3F6A6A0BAE23D1AA2ACB9BB7 /* ConstraintView.swift in Sources */, - 11154670AA2AB4CC361FB7A3E5D47B2C /* ConstraintView+Extensions.swift in Sources */, - F5367C578F9CA3E525919A16F00120C9 /* ConstraintViewDSL.swift in Sources */, - C611AD73978B800E1A2BCE318CF9F467 /* Debugging.swift in Sources */, - D97F221A17BC3146FFA3C9D63EE5B232 /* LayoutConstraint.swift in Sources */, - 2F24F22928E575299BF137619DE2C018 /* LayoutConstraintItem.swift in Sources */, - E109CD1D23AF8F3224915E1B4821E305 /* SnapKit-dummy.m in Sources */, - 80AA377071E2AF381B547027B16FEDF3 /* Typealiases.swift in Sources */, - 08AF1E234EC84C5B105AD119DD68C7C7 /* UILayoutSupport+Extensions.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E6425B0EE108EC8A74541DB0B963F16C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2744CEF2A6D29AD6AD3B262FE5A17395 /* RDEPUBAnnotationModels.swift in Sources */, - E997293FB896E1C65526C5DEE74B4911 /* RDEPUBAssetRepository.swift in Sources */, - DF36E555D742A4D54A6E9FE7CA4818C9 /* RDEPUBAttachmentNormalizer.swift in Sources */, - 455B57E7D4F7025BCAA9686237ECE4D6 /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */, - 099FEDF9807830FA98B165701170023D /* RDEPUBAttachmentTooltipView.swift in Sources */, - B50E295EEF6CBA47808C7520A79BEC5F /* RDEPUBBackgroundCoverageStore.swift in Sources */, - 62D144BF0E62D22C5C0C8C4F2F80342F /* RDEPUBBackgroundPriorityPolicy.swift in Sources */, - A691BA8AC2E9668EC2D30BF7C300086D /* RDEPUBBackgroundTrace.swift in Sources */, - DD1CED401299E73280127E52CAB9C692 /* RDEPUBBookPageMap.swift in Sources */, - 375E640C8EA1A38D61C1566EE7691017 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */, - 7F6E040D6F0BD6E9CA8954018542D8EC /* RDEPUBCFI.swift in Sources */, - A2E1164041C2D80612C202F2766A9E9A /* RDEPUBCFICompatibility.swift in Sources */, - 08742D7AA435FD9CA20294F408FC44AC /* RDEPUBCFIDOMPathBuilder.swift in Sources */, - 7D1E7DDB0AD74FFCFED59D1D5900BDE9 /* RDEPUBCFIError.swift in Sources */, - 1B274610DB6E2AABA67FFC50BF1B5BDE /* RDEPUBCFIGenerator.swift in Sources */, - 5A4C8D7A61A831DFE6191CE9EE8FC0FF /* RDEPUBCFIMap.swift in Sources */, - 17254666C151CD8FED29CD9ED51556D8 /* RDEPUBCFIMarkerInjector.swift in Sources */, - BAAB9C658BA5CE90D5A2DCB9FBCE1918 /* RDEPUBCFIParser.swift in Sources */, - 50E6F4B858B375E9AA9C0307C166513F /* RDEPUBCFIPath.swift in Sources */, - C88B339BEFAEC890D15B89A0ABF3FD4E /* RDEPUBCFIRange.swift in Sources */, - F4FA2E5B5507F0658C4E886A00795A22 /* RDEPUBCFIRecoveryEngine.swift in Sources */, - FF005292EE0721AD1102DB5A34A97E9D /* RDEPUBCFIResolver.swift in Sources */, - 860F6C94A7F6AC88CDC0EBCF54FBEB74 /* RDEPUBCFISerializer.swift in Sources */, - 6DB057884F6AC5E5F0DB8664760A0C70 /* RDEPUBCFITextAssertion.swift in Sources */, - 17B3296FE8254C2D47DFE4FD19949503 /* RDEPUBCFIUtilities.swift in Sources */, - 194A976E63A09667F53C9FE293F5B8C6 /* RDEPUBChapterCacheKey.swift in Sources */, - 23AC535B4DC5D8475ED2B1273C501F95 /* RDEPUBChapterData.swift in Sources */, - F5F01F1B8993CC080F1F4EAFF1D19E40 /* RDEPUBChapterDataCache.swift in Sources */, - 90B16160AC5C4F3DFE8A93ADDCD9EB21 /* RDEPUBChapterLoader.swift in Sources */, - 5C6C440EBBA7062516303A3D7AF1001A /* RDEPUBChapterLocation.swift in Sources */, - FF70E3AAA12064457129DF56B253D8AE /* RDEPUBChapterOffsetMap.swift in Sources */, - B9F50F644BF6273ECA00198152792102 /* RDEPUBChapterPageCounter.swift in Sources */, - 3C976145343B9E986CF8D88E0D0EF51F /* RDEPUBChapterRuntimeStore.swift in Sources */, - 1B3D933930FC50612BEEADBB84204EA6 /* RDEPUBChapterSummaryDiskCache.swift in Sources */, - 31E3EDECC6470B4E92C97F58E80965E8 /* RDEPUBChapterTailNormalizer.swift in Sources */, - C00E44460F4E1E1B7100F7B97CC964AD /* RDEPUBChapterWarmupOrchestrator.swift in Sources */, - 1D236F47AD10304D7E61547C956BDD9B /* RDEPUBChapterWindowCoordinator.swift in Sources */, - 08D7E5A0D65FAEA0FFE71946A00FFF1E /* RDEPUBChapterWindowSnapshot.swift in Sources */, - 3970919FD97D377196BA9EC376C18679 /* RDEPUBCoreTextPageFrameFactory.swift in Sources */, - 822AF86AA4BF4CE9FAA4548CDB8E1BD4 /* RDEPUBCSSCompatibilityLayer.swift in Sources */, - 26EA72F11D12D8B2990F0EAC76459EA3 /* RDEPUBDarkImageAdjuster.swift in Sources */, - 32ACD94F1F25F38FB0D6073734C3436C /* RDEPUBDTCoreTextRenderer.swift in Sources */, - 9A878F793DEF9410001A3025DFA30BD8 /* RDEPUBFixedLayoutTemplate.swift in Sources */, - ED9EE6BE3F0C590D9E36A371406821BF /* RDEPUBFontFallbackResolver.swift in Sources */, - F0B19530682C9B4FA79A5D238CEA771E /* RDEPUBFontNormalizer.swift in Sources */, - BD9B40C9C8474E86F212487107F68A99 /* RDEPUBFragmentMarkerInjector.swift in Sources */, - 4AFFC3A7A62BC90E2BBD7529AE89CD36 /* RDEPUBHTMLNormalizer.swift in Sources */, - F2BBFDBFAA439DB5545BBBE960CE81D7 /* RDEPUBJavaScriptBridge.swift in Sources */, - CF1E18BDAEB4D8D2DED3E2DD38C23E95 /* RDEPUBJumpSession.swift in Sources */, - AAB706F10104FB95DD95EFD0530C4C6D /* RDEPUBMetadataParseCancellationController.swift in Sources */, - 108BB5B3F866558C1DA53A5A684A2C9D /* RDEPUBMetadataParseWorker.swift in Sources */, - 02CBB350FE8E8C48D48347519605408E /* RDEPUBModels.swift in Sources */, - 1982F649017D511A11E32DEAC7236CE4 /* RDEPUBNavigationStateMachine.swift in Sources */, - B499FCB6EB1F8BAE70CF0AAC369EA7E2 /* RDEPUBNavigatorLayoutContext.swift in Sources */, - 9DA15711057EECC0039842A782024C2C /* RDEPUBNavigatorState.swift in Sources */, - E1D10A5A280E6697386740CB34C2DD54 /* RDEPUBNoteDetector.swift in Sources */, - B53E867CFD518A62EA593F4F4B3A3FAA /* RDEPUBNoteModels.swift in Sources */, - 146CE7A97D2DAC1A9CB084C0E2ADD67A /* RDEPUBNotePopupCoordinator.swift in Sources */, - A8D3597AB26C2CBA7B5966BEAA1A252B /* RDEPUBNotePopupViewController.swift in Sources */, - 60290057447E24C8AE5CAE49B2B628F8 /* RDEPUBNoteResolver.swift in Sources */, - 207D9BDB05964DA9EA4418E83C1530FE /* RDEPUBPageBreakPolicy.swift in Sources */, - 4287D10B8D0884C63F409C49114962DC /* RDEPUBPageCountCache.swift in Sources */, - 92A408637C2F3E65E93800222550C88A /* RDEPUBPageInteractionController.swift in Sources */, - 3A3A1DC5BEAF852DDD4816158D34F2C8 /* RDEPUBPageLayoutSnapshot.swift in Sources */, - 1D4D78DA0BD6B1928CD54AC5DC82353B /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */, - FDFEE2DFE07412D7170E12942E66BF2A /* RDEPUBPageResolver.swift in Sources */, - BCD5820BDBB0AC37772A5D613123BAAF /* RDEPUBPaginationCacheCoordinator.swift in Sources */, - C4FF52162D560D713AE888D84B0B5CDF /* RDEPUBPaginationModels.swift in Sources */, - 7326101D5DD269D447F2D8842D268255 /* RDEPUBPaginationState.swift in Sources */, - 8630480459E3E037BF860528792A5C9C /* RDEPUBPaginator.swift in Sources */, - E86782FC51128CD6D297E633D9D0F26E /* RDEPUBParser.swift in Sources */, - 4B640F3B02D43DE8B78B644E0A95449A /* RDEPUBParser+Archive.swift in Sources */, - 463882F4C6BCD5B6329CEC1CAADADD0A /* RDEPUBParser+Package.swift in Sources */, - 475B19074137EFDA4106EBCCCF36FC6F /* RDEPUBParser+ReadingProfile.swift in Sources */, - 3DDC7432B3FE5E5A9B1A42256329F234 /* RDEPUBParser+Resources.swift in Sources */, - 1F89F883CC03311F2801F0B80B3A1CF3 /* RDEPUBParser+TOC.swift in Sources */, - F866E4E4499F3638ED1281A74171D2C8 /* RDEPUBPreferences.swift in Sources */, - 361AAB8943E201F1BF3256580CA4ACDE /* RDEPUBPresentationRuntime.swift in Sources */, - 2869C86624156F94B05ABC01C47DA085 /* RDEPUBPublication.swift in Sources */, - FC665839522860AD2F7C6B4BB3464BE2 /* RDEPUBReaderAnnotationCoordinator.swift in Sources */, - DC249D01F1F962D4AFF9C73F1034B746 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */, - 706B5BEE0D5AD080E9A835105AD37405 /* RDEPUBReaderBottomToolView.swift in Sources */, - BF609F036C668EFAC178F93D521C1285 /* RDEPUBReaderChapterListController.swift in Sources */, - C520AF807149FCF55A7F3C2C16165174 /* RDEPUBReaderChromeCoordinator.swift in Sources */, - 91F2004931EEB74080582412EC4A7E3E /* RDEPUBReaderConfiguration.swift in Sources */, - 7956B31CC6E4A4F49AD636605FE6E825 /* RDEPUBReaderContext.swift in Sources */, - 1D5093C35F8EF012FF48FCB91F312F0C /* RDEPUBReaderController.swift in Sources */, - 1D397699D725D0B63980271F92D9672F /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */, - 5130C9666BA0D9DACF1D4017B6E94D96 /* RDEPUBReaderController+ContentDelegates.swift in Sources */, - EA2A236F1F116705DE1A6C053969A220 /* RDEPUBReaderController+DataSource.swift in Sources */, - C635E005C211CAF7E9C78CA7C6143980 /* RDEPUBReaderController+ExternalLinks.swift in Sources */, - 034CDAD58DD721808C23222EE79E2FB6 /* RDEPUBReaderController+LocationResolution.swift in Sources */, - 062898C7FA5797A1327D7CDDEB000DAA /* RDEPUBReaderController+PublicAPI.swift in Sources */, - FF18F99842B1E8108D72650D124C49A0 /* RDEPUBReaderController+RenderSupport.swift in Sources */, - EB0713283E3F74926A79C2E7D9151603 /* RDEPUBReaderController+RuntimeBridge.swift in Sources */, - FA61965EA4E8C06A34051FD983B851E3 /* RDEPUBReaderController+TableOfContents.swift in Sources */, - D5824E0CE23134116C927AB027FED5AC /* RDEPUBReaderDelegate.swift in Sources */, - 418D49534E919DB3A6D1285C6550DF52 /* RDEPUBReaderDependencies.swift in Sources */, - F11AE2A2CF1BF53592BA52A221BE5C73 /* RDEPUBReaderEnvironment.swift in Sources */, - 162118890D7B65D3C4E7D257A1C10913 /* RDEPUBReaderHighlightsViewController.swift in Sources */, - B794BC94DCEAB911E625BB167073309D /* RDEPUBReaderLoadCoordinator.swift in Sources */, - E0B3A75AFA1355C7D966546FCCECEDAB /* RDEPUBReaderLocationCoordinator.swift in Sources */, - E6A0C3405B2EDFE7309A03DE216EBE6C /* RDEPUBReaderPaginationCoordinator.swift in Sources */, - 72AB99A1D05F6F5840DF1FD72BA3D54A /* RDEPUBReaderPersistence.swift in Sources */, - 38CE5AE7F08F51BCA49E57210C73DD8A /* RDEPUBReaderRuntime.swift in Sources */, - 2787D611BA02BB3CF87E83D0D576BD1E /* RDEPUBReaderSearchBarView.swift in Sources */, - D777DF8307388E85113173F9E88824CF /* RDEPUBReaderSearchCoordinator.swift in Sources */, - 1908212D1BAB262381AEE80002D1C7FC /* RDEPUBReaderServices.swift in Sources */, - 5D52B44C0898B6A4860C9EE59DA59ED4 /* RDEPUBReaderSettings.swift in Sources */, - 332B3EE547B4ECCFD2179D50888BDF6A /* RDEPUBReaderSettingsViewController.swift in Sources */, - 6143B5040E1B4A7149C35447B8DE2CD0 /* RDEPUBReaderState.swift in Sources */, - 9E2751BDEA29783950FDBC6DA7805483 /* RDEPUBReaderTableOfContentsItem.swift in Sources */, - D1BF333A09A6BDABFA1AF5A6D7F0364D /* RDEPUBReaderTheme.swift in Sources */, - E1B3D40F705149804531ABB02BABAB2D /* RDEPUBReaderToolView.swift in Sources */, - 61D7D7C7063E2E3F3EFBEA67343D5BC1 /* RDEPUBReaderTopToolView.swift in Sources */, - 8DE6BE54092C4BBC29DE857182C6893B /* RDEPUBReaderUIState.swift in Sources */, - 54E64A136D38FA0FD478BD00E3783754 /* RDEPUBReaderViewportMonitor.swift in Sources */, - 5BDB7BAE4BE48E109F955C3497E31026 /* RDEPUBReadingLocationModels.swift in Sources */, - 66CA591CC2C5DDEB9F10DF6201AC73E2 /* RDEPUBReadingSession.swift in Sources */, - 8FB2AD1EFD08F0B66A34FCFB9385F2E9 /* RDEPUBRenderDiagnosticsCollector.swift in Sources */, - 38DA59D7FEE7CE3915421A2AB5AC24A0 /* RDEPUBRenderRequest.swift in Sources */, - 5EBCD616AF7BB46CB2CC43B5736F94A1 /* RDEPUBResourceResolver.swift in Sources */, - 2F4CB2CA3F00A4AAA725F3C17D95D991 /* RDEPUBResourceURLSchemeHandler.swift in Sources */, - 8E79DA8D4AECEE0ECC24F9BA2117A9EB /* RDEPUBRuntimeChapter.swift in Sources */, - 093B7188B6717318AD5CD0CBBB6BB1B6 /* RDEPUBRuntimePageCount.swift in Sources */, - 6E703383272C4AC66B55E946FB0F9E57 /* RDEPUBSearchEngine.swift in Sources */, - 6D4D2109A2EAD67D4A9C158FD694F0ED /* RDEPUBSearchModels.swift in Sources */, - B4C2FB1FFAA1E94B6266CE735A8A130F /* RDEPUBSelectionLoupeView.swift in Sources */, - 34F6005B80DA064C0B099A3288AD95D5 /* RDEPUBSelectionOverlayView.swift in Sources */, - 8676468774C95A019F96AC16510826C2 /* RDEPUBSelectionState.swift in Sources */, - F545EE19BBCEFA1C7C58B15D9255859F /* RDEPUBSemanticMarkerInjector.swift in Sources */, - 2E2F479275A0D936C2A1E87C6765A47D /* RDEPUBStyleCompatibilityModels.swift in Sources */, - B35733574DA8B973FF3B77D92B8756B0 /* RDEPUBStyleSheetBuilder.swift in Sources */, - 53AA94D0D8A26ADEA82DF5FF5A984948 /* RDEPUBStyleSheetComposer.swift in Sources */, - A8DBD4A1E923298D4959A63CAA45746A /* RDEPUBTextAnchor.swift in Sources */, - 256B83F8FFBB3009C30A49DC549A6EC3 /* RDEPUBTextAnnotationOverlay.swift in Sources */, - 187488196599FAE35DE1E51925A0DF6A /* RDEPUBTextBookBuilder.swift in Sources */, - AD3AA582C65B0D42CC2AA6053738737C /* RDEPUBTextBookCache.swift in Sources */, - CF00DDCDE77C37AEF1EF253DB73AC6E3 /* RDEPUBTextBookModels.swift in Sources */, - D8216D4D553B85B657B45D539A8E4777 /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */, - E7D79D77E971BB2A846AAA0E545D1173 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */, - 67E3C97E134504F622FB9E68D5647BF2 /* RDEPUBTextContentView.swift in Sources */, - 884EB17E0A17502856F505A72A7B854A /* RDEPUBTextIndexTable.swift in Sources */, - 7EDD9B2DDD80A196D7798433666ACC95 /* RDEPUBTextLayouter.swift in Sources */, - 72C8E000CCE9BD5F41657C2E08D4B83B /* RDEPUBTextLayoutFrame.swift in Sources */, - FA1D78A8365F3A6C455670459C164745 /* RDEPUBTextPageDecorationView.swift in Sources */, - 13CCBD97D8AF4C50A6888B78325A192B /* RDEPUBTextPageRenderView.swift in Sources */, - DEF81BE500F074BE66B148987D5CD8A3 /* RDEPUBTextPaginationInterfaces.swift in Sources */, - F64C61879DA335A141871B74060C3659 /* RDEPUBTextPaginationSupport.swift in Sources */, - 71154B7C21DE7DF8DD200B3C7CEA4ED8 /* RDEPUBTextPerformanceSampler.swift in Sources */, - 7EF238EB1273A1441D89BAEF214A773B /* RDEPUBTextPositionConverter.swift in Sources */, - C4B90D10F9C4624C785803714C280807 /* RDEPUBTextRenderer.swift in Sources */, - 5B2118C44FFE62D2001AFA9857425C8F /* RDEPUBTextRendererSupport.swift in Sources */, - 614F13CF514CEAEAE30F07B22E58DDA5 /* RDEPUBTextSearchEngine.swift in Sources */, - FB7DB5861C466FAC927E77FA86E49E84 /* RDEPUBTextSelectionController.swift in Sources */, - D82009338CF0770A05644859B1D9B2EE /* RDEPUBTypesettingPipeline.swift in Sources */, - 2BBF15A41205114D992E57839B93A738 /* RDEPUBViewportTypes.swift in Sources */, - 76F23BA6E5F23E12B41BDB8E0DCEBAF7 /* RDEPUBWebContentView.swift in Sources */, - 42CC3E0AE7FD1C91407FA62F312257D0 /* RDEPUBWebDecorationOverlayView.swift in Sources */, - 4722E3071B57E0DF9CB521EC230360E3 /* RDEPUBWebView.swift in Sources */, - 57F03CA9FCCEFDCB22586C14B9D81E35 /* RDEPUBWebView+Configuration.swift in Sources */, - 8BDE0118B6C160D20F0216C903323B9F /* RDEPUBWebView+FixedLayout.swift in Sources */, - 15E9894983D8DC1E17BDAF2DAA245360 /* RDEPUBWebView+JavaScriptBridge.swift in Sources */, - 2CD768D642EF8DE4EBD5F9D5836FAFD2 /* RDEPUBWebView+Reflowable.swift in Sources */, - CD9B90F6EB39FFE1E34CCFE1304067BC /* RDEPUBWebView+Search.swift in Sources */, - 5C6705569165F0E5D806396692FD8953 /* RDEPUBWebViewDebug.swift in Sources */, - F838B75559262C543111C53B7587AB9D /* RDPlainTextBookBuilder.swift in Sources */, - 04CF747CD2BE5158C1B372F1CC7B5009 /* RDReaderContentCell.swift in Sources */, - C294B8A5C58978A6A6BF0ECFD4D8461F /* RDReaderFlowLayout.swift in Sources */, - 16C0E9481964DFB28C80DB847403036A /* RDReaderGestureController.swift in Sources */, - EFBB4EBD4D8E1397CBAB0C89EB735322 /* RDReaderPageChildViewController.swift in Sources */, - 651E573C03B07E8930AE7A3E61A5C5A3 /* RDReaderPagingController.swift in Sources */, - 171DCD68BA95D701F1FBA8F02A865BCE /* RDReaderPreloadController.swift in Sources */, - 587C85989F02ACED1B59047E57DD68A7 /* RDReaderSpreadResolver.swift in Sources */, - FD8E2F19C9BB614D91B36531A67C528C /* RDReaderTapRegionHandler.swift in Sources */, - 47DC0686898DE2FE0A1603ED796362B7 /* RDReaderView.swift in Sources */, - E6A9F131D1E9D30C00A05682E8BB348A /* RDReaderView+CollectionView.swift in Sources */, - 92CF67B6061DB4721656519090E6F3E5 /* RDReaderView+ContentAccess.swift in Sources */, - 500F1BD399C196CDACC137DCD7D53541 /* RDReaderView+PageCurl.swift in Sources */, - 7C5B4C8F6E0057ABF4BBC399146391D2 /* RDReaderView+ToolView.swift in Sources */, - 25FDC87B68FFF9003A4DDA8C20C9B8D2 /* RDReaderView-dummy.m in Sources */, - D4B8FE79789D1319E5EB3FDA4CF81F77 /* RDReaderViewProtocols.swift in Sources */, - 27CB714678010A30099E9B7A6A945451 /* RDURLReaderController.swift in Sources */, - 984027EA31EE692C1B917CE3B5B4D010 /* String+RDEPUB.swift in Sources */, - 0E7D32BFD4B09BEB911DB10CCD874648 /* UIColor+RDEPUB.swift in Sources */, - DBA443EC801ABC4A0A3B6B47F8FEC945 /* UIColor+RDEPUBHex.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; F5FD889341D3D1DCCA58EA12D78CF9E8 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3086,102 +3071,183 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FC10E832A2E014898EC28BFEF85842F5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FE95AEAB6389AEE07DF7CD0D22860983 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CF9676D97EB35D85E8982BA0B31922CC /* SSAlertAnimation.swift in Sources */, + 255C0D1CD0B98AF28752B5477E33E56C /* SSAlertAnimationController.swift in Sources */, + 090F57E692EEA5A8B0FF67920032C543 /* SSAlertCommonView.swift in Sources */, + 5E1420A9BFA59300AAA3F5ADC85B651A /* SSAlertDefaultAnmation.swift in Sources */, + 2E9A526389D5AED82CEECF4A40CAD66A /* SSAlertPresentAnimation.swift in Sources */, + DD909F2C768FC2BE36DA19EB9A2E9630 /* SSAlertSwift-dummy.m in Sources */, + 72E212C2DAC151323027585C8DD020B5 /* SSAlertView.swift in Sources */, + FC2603B7B764AACD1C0BFA66BFC597B2 /* SSAlertViewExtention.swift in Sources */, + B838F1859B7D755B45253F6D3F8A29DA /* UIViewFrameExtension.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 1030C22C57487EEEEE38DA568E70CBAB /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ZIPFoundation; - target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; - targetProxy = 59B49D2484B7E1D9D18A00AB4FF4BDB1 /* PBXContainerItemProxy */; - }; - 1A6C9AD23C6554E3B62FA27710F2529D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SnapKit; - target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; - targetProxy = 3A10B21C14EB4C43BF4ACC905763F74A /* PBXContainerItemProxy */; - }; - 274DD071CC54BE127BC9F94B8A04FD08 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DTFoundation; - target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; - targetProxy = A4A04C0B68BF1A6736FC99F5AA474861 /* PBXContainerItemProxy */; - }; - 43AFA46D98684D09B99287E674E5F02E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "ZIPFoundation-ZIPFoundation_Privacy"; - target = C7A8D82E407CD3FDC3BA55CEE519B252 /* ZIPFoundation-ZIPFoundation_Privacy */; - targetProxy = 5AFE7731761C5AFC7B80D0792B571B09 /* PBXContainerItemProxy */; - }; - 73FE24F20CEB796A3A23687C50F6D477 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DTCoreText; - target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; - targetProxy = EEC2953A3DDE3647455056298820283D /* PBXContainerItemProxy */; - }; - 78502F06764BDC57A62D0C0A9F6E47D7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "RDReaderView-RDReaderViewAssets"; - target = AE7F393FB7805DE2664AB4111873F907 /* RDReaderView-RDReaderViewAssets */; - targetProxy = 724D7793A1E88452A32F4F274C9D605C /* PBXContainerItemProxy */; - }; - 7D1896023BCA82E202B28B0753AC68C8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SnapKit; - target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; - targetProxy = A73CA8977765B10396E9958EA55DA3A2 /* PBXContainerItemProxy */; - }; - 9AD27F66DA7E0D563340B6F20847F1C1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DTCoreText; - target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; - targetProxy = B0DABEAAF6A0CA044722029D7BC1092E /* PBXContainerItemProxy */; - }; - AC5A977034ED0B78AB5AE6C0C01DF0F4 /* PBXTargetDependency */ = { + 05CE4FE9872739B4C815A7EF2478D2A8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SSAlertSwift; target = 8619D5ADECF2B26CFD9A9826D61D289A /* SSAlertSwift */; - targetProxy = 26971A0E8DB2A61E3862ECEEF1EEFCA1 /* PBXContainerItemProxy */; + targetProxy = D3E98DD4790BB372C0E5F91F8321F7DE /* PBXContainerItemProxy */; }; - B8836D5EED68BA0E84AB53546B21C8C4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DTFoundation; - target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; - targetProxy = 55CF96AB18DBA5FBFAD43C7B70064B3A /* PBXContainerItemProxy */; - }; - B9E2159A01F2995BDD2FACD0ECC521C0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "SnapKit-SnapKit_Privacy"; - target = 8A8DB685241263AFDF5E6B20FE67B93A /* SnapKit-SnapKit_Privacy */; - targetProxy = FE70E592BC251F07D191F6827E2CF57C /* PBXContainerItemProxy */; - }; - CA1C9D3EA1543C5004456530ED9E56AE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SSAlertSwift; - target = 8619D5ADECF2B26CFD9A9826D61D289A /* SSAlertSwift */; - targetProxy = 7261C923474564FED3877DEB0109CDE2 /* PBXContainerItemProxy */; - }; - D3B19E5313783C954E0A3FBE9BF2DCA3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RDReaderView; - target = AA2E57587AA8EECA63C4BE08EA3CB6D2 /* RDReaderView */; - targetProxy = 72E3B02DD9EF31111102B5A7D352AD70 /* PBXContainerItemProxy */; - }; - E543D69FB495D7206BFA590CEF0ED78B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ZIPFoundation; - target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; - targetProxy = 9A1EA07419B17A0670A5EB80AA680965 /* PBXContainerItemProxy */; - }; - F63064D99717857A12A17BB77C2AF85D /* PBXTargetDependency */ = { + 0ACC6A1B934384D248550F31995477C3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "DTCoreText-Resources"; target = 0C24CB0E87A728A11AA1124CB360D6A1 /* DTCoreText-Resources */; - targetProxy = BD30C0E521B2BEE7799F9A6F7344848A /* PBXContainerItemProxy */; + targetProxy = FED8F0022C504C26192D989340E637E7 /* PBXContainerItemProxy */; + }; + 0CA0593E3860B08AD087CD14D2EDA869 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "ZIPFoundation-ZIPFoundation_Privacy"; + target = C7A8D82E407CD3FDC3BA55CEE519B252 /* ZIPFoundation-ZIPFoundation_Privacy */; + targetProxy = 672E86FACF832D60405977714EFBB3A4 /* PBXContainerItemProxy */; + }; + 135CCBF62F02544774EBD62971FFA7BF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DTCoreText; + target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; + targetProxy = CE2FD9FBF5539D25AFA1E7A15E4C86E4 /* PBXContainerItemProxy */; + }; + 2B6415BE84BD798D27F9428CC5D3B68C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RDReaderView; + target = AA2E57587AA8EECA63C4BE08EA3CB6D2 /* RDReaderView */; + targetProxy = B8B574023C6A5A8EB40C86AC78E6E104 /* PBXContainerItemProxy */; + }; + 5423625E8450816B30A8475F01E8AAFF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ZIPFoundation; + target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; + targetProxy = 6642083DC898BC7F864CCCA3293ECEE0 /* PBXContainerItemProxy */; + }; + 5555F6F21ADFD0EBE205EF667713FB4E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SnapKit; + target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; + targetProxy = 04FFC401B252E7BCD021482951CB6BF1 /* PBXContainerItemProxy */; + }; + 70839219DD5C745549587E2185086ABB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "SnapKit-SnapKit_Privacy"; + target = 8A8DB685241263AFDF5E6B20FE67B93A /* SnapKit-SnapKit_Privacy */; + targetProxy = 3E6D8EDF5498446099B387DD9BB81D95 /* PBXContainerItemProxy */; + }; + A15C9621FEB9E916A0F697C7CD3B4540 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DTCoreText; + target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; + targetProxy = 6A1037ABDFA57F93BA3EEA2239EF8BD4 /* PBXContainerItemProxy */; + }; + B431640511BC4589F59EE4103D234874 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SSAlertSwift; + target = 8619D5ADECF2B26CFD9A9826D61D289A /* SSAlertSwift */; + targetProxy = 22BB1F120B8BE2CDBECB11ED2A9C4EFB /* PBXContainerItemProxy */; + }; + C50AEE3EDC2E805057072F84F96232C3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DTFoundation; + target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; + targetProxy = 544B5AD60561B80F8F55BB1203814841 /* PBXContainerItemProxy */; + }; + CC4284E96A8A43831A29D84D6DA599D3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "RDReaderView-RDReaderViewAssets"; + target = AE7F393FB7805DE2664AB4111873F907 /* RDReaderView-RDReaderViewAssets */; + targetProxy = 834DE8DAF657C6E3C86813C528C3AF5A /* PBXContainerItemProxy */; + }; + E07882A0DC0DED8B43811D8AE79B7757 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ZIPFoundation; + target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; + targetProxy = 29E236F5FC2EAE3DC8E25AE4B11C749B /* PBXContainerItemProxy */; + }; + F2207952E96E8659148FCB854A8B2E67 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SnapKit; + target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; + targetProxy = CBC99AD96DBA1A12A5A3D7EBD99EA30B /* PBXContainerItemProxy */; + }; + FF7A1364D5F46BB26DD0C620A2AE9992 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DTFoundation; + target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; + targetProxy = 417F80B067DF93DCD6E6ED0DCC7BDE0B /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 0BEE6AD7401BF34E911D373B3BAB8F69 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9F8BA45FA0D8E3CBAAE6E18272EB0644 /* 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; + }; + 0D652336EA69645906E67630E35F3EA9 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F699881ABDBEB419AEBA661AD5A21F35 /* ZIPFoundation.release.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + 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"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; 0FAC9B086846BEC73DD79CD3B21F22ED /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1AD502A1FA6EB1E38200B5283F979504 /* Pods-ReadViewDemo.release.xcconfig */; @@ -3222,142 +3288,9 @@ }; name = Release; }; - 1041A05D33C6B6E90E71B52C7F51BE6E /* Release */ = { + 1BDD9222409B330FFE1145B235F8D646 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 21716AE96E14363317AB8A817ED38F1D /* RDReaderView.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - 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"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 2323749632FA6CA6C58B888AC36857E4 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FE2991699D0391172DEADF2F4613E320 /* SSAlertSwift.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/SSAlertSwift/SSAlertSwift-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/SSAlertSwift/SSAlertSwift-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/SSAlertSwift/SSAlertSwift.modulemap"; - PRODUCT_MODULE_NAME = SSAlertSwift; - PRODUCT_NAME = SSAlertSwift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 2770A3EF05AD4BA592A8D8970B4AF008 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 53D2AB2348A9B9C582FDC2CDB2E434FC /* SnapKit.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SnapKit"; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = SnapKit; - INFOPLIST_FILE = "Target Support Files/SnapKit/ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = SnapKit_Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 2BC2A58FD59FDBAAC078A8F928104432 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 21716AE96E14363317AB8A817ED38F1D /* 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; - }; - 2D6AC662A2CA9434AFE6810AAC75BEE2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C960B7AA0B9B8CC473FACFEC64F9906D /* SnapKit.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SnapKit"; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = SnapKit; - INFOPLIST_FILE = "Target Support Files/SnapKit/ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = SnapKit_Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 37489243AB0678F8DB1D4BF77BC6D582 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6014DA7213E4687224F2BF921E30002C /* DTFoundation.debug.xcconfig */; + baseConfigurationReference = DF670EC438F05ACC1F1C7B725DBDAA18 /* DTFoundation.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3389,51 +3322,13 @@ SWIFT_INSTALL_OBJC_HEADER = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 42F3763AF02FA23A1353BEEDF6143730 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C960B7AA0B9B8CC473FACFEC64F9906D /* SnapKit.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/SnapKit/SnapKit-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-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/SnapKit/SnapKit.modulemap"; - PRODUCT_MODULE_NAME = SnapKit; - PRODUCT_NAME = SnapKit; - 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; - }; - 4456BC0938ABF4D223F2DC3B80FEAD47 /* Debug */ = { + 3A6E30E7BE8B292FCF7502BDC0B4356E /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4BEC60CB3EDA1C189D3B062E29217440 /* ZIPFoundation.debug.xcconfig */; buildSettings = { @@ -3514,9 +3409,67 @@ }; name = Release; }; - 4960E7132D05253390C775BA91388B35 /* Release */ = { + 44EFAF28815AE3B0D8BE985EF5C52165 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F699881ABDBEB419AEBA661AD5A21F35 /* ZIPFoundation.release.xcconfig */; + baseConfigurationReference = 55CA6158EBEFCD459EB481660A12EB86 /* 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; + }; + 603301BC85E2C8F97FC067AD66D9C366 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 53D2AB2348A9B9C582FDC2CDB2E434FC /* SnapKit.release.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-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/SnapKit/SnapKit.modulemap"; + PRODUCT_MODULE_NAME = SnapKit; + PRODUCT_NAME = SnapKit; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 64D7D63248B7B88072F9B834889C7A84 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4BEC60CB3EDA1C189D3B062E29217440 /* ZIPFoundation.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3548,11 +3501,10 @@ SWIFT_INSTALL_OBJC_HEADER = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; 73BBB08AD96AC1A6A095E15ADC5FCEE1 /* Debug */ = { isa = XCBuildConfiguration; @@ -3593,87 +3545,27 @@ }; name = Debug; }; - 7EC52C433659785200D671A22D1AB0BF /* Debug */ = { + 8B867F93D82C156FA151686A151B02EA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 18387159515E0523AFB4204B1AF940ED /* SSAlertSwift.debug.xcconfig */; + baseConfigurationReference = 78873FAFC0AD9E930D6050A7F976714B /* DTCoreText.debug.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DTCoreText"; ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/SSAlertSwift/SSAlertSwift-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/SSAlertSwift/SSAlertSwift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IBSC_MODULE = DTCoreText; + INFOPLIST_FILE = "Target Support Files/DTCoreText/ResourceBundle-Resources-DTCoreText-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/SSAlertSwift/SSAlertSwift.modulemap"; - PRODUCT_MODULE_NAME = SSAlertSwift; - PRODUCT_NAME = SSAlertSwift; + PRODUCT_NAME = Resources; 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 = ""; + WRAPPER_EXTENSION = bundle; }; name = Debug; }; - 80A7D005F49BD159F4FE6A41AB022724 /* Release */ = { + 9302285829D4222700BDCBC1674D80DB /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DF670EC438F05ACC1F1C7B725DBDAA18 /* DTFoundation.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - 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"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 896355E28491E9255F09AA6799DA8ED9 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0EA2FAD0839C3EB52650B2300B7E74AB /* RDReaderView.debug.xcconfig */; + baseConfigurationReference = 55CA6158EBEFCD459EB481660A12EB86 /* RDReaderView.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3705,11 +3597,69 @@ SWIFT_INSTALL_OBJC_HEADER = YES; SWIFT_VERSION = 5.10; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 95AC82A5A1F8F461F1931C7EE44591CF /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6014DA7213E4687224F2BF921E30002C /* 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; }; + 9FA854C1CBB94CA8A7D021112E99FAAD /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C2840BE6D91479CCBC2E908FBD9DA183 /* DTCoreText.release.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 = Release; + }; A0DC1C2C814704734F83EAB35BB20B21 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3817,24 +3767,6 @@ }; name = Release; }; - A5D3EC6F106FA3776B832A7E8015BA89 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 78873FAFC0AD9E930D6050A7F976714B /* 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; - }; A843E21C1B95C92BE904EB3F8115DD30 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 78873FAFC0AD9E930D6050A7F976714B /* DTCoreText.debug.xcconfig */; @@ -3874,56 +3806,17 @@ }; name = Debug; }; - B43FDB57FAE9573E70C164168FCF655A /* Debug */ = { + B3DEB407BA8C034F4F21D89FF4182F50 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4BEC60CB3EDA1C189D3B062E29217440 /* 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; - }; - D7A1A49E10BD3978439AC9CC9D6C4AA4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0EA2FAD0839C3EB52650B2300B7E74AB /* RDReaderView.debug.xcconfig */; + baseConfigurationReference = C960B7AA0B9B8CC473FACFEC64F9906D /* SnapKit.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/RDReaderView"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SnapKit"; ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = RDReaderView; - INFOPLIST_FILE = "Target Support Files/RDReaderView/ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; + IBSC_MODULE = SnapKit; + INFOPLIST_FILE = "Target Support Files/SnapKit/ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = RDReaderViewAssets; + PRODUCT_NAME = SnapKit_Privacy; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -3931,9 +3824,27 @@ }; name = Debug; }; - E7FB97206E736B87661709EAD8EE604D /* Release */ = { + B512D1AE8EFFB2D4FC7CA54D4ECE4DCB /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 53D2AB2348A9B9C582FDC2CDB2E434FC /* SnapKit.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SnapKit"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + IBSC_MODULE = SnapKit; + INFOPLIST_FILE = "Target Support Files/SnapKit/ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + PRODUCT_NAME = SnapKit_Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + BF63D3DB86F9631AE61E1C6251395788 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C960B7AA0B9B8CC473FACFEC64F9906D /* SnapKit.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3965,31 +3876,89 @@ SWIFT_INSTALL_OBJC_HEADER = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + D085D866F9D833BB5CA078D4AF7DD793 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FE2991699D0391172DEADF2F4613E320 /* SSAlertSwift.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/SSAlertSwift/SSAlertSwift-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/SSAlertSwift/SSAlertSwift-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/SSAlertSwift/SSAlertSwift.modulemap"; + PRODUCT_MODULE_NAME = SSAlertSwift; + PRODUCT_NAME = SSAlertSwift; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - F980EC84B5A97159DC55CC71FB375474 /* Release */ = { + D095725E14566EE767978A7BC08F407F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C2840BE6D91479CCBC2E908FBD9DA183 /* DTCoreText.release.xcconfig */; + baseConfigurationReference = 18387159515E0523AFB4204B1AF940ED /* SSAlertSwift.debug.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DTCoreText"; + "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 = DTCoreText; - INFOPLIST_FILE = "Target Support Files/DTCoreText/ResourceBundle-Resources-DTCoreText-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SSAlertSwift/SSAlertSwift-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/SSAlertSwift/SSAlertSwift-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = Resources; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/SSAlertSwift/SSAlertSwift.modulemap"; + PRODUCT_MODULE_NAME = SSAlertSwift; + PRODUCT_NAME = SSAlertSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - FB55CBDCF90D9EA687B32747A2C5BFEA /* Release */ = { + E89F4F77CC27B0B9E5F866BA8F1ABFA6 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = F699881ABDBEB419AEBA661AD5A21F35 /* ZIPFoundation.release.xcconfig */; buildSettings = { @@ -4007,6 +3976,45 @@ }; name = Release; }; + F9A9014E4CEF388283EBA8FE47E86A4E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9F8BA45FA0D8E3CBAAE6E18272EB0644 /* 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; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -4019,29 +4027,29 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 188A603D94CFDFC4ECFFB0A731A69DB3 /* Build configuration list for PBXNativeTarget "SnapKit" */ = { + 43899D66EDA58F53D3766F46D93C4EC3 /* Build configuration list for PBXNativeTarget "DTFoundation" */ = { isa = XCConfigurationList; buildConfigurations = ( - 42F3763AF02FA23A1353BEEDF6143730 /* Debug */, - E7FB97206E736B87661709EAD8EE604D /* Release */, + 95AC82A5A1F8F461F1931C7EE44591CF /* Debug */, + 1BDD9222409B330FFE1145B235F8D646 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 1D0D2A022E25C95190510FD3F7ECB9B6 /* Build configuration list for PBXNativeTarget "DTFoundation" */ = { + 442D0A561D1A27F605362B5185B9866A /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */ = { isa = XCConfigurationList; buildConfigurations = ( - 37489243AB0678F8DB1D4BF77BC6D582 /* Debug */, - 80A7D005F49BD159F4FE6A41AB022724 /* Release */, + 3A6E30E7BE8B292FCF7502BDC0B4356E /* Debug */, + E89F4F77CC27B0B9E5F866BA8F1ABFA6 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 42DB324304DB4062633BD5C0B743F536 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */ = { + 443B884E65FAE484ACCBE366E916F115 /* Build configuration list for PBXNativeTarget "SnapKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - A5D3EC6F106FA3776B832A7E8015BA89 /* Debug */, - F980EC84B5A97159DC55CC71FB375474 /* Release */, + BF63D3DB86F9631AE61E1C6251395788 /* Debug */, + 603301BC85E2C8F97FC067AD66D9C366 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -4055,38 +4063,29 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 48F9AC50432927A34356729C1F4F40CF /* Build configuration list for PBXNativeTarget "SSAlertSwift" */ = { + 657380B0395B73E23E564C39924CCB23 /* Build configuration list for PBXNativeTarget "RDReaderView" */ = { isa = XCConfigurationList; buildConfigurations = ( - 7EC52C433659785200D671A22D1AB0BF /* Debug */, - 2323749632FA6CA6C58B888AC36857E4 /* Release */, + F9A9014E4CEF388283EBA8FE47E86A4E /* Debug */, + 9302285829D4222700BDCBC1674D80DB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 75FB14909AEE2EADAF6FE7C23AFBFF36 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */ = { + 7031824EF6D3A2ABDDDAB4A47F8B7092 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4456BC0938ABF4D223F2DC3B80FEAD47 /* Debug */, - FB55CBDCF90D9EA687B32747A2C5BFEA /* Release */, + 0BEE6AD7401BF34E911D373B3BAB8F69 /* Debug */, + 44EFAF28815AE3B0D8BE985EF5C52165 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8540EC9800531BDA0C03FB4845F659B1 /* Build configuration list for PBXNativeTarget "RDReaderView" */ = { + 78AC23F3D0C09D48F14375E47BC46FA9 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */ = { isa = XCConfigurationList; buildConfigurations = ( - 896355E28491E9255F09AA6799DA8ED9 /* Debug */, - 1041A05D33C6B6E90E71B52C7F51BE6E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - A70F5C0077A52024EC5922BD4B5EACE2 /* Build configuration list for PBXNativeTarget "ZIPFoundation" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B43FDB57FAE9573E70C164168FCF655A /* Debug */, - 4960E7132D05253390C775BA91388B35 /* Release */, + 8B867F93D82C156FA151686A151B02EA /* Debug */, + 9FA854C1CBB94CA8A7D021112E99FAAD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -4100,20 +4099,29 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DB4C9521DD01DA7BACFF7BF85DE74E69 /* Build configuration list for PBXNativeTarget "SnapKit-SnapKit_Privacy" */ = { + DA2CC49129AD3F4620303440F05AC2BE /* Build configuration list for PBXNativeTarget "ZIPFoundation" */ = { isa = XCConfigurationList; buildConfigurations = ( - 2D6AC662A2CA9434AFE6810AAC75BEE2 /* Debug */, - 2770A3EF05AD4BA592A8D8970B4AF008 /* Release */, + 64D7D63248B7B88072F9B834889C7A84 /* Debug */, + 0D652336EA69645906E67630E35F3EA9 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - FFB0B0C7770CDF7D1B0D2C8AB9A23EBC /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */ = { + E5E7FE632631B0276CC3F3B2CAABF993 /* Build configuration list for PBXNativeTarget "SSAlertSwift" */ = { isa = XCConfigurationList; buildConfigurations = ( - D7A1A49E10BD3978439AC9CC9D6C4AA4 /* Debug */, - 2BC2A58FD59FDBAAC078A8F928104432 /* Release */, + D095725E14566EE767978A7BC08F407F /* Debug */, + D085D866F9D833BB5CA078D4AF7DD793 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FA0D8FD2632665E77D3755C64F4EFC74 /* Build configuration list for PBXNativeTarget "SnapKit-SnapKit_Privacy" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3DEB407BA8C034F4F21D89FF4182F50 /* Debug */, + B512D1AE8EFFB2D4FC7CA54D4ECE4DCB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Sources/RDReaderView/EPUBCore/Models/RDEPUBPaginationModels.swift b/Sources/RDReaderView/EPUBCore/Models/RDEPUBPaginationModels.swift index 9b0f656..8caed35 100644 --- a/Sources/RDReaderView/EPUBCore/Models/RDEPUBPaginationModels.swift +++ b/Sources/RDReaderView/EPUBCore/Models/RDEPUBPaginationModels.swift @@ -18,6 +18,8 @@ public enum RDEPUBTextAttachmentKind: String, Codable, Equatable { case image case generic + + case footnote } public struct RDEPUBTextPageMetadata: Codable, Equatable { diff --git a/Sources/RDReaderView/EPUBCore/RDEPUBJavaScriptBridge.swift b/Sources/RDReaderView/EPUBCore/RDEPUBJavaScriptBridge.swift index 3462eab..00aee13 100644 --- a/Sources/RDReaderView/EPUBCore/RDEPUBJavaScriptBridge.swift +++ b/Sources/RDReaderView/EPUBCore/RDEPUBJavaScriptBridge.swift @@ -14,6 +14,10 @@ enum RDEPUBJavaScriptBridgeMessage: String, CaseIterable { case javaScriptError = "ssReaderJSError" case fixedLayoutReady = "ssReaderFixedLayoutReady" + + case imageDidTap = "ssReaderImageDidTap" + + case footnoteDidTap = "ssReaderFootnoteDidTap" } enum RDEPUBJavaScriptBridge { @@ -36,7 +40,9 @@ enum RDEPUBJavaScriptBridge { "INTERNAL_LINK_MESSAGE": RDEPUBJavaScriptBridgeMessage.internalLink.rawValue, "EXTERNAL_LINK_MESSAGE": RDEPUBJavaScriptBridgeMessage.externalLink.rawValue, "JAVASCRIPT_ERROR_MESSAGE": RDEPUBJavaScriptBridgeMessage.javaScriptError.rawValue, - "FIXED_LAYOUT_READY_MESSAGE": RDEPUBJavaScriptBridgeMessage.fixedLayoutReady.rawValue + "FIXED_LAYOUT_READY_MESSAGE": RDEPUBJavaScriptBridgeMessage.fixedLayoutReady.rawValue, + "IMAGE_DID_TAP_MESSAGE": RDEPUBJavaScriptBridgeMessage.imageDidTap.rawValue, + "FOOTNOTE_DID_TAP_MESSAGE": RDEPUBJavaScriptBridgeMessage.footnoteDidTap.rawValue ] ) ].joined(separator: "\n\n") diff --git a/Sources/RDReaderView/EPUBCore/RDEPUBWebView+JavaScriptBridge.swift b/Sources/RDReaderView/EPUBCore/RDEPUBWebView+JavaScriptBridge.swift index 07df618..428f5a3 100644 --- a/Sources/RDReaderView/EPUBCore/RDEPUBWebView+JavaScriptBridge.swift +++ b/Sources/RDReaderView/EPUBCore/RDEPUBWebView+JavaScriptBridge.swift @@ -107,8 +107,43 @@ extension RDEPUBWebView: WKScriptMessageHandler { self.rendered() } } + case RDEPUBJavaScriptBridgeMessage.imageDidTap.rawValue: + guard let body = message.body as? [String: Any], + let src = body["src"] as? String else { return } + let sourceRect = sourceRect(from: body["rect"]) + delegate?.epubWebView(self, didTapImageWithSource: src, sourceRect: sourceRect) + case RDEPUBJavaScriptBridgeMessage.footnoteDidTap.rawValue: + guard let body = message.body as? [String: Any], + let altText = body["alt"] as? String else { return } + let sourceRect = sourceRect(from: body["rect"]) + delegate?.epubWebView(self, didTapFootnoteWithAltText: altText, sourceRect: sourceRect) default: break } } + + private func sourceRect(from value: Any?) -> CGRect? { + guard let rectDict = value as? [String: Any] else { return nil } + return CGRect( + x: cgFloatValue(rectDict["x"]), + y: cgFloatValue(rectDict["y"]), + width: cgFloatValue(rectDict["width"]), + height: cgFloatValue(rectDict["height"]) + ) + } + + private func cgFloatValue(_ value: Any?) -> CGFloat { + switch value { + case let number as NSNumber: + return CGFloat(truncating: number) + case let double as Double: + return CGFloat(double) + case let int as Int: + return CGFloat(int) + case let string as String: + return CGFloat(Double(string) ?? 0) + default: + return 0 + } + } } diff --git a/Sources/RDReaderView/EPUBCore/RDEPUBWebView.swift b/Sources/RDReaderView/EPUBCore/RDEPUBWebView.swift index 1f0f4ab..e17349a 100644 --- a/Sources/RDReaderView/EPUBCore/RDEPUBWebView.swift +++ b/Sources/RDReaderView/EPUBCore/RDEPUBWebView.swift @@ -17,10 +17,16 @@ public protocol RDEPUBWebViewDelegate: AnyObject { func epubWebView(_ webView: RDEPUBWebView, didLogJavaScriptError message: String) func epubWebViewDidFinishRendering(_ webView: RDEPUBWebView) + + func epubWebView(_ webView: RDEPUBWebView, didTapImageWithSource src: String, sourceRect: CGRect?) + + func epubWebView(_ webView: RDEPUBWebView, didTapFootnoteWithAltText altText: String, sourceRect: CGRect?) } public extension RDEPUBWebViewDelegate { func epubWebView(_ webView: RDEPUBWebView, didRequestSelectionAction action: RDEPUBAnnotationMenuAction) {} + func epubWebView(_ webView: RDEPUBWebView, didTapImageWithSource src: String, sourceRect: CGRect?) {} + func epubWebView(_ webView: RDEPUBWebView, didTapFootnoteWithAltText altText: String, sourceRect: CGRect?) {} } final class RDEPUBAnnotationWebView: WKWebView { diff --git a/Sources/RDReaderView/EPUBCore/Resources/epub-bridge.js b/Sources/RDReaderView/EPUBCore/Resources/epub-bridge.js index 612785b..3592717 100644 --- a/Sources/RDReaderView/EPUBCore/Resources/epub-bridge.js +++ b/Sources/RDReaderView/EPUBCore/Resources/epub-bridge.js @@ -386,6 +386,43 @@ }, 120); } function handleDocumentClick(event) { + // Check for image tap. Footnote images always show the note popup; regular + // images inside links are left to the link handler below. + var img = event.target; + while (img && img.tagName !== 'IMG') { + img = img.parentElement; + } + if (img && img.tagName === 'IMG') { + var src = img.getAttribute('src'); + var classes = (img.getAttribute('class') || '').toLowerCase(); + var alt = (img.getAttribute('alt') || '').trim(); + var isFootnote = classes.indexOf('qqreader-footnote') >= 0 || alt.length > 0; + if (isFootnote) { + event.preventDefault(); + event.stopPropagation(); + var footnoteRect = img.getBoundingClientRect(); + window.webkit.messageHandlers.{{FOOTNOTE_DID_TAP_MESSAGE}}.postMessage({ + alt: alt, + rect: { x: footnoteRect.x, y: footnoteRect.y, width: footnoteRect.width, height: footnoteRect.height } + }); + return; + } + + // If a regular image is inside a link, let the link handler deal with it. + var linkParent = img.closest ? img.closest('a[href]') : null; + if (!linkParent) { + if (src) { + event.preventDefault(); + event.stopPropagation(); + var rect = img.getBoundingClientRect(); + window.webkit.messageHandlers.{{IMAGE_DID_TAP_MESSAGE}}.postMessage({ + src: src, + rect: { x: rect.x, y: rect.y, width: rect.width, height: rect.height } + }); + return; + } + } + } var anchor = event.target.closest ? event.target.closest('a[href]') : null; if (!anchor) { return; } var href = anchor.getAttribute('href'); diff --git a/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBChapterTailNormalizer.swift b/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBChapterTailNormalizer.swift index 7a792a1..18d7e16 100644 --- a/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBChapterTailNormalizer.swift +++ b/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBChapterTailNormalizer.swift @@ -91,10 +91,42 @@ struct RDEPUBChapterTailNormalizer { return false } + guard !frameHasAvoidPageBreakInside(trailingFrame, in: content) else { + return false + } + let previousVisibleCount = visibleCharacterCount(in: content, range: previousFrame.contentRange) return previousVisibleCount >= max(visibleCount * 8, 12) } + private func frameHasAvoidPageBreakInside( + _ frame: RDEPUBTextLayoutFrame, + in content: NSAttributedString + ) -> Bool { + if frame.semanticHints.contains(.avoidPageBreakInside) { + return true + } + + guard content.length > 0, + let safeRange = clampedRange(frame.contentRange, in: content), + safeRange.length > 0 else { + return false + } + + var found = false + content.enumerateAttribute(.rdPageSemanticHints, in: safeRange) { value, _, stop in + guard let rawValue = value as? String else { return } + let hints = rawValue + .split(separator: ",") + .compactMap { RDEPUBTextSemanticHint(rawValue: String($0)) } + if hints.contains(.avoidPageBreakInside) { + found = true + stop.pointee = true + } + } + return found + } + private func mergeTrailingFrame( _ previousFrame: RDEPUBTextLayoutFrame, with trailingFrame: RDEPUBTextLayoutFrame @@ -147,6 +179,13 @@ struct RDEPUBChapterTailNormalizer { return count } + private func clampedRange(_ range: NSRange, in content: NSAttributedString) -> NSRange? { + guard range.location >= 0, range.length >= 0, range.location < content.length else { + return nil + } + return NSRange(location: range.location, length: min(range.length, content.length - range.location)) + } + private func uniqueValues(from values: [T]) -> [T] { values.reduce(into: [T]()) { result, value in if !result.contains(value) { diff --git a/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBookCache.swift b/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBookCache.swift index 1f007cd..6815187 100644 --- a/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBookCache.swift +++ b/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBookCache.swift @@ -104,7 +104,7 @@ final class ChapterPaginationArchive: NSObject, NSSecureCoding { public final class RDEPUBTextBookCache { - public var schemaVersion: Int = 6 + public var schemaVersion: Int = 13 private let queue = DispatchQueue(label: "com.rdreader.textbookcache", qos: .utility) diff --git a/Sources/RDReaderView/EPUBTextRendering/Typesetter/Compatibility/RDEPUBCSSCompatibilityLayer.swift b/Sources/RDReaderView/EPUBTextRendering/Typesetter/Compatibility/RDEPUBCSSCompatibilityLayer.swift index e1f3e72..66f0799 100644 --- a/Sources/RDReaderView/EPUBTextRendering/Typesetter/Compatibility/RDEPUBCSSCompatibilityLayer.swift +++ b/Sources/RDReaderView/EPUBTextRendering/Typesetter/Compatibility/RDEPUBCSSCompatibilityLayer.swift @@ -30,6 +30,10 @@ struct RDEPUBCSSCompatibilityLayer { normalized += result.normalizedRules } + let alignmentIndentResult = addTextIndentResetForAlignedBlocks(in: rewritten) + rewritten = alignmentIndentResult.css + normalized += alignmentIndentResult.normalizedRules + if !policy.allowPublisherMargins { let result = clampLengthProperty( in: rewritten, @@ -133,4 +137,57 @@ struct RDEPUBCSSCompatibilityLayer { } return (rewritten, normalized) } + + private func addTextIndentResetForAlignedBlocks( + in css: String + ) -> (css: String, normalizedRules: [String]) { + guard let regex = try? NSRegularExpression( + pattern: #"(?is)([^{}]+)\{([^{}]*)\}"# + ) else { + return (css, []) + } + + let nsCSS = css as NSString + var rewritten = css + var normalized: [String] = [] + + for match in regex.matches(in: css, range: NSRange(location: 0, length: nsCSS.length)).reversed() { + guard match.numberOfRanges > 2 else { continue } + let selector = nsCSS.substring(with: match.range(at: 1)) + let declarations = nsCSS.substring(with: match.range(at: 2)) + + guard declaresRightOrCenterAlignment(declarations), + !declaresProperty("text-indent", in: declarations) else { + continue + } + + let replacement = "\(selector){\(declarations)\n text-indent: 0 !important;\n}" + if let range = Range(match.range, in: rewritten) { + rewritten.replaceSubrange(range, with: replacement) + normalized.append("aligned-text-indent-reset") + } + } + + return (rewritten, normalized) + } + + private func declaresRightOrCenterAlignment(_ declarations: String) -> Bool { + guard let regex = try? NSRegularExpression( + pattern: #"(?i)\btext-align\s*:\s*(right|center)\b"# + ) else { + return false + } + let range = NSRange(location: 0, length: (declarations as NSString).length) + return regex.firstMatch(in: declarations, range: range) != nil + } + + private func declaresProperty(_ property: String, in declarations: String) -> Bool { + guard let regex = try? NSRegularExpression( + pattern: #"(?i)\b"# + NSRegularExpression.escapedPattern(for: property) + #"\s*:"# + ) else { + return false + } + let range = NSRange(location: 0, length: (declarations as NSString).length) + return regex.firstMatch(in: declarations, range: range) != nil + } } diff --git a/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBAttachmentNormalizer.swift b/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBAttachmentNormalizer.swift index d25948d..585f332 100644 --- a/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBAttachmentNormalizer.swift +++ b/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBAttachmentNormalizer.swift @@ -142,10 +142,8 @@ struct RDEPUBAttachmentNormalizer { private static func isFootnoteAttachment(_ attachment: DTTextAttachment) -> Bool { let lowercasedClasses = ((attachment.attributes["class"] as? String) ?? "").lowercased() - - let lowercasedPath = attachment.contentURL?.lastPathComponent.lowercased() - ?? ((attachment.attributes["src"] as? String) ?? "").lowercased() - return lowercasedClasses.contains("qqreader-footnote") || lowercasedPath == "note.png" + let altText = attachment.attributes["alt"] as? String + return lowercasedClasses.contains("qqreader-footnote") || hasFootnoteAltText(altText) } private static func isCoverAttachment(_ attachment: DTTextAttachment) -> Bool { @@ -197,6 +195,10 @@ struct RDEPUBAttachmentNormalizer { } static func attachmentKind(for attributes: [NSAttributedString.Key: Any]) -> RDEPUBTextAttachmentKind? { + // Check for footnote attachments first — they should show tooltip, not image viewer + if isFootnoteAttachmentInAttributes(attributes) { + return .footnote + } if let attachment = attributes[.attachment] as? NSTextAttachment { @@ -216,4 +218,22 @@ struct RDEPUBAttachmentNormalizer { return nil } + + private static func isFootnoteAttachmentInAttributes(_ attributes: [NSAttributedString.Key: Any]) -> Bool { +#if canImport(DTCoreText) + if let textAttachment = attributes[.attachment] as? DTTextAttachment { + return isFootnoteAttachment(textAttachment) + } +#endif + guard let fileAttachment = attributes[.attachment] as? NSTextAttachment else { + return false + } + let label = fileAttachment.accessibilityLabel + let lowercasedLabel = (label ?? "").lowercased() + return lowercasedLabel.contains("qqreader-footnote") || hasFootnoteAltText(label) + } + + private static func hasFootnoteAltText(_ text: String?) -> Bool { + text?.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty == false + } } diff --git a/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBTextRendererSupport.swift b/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBTextRendererSupport.swift index 7023b4a..04cd13f 100644 --- a/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBTextRendererSupport.swift +++ b/Sources/RDReaderView/EPUBTextRendering/Typesetter/RDEPUBTextRendererSupport.swift @@ -29,16 +29,17 @@ enum RDEPUBTextRendererSupport { baseURL: baseURL, resourceResolver: resourceResolver ) + let compatibility = RDEPUBCSSCompatibilityLayer().sanitize(stylesheetHrefReplacements.inlinedCSS) let layers = RDEPUBStyleSheetComposer.makeStyleSheetLayers( style: style, - epubCSS: stylesheetHrefReplacements.inlinedCSS, + epubCSS: compatibility.css, contentLanguageCode: contentLanguageCode, sourceHTML: rawHTML ) RDEPUBFontNormalizer.registerEmbeddedFonts( - in: stylesheetHrefReplacements.inlinedCSS + "\n" + RDEPUBFontNormalizer.inlineStyleCSS(in: normalizedHTML), + in: compatibility.css + "\n" + RDEPUBFontNormalizer.inlineStyleCSS(in: normalizedHTML), chapterHref: href, resourceResolver: resourceResolver ) @@ -84,7 +85,8 @@ enum RDEPUBTextRendererSupport { html: markedHTML, baseURL: baseURL, stylesheet: RDEPUBTextStyleSheetPackage(layers: layers), - resourceDiagnostics: resourceDiagnostics + resourceDiagnostics: resourceDiagnostics, + styleCompatibilityReport: compatibility.report ) return RDEPUBTextChapterRenderRequest( context: context, @@ -112,6 +114,7 @@ enum RDEPUBTextRendererSupport { let paragraph = (attributes[.paragraphStyle] as? NSParagraphStyle)?.mutableCopy() as? NSMutableParagraphStyle ?? paragraphStyle(lineSpacing: style.lineSpacing) paragraph.lineSpacing = style.lineSpacing paragraph.paragraphSpacing = max(paragraph.paragraphSpacing, style.lineSpacing / 2) + normalizeAlignedParagraphIndent(paragraph) paragraph.hyphenationFactor = layoutConfig.hyphenation ? 1.0 : 0.0 @@ -172,4 +175,11 @@ enum RDEPUBTextRendererSupport { style.paragraphSpacing = max(6, lineSpacing / 2) return style } + + private static func normalizeAlignedParagraphIndent(_ paragraph: NSMutableParagraphStyle) { + guard paragraph.alignment == .right || paragraph.alignment == .center else { + return + } + paragraph.firstLineHeadIndent = 0 + } } diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBImageViewController.swift b/Sources/RDReaderView/EPUBUI/RDEPUBImageViewController.swift new file mode 100644 index 0000000..bb6ace2 --- /dev/null +++ b/Sources/RDReaderView/EPUBUI/RDEPUBImageViewController.swift @@ -0,0 +1,241 @@ +import UIKit + +final class RDEPUBImageViewController: UIViewController { + + struct Configuration { + let image: UIImage + let sourceRect: CGRect? + let altText: String? + let theme: RDEPUBReaderTheme + + init(image: UIImage, sourceRect: CGRect? = nil, altText: String? = nil, theme: RDEPUBReaderTheme) { + self.image = image + self.sourceRect = sourceRect + self.altText = altText + self.theme = theme + } + } + + // MARK: - Properties + + private let configuration: Configuration + private let scrollView = UIScrollView() + private let imageView = UIImageView() + private let closeButton = UIButton(type: .system) + private let backgroundView = UIView() + + private var isShowingChrome = true + + // MARK: - Init + + init(configuration: Configuration) { + self.configuration = configuration + super.init(nibName: nil, bundle: nil) + modalPresentationStyle = .fullScreen + modalTransitionStyle = .crossDissolve + } + + @available(*, unavailable) + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + // MARK: - Lifecycle + + override func viewDidLoad() { + super.viewDidLoad() + setupBackground() + setupScrollView() + setupImageView() + setupCloseButton() + } + + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + centerImage() + } + + override var prefersStatusBarHidden: Bool { true } + + // MARK: - Setup + + private func setupBackground() { + backgroundView.translatesAutoresizingMaskIntoConstraints = false + backgroundView.backgroundColor = configuration.theme.imageViewerBackgroundColor + view.addSubview(backgroundView) + NSLayoutConstraint.activate([ + backgroundView.topAnchor.constraint(equalTo: view.topAnchor), + backgroundView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + backgroundView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + backgroundView.trailingAnchor.constraint(equalTo: view.trailingAnchor) + ]) + + let tap = UITapGestureRecognizer(target: self, action: #selector(dismissViewer)) + backgroundView.addGestureRecognizer(tap) + } + + private func setupScrollView() { + scrollView.translatesAutoresizingMaskIntoConstraints = false + scrollView.delegate = self + scrollView.minimumZoomScale = 1.0 + scrollView.maximumZoomScale = 5.0 + scrollView.showsVerticalScrollIndicator = false + scrollView.showsHorizontalScrollIndicator = false + scrollView.alwaysBounceVertical = false + scrollView.alwaysBounceHorizontal = false + scrollView.decelerationRate = .fast + view.addSubview(scrollView) + NSLayoutConstraint.activate([ + scrollView.topAnchor.constraint(equalTo: view.topAnchor), + scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor) + ]) + + let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(dismissViewer)) + swipeDown.direction = .down + scrollView.addGestureRecognizer(swipeDown) + } + + private func setupImageView() { + imageView.image = configuration.image + imageView.contentMode = .scaleAspectFit + imageView.isUserInteractionEnabled = true + imageView.accessibilityLabel = configuration.altText + imageView.isAccessibilityElement = configuration.altText != nil + scrollView.addSubview(imageView) + + let doubleTap = UITapGestureRecognizer(target: self, action: #selector(handleDoubleTap(_:))) + doubleTap.numberOfTapsRequired = 2 + imageView.addGestureRecognizer(doubleTap) + + let singleTap = UITapGestureRecognizer(target: self, action: #selector(toggleChrome)) + singleTap.numberOfTapsRequired = 1 + singleTap.require(toFail: doubleTap) + imageView.addGestureRecognizer(singleTap) + } + + private func setupCloseButton() { + let config = UIImage.SymbolConfiguration(pointSize: 16, weight: .semibold) + closeButton.setImage(UIImage(systemName: "xmark", withConfiguration: config), for: .normal) + closeButton.tintColor = .white + closeButton.backgroundColor = UIColor(white: 0.3, alpha: 0.6) + closeButton.layer.cornerRadius = 16 + closeButton.clipsToBounds = true + closeButton.addTarget(self, action: #selector(dismissViewer), for: .touchUpInside) + closeButton.accessibilityLabel = NSLocalizedString("Close image viewer", comment: "Accessibility label for close button in image viewer") + + view.addSubview(closeButton) + closeButton.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + closeButton.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 12), + closeButton.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -16), + closeButton.widthAnchor.constraint(equalToConstant: 32), + closeButton.heightAnchor.constraint(equalToConstant: 32) + ]) + } + + // MARK: - Layout + + private func centerImage() { + guard let image = imageView.image else { return } + let boundsSize = scrollView.bounds.size + guard boundsSize.width > 0, boundsSize.height > 0 else { return } + + let imageSize = image.size + guard imageSize.width > 0, imageSize.height > 0 else { return } + + let widthRatio = boundsSize.width / imageSize.width + let heightRatio = boundsSize.height / imageSize.height + let fitScale = min(widthRatio, heightRatio) + + let fitWidth = imageSize.width * fitScale + let fitHeight = imageSize.height * fitScale + + imageView.frame = CGRect( + x: 0, + y: 0, + width: fitWidth, + height: fitHeight + ) + + scrollView.contentSize = imageView.frame.size + + let horizontalInset = max(0, (boundsSize.width - fitWidth) / 2) + let verticalInset = max(0, (boundsSize.height - fitHeight) / 2) + scrollView.contentInset = UIEdgeInsets( + top: verticalInset, + left: horizontalInset, + bottom: verticalInset, + right: horizontalInset + ) + } + + // MARK: - Actions + + @objc private func handleDoubleTap(_ gesture: UITapGestureRecognizer) { + if scrollView.zoomScale > scrollView.minimumZoomScale { + scrollView.setZoomScale(scrollView.minimumZoomScale, animated: true) + } else { + let point = gesture.location(in: imageView) + let zoomSize = CGSize(width: 100, height: 100) + let zoomRect = CGRect( + x: point.x - zoomSize.width / 2, + y: point.y - zoomSize.height / 2, + width: zoomSize.width, + height: zoomSize.height + ) + scrollView.zoom(to: zoomRect, animated: true) + } + } + + @objc private func toggleChrome() { + isShowingChrome.toggle() + UIView.animate(withDuration: 0.25) { + self.closeButton.alpha = self.isShowingChrome ? 1.0 : 0.0 + } + } + + @objc private func dismissViewer() { + dismiss(animated: true) + } +} + +// MARK: - UIScrollViewDelegate + +extension RDEPUBImageViewController: UIScrollViewDelegate { + + func viewForZooming(in scrollView: UIScrollView) -> UIView? { + imageView + } + + func scrollViewDidZoom(_ scrollView: UIScrollView) { + guard let image = imageView.image else { return } + let boundsSize = scrollView.bounds.size + let imageSize = image.size + guard imageSize.width > 0, imageSize.height > 0 else { return } + + let widthRatio = boundsSize.width / imageSize.width + let heightRatio = boundsSize.height / imageSize.height + let fitScale = min(widthRatio, heightRatio) + + let fitWidth = imageSize.width * fitScale * scrollView.zoomScale + let fitHeight = imageSize.height * fitScale * scrollView.zoomScale + + imageView.frame = CGRect( + x: 0, + y: 0, + width: fitWidth, + height: fitHeight + ) + + let horizontalInset = max(0, (boundsSize.width - fitWidth) / 2) + let verticalInset = max(0, (boundsSize.height - fitHeight) / 2) + scrollView.contentInset = UIEdgeInsets( + top: verticalInset, + left: horizontalInset, + bottom: verticalInset, + right: horizontalInset + ) + } +} \ No newline at end of file diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBImageViewerCoordinator.swift b/Sources/RDReaderView/EPUBUI/RDEPUBImageViewerCoordinator.swift new file mode 100644 index 0000000..4af9fdd --- /dev/null +++ b/Sources/RDReaderView/EPUBUI/RDEPUBImageViewerCoordinator.swift @@ -0,0 +1,60 @@ +import UIKit + +final class RDEPUBImageViewerCoordinator { + + private weak var presentingController: UIViewController? + private let theme: RDEPUBReaderTheme + + init(presentingController: UIViewController, theme: RDEPUBReaderTheme) { + self.presentingController = presentingController + self.theme = theme + } + + // MARK: - From Native Text Path (UIImage already resolved) + + func presentImage(_ image: UIImage, sourceRect: CGRect? = nil, altText: String? = nil) { + let config = RDEPUBImageViewController.Configuration( + image: image, + sourceRect: sourceRect, + altText: altText, + theme: theme + ) + let viewerVC = RDEPUBImageViewController(configuration: config) + presentingController?.present(viewerVC, animated: true) + } + + // MARK: - From WebView Path (need to resolve from src URL) + + func presentImageFromWebView( + src: String, + baseHref: String?, + resourceResolver: RDEPUBResourceResolver + ) { + guard let image = loadImage(src: src, baseHref: baseHref, resourceResolver: resourceResolver) else { + return + } + presentImage(image) + } + + // MARK: - Private + + private func loadImage( + src: String, + baseHref: String?, + resourceResolver: RDEPUBResourceResolver + ) -> UIImage? { + let pathPart = src.components(separatedBy: "#").first ?? src + guard !pathPart.isEmpty else { return nil } + + let fileURL: URL? + if let baseHref { + fileURL = resourceResolver.fileURL(forReference: pathPart, relativeToHref: baseHref) + } else { + let normalized = resourceResolver.normalizedHref(pathPart) + fileURL = normalized.flatMap { resourceResolver.fileURL(forRelativePath: $0) } + } + + guard let fileURL, let data = try? Data(contentsOf: fileURL) else { return nil } + return UIImage(data: data) + } +} \ No newline at end of file diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+ContentDelegates.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+ContentDelegates.swift index ecc79f7..8622a69 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+ContentDelegates.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+ContentDelegates.swift @@ -62,6 +62,20 @@ extension RDEPUBReaderController: RDEPUBWebContentViewDelegate { print("EPUB JS Error: \(message)") #endif } + + func epubWebContentView(_ contentView: RDEPUBWebContentView, didTapImageWithSource src: String, sourceRect: CGRect?) { + guard let publication else { return } + let baseHref = contentView.currentHref + let coordinator = RDEPUBImageViewerCoordinator(presentingController: self, theme: configuration.theme) + coordinator.presentImageFromWebView(src: src, baseHref: baseHref, resourceResolver: publication.resourceResolver) + } + + func epubWebContentView(_ contentView: RDEPUBWebContentView, didTapFootnoteWithAltText altText: String, sourceRect: CGRect?) { + guard !altText.isEmpty else { return } + let rect = sourceRect ?? .zero + let sourcePoint = rect.isNull ? CGPoint(x: contentView.bounds.midX, y: contentView.bounds.midY) : CGPoint(x: rect.midX, y: rect.midY) + presentAttachmentTooltip(text: altText, sourceView: contentView, sourceRect: rect, sourcePoint: sourcePoint) + } } extension RDEPUBReaderController: RDEPUBTextContentViewDelegate { @@ -96,6 +110,16 @@ extension RDEPUBReaderController: RDEPUBTextContentViewDelegate { presentAttachmentTooltip(text: text, sourceView: contentView, sourceRect: sourceRect, sourcePoint: sourcePoint) } + func textContentView( + _ contentView: RDEPUBTextContentView, + didActivateImage image: UIImage, + sourceRect: CGRect, + altText: String? + ) { + let coordinator = RDEPUBImageViewerCoordinator(presentingController: self, theme: configuration.theme) + coordinator.presentImage(image, sourceRect: sourceRect, altText: altText) + } + func textContentView( _ contentView: RDEPUBTextContentView, didRequestHighlightActions highlight: RDEPUBHighlight, diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+LocationResolution.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+LocationResolution.swift index 0219671..deb093b 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+LocationResolution.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+LocationResolution.swift @@ -3,7 +3,7 @@ import UIKit extension RDEPUBReaderController { - func pageNumber(for location: RDEPUBLocation) -> Int? { + func pageNumber(for location: RDEPUBLocation, rangeInfo: String? = nil) -> Int? { if let publication, let bookPageMap = readerContext.bookPageMap, let spineIndex = readerContext.normalizedSpineIndex(for: location), @@ -16,7 +16,8 @@ extension RDEPUBReaderController { let localPageIndex = resolvedLocalPageIndex( for: normalizedLocation, spineIndex: spineIndex, - fallbackEntry: entry + fallbackEntry: entry, + rangeInfo: rangeInfo ) ?? fallbackLocalPageIndex(for: normalizedLocation, pageCount: entry.pageCount) return bookPageMap.absolutePageIndex( spineIndex: spineIndex, @@ -25,17 +26,22 @@ extension RDEPUBReaderController { } if let textBook, let publication { - if let anchor = location.rangeAnchor?.start { - if let page = textBook.indexTable.pageNumber(for: anchor, in: textBook) { - return page + 1 - } - } - let normalizedLocation = publication.resourceResolver.normalizedLocation( location, relativeToSpineIndex: nil, bookIdentifier: currentBookIdentifier ) ?? location + + if let pageNumber = pageNumberFromRangeInfo(rangeInfo, in: textBook, matching: normalizedLocation) { + return pageNumber + } + + if let anchor = normalizedLocation.rangeAnchor?.start { + if let page = textBook.indexTable.pageNumber(for: anchor, in: textBook) { + return page + 1 + } + } + return textBook.pageNumber( for: normalizedLocation, resolver: publication.resourceResolver, @@ -130,7 +136,10 @@ extension RDEPUBReaderController { return (pages, chapters) } - func chapterOffset(for location: RDEPUBLocation, fallbackEntry: RDEPUBBookPageMapEntry) -> Int { + func chapterOffset(for location: RDEPUBLocation, fallbackEntry: RDEPUBBookPageMapEntry, rangeInfo: String? = nil) -> Int { + if let decodedRangeInfo = decodedRangeInfo(from: rangeInfo, matching: location) { + return decodedRangeInfo.start + } if let spineIndex = readerContext.normalizedSpineIndex(for: location), let runtimeChapter = runtime.chapterRuntimeStore.chapterData(for: spineIndex), let cfi = primaryLocationCFI(for: location), @@ -167,9 +176,10 @@ extension RDEPUBReaderController { private func resolvedLocalPageIndex( for location: RDEPUBLocation, spineIndex: Int, - fallbackEntry: RDEPUBBookPageMapEntry + fallbackEntry: RDEPUBBookPageMapEntry, + rangeInfo: String? = nil ) -> Int? { - let offset = chapterOffset(for: location, fallbackEntry: fallbackEntry) + let offset = chapterOffset(for: location, fallbackEntry: fallbackEntry, rangeInfo: rangeInfo) if let runtimeChapter = runtime.chapterRuntimeStore.chapterData(for: spineIndex), let pageIndex = runtimeChapter.chapterOffsetMap.pageIndex(forChapterOffset: offset) { @@ -193,6 +203,55 @@ extension RDEPUBReaderController { return location.cfi } + private func pageNumberFromRangeInfo( + _ rangeInfo: String?, + in textBook: RDEPUBTextBook, + matching location: RDEPUBLocation + ) -> Int? { + guard let decodedRangeInfo = decodedRangeInfo(from: rangeInfo, matching: location), + let chapterData = chapterData(in: textBook, for: decodedRangeInfo), + let page = chapterData.page(containing: decodedRangeInfo.start) else { + return nil + } + return page.absolutePageIndex + 1 + } + + private func decodedRangeInfo( + from rangeInfo: String?, + matching location: RDEPUBLocation + ) -> RDEPUBTextOffsetRangeInfo? { + guard let decodedRangeInfo = RDEPUBTextOffsetRangeInfo.decode(from: rangeInfo), + normalizedHref(decodedRangeInfo.href) == normalizedHref(location.href) else { + return nil + } + return decodedRangeInfo + } + + private func chapterData( + in textBook: RDEPUBTextBook, + for rangeInfo: RDEPUBTextOffsetRangeInfo + ) -> RDEPUBChapterData? { + if let chapterData = textBook.chapterData(for: rangeInfo.href) { + return chapterData + } + + let targetHref = normalizedHref(rangeInfo.href) + if let chapterData = textBook.chapterData(for: targetHref) { + return chapterData + } + + guard let chapter = textBook.chapters.first(where: { normalizedHref($0.href) == targetHref }) else { + return nil + } + return textBook.chapterData(for: chapter.href) + } + + private func normalizedHref(_ href: String) -> String { + publication?.resourceResolver.normalizedHref(href) + ?? href.components(separatedBy: "#").first + ?? href + } + private func nearestFragmentID(beforeOrAt offset: Int, fragmentOffsets: [String: Int]) -> String? { var bestID: String? var bestOffset = Int.min diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBWebContentView.swift b/Sources/RDReaderView/EPUBUI/RDEPUBWebContentView.swift index 49aa67c..241c514 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBWebContentView.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBWebContentView.swift @@ -13,11 +13,20 @@ protocol RDEPUBWebContentViewDelegate: AnyObject { func epubWebContentView(_ contentView: RDEPUBWebContentView, didActivateExternalLink url: URL) func epubWebContentView(_ contentView: RDEPUBWebContentView, didLogJavaScriptError message: String) + + func epubWebContentView(_ contentView: RDEPUBWebContentView, didTapImageWithSource src: String, sourceRect: CGRect?) + + func epubWebContentView(_ contentView: RDEPUBWebContentView, didTapFootnoteWithAltText altText: String, sourceRect: CGRect?) } final class RDEPUBWebContentView: UIView { weak var delegate: RDEPUBWebContentViewDelegate? + /// The current href of the loaded chapter (exposed for image resolution). + var currentHref: String { + epubWebView.currentHref + } + private let epubWebView = RDEPUBWebView() private let decorationOverlayView = RDEPUBWebDecorationOverlayView() private let pageNumberLabel: UILabel = { @@ -108,4 +117,19 @@ extension RDEPUBWebContentView: RDEPUBWebViewDelegate { delegate?.epubWebContentView(self, didLogJavaScriptError: message) } func epubWebViewDidFinishRendering(_ webView: RDEPUBWebView) {} + func epubWebView(_ webView: RDEPUBWebView, didTapImageWithSource src: String, sourceRect: CGRect?) { + delegate?.epubWebContentView(self, didTapImageWithSource: src, sourceRect: sourceRect) + } + func epubWebView(_ webView: RDEPUBWebView, didTapFootnoteWithAltText altText: String, sourceRect: CGRect?) { + delegate?.epubWebContentView(self, didTapFootnoteWithAltText: altText, sourceRect: sourceRect) + } +} + +extension RDEPUBWebContentViewDelegate { + func epubWebContentView(_ contentView: RDEPUBWebContentView, didTapImageWithSource src: String, sourceRect: CGRect?) { + // Default: no-op. Implementors can present an image viewer. + } + func epubWebContentView(_ contentView: RDEPUBWebContentView, didTapFootnoteWithAltText altText: String, sourceRect: CGRect?) { + // Default: no-op. Implementors can present a footnote tooltip. + } } diff --git a/Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterSummaryDiskCache.swift b/Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterSummaryDiskCache.swift index 652ca93..74733e3 100644 --- a/Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterSummaryDiskCache.swift +++ b/Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterSummaryDiskCache.swift @@ -172,7 +172,7 @@ struct RDEPUBChapterSummary: Codable { let pageMetadataList: [PageMetadataSummary] - static let currentSchemaVersion = 9 + static let currentSchemaVersion = 16 struct RangeData: Codable { diff --git a/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderLocationCoordinator.swift b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderLocationCoordinator.swift index 6c8d12f..773d410 100644 --- a/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderLocationCoordinator.swift +++ b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBReaderLocationCoordinator.swift @@ -20,7 +20,7 @@ final class RDEPUBReaderLocationCoordinator { if context.bookPageMap != nil { _ = context.runtime?.ensureOnDemandNavigationTargetAvailable(for: location) } - guard let targetPageNumber = controller.pageNumber(for: location) else { + guard let targetPageNumber = controller.pageNumber(for: location, rangeInfo: targetHighlightRangeInfo) else { readerView.transitionToPage(pageNum: 0) context.readingSession?.transition(to: .idle) return false diff --git a/Sources/RDReaderView/EPUBUI/Settings/RDEPUBReaderTheme.swift b/Sources/RDReaderView/EPUBUI/Settings/RDEPUBReaderTheme.swift index 23a7085..9a3a6d7 100644 --- a/Sources/RDReaderView/EPUBUI/Settings/RDEPUBReaderTheme.swift +++ b/Sources/RDReaderView/EPUBUI/Settings/RDEPUBReaderTheme.swift @@ -87,6 +87,12 @@ public struct RDEPUBReaderTheme: Equatable { extension RDEPUBReaderTheme { + /// Background color for the full-screen image viewer. + /// Always near-black regardless of theme, since the image is the focus. + var imageViewerBackgroundColor: UIColor { + UIColor(white: 0.0, alpha: 0.95) + } + var themeBackgroundColorCSS: String { contentBackgroundColor.rd_cssString } diff --git a/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBPageLayoutSnapshot.swift b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBPageLayoutSnapshot.swift index b31e2e4..a0f393b 100644 --- a/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBPageLayoutSnapshot.swift +++ b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBPageLayoutSnapshot.swift @@ -200,10 +200,23 @@ struct RDEPUBPageLayoutSnapshot { let placement = page.metadata.attachmentPlacements.indices.contains(attachmentIndex) ? page.metadata.attachmentPlacements[attachmentIndex] : nil - let kind = page.metadata.attachmentKinds.indices.contains(attachmentIndex) + let metadataKind = page.metadata.attachmentKinds.indices.contains(attachmentIndex) ? page.metadata.attachmentKinds[attachmentIndex] : nil - return (placement, kind) + let resolvedKind = attachmentKind(at: range, on: page) ?? metadataKind + return (placement, resolvedKind) + } + + private static func attachmentKind( + at range: NSRange, + on page: RDEPUBTextPage + ) -> RDEPUBTextAttachmentKind? { + guard range.location >= 0, + range.location < page.chapterContent.length else { + return nil + } + let attributes = page.chapterContent.attributes(at: range.location, effectiveRange: nil) + return RDEPUBAttachmentNormalizer.attachmentKind(for: attributes) } private static func offset(_ range: NSRange, by offset: Int) -> NSRange { diff --git a/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift index 11c8643..bdffae8 100644 --- a/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift +++ b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift @@ -19,6 +19,13 @@ protocol RDEPUBTextContentViewDelegate: AnyObject { sourceRect: CGRect, sourcePoint: CGPoint ) + + func textContentView( + _ contentView: RDEPUBTextContentView, + didActivateImage image: UIImage, + sourceRect: CGRect, + altText: String? + ) func textContentView( _ contentView: RDEPUBTextContentView, didRequestHighlightActions highlight: RDEPUBHighlight, @@ -26,6 +33,17 @@ protocol RDEPUBTextContentViewDelegate: AnyObject { ) } +extension RDEPUBTextContentViewDelegate { + func textContentView( + _ contentView: RDEPUBTextContentView, + didActivateImage image: UIImage, + sourceRect: CGRect, + altText: String? + ) { + // Default: no-op. Implementors can present an image viewer. + } +} + final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReaderCachePolicyProviding { private var contentInsets: UIEdgeInsets = .zero @@ -508,6 +526,16 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader return nil } + private func imageFromPage(attachment: RDEPUBPageAttachment, page: RDEPUBTextPage) -> UIImage? { + guard page.chapterContent.length > attachment.stringRange.location else { return nil } + let attachmentValue = page.chapterContent.attribute( + .attachment, + at: attachment.stringRange.location, + effectiveRange: nil + ) + return image(from: attachmentValue) + } + private func applyHighlightsToContent( _ content: NSMutableAttributedString, highlights: [RDEPUBHighlight], @@ -539,6 +567,9 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader let text = content.string as NSString let firstParagraphRange = text.paragraphRange(for: NSRange(location: 0, length: 0)) guard firstParagraphRange.length > 0 else { return content } + guard !firstParagraphUsesNonLeadingAlignment(in: content, range: firstParagraphRange) else { + return content + } content.enumerateAttribute(.paragraphStyle, in: firstParagraphRange) { value, range, _ in guard let style = value as? NSParagraphStyle else { return } @@ -558,6 +589,21 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader return !CharacterSet.newlines.contains(previousScalar) } + private func firstParagraphUsesNonLeadingAlignment( + in content: NSAttributedString, + range: NSRange + ) -> Bool { + var usesNonLeadingAlignment = false + content.enumerateAttribute(.paragraphStyle, in: range) { value, _, stop in + guard let style = value as? NSParagraphStyle else { return } + if style.alignment == .right || style.alignment == .center { + usesNonLeadingAlignment = true + stop.pointee = true + } + } + return usesNonLeadingAlignment + } + #if canImport(DTCoreText) private func updateCoreTextLayoutFrameIfNeeded() { @@ -650,6 +696,29 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader clearSelection() return } + // PRIORITY: Check for attachment tap + if let page = currentPage, + let attachment = interactionController.snapshot?.attachment(at: point) { + let kind = attachment.kind + let sourceRect = attachmentSourceRect(at: point, fallbackPoint: point) ?? CGRect.zero + // Footnote attachments carry their note text in alt/accessibility metadata. + // Prefer that semantic text over image preview even if attachment kind metadata is incomplete. + if let footnoteText = attachmentText(at: point), kind == .footnote || !footnoteText.isEmpty { + delegate?.textContentView( + self, + didActivateAttachmentText: footnoteText, + sourceRect: sourceRect, + sourcePoint: convert(point, from: overlayView) + ) + return + } + // Regular image attachments: present image viewer + if let image = imageFromPage(attachment: attachment, page: page) { + let altText = attachmentText(at: point) + delegate?.textContentView(self, didActivateImage: image, sourceRect: sourceRect, altText: altText) + return + } + } if let attachmentText = attachmentText(at: point), let sourceRect = attachmentSourceRect(at: point, fallbackPoint: point) { delegate?.textContentView(