diff --git a/Doc/LONG_CHAPTER_MEMORY_OPTIMIZATION_PLAN.md b/Doc/LONG_CHAPTER_MEMORY_OPTIMIZATION_PLAN.md new file mode 100644 index 0000000..fe9b15a --- /dev/null +++ b/Doc/LONG_CHAPTER_MEMORY_OPTIMIZATION_PLAN.md @@ -0,0 +1,156 @@ +# 长章节内存优化 — 代码实施清单 + +> 背景:DTCoreText 文本页已采用"整章上下文布局",分页与显示边界一致(不可回退)。现状代价:每次翻页/预加载都整章重拷贝 + 重排版后丢弃,且章节缓存里每页常驻一份子串副本。 +> +> 总原则:保留"整章参与排版",去掉"整章按页复制、按页可变、按页缓存"。不改分页器,不上窗口化。 + +--- + +## P0:立即可做 + +### P0-1 削减每页 `content` 子串常驻副本 + +**现状**:分页产物为每页保存整段 `attributedSubstring`,全章加总约等于又一份整章副本,随邻接窗口(radius 1,共 3 章)常驻。 + +生成点: + +- `Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterLoader.swift:494`(`buildPagesFromRanges`) +- `Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBookBuilder.swift:294` +- `Sources/RDReaderView/EPUBTextRendering/RDPlainTextBookBuilder.swift:78` + +现存全部消费点(已盘点确认,仅 3 处): + +- `RDEPUBTextContentView.swift:562` — 封面检测 `coverImage(from: page.content)`,仅 `pageIndexInChapter == 0` 且 href 含 "cover" +- `RDEPUBTextContentView.swift:641` — `normalizedPageContent`,仅非 DTCoreText 的 `#else` 回退路径调用 +- `RDEPUBTextBookBuilder.swift:93` — 构建期 debug 日志 preview + +**任务**: + +- [x] 将 `RDEPUBTextPage.content` 改为按需构造:已改为基于 `chapterContent` + `contentRange` 的计算属性(带范围钳制),公开读取 API 不变 +- [x] 三个构造点(`RDEPUBChapterLoader` / `RDEPUBTextBookBuilder` / `RDPlainTextBookBuilder`)不再生成每页子串;消费点经计算属性透明按需构造 +- [x] `Equatable` 确认:`content` 为派生值,由 `contentRange` + `chapterContent` 判等覆盖,语义不变 + +**API 兼容性注意**: + +- `RDEPUBTextPage` 当前是 `public struct`,`content` 也是公开存储属性;如果 SDK 已存在外部接入方直接读取 `page.content`,则不应直接移除该字段 +- 优先方案是保留 `content` 对外访问语义,但将其改为按需构造的计算属性或受控访问器,避免对外 API 断裂 +- 若确认当前版本尚无稳定外部依赖,才可以评估把 `content` 从存储属性调整为内部实现细节 +- 在实施前应补做一次全仓库与接入侧检索,确认是否有外部调用依赖 `page.content` 的“可变存储”特性 + +**验收**:打开 3 章窗口后常驻内存下降约"一整章文本规模 × 窗口章数";封面页显示正常;非 DTCoreText 回退路径回归通过;`--demo-pagination-validate` 命中数不回升。 + +### P0-2 增加内存打点 + +- [x] 已新增 `RDEPUBMemoryProbe`(`--demo-memory-probe` 启动参数开启,输出 phys_footprint);挂载点:`RDEPUBChapterRuntimeStore.insertChapter`、`pageNum` 回调每 20 次翻页、`invalidateAllForSettingsChange`、`viewWillTransition` 转屏完成 +- [x] 用 `--demo-memory-probe` 运行 Demo 即可采集对比基线 + +### P0-3 保持现有缓存限制,防止错误复用 + +- [x] `shouldAvoidReaderPageCaching`(`RDEPUBTextContentView.swift:319`)保持现状,已补注释说明放开的前置条件是 P1-1 落地 +- [x] 本阶段未改 `RDReaderPreloadController` 行为 + +--- + +## P1:第二波(P1-1 与 P1-2 必须同批落地) + +### P1-1 章节级共享 displayContent + +**现状**:`RDEPUBTextContentView.configure` 每次创建整章可变副本(`RDEPUBTextContentView.swift:443`)并按页写入三类属性:页范围主题色(453)、页范围暗黑图附件替换(448)、按页裁剪的高亮属性(459 `applyHighlightsToContent`)。 + +**约束**:共享字符串一旦被任一页的 `DTCoreTextLayouter`/framesetter 持有,就不得再修改——所有属性必须在共享内容构建时一次性注入,或转为 overlay(见 P1-2)。 + +**任务**: + +- [ ] 在章节运行时侧(建议挂在 `RDEPUBRuntimeChapter` 或新建 `RDEPUBChapterDisplayCache`)新增: + - `chapterDisplayContent`(`typesetAttributedString` 的一次性拷贝) + - `displaySignature`(组成:主题、暗黑图配置、字体设置、本章高亮集合版本) +- [ ] 构建共享内容时一次性注入:全章范围主题色;全章范围高亮/下划线属性(若 P1-2 决定转 overlay 则此项取消) +- [ ] 确定暗黑图策略(二选一): + - a. 构建时全章一次性替换(依赖 `RDEPUBDarkImageAdjuster` 的 NSCache 兜底解码成本) + - b. 移到渲染时按可见附件替换,不触碰共享字符串 +- [ ] `RDEPUBTextContentView.configure` 改为接收"共享内容引用 + `page.contentRange`",删除 443 行的整章拷贝 +- [ ] 高亮增删、搜索激活、主题/设置变化 → 比对 `displaySignature`,不一致则重建共享内容(禁止原地修改) +- [ ] 章节淘汰(`RDEPUBChapterRuntimeStore.evict` / `handleMemoryWarning` / `invalidateAllForSettingsChange`)同步释放 display cache + +**验收**:连续翻页不再出现整章拷贝(打点确认);翻页延迟下降;高亮显示、高亮点击菜单、underline、搜索 currentMatch、附件点击、选区拖拽全部回归通过。 + +### P1-2 高亮/下划线剥离为 overlay(与 P1-1 绑定) + +**现状**:搜索高亮已走 overlay(`RDEPUBTextContentView.swift:759` 处 `buildDecorations` 传 `highlights: []`,注释明确为避免双画);普通高亮/下划线仍靠写 `kRDEPUBHighlightAttributeName` / `kRDEPUBUnderlineAttributeName` 属性由 render view 绘制。 + +**任务**: + +- [ ] `buildDecorations` 改为传入真实 highlights,高亮/下划线由 decoration 层绘制 +- [ ] 移除 `applyHighlightsToContent`(`RDEPUBTextContentView.swift:617`)及 render view 对两个自定义属性的绘制路径,确认无双画 +- [ ] 高亮命中(`highlight(at:)`)与菜单锚点继续走 `interactionController.selectionRects`,坐标保持 chapter-absolute + +**验收**:高亮/下划线视觉与改前一致(含跨页高亮的页内裁剪);高亮点击弹菜单正常;与搜索高亮叠加时无双画。 + +### P1-3 章节级共享 display layouter + +**现状**:每个页面视图各建一个 `DTCoreTextLayouter`(`RDEPUBTextContentView.swift:465`);章节运行时已有分页用 `RDEPUBTextLayouter`(`RDEPUBRuntimeChapter.layouter`),display layouter 向同一模式靠拢。 + +**任务**: + +- [ ] `DTCoreTextLayouter` 随 `chapterDisplayContent` 一起放入章节级 display cache,与 signature 同生命周期 +- [ ] 页面按 `bounds` + `page.contentRange` 取 `layoutFrame`;`RDEPUBTextPageVerticalJustifier.justify` 会修改 layoutFrame,因此 **保持 `shouldCacheLayoutFrames = false`**,layoutFrame 永远按页新建、不共享 +- [ ] bounds 变化(横竖屏/双页)纳入失效条件;确认旧 layoutFrame 随页面视图释放 +- [ ] `RDEPUBTextPageBoundaryValidator` 校验路径不变 + +**验收**:翻页时不再重建 framesetter(打点确认);横竖屏切换后布局正确;`--demo-pagination-validate` 不回升。 + +### P1-4 评估重新放开文本页预加载缓存 + +前置:P1-1~P1-3 全部落地后,页面视图不再持有整章副本。 + +- [ ] 调整 `shouldAvoidReaderPageCaching` 判定,允许轻量化后的文本页进入 `RDReaderPreloadController` 缓存 +- [ ] 对比放开前后的翻页流畅度与峰值内存,数据不佳则回退此项 + +--- + +## P2:视 P0/P1 打点数据决定 + +### P2-1 章节级 LRU 分层淘汰 + +**现状**:`RDEPUBChapterRuntimeStore` 已有邻接窗口(`windowSpineIndices`,radius 1)、`evictableSpineIndices` / `evict` / `evictAllExceptCurrent` / `handleMemoryWarning` / `invalidateAllForSettingsChange`;磁盘侧有 `RDEPUBChapterSummaryDiskCache`(分页结果 + cfiMap + metadata)。当前邻接章节仍持有完整 `RDEPUBRuntimeChapter`(typesetString + pages + layouter)。 + +**任务**: + +- [ ] 邻接章节降级:保留 page map / chapter summary / 分页结果,释放 `typesetAttributedString`、display content、layouter +- [ ] 进入邻接章节时按 summary 重建,测量重建延迟;延迟不可接受则维持现状 +- [ ] 远距章节仅保留磁盘缓存 + 轻量 metadata(现有 evict 已覆盖,确认即可) + +### P2-2 图片附件深化 + +**现状**:暗黑图已走 `NSCache`(50 MB / 100 张,`RDEPUBDarkImageAdjuster.swift:9`)且仅处理当前页范围;章节运行时另有 100 MB `imageCache`。 + +**任务**: + +- [ ] 大图按显示尺寸下采样后再参与 attachment +- [ ] 页面离屏后释放 attachment 强引用的已解码大图;避免共享 content 长期持有 +- [ ] 回归:图片点击查看、暗黑模式切换、附件位置与命中 + +--- + +## P3:仅在 P0–P2 之后数据仍不达标时 + +- [ ] 上下文窗口化布局(当前页所在段落块 + 前后足以影响断行的文本窗口)。风险最高:易重新引入分页/显示边界不一致(CTTypesetter 断行上下文敏感,为已知已解 bug 的根因),选区/搜索/高亮/附件索引需全部重验。默认不做。 + +--- + +## 明确不做 + +1. 回退"页内子串重新布局"(重新引入显示不全/页末孤字) +2. 取消 chapter-absolute 索引(破坏点击/选区/高亮定位一致性) +3. 先改分页器(正确性与性能问题混杂,无法回归) +4. 未落地 P1 前放开文本页 reader 级缓存(会驻留多份整章副本) + +--- + +## 各阶段统一验收指标 + +**正确性**:`--demo-pagination-validate` 命中数不回升;长章节页末无孤字/缺字;高亮显示、搜索高亮、附件点击、选区拖拽行为一致。 + +**内存**(对比 P0-2 基线):打开长章节后常驻;连续翻页 20 页峰值;设置变更前后峰值;横竖屏切换峰值。 + +**性能**:首次打开章节耗时;连续翻页帧稳定性;设置切换恢复时间。 diff --git a/Doc/index.md b/Doc/index.md index 37384ef..154bc52 100644 --- a/Doc/index.md +++ b/Doc/index.md @@ -38,6 +38,7 @@ | [CFI_SUBSYSTEM.md](CFI_SUBSYSTEM.md) | CFI 子系统详解:EPUB CFI 解析、生成、序列化、范围、恢复引擎 | | [CFI_ISSUES_REVIEW.md](CFI_ISSUES_REVIEW.md) | CFI 实现问题分析报告:11 个问题(3 高 / 5 中 / 3 低),含修复优先级建议 | | [PAGINATION_ISSUES_2026-07-06.md](PAGINATION_ISSUES_2026-07-06.md) | 分页问题调查记录:脚注图标 avoid-trim 裁行(已修复)+页范围/显示度量错配行中断页(待复现),含调试命令备忘 | +| [LONG_CHAPTER_MEMORY_OPTIMIZATION_PLAN.md](LONG_CHAPTER_MEMORY_OPTIMIZATION_PLAN.md) | 长章节内存优化低风险实施方案:在保留整章上下文布局正确性的前提下,分阶段收敛整章副本、共享 layouter、治理缓存与图片内存 | | [API_REFERENCE.md](API_REFERENCE.md) | 公开 API 参考:RDEPUBReaderController 公开接口、委托协议、配置模型 | | [当前阅读器问题修复开发清单.md](当前阅读器问题修复开发清单.md) | 基于当前代码实现整理的逐任务开发计划:10 个任务、修改位置、实施步骤、风险点与验收标准 | | [大书远距目录跳转与后台补全优化方案.md](大书远距目录跳转与后台补全优化方案.md) | 面向大书按需分页模式的完整优化方案:远距目录跳转、后台补全优先级、页图接管协议与分阶段实施路径 | diff --git a/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj b/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj index 7829d71..96f69de 100644 --- a/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj +++ b/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj @@ -7,519 +7,520 @@ objects = { /* Begin PBXBuildFile section */ + 00072FE6929FE581D750274713B42926 /* DTCoreGraphicsUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0372FD1824BC43F7BD6B337430201420 /* DTCoreGraphicsUtils.m */; }; 002685407B9C4D548571DA24AFD6E8F1 /* NSString+Paragraphs.m in Sources */ = {isa = PBXBuildFile; fileRef = B4A7F7402FAEE3A277A8716DDA115C95 /* NSString+Paragraphs.m */; }; - 005CFC268C4EFCB746393BB9E2F7EF89 /* RDEPUBPageResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05A13D7709B82256F12E52DC6E65F696 /* RDEPUBPageResolver.swift */; }; + 00311F55CAC7A80476861A9A01A0D9D2 /* NSArray+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E5297E7F5769C61C1838962BA76D4F5 /* NSArray+DTError.m */; }; + 00C925B23F15FD8CC68036BE6E02D58D /* DTBase64Coding.h in Headers */ = {isa = PBXBuildFile; fileRef = 519087D9CD0F5E440E6D2C3B1AA1DFA2 /* DTBase64Coding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 00CFA968BBAE011A9F4777EB8A2C4214 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; + 00DBA2F5D7C2191FEBE9FCEF81D0A121 /* DTExtendedFileAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F75437CE9F9324D315E417014797C1D /* DTExtendedFileAttributes.h */; settings = {ATTRIBUTES = (Public, ); }; }; 014449AE560FFF3C628FAE639D043004 /* DTAnchorHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 148B993AB228816D19FCB7CD13874C83 /* DTAnchorHTMLElement.m */; }; - 01AC80DCBF24562307ECFA24A6A945AF /* RDEPUBReaderChapterListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4EB6B49DEC8BCB1ABD8083F9B903101 /* RDEPUBReaderChapterListController.swift */; }; - 026F7681329B00E35A480F5858301E66 /* UIApplication+DTNetworkActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 730B56BC97DFF2B1E04DD2608055D9E0 /* UIApplication+DTNetworkActivity.m */; }; - 02A66C86950C9DD663C88120E7C09A81 /* RDEPUBTypesettingPipeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92960C67FEC64C10BA567184834F0DCC /* RDEPUBTypesettingPipeline.swift */; }; - 02EE41B3F3006A14BADE9BA94D7454D2 /* UIView+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 67DA49B61A249C2B8241D8FE166608C9 /* UIView+DTFoundation.m */; }; - 02FAC2A406B3445930B8B3CA4A9B4998 /* RDEPUBPageLayoutSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848DA9852FDF80FAB067E383E1D650C1 /* RDEPUBPageLayoutSnapshot.swift */; }; - 03BEC4FA94EF8D1DD1A0D9A1187E0176 /* RDEPUBSelectionLoupeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B0CDC00940C453637FBC66E6C05D89 /* RDEPUBSelectionLoupeView.swift */; }; + 020906DE38AFEC75CD6DC1402F8E97BC /* RDEPUBSearchModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07E07EEE45C5439A207C5647210A4A7F /* RDEPUBSearchModels.swift */; }; + 022AC87F90411AB1565BFC34CBD20C77 /* RDEPUBMetadataParseCancellationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB992485D17345E01FF784879C39CC29 /* RDEPUBMetadataParseCancellationController.swift */; }; + 02F25218F72D3AD6CAFEC4BB2C0AF6DB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; + 033A34848F829FA31371E93D1AB4827F /* RDEPUBTextRendererSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E000FE659A8C4AE6C55AE7B9CC951AA /* RDEPUBTextRendererSupport.swift */; }; 03D90C831397E8636A33CE557024A136 /* NSMutableAttributedString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 044BEA679671E16EA9BA9AD627750742 /* NSMutableAttributedString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 04CF8E10D9B5FCD1EE0637929AE30482 /* RDEPUBReaderTableOfContentsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 315243CD0784D4E8AF97453BF5848904 /* RDEPUBReaderTableOfContentsItem.swift */; }; + 041E5C2F1CCF83406447722A174B6D86 /* RDEPUBTextPositionConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BE089AF845973208A11AA41A9B6AAB /* RDEPUBTextPositionConverter.swift */; }; + 04C7133BF47F70BF28F6043EB9939B04 /* RDEPUBReaderViewportMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BC1163A98FA7D285438393945C2EC73 /* RDEPUBReaderViewportMonitor.swift */; }; 0561DF6793C8516F469D9813F5CE3211 /* DTCoreTextLayouter.m in Sources */ = {isa = PBXBuildFile; fileRef = D80A72D8B7941D30246858D840EE1EF5 /* DTCoreTextLayouter.m */; }; - 057A9674B9EE73622350A746C47C478E /* RDEPUBReaderTopToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52816DCF8A866861EFF13A58D6D32CA8 /* RDEPUBReaderTopToolView.swift */; }; - 0603811BC44846AC6334DB02B797BEFB /* RDEPUBReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D73CEEFC4AA6AFA6EBF279221F5330 /* RDEPUBReaderController.swift */; }; - 06F1FB0ED2F7B7830C124D239480AD2C /* RDEPUBWebView+FixedLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD8F015377F898E4B0229FF584685390 /* RDEPUBWebView+FixedLayout.swift */; }; - 06FF798F5DE1149DAB8763B64724E6D0 /* RDEPUBCFIMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11C3B7C93919D787AAC0C4D25E52805A /* RDEPUBCFIMarkerInjector.swift */; }; - 0771856A5605A336983E6D12A566C042 /* NSDictionary+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 45A67761829BBB3974CE24FE50E459EA /* NSDictionary+DTError.m */; }; - 082E3BF2BAC5436D6A7ECE404707A9E0 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A50D413DFA43820BCD76D668C0C7868 /* RDEPUBReaderAssemblyCoordinator.swift */; }; - 09342D52B30E176B4A1D263799590FC6 /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC2EC4ECF9C8015EDECE928DCA3CC4B3 /* RDEPUBPageMapReconciliationCoordinator.swift */; }; - 0A5EF9E22D7DF24CEB0E9F5395C5C2D9 /* RDEPUBReaderBottomToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FDE14B76D550FCBD28D3B30AA9D883D /* RDEPUBReaderBottomToolView.swift */; }; + 05C9B93A3147D32C239D36A568E19FB4 /* RDEPUBCoreTextPageFrameFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09336B106D598DCD38F6B79AEA629066 /* RDEPUBCoreTextPageFrameFactory.swift */; }; + 06382387610043DAA6CD14D7AD182DBF /* RDEPUBBookPageMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45A880FCAB9201640E8329B683FCACBA /* RDEPUBBookPageMap.swift */; }; + 08114BFDC74464E95F7403D745C03597 /* RDEPUBAnnotationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 685FE9B1A888D8D05E9AC049787CBC8D /* RDEPUBAnnotationModels.swift */; }; + 0832443C5D3179680E63DE42E41E4A7C /* RDEPUBReaderTopToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D91E45585D4F6401B403BD10449ADDF /* RDEPUBReaderTopToolView.swift */; }; + 08579DA9653BBAE41A18A65026C4006A /* RDEPUBFixedLayoutTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2159ABBE19F1408CF16A6EF0271404D /* RDEPUBFixedLayoutTemplate.swift */; }; + 0A907B7973CEA38E9E330C87CCCCBF07 /* DTSmartPagingScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 21CCCCAAF832BE9C859BEDDC79B4E9E2 /* DTSmartPagingScrollView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0AAA5BB1DBF584102B15CF8738F1815E /* NSScanner+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 057DBFBFC99448A0B77A3C0DBB13B4A9 /* NSScanner+HTML.m */; }; 0ABC4D62588EABAA636441FD9A82C940 /* CTLineUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6CE93FAA68605C6B90FF844A98E440 /* CTLineUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0AEAE6D5DA18AA7DF57813BABF4AD048 /* RDEPUBWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09608C067F73D7A137B9F22AF1384DF2 /* RDEPUBWebView.swift */; }; 0B6FA1F22150D7F8B1865F41FF70C922 /* DTImage+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = E3CAAC46883B74B071843E5D38B5BF85 /* DTImage+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0D242CECCC8FE1C19BB2D952BBA21D1D /* RDEPUBPageCountCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0742A5B640EA32CFFCB23C98EA7E4E02 /* RDEPUBPageCountCache.swift */; }; - 0E3FD7C77166CB18C2CF32EECBB7678C /* RDEPUBCFIResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC3591CDAEE16F7444AC3B176EFDAFD /* RDEPUBCFIResolver.swift */; }; - 0FC610B1799A81BB1A05C679012C5372 /* wxread-dark.css in Resources */ = {isa = PBXBuildFile; fileRef = EB7C7A670C851744ACBCA45DA70795C8 /* wxread-dark.css */; }; + 0CD65B52297926BF6B22245BB401FE69 /* URL+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6430501430329643C8280B3985C48711 /* URL+ZIP.swift */; }; + 0D78DEE22F5E034C9DDC5856C0E4F015 /* RDEPUBTextBookModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33643E88B779A3DB1B3A14C7A194045B /* RDEPUBTextBookModels.swift */; }; + 0E654514AD6619948B5E7AB8A68398BB /* RDEPUBNoteModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D0BFFD14B93A2F313B937F14652738C /* RDEPUBNoteModels.swift */; }; + 0E73D6B61A31F648C93F2820F8601D4A /* RDEPUBTextPageVerticalJustifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D811ABCB31C221FA6F002E32629D6B7 /* RDEPUBTextPageVerticalJustifier.swift */; }; 0FCBC8C64D8862F2A0E8794EDADDECBD /* UIFont+DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 398DC798680E2CA64D46B9E19B380356 /* UIFont+DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; 100BFFBD24F234C095EDB001B8088DB1 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4476B58B93EE7476A4762FE0E26E8178 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.m */; }; - 1021F59A6B7DFA8B0869C7B6D09AFB36 /* NSURL+DTAppLinks.h in Headers */ = {isa = PBXBuildFile; fileRef = A3F7613E99CAA29881A015D0ED969B86 /* NSURL+DTAppLinks.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 102F6AF59C2B2A5C59BE45741F913A37 /* RDEPUBTextLayoutFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E94387C53C6E054A73F8EE89787003D /* RDEPUBTextLayoutFrame.swift */; }; 109458F9D48FD4F381F0E40E2DB3D91C /* DTLazyImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D5DD4142DF33E1BE0B5A057101E851C5 /* DTLazyImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11177A56BBD6782F3F92E0E9BAEF677F /* RDEPUBBackgroundTrace.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5BE2FBFC1E7270EABABA9C6F0C686CA /* RDEPUBBackgroundTrace.swift */; }; + 11A4D1ED36F0F2CD8FB62160CE6253A7 /* RDEPUBNoteDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0430034A7AFBCEC269D7C46517004DF0 /* RDEPUBNoteDetector.swift */; }; 11AB1902A68385851FB81E870991F9A0 /* DTImageTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 57642B518C047A428FE1266A09E0513F /* DTImageTextAttachment.m */; }; - 11D3A99648318629F6FB214C405A81E2 /* RDReaderPreloadController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82B54A69DF5E94D0D1B34E9D31C0D997 /* RDReaderPreloadController.swift */; }; 12B4A35B8E40C112E18A7C5511F023E9 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4472755F83C121DE5E1E505D145F6DBE /* CoreText.framework */; }; - 12B89F026E1CA877A5DB9901F1F84B41 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3B0AAC7948C4A103B284B0F3DCC1262 /* RDEPUBBuildDiagnosticsReporter.swift */; }; 130C3A85D9F9F445222C2E31EC245B0A /* NSScanner+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = DD0A5FF70CDBE87597264762EC20EF43 /* NSScanner+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 139CF8823D81F64DAE0E06F777B9C4CD /* RDReaderContentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 410C5BB742936BFF1A02BAB0970CAF34 /* RDReaderContentCell.swift */; }; - 14AB1A24C2510D7BF36C5E66BE5C0464 /* RDEPUBRuntimeChapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D80571A5CC74FDE8F5CE6E70B50023F /* RDEPUBRuntimeChapter.swift */; }; + 14A0B98D226AA828CC7598D92B1BA29E /* RDReaderView+ContentAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8BB0B072E5F24B51A6D348D8F9745CC /* RDReaderView+ContentAccess.swift */; }; 14BDD9FB7A7AC5C8ABFF8D24C381F3DA /* NSAttributedString+DTCoreText.m in Sources */ = {isa = PBXBuildFile; fileRef = 978449466D53EA6F5D40FCF0F353DDCA /* NSAttributedString+DTCoreText.m */; }; - 153B1C6A72B6CF391E99A104D1C2422D /* RDEPUBResourceResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 677182E8663D93C2C9E5617999F649C7 /* RDEPUBResourceResolver.swift */; }; + 14CE62432CD3EE5D5112BCA53DB4DC87 /* wxread-default.css in Resources */ = {isa = PBXBuildFile; fileRef = 7667AF77CBF47AFAA7D5F190B16A51FF /* wxread-default.css */; }; 15A7ED15DA03DD3B9F26A017D270D1C2 /* DTCSSListStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C24F592C4F38F15DC8C46BE0442B59C /* DTCSSListStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1800E2951954DDB7A2A8F3871A4D1175 /* DTExtendedFileAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 56E8939081946D090FD77A04F879754C /* DTExtendedFileAttributes.m */; }; - 184EFEEA4A34812A9891FE7D667A3A98 /* RDEPUBReaderController+ExternalLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E381C002AE6ECE51B0B77AA5007FE27 /* RDEPUBReaderController+ExternalLinks.swift */; }; - 186B46C750706F83ECE93BFA3CACD661 /* RDEPUBBookPageMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523F6E31441155AAFAC1E88316C623A4 /* RDEPUBBookPageMap.swift */; }; - 187FC12F4FE210C3276E0F256BBC287F /* RDEPUBBackgroundCoverageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EB2B007B49D93FC696248480F4CB984 /* RDEPUBBackgroundCoverageStore.swift */; }; + 15AEA1D561EAB9E702FFE2F8595856DE /* DTLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 199E2ECC77BDAC03F644C20040F042D4 /* DTLog.m */; }; + 169E3A8D7CF9CD10474613EF0CE0BA58 /* RDEPUBPageBreakPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD3430DE68FE0020F68C496C24E87470 /* RDEPUBPageBreakPolicy.swift */; }; + 18B162A00BDD1E6C09AFECB6B45C031B /* RDEPUBImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ACC6E3B4FEF517FF8038927FB873994 /* RDEPUBImageViewController.swift */; }; 191824B2B1E1B0A7DD3B6298100B4B8A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE4821B98DDE6C71411EC139EC6D2762 /* CoreGraphics.framework */; }; + 194C90037DA8585AA0251509D2E25C1C /* Archive+ReadingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5193541848D2D1BF115A45D8A730611C /* Archive+ReadingDeprecated.swift */; }; 19649ED312D92A6F5D2D6AF4E540CE75 /* DTHorizontalRuleHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 89268DC8F1FBDE4F3167647B6A4F9216 /* DTHorizontalRuleHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1A7C6254C0BF1C6C8E1D1D8DED658D52 /* RDEPUBReaderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF393040BF2038B940EA74164A6214F3 /* RDEPUBReaderDelegate.swift */; }; - 1BBEC939F5D35EEDA2A20D8CE4244A82 /* UIColor+RDEPUBHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7076326835119DD963CB9ABC0DF78460 /* UIColor+RDEPUBHex.swift */; }; - 1BE507A499436093EC10EC6E72902516 /* RDEPUBTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B35A0451D9A3CF5477258E38D363189 /* RDEPUBTextRenderer.swift */; }; + 1A328AD562FD39C0FE98473621E7184B /* RDPlainTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F44A99D2304FE5397B4DCD6BABAF2B /* RDPlainTextBookBuilder.swift */; }; + 1AAE497083E517906F7B5FE3B54261B9 /* DTBase64Coding.m in Sources */ = {isa = PBXBuildFile; fileRef = E5D4D6E12779C54F17AE98A1E6C9B699 /* DTBase64Coding.m */; }; + 1B2F0D344A944A071C0680998A96F14E /* NSURL+DTAppLinks.m in Sources */ = {isa = PBXBuildFile; fileRef = 3453CFB9BDBF6F9D0937EDF5FB2BD07B /* NSURL+DTAppLinks.m */; }; + 1BCB6744E9F316DA47E1304849DCFDE8 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A765D0DF2FFB6442A7BF2726F2F3B2C8 /* RDEPUBTextContentInteractionCoordinator.swift */; }; + 1C03A62B014AC6A2A890F996F76271C9 /* RDEPUBPublication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FA2158447C66C1AA074403C4AEF1BD9 /* RDEPUBPublication.swift */; }; + 1C844A8F215ED4A0D27F2B30DC0D52C2 /* NSData+DTCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 94705DADD1F09F4162F7D733318238F4 /* NSData+DTCrypto.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D2A8818B6C94705205AEDD2CD0F505A /* RDReaderPagingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C99F4EC07FF6B3DD8C8B72E54DEB008 /* RDReaderPagingController.swift */; }; 1D460603DCA4A4E5ECFE8FF1F1CACC10 /* DTColorFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4544C4444DCA90E700611D1281969883 /* DTColorFunctions.m */; }; - 1D731AAC78FF62ED86F99DD0285427E5 /* Archive+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B9309F0BDDDE2C3EE13C97BF2C0F1E /* Archive+Helpers.swift */; }; - 1E8EB32F9CEB5F27573296A05433CA86 /* RDReaderView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 36606A851BDB5FFF6E9BFFDD7FB72455 /* RDReaderView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1E9BE89829042FF203DBA620E39BF082 /* RDEPUBCFIUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6CA207039A89EF3323F6FFEA38A1C3F /* RDEPUBCFIUtilities.swift */; }; - 1E9FF2DE2C53AD68B7278F808358E763 /* RDEPUBTextBookCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 696C8561F8104D867B50A79E1147DE02 /* RDEPUBTextBookCache.swift */; }; - 1FD443A9AEFF8858D8B039BD378F964D /* RDEPUBWebView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E6795B0D648B27CC7EB030E7550566 /* RDEPUBWebView+Configuration.swift */; }; - 1FEAB861BB1CF892743651C907B28B12 /* RDEPUBReadingLocationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = E67A535D80CEA637777BC317BCFE28C6 /* RDEPUBReadingLocationModels.swift */; }; - 20805FA52C28B4FBEF32D3F55FA8C015 /* RDReaderView+ContentAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8BB0B072E5F24B51A6D348D8F9745CC /* RDReaderView+ContentAccess.swift */; }; + 1D78EA12F3A3AAE27FA5792A07907589 /* wxread-dark.css in Resources */ = {isa = PBXBuildFile; fileRef = EB7C7A670C851744ACBCA45DA70795C8 /* wxread-dark.css */; }; + 1FA4D34922ED28BE3052D53730D94A37 /* RDEPUBReaderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527A6EE584C515DEE0448928F5BB0AE6 /* RDEPUBReaderDelegate.swift */; }; + 203CB331D8744F1800C59AE8D711EF88 /* RDEPUBChapterTailNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A59C77DC849EDF86936A25873E674F72 /* RDEPUBChapterTailNormalizer.swift */; }; + 21ACC31FEB25D8E00B1CE1017A180716 /* RDEPUBReaderTableOfContentsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 964DE5C11E965DC6F881D1B75582D58B /* RDEPUBReaderTableOfContentsItem.swift */; }; 2203356EEA94A9172BC7902923E43CBE /* DTCoreTextFontCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 25DDD76CA572F0C7AB5A8178CF80169D /* DTCoreTextFontCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 222066D6F66889D7810BE1F9C135DA22 /* RDEPUBParser+Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 482C32ED3E6D23BBCED7BBE64E370A91 /* RDEPUBParser+Archive.swift */; }; - 233716F1EE82F10DA779D6DD5139CE95 /* RDEPUBBackgroundTrace.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3652433CDE5ACCD783B54CBDD0CBB5C6 /* RDEPUBBackgroundTrace.swift */; }; - 24152828C7910BA76155AD09435B0326 /* RDPlainTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F44A99D2304FE5397B4DCD6BABAF2B /* RDPlainTextBookBuilder.swift */; }; + 22DBEE5DFBD48875EDBA1DB856BA2CFC /* UIView+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 67DA49B61A249C2B8241D8FE166608C9 /* UIView+DTFoundation.m */; }; + 2341F46E32027F16B3EE8F86B75B58A9 /* RDEPUBFontNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63D23A912F5F91D0D3D83DF9E05515D0 /* RDEPUBFontNormalizer.swift */; }; 24395BEB3C360D9DA5180BFB955B04A0 /* DTAttributedLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EFAE8DFDDEA1E6047289C86D66381C0 /* DTAttributedLabel.m */; }; + 243E7B847D6B869F5B19BEC2007B9290 /* RDEPUBAssetRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = E97B6B6C59BBCD6685CE808E64981E76 /* RDEPUBAssetRepository.swift */; }; 2445709667CB3820E51CD4AA915E6943 /* DTHTMLParserTextNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 558FCD3F7E481B782EBFA127486ED15D /* DTHTMLParserTextNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 247B7228F440D911BBD9C6BBF0276F6E /* UIScreen+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C5E29D728B8CD4EABC0B3DD9CD9DE99 /* UIScreen+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 24C5B52FD2AA9C49731DC6859ABA7CDE /* NSDictionary+DTCoreText.m in Sources */ = {isa = PBXBuildFile; fileRef = 78887827FF15DE20865DF3A00660993B /* NSDictionary+DTCoreText.m */; }; - 24FB53BAB9B501F996DF90066CB53225 /* epub-bridge.js in Resources */ = {isa = PBXBuildFile; fileRef = 64676B6C8A9F9195A481010213F37B6C /* epub-bridge.js */; }; - 253969CCB942DD6826234506CC2B2635 /* RDEPUBNavigatorLayoutContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 055B53D0A60DC351390338A48800AE77 /* RDEPUBNavigatorLayoutContext.swift */; }; - 2620B16F7321A5A1A158E71EE88EEFDB /* DTCustomColoredAccessory.h in Headers */ = {isa = PBXBuildFile; fileRef = BAE45673EE2875DB23FA7BDD61FDE1EF /* DTCustomColoredAccessory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 250D99A44F530B5A9979A09C015D2EEA /* DTAnimatedGIF.m in Sources */ = {isa = PBXBuildFile; fileRef = A3DE08AC23FE36A6C3F33A04700FDE57 /* DTAnimatedGIF.m */; }; + 25C0E2CB3040A681F48C60BE0BA6D5F8 /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3B016E458C08679B7164130EE2F038A /* RDEPUBAttachmentTooltipOverlayView.swift */; }; + 2651136AC72A13233A460A70CAEE717D /* DTFoundationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = FF63F5E8902D6F3F5E845A924EBBC6D3 /* DTFoundationConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; 270C5C10028F0BC5A62548326CCB379B /* DTColor+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FAAF640165FC1B4B47C546F80D98B1E /* DTColor+Compatibility.m */; }; - 27CFC84B39BCFB67A6163AAF8E319335 /* NSURL+DTComparing.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F1F7BFB63DE15D627EB8F64829B8AAD /* NSURL+DTComparing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 27E0CC7EF5D20F0A61D27E439B780BDC /* RDEPUBFixedLayoutTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2159ABBE19F1408CF16A6EF0271404D /* RDEPUBFixedLayoutTemplate.swift */; }; - 2927A35D1B8067A776EA968F816E7326 /* RDEPUBStyleSheetComposer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0796C7E8BEEA96989FCE6698868366D /* RDEPUBStyleSheetComposer.swift */; }; - 296BA2D5C5458F0CCF2BA11548275985 /* RDEPUBParser+TOC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43197856E7D06A21EF9B252FD37456A5 /* RDEPUBParser+TOC.swift */; }; - 29CB36BD8C153BD78CA8B1F28DCF6ACF /* Archive+ReadingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5193541848D2D1BF115A45D8A730611C /* Archive+ReadingDeprecated.swift */; }; + 2762C38F0DCA2C6027557ACD3444787E /* RDEPUBWebView+FixedLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD8F015377F898E4B0229FF584685390 /* RDEPUBWebView+FixedLayout.swift */; }; + 276E9AA59EB63396C8378BBC950CE291 /* String+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB56EEA8FBF8DBE56135C22D77769CC8 /* String+RDEPUB.swift */; }; 29D9B32DFFC59A157EDEF005DB92A5AC /* DTCoreTextLayoutLine.m in Sources */ = {isa = PBXBuildFile; fileRef = EB850927957E35DB8CE0F109188C99A9 /* DTCoreTextLayoutLine.m */; }; + 29E12DE24E3817E282979645D80E45C0 /* cssInjector.js in Resources */ = {isa = PBXBuildFile; fileRef = 2EBD41467F344F6091AD0C1A3981EDC3 /* cssInjector.js */; }; 2AAF9361720FC2D8FFCA93B5FAE42019 /* NSMutableString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 126E6ACAC7C0427806B58DA8E10BDD78 /* NSMutableString+HTML.m */; }; - 2BC65213EE316B42A750CE7EC423E1AE /* RDEPUBChapterLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19D3A41F50CE425FA2929A6FBE743A84 /* RDEPUBChapterLocation.swift */; }; - 2BE0013FE0DDC77B462B69584C04E5EF /* RDEPUBCFI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976DBE312D138856488A4DEF88606BC9 /* RDEPUBCFI.swift */; }; - 2C2DC59C72FEC3C928CBF9D92F8FFDD4 /* RDEPUBModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDFEB59EC6040AB3CF58E4E1045A8913 /* RDEPUBModels.swift */; }; - 2E056A2117F8E13CDE6E665C89A8B1BA /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F45A7967FB601D8BED750A9E37E7899C /* RDEPUBAttachmentTooltipOverlayView.swift */; }; - 2F2BA46AF49A6918CC279C5610290542 /* DTCustomColoredAccessory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9542AFE3A82C8AE56576254CE196E71A /* DTCustomColoredAccessory.m */; }; + 2B9B5C05BFB132C2A03AF56BB262A4B3 /* DTPieProgressIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 173194D38C897D8E38AD8A194E47DB5C /* DTPieProgressIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2CA6F4C17909548E2D91BF71AEE0BB84 /* RDEPUBReaderSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE3C35BC77F4A80D8725CE0CDE20B5E /* RDEPUBReaderSettings.swift */; }; + 2EA87D5E151B183B64161912F24F27B3 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0834E84632886CDD9911CAB76183F1CE /* QuartzCore.framework */; }; + 2F5394C897D37AED4DC2ED00D180A07D /* RDEPUBTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F5110430A322C853C80F6041B0EDF94 /* RDEPUBTextBookBuilder.swift */; }; 2FD7360250C2255A80583D4CF518FBFA /* DTTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 4944FE0BE3205F2EC91A6A0550D30B75 /* DTTextAttachment.m */; }; + 300D521B97F66DD5401F6292436339EF /* default.css in Resources */ = {isa = PBXBuildFile; fileRef = 47DC174612C98B2CFB4E7D158169139E /* default.css */; }; 30C01FE491C26314F776AD8B2AF136FA /* NSAttributedStringRunDelegates.m in Sources */ = {isa = PBXBuildFile; fileRef = C69C7A531B5E021499D8FBF1DBE0E3BB /* NSAttributedStringRunDelegates.m */; }; - 3120641E5E2540AFC3E1F47E0BE4E35B /* RDEPUBPaginationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 422DAC763888F8667708F7B66F9C701E /* RDEPUBPaginationModels.swift */; }; + 30EA52B5D49A8820D1AE92AFA61F7C63 /* RDEPUBTextBookCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 696C8561F8104D867B50A79E1147DE02 /* RDEPUBTextBookCache.swift */; }; 31B805C50E0E187E6242B0C878C4D30D /* DTCoreTextMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = C495C74844982FAA1B846A2A89023D12 /* DTCoreTextMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 328F47247FA2E27D2495C01F1D0729D1 /* RDEPUBSemanticMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F4881006C6FAE4DFADBE2ACE4E9A744 /* RDEPUBSemanticMarkerInjector.swift */; }; - 333E9440E6755615B7423D2E897C5869 /* FileManager+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C3F8DF48C6EB28BFD05F5BB49793DDA /* FileManager+ZIP.swift */; }; 343E794F88AA503F5139C2244DC1A2B1 /* DTTextAttachmentHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8FDAF9E8370366F7FA8524CB0D80B3 /* DTTextAttachmentHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 34BBE7EC94EB4244DB72A9C38FACCDDA /* RDEPUBReaderState.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1843DDD87F5732183A424372B8F57F3 /* RDEPUBReaderState.swift */; }; + 34AA42EA526694A33971418DA2B5F8B7 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F3375F32D22D669DD2C8A34D3FB9A8E /* RDEPUBReaderController+AttachmentTooltip.swift */; }; + 35339CEE078C68227605E3F5DA550ADD /* RDEPUBParser+TOC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43197856E7D06A21EF9B252FD37456A5 /* RDEPUBParser+TOC.swift */; }; + 356D1732FFEFFCB6EA25A3E5C6F17251 /* RDEPUBCFIRecoveryEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35803D654BE44326A28A0947DD178B63 /* RDEPUBCFIRecoveryEngine.swift */; }; 35C5BE59CA712CCDF93D6E7010D93883 /* DTAttributedTextContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = E96C0EEB2032D3CC18F4B37A7C34C84C /* DTAttributedTextContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 36302E89132B67217F8D1B91040072C8 /* NSString+DTFormatNumbers.h in Headers */ = {isa = PBXBuildFile; fileRef = A3BD3ED7913130D32E14D5572CBCC921 /* NSString+DTFormatNumbers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36A83636F549A72B823760708496D7B9 /* UIImage+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 499E135F1FEB31C26EB0EF793A90086C /* UIImage+DTFoundation.m */; }; + 3718C3664D054ECFFDAA22DC26A170C7 /* RDEPUBAttachmentNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63A75BF0478FAC7398F5E66A509F639D /* RDEPUBAttachmentNormalizer.swift */; }; 372E907DF08263D0E1AF904F1FCD66EB /* DTTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = E853AAB3B09E0662567752431CEF1D33 /* DTTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 383AFA3F295427EA56530C70024DBD2F /* RDEPUBFontFallbackResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29DE76CD63BD47DC86DF55C349B1CF91 /* RDEPUBFontFallbackResolver.swift */; }; 389F7C8400F9223C019F2D7825CD2369 /* NSCharacterSet+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F242FC1357DD90FA4FD67E1DB90A837 /* NSCharacterSet+HTML.m */; }; - 3A3A957A1CEC0FF2100DC093C5B0BF81 /* RDReaderSpreadResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 008302A48FE881CADADBCB02832B880B /* RDReaderSpreadResolver.swift */; }; - 3AD2C1CA7E9FC21A2D74EA080B6D962B /* RDEPUBPageInteractionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1961705269BD266F52EBD357EAE068A5 /* RDEPUBPageInteractionController.swift */; }; - 3B2F4E4DC50638762591D58890B11DB3 /* RDEPUBPresentationRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACD11D2C8694B9E3BDD175F1EEBEB64D /* RDEPUBPresentationRuntime.swift */; }; - 3B9A2BDE8A4970A10A72EF271D89773B /* RDEPUBWebView+JavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 321FA16FF2FAD7985CCAC14EF5A221D4 /* RDEPUBWebView+JavaScriptBridge.swift */; }; - 3C5E435F6F4211B7A41CC9B6CC9FA413 /* String+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DFBB7A0C649F48591647E3C08CE6852 /* String+RDEPUB.swift */; }; + 38E75F23ECF239CE35A5687C44F85244 /* Entry+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76C1831768CE55090EADD902B29B6CD1 /* Entry+Serialization.swift */; }; + 399706B52D94F4BB0F6BF7DEE1D7A198 /* RDEPUBChapterDataCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = E58FA87A2BA86B4AF4AC1D9ED80ADB9D /* RDEPUBChapterDataCache.swift */; }; + 3A42CEAFF80430B8C60ED7DA64846CB3 /* RDURLReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 949BC485A5DC7EF786656CBF9A479A1D /* RDURLReaderController.swift */; }; + 3AA1044D0DBE82EF985629B06BE71A7E /* RDEPUBCFIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C1CDD44F96B466A619015AA0A7B2D17 /* RDEPUBCFIError.swift */; }; + 3B0DD640C4EFE14E8F5148895C99A5CE /* DTVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C9575F05D72C239E7E6F079BACDF4C7 /* DTVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3BB5E376318200B3769C486789E24289 /* RDEPUBPaginationCacheCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528643F4F0CD2FEC7AD5C0ACA9895D9D /* RDEPUBPaginationCacheCoordinator.swift */; }; + 3BE0A085BC69652EE763EED221A6F9D9 /* DTFolderMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = BEA46E51E3616ECEAF0ACCEA9B8C67EF /* DTFolderMonitor.m */; }; 3DC8F9474FC6A0BB7E81A703CE958966 /* NSAttributedString+DTDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A086525BF509F4581693115438B82B /* NSAttributedString+DTDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3FC7C093B838D87DA42A363F11850D9C /* NSFileWrapper+DTCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = B43D7603C0D66635268842EC0A2655AC /* NSFileWrapper+DTCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 404FBD43D1380F605264FD23756845FA /* RDEPUBChapterSummaryDiskCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CA5ED27523EC3D3AFC0F01E05891FBB /* RDEPUBChapterSummaryDiskCache.swift */; }; - 40F9FE365AD1E9DF0AC2552C9E57F374 /* NSString+DTUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C80941DE172AF972D2247659684D93A /* NSString+DTUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 417B820CB812E2EB595D0A260C3C8B43 /* RDEPUBTextAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F81C81E7CF8B0AE4646712FC2ADD8B0 /* RDEPUBTextAnchor.swift */; }; - 41A990E0E4CAE5BADCB5E1643D508DFB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - 42D1958B37CBF9EFB3CEB6A8CAFF76AF /* DTActivityTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 662D30C1E74D1D5122921475F4024F73 /* DTActivityTitleView.m */; }; - 433265EE781060B73077244642255314 /* RDEPUBPaginationCacheCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528643F4F0CD2FEC7AD5C0ACA9895D9D /* RDEPUBPaginationCacheCoordinator.swift */; }; + 3E96CCAED9D356F66D8EE8F6E6A496F8 /* NSURL+DTUnshorten.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA6D26B26D2653D6E1C871A482BD6DF /* NSURL+DTUnshorten.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3F8F4CE78B1B0B3E8343E7F91ACCE444 /* UIColor+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DACF1F2702EB6425DF22A4B0CB64202 /* UIColor+RDEPUB.swift */; }; + 42775236B82754FEF09932222F484EB1 /* Archive+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B9309F0BDDDE2C3EE13C97BF2C0F1E /* Archive+Helpers.swift */; }; 44B1FBF893C06F314F8C9BD1405897D8 /* DTCoreTextGlyphRun.m in Sources */ = {isa = PBXBuildFile; fileRef = ED049C791713944233EE10C7A111C691 /* DTCoreTextGlyphRun.m */; }; - 44D7D8E32201729CC581FC5A0EE319A0 /* RDEPUBReaderDependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1718601130E0F134E893F2A5CE605C6 /* RDEPUBReaderDependencies.swift */; }; 45133E47CC5FBCF78BFCD38981BA027F /* DTDictationPlaceholderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C12A4A5BB42D0F68DABBD3BDF103BC5 /* DTDictationPlaceholderView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 454D8A5137809902C531CB3C60FDACE5 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */; }; + 45CFC0BDED4932E8406B27C77613231E /* DTBlockFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35417EC94F2D58CB80C991F875CE15C2 /* DTBlockFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 45F90B98546FDBA03AB112DFE859A185 /* DTCSSStylesheet.m in Sources */ = {isa = PBXBuildFile; fileRef = B37118B8D16847B0F82E06A5B33898AB /* DTCSSStylesheet.m */; }; + 46A2E18E981DE7D7FFAC4BF04E967AE2 /* RDEPUBFontFallbackResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29DE76CD63BD47DC86DF55C349B1CF91 /* RDEPUBFontFallbackResolver.swift */; }; + 46E70B7A4E1C35BBB88EFBCB9DCE8ADB /* RDEPUBChapterPageCounter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 328AA616EE25AB53BFB60EFE1C7AAFCE /* RDEPUBChapterPageCounter.swift */; }; 46EF32D586FF590CE2C60C66364B9357 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */; }; - 46F7CEDA8A932C39B2536B68CE3889EE /* RDEPUBTextRendererSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E000FE659A8C4AE6C55AE7B9CC951AA /* RDEPUBTextRendererSupport.swift */; }; - 48580F0EDA4D384E5AA73A9BC814DC20 /* UIView+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 29DEA4D201BB179BB6E228E9F688CD4C /* UIView+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4907E32CCD484D56610C0399A79D23BD /* DTFolderMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CC38EFEF171FFEE008C32A6319BE6A /* DTFolderMonitor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4964E6E0330E161B8B118F6B0638236C /* DTFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 23588B63FC4026A371F5C683744A664C /* DTFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4969CE5602CC934D55680248A5A5ABC1 /* DTLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 199E2ECC77BDAC03F644C20040F042D4 /* DTLog.m */; }; - 49D58CFE47CAF677E9442BC792640A4C /* RDEPUBTextAnnotationOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCD03AC792A6CF8550BC44A4339D9FE /* RDEPUBTextAnnotationOverlay.swift */; }; + 46F411369949108E7AEEFD1936818F80 /* RDEPUBWebView+Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = CADF4452F89F7A5F419D2841FABC8CBC /* RDEPUBWebView+Search.swift */; }; + 49843E4719C8DDC61C622560E73ACBC4 /* NSURL+DTComparing.m in Sources */ = {isa = PBXBuildFile; fileRef = 467CC59CEC3B3BC7ACDCA776FDCBDC1D /* NSURL+DTComparing.m */; }; 4A13B4E5EA8616A8F09D90BC6EAEEA64 /* CTLineUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FF4A2A7F2C7CFB5DD757BE1A6E59C7B /* CTLineUtils.m */; }; - 4BBDFB14A9E1E663B672696A77A39F0B /* DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F653EFBBEDAAC96A34BC93B4211E792 /* DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4CE2C34EB81CD8336960B667033A6325 /* RDEPUBWebView+Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = CADF4452F89F7A5F419D2841FABC8CBC /* RDEPUBWebView+Search.swift */; }; - 4D66BE87981E3058D5C54D88CEB4EB8F /* RDEPUBCFIGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 104930ADAD326C90EB587485A6BFF755 /* RDEPUBCFIGenerator.swift */; }; + 4A9FBB237C4C47B9D35706FB689791A0 /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = FECC02C082DBCB6126A7ECBA72C258B3 /* RDEPUBTextBuildPipelineInterfaces.swift */; }; + 4CE93ED4B7B40D4518A42BB27BE6A338 /* DTSmartPagingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = A20F6F0463A998DC3BD53DE9E63B63DE /* DTSmartPagingScrollView.m */; }; + 4D62C2EC64541CC90BDBA431B9099C85 /* RDEPUBReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7E8901535604C19FD5AD766F825AA54 /* RDEPUBReaderController.swift */; }; + 4D8FF0E0C042C10B4B68DCCFC056ED73 /* RDEPUBTextAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F81C81E7CF8B0AE4646712FC2ADD8B0 /* RDEPUBTextAnchor.swift */; }; 4DA6EC46F8968265B96C6D7B2260C4E5 /* DTTextBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = C508E49F6BF9F50B05918C230B033069 /* DTTextBlock.m */; }; - 4E2123336537AC8648B8B3928D80FD88 /* URL+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6430501430329643C8280B3985C48711 /* URL+ZIP.swift */; }; 4E4939F6592B06D2CA764DCACFB47871 /* NSString+Paragraphs.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B8321AB80CFE0B94537AEA63E9A79F5 /* NSString+Paragraphs.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4F2B6AFB35C163DBC1F8E20681D46BB9 /* RDEPUBCFIMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0390F2BB06B9CE8FCBCD30D60C154B9 /* RDEPUBCFIMap.swift */; }; + 4E857C4A8AF4533FC93D6A5E4B7BB3D4 /* RDEPUBCFI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976DBE312D138856488A4DEF88606BC9 /* RDEPUBCFI.swift */; }; 4F50C703427747B88405080B221349A1 /* DTLinkButton.h in Headers */ = {isa = PBXBuildFile; fileRef = B12CE4962CDC324FB47FB92D6706D149 /* DTLinkButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4FD0B3D2431E89EFA74A02280F4DFA54 /* NSURL+DTAppLinks.m in Sources */ = {isa = PBXBuildFile; fileRef = 3453CFB9BDBF6F9D0937EDF5FB2BD07B /* NSURL+DTAppLinks.m */; }; + 504022F60824B8B6B204AA2100F5D47A /* RDEPUBCFIResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC3591CDAEE16F7444AC3B176EFDAFD /* RDEPUBCFIResolver.swift */; }; + 5051E90EBC038ED8C2C698770A18BCC7 /* UIApplication+DTNetworkActivity.h in Headers */ = {isa = PBXBuildFile; fileRef = 55423549E54A01F039B5F379B264C73F /* UIApplication+DTNetworkActivity.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5065D99E1588E8CC60677E74916A5C03 /* DTAttributedTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 814315319ED50AF916C3C8A68C0A47A0 /* DTAttributedTextCell.m */; }; - 50EBC14A5BB65993E1FAC38130135074 /* ZIPFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D8AB18960B56A997408E3235751624 /* ZIPFoundation-dummy.m */; }; + 50A6C85899890D44BBB56FEE3F696D25 /* RDEPUBReaderController+RenderSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7975AED4D3A0C7FCE350B73EA6D1DC77 /* RDEPUBReaderController+RenderSupport.swift */; }; + 50EF9EE32F5C1FA13D30428F9FF42A44 /* DTActivityTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 662D30C1E74D1D5122921475F4024F73 /* DTActivityTitleView.m */; }; + 519D2881E7DDE1204CE7D17BE98333FE /* UIImage+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1300CC5794E609DB8FBA6FFF90A09408 /* UIImage+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 519FBE83225E8DD86A6970FB875803D6 /* RDEPUBCFIRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842B11843F82FBEA1D725543ACAB02CE /* RDEPUBCFIRange.swift */; }; 51A1B5800D23C355B1712E8D1103780C /* DTTextBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = EA2BF1D7535B036E1356E8DF42A04954 /* DTTextBlock.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 51A4A5B6D8E9B59D8D544015275F3F37 /* RDEPUBReaderTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BEA03FA083C9125362B656F760E845F /* RDEPUBReaderTheme.swift */; }; + 522D2B339FE7E19ED927F82150C55BF9 /* RDEPUBSelectionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 408BF57916E27949442B18215BE0B51A /* RDEPUBSelectionState.swift */; }; + 52736993BE6C7C4DD93C81586B3E2461 /* RDReaderGestureController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE6582B1336C77B6C366DAA669570B4A /* RDReaderGestureController.swift */; }; 528DBAC7FCEFC7D6575C1F6CB4399AEA /* DTStylesheetHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A88AA04D7B29A217B432C19AC48AB6B /* DTStylesheetHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 549EA467E837EC2A6054D44B6376423A /* DTBase64Coding.m in Sources */ = {isa = PBXBuildFile; fileRef = E5D4D6E12779C54F17AE98A1E6C9B699 /* DTBase64Coding.m */; }; - 5510021D8090D3D2051AEB591A7D90BB /* RDEPUBChapterOffsetMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA22FB2A1729AFA909E9AAE06BCDC019 /* RDEPUBChapterOffsetMap.swift */; }; + 53F4E2FA05AC45F68A8CC2258D669F32 /* NSString+DTPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = B76B1E836C34CB755AEE1FBF7DC26BDD /* NSString+DTPaths.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 542566132B2CE691EA2226BE4CCC313A /* RDEPUBParser+Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 482C32ED3E6D23BBCED7BBE64E370A91 /* RDEPUBParser+Archive.swift */; }; 5582735073EBB9F5078E6E8AEEFB646A /* DTCoreTextLayoutLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 37327141DC73DE2D5742BE6F989094CE /* DTCoreTextLayoutLine.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 57399D051CD4E2CC012F3308031BE592 /* WeReadApi.js in Resources */ = {isa = PBXBuildFile; fileRef = 3AF63806C4793F384C4CF28201BC756C /* WeReadApi.js */; }; + 561017094AFE9205C1B9FACAE64255AE /* RDEPUBChapterLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = A686F0FF211686E1D4F60B994E012587 /* RDEPUBChapterLoader.swift */; }; + 56F19DA2EC227104B8690133AAD7B622 /* RDEPUBDTCoreTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 505D658FEB22042EEDC51D402700F8C9 /* RDEPUBDTCoreTextRenderer.swift */; }; + 57A35BC904190F50EB5D281C5D033AF3 /* RDEPUBRenderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 564F072D0966350F4C3986E01EB3EB2C /* RDEPUBRenderRequest.swift */; }; 57D5228C8A85628772D4D78E7FBEAF3C /* DTDictationPlaceholderTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DA0F94C0870C1F0DFADE5E9045E5E6E /* DTDictationPlaceholderTextAttachment.m */; }; - 57E15358F55891E25FA5979425011B2D /* ZIPFoundation-ZIPFoundation_Privacy in Resources */ = {isa = PBXBuildFile; fileRef = CA4A114775B98CEA4A566C18123B145F /* ZIPFoundation-ZIPFoundation_Privacy */; }; - 58ED82220D20D2DD9ABDAC9ABDD4BB4A /* RDEPUBReaderController+LocationResolution.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9493E87BC278E65DA39B0F098CC01B9 /* RDEPUBReaderController+LocationResolution.swift */; }; - 5911713F9239050AD67855C5FE5C09CE /* RDEPUBImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1791083E7546C2EB443048851C122E32 /* RDEPUBImageViewController.swift */; }; + 57E1FC6C0C6F1D12E9D1558BF9BA58D0 /* wxread-replace.css in Resources */ = {isa = PBXBuildFile; fileRef = E15D7179C6CF82530CF5E7264BBA1679 /* wxread-replace.css */; }; + 584AE069BDA8C80BAED639DF26754A0B /* NSURL+DTUnshorten.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A6A858B976D032A3C61540AFF19DEE4 /* NSURL+DTUnshorten.m */; }; 597DE4CDF5C674E269F03F6AA0AFFCC1 /* NSAttributedString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 71EE0B4D4D1B3D0A55E903E7E0CA44E7 /* NSAttributedString+HTML.m */; }; - 5991435101718DD89D53293B2B2CF58E /* RDEPUBTextBookModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33643E88B779A3DB1B3A14C7A194045B /* RDEPUBTextBookModels.swift */; }; - 59D84D2F01364873C8C8BAB4C33C2261 /* RDEPUBTextPageDecorationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E42A81201784E7976A4C546739DE6ED5 /* RDEPUBTextPageDecorationView.swift */; }; - 5A06B30AC6A40A95582441D67FC337C9 /* DTTiledLayerWithoutFade.h in Headers */ = {isa = PBXBuildFile; fileRef = 0764D155F69503AACFA7AD976825E986 /* DTTiledLayerWithoutFade.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5ADF1544DE3754D1E2AA8A10BE3CC09A /* RDEPUBReaderSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0901D33C8FF8497CDC7A4365D0D84218 /* RDEPUBReaderSettingsViewController.swift */; }; - 5B0FDAA3C42B8CB5248BC4ACF21FB3F2 /* NSString+DTFormatNumbers.m in Sources */ = {isa = PBXBuildFile; fileRef = C5005A9E8F746647585CCAB26853E922 /* NSString+DTFormatNumbers.m */; }; - 5B7E3DABCEB0DED90BD7C9F6FF076384 /* RDEPUBReaderViewportMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7045AD2296EB5CDE847902C39A59F370 /* RDEPUBReaderViewportMonitor.swift */; }; - 5BBCAA7A6098938497E444933CC62556 /* RDEPUBReaderController+RuntimeBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = E844B3375520F01C6CCE1468B53CCC6C /* RDEPUBReaderController+RuntimeBridge.swift */; }; + 598067C0EF7A61AC9002DD34CC503031 /* Data+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C3615C94C147AEA92F022E119810E9F /* Data+Serialization.swift */; }; + 5A76BA537A8E9769097E716036D5DD9D /* RDEPUBTextPageRenderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7380BDD29AC5C55223ADDD7C33698102 /* RDEPUBTextPageRenderView.swift */; }; 5D03A5B9DC067875CFEC9D4EA7B059E8 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 671C2429406FDB36B677F4B6EC85B52F /* DTCoreTextLayoutFrameAccessibilityElementGenerator.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5D8D65121E87E419D8D2F23F8AF43673 /* DTColor+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 68D81DF1BB2A14F9C186F75BBA5CF50D /* DTColor+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DC896B6277CFD4745B6FFC1B65436E9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; + 5E7F686124648073387FCFA9D4241709 /* NSArray+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = C7E09A6C247D465CA0EF71B939B2A040 /* NSArray+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5E8F2E42C4BE9511BEE24EA17234F30C /* RDEPUBReaderSearchBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CAD42B48B9168BBD3A810E5D3F0F956 /* RDEPUBReaderSearchBarView.swift */; }; 5E90EBD876ED4E50AB890FB56C4BFA57 /* DTHTMLParserNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D28A3E79D83EA4B807E2D3A5EE086B8B /* DTHTMLParserNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5EBCDBA71D6A9A0B165DA802A3DB791A /* wxread-default.css in Resources */ = {isa = PBXBuildFile; fileRef = 7667AF77CBF47AFAA7D5F190B16A51FF /* wxread-default.css */; }; - 5EF29ED9DAD773DB59A8F506A4170C8B /* RDEPUBWebDecorationOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A220EF1E6F5821B91990AAED74A4FFC /* RDEPUBWebDecorationOverlayView.swift */; }; - 5F91E431D40AE218D7A3774E0A9B4FCC /* RDEPUBCoreTextPageFrameFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09336B106D598DCD38F6B79AEA629066 /* RDEPUBCoreTextPageFrameFactory.swift */; }; - 5FD041841462D5467C316ABFECA32B75 /* UIColor+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92ED368A3AC26AAF26FEB59577BBF3F4 /* UIColor+RDEPUB.swift */; }; + 5F5D2D465B1C6351873BCE1AA7983583 /* RDEPUBJavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = F69C9651823EAB579B078EC3B7435D16 /* RDEPUBJavaScriptBridge.swift */; }; 60532A2E06CCFF814933D2FAE6793AE9 /* DTCoreTextLayouter.h in Headers */ = {isa = PBXBuildFile; fileRef = 72225FB74594FCF18DA8064E7DB3947E /* DTCoreTextLayouter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 609A47F8B6B778E7C09C4A3173716231 /* RDEPUBPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1EAAFA56DA59E80D53DA0DC7C6532D2 /* RDEPUBPreferences.swift */; }; - 60B755A36A2122D9509C47B59B977F64 /* DTCoreGraphicsUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0372FD1824BC43F7BD6B337430201420 /* DTCoreGraphicsUtils.m */; }; - 6112DAD7FA7F9CDFF6798D061A776AA6 /* RDEPUBTextPaginationInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ED87665B0B64B6E8153C0490203E43B /* RDEPUBTextPaginationInterfaces.swift */; }; + 60EBB36339ECD67F5A6DFC402A44E701 /* RDEPUBReadingLocationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = E67A535D80CEA637777BC317BCFE28C6 /* RDEPUBReadingLocationModels.swift */; }; 61BE3607EABD2657BC71AF8ACB1C25D4 /* DTHTMLAttributedStringBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1066A8FE63AD2C818E26DDCE62DF58 /* DTHTMLAttributedStringBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6271C496EAB502AD3055465A5D827878 /* Archive+Progress.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE83356F8FBC1801D29CA93C1A190D81 /* Archive+Progress.swift */; }; - 632192A26D2997E04711F37A141B8099 /* RDEPUBReadingSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 314E39CF7ADE645354AC8873D80957CA /* RDEPUBReadingSession.swift */; }; - 63A0F02E81586CA14D5EFD53E7E09EC5 /* RDEPUBSafeArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA068568A9B92FE52049E190968609A8 /* RDEPUBSafeArea.swift */; }; - 64F90689CBA4FBC32D6A4D65BAE984A8 /* RDEPUBTextPositionConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BE089AF845973208A11AA41A9B6AAB /* RDEPUBTextPositionConverter.swift */; }; - 65D4A26423DC3811E2E647A7E6401653 /* RDEPUBReaderSearchBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50BEBB47FE6ED062DE6363BFDCC7D84C /* RDEPUBReaderSearchBarView.swift */; }; + 61E0C3F772839BE1391A3EC12052D867 /* FileManager+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C3F8DF48C6EB28BFD05F5BB49793DDA /* FileManager+ZIP.swift */; }; + 63A6EA2C3E8FB233F7DCD42AC33F38C5 /* RDEPUBReaderController+PublicAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44CC9E1CE3BFCDCF123AF3232DE600ED /* RDEPUBReaderController+PublicAPI.swift */; }; + 648AD27F4319D2CC654BAEE5439DEEAC /* DTLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 207CC0EEB74CECEB43A870FF80560E0F /* DTLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6634D568E49F5610242E1454680E5885 /* NSAttributedString+SmallCaps.h in Headers */ = {isa = PBXBuildFile; fileRef = CACF20969583778CAC1BC92BB96F27FD /* NSAttributedString+SmallCaps.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6635ACAC44269CA4F029D09B8FA0AB6A /* RDEPUBPageLayoutSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 353528037271462D3C73D07BBF5D8DED /* RDEPUBPageLayoutSnapshot.swift */; }; + 66C5B1E7A94EFD608EA77088B598164E /* RDReaderPageChildViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33452E6D078F6CC1EF8A17DF42966CAA /* RDReaderPageChildViewController.swift */; }; + 66D5B656A033F00ECD29B7CA01120166 /* RDEPUBParser+Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 170D81239AF3CE5CD64BA2E44A505872 /* RDEPUBParser+Resources.swift */; }; 67AE2AC8D9B961D45871077774E11FD3 /* DTObjectTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 13597E7190F2C08C5906D7D128E43E99 /* DTObjectTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 68991FD1C811CDB7C212E0221F7DBD52 /* NSString+DTURLEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 131C1D8C96DF2D44A2D4F50C5AEFFF11 /* NSString+DTURLEncoding.m */; }; - 692CDFFEE07CA9C09D1257448154707D /* RDEPUBCFICompatibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F08538F2728E3B8B81113D12DB74E3A /* RDEPUBCFICompatibility.swift */; }; + 67FEDE8824DCBF369F8BC557A54A4B38 /* RDEPUBDarkImageAdjuster.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD93A4C37E58849DD3FBADFE4E3BB7E4 /* RDEPUBDarkImageAdjuster.swift */; }; + 6873031C87E6AAD6EEBA809E2296896E /* RDEPUBRenderDiagnosticsCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B7FCEEAD833F7C1706659E688B09BEA /* RDEPUBRenderDiagnosticsCollector.swift */; }; 69674FEA70899F07BE6098AAEC849978 /* DTAccessibilityViewProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AC1E707308CDBC9FFC09CECE3117A9A /* DTAccessibilityViewProxy.m */; }; - 6B49DC82B42CA0E117265F6CD43EEF8D /* default.css in Resources */ = {isa = PBXBuildFile; fileRef = 47DC174612C98B2CFB4E7D158169139E /* default.css */; }; - 6BF4DC0E327C667AC9D4709AD022FA7F /* RDEPUBRenderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 564F072D0966350F4C3986E01EB3EB2C /* RDEPUBRenderRequest.swift */; }; - 6C906CF9FFC1697C72A93D4FC543B6A3 /* RDEPUBFragmentMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587C2E270D5414FF4E3786D14BD36694 /* RDEPUBFragmentMarkerInjector.swift */; }; - 6D705FC78684FAA20879A13095661E8F /* RDEPUBNoteDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0430034A7AFBCEC269D7C46517004DF0 /* RDEPUBNoteDetector.swift */; }; - 6DD5C44F5661E614F21FE810AFB6E8BE /* RDEPUBSelectionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71E8149D8D8A8F61C09D98F329F11CA0 /* RDEPUBSelectionState.swift */; }; - 6E0E63C1AAA2E75F7C040815B6A342DA /* RDEPUBReaderPersistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93A16F63ABA3D0BA695CC9F1F7D6F3DA /* RDEPUBReaderPersistence.swift */; }; + 6A1ED4852B10607E6D1A8DB0C78848F5 /* Archive+Progress.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE83356F8FBC1801D29CA93C1A190D81 /* Archive+Progress.swift */; }; + 6B0DCDF171C89921104B03A7C2FBD921 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 006D002D86B43AA52E0AFD2E18459107 /* PrivacyInfo.xcprivacy */; }; + 6C07C95892D6224437E7B6376B08EB23 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3B0AAC7948C4A103B284B0F3DCC1262 /* RDEPUBBuildDiagnosticsReporter.swift */; }; + 6CE3DD94BDB5F75D648201EB01DD9986 /* ZIPFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B41F7D27C2336F89BB0185ACB0B19EA9 /* ZIPFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6D36BACFE1C53D5E5AF5F89EC910AB57 /* RDEPUBSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78B43BA14CD70F5448082DE1EE73B034 /* RDEPUBSearchEngine.swift */; }; + 6D753927C673A54E3324CC80F3B797F3 /* DTCoreGraphicsUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C1A7359A45BB880877A672C57F522FE /* DTCoreGraphicsUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6DB3139A32F959E5660143F92B1B9E02 /* RDReaderViewProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF55DCBC3A5B0BEC5B1A4C6187F20D38 /* RDReaderViewProtocols.swift */; }; 6E3D0FDD78ECC20F4B3697ED21D64224 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C2B218B5EAA5831A036BBF7E1EFC1B9 /* MediaPlayer.framework */; }; - 6E8441F463F68A5FEC44C69BCF77EAD8 /* RDEPUBAnnotationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 685FE9B1A888D8D05E9AC049787CBC8D /* RDEPUBAnnotationModels.swift */; }; - 6F0D1C67B483AE83D93F884A04CF6EC8 /* RDURLReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CABD2C55EE6F8759C2702014273F00 /* RDURLReaderController.swift */; }; - 6F5B9493A5058F7DD16AEA802C1C76EC /* UIScreen+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C5E29D728B8CD4EABC0B3DD9CD9DE99 /* UIScreen+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6F8ABC6B6D2316E3533A21E86DC3C1A7 /* NSDictionary+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = 05838D65DEC339C51AADB17346B7E287 /* NSDictionary+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6E6B1F175FA7E69A77604DA9FBA74F7A /* RDEPUBChapterData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317357794EF461FA4C6992E798C900DF /* RDEPUBChapterData.swift */; }; + 6ED8ED03655DAA19AD28AB74929C8D5E /* RDEPUBNotePopupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52A7FCBB2219561212D36C393B333E8D /* RDEPUBNotePopupViewController.swift */; }; + 6F0024AAF00C39496470ABDA6311FC34 /* RDEPUBTextLayoutFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E94387C53C6E054A73F8EE89787003D /* RDEPUBTextLayoutFrame.swift */; }; + 6F111FA5A549C14B477D6D11A072C865 /* RDEPUBChapterRuntimeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7118633F5A91B2900F602E19CFD15D1F /* RDEPUBChapterRuntimeStore.swift */; }; 6FA0125F16DDEDAD341DB75DEB084F4B /* DTHTMLWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = B23C5F038DAC52B75213C0760C431F2B /* DTHTMLWriter.m */; }; + 700215E76C62321BBD343D2FA26AC750 /* DTCustomColoredAccessory.h in Headers */ = {isa = PBXBuildFile; fileRef = BAE45673EE2875DB23FA7BDD61FDE1EF /* DTCustomColoredAccessory.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7027EF8D77D4082C1BB9B80FF61FCADC /* DTCoreTextLayoutFrame+Cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 214F0FC87DE99D3FCE69D98B357F3FFC /* DTCoreTextLayoutFrame+Cursor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7137779222F4F680762DF31046A48EAE /* DTLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 207CC0EEB74CECEB43A870FF80560E0F /* DTLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7153939E3B654645EC94EA0E03470D23 /* Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3E162E0261A5B0850158D3403191E62 /* Archive.swift */; }; - 717C9A6838893A778C48AE1A4ADC1D93 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53EA3F44C0602B1BEB2F85B59B32CB3 /* RDEPUBTextContentInteractionCoordinator.swift */; }; - 71D61645B7F86868B09D2D8628FB02DB /* RDReaderFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56A9260F17C4825708B83598BEC99365 /* RDReaderFlowLayout.swift */; }; - 72CA345F4639CA9C6AF9C164515070B6 /* RDEPUBReaderLocationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60FB0E099208100165A2E44F44CA76B1 /* RDEPUBReaderLocationCoordinator.swift */; }; + 70423D7766237808D787F70649D66D2D /* RDEPUBMemoryProbe.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE883C47DFCDA257928D7BCC153B127E /* RDEPUBMemoryProbe.swift */; }; + 70B2498BF424D327D9F685942E2545FD /* epub-fixed-layout.html in Resources */ = {isa = PBXBuildFile; fileRef = C229DC7F5A2BB8C2A3C586FF6CF41D47 /* epub-fixed-layout.html */; }; + 721100E1D82608E783B22C3E07699E7C /* RDEPUBReaderSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61EE5C61A8163892E9A19C231828658C /* RDEPUBReaderSettingsViewController.swift */; }; + 72BDDBEFDA5D6E7FC270C312B1BCC4DE /* RDEPUBTextPaginationInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ED87665B0B64B6E8153C0490203E43B /* RDEPUBTextPaginationInterfaces.swift */; }; 730ACB99580C5982DC08D50FC5084D41 /* DTAttributedTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = B4D20A2B33F9F4DD8499FB462DE2731F /* DTAttributedTextView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 73E26B43FD89D6F9E5D6E53888DCDA0C /* DTBlockFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D2316F422A6C97F95F9CF43E6F8E94F /* DTBlockFunctions.m */; }; - 73EA755F8A8DD59544C39033CEDDE43F /* NSArray+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = C7E09A6C247D465CA0EF71B939B2A040 /* NSArray+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 73D0271B76B6262C2300B3C7DB163DF2 /* RDReaderView+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D24E48ADEAADE831B2F5FAFBF67CD53D /* RDReaderView+CollectionView.swift */; }; 7408D293C24C3BD9CBBCBB530B50938B /* Pods-ReadViewDemo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AA0811310099A4BCB3D52683B70DB3D1 /* Pods-ReadViewDemo-dummy.m */; }; - 741FC27B73B2FC912CE6940374608E74 /* RDEPUBReaderServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FDF74546728C05BFEA4B3BC4D6905AF /* RDEPUBReaderServices.swift */; }; 7459A1656EDC29D685073B83561B783E /* NSNumber+RomanNumerals.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CFFB65C5D340A4B5C627B3EF02CD127 /* NSNumber+RomanNumerals.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7528B559334EFD3C17196C52EA4B28F0 /* RDEPUBWebContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F66DD9D0E36BCFB8D70F713B112FFC5A /* RDEPUBWebContentView.swift */; }; - 75BA64D63D4FEA1DA5BF5C89CAD4963D /* NSURL+DTUnshorten.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A6A858B976D032A3C61540AFF19DEE4 /* NSURL+DTUnshorten.m */; }; - 76BF72753C25298968F8446D1FEDD9C5 /* RDEPUBPageBreakPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD3430DE68FE0020F68C496C24E87470 /* RDEPUBPageBreakPolicy.swift */; }; - 7730A0D6848C96EE7307338241444A1D /* DTWeakSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = E4C5EB3F8F005C65005C101A9DBE488A /* DTWeakSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 745C41558A0E86F1EE7C1C7D15180C06 /* RDEPUBReaderChromeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0763B05C11F090D063D1BF3D9E6C31B7 /* RDEPUBReaderChromeCoordinator.swift */; }; + 759B37F4E343E04EEB2EFA3CF524A47D /* RDEPUBCFIMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11C3B7C93919D787AAC0C4D25E52805A /* RDEPUBCFIMarkerInjector.swift */; }; + 777A8C7B4DFA0A72A6E20A1E76D213F3 /* Archive+MemoryFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF51E56E09E095C92CB5B9F21384027 /* Archive+MemoryFile.swift */; }; 7821105EF320619993B3BF7FB90C7ADA /* DTCSSStylesheet.h in Headers */ = {isa = PBXBuildFile; fileRef = 796EF27FF6AA4B62367B6BD9CEBD85A8 /* DTCSSStylesheet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 789E8F623B7EC480E167CCFB17B32328 /* RDEPUBPaginator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65572083A10EE0C48AA7F493F923BCC0 /* RDEPUBPaginator.swift */; }; 78D24D82D98D77E744FF73C9040618A8 /* DTHTMLParserNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5001C74FB9506AEC71E458047698A4AB /* DTHTMLParserNode.m */; }; - 797848B2163C1E4E5F1446D9B867BA30 /* epub-fixed-layout.html in Resources */ = {isa = PBXBuildFile; fileRef = C229DC7F5A2BB8C2A3C586FF6CF41D47 /* epub-fixed-layout.html */; }; - 7A1CB3B032A352C23503837C966FE021 /* RDEPUBReaderController+ContentDelegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3416C45A5E4AEF922A7D3804F0A05EB4 /* RDEPUBReaderController+ContentDelegates.swift */; }; 7A48CDFB40202EFD09A2A9AB0EE0770D /* DTCoreTextFontDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EF19AD0EF4889156D46061FB43E0F5D /* DTCoreTextFontDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7BF06C839584BC5C3F22B7922B2135C0 /* RDEPUBReaderLoadCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77CF002A64746DB8BE37C9DC0941C805 /* RDEPUBReaderLoadCoordinator.swift */; }; + 7AB9F2AE594BD802C76BBA4980E19705 /* RDEPUBReaderDependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC2E45BB6FF85A1D1E2C853B5AB68048 /* RDEPUBReaderDependencies.swift */; }; 7C05F56B62B15EFF344C5CDE4A52B8FB /* DTHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A4E9E54E556A72BC885CCC08B3791C1 /* DTHTMLElement.m */; }; - 7C12C095DE7472FF95E05E35601C3988 /* RDReaderViewProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF55DCBC3A5B0BEC5B1A4C6187F20D38 /* RDReaderViewProtocols.swift */; }; - 7D68FBD206B150ECFB850BF21DFF1D54 /* NSMutableArray+DTMoving.h in Headers */ = {isa = PBXBuildFile; fileRef = 3046397381A83C2F6BAF344B86AD176E /* NSMutableArray+DTMoving.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7DC14CAF5CB1827AB6622A3468247D05 /* DTTiledLayerWithoutFade.m in Sources */ = {isa = PBXBuildFile; fileRef = 23006DBAC610AEB0A4B3EAFEA4FB0567 /* DTTiledLayerWithoutFade.m */; }; - 7E082BDFF91E79A320FFE58301A4611F /* RDEPUBReaderController+TableOfContents.swift in Sources */ = {isa = PBXBuildFile; fileRef = F08981630C2BB2DF438340C175302A5D /* RDEPUBReaderController+TableOfContents.swift */; }; - 7EC0B3F00E142D2EF8AD8C426519B8FB /* rangy-serializer.js in Resources */ = {isa = PBXBuildFile; fileRef = 1527510DA54482E3557D6BB3EB651015 /* rangy-serializer.js */; }; - 7F06B128ECF3428FDAB9B0CDAEB50527 /* RDEPUBResourceURLSchemeHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B5686B2CD1ADB2443ECF94B15903873 /* RDEPUBResourceURLSchemeHandler.swift */; }; - 7F40491F86024E8AFE5253431DD93405 /* NSData+DTCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 94705DADD1F09F4162F7D733318238F4 /* NSData+DTCrypto.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7CDBBCF9CC1552D3AB0B095A1AA6FB5A /* RDEPUBSettingsFlipAutomation.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1213E5EB8A69E4CD2283819D92718 /* RDEPUBSettingsFlipAutomation.swift */; }; + 7F6038D943A16DE9AC6A1C0F7A0402BC /* RDEPUBParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AACA59CA4CBD2AFAACC3D162C2C75B5 /* RDEPUBParser.swift */; }; 7F9CC306B17D409DB903DF850FEDA64C /* DTListItemHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B18088896D291E0CE7718DFE82FAC1 /* DTListItemHTMLElement.m */; }; - 80922C1B7510E10B313BBC0BC457314B /* RDEPUBReaderPaginationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EF9571672022F0A84D66AC6E6F91305 /* RDEPUBReaderPaginationCoordinator.swift */; }; + 7FE9F58EFF876EC8014F334CAA38D30E /* DTCustomColoredAccessory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9542AFE3A82C8AE56576254CE196E71A /* DTCustomColoredAccessory.m */; }; 8099F1E613A15275EF5FC59ED3C73579 /* NSAttributedString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 7805DFC2CB71F5B6BBF7891876360EFB /* NSAttributedString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 80E64600E4FF6A3D54497AFCEB21A330 /* RDEPUBPaginator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65572083A10EE0C48AA7F493F923BCC0 /* RDEPUBPaginator.swift */; }; + 81086388CAAFC08F99A6CFBC54E612FC /* RDEPUBRuntimePageCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = B68E527967EEF7E7E61E5B5F1F64C791 /* RDEPUBRuntimePageCount.swift */; }; 811D7CBCD710AE45FF80A4B05BFE444C /* UIFont+DTCoreText.m in Sources */ = {isa = PBXBuildFile; fileRef = CEBA01360577AAD3FD089B6B17C24260 /* UIFont+DTCoreText.m */; }; 814D0D63E5FD4AB7231E63064FE9EB5C /* NSAttributedString+DTDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 5096458D9BD2818F786BC3B61B91EAC7 /* NSAttributedString+DTDebug.m */; }; 81905A7717925A17E6B98E934A75B8BA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0834E84632886CDD9911CAB76183F1CE /* QuartzCore.framework */; }; - 81B117A37A8476877A9F52EB0E1519F7 /* RDReaderView+ToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83041D1E40ECC246DB5539C712499A09 /* RDReaderView+ToolView.swift */; }; 82119A0DC4981CC2AF389C7C4CC08186 /* DTListItemHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DB480D0B78911DBF96986E64A714907 /* DTListItemHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 828F623C86C2A80E235B2134A0CCA664 /* RDReaderView+PageCurl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499C327E148794A7F09BAF1C83BE59EF /* RDReaderView+PageCurl.swift */; }; + 83519082B9AE779AED5292F7BEC3F536 /* RDEPUBPageInteractionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A01E0B0F5FAC4DBF5D1DEC0013417AC1 /* RDEPUBPageInteractionController.swift */; }; 83A4BC9FE4765C9B848DD4925D99F362 /* DTAccessibilityElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D146C3F4B7878B5CE8EFF38765580C2 /* DTAccessibilityElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 83E65FA5AC30BF60417B8D6D19556359 /* DTAnimatedGIF.h in Headers */ = {isa = PBXBuildFile; fileRef = F9D9BEF72311AF9E3239F9B92A9D2842 /* DTAnimatedGIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 83EA663B7BB067DD5EDF4ABAD045622C /* RDEPUBCFIParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ADCC15F3965570C3568420F9A75845E /* RDEPUBCFIParser.swift */; }; - 8557BEDD77A0FABC469CDA90D3402C2B /* RDEPUBTextLayouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86526ADF32337683AA173B5FC1E6A94C /* RDEPUBTextLayouter.swift */; }; - 86D6DD3DAA214DF9228D219A1C15B12A /* RDEPUBTextPageVerticalJustifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCD1EE67D4C520598E5975F0489DCB87 /* RDEPUBTextPageVerticalJustifier.swift */; }; - 86EB794495FA09BC2E166B43002DAFC5 /* RDEPUBReaderController+PublicAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1859C9EC3263145CE262EC15A12B6BE4 /* RDEPUBReaderController+PublicAPI.swift */; }; - 879B5366A6BB373F77010F2CCE776F4C /* RDEPUBReaderSearchCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD4E4C38FE23EEF72D4049DBFADB922C /* RDEPUBReaderSearchCoordinator.swift */; }; - 881E6C18B19215333585C4A16E3F413A /* UIImage+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 499E135F1FEB31C26EB0EF793A90086C /* UIImage+DTFoundation.m */; }; - 88F114C6286AA4DABEFC5A4A4659C539 /* RDEPUBReaderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C5B9705D72218CB383307A329C9060B /* RDEPUBReaderConfiguration.swift */; }; + 840CB4AD602D707E2C2C4FFB41556248 /* RDEPUBReaderUIState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EED5E2706CF825A44883E6FC04A74AEA /* RDEPUBReaderUIState.swift */; }; + 857E62043F8CC55F9663CFDE0AEC96ED /* Data+CompressionDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B46EF6F055A721AF370D705D026E9E /* Data+CompressionDeprecated.swift */; }; + 86CE7CF558D2DC085C9D6DEC7B2FFA2C /* RDEPUBModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDFEB59EC6040AB3CF58E4E1045A8913 /* RDEPUBModels.swift */; }; + 872AAE3DA53479C97D1DA24E9DDFD043 /* NSURL+DTAppLinks.h in Headers */ = {isa = PBXBuildFile; fileRef = A3F7613E99CAA29881A015D0ED969B86 /* NSURL+DTAppLinks.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 873DF3287B8B155EDB5F2FEE84DDAF13 /* DTExtendedFileAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 56E8939081946D090FD77A04F879754C /* DTExtendedFileAttributes.m */; }; + 8823198305D6AF3485BC4DAA84CA08CE /* UIScreen+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = AF436E76C893E223A4F0BE86C1276054 /* UIScreen+DTFoundation.m */; }; + 884C57253DC39B361B9D821059BBCB0B /* RDEPUBTextPageDecorationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7ECD7EBE082C509350CCB121EE308F6 /* RDEPUBTextPageDecorationView.swift */; }; 8A0A0FB23DB0021ADC9AD0D90631883A /* NSMutableString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 52053ABC9CD3D4A72CD8A22173428AEB /* NSMutableString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8A35CC67F0AA6B26397C10D756EA34E8 /* DTTextHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = ED9A1EBDA0FD72671C7F6FE15F37B906 /* DTTextHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8A666D6696060E7CD204E87C00BE5B14 /* RDEPUBChapterTailNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A59C77DC849EDF86936A25873E674F72 /* RDEPUBChapterTailNormalizer.swift */; }; - 8AA93AAAC288A910A46B6418DEDBA643 /* RDEPUBPublication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FA2158447C66C1AA074403C4AEF1BD9 /* RDEPUBPublication.swift */; }; - 8AC8341ED75EF88F3C8EF4B750ADA8E9 /* RDEPUBTextIndexTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80F1F9A3C3AD1C55622B17CA5D503766 /* RDEPUBTextIndexTable.swift */; }; + 8A6DB3C30CAA5C433EB4A6964D59411B /* RDEPUBTextSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24130F5639CFFFA28D8BE6C2BD7A45FE /* RDEPUBTextSearchEngine.swift */; }; + 8A9ECE2E8CD637210EAEACA2930CB20B /* RDEPUBTextIndexTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80F1F9A3C3AD1C55622B17CA5D503766 /* RDEPUBTextIndexTable.swift */; }; 8AC90941E71199090BCED76DE89EFB60 /* DTAttributedTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = F46010C3A0C82AE5ABEC814D7EC6351B /* DTAttributedTextView.m */; }; + 8B2918CC0175499F973B3EC6E6CCAD09 /* NSString+DTPaths.m in Sources */ = {isa = PBXBuildFile; fileRef = D30DBDF1EDB20CF83690AC6619AA0C48 /* NSString+DTPaths.m */; }; 8B405CE13E7D718A9340A82B52766AB2 /* NSCharacterSet+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E167717A18E0C858C6FD95804249E4 /* NSCharacterSet+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8D3C1C271D61E160F1F39548AB40B82D /* RDEPUBReaderHighlightsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4537790EA93442CD0FA48609D7ADDD13 /* RDEPUBReaderHighlightsViewController.swift */; }; - 8D7B76D2BE87960C41554815520FBFD4 /* RDEPUBParser+Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 170D81239AF3CE5CD64BA2E44A505872 /* RDEPUBParser+Resources.swift */; }; - 8E7372FDB503AAE2B99CAF40DF2083C5 /* DTPieProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA617294E6371DD7FAC32B61E0873F2 /* DTPieProgressIndicator.m */; }; + 8B59DB319C18ABA52569DE2683A0BA70 /* DTFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FF1C41D226C0957F715EFF3F23893386 /* DTFoundation-dummy.m */; }; + 8B98912F325274D04D610B3FAE7782B4 /* RDEPUBTextSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 745B50420148262217CC19E5B8E1E61A /* RDEPUBTextSelectionController.swift */; }; + 8C58B34D8DE85D12F107B697D7CBDD33 /* RDEPUBReaderState.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDF2713051A7FCC4BA20AD1374044971 /* RDEPUBReaderState.swift */; }; + 8C79FF60C4C70F03F4EA4C8F6713B392 /* RDReaderView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 36606A851BDB5FFF6E9BFFDD7FB72455 /* RDReaderView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8DE51BB0432FCA906EE574F54728D7CF /* RDEPUBCFITextAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE1B490DE56DE55724779E3E8BF6D14A /* RDEPUBCFITextAssertion.swift */; }; + 8E1761DA4D139D2AFBC9672FB1FB78FB /* RDEPUBChapterLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B02D3DE3AD6CA9AC5B80F44767F647FE /* RDEPUBChapterLocation.swift */; }; 8E8726381CBCFB1EDB350183456D4EF7 /* DTHTMLParserTextNode.m in Sources */ = {isa = PBXBuildFile; fileRef = E5377786E80195587BF3E8A7589E5925 /* DTHTMLParserTextNode.m */; }; - 8FC3334B09D284CB92164B6109124472 /* RDReaderPagingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C99F4EC07FF6B3DD8C8B72E54DEB008 /* RDReaderPagingController.swift */; }; - 8FC40E552134EC459638871941437C41 /* RDEPUBReaderUIState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFDE9DF5F8221764CC5AD1218EC24236 /* RDEPUBReaderUIState.swift */; }; + 8F4BA91E37DA06CD0BBEDF9D0C5D9150 /* RDEPUBStyleSheetBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72F99D96321DF0F2BC595BC7B6A66EA2 /* RDEPUBStyleSheetBuilder.swift */; }; + 8F6093E0D4A2EDA6502FFA163A95EF03 /* RDEPUBCFICompatibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F08538F2728E3B8B81113D12DB74E3A /* RDEPUBCFICompatibility.swift */; }; + 911A30689EEF1FAD44FC96D757920A6E /* RDEPUBTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B35A0451D9A3CF5477258E38D363189 /* RDEPUBTextRenderer.swift */; }; 91FDA47810CE5CE2C48AED9205AE89B5 /* DTStylesheetHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 354C1C3A74DB75C8B8608D538212A963 /* DTStylesheetHTMLElement.m */; }; - 921EA744654E430A9220D70229C58FF6 /* RDEPUBDarkImageAdjuster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F899D2164D781FF192129E1C659613F /* RDEPUBDarkImageAdjuster.swift */; }; + 92429AC50D8D9C9393EC06D275CDC5EE /* NSDictionary+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 45A67761829BBB3974CE24FE50E459EA /* NSDictionary+DTError.m */; }; 92C59F96D443525E8833676479FA60C5 /* DTVideoTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C2868064310B16D2B5FD9901C846DC /* DTVideoTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9312AA458DE13E4AAA10D6E6F063F30C /* RDReaderGestureController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE6582B1336C77B6C366DAA669570B4A /* RDReaderGestureController.swift */; }; - 945A2981673EAAB7C06985B69E0B8B5D /* NSString+DTUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F3E93C4AC73A09DE1EAE805B0ADE3306 /* NSString+DTUtilities.m */; }; - 9478E840174081089888DA0CA4AB6F01 /* RDEPUBTextPaginationSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4609798012DB9C5B85641224CD6081D /* RDEPUBTextPaginationSupport.swift */; }; - 94C4899B76DF8F45F3E49243780A055D /* RDEPUBMetadataParseCancellationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 995E88CDC3691BA531FF7951E4C809EC /* RDEPUBMetadataParseCancellationController.swift */; }; + 9400BE65C1A692BC1413843076D6EB03 /* RDEPUBMetadataParseWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E238CC0941838E4BFCF81D523FFA0BF /* RDEPUBMetadataParseWorker.swift */; }; + 944B8F27F21C924747CCBCBC74517808 /* RDEPUBReaderEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91D2B14530EDF4C2D742B24A0D32B858 /* RDEPUBReaderEnvironment.swift */; }; 94F5846979DBC90E2B646E975F5ECBA8 /* DTHTMLWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 14E63A0D35D4A07BD0123021EA161C99 /* DTHTMLWriter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 96FEC32CA46D2AB578F12624B72D2E9C /* DTFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FF1C41D226C0957F715EFF3F23893386 /* DTFoundation-dummy.m */; }; - 9822E3B0CC3AF9A72FC29DEC11ECEAAF /* Archive+Reading.swift in Sources */ = {isa = PBXBuildFile; fileRef = E865600EE9117A9153716299FFA7912D /* Archive+Reading.swift */; }; - 98444DBE3A27073D4853E86F5CAD39C1 /* RDEPUBCFIRecoveryEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35803D654BE44326A28A0947DD178B63 /* RDEPUBCFIRecoveryEngine.swift */; }; + 967B256ED1342620B974B79ECB14CB02 /* RDEPUBReaderLocationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF1367D7047430E833E1596CCB9D7592 /* RDEPUBReaderLocationCoordinator.swift */; }; + 97815755305FE4263E834D2E733D7244 /* NSString+DTURLEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = CEEC8715398E89B42F9B04E290E8E4FE /* NSString+DTURLEncoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 97A08769271E83386E538B6CA488A1D7 /* RDEPUBHTMLNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3B908A78A947A1A9D66C368CB616DE4 /* RDEPUBHTMLNormalizer.swift */; }; 9854DC3F1763B6272C2EA3FC6EC40B95 /* NSAttributedStringRunDelegates.h in Headers */ = {isa = PBXBuildFile; fileRef = 30EB4CF4AD4114DE53786C318621EB19 /* NSAttributedStringRunDelegates.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9872A011777E0E50DDD196FA54ED0284 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */; }; 987538B07E11741899878EA8BC947F51 /* NSCoder+DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = A592A34CA2EA792DDFAFAEB516FE8A10 /* NSCoder+DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 989D55577D97CF4AEDF31A7A2BB2CF78 /* Entry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D93C2002AAECD29B3ED5A14026D3DFE /* Entry.swift */; }; 9917E9B804CD33AF3BE2A992A3510C97 /* NSNumber+RomanNumerals.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E21B10EE150F00F245D297EAB7F2BA2 /* NSNumber+RomanNumerals.m */; }; 992B7C8C824B5EA190EF1DB096064DB7 /* DTDictationPlaceholderTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D0856C3894240A673B5AB7C2704E9144 /* DTDictationPlaceholderTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9968BDA6D208A701E8014B01B9683683 /* RDReaderView+PageCurl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499C327E148794A7F09BAF1C83BE59EF /* RDReaderView+PageCurl.swift */; }; + 9ACDE3CA3FE3A60AC27687C656FB419C /* RDEPUBNoteResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11D2090101EA891F21834863EE859AE8 /* RDEPUBNoteResolver.swift */; }; 9B199D71D2F48B2055A7FDF9BD7051CC /* NSString+CSS.m in Sources */ = {isa = PBXBuildFile; fileRef = 8718F2DB8F0DC085CB012D9996596F3F /* NSString+CSS.m */; }; - 9B1CEC717F3D521122785DB02A077BED /* wxread-replace-latin.css in Resources */ = {isa = PBXBuildFile; fileRef = 4F5A145710C3E212B771C4E38BED9926 /* wxread-replace-latin.css */; }; + 9B1BC6991EADCE68D8C556C23803C70E /* WeReadApi.js in Resources */ = {isa = PBXBuildFile; fileRef = 3AF63806C4793F384C4CF28201BC756C /* WeReadApi.js */; }; + 9B7D4D2064D42DC7649C5A9B0A90DBAD /* RDEPUBRuntimeChapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 462F0F78022064457859139A0D9B8D3E /* RDEPUBRuntimeChapter.swift */; }; 9BD146F72B29C703798001F138B069C2 /* NSCoder+DTCompatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 753994141ACB981C898B36B761321C23 /* NSCoder+DTCompatibility.m */; }; - 9D4364E686CE29303EEA24086C549C2A /* RDEPUBNoteModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D0BFFD14B93A2F313B937F14652738C /* RDEPUBNoteModels.swift */; }; + 9C7780A496D623BBD48A87117EE07140 /* RDEPUBTextPageBoundaryValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 457B5F878654F351DEB25FAF4076AE4D /* RDEPUBTextPageBoundaryValidator.swift */; }; + 9D682703886BFAD8E7BCD0FE2EB1F78E /* RDReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9B4C7EA8E0601A462DDA753AFA93E66 /* RDReaderView.swift */; }; + 9D70BB28324C9FF5C0EFC5B4A7FC8D34 /* RDEPUBCFIMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0390F2BB06B9CE8FCBCD30D60C154B9 /* RDEPUBCFIMap.swift */; }; + 9D87AFB2CD371D4C2E4DF923743A3006 /* DTBlockFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D2316F422A6C97F95F9CF43E6F8E94F /* DTBlockFunctions.m */; }; 9DE04C83A68C7512C0A860FFF5CEC113 /* DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CF7CEB31BED0554F3EF3D3442A89B47 /* DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9E4AB71DE8B3E7218B53B2C8EF6B843A /* DTAttributedTextContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7203B4D9D997037E0F9D154A3B049738 /* DTAttributedTextContentView.m */; }; - 9F09BFBCF74E17B9BFD3FBB37BFAC7A6 /* RDEPUBParser+Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = F94780553A2ED7BE5E972D634F7F52DE /* RDEPUBParser+Package.swift */; }; - A0313009309C859841F55118BC23E3EA /* NSFileWrapper+DTCopying.m in Sources */ = {isa = PBXBuildFile; fileRef = D9A812C3E577A3ADC36BAE3FF7AA4D9C /* NSFileWrapper+DTCopying.m */; }; + 9E94C953488AA36229B1AFBFA32BBED5 /* RDEPUBBackgroundCoverageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 113B414F4DD510248C8462427553EDF1 /* RDEPUBBackgroundCoverageStore.swift */; }; + 9EDEF94D4426C164FE9A2E2FA36ADC37 /* RDEPUBReaderLoadCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B660A95A07E55AE3763E8F908456150 /* RDEPUBReaderLoadCoordinator.swift */; }; + 9F00ED88950CC6FE3294B3484035AAE2 /* wxread-replace-latin.css in Resources */ = {isa = PBXBuildFile; fileRef = 4F5A145710C3E212B771C4E38BED9926 /* wxread-replace-latin.css */; }; + 9F179DC382D2EC073B078FD429DEE6CF /* DTWeakSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = E4C5EB3F8F005C65005C101A9DBE488A /* DTWeakSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9F1B5F23AF8841B11D008BE9356D74C1 /* RDReaderView+ToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83041D1E40ECC246DB5539C712499A09 /* RDReaderView+ToolView.swift */; }; + 9F7BF25BE458742AEF685FDBF03E8F6B /* UIView+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 29DEA4D201BB179BB6E228E9F688CD4C /* UIView+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9FA66A3511705E7CF26F5F37F507875C /* RDEPUBReaderToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FAFD969C7141125539E80810C0A6A9B /* RDEPUBReaderToolView.swift */; }; + A0BF95B1A71DCE42E810D983687BB7F3 /* RDEPUBReaderAnnotationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4416B5CBB4AF36581524965A8C8F53F /* RDEPUBReaderAnnotationCoordinator.swift */; }; + A0E447FEA7D1488ADCE2972E526D92D0 /* DTHTMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 71BBE6384315D7F00F5ECFFF67A85AF9 /* DTHTMLParser.m */; }; A132A0C9EB13B65FB886B11AA2E6304C /* NSDictionary+DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C891B983F0CC956CAE3978A15875819 /* NSDictionary+DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A17B2DB5E14E8116012BF21BB7721638 /* RDEPUBSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78B43BA14CD70F5448082DE1EE73B034 /* RDEPUBSearchEngine.swift */; }; + A15EA1D45DE28B8883D692ED66DC13DD /* RDEPUBWebView+Reflowable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AAC2FDC24D8604A39BD25111689D06A /* RDEPUBWebView+Reflowable.swift */; }; + A1F973FDFDF76DF8D0933605D66EBDA8 /* RDEPUBPaginationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 422DAC763888F8667708F7B66F9C701E /* RDEPUBPaginationModels.swift */; }; + A237D8BD5695BD412EFBF94B0FECE210 /* NSData+DTCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = F63EBF2BF3000B3391F6E693581EA129 /* NSData+DTCrypto.m */; }; A2CA9C27EB2B77637A12723F8CFE7AAB /* NSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = FA107BE47514D01B94B7A2670A9F83E5 /* NSString+HTML.m */; }; - A2FA7374B3F6D6E723AC19A380DF704C /* DTHTMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 71BBE6384315D7F00F5ECFFF67A85AF9 /* DTHTMLParser.m */; }; A30D5C1E413A3D319A83D3410A8A549F /* DTCoreTextParagraphStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = B7C4233DF4FA80BF4A9E6FA5082D49E5 /* DTCoreTextParagraphStyle.m */; }; - A4123ABB5380886FB6EEB339384892F5 /* UIScreen+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = AF436E76C893E223A4F0BE86C1276054 /* UIScreen+DTFoundation.m */; }; - A4B441D1E79D04445DAFA6865FFE41D9 /* RDReaderView+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D24E48ADEAADE831B2F5FAFBF67CD53D /* RDReaderView+CollectionView.swift */; }; - A4E1287AFDA66235AD864D556D56D867 /* RDEPUBRuntimePageCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = C52AC0144029821AA538D6165315C585 /* RDEPUBRuntimePageCount.swift */; }; - A6C87CC6692C9C833DA11D0A3D9F6477 /* RDEPUBNotePopupCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FAD41FF83513826720C6497B7A818B6 /* RDEPUBNotePopupCoordinator.swift */; }; + A58C42A9E07E7FE0F012C72C8875BE70 /* FileManager+ZIPDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F49FC82A04EE9B3B49CBA6CB88ACBC67 /* FileManager+ZIPDeprecated.swift */; }; + A6082878B9CCD86C68D33404E50F9C69 /* Archive+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C9CA544EBF55130625F6C3AD2ABFB4 /* Archive+Deprecated.swift */; }; + A6B7BEBBE39A4D2CCA975B69A8FF385D /* Archive+WritingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2373DCA0FC45287BFC063BEA661B8367 /* Archive+WritingDeprecated.swift */; }; A72E9F983E5BBFA7485EFB482B80E89E /* DTWeakSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = E687628EF2FE92D093E3005D21B578E5 /* DTWeakSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A7D06BA48ADC3D9B552018F7571D2E78 /* RDEPUBReaderChapterListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B42B8B70BAED6BCED06FF54636A4FF0C /* RDEPUBReaderChapterListController.swift */; }; A7D665BBDADBE3D64023FF52E218FCFA /* DTCoreTextConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = E89F199ECDE796B15CAF8E0C1775FAA6 /* DTCoreTextConstants.m */; }; - A948E3CF55F94BD4F4B4D1D27463F350 /* RDEPUBSearchModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07E07EEE45C5439A207C5647210A4A7F /* RDEPUBSearchModels.swift */; }; - A97EAA78ADAB17BFF4DB70AD2CE36A2A /* RDEPUBJavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = F69C9651823EAB579B078EC3B7435D16 /* RDEPUBJavaScriptBridge.swift */; }; + A85A3014D81A83761428B0F3A13153DE /* RDEPUBReaderContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92CEF2B1CC1AD607F9F46594DADCE788 /* RDEPUBReaderContext.swift */; }; + A87317751C202D7AD8713AC8B31BFE16 /* RDReaderView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C3DEA097D20AC964CFB673C39B4A8AF /* RDReaderView-dummy.m */; }; + A87ECC764B3058BD18F068F5235C0409 /* RDEPUBPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1EAAFA56DA59E80D53DA0DC7C6532D2 /* RDEPUBPreferences.swift */; }; AA3722CC8B4992EDA8A9F5E9116835B7 /* DTCoreText-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B6CA8CC4525EF64AA5CEE4A722737F1C /* DTCoreText-dummy.m */; }; - AA5731890291922E24FB7FFCC22F41A9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - AA7629F822C3DCAECBB5DCD1BC495E84 /* cssInjector.js in Resources */ = {isa = PBXBuildFile; fileRef = 2EBD41467F344F6091AD0C1A3981EDC3 /* cssInjector.js */; }; - AA7761395401FB118FB850405492811D /* RDReaderPageChildViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33452E6D078F6CC1EF8A17DF42966CAA /* RDReaderPageChildViewController.swift */; }; - AC13F15F74244055FDC349A8D8BCD78F /* RDEPUBTextPageBoundaryValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F77E0B31CE94ED97B9E5C254BF0DB072 /* RDEPUBTextPageBoundaryValidator.swift */; }; + AA9ACAE70A4CC306428EDC279545AC17 /* RDEPUBTextPerformanceSampler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8300EA716892548FEA44EC27801F5987 /* RDEPUBTextPerformanceSampler.swift */; }; + ABA19D640CF2E239820BFCC47CF6CBD4 /* RDReaderSpreadResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 008302A48FE881CADADBCB02832B880B /* RDReaderSpreadResolver.swift */; }; + AC6986BEB5202AD38DADBDCA5E6E35AC /* NSURL+DTComparing.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F1F7BFB63DE15D627EB8F64829B8AAD /* NSURL+DTComparing.h */; settings = {ATTRIBUTES = (Public, ); }; }; AC7000465258822B466855B12F1F97A3 /* DTCoreTextGlyphRun.h in Headers */ = {isa = PBXBuildFile; fileRef = 771E0D5CBCBC013BF5780FEE5BBA81FF /* DTCoreTextGlyphRun.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AC7BC683CD9A6CE43F2473EAA729C0FA /* RDEPUBCFIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C1CDD44F96B466A619015AA0A7B2D17 /* RDEPUBCFIError.swift */; }; - AD63555565A9FC36E9AD69AE8E7D1147 /* RDEPUBDTCoreTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 505D658FEB22042EEDC51D402700F8C9 /* RDEPUBDTCoreTextRenderer.swift */; }; - ADD3B6D991C8DB8AB9DCA9568787D344 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0834E84632886CDD9911CAB76183F1CE /* QuartzCore.framework */; }; - AE1553D719D16EEC2847D111B5903892 /* RDEPUBAttachmentTooltipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC75B34F4CE50854BC099CE73D139FCC /* RDEPUBAttachmentTooltipView.swift */; }; - AEE390923BE11EF94ABB8172930A261B /* RDEPUBCFIRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842B11843F82FBEA1D725543ACAB02CE /* RDEPUBCFIRange.swift */; }; + ADFF1DCD1BBCDF63976D472155FDE109 /* RDEPUBChapterSummaryDiskCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347A1849A630130CBFBDD4DDDC44A51A /* RDEPUBChapterSummaryDiskCache.swift */; }; AF7A1DC953992A149CB0815C90769529 /* DTIframeTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D4C731AA2088D7E873D8E3D21B95D215 /* DTIframeTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AF7EF16703AD0BAF5F926A254B0C9E9C /* Archive+WritingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2373DCA0FC45287BFC063BEA661B8367 /* Archive+WritingDeprecated.swift */; }; - AFCEC5571D0C75E38AD2D3AB0B027CA3 /* Entry+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 288589D0B52F73505B43C743D9837578 /* Entry+ZIP64.swift */; }; - B11B4F2E3F64763587B6C27C0F09E0E8 /* RDEPUBStyleSheetBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72F99D96321DF0F2BC595BC7B6A66EA2 /* RDEPUBStyleSheetBuilder.swift */; }; + AF94C02DCB17B49683E8D66372238792 /* RDReaderView-RDReaderViewAssets in Resources */ = {isa = PBXBuildFile; fileRef = 83410CC9CF2ABE63B90A92F2F988BF65 /* RDReaderView-RDReaderViewAssets */; }; + B0075EE1F2539980DC68350A92C8F464 /* RDEPUBParser+Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = F94780553A2ED7BE5E972D634F7F52DE /* RDEPUBParser+Package.swift */; }; + B11CE7833B93D2AE5CDD0F71DAFF5012 /* RDEPUBWebViewDebug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C59CB44187E054E80CA13F60FF8EE303 /* RDEPUBWebViewDebug.swift */; }; + B1C53F2DDF1548C6A9EA0262BD47F6D2 /* epub-bridge.js in Resources */ = {isa = PBXBuildFile; fileRef = 64676B6C8A9F9195A481010213F37B6C /* epub-bridge.js */; }; + B20767C75E33D940407A73684BBF117D /* NSFileWrapper+DTCopying.m in Sources */ = {isa = PBXBuildFile; fileRef = D9A812C3E577A3ADC36BAE3FF7AA4D9C /* NSFileWrapper+DTCopying.m */; }; B24FAD34A7915FC4B90FE9038E814FF2 /* DTLazyImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA5630DC0E663F38A9EC713323697EE1 /* DTLazyImageView.m */; }; - B3D6FFE321D38B8F43578FDBAF537B71 /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = FECC02C082DBCB6126A7ECBA72C258B3 /* RDEPUBTextBuildPipelineInterfaces.swift */; }; - B40171D88891B3A07003A19EB6A4BFC0 /* DTHTMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = CB2BD1F8CFECB82D427DF046439E68D6 /* DTHTMLParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B600901A9F54CF17B27D65FAF248F495 /* RDEPUBAttachmentNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63A75BF0478FAC7398F5E66A509F639D /* RDEPUBAttachmentNormalizer.swift */; }; - B604DFE0CDD1FAA2DFED73DD0EE1A31A /* RDEPUBWebView+Reflowable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AAC2FDC24D8604A39BD25111689D06A /* RDEPUBWebView+Reflowable.swift */; }; + B370BAB1B1D7913DAB1C6C186DD058B3 /* ZIPFoundation-ZIPFoundation_Privacy in Resources */ = {isa = PBXBuildFile; fileRef = CA4A114775B98CEA4A566C18123B145F /* ZIPFoundation-ZIPFoundation_Privacy */; }; + B4AF90C620D7D151BFE11E949374980B /* RDEPUBWebView+JavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 321FA16FF2FAD7985CCAC14EF5A221D4 /* RDEPUBWebView+JavaScriptBridge.swift */; }; + B52761359F11726D1B0FA2A132CEC212 /* RDEPUBReaderPersistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 563790B1DA3FCFFF97263535AEDB9591 /* RDEPUBReaderPersistence.swift */; }; + B5427437A9D88407114E663610C3C014 /* RDEPUBCSSCompatibilityLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3B770A5B6ED1C21FDA2BD1A8B06EE6 /* RDEPUBCSSCompatibilityLayer.swift */; }; + B5DDFE1A90163715B0E93714052162F0 /* RDEPUBReaderBottomToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45BDE90FC850C338F5085963B44CE0F3 /* RDEPUBReaderBottomToolView.swift */; }; + B63625809A957025082B4033C7442289 /* RDEPUBWebDecorationOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C9B40FEFC2CC9CEB30271F8C4A38740 /* RDEPUBWebDecorationOverlayView.swift */; }; + B6E39D7922E559EA9F6C452B0DEFA2ED /* RDEPUBReaderController+LocationResolution.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60F3D803C6E446785A25173F8A33539E /* RDEPUBReaderController+LocationResolution.swift */; }; + B78E0261737C3AB2C16AE5026AC5910E /* RDEPUBCFISerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F54575506F65B0B0E12AABF25A9E6C6F /* RDEPUBCFISerializer.swift */; }; + B7A0FE3182F8FA37D3DADBF317BE7D6F /* RDEPUBWebView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E6795B0D648B27CC7EB030E7550566 /* RDEPUBWebView+Configuration.swift */; }; B7BDD79FC06A1E4E0E17592860844108 /* NSAttributedString+DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 3985FED7BD8EC49191663BEF73FB2C79 /* NSAttributedString+DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B7D3EAF9CD1638EE59CF9127E46D5811 /* RDEPUBNoteResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11D2090101EA891F21834863EE859AE8 /* RDEPUBNoteResolver.swift */; }; - B7E5AB4E36C8E357A4DBA8F6451CE8A0 /* RDEPUBChapterDataCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD5DB51D2F628791D4E0EB41C4B81AF1 /* RDEPUBChapterDataCache.swift */; }; B8332F36582F7A001FE85A8D54B27C9E /* DTCoreTextParagraphStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = BD65B936E2A6FEB74718EA86D9AC1899 /* DTCoreTextParagraphStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B8522579F034294C6982DCB37DE15086 /* NSArray+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E5297E7F5769C61C1838962BA76D4F5 /* NSArray+DTError.m */; }; B86493B996A888D1DA7814ECB6028E22 /* DTHorizontalRuleHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = DD7A2DE5BDF72ABC066484CE554BDEF0 /* DTHorizontalRuleHTMLElement.m */; }; - B91D4B37570E0FDFB186D4622D05D2A4 /* RDReaderView-RDReaderViewAssets in Resources */ = {isa = PBXBuildFile; fileRef = 83410CC9CF2ABE63B90A92F2F988BF65 /* RDReaderView-RDReaderViewAssets */; }; + B90885681DDEEB4B8E9A02D42618DED8 /* RDEPUBFragmentMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587C2E270D5414FF4E3786D14BD36694 /* RDEPUBFragmentMarkerInjector.swift */; }; B94CD41727DFCA8791EED8FB2CA397DD /* DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C3D91FFA65414A2787FEB95576E0097 /* DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9A197E275617D9B2A65077B69E4A2F4 /* RDEPUBReaderToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C525E69EA51BC555374CC559F2996233 /* RDEPUBReaderToolView.swift */; }; - BA464E5503BF2C730FADD4DE36DE6868 /* Archive+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C9CA544EBF55130625F6C3AD2ABFB4 /* Archive+Deprecated.swift */; }; - BB1A3A67759025DE4B7F03BC318AF516 /* RDEPUBParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AACA59CA4CBD2AFAACC3D162C2C75B5 /* RDEPUBParser.swift */; }; - BBE45BB7EAE6DC693F8B2D47AD8727E7 /* RDEPUBTextPerformanceSampler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8300EA716892548FEA44EC27801F5987 /* RDEPUBTextPerformanceSampler.swift */; }; + B9A95DEFECB1E89F36E3F43DED119DF8 /* RDEPUBWebContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6DFA1F6B3E87EFC26C391A4189DCB53 /* RDEPUBWebContentView.swift */; }; + BCE14EE78A2BFD66DBC63E3DEDB0BA96 /* DTTiledLayerWithoutFade.h in Headers */ = {isa = PBXBuildFile; fileRef = 0764D155F69503AACFA7AD976825E986 /* DTTiledLayerWithoutFade.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD4D0BA5B93C8F582243A7BC87EAF01D /* NSString+DTUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C80941DE172AF972D2247659684D93A /* NSString+DTUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BDED6C43665A64B2F3A487526F317E07 /* RDEPUBParser+ReadingProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31B49361D4C4F119B135F85B7A8219DB /* RDEPUBParser+ReadingProfile.swift */; }; BE12CD112F82AD9050D7FB29395F27F9 /* DTVideoTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = B83D7A73677A2C3141EDEF56B9CE6584 /* DTVideoTextAttachment.m */; }; - C14C1329982852C841EBF7A6A8F47FD6 /* Data+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C3615C94C147AEA92F022E119810E9F /* Data+Serialization.swift */; }; - C1678A88827D582EAE2921342ACAD5F4 /* DTAnimatedGIF.m in Sources */ = {isa = PBXBuildFile; fileRef = A3DE08AC23FE36A6C3F33A04700FDE57 /* DTAnimatedGIF.m */; }; - C224A4A04B5C6638D21FD2CE77B69443 /* Data+CompressionDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B46EF6F055A721AF370D705D026E9E /* Data+CompressionDeprecated.swift */; }; - C2E5F9A4B9F366EDA48329415CF0057A /* DTFolderMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = BEA46E51E3616ECEAF0ACCEA9B8C67EF /* DTFolderMonitor.m */; }; - C3463BB24D53EA7809BB5E1C3276B94B /* RDEPUBCFITextAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE1B490DE56DE55724779E3E8BF6D14A /* RDEPUBCFITextAssertion.swift */; }; - C4C2F1441BF40302D432BC6420C0F50C /* NSData+DTCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = F63EBF2BF3000B3391F6E693581EA129 /* NSData+DTCrypto.m */; }; - C578EC0E752DEA0929FDC0A0CAAE4CA3 /* NSString+DTPaths.m in Sources */ = {isa = PBXBuildFile; fileRef = D30DBDF1EDB20CF83690AC6619AA0C48 /* NSString+DTPaths.m */; }; + C01E5466578E9C7FE1EB54CDC807281E /* DTFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 23588B63FC4026A371F5C683744A664C /* DTFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C03DA8BB6EADCF18FDC42EA0996A4A27 /* RDEPUBChapterCacheKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9E98DF633FFBA1D5C2D451CB2B2E6F1 /* RDEPUBChapterCacheKey.swift */; }; + C07672A68F02B0C89233FDB2F58405B4 /* DTPieProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA617294E6371DD7FAC32B61E0873F2 /* DTPieProgressIndicator.m */; }; + C1BCDDF7EBA55903706A5435C3BD6952 /* rangy-core.js in Resources */ = {isa = PBXBuildFile; fileRef = 15A5AF469CA067562D1516F98913D4DF /* rangy-core.js */; }; + C256454C354207C9934BF9D8CEE7DC17 /* RDEPUBReaderController+DataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8DBBD9EE558EAEC43860A5170AEEB3C /* RDEPUBReaderController+DataSource.swift */; }; + C31CB8F48217224330E3A3D756B6A9E6 /* NSMutableArray+DTMoving.h in Headers */ = {isa = PBXBuildFile; fileRef = 3046397381A83C2F6BAF344B86AD176E /* NSMutableArray+DTMoving.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C4ADF74929D282553D9CC6B12132E57A /* DTFoundationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F80AC45FB1DBF50E0E3AA4F26BFA676 /* DTFoundationConstants.m */; }; + C51D41D902C067957EBEB531784866C9 /* RDEPUBCFIUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6CA207039A89EF3323F6FFEA38A1C3F /* RDEPUBCFIUtilities.swift */; }; + C5BB2F613985D1B830839ED1E11CEACA /* RDEPUBCFIParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ADCC15F3965570C3568420F9A75845E /* RDEPUBCFIParser.swift */; }; + C5C1EECC76090DF1CB2E7D8E7959CCE2 /* RDEPUBAttachmentTooltipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B5934123F0DB4372907A51918A83273 /* RDEPUBAttachmentTooltipView.swift */; }; C5EE8E7373FBD24E66C678356393D871 /* DTCoreTextFontCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 722AF38F5106ADDE6F98D282F886A769 /* DTCoreTextFontCollection.m */; }; - C6B4C453194DE8011ADA4C0FA2092028 /* DTBase64Coding.h in Headers */ = {isa = PBXBuildFile; fileRef = 519087D9CD0F5E440E6D2C3B1AA1DFA2 /* DTBase64Coding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C60C55B121391A5AF467974B11309DD7 /* RDEPUBImageViewerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3283355D8EFC5B2B3D2D676DCE1BCEDB /* RDEPUBImageViewerCoordinator.swift */; }; C6B65C0EA759DF426FBBBB113BA3C3E8 /* DTBreakHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D8AE4BEBD1998839BA83AD05CA6CAC5 /* DTBreakHTMLElement.m */; }; - C704ACCB4F169F948102B6D90B81F835 /* RDEPUBTextContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27FE2A0ABB2E40A2D8D3B4BDECE106A7 /* RDEPUBTextContentView.swift */; }; + C72498A0EFC6C52DAB148D7F89F91A5E /* RDEPUBTextPaginationSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4609798012DB9C5B85641224CD6081D /* RDEPUBTextPaginationSupport.swift */; }; C72CE4B974DFAE2C3037D425EB559314 /* DTCoreTextLayoutFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = C46FCF109DBCB37595D2A3366CF1D765 /* DTCoreTextLayoutFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C79D3ACF7D916E647CF4071DF76FF694 /* DTFolderMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CC38EFEF171FFEE008C32A6319BE6A /* DTFolderMonitor.h */; settings = {ATTRIBUTES = (Public, ); }; }; C8F753B56A6C4D2A938B6EA68CF522F8 /* DTColorFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 720396ED306E768BAD28007D5E96B757 /* DTColorFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C8FADC9D72A57A061C6666713FF02524 /* RDEPUBReaderController+RenderSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5C8F91E6B08B08138B628331DAAEC16 /* RDEPUBReaderController+RenderSupport.swift */; }; - C90B928D22ABD4A4019ADF634B3C9252 /* RDEPUBBackgroundPriorityPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = F67C99E329F6EE4951953549B099CE46 /* RDEPUBBackgroundPriorityPolicy.swift */; }; - C91D5DECB736752FDEE511F0B3B4AED8 /* Archive+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = D18519BCA8FAA9B01A704A0F0B9FFC78 /* Archive+ZIP64.swift */; }; C9DD05EF2D27FFEBFA7BF6F437168501 /* DTCoreTextConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = A61C8F1BDD76EA59082F65269083BD08 /* DTCoreTextConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA7FDFDF278504C0C1D5EEB88B044DCB /* RDEPUBChapterWarmupOrchestrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64254678E1440D40D4BC39AE8B62BB27 /* RDEPUBChapterWarmupOrchestrator.swift */; }; - CAB581FD7C03A91D7BCF31F9B7DFD2C1 /* RDEPUBFontNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63D23A912F5F91D0D3D83DF9E05515D0 /* RDEPUBFontNormalizer.swift */; }; - CAD914075CB713FC15413D6FEF558094 /* Entry+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76C1831768CE55090EADD902B29B6CD1 /* Entry+Serialization.swift */; }; - CC1A14092E38C024B59039247A9A7F1E /* wxread-replace.css in Resources */ = {isa = PBXBuildFile; fileRef = E15D7179C6CF82530CF5E7264BBA1679 /* wxread-replace.css */; }; + CA823FD71C0113C96F9BED13E98817A8 /* ZIPFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D8AB18960B56A997408E3235751624 /* ZIPFoundation-dummy.m */; }; + CC2144FB1A6B27AC54FC4DAAD06AB050 /* RDReaderPreloadController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82B54A69DF5E94D0D1B34E9D31C0D997 /* RDReaderPreloadController.swift */; }; + CC5C8A39AEFABC007F0ED9DEECDE7AC1 /* RDEPUBSelectionOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9990D385BA523E06021532FB947967B /* RDEPUBSelectionOverlayView.swift */; }; + CC7DDA979B2F4CDAE40A3EFF77026910 /* RDReaderContentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 410C5BB742936BFF1A02BAB0970CAF34 /* RDReaderContentCell.swift */; }; CC8B8F3D758E98B51F69EDFAA69663A4 /* NSString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = DC7D3AB85C954DA41E1500936C166C0E /* NSString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CD7F05300518F738E9EEA966B76252E6 /* DTExtendedFileAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F75437CE9F9324D315E417014797C1D /* DTExtendedFileAttributes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CD8D29DA6C83EF687425C3DA6947612F /* RDEPUBChapterPageCounter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 328AA616EE25AB53BFB60EFE1C7AAFCE /* RDEPUBChapterPageCounter.swift */; }; - CE1461B66FE25A3E3194B13B80B938AB /* Archive+Writing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0218A7B243387C79E099CA947CF243D /* Archive+Writing.swift */; }; - CE8A5F13186A9A7C5F40A75C17466DBF /* RDEPUBReaderEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12422B421A127464A62DF332C3EAF31E /* RDEPUBReaderEnvironment.swift */; }; + CD07B6D83A3EE35C403CA18660E3DE87 /* RDEPUBReaderController+ExternalLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCE94BB911FD46F5041173C2B601F2B /* RDEPUBReaderController+ExternalLinks.swift */; }; + CDBE585CA5FFEE29F992BD700CF11D79 /* RDEPUBSelectionLoupeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 592C900095F4CE33172C3233D2720E53 /* RDEPUBSelectionLoupeView.swift */; }; + CE4F884B81F8F1C6E6D283768A102802 /* Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3E162E0261A5B0850158D3403191E62 /* Archive.swift */; }; + CEC143DE538A2438B7EE30F733C6F5B1 /* NSString+DTUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F3E93C4AC73A09DE1EAE805B0ADE3306 /* NSString+DTUtilities.m */; }; CFC49467FE75BFABC22A1CE2FFA26570 /* DTImage+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = CF1CED3ED65443999913BC0D96ACA151 /* DTImage+HTML.m */; }; D063317214AFF5143D9C958E5FAFBB38 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - D07D22E99828FC135DA82CD9D5D473BC /* NSString+DTPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = B76B1E836C34CB755AEE1FBF7DC26BDD /* NSString+DTPaths.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D14D8383FFEFB43EA9BA5BCECAD38DFB /* DTSmartPagingScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 21CCCCAAF832BE9C859BEDDC79B4E9E2 /* DTSmartPagingScrollView.h */; settings = {ATTRIBUTES = (Public, ); }; }; D1A93B2D7F1B312755C48790338D7712 /* DTIframeTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = BA8A527A4CCB2AF1C1E26744B301F6B8 /* DTIframeTextAttachment.m */; }; - D2225CA8427BEB882D82DE38019DD126 /* DTFoundationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F80AC45FB1DBF50E0E3AA4F26BFA676 /* DTFoundationConstants.m */; }; - D2BD52C739EE9121C2DBB30B9AA20E04 /* RDEPUBCFIPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDCA21771B2D145D7DCFEEDE00FEDADC /* RDEPUBCFIPath.swift */; }; - D40CA87330F4D56B6E6ADBE2FD59C2FC /* ZIPFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B41F7D27C2336F89BB0185ACB0B19EA9 /* ZIPFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D46DA22E948819A50DAB9055B3B453FF /* RDEPUBRenderDiagnosticsCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B7FCEEAD833F7C1706659E688B09BEA /* RDEPUBRenderDiagnosticsCollector.swift */; }; - D4D42191C9EC85914D0E6BD19884009E /* RDEPUBChapterLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D5537F73FD04F43BE1E354A25710C9E /* RDEPUBChapterLoader.swift */; }; - D4E5594D3EC3FFEFD78C4867AD0671CD /* RDReaderView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C3DEA097D20AC964CFB673C39B4A8AF /* RDReaderView-dummy.m */; }; + D31E5EA195C333049DE497301EFD2BA8 /* NSMutableArray+DTMoving.m in Sources */ = {isa = PBXBuildFile; fileRef = ADD5B2F66FCCFB58393314E7B9FE4384 /* NSMutableArray+DTMoving.m */; }; + D4E1BD55CB50FAE3E5F629004180CF45 /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 004EF3C2CC7FA5E3556C149C6514309E /* RDEPUBPageMapReconciliationCoordinator.swift */; }; + D4F073EFF3AB9902816591F4D92CD9FC /* RDEPUBTextLayouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86526ADF32337683AA173B5FC1E6A94C /* RDEPUBTextLayouter.swift */; }; D526E03C098DA6CF8F01C1BC126C9BBA /* DTCoreText-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 13F8FC8B51AD434F5D4B0CF5150D7563 /* DTCoreText-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D68C9E460307CB1FDFEF1622B2905ED4 /* RDEPUBReaderAnnotationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78D2759A8A01919CE516A30C1A04B967 /* RDEPUBReaderAnnotationCoordinator.swift */; }; - D6F1A867D418237980B1B066F777AE36 /* RDEPUBTextSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24130F5639CFFFA28D8BE6C2BD7A45FE /* RDEPUBTextSearchEngine.swift */; }; - D7473BF91981294A067CB035F7695D99 /* RDEPUBParser+ReadingProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31B49361D4C4F119B135F85B7A8219DB /* RDEPUBParser+ReadingProfile.swift */; }; - D74A865537CEEFB45C5951EBA2A43B90 /* Archive+BackingConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 765A94769106D14615FFB30EE1BD5E65 /* Archive+BackingConfiguration.swift */; }; - D7E6418C29E54343D2587D20DAD787EC /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 006D002D86B43AA52E0AFD2E18459107 /* PrivacyInfo.xcprivacy */; }; + D52D504561415193B8D8731387406403 /* RDEPUBPageCountCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = F861EBEED5EEBC67F1F7D8A479069EEB /* RDEPUBPageCountCache.swift */; }; + D5CF2E24EF14B57D2168EB7C44C32145 /* RDEPUBViewportTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2088F60EF3B4ADB258266A178B5D3ECC /* RDEPUBViewportTypes.swift */; }; + D6406B0E25B3462D230EB0498DD20AF3 /* RDEPUBReadingSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 314E39CF7ADE645354AC8873D80957CA /* RDEPUBReadingSession.swift */; }; + D6735070EA7803B9CD44F3B6319A3044 /* RDEPUBWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09608C067F73D7A137B9F22AF1384DF2 /* RDEPUBWebView.swift */; }; + D782680C3249B3848A8E7DCB29665EC0 /* DTHTMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = CB2BD1F8CFECB82D427DF046439E68D6 /* DTHTMLParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D7AED37646A665332F337B31C4071410 /* DTAnimatedGIF.h in Headers */ = {isa = PBXBuildFile; fileRef = F9D9BEF72311AF9E3239F9B92A9D2842 /* DTAnimatedGIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D82B8E3CA04192590999A80AE31A0134 /* Archive+Writing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0218A7B243387C79E099CA947CF243D /* Archive+Writing.swift */; }; D82DDA4C1E5C4D5378A9E5EA3F8E9DFE /* DTBreakHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 14283024FA4A0231B32CA22AA907FEFA /* DTBreakHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D83430CB424836F9A1B874801AB56F95 /* RDEPUBChapterOffsetMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D1A3ADEC673B078306A361D2601E743 /* RDEPUBChapterOffsetMap.swift */; }; + D97F718E6DE212120CAEB1EB0545D138 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; + D990C9BBC5DEAEE4BA5BFF730C017B94 /* NSString+DTFormatNumbers.m in Sources */ = {isa = PBXBuildFile; fileRef = C5005A9E8F746647585CCAB26853E922 /* NSString+DTFormatNumbers.m */; }; + D9BDE5ECF4EDB325C935F92526AF3BCC /* RDEPUBNotePopupCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC94872B74DE33DE8E675EEBC60812A /* RDEPUBNotePopupCoordinator.swift */; }; + DA02AE37173CA807657B44A7C20604E7 /* RDEPUBTextContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1394B4A44C49F86D8E755C1C16910C /* RDEPUBTextContentView.swift */; }; DA5B51E5D80C161D2902B6FC60DA5EC8 /* DTImageTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 27372A23AA4B051867E7D2C749D1DE81 /* DTImageTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DA9C5616DC232B156BE657B482DC9F4C /* RDEPUBCFIDOMPathBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49DF44BF9FBD9CCC9CDE0A998C428D86 /* RDEPUBCFIDOMPathBuilder.swift */; }; DAD16D3E6EBB32FF96C63BFE6037065F /* DTLinkButton.m in Sources */ = {isa = PBXBuildFile; fileRef = CE761A55BD57C0BFD6336CD073F85C31 /* DTLinkButton.m */; }; - DB453710016DF142F6E628FFBC4A3C7A /* RDEPUBTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F5110430A322C853C80F6041B0EDF94 /* RDEPUBTextBookBuilder.swift */; }; + DB38823D05F9EAA6515ED753C076068E /* RDEPUBReaderSearchCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 145A463390EC56FF141B1FFA95C6EB52 /* RDEPUBReaderSearchCoordinator.swift */; }; DBCA42F7E1697F4EC82E0E7C9657851D /* DTAttributedTextCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 068885F1B54CFD5DBBE6E2DC253F7819 /* DTAttributedTextCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DBD78AD2493F9A171BBBFF8AD648B93B /* RDEPUBReaderContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CF48E002B64BF7AF8BDBEB9A572C13F /* RDEPUBReaderContext.swift */; }; + DC39285E80B6FB62F4F0CF4DAD71DD70 /* Entry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D93C2002AAECD29B3ED5A14026D3DFE /* Entry.swift */; }; DC3E2932A82AD5D88D8B1EFBF004BEC8 /* DTCSSListStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 40FD7C9E2E05FB4A73F4C4C70A3AFAF0 /* DTCSSListStyle.m */; }; - DCD0A2ABC337BCEB54C478ED1F8889D9 /* RDEPUBImageViewerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BFC2AF3C2082F2A0D9950A1B8256229 /* RDEPUBImageViewerCoordinator.swift */; }; + DD26AEA60539DED9AD28F2159313A41B /* DTVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = CCC633BF76C79E0B4A6750337D5DCDB8 /* DTVersion.m */; }; DD73CD0E5148961D1ABD80E050122314 /* DTCoreTextFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA2ED17D0DDF5F1C5606BFFD9A512DE4 /* DTCoreTextFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DE1BAA17B95E7CD4F1FFB609726D4616 /* RDEPUBStyleCompatibilityModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DFA3BB3F5BC48BF4CA6F8DE4559318C /* RDEPUBStyleCompatibilityModels.swift */; }; + DE2477E7AF48AC9600DCB208D5C8523E /* RDEPUBSafeArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA068568A9B92FE52049E190968609A8 /* RDEPUBSafeArea.swift */; }; + DE3D7E5F7E446D69573E4F0FEEAB85BB /* NSFileWrapper+DTCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = B43D7603C0D66635268842EC0A2655AC /* NSFileWrapper+DTCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; DE68AD2F426FD462BC70F968E5AF5553 /* DTTextAttachmentHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = AC0A4ED7E936923A29A5EEB1D95D6B55 /* DTTextAttachmentHTMLElement.m */; }; - DF9D50C1C5F9F22238392605B3F74438 /* DTVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C9575F05D72C239E7E6F079BACDF4C7 /* DTVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DF1C221DC22E91A3950948E08E0202F7 /* RDEPUBReaderHighlightsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE59748EBA8ED3671180B5ACB903377 /* RDEPUBReaderHighlightsViewController.swift */; }; DFB5A1C64C7908FD05BEFF7C7B571353 /* DTAttributedLabel.h in Headers */ = {isa = PBXBuildFile; fileRef = 09FF858DC29B73E9B67B32B03CFF4084 /* DTAttributedLabel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E1985223C4218E5241401FCE8E7A3008 /* RDEPUBTextPageRenderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 854840B8F97C908AB5B51EDF03E54D52 /* RDEPUBTextPageRenderView.swift */; }; - E1B932FF7C930EF7F7604680E8FD3E14 /* DTVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = CCC633BF76C79E0B4A6750337D5DCDB8 /* DTVersion.m */; }; + E03787083A7F95A436360351495FCC9F /* RDEPUBStyleCompatibilityModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DFA3BB3F5BC48BF4CA6F8DE4559318C /* RDEPUBStyleCompatibilityModels.swift */; }; + E1030FA1F1FD28A346E9B0CDE79A3C9E /* RDEPUBReaderPaginationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8CF3C95B01CA3EFA19AD38DA2AC51E5 /* RDEPUBReaderPaginationCoordinator.swift */; }; + E149D293D49FC1A797C2F7690729E081 /* RDEPUBCFIGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 104930ADAD326C90EB587485A6BFF755 /* RDEPUBCFIGenerator.swift */; }; + E197A95013D415FCB22EF52D7F83EDEA /* rangy-serializer.js in Resources */ = {isa = PBXBuildFile; fileRef = 1527510DA54482E3557D6BB3EB651015 /* rangy-serializer.js */; }; E1DA58105A72D6C0B77A8A9F7822BD68 /* DTCoreTextLayoutFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 4641C3C93CE32054665ACF80457A7A94 /* DTCoreTextLayoutFrame.m */; }; - E2A911CAA42ED21FC0675B662B58B8B8 /* Archive+MemoryFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF51E56E09E095C92CB5B9F21384027 /* Archive+MemoryFile.swift */; }; - E3240129AF117F28A4CC9A39E48C7CE5 /* RDEPUBJumpSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE6769FF56092F4EB6B5EDCD64F8E6A7 /* RDEPUBJumpSession.swift */; }; - E355E9E35DEEF09E5F05A76BCBBC35F6 /* RDReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9B4C7EA8E0601A462DDA753AFA93E66 /* RDReaderView.swift */; }; + E233331C5792C8C79E1C31F0617F96A0 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E86839B7DDFC59C16A388E00239F50F /* RDEPUBReaderAssemblyCoordinator.swift */; }; + E2E8C0892B9A8C42DBEC22695AFD9CBD /* DTActivityTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = AF1516035C269F7A41EE064AAB14D562 /* DTActivityTitleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E33C2D168A4E6B3DA75FD2BE92D978BF /* RDEPUBStyleSheetComposer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0796C7E8BEEA96989FCE6698868366D /* RDEPUBStyleSheetComposer.swift */; }; + E35DC3465FF74C36D1877CE677053732 /* RDEPUBNavigatorLayoutContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 055B53D0A60DC351390338A48800AE77 /* RDEPUBNavigatorLayoutContext.swift */; }; E38FC7829B5BDD1588FA487E0FBAC208 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - E3A31EB088966F290BC0FA8F9E84990A /* NSMutableArray+DTMoving.m in Sources */ = {isa = PBXBuildFile; fileRef = ADD5B2F66FCCFB58393314E7B9FE4384 /* NSMutableArray+DTMoving.m */; }; - E61F35DFF62E486B472E57CB49399D1B /* FileManager+ZIPDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F49FC82A04EE9B3B49CBA6CB88ACBC67 /* FileManager+ZIPDeprecated.swift */; }; - E776DCFFEECF2D8AAA859BB2FC3DD14E /* DTCoreGraphicsUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C1A7359A45BB880877A672C57F522FE /* DTCoreGraphicsUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E7B84139E33FBD60C90F546750B66179 /* RDEPUBCFISerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F54575506F65B0B0E12AABF25A9E6C6F /* RDEPUBCFISerializer.swift */; }; - E8050CB03DC17469F13A823B666075C7 /* Data+Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22B69C9433F2FBE5CE8409BD4266DFE8 /* Data+Compression.swift */; }; - E87011B94A31EF3C96486633494CF851 /* UIImage+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1300CC5794E609DB8FBA6FFF90A09408 /* UIImage+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E3C79B70ACF93E0817F39141252748E3 /* DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F653EFBBEDAAC96A34BC93B4211E792 /* DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4D40CE3F09E656A501BE416D3E75182 /* NSString+DTURLEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 131C1D8C96DF2D44A2D4F50C5AEFFF11 /* NSString+DTURLEncoding.m */; }; + E4E1ACD032CFBA1EA80A4E5DD8F68848 /* UIColor+RDEPUBHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D1E680FFD8DDC08A39464AD386D2992 /* UIColor+RDEPUBHex.swift */; }; + E63EF4172239E114561F77A6EDABEA7F /* UIApplication+DTNetworkActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 730B56BC97DFF2B1E04DD2608055D9E0 /* UIApplication+DTNetworkActivity.m */; }; + E6C10023AEAEF85E7202D0BCD43E847E /* RDEPUBReaderRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8829A16514270D407FA56861634910D6 /* RDEPUBReaderRuntime.swift */; }; + E80114BEF65115368E89B351DF979DDA /* RDEPUBPageResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76C37210B5D599FF177A819748A274DF /* RDEPUBPageResolver.swift */; }; + E82E865A9535983CF0E322C3A120A106 /* Archive+Reading.swift in Sources */ = {isa = PBXBuildFile; fileRef = E865600EE9117A9153716299FFA7912D /* Archive+Reading.swift */; }; E8AB5CE26A5224EF09E9E363D70C7775 /* DTDictationPlaceholderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FA88D00B7B2B2F0BA98BB92DF035906 /* DTDictationPlaceholderView.m */; }; - E8BC727E48847123C80C6487E4B6D155 /* NSURL+DTUnshorten.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA6D26B26D2653D6E1C871A482BD6DF /* NSURL+DTUnshorten.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E9FDE27049972F9802E2968B2A54CCA4 /* NSString+DTFormatNumbers.h in Headers */ = {isa = PBXBuildFile; fileRef = A3BD3ED7913130D32E14D5572CBCC921 /* NSString+DTFormatNumbers.h */; settings = {ATTRIBUTES = (Public, ); }; }; EA0040823CCF8E97363DB5891F5DA6D0 /* DTCoreTextFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4917E08E6E59460594AC443EDDAB7E77 /* DTCoreTextFunctions.m */; }; - EA2CEDE8F391ED85A9601DEB7D8044F2 /* RDEPUBReaderController+DataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31C306314EF985A32E583A25AAA39960 /* RDEPUBReaderController+DataSource.swift */; }; - EA75620DF32C36B44E170275F2551BB5 /* RDReaderTapRegionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = D75F5147BF67C9935CC45C16F0118C14 /* RDReaderTapRegionHandler.swift */; }; - EA9AC5EE45C33187D248C64FC46AF85C /* RDEPUBSelectionOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40FFA046E3AFCD87D8592AEFB6CFD987 /* RDEPUBSelectionOverlayView.swift */; }; - EB83224969E7CCA0D8528DD55A753FDF /* Date+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D23D8D10719754D93032F66EB98536 /* Date+ZIP.swift */; }; + EA2781B628D5C588BD13FF68B8EB4F67 /* RDEPUBReaderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF49A91751A72F97903729543181A6B9 /* RDEPUBReaderConfiguration.swift */; }; + EADAA30B24211C8357659B97D6990479 /* DTTiledLayerWithoutFade.m in Sources */ = {isa = PBXBuildFile; fileRef = 23006DBAC610AEB0A4B3EAFEA4FB0567 /* DTTiledLayerWithoutFade.m */; }; + EB65ABC75FDB00A44AB0A4B8734EEA66 /* RDEPUBReaderController+RuntimeBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5CC04F74B62D6B70820B21C9498D09C /* RDEPUBReaderController+RuntimeBridge.swift */; }; EBB7E4D4DB253B5F1267CF9B4DDB4E93 /* DTCoreTextFontDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 88464D2E3579F1A5B25DCCA128528938 /* DTCoreTextFontDescriptor.m */; }; - EC6CE6065F48F2022717FE73027CF1F9 /* RDEPUBSettingsFlipAutomation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849DFA0D192A6586FCC90DE7E300D812 /* RDEPUBSettingsFlipAutomation.swift */; }; - ED83D5746B2CB139C2A53D97CEAA8AC1 /* RDEPUBReaderChromeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B9450CAB183FFD7F4018D819E02321C /* RDEPUBReaderChromeCoordinator.swift */; }; EDA269B595D70EC2B9D81DC890157D63 /* DTAccessibilityViewProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 399AED6BF151EC39BE4450784795A832 /* DTAccessibilityViewProxy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EDC97063261083047D0D636FE47AC003 /* RDEPUBChapterRuntimeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2135D2A77CD609485DAF400E1E3396F /* RDEPUBChapterRuntimeStore.swift */; }; + EDCD76D407E7BE7D66F1D02E1D5524EE /* RDEPUBResourceURLSchemeHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B5686B2CD1ADB2443ECF94B15903873 /* RDEPUBResourceURLSchemeHandler.swift */; }; EE4F0992A0F597320FF7BDE4691D0FD4 /* NSString+CSS.h in Headers */ = {isa = PBXBuildFile; fileRef = 3578B97A85BCDC60888FDF87B8F2600C /* NSString+CSS.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EEE82C0D019E833A59DB98BA96CBA446 /* RDEPUBNotePopupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9736CC5317A5E8F2EE1A03A963197BDF /* RDEPUBNotePopupViewController.swift */; }; + EF8EF713C7DBBC114AF00BB54688B886 /* RDEPUBTextAnnotationOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C3D8182D7F19D798483F0031DB4B8A /* RDEPUBTextAnnotationOverlay.swift */; }; F006F73F17F2E3CC0E7852E9357BA946 /* DTAnchorHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 599172147A32B6978EB5AAE1BE55FF7A /* DTAnchorHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F02681BD4DFFDABD54753610438BE05F /* RDEPUBAssetRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = E97B6B6C59BBCD6685CE808E64981E76 /* RDEPUBAssetRepository.swift */; }; - F09A27FF0030DBB58443F1B41F256B86 /* RDEPUBTextSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36BCDC7F25B3DB9F7FC2F681DD27B93E /* RDEPUBTextSelectionController.swift */; }; - F0DDD6C446D5E4F9712C70CE21AB2CF8 /* RDEPUBHTMLNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3B908A78A947A1A9D66C368CB616DE4 /* RDEPUBHTMLNormalizer.swift */; }; F0F631056BADA32253528247DF493272 /* DTHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C508BE899A1397560A767CAEADB7B9 /* DTHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F12AC7A30166F9013C095231D43E7DA7 /* DTFoundationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = FF63F5E8902D6F3F5E845A924EBBC6D3 /* DTFoundationConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F21A55B28E25C3B9D00D8E2D6EB58544 /* RDEPUBCFIDOMPathBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49DF44BF9FBD9CCC9CDE0A998C428D86 /* RDEPUBCFIDOMPathBuilder.swift */; }; - F3650B2D64F692BEFD95976185B5DB15 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */ = {isa = PBXBuildFile; fileRef = E52802E06864FE60CFBAE21EAA6F3F0F /* RDEPUBReaderController+AttachmentTooltip.swift */; }; - F38EAD024D5BB401AF2476100E7B7822 /* NSString+DTURLEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = CEEC8715398E89B42F9B04E290E8E4FE /* NSString+DTURLEncoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F3DFAD0104D9A6520E75A5874F499F66 /* RDEPUBReaderTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F60D4A5E3A44B1AB998E185EFF5C046 /* RDEPUBReaderTheme.swift */; }; - F425E895C294B7E62878166C248F073A /* RDEPUBWebViewDebug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C59CB44187E054E80CA13F60FF8EE303 /* RDEPUBWebViewDebug.swift */; }; + F10E196600D9D9B578D2092DE5CF0601 /* NSDictionary+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = 05838D65DEC339C51AADB17346B7E287 /* NSDictionary+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F1436DB556678069EE1DAAA6CD21D6BD /* RDEPUBJumpSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35B9168E52A3CBB8E424FD0F5A0361C /* RDEPUBJumpSession.swift */; }; + F3BF4C42ECB685ABA17AFFF436AA8DD6 /* RDEPUBReaderServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B25B5299A67D3BEA9E9887BE079BCDF /* RDEPUBReaderServices.swift */; }; + F41BEDF611247EC8338D9FE8B7E2BA00 /* Archive+BackingConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 765A94769106D14615FFB30EE1BD5E65 /* Archive+BackingConfiguration.swift */; }; + F487E4572BA5F4C757EB6D6C50320BA7 /* RDEPUBTypesettingPipeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92960C67FEC64C10BA567184834F0DCC /* RDEPUBTypesettingPipeline.swift */; }; F4A2E3C4237B8931F61B72FF0BDD6D69 /* DTObjectTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EDA1618562CC224690CF6FC03AFED38 /* DTObjectTextAttachment.m */; }; - F5064819F680614ACF6503287451E4C6 /* rangy-core.js in Resources */ = {isa = PBXBuildFile; fileRef = 15A5AF469CA067562D1516F98913D4DF /* rangy-core.js */; }; + F4C56CA89B50670081B742F4715AC9DD /* RDReaderTapRegionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = D75F5147BF67C9935CC45C16F0118C14 /* RDReaderTapRegionHandler.swift */; }; + F57FC499CF50E2C66E28E56B28ABCFC1 /* Archive+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = D18519BCA8FAA9B01A704A0F0B9FFC78 /* Archive+ZIP64.swift */; }; F58ABA106C6200175DF574DF05A75BA8 /* DTAccessibilityElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F842408AB76A580B80255453F2FDF6 /* DTAccessibilityElement.m */; }; F5A424E67F41C4F7B830CE2F7E71570D /* DTCoreText-Resources in Resources */ = {isa = PBXBuildFile; fileRef = F4E2B1AC73977F10254628C0B7EBE38F /* DTCoreText-Resources */; }; F6036BBDFE7484F5A453F6876C97C098 /* NSAttributedString+SmallCaps.m in Sources */ = {isa = PBXBuildFile; fileRef = 98CF9C5D504838741E399811F4D5A0B7 /* NSAttributedString+SmallCaps.m */; }; F61102C9BF3D6296CB6C6B754ABF98C5 /* DTTextHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 69076FC9D4201719C319547346DA3E21 /* DTTextHTMLElement.m */; }; - F6367EF2E50441DF4512B27FFD788D91 /* DTActivityTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = AF1516035C269F7A41EE064AAB14D562 /* DTActivityTitleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6504C7DCCD538BD0696B381952DECB4 /* RDEPUBCSSCompatibilityLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3B770A5B6ED1C21FDA2BD1A8B06EE6 /* RDEPUBCSSCompatibilityLayer.swift */; }; - F7147DD0CF0BBAE9A181448FC68CF9AA /* DTSmartPagingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = A20F6F0463A998DC3BD53DE9E63B63DE /* DTSmartPagingScrollView.m */; }; - F8073C63A8EFDF857AA51C52455545F0 /* RDEPUBMetadataParseWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1977F26E5E225E266FC92C775A41E1F3 /* RDEPUBMetadataParseWorker.swift */; }; - F9510879C3D8131EEED997499C6ACF14 /* UIApplication+DTNetworkActivity.h in Headers */ = {isa = PBXBuildFile; fileRef = 55423549E54A01F039B5F379B264C73F /* UIApplication+DTNetworkActivity.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FB3D0E7A431E12F09F3EFEA34560164D /* RDEPUBChapterData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317357794EF461FA4C6992E798C900DF /* RDEPUBChapterData.swift */; }; - FBAC3FF19329EDF1CC7D494263CA728D /* RDEPUBReaderSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22FF6CAA8966DB1B4C14A695E355C881 /* RDEPUBReaderSettings.swift */; }; - FBCBAE5842CAA34316A0963C2ED3FFE6 /* RDEPUBChapterCacheKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE8C9E2C878448571156DFC0E41979AF /* RDEPUBChapterCacheKey.swift */; }; + F859E971794D18B4596AACB619C9FC0E /* Data+Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22B69C9433F2FBE5CE8409BD4266DFE8 /* Data+Compression.swift */; }; + F896051055B1D335F9DCBAF12528D17F /* Entry+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 288589D0B52F73505B43C743D9837578 /* Entry+ZIP64.swift */; }; + FA9A0F5DA5D75BA58E5FD351AEBF77C7 /* RDEPUBResourceResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 677182E8663D93C2C9E5617999F649C7 /* RDEPUBResourceResolver.swift */; }; + FAB5E8C85816C2A4151BA0E6AC853D16 /* RDEPUBSemanticMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F4881006C6FAE4DFADBE2ACE4E9A744 /* RDEPUBSemanticMarkerInjector.swift */; }; + FB73803F328A3E28764797436C90B0B1 /* RDEPUBReaderController+TableOfContents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35AD33C94AE70E2D00F629BACC8622C9 /* RDEPUBReaderController+TableOfContents.swift */; }; + FBEA39961A7CC41D92A67A52D859FA9B /* RDEPUBBackgroundPriorityPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFA733CE261D37C49F859F8E72332108 /* RDEPUBBackgroundPriorityPolicy.swift */; }; + FC27EB0CB0FF172C74A211248FC42DEA /* RDEPUBChapterWarmupOrchestrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FAFF98C24F34206448C655698BF56E3 /* RDEPUBChapterWarmupOrchestrator.swift */; }; FC5F52919451A15639442B46B38E4C67 /* DTCoreTextLayoutFrame+Cursor.m in Sources */ = {isa = PBXBuildFile; fileRef = EF625CF6A790938F5CE0F0C7DC36E340 /* DTCoreTextLayoutFrame+Cursor.m */; }; - FC7E79D4D97B65B3546B66BE1B024F7B /* DTBlockFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35417EC94F2D58CB80C991F875CE15C2 /* DTBlockFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FCF14BAEC4558EE376B315BD4C0C9307 /* RDEPUBReaderRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = C49A29FA18CE9201BCA63615AEF3457F /* RDEPUBReaderRuntime.swift */; }; - FD20D1EEC74F54FF4283C4C106E0BA5F /* DTPieProgressIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 173194D38C897D8E38AD8A194E47DB5C /* DTPieProgressIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FD26AB576144C8A2678BBFB213E17E7C /* RDEPUBReaderController+ContentDelegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11C152E0F5FA501D1DE57C6F84974FB2 /* RDEPUBReaderController+ContentDelegates.swift */; }; FD5D68887297CFA94F543C49DC68A156 /* DTHTMLAttributedStringBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = E0192469A486DA7CECFECEA37518B6B9 /* DTHTMLAttributedStringBuilder.m */; }; - FE1D81BC7577F8C33E5D2164F29F57AD /* RDEPUBViewportTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B137EA59DB88E982FBF8E5C775975FE5 /* RDEPUBViewportTypes.swift */; }; + FDD70B9210012C399DDEAC1ACEF2B2AA /* Date+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D23D8D10719754D93032F66EB98536 /* Date+ZIP.swift */; }; FEB00C614DCB6A8A7BDF8DEE11260984 /* NSMutableAttributedString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CA72FA9A4F2F42A75C58325738A44AC /* NSMutableAttributedString+HTML.m */; }; - FEC18B0BF9DB6282F3B2737B03C466C6 /* NSURL+DTComparing.m in Sources */ = {isa = PBXBuildFile; fileRef = 467CC59CEC3B3BC7ACDCA776FDCBDC1D /* NSURL+DTComparing.m */; }; + FF707D17AED7D66ACAD9953CF67DA3EC /* RDEPUBCFIPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDCA21771B2D145D7DCFEEDE00FEDADC /* RDEPUBCFIPath.swift */; }; + FFD2CD894C5599DB9D60FEFFAE1F9395 /* RDReaderFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56A9260F17C4825708B83598BEC99365 /* RDReaderFlowLayout.swift */; }; + FFE7975D2961B9A306B6BB6831C2C8B4 /* RDEPUBPresentationRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8857E55841583E848290F85432CA460B /* RDEPUBPresentationRuntime.swift */; }; FFEB74D61E54DC46EFE0DBE2E76EFAA1 /* Pods-ReadViewDemo-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EBA0272559B0F7FAD8AC670AC7431188 /* Pods-ReadViewDemo-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 02DA505711474C0FACBA3A4EF92D0255 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; - remoteInfo = ZIPFoundation; - }; - 18EB355BC8F480499E2AE3151AC106F3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0C24CB0E87A728A11AA1124CB360D6A1; - remoteInfo = "DTCoreText-Resources"; - }; - 52128B73E472B44C45E232AF6CE036D8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; - remoteInfo = DTFoundation; - }; - 7A2462400BEFE0B87FFF91506C70323F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; - remoteInfo = ZIPFoundation; - }; - 80521E27CBC7CED78A3F5097ABF137C3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; - remoteInfo = DTFoundation; - }; - 8AA2F6A6BF24C94B6D48B63672A15FC1 /* PBXContainerItemProxy */ = { + 0FA9693685F9460B99920356EF985291 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = AE7F393FB7805DE2664AB4111873F907; remoteInfo = "RDReaderView-RDReaderViewAssets"; }; - 8C68FC6E1E8C08E748DEFB91D8C9C468 /* PBXContainerItemProxy */ = { + 3C5DCECE0CCBBBF11E32FCD89FF41FC4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; + remoteInfo = DTCoreText; + }; + 4CE1E333EFC7D126BF846EF5DE95196A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = C7A8D82E407CD3FDC3BA55CEE519B252; remoteInfo = "ZIPFoundation-ZIPFoundation_Privacy"; }; - A1FE9FFEAB3A0F41D3FD0AC3841AF317 /* PBXContainerItemProxy */ = { + 674A6C9D96CA4E77FB1BCC2935DFFB9B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; - remoteInfo = DTCoreText; + remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; + remoteInfo = DTFoundation; }; - AF23E97E0F7EF7C4C8ED414CE73B904B /* PBXContainerItemProxy */ = { + 6E4C6A0099934171BD974B9C968C0A63 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; + remoteInfo = DTFoundation; + }; + B2B3B1D10F4029AF72458869308C4EC4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = AA2E57587AA8EECA63C4BE08EA3CB6D2; remoteInfo = RDReaderView; }; - C06FCB07200CA15988CA2E58AE3B4525 /* PBXContainerItemProxy */ = { + B93E0318F913C2A3AEC5E3871123DE60 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; + remoteInfo = ZIPFoundation; + }; + C954E4173D45F863B74E03CA5AD6E923 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; remoteInfo = DTCoreText; }; + F8919A621AEA917EC6FFE71CAB71613A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0C24CB0E87A728A11AA1124CB360D6A1; + remoteInfo = "DTCoreText-Resources"; + }; + F909F14D649B5BB80A2737493D561E58 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; + remoteInfo = ZIPFoundation; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 004EF3C2CC7FA5E3556C149C6514309E /* RDEPUBPageMapReconciliationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageMapReconciliationCoordinator.swift; sourceTree = ""; }; 006D002D86B43AA52E0AFD2E18459107 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/ZIPFoundation/Resources/PrivacyInfo.xcprivacy; sourceTree = ""; }; 008302A48FE881CADADBCB02832B880B /* RDReaderSpreadResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderSpreadResolver.swift; sourceTree = ""; }; - 02CABD2C55EE6F8759C2702014273F00 /* RDURLReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDURLReaderController.swift; sourceTree = ""; }; 0372FD1824BC43F7BD6B337430201420 /* DTCoreGraphicsUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreGraphicsUtils.m; path = Core/Source/DTCoreGraphicsUtils.m; sourceTree = ""; }; 0430034A7AFBCEC269D7C46517004DF0 /* RDEPUBNoteDetector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteDetector.swift; sourceTree = ""; }; 044BEA679671E16EA9BA9AD627750742 /* NSMutableAttributedString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableAttributedString+HTML.h"; path = "Core/Source/NSMutableAttributedString+HTML.h"; sourceTree = ""; }; @@ -527,14 +528,12 @@ 055B53D0A60DC351390338A48800AE77 /* RDEPUBNavigatorLayoutContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNavigatorLayoutContext.swift; sourceTree = ""; }; 057DBFBFC99448A0B77A3C0DBB13B4A9 /* NSScanner+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSScanner+HTML.m"; path = "Core/Source/NSScanner+HTML.m"; sourceTree = ""; }; 05838D65DEC339C51AADB17346B7E287 /* NSDictionary+DTError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+DTError.h"; path = "Core/Source/NSDictionary+DTError.h"; sourceTree = ""; }; - 05A13D7709B82256F12E52DC6E65F696 /* RDEPUBPageResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageResolver.swift; sourceTree = ""; }; 068885F1B54CFD5DBBE6E2DC253F7819 /* DTAttributedTextCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedTextCell.h; path = Core/Source/DTAttributedTextCell.h; sourceTree = ""; }; - 0742A5B640EA32CFFCB23C98EA7E4E02 /* RDEPUBPageCountCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageCountCache.swift; sourceTree = ""; }; + 0763B05C11F090D063D1BF3D9E6C31B7 /* RDEPUBReaderChromeCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChromeCoordinator.swift; sourceTree = ""; }; 0764D155F69503AACFA7AD976825E986 /* DTTiledLayerWithoutFade.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTiledLayerWithoutFade.h; path = Core/Source/iOS/DTTiledLayerWithoutFade.h; sourceTree = ""; }; 07E07EEE45C5439A207C5647210A4A7F /* RDEPUBSearchModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSearchModels.swift; sourceTree = ""; }; 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; }; 08F54C3D9B4AECA08A47309615DC2715 /* DTFoundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTFoundation-prefix.pch"; sourceTree = ""; }; - 0901D33C8FF8497CDC7A4365D0D84218 /* RDEPUBReaderSettingsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettingsViewController.swift; sourceTree = ""; }; 09336B106D598DCD38F6B79AEA629066 /* RDEPUBCoreTextPageFrameFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCoreTextPageFrameFactory.swift; sourceTree = ""; }; 09608C067F73D7A137B9F22AF1384DF2 /* RDEPUBWebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebView.swift; sourceTree = ""; }; 09FF858DC29B73E9B67B32B03CFF4084 /* DTAttributedLabel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedLabel.h; path = Core/Source/DTAttributedLabel.h; sourceTree = ""; }; @@ -545,45 +544,42 @@ 0EA81A6E9B081AC375550C90411530B8 /* RDReaderView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RDReaderView-Info.plist"; sourceTree = ""; }; 0F5110430A322C853C80F6041B0EDF94 /* RDEPUBTextBookBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookBuilder.swift; sourceTree = ""; }; 0F80AC45FB1DBF50E0E3AA4F26BFA676 /* DTFoundationConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTFoundationConstants.m; path = Core/Source/DTFoundationConstants.m; sourceTree = ""; }; - 0FDF74546728C05BFEA4B3BC4D6905AF /* RDEPUBReaderServices.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderServices.swift; sourceTree = ""; }; + 0FAFD969C7141125539E80810C0A6A9B /* RDEPUBReaderToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderToolView.swift; sourceTree = ""; }; 104930ADAD326C90EB587485A6BFF755 /* RDEPUBCFIGenerator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIGenerator.swift; sourceTree = ""; }; + 113B414F4DD510248C8462427553EDF1 /* RDEPUBBackgroundCoverageStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundCoverageStore.swift; sourceTree = ""; }; + 11C152E0F5FA501D1DE57C6F84974FB2 /* RDEPUBReaderController+ContentDelegates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ContentDelegates.swift"; sourceTree = ""; }; 11C3B7C93919D787AAC0C4D25E52805A /* RDEPUBCFIMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIMarkerInjector.swift; sourceTree = ""; }; 11D2090101EA891F21834863EE859AE8 /* RDEPUBNoteResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteResolver.swift; sourceTree = ""; }; - 12422B421A127464A62DF332C3EAF31E /* RDEPUBReaderEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderEnvironment.swift; sourceTree = ""; }; 126E6ACAC7C0427806B58DA8E10BDD78 /* NSMutableString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableString+HTML.m"; path = "Core/Source/NSMutableString+HTML.m"; sourceTree = ""; }; 1300CC5794E609DB8FBA6FFF90A09408 /* UIImage+DTFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+DTFoundation.h"; path = "Core/Source/iOS/UIImage+DTFoundation.h"; sourceTree = ""; }; 131C1D8C96DF2D44A2D4F50C5AEFFF11 /* NSString+DTURLEncoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTURLEncoding.m"; path = "Core/Source/NSString+DTURLEncoding.m"; sourceTree = ""; }; 13597E7190F2C08C5906D7D128E43E99 /* DTObjectTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTObjectTextAttachment.h; path = Core/Source/DTObjectTextAttachment.h; sourceTree = ""; }; 13F8FC8B51AD434F5D4B0CF5150D7563 /* DTCoreText-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTCoreText-umbrella.h"; sourceTree = ""; }; 14283024FA4A0231B32CA22AA907FEFA /* DTBreakHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTBreakHTMLElement.h; path = Core/Source/DTBreakHTMLElement.h; sourceTree = ""; }; + 145A463390EC56FF141B1FFA95C6EB52 /* RDEPUBReaderSearchCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchCoordinator.swift; sourceTree = ""; }; 148B993AB228816D19FCB7CD13874C83 /* DTAnchorHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAnchorHTMLElement.m; path = Core/Source/DTAnchorHTMLElement.m; sourceTree = ""; }; 14E63A0D35D4A07BD0123021EA161C99 /* DTHTMLWriter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLWriter.h; path = Core/Source/DTHTMLWriter.h; sourceTree = ""; }; 1527510DA54482E3557D6BB3EB651015 /* rangy-serializer.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "rangy-serializer.js"; path = "Sources/RDReaderView/EPUBCore/Resources/rangy-serializer.js"; sourceTree = ""; }; 15A5AF469CA067562D1516F98913D4DF /* rangy-core.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "rangy-core.js"; path = "Sources/RDReaderView/EPUBCore/Resources/rangy-core.js"; sourceTree = ""; }; 170D81239AF3CE5CD64BA2E44A505872 /* RDEPUBParser+Resources.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Resources.swift"; sourceTree = ""; }; 173194D38C897D8E38AD8A194E47DB5C /* DTPieProgressIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTPieProgressIndicator.h; path = Core/Source/iOS/DTPieProgressIndicator.h; sourceTree = ""; }; - 1791083E7546C2EB443048851C122E32 /* RDEPUBImageViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewController.swift; sourceTree = ""; }; - 1859C9EC3263145CE262EC15A12B6BE4 /* RDEPUBReaderController+PublicAPI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+PublicAPI.swift"; sourceTree = ""; }; 18D23D8D10719754D93032F66EB98536 /* Date+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Date+ZIP.swift"; path = "Sources/ZIPFoundation/Date+ZIP.swift"; sourceTree = ""; }; 18F842408AB76A580B80255453F2FDF6 /* DTAccessibilityElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAccessibilityElement.m; path = Core/Source/DTAccessibilityElement.m; sourceTree = ""; }; - 1961705269BD266F52EBD357EAE068A5 /* RDEPUBPageInteractionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageInteractionController.swift; sourceTree = ""; }; - 1977F26E5E225E266FC92C775A41E1F3 /* RDEPUBMetadataParseWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseWorker.swift; sourceTree = ""; }; 199E2ECC77BDAC03F644C20040F042D4 /* DTLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTLog.m; path = Core/Source/DTLog.m; sourceTree = ""; }; - 19D3A41F50CE425FA2929A6FBE743A84 /* RDEPUBChapterLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLocation.swift; sourceTree = ""; }; 1A88AA04D7B29A217B432C19AC48AB6B /* DTStylesheetHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTStylesheetHTMLElement.h; path = Core/Source/DTStylesheetHTMLElement.h; sourceTree = ""; }; 1AD502A1FA6EB1E38200B5283F979504 /* Pods-ReadViewDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReadViewDemo.release.xcconfig"; sourceTree = ""; }; + 1AE3C35BC77F4A80D8725CE0CDE20B5E /* RDEPUBReaderSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettings.swift; sourceTree = ""; }; 1C3DEA097D20AC964CFB673C39B4A8AF /* RDReaderView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RDReaderView-dummy.m"; sourceTree = ""; }; - 1E381C002AE6ECE51B0B77AA5007FE27 /* RDEPUBReaderController+ExternalLinks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ExternalLinks.swift"; sourceTree = ""; }; 1EF19AD0EF4889156D46061FB43E0F5D /* DTCoreTextFontDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextFontDescriptor.h; path = Core/Source/DTCoreTextFontDescriptor.h; sourceTree = ""; }; - 1EF9571672022F0A84D66AC6E6F91305 /* RDEPUBReaderPaginationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPaginationCoordinator.swift; sourceTree = ""; }; 1F1F7BFB63DE15D627EB8F64829B8AAD /* NSURL+DTComparing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURL+DTComparing.h"; path = "Core/Source/NSURL+DTComparing.h"; sourceTree = ""; }; 1FA88D00B7B2B2F0BA98BB92DF035906 /* DTDictationPlaceholderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTDictationPlaceholderView.m; path = Core/Source/DTDictationPlaceholderView.m; sourceTree = ""; }; + 1FAFF98C24F34206448C655698BF56E3 /* RDEPUBChapterWarmupOrchestrator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterWarmupOrchestrator.swift; sourceTree = ""; }; 2047430DF5C84E0A8FC8874A2B915FC3 /* Pods-ReadViewDemo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReadViewDemo-acknowledgements.markdown"; sourceTree = ""; }; 207CC0EEB74CECEB43A870FF80560E0F /* DTLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTLog.h; path = Core/Source/DTLog.h; sourceTree = ""; }; + 2088F60EF3B4ADB258266A178B5D3ECC /* RDEPUBViewportTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBViewportTypes.swift; sourceTree = ""; }; 214F0FC87DE99D3FCE69D98B357F3FFC /* DTCoreTextLayoutFrame+Cursor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DTCoreTextLayoutFrame+Cursor.h"; path = "Core/Source/DTCoreTextLayoutFrame+Cursor.h"; sourceTree = ""; }; 21CCCCAAF832BE9C859BEDDC79B4E9E2 /* DTSmartPagingScrollView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTSmartPagingScrollView.h; path = Core/Source/iOS/DTSmartPagingScrollView.h; sourceTree = ""; }; 22B69C9433F2FBE5CE8409BD4266DFE8 /* Data+Compression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Compression.swift"; path = "Sources/ZIPFoundation/Data+Compression.swift"; sourceTree = ""; }; - 22FF6CAA8966DB1B4C14A695E355C881 /* RDEPUBReaderSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettings.swift; sourceTree = ""; }; 23006DBAC610AEB0A4B3EAFEA4FB0567 /* DTTiledLayerWithoutFade.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTiledLayerWithoutFade.m; path = Core/Source/iOS/DTTiledLayerWithoutFade.m; sourceTree = ""; }; 23588B63FC4026A371F5C683744A664C /* DTFoundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTFoundation-umbrella.h"; sourceTree = ""; }; 2361BC151481D2717ED43C5659725945 /* ZIPFoundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ZIPFoundation.modulemap; sourceTree = ""; }; @@ -592,7 +588,6 @@ 24130F5639CFFFA28D8BE6C2BD7A45FE /* RDEPUBTextSearchEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSearchEngine.swift; sourceTree = ""; }; 25DDD76CA572F0C7AB5A8178CF80169D /* DTCoreTextFontCollection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextFontCollection.h; path = Core/Source/DTCoreTextFontCollection.h; sourceTree = ""; }; 27372A23AA4B051867E7D2C749D1DE81 /* DTImageTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTImageTextAttachment.h; path = Core/Source/DTImageTextAttachment.h; sourceTree = ""; }; - 27FE2A0ABB2E40A2D8D3B4BDECE106A7 /* RDEPUBTextContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentView.swift; sourceTree = ""; }; 288589D0B52F73505B43C743D9837578 /* Entry+ZIP64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Entry+ZIP64.swift"; path = "Sources/ZIPFoundation/Entry+ZIP64.swift"; sourceTree = ""; }; 29DE76CD63BD47DC86DF55C349B1CF91 /* RDEPUBFontFallbackResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFontFallbackResolver.swift; sourceTree = ""; }; 29DEA4D201BB179BB6E228E9F688CD4C /* UIView+DTFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+DTFoundation.h"; path = "Core/Source/iOS/UIView+DTFoundation.h"; sourceTree = ""; }; @@ -600,54 +595,59 @@ 2B73CF24646475E517B8FDF110972E77 /* RDReaderView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RDReaderView.release.xcconfig; sourceTree = ""; }; 2B7FCEEAD833F7C1706659E688B09BEA /* RDEPUBRenderDiagnosticsCollector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRenderDiagnosticsCollector.swift; sourceTree = ""; }; 2C1A7359A45BB880877A672C57F522FE /* DTCoreGraphicsUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreGraphicsUtils.h; path = Core/Source/DTCoreGraphicsUtils.h; sourceTree = ""; }; - 2D80571A5CC74FDE8F5CE6E70B50023F /* RDEPUBRuntimeChapter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimeChapter.swift; sourceTree = ""; }; + 2D811ABCB31C221FA6F002E32629D6B7 /* RDEPUBTextPageVerticalJustifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageVerticalJustifier.swift; sourceTree = ""; }; 2EBD41467F344F6091AD0C1A3981EDC3 /* cssInjector.js */ = {isa = PBXFileReference; includeInIndex = 1; name = cssInjector.js; path = Sources/RDReaderView/EPUBCore/Resources/cssInjector.js; sourceTree = ""; }; 2F242FC1357DD90FA4FD67E1DB90A837 /* NSCharacterSet+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSCharacterSet+HTML.m"; path = "Core/Source/NSCharacterSet+HTML.m"; sourceTree = ""; }; 2F75437CE9F9324D315E417014797C1D /* DTExtendedFileAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTExtendedFileAttributes.h; path = Core/Source/DTExtendedFileAttributes.h; sourceTree = ""; }; - 2F899D2164D781FF192129E1C659613F /* RDEPUBDarkImageAdjuster.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDarkImageAdjuster.swift; sourceTree = ""; }; 2FA2158447C66C1AA074403C4AEF1BD9 /* RDEPUBPublication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPublication.swift; sourceTree = ""; }; 3046397381A83C2F6BAF344B86AD176E /* NSMutableArray+DTMoving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+DTMoving.h"; path = "Core/Source/NSMutableArray+DTMoving.h"; sourceTree = ""; }; 306477706BBB1E784F55BCF8EB1AD737 /* Pods-ReadViewDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReadViewDemo.debug.xcconfig"; sourceTree = ""; }; 30EB4CF4AD4114DE53786C318621EB19 /* NSAttributedStringRunDelegates.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NSAttributedStringRunDelegates.h; path = Core/Source/NSAttributedStringRunDelegates.h; sourceTree = ""; }; 314E39CF7ADE645354AC8873D80957CA /* RDEPUBReadingSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReadingSession.swift; sourceTree = ""; }; - 315243CD0784D4E8AF97453BF5848904 /* RDEPUBReaderTableOfContentsItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTableOfContentsItem.swift; sourceTree = ""; }; 317357794EF461FA4C6992E798C900DF /* RDEPUBChapterData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterData.swift; sourceTree = ""; }; 31B49361D4C4F119B135F85B7A8219DB /* RDEPUBParser+ReadingProfile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+ReadingProfile.swift"; sourceTree = ""; }; - 31C306314EF985A32E583A25AAA39960 /* RDEPUBReaderController+DataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+DataSource.swift"; sourceTree = ""; }; 321FA16FF2FAD7985CCAC14EF5A221D4 /* RDEPUBWebView+JavaScriptBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+JavaScriptBridge.swift"; sourceTree = ""; }; + 3283355D8EFC5B2B3D2D676DCE1BCEDB /* RDEPUBImageViewerCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewerCoordinator.swift; sourceTree = ""; }; 328AA616EE25AB53BFB60EFE1C7AAFCE /* RDEPUBChapterPageCounter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterPageCounter.swift; sourceTree = ""; }; 33452E6D078F6CC1EF8A17DF42966CAA /* RDReaderPageChildViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPageChildViewController.swift; sourceTree = ""; }; 33643E88B779A3DB1B3A14C7A194045B /* RDEPUBTextBookModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookModels.swift; sourceTree = ""; }; - 3416C45A5E4AEF922A7D3804F0A05EB4 /* RDEPUBReaderController+ContentDelegates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ContentDelegates.swift"; sourceTree = ""; }; 3453CFB9BDBF6F9D0937EDF5FB2BD07B /* NSURL+DTAppLinks.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURL+DTAppLinks.m"; path = "Core/Source/iOS/NSURL+DTAppLinks.m"; sourceTree = ""; }; + 347A1849A630130CBFBDD4DDDC44A51A /* RDEPUBChapterSummaryDiskCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterSummaryDiskCache.swift; sourceTree = ""; }; + 353528037271462D3C73D07BBF5D8DED /* RDEPUBPageLayoutSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageLayoutSnapshot.swift; sourceTree = ""; }; 35417EC94F2D58CB80C991F875CE15C2 /* DTBlockFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTBlockFunctions.h; path = Core/Source/DTBlockFunctions.h; sourceTree = ""; }; 354C1C3A74DB75C8B8608D538212A963 /* DTStylesheetHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTStylesheetHTMLElement.m; path = Core/Source/DTStylesheetHTMLElement.m; sourceTree = ""; }; 3578B97A85BCDC60888FDF87B8F2600C /* NSString+CSS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+CSS.h"; path = "Core/Source/NSString+CSS.h"; sourceTree = ""; }; 35803D654BE44326A28A0947DD178B63 /* RDEPUBCFIRecoveryEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIRecoveryEngine.swift; sourceTree = ""; }; - 3652433CDE5ACCD783B54CBDD0CBB5C6 /* RDEPUBBackgroundTrace.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundTrace.swift; sourceTree = ""; }; + 35AD33C94AE70E2D00F629BACC8622C9 /* RDEPUBReaderController+TableOfContents.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+TableOfContents.swift"; sourceTree = ""; }; 36606A851BDB5FFF6E9BFFDD7FB72455 /* RDReaderView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RDReaderView-umbrella.h"; sourceTree = ""; }; - 36BCDC7F25B3DB9F7FC2F681DD27B93E /* RDEPUBTextSelectionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSelectionController.swift; sourceTree = ""; }; 37327141DC73DE2D5742BE6F989094CE /* DTCoreTextLayoutLine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextLayoutLine.h; path = Core/Source/DTCoreTextLayoutLine.h; sourceTree = ""; }; 3985FED7BD8EC49191663BEF73FB2C79 /* NSAttributedString+DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+DTCoreText.h"; path = "Core/Source/NSAttributedString+DTCoreText.h"; sourceTree = ""; }; 398DC798680E2CA64D46B9E19B380356 /* UIFont+DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIFont+DTCoreText.h"; path = "Core/Source/UIFont+DTCoreText.h"; sourceTree = ""; }; 399AED6BF151EC39BE4450784795A832 /* DTAccessibilityViewProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAccessibilityViewProxy.h; path = Core/Source/DTAccessibilityViewProxy.h; sourceTree = ""; }; 3A6A858B976D032A3C61540AFF19DEE4 /* NSURL+DTUnshorten.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURL+DTUnshorten.m"; path = "Core/Source/NSURL+DTUnshorten.m"; sourceTree = ""; }; 3AF63806C4793F384C4CF28201BC756C /* WeReadApi.js */ = {isa = PBXFileReference; includeInIndex = 1; name = WeReadApi.js; path = Sources/RDReaderView/EPUBCore/Resources/WeReadApi.js; sourceTree = ""; }; + 3B25B5299A67D3BEA9E9887BE079BCDF /* RDEPUBReaderServices.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderServices.swift; sourceTree = ""; }; 3B35A0451D9A3CF5477258E38D363189 /* RDEPUBTextRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextRenderer.swift; sourceTree = ""; }; - 3CF48E002B64BF7AF8BDBEB9A572C13F /* RDEPUBReaderContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderContext.swift; sourceTree = ""; }; + 3CAD42B48B9168BBD3A810E5D3F0F956 /* RDEPUBReaderSearchBarView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchBarView.swift; sourceTree = ""; }; 3DAC9D3802A9F165B2F6B09C2DCF0EB7 /* ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist"; sourceTree = ""; }; + 3E238CC0941838E4BFCF81D523FFA0BF /* RDEPUBMetadataParseWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseWorker.swift; sourceTree = ""; }; 3EFAE8DFDDEA1E6047289C86D66381C0 /* DTAttributedLabel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedLabel.m; path = Core/Source/DTAttributedLabel.m; sourceTree = ""; }; + 3F3375F32D22D669DD2C8A34D3FB9A8E /* RDEPUBReaderController+AttachmentTooltip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+AttachmentTooltip.swift"; sourceTree = ""; }; + 408BF57916E27949442B18215BE0B51A /* RDEPUBSelectionState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionState.swift; sourceTree = ""; }; 40FD7C9E2E05FB4A73F4C4C70A3AFAF0 /* DTCSSListStyle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCSSListStyle.m; path = Core/Source/DTCSSListStyle.m; sourceTree = ""; }; - 40FFA046E3AFCD87D8592AEFB6CFD987 /* RDEPUBSelectionOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionOverlayView.swift; sourceTree = ""; }; 410C5BB742936BFF1A02BAB0970CAF34 /* RDReaderContentCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderContentCell.swift; sourceTree = ""; }; 422DAC763888F8667708F7B66F9C701E /* RDEPUBPaginationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationModels.swift; sourceTree = ""; }; 43197856E7D06A21EF9B252FD37456A5 /* RDEPUBParser+TOC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+TOC.swift"; sourceTree = ""; }; 44133205D7FD87B481BF89EA607CA7A4 /* ZIPFoundation-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ZIPFoundation-Info.plist"; sourceTree = ""; }; 4472755F83C121DE5E1E505D145F6DBE /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/CoreText.framework; sourceTree = DEVELOPER_DIR; }; 4476B58B93EE7476A4762FE0E26E8178 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayoutFrameAccessibilityElementGenerator.m; path = Core/Source/DTCoreTextLayoutFrameAccessibilityElementGenerator.m; sourceTree = ""; }; - 4537790EA93442CD0FA48609D7ADDD13 /* RDEPUBReaderHighlightsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderHighlightsViewController.swift; sourceTree = ""; }; + 44CC9E1CE3BFCDCF123AF3232DE600ED /* RDEPUBReaderController+PublicAPI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+PublicAPI.swift"; sourceTree = ""; }; 4544C4444DCA90E700611D1281969883 /* DTColorFunctions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTColorFunctions.m; path = Core/Source/DTColorFunctions.m; sourceTree = ""; }; + 457B5F878654F351DEB25FAF4076AE4D /* RDEPUBTextPageBoundaryValidator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageBoundaryValidator.swift; sourceTree = ""; }; 45A67761829BBB3974CE24FE50E459EA /* NSDictionary+DTError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+DTError.m"; path = "Core/Source/NSDictionary+DTError.m"; sourceTree = ""; }; + 45A880FCAB9201640E8329B683FCACBA /* RDEPUBBookPageMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBookPageMap.swift; sourceTree = ""; }; + 45BDE90FC850C338F5085963B44CE0F3 /* RDEPUBReaderBottomToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderBottomToolView.swift; sourceTree = ""; }; + 462F0F78022064457859139A0D9B8D3E /* RDEPUBRuntimeChapter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimeChapter.swift; sourceTree = ""; }; 4641C3C93CE32054665ACF80457A7A94 /* DTCoreTextLayoutFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayoutFrame.m; path = Core/Source/DTCoreTextLayoutFrame.m; sourceTree = ""; }; 467CC59CEC3B3BC7ACDCA776FDCBDC1D /* NSURL+DTComparing.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURL+DTComparing.m"; path = "Core/Source/NSURL+DTComparing.m"; sourceTree = ""; }; 47DC174612C98B2CFB4E7D158169139E /* default.css */ = {isa = PBXFileReference; includeInIndex = 1; name = default.css; path = Core/Source/default.css; sourceTree = ""; }; @@ -659,49 +659,53 @@ 499E135F1FEB31C26EB0EF793A90086C /* UIImage+DTFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+DTFoundation.m"; path = "Core/Source/iOS/UIImage+DTFoundation.m"; sourceTree = ""; }; 49DF44BF9FBD9CCC9CDE0A998C428D86 /* RDEPUBCFIDOMPathBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIDOMPathBuilder.swift; sourceTree = ""; }; 4AAC2FDC24D8604A39BD25111689D06A /* RDEPUBWebView+Reflowable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Reflowable.swift"; sourceTree = ""; }; + 4ACC6E3B4FEF517FF8038927FB873994 /* RDEPUBImageViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewController.swift; sourceTree = ""; }; 4C2B218B5EAA5831A036BBF7E1EFC1B9 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/MediaPlayer.framework; sourceTree = DEVELOPER_DIR; }; - 4DFBB7A0C649F48591647E3C08CE6852 /* String+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+RDEPUB.swift"; sourceTree = ""; }; + 4D1E680FFD8DDC08A39464AD386D2992 /* UIColor+RDEPUBHex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUBHex.swift"; sourceTree = ""; }; + 4D91E45585D4F6401B403BD10449ADDF /* RDEPUBReaderTopToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTopToolView.swift; sourceTree = ""; }; 4E1066A8FE63AD2C818E26DDCE62DF58 /* DTHTMLAttributedStringBuilder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLAttributedStringBuilder.h; path = Core/Source/DTHTMLAttributedStringBuilder.h; sourceTree = ""; }; 4F5A145710C3E212B771C4E38BED9926 /* wxread-replace-latin.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-replace-latin.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-replace-latin.css"; sourceTree = ""; }; - 4F60D4A5E3A44B1AB998E185EFF5C046 /* RDEPUBReaderTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTheme.swift; sourceTree = ""; }; - 4FAD41FF83513826720C6497B7A818B6 /* RDEPUBNotePopupCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupCoordinator.swift; sourceTree = ""; }; 4FF4A2A7F2C7CFB5DD757BE1A6E59C7B /* CTLineUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CTLineUtils.m; path = Core/Source/CTLineUtils.m; sourceTree = ""; }; 5001C74FB9506AEC71E458047698A4AB /* DTHTMLParserNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLParserNode.m; path = Core/Source/DTHTMLParserNode.m; sourceTree = ""; }; 505D658FEB22042EEDC51D402700F8C9 /* RDEPUBDTCoreTextRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDTCoreTextRenderer.swift; sourceTree = ""; }; 5096458D9BD2818F786BC3B61B91EAC7 /* NSAttributedString+DTDebug.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+DTDebug.m"; path = "Core/Source/NSAttributedString+DTDebug.m"; sourceTree = ""; }; - 50BEBB47FE6ED062DE6363BFDCC7D84C /* RDEPUBReaderSearchBarView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchBarView.swift; sourceTree = ""; }; 50C2868064310B16D2B5FD9901C846DC /* DTVideoTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTVideoTextAttachment.h; path = Core/Source/DTVideoTextAttachment.h; sourceTree = ""; }; 519087D9CD0F5E440E6D2C3B1AA1DFA2 /* DTBase64Coding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTBase64Coding.h; path = Core/Source/DTBase64Coding.h; sourceTree = ""; }; 5193541848D2D1BF115A45D8A730611C /* Archive+ReadingDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+ReadingDeprecated.swift"; path = "Sources/ZIPFoundation/Archive+ReadingDeprecated.swift"; sourceTree = ""; }; 52053ABC9CD3D4A72CD8A22173428AEB /* NSMutableString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableString+HTML.h"; path = "Core/Source/NSMutableString+HTML.h"; sourceTree = ""; }; - 523F6E31441155AAFAC1E88316C623A4 /* RDEPUBBookPageMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBookPageMap.swift; sourceTree = ""; }; - 52816DCF8A866861EFF13A58D6D32CA8 /* RDEPUBReaderTopToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTopToolView.swift; sourceTree = ""; }; + 527A6EE584C515DEE0448928F5BB0AE6 /* RDEPUBReaderDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDelegate.swift; sourceTree = ""; }; 528643F4F0CD2FEC7AD5C0ACA9895D9D /* RDEPUBPaginationCacheCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationCacheCoordinator.swift; sourceTree = ""; }; + 52A7FCBB2219561212D36C393B333E8D /* RDEPUBNotePopupViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupViewController.swift; sourceTree = ""; }; 5514CEBB75D8BFFC1D1CA08E8E46BE62 /* RDReaderView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RDReaderView-prefix.pch"; sourceTree = ""; }; 55423549E54A01F039B5F379B264C73F /* UIApplication+DTNetworkActivity.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIApplication+DTNetworkActivity.h"; path = "Core/Source/iOS/UIApplication+DTNetworkActivity.h"; sourceTree = ""; }; 558FCD3F7E481B782EBFA127486ED15D /* DTHTMLParserTextNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLParserTextNode.h; path = Core/Source/DTHTMLParserTextNode.h; sourceTree = ""; }; 55B9309F0BDDDE2C3EE13C97BF2C0F1E /* Archive+Helpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Helpers.swift"; path = "Sources/ZIPFoundation/Archive+Helpers.swift"; sourceTree = ""; }; + 563790B1DA3FCFFF97263535AEDB9591 /* RDEPUBReaderPersistence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPersistence.swift; sourceTree = ""; }; 564F072D0966350F4C3986E01EB3EB2C /* RDEPUBRenderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRenderRequest.swift; sourceTree = ""; }; 56A9260F17C4825708B83598BEC99365 /* RDReaderFlowLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderFlowLayout.swift; sourceTree = ""; }; 56E8939081946D090FD77A04F879754C /* DTExtendedFileAttributes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTExtendedFileAttributes.m; path = Core/Source/DTExtendedFileAttributes.m; sourceTree = ""; }; 57642B518C047A428FE1266A09E0513F /* DTImageTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTImageTextAttachment.m; path = Core/Source/DTImageTextAttachment.m; sourceTree = ""; }; 587C2E270D5414FF4E3786D14BD36694 /* RDEPUBFragmentMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFragmentMarkerInjector.swift; sourceTree = ""; }; + 592C900095F4CE33172C3233D2720E53 /* RDEPUBSelectionLoupeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionLoupeView.swift; sourceTree = ""; }; 5977986EDFE76D5EF96A6D95483B12F7 /* Pods-ReadViewDemo-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReadViewDemo-frameworks.sh"; sourceTree = ""; }; 599172147A32B6978EB5AAE1BE55FF7A /* DTAnchorHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAnchorHTMLElement.h; path = Core/Source/DTAnchorHTMLElement.h; sourceTree = ""; }; 5B5686B2CD1ADB2443ECF94B15903873 /* RDEPUBResourceURLSchemeHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBResourceURLSchemeHandler.swift; sourceTree = ""; }; + 5B660A95A07E55AE3763E8F908456150 /* RDEPUBReaderLoadCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLoadCoordinator.swift; sourceTree = ""; }; + 5BEA03FA083C9125362B656F760E845F /* RDEPUBReaderTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTheme.swift; sourceTree = ""; }; 5C3D91FFA65414A2787FEB95576E0097 /* DTCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCompatibility.h; path = Core/Source/DTCompatibility.h; sourceTree = ""; }; 5C891B983F0CC956CAE3978A15875819 /* NSDictionary+DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+DTCoreText.h"; path = "Core/Source/NSDictionary+DTCoreText.h"; sourceTree = ""; }; + 5CCE94BB911FD46F5041173C2B601F2B /* RDEPUBReaderController+ExternalLinks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ExternalLinks.swift"; sourceTree = ""; }; 5D146C3F4B7878B5CE8EFF38765580C2 /* DTAccessibilityElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAccessibilityElement.h; path = Core/Source/DTAccessibilityElement.h; sourceTree = ""; }; 5DB480D0B78911DBF96986E64A714907 /* DTListItemHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTListItemHTMLElement.h; path = Core/Source/DTListItemHTMLElement.h; sourceTree = ""; }; 5E000FE659A8C4AE6C55AE7B9CC951AA /* RDEPUBTextRendererSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextRendererSupport.swift; sourceTree = ""; }; - 5EB2B007B49D93FC696248480F4CB984 /* RDEPUBBackgroundCoverageStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundCoverageStore.swift; sourceTree = ""; }; + 5E86839B7DDFC59C16A388E00239F50F /* RDEPUBReaderAssemblyCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAssemblyCoordinator.swift; sourceTree = ""; }; 5F3B770A5B6ED1C21FDA2BD1A8B06EE6 /* RDEPUBCSSCompatibilityLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCSSCompatibilityLayer.swift; sourceTree = ""; }; 5F81C81E7CF8B0AE4646712FC2ADD8B0 /* RDEPUBTextAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnchor.swift; sourceTree = ""; }; - 60FB0E099208100165A2E44F44CA76B1 /* RDEPUBReaderLocationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLocationCoordinator.swift; sourceTree = ""; }; + 60F3D803C6E446785A25173F8A33539E /* RDEPUBReaderController+LocationResolution.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+LocationResolution.swift"; sourceTree = ""; }; 61B18088896D291E0CE7718DFE82FAC1 /* DTListItemHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTListItemHTMLElement.m; path = Core/Source/DTListItemHTMLElement.m; sourceTree = ""; }; + 61EE5C61A8163892E9A19C231828658C /* RDEPUBReaderSettingsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettingsViewController.swift; sourceTree = ""; }; 63A75BF0478FAC7398F5E66A509F639D /* RDEPUBAttachmentNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentNormalizer.swift; sourceTree = ""; }; 63D23A912F5F91D0D3D83DF9E05515D0 /* RDEPUBFontNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFontNormalizer.swift; sourceTree = ""; }; - 64254678E1440D40D4BC39AE8B62BB27 /* RDEPUBChapterWarmupOrchestrator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterWarmupOrchestrator.swift; sourceTree = ""; }; 6430501430329643C8280B3985C48711 /* URL+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+ZIP.swift"; path = "Sources/ZIPFoundation/URL+ZIP.swift"; sourceTree = ""; }; 64676B6C8A9F9195A481010213F37B6C /* epub-bridge.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "epub-bridge.js"; path = "Sources/RDReaderView/EPUBCore/Resources/epub-bridge.js"; sourceTree = ""; }; 65572083A10EE0C48AA7F493F923BCC0 /* RDEPUBPaginator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginator.swift; sourceTree = ""; }; @@ -714,15 +718,15 @@ 69076FC9D4201719C319547346DA3E21 /* DTTextHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextHTMLElement.m; path = Core/Source/DTTextHTMLElement.m; sourceTree = ""; }; 696C8561F8104D867B50A79E1147DE02 /* RDEPUBTextBookCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookCache.swift; sourceTree = ""; }; 6AC1E707308CDBC9FFC09CECE3117A9A /* DTAccessibilityViewProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAccessibilityViewProxy.m; path = Core/Source/DTAccessibilityViewProxy.m; sourceTree = ""; }; - 6B9450CAB183FFD7F4018D819E02321C /* RDEPUBReaderChromeCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChromeCoordinator.swift; sourceTree = ""; }; 6C3F8DF48C6EB28BFD05F5BB49793DDA /* FileManager+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FileManager+ZIP.swift"; path = "Sources/ZIPFoundation/FileManager+ZIP.swift"; sourceTree = ""; }; + 6C9B40FEFC2CC9CEB30271F8C4A38740 /* RDEPUBWebDecorationOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebDecorationOverlayView.swift; sourceTree = ""; }; + 6D1A3ADEC673B078306A361D2601E743 /* RDEPUBChapterOffsetMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterOffsetMap.swift; sourceTree = ""; }; 6D2316F422A6C97F95F9CF43E6F8E94F /* DTBlockFunctions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTBlockFunctions.m; path = Core/Source/DTBlockFunctions.m; sourceTree = ""; }; - 6D5537F73FD04F43BE1E354A25710C9E /* RDEPUBChapterLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLoader.swift; sourceTree = ""; }; + 6DACF1F2702EB6425DF22A4B0CB64202 /* UIColor+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUB.swift"; sourceTree = ""; }; + 6E1394B4A44C49F86D8E755C1C16910C /* RDEPUBTextContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentView.swift; sourceTree = ""; }; 6E21B10EE150F00F245D297EAB7F2BA2 /* NSNumber+RomanNumerals.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNumber+RomanNumerals.m"; path = "Core/Source/NSNumber+RomanNumerals.m"; sourceTree = ""; }; - 7045AD2296EB5CDE847902C39A59F370 /* RDEPUBReaderViewportMonitor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderViewportMonitor.swift; sourceTree = ""; }; - 7076326835119DD963CB9ABC0DF78460 /* UIColor+RDEPUBHex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUBHex.swift"; sourceTree = ""; }; + 7118633F5A91B2900F602E19CFD15D1F /* RDEPUBChapterRuntimeStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterRuntimeStore.swift; sourceTree = ""; }; 71BBE6384315D7F00F5ECFFF67A85AF9 /* DTHTMLParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLParser.m; path = Core/Source/DTHTMLParser/DTHTMLParser.m; sourceTree = ""; }; - 71E8149D8D8A8F61C09D98F329F11CA0 /* RDEPUBSelectionState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionState.swift; sourceTree = ""; }; 71EE0B4D4D1B3D0A55E903E7E0CA44E7 /* NSAttributedString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+HTML.m"; path = "Core/Source/NSAttributedString+HTML.m"; sourceTree = ""; }; 720396ED306E768BAD28007D5E96B757 /* DTColorFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTColorFunctions.h; path = Core/Source/DTColorFunctions.h; sourceTree = ""; }; 7203B4D9D997037E0F9D154A3B049738 /* DTAttributedTextContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedTextContentView.m; path = Core/Source/DTAttributedTextContentView.m; sourceTree = ""; }; @@ -730,35 +734,33 @@ 722AF38F5106ADDE6F98D282F886A769 /* DTCoreTextFontCollection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextFontCollection.m; path = Core/Source/DTCoreTextFontCollection.m; sourceTree = ""; }; 72F99D96321DF0F2BC595BC7B6A66EA2 /* RDEPUBStyleSheetBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleSheetBuilder.swift; sourceTree = ""; }; 730B56BC97DFF2B1E04DD2608055D9E0 /* UIApplication+DTNetworkActivity.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIApplication+DTNetworkActivity.m"; path = "Core/Source/iOS/UIApplication+DTNetworkActivity.m"; sourceTree = ""; }; + 7380BDD29AC5C55223ADDD7C33698102 /* RDEPUBTextPageRenderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageRenderView.swift; sourceTree = ""; }; 741D74BC489AF6715191F2A88E50B016 /* DTCoreText.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DTCoreText.modulemap; sourceTree = ""; }; + 745B50420148262217CC19E5B8E1E61A /* RDEPUBTextSelectionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSelectionController.swift; sourceTree = ""; }; 7503926237A4785CCB864B2BCD1F4C2B /* DTFoundation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTFoundation.release.xcconfig; sourceTree = ""; }; 753994141ACB981C898B36B761321C23 /* NSCoder+DTCompatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSCoder+DTCompatibility.m"; path = "Core/Source/NSCoder+DTCompatibility.m"; sourceTree = ""; }; - 75D73CEEFC4AA6AFA6EBF279221F5330 /* RDEPUBReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderController.swift; sourceTree = ""; }; 75F44A99D2304FE5397B4DCD6BABAF2B /* RDPlainTextBookBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDPlainTextBookBuilder.swift; sourceTree = ""; }; 765A94769106D14615FFB30EE1BD5E65 /* Archive+BackingConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+BackingConfiguration.swift"; path = "Sources/ZIPFoundation/Archive+BackingConfiguration.swift"; sourceTree = ""; }; 766227355308600EFC048F797274454A /* ZIPFoundation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.release.xcconfig; sourceTree = ""; }; 7667AF77CBF47AFAA7D5F190B16A51FF /* wxread-default.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-default.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-default.css"; sourceTree = ""; }; 76C1831768CE55090EADD902B29B6CD1 /* Entry+Serialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Entry+Serialization.swift"; path = "Sources/ZIPFoundation/Entry+Serialization.swift"; sourceTree = ""; }; + 76C37210B5D599FF177A819748A274DF /* RDEPUBPageResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageResolver.swift; sourceTree = ""; }; 771E0D5CBCBC013BF5780FEE5BBA81FF /* DTCoreTextGlyphRun.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextGlyphRun.h; path = Core/Source/DTCoreTextGlyphRun.h; sourceTree = ""; }; - 77CF002A64746DB8BE37C9DC0941C805 /* RDEPUBReaderLoadCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLoadCoordinator.swift; sourceTree = ""; }; 7805DFC2CB71F5B6BBF7891876360EFB /* NSAttributedString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+HTML.h"; path = "Core/Source/NSAttributedString+HTML.h"; sourceTree = ""; }; 78887827FF15DE20865DF3A00660993B /* NSDictionary+DTCoreText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+DTCoreText.m"; path = "Core/Source/NSDictionary+DTCoreText.m"; sourceTree = ""; }; 78B43BA14CD70F5448082DE1EE73B034 /* RDEPUBSearchEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSearchEngine.swift; sourceTree = ""; }; - 78D2759A8A01919CE516A30C1A04B967 /* RDEPUBReaderAnnotationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAnnotationCoordinator.swift; sourceTree = ""; }; 78EA0DF405F8465A86BFD3DDFD2EC295 /* Pods-ReadViewDemo */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-ReadViewDemo"; path = Pods_ReadViewDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 796EF27FF6AA4B62367B6BD9CEBD85A8 /* DTCSSStylesheet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCSSStylesheet.h; path = Core/Source/DTCSSStylesheet.h; sourceTree = ""; }; + 7975AED4D3A0C7FCE350B73EA6D1DC77 /* RDEPUBReaderController+RenderSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RenderSupport.swift"; sourceTree = ""; }; 79D13938A04579CD1E9E042A39CC4D86 /* ZIPFoundation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.debug.xcconfig; sourceTree = ""; }; 7A13F9221A300A89F9F8D0A2AB1794BF /* DTCoreText.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTCoreText.release.xcconfig; sourceTree = ""; }; 7A4E9E54E556A72BC885CCC08B3791C1 /* DTHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLElement.m; path = Core/Source/DTHTMLElement.m; sourceTree = ""; }; 7B0179A6B7825D9A269A8A50C2BCBDDB /* RDReaderView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RDReaderView.modulemap; sourceTree = ""; }; - 7BFC2AF3C2082F2A0D9950A1B8256229 /* RDEPUBImageViewerCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewerCoordinator.swift; sourceTree = ""; }; 7C80941DE172AF972D2247659684D93A /* NSString+DTUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTUtilities.h"; path = "Core/Source/NSString+DTUtilities.h"; sourceTree = ""; }; - 7CA5ED27523EC3D3AFC0F01E05891FBB /* RDEPUBChapterSummaryDiskCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterSummaryDiskCache.swift; sourceTree = ""; }; 7CA72FA9A4F2F42A75C58325738A44AC /* NSMutableAttributedString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableAttributedString+HTML.m"; path = "Core/Source/NSMutableAttributedString+HTML.m"; sourceTree = ""; }; 7CFFB65C5D340A4B5C627B3EF02CD127 /* NSNumber+RomanNumerals.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNumber+RomanNumerals.h"; path = "Core/Source/NSNumber+RomanNumerals.h"; sourceTree = ""; }; 7D4062C36BA5FFBAE9122CAD0DCEC6B6 /* DTCoreText-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTCoreText-prefix.pch"; sourceTree = ""; }; 7D8AE4BEBD1998839BA83AD05CA6CAC5 /* DTBreakHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTBreakHTMLElement.m; path = Core/Source/DTBreakHTMLElement.m; sourceTree = ""; }; - 7FDE14B76D550FCBD28D3B30AA9D883D /* RDEPUBReaderBottomToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderBottomToolView.swift; sourceTree = ""; }; 80F1F9A3C3AD1C55622B17CA5D503766 /* RDEPUBTextIndexTable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextIndexTable.swift; sourceTree = ""; }; 814315319ED50AF916C3C8A68C0A47A0 /* DTAttributedTextCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedTextCell.m; path = Core/Source/DTAttributedTextCell.m; sourceTree = ""; }; 82B54A69DF5E94D0D1B34E9D31C0D997 /* RDReaderPreloadController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPreloadController.swift; sourceTree = ""; }; @@ -766,18 +768,18 @@ 83041D1E40ECC246DB5539C712499A09 /* RDReaderView+ToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+ToolView.swift"; sourceTree = ""; }; 83410CC9CF2ABE63B90A92F2F988BF65 /* RDReaderView-RDReaderViewAssets */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "RDReaderView-RDReaderViewAssets"; path = RDReaderViewAssets.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 842B11843F82FBEA1D725543ACAB02CE /* RDEPUBCFIRange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIRange.swift; sourceTree = ""; }; - 848DA9852FDF80FAB067E383E1D650C1 /* RDEPUBPageLayoutSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageLayoutSnapshot.swift; sourceTree = ""; }; - 849DFA0D192A6586FCC90DE7E300D812 /* RDEPUBSettingsFlipAutomation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSettingsFlipAutomation.swift; sourceTree = ""; }; - 854840B8F97C908AB5B51EDF03E54D52 /* RDEPUBTextPageRenderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageRenderView.swift; sourceTree = ""; }; 85E8DA9DE1F796F12171763D20CBAF27 /* DTFoundation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTFoundation.debug.xcconfig; sourceTree = ""; }; 86526ADF32337683AA173B5FC1E6A94C /* RDEPUBTextLayouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextLayouter.swift; sourceTree = ""; }; 8718F2DB8F0DC085CB012D9996596F3F /* NSString+CSS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+CSS.m"; path = "Core/Source/NSString+CSS.m"; sourceTree = ""; }; + 8829A16514270D407FA56861634910D6 /* RDEPUBReaderRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderRuntime.swift; sourceTree = ""; }; 88464D2E3579F1A5B25DCCA128528938 /* DTCoreTextFontDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextFontDescriptor.m; path = Core/Source/DTCoreTextFontDescriptor.m; sourceTree = ""; }; + 8857E55841583E848290F85432CA460B /* RDEPUBPresentationRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPresentationRuntime.swift; sourceTree = ""; }; 89268DC8F1FBDE4F3167647B6A4F9216 /* DTHorizontalRuleHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHorizontalRuleHTMLElement.h; path = Core/Source/DTHorizontalRuleHTMLElement.h; sourceTree = ""; }; - 8A50D413DFA43820BCD76D668C0C7868 /* RDEPUBReaderAssemblyCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAssemblyCoordinator.swift; sourceTree = ""; }; 8B35D0622F339A5B8A864FAA0C9EAE47 /* Pods-ReadViewDemo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReadViewDemo-acknowledgements.plist"; sourceTree = ""; }; + 8B5934123F0DB4372907A51918A83273 /* RDEPUBAttachmentTooltipView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipView.swift; sourceTree = ""; }; 8B8FDAF9E8370366F7FA8524CB0D80B3 /* DTTextAttachmentHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextAttachmentHTMLElement.h; path = Core/Source/DTTextAttachmentHTMLElement.h; sourceTree = ""; }; 8BA617294E6371DD7FAC32B61E0873F2 /* DTPieProgressIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTPieProgressIndicator.m; path = Core/Source/iOS/DTPieProgressIndicator.m; sourceTree = ""; }; + 8BC1163A98FA7D285438393945C2EC73 /* RDEPUBReaderViewportMonitor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderViewportMonitor.swift; sourceTree = ""; }; 8C9575F05D72C239E7E6F079BACDF4C7 /* DTVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTVersion.h; path = Core/Source/DTVersion.h; sourceTree = ""; }; 8C99F4EC07FF6B3DD8C8B72E54DEB008 /* RDReaderPagingController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPagingController.swift; sourceTree = ""; }; 8CF7CEB31BED0554F3EF3D3442A89B47 /* DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreText.h; path = Core/Source/DTCoreText.h; sourceTree = ""; }; @@ -791,27 +793,26 @@ 8F4881006C6FAE4DFADBE2ACE4E9A744 /* RDEPUBSemanticMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSemanticMarkerInjector.swift; sourceTree = ""; }; 8F653EFBBEDAAC96A34BC93B4211E792 /* DTCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCompatibility.h; path = Core/Source/DTCompatibility.h; sourceTree = ""; }; 8FAAF640165FC1B4B47C546F80D98B1E /* DTColor+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "DTColor+Compatibility.m"; path = "Core/Source/DTColor+Compatibility.m"; sourceTree = ""; }; + 91D2B14530EDF4C2D742B24A0D32B858 /* RDEPUBReaderEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderEnvironment.swift; sourceTree = ""; }; 92960C67FEC64C10BA567184834F0DCC /* RDEPUBTypesettingPipeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTypesettingPipeline.swift; sourceTree = ""; }; - 92ED368A3AC26AAF26FEB59577BBF3F4 /* UIColor+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUB.swift"; sourceTree = ""; }; - 93A16F63ABA3D0BA695CC9F1F7D6F3DA /* RDEPUBReaderPersistence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPersistence.swift; sourceTree = ""; }; + 92CEF2B1CC1AD607F9F46594DADCE788 /* RDEPUBReaderContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderContext.swift; sourceTree = ""; }; 93A4E820E3592827FF87F820BBAC3179 /* RDReaderView.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RDReaderView.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 94705DADD1F09F4162F7D733318238F4 /* NSData+DTCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+DTCrypto.h"; path = "Core/Source/NSData+DTCrypto.h"; sourceTree = ""; }; + 949BC485A5DC7EF786656CBF9A479A1D /* RDURLReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDURLReaderController.swift; sourceTree = ""; }; 9542AFE3A82C8AE56576254CE196E71A /* DTCustomColoredAccessory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCustomColoredAccessory.m; path = Core/Source/iOS/DTCustomColoredAccessory.m; sourceTree = ""; }; - 9736CC5317A5E8F2EE1A03A963197BDF /* RDEPUBNotePopupViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupViewController.swift; sourceTree = ""; }; + 95C3D8182D7F19D798483F0031DB4B8A /* RDEPUBTextAnnotationOverlay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnnotationOverlay.swift; sourceTree = ""; }; + 964DE5C11E965DC6F881D1B75582D58B /* RDEPUBReaderTableOfContentsItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTableOfContentsItem.swift; sourceTree = ""; }; 976DBE312D138856488A4DEF88606BC9 /* RDEPUBCFI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFI.swift; sourceTree = ""; }; 978449466D53EA6F5D40FCF0F353DDCA /* NSAttributedString+DTCoreText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+DTCoreText.m"; path = "Core/Source/NSAttributedString+DTCoreText.m"; sourceTree = ""; }; 98CF9C5D504838741E399811F4D5A0B7 /* NSAttributedString+SmallCaps.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+SmallCaps.m"; path = "Core/Source/NSAttributedString+SmallCaps.m"; sourceTree = ""; }; - 995E88CDC3691BA531FF7951E4C809EC /* RDEPUBMetadataParseCancellationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseCancellationController.swift; sourceTree = ""; }; - 9A220EF1E6F5821B91990AAED74A4FFC /* RDEPUBWebDecorationOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebDecorationOverlayView.swift; sourceTree = ""; }; 9C12A4A5BB42D0F68DABBD3BDF103BC5 /* DTDictationPlaceholderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTDictationPlaceholderView.h; path = Core/Source/DTDictationPlaceholderView.h; sourceTree = ""; }; 9C1CDD44F96B466A619015AA0A7B2D17 /* RDEPUBCFIError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIError.swift; sourceTree = ""; }; 9C3615C94C147AEA92F022E119810E9F /* Data+Serialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Serialization.swift"; path = "Sources/ZIPFoundation/Data+Serialization.swift"; sourceTree = ""; }; - 9C5B9705D72218CB383307A329C9060B /* RDEPUBReaderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderConfiguration.swift; sourceTree = ""; }; 9C5E29D728B8CD4EABC0B3DD9CD9DE99 /* UIScreen+DTFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScreen+DTFoundation.h"; path = "Core/Source/iOS/UIScreen+DTFoundation.h"; sourceTree = ""; }; 9C6CE93FAA68605C6B90FF844A98E440 /* CTLineUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CTLineUtils.h; path = Core/Source/CTLineUtils.h; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9E94387C53C6E054A73F8EE89787003D /* RDEPUBTextLayoutFrame.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextLayoutFrame.swift; sourceTree = ""; }; - A1718601130E0F134E893F2A5CE605C6 /* RDEPUBReaderDependencies.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDependencies.swift; sourceTree = ""; }; + A01E0B0F5FAC4DBF5D1DEC0013417AC1 /* RDEPUBPageInteractionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageInteractionController.swift; sourceTree = ""; }; A20F6F0463A998DC3BD53DE9E63B63DE /* DTSmartPagingScrollView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTSmartPagingScrollView.m; path = Core/Source/iOS/DTSmartPagingScrollView.m; sourceTree = ""; }; A3BD3ED7913130D32E14D5572CBCC921 /* NSString+DTFormatNumbers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTFormatNumbers.h"; path = "Core/Source/NSString+DTFormatNumbers.h"; sourceTree = ""; }; A3DE08AC23FE36A6C3F33A04700FDE57 /* DTAnimatedGIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAnimatedGIF.m; path = Core/Source/iOS/DTAnimatedGIF/DTAnimatedGIF.m; sourceTree = ""; }; @@ -820,59 +821,66 @@ A59C77DC849EDF86936A25873E674F72 /* RDEPUBChapterTailNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterTailNormalizer.swift; sourceTree = ""; }; A5D1FFCB042340FB917DAAE076DD1CCF /* DTFoundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DTFoundation.modulemap; sourceTree = ""; }; A61C8F1BDD76EA59082F65269083BD08 /* DTCoreTextConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextConstants.h; path = Core/Source/DTCoreTextConstants.h; sourceTree = ""; }; + A686F0FF211686E1D4F60B994E012587 /* RDEPUBChapterLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLoader.swift; sourceTree = ""; }; + A765D0DF2FFB6442A7BF2726F2F3B2C8 /* RDEPUBTextContentInteractionCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentInteractionCoordinator.swift; sourceTree = ""; }; A7E167717A18E0C858C6FD95804249E4 /* NSCharacterSet+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSCharacterSet+HTML.h"; path = "Core/Source/NSCharacterSet+HTML.h"; sourceTree = ""; }; + A7ECD7EBE082C509350CCB121EE308F6 /* RDEPUBTextPageDecorationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageDecorationView.swift; sourceTree = ""; }; A8A086525BF509F4581693115438B82B /* NSAttributedString+DTDebug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+DTDebug.h"; path = "Core/Source/NSAttributedString+DTDebug.h"; sourceTree = ""; }; A8CC38EFEF171FFEE008C32A6319BE6A /* DTFolderMonitor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTFolderMonitor.h; path = Core/Source/DTFolderMonitor.h; sourceTree = ""; }; + A8DBBD9EE558EAEC43860A5170AEEB3C /* RDEPUBReaderController+DataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+DataSource.swift"; sourceTree = ""; }; A9B4C7EA8E0601A462DDA753AFA93E66 /* RDReaderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderView.swift; sourceTree = ""; }; AA0811310099A4BCB3D52683B70DB3D1 /* Pods-ReadViewDemo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReadViewDemo-dummy.m"; sourceTree = ""; }; AC0A4ED7E936923A29A5EEB1D95D6B55 /* DTTextAttachmentHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextAttachmentHTMLElement.m; path = Core/Source/DTTextAttachmentHTMLElement.m; sourceTree = ""; }; - AC75B34F4CE50854BC099CE73D139FCC /* RDEPUBAttachmentTooltipView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipView.swift; sourceTree = ""; }; ACA6D26B26D2653D6E1C871A482BD6DF /* NSURL+DTUnshorten.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURL+DTUnshorten.h"; path = "Core/Source/NSURL+DTUnshorten.h"; sourceTree = ""; }; - ACD11D2C8694B9E3BDD175F1EEBEB64D /* RDEPUBPresentationRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPresentationRuntime.swift; sourceTree = ""; }; ACD2A4FF41C5A223C2D4B74E0EDA9B2C /* DTCoreText-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DTCoreText-Info.plist"; sourceTree = ""; }; + ADB1213E5EB8A69E4CD2283819D92718 /* RDEPUBSettingsFlipAutomation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSettingsFlipAutomation.swift; sourceTree = ""; }; ADD5B2F66FCCFB58393314E7B9FE4384 /* NSMutableArray+DTMoving.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+DTMoving.m"; path = "Core/Source/NSMutableArray+DTMoving.m"; sourceTree = ""; }; AE6582B1336C77B6C366DAA669570B4A /* RDReaderGestureController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderGestureController.swift; sourceTree = ""; }; - AE6769FF56092F4EB6B5EDCD64F8E6A7 /* RDEPUBJumpSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJumpSession.swift; sourceTree = ""; }; AF1516035C269F7A41EE064AAB14D562 /* DTActivityTitleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTActivityTitleView.h; path = Core/Source/iOS/DTActivityTitleView.h; sourceTree = ""; }; AF436E76C893E223A4F0BE86C1276054 /* UIScreen+DTFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScreen+DTFoundation.m"; path = "Core/Source/iOS/UIScreen+DTFoundation.m"; sourceTree = ""; }; B0218A7B243387C79E099CA947CF243D /* Archive+Writing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Writing.swift"; path = "Sources/ZIPFoundation/Archive+Writing.swift"; sourceTree = ""; }; + B02D3DE3AD6CA9AC5B80F44767F647FE /* RDEPUBChapterLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLocation.swift; sourceTree = ""; }; B0390F2BB06B9CE8FCBCD30D60C154B9 /* RDEPUBCFIMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIMap.swift; sourceTree = ""; }; B12CE4962CDC324FB47FB92D6706D149 /* DTLinkButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTLinkButton.h; path = Core/Source/DTLinkButton.h; sourceTree = ""; }; - B137EA59DB88E982FBF8E5C775975FE5 /* RDEPUBViewportTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBViewportTypes.swift; sourceTree = ""; }; B23C5F038DAC52B75213C0760C431F2B /* DTHTMLWriter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLWriter.m; path = Core/Source/DTHTMLWriter.m; sourceTree = ""; }; + B35B9168E52A3CBB8E424FD0F5A0361C /* RDEPUBJumpSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJumpSession.swift; sourceTree = ""; }; B37118B8D16847B0F82E06A5B33898AB /* DTCSSStylesheet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCSSStylesheet.m; path = Core/Source/DTCSSStylesheet.m; sourceTree = ""; }; B3B0AAC7948C4A103B284B0F3DCC1262 /* RDEPUBBuildDiagnosticsReporter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBuildDiagnosticsReporter.swift; sourceTree = ""; }; B41F7D27C2336F89BB0185ACB0B19EA9 /* ZIPFoundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-umbrella.h"; sourceTree = ""; }; + B42B8B70BAED6BCED06FF54636A4FF0C /* RDEPUBReaderChapterListController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChapterListController.swift; sourceTree = ""; }; B43D7603C0D66635268842EC0A2655AC /* NSFileWrapper+DTCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSFileWrapper+DTCopying.h"; path = "Core/Source/NSFileWrapper+DTCopying.h"; sourceTree = ""; }; B4A7F7402FAEE3A277A8716DDA115C95 /* NSString+Paragraphs.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Paragraphs.m"; path = "Core/Source/NSString+Paragraphs.m"; sourceTree = ""; }; B4D20A2B33F9F4DD8499FB462DE2731F /* DTAttributedTextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedTextView.h; path = Core/Source/DTAttributedTextView.h; sourceTree = ""; }; B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B68E527967EEF7E7E61E5B5F1F64C791 /* RDEPUBRuntimePageCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimePageCount.swift; sourceTree = ""; }; B6CA8CC4525EF64AA5CEE4A722737F1C /* DTCoreText-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DTCoreText-dummy.m"; sourceTree = ""; }; B76B1E836C34CB755AEE1FBF7DC26BDD /* NSString+DTPaths.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTPaths.h"; path = "Core/Source/NSString+DTPaths.h"; sourceTree = ""; }; B7C4233DF4FA80BF4A9E6FA5082D49E5 /* DTCoreTextParagraphStyle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextParagraphStyle.m; path = Core/Source/DTCoreTextParagraphStyle.m; sourceTree = ""; }; + B7E8901535604C19FD5AD766F825AA54 /* RDEPUBReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderController.swift; sourceTree = ""; }; B83D7A73677A2C3141EDEF56B9CE6584 /* DTVideoTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTVideoTextAttachment.m; path = Core/Source/DTVideoTextAttachment.m; sourceTree = ""; }; B8717A7A7BC5A1529A0F80FB3B22675D /* DTFoundation-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DTFoundation-Info.plist"; sourceTree = ""; }; + B8CF3C95B01CA3EFA19AD38DA2AC51E5 /* RDEPUBReaderPaginationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPaginationCoordinator.swift; sourceTree = ""; }; + B9E98DF633FFBA1D5C2D451CB2B2E6F1 /* RDEPUBChapterCacheKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterCacheKey.swift; sourceTree = ""; }; BA8A527A4CCB2AF1C1E26744B301F6B8 /* DTIframeTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTIframeTextAttachment.m; path = Core/Source/DTIframeTextAttachment.m; sourceTree = ""; }; BAE45673EE2875DB23FA7BDD61FDE1EF /* DTCustomColoredAccessory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCustomColoredAccessory.h; path = Core/Source/iOS/DTCustomColoredAccessory.h; sourceTree = ""; }; BC59BBF6628D93AAC30CBFE0FF0151F2 /* ZIPFoundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-prefix.pch"; sourceTree = ""; }; BD65B936E2A6FEB74718EA86D9AC1899 /* DTCoreTextParagraphStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextParagraphStyle.h; path = Core/Source/DTCoreTextParagraphStyle.h; sourceTree = ""; }; BD8F015377F898E4B0229FF584685390 /* RDEPUBWebView+FixedLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+FixedLayout.swift"; sourceTree = ""; }; + BD93A4C37E58849DD3FBADFE4E3BB7E4 /* RDEPUBDarkImageAdjuster.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDarkImageAdjuster.swift; sourceTree = ""; }; + BDF2713051A7FCC4BA20AD1374044971 /* RDEPUBReaderState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderState.swift; sourceTree = ""; }; BEA46E51E3616ECEAF0ACCEA9B8C67EF /* DTFolderMonitor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTFolderMonitor.m; path = Core/Source/DTFolderMonitor.m; sourceTree = ""; }; BF55DCBC3A5B0BEC5B1A4C6187F20D38 /* RDReaderViewProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderViewProtocols.swift; sourceTree = ""; }; - BFCD03AC792A6CF8550BC44A4339D9FE /* RDEPUBTextAnnotationOverlay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnnotationOverlay.swift; sourceTree = ""; }; BFF51E56E09E095C92CB5B9F21384027 /* Archive+MemoryFile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+MemoryFile.swift"; path = "Sources/ZIPFoundation/Archive+MemoryFile.swift"; sourceTree = ""; }; C0DCB00F0B62D7DBE628D2B5FF006E93 /* DTCoreText.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTCoreText.debug.xcconfig; sourceTree = ""; }; - C2135D2A77CD609485DAF400E1E3396F /* RDEPUBChapterRuntimeStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterRuntimeStore.swift; sourceTree = ""; }; C229DC7F5A2BB8C2A3C586FF6CF41D47 /* epub-fixed-layout.html */ = {isa = PBXFileReference; includeInIndex = 1; name = "epub-fixed-layout.html"; path = "Sources/RDReaderView/EPUBCore/Resources/epub-fixed-layout.html"; sourceTree = ""; }; C3E162E0261A5B0850158D3403191E62 /* Archive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Archive.swift; path = Sources/ZIPFoundation/Archive.swift; sourceTree = ""; }; + C4416B5CBB4AF36581524965A8C8F53F /* RDEPUBReaderAnnotationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAnnotationCoordinator.swift; sourceTree = ""; }; C46FCF109DBCB37595D2A3366CF1D765 /* DTCoreTextLayoutFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextLayoutFrame.h; path = Core/Source/DTCoreTextLayoutFrame.h; sourceTree = ""; }; C495C74844982FAA1B846A2A89023D12 /* DTCoreTextMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextMacros.h; path = Core/Source/DTCoreTextMacros.h; sourceTree = ""; }; - C49A29FA18CE9201BCA63615AEF3457F /* RDEPUBReaderRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderRuntime.swift; sourceTree = ""; }; C5005A9E8F746647585CCAB26853E922 /* NSString+DTFormatNumbers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTFormatNumbers.m"; path = "Core/Source/NSString+DTFormatNumbers.m"; sourceTree = ""; }; C508E49F6BF9F50B05918C230B033069 /* DTTextBlock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextBlock.m; path = Core/Source/DTTextBlock.m; sourceTree = ""; }; - C525E69EA51BC555374CC559F2996233 /* RDEPUBReaderToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderToolView.swift; sourceTree = ""; }; - C52AC0144029821AA538D6165315C585 /* RDEPUBRuntimePageCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimePageCount.swift; sourceTree = ""; }; C59CB44187E054E80CA13F60FF8EE303 /* RDEPUBWebViewDebug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebViewDebug.swift; sourceTree = ""; }; + C5CC04F74B62D6B70820B21C9498D09C /* RDEPUBReaderController+RuntimeBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RuntimeBridge.swift"; sourceTree = ""; }; C69C7A531B5E021499D8FBF1DBE0E3BB /* NSAttributedStringRunDelegates.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NSAttributedStringRunDelegates.m; path = Core/Source/NSAttributedStringRunDelegates.m; sourceTree = ""; }; C7E09A6C247D465CA0EF71B939B2A040 /* NSArray+DTError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+DTError.h"; path = "Core/Source/NSArray+DTError.h"; sourceTree = ""; }; C8BE089AF845973208A11AA41A9B6AAB /* RDEPUBTextPositionConverter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPositionConverter.swift; sourceTree = ""; }; @@ -883,15 +891,14 @@ CADF4452F89F7A5F419D2841FABC8CBC /* RDEPUBWebView+Search.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Search.swift"; sourceTree = ""; }; CB2BD1F8CFECB82D427DF046439E68D6 /* DTHTMLParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLParser.h; path = Core/Source/DTHTMLParser/DTHTMLParser.h; sourceTree = ""; }; CCC633BF76C79E0B4A6750337D5DCDB8 /* DTVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTVersion.m; path = Core/Source/DTVersion.m; sourceTree = ""; }; - CCD1EE67D4C520598E5975F0489DCB87 /* RDEPUBTextPageVerticalJustifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageVerticalJustifier.swift; sourceTree = ""; }; CD3430DE68FE0020F68C496C24E87470 /* RDEPUBPageBreakPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageBreakPolicy.swift; sourceTree = ""; }; - CD5DB51D2F628791D4E0EB41C4B81AF1 /* RDEPUBChapterDataCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterDataCache.swift; sourceTree = ""; }; CDCA21771B2D145D7DCFEEDE00FEDADC /* RDEPUBCFIPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIPath.swift; sourceTree = ""; }; CE761A55BD57C0BFD6336CD073F85C31 /* DTLinkButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTLinkButton.m; path = Core/Source/DTLinkButton.m; sourceTree = ""; }; - CE8C9E2C878448571156DFC0E41979AF /* RDEPUBChapterCacheKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterCacheKey.swift; sourceTree = ""; }; CEBA01360577AAD3FD089B6B17C24260 /* UIFont+DTCoreText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIFont+DTCoreText.m"; path = "Core/Source/UIFont+DTCoreText.m"; sourceTree = ""; }; + CEC94872B74DE33DE8E675EEBC60812A /* RDEPUBNotePopupCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupCoordinator.swift; sourceTree = ""; }; CEEC8715398E89B42F9B04E290E8E4FE /* NSString+DTURLEncoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTURLEncoding.h"; path = "Core/Source/NSString+DTURLEncoding.h"; sourceTree = ""; }; CF1CED3ED65443999913BC0D96ACA151 /* DTImage+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "DTImage+HTML.m"; path = "Core/Source/DTImage+HTML.m"; sourceTree = ""; }; + CFE59748EBA8ED3671180B5ACB903377 /* RDEPUBReaderHighlightsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderHighlightsViewController.swift; sourceTree = ""; }; D0856C3894240A673B5AB7C2704E9144 /* DTDictationPlaceholderTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTDictationPlaceholderTextAttachment.h; path = Core/Source/DTDictationPlaceholderTextAttachment.h; sourceTree = ""; }; D18519BCA8FAA9B01A704A0F0B9FFC78 /* Archive+ZIP64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+ZIP64.swift"; path = "Sources/ZIPFoundation/Archive+ZIP64.swift"; sourceTree = ""; }; D1E89A31867FF1FB44B4B999988F1B82 /* DTFoundation */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DTFoundation; path = DTFoundation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -901,41 +908,40 @@ D30DBDF1EDB20CF83690AC6619AA0C48 /* NSString+DTPaths.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTPaths.m"; path = "Core/Source/NSString+DTPaths.m"; sourceTree = ""; }; D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RDReaderView.debug.xcconfig; sourceTree = ""; }; D4C731AA2088D7E873D8E3D21B95D215 /* DTIframeTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTIframeTextAttachment.h; path = Core/Source/DTIframeTextAttachment.h; sourceTree = ""; }; - D4EB6B49DEC8BCB1ABD8083F9B903101 /* RDEPUBReaderChapterListController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChapterListController.swift; sourceTree = ""; }; - D53EA3F44C0602B1BEB2F85B59B32CB3 /* RDEPUBTextContentInteractionCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentInteractionCoordinator.swift; sourceTree = ""; }; + D5BE2FBFC1E7270EABABA9C6F0C686CA /* RDEPUBBackgroundTrace.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundTrace.swift; sourceTree = ""; }; D5DD4142DF33E1BE0B5A057101E851C5 /* DTLazyImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTLazyImageView.h; path = Core/Source/DTLazyImageView.h; sourceTree = ""; }; D6DAFB416DE591A656C8614E117EEBEF /* ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; sourceTree = ""; }; D75F5147BF67C9935CC45C16F0118C14 /* RDReaderTapRegionHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderTapRegionHandler.swift; sourceTree = ""; }; D80A72D8B7941D30246858D840EE1EF5 /* DTCoreTextLayouter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayouter.m; path = Core/Source/DTCoreTextLayouter.m; sourceTree = ""; }; - D9493E87BC278E65DA39B0F098CC01B9 /* RDEPUBReaderController+LocationResolution.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+LocationResolution.swift"; sourceTree = ""; }; D9A812C3E577A3ADC36BAE3FF7AA4D9C /* NSFileWrapper+DTCopying.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSFileWrapper+DTCopying.m"; path = "Core/Source/NSFileWrapper+DTCopying.m"; sourceTree = ""; }; DA068568A9B92FE52049E190968609A8 /* RDEPUBSafeArea.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSafeArea.swift; sourceTree = ""; }; DA2ED17D0DDF5F1C5606BFFD9A512DE4 /* DTCoreTextFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextFunctions.h; path = Core/Source/DTCoreTextFunctions.h; sourceTree = ""; }; - DC2EC4ECF9C8015EDECE928DCA3CC4B3 /* RDEPUBPageMapReconciliationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageMapReconciliationCoordinator.swift; sourceTree = ""; }; + DB992485D17345E01FF784879C39CC29 /* RDEPUBMetadataParseCancellationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseCancellationController.swift; sourceTree = ""; }; DC7D3AB85C954DA41E1500936C166C0E /* NSString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+HTML.h"; path = "Core/Source/NSString+HTML.h"; sourceTree = ""; }; DD0A5FF70CDBE87597264762EC20EF43 /* NSScanner+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSScanner+HTML.h"; path = "Core/Source/NSScanner+HTML.h"; sourceTree = ""; }; DD7A2DE5BDF72ABC066484CE554BDEF0 /* DTHorizontalRuleHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHorizontalRuleHTMLElement.m; path = Core/Source/DTHorizontalRuleHTMLElement.m; sourceTree = ""; }; DE4821B98DDE6C71411EC139EC6D2762 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; DE83356F8FBC1801D29CA93C1A190D81 /* Archive+Progress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Progress.swift"; path = "Sources/ZIPFoundation/Archive+Progress.swift"; sourceTree = ""; }; + DE883C47DFCDA257928D7BCC153B127E /* RDEPUBMemoryProbe.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMemoryProbe.swift; sourceTree = ""; }; + DF1367D7047430E833E1596CCB9D7592 /* RDEPUBReaderLocationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLocationCoordinator.swift; sourceTree = ""; }; + DFA733CE261D37C49F859F8E72332108 /* RDEPUBBackgroundPriorityPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundPriorityPolicy.swift; sourceTree = ""; }; DFC3591CDAEE16F7444AC3B176EFDAFD /* RDEPUBCFIResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIResolver.swift; sourceTree = ""; }; - DFDE9DF5F8221764CC5AD1218EC24236 /* RDEPUBReaderUIState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderUIState.swift; sourceTree = ""; }; E0192469A486DA7CECFECEA37518B6B9 /* DTHTMLAttributedStringBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLAttributedStringBuilder.m; path = Core/Source/DTHTMLAttributedStringBuilder.m; sourceTree = ""; }; E15D7179C6CF82530CF5E7264BBA1679 /* wxread-replace.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-replace.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-replace.css"; sourceTree = ""; }; E2159ABBE19F1408CF16A6EF0271404D /* RDEPUBFixedLayoutTemplate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFixedLayoutTemplate.swift; sourceTree = ""; }; + E3B016E458C08679B7164130EE2F038A /* RDEPUBAttachmentTooltipOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipOverlayView.swift; sourceTree = ""; }; E3B908A78A947A1A9D66C368CB616DE4 /* RDEPUBHTMLNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBHTMLNormalizer.swift; sourceTree = ""; }; E3CAAC46883B74B071843E5D38B5BF85 /* DTImage+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DTImage+HTML.h"; path = "Core/Source/DTImage+HTML.h"; sourceTree = ""; }; - E42A81201784E7976A4C546739DE6ED5 /* RDEPUBTextPageDecorationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageDecorationView.swift; sourceTree = ""; }; E4C5EB3F8F005C65005C101A9DBE488A /* DTWeakSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTWeakSupport.h; path = Core/Source/DTWeakSupport.h; sourceTree = ""; }; - E52802E06864FE60CFBAE21EAA6F3F0F /* RDEPUBReaderController+AttachmentTooltip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+AttachmentTooltip.swift"; sourceTree = ""; }; E5377786E80195587BF3E8A7589E5925 /* DTHTMLParserTextNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLParserTextNode.m; path = Core/Source/DTHTMLParserTextNode.m; sourceTree = ""; }; + E58FA87A2BA86B4AF4AC1D9ED80ADB9D /* RDEPUBChapterDataCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterDataCache.swift; sourceTree = ""; }; E5D4D6E12779C54F17AE98A1E6C9B699 /* DTBase64Coding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTBase64Coding.m; path = Core/Source/DTBase64Coding.m; sourceTree = ""; }; E67A535D80CEA637777BC317BCFE28C6 /* RDEPUBReadingLocationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReadingLocationModels.swift; sourceTree = ""; }; E687628EF2FE92D093E3005D21B578E5 /* DTWeakSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTWeakSupport.h; path = Core/Source/DTWeakSupport.h; sourceTree = ""; }; E6B46EF6F055A721AF370D705D026E9E /* Data+CompressionDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+CompressionDeprecated.swift"; path = "Sources/ZIPFoundation/Data+CompressionDeprecated.swift"; sourceTree = ""; }; E6CA207039A89EF3323F6FFEA38A1C3F /* RDEPUBCFIUtilities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIUtilities.swift; sourceTree = ""; }; + E6DFA1F6B3E87EFC26C391A4189DCB53 /* RDEPUBWebContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebContentView.swift; sourceTree = ""; }; E74132875CC4A311B230B68C085D8CE6 /* ResourceBundle-Resources-DTCoreText-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-Resources-DTCoreText-Info.plist"; sourceTree = ""; }; - E7B0CDC00940C453637FBC66E6C05D89 /* RDEPUBSelectionLoupeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionLoupeView.swift; sourceTree = ""; }; - E844B3375520F01C6CCE1468B53CCC6C /* RDEPUBReaderController+RuntimeBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RuntimeBridge.swift"; sourceTree = ""; }; E853AAB3B09E0662567752431CEF1D33 /* DTTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextAttachment.h; path = Core/Source/DTTextAttachment.h; sourceTree = ""; }; E865600EE9117A9153716299FFA7912D /* Archive+Reading.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Reading.swift"; path = "Sources/ZIPFoundation/Archive+Reading.swift"; sourceTree = ""; }; E89F199ECDE796B15CAF8E0C1775FAA6 /* DTCoreTextConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextConstants.m; path = Core/Source/DTCoreTextConstants.m; sourceTree = ""; }; @@ -946,60 +952,46 @@ EB7C7A670C851744ACBCA45DA70795C8 /* wxread-dark.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-dark.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-dark.css"; sourceTree = ""; }; EB850927957E35DB8CE0F109188C99A9 /* DTCoreTextLayoutLine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayoutLine.m; path = Core/Source/DTCoreTextLayoutLine.m; sourceTree = ""; }; EBA0272559B0F7FAD8AC670AC7431188 /* Pods-ReadViewDemo-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReadViewDemo-umbrella.h"; sourceTree = ""; }; + EC2E45BB6FF85A1D1E2C853B5AB68048 /* RDEPUBReaderDependencies.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDependencies.swift; sourceTree = ""; }; ED049C791713944233EE10C7A111C691 /* DTCoreTextGlyphRun.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextGlyphRun.m; path = Core/Source/DTCoreTextGlyphRun.m; sourceTree = ""; }; ED9A1EBDA0FD72671C7F6FE15F37B906 /* DTTextHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextHTMLElement.h; path = Core/Source/DTTextHTMLElement.h; sourceTree = ""; }; EDA6D5D7D0A04878EE78FAAE94F65068 /* DTCoreText */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DTCoreText; path = DTCoreText.framework; sourceTree = BUILT_PRODUCTS_DIR; }; EDFEB59EC6040AB3CF58E4E1045A8913 /* RDEPUBModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBModels.swift; sourceTree = ""; }; - EF393040BF2038B940EA74164A6214F3 /* RDEPUBReaderDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDelegate.swift; sourceTree = ""; }; + EED5E2706CF825A44883E6FC04A74AEA /* RDEPUBReaderUIState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderUIState.swift; sourceTree = ""; }; EF625CF6A790938F5CE0F0C7DC36E340 /* DTCoreTextLayoutFrame+Cursor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "DTCoreTextLayoutFrame+Cursor.m"; path = "Core/Source/DTCoreTextLayoutFrame+Cursor.m"; sourceTree = ""; }; F0796C7E8BEEA96989FCE6698868366D /* RDEPUBStyleSheetComposer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleSheetComposer.swift; sourceTree = ""; }; - F08981630C2BB2DF438340C175302A5D /* RDEPUBReaderController+TableOfContents.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+TableOfContents.swift"; sourceTree = ""; }; - F1843DDD87F5732183A424372B8F57F3 /* RDEPUBReaderState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderState.swift; sourceTree = ""; }; F3C9CA544EBF55130625F6C3AD2ABFB4 /* Archive+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Deprecated.swift"; path = "Sources/ZIPFoundation/Archive+Deprecated.swift"; sourceTree = ""; }; F3E93C4AC73A09DE1EAE805B0ADE3306 /* NSString+DTUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTUtilities.m"; path = "Core/Source/NSString+DTUtilities.m"; sourceTree = ""; }; - F45A7967FB601D8BED750A9E37E7899C /* RDEPUBAttachmentTooltipOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipOverlayView.swift; sourceTree = ""; }; F46010C3A0C82AE5ABEC814D7EC6351B /* DTAttributedTextView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedTextView.m; path = Core/Source/DTAttributedTextView.m; sourceTree = ""; }; F4609798012DB9C5B85641224CD6081D /* RDEPUBTextPaginationSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPaginationSupport.swift; sourceTree = ""; }; F49FC82A04EE9B3B49CBA6CB88ACBC67 /* FileManager+ZIPDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FileManager+ZIPDeprecated.swift"; path = "Sources/ZIPFoundation/FileManager+ZIPDeprecated.swift"; sourceTree = ""; }; F4E2B1AC73977F10254628C0B7EBE38F /* DTCoreText-Resources */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "DTCoreText-Resources"; path = Resources.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; F54575506F65B0B0E12AABF25A9E6C6F /* RDEPUBCFISerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFISerializer.swift; sourceTree = ""; }; - F5C8F91E6B08B08138B628331DAAEC16 /* RDEPUBReaderController+RenderSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RenderSupport.swift"; sourceTree = ""; }; F63EBF2BF3000B3391F6E693581EA129 /* NSData+DTCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+DTCrypto.m"; path = "Core/Source/NSData+DTCrypto.m"; sourceTree = ""; }; - F66DD9D0E36BCFB8D70F713B112FFC5A /* RDEPUBWebContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebContentView.swift; sourceTree = ""; }; - F67C99E329F6EE4951953549B099CE46 /* RDEPUBBackgroundPriorityPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundPriorityPolicy.swift; sourceTree = ""; }; F69C9651823EAB579B078EC3B7435D16 /* RDEPUBJavaScriptBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJavaScriptBridge.swift; sourceTree = ""; }; - F77E0B31CE94ED97B9E5C254BF0DB072 /* RDEPUBTextPageBoundaryValidator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageBoundaryValidator.swift; sourceTree = ""; }; F7C508BE899A1397560A767CAEADB7B9 /* DTHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLElement.h; path = Core/Source/DTHTMLElement.h; sourceTree = ""; }; + F861EBEED5EEBC67F1F7D8A479069EEB /* RDEPUBPageCountCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageCountCache.swift; sourceTree = ""; }; F8BB0B072E5F24B51A6D348D8F9745CC /* RDReaderView+ContentAccess.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+ContentAccess.swift"; sourceTree = ""; }; F94780553A2ED7BE5E972D634F7F52DE /* RDEPUBParser+Package.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Package.swift"; sourceTree = ""; }; + F9990D385BA523E06021532FB947967B /* RDEPUBSelectionOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionOverlayView.swift; sourceTree = ""; }; F9D9BEF72311AF9E3239F9B92A9D2842 /* DTAnimatedGIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAnimatedGIF.h; path = Core/Source/iOS/DTAnimatedGIF/DTAnimatedGIF.h; sourceTree = ""; }; FA107BE47514D01B94B7A2670A9F83E5 /* NSString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+HTML.m"; path = "Core/Source/NSString+HTML.m"; sourceTree = ""; }; - FA22FB2A1729AFA909E9AAE06BCDC019 /* RDEPUBChapterOffsetMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterOffsetMap.swift; sourceTree = ""; }; - FD4E4C38FE23EEF72D4049DBFADB922C /* RDEPUBReaderSearchCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchCoordinator.swift; sourceTree = ""; }; + FB56EEA8FBF8DBE56135C22D77769CC8 /* String+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+RDEPUB.swift"; sourceTree = ""; }; FE1B490DE56DE55724779E3E8BF6D14A /* RDEPUBCFITextAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFITextAssertion.swift; sourceTree = ""; }; FEA9F91758013B23B0EEA71DA22E7475 /* Pods-ReadViewDemo-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReadViewDemo-Info.plist"; sourceTree = ""; }; FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; FECC02C082DBCB6126A7ECBA72C258B3 /* RDEPUBTextBuildPipelineInterfaces.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBuildPipelineInterfaces.swift; sourceTree = ""; }; FF1C41D226C0957F715EFF3F23893386 /* DTFoundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DTFoundation-dummy.m"; sourceTree = ""; }; + FF49A91751A72F97903729543181A6B9 /* RDEPUBReaderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderConfiguration.swift; sourceTree = ""; }; FF63F5E8902D6F3F5E845A924EBBC6D3 /* DTFoundationConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTFoundationConstants.h; path = Core/Source/DTFoundationConstants.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 13EE47BF3F459A6D061107C6D8B7C515 /* Frameworks */ = { + 0BC732510CDEB52A7CB28936E746A726 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5DC896B6277CFD4745B6FFC1B65436E9 /* Foundation.framework in Frameworks */, - 9872A011777E0E50DDD196FA54ED0284 /* ImageIO.framework in Frameworks */, - ADD3B6D991C8DB8AB9DCA9568787D344 /* QuartzCore.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1B92894A72CDF0235556D49F00026463 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - AA5731890291922E24FB7FFCC22F41A9 /* Foundation.framework in Frameworks */, + D97F718E6DE212120CAEB1EB0545D138 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1011,6 +1003,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 68BAD03119A3C08F11F48EC53AE50E2A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 69DDADDC67DC51005EC1277552F4DE77 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 6F1DC7DF5E89C820D04E068D56B1D0EF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1024,32 +1030,28 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 76F9E948CD9009E8107E1C61C1C40F67 /* Frameworks */ = { + 9CCBD56F874FA596A1696EB08225947F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 93E19E99C0C6D8B9536A6621A80FE307 /* Frameworks */ = { + C4547124925694C151155C5C459D5EA1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 41A990E0E4CAE5BADCB5E1643D508DFB /* Foundation.framework in Frameworks */, + 00CFA968BBAE011A9F4777EB8A2C4214 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A73A5B71B58E98ECBF44502D27FAE0DE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E4AF016E3A76A93A97661A7459A79847 /* Frameworks */ = { + FD6D97590348CA8F8FC55FC0BD392B6B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 02F25218F72D3AD6CAFEC4BB2C0AF6DB /* Foundation.framework in Frameworks */, + 454D8A5137809902C531CB3C60FDACE5 /* ImageIO.framework in Frameworks */, + 2EA87D5E151B183B64161912F24F27B3 /* QuartzCore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1210,25 +1212,26 @@ path = "Target Support Files/Pods-ReadViewDemo"; sourceTree = ""; }; - 0ECFE93F228CBB8F5D8E41AB72D749B8 /* TextPage */ = { + 112D42A0887F21641053036D609D36A7 /* ChapterRuntime */ = { isa = PBXGroup; children = ( - 2F899D2164D781FF192129E1C659613F /* RDEPUBDarkImageAdjuster.swift */, - 1961705269BD266F52EBD357EAE068A5 /* RDEPUBPageInteractionController.swift */, - 848DA9852FDF80FAB067E383E1D650C1 /* RDEPUBPageLayoutSnapshot.swift */, - E7B0CDC00940C453637FBC66E6C05D89 /* RDEPUBSelectionLoupeView.swift */, - 40FFA046E3AFCD87D8592AEFB6CFD987 /* RDEPUBSelectionOverlayView.swift */, - BFCD03AC792A6CF8550BC44A4339D9FE /* RDEPUBTextAnnotationOverlay.swift */, - D53EA3F44C0602B1BEB2F85B59B32CB3 /* RDEPUBTextContentInteractionCoordinator.swift */, - 27FE2A0ABB2E40A2D8D3B4BDECE106A7 /* RDEPUBTextContentView.swift */, - F77E0B31CE94ED97B9E5C254BF0DB072 /* RDEPUBTextPageBoundaryValidator.swift */, - E42A81201784E7976A4C546739DE6ED5 /* RDEPUBTextPageDecorationView.swift */, - 854840B8F97C908AB5B51EDF03E54D52 /* RDEPUBTextPageRenderView.swift */, - CCD1EE67D4C520598E5975F0489DCB87 /* RDEPUBTextPageVerticalJustifier.swift */, - 36BCDC7F25B3DB9F7FC2F681DD27B93E /* RDEPUBTextSelectionController.swift */, + D5BE2FBFC1E7270EABABA9C6F0C686CA /* RDEPUBBackgroundTrace.swift */, + 45A880FCAB9201640E8329B683FCACBA /* RDEPUBBookPageMap.swift */, + B9E98DF633FFBA1D5C2D451CB2B2E6F1 /* RDEPUBChapterCacheKey.swift */, + E58FA87A2BA86B4AF4AC1D9ED80ADB9D /* RDEPUBChapterDataCache.swift */, + A686F0FF211686E1D4F60B994E012587 /* RDEPUBChapterLoader.swift */, + B02D3DE3AD6CA9AC5B80F44767F647FE /* RDEPUBChapterLocation.swift */, + 6D1A3ADEC673B078306A361D2601E743 /* RDEPUBChapterOffsetMap.swift */, + 7118633F5A91B2900F602E19CFD15D1F /* RDEPUBChapterRuntimeStore.swift */, + 347A1849A630130CBFBDD4DDDC44A51A /* RDEPUBChapterSummaryDiskCache.swift */, + 1FAFF98C24F34206448C655698BF56E3 /* RDEPUBChapterWarmupOrchestrator.swift */, + F861EBEED5EEBC67F1F7D8A479069EEB /* RDEPUBPageCountCache.swift */, + 76C37210B5D599FF177A819748A274DF /* RDEPUBPageResolver.swift */, + 462F0F78022064457859139A0D9B8D3E /* RDEPUBRuntimeChapter.swift */, + B68E527967EEF7E7E61E5B5F1F64C791 /* RDEPUBRuntimePageCount.swift */, ); - name = TextPage; - path = TextPage; + name = ChapterRuntime; + path = ChapterRuntime; sourceTree = ""; }; 1A823333EC1496E37E1F99813FE335DD /* DTAnimatedGIF */ = { @@ -1296,18 +1299,6 @@ path = Paging; sourceTree = ""; }; - 36863A73A562CDC80DBA082BD6FB8E96 /* Settings */ = { - isa = PBXGroup; - children = ( - 9C5B9705D72218CB383307A329C9060B /* RDEPUBReaderConfiguration.swift */, - 22FF6CAA8966DB1B4C14A695E355C881 /* RDEPUBReaderSettings.swift */, - 0901D33C8FF8497CDC7A4365D0D84218 /* RDEPUBReaderSettingsViewController.swift */, - 4F60D4A5E3A44B1AB998E185EFF5C046 /* RDEPUBReaderTheme.swift */, - ); - name = Settings; - path = Settings; - sourceTree = ""; - }; 387832C7C64B3B352215F0FD83B927AC /* Support Files */ = { isa = PBXGroup; children = ( @@ -1334,49 +1325,6 @@ name = Pods; sourceTree = ""; }; - 4679A17AE67E985CADF7839F7D9A941B /* EPUBUI */ = { - isa = PBXGroup; - children = ( - F45A7967FB601D8BED750A9E37E7899C /* RDEPUBAttachmentTooltipOverlayView.swift */, - AC75B34F4CE50854BC099CE73D139FCC /* RDEPUBAttachmentTooltipView.swift */, - 1791083E7546C2EB443048851C122E32 /* RDEPUBImageViewController.swift */, - 7BFC2AF3C2082F2A0D9950A1B8256229 /* RDEPUBImageViewerCoordinator.swift */, - 7FDE14B76D550FCBD28D3B30AA9D883D /* RDEPUBReaderBottomToolView.swift */, - D4EB6B49DEC8BCB1ABD8083F9B903101 /* RDEPUBReaderChapterListController.swift */, - 75D73CEEFC4AA6AFA6EBF279221F5330 /* RDEPUBReaderController.swift */, - E52802E06864FE60CFBAE21EAA6F3F0F /* RDEPUBReaderController+AttachmentTooltip.swift */, - 3416C45A5E4AEF922A7D3804F0A05EB4 /* RDEPUBReaderController+ContentDelegates.swift */, - 31C306314EF985A32E583A25AAA39960 /* RDEPUBReaderController+DataSource.swift */, - 1E381C002AE6ECE51B0B77AA5007FE27 /* RDEPUBReaderController+ExternalLinks.swift */, - D9493E87BC278E65DA39B0F098CC01B9 /* RDEPUBReaderController+LocationResolution.swift */, - 1859C9EC3263145CE262EC15A12B6BE4 /* RDEPUBReaderController+PublicAPI.swift */, - F5C8F91E6B08B08138B628331DAAEC16 /* RDEPUBReaderController+RenderSupport.swift */, - E844B3375520F01C6CCE1468B53CCC6C /* RDEPUBReaderController+RuntimeBridge.swift */, - F08981630C2BB2DF438340C175302A5D /* RDEPUBReaderController+TableOfContents.swift */, - EF393040BF2038B940EA74164A6214F3 /* RDEPUBReaderDelegate.swift */, - 4537790EA93442CD0FA48609D7ADDD13 /* RDEPUBReaderHighlightsViewController.swift */, - 93A16F63ABA3D0BA695CC9F1F7D6F3DA /* RDEPUBReaderPersistence.swift */, - 50BEBB47FE6ED062DE6363BFDCC7D84C /* RDEPUBReaderSearchBarView.swift */, - 315243CD0784D4E8AF97453BF5848904 /* RDEPUBReaderTableOfContentsItem.swift */, - C525E69EA51BC555374CC559F2996233 /* RDEPUBReaderToolView.swift */, - 52816DCF8A866861EFF13A58D6D32CA8 /* RDEPUBReaderTopToolView.swift */, - 849DFA0D192A6586FCC90DE7E300D812 /* RDEPUBSettingsFlipAutomation.swift */, - B137EA59DB88E982FBF8E5C775975FE5 /* RDEPUBViewportTypes.swift */, - F66DD9D0E36BCFB8D70F713B112FFC5A /* RDEPUBWebContentView.swift */, - 9A220EF1E6F5821B91990AAED74A4FFC /* RDEPUBWebDecorationOverlayView.swift */, - 02CABD2C55EE6F8759C2702014273F00 /* RDURLReaderController.swift */, - 4DFBB7A0C649F48591647E3C08CE6852 /* String+RDEPUB.swift */, - 92ED368A3AC26AAF26FEB59577BBF3F4 /* UIColor+RDEPUB.swift */, - 7076326835119DD963CB9ABC0DF78460 /* UIColor+RDEPUBHex.swift */, - E2BC1C0C36766409417A11688961516E /* Notes */, - 9C4BCB0394060E7A874875778204D6FE /* ReaderController */, - 36863A73A562CDC80DBA082BD6FB8E96 /* Settings */, - 0ECFE93F228CBB8F5D8E41AB72D749B8 /* TextPage */, - ); - name = EPUBUI; - path = Sources/RDReaderView/EPUBUI; - sourceTree = ""; - }; 4B9763CFE13CC8B0D8AA60EE28156E6D /* Support Files */ = { isa = PBXGroup; children = ( @@ -1393,6 +1341,16 @@ path = "../Target Support Files/ZIPFoundation"; sourceTree = ""; }; + 4C6BC7B4283EB95C91914329899B3F0B /* Notes */ = { + isa = PBXGroup; + children = ( + CEC94872B74DE33DE8E675EEBC60812A /* RDEPUBNotePopupCoordinator.swift */, + 52A7FCBB2219561212D36C393B333E8D /* RDEPUBNotePopupViewController.swift */, + ); + name = Notes; + path = Notes; + sourceTree = ""; + }; 4DABD1D106D01055A2AB87F3DA58A3CC /* iOS */ = { isa = PBXGroup; children = ( @@ -1426,28 +1384,6 @@ name = DTHTMLParser; sourceTree = ""; }; - 6E4AAE36070B08696D385595B12FF9BD /* ChapterRuntime */ = { - isa = PBXGroup; - children = ( - 3652433CDE5ACCD783B54CBDD0CBB5C6 /* RDEPUBBackgroundTrace.swift */, - 523F6E31441155AAFAC1E88316C623A4 /* RDEPUBBookPageMap.swift */, - CE8C9E2C878448571156DFC0E41979AF /* RDEPUBChapterCacheKey.swift */, - CD5DB51D2F628791D4E0EB41C4B81AF1 /* RDEPUBChapterDataCache.swift */, - 6D5537F73FD04F43BE1E354A25710C9E /* RDEPUBChapterLoader.swift */, - 19D3A41F50CE425FA2929A6FBE743A84 /* RDEPUBChapterLocation.swift */, - FA22FB2A1729AFA909E9AAE06BCDC019 /* RDEPUBChapterOffsetMap.swift */, - C2135D2A77CD609485DAF400E1E3396F /* RDEPUBChapterRuntimeStore.swift */, - 7CA5ED27523EC3D3AFC0F01E05891FBB /* RDEPUBChapterSummaryDiskCache.swift */, - 64254678E1440D40D4BC39AE8B62BB27 /* RDEPUBChapterWarmupOrchestrator.swift */, - 0742A5B640EA32CFFCB23C98EA7E4E02 /* RDEPUBPageCountCache.swift */, - 05A13D7709B82256F12E52DC6E65F696 /* RDEPUBPageResolver.swift */, - 2D80571A5CC74FDE8F5CE6E70B50023F /* RDEPUBRuntimeChapter.swift */, - C52AC0144029821AA538D6165315C585 /* RDEPUBRuntimePageCount.swift */, - ); - name = ChapterRuntime; - path = ChapterRuntime; - sourceTree = ""; - }; 828B7FE388769409E56A0166AC98DE46 /* EPUBCore */ = { isa = PBXGroup; children = ( @@ -1489,6 +1425,39 @@ path = Sources/RDReaderView/EPUBCore; sourceTree = ""; }; + 83FFDC8682B47C8CA37A1C147F2B1FB9 /* ReaderController */ = { + isa = PBXGroup; + children = ( + 113B414F4DD510248C8462427553EDF1 /* RDEPUBBackgroundCoverageStore.swift */, + DFA733CE261D37C49F859F8E72332108 /* RDEPUBBackgroundPriorityPolicy.swift */, + B35B9168E52A3CBB8E424FD0F5A0361C /* RDEPUBJumpSession.swift */, + DE883C47DFCDA257928D7BCC153B127E /* RDEPUBMemoryProbe.swift */, + DB992485D17345E01FF784879C39CC29 /* RDEPUBMetadataParseCancellationController.swift */, + 3E238CC0941838E4BFCF81D523FFA0BF /* RDEPUBMetadataParseWorker.swift */, + 004EF3C2CC7FA5E3556C149C6514309E /* RDEPUBPageMapReconciliationCoordinator.swift */, + 8857E55841583E848290F85432CA460B /* RDEPUBPresentationRuntime.swift */, + C4416B5CBB4AF36581524965A8C8F53F /* RDEPUBReaderAnnotationCoordinator.swift */, + 5E86839B7DDFC59C16A388E00239F50F /* RDEPUBReaderAssemblyCoordinator.swift */, + 0763B05C11F090D063D1BF3D9E6C31B7 /* RDEPUBReaderChromeCoordinator.swift */, + 92CEF2B1CC1AD607F9F46594DADCE788 /* RDEPUBReaderContext.swift */, + EC2E45BB6FF85A1D1E2C853B5AB68048 /* RDEPUBReaderDependencies.swift */, + 91D2B14530EDF4C2D742B24A0D32B858 /* RDEPUBReaderEnvironment.swift */, + 5B660A95A07E55AE3763E8F908456150 /* RDEPUBReaderLoadCoordinator.swift */, + DF1367D7047430E833E1596CCB9D7592 /* RDEPUBReaderLocationCoordinator.swift */, + B8CF3C95B01CA3EFA19AD38DA2AC51E5 /* RDEPUBReaderPaginationCoordinator.swift */, + 8829A16514270D407FA56861634910D6 /* RDEPUBReaderRuntime.swift */, + 145A463390EC56FF141B1FFA95C6EB52 /* RDEPUBReaderSearchCoordinator.swift */, + 3B25B5299A67D3BEA9E9887BE079BCDF /* RDEPUBReaderServices.swift */, + BDF2713051A7FCC4BA20AD1374044971 /* RDEPUBReaderState.swift */, + EED5E2706CF825A44883E6FC04A74AEA /* RDEPUBReaderUIState.swift */, + 8BC1163A98FA7D285438393945C2EC73 /* RDEPUBReaderViewportMonitor.swift */, + 408BF57916E27949442B18215BE0B51A /* RDEPUBSelectionState.swift */, + 112D42A0887F21641053036D609D36A7 /* ChapterRuntime */, + ); + name = ReaderController; + path = ReaderController; + sourceTree = ""; + }; 8AE80DCE6937729AEA82EC094AC470AE /* Resources */ = { isa = PBXGroup; children = ( @@ -1497,6 +1466,18 @@ name = Resources; sourceTree = ""; }; + 8E0D9F272A7D36DDF5AFB217A51F8141 /* Settings */ = { + isa = PBXGroup; + children = ( + FF49A91751A72F97903729543181A6B9 /* RDEPUBReaderConfiguration.swift */, + 1AE3C35BC77F4A80D8725CE0CDE20B5E /* RDEPUBReaderSettings.swift */, + 61EE5C61A8163892E9A19C231828658C /* RDEPUBReaderSettingsViewController.swift */, + 5BEA03FA083C9125362B656F760E845F /* RDEPUBReaderTheme.swift */, + ); + name = Settings; + path = Settings; + sourceTree = ""; + }; 994C39A644C0722C7A9E97AB46DB8965 /* Targets Support Files */ = { isa = PBXGroup; children = ( @@ -1505,38 +1486,6 @@ name = "Targets Support Files"; sourceTree = ""; }; - 9C4BCB0394060E7A874875778204D6FE /* ReaderController */ = { - isa = PBXGroup; - children = ( - 5EB2B007B49D93FC696248480F4CB984 /* RDEPUBBackgroundCoverageStore.swift */, - F67C99E329F6EE4951953549B099CE46 /* RDEPUBBackgroundPriorityPolicy.swift */, - AE6769FF56092F4EB6B5EDCD64F8E6A7 /* RDEPUBJumpSession.swift */, - 995E88CDC3691BA531FF7951E4C809EC /* RDEPUBMetadataParseCancellationController.swift */, - 1977F26E5E225E266FC92C775A41E1F3 /* RDEPUBMetadataParseWorker.swift */, - DC2EC4ECF9C8015EDECE928DCA3CC4B3 /* RDEPUBPageMapReconciliationCoordinator.swift */, - ACD11D2C8694B9E3BDD175F1EEBEB64D /* RDEPUBPresentationRuntime.swift */, - 78D2759A8A01919CE516A30C1A04B967 /* RDEPUBReaderAnnotationCoordinator.swift */, - 8A50D413DFA43820BCD76D668C0C7868 /* RDEPUBReaderAssemblyCoordinator.swift */, - 6B9450CAB183FFD7F4018D819E02321C /* RDEPUBReaderChromeCoordinator.swift */, - 3CF48E002B64BF7AF8BDBEB9A572C13F /* RDEPUBReaderContext.swift */, - A1718601130E0F134E893F2A5CE605C6 /* RDEPUBReaderDependencies.swift */, - 12422B421A127464A62DF332C3EAF31E /* RDEPUBReaderEnvironment.swift */, - 77CF002A64746DB8BE37C9DC0941C805 /* RDEPUBReaderLoadCoordinator.swift */, - 60FB0E099208100165A2E44F44CA76B1 /* RDEPUBReaderLocationCoordinator.swift */, - 1EF9571672022F0A84D66AC6E6F91305 /* RDEPUBReaderPaginationCoordinator.swift */, - C49A29FA18CE9201BCA63615AEF3457F /* RDEPUBReaderRuntime.swift */, - FD4E4C38FE23EEF72D4049DBFADB922C /* RDEPUBReaderSearchCoordinator.swift */, - 0FDF74546728C05BFEA4B3BC4D6905AF /* RDEPUBReaderServices.swift */, - F1843DDD87F5732183A424372B8F57F3 /* RDEPUBReaderState.swift */, - DFDE9DF5F8221764CC5AD1218EC24236 /* RDEPUBReaderUIState.swift */, - 7045AD2296EB5CDE847902C39A59F370 /* RDEPUBReaderViewportMonitor.swift */, - 71E8149D8D8A8F61C09D98F329F11CA0 /* RDEPUBSelectionState.swift */, - 6E4AAE36070B08696D385595B12FF9BD /* ChapterRuntime */, - ); - name = ReaderController; - path = ReaderController; - sourceTree = ""; - }; 9C7F7E7109B9004B64578ADED4DB8E0D /* Core */ = { isa = PBXGroup; children = ( @@ -1599,7 +1548,7 @@ 4F5A145710C3E212B771C4E38BED9926 /* wxread-replace-latin.css */, 828B7FE388769409E56A0166AC98DE46 /* EPUBCore */, 1D9804819EBDA4A6E80B0DC0E8B5CEF0 /* EPUBTextRendering */, - 4679A17AE67E985CADF7839F7D9A941B /* EPUBUI */, + B660014A8CD5F492571C723CB3C7A3CA /* EPUBUI */, F98C9DB9E125F328B2B30E1CE7F0C09A /* Pod */, 20DA68B2AE07089744D3DF8E725D162D /* ReaderView */, A873C6C06E8019679E6189DCC59175B4 /* Support Files */, @@ -1688,6 +1637,49 @@ path = ZIPFoundation; sourceTree = ""; }; + B660014A8CD5F492571C723CB3C7A3CA /* EPUBUI */ = { + isa = PBXGroup; + children = ( + E3B016E458C08679B7164130EE2F038A /* RDEPUBAttachmentTooltipOverlayView.swift */, + 8B5934123F0DB4372907A51918A83273 /* RDEPUBAttachmentTooltipView.swift */, + 4ACC6E3B4FEF517FF8038927FB873994 /* RDEPUBImageViewController.swift */, + 3283355D8EFC5B2B3D2D676DCE1BCEDB /* RDEPUBImageViewerCoordinator.swift */, + 45BDE90FC850C338F5085963B44CE0F3 /* RDEPUBReaderBottomToolView.swift */, + B42B8B70BAED6BCED06FF54636A4FF0C /* RDEPUBReaderChapterListController.swift */, + B7E8901535604C19FD5AD766F825AA54 /* RDEPUBReaderController.swift */, + 3F3375F32D22D669DD2C8A34D3FB9A8E /* RDEPUBReaderController+AttachmentTooltip.swift */, + 11C152E0F5FA501D1DE57C6F84974FB2 /* RDEPUBReaderController+ContentDelegates.swift */, + A8DBBD9EE558EAEC43860A5170AEEB3C /* RDEPUBReaderController+DataSource.swift */, + 5CCE94BB911FD46F5041173C2B601F2B /* RDEPUBReaderController+ExternalLinks.swift */, + 60F3D803C6E446785A25173F8A33539E /* RDEPUBReaderController+LocationResolution.swift */, + 44CC9E1CE3BFCDCF123AF3232DE600ED /* RDEPUBReaderController+PublicAPI.swift */, + 7975AED4D3A0C7FCE350B73EA6D1DC77 /* RDEPUBReaderController+RenderSupport.swift */, + C5CC04F74B62D6B70820B21C9498D09C /* RDEPUBReaderController+RuntimeBridge.swift */, + 35AD33C94AE70E2D00F629BACC8622C9 /* RDEPUBReaderController+TableOfContents.swift */, + 527A6EE584C515DEE0448928F5BB0AE6 /* RDEPUBReaderDelegate.swift */, + CFE59748EBA8ED3671180B5ACB903377 /* RDEPUBReaderHighlightsViewController.swift */, + 563790B1DA3FCFFF97263535AEDB9591 /* RDEPUBReaderPersistence.swift */, + 3CAD42B48B9168BBD3A810E5D3F0F956 /* RDEPUBReaderSearchBarView.swift */, + 964DE5C11E965DC6F881D1B75582D58B /* RDEPUBReaderTableOfContentsItem.swift */, + 0FAFD969C7141125539E80810C0A6A9B /* RDEPUBReaderToolView.swift */, + 4D91E45585D4F6401B403BD10449ADDF /* RDEPUBReaderTopToolView.swift */, + ADB1213E5EB8A69E4CD2283819D92718 /* RDEPUBSettingsFlipAutomation.swift */, + 2088F60EF3B4ADB258266A178B5D3ECC /* RDEPUBViewportTypes.swift */, + E6DFA1F6B3E87EFC26C391A4189DCB53 /* RDEPUBWebContentView.swift */, + 6C9B40FEFC2CC9CEB30271F8C4A38740 /* RDEPUBWebDecorationOverlayView.swift */, + 949BC485A5DC7EF786656CBF9A479A1D /* RDURLReaderController.swift */, + FB56EEA8FBF8DBE56135C22D77769CC8 /* String+RDEPUB.swift */, + 6DACF1F2702EB6425DF22A4B0CB64202 /* UIColor+RDEPUB.swift */, + 4D1E680FFD8DDC08A39464AD386D2992 /* UIColor+RDEPUBHex.swift */, + 4C6BC7B4283EB95C91914329899B3F0B /* Notes */, + 83FFDC8682B47C8CA37A1C147F2B1FB9 /* ReaderController */, + 8E0D9F272A7D36DDF5AFB217A51F8141 /* Settings */, + BB85FC6028568D908BA27A976E1EBFF8 /* TextPage */, + ); + name = EPUBUI; + path = Sources/RDReaderView/EPUBUI; + sourceTree = ""; + }; B9550C76BFCCB8D00C45A27D139400B1 /* BuildPipeline */ = { isa = PBXGroup; children = ( @@ -1712,6 +1704,27 @@ name = "Development Pods"; sourceTree = ""; }; + BB85FC6028568D908BA27A976E1EBFF8 /* TextPage */ = { + isa = PBXGroup; + children = ( + BD93A4C37E58849DD3FBADFE4E3BB7E4 /* RDEPUBDarkImageAdjuster.swift */, + A01E0B0F5FAC4DBF5D1DEC0013417AC1 /* RDEPUBPageInteractionController.swift */, + 353528037271462D3C73D07BBF5D8DED /* RDEPUBPageLayoutSnapshot.swift */, + 592C900095F4CE33172C3233D2720E53 /* RDEPUBSelectionLoupeView.swift */, + F9990D385BA523E06021532FB947967B /* RDEPUBSelectionOverlayView.swift */, + 95C3D8182D7F19D798483F0031DB4B8A /* RDEPUBTextAnnotationOverlay.swift */, + A765D0DF2FFB6442A7BF2726F2F3B2C8 /* RDEPUBTextContentInteractionCoordinator.swift */, + 6E1394B4A44C49F86D8E755C1C16910C /* RDEPUBTextContentView.swift */, + 457B5F878654F351DEB25FAF4076AE4D /* RDEPUBTextPageBoundaryValidator.swift */, + A7ECD7EBE082C509350CCB121EE308F6 /* RDEPUBTextPageDecorationView.swift */, + 7380BDD29AC5C55223ADDD7C33698102 /* RDEPUBTextPageRenderView.swift */, + 2D811ABCB31C221FA6F002E32629D6B7 /* RDEPUBTextPageVerticalJustifier.swift */, + 745B50420148262217CC19E5B8E1E61A /* RDEPUBTextSelectionController.swift */, + ); + name = TextPage; + path = TextPage; + sourceTree = ""; + }; C0A487BA5466E564181169CA28A4FDFF /* Pagination */ = { isa = PBXGroup; children = ( @@ -1829,16 +1842,6 @@ path = "../Target Support Files/DTFoundation"; sourceTree = ""; }; - E2BC1C0C36766409417A11688961516E /* Notes */ = { - isa = PBXGroup; - children = ( - 4FAD41FF83513826720C6497B7A818B6 /* RDEPUBNotePopupCoordinator.swift */, - 9736CC5317A5E8F2EE1A03A963197BDF /* RDEPUBNotePopupViewController.swift */, - ); - name = Notes; - path = Notes; - sourceTree = ""; - }; EDB7CA736956B024AA10C0D144AC906D /* Models */ = { isa = PBXGroup; children = ( @@ -1876,6 +1879,47 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 0B93AEFA1D7B38E961B889A2911C2370 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + E2E8C0892B9A8C42DBEC22695AFD9CBD /* DTActivityTitleView.h in Headers */, + D7AED37646A665332F337B31C4071410 /* DTAnimatedGIF.h in Headers */, + 00C925B23F15FD8CC68036BE6E02D58D /* DTBase64Coding.h in Headers */, + 45CFC0BDED4932E8406B27C77613231E /* DTBlockFunctions.h in Headers */, + E3C79B70ACF93E0817F39141252748E3 /* DTCompatibility.h in Headers */, + 6D753927C673A54E3324CC80F3B797F3 /* DTCoreGraphicsUtils.h in Headers */, + 700215E76C62321BBD343D2FA26AC750 /* DTCustomColoredAccessory.h in Headers */, + 00DBA2F5D7C2191FEBE9FCEF81D0A121 /* DTExtendedFileAttributes.h in Headers */, + C79D3ACF7D916E647CF4071DF76FF694 /* DTFolderMonitor.h in Headers */, + C01E5466578E9C7FE1EB54CDC807281E /* DTFoundation-umbrella.h in Headers */, + 2651136AC72A13233A460A70CAEE717D /* DTFoundationConstants.h in Headers */, + D782680C3249B3848A8E7DCB29665EC0 /* DTHTMLParser.h in Headers */, + 648AD27F4319D2CC654BAEE5439DEEAC /* DTLog.h in Headers */, + 2B9B5C05BFB132C2A03AF56BB262A4B3 /* DTPieProgressIndicator.h in Headers */, + 0A907B7973CEA38E9E330C87CCCCBF07 /* DTSmartPagingScrollView.h in Headers */, + BCE14EE78A2BFD66DBC63E3DEDB0BA96 /* DTTiledLayerWithoutFade.h in Headers */, + 3B0DD640C4EFE14E8F5148895C99A5CE /* DTVersion.h in Headers */, + 9F179DC382D2EC073B078FD429DEE6CF /* DTWeakSupport.h in Headers */, + 5E7F686124648073387FCFA9D4241709 /* NSArray+DTError.h in Headers */, + 1C844A8F215ED4A0D27F2B30DC0D52C2 /* NSData+DTCrypto.h in Headers */, + F10E196600D9D9B578D2092DE5CF0601 /* NSDictionary+DTError.h in Headers */, + DE3D7E5F7E446D69573E4F0FEEAB85BB /* NSFileWrapper+DTCopying.h in Headers */, + C31CB8F48217224330E3A3D756B6A9E6 /* NSMutableArray+DTMoving.h in Headers */, + E9FDE27049972F9802E2968B2A54CCA4 /* NSString+DTFormatNumbers.h in Headers */, + 53F4E2FA05AC45F68A8CC2258D669F32 /* NSString+DTPaths.h in Headers */, + 97815755305FE4263E834D2E733D7244 /* NSString+DTURLEncoding.h in Headers */, + BD4D0BA5B93C8F582243A7BC87EAF01D /* NSString+DTUtilities.h in Headers */, + 872AAE3DA53479C97D1DA24E9DDFD043 /* NSURL+DTAppLinks.h in Headers */, + AC6986BEB5202AD38DADBDCA5E6E35AC /* NSURL+DTComparing.h in Headers */, + 3E96CCAED9D356F66D8EE8F6E6A496F8 /* NSURL+DTUnshorten.h in Headers */, + 5051E90EBC038ED8C2C698770A18BCC7 /* UIApplication+DTNetworkActivity.h in Headers */, + 519D2881E7DDE1204CE7D17BE98333FE /* UIImage+DTFoundation.h in Headers */, + 247B7228F440D911BBD9C6BBF0276F6E /* UIScreen+DTFoundation.h in Headers */, + 9F7BF25BE458742AEF685FDBF03E8F6B /* UIView+DTFoundation.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 29CB77F5EC62298B8E19FEFFD791AEAD /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1957,60 +2001,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 4FA1757CD79A24141F672954BF6735DA /* Headers */ = { + BC7A196A9AB65D79B6D2930DE22791ED /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1E8EB32F9CEB5F27573296A05433CA86 /* RDReaderView-umbrella.h in Headers */, + 8C79FF60C4C70F03F4EA4C8F6713B392 /* RDReaderView-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C67BE0252719CA8BAFCAF9FC19D250 /* Headers */ = { + C66106671F3C8D870CED80E8EABEC47D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D40CA87330F4D56B6E6ADBE2FD59C2FC /* ZIPFoundation-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - ED184BA91503CA1868967026F549D809 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - F6367EF2E50441DF4512B27FFD788D91 /* DTActivityTitleView.h in Headers */, - 83E65FA5AC30BF60417B8D6D19556359 /* DTAnimatedGIF.h in Headers */, - C6B4C453194DE8011ADA4C0FA2092028 /* DTBase64Coding.h in Headers */, - FC7E79D4D97B65B3546B66BE1B024F7B /* DTBlockFunctions.h in Headers */, - 4BBDFB14A9E1E663B672696A77A39F0B /* DTCompatibility.h in Headers */, - E776DCFFEECF2D8AAA859BB2FC3DD14E /* DTCoreGraphicsUtils.h in Headers */, - 2620B16F7321A5A1A158E71EE88EEFDB /* DTCustomColoredAccessory.h in Headers */, - CD7F05300518F738E9EEA966B76252E6 /* DTExtendedFileAttributes.h in Headers */, - 4907E32CCD484D56610C0399A79D23BD /* DTFolderMonitor.h in Headers */, - 4964E6E0330E161B8B118F6B0638236C /* DTFoundation-umbrella.h in Headers */, - F12AC7A30166F9013C095231D43E7DA7 /* DTFoundationConstants.h in Headers */, - B40171D88891B3A07003A19EB6A4BFC0 /* DTHTMLParser.h in Headers */, - 7137779222F4F680762DF31046A48EAE /* DTLog.h in Headers */, - FD20D1EEC74F54FF4283C4C106E0BA5F /* DTPieProgressIndicator.h in Headers */, - D14D8383FFEFB43EA9BA5BCECAD38DFB /* DTSmartPagingScrollView.h in Headers */, - 5A06B30AC6A40A95582441D67FC337C9 /* DTTiledLayerWithoutFade.h in Headers */, - DF9D50C1C5F9F22238392605B3F74438 /* DTVersion.h in Headers */, - 7730A0D6848C96EE7307338241444A1D /* DTWeakSupport.h in Headers */, - 73EA755F8A8DD59544C39033CEDDE43F /* NSArray+DTError.h in Headers */, - 7F40491F86024E8AFE5253431DD93405 /* NSData+DTCrypto.h in Headers */, - 6F8ABC6B6D2316E3533A21E86DC3C1A7 /* NSDictionary+DTError.h in Headers */, - 3FC7C093B838D87DA42A363F11850D9C /* NSFileWrapper+DTCopying.h in Headers */, - 7D68FBD206B150ECFB850BF21DFF1D54 /* NSMutableArray+DTMoving.h in Headers */, - 36302E89132B67217F8D1B91040072C8 /* NSString+DTFormatNumbers.h in Headers */, - D07D22E99828FC135DA82CD9D5D473BC /* NSString+DTPaths.h in Headers */, - F38EAD024D5BB401AF2476100E7B7822 /* NSString+DTURLEncoding.h in Headers */, - 40F9FE365AD1E9DF0AC2552C9E57F374 /* NSString+DTUtilities.h in Headers */, - 1021F59A6B7DFA8B0869C7B6D09AFB36 /* NSURL+DTAppLinks.h in Headers */, - 27CFC84B39BCFB67A6163AAF8E319335 /* NSURL+DTComparing.h in Headers */, - E8BC727E48847123C80C6487E4B6D155 /* NSURL+DTUnshorten.h in Headers */, - F9510879C3D8131EEED997499C6ACF14 /* UIApplication+DTNetworkActivity.h in Headers */, - E87011B94A31EF3C96486633494CF851 /* UIImage+DTFoundation.h in Headers */, - 6F5B9493A5058F7DD16AEA802C1C76EC /* UIScreen+DTFoundation.h in Headers */, - 48580F0EDA4D384E5AA73A9BC814DC20 /* UIView+DTFoundation.h in Headers */, + 6CE3DD94BDB5F75D648201EB01DD9986 /* ZIPFoundation-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2019,11 +2022,11 @@ /* Begin PBXNativeTarget section */ 0C24CB0E87A728A11AA1124CB360D6A1 /* DTCoreText-Resources */ = { isa = PBXNativeTarget; - buildConfigurationList = FD102F73C9F0A5254C57BBBB0F991964 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */; + buildConfigurationList = AB6CC5129229FA51901566E3484E6E29 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */; buildPhases = ( - F24E4D34625539789AB8B2F3895D5A91 /* Sources */, - A73A5B71B58E98ECBF44502D27FAE0DE /* Frameworks */, - 424A16025318B52E74BAC95FB0A556E8 /* Resources */, + E87E209F22953FDB1FA30CBD4C105B70 /* Sources */, + 9CCBD56F874FA596A1696EB08225947F /* Frameworks */, + 39B8AAC24665687D9F36231B26DAD836 /* Resources */, ); buildRules = ( ); @@ -2046,10 +2049,10 @@ buildRules = ( ); dependencies = ( - 13017820CBB8EDED04D3E425991B4678 /* PBXTargetDependency */, - 810473C0D4E1B245A6211882D9B2E72E /* PBXTargetDependency */, - 848C3FDDD1BF09AFA5AED03B23F97647 /* PBXTargetDependency */, - 9F03EAA11BE008FBE83FA704A5ABBDD4 /* PBXTargetDependency */, + 5BBEE4C1588D98D7C94381D276C62D46 /* PBXTargetDependency */, + 4CFED76A0A1A22C8A8FD651F035A784B /* PBXTargetDependency */, + E63DB2D02A62DA3E6AD23FCE3DB11A0A /* PBXTargetDependency */, + DE39752D3149CB2559D8B208E8202F5F /* PBXTargetDependency */, ); name = "Pods-ReadViewDemo"; productName = Pods_ReadViewDemo; @@ -2058,12 +2061,12 @@ }; 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */ = { isa = PBXNativeTarget; - buildConfigurationList = C296629277AC266234A0245A9519C90A /* Build configuration list for PBXNativeTarget "DTFoundation" */; + buildConfigurationList = A87924AD6CFC26096ACAC6E8C270E40C /* Build configuration list for PBXNativeTarget "DTFoundation" */; buildPhases = ( - ED184BA91503CA1868967026F549D809 /* Headers */, - 88624E30709B99852919BA4048F4C471 /* Sources */, - 13EE47BF3F459A6D061107C6D8B7C515 /* Frameworks */, - B2A21806D132FBDC0E35A77F93204070 /* Resources */, + 0B93AEFA1D7B38E961B889A2911C2370 /* Headers */, + 1921A975DCF4677EDFD10C92050EC416 /* Sources */, + FD6D97590348CA8F8FC55FC0BD392B6B /* Frameworks */, + 72BD6600585C4D2C17B65DCA6090D586 /* Resources */, ); buildRules = ( ); @@ -2076,17 +2079,17 @@ }; AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */ = { isa = PBXNativeTarget; - buildConfigurationList = 350964E28EE2995CFB345B0F2D849AAD /* Build configuration list for PBXNativeTarget "ZIPFoundation" */; + buildConfigurationList = C0974D194616F16177BEDFB3D7C054F0 /* Build configuration list for PBXNativeTarget "ZIPFoundation" */; buildPhases = ( - 97C67BE0252719CA8BAFCAF9FC19D250 /* Headers */, - 908E285AED86CDB23737B76B8459B816 /* Sources */, - 93E19E99C0C6D8B9536A6621A80FE307 /* Frameworks */, - D77DB0CE0BC7E72C478D9959A0FF59FA /* Resources */, + C66106671F3C8D870CED80E8EABEC47D /* Headers */, + 786564399E053D5FC4476109DEBBFEE0 /* Sources */, + 0BC732510CDEB52A7CB28936E746A726 /* Frameworks */, + 2612277909133F912CD2278F37833B49 /* Resources */, ); buildRules = ( ); dependencies = ( - DF4396E81D96CDBD5613B205C5B8EDBE /* PBXTargetDependency */, + 1805BE409736183E0B49DFCC39540C5C /* PBXTargetDependency */, ); name = ZIPFoundation; productName = ZIPFoundation; @@ -2095,19 +2098,19 @@ }; AA2E57587AA8EECA63C4BE08EA3CB6D2 /* RDReaderView */ = { isa = PBXNativeTarget; - buildConfigurationList = 6AB8AE550E34BCAFC466012ECCE97CBF /* Build configuration list for PBXNativeTarget "RDReaderView" */; + buildConfigurationList = B36E390C233796AF3616DEDF3A8E3702 /* Build configuration list for PBXNativeTarget "RDReaderView" */; buildPhases = ( - 4FA1757CD79A24141F672954BF6735DA /* Headers */, - EE868319E7C4A061BF2CD71DD5F9C491 /* Sources */, - 1B92894A72CDF0235556D49F00026463 /* Frameworks */, - D537EE07D95CD401B150AC4CA7458DCD /* Resources */, + BC7A196A9AB65D79B6D2930DE22791ED /* Headers */, + 46B3CD29AF61D782033CCD8AC3F64F9C /* Sources */, + C4547124925694C151155C5C459D5EA1 /* Frameworks */, + 54D50F5E7D2A7E05986FDEECB2DE604F /* Resources */, ); buildRules = ( ); dependencies = ( - 7EDFE31368D3022A0894D67822D94E7D /* PBXTargetDependency */, - 3510572C3D091C0935798461FB6C5A92 /* PBXTargetDependency */, - 0F35B7A6F968F4851B3CFF623AA5BE5E /* PBXTargetDependency */, + ABD8515E56FA7B271D38BF38721AE20C /* PBXTargetDependency */, + D8D6955B3296868715229C88935F151F /* PBXTargetDependency */, + AE56B2245E723DA83C8905741493BCE4 /* PBXTargetDependency */, ); name = RDReaderView; productName = RDReaderView; @@ -2116,11 +2119,11 @@ }; AE7F393FB7805DE2664AB4111873F907 /* RDReaderView-RDReaderViewAssets */ = { isa = PBXNativeTarget; - buildConfigurationList = BABDDD715D4526AF32440E6D7F4E0939 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */; + buildConfigurationList = E388A68950BE869243115F12D29275E6 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */; buildPhases = ( - 152242F0B979A40E91310B6AA9D317E2 /* Sources */, - 76F9E948CD9009E8107E1C61C1C40F67 /* Frameworks */, - 4F766EF837A6598407C9632CE45ED609 /* Resources */, + 9D7747E4EF4AD08D46E0A0F1EE4FBF71 /* Sources */, + 68BAD03119A3C08F11F48EC53AE50E2A /* Frameworks */, + FC37B8B5D0814BC619325AA8E2521E8F /* Resources */, ); buildRules = ( ); @@ -2143,8 +2146,8 @@ buildRules = ( ); dependencies = ( - 56B80CB8423A9ED18F79266879B187A0 /* PBXTargetDependency */, - E450D34CBA00FFF4FE9AAF797684BACD /* PBXTargetDependency */, + ED3F8BF6E64575FD64AB29CD5E7F325C /* PBXTargetDependency */, + 24052366F14D3992556E6F97AA286A3A /* PBXTargetDependency */, ); name = DTCoreText; productName = DTCoreText; @@ -2153,11 +2156,11 @@ }; C7A8D82E407CD3FDC3BA55CEE519B252 /* ZIPFoundation-ZIPFoundation_Privacy */ = { isa = PBXNativeTarget; - buildConfigurationList = 2EB4E348D6C06E5B54C3793ADD214E92 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */; + buildConfigurationList = 518A8AFAE744B5C934477065A093DD03 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */; buildPhases = ( - 86E0D22F3F3BAE4B883B92FF1D3C3C8E /* Sources */, - E4AF016E3A76A93A97661A7459A79847 /* Frameworks */, - 7B873D0DF60D64F25B3EF54696FE7A08 /* Resources */, + 69A5EC197D7DEE159385371D2388DE1E /* Sources */, + 69DDADDC67DC51005EC1277552F4DE77 /* Frameworks */, + 410CBB418D3FC8332AD4A585000429D1 /* Resources */, ); buildRules = ( ); @@ -2205,6 +2208,14 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 2612277909133F912CD2278F37833B49 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B370BAB1B1D7913DAB1C6C186DD058B3 /* ZIPFoundation-ZIPFoundation_Privacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 378BF991D3B318AACBF6D78F57218233 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -2213,36 +2224,34 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 424A16025318B52E74BAC95FB0A556E8 /* Resources */ = { + 39B8AAC24665687D9F36231B26DAD836 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6B49DC82B42CA0E117265F6CD43EEF8D /* default.css in Resources */, + 300D521B97F66DD5401F6292436339EF /* default.css in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4F766EF837A6598407C9632CE45ED609 /* Resources */ = { + 410CBB418D3FC8332AD4A585000429D1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - AA7629F822C3DCAECBB5DCD1BC495E84 /* cssInjector.js in Resources */, - 24FB53BAB9B501F996DF90066CB53225 /* epub-bridge.js in Resources */, - 797848B2163C1E4E5F1446D9B867BA30 /* epub-fixed-layout.html in Resources */, - F5064819F680614ACF6503287451E4C6 /* rangy-core.js in Resources */, - 7EC0B3F00E142D2EF8AD8C426519B8FB /* rangy-serializer.js in Resources */, - 57399D051CD4E2CC012F3308031BE592 /* WeReadApi.js in Resources */, - 0FC610B1799A81BB1A05C679012C5372 /* wxread-dark.css in Resources */, - 5EBCDBA71D6A9A0B165DA802A3DB791A /* wxread-default.css in Resources */, - CC1A14092E38C024B59039247A9A7F1E /* wxread-replace.css in Resources */, - 9B1CEC717F3D521122785DB02A077BED /* wxread-replace-latin.css in Resources */, + 6B0DCDF171C89921104B03A7C2FBD921 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7B873D0DF60D64F25B3EF54696FE7A08 /* Resources */ = { + 54D50F5E7D2A7E05986FDEECB2DE604F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AF94C02DCB17B49683E8D66372238792 /* RDReaderView-RDReaderViewAssets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 72BD6600585C4D2C17B65DCA6090D586 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - D7E6418C29E54343D2587D20DAD787EC /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2253,111 +2262,300 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B2A21806D132FBDC0E35A77F93204070 /* Resources */ = { + FC37B8B5D0814BC619325AA8E2521E8F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D537EE07D95CD401B150AC4CA7458DCD /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B91D4B37570E0FDFB186D4622D05D2A4 /* RDReaderView-RDReaderViewAssets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D77DB0CE0BC7E72C478D9959A0FF59FA /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 57E15358F55891E25FA5979425011B2D /* ZIPFoundation-ZIPFoundation_Privacy in Resources */, + 29E12DE24E3817E282979645D80E45C0 /* cssInjector.js in Resources */, + B1C53F2DDF1548C6A9EA0262BD47F6D2 /* epub-bridge.js in Resources */, + 70B2498BF424D327D9F685942E2545FD /* epub-fixed-layout.html in Resources */, + C1BCDDF7EBA55903706A5435C3BD6952 /* rangy-core.js in Resources */, + E197A95013D415FCB22EF52D7F83EDEA /* rangy-serializer.js in Resources */, + 9B1BC6991EADCE68D8C556C23803C70E /* WeReadApi.js in Resources */, + 1D78EA12F3A3AAE27FA5792A07907589 /* wxread-dark.css in Resources */, + 14CE62432CD3EE5D5112BCA53DB4DC87 /* wxread-default.css in Resources */, + 57E1FC6C0C6F1D12E9D1558BF9BA58D0 /* wxread-replace.css in Resources */, + 9F00ED88950CC6FE3294B3484035AAE2 /* wxread-replace-latin.css in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 152242F0B979A40E91310B6AA9D317E2 /* Sources */ = { + 1921A975DCF4677EDFD10C92050EC416 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 50EF9EE32F5C1FA13D30428F9FF42A44 /* DTActivityTitleView.m in Sources */, + 250D99A44F530B5A9979A09C015D2EEA /* DTAnimatedGIF.m in Sources */, + 1AAE497083E517906F7B5FE3B54261B9 /* DTBase64Coding.m in Sources */, + 9D87AFB2CD371D4C2E4DF923743A3006 /* DTBlockFunctions.m in Sources */, + 00072FE6929FE581D750274713B42926 /* DTCoreGraphicsUtils.m in Sources */, + 7FE9F58EFF876EC8014F334CAA38D30E /* DTCustomColoredAccessory.m in Sources */, + 873DF3287B8B155EDB5F2FEE84DDAF13 /* DTExtendedFileAttributes.m in Sources */, + 3BE0A085BC69652EE763EED221A6F9D9 /* DTFolderMonitor.m in Sources */, + 8B59DB319C18ABA52569DE2683A0BA70 /* DTFoundation-dummy.m in Sources */, + C4ADF74929D282553D9CC6B12132E57A /* DTFoundationConstants.m in Sources */, + A0E447FEA7D1488ADCE2972E526D92D0 /* DTHTMLParser.m in Sources */, + 15AEA1D561EAB9E702FFE2F8595856DE /* DTLog.m in Sources */, + C07672A68F02B0C89233FDB2F58405B4 /* DTPieProgressIndicator.m in Sources */, + 4CE93ED4B7B40D4518A42BB27BE6A338 /* DTSmartPagingScrollView.m in Sources */, + EADAA30B24211C8357659B97D6990479 /* DTTiledLayerWithoutFade.m in Sources */, + DD26AEA60539DED9AD28F2159313A41B /* DTVersion.m in Sources */, + 00311F55CAC7A80476861A9A01A0D9D2 /* NSArray+DTError.m in Sources */, + A237D8BD5695BD412EFBF94B0FECE210 /* NSData+DTCrypto.m in Sources */, + 92429AC50D8D9C9393EC06D275CDC5EE /* NSDictionary+DTError.m in Sources */, + B20767C75E33D940407A73684BBF117D /* NSFileWrapper+DTCopying.m in Sources */, + D31E5EA195C333049DE497301EFD2BA8 /* NSMutableArray+DTMoving.m in Sources */, + D990C9BBC5DEAEE4BA5BFF730C017B94 /* NSString+DTFormatNumbers.m in Sources */, + 8B2918CC0175499F973B3EC6E6CCAD09 /* NSString+DTPaths.m in Sources */, + E4D40CE3F09E656A501BE416D3E75182 /* NSString+DTURLEncoding.m in Sources */, + CEC143DE538A2438B7EE30F733C6F5B1 /* NSString+DTUtilities.m in Sources */, + 1B2F0D344A944A071C0680998A96F14E /* NSURL+DTAppLinks.m in Sources */, + 49843E4719C8DDC61C622560E73ACBC4 /* NSURL+DTComparing.m in Sources */, + 584AE069BDA8C80BAED639DF26754A0B /* NSURL+DTUnshorten.m in Sources */, + E63EF4172239E114561F77A6EDABEA7F /* UIApplication+DTNetworkActivity.m in Sources */, + 36A83636F549A72B823760708496D7B9 /* UIImage+DTFoundation.m in Sources */, + 8823198305D6AF3485BC4DAA84CA08CE /* UIScreen+DTFoundation.m in Sources */, + 22DBEE5DFBD48875EDBA1DB856BA2CFC /* UIView+DTFoundation.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 46B3CD29AF61D782033CCD8AC3F64F9C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 08114BFDC74464E95F7403D745C03597 /* RDEPUBAnnotationModels.swift in Sources */, + 243E7B847D6B869F5B19BEC2007B9290 /* RDEPUBAssetRepository.swift in Sources */, + 3718C3664D054ECFFDAA22DC26A170C7 /* RDEPUBAttachmentNormalizer.swift in Sources */, + 25C0E2CB3040A681F48C60BE0BA6D5F8 /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */, + C5C1EECC76090DF1CB2E7D8E7959CCE2 /* RDEPUBAttachmentTooltipView.swift in Sources */, + 9E94C953488AA36229B1AFBFA32BBED5 /* RDEPUBBackgroundCoverageStore.swift in Sources */, + FBEA39961A7CC41D92A67A52D859FA9B /* RDEPUBBackgroundPriorityPolicy.swift in Sources */, + 11177A56BBD6782F3F92E0E9BAEF677F /* RDEPUBBackgroundTrace.swift in Sources */, + 06382387610043DAA6CD14D7AD182DBF /* RDEPUBBookPageMap.swift in Sources */, + 6C07C95892D6224437E7B6376B08EB23 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */, + 4E857C4A8AF4533FC93D6A5E4B7BB3D4 /* RDEPUBCFI.swift in Sources */, + 8F6093E0D4A2EDA6502FFA163A95EF03 /* RDEPUBCFICompatibility.swift in Sources */, + DA9C5616DC232B156BE657B482DC9F4C /* RDEPUBCFIDOMPathBuilder.swift in Sources */, + 3AA1044D0DBE82EF985629B06BE71A7E /* RDEPUBCFIError.swift in Sources */, + E149D293D49FC1A797C2F7690729E081 /* RDEPUBCFIGenerator.swift in Sources */, + 9D70BB28324C9FF5C0EFC5B4A7FC8D34 /* RDEPUBCFIMap.swift in Sources */, + 759B37F4E343E04EEB2EFA3CF524A47D /* RDEPUBCFIMarkerInjector.swift in Sources */, + C5BB2F613985D1B830839ED1E11CEACA /* RDEPUBCFIParser.swift in Sources */, + FF707D17AED7D66ACAD9953CF67DA3EC /* RDEPUBCFIPath.swift in Sources */, + 519FBE83225E8DD86A6970FB875803D6 /* RDEPUBCFIRange.swift in Sources */, + 356D1732FFEFFCB6EA25A3E5C6F17251 /* RDEPUBCFIRecoveryEngine.swift in Sources */, + 504022F60824B8B6B204AA2100F5D47A /* RDEPUBCFIResolver.swift in Sources */, + B78E0261737C3AB2C16AE5026AC5910E /* RDEPUBCFISerializer.swift in Sources */, + 8DE51BB0432FCA906EE574F54728D7CF /* RDEPUBCFITextAssertion.swift in Sources */, + C51D41D902C067957EBEB531784866C9 /* RDEPUBCFIUtilities.swift in Sources */, + C03DA8BB6EADCF18FDC42EA0996A4A27 /* RDEPUBChapterCacheKey.swift in Sources */, + 6E6B1F175FA7E69A77604DA9FBA74F7A /* RDEPUBChapterData.swift in Sources */, + 399706B52D94F4BB0F6BF7DEE1D7A198 /* RDEPUBChapterDataCache.swift in Sources */, + 561017094AFE9205C1B9FACAE64255AE /* RDEPUBChapterLoader.swift in Sources */, + 8E1761DA4D139D2AFBC9672FB1FB78FB /* RDEPUBChapterLocation.swift in Sources */, + D83430CB424836F9A1B874801AB56F95 /* RDEPUBChapterOffsetMap.swift in Sources */, + 46E70B7A4E1C35BBB88EFBCB9DCE8ADB /* RDEPUBChapterPageCounter.swift in Sources */, + 6F111FA5A549C14B477D6D11A072C865 /* RDEPUBChapterRuntimeStore.swift in Sources */, + ADFF1DCD1BBCDF63976D472155FDE109 /* RDEPUBChapterSummaryDiskCache.swift in Sources */, + 203CB331D8744F1800C59AE8D711EF88 /* RDEPUBChapterTailNormalizer.swift in Sources */, + FC27EB0CB0FF172C74A211248FC42DEA /* RDEPUBChapterWarmupOrchestrator.swift in Sources */, + 05C9B93A3147D32C239D36A568E19FB4 /* RDEPUBCoreTextPageFrameFactory.swift in Sources */, + B5427437A9D88407114E663610C3C014 /* RDEPUBCSSCompatibilityLayer.swift in Sources */, + 67FEDE8824DCBF369F8BC557A54A4B38 /* RDEPUBDarkImageAdjuster.swift in Sources */, + 56F19DA2EC227104B8690133AAD7B622 /* RDEPUBDTCoreTextRenderer.swift in Sources */, + 08579DA9653BBAE41A18A65026C4006A /* RDEPUBFixedLayoutTemplate.swift in Sources */, + 46A2E18E981DE7D7FFAC4BF04E967AE2 /* RDEPUBFontFallbackResolver.swift in Sources */, + 2341F46E32027F16B3EE8F86B75B58A9 /* RDEPUBFontNormalizer.swift in Sources */, + B90885681DDEEB4B8E9A02D42618DED8 /* RDEPUBFragmentMarkerInjector.swift in Sources */, + 97A08769271E83386E538B6CA488A1D7 /* RDEPUBHTMLNormalizer.swift in Sources */, + 18B162A00BDD1E6C09AFECB6B45C031B /* RDEPUBImageViewController.swift in Sources */, + C60C55B121391A5AF467974B11309DD7 /* RDEPUBImageViewerCoordinator.swift in Sources */, + 5F5D2D465B1C6351873BCE1AA7983583 /* RDEPUBJavaScriptBridge.swift in Sources */, + F1436DB556678069EE1DAAA6CD21D6BD /* RDEPUBJumpSession.swift in Sources */, + 70423D7766237808D787F70649D66D2D /* RDEPUBMemoryProbe.swift in Sources */, + 022AC87F90411AB1565BFC34CBD20C77 /* RDEPUBMetadataParseCancellationController.swift in Sources */, + 9400BE65C1A692BC1413843076D6EB03 /* RDEPUBMetadataParseWorker.swift in Sources */, + 86CE7CF558D2DC085C9D6DEC7B2FFA2C /* RDEPUBModels.swift in Sources */, + E35DC3465FF74C36D1877CE677053732 /* RDEPUBNavigatorLayoutContext.swift in Sources */, + 11A4D1ED36F0F2CD8FB62160CE6253A7 /* RDEPUBNoteDetector.swift in Sources */, + 0E654514AD6619948B5E7AB8A68398BB /* RDEPUBNoteModels.swift in Sources */, + D9BDE5ECF4EDB325C935F92526AF3BCC /* RDEPUBNotePopupCoordinator.swift in Sources */, + 6ED8ED03655DAA19AD28AB74929C8D5E /* RDEPUBNotePopupViewController.swift in Sources */, + 9ACDE3CA3FE3A60AC27687C656FB419C /* RDEPUBNoteResolver.swift in Sources */, + 169E3A8D7CF9CD10474613EF0CE0BA58 /* RDEPUBPageBreakPolicy.swift in Sources */, + D52D504561415193B8D8731387406403 /* RDEPUBPageCountCache.swift in Sources */, + 83519082B9AE779AED5292F7BEC3F536 /* RDEPUBPageInteractionController.swift in Sources */, + 6635ACAC44269CA4F029D09B8FA0AB6A /* RDEPUBPageLayoutSnapshot.swift in Sources */, + D4E1BD55CB50FAE3E5F629004180CF45 /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */, + E80114BEF65115368E89B351DF979DDA /* RDEPUBPageResolver.swift in Sources */, + 3BB5E376318200B3769C486789E24289 /* RDEPUBPaginationCacheCoordinator.swift in Sources */, + A1F973FDFDF76DF8D0933605D66EBDA8 /* RDEPUBPaginationModels.swift in Sources */, + 80E64600E4FF6A3D54497AFCEB21A330 /* RDEPUBPaginator.swift in Sources */, + 7F6038D943A16DE9AC6A1C0F7A0402BC /* RDEPUBParser.swift in Sources */, + 542566132B2CE691EA2226BE4CCC313A /* RDEPUBParser+Archive.swift in Sources */, + B0075EE1F2539980DC68350A92C8F464 /* RDEPUBParser+Package.swift in Sources */, + BDED6C43665A64B2F3A487526F317E07 /* RDEPUBParser+ReadingProfile.swift in Sources */, + 66D5B656A033F00ECD29B7CA01120166 /* RDEPUBParser+Resources.swift in Sources */, + 35339CEE078C68227605E3F5DA550ADD /* RDEPUBParser+TOC.swift in Sources */, + A87ECC764B3058BD18F068F5235C0409 /* RDEPUBPreferences.swift in Sources */, + FFE7975D2961B9A306B6BB6831C2C8B4 /* RDEPUBPresentationRuntime.swift in Sources */, + 1C03A62B014AC6A2A890F996F76271C9 /* RDEPUBPublication.swift in Sources */, + A0BF95B1A71DCE42E810D983687BB7F3 /* RDEPUBReaderAnnotationCoordinator.swift in Sources */, + E233331C5792C8C79E1C31F0617F96A0 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */, + B5DDFE1A90163715B0E93714052162F0 /* RDEPUBReaderBottomToolView.swift in Sources */, + A7D06BA48ADC3D9B552018F7571D2E78 /* RDEPUBReaderChapterListController.swift in Sources */, + 745C41558A0E86F1EE7C1C7D15180C06 /* RDEPUBReaderChromeCoordinator.swift in Sources */, + EA2781B628D5C588BD13FF68B8EB4F67 /* RDEPUBReaderConfiguration.swift in Sources */, + A85A3014D81A83761428B0F3A13153DE /* RDEPUBReaderContext.swift in Sources */, + 4D62C2EC64541CC90BDBA431B9099C85 /* RDEPUBReaderController.swift in Sources */, + 34AA42EA526694A33971418DA2B5F8B7 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */, + FD26AB576144C8A2678BBFB213E17E7C /* RDEPUBReaderController+ContentDelegates.swift in Sources */, + C256454C354207C9934BF9D8CEE7DC17 /* RDEPUBReaderController+DataSource.swift in Sources */, + CD07B6D83A3EE35C403CA18660E3DE87 /* RDEPUBReaderController+ExternalLinks.swift in Sources */, + B6E39D7922E559EA9F6C452B0DEFA2ED /* RDEPUBReaderController+LocationResolution.swift in Sources */, + 63A6EA2C3E8FB233F7DCD42AC33F38C5 /* RDEPUBReaderController+PublicAPI.swift in Sources */, + 50A6C85899890D44BBB56FEE3F696D25 /* RDEPUBReaderController+RenderSupport.swift in Sources */, + EB65ABC75FDB00A44AB0A4B8734EEA66 /* RDEPUBReaderController+RuntimeBridge.swift in Sources */, + FB73803F328A3E28764797436C90B0B1 /* RDEPUBReaderController+TableOfContents.swift in Sources */, + 1FA4D34922ED28BE3052D53730D94A37 /* RDEPUBReaderDelegate.swift in Sources */, + 7AB9F2AE594BD802C76BBA4980E19705 /* RDEPUBReaderDependencies.swift in Sources */, + 944B8F27F21C924747CCBCBC74517808 /* RDEPUBReaderEnvironment.swift in Sources */, + DF1C221DC22E91A3950948E08E0202F7 /* RDEPUBReaderHighlightsViewController.swift in Sources */, + 9EDEF94D4426C164FE9A2E2FA36ADC37 /* RDEPUBReaderLoadCoordinator.swift in Sources */, + 967B256ED1342620B974B79ECB14CB02 /* RDEPUBReaderLocationCoordinator.swift in Sources */, + E1030FA1F1FD28A346E9B0CDE79A3C9E /* RDEPUBReaderPaginationCoordinator.swift in Sources */, + B52761359F11726D1B0FA2A132CEC212 /* RDEPUBReaderPersistence.swift in Sources */, + E6C10023AEAEF85E7202D0BCD43E847E /* RDEPUBReaderRuntime.swift in Sources */, + 5E8F2E42C4BE9511BEE24EA17234F30C /* RDEPUBReaderSearchBarView.swift in Sources */, + DB38823D05F9EAA6515ED753C076068E /* RDEPUBReaderSearchCoordinator.swift in Sources */, + F3BF4C42ECB685ABA17AFFF436AA8DD6 /* RDEPUBReaderServices.swift in Sources */, + 2CA6F4C17909548E2D91BF71AEE0BB84 /* RDEPUBReaderSettings.swift in Sources */, + 721100E1D82608E783B22C3E07699E7C /* RDEPUBReaderSettingsViewController.swift in Sources */, + 8C58B34D8DE85D12F107B697D7CBDD33 /* RDEPUBReaderState.swift in Sources */, + 21ACC31FEB25D8E00B1CE1017A180716 /* RDEPUBReaderTableOfContentsItem.swift in Sources */, + 51A4A5B6D8E9B59D8D544015275F3F37 /* RDEPUBReaderTheme.swift in Sources */, + 9FA66A3511705E7CF26F5F37F507875C /* RDEPUBReaderToolView.swift in Sources */, + 0832443C5D3179680E63DE42E41E4A7C /* RDEPUBReaderTopToolView.swift in Sources */, + 840CB4AD602D707E2C2C4FFB41556248 /* RDEPUBReaderUIState.swift in Sources */, + 04C7133BF47F70BF28F6043EB9939B04 /* RDEPUBReaderViewportMonitor.swift in Sources */, + 60EBB36339ECD67F5A6DFC402A44E701 /* RDEPUBReadingLocationModels.swift in Sources */, + D6406B0E25B3462D230EB0498DD20AF3 /* RDEPUBReadingSession.swift in Sources */, + 6873031C87E6AAD6EEBA809E2296896E /* RDEPUBRenderDiagnosticsCollector.swift in Sources */, + 57A35BC904190F50EB5D281C5D033AF3 /* RDEPUBRenderRequest.swift in Sources */, + FA9A0F5DA5D75BA58E5FD351AEBF77C7 /* RDEPUBResourceResolver.swift in Sources */, + EDCD76D407E7BE7D66F1D02E1D5524EE /* RDEPUBResourceURLSchemeHandler.swift in Sources */, + 9B7D4D2064D42DC7649C5A9B0A90DBAD /* RDEPUBRuntimeChapter.swift in Sources */, + 81086388CAAFC08F99A6CFBC54E612FC /* RDEPUBRuntimePageCount.swift in Sources */, + DE2477E7AF48AC9600DCB208D5C8523E /* RDEPUBSafeArea.swift in Sources */, + 6D36BACFE1C53D5E5AF5F89EC910AB57 /* RDEPUBSearchEngine.swift in Sources */, + 020906DE38AFEC75CD6DC1402F8E97BC /* RDEPUBSearchModels.swift in Sources */, + CDBE585CA5FFEE29F992BD700CF11D79 /* RDEPUBSelectionLoupeView.swift in Sources */, + CC5C8A39AEFABC007F0ED9DEECDE7AC1 /* RDEPUBSelectionOverlayView.swift in Sources */, + 522D2B339FE7E19ED927F82150C55BF9 /* RDEPUBSelectionState.swift in Sources */, + FAB5E8C85816C2A4151BA0E6AC853D16 /* RDEPUBSemanticMarkerInjector.swift in Sources */, + 7CDBBCF9CC1552D3AB0B095A1AA6FB5A /* RDEPUBSettingsFlipAutomation.swift in Sources */, + E03787083A7F95A436360351495FCC9F /* RDEPUBStyleCompatibilityModels.swift in Sources */, + 8F4BA91E37DA06CD0BBEDF9D0C5D9150 /* RDEPUBStyleSheetBuilder.swift in Sources */, + E33C2D168A4E6B3DA75FD2BE92D978BF /* RDEPUBStyleSheetComposer.swift in Sources */, + 4D8FF0E0C042C10B4B68DCCFC056ED73 /* RDEPUBTextAnchor.swift in Sources */, + EF8EF713C7DBBC114AF00BB54688B886 /* RDEPUBTextAnnotationOverlay.swift in Sources */, + 2F5394C897D37AED4DC2ED00D180A07D /* RDEPUBTextBookBuilder.swift in Sources */, + 30EA52B5D49A8820D1AE92AFA61F7C63 /* RDEPUBTextBookCache.swift in Sources */, + 0D78DEE22F5E034C9DDC5856C0E4F015 /* RDEPUBTextBookModels.swift in Sources */, + 4A9FBB237C4C47B9D35706FB689791A0 /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */, + 1BCB6744E9F316DA47E1304849DCFDE8 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */, + DA02AE37173CA807657B44A7C20604E7 /* RDEPUBTextContentView.swift in Sources */, + 8A9ECE2E8CD637210EAEACA2930CB20B /* RDEPUBTextIndexTable.swift in Sources */, + D4F073EFF3AB9902816591F4D92CD9FC /* RDEPUBTextLayouter.swift in Sources */, + 6F0024AAF00C39496470ABDA6311FC34 /* RDEPUBTextLayoutFrame.swift in Sources */, + 9C7780A496D623BBD48A87117EE07140 /* RDEPUBTextPageBoundaryValidator.swift in Sources */, + 884C57253DC39B361B9D821059BBCB0B /* RDEPUBTextPageDecorationView.swift in Sources */, + 5A76BA537A8E9769097E716036D5DD9D /* RDEPUBTextPageRenderView.swift in Sources */, + 0E73D6B61A31F648C93F2820F8601D4A /* RDEPUBTextPageVerticalJustifier.swift in Sources */, + 72BDDBEFDA5D6E7FC270C312B1BCC4DE /* RDEPUBTextPaginationInterfaces.swift in Sources */, + C72498A0EFC6C52DAB148D7F89F91A5E /* RDEPUBTextPaginationSupport.swift in Sources */, + AA9ACAE70A4CC306428EDC279545AC17 /* RDEPUBTextPerformanceSampler.swift in Sources */, + 041E5C2F1CCF83406447722A174B6D86 /* RDEPUBTextPositionConverter.swift in Sources */, + 911A30689EEF1FAD44FC96D757920A6E /* RDEPUBTextRenderer.swift in Sources */, + 033A34848F829FA31371E93D1AB4827F /* RDEPUBTextRendererSupport.swift in Sources */, + 8A6DB3C30CAA5C433EB4A6964D59411B /* RDEPUBTextSearchEngine.swift in Sources */, + 8B98912F325274D04D610B3FAE7782B4 /* RDEPUBTextSelectionController.swift in Sources */, + F487E4572BA5F4C757EB6D6C50320BA7 /* RDEPUBTypesettingPipeline.swift in Sources */, + D5CF2E24EF14B57D2168EB7C44C32145 /* RDEPUBViewportTypes.swift in Sources */, + B9A95DEFECB1E89F36E3F43DED119DF8 /* RDEPUBWebContentView.swift in Sources */, + B63625809A957025082B4033C7442289 /* RDEPUBWebDecorationOverlayView.swift in Sources */, + D6735070EA7803B9CD44F3B6319A3044 /* RDEPUBWebView.swift in Sources */, + B7A0FE3182F8FA37D3DADBF317BE7D6F /* RDEPUBWebView+Configuration.swift in Sources */, + 2762C38F0DCA2C6027557ACD3444787E /* RDEPUBWebView+FixedLayout.swift in Sources */, + B4AF90C620D7D151BFE11E949374980B /* RDEPUBWebView+JavaScriptBridge.swift in Sources */, + A15EA1D45DE28B8883D692ED66DC13DD /* RDEPUBWebView+Reflowable.swift in Sources */, + 46F411369949108E7AEEFD1936818F80 /* RDEPUBWebView+Search.swift in Sources */, + B11CE7833B93D2AE5CDD0F71DAFF5012 /* RDEPUBWebViewDebug.swift in Sources */, + 1A328AD562FD39C0FE98473621E7184B /* RDPlainTextBookBuilder.swift in Sources */, + CC7DDA979B2F4CDAE40A3EFF77026910 /* RDReaderContentCell.swift in Sources */, + FFD2CD894C5599DB9D60FEFFAE1F9395 /* RDReaderFlowLayout.swift in Sources */, + 52736993BE6C7C4DD93C81586B3E2461 /* RDReaderGestureController.swift in Sources */, + 66C5B1E7A94EFD608EA77088B598164E /* RDReaderPageChildViewController.swift in Sources */, + 1D2A8818B6C94705205AEDD2CD0F505A /* RDReaderPagingController.swift in Sources */, + CC2144FB1A6B27AC54FC4DAAD06AB050 /* RDReaderPreloadController.swift in Sources */, + ABA19D640CF2E239820BFCC47CF6CBD4 /* RDReaderSpreadResolver.swift in Sources */, + F4C56CA89B50670081B742F4715AC9DD /* RDReaderTapRegionHandler.swift in Sources */, + 9D682703886BFAD8E7BCD0FE2EB1F78E /* RDReaderView.swift in Sources */, + 73D0271B76B6262C2300B3C7DB163DF2 /* RDReaderView+CollectionView.swift in Sources */, + 14A0B98D226AA828CC7598D92B1BA29E /* RDReaderView+ContentAccess.swift in Sources */, + 828F623C86C2A80E235B2134A0CCA664 /* RDReaderView+PageCurl.swift in Sources */, + 9F1B5F23AF8841B11D008BE9356D74C1 /* RDReaderView+ToolView.swift in Sources */, + A87317751C202D7AD8713AC8B31BFE16 /* RDReaderView-dummy.m in Sources */, + 6DB3139A32F959E5660143F92B1B9E02 /* RDReaderViewProtocols.swift in Sources */, + 3A42CEAFF80430B8C60ED7DA64846CB3 /* RDURLReaderController.swift in Sources */, + 276E9AA59EB63396C8378BBC950CE291 /* String+RDEPUB.swift in Sources */, + 3F8F4CE78B1B0B3E8343E7F91ACCE444 /* UIColor+RDEPUB.swift in Sources */, + E4E1ACD032CFBA1EA80A4E5DD8F68848 /* UIColor+RDEPUBHex.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 69A5EC197D7DEE159385371D2388DE1E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 86E0D22F3F3BAE4B883B92FF1D3C3C8E /* Sources */ = { + 786564399E053D5FC4476109DEBBFEE0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + CE4F884B81F8F1C6E6D283768A102802 /* Archive.swift in Sources */, + F41BEDF611247EC8338D9FE8B7E2BA00 /* Archive+BackingConfiguration.swift in Sources */, + A6082878B9CCD86C68D33404E50F9C69 /* Archive+Deprecated.swift in Sources */, + 42775236B82754FEF09932222F484EB1 /* Archive+Helpers.swift in Sources */, + 777A8C7B4DFA0A72A6E20A1E76D213F3 /* Archive+MemoryFile.swift in Sources */, + 6A1ED4852B10607E6D1A8DB0C78848F5 /* Archive+Progress.swift in Sources */, + E82E865A9535983CF0E322C3A120A106 /* Archive+Reading.swift in Sources */, + 194C90037DA8585AA0251509D2E25C1C /* Archive+ReadingDeprecated.swift in Sources */, + D82B8E3CA04192590999A80AE31A0134 /* Archive+Writing.swift in Sources */, + A6B7BEBBE39A4D2CCA975B69A8FF385D /* Archive+WritingDeprecated.swift in Sources */, + F57FC499CF50E2C66E28E56B28ABCFC1 /* Archive+ZIP64.swift in Sources */, + F859E971794D18B4596AACB619C9FC0E /* Data+Compression.swift in Sources */, + 857E62043F8CC55F9663CFDE0AEC96ED /* Data+CompressionDeprecated.swift in Sources */, + 598067C0EF7A61AC9002DD34CC503031 /* Data+Serialization.swift in Sources */, + FDD70B9210012C399DDEAC1ACEF2B2AA /* Date+ZIP.swift in Sources */, + DC39285E80B6FB62F4F0CF4DAD71DD70 /* Entry.swift in Sources */, + 38E75F23ECF239CE35A5687C44F85244 /* Entry+Serialization.swift in Sources */, + F896051055B1D335F9DCBAF12528D17F /* Entry+ZIP64.swift in Sources */, + 61E0C3F772839BE1391A3EC12052D867 /* FileManager+ZIP.swift in Sources */, + A58C42A9E07E7FE0F012C72C8875BE70 /* FileManager+ZIPDeprecated.swift in Sources */, + 0CD65B52297926BF6B22245BB401FE69 /* URL+ZIP.swift in Sources */, + CA823FD71C0113C96F9BED13E98817A8 /* ZIPFoundation-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 88624E30709B99852919BA4048F4C471 /* Sources */ = { + 9D7747E4EF4AD08D46E0A0F1EE4FBF71 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 42D1958B37CBF9EFB3CEB6A8CAFF76AF /* DTActivityTitleView.m in Sources */, - C1678A88827D582EAE2921342ACAD5F4 /* DTAnimatedGIF.m in Sources */, - 549EA467E837EC2A6054D44B6376423A /* DTBase64Coding.m in Sources */, - 73E26B43FD89D6F9E5D6E53888DCDA0C /* DTBlockFunctions.m in Sources */, - 60B755A36A2122D9509C47B59B977F64 /* DTCoreGraphicsUtils.m in Sources */, - 2F2BA46AF49A6918CC279C5610290542 /* DTCustomColoredAccessory.m in Sources */, - 1800E2951954DDB7A2A8F3871A4D1175 /* DTExtendedFileAttributes.m in Sources */, - C2E5F9A4B9F366EDA48329415CF0057A /* DTFolderMonitor.m in Sources */, - 96FEC32CA46D2AB578F12624B72D2E9C /* DTFoundation-dummy.m in Sources */, - D2225CA8427BEB882D82DE38019DD126 /* DTFoundationConstants.m in Sources */, - A2FA7374B3F6D6E723AC19A380DF704C /* DTHTMLParser.m in Sources */, - 4969CE5602CC934D55680248A5A5ABC1 /* DTLog.m in Sources */, - 8E7372FDB503AAE2B99CAF40DF2083C5 /* DTPieProgressIndicator.m in Sources */, - F7147DD0CF0BBAE9A181448FC68CF9AA /* DTSmartPagingScrollView.m in Sources */, - 7DC14CAF5CB1827AB6622A3468247D05 /* DTTiledLayerWithoutFade.m in Sources */, - E1B932FF7C930EF7F7604680E8FD3E14 /* DTVersion.m in Sources */, - B8522579F034294C6982DCB37DE15086 /* NSArray+DTError.m in Sources */, - C4C2F1441BF40302D432BC6420C0F50C /* NSData+DTCrypto.m in Sources */, - 0771856A5605A336983E6D12A566C042 /* NSDictionary+DTError.m in Sources */, - A0313009309C859841F55118BC23E3EA /* NSFileWrapper+DTCopying.m in Sources */, - E3A31EB088966F290BC0FA8F9E84990A /* NSMutableArray+DTMoving.m in Sources */, - 5B0FDAA3C42B8CB5248BC4ACF21FB3F2 /* NSString+DTFormatNumbers.m in Sources */, - C578EC0E752DEA0929FDC0A0CAAE4CA3 /* NSString+DTPaths.m in Sources */, - 68991FD1C811CDB7C212E0221F7DBD52 /* NSString+DTURLEncoding.m in Sources */, - 945A2981673EAAB7C06985B69E0B8B5D /* NSString+DTUtilities.m in Sources */, - 4FD0B3D2431E89EFA74A02280F4DFA54 /* NSURL+DTAppLinks.m in Sources */, - FEC18B0BF9DB6282F3B2737B03C466C6 /* NSURL+DTComparing.m in Sources */, - 75BA64D63D4FEA1DA5BF5C89CAD4963D /* NSURL+DTUnshorten.m in Sources */, - 026F7681329B00E35A480F5858301E66 /* UIApplication+DTNetworkActivity.m in Sources */, - 881E6C18B19215333585C4A16E3F413A /* UIImage+DTFoundation.m in Sources */, - A4123ABB5380886FB6EEB339384892F5 /* UIScreen+DTFoundation.m in Sources */, - 02EE41B3F3006A14BADE9BA94D7454D2 /* UIView+DTFoundation.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 908E285AED86CDB23737B76B8459B816 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7153939E3B654645EC94EA0E03470D23 /* Archive.swift in Sources */, - D74A865537CEEFB45C5951EBA2A43B90 /* Archive+BackingConfiguration.swift in Sources */, - BA464E5503BF2C730FADD4DE36DE6868 /* Archive+Deprecated.swift in Sources */, - 1D731AAC78FF62ED86F99DD0285427E5 /* Archive+Helpers.swift in Sources */, - E2A911CAA42ED21FC0675B662B58B8B8 /* Archive+MemoryFile.swift in Sources */, - 6271C496EAB502AD3055465A5D827878 /* Archive+Progress.swift in Sources */, - 9822E3B0CC3AF9A72FC29DEC11ECEAAF /* Archive+Reading.swift in Sources */, - 29CB36BD8C153BD78CA8B1F28DCF6ACF /* Archive+ReadingDeprecated.swift in Sources */, - CE1461B66FE25A3E3194B13B80B938AB /* Archive+Writing.swift in Sources */, - AF7EF16703AD0BAF5F926A254B0C9E9C /* Archive+WritingDeprecated.swift in Sources */, - C91D5DECB736752FDEE511F0B3B4AED8 /* Archive+ZIP64.swift in Sources */, - E8050CB03DC17469F13A823B666075C7 /* Data+Compression.swift in Sources */, - C224A4A04B5C6638D21FD2CE77B69443 /* Data+CompressionDeprecated.swift in Sources */, - C14C1329982852C841EBF7A6A8F47FD6 /* Data+Serialization.swift in Sources */, - EB83224969E7CCA0D8528DD55A753FDF /* Date+ZIP.swift in Sources */, - 989D55577D97CF4AEDF31A7A2BB2CF78 /* Entry.swift in Sources */, - CAD914075CB713FC15413D6FEF558094 /* Entry+Serialization.swift in Sources */, - AFCEC5571D0C75E38AD2D3AB0B027CA3 /* Entry+ZIP64.swift in Sources */, - 333E9440E6755615B7423D2E897C5869 /* FileManager+ZIP.swift in Sources */, - E61F35DFF62E486B472E57CB49399D1B /* FileManager+ZIPDeprecated.swift in Sources */, - 4E2123336537AC8648B8B3928D80FD88 /* URL+ZIP.swift in Sources */, - 50EBC14A5BB65993E1FAC38130135074 /* ZIPFoundation-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2369,201 +2567,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - EE868319E7C4A061BF2CD71DD5F9C491 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6E8441F463F68A5FEC44C69BCF77EAD8 /* RDEPUBAnnotationModels.swift in Sources */, - F02681BD4DFFDABD54753610438BE05F /* RDEPUBAssetRepository.swift in Sources */, - B600901A9F54CF17B27D65FAF248F495 /* RDEPUBAttachmentNormalizer.swift in Sources */, - 2E056A2117F8E13CDE6E665C89A8B1BA /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */, - AE1553D719D16EEC2847D111B5903892 /* RDEPUBAttachmentTooltipView.swift in Sources */, - 187FC12F4FE210C3276E0F256BBC287F /* RDEPUBBackgroundCoverageStore.swift in Sources */, - C90B928D22ABD4A4019ADF634B3C9252 /* RDEPUBBackgroundPriorityPolicy.swift in Sources */, - 233716F1EE82F10DA779D6DD5139CE95 /* RDEPUBBackgroundTrace.swift in Sources */, - 186B46C750706F83ECE93BFA3CACD661 /* RDEPUBBookPageMap.swift in Sources */, - 12B89F026E1CA877A5DB9901F1F84B41 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */, - 2BE0013FE0DDC77B462B69584C04E5EF /* RDEPUBCFI.swift in Sources */, - 692CDFFEE07CA9C09D1257448154707D /* RDEPUBCFICompatibility.swift in Sources */, - F21A55B28E25C3B9D00D8E2D6EB58544 /* RDEPUBCFIDOMPathBuilder.swift in Sources */, - AC7BC683CD9A6CE43F2473EAA729C0FA /* RDEPUBCFIError.swift in Sources */, - 4D66BE87981E3058D5C54D88CEB4EB8F /* RDEPUBCFIGenerator.swift in Sources */, - 4F2B6AFB35C163DBC1F8E20681D46BB9 /* RDEPUBCFIMap.swift in Sources */, - 06FF798F5DE1149DAB8763B64724E6D0 /* RDEPUBCFIMarkerInjector.swift in Sources */, - 83EA663B7BB067DD5EDF4ABAD045622C /* RDEPUBCFIParser.swift in Sources */, - D2BD52C739EE9121C2DBB30B9AA20E04 /* RDEPUBCFIPath.swift in Sources */, - AEE390923BE11EF94ABB8172930A261B /* RDEPUBCFIRange.swift in Sources */, - 98444DBE3A27073D4853E86F5CAD39C1 /* RDEPUBCFIRecoveryEngine.swift in Sources */, - 0E3FD7C77166CB18C2CF32EECBB7678C /* RDEPUBCFIResolver.swift in Sources */, - E7B84139E33FBD60C90F546750B66179 /* RDEPUBCFISerializer.swift in Sources */, - C3463BB24D53EA7809BB5E1C3276B94B /* RDEPUBCFITextAssertion.swift in Sources */, - 1E9BE89829042FF203DBA620E39BF082 /* RDEPUBCFIUtilities.swift in Sources */, - FBCBAE5842CAA34316A0963C2ED3FFE6 /* RDEPUBChapterCacheKey.swift in Sources */, - FB3D0E7A431E12F09F3EFEA34560164D /* RDEPUBChapterData.swift in Sources */, - B7E5AB4E36C8E357A4DBA8F6451CE8A0 /* RDEPUBChapterDataCache.swift in Sources */, - D4D42191C9EC85914D0E6BD19884009E /* RDEPUBChapterLoader.swift in Sources */, - 2BC65213EE316B42A750CE7EC423E1AE /* RDEPUBChapterLocation.swift in Sources */, - 5510021D8090D3D2051AEB591A7D90BB /* RDEPUBChapterOffsetMap.swift in Sources */, - CD8D29DA6C83EF687425C3DA6947612F /* RDEPUBChapterPageCounter.swift in Sources */, - EDC97063261083047D0D636FE47AC003 /* RDEPUBChapterRuntimeStore.swift in Sources */, - 404FBD43D1380F605264FD23756845FA /* RDEPUBChapterSummaryDiskCache.swift in Sources */, - 8A666D6696060E7CD204E87C00BE5B14 /* RDEPUBChapterTailNormalizer.swift in Sources */, - CA7FDFDF278504C0C1D5EEB88B044DCB /* RDEPUBChapterWarmupOrchestrator.swift in Sources */, - 5F91E431D40AE218D7A3774E0A9B4FCC /* RDEPUBCoreTextPageFrameFactory.swift in Sources */, - F6504C7DCCD538BD0696B381952DECB4 /* RDEPUBCSSCompatibilityLayer.swift in Sources */, - 921EA744654E430A9220D70229C58FF6 /* RDEPUBDarkImageAdjuster.swift in Sources */, - AD63555565A9FC36E9AD69AE8E7D1147 /* RDEPUBDTCoreTextRenderer.swift in Sources */, - 27E0CC7EF5D20F0A61D27E439B780BDC /* RDEPUBFixedLayoutTemplate.swift in Sources */, - 383AFA3F295427EA56530C70024DBD2F /* RDEPUBFontFallbackResolver.swift in Sources */, - CAB581FD7C03A91D7BCF31F9B7DFD2C1 /* RDEPUBFontNormalizer.swift in Sources */, - 6C906CF9FFC1697C72A93D4FC543B6A3 /* RDEPUBFragmentMarkerInjector.swift in Sources */, - F0DDD6C446D5E4F9712C70CE21AB2CF8 /* RDEPUBHTMLNormalizer.swift in Sources */, - 5911713F9239050AD67855C5FE5C09CE /* RDEPUBImageViewController.swift in Sources */, - DCD0A2ABC337BCEB54C478ED1F8889D9 /* RDEPUBImageViewerCoordinator.swift in Sources */, - A97EAA78ADAB17BFF4DB70AD2CE36A2A /* RDEPUBJavaScriptBridge.swift in Sources */, - E3240129AF117F28A4CC9A39E48C7CE5 /* RDEPUBJumpSession.swift in Sources */, - 94C4899B76DF8F45F3E49243780A055D /* RDEPUBMetadataParseCancellationController.swift in Sources */, - F8073C63A8EFDF857AA51C52455545F0 /* RDEPUBMetadataParseWorker.swift in Sources */, - 2C2DC59C72FEC3C928CBF9D92F8FFDD4 /* RDEPUBModels.swift in Sources */, - 253969CCB942DD6826234506CC2B2635 /* RDEPUBNavigatorLayoutContext.swift in Sources */, - 6D705FC78684FAA20879A13095661E8F /* RDEPUBNoteDetector.swift in Sources */, - 9D4364E686CE29303EEA24086C549C2A /* RDEPUBNoteModels.swift in Sources */, - A6C87CC6692C9C833DA11D0A3D9F6477 /* RDEPUBNotePopupCoordinator.swift in Sources */, - EEE82C0D019E833A59DB98BA96CBA446 /* RDEPUBNotePopupViewController.swift in Sources */, - B7D3EAF9CD1638EE59CF9127E46D5811 /* RDEPUBNoteResolver.swift in Sources */, - 76BF72753C25298968F8446D1FEDD9C5 /* RDEPUBPageBreakPolicy.swift in Sources */, - 0D242CECCC8FE1C19BB2D952BBA21D1D /* RDEPUBPageCountCache.swift in Sources */, - 3AD2C1CA7E9FC21A2D74EA080B6D962B /* RDEPUBPageInteractionController.swift in Sources */, - 02FAC2A406B3445930B8B3CA4A9B4998 /* RDEPUBPageLayoutSnapshot.swift in Sources */, - 09342D52B30E176B4A1D263799590FC6 /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */, - 005CFC268C4EFCB746393BB9E2F7EF89 /* RDEPUBPageResolver.swift in Sources */, - 433265EE781060B73077244642255314 /* RDEPUBPaginationCacheCoordinator.swift in Sources */, - 3120641E5E2540AFC3E1F47E0BE4E35B /* RDEPUBPaginationModels.swift in Sources */, - 789E8F623B7EC480E167CCFB17B32328 /* RDEPUBPaginator.swift in Sources */, - BB1A3A67759025DE4B7F03BC318AF516 /* RDEPUBParser.swift in Sources */, - 222066D6F66889D7810BE1F9C135DA22 /* RDEPUBParser+Archive.swift in Sources */, - 9F09BFBCF74E17B9BFD3FBB37BFAC7A6 /* RDEPUBParser+Package.swift in Sources */, - D7473BF91981294A067CB035F7695D99 /* RDEPUBParser+ReadingProfile.swift in Sources */, - 8D7B76D2BE87960C41554815520FBFD4 /* RDEPUBParser+Resources.swift in Sources */, - 296BA2D5C5458F0CCF2BA11548275985 /* RDEPUBParser+TOC.swift in Sources */, - 609A47F8B6B778E7C09C4A3173716231 /* RDEPUBPreferences.swift in Sources */, - 3B2F4E4DC50638762591D58890B11DB3 /* RDEPUBPresentationRuntime.swift in Sources */, - 8AA93AAAC288A910A46B6418DEDBA643 /* RDEPUBPublication.swift in Sources */, - D68C9E460307CB1FDFEF1622B2905ED4 /* RDEPUBReaderAnnotationCoordinator.swift in Sources */, - 082E3BF2BAC5436D6A7ECE404707A9E0 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */, - 0A5EF9E22D7DF24CEB0E9F5395C5C2D9 /* RDEPUBReaderBottomToolView.swift in Sources */, - 01AC80DCBF24562307ECFA24A6A945AF /* RDEPUBReaderChapterListController.swift in Sources */, - ED83D5746B2CB139C2A53D97CEAA8AC1 /* RDEPUBReaderChromeCoordinator.swift in Sources */, - 88F114C6286AA4DABEFC5A4A4659C539 /* RDEPUBReaderConfiguration.swift in Sources */, - DBD78AD2493F9A171BBBFF8AD648B93B /* RDEPUBReaderContext.swift in Sources */, - 0603811BC44846AC6334DB02B797BEFB /* RDEPUBReaderController.swift in Sources */, - F3650B2D64F692BEFD95976185B5DB15 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */, - 7A1CB3B032A352C23503837C966FE021 /* RDEPUBReaderController+ContentDelegates.swift in Sources */, - EA2CEDE8F391ED85A9601DEB7D8044F2 /* RDEPUBReaderController+DataSource.swift in Sources */, - 184EFEEA4A34812A9891FE7D667A3A98 /* RDEPUBReaderController+ExternalLinks.swift in Sources */, - 58ED82220D20D2DD9ABDAC9ABDD4BB4A /* RDEPUBReaderController+LocationResolution.swift in Sources */, - 86EB794495FA09BC2E166B43002DAFC5 /* RDEPUBReaderController+PublicAPI.swift in Sources */, - C8FADC9D72A57A061C6666713FF02524 /* RDEPUBReaderController+RenderSupport.swift in Sources */, - 5BBCAA7A6098938497E444933CC62556 /* RDEPUBReaderController+RuntimeBridge.swift in Sources */, - 7E082BDFF91E79A320FFE58301A4611F /* RDEPUBReaderController+TableOfContents.swift in Sources */, - 1A7C6254C0BF1C6C8E1D1D8DED658D52 /* RDEPUBReaderDelegate.swift in Sources */, - 44D7D8E32201729CC581FC5A0EE319A0 /* RDEPUBReaderDependencies.swift in Sources */, - CE8A5F13186A9A7C5F40A75C17466DBF /* RDEPUBReaderEnvironment.swift in Sources */, - 8D3C1C271D61E160F1F39548AB40B82D /* RDEPUBReaderHighlightsViewController.swift in Sources */, - 7BF06C839584BC5C3F22B7922B2135C0 /* RDEPUBReaderLoadCoordinator.swift in Sources */, - 72CA345F4639CA9C6AF9C164515070B6 /* RDEPUBReaderLocationCoordinator.swift in Sources */, - 80922C1B7510E10B313BBC0BC457314B /* RDEPUBReaderPaginationCoordinator.swift in Sources */, - 6E0E63C1AAA2E75F7C040815B6A342DA /* RDEPUBReaderPersistence.swift in Sources */, - FCF14BAEC4558EE376B315BD4C0C9307 /* RDEPUBReaderRuntime.swift in Sources */, - 65D4A26423DC3811E2E647A7E6401653 /* RDEPUBReaderSearchBarView.swift in Sources */, - 879B5366A6BB373F77010F2CCE776F4C /* RDEPUBReaderSearchCoordinator.swift in Sources */, - 741FC27B73B2FC912CE6940374608E74 /* RDEPUBReaderServices.swift in Sources */, - FBAC3FF19329EDF1CC7D494263CA728D /* RDEPUBReaderSettings.swift in Sources */, - 5ADF1544DE3754D1E2AA8A10BE3CC09A /* RDEPUBReaderSettingsViewController.swift in Sources */, - 34BBE7EC94EB4244DB72A9C38FACCDDA /* RDEPUBReaderState.swift in Sources */, - 04CF8E10D9B5FCD1EE0637929AE30482 /* RDEPUBReaderTableOfContentsItem.swift in Sources */, - F3DFAD0104D9A6520E75A5874F499F66 /* RDEPUBReaderTheme.swift in Sources */, - B9A197E275617D9B2A65077B69E4A2F4 /* RDEPUBReaderToolView.swift in Sources */, - 057A9674B9EE73622350A746C47C478E /* RDEPUBReaderTopToolView.swift in Sources */, - 8FC40E552134EC459638871941437C41 /* RDEPUBReaderUIState.swift in Sources */, - 5B7E3DABCEB0DED90BD7C9F6FF076384 /* RDEPUBReaderViewportMonitor.swift in Sources */, - 1FEAB861BB1CF892743651C907B28B12 /* RDEPUBReadingLocationModels.swift in Sources */, - 632192A26D2997E04711F37A141B8099 /* RDEPUBReadingSession.swift in Sources */, - D46DA22E948819A50DAB9055B3B453FF /* RDEPUBRenderDiagnosticsCollector.swift in Sources */, - 6BF4DC0E327C667AC9D4709AD022FA7F /* RDEPUBRenderRequest.swift in Sources */, - 153B1C6A72B6CF391E99A104D1C2422D /* RDEPUBResourceResolver.swift in Sources */, - 7F06B128ECF3428FDAB9B0CDAEB50527 /* RDEPUBResourceURLSchemeHandler.swift in Sources */, - 14AB1A24C2510D7BF36C5E66BE5C0464 /* RDEPUBRuntimeChapter.swift in Sources */, - A4E1287AFDA66235AD864D556D56D867 /* RDEPUBRuntimePageCount.swift in Sources */, - 63A0F02E81586CA14D5EFD53E7E09EC5 /* RDEPUBSafeArea.swift in Sources */, - A17B2DB5E14E8116012BF21BB7721638 /* RDEPUBSearchEngine.swift in Sources */, - A948E3CF55F94BD4F4B4D1D27463F350 /* RDEPUBSearchModels.swift in Sources */, - 03BEC4FA94EF8D1DD1A0D9A1187E0176 /* RDEPUBSelectionLoupeView.swift in Sources */, - EA9AC5EE45C33187D248C64FC46AF85C /* RDEPUBSelectionOverlayView.swift in Sources */, - 6DD5C44F5661E614F21FE810AFB6E8BE /* RDEPUBSelectionState.swift in Sources */, - 328F47247FA2E27D2495C01F1D0729D1 /* RDEPUBSemanticMarkerInjector.swift in Sources */, - EC6CE6065F48F2022717FE73027CF1F9 /* RDEPUBSettingsFlipAutomation.swift in Sources */, - DE1BAA17B95E7CD4F1FFB609726D4616 /* RDEPUBStyleCompatibilityModels.swift in Sources */, - B11B4F2E3F64763587B6C27C0F09E0E8 /* RDEPUBStyleSheetBuilder.swift in Sources */, - 2927A35D1B8067A776EA968F816E7326 /* RDEPUBStyleSheetComposer.swift in Sources */, - 417B820CB812E2EB595D0A260C3C8B43 /* RDEPUBTextAnchor.swift in Sources */, - 49D58CFE47CAF677E9442BC792640A4C /* RDEPUBTextAnnotationOverlay.swift in Sources */, - DB453710016DF142F6E628FFBC4A3C7A /* RDEPUBTextBookBuilder.swift in Sources */, - 1E9FF2DE2C53AD68B7278F808358E763 /* RDEPUBTextBookCache.swift in Sources */, - 5991435101718DD89D53293B2B2CF58E /* RDEPUBTextBookModels.swift in Sources */, - B3D6FFE321D38B8F43578FDBAF537B71 /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */, - 717C9A6838893A778C48AE1A4ADC1D93 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */, - C704ACCB4F169F948102B6D90B81F835 /* RDEPUBTextContentView.swift in Sources */, - 8AC8341ED75EF88F3C8EF4B750ADA8E9 /* RDEPUBTextIndexTable.swift in Sources */, - 8557BEDD77A0FABC469CDA90D3402C2B /* RDEPUBTextLayouter.swift in Sources */, - 102F6AF59C2B2A5C59BE45741F913A37 /* RDEPUBTextLayoutFrame.swift in Sources */, - AC13F15F74244055FDC349A8D8BCD78F /* RDEPUBTextPageBoundaryValidator.swift in Sources */, - 59D84D2F01364873C8C8BAB4C33C2261 /* RDEPUBTextPageDecorationView.swift in Sources */, - E1985223C4218E5241401FCE8E7A3008 /* RDEPUBTextPageRenderView.swift in Sources */, - 86D6DD3DAA214DF9228D219A1C15B12A /* RDEPUBTextPageVerticalJustifier.swift in Sources */, - 6112DAD7FA7F9CDFF6798D061A776AA6 /* RDEPUBTextPaginationInterfaces.swift in Sources */, - 9478E840174081089888DA0CA4AB6F01 /* RDEPUBTextPaginationSupport.swift in Sources */, - BBE45BB7EAE6DC693F8B2D47AD8727E7 /* RDEPUBTextPerformanceSampler.swift in Sources */, - 64F90689CBA4FBC32D6A4D65BAE984A8 /* RDEPUBTextPositionConverter.swift in Sources */, - 1BE507A499436093EC10EC6E72902516 /* RDEPUBTextRenderer.swift in Sources */, - 46F7CEDA8A932C39B2536B68CE3889EE /* RDEPUBTextRendererSupport.swift in Sources */, - D6F1A867D418237980B1B066F777AE36 /* RDEPUBTextSearchEngine.swift in Sources */, - F09A27FF0030DBB58443F1B41F256B86 /* RDEPUBTextSelectionController.swift in Sources */, - 02A66C86950C9DD663C88120E7C09A81 /* RDEPUBTypesettingPipeline.swift in Sources */, - FE1D81BC7577F8C33E5D2164F29F57AD /* RDEPUBViewportTypes.swift in Sources */, - 7528B559334EFD3C17196C52EA4B28F0 /* RDEPUBWebContentView.swift in Sources */, - 5EF29ED9DAD773DB59A8F506A4170C8B /* RDEPUBWebDecorationOverlayView.swift in Sources */, - 0AEAE6D5DA18AA7DF57813BABF4AD048 /* RDEPUBWebView.swift in Sources */, - 1FD443A9AEFF8858D8B039BD378F964D /* RDEPUBWebView+Configuration.swift in Sources */, - 06F1FB0ED2F7B7830C124D239480AD2C /* RDEPUBWebView+FixedLayout.swift in Sources */, - 3B9A2BDE8A4970A10A72EF271D89773B /* RDEPUBWebView+JavaScriptBridge.swift in Sources */, - B604DFE0CDD1FAA2DFED73DD0EE1A31A /* RDEPUBWebView+Reflowable.swift in Sources */, - 4CE2C34EB81CD8336960B667033A6325 /* RDEPUBWebView+Search.swift in Sources */, - F425E895C294B7E62878166C248F073A /* RDEPUBWebViewDebug.swift in Sources */, - 24152828C7910BA76155AD09435B0326 /* RDPlainTextBookBuilder.swift in Sources */, - 139CF8823D81F64DAE0E06F777B9C4CD /* RDReaderContentCell.swift in Sources */, - 71D61645B7F86868B09D2D8628FB02DB /* RDReaderFlowLayout.swift in Sources */, - 9312AA458DE13E4AAA10D6E6F063F30C /* RDReaderGestureController.swift in Sources */, - AA7761395401FB118FB850405492811D /* RDReaderPageChildViewController.swift in Sources */, - 8FC3334B09D284CB92164B6109124472 /* RDReaderPagingController.swift in Sources */, - 11D3A99648318629F6FB214C405A81E2 /* RDReaderPreloadController.swift in Sources */, - 3A3A957A1CEC0FF2100DC093C5B0BF81 /* RDReaderSpreadResolver.swift in Sources */, - EA75620DF32C36B44E170275F2551BB5 /* RDReaderTapRegionHandler.swift in Sources */, - E355E9E35DEEF09E5F05A76BCBBC35F6 /* RDReaderView.swift in Sources */, - A4B441D1E79D04445DAFA6865FFE41D9 /* RDReaderView+CollectionView.swift in Sources */, - 20805FA52C28B4FBEF32D3F55FA8C015 /* RDReaderView+ContentAccess.swift in Sources */, - 9968BDA6D208A701E8014B01B9683683 /* RDReaderView+PageCurl.swift in Sources */, - 81B117A37A8476877A9F52EB0E1519F7 /* RDReaderView+ToolView.swift in Sources */, - D4E5594D3EC3FFEFD78C4867AD0671CD /* RDReaderView-dummy.m in Sources */, - 7C12C095DE7472FF95E05E35601C3988 /* RDReaderViewProtocols.swift in Sources */, - 6F0D1C67B483AE83D93F884A04CF6EC8 /* RDURLReaderController.swift in Sources */, - 3C5E435F6F4211B7A41CC9B6CC9FA413 /* String+RDEPUB.swift in Sources */, - 5FD041841462D5467C316ABFECA32B75 /* UIColor+RDEPUB.swift in Sources */, - 1BBEC939F5D35EEDA2A20D8CE4244A82 /* UIColor+RDEPUBHex.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F24E4D34625539789AB8B2F3895D5A91 /* Sources */ = { + E87E209F22953FDB1FA30CBD4C105B70 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -2642,90 +2646,72 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 0F35B7A6F968F4851B3CFF623AA5BE5E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ZIPFoundation; - target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; - targetProxy = 02DA505711474C0FACBA3A4EF92D0255 /* PBXContainerItemProxy */; - }; - 13017820CBB8EDED04D3E425991B4678 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DTCoreText; - target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; - targetProxy = C06FCB07200CA15988CA2E58AE3B4525 /* PBXContainerItemProxy */; - }; - 3510572C3D091C0935798461FB6C5A92 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "RDReaderView-RDReaderViewAssets"; - target = AE7F393FB7805DE2664AB4111873F907 /* RDReaderView-RDReaderViewAssets */; - targetProxy = 8AA2F6A6BF24C94B6D48B63672A15FC1 /* PBXContainerItemProxy */; - }; - 56B80CB8423A9ED18F79266879B187A0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "DTCoreText-Resources"; - target = 0C24CB0E87A728A11AA1124CB360D6A1 /* DTCoreText-Resources */; - targetProxy = 18EB355BC8F480499E2AE3151AC106F3 /* PBXContainerItemProxy */; - }; - 7EDFE31368D3022A0894D67822D94E7D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DTCoreText; - target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; - targetProxy = A1FE9FFEAB3A0F41D3FD0AC3841AF317 /* PBXContainerItemProxy */; - }; - 810473C0D4E1B245A6211882D9B2E72E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DTFoundation; - target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; - targetProxy = 80521E27CBC7CED78A3F5097ABF137C3 /* PBXContainerItemProxy */; - }; - 848C3FDDD1BF09AFA5AED03B23F97647 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RDReaderView; - target = AA2E57587AA8EECA63C4BE08EA3CB6D2 /* RDReaderView */; - targetProxy = AF23E97E0F7EF7C4C8ED414CE73B904B /* PBXContainerItemProxy */; - }; - 9F03EAA11BE008FBE83FA704A5ABBDD4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ZIPFoundation; - target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; - targetProxy = 7A2462400BEFE0B87FFF91506C70323F /* PBXContainerItemProxy */; - }; - DF4396E81D96CDBD5613B205C5B8EDBE /* PBXTargetDependency */ = { + 1805BE409736183E0B49DFCC39540C5C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "ZIPFoundation-ZIPFoundation_Privacy"; target = C7A8D82E407CD3FDC3BA55CEE519B252 /* ZIPFoundation-ZIPFoundation_Privacy */; - targetProxy = 8C68FC6E1E8C08E748DEFB91D8C9C468 /* PBXContainerItemProxy */; + targetProxy = 4CE1E333EFC7D126BF846EF5DE95196A /* PBXContainerItemProxy */; }; - E450D34CBA00FFF4FE9AAF797684BACD /* PBXTargetDependency */ = { + 24052366F14D3992556E6F97AA286A3A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DTFoundation; target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; - targetProxy = 52128B73E472B44C45E232AF6CE036D8 /* PBXContainerItemProxy */; + targetProxy = 674A6C9D96CA4E77FB1BCC2935DFFB9B /* PBXContainerItemProxy */; + }; + 4CFED76A0A1A22C8A8FD651F035A784B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DTFoundation; + target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; + targetProxy = 6E4C6A0099934171BD974B9C968C0A63 /* PBXContainerItemProxy */; + }; + 5BBEE4C1588D98D7C94381D276C62D46 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DTCoreText; + target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; + targetProxy = 3C5DCECE0CCBBBF11E32FCD89FF41FC4 /* PBXContainerItemProxy */; + }; + ABD8515E56FA7B271D38BF38721AE20C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DTCoreText; + target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; + targetProxy = C954E4173D45F863B74E03CA5AD6E923 /* PBXContainerItemProxy */; + }; + AE56B2245E723DA83C8905741493BCE4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ZIPFoundation; + target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; + targetProxy = F909F14D649B5BB80A2737493D561E58 /* PBXContainerItemProxy */; + }; + D8D6955B3296868715229C88935F151F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "RDReaderView-RDReaderViewAssets"; + target = AE7F393FB7805DE2664AB4111873F907 /* RDReaderView-RDReaderViewAssets */; + targetProxy = 0FA9693685F9460B99920356EF985291 /* PBXContainerItemProxy */; + }; + DE39752D3149CB2559D8B208E8202F5F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ZIPFoundation; + target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; + targetProxy = B93E0318F913C2A3AEC5E3871123DE60 /* PBXContainerItemProxy */; + }; + E63DB2D02A62DA3E6AD23FCE3DB11A0A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RDReaderView; + target = AA2E57587AA8EECA63C4BE08EA3CB6D2 /* RDReaderView */; + targetProxy = B2B3B1D10F4029AF72458869308C4EC4 /* PBXContainerItemProxy */; + }; + ED3F8BF6E64575FD64AB29CD5E7F325C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "DTCoreText-Resources"; + target = 0C24CB0E87A728A11AA1124CB360D6A1 /* DTCoreText-Resources */; + targetProxy = F8919A621AEA917EC6FFE71CAB71613A /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 00CBEBEEF4812BF939DDD68BFAA553C3 /* Release */ = { + 17B4D7D64BBE5CC48D15CDC3448A3E18 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 766227355308600EFC048F797274454A /* ZIPFoundation.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ZIPFoundation"; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = ZIPFoundation; - INFOPLIST_FILE = "Target Support Files/ZIPFoundation/ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = ZIPFoundation_Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 0BA75AA6375A3A7711FFA9163EDDEBF1 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */; + baseConfigurationReference = 7503926237A4785CCB864B2BCD1F4C2B /* DTFoundation.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2738,9 +2724,9 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/RDReaderView/RDReaderView-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/DTFoundation/DTFoundation-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/RDReaderView/RDReaderView-Info.plist"; + INFOPLIST_FILE = "Target Support Files/DTFoundation/DTFoundation-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( @@ -2748,53 +2734,14 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/RDReaderView/RDReaderView.modulemap"; - PRODUCT_MODULE_NAME = RDReaderView; - PRODUCT_NAME = RDReaderView; + MODULEMAP_FILE = "Target Support Files/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.10; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 0F796F20D430BBFF77DBE545A9350006 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2B73CF24646475E517B8FDF110972E77 /* 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; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2841,17 +2788,17 @@ }; name = Debug; }; - 27252DEAFE967C5685F227356ADD1558 /* Debug */ = { + 3BA9B2F5A8D3CBF0B4DF32C1B766D08C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C0DCB00F0B62D7DBE628D2B5FF006E93 /* DTCoreText.debug.xcconfig */; + baseConfigurationReference = 79D13938A04579CD1E9E042A39CC4D86 /* ZIPFoundation.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DTCoreText"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ZIPFoundation"; ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = DTCoreText; - INFOPLIST_FILE = "Target Support Files/DTCoreText/ResourceBundle-Resources-DTCoreText-Info.plist"; + IBSC_MODULE = ZIPFoundation; + INFOPLIST_FILE = "Target Support Files/ZIPFoundation/ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = Resources; + PRODUCT_NAME = ZIPFoundation_Privacy; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -2859,64 +2806,6 @@ }; name = Debug; }; - 29D0F93BD997527F3220EEA5A0D30B9F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7A13F9221A300A89F9F8D0A2AB1794BF /* 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; - }; - 326E4B88C73F0E99968C5D4AA408C577 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7503926237A4785CCB864B2BCD1F4C2B /* 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; - }; 44A4B2FB6211B90C1949A44A381F6D1F /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2980,64 +2869,7 @@ }; name = Release; }; - 468DF719CF5DDCF9B790B92B47A6A269 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/RDReaderView"; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = RDReaderView; - INFOPLIST_FILE = "Target Support Files/RDReaderView/ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = RDReaderViewAssets; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 8B4FD571F07412F16A40D6261D66C62A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 85E8DA9DE1F796F12171763D20CBAF27 /* DTFoundation.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/DTFoundation/DTFoundation-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/DTFoundation/DTFoundation-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/DTFoundation/DTFoundation.modulemap"; - PRODUCT_MODULE_NAME = DTFoundation; - PRODUCT_NAME = DTFoundation; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 8D890CBE67F4467AD2BE0C6D10A6B131 /* Debug */ = { + 573132E12BF0BBFCADCC31CAEA2B91F3 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 79D13938A04579CD1E9E042A39CC4D86 /* ZIPFoundation.debug.xcconfig */; buildSettings = { @@ -3076,7 +2908,122 @@ }; name = Debug; }; - 9AC73D49C3F64C746BA6882B99BF1770 /* Release */ = { + 5850CB856BC076AE36CA91C91F0C93DC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C0DCB00F0B62D7DBE628D2B5FF006E93 /* DTCoreText.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DTCoreText"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + IBSC_MODULE = DTCoreText; + INFOPLIST_FILE = "Target Support Files/DTCoreText/ResourceBundle-Resources-DTCoreText-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + PRODUCT_NAME = Resources; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 5E6B92F3338CD3552B67A646DC9310AB /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 766227355308600EFC048F797274454A /* ZIPFoundation.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ZIPFoundation"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + IBSC_MODULE = ZIPFoundation; + INFOPLIST_FILE = "Target Support Files/ZIPFoundation/ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + PRODUCT_NAME = ZIPFoundation_Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 6B8D15C2323C9CEB06683FA2BB7292A3 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 766227355308600EFC048F797274454A /* 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; + }; + 752CBC115FEF9C360E2D79175E431F2B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/RDReaderView/RDReaderView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/RDReaderView/RDReaderView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/RDReaderView/RDReaderView.modulemap"; + PRODUCT_MODULE_NAME = RDReaderView; + PRODUCT_NAME = RDReaderView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.10; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 7DDFE4EA35ABA9FF8E941CB15B67E7A3 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 2B73CF24646475E517B8FDF110972E77 /* RDReaderView.release.xcconfig */; buildSettings = { @@ -3094,6 +3041,24 @@ }; name = Release; }; + 871352A56D590AB22C822711DC9F16B5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/RDReaderView"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + IBSC_MODULE = RDReaderView; + INFOPLIST_FILE = "Target Support Files/RDReaderView/ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + PRODUCT_NAME = RDReaderViewAssets; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; A0DC1C2C814704734F83EAB35BB20B21 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3240,6 +3205,45 @@ }; name = Debug; }; + AFA9CB5C91312E658A18BABD92E15253 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 85E8DA9DE1F796F12171763D20CBAF27 /* DTFoundation.debug.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/DTFoundation/DTFoundation-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/DTFoundation/DTFoundation-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/DTFoundation/DTFoundation.modulemap"; + PRODUCT_MODULE_NAME = DTFoundation; + PRODUCT_NAME = DTFoundation; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; C9A3C41671C64664CEDC2482C0D7591C /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1AD502A1FA6EB1E38200B5283F979504 /* Pods-ReadViewDemo.release.xcconfig */; @@ -3280,9 +3284,27 @@ }; name = Release; }; - D78759B2779583701BA71321BA60BFA1 /* Release */ = { + DEFF526438A995A382462D8858801F12 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 766227355308600EFC048F797274454A /* ZIPFoundation.release.xcconfig */; + baseConfigurationReference = 7A13F9221A300A89F9F8D0A2AB1794BF /* 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; + }; + FD24A5A68EC5F039D9507978BFE53B5E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2B73CF24646475E517B8FDF110972E77 /* RDReaderView.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3295,9 +3317,9 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/RDReaderView/RDReaderView-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/ZIPFoundation/ZIPFoundation-Info.plist"; + INFOPLIST_FILE = "Target Support Files/RDReaderView/RDReaderView-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( @@ -3305,14 +3327,14 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/ZIPFoundation/ZIPFoundation.modulemap"; - PRODUCT_MODULE_NAME = ZIPFoundation; - PRODUCT_NAME = ZIPFoundation; + 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.0; + SWIFT_VERSION = 5.10; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -3320,24 +3342,6 @@ }; name = Release; }; - ED88A183DDFD966990358C797AE49835 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 79D13938A04579CD1E9E042A39CC4D86 /* ZIPFoundation.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ZIPFoundation"; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = ZIPFoundation; - INFOPLIST_FILE = "Target Support Files/ZIPFoundation/ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = ZIPFoundation_Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -3350,24 +3354,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2EB4E348D6C06E5B54C3793ADD214E92 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ED88A183DDFD966990358C797AE49835 /* Debug */, - 00CBEBEEF4812BF939DDD68BFAA553C3 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 350964E28EE2995CFB345B0F2D849AAD /* Build configuration list for PBXNativeTarget "ZIPFoundation" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8D890CBE67F4467AD2BE0C6D10A6B131 /* Debug */, - D78759B2779583701BA71321BA60BFA1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -3377,11 +3363,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6AB8AE550E34BCAFC466012ECCE97CBF /* Build configuration list for PBXNativeTarget "RDReaderView" */ = { + 518A8AFAE744B5C934477065A093DD03 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0BA75AA6375A3A7711FFA9163EDDEBF1 /* Debug */, - 0F796F20D430BBFF77DBE545A9350006 /* Release */, + 3BA9B2F5A8D3CBF0B4DF32C1B766D08C /* Debug */, + 5E6B92F3338CD3552B67A646DC9310AB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3395,29 +3381,47 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BABDDD715D4526AF32440E6D7F4E0939 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */ = { + A87924AD6CFC26096ACAC6E8C270E40C /* Build configuration list for PBXNativeTarget "DTFoundation" */ = { isa = XCConfigurationList; buildConfigurations = ( - 468DF719CF5DDCF9B790B92B47A6A269 /* Debug */, - 9AC73D49C3F64C746BA6882B99BF1770 /* Release */, + AFA9CB5C91312E658A18BABD92E15253 /* Debug */, + 17B4D7D64BBE5CC48D15CDC3448A3E18 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C296629277AC266234A0245A9519C90A /* Build configuration list for PBXNativeTarget "DTFoundation" */ = { + AB6CC5129229FA51901566E3484E6E29 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8B4FD571F07412F16A40D6261D66C62A /* Debug */, - 326E4B88C73F0E99968C5D4AA408C577 /* Release */, + 5850CB856BC076AE36CA91C91F0C93DC /* Debug */, + DEFF526438A995A382462D8858801F12 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - FD102F73C9F0A5254C57BBBB0F991964 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */ = { + B36E390C233796AF3616DEDF3A8E3702 /* Build configuration list for PBXNativeTarget "RDReaderView" */ = { isa = XCConfigurationList; buildConfigurations = ( - 27252DEAFE967C5685F227356ADD1558 /* Debug */, - 29D0F93BD997527F3220EEA5A0D30B9F /* Release */, + 752CBC115FEF9C360E2D79175E431F2B /* Debug */, + FD24A5A68EC5F039D9507978BFE53B5E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C0974D194616F16177BEDFB3D7C054F0 /* Build configuration list for PBXNativeTarget "ZIPFoundation" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 573132E12BF0BBFCADCC31CAEA2B91F3 /* Debug */, + 6B8D15C2323C9CEB06683FA2BB7292A3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E388A68950BE869243115F12D29275E6 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 871352A56D590AB22C822711DC9F16B5 /* Debug */, + 7DDFE4EA35ABA9FF8E941CB15B67E7A3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBookBuilder.swift b/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBookBuilder.swift index 8ca468a..a57f381 100644 --- a/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBookBuilder.swift +++ b/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBookBuilder.swift @@ -291,7 +291,6 @@ public final class RDEPUBTextBookBuilder { pageIndexInChapter: localPageIndex, totalPagesInChapter: effectiveFrames.count, chapterContent: chapterAttributedContent, - content: content.attributedSubstring(from: range), contentRange: range, pageStartOffset: range.location, pageEndOffset: range.location + max(range.length - 1, 0), diff --git a/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBookModels.swift b/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBookModels.swift index 3f7f0e6..bf24607 100644 --- a/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBookModels.swift +++ b/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBookModels.swift @@ -54,7 +54,15 @@ public struct RDEPUBTextPage: Equatable { public var chapterContent: NSAttributedString - public var content: NSAttributedString + /// Page substring derived on demand from `chapterContent` + `contentRange`. + /// Not stored: keeping a per-page substring alive roughly doubles the + /// chapter's resident text memory across the chapter cache window. + public var content: NSAttributedString { + let bounds = NSRange(location: 0, length: chapterContent.length) + let clamped = NSIntersectionRange(contentRange, bounds) + guard clamped.length > 0 else { return NSAttributedString() } + return chapterContent.attributedSubstring(from: clamped) + } public var contentRange: NSRange diff --git a/Sources/RDReaderView/EPUBTextRendering/RDPlainTextBookBuilder.swift b/Sources/RDReaderView/EPUBTextRendering/RDPlainTextBookBuilder.swift index ad59ea0..9de6591 100644 --- a/Sources/RDReaderView/EPUBTextRendering/RDPlainTextBookBuilder.swift +++ b/Sources/RDReaderView/EPUBTextRendering/RDPlainTextBookBuilder.swift @@ -75,7 +75,6 @@ public final class RDPlainTextBookBuilder { pageIndexInChapter: localPageIndex, totalPagesInChapter: effectiveFrames.count, chapterContent: chapterAttributedContent, - content: content.attributedSubstring(from: range), contentRange: range, pageStartOffset: range.location, pageEndOffset: range.location + max(range.length - 1, 0), diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+DataSource.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+DataSource.swift index 675a4c7..f9692c9 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+DataSource.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+DataSource.swift @@ -345,6 +345,7 @@ extension RDEPUBReaderController: RDReaderDataSource, RDReaderPageProvider, RDRe } public func pageNum(readerView: RDReaderView, pageNum: Int) { + RDEPUBMemoryProbe.logPageTurn() readerContext.markUserNavigationActivity() updateCurrentSelection(nil) reconcileTextPaginationSizeIfNeeded(for: pageNum) diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift index 6452688..43b7667 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift @@ -297,6 +297,9 @@ public final class RDEPUBReaderController: UIViewController { public override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) runtime.viewportMonitor.viewWillTransition(with: coordinator) + coordinator.animate(alongsideTransition: nil) { _ in + RDEPUBMemoryProbe.log("orientationTransition size=\(Int(size.width))x\(Int(size.height))") + } } func showSearchBar() { diff --git a/Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterLoader.swift b/Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterLoader.swift index 687fd51..a4428c7 100644 --- a/Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterLoader.swift +++ b/Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterLoader.swift @@ -491,7 +491,6 @@ final class RDEPUBChapterLoader { ) -> [RDEPUBTextPage] { let totalPageCount = pageRanges.count return pageRanges.enumerated().map { (pageIndex, range) in - let pageContent = typesetString.attributedSubstring(from: range) let metadata: RDEPUBTextPageMetadata if let metaList = metadataSource, pageIndex < metaList.count { @@ -513,7 +512,6 @@ final class RDEPUBChapterLoader { pageIndexInChapter: pageIndex, totalPagesInChapter: totalPageCount, chapterContent: typesetString, - content: pageContent, contentRange: range, pageStartOffset: range.location, pageEndOffset: range.location + range.length - 1, diff --git a/Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterRuntimeStore.swift b/Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterRuntimeStore.swift index a0d2689..e4166d1 100644 --- a/Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterRuntimeStore.swift +++ b/Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterRuntimeStore.swift @@ -62,6 +62,7 @@ final class RDEPUBChapterRuntimeStore { func insertChapter(_ chapter: RDEPUBRuntimeChapter) { chapterDataCache[chapter.spineIndex] = chapter + RDEPUBMemoryProbe.log("chapterLoaded spine=\(chapter.spineIndex) pages=\(chapter.pages.count)") } func insertPageCount(_ pc: RDEPUBRuntimePageCount, for key: RDEPUBChapterCacheKey) { @@ -188,6 +189,7 @@ final class RDEPUBChapterRuntimeStore { } func invalidateAllForSettingsChange() { + RDEPUBMemoryProbe.log("settingsChangeInvalidateAll") chapterDataCache.removeAll() pageCountCache.removeAll() imageCache.removeAllObjects() diff --git a/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBMemoryProbe.swift b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBMemoryProbe.swift new file mode 100644 index 0000000..140b72a --- /dev/null +++ b/Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBMemoryProbe.swift @@ -0,0 +1,43 @@ +import Foundation + +/// Memory footprint probe for the long-chapter optimization work +/// (Doc/LONG_CHAPTER_MEMORY_OPTIMIZATION_PLAN.md, P0-2). Enabled with the +/// `--demo-memory-probe` launch argument; logs phys_footprint at chapter +/// load, every 20 page turns, settings invalidation, and rotation. +enum RDEPUBMemoryProbe { + + static let isEnabled = ProcessInfo.processInfo.arguments.contains("--demo-memory-probe") + + private static let pageTurnLogStride = 20 + + /// Main-thread only (page turns are delivered on main). + private static var pageTurnCount = 0 + + static func logPageTurn() { + guard isEnabled else { return } + pageTurnCount += 1 + guard pageTurnCount % pageTurnLogStride == 0 else { return } + log("pageTurn count=\(pageTurnCount)") + } + + static func log(_ event: String) { + guard isEnabled else { return } + let megabytes = Double(currentFootprint()) / 1_048_576 + print(String(format: "[EPUB][MemoryProbe] %@ footprint=%.1fMB", event, megabytes)) + } + + /// phys_footprint matches the value Xcode's memory gauge and Jetsam use. + private static func currentFootprint() -> UInt64 { + var info = task_vm_info_data_t() + var count = mach_msg_type_number_t( + MemoryLayout.size / MemoryLayout.size + ) + let result = withUnsafeMutablePointer(to: &info) { pointer in + pointer.withMemoryRebound(to: integer_t.self, capacity: Int(count)) { + task_info(mach_task_self_, task_flavor_t(TASK_VM_INFO), $0, &count) + } + } + guard result == KERN_SUCCESS else { return 0 } + return info.phys_footprint + } +} diff --git a/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift index c9213ee..5af723d 100644 --- a/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift +++ b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift @@ -322,6 +322,9 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader // layouter alive for the visible page. Avoid reader-level page // caching so preloading does not retain several full-chapter // display copies at once. + // Do NOT relax this until chapter-level shared display content + // lands (LONG_CHAPTER_MEMORY_OPTIMIZATION_PLAN.md P1-1): cached + // pages would each pin their own full-chapter copy again. return currentPage == nil || loadingSpinner.isAnimating || coreTextDisplayContent != nil