From d574182374eddf493e6d2762103298027408d24e Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Mon, 27 Apr 2026 18:45:30 +0200 Subject: [PATCH] Markdown improvements --- Telegram/BUILD | 1 - .../BrowserUI/Sources/BrowserMarkdown.swift | 1163 +- .../Sources/BrowserReadability.swift | 8 + submodules/Display/Source/Font.swift | 4 +- submodules/InstantPageUI/BUILD | 1 + .../Sources/InstantPageFormulaItem.swift | 185 + .../Sources/InstantPageLayout.swift | 31 + .../Sources/InstantPageLayoutSpacings.swift | 18 + .../Sources/InstantPageMath.swift | 79 + .../Sources/InstantPageTextItem.swift | 272 +- .../Sources/InstantPageTextStyleStack.swift | 1 + submodules/LegacyComponents/Sources/TGFont.mm | 10 +- .../Models/InstantPageBlock.fbs | 7 +- .../FlatSerialization/Models/RichText.fbs | 9 +- .../SyncCore/SyncCore_InstantPage.swift | 24 + .../Sources/SyncCore/SyncCore_RichText.swift | 26 + .../Fonts/SFCompactRounded-Semibold.otf | Bin 193812 -> 0 bytes .../Resources/Fonts/latinmodern-math.otf | Bin 0 -> 733736 bytes .../Resources/Fonts/latinmodern-math.plist | Bin 0 -> 65067 bytes third-party/SwiftMath/BUILD | 18 + third-party/SwiftMath/LICENSE | 21 + third-party/SwiftMath/README.md | 714 ++ .../MathBundle/MTFontMathTableV2.swift | 194 + .../Sources/MathBundle/MTFontV2.swift | 68 + .../Sources/MathBundle/MathFont.swift | 225 + .../Sources/MathBundle/MathImage.swift | 123 + .../Sources/MathRender/MTBezierPath.swift | 35 + .../Sources/MathRender/MTColor.swift | 28 + .../Sources/MathRender/MTConfig.swift | 40 + .../SwiftMath/Sources/MathRender/MTFont.swift | 81 + .../Sources/MathRender/MTFontManager.swift | 93 + .../Sources/MathRender/MTFontMathTable.swift | 355 + .../Sources/MathRender/MTLabel.swift | 37 + .../MathRender/MTMathAtomFactory.swift | 1141 ++ .../Sources/MathRender/MTMathImage.swift | 117 + .../Sources/MathRender/MTMathList.swift | 1058 ++ .../MathRender/MTMathListBuilder.swift | 1613 +++ .../MathRender/MTMathListDisplay.swift | 881 ++ .../Sources/MathRender/MTMathListIndex.swift | 197 + .../Sources/MathRender/MTMathRenderer.swift | 83 + .../Sources/MathRender/MTMathUILabel.swift | 587 ++ .../MTTypesetter+Tokenization.swift | 68 + .../Sources/MathRender/MTTypesetter.swift | 1927 ++++ .../Sources/MathRender/MTUnicode.swift | 89 + .../SwiftMath/Sources/MathRender/RWLock.swift | 58 + .../Tokenization/MTAtomTokenizer.swift | 1145 ++ .../Tokenization/MTBreakableElement.swift | 115 + .../Tokenization/MTDisplayGenerator.swift | 389 + .../Tokenization/MTDisplayPreRenderer.swift | 88 + .../MTElementWidthCalculator.swift | 165 + .../Tokenization/MTLineFitter.swift | 266 + .../Sources/mathFonts.bundle/Asana-Math.otf | Bin 0 -> 433528 bytes .../Sources/mathFonts.bundle/Asana-Math.plist | 4343 ++++++++ .../Sources/mathFonts.bundle/Euler-Math.otf | Bin 0 -> 428792 bytes .../Sources/mathFonts.bundle/Euler-Math.plist | 2165 ++++ .../mathFonts.bundle/FiraMath-Regular.otf | Bin 0 -> 179840 bytes .../mathFonts.bundle/FiraMath-Regular.plist | 3064 ++++++ .../mathFonts.bundle/GUST-FONT-LICENSE.txt | 30 + .../mathFonts.bundle/Garamond-Math.otf | Bin 0 -> 823988 bytes .../mathFonts.bundle/Garamond-Math.plist | 7910 ++++++++++++++ .../Sources/mathFonts.bundle/KpMath-Light.otf | Bin 0 -> 451008 bytes .../mathFonts.bundle/KpMath-Light.plist | 6501 ++++++++++++ .../Sources/mathFonts.bundle/KpMath-Sans.otf | Bin 0 -> 293084 bytes .../mathFonts.bundle/KpMath-Sans.plist | 4539 ++++++++ .../Sources/mathFonts.bundle/LICENSE | 21 + .../Sources/mathFonts.bundle/LeteSansMath.otf | Bin 0 -> 440268 bytes .../mathFonts.bundle/LeteSansMath.plist | 5393 ++++++++++ .../LibertinusMath-Regular.otf | Bin 0 -> 588848 bytes .../LibertinusMath-Regular.plist | 4276 ++++++++ .../mathFonts.bundle/NotoSansMath-Regular.otf | Bin 0 -> 498408 bytes .../NotoSansMath-Regular.plist | 9356 +++++++++++++++++ .../Sources/mathFonts.bundle/OFL.txt | 103 + .../mathFonts.bundle/latinmodern-math.otf | Bin 0 -> 733736 bytes .../mathFonts.bundle/latinmodern-math.plist | Bin 0 -> 65067 bytes .../mathFonts.bundle/math_table_to_plist.py | 205 + .../mathFonts.bundle/texgyretermes-math.otf | Bin 0 -> 532404 bytes .../mathFonts.bundle/texgyretermes-math.plist | Bin 0 -> 58011 bytes .../Sources/mathFonts.bundle/xits-math.otf | Bin 0 -> 538696 bytes .../Sources/mathFonts.bundle/xits-math.plist | 6599 ++++++++++++ 79 files changed, 68205 insertions(+), 158 deletions(-) create mode 100644 submodules/InstantPageUI/Sources/InstantPageFormulaItem.swift create mode 100644 submodules/InstantPageUI/Sources/InstantPageMath.swift delete mode 100644 submodules/TelegramUI/Resources/Fonts/SFCompactRounded-Semibold.otf create mode 100755 submodules/TelegramUI/Resources/Fonts/latinmodern-math.otf create mode 100755 submodules/TelegramUI/Resources/Fonts/latinmodern-math.plist create mode 100644 third-party/SwiftMath/BUILD create mode 100755 third-party/SwiftMath/LICENSE create mode 100644 third-party/SwiftMath/README.md create mode 100755 third-party/SwiftMath/Sources/MathBundle/MTFontMathTableV2.swift create mode 100755 third-party/SwiftMath/Sources/MathBundle/MTFontV2.swift create mode 100644 third-party/SwiftMath/Sources/MathBundle/MathFont.swift create mode 100755 third-party/SwiftMath/Sources/MathBundle/MathImage.swift create mode 100755 third-party/SwiftMath/Sources/MathRender/MTBezierPath.swift create mode 100755 third-party/SwiftMath/Sources/MathRender/MTColor.swift create mode 100755 third-party/SwiftMath/Sources/MathRender/MTConfig.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/MTFont.swift create mode 100755 third-party/SwiftMath/Sources/MathRender/MTFontManager.swift create mode 100755 third-party/SwiftMath/Sources/MathRender/MTFontMathTable.swift create mode 100755 third-party/SwiftMath/Sources/MathRender/MTLabel.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/MTMathAtomFactory.swift create mode 100755 third-party/SwiftMath/Sources/MathRender/MTMathImage.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/MTMathList.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/MTMathListBuilder.swift create mode 100755 third-party/SwiftMath/Sources/MathRender/MTMathListDisplay.swift create mode 100755 third-party/SwiftMath/Sources/MathRender/MTMathListIndex.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/MTMathRenderer.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/MTMathUILabel.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/MTTypesetter+Tokenization.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/MTTypesetter.swift create mode 100755 third-party/SwiftMath/Sources/MathRender/MTUnicode.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/RWLock.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/Tokenization/MTAtomTokenizer.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/Tokenization/MTBreakableElement.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/Tokenization/MTDisplayGenerator.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/Tokenization/MTDisplayPreRenderer.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/Tokenization/MTElementWidthCalculator.swift create mode 100644 third-party/SwiftMath/Sources/MathRender/Tokenization/MTLineFitter.swift create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/Asana-Math.otf create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/Asana-Math.plist create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/Euler-Math.otf create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/Euler-Math.plist create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/FiraMath-Regular.otf create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/FiraMath-Regular.plist create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/GUST-FONT-LICENSE.txt create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/Garamond-Math.otf create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/Garamond-Math.plist create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/KpMath-Light.otf create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/KpMath-Light.plist create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/KpMath-Sans.otf create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/KpMath-Sans.plist create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/LICENSE create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/LeteSansMath.otf create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/LeteSansMath.plist create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/LibertinusMath-Regular.otf create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/LibertinusMath-Regular.plist create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/NotoSansMath-Regular.otf create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/NotoSansMath-Regular.plist create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/OFL.txt create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/latinmodern-math.otf create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/latinmodern-math.plist create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/math_table_to_plist.py create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/texgyretermes-math.otf create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/texgyretermes-math.plist create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/xits-math.otf create mode 100755 third-party/SwiftMath/Sources/mathFonts.bundle/xits-math.plist diff --git a/Telegram/BUILD b/Telegram/BUILD index bdff4b5f74..22655f3a9b 100644 --- a/Telegram/BUILD +++ b/Telegram/BUILD @@ -1635,7 +1635,6 @@ plist_fragment( UIAppFonts - SFCompactRounded-Semibold.otf AremacFS-Regular.otf AremacFS-Semibold.otf diff --git a/submodules/BrowserUI/Sources/BrowserMarkdown.swift b/submodules/BrowserUI/Sources/BrowserMarkdown.swift index c6f23b1907..17dbb5dc35 100644 --- a/submodules/BrowserUI/Sources/BrowserMarkdown.swift +++ b/submodules/BrowserUI/Sources/BrowserMarkdown.swift @@ -22,14 +22,221 @@ private let markdownDefaultBlockImageDimensions = PixelDimensions(width: 1200, h private let markdownDefaultInlineImageDimensions = PixelDimensions(width: 18, height: 18) private let markdownTaskListUncheckedNumber = "\u{001f}tg-md-task:unchecked" private let markdownTaskListCheckedNumber = "\u{001f}tg-md-task:checked" +private let markdownRawHTMLTagRegex = try! NSRegularExpression(pattern: #"]*?>"#) +private let markdownFormulaPlaceholderRegex = try! NSRegularExpression(pattern: #"TGMDMATH\d+TGMD"#) +private let markdownVoidHTMLTags: Set = [ + "area", + "base", + "br", + "col", + "embed", + "hr", + "img", + "input", + "link", + "meta", + "param", + "source", + "track", + "wbr" +] + +private struct MarkdownSafetyLimits { + let maxFileSize = 2_097_152 + let maxLineLength = 32_768 + let maxBlockquoteDepth = 64 + let maxListIndent = 96 + let maxRawHTMLTagCount = 8_000 + let maxRawHTMLNestingDepth = 64 + let maxAttributedStringLength = 400_000 + let maxAttributeRuns = 20_000 + let maxPresentationIntentDepth = 128 + let maxIntentNodes = 10_000 + let maxEmittedBlocks = 5_000 + let maxTableColumns = 32 + let maxTableCells = 2_000 + let maxMediaItems = 100 + let maxInlineHTMLStyleDepth = 32 + let maxDataImageBytes = 2_097_152 + let maxDataImagePixelCount = 12_000_000 + let maxFormulas = 200 + let maxFormulaSourceCharacters = 20_000 + let maxInlineFormulaLength = 256 + let maxBlockFormulaLength = 4_096 +} + +private let markdownSafetyLimits = MarkdownSafetyLimits() + +private final class MarkdownConversionBudget { + let limits: MarkdownSafetyLimits + + private(set) var isExceeded = false + + private var attributeRunCount = 0 + private var intentNodeCount = 0 + private var tableCellCount = 0 + private var mediaItemCount = 0 + + init(limits: MarkdownSafetyLimits) { + self.limits = limits + } + + @discardableResult + func fail() -> Bool { + self.isExceeded = true + return false + } + + @discardableResult + func registerAttributedStringLength(_ length: Int) -> Bool { + guard length <= self.limits.maxAttributedStringLength else { + return self.fail() + } + return true + } + + @discardableResult + func registerAttributeRun() -> Bool { + self.attributeRunCount += 1 + guard self.attributeRunCount <= self.limits.maxAttributeRuns else { + return self.fail() + } + return true + } + + @discardableResult + func registerPresentationIntentDepth(_ depth: Int) -> Bool { + guard depth <= self.limits.maxPresentationIntentDepth else { + return self.fail() + } + return true + } + + @discardableResult + func registerIntentNode() -> Bool { + self.intentNodeCount += 1 + guard self.intentNodeCount <= self.limits.maxIntentNodes else { + return self.fail() + } + return true + } + + @discardableResult + func registerBlockDepth(_ depth: Int) -> Bool { + guard depth <= self.limits.maxPresentationIntentDepth else { + return self.fail() + } + return true + } + + @discardableResult + func registerTableColumns(_ count: Int) -> Bool { + guard count <= self.limits.maxTableColumns else { + return self.fail() + } + return true + } + + @discardableResult + func registerTableCells(_ count: Int) -> Bool { + self.tableCellCount += count + guard self.tableCellCount <= self.limits.maxTableCells else { + return self.fail() + } + return true + } + + @discardableResult + func registerMediaItem() -> Bool { + self.mediaItemCount += 1 + guard self.mediaItemCount <= self.limits.maxMediaItems else { + return self.fail() + } + return true + } + + @discardableResult + func registerInlineHTMLStyleDepth(_ depth: Int) -> Bool { + guard depth <= self.limits.maxInlineHTMLStyleDepth else { + return self.fail() + } + return true + } + + @discardableResult + func validateFinalBlocks(_ blocks: [InstantPageBlock]) -> Bool { + var count = 0 + return self.validate(blocks: blocks, depth: 0, count: &count) + } + + private func validate(blocks: [InstantPageBlock], depth: Int, count: inout Int) -> Bool { + guard self.registerBlockDepth(depth) else { + return false + } + for block in blocks { + count += 1 + guard count <= self.limits.maxEmittedBlocks else { + return self.fail() + } + switch block { + case let .list(items, _): + for item in items { + if !self.validate(listItem: item, depth: depth + 1, count: &count) { + return false + } + } + case let .details(_, nestedBlocks, _): + if !self.validate(blocks: nestedBlocks, depth: depth + 1, count: &count) { + return false + } + default: + break + } + } + return true + } + + private func validate(listItem: InstantPageListItem, depth: Int, count: inout Int) -> Bool { + guard self.registerBlockDepth(depth) else { + return false + } + if case let .blocks(blocks, _) = listItem { + return self.validate(blocks: blocks, depth: depth + 1, count: &count) + } else { + return true + } + } +} private struct MarkdownPageResult { let blocks: [InstantPageBlock] let media: [MediaId: Media] } +private enum MarkdownFormulaMode { + case inline + case block +} + +private struct MarkdownFormulaDescriptor { + let placeholder: String + let latex: String + let mode: MarkdownFormulaMode +} + +private struct MarkdownPreparedSource { + let text: String + let formulasByPlaceholder: [String: MarkdownFormulaDescriptor] +} + +private enum MarkdownInlineTextSegment { + case plain(String) + case formula(MarkdownFormulaDescriptor) +} + private enum MarkdownInlineFragment { case richText(RichText) + case formula(MarkdownFormulaDescriptor, RichText) case image(MarkdownResolvedImage) } @@ -44,6 +251,8 @@ private struct MarkdownInlineContent { switch fragment { case let .richText(text): result.append(text) + case let .formula(_, text): + result.append(text) case let .image(image): var text: RichText = .image(id: image.mediaId, dimensions: image.inlineDimensions) if let linkUrl = image.linkUrl { @@ -55,6 +264,31 @@ private struct MarkdownInlineContent { return markdownCompact(result) } + + var standaloneBlockFormula: MarkdownFormulaDescriptor? { + var result: MarkdownFormulaDescriptor? + + for fragment in self.fragments { + switch fragment { + case let .richText(text): + if !markdownIsWhitespaceOnly(text) { + return nil + } + case let .formula(descriptor, _): + guard descriptor.mode == .block else { + return nil + } + if result != nil { + return nil + } + result = descriptor + case .image: + return nil + } + } + + return result + } var standaloneImage: MarkdownResolvedImage? { var result: MarkdownResolvedImage? @@ -65,6 +299,8 @@ private struct MarkdownInlineContent { if !markdownIsWhitespaceOnly(text) { return nil } + case .formula: + return nil case let .image(image): if result != nil { return nil @@ -98,20 +334,24 @@ private enum MarkdownTaskListState { private final class MarkdownConversionContext { private let context: AccountContext fileprivate let documentURL: URL + fileprivate let formulasByPlaceholder: [String: MarkdownFormulaDescriptor] + fileprivate let budget: MarkdownConversionBudget private var nextRemoteMediaId: Int64 = 0 private var nextLocalMediaId: Int64 = 0 - + private(set) var media: [MediaId: Media] = [:] - - init(context: AccountContext, documentURL: URL) { + + init(context: AccountContext, documentURL: URL, formulasByPlaceholder: [String: MarkdownFormulaDescriptor], budget: MarkdownConversionBudget) { self.context = context self.documentURL = documentURL + self.formulasByPlaceholder = formulasByPlaceholder + self.budget = budget } - + func makePageResult(blocks: [InstantPageBlock]) -> MarkdownPageResult { return MarkdownPageResult(blocks: blocks, media: self.media) } - + func resolveImage(attributes: [NSAttributedString.Key: Any]) -> MarkdownResolvedImage? { guard let imageUrl = markdownImageURL(attributes: attributes) else { return nil @@ -121,8 +361,11 @@ private final class MarkdownConversionContext { let caption = markdownImageCaption(markdownAlternateDescription(attributes: attributes)) let linkUrl = markdownLink(attributes: attributes, documentURL: self.documentURL) - switch markdownResolveImageSource(imageUrl) { + switch markdownResolveImageSource(imageUrl, limits: self.budget.limits) { case let .remote(url): + guard self.budget.registerMediaItem() else { + return nil + } let mediaId = self.nextMediaId(namespace: Namespaces.Media.CloudImage) self.media[mediaId] = TelegramMediaImage( imageId: mediaId, @@ -146,6 +389,9 @@ private final class MarkdownConversionContext { linkUrl: linkUrl ) case let .data(data, dimensions): + guard self.budget.registerMediaItem() else { + return nil + } let resource = LocalFileMediaResource(fileId: Int64.random(in: Int64.min ... Int64.max), size: Int64(data.count), isSecretRelated: false) self.context.engine.resources.storeResourceData(id: EngineMediaResource.Id(resource.id), data: data) @@ -188,6 +434,535 @@ private final class MarkdownConversionContext { } } +private func markdownPassesPreflight(data: Data, limits: MarkdownSafetyLimits) -> Bool { + guard data.count <= limits.maxFileSize else { + return false + } + guard let text = markdownDecodedSourceText(data) else { + return false + } + return markdownPassesPreflight(text: text, limits: limits) +} + +private func markdownDecodedSourceText(_ data: Data) -> String? { + if let text = String(data: data, encoding: .utf8) { + return text + } + if data.starts(with: [0xff, 0xfe]) { + return String(data: data, encoding: .utf16LittleEndian) + } + if data.starts(with: [0xfe, 0xff]) { + return String(data: data, encoding: .utf16BigEndian) + } + return nil +} + +private func markdownPassesPreflight(text: String, limits: MarkdownSafetyLimits) -> Bool { + var activeFence: Character? + var htmlTagCount = 0 + var htmlDepth = 0 + + for rawLine in text.split(separator: "\n", omittingEmptySubsequences: false) { + var line = String(rawLine) + if line.hasSuffix("\r") { + line.removeLast() + } + + if (line as NSString).length > limits.maxLineLength { + return false + } + + if let fenceMarker = markdownFenceMarker(in: line) { + if activeFence == fenceMarker { + activeFence = nil + } else { + activeFence = fenceMarker + } + continue + } + + if activeFence != nil { + continue + } + + if markdownBlockquoteDepth(in: line) > limits.maxBlockquoteDepth { + return false + } + if markdownIndentWidth(in: line) > limits.maxListIndent { + return false + } + if !markdownScanRawHTMLTags(in: line, limits: limits, tagCount: &htmlTagCount, depth: &htmlDepth) { + return false + } + } + + return true +} + +private func markdownFenceMarker(in line: String) -> Character? { + let trimmed = line.drop(while: { $0 == " " || $0 == "\t" }) + guard let marker = trimmed.first, marker == "`" || marker == "~" else { + return nil + } + var count = 0 + var index = trimmed.startIndex + while index < trimmed.endIndex, trimmed[index] == marker { + count += 1 + index = trimmed.index(after: index) + } + return count >= 3 ? marker : nil +} + +private func markdownBlockquoteDepth(in line: String) -> Int { + var depth = 0 + var index = line.startIndex + + while index < line.endIndex { + switch line[index] { + case " ", "\t": + index = line.index(after: index) + case ">": + depth += 1 + index = line.index(after: index) + if index < line.endIndex, (line[index] == " " || line[index] == "\t") { + index = line.index(after: index) + } + default: + return depth + } + } + + return depth +} + +private func markdownIndentWidth(in line: String) -> Int { + var width = 0 + for character in line { + switch character { + case " ": + width += 1 + case "\t": + width += 4 + default: + return width + } + } + return width +} + +private func markdownScanRawHTMLTags(in line: String, limits: MarkdownSafetyLimits, tagCount: inout Int, depth: inout Int) -> Bool { + let nsLine = line as NSString + let matches = markdownRawHTMLTagRegex.matches(in: line, range: NSRange(location: 0, length: nsLine.length)) + + for match in matches { + tagCount += 1 + guard tagCount <= limits.maxRawHTMLTagCount else { + return false + } + + let tagText = nsLine.substring(with: match.range) + let tagName = nsLine.substring(with: match.range(at: 1)).lowercased() + let lowercasedTag = tagText.lowercased() + + if lowercasedTag.hasPrefix("") && !markdownVoidHTMLTags.contains(tagName) { + depth += 1 + guard depth <= limits.maxRawHTMLNestingDepth else { + return false + } + } + } + + return true +} + +private func markdownPreparedSource(text: String, limits: MarkdownSafetyLimits) -> MarkdownPreparedSource { + let lines = markdownLinesPreservingEndings(text) + + var activeFence: Character? + var formulasByPlaceholder: [String: MarkdownFormulaDescriptor] = [:] + var acceptedFormulaCount = 0 + var totalFormulaCharacters = 0 + var nextPlaceholderIndex = 0 + var result = "" + + var lineIndex = 0 + while lineIndex < lines.count { + let line = lines[lineIndex] + let (content, _) = markdownLineContentAndEnding(line) + + if let fenceMarker = markdownFenceMarker(in: content) { + if activeFence == fenceMarker { + activeFence = nil + } else { + activeFence = fenceMarker + } + result.append(contentsOf: line) + lineIndex += 1 + continue + } + + if activeFence != nil { + result.append(contentsOf: line) + lineIndex += 1 + continue + } + + if let replacement = markdownBlockFormulaReplacement( + in: lines, + startLineIndex: lineIndex, + limits: limits, + acceptedFormulaCount: &acceptedFormulaCount, + totalFormulaCharacters: &totalFormulaCharacters, + nextPlaceholderIndex: &nextPlaceholderIndex + ) { + result.append(contentsOf: replacement.replacement) + formulasByPlaceholder[replacement.descriptor.placeholder] = replacement.descriptor + lineIndex = replacement.nextLineIndex + continue + } + + let processedLine = markdownReplacingInlineFormulas( + in: line, + limits: limits, + acceptedFormulaCount: &acceptedFormulaCount, + totalFormulaCharacters: &totalFormulaCharacters, + nextPlaceholderIndex: &nextPlaceholderIndex, + formulasByPlaceholder: &formulasByPlaceholder + ) + result.append(contentsOf: processedLine) + lineIndex += 1 + } + + return MarkdownPreparedSource(text: result, formulasByPlaceholder: formulasByPlaceholder) +} + +private func markdownLinesPreservingEndings(_ text: String) -> [String] { + guard !text.isEmpty else { + return [] + } + + var result: [String] = [] + var lineStart = text.startIndex + var index = text.startIndex + + while index < text.endIndex { + if text[index] == "\n" { + let nextIndex = text.index(after: index) + result.append(String(text[lineStart ..< nextIndex])) + lineStart = nextIndex + } + index = text.index(after: index) + } + + if lineStart < text.endIndex { + result.append(String(text[lineStart...])) + } + + return result +} + +private func markdownLineContentAndEnding(_ line: String) -> (content: String, ending: String) { + if line.hasSuffix("\r\n") { + return (String(line.dropLast(2)), "\r\n") + } else if line.hasSuffix("\n") { + return (String(line.dropLast()), "\n") + } else { + return (line, "") + } +} + +private func markdownFormulaPlaceholder(_ index: Int) -> String { + return "TGMDMATH\(index)TGMD" +} + +private func markdownAcceptedFormulaDescriptor( + latex: String, + mode: MarkdownFormulaMode, + limits: MarkdownSafetyLimits, + acceptedFormulaCount: inout Int, + totalFormulaCharacters: inout Int, + nextPlaceholderIndex: inout Int +) -> MarkdownFormulaDescriptor? { + let normalizedLatex: String + switch mode { + case .inline: + normalizedLatex = latex + case .block: + normalizedLatex = latex.trimmingCharacters(in: .whitespacesAndNewlines) + } + + guard !normalizedLatex.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else { + return nil + } + + let latexLength = (normalizedLatex as NSString).length + let maxLength = mode == .inline ? limits.maxInlineFormulaLength : limits.maxBlockFormulaLength + guard latexLength <= maxLength else { + return nil + } + guard acceptedFormulaCount < limits.maxFormulas else { + return nil + } + guard totalFormulaCharacters + latexLength <= limits.maxFormulaSourceCharacters else { + return nil + } + + let placeholder = markdownFormulaPlaceholder(nextPlaceholderIndex) + nextPlaceholderIndex += 1 + acceptedFormulaCount += 1 + totalFormulaCharacters += latexLength + return MarkdownFormulaDescriptor(placeholder: placeholder, latex: normalizedLatex, mode: mode) +} + +private func markdownBlockFormulaReplacement( + in lines: [String], + startLineIndex: Int, + limits: MarkdownSafetyLimits, + acceptedFormulaCount: inout Int, + totalFormulaCharacters: inout Int, + nextPlaceholderIndex: inout Int +) -> (replacement: String, nextLineIndex: Int, descriptor: MarkdownFormulaDescriptor)? { + guard startLineIndex >= 0, startLineIndex < lines.count else { + return nil + } + + let (content, _) = markdownLineContentAndEnding(lines[startLineIndex]) + let indentation = String(content.prefix { $0 == " " || $0 == "\t" }) + let trimmedStart = content.drop(while: { $0 == " " || $0 == "\t" }) + + let opener: String + let closer: String + if trimmedStart.hasPrefix("$$") { + opener = "$$" + closer = "$$" + } else if trimmedStart.hasPrefix("\\[") { + opener = "\\[" + closer = "\\]" + } else { + return nil + } + + let openerContent = String(trimmedStart.dropFirst(opener.count)) + var latex = "" + + if let closeRange = markdownFirstUnescapedRange(of: closer, in: openerContent, from: openerContent.startIndex) { + let trailing = String(openerContent[closeRange.upperBound...]) + guard trailing.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else { + return nil + } + latex = String(openerContent[.. String { + let (content, ending) = markdownLineContentAndEnding(line) + guard !content.isEmpty else { + return line + } + + var result = "" + var index = content.startIndex + var activeCodeDelimiterLength: Int? + + while index < content.endIndex { + if content[index] == "`" { + let delimiterEnd = markdownIndex(afterRepeating: "`", in: content, from: index) + let delimiterLength = content.distance(from: index, to: delimiterEnd) + result.append(contentsOf: content[index ..< delimiterEnd]) + if activeCodeDelimiterLength == delimiterLength { + activeCodeDelimiterLength = nil + } else { + activeCodeDelimiterLength = delimiterLength + } + index = delimiterEnd + continue + } + + if activeCodeDelimiterLength != nil { + result.append(content[index]) + index = content.index(after: index) + continue + } + + if content[index] == "\\", !markdownIsEscaped(content, at: index), let nextIndex = markdownIndex(content, offsetBy: 1, from: index), nextIndex < content.endIndex, content[nextIndex] == "(" { + let bodyStart = content.index(after: nextIndex) + if let closeRange = markdownFirstUnescapedRange(of: "\\)", in: content, from: bodyStart) { + let latex = String(content[bodyStart ..< closeRange.lowerBound]) + if let descriptor = markdownAcceptedFormulaDescriptor( + latex: latex, + mode: .inline, + limits: limits, + acceptedFormulaCount: &acceptedFormulaCount, + totalFormulaCharacters: &totalFormulaCharacters, + nextPlaceholderIndex: &nextPlaceholderIndex + ) { + result.append(contentsOf: descriptor.placeholder) + formulasByPlaceholder[descriptor.placeholder] = descriptor + index = closeRange.upperBound + continue + } + } + } + + if content[index] == "$", !markdownIsEscaped(content, at: index) { + guard let bodyStart = markdownIndex(content, offsetBy: 1, from: index), bodyStart < content.endIndex else { + result.append(content[index]) + index = content.index(after: index) + continue + } + if content[bodyStart] == "$" || content[bodyStart].isWhitespace { + result.append(content[index]) + index = content.index(after: index) + continue + } + + var searchIndex = bodyStart + var matchedRange: Range? + while let closeRange = markdownFirstUnescapedRange(of: "$", in: content, from: searchIndex) { + let closerIndex = closeRange.lowerBound + let previousIndex = content.index(before: closerIndex) + if !content[previousIndex].isWhitespace { + matchedRange = closeRange + break + } + searchIndex = closeRange.upperBound + } + + if let matchedRange { + let latex = String(content[bodyStart ..< matchedRange.lowerBound]) + if let descriptor = markdownAcceptedFormulaDescriptor( + latex: latex, + mode: .inline, + limits: limits, + acceptedFormulaCount: &acceptedFormulaCount, + totalFormulaCharacters: &totalFormulaCharacters, + nextPlaceholderIndex: &nextPlaceholderIndex + ) { + result.append(contentsOf: descriptor.placeholder) + formulasByPlaceholder[descriptor.placeholder] = descriptor + index = matchedRange.upperBound + continue + } + } + } + + result.append(content[index]) + index = content.index(after: index) + } + + result.append(contentsOf: ending) + return result +} + +private func markdownFirstUnescapedRange(of pattern: String, in text: String, from startIndex: String.Index) -> Range? { + guard !pattern.isEmpty, startIndex <= text.endIndex else { + return nil + } + + var searchIndex = startIndex + while searchIndex < text.endIndex { + guard let range = text.range(of: pattern, range: searchIndex ..< text.endIndex) else { + return nil + } + if !markdownIsEscaped(text, at: range.lowerBound) { + return range + } + searchIndex = range.upperBound + } + return nil +} + +private func markdownIsEscaped(_ text: String, at index: String.Index) -> Bool { + guard index > text.startIndex else { + return false + } + + var slashCount = 0 + var currentIndex = text.index(before: index) + while true { + if text[currentIndex] == "\\" { + slashCount += 1 + } else { + break + } + guard currentIndex > text.startIndex else { + break + } + currentIndex = text.index(before: currentIndex) + } + + return slashCount % 2 == 1 +} + +private func markdownIndex(_ text: String, offsetBy distance: Int, from index: String.Index) -> String.Index? { + guard distance >= 0 else { + return nil + } + return text.index(index, offsetBy: distance, limitedBy: text.endIndex) +} + +private func markdownIndex(afterRepeating character: Character, in text: String, from startIndex: String.Index) -> String.Index { + var index = startIndex + while index < text.endIndex, text[index] == character { + index = text.index(after: index) + } + return index +} + func markdownWebpage(context: AccountContext, file: FileMediaReference) -> (webPage: TelegramMediaWebpage, fileURL: URL)? { guard #available(iOS 15.0, *) else { return nil @@ -207,10 +982,19 @@ func markdownWebpage(context: AccountContext, file: FileMediaReference) -> (webP @available(iOS 15.0, *) private func markdownWebpage(context: AccountContext, file: FileMediaReference, fileURL: URL, data: Data) -> TelegramMediaWebpage? { + let limits = markdownSafetyLimits + guard markdownPassesPreflight(data: data, limits: limits) else { + return nil + } + guard let sourceText = markdownDecodedSourceText(data) else { + return nil + } + let preparedSource = markdownPreparedSource(text: sourceText, limits: limits) + let attributedString: NSAttributedString do { attributedString = try NSAttributedString( - markdown: data, + markdown: Data(preparedSource.text.utf8), options: .init(), baseURL: fileURL.deletingLastPathComponent() ) @@ -218,10 +1002,13 @@ private func markdownWebpage(context: AccountContext, file: FileMediaReference, return nil } - let conversionContext = MarkdownConversionContext(context: context, documentURL: fileURL) - let pageResult = markdownPageResult(from: attributedString, context: conversionContext) + let budget = MarkdownConversionBudget(limits: limits) + let conversionContext = MarkdownConversionContext(context: context, documentURL: fileURL, formulasByPlaceholder: preparedSource.formulasByPlaceholder, budget: budget) + guard let pageResult = markdownPageResult(from: attributedString, context: conversionContext) else { + return nil + } let blocks = markdownBlocksWithGeneratedAnchors(pageResult.blocks) - guard !blocks.isEmpty else { + guard !blocks.isEmpty, budget.validateFinalBlocks(blocks) else { return nil } @@ -265,15 +1052,25 @@ private func markdownWebpage(context: AccountContext, file: FileMediaReference, } @available(iOS 15.0, *) -private func markdownPageResult(from attributedString: NSAttributedString, context: MarkdownConversionContext) -> MarkdownPageResult { +private func markdownPageResult(from attributedString: NSAttributedString, context: MarkdownConversionContext) -> MarkdownPageResult? { + guard context.budget.registerAttributedStringLength(attributedString.length) else { + return nil + } + var nodesByIdentity: [Int: MarkdownIntentNode] = [:] var rootNodes: [MarkdownIntentNode] = [] var rootIdentities: Set = [] - - attributedString.enumerateAttributes(in: NSRange(location: 0, length: attributedString.length), options: []) { attributes, range, _ in + var didAbort = false + + attributedString.enumerateAttributes(in: NSRange(location: 0, length: attributedString.length), options: []) { attributes, range, stop in guard range.length > 0 else { return } + guard context.budget.registerAttributeRun() else { + didAbort = true + stop.pointee = true + return + } guard let presentationIntent = attributes[markdownPresentationIntentAttribute] as? PresentationIntent else { return } @@ -281,13 +1078,23 @@ private func markdownPageResult(from attributedString: NSAttributedString, conte guard !components.isEmpty else { return } - + guard context.budget.registerPresentationIntentDepth(components.count) else { + didAbort = true + stop.pointee = true + return + } + var orderedNodes: [MarkdownIntentNode] = [] for component in components.reversed() { let node: MarkdownIntentNode if let current = nodesByIdentity[component.identity] { node = current } else { + guard context.budget.registerIntentNode() else { + didAbort = true + stop.pointee = true + return + } let created = MarkdownIntentNode(component: component) nodesByIdentity[component.identity] = created node = created @@ -308,37 +1115,69 @@ private func markdownPageResult(from attributedString: NSAttributedString, conte } } - return context.makePageResult(blocks: markdownBlocks(from: rootNodes, context: context)) + guard !didAbort, !context.budget.isExceeded else { + return nil + } + guard let blocks = markdownBlocks(from: rootNodes, context: context, depth: 0), !context.budget.isExceeded else { + return nil + } + return context.makePageResult(blocks: blocks) } -private func markdownBlocks(from nodes: [MarkdownIntentNode], context: MarkdownConversionContext) -> [InstantPageBlock] { +private func markdownBlocks(from nodes: [MarkdownIntentNode], context: MarkdownConversionContext, depth: Int) -> [InstantPageBlock]? { + guard context.budget.registerBlockDepth(depth), !context.budget.isExceeded else { + return nil + } + var result: [InstantPageBlock] = [] for node in nodes { - result.append(contentsOf: markdownBlocks(from: node, context: context)) + guard let blocks = markdownBlocks(from: node, context: context, depth: depth + 1) else { + return nil + } + result.append(contentsOf: blocks) + if context.budget.isExceeded { + return nil + } } return result } -private func markdownBlocks(from node: MarkdownIntentNode, context: MarkdownConversionContext) -> [InstantPageBlock] { +private func markdownBlocks(from node: MarkdownIntentNode, context: MarkdownConversionContext, depth: Int) -> [InstantPageBlock]? { + guard context.budget.registerBlockDepth(depth), !context.budget.isExceeded else { + return nil + } + switch node.kind { case let .table(alignments): - let rows = markdownTableRows(from: node.children, alignments: alignments, context: context) + guard let rows = markdownTableRows(from: node.children, alignments: alignments, context: context, depth: depth + 1) else { + return nil + } guard !rows.isEmpty else { return [] } return [.table(title: .empty, rows: rows, bordered: true, striped: false)] case let .header(level): - let text = markdownRichText(from: node.attributedText, context: context) + guard let text = markdownRichText(from: node.attributedText, context: context) else { + return nil + } guard markdownHasDisplayableContent(text) else { return [] } - if level <= 1 { + switch level { + case Int.min ... 1: + return [.title(text)] + case 2: return [.header(text)] - } else { + default: return [.heading(text: text, level: Int32(max(3, min(level, 6))))] } case .paragraph: - let inlineContent = markdownInlineContent(from: node.attributedText, context: context) + guard let inlineContent = markdownInlineContent(from: node.attributedText, context: context) else { + return nil + } + if let formula = inlineContent.standaloneBlockFormula { + return [.formula(latex: formula.latex)] + } if let image = inlineContent.standaloneImage { return [ .image( @@ -355,7 +1194,9 @@ private func markdownBlocks(from node: MarkdownIntentNode, context: MarkdownConv } return [.paragraph(text)] case let .codeBlock(languageHint): - let text = markdownRichText(from: markdownTrimTrailingCodeBlockNewline(node.attributedText), context: context) + guard let text = markdownRichText(from: markdownTrimTrailingCodeBlockNewline(node.attributedText), context: context) else { + return nil + } guard markdownHasDisplayableContent(text) else { return [] } @@ -365,12 +1206,15 @@ private func markdownBlocks(from node: MarkdownIntentNode, context: MarkdownConv case .blockQuote: var result: [InstantPageBlock] = [] for child in node.children { - for childBlock in markdownBlocks(from: child, context: context) { + guard let childBlocks = markdownBlocks(from: child, context: context, depth: depth + 1) else { + return nil + } + for childBlock in childBlocks { switch childBlock { case let .paragraph(text): result.append(.blockQuote(text: text, caption: .empty)) default: - let plainText = markdownPlainText(from: childBlock) + let plainText = markdownPlainText(from: childBlock, depth: depth + 1) if !plainText.isEmpty { result.append(.blockQuote(text: .plain(plainText), caption: .empty)) } @@ -379,29 +1223,39 @@ private func markdownBlocks(from node: MarkdownIntentNode, context: MarkdownConv } return result case .orderedList: - let items = markdownListItems(from: node.children, ordered: true, context: context) + guard let items = markdownListItems(from: node.children, ordered: true, context: context, depth: depth + 1) else { + return nil + } guard !items.isEmpty else { return [] } return [.list(items: items, ordered: true)] case .unorderedList: - let items = markdownListItems(from: node.children, ordered: false, context: context) + guard let items = markdownListItems(from: node.children, ordered: false, context: context, depth: depth + 1) else { + return nil + } guard !items.isEmpty else { return [] } return [.list(items: items, ordered: false)] case .listItem(_), .tableHeaderRow, .tableRow, .tableCell(_), .unknown: - return markdownBlocks(from: node.children, context: context) + return markdownBlocks(from: node.children, context: context, depth: depth + 1) } } -private func markdownListItems(from nodes: [MarkdownIntentNode], ordered: Bool, context: MarkdownConversionContext) -> [InstantPageListItem] { +private func markdownListItems(from nodes: [MarkdownIntentNode], ordered: Bool, context: MarkdownConversionContext, depth: Int) -> [InstantPageListItem]? { + guard context.budget.registerBlockDepth(depth), !context.budget.isExceeded else { + return nil + } + var result: [InstantPageListItem] = [] for node in nodes { guard case let .listItem(ordinal) = node.kind else { continue } - var blocks = markdownBlocks(from: node.children, context: context) + guard var blocks = markdownBlocks(from: node.children, context: context, depth: depth + 1) else { + return nil + } let taskListState = markdownApplyTaskListMarker(to: &blocks) let number: String? if let taskListState { @@ -476,17 +1330,25 @@ private func markdownTaskListMarker(in plainText: String) -> (MarkdownTaskListSt } } -private func markdownTableRows(from nodes: [MarkdownIntentNode], alignments: [TableHorizontalAlignment], context: MarkdownConversionContext) -> [InstantPageTableRow] { +private func markdownTableRows(from nodes: [MarkdownIntentNode], alignments: [TableHorizontalAlignment], context: MarkdownConversionContext, depth: Int) -> [InstantPageTableRow]? { + guard context.budget.registerBlockDepth(depth), !context.budget.isExceeded else { + return nil + } + var result: [InstantPageTableRow] = [] for node in nodes { switch node.kind { case .tableHeaderRow: - let cells = markdownTableCells(from: node.children, alignments: alignments, header: true, context: context) + guard let cells = markdownTableCells(from: node.children, alignments: alignments, header: true, context: context, depth: depth + 1) else { + return nil + } if !cells.isEmpty { result.append(InstantPageTableRow(cells: cells)) } case .tableRow: - let cells = markdownTableCells(from: node.children, alignments: alignments, header: false, context: context) + guard let cells = markdownTableCells(from: node.children, alignments: alignments, header: false, context: context, depth: depth + 1) else { + return nil + } if !cells.isEmpty { result.append(InstantPageTableRow(cells: cells)) } @@ -494,10 +1356,14 @@ private func markdownTableRows(from nodes: [MarkdownIntentNode], alignments: [Ta continue } } - return result + return context.budget.isExceeded ? nil : result } -private func markdownTableCells(from nodes: [MarkdownIntentNode], alignments: [TableHorizontalAlignment], header: Bool, context: MarkdownConversionContext) -> [InstantPageTableCell] { +private func markdownTableCells(from nodes: [MarkdownIntentNode], alignments: [TableHorizontalAlignment], header: Bool, context: MarkdownConversionContext, depth: Int) -> [InstantPageTableCell]? { + guard context.budget.registerBlockDepth(depth), !context.budget.isExceeded else { + return nil + } + let maxColumnIndex = nodes.reduce(-1) { partialResult, node in if case let .tableCell(column) = node.kind { return max(partialResult, column) @@ -509,7 +1375,10 @@ private func markdownTableCells(from nodes: [MarkdownIntentNode], alignments: [T guard columnCount > 0 else { return [] } - + guard context.budget.registerTableColumns(columnCount) else { + return nil + } + var result: [InstantPageTableCell] = [] var nextColumn = 0 @@ -517,13 +1386,15 @@ private func markdownTableCells(from nodes: [MarkdownIntentNode], alignments: [T guard case let .tableCell(column) = node.kind else { continue } - + while nextColumn < column { result.append(markdownEmptyTableCell(header: header, alignment: markdownTableAlignment(at: nextColumn, from: alignments))) nextColumn += 1 } - - let text = markdownRichText(from: node.attributedText, context: context) + + guard let text = markdownRichText(from: node.attributedText, context: context) else { + return nil + } result.append( InstantPageTableCell( text: text, @@ -542,6 +1413,9 @@ private func markdownTableCells(from nodes: [MarkdownIntentNode], alignments: [T nextColumn += 1 } + guard context.budget.registerTableCells(result.count) else { + return nil + } return result } @@ -563,29 +1437,35 @@ private func markdownTableAlignment(at index: Int, from alignments: [TableHorizo return alignments[index] } -private func markdownRichText(from attributedString: NSAttributedString, context: MarkdownConversionContext) -> RichText { - return markdownInlineContent(from: attributedString, context: context).richText +private func markdownRichText(from attributedString: NSAttributedString, context: MarkdownConversionContext) -> RichText? { + return markdownInlineContent(from: attributedString, context: context)?.richText } -private func markdownInlineContent(from attributedString: NSAttributedString, context: MarkdownConversionContext) -> MarkdownInlineContent { +private func markdownInlineContent(from attributedString: NSAttributedString, context: MarkdownConversionContext) -> MarkdownInlineContent? { guard attributedString.length > 0, #available(iOS 15.0, *) else { return MarkdownInlineContent(fragments: []) } - + var fragments: [MarkdownInlineFragment] = [] var htmlStyles: [MarkdownHTMLInlineStyle] = [] var consumeNextSoftBreak = false - - attributedString.enumerateAttributes(in: NSRange(location: 0, length: attributedString.length), options: []) { attributes, range, _ in + var didAbort = false + + attributedString.enumerateAttributes(in: NSRange(location: 0, length: attributedString.length), options: []) { attributes, range, stop in guard range.length > 0 else { return } + if context.budget.isExceeded { + didAbort = true + stop.pointee = true + return + } let text = attributedString.attributedSubstring(from: range).string guard !text.isEmpty else { return } - + let inlineIntent: InlinePresentationIntent? if let inlineIntentValue = attributes[markdownInlinePresentationIntentAttribute] as? InlinePresentationIntent { inlineIntent = inlineIntentValue @@ -594,11 +1474,16 @@ private func markdownInlineContent(from attributedString: NSAttributedString, co } else { inlineIntent = nil } - + if let inlineIntent, inlineIntent.contains(markdownInlineHTMLInlineIntent), let directive = markdownHTMLDirective(for: text) { switch directive { case let .open(style): htmlStyles.append(style) + guard context.budget.registerInlineHTMLStyleDepth(htmlStyles.count) else { + didAbort = true + stop.pointee = true + return + } case let .close(style): if let index = htmlStyles.lastIndex(of: style) { htmlStyles.remove(at: index) @@ -609,7 +1494,7 @@ private func markdownInlineContent(from attributedString: NSAttributedString, co } return } - + if consumeNextSoftBreak { if let inlineIntent, inlineIntent.contains(markdownSoftBreakInlineIntent), text == " " { consumeNextSoftBreak = false @@ -617,42 +1502,107 @@ private func markdownInlineContent(from attributedString: NSAttributedString, co } consumeNextSoftBreak = false } - + if let image = context.resolveImage(attributes: attributes) { fragments.append(.image(image)) return } - - var fragment: RichText = .plain(text) - if let inlineIntent { - if inlineIntent.contains(.stronglyEmphasized) { - fragment = .bold(fragment) + + let segments = markdownInlineTextSegments(from: text, formulasByPlaceholder: context.formulasByPlaceholder) + for segment in segments { + let baseText: RichText + let descriptor: MarkdownFormulaDescriptor? + switch segment { + case let .plain(plainText): + baseText = .plain(plainText) + descriptor = nil + case let .formula(formulaDescriptor): + baseText = .formula(latex: formulaDescriptor.latex) + descriptor = formulaDescriptor } - if inlineIntent.contains(.emphasized) { - fragment = .italic(fragment) + + var fragment = markdownApplyingInlineIntent(inlineIntent, to: baseText) + if let url = markdownLink(attributes: attributes, documentURL: context.documentURL) { + fragment = .url(text: fragment, url: url, webpageId: nil) } - if inlineIntent.contains(.strikethrough) { - fragment = .strikethrough(fragment) - } - if inlineIntent.contains(.code) { - fragment = .fixed(fragment) - } - if inlineIntent.contains(markdownHardBreakInlineIntent) { - fragment = .plain("\n") + fragment = markdownApplyHTMLStyles(htmlStyles, to: fragment) + + if let descriptor { + fragments.append(.formula(descriptor, fragment)) + } else { + fragments.append(.richText(fragment)) } } - - if let url = markdownLink(attributes: attributes, documentURL: context.documentURL) { - fragment = .url(text: fragment, url: url, webpageId: nil) - } - - fragments.append(.richText(markdownApplyHTMLStyles(htmlStyles, to: fragment))) } - + + guard !didAbort, !context.budget.isExceeded else { + return nil + } return MarkdownInlineContent(fragments: fragments) } +private func markdownInlineTextSegments(from text: String, formulasByPlaceholder: [String: MarkdownFormulaDescriptor]) -> [MarkdownInlineTextSegment] { + guard !text.isEmpty else { + return [] + } + + let nsText = text as NSString + let matches = markdownFormulaPlaceholderRegex.matches(in: text, range: NSRange(location: 0, length: nsText.length)) + guard !matches.isEmpty else { + return [.plain(text)] + } + + var result: [MarkdownInlineTextSegment] = [] + var currentLocation = 0 + + for match in matches { + if match.range.location > currentLocation { + result.append(.plain(nsText.substring(with: NSRange(location: currentLocation, length: match.range.location - currentLocation)))) + } + + let placeholder = nsText.substring(with: match.range) + if let descriptor = formulasByPlaceholder[placeholder] { + result.append(.formula(descriptor)) + } else { + result.append(.plain(placeholder)) + } + currentLocation = match.range.location + match.range.length + } + + if currentLocation < nsText.length { + result.append(.plain(nsText.substring(from: currentLocation))) + } + + return result +} + +@available(iOS 15.0, *) +private func markdownApplyingInlineIntent(_ inlineIntent: InlinePresentationIntent?, to text: RichText) -> RichText { + guard let inlineIntent else { + return text + } + + var result = text + if inlineIntent.contains(.stronglyEmphasized) { + result = .bold(result) + } + if inlineIntent.contains(.emphasized) { + result = .italic(result) + } + if inlineIntent.contains(.strikethrough) { + result = .strikethrough(result) + } + if inlineIntent.contains(.code) { + result = .fixed(result) + } + if inlineIntent.contains(markdownHardBreakInlineIntent) { + result = .plain("\n") + } + return result +} + private enum MarkdownHTMLInlineStyle: Equatable { + case underline case `subscript` case superscript case marked @@ -666,6 +1616,10 @@ private enum MarkdownHTMLDirective { private func markdownHTMLDirective(for text: String) -> MarkdownHTMLDirective? { switch text.trimmingCharacters(in: .whitespacesAndNewlines).lowercased() { + case "": + return .open(.underline) + case "": + return .close(.underline) case "": return .open(.subscript) case "": @@ -689,6 +1643,8 @@ private func markdownApplyHTMLStyles(_ styles: [MarkdownHTMLInlineStyle], to tex var result = text for style in styles { switch style { + case .underline: + result = .underline(result) case .subscript: result = .subscript(result) case .superscript: @@ -720,13 +1676,13 @@ private func markdownImageURL(attributes: [NSAttributedString.Key: Any]) -> Stri return nil } -private func markdownResolveImageSource(_ value: String) -> MarkdownResolvedImageSource { +private func markdownResolveImageSource(_ value: String, limits: MarkdownSafetyLimits) -> MarkdownResolvedImageSource { if value.hasPrefix("//") { return .remote("https:\(value)") } if value.lowercased().hasPrefix("data:") { - return markdownResolveDataImageSource(value) + return markdownResolveDataImageSource(value, limits: limits) } guard let url = URL(string: value), let scheme = url.scheme?.lowercased() else { @@ -737,23 +1693,23 @@ private func markdownResolveImageSource(_ value: String) -> MarkdownResolvedImag case "http", "https": return .remote(url.absoluteString) case "data": - return markdownResolveDataImageSource(url.absoluteString) + return markdownResolveDataImageSource(url.absoluteString, limits: limits) default: return .unsupported } } -private func markdownResolveDataImageSource(_ value: String) -> MarkdownResolvedImageSource { +private func markdownResolveDataImageSource(_ value: String, limits: MarkdownSafetyLimits) -> MarkdownResolvedImageSource { guard value.lowercased().hasPrefix("data:"), let commaIndex = value.firstIndex(of: ",") else { return .unsupported } - + let header = String(value[value.index(value.startIndex, offsetBy: 5) ..< commaIndex]) let payloadStart = value.index(after: commaIndex) let payload = String(value[payloadStart...]) let isBase64 = header.lowercased().contains(";base64") - + let data: Data? if isBase64 { data = Data(base64Encoded: payload, options: [.ignoreUnknownCharacters]) @@ -762,13 +1718,21 @@ private func markdownResolveDataImageSource(_ value: String) -> MarkdownResolved } else { data = nil } - - guard let data, - let image = UIImage(data: data), + + guard let data = data, data.count <= limits.maxDataImageBytes else { + return .unsupported + } + + guard let image = UIImage(data: data), let dimensions = markdownImagePixelDimensions(image) else { return .unsupported } - + + let pixelCount = Int64(dimensions.width) * Int64(dimensions.height) + guard pixelCount <= Int64(limits.maxDataImagePixelCount) else { + return .unsupported + } + return .data(data, dimensions) } @@ -794,7 +1758,7 @@ private func markdownInlineImageDimensions(attributes: [NSAttributedString.Key: guard let font = attributes[.font] as? UIFont else { return markdownDefaultInlineImageDimensions } - + let side = max(markdownDefaultInlineImageDimensions.width, Int32(ceil(font.lineHeight))) return PixelDimensions(width: side, height: side) } @@ -959,6 +1923,13 @@ private func markdownDroppingPrefixLength(_ length: Int, from text: RichText) -> return dropped == .empty ? .empty : .phone(text: dropped, phone: phone) case .image: return text + case let .formula(latex): + let nsLatex = latex as NSString + if nsLatex.length <= length { + return .empty + } else { + return .plain(nsLatex.substring(from: length)) + } case let .anchor(inner, name): let dropped = markdownDroppingPrefixLength(length, from: inner) return dropped == .empty ? .empty : .anchor(text: dropped, name: name) @@ -989,6 +1960,8 @@ private func markdownHasDisplayableContent(_ richText: RichText) -> Bool { return items.contains(where: markdownHasDisplayableContent) case .image: return true + case let .formula(latex): + return !latex.isEmpty } } @@ -1016,10 +1989,16 @@ private func markdownIsWhitespaceOnly(_ richText: RichText) -> Bool { return items.allSatisfy(markdownIsWhitespaceOnly) case .image: return false + case let .formula(latex): + return latex.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty } } -private func markdownPlainText(from block: InstantPageBlock) -> String { +private func markdownPlainText(from block: InstantPageBlock, depth: Int = 0) -> String { + guard depth <= markdownSafetyLimits.maxPresentationIntentDepth else { + return "" + } + switch block { case let .title(text): return text.plainText @@ -1033,6 +2012,8 @@ private func markdownPlainText(from block: InstantPageBlock) -> String { return text.plainText case let .heading(text, _): return text.plainText + case let .formula(latex): + return latex case let .paragraph(text): return text.plainText case let .preformatted(text, _): @@ -1084,9 +2065,17 @@ private func markdownNormalizedCodeBlockLanguage(_ language: String?) -> String? return normalized.isEmpty ? nil : normalized } -private func markdownFirstParagraphText(from blocks: [InstantPageBlock]) -> String? { +private func markdownFirstParagraphText(from blocks: [InstantPageBlock], depth: Int = 0) -> String? { + guard depth <= markdownSafetyLimits.maxPresentationIntentDepth else { + return nil + } + for block in blocks { switch block { + case let .formula(latex): + if !latex.isEmpty { + return latex + } case let .paragraph(text): if !text.plainText.isEmpty { return text.plainText @@ -1099,7 +2088,7 @@ private func markdownFirstParagraphText(from blocks: [InstantPageBlock]) -> Stri return text.plainText } case let .blocks(blocks, _): - if let text = markdownFirstParagraphText(from: blocks) { + if let text = markdownFirstParagraphText(from: blocks, depth: depth + 1) { return text } default: @@ -1107,7 +2096,7 @@ private func markdownFirstParagraphText(from blocks: [InstantPageBlock]) -> Stri } } case let .details(_, blocks, _): - if let text = markdownFirstParagraphText(from: blocks) { + if let text = markdownFirstParagraphText(from: blocks, depth: depth + 1) { return text } default: diff --git a/submodules/BrowserUI/Sources/BrowserReadability.swift b/submodules/BrowserUI/Sources/BrowserReadability.swift index 3f5a45c894..e021ad2d01 100644 --- a/submodules/BrowserUI/Sources/BrowserReadability.swift +++ b/submodules/BrowserUI/Sources/BrowserReadability.swift @@ -343,6 +343,8 @@ private func trimStart(_ input: RichText) -> RichText { } case .image: break + case .formula: + break } return text } @@ -385,6 +387,8 @@ private func trimEnd(_ input: RichText) -> RichText { } case .image: break + case .formula: + break } return text } @@ -428,6 +432,8 @@ private func trim(_ input: RichText) -> RichText { } case .image: break + case .formula: + break } return text } @@ -470,6 +476,8 @@ private func addNewLine(_ input: RichText) -> RichText { } case .image: break + case let .formula(latex): + text = .concat([.formula(latex: latex), .plain("\n")]) } return text } diff --git a/submodules/Display/Source/Font.swift b/submodules/Display/Source/Font.swift index 9a93be6b1c..4f1a4c0cf8 100644 --- a/submodules/Display/Source/Font.swift +++ b/submodules/Display/Source/Font.swift @@ -224,7 +224,7 @@ public struct Font { } else { let font: UIFont switch design { - case .regular: + case .regular, .round: if traits.contains(.italic) { if let descriptor = UIFont.systemFont(ofSize: size, weight: weight.weight).fontDescriptor.withSymbolicTraits([.traitItalic]) { font = UIFont(descriptor: descriptor, size: size) @@ -254,8 +254,6 @@ public struct Font { } else { font = UIFont(name: "Menlo", size: size - 1.0) ?? UIFont.systemFont(ofSize: size) } - case .round: - font = UIFont(name: ".SFCompactRounded-Semibold", size: size) ?? UIFont.systemFont(ofSize: size) case .camera: func encodeText(string: String, key: Int16) -> String { let nsString = string as NSString diff --git a/submodules/InstantPageUI/BUILD b/submodules/InstantPageUI/BUILD index 58c18d70ea..91e9d5a2bf 100644 --- a/submodules/InstantPageUI/BUILD +++ b/submodules/InstantPageUI/BUILD @@ -29,6 +29,7 @@ swift_library( "//submodules/UndoUI:UndoUI", "//submodules/TranslateUI:TranslateUI", "//submodules/Tuples:Tuples", + "//third-party/SwiftMath:SwiftMath", ], visibility = [ "//visibility:public", diff --git a/submodules/InstantPageUI/Sources/InstantPageFormulaItem.swift b/submodules/InstantPageUI/Sources/InstantPageFormulaItem.swift new file mode 100644 index 0000000000..3c6d8d1cbb --- /dev/null +++ b/submodules/InstantPageUI/Sources/InstantPageFormulaItem.swift @@ -0,0 +1,185 @@ +import Foundation +import UIKit +import TelegramCore +import AsyncDisplayKit +import Display +import TelegramPresentationData +import TelegramUIPreferences +import AccountContext +import ContextUI + +final class InstantPageFormulaNode: ASImageNode, InstantPageNode { + let attachment: InstantPageMathAttachment + + init(attachment: InstantPageMathAttachment) { + self.attachment = attachment + super.init() + + self.isUserInteractionEnabled = false + self.displaysAsynchronously = false + self.image = attachment.rendered.image + } + + func updateIsVisible(_ isVisible: Bool) { + } + + func transitionNode(media: InstantPageMedia) -> (ASDisplayNode, CGRect, () -> (UIView?, UIView?))? { + return nil + } + + func updateHiddenMedia(media: InstantPageMedia?) { + } + + func update(strings: PresentationStrings, theme: InstantPageTheme) { + } + + func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) { + } +} + +final class InstantPageTextFormulaItem: InstantPageItem { + var frame: CGRect + let attachment: InstantPageMathAttachment + + let wantsNode: Bool = true + let separatesTiles: Bool = false + let medias: [InstantPageMedia] = [] + + init(frame: CGRect, attachment: InstantPageMathAttachment) { + self.frame = frame + self.attachment = attachment + } + + func matchesAnchor(_ anchor: String) -> Bool { + return false + } + + func drawInTile(context: CGContext) { + } + + func node(context: AccountContext, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, theme: InstantPageTheme, sourceLocation: InstantPageSourceLocation, openMedia: @escaping (InstantPageMedia) -> Void, longPressMedia: @escaping (InstantPageMedia) -> Void, activatePinchPreview: ((PinchSourceContainerNode) -> Void)?, pinchPreviewFinished: ((InstantPageNode) -> Void)?, openPeer: @escaping (EnginePeer) -> Void, openUrl: @escaping (InstantPageUrlItem) -> Void, updateWebEmbedHeight: @escaping (CGFloat) -> Void, updateDetailsExpanded: @escaping (Bool) -> Void, currentExpandedDetails: [Int : Bool]?, getPreloadedResource: @escaping (String) -> Data?) -> InstantPageNode? { + return InstantPageFormulaNode(attachment: self.attachment) + } + + func matchesNode(_ node: InstantPageNode) -> Bool { + guard let node = node as? InstantPageFormulaNode else { + return false + } + return self.attachment.isEqual(to: node.attachment) + } + + func linkSelectionRects(at point: CGPoint) -> [CGRect] { + return [] + } + + func distanceThresholdGroup() -> Int? { + return nil + } + + func distanceThresholdWithGroupCount(_ count: Int) -> CGFloat { + return 0.0 + } +} + +final class InstantPageFormulaItem: InstantPageItem { + var frame: CGRect + let attachment: InstantPageMathAttachment + + let wantsNode: Bool = true + let separatesTiles: Bool = false + let medias: [InstantPageMedia] = [] + + init(frame: CGRect, attachment: InstantPageMathAttachment) { + self.frame = frame + self.attachment = attachment + } + + func matchesAnchor(_ anchor: String) -> Bool { + return false + } + + func drawInTile(context: CGContext) { + } + + func node(context: AccountContext, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, theme: InstantPageTheme, sourceLocation: InstantPageSourceLocation, openMedia: @escaping (InstantPageMedia) -> Void, longPressMedia: @escaping (InstantPageMedia) -> Void, activatePinchPreview: ((PinchSourceContainerNode) -> Void)?, pinchPreviewFinished: ((InstantPageNode) -> Void)?, openPeer: @escaping (EnginePeer) -> Void, openUrl: @escaping (InstantPageUrlItem) -> Void, updateWebEmbedHeight: @escaping (CGFloat) -> Void, updateDetailsExpanded: @escaping (Bool) -> Void, currentExpandedDetails: [Int : Bool]?, getPreloadedResource: @escaping (String) -> Data?) -> InstantPageNode? { + return InstantPageFormulaNode(attachment: self.attachment) + } + + func matchesNode(_ node: InstantPageNode) -> Bool { + guard let node = node as? InstantPageFormulaNode else { + return false + } + return self.attachment.isEqual(to: node.attachment) + } + + func linkSelectionRects(at point: CGPoint) -> [CGRect] { + return [] + } + + func distanceThresholdGroup() -> Int? { + return nil + } + + func distanceThresholdWithGroupCount(_ count: Int) -> CGFloat { + return 0.0 + } +} + +final class InstantPageScrollableFormulaItem: InstantPageScrollableItem { + var frame: CGRect + let attachment: InstantPageMathAttachment + let totalWidth: CGFloat + let horizontalInset: CGFloat + + let medias: [InstantPageMedia] = [] + let wantsNode: Bool = true + let separatesTiles: Bool = false + let isRTL: Bool = false + + init(frame: CGRect, attachment: InstantPageMathAttachment, totalWidth: CGFloat, horizontalInset: CGFloat) { + self.frame = frame + self.attachment = attachment + self.totalWidth = totalWidth + self.horizontalInset = horizontalInset + } + + var contentSize: CGSize { + return CGSize(width: self.totalWidth, height: self.frame.height) + } + + func matchesAnchor(_ anchor: String) -> Bool { + return false + } + + func drawInTile(context: CGContext) { + } + + func node(context: AccountContext, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, theme: InstantPageTheme, sourceLocation: InstantPageSourceLocation, openMedia: @escaping (InstantPageMedia) -> Void, longPressMedia: @escaping (InstantPageMedia) -> Void, activatePinchPreview: ((PinchSourceContainerNode) -> Void)?, pinchPreviewFinished: ((InstantPageNode) -> Void)?, openPeer: @escaping (EnginePeer) -> Void, openUrl: @escaping (InstantPageUrlItem) -> Void, updateWebEmbedHeight: @escaping (CGFloat) -> Void, updateDetailsExpanded: @escaping (Bool) -> Void, currentExpandedDetails: [Int : Bool]?, getPreloadedResource: @escaping (String) -> Data?) -> InstantPageNode? { + let node = InstantPageFormulaNode(attachment: self.attachment) + node.frame = CGRect(origin: .zero, size: self.attachment.rendered.size) + return InstantPageScrollableNode(item: self, additionalNodes: [node]) + } + + func matchesNode(_ node: InstantPageNode) -> Bool { + if let node = node as? InstantPageScrollableNode { + return node.item === self + } + return false + } + + func linkSelectionRects(at point: CGPoint) -> [CGRect] { + return [] + } + + func distanceThresholdGroup() -> Int? { + return nil + } + + func distanceThresholdWithGroupCount(_ count: Int) -> CGFloat { + return 0.0 + } + + func textItemAtLocation(_ location: CGPoint) -> (InstantPageTextItem, CGPoint)? { + return nil + } +} diff --git a/submodules/InstantPageUI/Sources/InstantPageLayout.swift b/submodules/InstantPageUI/Sources/InstantPageLayout.swift index c5bfaca6b9..937d04c6b4 100644 --- a/submodules/InstantPageUI/Sources/InstantPageLayout.swift +++ b/submodules/InstantPageUI/Sources/InstantPageLayout.swift @@ -291,6 +291,37 @@ public func layoutInstantPageBlock(webpage: TelegramMediaWebpage, userLocation: setupStyleStack(styleStack, theme: theme, attributes: theme.headingTextAttributes(level: level, link: false)) let (_, items, contentSize) = layoutTextItemWithString(attributedStringForRichText(text, styleStack: styleStack), boundingWidth: boundingWidth - horizontalInset * 2.0, offset: CGPoint(x: horizontalInset, y: 0.0), media: media, webpage: webpage) return InstantPageLayout(origin: CGPoint(), contentSize: contentSize, items: items) + case let .formula(latex): + let styleStack = InstantPageTextStyleStack() + setupStyleStack(styleStack, theme: theme, category: .paragraph, link: false) + let attributes = styleStack.textAttributes() + let textColor = (attributes[NSAttributedString.Key.foregroundColor] as? UIColor) ?? theme.textCategories.paragraph.color + let fontSize = (attributes[NSAttributedString.Key.font] as? UIFont)?.pointSize ?? theme.textCategories.paragraph.font.size + + guard let attachment = instantPageMathAttachment(latex: latex, fontSize: fontSize, textColor: textColor, mode: .block) else { + let (_, items, contentSize) = layoutTextItemWithString(attributedStringForRichText(.plain(latex), styleStack: styleStack), boundingWidth: boundingWidth - horizontalInset * 2.0, offset: CGPoint(x: horizontalInset, y: 0.0), media: media, webpage: webpage) + return InstantPageLayout(origin: CGPoint(), contentSize: contentSize, items: items) + } + + let availableWidth = boundingWidth - horizontalInset * 2.0 + if attachment.rendered.size.width > availableWidth { + let scrollableItem = InstantPageScrollableFormulaItem( + frame: CGRect(origin: .zero, size: CGSize(width: boundingWidth, height: attachment.rendered.size.height)), + attachment: attachment, + totalWidth: attachment.rendered.size.width, + horizontalInset: horizontalInset + ) + return InstantPageLayout(origin: CGPoint(), contentSize: scrollableItem.frame.size, items: [scrollableItem]) + } else { + let item = InstantPageFormulaItem( + frame: CGRect( + origin: CGPoint(x: horizontalInset + floor((availableWidth - attachment.rendered.size.width) / 2.0), y: 0.0), + size: attachment.rendered.size + ), + attachment: attachment + ) + return InstantPageLayout(origin: CGPoint(), contentSize: CGSize(width: boundingWidth, height: attachment.rendered.size.height), items: [item]) + } case let .paragraph(text): let styleStack = InstantPageTextStyleStack() setupStyleStack(styleStack, theme: theme, category: .paragraph, link: false) diff --git a/submodules/InstantPageUI/Sources/InstantPageLayoutSpacings.swift b/submodules/InstantPageUI/Sources/InstantPageLayoutSpacings.swift index 51cc7d4886..6536f2a200 100644 --- a/submodules/InstantPageUI/Sources/InstantPageLayoutSpacings.swift +++ b/submodules/InstantPageUI/Sources/InstantPageLayoutSpacings.swift @@ -27,20 +27,38 @@ func spacingBetweenBlocks(upper: InstantPageBlock?, lower: InstantPageBlock?) -> return 31.0 case (.preformatted, .paragraph): return 19.0 + case (.formula, .paragraph): + return 19.0 case (.paragraph, .paragraph): return 25.0 case (_, .paragraph): return 20.0 + case (.title, .formula), (.authorDate, .formula): + return 34.0 + case (.header, .formula), (.subheader, .formula), (.heading, .formula): + return 25.0 + case (.list, .formula): + return 31.0 + case (.preformatted, .formula): + return 19.0 + case (.paragraph, .formula): + return 19.0 + case (_, .formula): + return 20.0 case (.title, .list), (.authorDate, .list): return 34.0 case (.header, .list), (.subheader, .list), (.heading, .list): return 31.0 case (.preformatted, .list): return 19.0 + case (.formula, .list): + return 25.0 case (_, .list): return 25.0 case (.paragraph, .preformatted): return 19.0 + case (.formula, .preformatted): + return 19.0 case (_, .preformatted): return 20.0 case (_, .header), (_, .subheader), (_, .heading): diff --git a/submodules/InstantPageUI/Sources/InstantPageMath.swift b/submodules/InstantPageUI/Sources/InstantPageMath.swift new file mode 100644 index 0000000000..1c77532019 --- /dev/null +++ b/submodules/InstantPageUI/Sources/InstantPageMath.swift @@ -0,0 +1,79 @@ +import Foundation +import UIKit +import SwiftMath + +enum InstantPageMathMode { + case inline + case block +} + +struct InstantPageMathRenderResult { + let image: UIImage + let size: CGSize + let width: CGFloat + let ascent: CGFloat + let descent: CGFloat +} + +final class InstantPageMathAttachment: NSObject { + let latex: String + let fontSize: CGFloat + let textColor: UIColor + let mode: InstantPageMathMode + let rendered: InstantPageMathRenderResult + + init(latex: String, fontSize: CGFloat, textColor: UIColor, mode: InstantPageMathMode, rendered: InstantPageMathRenderResult) { + self.latex = latex + self.fontSize = fontSize + self.textColor = textColor + self.mode = mode + self.rendered = rendered + } + + func isEqual(to other: InstantPageMathAttachment) -> Bool { + return self.latex == other.latex + && self.fontSize == other.fontSize + && self.mode == other.mode + && self.textColor.isEqual(other.textColor) + && self.rendered.size == other.rendered.size + && self.rendered.ascent == other.rendered.ascent + && self.rendered.descent == other.rendered.descent + } +} + +func instantPageMathAttachment(latex: String, fontSize: CGFloat, textColor: UIColor, mode: InstantPageMathMode) -> InstantPageMathAttachment? { + let effectiveFontSize: CGFloat + let multiplier: CGFloat = 1.12 + switch mode { + case .inline: + effectiveFontSize = fontSize * multiplier + case .block: + effectiveFontSize = fontSize * multiplier + } + + guard let rendered = instantPageRenderMath(latex: latex, fontSize: effectiveFontSize, textColor: textColor, mode: mode) else { + return nil + } + return InstantPageMathAttachment(latex: latex, fontSize: effectiveFontSize, textColor: textColor, mode: mode, rendered: rendered) +} + +private func instantPageRenderMath(latex: String, fontSize: CGFloat, textColor: UIColor, mode: InstantPageMathMode) -> InstantPageMathRenderResult? { + let renderMode: MTMathUILabelMode + switch mode { + case .inline: + renderMode = .text + case .block: + renderMode = .display + } + + guard let rendered = MTMathRenderer.render(latex: latex, fontSize: fontSize, textColor: textColor, mode: renderMode) else { + return nil + } + return InstantPageMathRenderResult( + image: rendered.image, + size: rendered.size, + width: rendered.width, + ascent: rendered.ascent, + descent: rendered.descent + ) +} diff --git a/submodules/InstantPageUI/Sources/InstantPageTextItem.swift b/submodules/InstantPageUI/Sources/InstantPageTextItem.swift index 1b4c08197c..a66ff44839 100644 --- a/submodules/InstantPageUI/Sources/InstantPageTextItem.swift +++ b/submodules/InstantPageUI/Sources/InstantPageTextItem.swift @@ -26,6 +26,7 @@ public final class InstantPageUrlItem: Equatable { struct InstantPageTextMarkedItem { let frame: CGRect let color: UIColor + let range: NSRange } struct InstantPageTextStrikethroughItem { @@ -38,6 +39,12 @@ struct InstantPageTextImageItem { let id: EngineMedia.Id } +struct InstantPageTextFormulaRun { + let frame: CGRect + let range: NSRange + let attachment: InstantPageMathAttachment +} + public struct InstantPageTextAnchorItem { public let name: String public let anchorText: NSAttributedString? @@ -63,16 +70,18 @@ public final class InstantPageTextLine { let strikethroughItems: [InstantPageTextStrikethroughItem] let markedItems: [InstantPageTextMarkedItem] let imageItems: [InstantPageTextImageItem] + let formulaItems: [InstantPageTextFormulaRun] public let anchorItems: [InstantPageTextAnchorItem] let isRTL: Bool - init(line: CTLine, range: NSRange, frame: CGRect, strikethroughItems: [InstantPageTextStrikethroughItem], markedItems: [InstantPageTextMarkedItem], imageItems: [InstantPageTextImageItem], anchorItems: [InstantPageTextAnchorItem], isRTL: Bool) { + init(line: CTLine, range: NSRange, frame: CGRect, strikethroughItems: [InstantPageTextStrikethroughItem], markedItems: [InstantPageTextMarkedItem], imageItems: [InstantPageTextImageItem], formulaItems: [InstantPageTextFormulaRun], anchorItems: [InstantPageTextAnchorItem], isRTL: Bool) { self.line = line self.range = range self.frame = frame self.strikethroughItems = strikethroughItems self.markedItems = markedItems self.imageItems = imageItems + self.formulaItems = formulaItems self.anchorItems = anchorItems self.isRTL = isRTL } @@ -88,6 +97,75 @@ private func frameForLine(_ line: InstantPageTextLine, boundingWidth: CGFloat, a return lineFrame } +private func expandedFrameForLine(_ line: InstantPageTextLine, boundingWidth: CGFloat, alignment: NSTextAlignment) -> CGRect { + var lineFrame = line.frame + for imageItem in line.imageItems { + if imageItem.frame.minY < lineFrame.minY { + let delta = lineFrame.minY - imageItem.frame.minY - 2.0 + lineFrame = CGRect(x: lineFrame.minX, y: lineFrame.minY - delta, width: lineFrame.width, height: lineFrame.height + delta) + } + if imageItem.frame.maxY > lineFrame.maxY { + let delta = imageItem.frame.maxY - lineFrame.maxY - 2.0 + lineFrame = CGRect(x: lineFrame.minX, y: lineFrame.minY, width: lineFrame.width, height: lineFrame.height + delta) + } + } + for formulaItem in line.formulaItems { + if formulaItem.frame.minY < lineFrame.minY { + let delta = lineFrame.minY - formulaItem.frame.minY - 2.0 + lineFrame = CGRect(x: lineFrame.minX, y: lineFrame.minY - delta, width: lineFrame.width, height: lineFrame.height + delta) + } + if formulaItem.frame.maxY > lineFrame.maxY { + let delta = formulaItem.frame.maxY - lineFrame.maxY - 2.0 + lineFrame = CGRect(x: lineFrame.minX, y: lineFrame.minY, width: lineFrame.width, height: lineFrame.height + delta) + } + } + lineFrame = lineFrame.insetBy(dx: 0.0, dy: -4.0) + if alignment == .center { + lineFrame.origin.x = floor((boundingWidth - lineFrame.size.width) / 2.0) + } else if alignment == .right || (alignment == .natural && line.isRTL) { + lineFrame.origin.x = boundingWidth - lineFrame.size.width + } + return lineFrame +} + +private func alignedAttachmentFrame(_ frame: CGRect, line: InstantPageTextLine, boundingWidth: CGFloat, alignment: NSTextAlignment) -> CGRect { + let lineFrame = frameForLine(line, boundingWidth: boundingWidth, alignment: alignment) + return frame.offsetBy(dx: lineFrame.minX - line.frame.minX, dy: 0.0) +} + +private func localAttachmentBoundsForRange(_ range: NSRange, imageItems: [InstantPageTextImageItem], formulaItems: [InstantPageTextFormulaRun]) -> CGRect? { + var result: CGRect? + + for imageItem in imageItems { + if NSIntersectionRange(range, imageItem.range).length != 0 { + if let current = result { + result = current.union(imageItem.frame) + } else { + result = imageItem.frame + } + } + } + + for formulaItem in formulaItems { + if NSIntersectionRange(range, formulaItem.range).length != 0 { + if let current = result { + result = current.union(formulaItem.frame) + } else { + result = formulaItem.frame + } + } + } + + return result +} + +private func attachmentBoundsForRange(_ range: NSRange, line: InstantPageTextLine, boundingWidth: CGFloat, alignment: NSTextAlignment) -> CGRect? { + guard let localBounds = localAttachmentBoundsForRange(range, imageItems: line.imageItems, formulaItems: line.formulaItems) else { + return nil + } + return alignedAttachmentFrame(localBounds, line: line, boundingWidth: boundingWidth, alignment: alignment) +} + public final class InstantPageTextItem: InstantPageItem { let attributedString: NSAttributedString public let lines: [InstantPageTextLine] @@ -197,7 +275,7 @@ public final class InstantPageTextItem: InstantPageItem { for i in 0 ..< self.lines.count { let line = self.lines[i] - let lineFrame = frameForLine(line, boundingWidth: boundsWidth, alignment: self.alignment) + let lineFrame = expandedFrameForLine(line, boundingWidth: boundsWidth, alignment: self.alignment) if lineFrame.insetBy(dx: -5.0, dy: -5.0).contains(transformedPoint) { var index = CTLineGetStringIndexForPosition(line.line, CGPoint(x: transformedPoint.x - lineFrame.minX, y: transformedPoint.y - lineFrame.minY)) if index == self.attributedString.length { @@ -238,8 +316,20 @@ public final class InstantPageTextItem: InstantPageItem { } let lineFrame = frameForLine(line, boundingWidth: boundsWidth, alignment: self.alignment) let width = abs(rightOffset - leftOffset) + + var rect: CGRect? if width > 1.0 { - rects.append(CGRect(origin: CGPoint(x: lineFrame.minX + (leftOffset < rightOffset ? leftOffset : rightOffset), y: lineFrame.minY), size: CGSize(width: width, height: lineFrame.size.height))) + rect = CGRect(origin: CGPoint(x: lineFrame.minX + (leftOffset < rightOffset ? leftOffset : rightOffset), y: lineFrame.minY), size: CGSize(width: width, height: lineFrame.size.height)) + } + if let attachmentBounds = attachmentBoundsForRange(lineRange, line: line, boundingWidth: boundsWidth, alignment: self.alignment) { + if rect != nil { + rect = rect!.union(attachmentBounds) + } else { + rect = attachmentBounds + } + } + if let rect, rect.width > 1.0 { + rects.append(rect) } } } @@ -304,25 +394,7 @@ public final class InstantPageTextItem: InstantPageItem { } } - var lineFrame = line.frame - for imageItem in line.imageItems { - if imageItem.frame.minY < lineFrame.minY { - let delta = lineFrame.minY - imageItem.frame.minY - 2.0 - lineFrame = CGRect(x: lineFrame.minX, y: lineFrame.minY - delta, width: lineFrame.width, height: lineFrame.height + delta) - } - if imageItem.frame.maxY > lineFrame.maxY { - let delta = imageItem.frame.maxY - lineFrame.maxY - 2.0 - lineFrame = CGRect(x: lineFrame.minX, y: lineFrame.minY, width: lineFrame.width, height: lineFrame.height + delta) - } - } - lineFrame = lineFrame.insetBy(dx: 0.0, dy: -4.0) - if self.alignment == .center { - lineFrame.origin.x = floor((boundsWidth - lineFrame.size.width) / 2.0) - } else if self.alignment == .right { - lineFrame.origin.x = boundsWidth - lineFrame.size.width - } else if self.alignment == .natural && self.rtlLineIndices.contains(i) { - lineFrame.origin.x = boundsWidth - lineFrame.size.width - } + let lineFrame = expandedFrameForLine(line, boundingWidth: boundsWidth, alignment: self.alignment) let width = max(0.0, abs(rightOffset - leftOffset)) @@ -368,25 +440,7 @@ public final class InstantPageTextItem: InstantPageItem { for i in 0 ..< self.lines.count { let line = self.lines[i] - var lineFrame = line.frame - for imageItem in line.imageItems { - if imageItem.frame.minY < lineFrame.minY { - let delta = lineFrame.minY - imageItem.frame.minY - 2.0 - lineFrame = CGRect(x: lineFrame.minX, y: lineFrame.minY - delta, width: lineFrame.width, height: lineFrame.height + delta) - } - if imageItem.frame.maxY > lineFrame.maxY { - let delta = imageItem.frame.maxY - lineFrame.maxY - 2.0 - lineFrame = CGRect(x: lineFrame.minX, y: lineFrame.minY, width: lineFrame.width, height: lineFrame.height + delta) - } - } - lineFrame = lineFrame.insetBy(dx: 0.0, dy: -4.0) - if self.alignment == .center { - lineFrame.origin.x = floor((boundsWidth - lineFrame.size.width) / 2.0) - } else if self.alignment == .right { - lineFrame.origin.x = boundsWidth - lineFrame.size.width - } else if self.alignment == .natural && self.rtlLineIndices.contains(i) { - lineFrame.origin.x = boundsWidth - lineFrame.size.width - } + let lineFrame = expandedFrameForLine(line, boundingWidth: boundsWidth, alignment: self.alignment) if lineFrame.minX < topLeft.x { topLeft = CGPoint(x: lineFrame.minX, y: topLeft.y) @@ -633,6 +687,43 @@ func attributedStringForRichText(_ text: RichText, styleStack: InstantPageTextSt let mutableAttributedString = attributedStringForRichText(.plain(" "), styleStack: styleStack, url: url).mutableCopy() as! NSMutableAttributedString mutableAttributedString.addAttributes(attrDictionaryDelegate, range: NSMakeRange(0, mutableAttributedString.length)) return mutableAttributedString + case let .formula(latex): + let attributes = styleStack.textAttributes() + let textColor = (attributes[NSAttributedString.Key.foregroundColor] as? UIColor) ?? UIColor.black + let fontSize = (attributes[NSAttributedString.Key.font] as? UIFont)?.pointSize ?? 16.0 + guard let attachment = instantPageMathAttachment(latex: latex, fontSize: fontSize, textColor: textColor, mode: .inline) else { + var fallbackAttributes = attributes + if let url = url { + fallbackAttributes[NSAttributedString.Key(rawValue: TelegramTextAttributes.URL)] = url + } + return NSAttributedString(string: latex, attributes: fallbackAttributes) + } + + struct RunStruct { + let ascent: CGFloat + let descent: CGFloat + let width: CGFloat + } + let extentBuffer = UnsafeMutablePointer.allocate(capacity: 1) + extentBuffer.initialize(to: RunStruct(ascent: attachment.rendered.ascent, descent: attachment.rendered.descent, width: attachment.rendered.size.width)) + var callbacks = CTRunDelegateCallbacks(version: kCTRunDelegateVersion1, dealloc: { _ in + }, getAscent: { pointer -> CGFloat in + let data = pointer.assumingMemoryBound(to: RunStruct.self) + return data.pointee.ascent + }, getDescent: { pointer -> CGFloat in + let data = pointer.assumingMemoryBound(to: RunStruct.self) + return data.pointee.descent + }, getWidth: { pointer -> CGFloat in + let data = pointer.assumingMemoryBound(to: RunStruct.self) + return data.pointee.width + }) + let delegate = CTRunDelegateCreate(&callbacks, extentBuffer) + let mutableAttributedString = attributedStringForRichText(.plain(" "), styleStack: styleStack, url: url).mutableCopy() as! NSMutableAttributedString + mutableAttributedString.addAttributes([ + kCTRunDelegateAttributeName as NSAttributedString.Key: delegate as Any, + NSAttributedString.Key(rawValue: InstantPageFormulaAttribute): attachment + ], range: NSMakeRange(0, mutableAttributedString.length)) + return mutableAttributedString case let .anchor(text, name): var empty = false var text = text @@ -655,6 +746,7 @@ func layoutTextItemWithString(_ string: NSAttributedString, boundingWidth: CGFlo var lines: [InstantPageTextLine] = [] var imageItems: [InstantPageTextImageItem] = [] + var formulaItems: [InstantPageTextFormulaItem] = [] var font = string.attribute(NSAttributedString.Key.font, at: 0, effectiveRange: nil) as? UIFont if font == nil { let range = NSMakeRange(0, string.length) @@ -665,7 +757,8 @@ func layoutTextItemWithString(_ string: NSAttributedString, boundingWidth: CGFlo } } let image = string.attribute(NSAttributedString.Key.init(rawValue: InstantPageMediaIdAttribute), at: 0, effectiveRange: nil) - guard font != nil || image != nil else { + let formula = string.attribute(NSAttributedString.Key(rawValue: InstantPageFormulaAttribute), at: 0, effectiveRange: nil) + guard font != nil || image != nil || formula != nil else { return (nil, [], CGSize()) } @@ -686,7 +779,6 @@ func layoutTextItemWithString(_ string: NSAttributedString, boundingWidth: CGFlo var hasAnchors = false var maxLineWidth: CGFloat = 0.0 - var maxImageHeight: CGFloat = 0.0 var extraDescent: CGFloat = 0.0 let text = string.string var indexOffset: CFIndex? @@ -741,6 +833,8 @@ func layoutTextItemWithString(_ string: NSAttributedString, boundingWidth: CGFlo let hadExtraDescent = extraDescent > 0.0 extraDescent = 0.0 var lineImageItems: [InstantPageTextImageItem] = [] + var lineFormulaItems: [InstantPageTextFormulaRun] = [] + var lineMaxAttachmentHeight: CGFloat = 0.0 var isRTL = false if let glyphRuns = CTLineGetGlyphRuns(line) as? [CTRun], !glyphRuns.isEmpty { if let run = glyphRuns.first, CTRunGetStatus(run).contains(CTRunStatus.rightToLeft) { @@ -769,20 +863,49 @@ func layoutTextItemWithString(_ string: NSAttributedString, boundingWidth: CGFlo if !fontLineHeight.isZero { extraDescent = max(extraDescent, imageFrame.maxY - (workingLineOrigin.y + fontLineHeight + minSpacing)) } - maxImageHeight = max(maxImageHeight, imageFrame.height) + lineMaxAttachmentHeight = max(lineMaxAttachmentHeight, imageFrame.height) lineImageItems.append(InstantPageTextImageItem(frame: imageFrame, range: range, id: EngineMedia.Id(namespace: Namespaces.Media.CloudFile, id: id))) + } else if let attachment = attributes[NSAttributedString.Key(rawValue: InstantPageFormulaAttribute)] as? InstantPageMathAttachment { + let xOffset = CTLineGetOffsetForStringIndex(line, range.location, nil) + let baselineOffset = (attributes[NSAttributedString.Key.baselineOffset] as? CGFloat) ?? 0.0 + var formulaFrame = CGRect( + origin: CGPoint( + x: workingLineOrigin.x + xOffset, + y: workingLineOrigin.y + fontLineHeight + baselineOffset - attachment.rendered.ascent + ), + size: attachment.rendered.size + ) + + let minSpacing = fontLineSpacing - 4.0 + let delta = workingLineOrigin.y - minSpacing - formulaFrame.minY - appliedLineOffset + if !fontAscent.isZero && delta > 0.0 { + workingLineOrigin.y += delta + appliedLineOffset += delta + formulaFrame.origin = formulaFrame.origin.offsetBy(dx: 0.0, dy: delta) + } + if !fontLineHeight.isZero { + extraDescent = max(extraDescent, formulaFrame.maxY - (workingLineOrigin.y + fontLineHeight + minSpacing)) + } + lineMaxAttachmentHeight = max(lineMaxAttachmentHeight, formulaFrame.height) + lineFormulaItems.append(InstantPageTextFormulaRun(frame: formulaFrame, range: range, attachment: attachment)) } } } } - if substring.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty && lineImageItems.count > 0 { + if substring.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty && (!lineImageItems.isEmpty || !lineFormulaItems.isEmpty) { extraDescent += max(6.0, fontLineSpacing / 2.0) } - if !minimizeWidth && !hadIndexOffset && lineCharacterCount > 1 && lineWidth > currentMaxWidth + 5.0, let imageItem = lineImageItems.last { - indexOffset = -(lastIndex + lineCharacterCount - imageItem.range.lowerBound) - continue + if !minimizeWidth && !hadIndexOffset && lineCharacterCount > 1 && lineWidth > currentMaxWidth + 5.0 { + if let imageItem = lineImageItems.last { + indexOffset = -(lastIndex + lineCharacterCount - imageItem.range.lowerBound) + continue + } + if let formulaItem = lineFormulaItems.last { + indexOffset = -(lastIndex + lineCharacterCount - formulaItem.range.lowerBound) + continue + } } var strikethroughItems: [InstantPageTextStrikethroughItem] = [] @@ -807,7 +930,7 @@ func layoutTextItemWithString(_ string: NSAttributedString, boundingWidth: CGFlo let lowerX = floor(CTLineGetOffsetForStringIndex(line, range.location, nil)) let upperX = ceil(CTLineGetOffsetForStringIndex(line, range.location + range.length, nil)) let x = lowerX < upperX ? lowerX : upperX - markedItems.append(InstantPageTextMarkedItem(frame: CGRect(x: workingLineOrigin.x + x, y: workingLineOrigin.y + delta, width: abs(upperX - lowerX), height: lineHeight), color: color)) + markedItems.append(InstantPageTextMarkedItem(frame: CGRect(x: workingLineOrigin.x + x, y: workingLineOrigin.y + delta, width: abs(upperX - lowerX), height: lineHeight), color: color, range: range)) } if let item = attributes[NSAttributedString.Key.init(rawValue: InstantPageAnchorAttribute)] as? Dictionary, let name = item["name"] as? String, let empty = item["empty"] as? Bool { anchorItems.append(InstantPageTextAnchorItem(name: name, anchorText: item["text"] as? NSAttributedString, empty: empty)) @@ -822,11 +945,35 @@ func layoutTextItemWithString(_ string: NSAttributedString, boundingWidth: CGFlo workingLineOrigin.y += fontLineSpacing } - let height = !fontLineHeight.isZero ? fontLineHeight : maxImageHeight - let textLine = InstantPageTextLine(line: line, range: lineRange, frame: CGRect(x: workingLineOrigin.x, y: workingLineOrigin.y, width: lineWidth, height: height), strikethroughItems: strikethroughItems, markedItems: markedItems, imageItems: lineImageItems, anchorItems: anchorItems, isRTL: isRTL) + let height = !fontLineHeight.isZero ? max(fontLineHeight, lineMaxAttachmentHeight) : lineMaxAttachmentHeight + if !lineFormulaItems.isEmpty { + let baselineAdjustment = height - fontLineHeight + if !baselineAdjustment.isZero { + lineFormulaItems = lineFormulaItems.map { item in + InstantPageTextFormulaRun( + frame: item.frame.offsetBy(dx: 0.0, dy: baselineAdjustment), + range: item.range, + attachment: item.attachment + ) + } + } + } + if !markedItems.isEmpty { + markedItems = markedItems.map { item in + if let attachmentBounds = localAttachmentBoundsForRange(item.range, imageItems: lineImageItems, formulaItems: lineFormulaItems) { + return InstantPageTextMarkedItem(frame: attachmentBounds, color: item.color, range: item.range) + } else { + return item + } + } + } + let textLine = InstantPageTextLine(line: line, range: lineRange, frame: CGRect(x: workingLineOrigin.x, y: workingLineOrigin.y, width: lineWidth, height: height), strikethroughItems: strikethroughItems, markedItems: markedItems, imageItems: lineImageItems, formulaItems: lineFormulaItems, anchorItems: anchorItems, isRTL: isRTL) lines.append(textLine) imageItems.append(contentsOf: lineImageItems) + for formulaItem in lineFormulaItems { + formulaItems.append(InstantPageTextFormulaItem(frame: formulaItem.frame, attachment: formulaItem.attachment)) + } if lineWidth > maxLineWidth { maxLineWidth = lineWidth @@ -853,7 +1000,7 @@ func layoutTextItemWithString(_ string: NSAttributedString, boundingWidth: CGFlo var textWidth = boundingWidth var requiresScroll = false - if !imageItems.isEmpty && maxLineWidth > boundingWidth + 10.0 { + if (!imageItems.isEmpty || !formulaItems.isEmpty) && maxLineWidth > boundingWidth + 10.0 { textWidth = maxLineWidth requiresScroll = true } @@ -870,13 +1017,13 @@ func layoutTextItemWithString(_ string: NSAttributedString, boundingWidth: CGFlo var topInset: CGFloat = 0.0 var bottomInset: CGFloat = 0.0 var additionalItems: [InstantPageItem] = [] - if let webpage = webpage { - let offset = requiresScroll ? CGPoint() : offset - for line in textItem.lines { - let lineFrame = frameForLine(line, boundingWidth: boundingWidth, alignment: alignment) + let effectiveOffset = requiresScroll ? CGPoint() : offset + for line in textItem.lines { + let lineFrame = frameForLine(line, boundingWidth: boundingWidth, alignment: alignment) + if let webpage = webpage { for imageItem in line.imageItems { if let media = media[imageItem.id] { - let item = InstantPageImageItem(frame: imageItem.frame.offsetBy(dx: lineFrame.minX + offset.x, dy: offset.y), webPage: webpage, media: InstantPageMedia(index: -1, media: media, url: nil, caption: nil, credit: nil), interactive: false, roundCorners: false, fit: false) + let item = InstantPageImageItem(frame: imageItem.frame.offsetBy(dx: lineFrame.minX + effectiveOffset.x, dy: effectiveOffset.y), webPage: webpage, media: InstantPageMedia(index: -1, media: media, url: nil, caption: nil, credit: nil), interactive: false, roundCorners: false, fit: false) additionalItems.append(item) if item.frame.minY < topInset { @@ -888,6 +1035,17 @@ func layoutTextItemWithString(_ string: NSAttributedString, boundingWidth: CGFlo } } } + for formulaItem in line.formulaItems { + let item = InstantPageTextFormulaItem(frame: formulaItem.frame.offsetBy(dx: lineFrame.minX + effectiveOffset.x, dy: effectiveOffset.y), attachment: formulaItem.attachment) + additionalItems.append(item) + + if item.frame.minY < topInset { + topInset = item.frame.minY + } + if item.frame.maxY > height { + bottomInset = max(bottomInset, item.frame.maxY - height) + } + } } if requiresScroll { diff --git a/submodules/InstantPageUI/Sources/InstantPageTextStyleStack.swift b/submodules/InstantPageUI/Sources/InstantPageTextStyleStack.swift index 413ff55840..2ab0a10df8 100644 --- a/submodules/InstantPageUI/Sources/InstantPageTextStyleStack.swift +++ b/submodules/InstantPageUI/Sources/InstantPageTextStyleStack.swift @@ -28,6 +28,7 @@ let InstantPageMarkerColorAttribute = "MarkerColorAttribute" let InstantPageMediaIdAttribute = "MediaIdAttribute" let InstantPageMediaDimensionsAttribute = "MediaDimensionsAttribute" let InstantPageAnchorAttribute = "AnchorAttribute" +let InstantPageFormulaAttribute = "FormulaAttribute" final class InstantPageTextStyleStack { private var items: [InstantPageTextStyle] = [] diff --git a/submodules/LegacyComponents/Sources/TGFont.mm b/submodules/LegacyComponents/Sources/TGFont.mm index a5d261521f..311787d42e 100644 --- a/submodules/LegacyComponents/Sources/TGFont.mm +++ b/submodules/LegacyComponents/Sources/TGFont.mm @@ -116,13 +116,9 @@ UIFont *TGFixedSystemFontOfSize(CGFloat size) + (UIFont *)roundedFontOfSize:(CGFloat)size { - if (@available(iOSApplicationExtension 13.0, iOS 13.0, *)) { - UIFontDescriptor *descriptor = [UIFont boldSystemFontOfSize:size].fontDescriptor; - descriptor = [descriptor fontDescriptorWithDesign:UIFontDescriptorSystemDesignRounded]; - return [UIFont fontWithDescriptor:descriptor size:size]; - } else { - return [UIFont fontWithName:@".SFCompactRounded-Semibold" size:size]; - } + UIFontDescriptor *descriptor = [UIFont boldSystemFontOfSize:size].fontDescriptor; + descriptor = [descriptor fontDescriptorWithDesign:UIFontDescriptorSystemDesignRounded]; + return [UIFont fontWithDescriptor:descriptor size:size]; } @end diff --git a/submodules/TelegramCore/FlatSerialization/Models/InstantPageBlock.fbs b/submodules/TelegramCore/FlatSerialization/Models/InstantPageBlock.fbs index ec3372afa1..091afbd2e0 100644 --- a/submodules/TelegramCore/FlatSerialization/Models/InstantPageBlock.fbs +++ b/submodules/TelegramCore/FlatSerialization/Models/InstantPageBlock.fbs @@ -35,7 +35,8 @@ union InstantPageBlock_Value { InstantPageBlock_Details, InstantPageBlock_RelatedArticles, InstantPageBlock_Map, - InstantPageBlock_Heading + InstantPageBlock_Heading, + InstantPageBlock_Formula } table InstantPageBlock { @@ -191,6 +192,10 @@ table InstantPageBlock_Heading { level:int32 (id: 1); } +table InstantPageBlock_Formula { + latex:string (id: 0, required); +} + table InstantPageCaption { text:RichText (id: 0, required); credit:RichText (id: 1, required); diff --git a/submodules/TelegramCore/FlatSerialization/Models/RichText.fbs b/submodules/TelegramCore/FlatSerialization/Models/RichText.fbs index 7a1da32aff..564cd98ce2 100644 --- a/submodules/TelegramCore/FlatSerialization/Models/RichText.fbs +++ b/submodules/TelegramCore/FlatSerialization/Models/RichText.fbs @@ -19,7 +19,8 @@ union RichText_Value { RichText_Marked, RichText_Phone, RichText_Image, - RichText_Anchor + RichText_Anchor, + RichText_Formula } table RichText { @@ -92,4 +93,8 @@ table RichText_Image { table RichText_Anchor { text:RichText (id: 0, required); name:string (id: 1, required); -} \ No newline at end of file +} + +table RichText_Formula { + latex:string (id: 0, required); +} diff --git a/submodules/TelegramCore/Sources/SyncCore/SyncCore_InstantPage.swift b/submodules/TelegramCore/Sources/SyncCore/SyncCore_InstantPage.swift index 83072ffdf0..0e0574d48b 100644 --- a/submodules/TelegramCore/Sources/SyncCore/SyncCore_InstantPage.swift +++ b/submodules/TelegramCore/Sources/SyncCore/SyncCore_InstantPage.swift @@ -33,6 +33,7 @@ private enum InstantPageBlockType: Int32 { case relatedArticles = 26 case map = 27 case heading = 28 + case formula = 29 } private func decodeListItems(_ decoder: PostboxDecoder) -> [InstantPageListItem] { @@ -62,6 +63,7 @@ public indirect enum InstantPageBlock: PostboxCoding, Equatable { case header(RichText) case subheader(RichText) case heading(text: RichText, level: Int32) + case formula(latex: String) case paragraph(RichText) case preformatted(text: RichText, language: String?) case footer(RichText) @@ -101,6 +103,8 @@ public indirect enum InstantPageBlock: PostboxCoding, Equatable { self = .subheader(decoder.decodeObjectForKey("t", decoder: { RichText(decoder: $0) }) as! RichText) case InstantPageBlockType.heading.rawValue: self = .heading(text: decoder.decodeObjectForKey("t", decoder: { RichText(decoder: $0) }) as! RichText, level: decoder.decodeInt32ForKey("l", orElse: 3)) + case InstantPageBlockType.formula.rawValue: + self = .formula(latex: decoder.decodeStringForKey("l", orElse: "")) case InstantPageBlockType.paragraph.rawValue: self = .paragraph(decoder.decodeObjectForKey("t", decoder: { RichText(decoder: $0) }) as! RichText) case InstantPageBlockType.preformatted.rawValue: @@ -195,6 +199,9 @@ public indirect enum InstantPageBlock: PostboxCoding, Equatable { encoder.encodeInt32(InstantPageBlockType.heading.rawValue, forKey: "r") encoder.encodeObject(text, forKey: "t") encoder.encodeInt32(level, forKey: "l") + case let .formula(latex): + encoder.encodeInt32(InstantPageBlockType.formula.rawValue, forKey: "r") + encoder.encodeString(latex, forKey: "l") case let .paragraph(text): encoder.encodeInt32(InstantPageBlockType.paragraph.rawValue, forKey: "r") encoder.encodeObject(text, forKey: "t") @@ -396,6 +403,12 @@ public indirect enum InstantPageBlock: PostboxCoding, Equatable { } else { return false } + case let .formula(lhsLatex): + if case let .formula(rhsLatex) = rhs, lhsLatex == rhsLatex { + return true + } else { + return false + } case let .paragraph(text): if case .paragraph(text) = rhs { return true @@ -572,6 +585,11 @@ public indirect enum InstantPageBlock: PostboxCoding, Equatable { throw FlatBuffersError.missingRequiredField() } self = .heading(text: try RichText(flatBuffersObject: value.text), level: value.level) + case .instantpageblockFormula: + guard let value = flatBuffersObject.value(type: TelegramCore_InstantPageBlock_Formula.self) else { + throw FlatBuffersError.missingRequiredField() + } + self = .formula(latex: value.latex) case .instantpageblockParagraph: guard let value = flatBuffersObject.value(type: TelegramCore_InstantPageBlock_Paragraph.self) else { throw FlatBuffersError.missingRequiredField() @@ -732,6 +750,12 @@ public indirect enum InstantPageBlock: PostboxCoding, Equatable { TelegramCore_InstantPageBlock_Heading.add(text: textOffset, &builder) TelegramCore_InstantPageBlock_Heading.add(level: level, &builder) offset = TelegramCore_InstantPageBlock_Heading.endInstantPageBlock_Heading(&builder, start: start) + case let .formula(latex): + valueType = .instantpageblockFormula + let latexOffset = builder.create(string: latex) + let start = TelegramCore_InstantPageBlock_Formula.startInstantPageBlock_Formula(&builder) + TelegramCore_InstantPageBlock_Formula.add(latex: latexOffset, &builder) + offset = TelegramCore_InstantPageBlock_Formula.endInstantPageBlock_Formula(&builder, start: start) case let .paragraph(text): valueType = .instantpageblockParagraph let textOffset = text.encodeToFlatBuffers(builder: &builder) diff --git a/submodules/TelegramCore/Sources/SyncCore/SyncCore_RichText.swift b/submodules/TelegramCore/Sources/SyncCore/SyncCore_RichText.swift index 69311fda00..cce0025996 100644 --- a/submodules/TelegramCore/Sources/SyncCore/SyncCore_RichText.swift +++ b/submodules/TelegramCore/Sources/SyncCore/SyncCore_RichText.swift @@ -19,6 +19,7 @@ private enum RichTextTypes: Int32 { case phone = 13 case image = 14 case anchor = 15 + case formula = 16 } public indirect enum RichText: PostboxCoding, Equatable { @@ -38,6 +39,7 @@ public indirect enum RichText: PostboxCoding, Equatable { case phone(text: RichText, phone: String) case image(id: MediaId, dimensions: PixelDimensions) case anchor(text: RichText, name: String) + case formula(latex: String) public init(decoder: PostboxDecoder) { switch decoder.decodeInt32ForKey("r", orElse: 0) { @@ -79,6 +81,8 @@ public indirect enum RichText: PostboxCoding, Equatable { self = .image(id: MediaId(namespace: decoder.decodeInt32ForKey("i.n", orElse: 0), id: decoder.decodeInt64ForKey("i.i", orElse: 0)), dimensions: PixelDimensions(width: decoder.decodeInt32ForKey("sw", orElse: 0), height: decoder.decodeInt32ForKey("sh", orElse: 0))) case RichTextTypes.anchor.rawValue: self = .anchor(text: decoder.decodeObjectForKey("t", decoder: { RichText(decoder: $0) }) as! RichText, name: decoder.decodeStringForKey("n", orElse: "")) + case RichTextTypes.formula.rawValue: + self = .formula(latex: decoder.decodeStringForKey("l", orElse: "")) default: self = .empty } @@ -147,6 +151,9 @@ public indirect enum RichText: PostboxCoding, Equatable { encoder.encodeInt32(RichTextTypes.anchor.rawValue, forKey: "r") encoder.encodeObject(text, forKey: "t") encoder.encodeString(name, forKey: "n") + case let .formula(latex): + encoder.encodeInt32(RichTextTypes.formula.rawValue, forKey: "r") + encoder.encodeString(latex, forKey: "l") } } @@ -248,6 +255,12 @@ public indirect enum RichText: PostboxCoding, Equatable { } else { return false } + case let .formula(lhsLatex): + if case let .formula(rhsLatex) = rhs, lhsLatex == rhsLatex { + return true + } else { + return false + } } } } @@ -291,6 +304,8 @@ public extension RichText { return "" case let .anchor(text, _): return text.plainText + case let .formula(latex): + return latex } } } @@ -378,6 +393,11 @@ extension RichText { } self = .anchor(text: try RichText(flatBuffersObject: value.text), name: value.name) + case .richtextFormula: + guard let value = flatBuffersObject.value(type: TelegramCore_RichText_Formula.self) else { + throw FlatBuffersError.missingRequiredField() + } + self = .formula(latex: value.latex) case .none_: self = .empty } @@ -494,6 +514,12 @@ extension RichText { TelegramCore_RichText_Anchor.add(text: textOffset, &builder) TelegramCore_RichText_Anchor.add(name: nameOffset, &builder) offset = TelegramCore_RichText_Anchor.endRichText_Anchor(&builder, start: start) + case let .formula(latex): + valueType = .richtextFormula + let latexOffset = builder.create(string: latex) + let start = TelegramCore_RichText_Formula.startRichText_Formula(&builder) + TelegramCore_RichText_Formula.add(latex: latexOffset, &builder) + offset = TelegramCore_RichText_Formula.endRichText_Formula(&builder, start: start) } return TelegramCore_RichText.createRichText(&builder, valueType: valueType, valueOffset: offset) diff --git a/submodules/TelegramUI/Resources/Fonts/SFCompactRounded-Semibold.otf b/submodules/TelegramUI/Resources/Fonts/SFCompactRounded-Semibold.otf deleted file mode 100644 index 100e58bff77dcda3e00f0ead36c94f9b68d7b2b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193812 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%0Dm?j#cj9`0q0T2k^g1j%5vc`dL=*M zef_m5;$}&Q3ExURg%#9PP(2OcfHoC~|NmHDzy0I-DoFJ8wJoq61-9GZNdYi!0><^g zmS+l=34$KfKsi#9gI`~OS8?D~@*mW|Gk?M;h5u51KY>4oc2)|oTjf0+|3ef%@aS!Qh+&0i4*0vC&eFQZzU$|Re z&cBxa=>K27{73mxb{9ORWH$wZyNfb{zOfKvrd);=B-;zvhd2j>YS|6p1wy<=h+@ zn27BI%J2m^brxJQkZFY*z;+R_--sMS?B>XGI6|Hg9wFBE;B_@(@FH(fvf;v2*-6B| zBpm;zyla8bXAt@cD7l3gC&4KOvBXk7@;goy*VmQ5&nY8df2^nF49c+pb@YOuMJiRG z`Z=h6hy1>-&+qpr&-)SuxWdRzqU1A?r!ztsLgpiHw`G;6?U1k#sumo1t>=Iap|l94 zMW`x-Lah?sfMel!L-ggKlo$eI1B82yaLEW4tLO1uV0|c*0@Fi;e=StX-T?P|ar6N_ zRk+^8RVJ$dKgGMcws#8@i>>Rvpu?M6$Pd1WPoSI zNbyIszc<1q*;}OblRmv-lx!~2xmkw``Mx3CsOQW()cBXca}O!J1gFLLU?b(LZCc&8t`%q3Sbt11JO z1FiwC18x9r0&W2+09wqCssS|s9;xa8wSbQR0VAdaAO+Bn78rmWU zN6_#FQhGngAn!oK707E}V{C?`F7ZU#xhSO`(77le@6_m}rvTvD3<-1}{s-e-C~#!z zNB8R}l@!GE#oG83 zs47WAU@HQ)_rO*zQ22xOmz zz^%l5MhTpizmmzi~ zN>gkVqEs!`AB5857Qb`>-ucpDLJo3%L!WbJ;YGc4hZ+aDb0lI+g=91hGYALN0bk4x z129tv#69#%PW}>IcO65%b|ULL_ASEKr|^eC46` z)p1$mOpPd)g1T3r?gOY2TY^}7-k`j`7t2b|k%L09L8rsBQZ&(+q|@8zS5RwjA&`O)MSMpB#Pt$0)a{Vi_emPpmzFq>z6^{Nz*s413M|i2E_o=I3e?23`gZXc z*hFdjxqfybO1vU{n?dImBlHX^P$$lNUW2+s17FM; zM*~DT<+`C`Q=Ppzyd@Rw(T& zNHHF9Hc4oNc#jb85uySi%E2E--@}&U=_SHrzZ$}vN0{>n1Fm4kHwgF}fx8pHBay?G zk+Rqmokxj11pXS7+Dnw0IKzC1k`uZ81a$#)N)~~-3bAa2Kya7B{7Rfz-$E{8QRY>M zU4WSAInclOVx}yXlbE}P2x*Ow`3M<`v_yRgsD(CX8e%v=1LBL?x?D04^UU_B5$B;j zc!ZjO`K`V_0i8y^tbMzLlsmFZ6d}pZs1z(B_4Z?hs|KNvi+h!pQcV8n$C}Lbk4{3>#>ICR4>_DoOVrhU67eR-ezMUYyVx7RV*fKqZ zR6KXqUk8C2IpT*SemLH3L;QUR6^u}opn9V|*Qnjdmz6%gI5IxP^B{?d{#mTCFHk?k zS+=Ks+$_;QWz;{t`z6*pq%=s_jrSGEpE&0hYkZD=#NUUxwgO-0;Hw+HmgDPVo#|cBQwf}+uJ56~-ivs@M(FYNq2GNH zIuN0Pfj1H%A>BzzCF>=blB<$3Nx9^jh?s$#5PTinxV*T+x1??R5jCw)6q+U_4sUN5+>Miww5@-g7 zEgI4-ur8^lHMALRPO~&eTVj>+03AXfq(jjPEYSZ+s0q|LtaYiePFp2Z3YUZz_+O5{ z3ap*})1UANQmX!kdMgoh!n=POr7rYIVWkj^7+;BxLebxg_1jSBdH(Vz+yHe&`W!_H z=OHcrjURF^@&I!cZ~!^_J3sW+62vJN!wMw;JrDjaCw`ZL)$g8v^QfmyETKwJSNY#e zp$_9H^ud4f6Z7*g`~78p^n9!QucU>#St0UTcrWte@5MyOBcFz>%U}KVPwK0_OfkZL z8t;F2-&{BWx*vh^`;Z<~0Q~SK^1p&ti1=rr^{w|d>aG%_z%M`HG1}NaDT`kM*WE}Z z&CmnBkU`@i(;CPOXamMTZeVE8z(8T3L{C_N{;G(&A@(oWXVDa4A40eGLMG17zn6Uv zJp&FG;5|0rV^t7;5*j#Yi2`^SteYAd7)p$Q4J-4&sKBgIX`qxe0%ju#g+8_bQgJNi zKuwTJ5oEd>6!aEIO^q3m25HKXYJ2oxmRPwDkSvB~<0{4$6O1l3Si|R~QpnFTDTNs_ zEj5N5)m+*V`rmn2E0;>QOTUDK^_6rFB&EI5gSbB=O~*Aunu|Ai(hIo1E4?Q%mEMAHtjo{7}*%n;Cl6{41s4Nr` zS!b#<(&$Qch2-81`T!Z#lj@1`??v^(eQ&C_#E|Mw^~cu%)Ihu$L}48PG!4c5Flrd? zhf~9$Ll{Agz?)IjDBO>xM&o`gH4ay6${N_lW8KVlDfsxsgfS^qlnrXKCyf zkqFPAr~Kq6eE8&{{#NAXr$1pYcuRzupT{OhrTC#uLT*JZh>%@?On}iDsZo$SE`X3CcxN+;oJBej8CI86$Dg4AB>fa`SW zbiA1%b;P}s)CpG?sSDn?N?md9F7?3GOX`K|9O)dq_m-j_NqwZgpd($Djy9Vi%Rqh1 zl|c&wnWzxgE3zxNmdVP%HAl)3^0gP`h1~{os5#*NTnhD?@}vClW(~DQY>!SUA_twL z-BwG2B<{%fb0TV; zfA?!I=2gN8uY?5QfuKbm-~V6C6-FQQ6ra{({Wzzuqrb~h{Uang-T%d$d`d0q)hqOY zRT$%5{JGSMR{08fdG%?`|BLs3Bz68iSHJC-{Zgi;nrttI^O6{MoOK z@Km^h)*_LNKr2E0`m=!l$@fC$KcqGqEv0^LBYqRk1Ad03(V{c>YHO{w#Zb zitmrY{U_hm^`p@HNzem55XZqkrv0}x3HScvc`&J`pyO{T!R$sNnEvja{_&4Sjk<7X zH9z;Um@WL@_e{1;&Sm+CwI74#et!hefKuo0Yv zgLUuFD#iA&>CekW2p0T>UBWViw-hD{UkG3PicK8bF+cg_&9C47y?26mzU4PRtQ1K; z)lmt~c>Y~&!%D`_Kh4iKKg%bd%-etd^zZrq7d^=D>HYT*@bAU?Ngfpc-jx1(*o6qe z^|vu0>#Y(3>fT``i9rrje^DFSV7z{*m;H>PNBswF{U`bVZ8HDXr$3OrRjB_Fza}cI z!t>oas{hp=_I>?-|M#b|MqSqQGq`&B1amm0sEhpF?;qd%F2H}{ z@e^6&Pm}wHy7i|a|Mee)L}BZ1u|g|bgngb`&JsjPBC9BhqJV%H08u%_i~`Dm81cX}=Kv-QoF0gZ zfQXU)f8V#er+d=w?6RQ#{@3%V>YB=3^(wvh>OE@;TpL0`#3Nwdl^w@noX-=aD|+d3 z?uxP3=!sg~?d2GAui;^M>bfyQdyQkZkM+G9lDlt9`k?`MJu6GT7zq#g_k8e*(GS+^ zjC*G!W=eeJvA(btS{Zmh<$i_jfA;LS{ZPX?hMS{!V)a9G{j9J4tS@ltQY>%^X!v2)!mtmWLZST*nXcg_fo*^ z8`i79NaIETX7P{lK9EJ?EP}1g$op5|XPkV1&Ax;5lnwFcBtX@-S!DYc48|z^#QN>8 zR`*<3r@uv?5myEbxQmndliUCAw@$OcQZa6?z*>6T`Us~UJT^@WJD~$O?_)KHH6~n2 zgJ3ymR$`TL9^@5ryMF#R!mqG4Bi%~blR3LB&;j9(6O}51`W(&;?1{D5T8>$8qP4_d zy11o&vA!xYp8vl)SKEH>_amR};I+4TmF~wojLXGtPk%1)-7*)Q{!DGX5x<1!5X`Z- zmujaun>(rKn&8_*bGqk>70>o#Ywh;J6G`L6&dLScz2NFYoFG|qM|p9b`e8@zxFT>* zuD=t?{j0r?wK?~)3zy;fx&JVduEf~-6=Nwjb;^wx{WgKgdqGa5f=P>hBItI)Kf}kG zD_90QjkUw|g-_`Fndb@YN{*v;Ut1rlhlP5O*%Nz4%`8P^ST;GrwhQgmP7^+oBlAt{ zzl?v}V(^|pp7Tt(thdqUoX5{p30dS@J&W*6f(2G0=2`JM324c5Mad+~90mQ^b75qq zBY76kCa;93Z534=)dDG^FyUS<;9jhz>cS{>Zp<;4hum+W`OZsu)?K0bXErr;+w7CMES8 zn5>*UzIAnH*6Dq*pTbG~1>EJrSW%<}We6+v}%9c5dw1=e^t#N#n&n^RDck1o=I@HIrL) zb0E{t!Sp0<2lI>?+Ixf*hSLUDK8_}gsN8;xQA=@eIe4*04I;g}66f ztXWwX%5;!v2yRPR>3bxQLT2kbB%ak77}pJU8u#vII6rgrdSllOsorpRiCLEzKSqpu z9`PeH#KkiSo!h$Crb z+7D#iW%=-K?o5eh-2kqm+w3&%o;#8&FFL!>$cYY;Ji{=~F{5PR35f-XJ-p?LU9n)Q znZ{l7+;=9~bcz>7j{6**fxJBZXJyYf+GV#EW~D>8SH$zRyKB#^9o;z5`JKLxmv?40 zaLeHg>1(Y-(zt1}^9GH7M@0N|uci?pkff{1fyY4R;(Wl=6^k){mx)UAm-R@vO*tOy z5twiq_p9TM2RA~F-kGeeG4exf@6;3{JV#!U^Q>e7iEHj7ILN=nLmFWYPgLG~=*L&Y z`)prq*-svJ=s+>=h=k|ir408!oqyIJIZGWmJGe3hY%EI7@=PpM{2P2OP9nj4WL?W) zk7r(j&BN;U7W(+j@c7XjO%e|N6v0b{uoP~3_~GuHy&n(H$Bqrj!p?&`M<>M@JFXkc z|91Cj(Y!8P_0dA7_k`~{v&xG+KL_kIxj$27ReE@M2)CBdj!R`_;; z7uzi(H{Oxoka;`DE76Af=+PK2es1|=*3K3uNp6*!{d{C(xg0)_ESB)YJDP%TU>f0Q z&Fb-b&{_h%qW$4%y!jz^K2AALo;m*bgy)z#b`3e&vU_@rJNlU??wZ(dYop`J;)RtA zcqj1T7K9WZnGZrUMtqnTu3d-E-!9Ki6ET}O1xNc9A?JL0OnevgPIx@QIH~(iT3LLE zA`PCABJUvBDgCPfd|JSiln|Unm#Y?bnh;Nabgd<-aB#=i6~>^kFm_^AtQ-?d8669_ z8PM?rH(;#~h2{u1N_xf#oYF;t+63zoq2I%G2-!NunbcZRSVx&d)EyjzNS?m$_qEIOfR~dt z_nM2x3@^ot>-xL*?A#pPw;P_>J36=Unq`(YR#mY@bu}t1O2OmnGIpAVzq8q zMhX4#&T)xEC#7|LA~9pfNt|;M7-`Je|F@q+cO!pZD_|zwEAx$4gBUk?5t!Lr?oaLI zb0%G!0qwQcR}5BIXIGhNZGAJRFL4~FHydKj4c+(feB&g`1@E)psyVB)w+qBRXdmg* zC)}A^RnLB&SpaC%vs@zmMDlb!L(oS_0jYu_2lKWEwERJcJ_ z1#6qP+F0{(6LJ;is1GyG(^>-=Oly$#Ru6*#PHxM{1a_iw;~-R6$tl_Q1-o3 zDR36ZGwfL#!X(sm{3Z7|PXt~oPArrt=jl~(gJT3pY!|Z|BREShVt%4_r&%V;B7!wB ziwI%C65A>o=9R5K)~H0Hvu$^yqy*@5Za=u=!+j%l9I0&Vhf5NzM`S$YD*Y&TdO@{} z|72&c#1XU{xnd;AlfXAf?7DXB%xy0(FCH*bJ?zqAg?jPCMa-qtE1{cAkhl92@hVMl zPyaptylkI4yjdc=lr#PB?{ezNc{^k^+vYsy+)GJVl2MZgER`iJ$qXX30Y$awl=Z0#}op*iND zJ`C+K-|Hie2ALoA3H=jv$fO5a2X3OKm=@3yGr`PUL(E3#huH+ZFwy#8Y&|d^Py@_2 zKK(C0m`6niOi2GrOx-W)GJJI@RSsWX2GZcm8f8@hv_J*uH?M3|hR%dqMlI1uXViuc zggVegRSNoc>O*#aYoj%E5cPr-`ZP+RF9Ur${h)0~q|N6+TaAVWz;V!TRETosD;VDx z->9P0Z%`gOc%TUxdU&pbo`@Ut4XP6K@hpS>*IV>0syOuW+zOqnw?S)ZY3S!!Bbqaz z6Vrf}p6x1~GV04hThEiwbScv5^Fn9OYtSwsGU_WrchCE(KlJx}pe90x&t5eiT6{iK zEuhKgBQ*lrd_GpgpwDN&s)By`QVl`h98|T@KZjKV^wD>!4*KbPH5Yw#M2$gz9aXKM z_2-zH2F*Xm)y4Wp{Uh` zpc~XsXbQSfHG#IE+f*B93|g&*Lu=4l)eD+~)%0Q%84LHBAsz|5nnKH%m_=x%(Y)d>29 zcB_%lF|N&{tGeb%xHOa;gvX7FAGPPJ%gVk)c5YwE^yX@Ef8ws_k&^P&*OlN&Nb& zr_>&}Ur=wVZqz)|N`0tKssYqL(wh25I#B;e8|oivYvebIs4mn((%dLvlu-SRl1522 zg5$6+HEC3!CXEV)Xws-pO&S%bNuxeBX;h&mjrvAIqoIN}4d~OTKz$nZsZXPd(b8xM zf6*J!hk7IWKqFR1jO|WFCyY$dA<@U^W^_|EsY#-b(bMP&4G^MFqL0zr=nc1Ml?WPr zjlR&@(ckEgw4!064>e5mp@xYdHB9s|h8e?YV6fOg1JXf6+YAhuT=0Q5#ERYGdh2Z7hwAb;df?ggRLoQzuJT>SSq5 zoh&V>lch0rvUD|mH-1;cshOp#PSvSuIQ6r1rGA#i)X&nD`dJ!NKTCJ&XKANJKTB`w zXK7FUEFGzzr4#kDbf$im9@Nj$g8Esy>V4%()- zLD%vQy#u!BR(kU{fD-o+ggaOr2=Nage_WmN(J%-YGPii z7Z|M0r#_m2fnk9$aEn%&L4oCgb!ueb&cI#pSs!==_U6Fzu>Td<1Ao!nb3Qbry$QGI zuNg)CHN65~nE}icrkM|OR(`V}=D0#;X*J9&W1fpyuaa3s^)#!R)u8=TG~EoO9+;}s z19L9*z*MCkn2OW`QEM=iBGo)#9)Nw&JgB;v$ITPS`DYWlnSwf~Rr#P9G+~RzoASXt!DM9wQ-hEq z8q6QeuhN2rf`ye176}%CyF{=AY*`i3l@53r9I#e(RBN$EgpL_VmVj0n%>B^k zsw%0HBDWqCm-W^jVEpd@-eM1KtyhMonbn}67sg$!Qjn##hoND5Xuu8eI;fZhA!YA~ zwG%WUP$NKxhbCQwyo&$#;{W5SFf}fjC}EZT%hAsBuaOA)rBRV;xC8Mev_>3(^u;y! z>KnjEB$Djvt8_@DT8S3(Q8IAPVk2ZS_JiD+!a4s4YaRLpr+1Wg92^Y?q-D{4c zol43FN;hm6#K+<)VL|#n?XEFz3=*F=Z)U{3N3pgJ88~r-0;)6^@x<_ zVpn+9i=oBL`rNKlPI-*%)RA^XO~_9{T@c4@eipQT9A37_oX+HbukU;#z~O>)%avKq zb>r=wxP?D48+|W)zd1WuL(0*|E}UhjL|?6Q*-2OmwTgWs%umzD+VEZMBJmw)hnzn) zSDn8s$t#?1j|+;Y0Dm0S6pem+=}?g8|#2;Il;h8vj4*t3;YWx!V~yEpl{kLk{5 zm{$Ocj%2^EmWzqmmi-JQp@)w3U{*}2GFn>5y7_^UnZyRUM zi`R-=H)C+O$BXazV_*B83*Yp0Yhn6#+Fty#?Q-sO`Y4gO*>~`4*Fws(dy4zBZ>|4E z*TCLG#+(VFBcBeBC;>yl!COM31`4k z0EfB>t+xud3U^_)YNqM{2ML+hcv`~$J%JNo8yAA(Y>72l4dWfqtrBeg;_i##-fJzS z-)^`chFOnZkOw!wty%Vu|FdINWaL-C;)vtn6#B zcfbgY35VW#SKF%;6Ft+#D_qit?SkV)%#MF(M+Hnz*!=3;%R1oAADE>)IIp0JvzTOH z_kY2;>!qvu_U-x6m(LK|_M<&yq>5DYCnL`R z9MyX;=kK*XI{m7-Z5o-Aja}r}|J20`N5;tx>_w-|iI2U{!0o*%c53`T0)7Fd&Ik8^ z3Yk0M7EZoa;7O2YE^hcW#rqtwG%ZJXl%f4T!8`N0*pASxp8^BdD1>735)y3ef z=0z1);U!U?jLmD@Rt~{^S@$^!AtC`GG2X5sB5p!|b1H2v zq0AGCgf;_I$>ZQ@55R>}0e#+xP2U7>MOLeaok3hX{+NsnE2k-YA#Oc#KLBIHY0uN6 z{7WvOeMGjZ3EEh8r5a@`|LjK&{|-lAf~=P=oP7~$GbeNV3oz5Xp8e9Yn}RKUFcXM8 znB5$68ejC)+8Szc3cedytwr!TZ2b!@20nUVw0o-psuOk@4Pa!??{H=~x`ORuv1fF2 z3u8adGY+LVSy$s{7~)WKi0q_kWupv&enqMc`!U~$*iEq?Fpxxv@>teXOTg>x7%RIkCl8+G4L*FHNO z+7hWRIo7-y`F(`T?UFjtCp&SS`b6?|6-%@%iRX;#u-?rqea==5tnc<6&&;wut6>rI z8OF+A?EzK#%XoE4^u}tu^ojdZo8UIc9@~js>o%NJm7|C3IPeTg(*9 zYXcBVBw^kUyoTU8GH`;opI6l($AuSp8MaYJI{6cbHIWm32IiN0y?CB0kyR1%4SSPw z(`M@tu25q_c#<~UUltJ=Y@w&F>f*rzX4iLA7c~`kK4#;F$Tf^r+>Ogw^%J`uSfxXA zh8rIK#!h0Ns)=~p9gNW3!1Yv7%hg1+4rU(A_C#TY7tk6MQH6eSog;fB5Olgtd?ysYsPu3brN9PVNr@;j{XWh(y#HKDwsig<4Xmz zl+fG)8pRgq>fMRi_73PYNCnkq4Ql#6&IJQlmaLv)D!{aX3lC>kYPj+$Vl`%eLsAwv z6pq*uh^(dfcQq(mFS_yQ^S-JIEzbA3e*Sls{W<{jmM?5MnB?c(0dD18*0rjrqls2_ zem+Qd@-7G(8dpd3#VeWjuD~O{UpSu+VQt#%uU)hoywkTK{uZoFw%oY_q&pQx|J&_v z)1RUf76as^dz7Q-2wC}HRtQljd8R#r9>husdIZ)_`e1(|viz_gLOMv$vH?GG!lr`?-3>G4Zh_3j$F$6P(UDT@%)a?~t zj(}Ks6c?yOxL`n>eT)2$_c+k@Nqo$cof5Jd9!HK(h3IVQ4$V@=xJ%!RHQp-{&X&Y0 zKWl%Cu5aB~wwy7H4S};wf;k9{wE*1D*l^~?w%?9M+|}W}@(*;1=#d&7&GCtaH;qNJ zK^tuW1nwE=fB z4#O=o&F_SC#9=>%D7+Fk@yCN$JB?q;uY^&{NqFAL@a0;YU@3qMP(+}wJInah>{TOF zr&Rv;Xz1y<`x6V!Qb`+;*2>|7x%NRfDckvL;PM1lw+&{0to=vgcnzjTn`PsP_{Qk5 zjQcnnK-Haq^>VdH;I$^>_cqqPJvdzo#I>Q3xy)WaSvW98Cqz!Hv%>`60nU{NFmK6x zwg-5&omkKIgJQhj>H$jp&G7x5XP|LdnIY*Iv)rOsUlE!YVgWci{w(s@JNJ8zG zV4U2lOnbja`27mwCTdP|v~oX#uf0DybKl$`w}sx|uJtw4e1pV|KfY1+N`zkyZi3_3 zZ=b~2lNK+F^-6d(O7dSUtuc+!o&{s!PowJ=+XryA!wx~aZ$%vrW3IqF1WNv!Sn)$U z75FT)xO?{2SxM(;FS;o@cdWDbCIXW(b08l=yX|)K!Wt7k&L!Sf^woB(>5tnSve=g} zy_+WUxAh+nuj}BnRxl-go2Kvj_Hyn15}Yj~n8DCt5drjkM@#J<)JxXBTV4+ER;T zt#!}EKAEU!C7iY7yd1uIW?4I~Y?z61_SpMDw^w;DA!_90EN3^BjIwNuG#`932Ydaf z1-BS^+_(L&sQo&dwzr2qo2BMbSrxI9E9TEDrY?GagxqxJb29^0!x?+-Sa3sf`Q6Yh zCnDd7QD!ZZa9RCbZlK6BrOSJTyDQGR;ofSE$l3YJvlM17>xtOmS^L^^%bx^op?#aQ zALL^F3--UI&elIdH4h(~G7?jruvE+>b%51wfcRg*PxfcPi{rs=jx!eb2i%ci{SI4! zlAZ6~$@tl{oIQ!X<`l#ZN9e@DHCNEiRkDi-5pK;BD~}_{zsF&|IL$;o6~cYw#u#ew z9*nz^KJCP?xjQ4`ho{c$U-Zs8v)F&>un_FowX|l)TQEp2H7GPT0W0WVu2=$R*n7II z>b#@BlXskC=PqX=j!h3TqGSJEeVlz~66%jr5}(kFhxscNXQ@Vxe@o~6|IrI4k{$S5 zd+&g;Y}14Uy0FXlK~9KPB=boDho9DMr_iZNQdslFo0!y;lXU?z-U* zPsAOnQ5j%RzD90`kgBlli}{V3cf<2WShDqKW_gFlw@(!~b?(Y6jW4VKzQ!JPQ^Z$V zleCau@W#2?TeFt=(MpptVhQ*5Yr?2gq6$T?#(vV-O<0@$L zmg8S&)(FM%JM1;f?_;~`M|-(G9&ETi9=z~e_YhChn4RIj9v0ieS!<;g>cIaeyxpf5 z+NcAuM0F6>T@44lC=9FMoEmo_9dN(V55`bT|LBTwZKUK9k|%#;rr|G zG>lm+<_;t(qT|6f#$BZ7vufm7DIy1vH;iwV^X5rAD0EX@&YB#*5lNg;9qB9oIW}eA zA{coeb|+Tc_5~4FoNf{pO&DjRLB2j__YDOy^({_zt|3TFrK@R>lzr&lupV~@&>h@ zSV_k(yDxj~0j3dqjs3u+UW*(LyP3ooi5L$t=YwW$n$S)&f@XuQiIM@8A@WOg5E4pT>7+oLz%<Ff87L*PC4D4n($py4T$@-$@B zHm8i*W|U6bg3@VQQaWv`z*m7kRO`Sg$f#`t8MR5Oy_pA+YTHs$Z97V;ZBI$H9U!T; zs%j`u1qs}MD#+3n38!TNOluAgNNl3bukd%+|rwb5<3KE9SAq*8E z3>6~`m7x6T!IVFpN=RBw`O`BAPk9JW3kgqYl*GJ{l9)SD67xdBQyL{PFEm~;K2p~Z zwo)jMc_HB`jqr3M;VF&qbR*?4rxB7C5|YvgNec-{>4c>Gl*ineFjR;zRG2VSlrU7B zFjSKAn1@gva~dJ36Xh{4q_pD;eG=doQv&=2dY|5>W>60N#gv77A?3gi(x2#0)O7u+ z{#0E`neZ$1XZkaBo&G|9p$1Yu{BTN5?xMfaU#Ufuo!mwLSN~V_pakVE`j9@PZr0!E zZ`AdK=5&2hpHvg{&-!O&OIGek$;urlS-E4t2pFn&KnFDBB8!yej)7nxsQLtw0!gY@ zAWtBV>PETC9RtaMWOYd(C6J=}1yTd4YCs?@kOoQ2B4@rY$INJsnQ@fOJc?suB*(@m zjE#%bxWJUa6m?5rD#pn;j+0p!Cs(Lhl-yj3qh%aM%QEj1W8Wh4hEBl!l(NDfd&@(q-?zm)R! zSC~(mPeTH~NZp@9srxrkg0e~3`wc03zZPZhx1#L*YLvY{)_l=?QLUkr<%*QDd@iLd zSEQ8Xb19jBIVJO7M9KW~%=gXrp>aUu^UtLW=Ao3qd@f}$o0Qc*o06DK^S|bQ)kMx# z*HRvH1xn*@N~z41D3y6W05hPjq-^H-l+8TfC!5)%-2Tfcx4(KYUofA_ptR9N8&S@G z8_M}_OF94TDCfVu(gi*cEL*{zg`QC7@J2i&Kx5t&sn44!*ZF;%DJT&dd%hEpJ~P1@ zYxM$tv>JBnm2o?%Fz{rB!G!}^&)_>LnYpxQ-a-5e%6g7@zrx)$hVQZ>@DJgE(f@Gb zaa;2e%tww5@+KvqN60}!yb$?6C{{LLeac0OelK% zNKR||BZT9)<;0G=g^`%j1ZFgUo<6sXr-SkzoVTF-MD`&tl@St-ygu~h66N&zFdV}X z6){VXv(|?%Wm%O(BBVR58IGX}!?oLe7}btB?n82UZ^jsW8#|W0SbbgvwV7PsQeg)x z2gnjGZU+abD(Z}c}I2?@u){|<9QQS?AO3s{T1$FfR|hN zu!V2irl=*7rya+d9Ua#ae1FuF-8<%}v$W=3wB`h~(*Xw~TNfGEM{C_=O(HfpMdgpw zEQ*#7;flpZ4QoR-0rY?ZS7lQG4^oFRMxK9HwcW6$wd3hswb8Su$ zOXxTWJ%IVA5{einlJ%Pe08)Xa$2)pADc;$50OLQQPVAT1$*f;xCu-ksiyh-k_@XCI z>mmJU53(qZ6;G%_z?tLp#Px$2htr4P#r?L;S&uo#efaHfy8q-Yw4$6-ib6T1Vn&JR zJ%2CQm}8+J#dwm##;$O`iDn?d$2*V9r5gJGi{$5(7oyC%5!`gxN7|e>Ip@3avh>lI zJkJPMX8brZ4>+syaZ=qu|8nT{9*x4KzuS998)q+LmS;wf%9q=;c&>@5xXFf{i1);t zxqQ&%#q?YKmMVIVCa7gFCVqf6^Hh@#j1q9Q7;8{{wBRjm4)89 z)zGJT2QB<2QDD3S{mh1 zoxAFhEW6lHBlRrx(HLKi!d+h)DZP+Y&1rkCPq_) zHZz(bW^kZJamrDJ5d8j`w&8%zIg@&?v zW<6*ht8dnay8&7!ox0@mQI}i+>XJ*N7P&NPk;{+vYKfSw%vR84CRob?XuEcBw>R6X zLewHxfLi1VQHxvwv}RY8W_B~XA?NO9cW6@UVV)14US=P}?~ArBfVO^!JshBx#{jjh zmST$s(a%-T+tSt-v#o1wgj%@c9Z1HAnJs8Ot%zU0h?w>9#H_a>W_>a->r;tY zpH9qrXJXd75f?s#5YwBml9w6>dlO3X5K4LzO8QXaU|+MT*%W$QMekr=LQG!j9qdhr zNhZYfr}n|#)IOL@xJe=0^rk-8a)h1~LQik%AnZ-J$wRp5L%2yH-1H{CyeRSIwTUTj zNKAQU;>e2WihyA1K)=M4!at0*p-OAPAB$y z1o76QPZ{#PiMOsoymc+&tnkt4*`fMx-A6s8iPzak#AB|?6OxPQfo^8|AF6)+>*ElBnEd}7xe z--Q#L=!b`$z_+nYj#u*C9wQx(~Vc!HH-%Fv15ob4&xK?j4aqX#E>CxDNcKzv3;j2KU4NSCQNYEFO4? z{MqKN+r#WxZ~1brin045G1rA`*|ff}7*4j&{rG}o)^g%}k`T$`4R%t<*P~5_$H*X4 zFSMfFh6gyWyaY_%6Oh;NB3kJ;wA?tf=10K&?Eu$LwjY_*(9$@C$~#_iJKV*t$qL}b z^zam(U$_hFLR`9~lXG~2oc_xtIN@xMIXt`7uxI;RquFG)_^jhMkSLDSs4rD#^3gtt z8x@$P$YBs?wxZ0iJfO!52f_=$>6~!j#nv?wS#A;JCUS@ls0zS*ej<0>L?W6)9E$PZGf@&7a6>Tg4g!+>U)9o~nVP#Kwh?EkpMXCfD9_rbg*GCwIjGj?41 zb`FI>N?7P=K>W@N*vtF^-pjd*HH(pr}VegFiP)E^=?4#JUw9qR)h-I?X@+)hMg1!oNN;HYuok zBYk82$4rQpv!BQoa{Y7s7TUQ-Q8~R;tszGIdlEf)2u1@ab|V0$6m@+a_Rod9ijHspaVL^~Zo z>EB`3xRX+;-@)v$6EdA%LruP-oUdmff%7D(wc|jo4Yg``tz!MNYa;iUC^u|BXf&_6 z@w{7;u8(}Z>$aYAU3fRd4Eip9zp0c&XvJ)we_#)M(E11NnWPZ24|-MjBVUga7l!+0 z{ZHuHY{LUs&5nX9yaqJmU+{hpwLAn0@k?k~q3>o&4@SvY9bn_M4*M8-;0L6ZvHq(w ztA7PI*4W6$S=oO;>7g~j9$%S`du9_o4zsGIB+L1nZ|^3;zrdZh!hKOn#2V&?bHt-% z5#tlrFS9q`IkY&Km~@T1DDXV4fke-IBC9@HrT zD!3yj3p7%sIq9{wS9a!QqJ=yBXh@&3tZjyWr#}1l<}Qv$a<*#>u8J*Lm4j1Ri1RsqTY0%i&tr~|)dg#w{b0op%{mh5`k(nX zW}h9{t-S3?6?SA7KPdR6_~rY#ETr#o28^*Umh|8$345|Tjy=AE%<2T(G>(%A_%!fz!5zU;i2DWkIAk7&{F`{aPoBH41(MKer4a8GxbA_W z4jV}&l57YU^WpafV!Y$-$N(w35cVKT&4z{5j9gUVNxT|jm-GX$2%`JYf6H3_{e)f9 zmne5x@4%yKZm1p+?7@`?}zj@@|z& zO_6Ie?D?0($lb>Hw7~vS`tk%?kh=nKOvRoflM!nl@+s~}MUcDm()Xdg1peD&ojE)1 zuoEW6)vg#d$$^)fyClUr52_{QgN5cA`z*ophuk2^@+K@OTVkSn*GgT zs;4=^9H9o9W6UvXkU7pAuP!hrnir`d<}`D<8g9-oFI6MWS>_zvj+<{TP~*+3&8wkZ zRI7ogUmI1(Xlt|ur%rpL1GsZK8Xdu%)5+)r|IS7iaP4$8y27WM(F5+DMo*Q`I3HhS z@~d>{tNJ6(Kw}X62OERIku<~@0{2j3DBQ!03z2F#zTCu@k3?Cc@co+KZ}R)o@comJ z!(?MJ+UO$VBE+167D+;j+^^2j59kMQNBBYgpfdDB`eAVMY|@*+&GU$U1fh@W&EWFc zqPM_jt9~5rZF-x^um6eG46-!?Y|Vmb&8HCOY5g?vc}72r(C74XaPQK)RJwj%KM$XO z>3_k!Tkk;*FQD~prS_J(%4fb^OZVB}64A_^Tk4vGCXQABL=4_NT2mM_b{hfi( zE6gk4f2DaPa##QeC`||`4hZA%rM#+?a&7T2Qvr<2H~JN;Gipfx*6R7 z(cJ+DGYAJw0SCR{7U*tj^fCIVW`u@PMn9t;?w0pA`h!<(fH44Z1{wo#=X{WH0o(!~ z%>W-m;T~oTQ_YPF0Ut96A03Sm#t4K8l*}NMG&M#Wqg4mO$_!(iF-}zg#EeHxCScsm zFeVxk5nrHZ2BD`Epl1s1_TH=SRkihffSY-Qn<9jpd4!vD2sgt4H(L<8Rc}=_^<#jW zd4!u`fSc`b%P1VCpU_XJ3kf~7^ppBYRg^Gv4q<2>VCWfDSU(FGnnxJA5HR#FxOeN_ zYPjA57@9{I8m0fO|BZYElI9VThUu5}%W5RyX`X&fzozN{s$NG;-oW^tr{C0XBECS_ zJVID4K-jx*zo*|*BgjovOn;z1z-{Hddar6oo~nAh(L9lyRU^n*)qtE;b;(&(pPW^r z$yrsLoK+d*tjgg1<#FV%${>H$Sckvrus*CVCx2B5@>ew`e^op3R}Ce9RXg%mO(uWU z1oBt4^YK@WA%9gn@>fmr@mF0*{;KihubRTq(ut#`8%E0@K&On8d>kh&I8Fi_C#}p2 zG0&AYN17v*Hba!Me=4h zZ`J^Fow-hRCT~^&@@ADIZ`OSBX3ghq`2XCx=#Ba%lA@hgJ`AXcZ)f zRwHs~6(WaL9&%`vBZpQVa%hz!ht@!HX!RzC))nN?>PHT(a^%ozOAf6rJaY4cKzKq!lUIM zx`F?v-q0V-$B&u9Sme3e?Ow7qx z81UHn{S|#NWAy<(>K#zDXXDFWfq4_~)CY6iR)o!lZjvMPe-^XbGoXFE3E$la-yKu# z06!5h_af=!Av%(r7Zx2~kslY+CK#9BEoc=oR?B3Y)YL1m)DOQDNfy??9 zTxmNXg<_K(>ft`T*s)xRU?7}y>8dVp7u7MsF@xf_2R(Ecbexlr>eR%htJGJ7bLjY z12ExtV1e)8E~gIfnzeNE&h*^~`J|#<6Tk&!nol+Z`7LFTsEjwJoGi+KzdrOtg@!_G zhm2Fl^&!Umhxkn)m09?LJ{0^l@v^_eub2}LxH)-j>4>&F(vG)!N5+%?n18>;Z-Llq z3GCObSs^W}u@anhKSE0g8+rDM_fuUGEfs6pCbXg4*>?IV(UgB?JXvwv@*~d~x&Iwm zjn$k}5#4X_-hgH2v1Ubb#ke8z_Ts_4?9?7BfA>MsbeoEx|VM~bA8>n7Y}JlotkY4HNmFW?3W$1RoN;*jfXc_ zqXA{3@f&W9hQIKG-iO(5y_F0}TK9?{d>_Pq2J<0S8=iLK)3r(4nCsRe)*EZfMYg}Y znscXv-460!Nqd?TjulW^3-(xRCR%GU{uPA%JpG@Sx}atcf(vy&zU??%ac3iIteq$G z3b|cB@9o7y%sv+M8G2#j0uR>=;T80DT#htcmsYg}xPmJv&01nV8J^nzFM`66j@X19 ze;mIXFdUbgz*;XcGuvBRJ`VYqC&h~XvgocN_t7x^M1p?{>^NsxjUnUGeoEq1g#IGs z7mqVeCA{fWZw4bXmd?TT6wU`+laXtdk@+D@=m%uj1C|^=xt+lijldeD7DqkN?I!p9im>MkqKyh-9Um8wO8hY% zCk6@y?E)g|@Vx%<2NZ1>B!>W9Ix#+V@YCd=5M3T$S0c0U+o1?5B#K!lRSNkK=}* zWJ9$AwdzxS0J3ub3(CrRbc9dLPeC0xZvJSV05#wj^VgsOnWRDB{__Ttf&0%7Z2vjI z!oc>I0By4-X=Q~-`znN5901i=r1mD0-jz&RRuXAh25DJIq+cbGhEtF;u_fHam=(pb_+W3gqynm$>uCTS@_QcKcFEy+h} zNjj+|`A8MXM@mSLG>|k>Kl0;y4V6MUtSR{JAlyRn2$I&3$9GFT59u3uKw~eD8K460 z%!u6S1(Z8IopPraQ10}2%AH<7xzp1rcX|OOPFJVI=>?QHJ)IJ#S5o5ibV{6FNr}_b zDRFuMB~DML#OVc;IDIoEPNz}UbUI~C=cBCY{FF6afU>3wQr2{;Q36uSr&HGSc*>ey zKq(kOO2G(H3Pu@9!I(-Z7(qj1jZCHdi&91%qYii|>Kb*yPf!n1P^MD;MM=uM2vX+7 zR7d88(6~#G#+^YLcU#i9Gki4eHl%T9kj7n;H0})2xTlcDok1G+6hmm-HpfFP(zqM@ zXxtg3aW^83JA*WCO&WIwY20l{^C*C36%CTZLm zq;YG~xHCxOu0>qg?Lgl*>Jra=DjNF84snJra=EXfT<*D)%e|a(x#vXFC!IuILGiE zq+ee^`t^mRUsogjx*EsxVA8LvX`xvUp=6M&_4oRFHBSGae^5j9F?~#p(Z}_1HCF$q ze^i6?34KD1(m&~+)M(BHb2t~w=3Fp`bnVMIBg`Qcdk!URUrgEBw%qwbl&#&6QnhcT z4DA_|71E1xvsY1Wc0FNWu)WRAsv4i>G*X>$FEB|zDYWM9UmQk8R_^G*X>$G?tr{AHx$*Cri*8R_`TNXIux$6v-ZU_R;i?McV)L^^&) z((#*^;|PG%^#$8SeE{si+b^DecR)cg+SdUL&6%GISC zSC=KE>=!3xzc|;Jo}}y-=Ss7PH2pPPZx(UAxsB^h7p^ypxZd2x^`;Bgn`xx!cjkIC zjWqqvr0HKuYW_^FJq<{&pT!lZD_5XyT!FfB1?om=;n#8<>PG5(1Fl95C?Wi2^BeOU zHQ79D9#)ggZ_RJj`R4cL_o}aX#5@AoH$Rv^s2=7~^Qh`=9y5=rK3v1Pa1HBD+Wl(M z?pKp`znZlBi@1_Cpq!Mol#|k*5>f_WM`6IE7$t*)lgZY1RXuxeYgy2= zA(}b!;iObrovUi7CaRU{sCuY=SoMPKhIT5i+IHwSpu8G&e(#>;)m8m^pI=_BAJDHy zd9@4sQAuw=uSb4x+LnQy4QOpptyL#bPWm%69easn$Y?4C$t;y|My(HRVQp}tIA5V| zNS&?%SYHc521z-rueEW5p_yt6zTIAGpc5|I!wRVqs=TU-6L3S-T(whOp-p6v6COkj z&cRtubO_bOy4(Wvnr_esae)(_gfa@_j8hReChB3uZVBmJ-MMBD8QWmySY4cUS=yCo z*PvaGb`#ny$Bv#lOSh-pm3A-M185JWJ&N{(v7={>*HdZFqMbqeTG~r#-$Hxc*g5s; z>y5M@qP>OocG^$V{uk|+U^mcj(0-5hN3=hu{Wa}xX&-~#Q2$K(l-L22b_(qRw2RU% z4ZBgGBJFCl>(FjQyE*N)v^!6|cuKLddlT))Xg>kFLEu^1duYEx`z_iZ(Efz>m#`ZK4$}Uf_K&oG z728y_lW3>Snm&7)S%`LV+GS~1qFsY_J=#q;W(50bP)0*mc7QRnwlzjv5OK5hP8)$* zq^1p~-H&!p+MQ{)rQMu%d)R4dEonEQU5|DR+LdURrCkMfdRlqfC21F?osV{2+M0F> z?0jja*r}&z|4jQB?Qdy+EjHUgW*P%OvE^}X+b4-WS=gx^kt%O$YuZg|H=tdMw$wat zs?0OCQTydR*SpX7YC8r}T0D4|3iE zluqdf=zB%I8+bpkA2B6{hMjIMHJ6z;naj-;=1TKsbCr3Ed8>K5xyHN$^Rkfw2ukT` zzfnSd`k`-9&@(BenY-M+_xb$? z|KEebn`w>YZ_&m&`3F@Dd}zhNg@#iqR=Wz|R!fJzjB?;SD-V9OQs6@?jq_ZAU_tvd zi!|S0*FV*mW=uCOHf9)?7?&C|jakNQV~#P`xXhSmTn_zL8O9aHmBs?&D&uNnp>d6I zt+B|s&bZ!KY}|ko!V+Vtu?%N~<;DtQrE#;d%D4q*h1-nVjn&2)W36!q&J1@NcNupZ z>y3XH8;pC5jmEvkea8L91IB~KL&n3#CgTy~QDd{Q#n@^*W;||eGyZ987hO^~VLWL( zWjt*>V?1j-2fbX+8~-wP8+(iwjDH(18ZQ|yE^nHZmC=8*1C;ui*r$X-9dNMopfj2MR(QRba&lD z_tfX>Ub?sLqxkJl6QL_JAQ z#<^;Wo{DqTbbYa&p)b*w>X~|$o~`HLly#Y&r!Uv@b%wqIr>zD0Dx9_!>T8TwAX{^h zzD}fpLbl_LknFfrFN0)9$kBup&6^=T^A^ZVFWf&oET~51#)A z&)I?Jzy3T8T;2P?(d`9p?nB_@KE{obPl1X1On(kc+?T+s{|8w0uYrR*h`S@-0B;t+ zZ4hAjal0c8cSnBKzu@LaGUVz8q0=sJAP;bDzv<*=EA&yz|6zj8bN$?kqSP9h4(du==f|JCLi{4?=yBmS*r znjrpN7fO?aG|iF5z!_U?Q@yC(54;oj9Bv~pP0lqYXcI~ihm%4aPAYLYvfDGD3y!I9 zzldib>^yHp+}lx~6x4BzN;U65sc8}mSe*wLD-Uokdk{-Bwr}9>y6TLZttcagF~3x`U6b^#Dj(07>oM-d`~&7Hz)>P*wd!uh zF?q(RrXjOQ4GGG)d>H*9^NWo05^(>b8gZN=4`+M~5%?zTzN4xO91852D^)+j)Fh`r z7pehlbJQ`Z5Be4L4*skz4=z$&0e?+`PpDc+uS0k7)v6Zq(@C{em8AB-uS@)HstRbq zP0cseTJw}zZMIcwgPT=J+)i9ACeLIw*nC_K4z5t^XbgmRR>hL0sWte&HaJvGLS5Hl zRaz6wt42ecfyTUCJ82HmZBtEyyAY>`x-!olYHgm6;J#XwO?m|JUxmAb8l9&d-T^fx z_&aVHOW7sVSaX-^r<9!Q|G-go{aG=4P!5cF1L~TY`5bZLn;GVQ1uTbJ?3hNnjJ3{o zTc_Z*U_SMX#IyFnd{Bhp;I{1bu}t7r)Hlpn2gCkvQI&%Cs2lwT zd!!o^GF#9Ff0lU@Wydm&(GITpr@9b#^si6Iw8mIY&;(vm`LZ&Y>n}gk2K$4{V;PL8 z=B`O9hjMEhUD`dlB_rfz`rgLZ*q z@RK}be0+<0{pI056Yde1>oySfZZOYLL(Rw7$JawY&h=(~?7?5gP4uFwQSe?!*r=zP z2ZuwG@-fKS_(+`>tgPxL6^4fS0jjPpZ+#ZLQPsp8Jd*J@saobj+}`esxqdeGD{o`( zR2X&BC<`X(Zv76l&kO{ObS2FatPhW=>cK7izrx%NX&s*7qVQ2s78 z4BBSeLsRk!^I3Iy(oVG^=_uR>RlDG?c=ty7>(%HaXp4uWhY`W^RVgVOeq&IVVY)uF zlh?QY8~9drN!qQ-=gE(KQ3hmCNcmM1^wrySMcgs?uHj~0b+K6u~yaq z)wl-QriPjU(;lW5Ob?iTFr8pZz?5{{GxZEeMwy|?>*eY#$WLftZn92bzpnyq)hd|# z1MRW))IfjNP}jmtgt-`|1XEr13VYSeF*gA^0b`1WDAI)UfPgj6+ zi3;ilnEJYcwFd8{c>f0TJIqI(k$BeoFkiyFgm^>nej4vO7BB=YBV=nt2cA$}?<&t<>CD2Is*Vu1Uh} z%*>2g6MQPJDTH%|-_(lu?+XhYR2RfEN&8d}*W@V*&X|iaM$s>rx0h+ac`zCKcN1gj zDCW_f7#AZ@hpC7+S4|D9!+iJ$=CeC7x897f8__@4tJX+!4dQhOyo>c`s=6RJ7xVS4 z>Qc9_r?t(SpW3(UEmEaFZ-v)El&j?$Ab!)L&n)DvrPpjI&BY0PZ=>h-tcwYp#*`@MI z+3*{Ub$h68uCCY3twXwz^;ptsRWj*$ggpmYE>ga%TPTz9?^oReT`{N6Ru`E|vEFRM zTD4Oxz}c%O^sO~DpGP~dgxRb{!5oFT4rUTeGnjcWBVZsuMRkE0YA(Whv>9vF66{+x zBi$0{$J>ncw~HE}YpW~81m02&Vd?>2IWaH_c#I8L_co}DvF6Q$sSzlm&IuG%<&8b6 zhc2R~C#9-Oah}W2b?{v^)V#nWYAE`A9L!+&U#at{`SK1_Kv)H}F_@xez^pTX*GhT> z@bWtL7Avsktw2AoKtHWeHDPMQ+z!)AKME;DkE$Yp$!b7gpfwNDi4H-|RI9)S)dJ=Q zm<*WtD8E8*h8h-lRdr9As3r&B20S9aq_0#5y!*oRf$0jkn-AGhJr)@3mNh8d}+sRej1K>Kun=^}ai>x;1EPF!hU zY1grU7inYpK51iVlb$fw!!$|y2y%n$K9Kh61#^4gapS_k<7y4wo$(nc@v3esu@;UVb%x^G9o%dF}KStOBnCoC_I7agCim*rQ@Ka8_(AzC9@-5{@ z*2Arj>yP^fr{01&34{88{XhDR`qBRxggpi$`Qk=Z*c-Q&`2Qf@a=WS~%ow=k8xf!1 zbE)ITcd?CjSbI8uqpiS$h$LesPaTIh+*-ANzwGQD zpBgW<{BilCz4sRwpPW|ZjhU04_^I&cdFnpju93!Bv2Ol-#f!As zezd@ZmnXM;^se2Pyxifo?e`~bE8cQ%(ed5t7vFVl%}oveIB{Fv=LQxYdHL|Sk4-FF zyW&lsPW^f5mfPN(v-sgB?kSz#x^wYYH?A7i{`^YkH!&-9*`SVJlziFM6K<=v_m+(t z-p~Kblv__MTC-~7(Rmy9tjv3?ZoNCZU#U0csk-C3Qg3(a{PWGzuG*RJ1>?m98T#|a zV+;NA;gQj%G5g2sj#d1iYI?@heMhE_DO!J8pKFr7tv>wfR<_-M7;2Tb_S+Uzv$l^xNNI)w1`}yWjud#QPh6y#11{>pnYG_vmx;Hk5m{ zY|Y(sn?BI#<*(1XCEuPsn_pgY%6zH9ZAA{;5KMdeKO-vCKc`Ij7Qru${5GV{s;OI6 z{P9wcrK>Ba&aCXvID|`8z(F|ZDuHiQ8RvqN6pv96{GNs3C?O$NDe#yoaF;6FaomQx Rwd<*W;7}mciv~uPC4^E-!o;Cv*}q`>BNAHC2~?6 zmzb!n%3EhlNXlWNdb&I@F)Ous(#;^kjgKdUSS7_LBob%iql6n+jn_6w8R?k~GuuDH z`wn=mP0Ab|tNpa*3%oyxkk|#O1GAE2&sl82`^AKm?oZG3_Om$D*hC1Ef#r+K8cLeu z7Lt{Ouulnz-&9>uQqC7CqwwAX5LAr{!yj!QV|luLhw6s*Zj*S;5W?Nj5;8>DP}1FO ze2{L6NyZQT#*&7LEBt|Tc)bZPW1E}W+TS`87aY%Wyssq;UG&-ezGLoM7a2x8BfR`B zYRGBtswe;QtA|eo!zXH5uOu>Bi+@;8?({Z_95sCM>ft|c44;TwlHL=48XqJigV3Ku zPd1O4K@>!gO_uG(>#35NYs8nq_GCmMmsVUt$RDxH%ZLBkiCDXzXy3k-_NBhdKP@I? zw)!j@uu--S?U#aFi9YlxA;uCHuFSVcUtgwa!>Jv3fYnIU$vhka!kF_1g-mF0w!NA#8T zh?hLAudE;z@;QBFebn#oE3;&op0cm3A$EFi`pQPcKoLOVNE2x$J*1V?kSbD5+7Sys z;zNA#(-Z$mh`HN*q88RC1HSg)0g!j|f>%qXl?hxbab)$)HYlYup8&41R{A_JSmJ(pt5 zYP?&IR%%g4e`cXB2kyY$Xbam=u7aCT(~MWH;-0gxUXA!(7v5r zJ37Sn&~0hO}2ZfBK8|PdkpH z2HR`H`y{TZxu>4~2K+RCO@ZAwXdO`|rosl1{UDrv9Qre`H;OMA4j zUfRJWWpzzmZFMys+6*skW_#dFQ%7@~tCu#bx~5Ir)zn(2gYJTpt1 z*womrO{poXXl$#{dU|TxDk`+q?d{EB-rnsURbEZ4Ro<0Yq|LitTBgmLuI8DTo|fgA zGAJ$~Ei=KZy}MmJuJVfZlA8K99Qyx%?vnp02!sqn1gp?b^@w6CURG3f)R&;(i)e~$*F2Dc&^Pp8wu*Hugv}wnoeb?SJnn8?mfGi2pb5 zF#|{UuUyw+-xbKje`R_TvWd2zX7B&g`GSs*GA!}0*8b~E@vn9MmD6-9t%wE9$ObW% z(kQ3nfu4U#5##@Cg^qOkijE{PZ!^S9LB>?lL}?OpsU1o4zds-7g+?KszX{H5xMC5a_LI)?u`B6W7j+&mC)Vq! z^>MyWK_!d48BNxcugDIvn_(FZ(~q%aY#DpTo$+UanJ6ZiNo7Vd6-*t|#*ATRF-w_E zGD}&o>^s>Nxga-`8_DhEPI7;Fh&)=JDqkvJBR?kpQGQ%e70j>$MlP*R(gZz1l}QxsKJTbp3QTI<3x5=b&@ZdFgz0{<;ud zjBb!_p>CCKgKoR-ite87Pu+7n3%iYWKiNIDC-(aGyuHSLfW5uFoBfyeTkW^opSHi@ zVDCsAWsZWQ#?i#l+|kO>!O_Dpz%jz{eaA_TvmKW@e(CtN<95ey91l32a6IMM>-dLL zl~b)#lhX$0e$HCwJm;m(2c54v|LXjk^B>M{U0FAMH zyV~8t-PhgU%iPE8mEN1TZ~uAw7E#ucC1eBHLUxgTjKCN(ri=|^$G9+FOb`>w3}gl~ z8B8Hl%``IIh~^U91(+k6M`Rb}-zUa(@E#1^FcHNbrHG*-3;Ag-5T8{-7Z}(qWR2@ z*jd|cwmXMtD(sbFG_CAi?HAf_7NdFD!S4Sfnll}jIIeZv?6}QwkK=yF<9*RAMl>6o zzWlFfUUa_h-0S?%`KhbE8~LwjzUMZ5jwt+3!f>-FB3%GZZdU!Qc{_IlB8 zsVJ$g2h*C~f%GRK_t*D|w{zEaT-*IXT>rtA2RrXS!wu~mX$k3PFYbB&_3zHFcTIX- z?|gn|E+Ka?<_Ni)em9c3_lMr^dk^;>=-u19yLU(LSG{X{zvx}m8{F$l-~I1@w_n|= zynUIFOQp2-)(^K1-mSeMzlpnQ`tJr>cdY`gO}uga#`WuVH-5T)0I$|vUqRo!zWMSW zSJKa{`PmHP-HwibCPk){X=P3_FPV>QKkiwN(B)(&WoPj7lI)i3iR^{kKyD?slhgAD z{>cMCh&)UlFTKXAEU6^Vm%l5YgxA~TJLJ3Md-NJ{!kMTyM-S1_TZB8!zJGeFX+dv; z-d_AXtanuJqWJo}Uaz!(-V?p&eWe#z;*G*Y;iT|UL@CDOWHw1LS+Q6DChH(AL4UHt zKq32qSRT(#|Ia)BV~Oo#N3rj+AF$)uiR>hHvh+SX5$n%l|Et&7>Ffe_32M<&cF%ur zMS8^^VNd?2mOb28W^l_d$2nF(^a+dWvkK=`o(M#Zr!GT+J8WcWKjdnEVoJ=2IT=7K zh$XQi*2IR`5-rgYJ7P~9h$C?#^jXH0xDj`ppFMF^_wKs`_9p?jz6X(D5`wFI7zrm4 zB$7mtXcB|F)L2{%<8jZGi2Jf++=UG$LvSWf#hq9>?rVqQYESPBhm&kF0(YXhB#(?F z`J{jpk|M!`6ypk5imPlnS%oXy`{YaV5vk!ekaM^eY~;epJLCju;bO=*GL3YS9!8J! zlBYPE5r!j^$ZE!oF=5OZ2PPWlv=AnY>|%y9HOvSmmwAV&;L^wxW-jwFGn1Lkd`W&L zvl#`sL!L2ehGBRzovgvNr9U%(ab#j}g$ZTCaplQoYMC4+k9n7=(=R(V-@MR`s6 zv+@_^4OUNiSoy8SNMo!~X!JDwG$xw<8bM>KG1KU4%ryfv1{w>EN@JsG`X5Q%}7mwrchI)Db{S%lxRvdjhZq|xu!zXq^Z(WYicx= zntDyXronidCYzBlaz>wF@$~r@`J22VugO2;4S7pmkeB2>`Hegze~?GyF?mA%#Pj>_ zxQ@9p9*igB!}u~5xKpsfy@Hm};R0mmUCZ?JBl$pcKXBIFEnMKU!xGFAXmN8#2%bCxZ#mv{t z7UnBvGqaW1#%yPH2>k_9!Avk01_%~{rC=pk3pRqSpcU){d#)T$FduRi+$xm|8HlI- zHrzYXJ3IQM*(x~T`Q#M8m|wy#<3Hz@@?VfzJawHF90e!-d%;<75nNe;RdegOFIiL8 zj5TKmaH+}z%7ZEom7B_4<;sy?MNAl8{HWnEZT){ph)@2Xd^ocfNzIQ4pk8LLv? zH5jk{P45r&X7VXH!*5YJB>c7%|t-fI}n(S0BP|sJ-QO{M+ zV+XQB*jP4&EnzF!7PbRtuvT_BJCf~T$KhNyo}Gqs)m(NdJC9w)u4mV=+t{tjacmvC zk3GchXAiUAu}9fs>~Z!7_Ivge`!oA1`#XD@y~N&PAF_Wb8TN&eSN2y5N>in)(oH#3 zS)d%D^jAhI1C&w9BxQ=SOj)I@R+cL}l%2}4$}!3b%8!*3l{1twr7d@ryQXR8u5&lI zo0`oUhHvDX`Fg&IZ{ZvGUHmitIscRk<|4Q#uAXb)int+Mte_x2l6hPeSIO0IbzCF2 znrq_La6fWqxD(t-{vLmy|Be5hf5`vAKjNS8e{u<2A{WQSbCJA`x8uk1@A0Ggh5RD^ zGky&JKK}tfo}a)^KV-k3Mx`}3B(6>rVk@V2~`x91&rQ{Id>=N)+` z-kEpdU3n$1;?=wX@5Oub0em1I#0T?&Efd^%ssm+|F%1z*Wm@zs0{U(45V_qpG=hkPsF#<%kw+%4`l_l$eN z{ms4P9&=B*x7-`3+(<5;E8q(GaojK5C4LnD z4tJTm!mZ^!cuzi=AH>JZ0m`>KqrS zx~%#|^|PQ6j8x&O2vw*mOcksOQAMhv$O>|c-^Op{xAS}W-TYqu8-72(k3YyC;1BbM z_#^zc{89cpE{8wHU*dn^ukhFTpZUxDRsI@(o4>{XN{*Aw+;(mkcZ@sEmvDQyy<9Fg zoXh4$r~*|%TtCi)>(80;gpFh4*-~YoGDw-s&Sw`W8C&_mFS!wAn!Rl6|;d<6mIAbWPW5gSEg3Fu=Kw zD%b@S0enh^Yp290xCD#_v0#Y=uC9bE1z&(-u)L2-nBJRF%E8J$R>A+G0%dy7M0p>q z>ElayZ66=O>-wmH>D?B<)tlhCLjs?cl8t@P_TiIL5nA_^1g`P~Pbm`bz+3w`0dMQ0 z1>P=!y8(h{M2T_mu0E#0^fOUPC)n3V54>Lj_YZ^|=%W`t*vC`&kOV_}W1%B+7t^hQF6!g5Vz{m=O4s1nz3^ zA#xw|SbvmYhQqjLrZ6=AKS?kn;Ik4;E=>CXFf_L3B^cVj7bI|(M99THrocZ-FmvHc z63oZ&FA~g57*7KfW;To`8w&2Q2)Wt^-Nv;(=rY$OaQ}q|hCc4VH~V-7|0=<#;ad_6 z?SR`7xMRaZOCQr=x;|wMxGTZ9!}lbZ{_uSXW&r$~1mg%lkYHlq-zAt}_@M+73jZO2 zyF!9H4+)xEk0qFF_=yBl3;!v>n%%9+%NQ9XMzm{M=f&Y=f9V#9=`=I^yR)YSvf`*aCl2HN~kfQ=IqvJvBlP_R> zzybq+F~ArC&3~~EWn<6}cmY#j2AqI7pfTPKTL4Qy-?ss_zz^5~dk_FzfGbD<7&Elr zm^eVU>y7OkfqnXjfPE!!FD-4$AIlsy4_?j6buH~20cIF9$wmZ51aw$`(0p|1n%Oc^|1|t z{$jGgaPS_;1|z`x0J%cPC^H7+fstSwCv|;-<;O;&)!t{7Xft}zTfShH%0kqwt!EQj?3g~%`Spt@# z{5?$9--PltJjWv+WCQT}Lm2rWvqX6cjJ~4K^F4j;7oYvH57~DTcvc~@i{NK0gMG*@ zN#N;)$bON)a}1GPmcSDYkzJ7>yvX3FTE7Z%~xiVLb``e_*;CP@*kz zeF-J@FJ}RV-}1eIc?p)*VO&s@*uUIRf>pvs5=yjJZZE;o{X0ppbpIX_O0-w*DWOEH zhp|OTnOK8wHa^y5cL;K|`fSl3{ zgE2lS8jJ(^Hn0n2j5qmiuovY5c%Os@IV;}}4xpaK@SubS<3@f6e2e-r_=tq238wKy z?rW;xA0;#xZ}M{zno1bsmZGVLA4zEP;l~o12KcFjF>T{B2~9SB@r}6IAXfA|ZLy)_fOye!oXr_<0p%k2B0%ml=ogzy;1`q;ADheI2Ffk)P4Fwq zh`-G(a2w@M;a+eLW#p+1J?1}9Mh@B_<~E2m^BMdE{E70{Fk)_lSTkS2G>$J(MvSxw zjg}`w=no4(jj|oAkD_i+-ixlLw;pm7w>ST0aSXG3+nFFM$Ij_+@aQ1drHigCzK+aIgeEzaZLB z5Qgnz+-bul=zXXbIYFWK(b{+kf-$8XCPAMAv?C<=Dg5E!BPlF$E-lKhZMuNjQ(f%aCeF@VxUBEK5e~^0=E)_=JX_0fv1Mn3I zl?QwkT*D)m8+=28rSZNcp>l9PDK!O`P; z0Deb3%@d4UE%KSA{qsnI$M$qG2{rOcCzoJ3n3dqahE)xt zojL;vg&Axp!P0GLB2)EYP4O~PeKoE)gkvO_{53m5MK&Ddm=izT|l2z zbjW`SzXeAA>yYzmTDFu>KZcR}6oY9n@}GiFt%we}Pod8`I;{kKcG00fDD*i*=OCfp z3u7!$H1s$SYl?;*AL2_fplw6H>fCXye+7F;sL{_lPYHZFMs!{hWGCzce9<2Czs_Gm z{QwRGA;?d77M?A^rof*_ zuq7}(2EbOrbi06Uf#-sGD0jeg-+*m}X`28$99}5Fj)WIWustxwIfbQpvP6O%1uvCg zX$~v{Utk&9N6RHxy3Z97EM0b`1dDd)R!OjQy)_an&Aqh}>^is)mi9G$53pO|FC~<; zJsTw0I(U-=yAS?Kf;|M&`~&QM_-hIFFii7oJL?!yg3HE20 z<`ZClh3WnP`#Vhc0oc><0SWdJd{BbD1=BVG_90B$0ocFbZzYrrd_;nM0n_#YB@Z8! zQ1*w9Nhk&QxP;OaJ^@Z*c~_Vo15gfy>9GN20ZfkvC`Z7wtw2fh_eTjO&C@dy$^iH$ z3Hldvy0a3>B>0?!G6g;_p)7+hfQ#5>6-?s=l;tpu1#(>30biC-j)kvCD96CP63Pki z9SP;fFg@=80CDB6!g!COX@=!Mf%@yPzJvz3 zV#i8ou#TNlf^URX5@1c&(B^#|x@j_%h?f-8c}CAcB*00}M@wvfPQ-}s%n1pVB|&PIY@ zJlfG10S^6TrS;e@fZ-@x!r5R1$}}E1 zAP;5qjonCqKH+IRia`m=G>=L_8OmxH

1WqRB+)`&4rkF^#c#(W}7`xx-=!VMBU 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%0A+cVsA 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
Er`u0lNSZ%dE!ryx%)Q2w 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

E7;g?fP1Z=0zxaK+8v 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

*-;fuFG$94_CC(9B3h zq&&Ki0)v^vCKVUs+Dg^eHV>~H6E8^s#a9}gp`J#*QTt;g+diJIyC%(E}l3muJ)AT_MKvWeX~AX`*}tF8|6}KBSku}3Cm`pU z=T^(pQZq#|O5^fS;x15>iYBO*NA;Pswe&K#PBz>Ys1CJQbjO%Sr?yYT^Ffddv+HzP z=na2)tW%U{oJ|th5-Lv<{gtSCE2O)CSg+*QI1%l&5wC#_eb0Wli%SjN3=i_Roc}>c ze`KGmU^|loU1kIB|5V>!%4;?+Lvm#09$`oD1iLDqS2`v1=hRC|qTLg5%l}+V161)I zNb%dIr@|gdQb@3RFHnw++ordC*Bm74ewj|`H@dH5lr`JknbDEmk^e_0c<++{Dw7V! zB0C)vDwa)!JxSodi|3cO<@}3iizA-C{gtiNxtj1OG$oD5syVMT{*!!X6z730!`^*~ zBWEIMAKUJ)(b=m~9@l(vOh~g&#$yCPvA;aT#>2wiJKO%aPA^4zxDOz=MRg@!Qjckz zL06~{h~LDu)7DHmFbk9tdqtR1jcaUY-pXo%z^8Ti6<_%%u-ym9bPNii?q*2KP6Rzgag_{taqQi4M|1}5Wx_J3|H5Vle^V0C4pM2zpx_5Wq@QuEhNA40v=QhH9^L-z#}_Vldb7rFC_ z4g9LO$jm5N>Yx2^FZsRay3Zm{ibwc_0S~dsXt;HXqpl<{Kd?yNqUdk(EOyX2K&Qiz z&f?w8w&CqJBqofq&Bs{Y2{t}e76m!+?HkeM_IP)K1O`Uf^0+_}Mh4<)_r!DN0qdb@eg=o<0DnQBHCUu(0=|R!u(X$2Y%xnntcTMz}Bq^GBL>r z<&vVL3F*nz1<6U}<%(QcEjj>eLZLJ5lXo-=_yZsEemOsc!fv18OKdbG*T7nCa9_YX`>%=K-PqYw8P=Nw z^y)q@GD3^o(Q-pJ84}Nw9Z{uVtkP%XDI&FR_)Rmy59e2A_aBp{qU#ART+1WM#x~3f zxSP|dcX04OFby5rAJF7llbYI5nV**>3n~nf1Vx*=heaFJ>*g-QN5}DU?9)nYjmw~Y z>w_*e+g`mrle$hYzX4`i-`{<^8{{L^dsT<9R2d1n=c-vqD30>8VzTUqcLRrV3_ju( z=O>L)#Fyol%c}qb=SZ@`3A*!rr9p%mdYB)yuj|`ICI(ykXOa>SU>)BvVbxDzQ8Rn^Z@iE3W@Z+zUBBKmA?%QNs_+ zi^#@R{s$Pc&KTlKJN>&if%x>_y>s}_-W{oRZJ{sd6Q)u1YfN5vT5zoC)U8{gh#4M~ zUL@*;&sfSnLb(2WNZX~mFI!by+oY}@Hn)SRhJss946-lJY5zSicAHfTX;yqueERRj zFCN28(fZh0&$_(y!K%DWS&<~$BazIp=5}=~Ni)J4--GG0UETLZCz-7K*ZAvqSqC+gB;v=37yio+Ql>$)aUy z!8T<N5Kj{n<^UzdepuL}v%Xli_tI@ds@6 z$V~p9^Jk%DAFLYHN>D+0F&z7M{8xuswlFObrUd|h__&LGl~f60XZUV@!t~Xkytz_O znK(BrH&hA7{0IB;caVrd3_@ox6FUD(t+vd@_4^f(AO+_bY84DhI`XyI72t$mW1QpK z*xPQF(u&XV7-U|}o~I!5JOz4%DCwiO>9cJ1Pm}>6O-8hT3V;&XpK(dCl0-;{=qy;b z4)q%MO!RSdR&))uo#;GYbP=#uj!k?B$qEEGQLugm+AEhW@G_%@RGbkY3zLV-;|d`a z^U7mD`~a6q}G3Pr!VabJO{+7cQH>!o*_PPAeK27nqfrO^eTr zCa0)Vv145N?Kfw;T}Js&MB0A>pI(pTcB1HDo$Uy&_*SsE%sWt%vO&7gseO|bkGZN< zhq+br_H|saX(;S0{Mk~Aq{0Gu3dX7dP1}3;O@)O6_c9` z2LH@;{Gzb1?L4<-)Ok;V{?parw8X@4s3;Td=Wb;& zIXZb%mL`)S;m($&W&uBMcgS|7I}lmS1*B>~wgcSW3qVY`aiJHG%yCGc4p5qu@{Fzd z?S&$*rM;{av3UjpUDRC6EH|4Y57;Sj{zDyqPGC(CwLIAVq9@_EeZ7;qI{xx|s{Q(@ zda7K7qP(IEXi;57EqV{{(Sl{~kdG*ma#CQgthexhB@RTo6=}QzecXV{LH6hklFM&F3Ouln6YhU6lJQSE zSa7FCR|osDgUvs7u1V$5q4~5=opXQvmgPU*y>X}B9t(Y|9nMH_X)IV0pOOpBk1hkng(o5z1{*lKr=D7?wHo zQ_@8*R)TAxksyzid(*=fw$3gA?jbJ0LCJWxY#gggI5^XrAq)Rq3)4FB?UysB^&qY;9C!b6;9Hg(Ch83ydu zncG`S;;hLU#SQz2+_~Q5kjyC{x@q1o#71}xg8>E4I?Z(#M zWuN1;RCVOG;_>yN<=%zfa{Ejxc& zxhp!fDSou8tyq z-*`VFqybrhWs#thCN!cl-kf%;j%as8u&<6>O)3IF&%UTQ!DgkVNz!AJi611*q-qL} zBi3(MVWK*}7YsftuFXPXnVmG4(Nz_iLn3lH$4G~`BPl<#X(jU7ddvi4Ukwc9#+6%( zFq7w_WdXs{6_cM$#+m(g_VN|``faa@P^fzNOSpnW%DMRTC>j^*Zg;=}_e4LSuB7Am zwO>Wo>7Sd~=TNa)7_oV~qpdz7c8gG3N20wlB1S@E(j+7=gwytj$PLbDzD)HNZ&|$l zP)O?9B7Mlqn0V2nIA1%%hE$)N4pi$m|A#KOi0_5PGuVDCuvyebpO)RfDc*J7x+H4^ zGl(uAn$b?jb&t&;Vg+ZDh6qbfKPf3qT9uDEHI&_l7E(r*BsUm%mP2lU6^W?!%eRIi z=|IvRVYXBfswRsV@k1GKQPe{WXqV)@0v>2v5+*6(F-L zlY74jO==~P#hfG~KE*3KlDenG%Q|nrys^IBjOwqAoa*NZzpl?usG`c-AP7zb?-C?D zW3U?5(WkV|J0E91{P6qO_s=Ql;}%sO1BryyK^gdG7|O%U>pU$oKs>VynYDmSs1^?~ z#jp9NHI75~S$JA_jmc5w`zR+lib_1=;&mbuts#Mc*vz$gpmm_P^Jw)UBooar+{Wws z1G;tY;NbQ$6Q-AruFF^{@u}ukZC|zLz)>VJ`u3I>8AZZKKZ@%a^LdD#O;0Ml@e{ z=XX|?hp7Io&>laEBJcekJmrY?l>&MMV!_LYyTtmTqco{utK0z;mL8a z@Q#xvo2pq2VGy9AB`p`r%h@pc^fhTW8e{AC=)@Zc)q4La66(rxYxvLYb8>KaCf`y! z#zFS+4b__gjlUZ4(0{X!g=M)N>8ULwOwR4}n{FG}KyLrZQB}L@3pTqnxYX%G=R`T? z$9>6faR{7aQnQtS@*(D8BGSWUm@O2KDPae=7Wa#aPEh@JjIC8eDo!v&EBViVW)p5a zJ9TE{{BUyxo~@exe!>X5=C4|OKS(@j-eT63O*_Hhf0?oPJw z1pDT};NX96N-)HF(_;`lt=KyAfGG;#MeH3U2Bk7<KEeelA>ejf(=gFc@VUpl=d$ z9K4nuHVypl5J$J82wdm$OZh3f>M_x68U7lo&YNuI8O^bdu{%P3gY{H!e#Y~&2+zOw z2mKLMR!Sae!M>~qOT_pWWG^v(5y0p_<#jmg!~XkG$n=rf^dQA~clXy9>FAt~O(P)+ z?nm>v{3Km4K^Cyx+|VUyEiH9opYqd}?mR?FsyQGd%OEhJM}GomPl?)D2uRj@ft}3d zmrVv{wFNG4Isk$RyqS1dwO$N8aj|fS{xXb&_&cc-lAYM-f3k#z%hEtf zsa1{Vq?vK@5K303;J4Xv^N}t%Ai=d#x^^Ol<5f3>_oLAiuqqEuWK*gEul-vTR>FqA zH#Fvp$NT`n3+P`ZqlvoS1+DUr_501t6Ym8kusi~SCEIdZv48yi?KucwDX+)gGd1c@Z zE<2c{YH4_0ETA2TY zT4+pUS_Jm>iPn|Z*Pq-tOG4baFz>F6+`zzyDZG&yunc15!sJxO{eBM`*-P~KaiIib z>1)-&#TFDT7fiwatUyw?^tAd8lAxY3+hZDIcBeJ*XJTQpU_1ZGwzZ5i?W6ZQQ49Ry z18gW&$4Lm%k^q?Qo3qG<#wS2#BZW2qG@Q|L3KfNk>;_9vmjmRH)pqb+;4=OGe)|f3 zGErSt6$q)HtHFlNJ9p_C&Dx46XdcQRhaibIK~)oSO0`O?F%}a7t?u5up(d>8soJ4q z7tf`oC8-?@PGodObYg7WAyX{gx7%rSW{SM3ncz6h=Z4NH25BWEwLug7e81rk+r{_s zAA1{-`abMooO%z}Ci4&8>w{mM9+CqUP%VV6kzf&;{p@FiI-xiJV-)`_d7%XeG6`H> zyII7(y_V7VvlXkuKZM{1mnDVT0E7lObkPA|F$ z;$8!^Emg{Nf0Y;ZW5X5AzZQacxQ4FQb@U-k{hU-53pzX5pe2DgaY8(K|N8H4E;>9t z6w7)~3)5)RlQD+<2~04^pGVNsrF}^n85kB79ZV3`F69pH3(&)oK!2nI%vCn=Iqt@| zR4j_*!!?Zi5Zdq>^JmQ3ET`GcoejGhrAlL!$0h@YBsJrxuvN( zqxMt_`5xYlH`41zq*6`K<_>oge(?P?E;2j=DIj?k{}|duttVdp43aea?8WP=eLXl@ zSul36$gxsrdB^c&IxpC`W;+4b+Z1LfR&9p1YGFK{SG**u)-CS{;`24app^jLO8Ax8 zX(w40`xl$E3-7a-Ri0)-e+{<$A5AAQSt5;-`!+<@0ferRrKJ)@1(#d3FWf(!7N0*` zke@0|%88Z|XRW=|$(xP z7xMp%^I3y7<~axLC2^AI^hi?d$EC%k$4jLIDvsMYcYqk5^RwsBW3giPow*TAbEM}Ig9Hz>*&63#mr_PrW# z29{{4cu2KQta0j+Ci_|}tfEbdzM|T~T4haTq=U>XFGdzzASnUunQ7lfa{UPs$?TX9 zPC}9znIMTbG)7eYg*lZZN|NHGG+ml6FH(EYH+YK=M{-#rmk=GBD8idKf*NSO1YEK> zN;5{WIiLOUf_)8kG{lR^Qh*oHaT0(RYx$#`n}fw#z!zAY;B_!{5O&f=DNm)rYIR}nI5t7 zbD|{PFEtle@FTp+R$Rd%7B9Tc$fd#MCrqjSswhlDNI|cE&6Km*eI;^v9f70-rdDOe z`39?A>o}Xldo=MPuS28jEvRH&6&8MihY#tY8bf5Z+USpD(@tM+KFU7LNa-epg3yY^`r>wMW2pFKF8fG>O=%Q{Npg}z z&GCH_@Y4a7_+zM=8HPQ7gEGzi-fCs4X_3zW{SB=AXYZI6!MuRXm<-~d$1Sh{^k}gB ztZOzaRB`9TM6Q(>mY5U(Hy^BK56xs7M}zO7*MeWS$ij@ay3|q9|nC9bb=OZWK3j6^MdX zZ09-l@!f$wL~@yN8EO+A`yrA$>SEz$;Q~yP^7+FZj9!Xu;L1-EYFxjDw69j7HHrpO2zV{(obrX{<{T&a=QJ`=yV9ia|+ip;!9Di8P> z{lvzkmRE zlHmM+9Mp|pD*VR`N;C@luk<{4^V=iMv6YX7VDW}W1%w47caA>WAYx|)^lla#_a>Vt z1^c7*51N1^>XzjT=q`-wx68MtdgQ%^z{Jzs-OSCZ+NSnsBhz?rsumO*a#z5#_TS?_ zTfA(|A|0SuY+@AMKz-c<0%A#eFxM?_KL)bnAN*%I^gihwZ128PvS7E)YyoBpi`Vi? zbxEY)O4y}?Z3aDOZ#Q3RPM_bB*Pvh9+E~$Df@L*}X?l4=l~6P3V%LSP-(NEOTSu;I z|2-Ct(F*j*-c#$UfW9BA8*HT)>65Lwds@t`blvy)d7L^>tw*QRmCHeLn#njZ=7>^v z$3Wj`k{ZOFEox{1PvRNRDd;28HPX<^gu%QqlmeDS?bx|1JS99SLfw&U;&=d@A}+V0 zyrvc<*z^3iVCWF^ajtpC7J(4O%7k=2|DDsOsFcg8*TffV3OkCLaecZC@i^_joA?*P zrJHvw(^*DWKGW^Ka_K@z4%5WcgQQ$a-oDwuYa(?tlZ^D7MHa*6KAv=`lx-bNxXweSgS$YwoMWu<#IMc&=hbiQ? zc)IeE86;TT0=@NTgM19$&!FDLJIgP#Dlm4i=` zUmZ}7wD~mc>8|S{p_yEepHGMfN`zKrj!Lp-8W-N}+H8!Mm~74a!@=nTMcmIUL;ww6 zj5dO|GvOt_xL9Q&mpsWWd~vDxs-Jk$HD$)_^wB2+uW#*;KTv4*yc(N}VM*bIe&`CD zPm}m@RM&Dq|0YU1E%^W#uG$NqJ8hrO?2@~HM?Nx%w2Q$ zw;7%mmC;gJah{skB8GGlI9e9=9i6Ao)SWr(0E;_l|=5!7a1X^z#Mu^G|N zc;1qI%dbVR&}y_2vn`_8*+PDq8;;Xn-ai_Q;Z1jw5K9uBHd^JLb=1Yl!HSyFA73s5 z57ffN$H9-JhjBM*E?hu9S{_jqS(@Hf+0#SG-9&zzp=d%ozoM4S?o~}v6e;QkFP_v$ zET}4AXNND{)>PdbTObTc<|I~*Zq`s4JjlKTwUMk`x@Yn3ZsT(zB`uK_Ws!(HE+{e} zHUK11%Z|Q*rtagSU+4*FFKDAb_T-7I%Ow5%IVjI-@w3?12yCm$m6Z?@R0hd?Nd|sa z=?3I!JGI^b@Rn;|)npH~GL14I1zIV}+`396 zOXtCn7Eykjdf+MAhmcxKq6_I!e?QkCvi;iBRnoxv^2^(~3n$rxV;B(H7trO_tdzFo zDRG@jmuDR=nI_%$M7O-EuDAj7EHqUUh5X4Soa2D&Fg;7}9=nDPq-As+f0WI2Qs3$G z^_NxE`5J7(mFCmz>yhLenyNQ!wlG-61sa=M8baJ^?}KH9wS7(MX#S@eV1A4vH}3RY zx_HZclMdafZ;I~UgRSOWo+LAu3(O8ut0?#0IswD~FMh&{S*RFlOvY?)I)!QO1H|eP z<{9j_C1Jmz<6e>*&E?lum9%0)`o$T@K_Ahlw`#8A05gTZDkPs76l-L4JZgXVimiX~ zuVpP;|u^2lh$QX`!tz6Vpl6XuvWk{y?Mt;N})%{7m$GZm^wXN2LSnbL=G1g78H&nY87**M#QEI z=#!$>XBcP6W?%t=73`o=L*DhY?b$0P_(^lj`lT>juKtlQF+$NK#P>b)dFt;7_=o~( zXR#pSc=JK{UslEuyWB7C?%9Nf{uOIL@#4p`A40G??%sjEVI(Dx>o2JvP)F|Qv&^Em z$ccgWK{g?lKeAefw-Hc_cq1DRvh^BI7G;OF){Ji9j-6l&Au)3R!!ZTNl~+M*ra5lu zcDZw8L9YY(f9iVMP^7N>$5}`2u5E1Ttm>@%V1`bsDqe2+WfIdIId(?1ryN3taqP8_ z?Zo@+;*CKsgj%Jq5iDr0Kbn3*<$DetT!(IlY3yS=)Dql-y#oDr#2W4O*{41#AbHg_ z;;5YEKL>-6AaDNyj?7Tx87bty+KD39OdS}4J@0rb&^yF#<+FW7lNwuo?t1dXP{}rpn*9=XLHpmE z#;jCPICs0_QU2(sw{_dMf?smPJZ!7S`JMe+=uEm{rFuH?r|g>`x|>i>Z?R7_NeSSN z6}5KL6989uol<(6^q=qS`8|tYv{{EA5NycWX>GliWQTKwB^AmVXn)oQRA8d--$lvm za@Nb&6Qx$pIobJ)3(C+6bkMxT1OObTxAe*MR%qv(yp++dW1J(@579Npe$RXBf#zT% z8>@r(x_@snr#t(cs)%a3;8gz0>s=+bwmNh}bHJtW4|_85^Kq5%#pYL&n8xYT3cUSOE$B7A>9_R&C1ZD(xt@;RC2o`o?av; zoXg6Q%jD>kueHqg@(y*2aaU8<_u#&2l{7TA{O`UJ+FaD4-q_a)i!7^Cc*XnJ*g{%;xg+^h- z4&8Cl_B1+4hDV=JGSp|eAF1?m{~5^r77Zci8-Ei0ks@_##VK|U|B^~ zzPvE5NCM8~BRX`guF=}cnC*w>u>xFN)}JwF~_LdbV!szrAg9clA6aIh&$`E2 zUQBz7j?_E1x^Mj_#W+x)!E|3T3mB)3Xs{>{?54(gyFe>)m-)&`SO9n2Ir|XZhrM{t z&zQ*>RvWjQcCs&?i(w;Yzyya4ufA#PXyan;L1ckkZdQI)K7wuv`5-gcO{JRiv6Dm# zPDK5_rOIsN^!3iGU37JMSdT$nYga|LlEf5pp%MOJu%M=rr*$Bo!-A&5D14IlVe6Y! zhWTu7xkgX-@QWa6q1>^O>JPVAz-vd-XQcCFYun2L&|!6W9Rb}V*|6VnS@!;eCcB9unk%TN zs;r~e=t*_02iBFcmB^;QruV0}10?J^qrjMD`yAn(z|Ge1^$Xwl!LjeyZn7Jprs3PQ zb$5qHF5`~3#5K`oaz^^=12u4nn#KaAYl{zJ$-R~Xl_!kPv&V9_wOm|0skG;I>-}HY zikIw*i@ihI<5hpHR7DEq0$wK;MP7S|ni$f9&QW{)Pnp&2f#TmGhj2Zjov-pdZqTU@ z&%SCEUVsOZ84g6n%~k9hK{A55{?d9F8OSN}pC!?Uq^Gr`hkcyP?_94#S1b6*8xBXM zL_zs@A2m7PYC&=%xxCWSqADEBj>V8k&~{P%L0cd7AvHN8xF zuM{=w7-b6g2JALLbTyBC;zAcw3rAZsbyLv8wZIbmV*{fuzbZP1YCWN+V@L2NJ(b4> zAc=ae!7sZP2j)PN77ZL3JUTG@`9+wmaArkFV1v~s@?9HnA4Eo?kgKQ zc{h!pazJN7yTYHn>e66?Pt{4w7s6OM=k4d}=Sayc8zi=(em19zpToupAkjQ)bAjt)}8tAy4-WuBmgj*=uXzNwPw?Qt-#>;6*;lKO$xo_Jf3u^xx4*f!8JjtS*Eqv&$yGCoH43_J zbv}B-)eA9BUyso+55_ko5a2zA>KiY_xtTc`{|6r-H-OSHyI&j+1)Oaj`{d2IiF>J`c%w7H9Z2z(41sX4|G6Rf_-Kq90&t0A@ z?XYw@5$2bl2HOxen>$6Yv8yfnmd-Bzim7bw)p{~e=l2PM= zzE0xH%8KH^Qg4vuX?0m)jry|`{`X|6KgAk@9Vw&C=$@wP0FxqR*}kivpMTydZ*CLF z(|L-#EGdb~;hY29T;WAGGm-V6hk1Z$m`N1js|3_7EYK|m`+8k+!C}~jP5kwY2j*>& z)viKETqqMAJG#BqsSt>GOP961&P~e$gXSuRXgMO- z=q&AR!4^&AR~D!`vL_8*-}Q)Xzv4NHDHQuK>LgpRL$;#Yq<0(0IW;1LuKx&)V#@(T9b`Cy!4!mGCOo=c4|&~7Fmswa71hfMg**9A4Q#b!Nz02ppN!) zdcvxbo<(FTp!Jyr4N|r8WRuW4bf2RatXwJ-!$#;(`l;da#=y(|O6UJ<@kN>Hb)m+y zQD$~iQ>DjTvBBg0pUk~!?V{&=I0%!*1a!2d=Xx$6T|>lt0_qv#=^BS!?v82ou6C%btSzrECb9V@j$B}FU|vW*VeNvlyrx36vPA|)Awi#N ziW6MRmupFl7Mu3dFhF3o0&nyXr+IZIt5WNse?0w)_HWE=Y__o4G0WTAGr&`ax;I!B z_>+8Pb33ger`|uo*+8C+j0B`S&)AMa5gkn)O}(7loLSkP21(PS*?0fmF6PPPICt>a%Jo)R7$OitZO}LD;ktdkYeB;^6M32zkYc7f-Bk&@$|X>eYzM= z_iQjP5UZcwL90m>A1BNZ*yniE`26n!a%J+&e7wx1iUjij5&u*`4dNH=6ss}7w&bSH zVelQY60+loT;QybG*O`OV*=Wk+1{3}KBEf%3pwm{%aNL2kKa;23+cS}eKs<-S*Q?f zrv~PF==%50@WXr3>K_7nD*4sT43b#D86`NG>0>mY(5tj z9TowA*fHUFsfalVXp>CYmIQNco8wgFRlDD8yVG{p#KC}a>*|B%yPbEt#CC_bS(Z4v z9`&~OA+jJYFFQZCh?1HlD_;>0d;D5Zo_D7kIusoVTiitakor%GvwrSTfLw($=uC~{ zjG*dcn7U%bv!xvF6N@_9T*+#o6XKS9$*T z&0@PFTCJ4MuJ+#G#C~|20;sS5&)ZyKzv9`?d)3cQ+Kp!$#U4apZJ4@x#IqXDuEn#} zHuo0RMRSxHVy^rF=8fz4S;z~XJHN|zkNa9Q9SjSocR;9b0*MfeMqhItwm<*!ogHNx z$R>Lsris}hCXyd6IEs#!PC;RAm8=w$BAUQ&R!=?I$`+1V<}v?km>wR(z$Ja=bbD=& zx&0vzBcF)YkV4mTXFtaP#~>mW~68s~2@BiJ7^)eNCbpetS6VBE2W=VrH1{s5h-*!X;ZPyGqy ziNcgM>8ncC!Sa?rNdaKT>jsx%|hMloSDlJYj5M=;pmD(jhb#l?dAV1uxCvoJS9^6m z3CZSyF<-$09>^u%r|y913Tr?Tn|cpliIkTVHr4<(sWYL62(=FJw)gX>a4xgODYCF} zuu~_mg~b&)l__CkUf%Z!v^)N?38A`x_X#y1vb?Jsrpa`3YcB$+{6Hga2>zm}B4?jruMfZD~n*@WTYEn!VQ zWsbE??4!OOWuirnW0PlfNxh;LsFnKiT+h}3UdFbf%D;o<2aoay%Uyp{A16l7Vq?QRY zO~lsnwM7(yFkyni?EVVGUsp009t3s+sO&BtI&qY3xyB4`XpS9b6{r&hzgXIC@4VW^ zA}GAar|^i<$j;Es&?&wvsNO>18Q>A<5vV?D(p(viT79a4w}>|pP}evQNA)Y5Ou2lx z-MO&(GN$1)(w`1jdKZ@Cm=xSSk$;}PBpXA7Hc9-VJ&p_do6&SGsLN}sZbVfefuC?l z#LJfnt;9PI>4eg4O;K5~(nJi8BP>Qxt~k|P4NI7F^e94-ZAeE_S~NcF+6>hmp}}d+ z*87OFuXSLjU7by_v%8bGgEz?t$IPOF3>dNVS&K|Xaa)gESpr8B=H%@|jQS25{$JMK z1H7p#YZu0Gj&vZ2lUNZUO`?+!2qpAtdhf=@HtrpF+`HT@ZAtFEcig*;G1#UV0><wVwTTbb6%`i9c>ioJEN zNBnAP8mjB7*@OZnD8w(+8_@CKi=FaQS6Ww|786vfR~E5{_b>*luB7YHw=YvOxK~H& z02lXO#1nqR4QqR2Zxf%`j>vMSa(7?X0GD8_nOsm_<%2bmnE1$r;GkoIr%fz&l!J=; zpepC8T4CpAWAd2r=*r z4j`@I5cq`!hJ(%Yvx|0DBp2u}fZ#pc^XoiR>)tL7>~mSM!I-0 zli{1`1BysRPz+R&_bQ18b5z}_X#gs%Q`xD4+^wsI2~!89IX(t3j2qy`6UKX$>k9WZ zEWZ|IpNjoKzP>8fN%-Me&48vBp{-Ymji_Q(({d@FDn#~r7}ZPY8R#A{(E;JX!Lgy* zC;=7zx*-rXO#}DgXNm2$)%1r3n$qe~ZAjngy7n`T{B`Z`l6i`u-6#RWHuHJ=BrTv$ zlKCUxS>gdr*7n4V7_x-b?G}?IQBk%^ z)<$UKANE($*XsTD-RUjdsqBMB~GNPxXpD%NsBl94B>R@~`L0px3 zKwU}LdxL({2xG-i=yx;)~b!ljaUI6@@67Qk`39baS{61naH<OaL|thLZb$+m-Zw_8QrXlD0W+fby!Sr)TG3PxJP;ok71p-M$?2q0IGD=u^LY{ zc{>E6R1L}&xTq#gGs>(zNW3Ydicm(!Cn#cF61KrgoYiiq?kd6zL4yeSpIZd785SZiW4FqYK*|9js%hx`5?{RV8|@2=y8==w8-(Dn7NyG|AV=dP2NTKcuD ziyTt*Dp@|NUg{m6dsQxU_}Ra8*eE{S5zwhQf#7wi=Ek-gmb|(ShRPrJ)<|?i?o=gB zC}-@HcG!;X@sFJbEB9_J6qD1Uh#xx{$4yX2M8*g22w4XCnU$3$T`ZR??rJz)cnul9 zj@ViSEBVKv(8dt5mo=%uIVi0!>yTyk(ki4VSw0Ss;_<*FB_Wj0QeU}5cL9OdiU;M8 zofMM;>ZFV$Ru|3dNzG3A+`;AWQN@iTeelg+keZ>ls&TM@)#?A&`4HCjy>ty!=exC} znlVk>3#tm>aYg?RgLWONk@I+yfuY)Jz2Cd8<7M-Qrb?^D|J#SE{v5|BW5XQ-5XlKh z^37uvu_?wkF^uJG@n`M;S($>G;7Gz>13^r+eUP$?q|V(E!g zHuZ4Y`IKX<&T-lQ)E)lI2^eq=X#pA4L+_%k`d!z$xXV9F!v0bFm(AO26v^b?u>Wk< zR-|O6WMpZ}G;F)D(mYjeNA7XHdk6WJ2W|AV`#Q+JVebt`FA zLueA4+wcZ%tzm35G3n%6mNUopd6-t~?iCTHpgq46np$)%XTW4v=2YcYvKpPah%AYX zvR1N^FjrwKY1SN49~MAl!(QOeU*QF`@mb{R|KR@x&u5enC3rr%DX@L$qjtTLR}Z?l zv9I)pk~w`Ta<|jy+ragOp&oJ$DEa*8G=40K*u0<*Yed~-V*#|>ya=3qi)Gu0dA>sx z%Uu@N=e4FE!alb3A@~=}<+`nWp!C~O21^4whdyjKEW5Y5_DR>{uCujX_Yit;=B7z$ zia0kZSCdOxNPBEmNRwYuwAPDF*;xy*!9z(M89jD++bR|l9?|wsQJI4Dz%sfn<2mGv zi^T!4{)ztJUR}~0-;S!6m_awfsP_`%=soqJ=lvml0AiW1kThJ*;y%pV2hA&EE%T+4 zUu=uR>ToAIR@PEi%1X}BRGp2K7<<{;`>-@r+#Xc1kL<#ze4?u6bX|JoHPl`>+*sG> z4>=5Nl&&JH5(Na}BoU+&%(bgYvZ=}G37(k(_^mXUq{{r^go;-*y++rLjUfA92l z>H&2jVvLV8S~Yt}^w%_zYI7}P3n_JSo8=ZG%%QH;qSkVTsG6ilt9{v|B{dk1qncyM zy{vBZpHrm)$)H>v9G=tmL~U9PdrqYFP(%5f)#2w0q7&_eX+0VE%@ByPss1sXRAzSR zXAP~F5)a6*mm%Vm5|yIR3aBk!C<-X2$|kx{O-(g79}?=w(stNlnx-QOQtnvi)+%Qu z$hC;Q#{RF}w<94ffh=VCD`I}p=XPWHk5;zP@iO|$e=*_d5I`qnvoZqz%Wp^u#PMv8 zi?k{}IfCFkiZ@TJ-Ewl@SJ|sj$1#N!etub#*_w>TYoaTM##HMK-5B=1&MFtB6S!ks zUY{0wL29WijtGmz*fWRckSXfUE-BWqf4)5$`kK*ye>vZ-z#`Y2 z1c5GB?x zw-%tb@Ydk2=vLNEJ{@A&tdsD=?*A!hL;9a`)09xnYYI0 zps>&y_SG4)bS9t8tXR5srS;BWzfe#21lA`JzA9gxuPFfSR(&EN9hYxBy7L2zlHK4u zU#3i*qd`!KjuiD++{NO3o18a0Y-Y`uPDOQlL|J%INO4GUSV17%<^|r(mv|mX zWXcnJoO)*=z|FfeDN)*R=*;uu#bj|zjE$1D5Zc>2>|6h3vld#xO{b7MER~9(j9Q*m z!L~gFgmme>Us%u*e=qg5L%zP3iOxeETy90&VW%T=SOXGQM_nuRF8|PQjn2Gusa(JP zi4-KWw#R%s1E{CT4f=7CZM92tV!N`rCbd(YgyNt=*2i8HlC;%c=7nFYQsB?hTu(A9 zUhu0m6IR%`t1OelbNAj)jv9rx89Gh-w%T)nYL`8ob#@S00kw zE*e@cRg%z9`5~}QYP{76M7IMx7JXtCVdh20w=-4M5{%=7_vLvhQsbFCMkAHORZ@CoDlbYr(Z zH=F(_RYz%JlVgj#PbDTFPkza-$=MjsJNeJzU7zuv75Ls1d>o;pLZu#n|G5+5zR5mpnLl9&@sRL(Kcu8^Gp(&vbj-|`?2q_j(K{XIx}oI&5s zLH(gmFhCk%fc6r?*TG_I?NA@O6lje-_PCMCDMin6oVL`Z|S_tfPil-y8C*7 zQd3J*DS}9>5d|WmK!XAo{ zo{KwP);l~d4%arct`)|GhL)f%;sRpVNQIGOK384p`7!Vm#g^Xues?~Hdw&8*|BQ?4 zQwjqG&W1!~tivS!-N1#=HnA1cZEtpH>8{KW)ZFqOqP08HTu>Qn!A==&~f*t;$VgYeU8Bh$=M>d7hu?=q4Wa0lLX0DouS_Pja_nUyx?w5fDcN zQ+8?=KRTa(Z+XZ}RjfejkFfPM4wC@BAv5YzWStyTu(iH zri#_@2u&8y>7*=Kc1a%=<& zEmlhB7dh8QBbrd$btE-eoufway5#x@`f8z+6vh=r6`0-O-%#^o)V#hrO%FD7UVU@be4b2UL@Jvpb0%yQgvTN%Iq) zy|H&-A*1N*LqE!SBW|H|5c#_)8!bVg^W6xl6dxdian&1Ge#3bw*`?w?C04BD%!rkF zE`7+V_tf`X%Vm%0ew5N}V#)ClFO#S|5>bpz{7Bm=GJ{K)wtv><1sXm*bD@m}UzQwx zO7CMd^Ht%(uxo^2_jD5#XlV;6!hHIR1JvP~SWRfECQZ2UKaJ`;bL?c#vy1}lUPr}o z;n7M5Oq81_OG_jN^7FI2}4Og%!6s|z2 zhTW8lPAMbP36CrGNAwKZ^Ci(O$LzWqr$(2nG+OR6LbtUXsWyjWfS|On_G%3&)8X+_ z(*^PmLry0pVPLO_s@-?86tRh%gzU%+*12)F2hyfX`7N*ASC$9@^ohwqND*okAifn! z1t+Qi$&L$87+!C~9WPcFB(Sx?VpnxkQbHEXeJGAe4TtkW@_oDl`9->Qos^5mZE-g@ z0gd>gBkYx5pQMnVeE2g_e9I6k**aS!(0Oi(>L)%G?Tlpbj1Fmg8BuiyFq3YuInoE*{H;W(5bTiPQ+ei+V1R z>Nbm`tOL9qgIG0J35ZyGYL*jg&@?2K#{=>A$QuhQOJ2k$Rp`j}@Ss0vf zv8g6LZw{o=);?>lXAZU=KRA$#Uxz{MHwmW}H*rOLk^=Ryio}?xC>D6!aSYN3To_}I zSx0dnOSi0(>Q0J7qW2`m6{s|7?hQ!d2(5hm2$v>>hs z{sI)u+X!tX;mH{_4K3d47#!=~8Xi8q-<$4Vq23p%=QaIGfaZsHzJ}!LxRh|bJAv>h z!JeRs7R)8;^{SyyYDEERuYZ}zn?jM0Cb>AXz5c>IPyt4Mj&m1^98@u?1U4?*Dc(^S zB3O*wu*JZ{oc|}kZ5sY<$iM&guQv+j_U}Lb+uA0nQX^~asUE+oW<77Thwk8Q*Slkr zc_5BW1r-niJG{y8DrR(yluH<8aOZWWUo_l5Nh5%H8vBj#XVhymQl%SHuda#5vI$ZC zr+zELJQJ*h9u#S5Hz^dBO_bU?Au8=}Cjn}fjHLXGo8uM(0l_FkKaUNxw+B>yKN>F z%x&ej($00LlAhYpUNopY8bgiwwC55LjuUhU8(B)nFHGeOK*OrtKl89wk zM0f=dX#cSk1kZW$FVE?qiNZo8Pn1-oQ664*H@=b3NdV5wv812wp|g0~{)zl&tm-1n zItpfunOQ5i2yVS@iWH<*Vy(w7!Z9Z~zj)x=vZ~ZvWob0qr4vc%pW-XVh5UHS8G*Jj z%3v>6rw_nRcXf_`X$-525&OAs%~b)Z`JXz$$4rLq$rZ`ML%1&V-*tX3{xb^wS>TBW?SC zM<3J|nbg#b*C&{@!U;wv^q~^@hDh#%iIqsTT* zS>VNTLLV%u!~KDiLLW-qPv@%9hv8#JZDgt8Z=Kf%slj)W+Xwz*9;y;jqyEd%4DnKe z71K?euchZnfv_~!k+9+O$TFNlzdcCbe25}wheVBi%C4I!+8#|=P}^oQFWz-|lsl_> ziK%dck+5)6UkqExZk)uRzv-b;Mthj3!*MV=E-q=GNhCoT6EL3t zAaGGO%gu)KaQ^H1@zwD4!+f2T|6c3~^l*HyGDl6L)v1+-TElWt3pJP#zV+}*;%!fMID4~6Dtz<&($D|wG)?-2LDKhgh&vN9Z?aLihrLzf__19 zX;w=-+b#}G7xIdpDT2gW$Imb(r z2+8U*AlfpZtwJlB_2}g*`a`q14N^yOqqfRl>7|UF!Dp&etSueO?4~ocG07Pz83$5u zXKofN68ZHiMH1^M&R5kbQxXee^EMEoN|?YmAqu1Rz3%?VihdZ=M3UIjgGmLlW^qU& z->rgVm7};wRjo=($c~RozsS2bOgb=6txSqjk(!N|l;%^jK0}a_K-~ zRuF6O{PmWTJGxQ}{hGAl4Fqw|#FWU=XLmH3V(+evYGrDuZy3Tx!>0T|U5tGqLcEm( zmVm+-2{(uKdZxX#zwbc`OdJ!kQkW1oaZRkkBQ`1_-pnx|FgnZfj7l4aGX6T@Y=XYt zQTZp~OJEL7%#6>DyFc;z1Y5h^rm=Aze%pM_U?)kqJ!%sVT3nxSdcl!3YE@|Dg0QHn z_!PuIyOha_l3(NVB3Of`FdV%qltFr9>AH!VRM`Qs`;~DJQXO6c`qWvK6joZD(ug(- zuRSRYvGBdRq|8ul0{xsneRPuFCVPJ$e{)-7l|xOYraD#G6yLo?8|KJHx|J@t3HsBY z`YR7=w3Kk`Q!}d$egk4TJS{eXU$0hZSzftAnv`&xpWZW-C~cQuK|tyA0Yi$<^ z16y@DXV{{5w1V4Op-*!wr9kP_ap2<6Bty3^KLOPe8?uX!s59 zY19H@Q;9=5otzawFJ*CW1{PHZ6dNA>-TB#R`o&fHf#j)TXdenLi^UtrPOJ6ApX}EL zX0eJ8rrtflm4#a(iIj(b~~`u!#j0E_%Noig;X=9Vj>(6qB<_blO8`PSeS;w`+g9k;RR!Gwh`! zX6M(w65tabQON>2Qu5qr$eET%$*()_k56VLLyCdoGacj_xwW)m9hRwN4&%|kqiT~- z-2V0!GM<(EF@nrKZ;3h`xBbE1C~}Wv28-`C0iz}v8bPkF@4@A=rl6_uf_j>{j7Jgo zF6CN#YgY2oXsK$(7S((N(njXHUq)Xc-&Shkr={C#oBrQQo!SSaAKl>JT`4#C zIflN+89z^Lj1Dw}^udoHDH|oZJ@gR}Dv_B?c#wbCegtD(tM-@e*uv{gA+vD(B~u=4 z21+U*CQuO!YDngM+VLkSd6(Q4D!fNML7h@^QmRH_Bb_H*7YdKFB{~ynsK|Ed zY%3whyUi15-AN!y8c3m&ew3Av;_&PcHY=vjb2N8zC(xLNze|p^R*5+dL4# z=7>FWf~tV_eMsM|x+EZ(m1XhU9JV~7okg9k^H_@qbGh68r+o>~T>xp^$?mAXdcC7AL6S>SvD#)Gn zCviD1%_%6zq>{bQaq*lm-1PToEq$-+d1_Nspy3$|ILIA`jJR-VVE+DW9~7mAOpDkQ zcJ6cVg0_$(ZK@W-*c8$NOv9n`g(n4N)3Bg`;W=>;=42Z`Vj{4OlQALliC;uebO4(X z&t$1HlQNR2^xST`_y#hD#bHGeY+ieDducQ4&TEF}VV33aJa}Oqu$Eq(O`($?VIGRY zbN-qKj{;jv)U4fL%6T7D4Pv0fF%P(w56^=f2u^-+3%8O^<=@T56c}1iNkpJw(^+de zW)G?wUTNv4oANGXNix@S_d)9)DT=kV^A+Gus`W->-7Ro{uu~`Pn z(^xFTWK;QTpP(*g4?Y1>rb{#$=lN6sOw=Nz7 zVCL6(t#dQk_z31ee1$)Vvn5Ae$o56MV7ef!e18ELhTo?K&!|*}my*jC$56>oQ&Io~ z7A|r*@!G?wM@u^4G%TWHZC4|l77uD4IH(3$M56K8) zvvZh;nti$Mn9POC`MuyU+DAX(=Tjd8r^z(`KK_?vZ z-HNxZ0!0?dJDE7-IjJ1`O)m|GmC#0qR*XhjJJM=3Q28<+~zODNk za&t@5ilGK@l>ZR+XXG_*vpHasF16Mr=72tKG;-a-=0`L6#g*w5D4Xo|s&y`_JWzz{ zGAeyS_2Gb4VO=VExi5-iTdL>?S2_|Dg$Ifnj{+1s!I*yHP$bD3%RL<0E)5hp`gz;S zBxlENC5!F?ZqF{9v1Rs#F5~m^f?|=CYF{Dr=Gy8jgm_`r*mLB@iu;89k(_v_y$3rt zD%2^Zk}?JPb@6S~g%xJy7J*1RCq6S4b=ST{?qJtI-8Q7=h3}GS-!B9P*1^-s4roa& zHAO6yUAAM}GI^0mbs)dG4%QtES|3z^fNN{PC1CXgJa=N31=z>5@E)WT>;W zXp>3go^sMpx_hc{qQ!5okp8s@I{r+0pC_Y3&+pgje!)z?#lQaqRAObhrR7N1lC`nMU?{?lZ$a7fE;H!eB%;Zc#5sL2y!0R+T_MtL4{$ zMHggWU`YZ<3gZUZ1!=q3MGe(xIXGC4HCs{^>G#oze0@Gkc~HI z3yk-W18l7uJWGxvL*Ga4Zny*p+sXQ_QzsgocgZBdaC$q;$a*sGTc=AwY+3>1n-QEt zs)oPZbFl}iMA+-zybk&Z5kGPPZy>|7$=LggFz!Y?6B`JozC2N8OG7U9RJ7v?IkoaJ z26zlP^M?i`^Pm9&6IViYFPBr{S^qXVaK1`r=I{}`j5?^zA6^;qZ5#}+RuaH zg4lZOH)SQ?D#A~!FE>H7daHNbE~i7g8@6I{znDwDK(tyxW?nM`R?#^i%p;UdjbLt6 zU9CqQDt<+7EkBOBg^Jvo>cPx$<}#faGL%aH*Z_9HcW^|ba)S=HJ)FUO^8=l6nt%cW z*XU-|x5o}AFL06Z-C|;%VTN}KgBH%tdjO`kart3qPu^U@-20ZkgL#|4(#K*nyeZ{U zkL)VhJ?)TrxzBe|P4VORFFZ0@UD0TG`FF<`XXxasbh6|X7+gb92E9%dlNvu5_sF?x8j=#GUXjZ^ z&hKbg0eIBpHDm%HzGT6`F6=Q*p~0>|@kcTjD{i!4VkNK0?e)DV^QkYYX*`?3kF=EO zrh;Qx6$X0k*;F6Ii{jkiQ*94EXCR>S)+Lk_BkO%u+@ZbJFFQ}HXLRnZb{j}+P2}fT zxo;iLjEOQg|FOC4$dUH$4mPoj2@mo22YrWK!sP>?J_f#2dxPrZoc(hw9qoyI={x!v z{~n!Ucp)$CC)HE>k5#37O7HHj!yR zTEKk9f_)O390XmXnAF;8=l}qod70c2*bor#z5|-xnR5F;=>!wd2)rYcxJ@HVe_4UV zS(Gw5p{2L?FuA}=rjtigkE7bNJh!|!yLNrxre}CcUK44^Mo}{T^qbkdR51LQ?+RaC z&H||dUE64Qh>CY)CQ{KU`WaSc_*02aF%-omO1EZ`jMx)V4?TLnz}npG9=_G<^ookj z;1HNPJP|_*vSh##&<*#%Ag?GkIg&Y>`%{;21<)zTZ-|WXgHVpm4%FdD2~!9 z)KO^7KZ;j??KONon;FOCSC{A20~l5lS{;_QCTD!>b~am7U0Xp%q#rDeEDx`M`X2<> z-X<^c&_43Z{Cd*Qo;sd!Shgicy3%*Nm#`;u#o+jP#{@><6&&D+YW_9H9BWx_qPRU{ z;Hc~Zv6*scZ@uf`l#Vzoy;+K98|g?>5CH!Q8q7~Y=P|{w7xSfjO8HjF+P)zLNNgfR zF#$o|zPJ|!l|&chpU(aUhYUJG!!&+pHaC+-&BK24caLH$J0Fw&Fh)ZHwCO56g z@G#ZeNA(8il<(>IS#+G_(NO7cQcxC$LzXZI+&Ze;$iv-E`RVIsY;6NI=X-EP{%*yg z#Q?WW{)+MJpIf&Xj%xgJG8w8(WX5%4Vocop{cy=jRWKJy?m*^Tu+r;w4=_%@0iKDP`(NQ|McF@`2n}HminG%5(sF@tRDX>`9shRN zM*7wU_F&tQ`oj&Z6u z+@^*r=!e+1ziIlZlbc-cmW>0$&>X6kzFhem&&VXl6-&tiV+-J?0t{pDCMC%Y^AK!Gvf-5p@!vOGYbiL&b>Yc89>R>C5}716=T!CC<4 zXUtzXL!PB%avLi0ge|S9?+0>j@egnuZ~XwKM-ga_qK%yaJ2WP1n$1djS}*3JAQ$Z+ zH&*uJ7FST5o1I<~T^5g&?4vUe9$@U#1BPamnWBaluphjKY5@6_t*-u(cDM?ey0Q`vC;lazlYWY&?LTJ?Cj#;YQN96*{Z?3ii-PE za6~|c%pl<>{_V3Y=z+&1c|w%8s-hYPVIkFl7`ZGB+zn$EU2z^TKWD*$8FUS!nwjo$ zYfooeSId!lEd9yRH>qPb-BLz@d#yL@pki~%oS@TB(+OLsq2%R=p$N`fS|&DA`R4)_ z^U&eUmvDDxA)%{S$m9?b@>Q1CBvy<_2#l%Fp$kBFg?z$O1tJ#bgCcnHWzn0u1DewUc3H=C|t?!{? z3rkaw8=IN{cj^BozgxC3TRJa%;yz&`d~QT$-!{h_TDiDbfk0{*6|bxRb?{^{U<7RU zerkH9Q)A*LBNOiAUkMdXBMFzX^EhNlm$##{%`Y7PI7>hMoyzZ0nfGsa%|G@+&`fX$@v2asvbUL}QWi3Fg(^m>E?}>uU8MMO&u`eLN zD}qhME>Lo(1?LdS(_-@NhF+A)RaaEkKJ(&ZO=V;onQLydAbZ0KbUG`B$tW(#DS^C2 zp&$cspOoG^4nW>f=;}e1o4${K^wEEu+*Y)L>4Y3TQr4Bk+NMbt2l8(Q3$dK%#pH9U zzX`5?zdscFwvxS6Zzgdeo?tx zD&Ce^70d6KB(o+vu2>e*w@x=edto9gd8{}TOassNY8E?zEFd?4{?VgH>*xpiL!*a2 zm694ehj}*{V<%I)&~-j{x3(=VF*n|AW@^gjhA`!&)wS4aZsCn-}U!X^h>Z;d?on>u#byUYM`RE{3@9V zF?Cj$IP`97T2DSFpD!engh{aZPbZ_ zw@|eA(WIIDC$iu=@zb84UOjBxuxL&2+&MA};$9Wg&HAdCRO2d_qhULP+^u7`v*oc& za&KeTF*vn<8a+$lXRg_y;>RrzR87y*a41@CCgx^gJJ_r^CN(F&xB%@f;NPtDXt6yL zi64Q>Y2=S|x!ho4Rv@Sv3~?ke(C5N$g5@M8J~9rc8o$Jq%OCpCX-DOuP*RE- zI8XCat}K<@G0j6pd|^_+(4GRlU-3?C^ZJ~-Kz#_+*30}`H{GqQ9ro-ONDXf0o_!=M z5HBH{cP%ABBv2cg&PInb9lqJ?5YFW|G*3f z4wYq$rCq*5sVfQ=bH({th3Q3rnW^~?uz&K=IRV^I-yeRNmIaU~O;M*nqAp705e`mN z7cz@}W_4~KbQ(?e?+)CF+J+P{agFwIif3cR=c4cJJnqc?c8MAk2pKPaj5n0Sl-4me z2!viD^uYNlrr%PH6x&)9Ic!Dx5aOTu+zdKF8lKPW^L6&Jh1+vJ5&;m99~}*6Y|ZeW zuUZgBc+}fX>^7ofb{;=*=J1(rNT$<;(y?1Wf{CC%Y0JsS1B19l$BoZY*-xNUYW1Y! z2XZ8S^fzv?^sIO>|5nZ)8EF}rprxy}Xe8{FjQhvr;iBYV$UXzv<56QHcu_~Z-a8en zLad~YSa<~^%fIV}IGx`U&s+CH$)-XiaX(7ut7x)->J|757Pn&O`WPX#k6%&)(B(=_ zb53|;mUw;9vS#BB97W&e#Vv%lClgEO{<5c~?O+r5QXR#_rp6hyF{Tb~W-`eEfA5qk zImrRSFEhNzS&))-a`3a;@+i0)`cbFo`*O(za>U~x!MLnNm2_%-dj`udhc0LMm>=@socmK9EQ``YX+E$prA*es}Y^rdHHXXOfCtWfU>k@H&c4m5fn z^ujCa_$3t;xrX=g)^T|2eVRP9aQLnMTZiBJ&90K+x1K^2qUp~!DA%Inq-T#O>t;t+H$aac2mvzKT*a+eqXJe>=7cJQ1lEzfWchaiZG3 zbA@nI(T0GYDvW6f%-cll+3oAM4e|s7n&@O34X%iu&^DK5=Z@CyhOQAU*$#B(WRT%w{CF-X_=Bvb)eyg*EjrJp*Ji#P5hR=XDn z)29i64+>*i19Mj4jXby&oD!X^qTz$OgWKGiU7MR*n%f(24D-%H@#qJLf-qPjZ=!!g zZB!%;%VDCUB0>RP-XC9%X$=&U+R~z`bT(ORUS`{9*JNd7;lHZy?9&MGMYMQ3H!KER6qzzhBq=Vi4u6yQ&pF2jE^p#KzKJi=5) zfF9bNGW#$V-2?E1nB*a=AcRXTnlBTV9$?^jtB)Kg74qWsVOZvkOp6GR%+8| z-(+cR;%MSR&N>uXR9o9yI9d)jAq!3T*ZZDRoWjHx4>MKac%K`~H;IW^r?>Dv{=Mt~ zy}QFsUIOer6aaAH+;fos@Uq?Vbz#DV0TCKcg_~P6l4w`L&hI;A4dVWHp6(#j3t28i zPg8i&{=oSsie$7`j38?Y;Vr@c6K}`m5n<*mos`8oT>%ewd zdA{gU(v<@dRUu^oPwD$NR}tz77TFzAVv}H-XyaOMS7w!uoUS-4w=4%``xiC5z6G`v z(NS!oqXfrm#ccv{$Eu1A%^R8_Ft;v~@OyB6&z(p0b~SdkwRSX-&r>FK%w&s2T|%}A zT$&@vg~Uq$1XpDiRO0G6hi{UGg$IQMfPzEy0y}r3nvMczb6|5&oi_${Yj(in3_WC{ zFp;yN0=?`7V-e}HE6gh7m`9~q6+3w{%F8pdva_&K4y4$l*A}pgSQiJuE{=uwTX#4g zJank@NE=%(4h^$+^aIa;V^!`jN8=&wv66Q7>=N({e4HQ9`}Fstzka88<{6#)LZ4ef zJ*4EQ{VB_`$bF7Mu4EYr>PKQWTb+}XeZaHBsRK8a-Xod4Y;bf?Tp;LGJ*6a^#)*ENMJ&sBGjwdzQGK~Xv@|6_p+&ROi^A1XeByGi*JqB zN2kxb_+H!Fw|bbEjY2At%n-n7YtUxP_c$7ssi=7ia(?=B}|keOkfEKNT|(| zb06&$J2>0#vvEf{xJiLM#EAu8Kt!aI6Z~e7Un#t1shFI1E8bn>S+g zlG0(386FsV8!@qq^0W!XPTu3+?NPnAtM}-^W9?*ia`JhT*5H0~ z5ABzd?*izEnGII<7S3j_;8pvd1lXC;^ zl<2*}K#anF-oi3QR;CSx^;YD?@fYmvu&Ftd6BbQodDb>I*5-~GXYA_D4mdix+F@i; zgP5%J;r#(E0xL}jMmsdpOK8!_@I&?o9V*KEPc)(q{qF7qUT{Ansh+Q}U-9pU;GmYu zkJ#_*QtVplR>smSac)jgaS7<;RQzb*o%krF)CuJOy8u=2sR@MP#f$UvDr-@hazw>{ z;wDfHWCzfqT0LZ$M(T5Ose$x>I3(0(-+pLd20!SKSN%{s3tM=Nx*@BY?OSv4hYfca zQ}<}E029x%?nPS;fJ2ralM%$^KEwRu#>(hx9tvxnbXE>8xcHd7!~T(g7Yh?m(fOs>NAZ`FZ)U zF%?L25s{WA0YdkMsX$>t1244-9DIVO4dRy+8Xg+FNZ+4L-v?8`)00y2z?VvAH-c=S zv8=5I#miS#7Vl}WHrs8x$Bs?$Wl9SwOR7Q4S-Fq6k{t_;t$c*-B|o#a2!(c%3wKai zZ0wlEkKAbw1idu_rd^sDkFw^P$r*u3rX17T9 z{&sj^jQer!)^WWj54dp;^q;(LZJrpyIiKR|JCK?EgnrE%$@$fP8cMlabh?<1{R4cD ztNCRUpdvk1ZV*Q<(ah6SF`)MtZOWi`q^E(fRnVaU-OfMPaWARa;d9DyFx4yVF&!D zQxJJvL>E27|9vVyOHPJ;vxm*S&Fn5WE1Qnbw?oQe8E*kb&&qKQ;!7faM zdi2->eQpf?JXhBu3L#(eqhz+kw7|8Q4L4%SBF}i-Bkb>&Pf|v1@JM*dllv$U<`zhy zq*3`5;s2=<6HYvjkUuxxCxix~MCLQ9)Q!NJGT1`S4YB|BUha!?qS-25rk;&bURo|Z z@7YZ*7o$>1snliWUj9ABUPuSV7e_XQwFAh+DREuKvu_eIG(t_76t`AhuVNibKi7S9 z1raOy8`Ji(lfIK&232|T=Lq3@8+j34{$jYXHz|*DVQ+Mge-BR?(pQTL?b_$1C|EQS z;3(niOYs7I6=8zfZ12ZqqFo>P4{(^T;}5wV5A}x@)2C8!Sx%yJ5pi7xF#CMSwYi|0 zYX-98i%}Fbi#o~pv-~kBKWaSgtH!7ac>~+ko0J6?F!X9ok<7#K18bbNpQN3_qNJB^ z>(dvsT}t13`G~&x>hqrk%g_jO)-Iwl`dmuiIKOq?lFb`s2PHiJLi5&Y@Kb;kKC zfruh=zCg6dCdanbw%w{TvOoNOKt^KK{-ThQeYhoVFy1gzW=Cda%)i8jEn>bm{x%#^ zM`Os3zrl}_0rzhIvb{(4rOzl0PU7Fm2gzsu(NjNy2849)Yr+H;I3ujHp|Qdb2r$q;Gof}y{O)K=tm2qf8}Rd$ zvHS|o_$xvy{@f^71$`|1;vaMIi&bPMKgjsZw&0h<@4*j z%#2?ZzY8BFw0b{{sYB?5+dY?1>pwT%CeI*cQ+%a^ev#4(XPx9xHm!0ROU1fL-{CF8 z&4Qu6A*FHjHqd9=`5fMa=1c&T5GsHrx;LH>XomG83*7(5-`}Slkm~pn4Z{{OgAZWh zW8-6D73|h&Oi&HcgrFzpv;!0+t-3jcuXzA_uVxI=$XRaS8$GUPXq>c77rX`ZgMW=I z%C&S--FL)>QxkITOTx?{vz4efa)bAIR{=F4RFe1WbzY{n81f0QhUY6U&X8>cW3(hsz*gpMm`JWBT4Y zI%2xqfozG|X3lE2O7qGZ8xV%;zitC5_|fxiw&JsW1^c_OnSZS~OMf}5*N9es#m$p$ zuXjz~3Y(Hcs1Szr-XkoK_vJ^)v7Dn#Y}_ET$9{MC9#E3)y8QHJ)03C-UQ!=(%=tgJ ztZ}$y&>lp~_(LL-&Rv;K;Duc}L68%?G3jS{9qCU$ev~!6iQdYk$S()GdHMzJk3j%$ z%gRGgQ5*B1tzUkSRQr{<4L9&KU3!cfp4Mx)C}1PKq||C`>uO$q);K(I%#-o-ZP^)e zqO7HgjT>M#n{G((1Gna;ONmd}wQNc#6XU_X3xOGdbrUi>E6?Nzg^R(tGUte zOeax;_?GDEU}^=biz=1%VeFtdQtO_EHcwx*dWwA3iXB&Vqpyh#Ch~SC=;X_%PEf~F zJ5Lx^U39*5H6089;mC`Si&x1*((T`*$i)Sgx0B*UPNt=I@Aj59bsX|qx^%CXjr<_L zLt28|z*-0dFO*9j_AOdnb4W`DZpsbjaI)d0bo&~$#O$x5J<@Ywk5Hwtg;=<|*&($r ztSn&l&XwQ2{zSdnO~!ZL6dUODxbGhtUVXUm8iGFahn7fZ&wdEfyjXsU)JV7e8qDDb z-uCQ}_d~;<9~xalh-UL&-{F;iYNg#?U2zq{k?+hmy^rM_G18@rH^-U@mmn-#_(vPRS;@{%m zor+rf5BV|AKgYK9_OsvUXcSURwWjs7&eDdx)FENf^f?I7&+Q_E*eT)oB! z*6v*tSQ(WI5JSOhTg4M$s7mlMuH`JGM(adT+2+TVB6BkLbDUBoSH?e)A18gK?aeHo zcvEadzmt++qKu00v3Ck_ChYQUH-CD5`TUg&HLLA$E6U}@4C>v%B+R1wq~zJ<%TF~h zquDBBbC6m;TB9?8{qWw3GxYar}7QIy88vn57$MT4ta;?VHQM zp4O7SgcGi8)&OH#W|y{y>=)EK2;wp32i(eoYWzzQjwu>rPeuZtx^@Xt-|Ql?t0_2( zjaJRkz~PCO>z!AZT}v7S~5_CD?;P9T!CC~Mwvk1rB!%UN?lc9Hay zmuIt~{ftk5TO`O&oWiU7gn>WyuNmjIOPBH;BBNa{n^wnGbjawvrNCaSDz&&P>m!%) z4tKB?LKnw#JMm2;ktvVlN^(*PtHQZ}`(!CF(Yo#5W4V4yLq?;{cgzdj7$he@U2*AA?3;Mj`o(1Bx4})`RZ= zi$%AiTy^_hJR7Gu+Y@@PTY%kL_aQ%t`)~>HC3uoG&qTO51F7$p0<8C-u0A+!xXo{vSKQY{D1uPl+8jijdQMF&>ZD^Op}eOWeCWhvd?* z4o?I{Atx6ILY^?>2Ap-jG4T;Z3FL=&ImwYViiE^NPAl7j1Y0$!|B}gaNe%2K>`_rp zIjNLG5L*+U4UiSxDMhyQE|7F1_`AYu$O9U4nL0l(d_>35a+H{ipmNCzDu;b@%25)I zQ;mWO>=7wPM&bT-R!U=VDU-b5)T0c3^?$}SJVT~siaz%ncSxE-lC|1gHupP5lZLeq z9b%Q*E8RBNJZCQUI3d0L2~^55@eX|&j{8_!#y~@5u3AkX!7U$xLk8|iMY6lg1QnvxA9{3#cfGd2U_Xq+9FX=>mZVH;q=Zl;p6;5*9 z&tm7y$R-)h7tzG~s8rZP8~8;R`T25wiSC7zE2JNYse3xEm~Zlo0+N)ja)V|Z3#sK} zy73P@bBaC`kk3jv%_xI3+WVNA{OgasQW_?z$xm%+4by1 zKVwU!Y4#HIU5f!914Ye5)c(FtW92x%K0XYEN68DVcG$N_I55~%sMJ0(eyzwyrSg&6 zi+$9p3Yp}^1%8~!E7mc=3(wgbAZS`W$%PQ9t(<;LnidO`B%mc2d`w#cg%0B&K1F|M z=g`MePKyA3h2Z6X6viP&_*2p-gZY?h9d3M$!eB4QABTHuA##k0aFOdG#Q|j3*RmbN ztv0+MCPS%-123o&1(JffrZxrML+E_sxJ zA9=w&7;X$kAG6f_dO-L5mpOg*dO*{~rK)mE=&z4@{h)WbE`<7rR>4*R_V7z}b7EWs zZ(zZxnUFR&I8%rz{@dcHeEl3QM=j2@qH}d)%eEKTl%ck(9_8)@9fA<(Ad^vclzy68 z!K!sRBDd7gHre05`uTO^=8M3_t_%?r4tD+B4m}~|aC~UIluH?fKl^{n-MA^32=|UK z#NPC0DVI8m{~l3bE)6C`i*M1K*9*Cb%7ukjEalQi(YLu1QZ8fo2{*Z0!V@NP5@GQB z$4S2xWtWl?IZ0D$A_~}z_ZSLMXH;QaW~t>$x`NN;tGDyJ_)Yw_0aUA&f~&cd)Fz*t zlc;RLYM4wHNR^=^0ra@k{2~0JJywD-;q7M2kXN3tYZGgHiHXWg5FE}{QMfW1yfd%!Hm&j=v=HnO_O5)|7#riY?#1~)}Nj>Hjg`rO2QC^=qPZ+0*; zO9|fsVX{ONScXht5(8g3B`XI5jw&lqxI!Ke5+KXyn+xtuDP_MbVf>S~2nwP1?`!Ij z)h9K}kQRX%bN7DJqg{e&baD5jTqb5{j{k$9QLoLYhkmL*H0N*gu>Z?E=8M1Z+=xpu z>)!vn47sOa+xdH8&k^&^bP=>`QEITVo_c`JZM3kKhPDrVCQZtMcT8q0_mgm$gD3#b zKhzr77hMUzgDYi1JG@Z(#qJh`?}W zncpF7uw+P|IpB>424FYwB9VBYOjihF`HU-M6fJ?^H)l8CU9Ug-SonyE>E++xriGk| z#6E;VC|6OqH}RAcpuUpAQEq_EDATqIS!Iw*32)5mdP=`*qKh=eEH)aMu4MRQH0bj1 z$C>TIND2+&)^Kl1)3dMyn@B2K>W@|#A(9kA!ob?~A-@fwwk=FZX@tqFn45pYCOovcH4TMeznRQ0F_j^~S<^JyPe*gdTJx>VOTJ6rxoH=vKd*1UC zLEUK{&cI8uEhHu`C5wl)3q{H@oJ;q}0A~?@^UZ#Vk4#XS{ELV-{4;xo`1EfC)D3%}xl{N5+NmG|li4VZNO4oY^bemYP(dqP}vo zCMdC>rzYYP@s*I23LTxt7ise?m4@lEH4(n{%X3MUih@hwpN42IL^{5`5JxxOL|pY& zvF&vy8rfSlr{BYt_rgy6md=-+zWA+l+x&f>SIMNlLb@G$mhC4< zP0@{nF5Cyo&-rYwY6MxfGBkwOFBMW#O7r&+{srkbZanGD+NjnL*TP^_Z8LfBReJNP zNrm)`(jSFR(PryyRBZ%i;ll zWUB~UxO^o+2zj|`7pYFE-ox9Zg=|$;wahO2_KE;m4c+AB>gOI6MEI`c!KF*&SK3B} zhI}D;DERJ&3G7o(zdeuT`<$+)rlz#2Q9xia=$_^zPYY%Fg}NFl%#rZxgDnQ2OYZPT zqv!xtB{>{>dP`n%ydJFo@tP7;+Lmc`p?DF?DIGB~1zjuX8*?t*0j4#5o*o>nEJtjA zo__ag+IjQa^ebfI+lUW@RFagT+5^TZt!^VoU@JDoc}fQSIM&XW^;C_Ld)kr>8@A#s zVZXG9;aj=+Wv@I1oHyGykRa7k5bACwRi~6EN&I>&t=VF>_Pmtn*>j%GId5M0+fe#> z$9*UR``qm}lq*up2f_x_j0dEsV|>$53mmVD*2UGj9EE<^Md%=Slq1Lyk8R*u&V)(4 zGdLzHK1xp#P%{j+yO_v=s3dg(iT1%hTo$z6owqDo0$yAgJ+0O-Y>N>pVx7FK5_p>5 zS~=SoU3%|0yIf~v5Q6<9miPcP=8(SR#HPb8KWb}n%)nGcc)!2YknkIonzj{ylbocf zJakCEn5oVf_o6(zrHJA!&HQT?X5eIv$bU;UuCvN>}Zt#V+a_72Fg^_ zpg!=oRXe*VyOEWX1Dtp*Es_}(`v2GuM$3=7$nPB4d0=mn`%)z<+b0E9C=bZ?lH6MSS)o$o?nFNhF$KoiS+?e9M3%op zwPiOj8h-_!-@W;p7K3bQ%ZanL$rEgM^qTm@ZL9_P{P(kTkp8| zOeM~4Igo7LoL1}QF2s74(u#QGg<-KLNP4;n`8QC6B0|uYcH&Z!VSgs@xn5A$^JG3a z5!|7!JF~9|easo>!t?LCA**G-kXNH#Mg#^El9@R*{ z`rnnz8}T%w8CVvRW7xu@TmB&IfH*{JLA$SIF*d##K${k^elz1(jQfq1b$gRN7fXv_ zRJ{KmJ}Q+P7knZbQf-*#_jss&4T=g@O!om`ND>d@I4u4q8{ZSFv4PI~|8+F~t7t5S zHoPY(jc=*Fbmw&HA<*HYZX<&*YRo`3gblkr0q*~RJLlF#AagqmfC5CG+=t)!mo2*_ThspgW!ZW}i86#+>bm2aiE{%^A* z>e?hHZIOZ;FLkW#DsWwV&N!7j@kt0ubjyTBMx5i#!z8_ml$)uj1`XAljbYTQ-ttvH z&V{<<*&;tSWYp*k6d%u4)su>xtvh(O_-|VSa-AmlxH@lIiDsBEzjjo?!h~AQAi3%+ z@6E0-=z}0Ieqx&!Zv=)S-TdgM9VcS4bkT%t=4<6SB;E&^d=6#~>A>Mrnz+mfB?GM>+{jvx<#~=pZkH$1Z>oS2v|Jay z4xt2Mf5pe>?`R|VfRP;Wx#+Ib9`fCZ`Zu(!GLMnSMH?Kq`D9pcw~bqqurSFw0Zr0& zZb{god_hX)BiV1pR^a*P&zszpJfe?k1)N&(5xJ2$QE{l3AucuxkTmwsJPpX^z4v-~ z;LVnIa%g#{;qLNa8>sW`Bt@0O;$&U7uWq{fa$CLjHda&Nnw$2gJ-O8LCxaYliF9@v!!Kv8ikzTf#+zt0UnDc}Uh~HLT5OJ=#Iu zrk}rLow+ox6v+VIEkhR>$v0ESgeUTBC?W)1=wtwPK)4di=Xqh8R?DohV|uancraUY z%cQQi5E-TkQjxH@$$E8S&_VQRMtZRh-BAm8I!xTep^PS4as!-6pwdI;he98JcYYw- zqa_1rDCcw{Jbf9EZIT<{q9SU2cyuJHAPs{#uO*>VreHd~3xg#gQ=mk$@sf!+Ml^?Y z8XZeA_+1XfSIO#RfwpA5O*sNZbUI-gb_~{OR3vCEu}+yv`lBoru`3YHp`peK*?UMp z9-=M-iJ`Xy2|zAT!USw-!30ce=7c>46GjlqdXE7Ro33y834NKOq-afd2?RhmIuv$o zo8MIA^5i1}(!jI!Tfwt4C_}h8=ro#$Gbi8x>Lnlm;htSyHD~sa5v;cgj=^2wh=c?n zoZ`i^t4k)0?lfNV8zm^fq3fGYn$s`tE1H^Z00&T1SZ6HHmO@ExfCTt657yy2f|65I z$4PzMy?uNl@BpjV_zcAbU!o!gNzEm+2Q=6aAV?3A`r!R*ks*5r3TWYBL>O_3*gp{){ z^J0A;!^9j6?R+WeK6?JW1q(Ds8&`a~1QY<^qXDirmhm1kX21)ONk9x>KyM%eG{ltt zY`nbX8hr2uHz01oufgQW8+LLYo%)44A=I!idhJ2paXeQLSnqgCiYOm_ns$b7!3_X) z2hhMZTGWRaW*Ou^NuUAgp0~(epazBkH8ARLsDTe2EA}91r@4Q_4gA?xT0oQyyfi$~ zl3wBy*yGaut|CJ${tHln=$StmtWzfP=Ls@RkJy(IIN%K|pcz?zW4hMxFSyK8#D9UR z{=@ImDTaU1&v5lyC;Qa#0R8|0(2hIK{fdqm_XagF1wa7C;oc@cA^5zwj z78`G6X#H1fE$Q0a8dw1H53vAr$ZgXc_{!v;crSngVCytvm&%;#)9}+lA{77fe8m<6|OrkUhcSO2_ z%@7&=w9|%fh!`ba%>dQZvz+>-#B#?2zWJn;>hr-{;NC8EU%8fN1K`gh_NGwKdp&s(u4cSeP3 ze4@hmOR{COz2GydCtTBI#32u9uWNKt!k)k7`9;g0Oz9B}A62SGg^;v|E4Hh2Ykr&>*%3xcZfPH&R^SAbkm zgLQCm<@z}Ao&f>;5sJIN>VIS)l|#cGNjp)&C;Z5*b6v1$0^ujE-+%5-BP8J;s$--m zxCZ=U?{Ns1aVr3_Fua+pmb2NhB*O|fY=_5oXTAFF9e+brN{+`jHSobpps|+IuZ2jL zh4Vl&uy#h?W7_r_Qa`OuXDy0SA@rodq)20YoA1AJj^-XRrMJa30+fyd{#@72r!8Kq zek3Q0b`(aZ>MNqtH@M7loCXR4%l)W=OC`zrRGyxY#bn0qAmu#$bX?g?C9-C7gl*SO zNYzV^NFNEs`4$F%$d!ZvASplrkj?Z{E@@v~(SF>gOuNO8Py3N`jdzZ51*&KG81I3+ zXYcVOXx>FK0(b!IulIle>*D|fB%g~p;&ztKIXmY(Y8%BfNUOp>^IhlfRA`5Cluo2i zcQ|S8vF^!e8uQ0Es}+%};57Khcq9hSad27;sPBv`ivfpiO*_?7)628B0lYRy=Iej} z9m$H%N=YkrFAax}ibBH|kDokOk&@8DurwXfYjlWSmjHQ?NpfJQ@v(Ycql%qidBS?T zy!|Q^A0Dl|cC~Vg$I?0LEk-M2fCy0B8`szvykgl1o55q|mh8yPYP|Fw4J6I()gFNAf_U&U_=7Y2a=P&nvTQC zu4C(-N-zLvCp3{#`u)@ENE*6*fCHdzsIGXoTclNL0RuG8zi!%`g?Ea{icUiE0q-QS zP%N0|=BlppsvZKw$lN6!ZhZQ=A4o620i<)B%XzT#(q%-5b_62P{K3opx6e2UDbQf@ zALnouneVX1>hI6^FEjWCKXC3E-HYC0+33XfV(Klx?>YgQ)q{2Fde-6(Y)a(dXkR5% zrK?~$v*-!7)bGFjShI3`w~5#>!0Ek#4~WZgLXX)ar2B5SJ_p@_+5sHXBX6z0VxdCk zO;<}>KB*2m<{KagU_+XSi9$@KPM4ChyRs@4aq{EUOF`MuyGy?*0moxhM5j+CZ}b$9 z1edRwip3I)fCNnC0`jbDq$ub|;8+6xSD)G+uBpzF#_i<={8FaI&A~#g5vJH2Jwy2? zPw!m=iJ406f&(=hQ%kdhY|zPv-IpAmkk15v=xpBX)KT~dqaCInI*QjAkPi6 zITEpQVp!0oRerv%h{D*%xTNr5)48IEB51J^vNPr^I5Q<^!f|@}sEOzzb`TO1A$duB zY%%+j1kI(X1Zm4#TvSw$CVT}Cs6y&-R)PummCk%54n{Jk4)IHntivCi@lf&yXVM7x zgENs<;}ELZDU`7+Wa*$Jx{*iJ?iHQ$$Q*=G${FC7c|jeeFZcLs2Hk@Vu^5%NA5#+* zIot0bYnKYIkao_aI1sP#zp_s+vWZGIk8Kn7(>YIZwfvr~rB$yvY^(~j(dUE)YKNj5 zqhn~jaCWD8l4JPP1~`y?)Wn2-LHn3CZ*HC_Sm!P;klex~@Vo^wPuBMZ>knpwQ>YAk zc!9qu|G|2VZ;My>`%5|jKH)g{gzyM`_D?fkitUF!w4m2W z8f|TWdD#80$zl*mhkGeuKsVCbS9H4cg)Oj9W&+hzC@d-u@74s(c&H6`~x@YNvE|qhn`ZOfT!H_eX}#i zV5VZ>JV&xnHVAL^1zjO|hne?JBY5)-J^qSrL(a0?I1OYv+s4Yt3BWFTfE5>O+7lk) zaav9$v*X5*vBAwVATSZq<-G}u#U;Hl;4U`5HGhQPAD4a)swUo$&iQs4AMVlOAnxZ^ z_vSYH97fdv9RQy}o^cJXsqs!h2sYA2TExtV;d9n-k~T;I|DL#SCrqX_U6N=L13fGA>whI22CY2gdei-mXr}ko@pv=f8q3OX09UL z)-d_lSrQJR?iIDf*#CvGqrjp`phGKf`~q5lXUz068=}OHFwSQeNJ$+ydD^l%C>@R+ zl-@!nd6sKdFP%6;@+@UCGj|*MkyuIFm>?F_2|K2vDHu!o2;*y~=Yn6ZI#sL7O@uHjZ>s?C@sFw^?xOg_jj>%pB_@H?hLLYV(9wUYXd6o%AKuj_vDhb@{? z(zxTuUUH2b^*?A0cTzl0O-;la@w`C2C8?7fN&upKz+zxH-?DGV**t3g3_|!F?Pc10 zwnbRF85VMG?9*Y>#!22}IeAX9<8!0+JUSVymA09H&m(*gwA%!;f|~ZE{XrN-fPVV4 zoc7?&ZW;xzQMy-K8T%Fo$ZWP>6Uz5P3;#F*`d7yybmv+L5=L^ovf={|Z*qONyj4(wyWV%aq_hS}6_m+!M3HPv21$nd@$bNjn@t#SYxU>LJER*IPp0FAB^`1=Bq+% zO_hSi$8zZc#NijFlG{+07oR?gs?(-!(xbNxh~?guCy zcX1H<$6q2ROZJw&n@>E^wZOa{YC?&Z)BLak)N~i_MO!A|T?c2@tj( z-B+>$1%=5=qrtq#_D6e)?H{9{%Y<&0`qH%~Igc^U+~-`vj>>{PNTnBRO9J@3;M_m_ zVmX)iO|dv$O~`VFRSx_9jdXe3<87g{%>V<4? z(8@3JxAu3;w~Kd@D1SP2ke=-t>y_ZMTIv`XKtgrCv3~sGjhhyuI@03)0{Ran9>vi? z2kGZm7w%`BRD)z;z%Xfa9x(|eu_>GVii|GmKWUp+e@NC+mL^@DmZi&zPKP6z6O{$K zPE)Bvcx5mqM)}M{>_OX_ifOc7h~J`3hU}l&xW5nb1FL*(T#+f?0=kzsLb{(ua_MKv ze?CXh8O4`4V%^bjfSe?Yjc(FpRby{|LzUUT|LfV|STeMg6QQ^@U)wDEkif^TYdxx38Z$ zcosA31dkPav*Bg1m$^6<^wdp=EB`0}zNVtOS3T6&7m$P=bi(h8FON_yAd7w0dO(-Nm0;;ur@w}`yu9%_CP$=7 z-u>bxX-Pt@IJdm@`AeWaP^yx0F;k#m~>K>bb60x0d0LiS5l3p^pt{sV!We)!G8qI%cqW(=Q zngHw`3_v~oOm-`8mfc$WX+2e)Wpt5~a58WA0WiK_n0*5+%9*Duz=b$E6p{>8ks-iY z=I4qBZ6;|ds+9r5&mFsWRYjUsoEn+UPh%-i(9{z~{;kppR?FAT9jpSluu)8CG^uK$ zM^Nn5Pdq2s6|c-e!5Q{r8x%lHXER`3eT~h{-@bQ$iyH}6g(3$ZwJE&ENH?V2`ww{y z>!rt?*Z1I>A6l62j<9aBo_=QDtQJebX2+$jko_MAQ?%c7|>{PqlsoUnI03V z@Mg5>syssgvf3?U2T{dZ8U5le?En<#;325C_)5j(hFU=kcr2$}1Iz^kyWrEK6}xmx zxI90wwvBXEqxq92`bASslVy`)-;+kc@%GTZqgTW z#Z57-tzy3|@ms5cPrHgnEe4dpW2^KA$_w(c2tZ;CAIU&><>;`Pq^nA0#)l4Qd8l2Z z`O7ByEgq`ak9=LRfTrw!yW_VAMd<&-9Y1?NxGjbNyZ1k#8*F+ZM8u8wsg~ebh|Ujc zq`MnUDx2tLwB=hw*9!&tq^#71_@n!fgsgCMD8Tyfk_E9g%Pkk9I%g~lm2R}pwcoC) zwviL=nXFZ`Z(I<{!2Y%@o+L8Zf1_=wb^02tce~CAOH5-kU%@N;Saq1}D$U8~;dXBW zI51mjeCHMc&7&*W*G;&;^q1m}I1OT2C{x^fH|h@urFc{bRbor6aK(!cukdq&pcZ02 z6%Pvy0j~J;-EUAH`0h%@BUebQE%U?`_ujqg->$ghYFrUXvZ!~HDcvV+n^v-PX`dPA zsPg^d(N+d1hYxio98XB zAzi1q;6cBVJ%mlrf$6z-+Tl{m7486VM8&A%vx1gi7R) z+CelWDlVh|cy`$IM(M@-IOLLYr6EABxFx2yRa_|ZB=$iEg$5^W ziwr@fHZ;*9$dD~PBG6r)#cURv<>?F$cUP`6okeHn713Qv^rc7?s3OUUIjKMfG%3t&QsKRzJIcg>Hm_xmt0ymByn1pk6;J_hj)6C0{w79fDo*&x*eU6M3?1}c zW6CWr@xd!*Pmd3xef0-uMl^<<#^mI(Gr7)}`2vPNnr{bzos ziB4-;)0ESs7==Jst#DrUVE5b=%dO`1SN$NP3+;u|71@nsCx3hF4W#neqz@KGrU-zN zk-rn@4;6?jwYw_I26DaJDG%iZ;EtM39JB3t#lB3(V!y3~KT&YHvRpd(LU8hF9r>^* z8($}~r(Q`8CG4Gcz&J=8qUHxq(Uhk3rx2;G0~=Ox#7!?`yq2tZU0dZGKRSyanZ>P1S-%Y_ zi~V(bkw-$9ye&!Z6X&4!NRB|7s70ZF*>cXhkx1V#$FZJdnrN_eO8uMa6h074_N%PJv?WUxPe1U7lKxsMhl+c1n*HsnXEOHboqo@s-+4ek zh4h0_?hp(yvvVysH|kAEy?1H3b1vDY8pDoqfs4JzhOdUEiQJ~n46WdMieGWtB(3nb zYqukdXUOD|0A>eH9~B~r6_}isM7$yQ8jC zi%QD}Y#k_^F|;d(X0t5{5g)y^VDcrHjR(xAOb^1n+Y+x@6oea!y&llT&)8zl9nDOP zNA#PIq#1Po+gU5l#T4bf7lSv?&m#q@?^!Sxuzw^S9+Jx!unTWbZJzunnUH1>2Q z++c7Ezs*KRG}2*5UpAT_YFd4d&T4|e>?M9GTt471QN<={*r&_D;XnDr z^p^yjX7ROUc@BHEpqVay`#Nh#NGv*tQ3v_CML)C7O2w1aUC0E-T)zTUIw?-nRq#pC z(T9}ub2da6hSmnebDhryUn_W#sAZV7cIyrmsk>c4yTo8sF_epqpyQU5dz_@)kuF4= zI-~hH;jML;rm8W-p=QeyMp;gwa_5@r&~o_RCQlxrcznJvKOS)^c$7pMeYs~s?ynJ2NV##AUCt*LMLLy#?4{h4r1+o?SeofRc(Em2}}Il z8*FcRgFp8PC<3WcUU+Lk1*ojVINASrBQ{WGSF$z(1s=?#S8pWI|8c+PYZSxpDk=uK zt9_e^@I$4s1a?%w0Gr_P?NTd=U@MZP^oKZio-aK==$pbLcDY*ImGGoB(2`Ejpq z@D9vgbVX?O%i8;e(i^ILNSG$v+hggXP$x2ujN9jTo7Wu^(k>i5bQaG0ao5Do#=S+4 zqv8;jC z_60lM_5F6E1@DjEt`KSFbBvBZeCQY*`)K+x^O7UpP4f@ag-tt-fKCE&t%<^-HMRAJ zcke!MaF^v`)%;bfmMHf!xiATVzd#ZeEy;BdP_i%UgVVG*$ehPSr^O`cqbl9&$OCfW zJPwf3&=TL`+?0ZtR2?7ZoFAS<_{{v2l6>#7MXF%3T)T3k#F62bY@5B3^dS?+;h0#R zX_t-`$GE9qs0RWNwrQ@3L6Fk=@m4s&gZUx9&qnpq=f5Anb=dYco1*k)zCyQg)w>aK zOe`6@@*ezTGsddc~C*vP~kI+Q-~aTXXSe*i?Ak^8G3(b78jz%h zwtX)r4)0Xo8<*xs!FX@%mG>Tgd-yWK2S4BVKu+7YOvRZ-b2WSpuHh0;d~g4c5TA+I zMTjZ|$*RPs)8a?8SmE21>^Q9O4XA-Mx*~UtV}es5X19g4ozqrvMEchu>0f7IcW+RF zvM+~F*+8WuSsUoI&VQ>@mL2X&90S}u-tH(#sX+#y)IJx=NxHT2Lyg9c|GzCd>hV96 zt2au{^@C&>Mc{C)@KX99(_zdQR>_>y-+iemy=PH6SQl% zYAKoFvv4LTL|X)}^?NzK&W?|K{}WAnFSg7S?-D_$uqll+koKD0Xny|eq(++6sOTyx zfmSwJt4(i>RdqmAIImc|Dt8s?$3VQ}J_3lLe!u%Z2&fCYCPBb#Z0!2usMK1L1<9^g zBeT@Wpe!<)&x**NE%tLF$Z6LmKugMRB4P203Ay&MJu{~y08X~KyzCK9 z$=+npfU}ZIfrAPwE6u<_$fT>J;)lPVI5zwSyn#1Cq7j4NYxTQKBkOf$!-b32tM6rz zTw6P>r>{~wYkr73I&qN$g)K*5i_A#E{%5(Mv(F{QB9}KY1e}2M#(y{gH_8T#46?T% zTgsK-8~vXrWTLEBliLO5PVi+^6ypstJ;k;-`X*rLr5}tOQL4A*RWUM4>=L-7E){=Z zce0P(Ypqgb<=I0nWh0z;7{K`?dCU7duaxdAS-$TGGc<>2bg zfqQ~>`kc@t+rsAcCc&_It(j8o1?1Qgy1xz(CMgE$4kz#J*K<+pe~jJZV%+uqRiujO z6SEo%@9NT!=hMkzmuzPr#fByOX2Z~}Ao`4$ym!i@h%T3uuq*QRw0jld-iIjOyl@_> zR>pT7`-0p2)-uD3zKf<*Ny-22p!6JK4O8=NjD>#GGI3CJNZWmSkA2EHy|s7o*}G?0 zOS{vXnlp3h*f6iYqj3K3^Zo!yVpqWrZ)7n?wUd#Wh($#Qk}^>I-uoY!o%u2ViIHT27vWNCU3;^`nA zRpxa~bZ3*o8^OV5AvZ^-Cz)?78l$ch^AQ(0ad z{Eu}0$a^bU;k};afoA7w=qdW=8I%3j;%}PnFBRO9{j-&u$@bi*7x<7Y7hi6Zw|j6X z2`3RrsM1b~PK?dvuh7F>OlEX45UrV^iBiFmjpw+~9>nN^LFh~YBDPlKX-wEbdu3+oD5janZ;2Jwc4pxur1_YdRkeTX~v zGWOTV^H6Gosp)+xs2H;APz99Vx2g+@FWQY;#XbQG!jm?NC!isJnsLRQ^x_AvvgxWc zv(!|JPpeGeI(DQ%yMfjbUkKxN(;jm6RT8uEV`CC|>k9c^HK3Bic|&hG>91C=((pFc zvO6)fllB)4Uu`L0rC007FTCg@zoMs~Bvd%_Ws~3J=2BG)U7}D?oGY;d9pst zYZ&wG$Xs~;=8xrU0!owqC99`{4%5LWXy21;z**M6feq$SI&g&M@1q%S=4yU*)^3j- zia&RtfD7aK&$IAMPoTK?tui_+a=Vr)N7PjHsD$Jk608M`!B5HgZ~4 zN%DgAF8s0zYQK8EJjyRH5^?WoGCK&DS2Rz<f)YKdFMP|$$MNGZWGb9)~@>^y` z-IYM9_5xRWu!{Bc0d{T`Fv+u7$H_=bkDxtw13o>Qc5GtZ*a#)dbQfOhw&cfmN2R9b zM&$LF>%5~Zd~uA=EFC0A!DdH=$A_Qd9c0mV(Hn^!?<`kPvMy$wb{)PDQ==|DD5X~I zG*#kLOeA)gDb4zSpF}hI!v}X1>zg|Z#9tfe>A|x+mO-c`_ur>a+B5%k0q8RMX8#!V z;i){j3~T8sLMk~MoqMXocAjOU#@>}$a|L<%@h4*W9dg!IeUPxW2oYdd)y*A&u`2jc zaGe$9r(7-nE#|lAml1rme3VYT+vNn$+{Inv3AdQ_p2vDkW?k*42D7hwYWUUii!m3; zd5DVKXR4-5MW>3(I5Y8kyyuGw6Z+9n@q{#a6X`bs5r@z`!{K5r%@Yq3RFMAncaenY zu0F8_GFu^ItJU-eEn9|G<00@(0!4o`SRppRRKDH5xO$K#)CvL&)!Hw1mX>}C&1xgJ ziqXVEej#+Ro~ae$s|s`4?x^T=RN>wHy|ki?8HS62Y(>ofpSuwed~b#_0Lkx%5V3)K zJJ78_`~@R}J4i2Sx;H~JyP-j}VDd9W)!UhGEzd4LTIya*b4yN_C6y_f>qQ6gv~X1_ zcp1r;$uwsoPU+9Ev5{<|o{f!;o)SMTaw=aQC(FF5)!cvd_O+*_SKaDSeXh&R+ zZ4qs~&ukr1Z8F7Q_0vg6bl4dPeDua>kaVNATEXf+kZw&WU==giWT7hwPjG(1$J)!| zMy8L68A<2H(B;u|ZUmo7!yE{Sdk6^n0!_@u!EJ64=Ydzy+9fUOf{ZK<_E zCWvxS71=}mKdfI}Z4Tbvj`T2^=GBNt=xTvDCjdVe5+1cSDg^y6<;pIG>~gbCyJR z^@~_6JfFD_rNBWlmZPC_qF7Pv2P^mY{RTE)pfAHA>X!1A`luLkmlyry&r5Etl@M2> zte4CrYOQySm!1y^$+YEYpN+Krb3#>;>_OpWo}*dP^z{aI@BQ?JE)ZyEa+H0Y%)a2k zSbi9^GZK2Z$p_K+hepRDX7%cvBm;A|2r0=!Rm=o;ZG&ynAF9 z(k+%>Bj2Mg)kZJkfxBNC#5OW}I>&~NQ|YFAM$Zp}+&+tYMV?0B3-c3wBBRdmFx6&n zrKol9sRlfK;v&{XDJsG8e%XNyKw}n$0=X_f90Ky8-<2&CG#e*Lg?MFWz}8F&kkkAf zI`bg^0x(Q)KRT3CG&$Az5}kt|1kOkK4q%94GMq2hn1rkli^&Zf)06yg$iK*3ka6EMga`k*OzXNIiZu6rFaa>qcd-v|Bg-nxPMi+`-cT z?C3CRh9+Q&hY9*p9ioNR@;(v$w0+_+Gs&b>o1`fT3C9v)M+eARjPQ9_XHgV~?#vHx#j~ z&U|aBSVMbwmmw}EioKxV`Ar}cF+Nr%vW$9OZG7 z<7UL-z}*Mmj#)ko5NA;|F{Pajp+p}IW`AxL4wy7|#=52d^|8PFH|F*W^M1s<_#?7k zsn^fc_ce9l``8GJ*`WDs@J!Zs1|2Yo_Fq6@xHfv;7;#DbXutWHXYdW}J%z)hv2I5d zPZIpHIbR=dcPF$;340Z>WlwcYb;bVRqLAXiLS#U_=4@PKz0CLLXdqnLVs$5UmN+I< zii*kE{q8F7kjs}E5Ag}s@dFOy!=>Uv;ReZP8&c-1+F&^sjL~xg>h~Tiplg0snR&4^ z&*t_A%n#Fc-F`#W$)}9}4Z*qs6ly;m`?#|*POi9cv+!m;d5i!Fn-ke#G3zldnSB$< z&^qv;m*MB+Kx$IL#Xg95sQm@~wg*z{$69Iu_AAj=P#iv5ykcR`sf+rlmZ0m(t37*R zc3SYGYzOr15l!15jTk_Gq63v?XiiJb*PlZs;%mifu^tVd@`83bD+9@NSKkP9x~I_^DW>i@yxu6eFQRgAX?Bely*~f+#pQ% zVQmL>@TXm_D#_LC`)5Ro!DH1_77otPR=pOl@w!afP z$H&bjtMIZbHZZ&GY$k73?YVT3TEwB(D&)q&N zZJNhCPnZJPvDpb(2z_p4?Gx8`W8Fuxq0`wYJ}Kz;BrcEkIto-Wcm;IwQr5bPt*Pl( zG4}Zpsi$nhlV9kP7p64rh%ia>+kRE_FX>NwZf^+R5N;EZIVXAsb}3svk@?R6xf)|za9P3ib)DYJ(sa* ze`u+W-xe-g>@{y4IOs-SwLWRw=6`ngVrD3!=8)jLz3BOm^y_^iL9{w#$$V))9&+Z+ zRQ`s<*$v*z(s!@;?Ou~AXwo$j3u2XMFNhzv4O$_H?b@1^1ze!#pN_g_o>o9R9i)Tq z!M;<{DZ(@@Q#@4eBlQ(KN}w4+@*pE#VN$p4$wZBJsU?r1N}uKP*W_$q7#o2Q>cnD8+hMsdDN;J-WTx+W54c0c%SiNHX3jhY6Zl8QE+`kPTYU>0dS_z7BIA=Gz~8czW#Q z8=$c`xP8|yXd~Zr&ePY!-w6n$s7IuhH*@jXM*sXBox57m)sLjt*eaa$puzxU0GYoL zu|S-v_GQD!cz&Ec>(XmX7;SS%Nsc8RCCA9Nm>Ww`*fDaPtpiWOQoXsXY3^A*Io`nh*V0zCw9S?KhnQtv*9R!y-dk2FnP@)g*etA9cNcnk-CfwHgT>zG z={hfy$M8SDyJ6bAl-?J%22c}ArG{8Ihf1wHUoz!-kj_qXj-wm()HaLS@_|X5W4L43 zrr;#DHkjE)qR7$O7eFW}AGIT*XeHX;O}9tZ9ml0VhM5spl$-@*x_Uao;#QGXP-<-a zqcwD7Zq%^oPM#z9WLZW0_T)-^$nDTOU}x{M106A5hF$*)OvNbyjO))8zN;ax9J}9iLjwjffhd z9T^k*^S&FuLiGpvT&H87(G!Q!T=J+XEk{W`Pae`ih0pTibCPq?;92-Y`$YT37t#@n zXe1j?dXk>A$oB+n*|V9Pwp$rF&-;4_IY%;R{%FFlC)38bJ7P(*1JHspFDI284-8{r zs9WHjntPx(6RBrj@jVCCupuuo&7`8J2-qRBli8jo&7;smauYFp#3DBNl$Gp|fPZ95 zV7!Z_W01`(9Fjq)0h#gf(Q(-i;`n_r1DM4+`(O`%vs?Y{Qyfk2&=vWqVUE5%^~++W zrIEVS18EIanT>pGdSJSDczBe*=itP|i@Ry7{GyC(I_+jhq|#`IfO2ts8MW~;r$_FM zzJ)qhGc@5IPXnMAXR|g(*+?Bv==!1lD6rt*_Oj0=NjX_G3~M`{_L86=!3+<$SV(9v zM~6kz&(9D#jb~Hh;UV*p7Oj-LN(D zxlcc-6Fb+KJbGeE^O%oNOU|VfE$35`IQ?(a(j>R}8xl*0l|N7Gesc9ALP4`4hBDY+ zZ1#H8o`26;XMrxezY6Uo_6b9mp`DiLtW9-?@0e>#W67|rPKPqv|g4h-trjrM%sZCI7OnPtc3L6wXJg{fBtf&fU zkc9gcRiRKF)Bmxin8t1wzeV^q^N=8Z(sm-SY@!+33#cnM6w;ysJa<0BfsGrz9yV^l`D20iK&PH_v(74H-`(^5E|g286Dh3(>ax|L+Uu1 zr0?ZMs(VIZ-|nS_oZ>=b44tNnbLIyY$n_`V_a|5K23x0tvcJvmDzJ)+{&Gatc8Sf1 zNSbUmrH`6B2y`kjX#e_zcwisI(x@ofPZPZ};ZSN5??TqG)|^%7di5&E>sBJ_nm-{q zhBU$vOU=5l3Fw8b&r7LE+0l?xslN?vfS7(6J-wTj7MX~rQsK#l1Uxr z7lGX5BIgF#GrgzwiH5H!nCa;+Hiqp?lP&rdnr3R zhbCs{WS_rlD!S5ZLIa6huUiSzCFMrym9!hYw_4`ADslrTN!du*y!gsJDlb{^h@dh4 zBlv8+ETblFI}QwS>Qg}+*mjVgAPxezP`;+D*{sL}$T#7ESdXX2g2bOMDP)n-duh`{ zk%}H_i0AwVYQn5F{5mI^P_{(o5*-{*a-`s<@!QQ~QIx+~ZmF@+t<>`%Hyq0*aI37= zZkVx*uc4`2d}Vynzs=T=|2bPBi8-o0(roo)WAj~pXPtQZU6Gf}op_~qZswU5fyNrT znafDeP0EzksF!+6bAMzu2dafFa^L6xZE&)~7W7hkuFe7NsM~t>!fJ-ye_05$ur^YSO$QCZ?K`9Jr!@_93amBhqU*AZt7~gb>lc&+9{X>BJ!uu zO$)vEUIM0>W_kx3Y>bV&E!lEWU+S_X_uh>Q-KO{62@q?k6~QSHq{mW8=zv?Aeg$8vTz^PyN*u4e#s<#?8%Z*rb+J zh-G>|eUek2QA}H#5K&BXICDu3ZIhjzk#*IvK{FCLm_D4t|HsNV1_i!2UeE;CuCLzDgILtoO@a$CZ(WYlHmUquG{j^Fv ziz`BRiJls@y2l#+ScQ*hi(YQS=zQsV%+ZgF{@Mt^PRZJNd$Ui^;Wy}@kuZ9(SRE>i zC(J4*>*y|Ao~N!97O_jFxWOVTbl&SziXjgcDh#^EU&a4XpV5Z$NmJo@X& zs}* znZ1CI5!1zH>W2UdJes&nu7B5i94>RINUL@nX{Kq;4|b{plsb$wG}u`J7Qsm*p7irnUFzlh4kh2a^eU!sq9D6%0?<$ZK40jkB*3!{M>zk?ygIhokY|l5qBAzu^pq z?{(J*#K~wc&kkqpc|=Wak+3gJ)1e1^QAE8T9;R*0I5w=98a^rapjoAoAklhLgo8K* zo6LkBeVJTJLQ+_}1tFqeO<3Wm`SLLF8e@Vr9z7<<(o@J@GIQlyQ*Fg?NQz+g%2DAl z0MFA_ab<3TygeG@$XH7%=ZG`gUT)xPOGN!NL-hUeH;TpkRZc~&KSXd=fSjXhP8J&> z3)k==A);SQM+ho>yl9@ff=(@Sjl@Mu7cQC<7flYS8sNX)Ml;NN=$LDCW5ESo!oe)Q zP#mr4p^zmm^$%^JYf)QTtpt z%rNEMahF_wmbB95HmuA+aoCmyBqaHfO7?j$8xzhtPC&rp&?upaTkE>l+CRuEwevvQ z!OR1^F-9Yf^wY%6#zXZfmX*hzQLkd!WgD_wIzDAf3B!KXXV^LxzJ+-o!j=4Z9+)rD zEMmx2AI2L|yGXN8y@+oe^SkMH-D@N7yu`8oc`>wW5$(iR(236xg@kF%#;iPL;Gg_*nl~P+Xbjz;q(lKKwB24VPE6ub+dDqTp~Y`XLn9r`LYCk(I7xjY`9Jh}b4zX}tX=fJTYi6+pvL%rnL)+c_duDrU>Lhp_^ zj3`&X(;nGQI>SO!9(&S0u3(7|S-&iB2~nnMj2Z~Rg{8UKwd6TT#U5_5c4+djxZ%s^ zF6|ZijVT3GOG=(O&z76Y7hfv;F8vCE+~i1*`oKzC7?1j_-J*cSy#L9EYI%tt2i zJ^FYh6?euDcaoNRlzm4_Zg|q^QVCMJpeFS-(C$XeBC1*k6#m1N%94!fsd~uCwWu%`Qf2Z%2KMOV)RneA{ z-^32F8SffSAKZ5e`?cz|GG9J})ZgT~Uu4VV@vNq=+*T(xqAQD`~XleZy^19-bN|ys%jJcqg5fM*aSRIUST{ z%d`|&viNw>{ID6}Gf5CxWKOK*6Un+L62tAL7 znxkr>z;99CzJ@;HmLdtWNqPp+S?F6Xn8#G#wI&m!NGI|pcBS=yH&uuuBmh*=2H2BrkP}3sNtiOIwU`4DF2NtXkol z=g7C_ry8nl^wX>YYiePRBb84NzQ#f>;UF^2Q4Jk)Jm`9qjHQSTDuddr%`#UwAYtJt z>up*Ki@QU2WC60Fygi;PaulT&r|za*|Drv9q#xO46tF+CVvYt}d$4<3OHQ#cI7S+(=)VkOTU*qTYP+2XV$+PDq`#A-bWrRo~4O;I+DjlKQ5WGvF{hC5dw_)z&QMPWovX{k)WZ z#?xrg+(BzPX*-c68RNlHlVdx|i?Nc_i(?a`;{iH&1+dI0nqTaiQ0d{CgXq*YxYa@` zOAF{{AFgHJ#IS{1*z8h$xuw{l-J|=ioK7g*Sevwy(8=g2Hr)s{%$?m1x%{Kt{LS~FA{DK8)2WAg|n@3mM~>gsgXqx2@tyy!{C$|OiEd`ZPPRKvq9**?2@qxdj6 zsXk(}<{ER21?!?%i}XcFY-k|!LUQFK(y0PHfidf$$*83JdZaD2YS)*fywG3K(|5PQ z*#3<04{Sqcwf7q4>U9*Acl$D0=bfb$5~KJi?WB&P!!4`3E@Q1V%tOt((8*U0p5=)p z-VUQ6A~rN)GinroYS5=?yAan?r$42wOXYVrz9$Zqg|T)iLA=*|d5x1Y9`fw)wFit)&s%Olg z0!O7S-^y=AdLNx-LTXhf6HG$Goq*GWaJTOI2THDxY#-em4NM92MrVWKuznoMWj!fE zBhwZ*9t#_H(}RlAJ?TYM)bHOz;S=1>#*7!A9^;6%j~X*<_}CFLI#zdfCMNpT>w-7) z@#y!7wdT7Hrf`hv(XB5NPi7z4WDZ$+B7B#Vw8b4Nx^8`Vi*n?wYDH-jOIq zvaF|>ejocI@AXs49{S(sJX}Y9_N41w<0M&%?C5rz$k4?hF}&2F6KC6VoVf@x7|SNA zJF8gB=dsi?EpA{!|Ii`ALubvi=h`jz?f8fGD?9PPyrG`I& z5_Aul5VePHtfqknXaHVjF{(IaTyi*Dx0(gOW8$MwbDKn4(OMJz084&OUgnw$iTU+K zPggs+Fpgp8Eih1T{kHh$e)#g>xOiddR<|jAfo_4W*9=4kzE6CK`k21na3SMn!CBPn zMJXavB2}tEo7r-Vycs0%JlSWUJuZNnYj>2-6|+7Y0MmUcV?(8E1YH$<@8`UgrLqIK z8|!E`DyZnt+dm*#EGlJlN<{49anA>8`j20*a{Vmn%(*O(8dkzu?{ehIH7Y5mJb!`O zkPAA7MGWB4!egXlCG(6}vvJ`!omjsJWc!v=(W9p~&?BxOx^Nv<2yGJ&(CIrp(th-$ z4*&$&%Pd(s)hO*4{b-W&=;)J|@ICWmOBNx1Yv*B(O~e=HGbtLI!nV2K_ZRt&oI7!{ zj?WP<3!Jyk7vAx#N14x@I_hgI!Qp4i_R%%xY2!8zI=c>Q9ZUqD3l`B%`c7eLetLc; z-W0L=I76JVhJKm|^TG#s_~;?pURs1S4WKCC}N3DU?26ZXZ;=;(Es7^o?WQWMVefhtXea-PfpRjhg7n)BrTt=xY4BqEhnUT zF5f~bi}onFOIsYK_WPa<@6v4&1MSQ{tYfq|vrdQMAktlS{O$^I!zieXZhex@L3q zUG0&n+73J_d?raop>H;*wsYbKpg-t5 z?mWmlMV1k@Q+^=)pRP5M!=U+eOSIj`A@IHxRz*=q^!p4ye-9Y@L);GcQx%TQ{)=l( zPt{O7RD)=5_$+}esDSy(`DlbbaDwQyE?mv#YJ2%&1@%5cT2)7}GrXAjU7_$?MK(QG z12?l}c&=uV1ow0GVLb>C?uhVQbz3sNOFSDOL(|b!^1DC1d8%kXz#^joD=l)vN>O@w zUQRWC2F{j=K;7U{*G0vmbaXZ<>N|pmaU#^wiquz)KrDrt|7bw zC5F8}dO7=$(jFXZ zo61(n*f;=7H9%x^NwT5*#KvBnbbwZ1WLB;fJu%TPx@T@;X_-lH&UgrEI+pv^K*e@I zK5vjE*KZk;=`?&1jhXL8mJoXujVii0*2PUNd5PI5H??$^4tzidJ*9nWS^r(EU+I5R zOD^9X+8w1ez{&Tzict++BOKvWJNqP#Mc9QS{6AioXjd}XAuvnpdUK&@x}-;u_dc4- z{R3KZBxI>K9Wi81%%BAgenw!xjN#k5@!`ij}vuE<_#cv2E$LZ_~ z*#g0|c{G<48v4HxOa;h-Ev19FOi)GpO#B|eOJQovaxB6PFVzEHk`8FTGdk5$_no0z zOc*#c!c8wN2fdW}gs&3tC73$%aR>izfA5;B*Z;$Bg|I4Z(CkBLU0Rd^P@YmUXzI;s5WiD0FuL?AhVr zasi$T6KiCegfP%cmsn;s=%xR^x2c*g<_cs+bv??dhruoLZ{nAt(!#+n1%O|2fL|)j zuYAid9l{FsAN*3oJcDE#h$Yh=8HlA%-NX{M=cr0SVg7%yrICS==D;Rq>25Q#M5gL2 z6+Csi7QSv=%BjMpAjlH6>90-nUBhom^tOIOGOfcD=`UVs(wZ@zz6HuOw(&%X9sv)> zCIDq>9#$&=&xM(U)Jb9Z1^n}ZXFN8g)?)}au}l-dG8uSwvr)#nx@72N=cbSLs13sW z=ALN=s*{&vJY(wZXZF?DplvyfhT)DO4(pFDbDhQ_Ask)KvD@B$|wzKIMuqkBYnh~ayX-XgIbY8jD zA}()cm^y)Bx=22Pp-FNwH4puUf;q z9|U8`LBjU}z~oKTj^r17phz`RJz6n>&T;cgvz7cYni44RON&tw^q>5aD@ov%@;-RdDK18KPK$EiGxn zmVPtQcXTfV9IA<13bB{dmiXrHT$8!hhv_lx*v5(YP&{iH1cYiy6GHWyFw*G=>_(7`inI)Zyi;;ai$eUohjon|Ij7nUX(pu zw}pvgN3HM^c&1o^XObs5z%va9q+h)%qF)IE@h#8v&&$~svsudo)=A))4pKGkk&n5b zaRSKH4%1o-C+*C;ri=X9gg*ZSnf4fw4}7fJRD~M*8lX(#>>Ft}3$OE*4JvU$Sj?PY z75gxXNz&LSpqcb^$D}5h$!5$5mOUDf{9Y@}OLx9th1~x2^U^-aIy66;qwv;QZEp9@S zma*HB7!wgma}%PY6a3$xNw1pFq{-%Zb^5J*Dk-63exvUkI85K&Upatxnnk(S|*Mm=*3O

`D`}K z5%{E+7StB~A^=MBQ)5*2OM*8yziK<(TnprBF_0(XJXWpQDu|Gw=G8-Is*2 zUL(LRp|`uM9g0K9)lDI+Ki~M7n_nU`j+W4`OK9KwK$wJW$3Gb+^m2G5$&M&pkiDEg z55z_bMkzU2CNN6t!6QAtF^*vGm@laMeoN_o1)MRoKi6;r92~F zU4>i_)M=@w(b0gRV)n~(!vI6g7htHZ_FR2-1TM-yF(znSM+Af^2_^FiMEa)Y<{>7( zT)7*`Of;&TdYWaY(?Bv!HH^+$60~G)DoCb8^wUMiv$-UldQ}2tdXQ?|)`T+kRQA;M ze1kHjYD$I2Tonp)EuLfgHMF;@?_9dBJLpJMF$7^#*|Zd^Ue>(?f`*{1j1Y*Rc7(9d2RFb8ZC1c}48eU4M7KsVt$ zn(-!D4`m}COjGu+zCU{tY(pOv{d73%=d2g=s`?YAB0bou1U4Pnz>U99zKkoPy!CR% z543kby6n$#oY6v;ha|G+i21lS3&nr#t7f0Z4vQVNtY06riOZ+&IWK2EK1#{StGn;e z?(v~$FYHx*17*Oq=*UcW9hYGJeUx5uV@osqmI>HWh8tT7r9IX(`fX+(ulMzx7B<5g zmnO?h!cx;#>MXsTdpGY6M5z_1iD;3BLN`;sY8QI=l1X8)0u!~HeGN*m^_0$TmI+(D zNYF0?Vd^3bhI(L3<(6D3D!K4XeJYf<6WLy_Zw8wX8`51m@A6_a%7R<=!K#U)qS!|f ztW}%C&dA}rF=*^IR*QzFNN_<@kC)qFFI$T8)`~iqK=OBj_kO} z8_HdkqsCHW&VIhb4K)1|V4@nNng^2CbVCK5jC*Gh2qwaChVQUNfo$d$))Qz6or66^ z7qs4kUL4QnCNu*~>38;H>*GoITi};uV`i{seyM`0(*BcQx+tJa56I7e#_?gQEv;VehZ(b{Q9^nO$-zvpro(0bMePQnxxP zk@;g4_dkpYe%YjDxPfK&&_31mKT&B(V5lk1GYFC_~6Qev{y%`cU>e)g-G zkv1u6rob=d!fzJ%B?oI`SdT=B?p@H!4geF8|7GX)(Vh=zm&a~^$$?65wzjf=*+}~C zg~MoxV%zit#wcv&>GVTLL*ST5=Ihjh>9?yM>;CdrtXHg8X0xF^nHA+J@+o9P!K^aC zBxPxQb^#Z$W6OnYbinm*em#HmRLUBy8)W+K)Gh&JN-T^fTx`N7fJ};6ZofM{STQxYo6+|)Na_RgU?C&$>IhaFtLQ&sO>r z&`#O7C*2SH8PDemRMW`J5&LqV=fUYneX8b5&x0qN5j>@dX)>s4_}M|6WAlNe3O!$? z5Y3JDS(i9He)QF~r-aAeJDPntF`99~2>i(+2u7k-1L8{yv;Q*U@XJB|qB^)2fJ%5rwR zchi%_vDP$tuPXy``mQrzNtH zF&o|jQ1o|nJWCW`2+ACqFg{`29KcRw3~|!;>_>CxyI1L~u|S;$k6W`zm`EH&;GDLS z_*v>mte%FmNpwA-zmqc!y;u!{i|{w?gd){TITCkn)C+Dx5$A1&3rbIW@^j}ie zZ5)PZFsP=_1*(aU?ZPE5(D+Fg;<2rDY>DGFrIEld%By%z&=Qt6Tv?1*^{-2vwfSImGd;?O1bcw1@puv+;HU{_HfPY zE}2E5$~V)xbH~tl;q#jU{gjZlwuyck#im7sDGyni=%*>GRtfZzU7(+KAGjQ(o{okb zLpbk&eY*|sXphK<&5YqQMHlEh7wLOHKFwvzP2B|g>1airu#S@n41+WwP7#COr-K?M zVTI-U$A0>`XTuC|m>M!9G)X|7E;G+1%*NIQz>C^JHyj1>lxXKRDS}cqC1MTh!_KUO zRTU#FT%^Uct9851%{)yES|~724uN^1UtFKddZX3JIyUj;S~@&WI#kvs%C)cca)b zdWcO7W#eY<3&>bRn3W_qPN1n~#I&5FYYAP&d-s+|nTLE$#G-{r8|bDp(UB%NuwQ^h zeTTJr%RSM1Zs@6Gea2!yPiN0?Y$PJ|D_GxPwlSJ{AD--no~|Cfz7O-@qM&(A%v0E9 z!;A0C*R|j2`Jy+>Q||ZY|5xT|lbd&f)i7|^i$ZImqu>qjB(vgnYtc4w3VbH2KEQxjOnjDi7lb)2VFEhBh)1{?pF~N(zmMx9}@N^`NKc0Sh=k`L-p3qiKbAv$NrbxrqUV4=`O*tI}%n%L$iV^$s{pik%; z5WU}iJmb-C0{-;of$5j$A-pvOx~?^CUq<`yMPYEsZMJ1B>PKnNAv%ts3}kKmn1x`T z00U=HPZ)#;vkv7R;KQ@}M{-FcLz}6mG_)r;nv0x=@2E(?p5oouQ@2Q%BpzE(xYsME z341ywJTXhR0eiw#Z-c-v*YaqOU9_*~uWc@%kyOQFKIb^Ch4$2f%LuGCm+OkjP6b-$ zrLz^TlTl}*tAdnEP#v_)8owcY7F*hQn#A)VCHgWnq=#;a7vcjJPPp7-52(rtY8}~V z4{6FZ8t|~y4~T<+;Kkmd?GfPJ9?hs-S|Q6<_W|B(2P7`?0s6(9lh72}N(^^K|AAM8 z>;CT^Khh4Ku4vbNiJg?HVI(IzZ>_eYGL6ag8eOyk;iM}5UmuHYva}?Nmfxx4c8~&1 zYN^4Z#c9w&9Kr<~^>UrYl=&5YGgcidS4fpIR?+xO6+sjRg+;|T1>

T(qwv0;xc^Tb(#F(lK<-A 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

=)*Z56gk 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 literal 0 HcmV?d00001 diff --git a/third-party/SwiftMath/Sources/mathFonts.bundle/Asana-Math.plist b/third-party/SwiftMath/Sources/mathFonts.bundle/Asana-Math.plist new file mode 100755 index 0000000000..0fd7a3900a --- /dev/null +++ b/third-party/SwiftMath/Sources/mathFonts.bundle/Asana-Math.plist @@ -0,0 +1,4343 @@ + + + + + accents + + Beta + 301 + Chi + 331 + Epsilon + 297 + Eta + 416 + Gamma + 279 + Iota + 168 + Kappa + 370 + Lambda + 373 + Mu + 471 + Nu + 415 + Omega + 412 + Omicron + 393 + Phi + 373 + Pi + 406 + Psi + 435 + Rho + 301 + Sigma + 344 + Tau + 306 + Theta + 393 + Upsilon + 369 + Xi + 346 + Zeta + 326 + acutecomb + -143 + afii61248 + 360 + gravecomb + -190 + j.dtls + 60 + tildecomb + -215 + u1D400 + 390 + u1D401 + 325 + u1D402 + 370 + u1D403 + 410 + u1D404 + 308 + u1D405 + 284 + u1D406 + 412 + u1D407 + 416 + u1D408 + 194 + u1D409 + 170 + u1D40A + 401 + u1D40B + 308 + u1D40C + 500 + u1D40D + 416 + u1D40E + 417 + u1D40F + 316 + u1D410 + 417 + u1D411 + 374 + u1D412 + 308 + u1D413 + 334 + u1D414 + 393 + u1D415 + 392 + u1D416 + 502 + u1D417 + 334 + u1D418 + 338 + u1D419 + 326 + u1D41A + 259 + u1D41B + 283 + u1D41C + 226 + u1D41D + 310 + u1D41E + 252 + u1D41F + 208 + u1D420 + 280 + u1D421 + 306 + u1D422.dtls + 166 + u1D423.dtls + 115 + u1D424 + 309 + u1D425 + 160 + u1D426 + 444 + u1D427 + 306 + u1D428 + 278 + u1D429 + 298 + u1D42A + 320 + u1D42B + 210 + u1D42C + 222 + u1D42D + 173 + u1D42E + 304 + u1D42F + 278 + u1D430 + 416 + u1D431 + 252 + u1D432 + 278 + u1D433 + 240 + u1D434 + 530 + u1D435 + 292 + u1D436 + 348 + u1D437 + 384 + u1D438 + 300 + u1D439 + 274 + u1D43A + 372 + u1D43B + 398 + u1D43C + 246 + u1D43D + 242 + u1D43E + 348 + u1D43F + 270 + u1D440 + 460 + u1D441 + 403 + u1D442 + 400 + u1D443 + 302 + u1D444 + 400 + u1D445 + 324 + u1D446 + 340 + u1D447 + 344 + u1D448 + 443 + u1D449 + 414 + u1D44A + 526 + u1D44B + 377 + u1D44C + 364 + u1D44D + 328 + u1D44E + 306 + u1D44F + 235 + u1D450 + 207 + u1D451 + 392 + u1D452 + 194 + u1D453 + 445 + u1D454 + 230 + u1D456 + 149 + u1D457 + 98 + u1D458 + 228 + u1D459 + 188 + u1D45A + 382 + u1D45B + 269 + u1D45C + 214 + u1D45D + 229 + u1D45E + 228 + u1D45F + 205 + u1D460 + 211 + u1D461 + 176 + u1D462 + 272 + u1D463 + 249 + u1D464 + 360 + u1D465 + 246 + u1D466 + 241 + u1D467 + 208 + u1D468 + 456 + u1D469 + 380 + u1D46A + 452 + u1D46B + 410 + u1D46C + 380 + u1D46D + 372 + u1D46E + 480 + u1D46F + 427 + u1D470 + 254 + u1D471 + 260 + u1D472 + 384 + u1D473 + 450 + u1D475 + 444 + u1D476 + 480 + u1D477 + 342 + u1D478 + 470 + u1D479 + 350 + u1D47A + 330 + u1D47B + 378 + u1D47C + 454 + u1D47D + 444 + u1D47E + 570 + u1D47F + 448 + u1D480 + 382 + u1D481 + 338 + u1D482 + 282 + u1D483 + 269 + u1D484 + 234 + u1D485 + 294 + u1D486 + 223 + u1D487 + 449 + u1D488 + 240 + u1D489 + 272 + u1D48A + 169 + u1D48A.dtls + 160 + u1D48B + 130 + u1D48B.dtls + 105 + u1D48C + 281 + u1D48D + 238 + u1D48E + 411 + u1D48F + 269 + u1D490 + 275 + u1D491 + 248 + u1D492 + 272 + u1D493 + 216 + u1D494 + 216 + u1D495 + 226 + u1D496 + 272 + u1D497 + 266 + u1D498 + 414 + u1D499 + 246 + u1D49A + 277 + u1D49B + 250 + u1D49C + 970 + u1D49C.salt + 558 + u1D49E + 720 + u1D49F + 611 + u1D49F.salt + 452 + u1D4A2 + 699 + u1D4A2.salt + 370 + u1D4A5 + 820 + u1D4A5.salt + 444 + u1D4A6 + 785 + u1D4A6.salt + 473 + u1D4A9 + 904 + u1D4A9.salt + 483 + u1D4AA + 622 + u1D4AA.salt + 370 + u1D4AB + 734 + u1D4AB.salt + 376 + u1D4AC + 621 + u1D4AC.salt + 370 + u1D4AE + 804 + u1D4AE.salt + 357 + u1D4AF + 690 + u1D4AF.salt + 441 + u1D4B0 + 608 + u1D4B0.salt + 497 + u1D4B1 + 770 + u1D4B1.salt + 481 + u1D4B2 + 816 + u1D4B2.salt + 650 + u1D4B3 + 721 + u1D4B3.salt + 388 + u1D4B4 + 748 + u1D4B4.salt + 431 + u1D4B5 + 666 + u1D4B5.salt + 455 + u1D4B6 + 507 + u1D4B7 + 585 + u1D4B8 + 445 + u1D4B9 + 735 + u1D4BB + 960 + u1D4BD + 681 + u1D4BE + 384 + u1D4BE.dtls + 293 + u1D4BF + 777 + u1D4BF.dtls + 335 + u1D4C0 + 570 + u1D4C1 + 732 + u1D4C1.salt + 367 + u1D4C2 + 673 + u1D4C3 + 474 + u1D4C5 + 784 + u1D4C6 + 447 + u1D4C7 + 480 + u1D4C8 + 403 + u1D4C9 + 368 + u1D4CA + 477 + u1D4CB + 436 + u1D4CC + 593 + u1D4CD + 548 + u1D4CE + 720 + u1D4CF + 492 + u1D4D0 + 954 + u1D4D1 + 814 + u1D4D2 + 727 + u1D4D3 + 608 + u1D4D4 + 618 + u1D4D5 + 818 + u1D4D6 + 692 + u1D4D7 + 736 + u1D4D8 + 852 + u1D4D9 + 819 + u1D4DA + 789 + u1D4DB + 811 + u1D4DC + 975 + u1D4DD + 905 + u1D4DE + 616 + u1D4DF + 732 + u1D4E0 + 588 + u1D4E1 + 803 + u1D4E2 + 812 + u1D4E3 + 766 + u1D4E4 + 611 + u1D4E5 + 706 + u1D4E6 + 836 + u1D4E7 + 704 + u1D4E8 + 730 + u1D4E9 + 757 + u1D4EA + 507 + u1D4EB + 678 + u1D4EC + 436 + u1D4ED + 763 + u1D4EE + 418 + u1D4EF + 977 + u1D4F0 + 743 + u1D4F1 + 705 + u1D4F2 + 355 + u1D4F2.dtls + 130 + u1D4F3 + 771 + u1D4F3.dtls + 18 + u1D4F4 + 745 + u1D4F5 + 525 + u1D4F6 + 762 + u1D4F7 + 476 + u1D4F8 + 502 + u1D4F9 + 756 + u1D4FA + 583 + u1D4FB + 494 + u1D4FC + 400 + u1D4FD + 492 + u1D4FE + 434 + u1D4FF + 425 + u1D500 + 586 + u1D501 + 539 + u1D502 + 656 + u1D503 + 479 + u1D504 + 348 + u1D505 + 404 + u1D507 + 408 + u1D508 + 342 + u1D509 + 368 + u1D50A + 414 + u1D50D + 292 + u1D50E + 330 + u1D50F + 320 + u1D510 + 474 + u1D511 + 366 + u1D512 + 398 + u1D513 + 376 + u1D514 + 420 + u1D516 + 430 + u1D517 + 365 + u1D518 + 366 + u1D519 + 376 + u1D51A + 477 + u1D51B + 329 + u1D51C + 330 + u1D51E + 268 + u1D51F + 230 + u1D520 + 220 + u1D521 + 250 + u1D522 + 235 + u1D523 + 160 + u1D524 + 248 + u1D525 + 232 + u1D526 + 145 + u1D526.dtls + 145 + u1D527 + 130 + u1D527.dtls + 130 + u1D528 + 164 + u1D529 + 154 + u1D52A + 399 + u1D52B + 267 + u1D52C + 258 + u1D52D + 282 + u1D52E + 260 + u1D52F + 190 + u1D530 + 232 + u1D531 + 156 + u1D532 + 269 + u1D533 + 231 + u1D534 + 377 + u1D535 + 216 + u1D536 + 250 + u1D537 + 192 + u1D538 + 440 + u1D539 + 366 + u1D53B + 449 + u1D53C + 356 + u1D53D + 338 + u1D53E + 375 + u1D540 + 227 + u1D541 + 202 + u1D542 + 429 + u1D543 + 362 + u1D544 + 532 + u1D546 + 393 + u1D54A + 264 + u1D54B + 369 + u1D54C + 450 + u1D54D + 422 + u1D54E + 556 + u1D54F + 390 + u1D550 + 332 + u1D552 + 319 + u1D553 + 334 + u1D554 + 273 + u1D555 + 333 + u1D556 + 273 + u1D557 + 237 + u1D558 + 307 + u1D559 + 337 + u1D55A + 194 + u1D55A.dtls + 194 + u1D55B + 140 + u1D55B.dtls + 140 + u1D55C + 322 + u1D55D + 208 + u1D55E + 492 + u1D55F + 346 + u1D560 + 300 + u1D561 + 348 + u1D562 + 341 + u1D563 + 262 + u1D564 + 248 + u1D565 + 252 + u1D566 + 349 + u1D567 + 335 + u1D568 + 430 + u1D569 + 346 + u1D56A + 346 + u1D56B + 280 + u1D56C + 390 + u1D56D + 388 + u1D56E + 372 + u1D56F + 360 + u1D570 + 374 + u1D571 + 335 + u1D572 + 416 + u1D573 + 371 + u1D574 + 320 + u1D575 + 313 + u1D576 + 373 + u1D577 + 294 + u1D578 + 484 + u1D579 + 419 + u1D57A + 375 + u1D57B + 398 + u1D57C + 400 + u1D57D + 416 + u1D57E + 367 + u1D57F + 352 + u1D580 + 354 + u1D581 + 394 + u1D582 + 503 + u1D583 + 337 + u1D584 + 377 + u1D585 + 310 + u1D586 + 276 + u1D587 + 258 + u1D588 + 208 + u1D589 + 266 + u1D58A + 230 + u1D58B + 196 + u1D58C + 254 + u1D58D + 256 + u1D58E + 162 + u1D58E.dtls + 162 + u1D58F + 162 + u1D58F.dtls + 162 + u1D590 + 198 + u1D591 + 178 + u1D592 + 414 + u1D593 + 272 + u1D594 + 248 + u1D595 + 270 + u1D596 + 256 + u1D597 + 228 + u1D598 + 244 + u1D599 + 170 + u1D59A + 276 + u1D59B + 252 + u1D59C + 370 + u1D59D + 219 + u1D59E + 236 + u1D59F + 190 + u1D5A0 + 333 + u1D5A1 + 354 + u1D5A2 + 328 + u1D5A3 + 380 + u1D5A4 + 324 + u1D5A5 + 310 + u1D5A6 + 333 + u1D5A7 + 354 + u1D5A8 + 138 + u1D5A9 + 215 + u1D5AA + 374 + u1D5AB + 296 + u1D5AC + 437 + u1D5AD + 354 + u1D5AE + 368 + u1D5AF + 339 + u1D5B0 + 368 + u1D5B1 + 356 + u1D5B2 + 272 + u1D5B3 + 340 + u1D5B4 + 344 + u1D5B5 + 333 + u1D5B6 + 472 + u1D5B7 + 333 + u1D5B8 + 333 + u1D5B9 + 308 + u1D5BA + 222 + u1D5BB + 281 + u1D5BC + 226 + u1D5BD + 235 + u1D5BE + 224 + u1D5BF + 187 + u1D5C0 + 256 + u1D5C1 + 258 + u1D5C2 + 118 + u1D5C2.dtls + 118 + u1D5C3 + 62 + u1D5C3.dtls + 62 + u1D5C4 + 278 + u1D5C5 + 118 + u1D5C6 + 397 + u1D5C7 + 258 + u1D5C8 + 250 + u1D5C9 + 281 + u1D5CA + 235 + u1D5CB + 204 + u1D5CC + 194 + u1D5CD + 176 + u1D5CE + 258 + u1D5CF + 230 + u1D5D0 + 341 + u1D5D1 + 230 + u1D5D2 + 230 + u1D5D3 + 215 + u1D5D4 + 366 + u1D5D5 + 381 + u1D5D6 + 354 + u1D5D7 + 412 + u1D5D8 + 343 + u1D5D9 + 328 + u1D5DA + 360 + u1D5DB + 396 + u1D5DC + 166 + u1D5DD + 236 + u1D5DE + 396 + u1D5DF + 312 + u1D5E0 + 488 + u1D5E1 + 396 + u1D5E2 + 396 + u1D5E3 + 366 + u1D5E4 + 396 + u1D5E5 + 372 + u1D5E6 + 299 + u1D5E7 + 366 + u1D5E8 + 382 + u1D5E9 + 366 + u1D5EA + 519 + u1D5EB + 366 + u1D5EC + 452 + u1D5ED + 338 + u1D5EE + 248 + u1D5EF + 292 + u1D5F0 + 247 + u1D5F1 + 268 + u1D5F2 + 355 + u1D5F3 + 206 + u1D5F4 + 280 + u1D5F5 + 280 + u1D5F6 + 128 + u1D5F6.dtls + 128 + u1D5F7 + 76 + u1D5F7.dtls + 76 + u1D5F8 + 283 + u1D5F9 + 128 + u1D5FA + 433 + u1D5FB + 280 + u1D5FC + 274 + u1D5FD + 292 + u1D5FE + 268 + u1D5FF + 208 + u1D600 + 214 + u1D601 + 196 + u1D602 + 280 + u1D603 + 250 + u1D604 + 372 + u1D605 + 249 + u1D606 + 251 + u1D607 + 236 + u1D608 + 333 + u1D609 + 396 + u1D60A + 426 + u1D60B + 422 + u1D60C + 390 + u1D60D + 384 + u1D60E + 432 + u1D60F + 428 + u1D610 + 212 + u1D611 + 291 + u1D612 + 440 + u1D613 + 304 + u1D614 + 511 + u1D615 + 428 + u1D617 + 393 + u1D618 + 440 + u1D619 + 398 + u1D61A + 330 + u1D61B + 473 + u1D61C + 439 + u1D61D + 480 + u1D61E + 619 + u1D61F + 386 + u1D620 + 480 + u1D621 + 378 + u1D622 + 265 + u1D623 + 308 + u1D624 + 288 + u1D625 + 329 + u1D626 + 274 + u1D627 + 298 + u1D628 + 291 + u1D629 + 293 + u1D62A + 194 + u1D62A.dtls + 166 + u1D62B + 116 + u1D62B.dtls + 90 + u1D62C + 314 + u1D62D + 192 + u1D62E + 432 + u1D62F + 293 + u1D630 + 296 + u1D631 + 288 + u1D632 + 304 + u1D633 + 253 + u1D634 + 235 + u1D635 + 256 + u1D636 + 314 + u1D637 + 324 + u1D638 + 435 + u1D639 + 269 + u1D63A + 270 + u1D63B + 261 + u1D63C + 349 + u1D63D + 424 + u1D63E + 458 + u1D63F + 436 + u1D640 + 375 + u1D641 + 368 + u1D642 + 471 + u1D643 + 427 + u1D644 + 295 + u1D645 + 299 + u1D646 + 432 + u1D647 + 288 + u1D648 + 511 + u1D649 + 427 + u1D64A + 458 + u1D64B + 406 + u1D64C + 458 + u1D64D + 412 + u1D64E + 334 + u1D64F + 479 + u1D650 + 483 + u1D651 + 474 + u1D652 + 614 + u1D653 + 378 + u1D654 + 474 + u1D655 + 379 + u1D656 + 265 + u1D657 + 306 + u1D658 + 290 + u1D659 + 331 + u1D65A + 274 + u1D65B + 297 + u1D65C + 291 + u1D65D + 291 + u1D65E + 194 + u1D65F + 116 + u1D660 + 327 + u1D661 + 192 + u1D662 + 430 + u1D663 + 291 + u1D664 + 296 + u1D665 + 286 + u1D666 + 306 + u1D667 + 253 + u1D668 + 237 + u1D669 + 256 + u1D66A + 316 + u1D66B + 329 + u1D66C + 440 + u1D66D + 269 + u1D66E + 277 + u1D66F + 261 + u1D6A4 + 198 + u1D6A5 + 204 + u1D6A8 + 390 + u1D6A9 + 325 + u1D6AA + 284 + u1D6AB + 344 + u1D6AC + 308 + u1D6AD + 326 + u1D6AE + 416 + u1D6AF + 417 + u1D6B0 + 194 + u1D6B1 + 401 + u1D6B2 + 393 + u1D6B3 + 500 + u1D6B4 + 416 + u1D6B5 + 343 + u1D6B6 + 417 + u1D6B7 + 410 + u1D6B8 + 316 + u1D6B9 + 417 + u1D6BA + 322 + u1D6BB + 334 + u1D6BC + 378 + u1D6BD + 480 + u1D6BE + 369 + u1D6BF + 468 + u1D6C0 + 406 + u1D6C1 + 344 + u1D6C2 + 348 + u1D6C3 + 324 + u1D6C4 + 338 + u1D6C5 + 297 + u1D6C6 + 263 + u1D6C7 + 292 + u1D6C8 + 300 + u1D6C9 + 337 + u1D6CA + 136 + u1D6CB + 268 + u1D6CC + 335 + u1D6CD + 326 + u1D6CE + 302 + u1D6CF + 320 + u1D6D0 + 278 + u1D6D1 + 346 + u1D6D2 + 280 + u1D6D3 + 268 + u1D6D4 + 307 + u1D6D5 + 287 + u1D6D6 + 292 + u1D6D7 + 408 + u1D6D8 + 304 + u1D6D9 + 414 + u1D6DA + 460 + u1D6DB + 268 + u1D6DC + 294 + u1D6DD + 322 + u1D6DE + 443 + u1D6DF + 366 + u1D6E0 + 369 + u1D6E1 + 415 + u1D6E2 + 482 + u1D6E3 + 292 + u1D6E4 + 354 + u1D6E5 + 410 + u1D6E6 + 354 + u1D6E7 + 384 + u1D6E8 + 460 + u1D6E9 + 395 + u1D6EA + 242 + u1D6EB + 435 + u1D6EC + 454 + u1D6ED + 538 + u1D6EE + 403 + u1D6EF + 372 + u1D6F0 + 400 + u1D6F1 + 450 + u1D6F2 + 355 + u1D6F3 + 417 + u1D6F4 + 356 + u1D6F5 + 344 + u1D6F6 + 430 + u1D6F7 + 434 + u1D6F8 + 399 + u1D6F9 + 494 + u1D6FA + 477 + u1D6FB + 405 + u1D6FC + 333 + u1D6FD + 333 + u1D6FE + 320 + u1D6FF + 315 + u1D700 + 309 + u1D701 + 333 + u1D702 + 351 + u1D703 + 401 + u1D704 + 171 + u1D705 + 291 + u1D706 + 358 + u1D707 + 350 + u1D708 + 285 + u1D709 + 377 + u1D70A + 241 + u1D70B + 383 + u1D70C + 347 + u1D70D + 322 + u1D70E + 313 + u1D70F + 308 + u1D710 + 312 + u1D711 + 378 + u1D712 + 375 + u1D713 + 439 + u1D714 + 393 + u1D715 + 373 + u1D716 + 287 + u1D717 + 363 + u1D718 + 464 + u1D719 + 410 + u1D71A + 360 + u1D71B + 350 + u1D71C + 443 + u1D71D + 374 + u1D71E + 356 + u1D71F + 405 + u1D720 + 356 + u1D721 + 412 + u1D722 + 487 + u1D723 + 490 + u1D724 + 254 + u1D725 + 417 + u1D726 + 443 + u1D727 + 500 + u1D728 + 418 + u1D729 + 399 + u1D72A + 493 + u1D72B + 491 + u1D72C + 376 + u1D72D + 493 + u1D72E + 426 + u1D72F + 394 + u1D730 + 423 + u1D731 + 545 + u1D732 + 389 + u1D733 + 526 + u1D734 + 470 + u1D736 + 389 + u1D737 + 449 + u1D738 + 380 + u1D739 + 383 + u1D73A + 320 + u1D73B + 375 + u1D73C + 357 + u1D73D + 440 + u1D73E + 173 + u1D73F + 304 + u1D740 + 330 + u1D741 + 348 + u1D742 + 333 + u1D743 + 405 + u1D744 + 330 + u1D745 + 375 + u1D746 + 339 + u1D747 + 374 + u1D748 + 397 + u1D749 + 310 + u1D74A + 307 + u1D74B + 470 + u1D74C + 330 + u1D74D + 490 + u1D74E + 479 + u1D750 + 329 + u1D751 + 384 + u1D752 + 490 + u1D753 + 450 + u1D754 + 423 + u1D755 + 472 + u1D790 + 427 + u1D791 + 395 + u1D792 + 402 + u1D793 + 512 + u1D794 + 402 + u1D795 + 395 + u1D796 + 470 + u1D797 + 491 + u1D798 + 225 + u1D799 + 395 + u1D79A + 396 + u1D79B + 553 + u1D79C + 490 + u1D79D + 400 + u1D79E + 447 + u1D79F + 462 + u1D7A0 + 400 + u1D7A1 + 477 + u1D7A2 + 471 + u1D7A3 + 418 + u1D7A4 + 463 + u1D7A5 + 452 + u1D7A6 + 383 + u1D7A7 + 485 + u1D7A8 + 447 + u1D7AA + 292 + u1D7AB + 324 + u1D7AC + 377 + u1D7AD + 278 + u1D7AE + 268 + u1D7AF + 325 + u1D7B0 + 324 + u1D7B1 + 340 + u1D7B4 + 236 + u1D7B7 + 340 + u1D7B8 + 322 + u1D7B9 + 358 + u1D7BA + 316 + u1D7BB + 296 + u1D7BC + 311 + u1D7BF + 390 + u1D7C0 + 334 + u1D7C1 + 400 + u1D7C2 + 385 + u1D7C4 + 357 + u1D7C5 + 333 + uni0302 + -156 + uni0304 + -166 + uni0305 + -216 + uni0306 + -166 + uni0307 + -125 + uni0308 + -168 + uni030A + -135 + uni030C + -166 + uni0332 + -216 + uni0333 + -216 + uni033F + -216 + uni20D0 + 279 + uni20D1 + 279 + uni20D4 + 392 + uni20D5 + 289 + uni20D6 + 279 + uni20D7 + 279 + uni2102 + 346 + uni210A + 564 + uni210B + 742 + uni210B.salt + 512 + uni210D + 474 + uni210E + 240 + uni2110 + 876 + uni2110.salt + 342 + uni2112 + 868 + uni2112.salt + 394 + uni2115 + 476 + uni2119 + 360 + uni211A + 393 + uni211B + 762 + uni211B.salt + 364 + uni211D + 404 + uni2124 + 402 + uni2126 + 412 + uni212C + 815 + uni2130 + 618 + uni2130.salt + 327 + uni2131 + 767 + uni2131.salt + 452 + uni2133 + 953 + uni2133.salt + 568 + uni213D + 274 + uni213E + 362 + uni213F + 450 + uni2140 + 344 + uni2145 + 425 + uni2146 + 350 + uni2147 + 274 + uni2148 + 140 + uni2149 + 127 + uni2206 + 344 + + constants + + AccentBaseHeight + 469 + AxisHeight + 271 + DelimitedSubFormulaMinHeight + 1500 + DisplayOperatorMinHeight + 1330 + FlattenedAccentBaseHeight + 692 + FractionDenomDisplayStyleGapMin + 120 + FractionDenominatorDisplayStyleShiftDown + 710 + FractionDenominatorGapMin + 116 + FractionDenominatorShiftDown + 500 + FractionNumDisplayStyleGapMin + 130 + FractionNumeratorDisplayStyleShiftUp + 725 + FractionNumeratorGapMin + 116 + FractionNumeratorShiftUp + 600 + FractionRuleThickness + 59 + LowerLimitBaselineDropMin + 600 + LowerLimitGapMin + 167 + MathLeading + 150 + MinConnectorOverlap + 100 + OverbarExtraAscender + 75 + OverbarRuleThickness + 75 + OverbarVerticalGap + 175 + RadicalDegreeBottomRaisePercent + 65 + RadicalDisplayStyleVerticalGap + 174 + RadicalExtraAscender + 59 + RadicalKernAfterDegree + -556 + RadicalKernBeforeDegree + 278 + RadicalRuleThickness + 59 + RadicalVerticalGap + 74 + ScriptPercentScaleDown + 73 + ScriptScriptPercentScaleDown + 60 + SkewedFractionHorizontalGap + 400 + SkewedFractionVerticalGap + 60 + SpaceAfterScript + 41 + StackBottomDisplayStyleShiftDown + 50 + StackBottomShiftDown + 50 + StackDisplayStyleGapMin + 812 + StackGapMin + 348 + StackTopDisplayStyleShiftUp + 50 + StackTopShiftUp + 50 + StretchStackBottomShiftDown + 80 + StretchStackGapAboveMin + 80 + StretchStackGapBelowMin + 40 + StretchStackTopShiftUp + 50 + SubSuperscriptGapMin + 145 + SubscriptBaselineDropMin + 222 + SubscriptShiftDown + 210 + SubscriptTopMax + 366 + SuperscriptBaselineDropMax + 230 + SuperscriptBottomMaxWithSubscript + 379 + SuperscriptBottomMin + 154 + SuperscriptShiftUp + 361 + SuperscriptShiftUpCramped + 296 + UnderbarExtraDescender + 75 + UnderbarRuleThickness + 75 + UnderbarVerticalGap + 175 + UpperLimitBaselineRiseMin + 200 + UpperLimitGapMin + 111 + + h_variants + + arrowboth + + arrowboth + + arrowdblboth + + arrowdblboth + + arrowdblleft + + arrowdblleft + + arrowdblright + + arrowdblright + + arrowleft + + arrowleft + + arrowright + + arrowright + + tildecomb + + tildecomb + tildewide1 + tildewide2 + tildewide3 + tildewide4 + glyph3598 + + uni0302 + + uni0302 + hatwide1 + hatwide2 + hatwide3 + hatwide4 + glyph3599 + + uni0305 + + uni0305 + glyph3886 + glyph3881 + glyph3877 + + uni0306 + + uni0306 + widebreve1 + widebreve2 + widebreve3 + widebreve4 + + uni030C + + uni030C + caronwide1 + caronwide2 + caronwide3 + caronwide4 + glyph3597 + + uni0332 + + uni0332 + glyph3885 + glyph3880 + glyph3876 + + uni0333 + + uni0333 + glyph3884 + glyph3879 + glyph3875 + + uni033F + + uni033F + glyph3883 + glyph3878 + glyph3874 + + uni20D0 + + uni20D0 + + uni20D1 + + uni20D1 + + uni20D6 + + uni20D6 + glyph3674 + glyph3675 + glyph3676 + glyph3677 + + uni20D7 + + uni20D7 + glyph3678 + glyph3679 + glyph3680 + glyph3681 + + uni20E1 + + uni20E1 + + uni20E9 + + uni20E9 + + uni20EE + + uni20EF + + uni21A4 + + uni21A4 + + uni21A6 + + uni21A6 + + uni21A9 + + uni21A9 + + uni21AA + + uni21AA + + uni23B4 + + uni23B4 + glyph3853 + glyph3854 + glyph3855 + + uni23B5 + + uni23B5 + glyph3856 + glyph3857 + glyph3858 + + uni23DC + + uni23DC + glyph3847 + glyph3848 + glyph3849 + + uni23DD + + uni23DD + glyph3850 + glyph3851 + glyph3852 + + uni23DE + + uni23DE + glyph4049 + glyph4050 + glyph4051 + + uni23DF + + uni23DF + glyph4052 + glyph4053 + glyph4054 + + uni23E0 + + uni23E0 + glyph3841 + glyph3842 + glyph3843 + + uni23E1 + + uni23E1 + glyph3844 + glyph3845 + glyph3846 + + uni2906 + + uni2906 + + uni2907 + + uni2907 + + + italic + + existential + 86 + glyph2A0CBig + 307 + glyph2A0CBigg + 307 + glyph2A0Cbigg + 307 + glyph2A0DBig + 307 + glyph2A0DBigg + 307 + glyph2A0Dbigg + 307 + glyph2A0EBig + 307 + glyph2A0EBigg + 307 + glyph2A0Ebigg + 307 + glyph2A0FBig + 307 + glyph2A0FBigg + 307 + glyph2A0Fbigg + 307 + glyph2A10Big + 307 + glyph2A10Bigg + 307 + glyph2A10bigg + 307 + glyph2A11Big + 307 + glyph2A11Bigg + 307 + glyph2A11bigg + 307 + glyph2A12Big + 307 + glyph2A12Bigg + 307 + glyph2A12bigg + 307 + glyph2A13Big + 307 + glyph2A13Bigg + 307 + glyph2A13bigg + 307 + glyph2A14Big + 307 + glyph2A14Bigg + 307 + glyph2A14bigg + 307 + glyph2A15Big + 307 + glyph2A15Bigg + 307 + glyph2A15bigg + 307 + glyph2A16Big + 307 + glyph2A16Bigg + 307 + glyph2A16bigg + 307 + glyph2A17Big + 257 + glyph2A17Bigg + 257 + glyph2A17bigg + 257 + glyph2A18Big + 307 + glyph2A18Bigg + 307 + glyph2A18bigg + 307 + glyph2A19Big + 307 + glyph2A19Bigg + 307 + glyph2A19bigg + 307 + glyph2A1ABig + 307 + glyph2A1ABigg + 307 + glyph2A1Abigg + 307 + glyph2A1BBig + 307 + glyph2A1BBigg + 307 + glyph2A1Bbigg + 307 + glyph2A1CBig + 307 + glyph2A1CBigg + 307 + glyph2A1Cbigg + 307 + gradient + 120 + integral + 407 + integralbig1 + 313 + integralbig2 + 307 + integralbig3 + 307 + integraldblBig + 307 + integraldblBigg + 307 + integraldblbigg + 307 + integraltripleBig + 307 + integraltripleBigg + 307 + integraltriplebigg + 307 + partialdiff + 120 + u1D439 + 10 + u1D43B + 46 + u1D43C + 44 + u1D43D + 48 + u1D43E + 36 + u1D441 + 49 + u1D447 + 50 + u1D448 + 51 + u1D449 + 60 + u1D44A + 64 + u1D44B + 36 + u1D44C + 28 + u1D453 + 23 + u1D46A + 72 + u1D46D + 100 + u1D46F + 110 + u1D470 + 86 + u1D471 + 90 + u1D472 + 86 + u1D474 + 104 + u1D475 + 114 + u1D47B + 126 + u1D47C + 110 + u1D47D + 140 + u1D47E + 136 + u1D47F + 112 + u1D480 + 126 + u1D481 + 72 + u1D487 + 178 + u1D488 + 92 + u1D49C + 216 + u1D49E + 183 + u1D49F + 158 + u1D4A2 + 194 + u1D4A5 + 187 + u1D4A6 + 200 + u1D4A9 + 219 + u1D4AA + 188 + u1D4AB + 141 + u1D4AC + 169 + u1D4AE + 268 + u1D4AF + 368 + u1D4B0 + 112 + u1D4B1 + 333 + u1D4B2 + 374 + u1D4B3 + 259 + u1D4B4 + 228 + u1D4B5 + 153 + u1D4B7 + 143 + u1D4B9 + 230 + u1D4BB + 217 + u1D4BD + 227 + u1D4BE + 180 + u1D4BF + 176 + u1D4C1 + 108 + u1D4D0 + 217 + u1D4D1 + 169 + u1D4D2 + 166 + u1D4D3 + 178 + u1D4D4 + 172 + u1D4D5 + 337 + u1D4D6 + 208 + u1D4D7 + 260 + u1D4D8 + 233 + u1D4D9 + 233 + u1D4DA + 233 + u1D4DB + 179 + u1D4DC + 168 + u1D4DD + 233 + u1D4DE + 202 + u1D4DF + 168 + u1D4E0 + 176 + u1D4E1 + 181 + u1D4E2 + 293 + u1D4E3 + 367 + u1D4E4 + 136 + u1D4E5 + 344 + u1D4E6 + 329 + u1D4E7 + 244 + u1D4E8 + 238 + u1D4E9 + 148 + u1D4EB + 88 + u1D4EF + 268 + u1D4F2 + 230 + u1D4F3 + 228 + u1D4F4 + 122 + u1D4F5 + 126 + u1D5BF + 104 + u1D5F3 + 108 + u1D609 + 92 + u1D60A + 146 + u1D60B + 88 + u1D60C + 152 + u1D60D + 166 + u1D60E + 130 + u1D60F + 116 + u1D610 + 116 + u1D611 + 126 + u1D612 + 154 + u1D614 + 110 + u1D615 + 114 + u1D616 + 88 + u1D617 + 114 + u1D618 + 88 + u1D619 + 118 + u1D61A + 114 + u1D61B + 172 + u1D61C + 116 + u1D61D + 196 + u1D61E + 196 + u1D61F + 154 + u1D620 + 208 + u1D621 + 152 + u1D623 + 82 + u1D624 + 118 + u1D625 + 128 + u1D626 + 90 + u1D627 + 252 + u1D628 + 134 + u1D62A + 132 + u1D62B + 126 + u1D62C + 118 + u1D62D + 128 + u1D630 + 84 + u1D631 + 82 + u1D632 + 78 + u1D633 + 146 + u1D634 + 114 + u1D635 + 112 + u1D636 + 76 + u1D637 + 142 + u1D638 + 142 + u1D639 + 140 + u1D63A + 142 + u1D63B + 122 + u1D63D + 94 + u1D63E + 146 + u1D63F + 88 + u1D640 + 152 + u1D641 + 166 + u1D642 + 130 + u1D643 + 116 + u1D644 + 116 + u1D645 + 126 + u1D646 + 154 + u1D648 + 110 + u1D649 + 114 + u1D64A + 88 + u1D64B + 114 + u1D64C + 88 + u1D64D + 118 + u1D64E + 114 + u1D64F + 172 + u1D650 + 116 + u1D651 + 196 + u1D652 + 196 + u1D653 + 154 + u1D654 + 208 + u1D655 + 152 + u1D656 + 66 + u1D657 + 100 + u1D658 + 140 + u1D659 + 151 + u1D65A + 108 + u1D65B + 273 + u1D65C + 152 + u1D65D + 70 + u1D65E + 154 + u1D65F + 148 + u1D660 + 168 + u1D661 + 151 + u1D662 + 70 + u1D663 + 70 + u1D664 + 103 + u1D665 + 100 + u1D666 + 100 + u1D667 + 169 + u1D668 + 137 + u1D669 + 134 + u1D66A + 98 + u1D66B + 174 + u1D66C + 172 + u1D66D + 186 + u1D66E + 175 + u1D66F + 145 + u1D6E4 + 104 + u1D6E8 + 86 + u1D6EA + 84 + u1D6EB + 78 + u1D6EE + 88 + u1D6F1 + 98 + u1D6F5 + 86 + u1D6F6 + 107 + u1D6F8 + 76 + u1D6F9 + 102 + u1D714 + 55 + u1D715 + 52 + u1D718 + 143 + u1D71A + 77 + u1D71E + 76 + u1D720 + 76 + u1D721 + 78 + u1D722 + 86 + u1D724 + 84 + u1D725 + 82 + u1D727 + 92 + u1D728 + 88 + u1D72B + 92 + u1D72C + 83 + u1D72F + 104 + u1D730 + 106 + u1D732 + 104 + u1D733 + 118 + u1D735 + 96 + u1D73F + 70 + u1D743 + 88 + u1D748 + 92 + u1D749 + 74 + u1D74C + 78 + u1D752 + 183 + u1D754 + 68 + u1D792 + 72 + u1D7A3 + 76 + u1D7AA + 74 + u1D7AC + 86 + u1D7AF + 42 + u1D7B5 + 42 + u1D7B6 + 37 + u1D7BB + 46 + u1D7BC + 40 + uni210B + 259 + uni2110 + 235 + uni2112 + 185 + uni211B + 191 + uni212C + 191 + uni2130 + 191 + uni2131 + 311 + uni2133 + 188 + uni2206 + 120 + uni222C + 407 + uni222D + 307 + uni222E + 307 + uni222EBig + 307 + uni222EBigg + 307 + uni222Ebigg + 307 + uni222F + 307 + uni222FBig + 307 + uni222FBigg + 207 + uni222Fbigg + 307 + uni2230 + 307 + uni2230Big + 307 + uni2230Bigg + 307 + uni2230bigg + 307 + uni2231 + 307 + uni2231Big + 307 + uni2231Bigg + 307 + uni2231bigg + 307 + uni2232 + 307 + uni2232Big + 307 + uni2232Bigg + 307 + uni2232bigg + 307 + uni2233 + 307 + uni2233Big + 307 + uni2233Bigg + 307 + uni2233bigg + 307 + uni2A0C + 307 + uni2A0D + 307 + uni2A0E + 307 + uni2A0F + 307 + uni2A10 + 307 + uni2A11 + 307 + uni2A12 + 207 + uni2A13 + 307 + uni2A14 + 307 + uni2A15 + 307 + uni2A16 + 307 + uni2A17 + 257 + uni2A18 + 307 + uni2A19 + 307 + uni2A1A + 307 + uni2A1B + 307 + uni2A1C + 307 + universal + 120 + + v_assembly + + arrowdbldown + + italic + 0 + parts + + + advance + 886 + endConnector + 295 + extender + + glyph + arrowdbldown + startConnector + 295 + + + advance + 601 + endConnector + 227 + extender + + glyph + glyph3799 + startConnector + 227 + + + + arrowdblup + + italic + 0 + parts + + + advance + 601 + endConnector + 227 + extender + + glyph + glyph3799 + startConnector + 227 + + + advance + 886 + endConnector + 295 + extender + + glyph + arrowdblup + startConnector + 295 + + + + arrowdown + + italic + 0 + parts + + + advance + 886 + endConnector + 295 + extender + + glyph + arrowdown + startConnector + 295 + + + advance + 601 + endConnector + 227 + extender + + glyph + glyph3798 + startConnector + 227 + + + + arrowup + + italic + 0 + parts + + + advance + 601 + endConnector + 227 + extender + + glyph + glyph3798 + startConnector + 227 + + + advance + 886 + endConnector + 295 + extender + + glyph + arrowup + startConnector + 295 + + + + bar + + italic + 0 + parts + + + advance + 2315 + endConnector + 772 + extender + + glyph + barBigg + startConnector + 772 + + + advance + 2315 + endConnector + 772 + extender + + glyph + barBigg + startConnector + 772 + + + + braceleft + + italic + 0 + parts + + + advance + 715 + endConnector + 35 + extender + + glyph + uni23A9 + startConnector + 0 + + + advance + 326 + endConnector + 10 + extender + + glyph + uni23AA + startConnector + 25 + + + advance + 757 + endConnector + 35 + extender + + glyph + uni23A8 + startConnector + 35 + + + advance + 326 + endConnector + 25 + extender + + glyph + uni23AA + startConnector + 10 + + + advance + 721 + endConnector + 0 + extender + + glyph + uni23A7 + startConnector + 35 + + + + braceright + + italic + 0 + parts + + + advance + 715 + endConnector + 35 + extender + + glyph + uni23AD + startConnector + 0 + + + advance + 326 + endConnector + 10 + extender + + glyph + uni23AA + startConnector + 25 + + + advance + 757 + endConnector + 35 + extender + + glyph + uni23AC + startConnector + 35 + + + advance + 326 + endConnector + 25 + extender + + glyph + uni23AA + startConnector + 10 + + + advance + 721 + endConnector + 0 + extender + + glyph + uni23AB + startConnector + 35 + + + + bracketleft + + italic + 0 + parts + + + advance + 888 + endConnector + 35 + extender + + glyph + uni23A3 + startConnector + 0 + + + advance + 324 + endConnector + 15 + extender + + glyph + uni23A2 + startConnector + 15 + + + advance + 888 + endConnector + 0 + extender + + glyph + uni23A1 + startConnector + 35 + + + + bracketright + + italic + 0 + parts + + + advance + 888 + endConnector + 35 + extender + + glyph + uni23A6 + startConnector + 0 + + + advance + 324 + endConnector + 15 + extender + + glyph + uni23A5 + startConnector + 15 + + + advance + 888 + endConnector + 0 + extender + + glyph + uni23A4 + startConnector + 35 + + + + integral + + italic + 407 + parts + + + advance + 1413 + endConnector + 10 + extender + + glyph + integralbt + startConnector + 0 + + + advance + 1126 + endConnector + 500 + extender + + glyph + uni23AE + startConnector + 500 + + + advance + 1413 + endConnector + 0 + extender + + glyph + integraltp + startConnector + 10 + + + + parenleft + + italic + 0 + parts + + + advance + 884 + endConnector + 35 + extender + + glyph + uni239D + startConnector + 0 + + + advance + 326 + endConnector + 15 + extender + + glyph + uni239C + startConnector + 15 + + + advance + 884 + endConnector + 0 + extender + + glyph + uni239B + startConnector + 35 + + + + parenright + + italic + 0 + parts + + + advance + 884 + endConnector + 35 + extender + + glyph + uni23A0 + startConnector + 0 + + + advance + 326 + endConnector + 15 + extender + + glyph + uni239F + startConnector + 15 + + + advance + 884 + endConnector + 0 + extender + + glyph + uni239E + startConnector + 35 + + + + radical + + italic + 0 + parts + + + advance + 1388 + endConnector + 1265 + extender + + glyph + uni23B7 + startConnector + 0 + + + advance + 1016 + endConnector + 965 + extender + + glyph + uni20D3 + startConnector + 965 + + + advance + 494 + endConnector + 0 + extender + + glyph + glyph1113975 + startConnector + 165 + + + + uni2016 + + italic + 0 + parts + + + advance + 2315 + endConnector + 772 + extender + + glyph + midBigg + startConnector + 772 + + + advance + 2315 + endConnector + 772 + extender + + glyph + midBigg + startConnector + 772 + + + + uni2045 + + italic + 0 + parts + + + advance + 284 + endConnector + 30 + extender + + glyph + glyph4039 + startConnector + 0 + + + advance + 600 + endConnector + 10 + extender + + glyph + glyph4042 + startConnector + 25 + + + advance + 423 + endConnector + 30 + extender + + glyph + glyph3939 + startConnector + 30 + + + advance + 600 + endConnector + 25 + extender + + glyph + glyph4042 + startConnector + 10 + + + advance + 284 + endConnector + 0 + extender + + glyph + glyph4038 + startConnector + 30 + + + + uni2046 + + italic + 0 + parts + + + advance + 284 + endConnector + 30 + extender + + glyph + glyph4041 + startConnector + 0 + + + advance + 600 + endConnector + 10 + extender + + glyph + glyph3938 + startConnector + 25 + + + advance + 423 + endConnector + 30 + extender + + glyph + glyph3940 + startConnector + 30 + + + advance + 600 + endConnector + 25 + extender + + glyph + glyph3938 + startConnector + 10 + + + advance + 284 + endConnector + 0 + extender + + glyph + glyph4040 + startConnector + 30 + + + + uni2223 + + italic + 0 + parts + + + advance + 885 + endConnector + 295 + extender + + glyph + uni2223 + startConnector + 295 + + + advance + 885 + endConnector + 295 + extender + + glyph + uni2223 + startConnector + 295 + + + + uni2225 + + italic + 0 + parts + + + advance + 885 + endConnector + 295 + extender + + glyph + uni2225 + startConnector + 295 + + + advance + 885 + endConnector + 295 + extender + + glyph + uni2225 + startConnector + 295 + + + + uni2308 + + italic + 0 + parts + + + advance + 1132 + endConnector + 377 + extender + + glyph + uni23A2 + startConnector + 377 + + + advance + 888 + endConnector + 296 + extender + + glyph + uni23A1 + startConnector + 296 + + + + uni2309 + + italic + 0 + parts + + + advance + 1132 + endConnector + 377 + extender + + glyph + uni23A5 + startConnector + 377 + + + advance + 888 + endConnector + 296 + extender + + glyph + uni23A4 + startConnector + 296 + + + + uni230A + + italic + 0 + parts + + + advance + 888 + endConnector + 296 + extender + + glyph + uni23A3 + startConnector + 296 + + + advance + 1132 + endConnector + 377 + extender + + glyph + uni23A2 + startConnector + 377 + + + + uni230B + + italic + 0 + parts + + + advance + 888 + endConnector + 296 + extender + + glyph + uni23A6 + startConnector + 296 + + + advance + 1132 + endConnector + 377 + extender + + glyph + uni23A5 + startConnector + 377 + + + + + v_variants + + arrowdbldown + + arrowdbldown + + arrowdblup + + arrowdblup + + arrowdown + + arrowdown + + arrowup + + arrowup + + bar + + bar + barbig + barBig + barbigg + barBigg + barbiggg + barBiggg + + braceleft + + braceleft + braceBigl + bracebiggl + braceBiggl + + braceright + + braceright + braceBigr + bracebiggr + braceBiggr + + bracketleft + + bracketleft + bracketBigl + bracketbiggl + bracketBiggl + + bracketright + + bracketright + bracketBigr + bracketbiggr + bracketBiggr + + fraction + + fraction + fractionbig + fractionBig + fractionbigg + fractionBigg + + integral + + integral + integralbig1 + integralbig2 + integralbig3 + + intersection + + intersection + intersectionbig1 + intersectionbig1h + intersectionbig2 + + parenleft + + parenleft + parenBigl + parenbiggl + parenBiggl + + parenright + + parenright + parenBigr + parenbiggr + parenBiggr + + product + + product + productbig1 + productbig2 + productbig3 + + radical + + radical + radicalbig + radicalBig + radicalbigg + radicalBigg + + slash + + slash + fractionbig + fractionBig + fractionbigg + fractionBigg + + summation + + summation + sumbig1 + sumbig2 + sumbig3 + + uni2016 + + uni2016 + midbig + midBig + midbigg + midBigg + + uni2045 + + uni2045 + glyph4043 + glyph4044 + glyph4045 + + uni2046 + + uni2046 + glyph4046 + glyph4047 + glyph4048 + + uni2210 + + uni2210 + coproductbig1 + coproductbig2 + coproductbig3 + + uni2223 + + uni2223 + + uni2225 + + uni2225 + + uni222C + + uni222C + integraldblBig + integraldblbigg + integraldblBigg + + uni222D + + uni222D + integraltripleBig + integraltriplebigg + integraltripleBigg + + uni222E + + uni222E + uni222EBig + uni222Ebigg + uni222EBigg + + uni222F + + uni222F + uni222FBig + uni222Fbigg + uni222FBigg + + uni2230 + + uni2230 + uni2230Big + uni2230bigg + uni2230Bigg + + uni2231 + + uni2231 + uni2231Big + uni2231bigg + uni2231Bigg + + uni2232 + + uni2232 + uni2232Big + uni2232bigg + uni2232Bigg + + uni2233 + + uni2233 + uni2233Big + uni2233bigg + uni2233Bigg + + uni22C0 + + uni22C0 + bigand1 + bigand2 + + uni22C1 + + uni22C1 + bigor1 + bigor2 + + uni22C2 + + uni22C2 + intersectionbig1 + intersectionbig2 + + uni22C3 + + uni22C3 + unionbig1 + unionbig1h + unionbig2 + + uni2308 + + uni2308 + ceilingBigl + ceilingbiggl + ceilingBiggl + + uni2309 + + uni2309 + ceilingBigr + ceilingbiggr + ceilingBiggr + + uni230A + + uni230A + floorBigl + floorbiggl + floorBiggl + + uni230B + + uni230B + floorBigr + floorbiggr + floorBiggr + + uni27C5 + + uni27C5 + glyph3587 + glyph3589 + glyph3591 + glyph3593 + glyph3595 + + uni27C6 + + uni27C6 + glyph3588 + glyph3590 + glyph3592 + glyph3594 + glyph3596 + + uni27E6 + + uni27E6 + glyph1114074 + glyph1114075 + glyph1114076 + glyph1114077 + + uni27E7 + + uni27E7 + glyph1114078 + glyph1114079 + glyph1114080 + glyph1114081 + + uni27E8 + + uni27E8 + anglebracketBigl + anglebracketbiggl + anglebracketBiggl + + uni27E9 + + uni27E9 + anglebracketBigr + anglebracketbiggr + anglebracketBiggr + + uni27EA + + uni27EA + danglebracketBigl + danglebracketbiggl + danglebracketBiggl + + uni27EB + + uni27EB + danglebracketBigr + dangelbracketbiggr + danglebracketBiggr + + uni29FC + + uni29FC + glyph3800 + glyph3801 + glyph3802 + + uni29FD + + uni29FD + glyph3803 + glyph3804 + glyph3805 + + uni2A00 + + uni2A00 + odotbig1 + odotbig2 + + uni2A01 + + uni2A01 + oplusbig1 + oplusbig2 + + uni2A02 + + uni2A02 + otimesbig1 + otimesbig2 + + uni2A03 + + uni2A03 + multisetmulbig1 + multisetmulbig2 + + uni2A04 + + uni2A04 + multisetsumbig1 + multisetsumbig2 + + uni2A05 + + uni2A05 + scapbig1 + scapbig2 + + uni2A06 + + uni2A06 + scupbig1 + scupbig2 + + uni2A07 + + uni2A07 + twoandbig1 + twoandbig2 + + uni2A08 + + uni2A08 + twoorbig1 + twoorbig2 + + uni2A09 + + uni2A09 + bigtimes1 + bigtimes2 + + uni2A0C + + uni2A0C + glyph2A0CBig + glyph2A0Cbigg + glyph2A0CBigg + + uni2A0D + + uni2A0D + glyph2A0DBig + glyph2A0Dbigg + glyph2A0DBigg + + uni2A0E + + uni2A0E + glyph2A0EBig + glyph2A0Ebigg + glyph2A0EBigg + + uni2A0F + + uni2A0F + glyph2A0FBig + glyph2A0Fbigg + glyph2A0FBigg + + uni2A10 + + uni2A10 + glyph2A10Big + glyph2A10bigg + glyph2A10Bigg + + uni2A11 + + uni2A11 + glyph2A11Big + glyph2A11bigg + glyph2A11Bigg + + uni2A12 + + uni2A12 + glyph2A12Big + glyph2A12bigg + glyph2A12Bigg + + uni2A13 + + uni2A13 + glyph2A13Big + glyph2A13bigg + glyph2A13Bigg + + uni2A14 + + uni2A14 + glyph2A14Big + glyph2A14bigg + glyph2A14Bigg + + uni2A15 + + uni2A15 + glyph2A15Big + glyph2A15bigg + glyph2A15Bigg + + uni2A16 + + uni2A16 + glyph2A16Big + glyph2A16bigg + glyph2A16Bigg + + uni2A17 + + uni2A17 + glyph2A17Big + glyph2A17bigg + glyph2A17Bigg + + uni2A18 + + uni2A18 + glyph2A18Big + glyph2A18bigg + glyph2A18Bigg + + uni2A19 + + uni2A19 + glyph2A19Big + glyph2A19bigg + glyph2A19Bigg + + uni2A1A + + glyph2A1ABig + glyph2A1Abigg + glyph2A1ABigg + + uni2A1B + + uni2A1B + glyph2A1BBig + glyph2A1Bbigg + glyph2A1BBigg + + uni2A1C + + uni2A1C + glyph2A1CBig + glyph2A1Cbigg + glyph2A1CBigg + + + version + 1.3 + + diff --git a/third-party/SwiftMath/Sources/mathFonts.bundle/Euler-Math.otf b/third-party/SwiftMath/Sources/mathFonts.bundle/Euler-Math.otf new file mode 100755 index 0000000000000000000000000000000000000000..d34c920c2ce614a87495d4a3dcf65b7863019f4e GIT binary patch literal 428792 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%0DaDL4q)igfVJ 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
0De%u2`47N94*p5- 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 literal 0 HcmV?d00001 diff --git a/third-party/SwiftMath/Sources/mathFonts.bundle/Euler-Math.plist b/third-party/SwiftMath/Sources/mathFonts.bundle/Euler-Math.plist new file mode 100755 index 0000000000..7c173e8826 --- /dev/null +++ b/third-party/SwiftMath/Sources/mathFonts.bundle/Euler-Math.plist @@ -0,0 +1,2165 @@ + + + + + accents + + BbbZ.ssty1 + 304 + acute + 100 + acutecomb + -226 + acutedbl + -185 + asciicircum + 248 + bar + -249 + breve + 141 + brevebelow + -236 + caron + 248 + cdotp + 138 + circumflex + 248 + ddddot + -450 + dddot + -350 + ddot + -250 + ddotbelow + -250 + diaeresis + 150 + dot + -250 + dotaccent + 50 + dotbelow + -175 + grave + 100 + gravecomb + -273 + gravedbl + -315 + invbreve + -249 + invbrevebelow + -236 + macron + 156 + macronbelow + -249 + mathunderbar + -249 + mbfC + 456 + mbfC.ssty1 + 529 + mbfC.ssty2 + 633 + mbfChi + 394 + mbfDelta + 422 + mbfDelta.ssty2 + 594 + mbfG + 453 + mbfG.ssty2 + 630 + mbfH + 459 + mbfH.ssty2 + 636 + mbfLambda + 454 + mbfLambda.ssty2 + 631 + mbfO + 471 + mbfO.ssty2 + 651 + mbfOmicron + 471 + mbfPi + 453 + mbfPi.ssty2 + 630 + mbfPsi + 399 + mbfPsi.ssty2 + 593 + mbfS + 358 + mbfS.ssty2 + 519 + mbfTau + 325 + mbfTheta + 515 + mbfTheta.ssty2 + 701 + mbfUpsilon + 408 + mbfUpsilon.ssty2 + 601 + mbfV + 434 + mbfV.ssty2 + 608 + mbfW + 624 + mbfW.ssty2 + 828 + mbfX + 430 + mbfX.ssty2 + 603 + mbfY + 353 + mbfY.ssty2 + 514 + mbfZ + 428 + mbfZ.ssty2 + 601 + mbfZeta + 428 + mbfa + 363 + mbfa.ssty1 + 427 + mbfa.ssty2 + 525 + mbfc + 305 + mbfc.ssty2 + 458 + mbfe + 337 + mbfe.ssty2 + 496 + mbff + 337 + mbff.ssty2 + 496 + mbfg + 360 + mbfg.ssty2 + 522 + mbfh + 309 + mbflambda + 237 + mbflambda.ssty2 + 380 + mbfo + 367 + mbfo.ssty2 + 530 + mbfomega + 517 + mbfomega.ssty2 + 704 + mbfphi + 435 + mbfphi.ssty2 + 646 + mbfpi + 393 + mbfpi.ssty2 + 561 + mbfpsi + 421 + mbfpsi.ssty2 + 616 + mbfrho + 336 + mbfrho.ssty2 + 494 + mbfs + 280 + mbfs.ssty2 + 429 + mbfscrA + 600 + mbfscrA.ssty2 + 783 + mbfscrI + 344 + mbfscrI.ssty2 + 494 + mbfscrJ + 348 + mbfscrJ.ssty2 + 498 + mbftau + 351 + mbftau.ssty2 + 512 + mbftheta + 355 + mbftheta.ssty2 + 516 + mbfz + 303 + mbfz.ssty2 + 456 + mbfzeta + 323 + mbfzeta.ssty2 + 479 + mscrA + 524 + mscrA.ssty2 + 725 + mscrI + 271 + mscrI.ssty2 + 421 + mscrJ + 309 + mscrJ.ssty2 + 467 + mupC + 413 + mupC.ssty1 + 496 + mupChi + 389 + mupDelta + 384 + mupG + 410 + mupG.ssty1 + 493 + mupLambda + 413 + mupLambda.ssty1 + 496 + mupLambda.ssty2 + 592 + mupO + 429 + mupO.ssty1 + 515 + mupOmicron + 429 + mupPi + 389 + mupPi.ssty1 + 469 + mupPsi + 379 + mupPsi.ssty2 + 552 + mupS + 306 + mupTheta + 406 + mupTheta.ssty1 + 489 + mupTheta.ssty2 + 584 + mupUpsilon + 386 + mupUpsilon.ssty1 + 466 + mupUpsilon.ssty2 + 560 + mupV + 379 + mupW + 549 + mupX + 349 + mupY + 333 + mupZ + 389 + mupa + 332 + mupc + 271 + mupe + 277 + mupf + 321 + mupg + 312 + muph + 294 + muplambda + 215 + mupo + 309 + mupomega + 453 + mupphi + 355 + muppi + 360 + muppsi + 393 + muprho + 302 + mups + 255 + muptau + 312 + muptheta + 305 + mupx + 247 + mupz + 263 + mupzeta + 312 + notaccent + 251 + ocirc + -249 + ocircbelow + -249 + overleftarrow + -209 + overleftharpoon + -209 + overleftrightarrow + -225 + overrightarc + -304 + overrightarrow + -209 + overrightharpoon + -209 + ovhook + -106 + ring + 100 + tilde + 161 + widebreve + -249 + widebreve.h0 + -240 + widecheck + -248 + widecheck.h0 + -305 + widehat + -280 + widehat.h0 + -305 + wideoverbar + -249 + widetilde + -248 + widetilde.h0 + -225 + wideutilde + -228 + wp + 358 + + constants + + AccentBaseHeight + 413 + AxisHeight + 250 + DelimitedSubFormulaMinHeight + 1500 + DisplayOperatorMinHeight + 1400 + FlattenedAccentBaseHeight + 665 + FractionDenomDisplayStyleGapMin + 120 + FractionDenominatorDisplayStyleShiftDown + 686 + FractionDenominatorGapMin + 40 + FractionDenominatorShiftDown + 345 + FractionNumDisplayStyleGapMin + 120 + FractionNumeratorDisplayStyleShiftUp + 677 + FractionNumeratorGapMin + 40 + FractionNumeratorShiftUp + 394 + FractionRuleThickness + 40 + LowerLimitBaselineDropMin + 600 + LowerLimitGapMin + 167 + MathLeading + 150 + MinConnectorOverlap + 20 + OverbarExtraAscender + 40 + OverbarRuleThickness + 40 + OverbarVerticalGap + 120 + RadicalDegreeBottomRaisePercent + 60 + RadicalDisplayStyleVerticalGap + 148 + RadicalExtraAscender + 40 + RadicalKernAfterDegree + -600 + RadicalKernBeforeDegree + 220 + RadicalRuleThickness + 40 + RadicalVerticalGap + 50 + ScriptPercentScaleDown + 70 + ScriptScriptPercentScaleDown + 50 + SkewedFractionHorizontalGap + 400 + SkewedFractionVerticalGap + 70 + SpaceAfterScript + 50 + StackBottomDisplayStyleShiftDown + 686 + StackBottomShiftDown + 345 + StackDisplayStyleGapMin + 280 + StackGapMin + 120 + StackTopDisplayStyleShiftUp + 677 + StackTopShiftUp + 444 + StretchStackBottomShiftDown + 600 + StretchStackGapAboveMin + 167 + StretchStackGapBelowMin + 111 + StretchStackTopShiftUp + 200 + SubSuperscriptGapMin + 160 + SubscriptBaselineDropMin + 50 + SubscriptShiftDown + 150 + SubscriptTopMax + 344 + SuperscriptBaselineDropMax + 247 + SuperscriptBottomMaxWithSubscript + 344 + SuperscriptBottomMin + 108 + SuperscriptShiftUp + 363 + SuperscriptShiftUpCramped + 289 + UnderbarExtraDescender + 40 + UnderbarRuleThickness + 40 + UnderbarVerticalGap + 120 + UpperLimitBaselineRiseMin + 200 + UpperLimitGapMin + 111 + + h_variants + + Leftarrow + + Leftarrow + Longleftarrow + + Leftrightarrow + + Leftrightarrow + Longleftrightarrow + + Mapsfrom + + Mapsfrom + Longmapsfrom + + Mapsto + + Mapsto + Longmapsto + + Rightarrow + + Rightarrow + Longrightarrow + + equal + + equiv + + hookleftarrow + + hookrightarrow + + leftarrow + + leftarrow + longleftarrow + + leftarrowtail + + leftharpoondown + + leftharpoonup + + leftrightarrow + + leftrightarrow + longleftrightarrow + + leftrightarrows + + leftrightharpoons + + mapsfrom + + mapsfrom + longmapsfrom + + mapsto + + mapsto + longmapsto + + mathunderbar + + minus + + overbrace + + overbrace + overbrace.h1 + overbrace.h2 + overbrace.h3 + overbrace.h4 + + overbracket + + overbracket + overbracket.h1 + overbracket.h2 + overbracket.h3 + + overleftarrow + + overleftarrow + overleftarrow.h1 + overleftarrow.h2 + overleftarrow.h3 + + overleftharpoon + + overleftharpoon + overleftharpoon.h1 + overleftharpoon.h2 + overleftharpoon.h3 + + overleftrightarrow + + overleftrightarrow + overleftrightarrow.h1 + overleftrightarrow.h2 + overleftrightarrow.h3 + + overparen + + overparen + overparen.h1 + overparen.h2 + overparen.h3 + overparen.h4 + + overrightarc + + overrightarc + overrightarc.h1 + overrightarc.h2 + overrightarc.h3 + overrightarc.h4 + + overrightarrow + + overrightarrow + overrightarrow.h1 + overrightarrow.h2 + overrightarrow.h3 + + overrightharpoon + + overrightharpoon + overrightharpoon.h1 + overrightharpoon.h2 + overrightharpoon.h3 + + rightarrow + + rightarrow + longrightarrow + + rightarrowtail + + rightharpoondown + + rightharpoonup + + rightleftarrows + + rightleftharpoons + + twoheadleftarrow + + twoheadrightarrow + + underbrace + + underbrace + underbrace.h1 + underbrace.h2 + underbrace.h3 + underbrace.h4 + + underbracket + + underbracket + underbracket.h1 + underbracket.h2 + underbracket.h3 + + underleftarrow + + underleftarrow + underleftarrow.h1 + underleftarrow.h2 + underleftarrow.h3 + + underleftharpoondown + + underleftharpoondown + underleftharpoondown.h1 + underleftharpoondown.h2 + underleftharpoondown.h3 + + underleftrightarrow + + underleftrightarrow + underleftrightarrow.h1 + underleftrightarrow.h2 + underleftrightarrow.h3 + + underparen + + underparen + underparen.h1 + underparen.h2 + underparen.h3 + underparen.h4 + + underrightarrow + + underrightarrow + underrightarrow.h1 + underrightarrow.h2 + underrightarrow.h3 + + underrightharpoondown + + underrightharpoondown + underrightharpoondown.h1 + underrightharpoondown.h2 + underrightharpoondown.h3 + + widearc + + widearc + widearc.h1 + widearc.h2 + widearc.h3 + widearc.h4 + + widebreve + + widebreve + widebreve.h0 + widebreve.h1 + widebreve.h2 + widebreve.h3 + widebreve.h4 + widebreve.h5 + widebreve.h6 + widebreve.h7 + + widecheck + + widecheck + widecheck.h0 + widecheck.h1 + widecheck.h2 + widecheck.h3 + widecheck.h4 + widecheck.h5 + widecheck.h6 + widecheck.h7 + + widehat + + widehat + widehat.h0 + widehat.h1 + widehat.h2 + widehat.h3 + widehat.h4 + widehat.h5 + widehat.h6 + widehat.h7 + + wideoverbar + + widetilde + + widetilde + widetilde.h0 + widetilde.h1 + widetilde.h2 + widetilde.h3 + widetilde.h4 + widetilde.h5 + widetilde.h6 + widetilde.h7 + + wideutilde + + wideutilde + wideutilde.h0 + wideutilde.h1 + wideutilde.h2 + wideutilde.h3 + wideutilde.h4 + wideutilde.h5 + wideutilde.h6 + wideutilde.h7 + + + italic + + iiiint + 56 + iiint + 56 + iint + 56 + int + 56 + int.ssty1 + 56 + int.ssty2 + 56 + mbfGamma + 61 + mbfGamma.ssty2 + 71 + mbfT + 122 + mbfT.ssty2 + 142 + mbfV + 61 + mbfV.ssty2 + 71 + mbfW + 31 + mbfW.ssty2 + 35 + mbfY + 92 + mbfY.ssty2 + 106 + mbfscrT + 61 + mbfscrT.ssty2 + 68 + mid.ssty1 + 60 + mscrF + 27 + mscrF.ssty2 + 32 + mscrH + 13 + mscrH.ssty2 + 16 + mscrN + 14 + mscrN.ssty2 + 16 + mscrT + 41 + mscrT.ssty2 + 49 + mupGamma + 111 + mupGamma.ssty2 + 133 + mupP + 27 + mupP.ssty1 + 31 + mupT + 111 + mupV + 83 + mupW + 56 + mupY + 56 + oint + 56 + vysmwhtcircle.ssty1 + 60 + + v_assembly + + Downarrow + + italic + 0 + parts + + + advance + 868 + endConnector + 289 + extender + + glyph + Downarrow + startConnector + 289 + + + advance + 600 + endConnector + 200 + extender + + glyph + Downarrow.ex + startConnector + 200 + + + + Uparrow + + italic + 0 + parts + + + advance + 600 + endConnector + 200 + extender + + glyph + Uparrow.ex + startConnector + 200 + + + advance + 868 + endConnector + 289 + extender + + glyph + Uparrow + startConnector + 289 + + + + Vert + + italic + 0 + parts + + + advance + 3000 + endConnector + 200 + extender + + glyph + Vert.v4 + startConnector + 200 + + + advance + 600 + endConnector + 200 + extender + + glyph + Vert.ex + startConnector + 200 + + + + Vvert + + italic + 0 + parts + + + advance + 3000 + endConnector + 200 + extender + + glyph + Vvert.v4 + startConnector + 200 + + + advance + 600 + endConnector + 200 + extender + + glyph + Vvert.ex + startConnector + 200 + + + + downarrow + + italic + 0 + parts + + + advance + 887 + endConnector + 296 + extender + + glyph + downarrow + startConnector + 296 + + + advance + 600 + endConnector + 200 + extender + + glyph + downarrow.ex + startConnector + 200 + + + + int + + italic + 230 + parts + + + advance + 1185 + endConnector + 395 + extender + + glyph + intbottom + startConnector + 395 + + + advance + 381 + endConnector + 127 + extender + + glyph + intextender + startConnector + 127 + + + advance + 1185 + endConnector + 395 + extender + + glyph + inttop + startConnector + 395 + + + + lBrack + + italic + 0 + parts + + + advance + 1800 + endConnector + 200 + extender + + glyph + lBrack.bt + startConnector + 200 + + + advance + 600 + endConnector + 200 + extender + + glyph + lBrack.ex + startConnector + 200 + + + advance + 1800 + endConnector + 200 + extender + + glyph + lBrack.tp + startConnector + 200 + + + + lbrace + + italic + 0 + parts + + + advance + 1000 + endConnector + 100 + extender + + glyph + lbrace.bt + startConnector + 100 + + + advance + 300 + endConnector + 100 + extender + + glyph + vbrace.ex + startConnector + 100 + + + advance + 1600 + endConnector + 100 + extender + + glyph + lbracemid + startConnector + 100 + + + advance + 300 + endConnector + 100 + extender + + glyph + vbrace.ex + startConnector + 100 + + + advance + 1000 + endConnector + 100 + extender + + glyph + lbrace.tp + startConnector + 100 + + + + lbrack + + italic + 0 + parts + + + advance + 1800 + endConnector + 200 + extender + + glyph + lbrack.bt + startConnector + 200 + + + advance + 600 + endConnector + 200 + extender + + glyph + lbrack.ex + startConnector + 200 + + + advance + 1800 + endConnector + 200 + extender + + glyph + lbrack.tp + startConnector + 200 + + + + lceil + + italic + 0 + parts + + + advance + 600 + endConnector + 200 + extender + + glyph + lceilfloor.ex + startConnector + 200 + + + advance + 3000 + endConnector + 200 + extender + + glyph + lceil.v4 + startConnector + 200 + + + + lfloor + + italic + 0 + parts + + + advance + 3000 + endConnector + 200 + extender + + glyph + lfloor.v4 + startConnector + 200 + + + advance + 600 + endConnector + 200 + extender + + glyph + lceilfloor.ex + startConnector + 200 + + + + lparen + + italic + 0 + parts + + + advance + 1800 + endConnector + 200 + extender + + glyph + lparen.bt + startConnector + 200 + + + advance + 600 + endConnector + 200 + extender + + glyph + lparen.ex + startConnector + 200 + + + advance + 1800 + endConnector + 200 + extender + + glyph + lparen.tp + startConnector + 200 + + + + mid + + italic + 0 + parts + + + advance + 800 + endConnector + 267 + extender + + glyph + mid + startConnector + 267 + + + advance + 300 + endConnector + 100 + extender + + glyph + mid.ex + startConnector + 100 + + + + ni.ssty1 + + italic + 0 + parts + + + advance + 1820 + endConnector + 607 + extender + + glyph + sqrtbottom + startConnector + 607 + + + advance + 570 + endConnector + 190 + extender + + glyph + sqrt.ex + startConnector + 190 + + + advance + 585 + endConnector + 195 + extender + + glyph + sqrt.tp + startConnector + 195 + + + + parallel + + italic + 0 + parts + + + advance + 800 + endConnector + 267 + extender + + glyph + parallel + startConnector + 267 + + + advance + 300 + endConnector + 100 + extender + + glyph + parallel.ex + startConnector + 100 + + + + rBrack + + italic + 0 + parts + + + advance + 1800 + endConnector + 200 + extender + + glyph + rBrack.bt + startConnector + 200 + + + advance + 600 + endConnector + 200 + extender + + glyph + rBrack.ex + startConnector + 200 + + + advance + 1800 + endConnector + 200 + extender + + glyph + rBrack.tp + startConnector + 200 + + + + rbrace + + italic + 0 + parts + + + advance + 1000 + endConnector + 100 + extender + + glyph + rbrace.bt + startConnector + 100 + + + advance + 300 + endConnector + 100 + extender + + glyph + vbrace.ex + startConnector + 100 + + + advance + 1600 + endConnector + 100 + extender + + glyph + rbracemid + startConnector + 100 + + + advance + 300 + endConnector + 100 + extender + + glyph + vbrace.ex + startConnector + 100 + + + advance + 1000 + endConnector + 100 + extender + + glyph + rbrace.tp + startConnector + 100 + + + + rbrack + + italic + 0 + parts + + + advance + 1800 + endConnector + 200 + extender + + glyph + rbrack.bt + startConnector + 200 + + + advance + 600 + endConnector + 200 + extender + + glyph + rbrack.ex + startConnector + 200 + + + advance + 1800 + endConnector + 600 + extender + + glyph + rbrack.tp + startConnector + 200 + + + + rceil + + italic + 0 + parts + + + advance + 600 + endConnector + 200 + extender + + glyph + rceilfloor.ex + startConnector + 200 + + + advance + 3000 + endConnector + 200 + extender + + glyph + rceil.v4 + startConnector + 200 + + + + rfloor + + italic + 0 + parts + + + advance + 3000 + endConnector + 200 + extender + + glyph + rfloor.v4 + startConnector + 200 + + + advance + 600 + endConnector + 200 + extender + + glyph + rceilfloor.ex + startConnector + 200 + + + + rparen + + italic + 0 + parts + + + advance + 1800 + endConnector + 200 + extender + + glyph + rparen.bt + startConnector + 200 + + + advance + 600 + endConnector + 200 + extender + + glyph + rparen.ex + startConnector + 200 + + + advance + 1800 + endConnector + 600 + extender + + glyph + rparen.tp + startConnector + 200 + + + + sqrt + + italic + 0 + parts + + + advance + 1820 + endConnector + 607 + extender + + glyph + sqrtbottom + startConnector + 607 + + + advance + 570 + endConnector + 190 + extender + + glyph + sqrt.ex + startConnector + 190 + + + advance + 585 + endConnector + 195 + extender + + glyph + sqrt.tp + startConnector + 195 + + + + uparrow + + italic + 0 + parts + + + advance + 600 + endConnector + 200 + extender + + glyph + uparrow.ex + startConnector + 200 + + + advance + 887 + endConnector + 296 + extender + + glyph + uparrow + startConnector + 296 + + + + vert + + italic + 0 + parts + + + advance + 3000 + endConnector + 200 + extender + + glyph + vert.v4 + startConnector + 200 + + + advance + 600 + endConnector + 200 + extender + + glyph + vert.ex + startConnector + 200 + + + + + v_variants + + Bbbsum + + Bbbsum + Bbbsum.v1 + + Downarrow + + Downarrow + + Uparrow + + Uparrow + + Vert + + Vert + Vert.v1 + Vert.v2 + Vert.v3 + Vert.v4 + + Vvert + + Vvert + Vvert.v1 + Vvert.v2 + Vvert.v3 + Vvert.v4 + + awint + + awint + awint.v1 + + backslash + + backslash + backslash.v1 + backslash.v2 + backslash.v3 + backslash.v4 + + bigcap + + bigcap + bigcap.v1 + + bigcup + + bigcup + bigcup.v1 + + bigcupdot + + bigcupdot + bigcupdot.v1 + + bigodot + + bigodot + bigodot.v1 + + bigoplus + + bigoplus + bigoplus.v1 + + bigotimes + + bigotimes + bigotimes.v1 + + bigsqcap + + bigsqcap + bigsqcap.v1 + + bigsqcup + + bigsqcup + bigsqcup.v1 + + bigtimes + + bigtimes + bigtimes.v1 + + biguplus + + biguplus + biguplus.v1 + + bigvee + + bigvee + bigvee.v1 + + bigwedge + + bigwedge + bigwedge.v1 + + coprod + + coprod + coprod.v1 + + cuberoot + + cuberoot + cuberoot.v1 + cuberoot.v2 + cuberoot.v3 + cuberoot.v4 + + downarrow + + downarrow + + fourthroot + + fourthroot + fourthroot.v1 + fourthroot.v2 + fourthroot.v3 + fourthroot.v4 + + iiiint + + iiiint + iiiint.v1 + + iiint + + iiint + iiint.v1 + + iint + + iint + iint.v1 + + int + + int + int.v1 + + intclockwise + + intclockwise + intclockwise.v1 + + lAngle + + lAngle + lAngle.v1 + lAngle.v2 + lAngle.v3 + lAngle.v4 + + lBrack + + lBrack + lBrack.v1 + lBrack.v2 + lBrack.v3 + lBrack.v4 + + langle + + langle + langle.v1 + langle.v2 + langle.v3 + langle.v4 + + lbrace + + lbrace + lbrace.v1 + lbrace.v2 + lbrace.v3 + lbrace.v4 + + lbrack + + lbrack + lbrack.v1 + lbrack.v2 + lbrack.v3 + lbrack.v4 + + lceil + + lceil + lceil.v1 + lceil.v2 + lceil.v3 + lceil.v4 + + lfloor + + lfloor + lfloor.v1 + lfloor.v2 + lfloor.v3 + lfloor.v4 + + lparen + + lparen + lparen.v1 + lparen.v2 + lparen.v3 + lparen.v4 + + mathslash + + mathslash + mathslash.v1 + mathslash.v2 + mathslash.v3 + mathslash.v4 + + mid + + mid + + ni.ssty1 + + sqrt.ssty1 + sqrt.v1 + sqrt.v2 + sqrt.v3 + sqrt.v4 + + oiiint + + oiiint + oiiint.v1 + + oiint + + oiint + oiint.v1 + + oint + + oint + oint.v1 + + ointctrclockwise + + ointctrclockwise + ointctrclockwise.v1 + + parallel + + parallel + + prod + + prod + prod.v1 + + rAngle + + rAngle + rAngle.v1 + rAngle.v2 + rAngle.v3 + rAngle.v4 + + rBrack + + rBrack + rBrack.v1 + rBrack.v2 + rBrack.v3 + rBrack.v4 + + rangle + + rangle + rangle.v1 + rangle.v2 + rangle.v3 + rangle.v4 + + rbrace + + rbrace + rbrace.v1 + rbrace.v2 + rbrace.v3 + rbrace.v4 + + rbrack + + rbrack + rbrack.v1 + rbrack.v2 + rbrack.v3 + rbrack.v4 + + rceil + + rceil + rceil.v1 + rceil.v2 + rceil.v3 + rceil.v4 + + rfloor + + rfloor + rfloor.v1 + rfloor.v2 + rfloor.v3 + rfloor.v4 + + rparen + + rparen + rparen.v1 + rparen.v2 + rparen.v3 + rparen.v4 + + sqrt + + sqrt + sqrt.v1 + sqrt.v2 + sqrt.v3 + sqrt.v4 + + sum + + sum + sum.v1 + + uparrow + + uparrow + + varointclockwise + + varointclockwise + varointclockwise.v1 + + vert + + vert + vert.v1 + vert.v2 + vert.v3 + vert.v4 + + + version + 1.3 + + diff --git a/third-party/SwiftMath/Sources/mathFonts.bundle/FiraMath-Regular.otf b/third-party/SwiftMath/Sources/mathFonts.bundle/FiraMath-Regular.otf new file mode 100755 index 0000000000000000000000000000000000000000..f1f9d40c2c82258858e603dba709ea24fb1a1bc2 GIT binary patch literal 179840 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 + + + + accents + + u1D400 + 296 + u1D401 + 278 + u1D402 + 348 + u1D403 + 302 + u1D404 + 278 + u1D405 + 272 + u1D406 + 365 + u1D407 + 333 + u1D408 + 147 + u1D409 + 174 + u1D40A + 325 + u1D40B + 147 + u1D40C + 393 + u1D40D + 332 + u1D40E + 346 + u1D40F + 322 + u1D410 + 345 + u1D411 + 292 + u1D412 + 288 + u1D413 + 274 + u1D414 + 326 + u1D415 + 286 + u1D416 + 423 + u1D417 + 290 + u1D418 + 297 + u1D419 + 280 + u1D41A + 264 + u1D41B + 141 + u1D41C + 262 + u1D41D + 459 + u1D41E + 283 + u1D41F + 286 + u1D420 + 278 + u1D421 + 141 + u1D422 + 140 + u1D423 + 140 + u1D424 + 141 + u1D425 + 136 + u1D426 + 425 + u1D427 + 291 + u1D428 + 292 + u1D429 + 311 + u1D42A + 288 + u1D42B + 232 + u1D42C + 249 + u1D42D + 156 + u1D42E + 284 + u1D42F + 256 + u1D430 + 374 + u1D431 + 256 + u1D432 + 259 + u1D433 + 235 + u1D434 + 343 + u1D435 + 329 + u1D436 + 394 + u1D437 + 349 + u1D438 + 343 + u1D439 + 340 + u1D43A + 405 + u1D43B + 417 + u1D43C + 226 + u1D43D + 239 + u1D43E + 384 + u1D43F + 226 + u1D440 + 439 + u1D441 + 399 + u1D442 + 417 + u1D443 + 336 + u1D444 + 417 + u1D445 + 332 + u1D446 + 339 + u1D447 + 333 + u1D448 + 388 + u1D449 + 334 + u1D44A + 470 + u1D44B + 325 + u1D44C + 331 + u1D44D + 329 + u1D44E + 346 + u1D44F + 227 + u1D450 + 334 + u1D451 + 530 + u1D452 + 323 + u1D453 + 429 + u1D454 + 352 + u1D456 + 208 + u1D457 + 209 + u1D458 + 207 + u1D459 + 213 + u1D45A + 447 + u1D45B + 324 + u1D45C + 325 + u1D45D + 318 + u1D45E + 351 + u1D45F + 273 + u1D460 + 283 + u1D461 + 229 + u1D462 + 323 + u1D463 + 280 + u1D464 + 394 + u1D465 + 328 + u1D466 + 311 + u1D467 + 300 + u1D468 + 350 + u1D469 + 327 + u1D46A + 395 + u1D46B + 327 + u1D46C + 343 + u1D46D + 327 + u1D46E + 407 + u1D46F + 387 + u1D470 + 225 + u1D471 + 248 + u1D472 + 395 + u1D473 + 224 + u1D474 + 440 + u1D475 + 386 + u1D476 + 419 + u1D477 + 344 + u1D478 + 419 + u1D479 + 347 + u1D47A + 348 + u1D47B + 329 + u1D47C + 380 + u1D47D + 341 + u1D47E + 498 + u1D47F + 344 + u1D480 + 352 + u1D481 + 335 + u1D482 + 345 + u1D483 + 225 + u1D484 + 334 + u1D485 + 535 + u1D486 + 328 + u1D487 + 452 + u1D488 + 356 + u1D489 + 225 + u1D48A + 212 + u1D48B + 212 + u1D48C + 211 + u1D48D + 221 + u1D48E + 439 + u1D48F + 327 + u1D490 + 324 + u1D491 + 334 + u1D492 + 352 + u1D493 + 266 + u1D494 + 290 + u1D495 + 238 + u1D496 + 315 + u1D497 + 290 + u1D498 + 418 + u1D499 + 284 + u1D49A + 291 + u1D49B + 267 + u1D6A4 + 196 + u1D6A5 + 196 + u1D6A8 + 296 + u1D6A9 + 278 + u1D6AA + 287 + u1D6AB + 300 + u1D6AC + 278 + u1D6AD + 280 + u1D6AE + 333 + u1D6AF + 346 + u1D6B0 + 147 + u1D6B1 + 325 + u1D6B2 + 295 + u1D6B3 + 393 + u1D6B4 + 332 + u1D6B5 + 262 + u1D6B6 + 346 + u1D6B7 + 332 + u1D6B8 + 322 + u1D6B9 + 346 + u1D6BA + 251 + u1D6BB + 274 + u1D6BC + 297 + u1D6BD + 421 + u1D6BE + 290 + u1D6BF + 364 + u1D6C0 + 345 + u1D6C1 + 342 + u1D6C2 + 303 + u1D6C3 + 292 + u1D6C4 + 248 + u1D6C5 + 300 + u1D6C6 + 264 + u1D6C7 + 232 + u1D6C8 + 284 + u1D6C9 + 282 + u1D6CA + 136 + u1D6CB + 303 + u1D6CC + 238 + u1D6CD + 300 + u1D6CE + 248 + u1D6CF + 248 + u1D6D0 + 292 + u1D6D1 + 294 + u1D6D2 + 298 + u1D6D3 + 253 + u1D6D4 + 312 + u1D6D5 + 241 + u1D6D6 + 290 + u1D6D7 + 377 + u1D6D8 + 242 + u1D6D9 + 395 + u1D6DA + 387 + u1D6DB + 264 + u1D6DC + 254 + u1D6DD + 255 + u1D6DE + 285 + u1D6DF + 332 + u1D6E0 + 301 + u1D6E1 + 371 + u1D6E2 + 343 + u1D6E3 + 329 + u1D6E4 + 378 + u1D6E5 + 368 + u1D6E6 + 343 + u1D6E7 + 329 + u1D6E8 + 417 + u1D6E9 + 417 + u1D6EA + 226 + u1D6EB + 384 + u1D6EC + 363 + u1D6ED + 439 + u1D6EE + 399 + u1D6EF + 318 + u1D6F0 + 417 + u1D6F1 + 404 + u1D6F2 + 356 + u1D6F3 + 417 + u1D6F4 + 320 + u1D6F5 + 333 + u1D6F6 + 331 + u1D6F7 + 477 + u1D6F8 + 325 + u1D6F9 + 418 + u1D6FA + 416 + u1D6FB + 320 + u1D6FC + 318 + u1D6FD + 365 + u1D6FE + 266 + u1D6FF + 356 + u1D700 + 285 + u1D701 + 313 + u1D702 + 324 + u1D703 + 361 + u1D704 + 191 + u1D705 + 308 + u1D706 + 254 + u1D707 + 330 + u1D708 + 266 + u1D709 + 335 + u1D70A + 325 + u1D70B + 343 + u1D70C + 329 + u1D70D + 320 + u1D70E + 348 + u1D70F + 263 + u1D710 + 316 + u1D711 + 385 + u1D712 + 245 + u1D713 + 441 + u1D714 + 412 + u1D715 + 280 + u1D716 + 329 + u1D717 + 300 + u1D718 + 300 + u1D719 + 388 + u1D71A + 392 + u1D71B + 398 + u1D71C + 350 + u1D71D + 327 + u1D71E + 354 + u1D71F + 374 + u1D720 + 343 + u1D721 + 335 + u1D722 + 387 + u1D723 + 419 + u1D724 + 225 + u1D725 + 395 + u1D726 + 350 + u1D727 + 440 + u1D728 + 386 + u1D729 + 324 + u1D72A + 419 + u1D72B + 397 + u1D72C + 344 + u1D72D + 419 + u1D72E + 317 + u1D72F + 329 + u1D730 + 352 + u1D731 + 496 + u1D732 + 344 + u1D733 + 438 + u1D734 + 415 + u1D735 + 358 + u1D736 + 308 + u1D737 + 359 + u1D738 + 286 + u1D739 + 350 + u1D73A + 279 + u1D73B + 318 + u1D73C + 311 + u1D73D + 354 + u1D73E + 190 + u1D73F + 316 + u1D740 + 273 + u1D741 + 319 + u1D742 + 286 + u1D743 + 336 + u1D744 + 324 + u1D745 + 346 + u1D746 + 323 + u1D747 + 322 + u1D748 + 346 + u1D749 + 268 + u1D74A + 304 + u1D74B + 390 + u1D74C + 254 + u1D74D + 448 + u1D74E + 418 + u1D74F + 278 + u1D750 + 312 + u1D751 + 301 + u1D752 + 303 + u1D753 + 413 + u1D754 + 323 + u1D755 + 416 + uni0041 + 287 + uni0042 + 292 + uni0043 + 298 + uni0044 + 314 + uni0045 + 290 + uni0046 + 283 + uni0047 + 312 + uni0048 + 340 + uni0049 + 148 + uni004A + 162 + uni004B + 324 + uni004C + 148 + uni004D + 389 + uni004E + 342 + uni004F + 346 + uni0050 + 294 + uni0051 + 346 + uni0052 + 290 + uni0053 + 270 + uni0054 + 261 + uni0055 + 331 + uni0056 + 278 + uni0057 + 413 + uni0058 + 270 + uni0059 + 275 + uni005A + 271 + uni0061 + 265 + uni0062 + 141 + uni0063 + 287 + uni0064 + 457 + uni0065 + 276 + uni0066 + 269 + uni0067 + 272 + uni0068 + 141 + uni0069 + 140 + uni006A + 139 + uni006B + 141 + uni006C + 136 + uni006D + 431 + uni006E + 296 + uni006F + 292 + uni0070 + 314 + uni0071 + 282 + uni0072 + 236 + uni0073 + 228 + uni0074 + 147 + uni0075 + 288 + uni0076 + 246 + uni0077 + 358 + uni0078 + 242 + uni0079 + 246 + uni007A + 216 + uni00B4 + 150 + uni0131 + 141 + uni0300 + -150 + uni0301 + -150 + uni0302 + -196 + uni0303 + -197 + uni0304 + -166 + uni0305 + -270 + uni0306 + -182 + uni0307 + -94 + uni0308 + -192 + uni0309 + -131 + uni030A + -144 + uni030B + -183 + uni030C + -196 + uni030D + -74 + uni030F + -183 + uni0311 + -182 + uni0312 + -90 + uni0313 + -90 + uni0316 + -150 + uni0317 + -150 + uni0318 + -132 + uni0319 + -133 + uni031A + -93 + uni031B + -97 + uni031C + -87 + uni031D + -180 + uni031E + -180 + uni031F + -156 + uni0320 + -157 + uni0321 + -163 + uni0323 + -94 + uni0324 + -192 + uni0325 + -144 + uni0326 + -90 + uni0327 + -138 + uni0328 + -132 + uni0329 + -86 + uni032A + -170 + uni032B + -221 + uni032C + -196 + uni032D + -196 + uni032F + -182 + uni0330 + -197 + uni0331 + -166 + uni0332 + -235 + uni0334 + -239 + uni0335 + -202 + uni0336 + -393 + uni0337 + -236 + uni0338 + -311 + uni0339 + -86 + uni033A + -170 + uni033B + -170 + uni033C + -221 + uni033D + -174 + uni0342 + -197 + uni0345 + -136 + uni035C + 0 + uni0361 + -1 + uni0391 + 287 + uni0392 + 292 + uni0393 + 279 + uni0394 + 292 + uni0395 + 290 + uni0396 + 271 + uni0397 + 340 + uni0398 + 346 + uni0399 + 148 + uni039A + 324 + uni039B + 287 + uni039C + 389 + uni039D + 342 + uni039E + 251 + uni039F + 346 + uni03A0 + 337 + uni03A1 + 294 + uni03A3 + 251 + uni03A4 + 261 + uni03A5 + 275 + uni03A6 + 405 + uni03A7 + 270 + uni03A8 + 347 + uni03A9 + 346 + uni03B1 + 302 + uni03B2 + 291 + uni03B3 + 234 + uni03B4 + 288 + uni03B5 + 263 + uni03B6 + 230 + uni03B7 + 288 + uni03B8 + 288 + uni03B9 + 136 + uni03BA + 285 + uni03BB + 222 + uni03BC + 304 + uni03BD + 234 + uni03BE + 248 + uni03BF + 293 + uni03C0 + 290 + uni03C1 + 300 + uni03C2 + 252 + uni03C3 + 308 + uni03C4 + 225 + uni03C5 + 296 + uni03C6 + 368 + uni03C7 + 227 + uni03C8 + 382 + uni03C9 + 389 + uni03D0 + 289 + uni03D1 + 241 + uni03D2 + 303 + uni03D5 + 314 + uni03D6 + 359 + uni03D7 + 300 + uni03F0 + 285 + uni03F1 + 304 + uni03F2 + 287 + uni03F4 + 346 + uni03F5 + 269 + uni03F6 + 231 + uni20D0 + -216 + uni20D1 + -216 + uni20D2 + -200 + uni20D3 + -200 + uni20D6 + -210 + uni20D7 + -210 + uni20DB + -287 + uni20DC + -372 + uni20E1 + -250 + uni20E7 + -430 + uni20E8 + -288 + uni20E9 + -245 + uni20EC + -216 + uni20ED + -216 + uni20EE + -210 + uni20EF + -210 + uni20F0 + -180 + uni210A + 282 + uni210E + 207 + uni210F + 207 + uni2113 + 250 + uni2202 + 245 + uni2206 + 292 + uni2207 + 306 + + constants + + AccentBaseHeight + 527 + AxisHeight + 280 + DelimitedSubFormulaMinHeight + 1500 + DisplayOperatorMinHeight + 1500 + FlattenedAccentBaseHeight + 689 + FractionDenomDisplayStyleGapMin + 200 + FractionDenominatorDisplayStyleShiftDown + 700 + FractionDenominatorGapMin + 80 + FractionDenominatorShiftDown + 480 + FractionNumDisplayStyleGapMin + 200 + FractionNumeratorDisplayStyleShiftUp + 580 + FractionNumeratorGapMin + 80 + FractionNumeratorShiftUp + 450 + FractionRuleThickness + 76 + LowerLimitBaselineDropMin + 600 + LowerLimitGapMin + 150 + MathLeading + 150 + MinConnectorOverlap + 20 + OverbarExtraAscender + 50 + OverbarRuleThickness + 66 + OverbarVerticalGap + 150 + RadicalDegreeBottomRaisePercent + 64 + RadicalDisplayStyleVerticalGap + 142 + RadicalExtraAscender + 76 + RadicalKernAfterDegree + -400 + RadicalKernBeforeDegree + 276 + RadicalRuleThickness + 76 + RadicalVerticalGap + 96 + ScriptPercentScaleDown + 72 + ScriptScriptPercentScaleDown + 58 + SkewedFractionHorizontalGap + 0 + SkewedFractionVerticalGap + 0 + SpaceAfterScript + 41 + StackBottomDisplayStyleShiftDown + 700 + StackBottomShiftDown + 480 + StackDisplayStyleGapMin + 500 + StackGapMin + 200 + StackTopDisplayStyleShiftUp + 580 + StackTopShiftUp + 450 + StretchStackBottomShiftDown + 600 + StretchStackGapAboveMin + 150 + StretchStackGapBelowMin + 150 + StretchStackTopShiftUp + 300 + SubSuperscriptGapMin + 200 + SubscriptBaselineDropMin + 250 + SubscriptShiftDown + 350 + SubscriptTopMax + 527 + SuperscriptBaselineDropMax + 360 + SuperscriptBottomMaxWithSubscript + 527 + SuperscriptBottomMin + 130 + SuperscriptShiftUp + 400 + SuperscriptShiftUpCramped + 270 + UnderbarExtraDescender + 50 + UnderbarRuleThickness + 66 + UnderbarVerticalGap + 150 + UpperLimitBaselineRiseMin + 150 + UpperLimitGapMin + 150 + + h_variants + + uni23B4 + + uni23B4 + uni23B4.size1 + uni23B4.size2 + uni23B4.size3 + uni23B4.size4 + uni23B4.size5 + uni23B4.size6 + uni23B4.size7 + uni23B4.size8 + uni23B4.size9 + uni23B4.size10 + uni23B4.size11 + uni23B4.size12 + uni23B4.size13 + uni23B4.size14 + uni23B4.size15 + + uni23B5 + + uni23B5 + uni23B5.size1 + uni23B5.size2 + uni23B5.size3 + uni23B5.size4 + uni23B5.size5 + uni23B5.size6 + uni23B5.size7 + uni23B5.size8 + uni23B5.size9 + uni23B5.size10 + uni23B5.size11 + uni23B5.size12 + uni23B5.size13 + uni23B5.size14 + uni23B5.size15 + + uni23DC + + uni23DC + uni23DC.size1 + uni23DC.size2 + uni23DC.size3 + uni23DC.size4 + uni23DC.size5 + uni23DC.size6 + uni23DC.size7 + uni23DC.size8 + uni23DC.size9 + uni23DC.size10 + uni23DC.size11 + uni23DC.size12 + uni23DC.size13 + uni23DC.size14 + uni23DC.size15 + + uni23DD + + uni23DD + uni23DD.size1 + uni23DD.size2 + uni23DD.size3 + uni23DD.size4 + uni23DD.size5 + uni23DD.size6 + uni23DD.size7 + uni23DD.size8 + uni23DD.size9 + uni23DD.size10 + uni23DD.size11 + uni23DD.size12 + uni23DD.size13 + uni23DD.size14 + uni23DD.size15 + + uni23DE + + uni23DE + uni23DE.size1 + uni23DE.size2 + uni23DE.size3 + uni23DE.size4 + uni23DE.size5 + uni23DE.size6 + uni23DE.size7 + uni23DE.size8 + uni23DE.size9 + uni23DE.size10 + uni23DE.size11 + uni23DE.size12 + uni23DE.size13 + uni23DE.size14 + uni23DE.size15 + + uni23DF + + uni23DF + uni23DF.size1 + uni23DF.size2 + uni23DF.size3 + uni23DF.size4 + uni23DF.size5 + uni23DF.size6 + uni23DF.size7 + uni23DF.size8 + uni23DF.size9 + uni23DF.size10 + uni23DF.size11 + uni23DF.size12 + uni23DF.size13 + uni23DF.size14 + uni23DF.size15 + + + italic + + u1D41F + 100 + u1D420 + 15 + u1D42B + 30 + u1D42D + 30 + u1D42F + 30 + u1D430 + 30 + u1D431 + 20 + u1D432 + 30 + u1D435 + 30 + u1D436 + 60 + u1D437 + 15 + u1D438 + 60 + u1D439 + 80 + u1D43A + 20 + u1D43B + 20 + u1D43C + 20 + u1D43D + 20 + u1D43E + 80 + u1D440 + 20 + u1D441 + 20 + u1D442 + 15 + u1D443 + 40 + u1D444 + 20 + u1D445 + 20 + u1D446 + 30 + u1D447 + 90 + u1D448 + 30 + u1D449 + 100 + u1D44A + 80 + u1D44B + 70 + u1D44C + 90 + u1D44D + 50 + u1D450 + 30 + u1D451 + 50 + u1D453 + 80 + u1D454 + 20 + u1D456 + 15 + u1D457 + 15 + u1D458 + 15 + u1D459 + 20 + u1D45A + 20 + u1D45B + 20 + u1D45E + 20 + u1D45F + 40 + u1D460 + 25 + u1D461 + 15 + u1D462 + 20 + u1D463 + 50 + u1D464 + 40 + u1D465 + 40 + u1D466 + 40 + u1D467 + 20 + u1D469 + 30 + u1D46A + 70 + u1D46B + 25 + u1D46C + 50 + u1D46D + 80 + u1D46E + 30 + u1D46F + 30 + u1D470 + 30 + u1D471 + 30 + u1D472 + 90 + u1D474 + 40 + u1D475 + 30 + u1D476 + 30 + u1D477 + 45 + u1D478 + 30 + u1D479 + 30 + u1D47A + 40 + u1D47B + 95 + u1D47C + 40 + u1D47D + 110 + u1D47E + 90 + u1D47F + 90 + u1D480 + 110 + u1D481 + 60 + u1D482 + 10 + u1D484 + 40 + u1D485 + 60 + u1D486 + 20 + u1D487 + 100 + u1D488 + 30 + u1D489 + 10 + u1D48A + 30 + u1D48B + 30 + u1D48C + 30 + u1D48D + 25 + u1D48E + 20 + u1D48F + 20 + u1D492 + 30 + u1D493 + 60 + u1D494 + 30 + u1D495 + 25 + u1D496 + 30 + u1D497 + 70 + u1D498 + 60 + u1D499 + 50 + u1D49A + 70 + u1D49B + 30 + u1D6A4 + 15 + u1D6A5 + 15 + u1D6E3 + 30 + u1D6E4 + 90 + u1D6E6 + 60 + u1D6E7 + 50 + u1D6E8 + 20 + u1D6E9 + 15 + u1D6EA + 20 + u1D6EB + 80 + u1D6ED + 20 + u1D6EE + 20 + u1D6EF + 20 + u1D6F0 + 15 + u1D6F1 + 20 + u1D6F2 + 40 + u1D6F3 + 15 + u1D6F4 + 40 + u1D6F5 + 90 + u1D6F6 + 90 + u1D6F7 + 20 + u1D6F8 + 70 + u1D6F9 + 50 + u1D6FA + 20 + u1D6FB + 20 + u1D6FC + 15 + u1D6FD + 20 + u1D6FE + 50 + u1D6FF + 15 + u1D700 + 15 + u1D701 + 110 + u1D702 + 20 + u1D703 + 20 + u1D705 + 20 + u1D707 + 15 + u1D708 + 50 + u1D709 + 90 + u1D70A + 10 + u1D70B + 40 + u1D70C + 15 + u1D70D + 50 + u1D70E + 40 + u1D70F + 60 + u1D710 + 15 + u1D711 + 15 + u1D712 + 40 + u1D713 + 15 + u1D714 + 15 + u1D715 + 10 + u1D716 + 15 + u1D717 + 25 + u1D718 + 15 + u1D719 + 20 + u1D71A + 15 + u1D71B + 30 + u1D71D + 30 + u1D71E + 100 + u1D720 + 50 + u1D721 + 60 + u1D722 + 30 + u1D723 + 30 + u1D724 + 30 + u1D725 + 90 + u1D727 + 40 + u1D728 + 30 + u1D729 + 50 + u1D72A + 20 + u1D72B + 30 + u1D72C + 45 + u1D72D + 30 + u1D72E + 60 + u1D72F + 95 + u1D730 + 110 + u1D731 + 30 + u1D732 + 90 + u1D733 + 60 + u1D734 + 30 + u1D735 + 25 + u1D736 + 20 + u1D737 + 30 + u1D738 + 60 + u1D739 + 25 + u1D73A + 20 + u1D73B + 110 + u1D73C + 20 + u1D73D + 30 + u1D73E + 10 + u1D73F + 30 + u1D741 + 20 + u1D742 + 60 + u1D743 + 100 + u1D744 + 15 + u1D745 + 45 + u1D746 + 20 + u1D747 + 55 + u1D748 + 50 + u1D749 + 70 + u1D74A + 15 + u1D74B + 20 + u1D74C + 50 + u1D74D + 20 + u1D74E + 15 + u1D74F + 15 + u1D750 + 30 + u1D751 + 35 + u1D752 + 20 + u1D753 + 20 + u1D754 + 15 + u1D755 + 40 + uni0066 + 80 + uni0072 + 20 + uni0074 + 20 + uni0076 + 30 + uni0077 + 20 + uni0079 + 20 + uni210E + 20 + uni210F + 20 + uni222B + 240 + uni222B.display + 580 + uni222B.display.up + 280 + uni222B.up + 180 + uni222C + 240 + uni222C.display + 580 + uni222C.display.up + 280 + uni222C.up + 180 + uni222D + 240 + uni222D.display + 580 + uni222D.display.up + 280 + uni222D.up + 180 + uni222E + 240 + uni222E.display + 580 + uni222E.display.up + 280 + uni222E.up + 180 + uni222F + 240 + uni222F.display + 580 + uni222F.display.up + 280 + uni222F.up + 180 + uni2230 + 240 + uni2230.display + 580 + uni2230.display.up + 280 + uni2230.up + 180 + uni2A0C + 240 + uni2A0C.display + 580 + uni2A0C.display.up + 280 + uni2A0C.up + 180 + + v_assembly + + uni0028 + + italic + 0 + parts + + + advance + 2956 + endConnector + 150 + extender + + glyph + uni239D + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni239C + startConnector + 150 + + + advance + 2956 + endConnector + 0 + extender + + glyph + uni239B + startConnector + 150 + + + + uni0029 + + italic + 0 + parts + + + advance + 2956 + endConnector + 150 + extender + + glyph + uni23A0 + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni239F + startConnector + 150 + + + advance + 2956 + endConnector + 0 + extender + + glyph + uni239E + startConnector + 150 + + + + uni005B + + italic + 0 + parts + + + advance + 2956 + endConnector + 150 + extender + + glyph + uni23A3 + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni23A2 + startConnector + 150 + + + advance + 2956 + endConnector + 0 + extender + + glyph + uni23A1 + startConnector + 150 + + + + uni005D + + italic + 0 + parts + + + advance + 2956 + endConnector + 150 + extender + + glyph + uni23A6 + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni23A5 + startConnector + 150 + + + advance + 2956 + endConnector + 0 + extender + + glyph + uni23A4 + startConnector + 150 + + + + uni007B + + italic + 0 + parts + + + advance + 1400 + endConnector + 150 + extender + + glyph + uni23A9 + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni23AA + startConnector + 150 + + + advance + 2000 + endConnector + 150 + extender + + glyph + uni23A8 + startConnector + 150 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni23AA + startConnector + 150 + + + advance + 1400 + endConnector + 0 + extender + + glyph + uni23A7 + startConnector + 150 + + + + uni007C + + italic + 0 + parts + + + advance + 600 + endConnector + 150 + extender + + glyph + uni007C.ext + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni007C.ext + startConnector + 150 + + + + uni007D + + italic + 0 + parts + + + advance + 1400 + endConnector + 150 + extender + + glyph + uni23AD + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni23AA + startConnector + 150 + + + advance + 2000 + endConnector + 150 + extender + + glyph + uni23AC + startConnector + 150 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni23AA + startConnector + 150 + + + advance + 1400 + endConnector + 0 + extender + + glyph + uni23AB + startConnector + 150 + + + + uni2016 + + italic + 0 + parts + + + advance + 600 + endConnector + 150 + extender + + glyph + uni2016.ext + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni2016.ext + startConnector + 150 + + + + uni221A + + italic + 0 + parts + + + advance + 3800 + endConnector + 150 + extender + + glyph + uni221A.bot + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni221A.ext + startConnector + 150 + + + advance + 1600 + endConnector + 0 + extender + + glyph + uni221A.top + startConnector + 150 + + + + uni221B + + italic + 0 + parts + + + advance + 3800 + endConnector + 150 + extender + + glyph + uni221B.bot + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni221B.ext + startConnector + 150 + + + advance + 1600 + endConnector + 0 + extender + + glyph + uni221B.top + startConnector + 150 + + + + uni221C + + italic + 0 + parts + + + advance + 3800 + endConnector + 150 + extender + + glyph + uni221C.bot + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni221C.ext + startConnector + 150 + + + advance + 1600 + endConnector + 0 + extender + + glyph + uni221C.top + startConnector + 150 + + + + uni2308 + + italic + 0 + parts + + + advance + 600 + endConnector + 150 + extender + + glyph + uni2308.ext + startConnector + 0 + + + advance + 1600 + endConnector + 150 + extender + + glyph + uni2308.top + startConnector + 150 + + + + uni2309 + + italic + 0 + parts + + + advance + 600 + endConnector + 150 + extender + + glyph + uni2309.ext + startConnector + 0 + + + advance + 1600 + endConnector + 150 + extender + + glyph + uni2309.top + startConnector + 150 + + + + uni230A + + italic + 0 + parts + + + advance + 1600 + endConnector + 150 + extender + + glyph + uni230A.bot + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni230A.ext + startConnector + 150 + + + + uni230B + + italic + 0 + parts + + + advance + 1600 + endConnector + 150 + extender + + glyph + uni230B.bot + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni230B.ext + startConnector + 150 + + + + uni27EE + + italic + 0 + parts + + + advance + 2956 + endConnector + 150 + extender + + glyph + uni27EE.bot + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni27EE.ext + startConnector + 150 + + + advance + 2956 + endConnector + 0 + extender + + glyph + uni27EE.top + startConnector + 150 + + + + uni27EF + + italic + 0 + parts + + + advance + 2956 + endConnector + 150 + extender + + glyph + uni27EF.bot + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni27EF.ext + startConnector + 150 + + + advance + 2956 + endConnector + 0 + extender + + glyph + uni27EF.top + startConnector + 150 + + + + uni2980 + + italic + 0 + parts + + + advance + 600 + endConnector + 150 + extender + + glyph + uni2980.ext + startConnector + 0 + + + advance + 600 + endConnector + 150 + extender + + glyph + uni2980.ext + startConnector + 150 + + + + + v_variants + + uni0028 + + uni0028 + uni0028.size1 + uni0028.size2 + uni0028.size3 + uni0028.size4 + uni0028.size5 + uni0028.size6 + uni0028.size7 + uni0028.size8 + uni0028.size9 + uni0028.size10 + uni0028.size11 + uni0028.size12 + uni0028.size13 + uni0028.size14 + uni0028.size15 + + uni0029 + + uni0029 + uni0029.size1 + uni0029.size2 + uni0029.size3 + uni0029.size4 + uni0029.size5 + uni0029.size6 + uni0029.size7 + uni0029.size8 + uni0029.size9 + uni0029.size10 + uni0029.size11 + uni0029.size12 + uni0029.size13 + uni0029.size14 + uni0029.size15 + + uni005B + + uni005B + uni005B.size1 + uni005B.size2 + uni005B.size3 + uni005B.size4 + uni005B.size5 + uni005B.size6 + uni005B.size7 + uni005B.size8 + uni005B.size9 + uni005B.size10 + uni005B.size11 + uni005B.size12 + uni005B.size13 + uni005B.size14 + uni005B.size15 + + uni005D + + uni005D + uni005D.size1 + uni005D.size2 + uni005D.size3 + uni005D.size4 + uni005D.size5 + uni005D.size6 + uni005D.size7 + uni005D.size8 + uni005D.size9 + uni005D.size10 + uni005D.size11 + uni005D.size12 + uni005D.size13 + uni005D.size14 + uni005D.size15 + + uni007B + + uni007B + uni007B.size1 + uni007B.size2 + uni007B.size3 + uni007B.size4 + uni007B.size5 + uni007B.size6 + uni007B.size7 + uni007B.size8 + uni007B.size9 + uni007B.size10 + uni007B.size11 + uni007B.size12 + uni007B.size13 + uni007B.size14 + uni007B.size15 + + uni007C + + uni007C + uni007C.size1 + uni007C.size2 + uni007C.size3 + uni007C.size4 + uni007C.size5 + uni007C.size6 + uni007C.size7 + uni007C.size8 + uni007C.size9 + uni007C.size10 + uni007C.size11 + uni007C.size12 + uni007C.size13 + uni007C.size14 + uni007C.size15 + + uni007D + + uni007D + uni007D.size1 + uni007D.size2 + uni007D.size3 + uni007D.size4 + uni007D.size5 + uni007D.size6 + uni007D.size7 + uni007D.size8 + uni007D.size9 + uni007D.size10 + uni007D.size11 + uni007D.size12 + uni007D.size13 + uni007D.size14 + uni007D.size15 + + uni2016 + + uni2016 + uni2016.size1 + uni2016.size2 + uni2016.size3 + uni2016.size4 + uni2016.size5 + uni2016.size6 + uni2016.size7 + uni2016.size8 + uni2016.size9 + uni2016.size10 + uni2016.size11 + uni2016.size12 + uni2016.size13 + uni2016.size14 + uni2016.size15 + + uni2140 + + uni2140 + uni2140.display + + uni220F + + uni220F + uni220F.display + + uni2210 + + uni2210 + uni2210.display + + uni2211 + + uni2211 + uni2211.display + + uni221A + + uni221A + uni221A.size1 + uni221A.size2 + uni221A.size3 + uni221A.size4 + uni221A.size5 + uni221A.size6 + uni221A.size7 + uni221A.size8 + uni221A.size9 + uni221A.size10 + uni221A.size11 + uni221A.size12 + uni221A.size13 + uni221A.size14 + uni221A.size15 + + uni221B + + uni221B + uni221B.size1 + uni221B.size2 + uni221B.size3 + uni221B.size4 + uni221B.size5 + uni221B.size6 + uni221B.size7 + uni221B.size8 + uni221B.size9 + uni221B.size10 + uni221B.size11 + uni221B.size12 + uni221B.size13 + uni221B.size14 + uni221B.size15 + + uni221C + + uni221C + uni221C.size1 + uni221C.size2 + uni221C.size3 + uni221C.size4 + uni221C.size5 + uni221C.size6 + uni221C.size7 + uni221C.size8 + uni221C.size9 + uni221C.size10 + uni221C.size11 + uni221C.size12 + uni221C.size13 + uni221C.size14 + uni221C.size15 + + uni222B + + uni222B + uni222B.display + + uni222B.up + + uni222B.up + uni222B.display.up + + uni222C + + uni222C + uni222C.display + + uni222C.up + + uni222C.up + uni222C.display.up + + uni222D + + uni222D + uni222D.display + + uni222D.up + + uni222D.up + uni222D.display.up + + uni222E + + uni222E + uni222E.display + + uni222E.up + + uni222E.up + uni222E.display.up + + uni222F + + uni222F + uni222F.display + + uni222F.up + + uni222F.up + uni222F.display.up + + uni2230 + + uni2230 + uni2230.display + + uni2230.up + + uni2230.up + uni2230.display.up + + uni2308 + + uni2308 + uni2308.size1 + uni2308.size2 + uni2308.size3 + uni2308.size4 + uni2308.size5 + uni2308.size6 + uni2308.size7 + uni2308.size8 + uni2308.size9 + uni2308.size10 + uni2308.size11 + uni2308.size12 + uni2308.size13 + uni2308.size14 + uni2308.size15 + + uni2309 + + uni2309 + uni2309.size1 + uni2309.size2 + uni2309.size3 + uni2309.size4 + uni2309.size5 + uni2309.size6 + uni2309.size7 + uni2309.size8 + uni2309.size9 + uni2309.size10 + uni2309.size11 + uni2309.size12 + uni2309.size13 + uni2309.size14 + uni2309.size15 + + uni230A + + uni230A + uni230A.size1 + uni230A.size2 + uni230A.size3 + uni230A.size4 + uni230A.size5 + uni230A.size6 + uni230A.size7 + uni230A.size8 + uni230A.size9 + uni230A.size10 + uni230A.size11 + uni230A.size12 + uni230A.size13 + uni230A.size14 + uni230A.size15 + + uni230B + + uni230B + uni230B.size1 + uni230B.size2 + uni230B.size3 + uni230B.size4 + uni230B.size5 + uni230B.size6 + uni230B.size7 + uni230B.size8 + uni230B.size9 + uni230B.size10 + uni230B.size11 + uni230B.size12 + uni230B.size13 + uni230B.size14 + uni230B.size15 + + uni27E8 + + uni27E8 + uni27E8.size1 + uni27E8.size2 + uni27E8.size3 + uni27E8.size4 + uni27E8.size5 + uni27E8.size6 + uni27E8.size7 + uni27E8.size8 + uni27E8.size9 + uni27E8.size10 + uni27E8.size11 + uni27E8.size12 + uni27E8.size13 + uni27E8.size14 + uni27E8.size15 + + uni27E9 + + uni27E9 + uni27E9.size1 + uni27E9.size2 + uni27E9.size3 + uni27E9.size4 + uni27E9.size5 + uni27E9.size6 + uni27E9.size7 + uni27E9.size8 + uni27E9.size9 + uni27E9.size10 + uni27E9.size11 + uni27E9.size12 + uni27E9.size13 + uni27E9.size14 + uni27E9.size15 + + uni27EA + + uni27EA + uni27EA.size1 + uni27EA.size2 + uni27EA.size3 + uni27EA.size4 + uni27EA.size5 + uni27EA.size6 + uni27EA.size7 + uni27EA.size8 + uni27EA.size9 + uni27EA.size10 + uni27EA.size11 + uni27EA.size12 + uni27EA.size13 + uni27EA.size14 + uni27EA.size15 + + uni27EB + + uni27EB + uni27EB.size1 + uni27EB.size2 + uni27EB.size3 + uni27EB.size4 + uni27EB.size5 + uni27EB.size6 + uni27EB.size7 + uni27EB.size8 + uni27EB.size9 + uni27EB.size10 + uni27EB.size11 + uni27EB.size12 + uni27EB.size13 + uni27EB.size14 + uni27EB.size15 + + uni27EE + + uni27EE + uni27EE.size1 + uni27EE.size2 + uni27EE.size3 + uni27EE.size4 + uni27EE.size5 + uni27EE.size6 + uni27EE.size7 + uni27EE.size8 + uni27EE.size9 + uni27EE.size10 + uni27EE.size11 + uni27EE.size12 + uni27EE.size13 + uni27EE.size14 + uni27EE.size15 + + uni27EF + + uni27EF + uni27EF.size1 + uni27EF.size2 + uni27EF.size3 + uni27EF.size4 + uni27EF.size5 + uni27EF.size6 + uni27EF.size7 + uni27EF.size8 + uni27EF.size9 + uni27EF.size10 + uni27EF.size11 + uni27EF.size12 + uni27EF.size13 + uni27EF.size14 + uni27EF.size15 + + uni2980 + + uni2980 + uni2980.size1 + uni2980.size2 + uni2980.size3 + uni2980.size4 + uni2980.size5 + uni2980.size6 + uni2980.size7 + uni2980.size8 + uni2980.size9 + uni2980.size10 + uni2980.size11 + uni2980.size12 + uni2980.size13 + uni2980.size14 + uni2980.size15 + + uni2A0C + + uni2A0C + uni2A0C.display + + uni2A0C.up + + uni2A0C.up + uni2A0C.display.up + + + version + 1.3 + + diff --git a/third-party/SwiftMath/Sources/mathFonts.bundle/GUST-FONT-LICENSE.txt b/third-party/SwiftMath/Sources/mathFonts.bundle/GUST-FONT-LICENSE.txt new file mode 100755 index 0000000000..60b55002ee --- /dev/null +++ b/third-party/SwiftMath/Sources/mathFonts.bundle/GUST-FONT-LICENSE.txt @@ -0,0 +1,30 @@ +% This is a preliminary version (2006-09-30), barring acceptance from +% the LaTeX Project Team and other feedback, of the GUST Font License. +% (GUST is the Polish TeX Users Group, http://www.gust.org.pl) +% +% For the most recent version of this license see +% http://www.gust.org.pl/fonts/licenses/GUST-FONT-LICENSE.txt +% or +% http://tug.org/fonts/licenses/GUST-FONT-LICENSE.txt +% +% This work may be distributed and/or modified under the conditions +% of the LaTeX Project Public License, either version 1.3c of this +% license or (at your option) any later version. +% +% Please also observe the following clause: +% 1) it is requested, but not legally required, that derived works be +% distributed only after changing the names of the fonts comprising this +% work and given in an accompanying "manifest", and that the +% files comprising the Work, as listed in the manifest, also be given +% new names. Any exceptions to this request are also given in the +% manifest. +% +% We recommend the manifest be given in a separate file named +% MANIFEST-.txt, where is some unique identification +% of the font family. If a separate "readme" file accompanies the Work, +% we recommend a name of the form README-.txt. +% +% The latest version of the LaTeX Project Public License is in +% http://www.latex-project.org/lppl.txt and version 1.3c or later +% is part of all distributions of LaTeX version 2006/05/20 or later. + diff --git a/third-party/SwiftMath/Sources/mathFonts.bundle/Garamond-Math.otf b/third-party/SwiftMath/Sources/mathFonts.bundle/Garamond-Math.otf new file mode 100755 index 0000000000000000000000000000000000000000..9794e47f005713bb50b98fa00b8c2096c1f61bc8 GIT binary patch literal 823988 zcmeFad0Z1$_dh;KAng0TCv0JdOeTb|@5m;*iVGMZKqLz!Vc!H~lN|&EL_|bHYpu1` zT5DTtTOVs}Ypu0zRcfuZR;{(xTC4m{=BoAcyuP2;>-YWt%hUIqGk5OXbM853&Y62- z@}y*DreONmdW?pxjf#zBc#0>3G0gf`Ooxb$jm=E%-w{)W>69$NFw8bCIwqF3)ZzrD zli~;GcwA~q#`WztPh&bFxQD76mys1&+4cJdt8bGdGM6lLq<3LDM^iEETtP~P zFTU!^yOS73fpctazC=(uOIc!$Vd@`Zn3;C5P*8wZedZ0bOJbGXjH zC>W;k6Nbfw)=lIZ1V6-dXg@|mn)6hNB z7?plm8r1uSo`-nOM`ZGw4jIr-k8j*hinEW|U z!St{b&v`1Qf!%n{(=azm*mGVD)1z#7&Z}c4ly{%=bZGzOIj@H$Q3s#%`j|D%3?hS~ zrUlYU0f?ty*4UosJQbqn+;g4=M!55wSHr9+#m{+l%#||uoTo$k7teV;Y%}Gr=e#~f zP_JT9m<;4pV`5B*6=F)5u^Y6x1H~~vjEx0g-Xw>^k%47n<(L4IVhXGn`b)7QXj=)q z07hYuR|E20-34_+98TyP&q(C4q5<;CBvB##A9&+xj-V57I-HMlyI63$`ygC zV)70wU075u7RWIymb_C*QaSVxg0eW~0~2Lnfq?&A0=mutne0~#g2l?D%2=7aNXWo_ z{1}0Z|Dgw*bG+H)^!{&@Uj}N)!NMX^S>y+m^}R`dsE!;^6AoXOB4p8;Y zz~ZqapeYbfDqp`ka?<}8!3(ba_bl1q1{JW(Vv&NOvMVD)R;a8L$b}4O5R3AKQiZU9 zQ7$bI${EUHAtNI`iIGw&l%mc_sDl^dg4G2Uc+$GFN^ zVEn}RjY(r_Fin`|Oa{}L>BeL;`OI);JTsA*%FJZuFdH4M9hW)Ycfy?1oOGNFovfT3 zoSd9Ioc1~$bUNhpmD7UrqDzO%w9AakK9>V7hg^=j9CJD4a^B?^mwT>sS1VTs*Id^I zmM$xUwVYMNYGh5bK4N{(y3M-BdcazA*KmL6LHE$|(Dg9#@bw7uka(1ORCv^QtoPXH z(eLrT$LF3Jo_e0vo@`H!XRKGFkEM@`kGqeLPmmwYPsh&!&&5BOW6wp+#m}Y9Wy~#~ z%bqKl>z&&@w|I?u&Ftq7{(S!l{n_H8#-hQZ%_3tld@*NHu=sRw5iG3-k+hAnk7@}P z{gnD04SQ)(ujdvWpv}wRLiIa(9|= zdW*E^W#_eE(QRPS-7assyzTOy%ZDzXx_sgClgk}fb+D+dYbID!o3v;ltAe!XcdVaS zcUix)9=g-PqSz}IT?ZCbcvO4Td$fA=c)afMiKm*U?sJRAc&!DCI{LVQMFah)ewu#f zcpAQc&UG&Ge^|5!Ec)ac<(eUBQ4B0fS=3&%UUXOtePPkXKNf#jJhu4OV)7#XY{#=r z&*aZapUIx(JX`&2`LkuuQlF`+H1_oN(;uHMJpIqpPp{klVE%*Y4<%V}+9k@x#fwibKDqel;=_yIUHtmu#KqBzT^GwQDlg_= zNI3uI`T6s6=V#7uKKJ#xFV1~@w(D$Q&Nn$9=X{X!PR^m6w{i~TY|m-RDa>m+2ADYr4v0|LY&chqCm4z4-qw{I><1FlWjDyxFj@ zV9bLugn44#lueMh{V2omwl{*|lu^u|vY9f51yaT-6PT`Q0KH5!48=xu@*I$oA$MR{ z13>jcxDE33G*AK1eE@i$rR2jUO90$Q5d!5QP((mK1)PBPbwIxZTmfE;$^s3fQs8Za zW`ICx1ZsppSr60+fzkxj6@k(W6zU1hAMR}d8h}9Q1saAx=>wXK0B^h)Z2&L`I;+MT z0&IeNRc*rvU?q$;f&liyXrl<22hhz3U_*>Hh5**YXyXX*wt>+m5WvD1Z3_U_5nyYK zwiN+vj?tzNpmt-lZ3y58j0Uz;0p43M+6)5t2BYmjz+j%VS-?)vS*6Py0u*YDwhJ&1 z?J8aN15N_3l79w)auDb_z_-x;HqhSy_kn*0=pTTGz`u)O_MngbW8mLIu4aJmsph~N zB2ZzC!!QO|L%R!5TYx?A@ZP{+033mbc`?98Do_caFn@+B4!A)1fFR&uy~GGXphf_V zMxaIlO-G|x(euzfS;g!HBeY*F~BZVki!HwFloTUn=w-zpaHxXs1^WTTBtIhW&p4awFamq z0On7v0}3`^Is@Md6l}nB1HJ<Io~L+t{}0e~&25KGKpKsfN=J0{GH84o1|Spq>;wvPVCDe73+P%vBk*7gWw9RA1PVH{ZUYatW!(j+bWQ;Z_F_E%9_+~i8?nF!>LA-4=HadZJj9SY zw5y=L7E`4=%mc2e3xI+xR8TJl3c9PHE&^(VpuP?$%trSCa(YZ7P&c$6Zj zmjP7(U~cMipw$3)hScHQqaLsx_$r|A{CI2xz7A*)pda{Vpsxeo2fhvHCxFj^AH^_F zh+j|DT&946j-GnJLyUOBbD)AcJUgCj1ofRj!PY9M&jF1A!~(wymMAcPFO|)AW0(*4 zTLtycfPyc5T!4pI@o@vV1OFvZ@T&^yXMhF*f`I=T!~CcKh$;1NfNBDCfd3Y#Iluz= zi;(Km0J*?J?Bn|Z9{>;jn{x$#uIhgS1;5Tk!PXHSXgmTP#+!qCRiJ}!=D?RK(6xa= z9H~GDd2`tabg;)<2?8DLG6(jY>xDl0Kw+LL&<%mYGc&gcyb*?7qX1wIbkO%2T)Sol zJlNuA&`|}tJ%;@Weo%q#fMIYe_5^gKGcb5lMxe7WY!Sv;1i#S1W{aTTq5<#_D~sTh zMRFQ6I#n2!b@s2;!+_zwKx0W@8f8Ee z0IARpJ7(w7G0L|Pvl`VvcLC->F3j=U-GDu?^>-R5tfK)KJqqYv5*U32P?!qq zA%W4C0zC|P7j!!d6l@5<=&E_V2RI7t=YYOX0;7YkzWo5O0PW|2{s6cR{S`pL2jAX+ z_P>GtL;|B%0=-EBqjv-SnFL0!0eXuBruh$0*d+vD^je^|NnrGPpudv9G@k;!1Go!) z8iC#;foVPi3jPLQ^d_L-Zvdvb2=sRn7`++j1Hc~`29F)(+lM4DdK=I`0gs@a3KZf4 zfYCPseT-4gL!4`=0ks9#LHkai5F6(q?zLDz86+?|`1U-L1V#tjoOdLF(ZRRpok(C> z?m(SMV07^Fc^48G9ejJgmY-!{MuF(b?vGr>$TGt3;bz$`H<*aNr0Y%x2`9&^AL z@LKB#uYJy#3+4(d9XHss_J9?P7pz=-V3nfUyT)Osl)$*K*5F|Q7$4RaL9h-A!9uYx zEF6o#B4MXH8jFEVzc_3O>|Q2diLm{bj4g$Yz*H;^wvjWiOe_obDwo5ab~fyEufkSi zYp@(F7h4PSYsK2I4s0Vfh>c>C*mi6ho55zW9oSB67q%OlhaLOZu-CD@*gotH>`m+~ z>;QHUJA}QB9l_qk-ouW<+M*0LBnz-&DhKvlx4|~#I(W}6$3*Z(+m4OVR$y}4Fs$GT zu?ku!><%VU_Rxe_304a$+d1qowjRsFB(!Ce3|ccS5;ijHs06HEo3IVo2*reAN_C~O zs6JF*swdS8dq-UZ`;fw?Mp6^0q0}%slkP~xu_~%J)sO0rwP0OXGuDlDV!c=&){pgI zo3LS+;Se@~ZNbK|-zn=TrC2FNOp#EeST&`LBBMZrf&a+A#U!x*|KX2sFWL!0pYO~b{0>l9V!5bVN1g?z(CuV`W1Ynj*Fi96SKssp# z+_Dc`a1=X^oy5*!SFj(k+t_{V5rs<81EX0{oG9KDJ|zY=ZC6opDftu;OtpeiPidia zQu-;Quz|aSGDmrna+GqCa*nbQIfSW>hPx1J#AfriM_XsPWWH>T>Ez zs(@Ndl~R?|CTcHr6Lp-rllmt09qRkkkEx$g&rz>Yf2RIM{R_4(>98SeNHe8b(-<@s z&4)(N0%21)nwCb(p$TbXS|zx-hqjrvm9~TSI_(|WQQF6}Q?##X7iiaLH)(fi4{86X z(bTlnjMOaE9MoLZywwP`Ahk%fc(qiuOZRguKrm48J$Mgr0dfS>Be*mx;=!LGu@r;L&xbndN4hT z9!F20r_eL#E9g1&we&o?h+aaM(#z>J^m_URdOLk1y@x(XAER%h&(U9}AEduWKTiLg zevW>XevAHCLrcR-!(AgpBTYk~QKqp$V^m|i#$JtgG>&V0t+Al-tHvWubxjjZTTK^D zUroMdm}ZP-mZng%T(ebkOmna1QO(nu*EAn!KGo9DGSsrta@6wF;%bFyrD)}9$+Q}^ zhP39i4r!gxx~O$W>yb7^TSwbW+ew?P9i$zjovxj$U94TEU8~)y-KRaKJ)^x>`-t{Q z?X%ifw13flr2SNfrlYH4rsJUFuH&o2)d|*#(n-)s(^;XDt5c{W(NXHu>NM+g>h$Z3 z>TJ`Q(>bW~p3ZTd&vm}mxuA1R=Z?-FI!|;pbq#dQb?tPWbv<=)UA}I(ZnW+a-4xwr zx@&X`bW3#Qy4AYtb=!4&b%%Ag=+5Zw*4?lBj_wD#pX#30{YLka?hm@Rbbr%*r29-y zT~AlfM9*4}spqMO>+$u%^%C^b^j7HQ>J{oq^ptwFdM$bz^#=4d>uuGW*Ly?nkly=x zpX!~~yP$VX@3!9WdXM!neGPqmeKUPqeJ6bneU5&heuVxK{S^IW`m6Nw^hNrm`jz?( z`mOri`a}BT`qTQm^!Mq%t$$SiWBpV5U+Z7czovgv|E~T+{eKK-2HFNj29^d62CfF) z282P7L8L*vL8`%WgB$~)f!IJ{P-DiuyvcV05 zy9N&p{xPH(Y8x6ES{gbSx*B>L5{5yBk%sYxsfNo9a}0%sV#6xKM#DD49>YzB6NcLj z=MCR5JY@L3;U|Wl8(uVAF#Or@p5dQ{PmR=!bc~FRtc(~&EF&Kyu2Ha2lu?3Fn$ZfQ zT%$rGiILK%)~MO2)2QEQi_uP_14bVhoih5`=z`HTqnk!|jUF2PV@xyFHa0T0GTX#tP#a<0j({<38gN<4NNk#(Rw4G(K$nq45dhFO1I_ zUpBsO{EP8@=INs)=vq}-&=q}8O?WY}bj z$&AT9lebMiHaTT--sGyuEt9(@4^93trI~7*8k<^~I+=Qz2AGDJ#+W9VW|-!gicCvQ zD@_|rTTOdShfT*#cbM)mebe-?>4&B#OusNaXL{N6y6G>b_f4OfshjDWnVH#|vCMqT zxMsm-QDzBdX=W?Ta?J|OBxXvpTC--ePO|~CEoL)jyUh-mePH&f*=e(H%r2Q-H@j>0 z(Ci;`nz^>Qk-4S0gSo4@w>e=RWFBcAZ=Pzt+&srzXf8HanAey$nRl3PGT&~#$NWw6 z_su^yKWl!`e8K!@^Lyrhnm@Hrv(T|Hwy?5bSgqNEb=Tw7Nr)I77Z4y z7Tp#@7ULGv7P~ACTD)g*+~PBfGZx=jT($Vg;*P~17EdgxmRgpEmKK)wmM)fFmK@7K z%LvOQmMNCYEZ0~TSe97IEvqfpTee&FS`J%ov7E8oZMom_9m@|aKeaq<`Hkfz%O5On zS^j4E$nu$$x|Ob#iIue#)5^`t*UH~2#46e<(JI|4+iI;sy;y+gdwWdswrr1FR#g6Rp#& zv#r-!7gm$}5S)a82%KE(Z_trP8f3<#K{kILp zM$^W?#@xov#@WWx2Djncgxkc~EVaq9S#6VVv(Bc>rpl(#rp>0uW|Pf?&32o4n>TC@ z*}QM_iOuIWXKgOpEZF>PbI;~ao2RyFwmP;@NNpLmEL$I2u5GYwlx>1-n(YePT-!oh ziLKJM*0$NU)3)Ds)OM@wtnF*I2W;Q9J!bnK+b?auwY_5dqwQ_m-)$e;VRjmJ`gUe^ zwsuZ-9(HWI0J|`|Si5AqOuJQfd3GYZQoBmK2D?_fZo477al2`|U3UBI-nKhx_p#k6 zyRYpo*j=-`X?NG|q1`|BG<$7(BYR7G2YXk0Z+pT%$Uf3O-agfSxqXhk&|Yk>u&=Ri zvhT3(vmddawBKRB$No+G!}cHApRoVJ{+#_~`|I|<*x$GR%YM;;?x5#j>R{vG=-}?) z=fHCab%=3Da>#I4=^$_@c91z#IMh09aOiRvblB{$)nS*zK8Lp*jyinoaLVCphYJqZ z9Bw+?b$ICT4}-?gW*9Ln8TJeph9?7O@EPHZIL1;&7GpIdpCMr=8MTaNMkk}6G0ND= zn1zpB4=~&}qzRo70@r>+o^#drrrlK65(b^qtdHr=OheIQ`-D#F^@>iL>0f+IhWmyK}Geu=5t@8Ry;3`<>r${=oTD=hM#LIA3!9 z!TFZ+Z_baLpSh^J=(?D=Si3M?++2KJ{9Qs^qFoYQ(p|D$*18nANL|WZ>Reh}Ho6SB zY<8J)+3B*^*ZE+4s^bomNCj=t}z>uTa^?aFj@bMssV0 zbuD+Tb8T_m=sMuK*>%cwr|VwVw_K07e&l-6^()u&uHU=faQ)Twf$QHa3QLn^z%pmq zv7A|+ES$w>g|p&VOIca0)vSEhI#wC03O?j+WA(5$u_jpCS@WznSch2evp!*c&N|Dw z$Xa0i3?F^}$$ILh=BDFj>}KW0aAUdoxN+Tr-J;wQ+|t}uxaGPPx=GxWZnbXBZk=xZ zZli8n-Dcfhb35SnuG=xU6K<#7&bnQ2yXtns?Y7%}w?}SI-D&Px?gs8=?l$gBcb2=i zJI9^x9_Ak7p6H(DzTAC{d%nBKUFKfyUhCfE-tOMxKIA^;KIJ~^zQ=vP`yuzE?#JCv zx_{|@&i#`6g8NPPJMItMAGh*y96_PdrX}obfpCamC}h$1RV09uGa9 zcv8p@^i4diJRLk;JU!uqeV%8CXOw5WXNqT*=PFNuXOXAGQ{h?d+34Bo+2uLlIqEs- zIpaC+xzF>U=Mm3io+ms{d!F^Y;Ca>ahUab1`<{W8n1jWk(bP?+^g2B$*bL~$7{%I%xlVP)@zT~ey>AbN4<`Fo%H(B z>zvmmuLZB0UU$46cs=%7^j7!Q@iy|d@V4`I@^<(3_2zm9c}IB1c_({kcxQX(dJDZv zyvw{Rz3aVOygR-7yobFfyr;eAy!Uz^@ILJQf%hlgr@YU2pZC7veck((_dV~2-cNie zJ{mrHJ|;d^J`V6t89d=%n(%x=e4>2feNud~d{+4ge2RP|J_?^|pGKcnpDv#PpHZJl zpBbNdpM5?DeUA7X^Eu&j+UKm#1)r-vH+*jU-1m9p^VFB-tL1CpYvya?%k*XWdi!#G z`MzPkF}{huX}-&S*ZAi9ihO0h<-WDPO}_2EJ-$P}W4=?qv%Y(L_xm35J?eYh_oVNa zzUO=|`7Ze0^u6Qz!1uB5qMtha6AL3h3qLzQCqH*TUq7y2kY9vfoL{nEhF`W{uAk7a z#IMY+(y!jH#jn$^&u`do!f)Dd&Tp^Z0l&k3ANYOZcgpXK-+8|)e%JkO`Q7t-==X$8 zVQaAU*d}Z%wgcOR?a5}ddF&8&6g!@s!p>r^Vhh+sYzbSzu4Xr~TiIRg0rn_+l0Czo zXYXSlWFKK4W1nE3W}jtWU|(h5VBconXFp;;#c8+}Zh)KNHaHV!;odk0=i^~`44w%8 zoMAb>2G7SuxC}4HYw;$$9q+-1@G*P}pT+m!`|(5gQT#Z568{oEhhM@M@SFG@`~m(L zU*xEBbT~#F3yvMfiQ~@k<#0JcoCr=FCz+GM$>!v8gq#vi8K;s{&uQUwa{4&KoC(e} zXO6R%bAWT0^8x1*&MD3r&Uwxi&UMZ$&OOdU&J%({Xb^gY31LMz5H5r#!6tY_2oXiZ z6DdR%v5F87MTCS<5YpXNz4%Q#6IF6afCQVoFGmUXNe2MRpJJ5o48Lr zBA#+-TrI8v*Nkh!WpY_uZ!U++=Z0}(xQW~}?sD!LZa!DUm2u0twcI9dJGX~B#2w>K zac8-Excj+>xJS9ixhJ__a?f!uaTmBZxp%k^xR1Gu{_6fZ{zm>5{&xOO{_g(1{#^ec z{|Ns$|78CR|7`zUf1!Vgf0=)!f4zT;f2V(+|FHjr|Fr*{|6czC{)hcP@c+dBl>Zt3 z^Zr--ulwKfzvutZ{|S%6)8OgxOn6p22c8ShlgH-qcp_m&IGf6Yz?75}txr z&1>Yf^165fyiwjHZ-zI|+s8Y|JHk80JHb26JIlMkyUM%4yUn}Ld&GMhKnu_cFbFUU zunAxWumZdTI05{Cuz;9=#DKJb0ha<60&WJ}33w3jIAD>l&e!1^@h$jvd?&s;-_A>%NMKZ8d|*moR^X~YL10m!Bv27p9oQJy8rT&$ z5I7n*88{O-AGj~@VBnF!V}U0EPY0e2ybyRb@J8V6!25xZ0-pxag0zARg3N+!f|x<9 zAnzbf5I-m^C?+T|C@pAt(3+t9AW@Jks641Ps41vDs3&MBXe?+dXf|k1(Egx9K}Um* z2b~Q1GU!~;rJ#kNn?ZMi9t1rOS`1bX)(JKWwg|Qhb_#Y6_6_C+2L(q2#|0+`X9Q;l z=LQRdOM=USD}(EUTY@`-`+|pqCxWMg=YsbJ9|%4i{6X+1!KZ@H1fLJS5_~=QR`9*x zhrv%mC?OgldLbquRv``{E+L*F>=0f^NJvyjd`L=2R>-OlK}b=EBt#KX9nu)m8qyUq z5HcDv88QV<9I(PKTTgxe#(S{P*JEXv^=ynv?;Vbv?p{ZbS!i#bT;&j&?BKILeGX? z4ZR)uSD1R3VVF%AD~uBs9+n)oA}l{l7FHY99ySy<6}BhrP}uRXFT*Z}-3t3NoEB~v zZWrzm&I^wYPYcfpFA1*-Zw(&|p9+61{BZcE;b+4a!taGYjnIj(ieN=>BcdYGB61@n z5w#JW5u*{a5eFiUMSK}?CE|9(-;r98mXWMT|Hzog%*gymd1O;$f8ybwzKaac= z`Ag*ED9tE~C{`3NDlTeyR8drARD0BD)Lhh|s1s3Vqpn8Xj(QYLi#CY1iDpG}qQj$; zqgO^3MJuD5qI;t!qIX3fjQ%M4%jnC|x1#@yp~V=+*u{9n@M20^*|Lmd0hr6~xKnYT{bs`s2pqcEr6N_fFhL zai7P18+R@4m$*OTo-NT_V!Xt5iR%*flHetAOVXFDSyH@2v7}*1=aNlJrk2bvIk4pD zk`qhLEV;Dg#*%wW9>=T28^l}3yTtp&2gS$6r^T<1FN&AP*TuKR_s5UN?}&dr{+;-b z;y;f+AOA!Ao%p{JXbJiWRte4tz6pT|F$pON*$Mdxl7z~Hri8A9;e@G#-3bR1K1?{3 z@NL3E!mkOB5~+!LiI$0uiC&5RiQ$O}iJ6HxiN%TX#Ja?`#Qwzb#M#6*5|1Q)ns_Gh za^lUz-xHrEX(pK@*(I@(*hxW2F-a*&*-80HlBBAnmZaXKv7{YI`;y*G`XuSAq)SOZ zCH|>f#mm-PbPnpd^P!( zFm-smL6I9>C!VxFE9OR z>2FK_PEkwIPq9pKOz}$bPl-rLN?D$gmm*22N@+>yO&Lqsk+Lu4aLVzN(<$du7E*4f zJWN?k)k-x@bx8F{<)((GCZ;Y+6{Lz&D^r_OyHiI}x25h*eJl0-)c>S@oq9R-X6o;$ zPt!EhOw#Pr+|!7(u(X7+pyJ?@KeU)}8?WeT+Y5$~a zq#LK(rMso$>A~r->1pY!(~HvO>GkOy=|kyT)92F&K%3!nRy`d!_3o}7c*~W{*n1COEb$j%Qnk3%P%W1 zD>`dw){3mWEOAyvR#R42)^OHT*8Z#`S)XKmnROxSde)t+N6RS7^p;sJb6V!JjK3^; zS<14!W#!8{mQ5^sec7>PXO=B2yT6>W+-Ny-Ie&TDa?$dp z7_DHgV6TW+k-j2-g>psfijfs_E8baga>d0Jw^#g=t(R?|?VBB*otB-Kt;pVxJ)FHW z`%v~r*{8F=%f6m{H~aBQwUq`dtyj9P#8-x{Ojx;WW!_5Z%9@pJD+gC@UAcSZ+bcg> z`NhhMD}P$~`^smlv{#w0a$Ln*m9$E*s$x~ws%@(duKH}%)m0By>#Sz3=B-X%oxi$z zb>HgQ)kjvJS$%W$(={e*+}DJy$y!sgrfJRSn!Rg|uQ|Ks`kDthv>cNhryNdBR8B@t zK~8y2Th3_CuAIX;pXFT2`8DThu70jVu3v6MZhCHht}?eZcO-W%_nq96x#w~ha_{6m zUaP*=Xsz8^_qE)$k!w@du3jrzTd}rfZU5TIwY%3ITKnAq!M=ib3qC3Ms^C(=PX+f2{t;>jjfHkX zHz7wDB8(HJ30Db)LYc5y*dpu^jtZxRdxUQbj|o2)o)`Wgyd(UpkXEQ)XjSN3=v&Ay zj4DhnTwW+BEGaB6Y%J_794eeF+*Np>@cqJ*h2IojE&QeMVG&lOQ)FJmEb=Vk7KIhX z7iAQ!DJm)|E2=GOE$S;8FPbfSqv%M{r$uLqE*IS_`n~9Bv1YMJv0X8%m|YxH98;W9 zoL!t>EGe!mZYu6B9xdKpytnwB;^W0%6kjO*vG`u`-y(I9fyheaB=Q#VL=mDyQI;rI zBoZk^4WdrbCef5=x9FhgL(wVGx1t5nucAlmDC>0AnXPkJ=e~}!E@WNYy0mqx)(O{@ zuB%OIRl2Ed;q@YAv zQdQDi(p@rGGFGy+WJk$-$-a`eOWrT}xa3sHnUe2Hu9RFa`K9FdlE-3-SVOEYHWHhO zEycEC2eFgbRqP@57PG~KI6xdE4iiU;W5w~}WO1rEQ@mWfN}MCk6AQ&6u~=LxR){Ob zHR1+wleksfA?_CUiHF1^;&Jh$cv`$eyi2@Cyife5_-*lF@lo-I;*Z5A#HYkxh`$z} z6JHQt7GD!z7vB{BBEBoWFMcTgOZ<;`Q9_f@CE5}_iIK!qVkxnaI7l2Nt`c{Nx5Q6E zNO+PUNvI@J5+jM1BuP>w8It9am699@e1%C;ED=j&5{0BfQX^@SbV~XqnC{Quxk_ zR4T2I)=68W8>NHNap{b7PWqbk4e3GYVd?wQ6Vfx%bJB~_tI`|NyVAd;i!u$FuFP0w zBXf~?$oynnS&%GT7As4ZWyx}6#j-M4t!#s=S2ik}mhG0kB|9oRA^S>pQFdK+NA@Rt zCZ|_wQ|eOcSIR35D~&B(TDrQlq_n(reQ8JOKABJ?r9YM4 zEqzqFSf*KKSY}nmEb}PC%Yw?H%96@5%hr?$%cNx$WsPO+W&LHF%cjfb%ib(|x9oV? zsj_d%E|=XXyHoaO*)zF@+(2$AXUN^ZG zj3}lQbBZ?BR*6=fAQ70nf06+;zUDt1)ttvFcme#NI1Usjy2xK{CV#r=xM zmDEb@N|Q>PO6N+iN^WIHWo+fr%H@^0mBp2%mDQC^l^ZJuD<>*vDqpL7tMX{&CzW4R zep`99@@D04m48)HssywTRs^F@as^qF=RXJ5fRkEt8s`XW!RRdMyRokof zR2`^#uj=Ef(^coHzOVYJ>R#2OYOGqb+Nj#9+OgWBno}KA9bKJNomIW2y0BVWU0K~& z-BI0NJytzky}SC&>Lb<1t3R*)rus_tjq1DAe^xKnXw(?iSk^FW+-vZfz?!I<#G1^S z)iuHzNlisfLrr^4U(M#4Z8h^X`)l5<`Kabp&DomEH9ywesd-rQtd?GDP-{`ksCBDl z*Yay4YZGcSYFE`3)QW4%YwK&XSH9~UaGxb`)lnVwNLBR z>-6i)>m2G>b$)dLbrE&(b?J30>+XdbLb**(hbt83K>*nhA)xA^qVcp5PGj$j1 zeyF=$_n_{ddbN7Jdb4`_de?g2dR~2a{gV2$`t16=`gQe+`r7&p_1*Qu^^^5G>tC-w zRR2N!f9k)gzfiwW|4aSv^-mgT4Z01c4R#GK4L%M24Pgy&4XF()8UziZ26;nGLrX(f z!={EU4YLh<8{Teszu`o~mkr-FTx+=1aKGX2Mrxx@qe-J}qjRHoBeyZMF}5+Kae3p~ z#^T1Z#_GoA#*K|bjT4PK8eeNX*m$(@)5b3v&o^Fe{JHVB#>eX^>$TS#ueVw6wBBny zu|8yd%=)G4m#xoTU$nk-ebxG=^_}Yn*N?BCS-)rfTkGFj|H=B(>%U$9{ra2h@2&r< z32V}7GHSAJa%}Q!;xq*}MK>ikWi{nA6*kG5Dx20fbu+VvAMmuzj<@>bn|@k zo6YYwA8$U@{7v)a<{Qm-n*VHm)}qm3&|=xbXmM|0w*w5)C^Xpyv(w=}f0 zwe+=&wrp$J)v~|kaLY$6pS7HAxzzGw%dagDTb^#9Z_wXhvB6=3+XlZ4{0$Ks5;ml7 zShXR4gLp&vhK3Ct8wNIvZJp>1((scqS9d2J9gGgQ4!@3oj_{87jgqpYL4qp72_W1wTKW4dF$V}Hltj$<7sJI-`m z=ve5u)p5V$aVMoytJA2{s*~C2-pTIdcSdx^ccyh_cjk4LbSgXRJKH+@IyZMtckb>y z(D`2HC!Jq(p6|TYd8_mH&LZ6kYQ;KrzpNgJ~^=4>q5Sh}%#WAnzY zjhi-3Zrr(X-^O<~9^3fY#EZQ+_r&+4_pItE=#lhP^fdN#^bGWj_ssOX)^o7u{hkv&U-ew*`Jv}_&mTQcd+EIf zy_UVqUXNZ*Z*Xr+@6z7oy=!|#z4G4L-VMDyy(7I-y}Nq%_rBYEy!Z3obG_g9-t7IY z_i-P!Pp8kc&#uq4&$ln2FQPA@FQadDpRiBbSJ}6|ud{EkZ=!EU-`>8r`#$LVPv4oo zi+$Joe(ihM_pD!|->~1R-?87bpXd+ikL^$CU(qkp`bMuR-o$=wRGn>R|R@-eAd~a%y8rn28Ikae^c0| zC7aSVt=yEqNxZ3iQ^ThAP5qn3Hf`UuXVY7oj&AyN)0dmR+qAIhmrV~g{WGjStUqiq z%ouhb#)pH3qlc4+mks9*7Y~;W*9^A|cMlH_ZylZ+eq;FX@JGX^hQArUGW^ruIHRU-u>l97s$#*vPZfsyf%nUU8<4vxG(a$@AGkqaX~ zjNBgiW8~>5ebivoa+EphG0GVY9*r4YI=Xyx?Wkx}K3Y4vVYFv-WOQnD*XaJy!=uMW zPmZ1&T^PMP`ed{AW~GN;xI6J^ z3${gTi}4nlEzVoKw{W)vZ;9HHv?X)P>Mi+O#9PX@)Ng6uGO%T0%j}kYTMlnIzUB0m z^II0S+}`r%mc>b}N#jY|N!BE1GGubeWcuWq$->Ff$=b>G$-&93le;DlOnxx=`Q&$# zHzw~-KHI9j)ncpDR==&mTjRH8ZOz*%-CDb~ee0&J+qUlAdSvVAt>10EvGu{$r&C%} z=2K2nep5kHOQx1h38yNiI;MuFwomPwdT;9F)VEXDr+%Ayx=nkV#Wv?{>}{dj61T0` zCfp|9*0`;E+sL+U+xBdGXWNNw=e8|uySwe#wC=RkwDUB3I&^yJboO-Nv|_qtdT@Hj z^uFo$rcX|PJAHlnx9O+bwYOVrcizt49=bho`-<&F+m+j!whwNf+Wy-1!`naIes=q{ z?RU2SJ)<#WI>VgtnF*R%GP7)^Xhu2HG}Aw`eP-Xxdow3zzMZ)~^V`hR9ojoAb~x`~ z?+D$IxMRf*;STwZ#vR=|#&+!7abU-XJ5KMoxZ~!IKV~VjCbO(r|JkV7tXa`)#ca!L z|Lo-K?%6}LAJ3kd{eJfL>|Z<8cN*_>-08bBYG>-sH9ObstlYU_=fKXbJNN8-XXht7 zzutLu=dU{#=XB?+;7gdCx$wE5+OEU9KHYV8*R@@DcKtoCF>gB0ocEaznqM-X zHJ>*xo3ESioFAE=nSW#c==^8%=jVT%zd!$Mx6W?+-JZJxcE{{a-<`W#yt{gL+wP&= z+jhUc`@P+t?fzzu?jEZ>u2JdbQjs5g4unWFNg{DXIEZi&;YUaW`EnWj)B{N(^5nt_ zp@2L_$ckiAVTk~dC_#R?QkYL3qw+=a{BlX5SXh<+FB?@LQws9oi`>fmmt0i700z$| zkJ03@;5jds36upOS)hzTqJ@aWkg|p3G3Mns!k1hOQb&kL3^^L81ybVvRi)@(HjW&r zh&;x<90h)O;JL1G`7((_fb=eUg^g zXT=_B>YF=_;_%RHH>ak=8kWVfo$(L}K!lG-1R{}$L?J?E19m_RI*TO@j|B0NAU+brM}qiB z5FZKRBSCy5h>ryEksv-2#E(rWmdT~C;~|%3sSf4j0Va#H$+2)YITp?)$HLi>s+bij z6zfz9a{NdIIezSat(h;$BfSY>l!y8dvI?PGERqW066sE$=nAPc$Bz`m@goIs{769@ zzeqApUUrQo?-WU4D5bFAMKeyCgoFE&o%4iZStVThSD6-la06M-hTe2q+9VdWP7A+Jj1)0S{r65Tl$tw`7 z5T%MTL`4!oRw?|{g-n`SEJ{^~QY6A6fk0eZEXaeNMXDPMR5uDyry6L4|KNu>lmZc? z$`V0osX$DQCoQiM$s{6G(I^$ki)EzjC|scup%j#tqX9~bMft@d;AJX7WS?j1PNJF>0I8#+p(w?e9N-{AoM-#r}V#slX!il7 zTqn<8x&CteSNgncd!-+e{;!<>*5ifhuMG2|DgNbnqL-Yi-jY)ly8Z-7BuBO(-BfKzD;4)rHq7>wGqOL@LDi0=tGE|J$nGyrvR*LdFBnMZ&us@;{W(V_ zc~ToP(~}(8MruR0ksR6f@-DLd%XH zRStou${~>G;%a!0k}4}z854dPiwh}SRb)i@0x`Uxphh$t9$PAuORD7}L4iahg?vF? zq^AjY(D)oQ>Sd zMs8*M;i@%?2;!uGG%Oprl#N`<_Tv=_iou4(@OrP(kB!{PM($)Ice4FRacn@CO8C@4bt9X!5}Qq0iOuFp%fW53N}&iGr<4m63e=076q|hSfqNp;|Hlx~ zrE($qr7HL}Fw{R*A(U6Z?_s@gF`Ilj!Pz)zIW|t3jE$4_XXB*h*f?o2Hcpz1jguy0 zNRM-u#z1b<`@egQ(j6Exu~cZH5AAyrDRi{Oj-QAO92WB^6ea6 zp^<3v?HtaKX!7kG&X8#G?HtaKX!7kG&d^lJ4Fh-sM^lYJQ;k4VjX+b4KvRuCQ;p!g zR3lFzB!eRY35`JWjX**p(0n71&Lxx44OB}w(J-*?-(?1lzZ7I_p(v$Wyhd- zqZG_WDVU8?FdL;{HcG*4l!DnP1+!5KWk-S)B z=U6nqSTw&_Wan69=U8OtSY+o|m0wjgQ6N@X4Js@=KT456Tp%he6jq58N>$c>agh*8 zN|n_Lh$^zLzf_PX76`>c33QUml+QVIF+x$EUkp#&^S-2TC|l@aOsQN}P@a#jvHcX~ zu#!?ju2vOpMX9)4L3U%45rwnKnc{4J0cax^DN3L(>0?*~=aoZ%C}mLj1xlG5ij(Ta z00u9W!7N~d4pxYTBB@AO4d=zG%?DVINsGina(tW&V;si|L=~a}ArgucU;zP)iVTAL zi)BTsL17Q+IVXdy4p2lP%vXtkkz`U;1C+++x1hP=(fP2SB2#UQyn2y*kZ@Eka8xef zUv-oEa5%7ZgqIPST$l&DbLCL7R95+SI;a=vV;q$ZoJ0B;=R_(*5)u5MC+dRCj0y>k z3JH!12~MC%6R`FqZ^#vvl|NUUAVA|Hc{zBK90nB|oZ!JaRxYc0r6U<%IDurNx`PvF z+60nKknx2RXu7B-;ansey;k9dfR4TziQ~?Cu%Sdfd(Zc;XstpdZ z2W;*^8J7R67ph%2s$Dp$UARAAb%O+=@p*q0i$+8mqXLGb0*0dkhNA+8qXLGb0*0dk zhNA+8qXLGb0*0dkhNA+8qXLGb0*0dkhNA+8qXLGb0*3RDg~-h-91mctybZxs4y8f) zf>$*NRZkddCY2B1LZrZ6GHQCkqn@Y(ijx53s{rJy05TWg0chp{$XDdH7RW}LklR`~ zPHt-fL7_?RZowI$TGqik&5K8r?~fWJc4hnG&3ULk!aSjS`4hnG&3ULk!aSjSx4hmcjidYVc1P*c@2RV;} zoX0`V;~?j8kn;$%cp%W?fk1hfK#Kj6iWl zpg1E?oDnF_2oz@oiZcSm8G+)AKygN(I3rM;5h%_G6lVmAGXljKf#QrnaYmpxBTy36x3+6qp1`r36Z)1WKg@N~Hu!r36Z)1WKg@N~Hu! zr36Z)1WKg@N~Q1xG%{Y$s)RtPlt8JJK&g~Ksgyvelt8JJK&g~Ksgyvelt8JJKo1as zQYnE_DS=Wcfl?`fQYnE_DS=Wcfl?`fQYnE_DS=Wcfu2SJJ&go<8sY!^fK(nmjl}b( z5v5WBrBVW=QUaw?0;N&{rBVW=QUaw?0;N&{rBVW=QUaw?0;N&{rBVW=QUaw?0 zwE7^>>VrV54+5<|2(AkgZAK&uY|tv-m@SolCDzoZa8mlPJ{ z$*NSd<)Sd6pYJ^tsTGi@_ilgF!B+8om^XM&yF3b3xU) zpz2&ubuOqn7gU|IK0(#FxHxigkLTis%Eb+piyJBzH&iZes9fAoxwxTnaew3@^0|n7 zE+U_c$minzfbWr!og(tNxCe4^59H$F&&9=`i;F)O7k@4;{#;!Axw!aqaq;Kk;?Kp! zpVQR4)+KtgORR}^iKgpf?X@n}Uh85>y)GVR>f&LhE-r?;IK3{OY3iaM>Q$O&)y2|e zUCjULV*IU(@wYC<-?|uo>te*Mi!rt?#@Mh>Y}UaqO0nnbLygV>Y{V%VjQiD zv9d14%DNaU>td{|i?OmU#>%=F9qVFrtc%gHE=I??xVP(KNU4htaZ$iy@^hhLpM(QtDzzsf!_{E;ykshLpM(DC&X}>VgyMf)naupn&f@ z;-yg+14Ug76y2g%x<#*ai(cs#o!TvWrCTh1bc;3XZZY-m7HrZjmUp|wjJroXaP^1> zt{(Bg)gvCbdc*@)k9gqf5%*Y+xW{_L16PlD;OY?_-Xl7^M|60P=aWV9Wi=jtc3_ap5?h$u!kGM2?#HGCq}79Tqr%_Lg^6~ zN*{fA0p8wEDynd|!>|sjo(NW1m>;=xaxof=7Hj9TI$Ch6MQx z5?26J=T4l2>r$|YMH9x+@R6F`$H8YL;Ab@cZ;5<>Zx@RdkdPL!SOGbFoPY$4 zgajEC667>U$buR%D&)w58Zj#5FdC2`qe6o2K!U@2yO?r9A{5a@4LPBRE^5dLMRZX^ zPAH;_8gfDrUDS{his+(-oKQs1N%fpwazKLSLV~S8f&qgBTY&^a3kkLY37QKDwgL&7 z3mk!Kp^zZQ09ByXkYFc3A{wK09^ellr0_sal+oo_&*|2OL^Ms$mOvvyJJBWNgm$7! z$f5Q=@s<%1RNL29MOz?2TOeT}s)Zaz5EAUFzD^23KYSS(a{b-JuaMw*kl=Zc;CYbX zd63|FkYMEd`$&6#zc`^^oX{^$=ocsSixc|A3H@~I!wDExNYF7zFszWEV~~(7@Kt2W z5iRuhS4B-4!2A1a=wE+7E#yHWYSKbpe?MJB{ryA|{rwQEYHtVlg~uu#YjkXDWofE;`of*iFYCI*K;?2>0U=;*CdYAEJ$z+J{&pruM7UewEsX8y)4;J~)V& z+J}c0#MC}KvLL4R!C%0zE{jKMAIJeQwGY&QnA(Sn7%{aEmoQ>#A1+|T)IMCkh^c+J zcmcz;i$`i77F`ij`|Z>|d|U`6)IPkYLrm?%QY&I=AGilGwGZ#>5L5fmH-MpQ@JQ{$ zoq?Fz@1XX9Vcw3I+6Qt%Ozp!{31FDA zQ)}=LmOgh zUvM>yYbe3?Q{wHEcsqr`1tr*i3PTGXvHcWA6g*^}HoDwsq#LOu%b4tvd5;Ld7%qcN*O3a)RGpEGNDKRt7v%wc)=9HK@C1y^EnNwos zl$bdsPELuFQ{v>5I5{OYPKk|EVq;iNz&44EQ{v&2ST`lsO^J0=V%?NjHzn3hiFH%r z+m!e=CB9AJDG*vC)=i0ZQ)1neST`lsO^J0=V%?NjHzn3hiFH$A-IQ22CDu)ebyH&9 zlvp<<)=i0ZQ)1neST`lsO^J0=V%?NjHzn3hiFH$A-IQ22CDu)ebyH&9lvp<<)=i0Z zQ)1neST`lsO^J0=V%?NjHzn3hiFH$A-IQ22CDu)ebyH&9lvp<<)=i0ZQ)1neST`ls zO^J0=V%?NjHzn3hiFH$A-IQ22CDu)ebyH$p*a`~cPpq2~>!!rIDY0%!teX<+ro_4_ zERJG*x>JaIQ&<@V2`nn$k?uQK7DY_=9dU9>oSedvD9Y*XBYsYapHt#z*awG7seNK; zSd&5tv2;o-of1o@#L_9TbV@9Z3sqQ?+9#GyiKSC`u17iYMhZ{$c%=4;u~TAfT*v}B zF?LFfof2cGu?ht%iMLbY?UZ;sCEiYnw^QP6T;zhYh_`Wx3o*rq zcsnKD#^o)PQ~Si*De-nnyqywnr^MSS@pekQof2=S#M>$Hc1paR5^tx(+px_SwoJU8 z5^v*L8A^!#h__SX?UZ;M7tOGg`j>b+CEiYnw^QQnlz2NO-cE_PQ{wHEcsnKDPKmcu z;_Z}pJ0;#uiMLbY?UZ;sBi_!4w=?4HjCeaE-p2Jh`1}b>2=IvU$%wr(V(*ODJA;`4 z%CUblV)BfbJR>I0h{-cz@{E`~BPP#?$uoN1&WO)5;`5C799IURHRAJ(_#77rQG)To zB|<#n^_dZ?XT<6mv3f?Vo)N2O#OfKbdPc0C5vym!>KUKQ$6XTTuwy^#h>^;BmU2b|1;wMjQBqz{?Ca2Gvfb@ z_&+25&xrps;{S~JKO_Fni2pO<|BU!QBmU2b|1;wMjQBqz{?Ca2Gvfb@_&+25&xrps z;{S~JKO_Ff1z@nB_&+25&xrps;{S~JKO_Fni2pO<|BU!QBmU2b|1;wMjQBqz{?Ca2 zGvfb@_&+25&xrps;{S~JKO_Fni2pO<|BU!QBmU2b|1;wMjQBqz{?Ca2Gvfb@_&+25 z&xrps;{S~JKO_Fni2pO<`HXlzBUaCd$unZ_jCeaE#?FYbGvexuxH==2&WNQmV(E-n zIwO|Oh@~@P>5N!9BbLsHr88pbj95A&md=Q!Gh*qCSUMw?&WNQmV(E-nIwO|Odg&@9 zmd=Q!Gh*qCSUMw?&WNQmV(E-nIwO|Oh@~@P>5N!9BbLsHnKNSMjCeRB?#+mAGh*6| zI5s1W&4^tyV%Lm#H6vclh*vY>)r@#GBVNsjS99XkoOm@SUd@SDbK=#Ucr_b_NpS!}DiP>`EG<+unb%@P! z;<21~EGGubiNSJWu$&kyCkD%j!E$1-oER)82E$iN&>ArqzF0y`HV}j1TP2jxl|T%J zuar=N44e~#<-}k)F<4FvmJ@^J#9%owSWXO<6NBZ%T{&@APIqEXcVbR=VorBrPIqEX zcVbR=VorBrPIqEXcOt&P0vqT~#Mf7d$y&M-@!b_l$XdD+bGj3Ax)XDHUdritDW|(K zr@Ip0alu*iyo7JK5K}bhc?n-{p@gDA&rA5G3ndf{dS1%uF2;9WAg6mdr+Yc4=OujY zg>vdadS1eJUML~^>AuDnUML~^>AuG0+iHImuOc|Y^EMozeK^8Z1V>;hIKuN19HD(U zLi=z8`{4-f!x7qtBiIi|XdjNyJ{-Y*I8ys~rS;>d-0?{5<5dTk+Q(}TFtv|YAYf`A z$J2iNd|%d0jk`UW^-H(u;8eOnNbHfT?|q8(?Z5 z;|7@8$G8Ee_AzdNv3*((gkvv!EDS%)IH|SKU^uyeD8=t+(HB5V80Di&a*0V^K4G-X zOlpN~X!bX`O=~GnTkk!tEuD zAH~~POdB?I4~=%;!K0rC1v&Ex{)Pi1H?7MCG5Hk4EfF( zVF71^_nZ+Ha7Osg8DRluL9~P zQ4e2m3k36vCM>kTOrt3+^uU~>DJ?X??4v0ybiq8NDJ`_oTVhb$-*gEO>jK280I?=O ztOyY60mNzmu@*qA1dwzIA-jaIPy;h4vJIt$B6|JKwiT*iR@JOqD1-TxluDQST1U^4 zE*CvFYlf^SOZ!`8X@9FIg-?5fAy|(P*-41ZBt%vcqHqu*8wrt#gvdfdWFR3C4gm`- zA{;_m=n>%%(n6EyVIeJai5?cxLYoK&d~&_%5+HU75UT>jE&*aifY>EKtOgLf1c;RY zk}e@+mk<_eL=Ouq3Pqxag|tv5dRRycWuk{kDqX5KT>`|q0I^GeSQ8+22@vZ6#4Z71 zEr8f1K++|I>=MF4jdTg6g(B$^N()ueC6pG*q)Q-`E_Fi%ap3`CU4YmnK&%N6y99{! z0AiN_u@*q=5+Lak!a|F538jS|=@Lo{P0}Tl7P_QMC@r)}mpb`A#I6(f9DIMGd8c(V zg1IN0E$&S~%*99!J2-k(Q&?6}b4JtHARz+!{ zOR_3T3vI%6m`FEW0>mx>VpV|HB|xkQ5W573)c|6b0I?E4(j|oK62d}_WL1@ zEmTRDP+BOHE`e0Klr>p3Yw~8+?8CfSnm0>xDCKWgLgP(TYohih>S&_0iLxfjo2avi zx|*okR=`3_wNO(n^i&H))k0IXP*p8-RSRX+LR+n=ZQMMmR}L+5@PH+hX0HR{UI)aT z0f>7Y5O)P2?sY)i5rDYY0m)uR$i0q`dmUk+NA@~O3r(`uQCjGdy^hjCo9uNYb8&A1 zVqJh(6(DvA5Gw-2E&*aSfY>EKtOSsB31Oi{x`fg~k8}y8g(m3|N()`mC6pH0q)SM} z!X>2NCSp|}W0wH2B0%gCAXWp2T>`{P07;h+7FwiBC@u6zmrz=0k}jdN&?Q|$X`xNJ zg#0TU0mLo=VpV|HB|xkQ5W573)c|6b0I?E4(j|n27U>d73q8^$lopz#ODHXLNtaMs zXsfmH7ppMBqP4`4Yn1k zs)epuXWYCdoHe5X z8x2l`AaGjaw4KuqPE$@ZPIFE>Iql*Uwg}(`Ws6nWWL36Vm5o+qt5w--RkmA|4OeB$ zFi(U}gv-`TxK_gLCEQWMX$fZ~oR@HC33rt+OqNTEtL02tHO!Pt)ym3Yo?I#^tA|-~ zsibTG%#n){!8p~9w$`yUpMo!uFoLfmH&J^N$$Ide<>nb_6J<>#&wy{LG-dK!_)1Gt zhC1Zl2rR7CdYY)WSrKJ}_EKop>X)cps(|n9$}_7H!43<}dT1Veu^zXdkg_VC+uVc# zFl`D4dlj}$ghdS4Gm0RrU`PmyC=$Zjg@mwxA|b3=0F>JpmRcGh5-ko8iIxY5goXhk zp=p3fXr!&%O6rQd&{gDxq9QM}6nUYd$Pe_Wkc$9GQwsS&-wOFa2MhT?FAMoVR|`39 zJiy!OQb!dV&WYX{ly4uDr=1K+=cj|p2e+ROD(@VW?;4b^wha~x+=de_t=ixkgKex1 zHnKX{%IaV4oqY@{(Q%dQ%SZE^z6h zDDJ}lD=b|tMa|L`QwU2}O(85@Ifbxv^%TO=6;udIS5YA>T}g$oe2bQ(|JSGT&04Da zf4wT-wxzoN*RS#oT&nwjJuBbJrMmyuxAIM0)GgoHCF%d|u<|`#s{4PttbDhZ>i*wO zE8q8}y8pM^$_!A{Ez>|rDsGHIFgP!6mZDtTFhyS6G(}$AI7NQoHpZ?Evv7V^;gRVRLd6B$`;hh7SzfX)XEmr$`;hh7SzfX)XEmr z$`;hh7POZwXcra~T{Ac@j4H~7T}57)R^)|sMP3+K&%T0u6S&I-YHW8v_Ekd-^M2MEP2+=|lA+f9_ zV4+1UYYAzgM=WazX`x9hYYAzgODt;%X`xNbn^8Jt{4D8{c>RdNsbi&VCYSa%eFwz8 z17e#1vG0J`B0%grAhrh(`wob$0VI7#$i5>i)QBZL*x3oBg(9(}C!~ccv7{%Yg)*_E zM^fo~f8o1)^@`=v_x@Jtdk<(8@c_g|0b<_)u}Of~cR*|qAod*)n*)e_2PAz*SZI;H zqqNW?eMf1bN%lKR3th6`QCet|zV{Tq_wWl6*i5VGaW9-CJO;!b17b@6vB!Ye4nXWN zAhrS!dklze03ac|*qZ`0#m>2Y@loJ1ZY z5*{NGmLL)yBNBEX5*{NGRv;1{BN8?sVvh+HTG(Tf7JArYk`|iSW0DrS*kh6w+Sp@| z%6l6i-`jxrs_ssk9s^>J0kI{3*keF!2O#zs5L*F=JqE-!0FoXfWRDRRYPgTdib4_h zF-Z$m+{Yv>lyM)URC=5i9;Z!@Q|WPEoAelwFa?qD7?Cgpk?@mVZjr16$g(B%ON()ueW0V%kq{kqY9#;#Gt4)uq;IY^+ zzqK)7ll;~O-qdaF?Gj`XbV!ghNCC(;1~*c)!U&pS1nn?_^990|8hgTy@2z}nz|U#5 zibDf_2B1|O8na-xd609`7!UjGw(_wt9(FW_3?1Ra((|B2Iy7KOb{b@4f_sFwHpYph z0h{>3S>o8Jx8h%;yA}T$J+1iH=xxQnMqexbHTqleuQ99@{~8;%;$LH^Y5v};w*r65w8Y5fruQ93>{~DuP@vkwa75^GzTk)>}zQJE(JOl=k39a}C zuW0ZOKTnPy28Yj*1mcFFgZRT=V+LF*knGWle+`H{{52Zz z4}TC+_-o9DO9PTQt@ziN+lqe;=nCwO`K|cZ*c18~68Zrih$8-+4rJ+9c))Y~6&=Wm z-{XM@((mYiU<8;%@=rB`nJE zC?Nef5MH+;i$4_!6M4(4kjw zM|5nhv;{ddHz3!Ldy+%P^X}wmIDBEI2aV)Z05lN=Xd!}L3<;+KU_ekn@j!sR%c%hE zEPzx9Fko1N;)MXi#i;<;7bu{vK#;QlQY?XuhDboE5C}V9?;%-3*wN7jsi-0B=xAd* zI^gx7C}2A}+JqgHiV|T*M;qJG(I)JmRMhC?HXs#(E*3y41a%fbDg?mjc9+-+69FMAuN0sA&si?v6s6r|P9FMAuN0sA&si?v6 zsLFWMI3Ac%jT*-TQz77Z)MPwr91l!I4UR`m#-qmZz*N-Wc+_M(Y8($tMGcNeO~#|f z@xWBn;CR$zJZc;dOhpZj2fUkR0mq{z<5A;yU@A`Gc+_M(;O#UOU@8E|1723Mfa3vg zs#(DCz~?V<3df^e#-p9%fvKp$@o1OvXy`wqn+b{si?v6XqWM5=XhXBHQ+-B%~Sx6M~93@2gd_bQG?^rA>+}(@xWBn;COV% zcyw?)Fcmd89vw0s9UKo#MGcNehm1!D#{*MQgX7U5 z9Wov%#{*NUk#amR6#|Y&D&vuIJTMhCI3B5tN6PMFDr&I%^pK6jma_YpiW=;GD&0@n zeN06Sc0ZNwr|dqaq6WL4O7~NCA5&3--A|?a8M}`u)yUX=Oof2m&!qbqyN{`;!R}|$ z{fsXMOhpZjM<(NuaXc^;H8>ubj7P@tz*N-Wcw{mj8OH-tQG?@=$#`TO4@^Z3jz=cr zk#RgQr5ZWM15+X3c;qr3ImZK2QG?@=%Xs7*4@^Z3jz=!zk#jsS6*V{>xr|57@xWBn z;CSRR9y!MYQ&EHCk;{1G91l!I4UR`HoiZMs91l!I4UR{r zj7KNO15;6hzrb!DERc5eh;D!l zKDbf%WE`o-Q~h?Qlx<60WU&C4OmU2nwSc}*9R;vvVgtqlfB=^y^pCl zg-!31ruVU7n2H*#7QX){1UNUw8%fNO5pa+(6(y_|=gvaFG3}SvSU<-UQ&EHM=$Cf% za|kgNH8_O*GKBqXDW;+Zhp=CUu%APSsi?ue^s_Ip6Abx6Db|2ZVOYQ+g#BSyz?T$k z6~hAd7Iuwc0ecG@$gqHe413A2fZc~}Wmv%O!wxen;7bZNn_&UR1NNO^0mlQjpkV>W z19qcf0mlP2reOic1NNw40mlQjt6_nR2TwF%2OAMF*u+NEkP}VV&xQpu9z4;6EpFr~ z91l6sgbi=_6d4bkU}CW4L=(2bVS$VXPB5v4j0aCNVUrxGh2tS7ny_UKpCaSI(@5Aw zN1npo%4uZIb3#f<9nSPnt(@_}PCG1+YI*two9}R=I7_2bWRQ8b2HRS54W69A?mSY! zF_n`u*sDjhA?ISSZ4V3NCB<_w*vUt>!IsLo80_oAr^pcE91IPUb1~TMhXv9XoP$vf zc}ekH4E6$&TKJNZb1~Q%h)WE&h0ITwSij>IW)E(W_Eu>ewP4Ci3jsGN(zUPvsE z@xVD4)sXQ>IUbl|32b26I$xm7os+)s`aYH_;OG7X#T4^b<=u zUNP}R;$r5Q0%rJ!nW|j2B-S%K`Q3e776?owHbF)1&QCPYt-%fBzVj=7_CQ{6c+eaX}ldw<-1wtY0rrkP*JchNo zF(l~Yw4V!r(?t#7a;j0Uu>gi=Q36A$C`mcZWPz*-v@dFOaa!jTn*cNF(hL~lgn-R} z84KmRSw%M+0TUM?=Z4{<1tQNTzymbp;kj9)Tpym2MV{-!v$4pd$zTXP35&FoQ#KeL zbA_DkgNIv@@8y*3g-eg*aOH`V_4l#Cs!}q>Lp7q0*W<{R$<5S#dG!UQO z1ON&Z04P%cph^LNA_ahJyP7+)m7eLyB zk3d2q?ZM@5A(8gra<`C3d+@PHNTfaZJR~I29(*to5@`=ESCa&vganZG;Ig!kNPBRN zj3l@=CVZ5VkVsv))exMn3J(sx{=5)x?- zu1N`rvMRq8>F=qAz{C0?Sv$_Rw4kq16!g>3A;mUA)=1dg=-)} zB9-D=hmf#4uvMy*NOy28L)4LG;M#?dNWXBcf+V;`A%L_8*Cd35!%J%rLL%+KwFe=Q z_TUy(sV>f*g=|x2njm~+mv!UIL)9U zoL&gP0f#M1r9|3;(+5#U+Jn;tA(8grG(kwDJvbc@5@`=k1B67{15Xh`f{*!Bgpc_G zNPFInclc?bZTb_mcZL6-z|3A!bK53q{L@VQO_`XqqQ^^yd}N(Ry%7%N#K z?SZk9CDI-kD_J7#fw7V$(jFKqSt9L$v63ay9vCZGBJF{(Qb=H|WFYNNl`N6=z*xx= zX%CE*LIPtY18EP8l`N6=z*xx=X%CE*ERpuWSjiG;4~&&8k@mn?$r5P~jFmzHVNl`LU+(k1jb4R+%k@pERm2d#53K62MA{=SBpfS6k-U&_tYnF7M_x!cR&tSS2gXX4pkL$m zm_2F=e2Q75Q^t#Q=B!aOXHK6>JAlrbQs9YW35(q!xj?Mr z6c0Fi_Ka4p323yiVeIs|)1;KJl#iZLRELI2XN-pZl}jgaR&2P|20@!h-z{o`s7aJH zQ7#d@7~;}C_&SF;12(FZ2)+lzt;o;1V|!D^<2p(koGX$1en%DFL5v09 z9FiHz)!=5DBWl%PF{TN73kZ8<$_lVYBty8-ny^~HS^?W7gkQI9LU`LDPZNseRvtok zGe_#1IkKRcBO_!^*wM^U^UWMt)69`UoMW40PMC!`cz%P$DPA%IqX40Z*ZAP4-((pm z=2}2Cq82Psu?W_v7{OB*7xLO9{8n7EtXUr(=(!fJJi@QYNeQn!;$oF-vni5h!FrWA z9~P__NTXm(V~NxOi&iX=CUx_2Dg2m^28sG5f?J+t zaEnS*Yohih>S&_0iLxfj5lNf*ixnV&@$A>LkKwl(3FS-fMzfN%eWwfex04`uG3aCH0fUzi`?%@K)qJVmf3mA(6>O3xB+$g?k zK5hEUsg!GeA9@G6ghq(BIfKo^FJKapHW4Xesfc7VL$g6qAID)H0+@zz zG$^UyOmm>XqS7G3S!s}{4dt@$=vI(3ZSFi&kDq_1t3YJ9lSGC)Mr61%M20&+WH{&| z!+{nV4lZT*QWB3F@YsS%`PoBQz!_lyXM_cu5f*SpSil)!0cV5-oDmj`8$Dyn>_#g* zyi9<-y&H`9F$aYcW{w**Yurpx1MA{fuejRO*;8gsnlWX*C=?sh2@Gvbh2OyznQ7DU zSFwwHWA>PdvnGz>QtaCrjJ9M#sd19S#|TI+GVn!7G->+GSreyEm_7}j$S6N*+Jq_N zO7&o_UYrCU`KHX2=@TZwuSJZSHg-UMI(vqDgUxJ=8#8Ot^l8nrOR!dh$Lyk2cza&T z)XSM}k!ehtIti+jOW>QWXg>J@kKd&Xe8ag}0*~RPOxYE9GhQkwM+V-6QweNbHeu%M zX5dK^ybCX#m5U5~>u2V4`7~RoE_(&uq!7Zx6@=GaGjub4zluF8x zg5{V}N!bNhmMN8#U4Z48Qc2kbSf(kJl>LF_no>#GA6T|2N?_@RGWaDWxZh@vhHt73 zl%QD3pnJ_bZz+uHa%a9M+0Tg#+1ER497}AA>C^DSHMVe=U`i zJ?koa1`~!-wX$dRvS; zD3z4Wflt~NB`|R)Wy&#t2}G%+tP~~^rINBzc)}=^l$F9WPEmqW^X6axpPnsc$}xb& zl2S=I2C!&SDk=K|A5$rnl>LE^3zSOA{=f$ZN+o4~;8U=rlCnRrN>`M?CtpjMvOnKG@ANVY6sif==Y|dUPDf(LLI(_Q7S2URfjJ|lu9_RVjvthPZaU6IKG^l$+p(o zYPF$l)uHfB-{~{vCT2t0oc88Hc- z*v7)6%8-#D9|l_tPn|w(?9k0d&6+qMqbN${Fr}iXil*p_p_q!LOjI1jRXoL40wq); zB~}upMOi>uP+3S>SXo3_R9Q?}Tv<*UI6_ zZptWSv@$^%tDLWlR}NCHRE|<6E2mYCP%csSS1wS_t{ho8O4+A!w9-&!Du+~#QI1pQ zDd#F@DHkbwDc34jDOW4kE7vI3DMuX(DQ_vSD{m-oD{m_2DJLl(DDNuoDeo&EDiTGO_iG~w^VMe+*Y~0a!2LP%3YPaEB93HRZghfSGm9PK;^;8LzRask5nG5 zJXU$U@St^B7dYDHC*$CQs%P1RLHHC0QsRY!GI zPxaM64b@1E)kJMk7f=^e7gENl3#*H$i>iyMi>phhOR7t$ORLMML)2x}<<#ZX71R~g zmDH8hRn%40)zsCMeU-zN1C#@mgO$US{ggx1HPoSMtGcGzrdHLO+OBq}shX*|+NpM_ zYpH9i>!|Ch>#6Ij8>n@)TkTPM)jqXf9j0!mZlrFkZlZ3gZl-RoZlMlWw^X-Mw^p}N zw^g@Ow^v7~JE$Yo9o3!Goz-2`UDe%`)74SxXmyM_Rvo8~S0|_w)k*4Pb$4}&I#r#f zPFH8Bd#E$jhB`}~tYnOe>fY);>b~lJ>i+5h>VfJ(>cQ$E>Y?gk>f!1U z>XGVE>e1>k>apr^>hbCc>WS(}>dERU>Z$5!>gnnk>Y3_U>e=c!>bdH9>iOyg>V@h> z>c#3M>ZR&s>gDPc>XqtM>ecEs>b2^1>hW%76>dopc>aFT+>h0YeIc>fP!+ z>b>fH>iy~i>VxV->ci?I>Z9so>f`DY>XYhI>eK2o>a*%|>htOg>Wk`2>dWdY>Z|H& z>g(zo>YM6Y>f7o&m9>=V$`R_j>U-+@N?oy)*~%nkt};iNq3of|Qs%24D0`|OsvoHz ztDmT!s-LN!E4wRG)GyR8l`-m9>euQw>bL55>i6mo>W}JA>d)#g>aXf=>hJ0w>YwUg z>fh==>c8rLnxa)SRns(GGc;4PG+T2tSMxMq3$##+v{*~D7Ht7-L2V&zVQmp@QEf48 zacv20No^@@X>A#8h_Xq(FkG6$2T-#FHO50l7M%z}~PTO7^q3xiJ)OOT%(stH%(RS5#(?)5dwK3XQZJah< zo1jh9CTWwk-L)y&RBf6zU7Mlpq0Q79+AM9hHb`)d1X`)dbi z2Wkgt2Wy9DhiZpuhigY@M`}lDM{CDu$7;uE$7?5OCu%2YCu^r@r)sBZr)y_uXKH6@ zXKUwZ=W6F^=W7>e7it%27i*Vjmui=3mupvOS87*jS8La3*J{^k*K0RuH)=O&H*2?O zw`#X(w`+H3cWQTOcWd`(_iFcP_iGPm4{8r-4{MKTk7|!;k84k8PijwTPixO;&uY(U z&ucGeFKRDoFKe%8uWGMpuWN5;Z)$I8Z)@*p?`rR9?`t1uA8H?IA8VgzpK70JpKD)e zUus`zUu)lJ-)i4!-z%4DKWIN{KWRT}zi7W|ziGc~e`tSde`$Yf|7ibe|LKZe(N$g3 zb=}ZS-O_E{(OuoseLc`aJ^u_fh^d^db7P z`f~d6`U?7r`bzrB`YQUW`fB>>`WpIBy;WaRZ_}%KO>fsb^iy@h z_4V}i^$qm8-mUlOy?USCuMg8V)Hl*M);G~N)i={O*SFAz>s#tu>09gD=-cYs>D%ig z^d0n(`i}Ze`p)_;`mXwJ`Y3(0K1Ls_kJHEN6ZDDtBz>~JyFNvqs!!9W>ofE{^qG1? zpQX>%=je0wdHQ^PPkk?aZ+#zqUwuD)fBgXcK>Z;7VEqvNQ2j9daQz7VNc|}NX#E)d zSp7Ktc>M(ZMExZFWc?KVRQ)vlbo~tdO#LkVZ2cVlT>U)#eEkCbLj5BBV*L{RQvEXh za{UVZO8qMRYW*7hTKzixdi@6dM*SxJX8jiZR{b{pcKr_hPW>+ZZv7tpUj07(e*FRc zLH!~9Vf_*PQT;Lfas3JXN&PAPY5f`fS^YWvdHn_bMg1lHW&IWXRsA*nb^Q(fP5mwX zZT%hnUHv`%efK_v52v#v6!*Av4pXtv6Qj2v5YaqSk_q1Sl(E{SkYL?SlL*`Sk+j~Slw8|7;3Z{ zYZ`4v)uU1b z#-_$*#^%Nr#&BaxV=H58V;f^zV>@GeV}!ATG1A!4*vZ)0*u~h@*v%Maj5fv?V~ugf zcw>Sw(U@dRHg-3r7*maD#&lzbv4=6!Xc)7M*~T1Wt})M;Z|rI8W$bP2W9)0}XY6kr zU>s;1WE^Z9VjOB5W*lxDVH{~3WgKlBV;pN7XB=;wV4P^2WSnfAVw`H6W}I%EVVr54 zWt?rCW1MT8XPj?bU|eWiWL#`qVq9umW?XJuVO(ikWn67sV_a)oXIyXGVBBcjWZZ1r zV%%!nX54PvVccolW!!DtW87=pXWVZ*U_59%WISvV?1j- zXFPAbV7zF&WV~#=V!Ud+X1s2^VZ3R)WxQ>?W4vp;XS{EGV0>tNWPEIVVti_RW_)gZ zVSH(PWqfUXV|;6TXMAt`VEkzOWc+OWV*G0SX8dmaVf<_#7d96$7d00%7dMwMmo%3$mo}F%hnUNn z%bClYE0`;qE14^stC*{rtC_2tYnVgLR&!0W&8(U=v)$}4Q!_Jjv(xM{*D}{O*D=>M z*E82QH!$mFx7lO%ntf)!In3P9+{oP6+{E0}+|1nE+`=4gZfS01Zf$O3ZfkC5Zf}k- zcQ8kqJDNM0JDa%%>&E>&4bK?%|pyX&BM&Y%_Gbs&7;ht&11}C z&Ew4D%@fQM&6CWN%~Q-%&C|@&%`?n1&9lt2&2!9i&GXFj%?r#6&5O*7%}dNn&CATo z%`40+&8y6-&1=kS&FjqT%^S=c&6~`d&0EY{&D+e|%{$CH&AZII&3nvy&HK#z%?Hc} z&4lv&Ckrw%`eO^&9BU_&2P+a&F{?b%^%Dk&7aJl&0ox4 z&EL%5%|FaP&A-gQ&40{)&HpULs#vO}S-NFdre#^SbHhj8(JG#8(W)L zn_8P$n_F90!>ui?t*ouBZLDpr?X2ys5!MdYNNY!HCu?VG7i(8*H*1tN+8SexwZ>WF ztqImdYmznD+TEIBO|_<3)2$iS9@b2&Va>8;TXU?r);w#zwWqb0wYRm8wXe0GwZCSb+C1ab*Ocib+~neb)hob+2`wb-(q1^`P~T^|1Ab^{Dlj^|YPP@xq%U;`F$6nW7 z&tBi&z^>cfc8}d__u2jSFndFLBYR_e6MIv8GkbG;3wyY|rM;ECwY`nKt-YPSy*N*Q|zhsG<&)|!`{Q5X*cXy z_H28OJ=dOR&$suq_p)qkFbxlkFt-pkFk%n zkF$@rPq0t4PqI(8Pq9z6PqRAFv;^ zAF>~|AF&^`AG05~pRk{_pR%8}pRu2{pR=F0U$9@aU$S4eU$I}cU$bAg->~1b-?HDf z-?87d-?QJhKd?WvKe9izKe0cxKeIo#zp%fwzp}r!zp=lyzq7x$f3SbFf3knJf3bhH zf3ttL|FHkG|FZwK|FQqI|8o?l;;4@1=#Jr-j^)^nI7>Q9IZHdsI76Ieo#mY6ofVuFot2!GomHGwoz>I_o*>I~zE4r`zdqdYwL}-x=m?=xpR{>}=v} z>TKq0?rh-oSmIroL!yWoKenbXN)t}8Rv|5 zCO8wFNzP}l; zfzCnB!OkJhq0V8>;m#4xkvCeVM@y-d(iOxyR$<8Uxsm^K6>CPF>na)|x z+0Hr6xz2gc`OXE-h0aCJ#m*(prOsu}<<1q(mCjYp)y_4}wa#_U_0A2>jm}NZ&CV^( zt&_d_o6cL#+s-@AyUu&g`_2c>ht5aN$Id6tr_N{2=gt?- zm(Ewt*UmT2x6XIY_s$Q_kIqld&(1H-ug-7I@6I32pUz*--_AeIzs`TI;#OSM)m+^* zT+_8&+jU&m^<3W#+|Z5O*iGCPcL8@ncOiFScM*3{cQJQycL{e%cPV#icNuqxyR5sM zyS%%CyP~_2yRy5AyQ;gIySlrEJJfA;*L2(5s#|m0-3~W(GdFiT-7a@6cWrkacU^Zq zcYSvQx9)bkJ#Met=k~k9+zs80+>PB$+)drh+|AuB+~Mw)?pE&B?l$hW?so3>?g)1W zcciB$GYR(@$Lk7qC3f*?C$PPai_Y|-0AKNcMo@_+i+*O zv)wuFTz8&3-`&&Q%iY`E$KBW6&)wfWz&+4C$UWFS#68qK%st#a!adSG%01dW#y!?O z&OP2e!9CGE$vxRU#XZ$M%{|>c!#&eI%RSpY$353Q&pqG0z`fAD$i3LT#J$wL%)Q*b z!oAYH%DvjX#=X|P&b{8f!M)MF$-UXV#l6+N&Ar{d!@bkJ%e~vZ$Gz9R&%NJ$z#(ma(&VAl}!F|zv$$i;<#eLO%&3)Z{!+q0z%YEB@ z$9>m*&wbzh!2Qtu$o<&;#QoI$%>CT`!u`_y%Kh5?#{Jg)&i&r~!Tr(w$^F^=#r@U& z&Hdf|!~N6!%l+H^$Nks+&r`gLr+S*FdxmFvmS=m8=X##!dw~~vkr#W3*WxYUE$A)e zE$l7gE$S`iE$%JhE$J=gE$uDi4e^%smh+bPR`6EzR`OQ%R`FK#R`XW(*6@aUt=^hm zn^*N}Uc1-frC#RcUZ>aPt>vxlt>dlht>>-pZQ#|tZm-Ad_4>SiZzdQW*zd(U{!de3>! zdoOq|dM|k|d#`w}darq}dvADedT)7ed+&JfdhdDfdmnfodLMZod!KlpdY^fpdtZ28 zdS7{8d*689df$29dp~$TdOvwTd%t+UdcS$Udw+O;dVhI;d;fUi!!3P`}k*({J;ue$8+9JN(qo{M_&KyZp8Mwf%Mcb^Z1H z_5BU}y5H^h_`QCg-|r9eH}p61H}*I2H}yC3H}|*jhx=RlTlri2+xXl1+xgr3Bm5ow zk^YYUPX5mRF8;3mZvH5Lv_Hll>yPut`xE?${v?00zq>!hpXyKZr~5PfJ^Yz|!=L5P z_UHI>{dxX;e@}lee{X*ue_ww;e}De~|3LpB|6uJ|78CZ|5X1p|8)Nh|4jcZ|7`yp|6Kn(|9t-f|3d#F|6>0V|5E=l|8oBd z|4RQV|7!ml|62b#|9bxh|3?2N|7QOd|5pDt|91Zl|4#od|8D;t|6cz-|9<}g|3UvD z|6%_T|55)j|8f5b|4IKT|7rgj|5^Vz|9Srf|3&{L|7HIb|5g7r|8@Tj|4sib|84&r z|6Tt*|9$@h|3m*H|6~6X|5N`n|8xHf|4aWX|7-sn|6Bh%|9k%j|408P|7ZUf|5yJv z|9Afn|4;uf|8M^v|6l*VKnW^=8fbwY7=amBfgL!38+d^q1VI=?K^!DOORzw&V6afI zaIi?QXs}qYc(6pUWUy4Qbg)b?Bv>|BE?7QTAy_e3DOfpJC0I3BEm%ERBN!UA25Saw zK{coa?LkM723e2?ok3TyRtLH;+hDt3`(Q+{LohPfG1w{CIoKuGHP|f}6^stX1Y?77!T4Z8 zFfo`EOb&JrrUX-iX~FbhMzBXPGiU^}g4w~GU~Vukm>=vJ>=o=C>=W!8>=*1G91t8B z926WJ91JQO?}JQ6$_JQh42JP|w@JQX}0JQF+{JQqA4 zyb!z?ycE0~yb`<`ycWD3yb-(^ycN71yc4_|ycfJ5d=PvXd=z{fd=h*bd=`8jd=Y#Z zd=-2hd=q>dd>4El{1E&Y{1p5g{1W^c{1*Hk{1N;a{1yBi{1f~e{1+-=B~(K#)I%dQ zLo2jHCv-zE^ur(w!zhfyBy0&62p0?&3KtF+2^S3)3l|TU2$u|(3YQL-35SHshRcP^ zhbx3DhAV|DhpU9EhO33EhiimG!`5)kuq~{HwXi+x2-7eN^RP4Q3fBtP4%Z3S4c80T z4>t(wVRzUQ_J)07e>g1MFx)8IINT)MG~6uQJlrB29&Qc4F6K)%B7j7Sp2zLla zhC7Bkg*%74gu8~jg`>jJ;h1o2I4&F?P6#K4lfud2?%|YhYB(*N9?l5&2xo?ka8@`w zoD%$wu8^fEzo5NeeTf^JJ+rvA;JHxxeyTg0Jd&B#}`@;vq2g8TL zhr>t0N5jX$$HOPWC&Q=0r^9E$XT#^h=ffAm7sHprm%~@WSHsuB*TXl$H^aBWx5IbB zcf_rnju55tebkHb&GPs7i`&%-amFT=0GufuP`Z^Q4x@53L$AH$!*pTl3mU&G(R z-@`w`Kf}Mmzr%mRf5ZPGC8|Vfq(ypUL}p|~cH~5E#(a31WXs2lBXqRZ$Xt!uoG&&j+jg7`d1V!Mbo1h(H_yvs1ePIW=C_PxzW66eza$_SG0GuPqc5eU$lR8Ky+Yq zP;_u~NOWj)Saf)FM08|yRCIK7Omu8?Ty%VNLUdwuQgm{3N_1*;T6B7JMs#L$R&;iB zPIPW`UUYtRL3CksQFL*1Npxv+S#)`HMRa9!RdjW9O>}K^U37hPLv&+wQ*?85OLS{= zTXcJLM|5X&S9EuDPjqi|Uvz);K=ferQ1o#0Nc3p*SoC=GMD%3zRP=Q8O!RE@T=abO zLiA$vQuK24O7v>2N%U#-S@e1IMf7F# zRrGcAP4sQ_UG#nQL-b?xQ}lE6OZ02>Tl9PMNAzd(SM+!EPxNo}U#!HHSdFzouN1EwuM)2suNJQ!uMrQ8TjMq3wzwMC;`X>BPU9@jj&F%?jc@Njem=O zkN=4OjQ@)Nj{k}OjsHuOq>`wKmgtF*n2D9xiIcdAm-tDLgh`adNs_cA3nU9B3ndFD zizJICizSOEOC(DsOC?Ju%OpdRWs~KS<&zbX6_b^cm6KJHRg=|{)sr=np-F49X3~~a zlUmZAbR=n#C3(`BbR}ygYbWa@>n7_Z>n9r|^`txLNqUpMq(2#!Y?y46Y@BS8Y?^GA zY@Te93{SR9wo0~6wn?^4woA58MkG5VBac$^OX!$$`m1 z$-&7X$)U+%$>GTn$&txX$qrv$(6}f$<@g<$+gLK$@R$%$&JZP$<4_v$*sw4 z$?eG<$(_kv$=%64$-T*a$^FR#$%Dy5$-~Jb$)m|*$>Yfr$&<-b$+%z$(PAj z$=As@$+yXO$@j?*$&blT$z0Tb62Bx@DP` zAuY?cEZ4Gp%L*+kwye~$a?2_$tG2AxvUTH0GWTGIb9a35YF zy>T4Jzt8i0pAic8-inN*Y?778-lS3)*_+ZbB8tk2>^-x086kU>Jt}2IDtmA7YwOoJ z&w2iXd+t5=eBLk3QERO^X>GK&nzPnUYp-?CI%=J?&RQ3(tJY2HuJzD*YQ41HS|80t z>#MnHZkoH+PxH_`H7~8dHb5Jw4br@|!P*dQs5VR+u8q(}YNNE#+8AxDHclI_P0%K4 zKANvKN%PbEwE!(p3(_WQQ?#ktG%Z-0uFcRww3*s0EmRBBW@~e_a4kZM)aGjQwE5Zs zZJ`#WEz%Zi(b^JiskTg8uC35kYOA!>+8S-GwoY5GZO}Gqo3zc^7Hz8*qixf+Ydf@^ z+AeLkwny8m?bG&a2egCQAuU#m(++D#w4>TFEnYjWozPBd3EC;`w01^2tDV!%YZtVO z+9mC>c126nlC-PZHSM}~L%XTn(r#;aw7c3pEm=#^QnmY9nwG9T&>m`!w8z>LEkk>% zJ<~F^=USGQt>tJhw3pf|?X~tsd#k!)y?#ZdL_NGuIajN z=;peGZmCz%tLj#IHNCoCL$9e@>$P+ny|!+v+v#=mx_UjmzTQA@s5jCZ>rHffy{Yb? zH`ANzE%cUpE8S6Vtvl&$^tQUQ-cE0?chEcPo%GIn7rm?AP4BMv(0l5=^xk?O-9_)K zyXtPbyWUUt&^>i8y}v#{AE*z~z4gKR5PhgVOdqa~&`0W{^wIhleXKrCAFof)C+a@B zuRcll)BW`TJx~wQC+k!6srocMSf8%X&_nc@`Yb(E57TGsbM$aMLXXtv>htvZ`T~8S z9;GkR7wggb5`C$@Okb|A&{yiK^ws(reXYJuU$1Y_H|m@8&H5I7s~)3o)3@t8^qu-H zeYd_x->dJ__v;7rgZd#oR*%yU>qqpX`Y}CTKdzt9PwEN!DgCs5Mn9{c)6eS{^o#l> z{jz>VPt=q2tNJzlx_(2yso&CX>v#0K`aL~aPtjBL`+Az5u0PNp>W}ot`V&1vf2u#z zGxg_smY%KW=r8n_`YZjl{ziYRzti9AAM}sI z|LJ*pzFwdg>P337UZVfgOARoHK@Dc0!3|+ZLm4JUIitK$!7w$3WZX;>Sz3>%}iVQbhKb&R@3J)^$Sz-VYRG8!9A411%g;b1f~ znj0;QmPRYX(P(Wr8EuTVhO^PmXm4~dIvSmf&PErbtI^HqZuBsE8oi9(Mjyk)=xewd zZic(j&+srj4KJg=F~AsT3^Kfp!Nw3{s4>hKZj3NS8l#NS#u#I)G0qroOfV)IK8CL` z$?!A$jQ}Ii2r?!cQ;ey`G$YuUZp<)3jG4wPBh&~pW*c*ia3jKqH0B!fjQPd_W1$gc zEHV}w(Z&*Esj@)To2aJQpAtTm^GY%U^jHAXeBi=Y}oG?xr3C1bov~k8bYn(IA8yAd=#wFvj zam7e9l8mdyHRHN*!?3FYJ4-k8$XPn#xLWyk!$=h{u=)o zc}BibU=$ifMzK+1{4+|;!JL>=b7qd_++3JTb7gK~Ue3I{c?EM*b2Iab=9SDVn``E} zxnXW@Zeea|Ud6nsxs`b}^Xf(zgR<3Q*_g3x$yhdHEL$p;4HC5f%XNu9_VhMu|UrQ zy$kdiunoX=06PLK0oVm#*MTJidju>S*gIfff&Bqi0$3h!HE>hlHGtOvZV$XQ@J_&c z1NQ(v82D)5hk+*mF9v}iOhH(JumjNyL>mx2K=cRk9V7=?0c3TMO+dB;*$!kkkS-v- zK~4lY17tYJMIcv!+yrtb$U`9GL7oMf2&z4(o}jLQN(OZwOb|@AK)JzCzU+rvZKyC3 zOm#4|0n?LU`TtKEg%x{4CV=#XY=EY!99xRf;G7>D;f#pH4ya<-} z!SWMSp-{ClR6Pq-Q=sZ=sG0{>mBGpetQ^3q6IcxZs|R593atJ@H4~^-1FAKLYJH*F zET~=^syBn`ouRr1R38u3r$ddFP@^~07!5Uop~f<(u@h>Z2J3ZTy%(%cfb})7egM|5 z!TJ}}qEM?c)T#%y+CiVr*tuyF;OF<>(lY!*T77_hAZw)Mca9oV{p?NPA3 z47Sg~_6yjVfL#@^8v=HIV0RkoJchd0q3%Pd`x@&0D%;yay~U(8wJceTGIw(6~G_ zt_F=8K;yR1xDPZQ0!_Mry#o81VBZ|!2^`|V zAqgDPz~Lo0`~ZhiXm%5t&xht~p!sfSu@72~gqA_jG6GtSg;u}8k%FTJj<(>~0vx-7 zqZc^(fa4r+Tmz2#p|w9ad4bbda0&*e`QWq`oDPE1S#Y`oPS3#UGdLAOoAS^m8rs%@ zw%@^dCA6yz?KVMs1KQ7n4wa$9PUsL19a}=j&(J9WI(L9B^`Xl?=;{jHnnJe+(ET{{ zSOYx=LeI<4YXJ22hCYL#&u4H+gT6)JdJo)IgWG;^O8~bdaJvg`55VmuxcvaPf8cHk z?iS!)3)~xmdrNR{5AMF;z8TzigL^!I>AA@@ixPJuqpWvPk{RH%@2>oh6 zzsAt7CG^_~{nDXdCiHs){k}lIKhUojJQ{*><<%tVPYCgdf<~-%0Sh27V8~uWUD34E`0t-wynpz`sBE2Y~-#@ZSagm%#rC`2U80 z@(@rD0y;y$KnR!w0TB?e76J}Jz(ojn00HkIpb!F0A+S0GHiAHB2y}tKp%CZ?fngB1 z1Om4}U@QclhrqiK_zVI+KwusONeHrlAUgRSggrNBl6a_)i5VQt@Vj$=&1U-hJ-({m%m|O`aTft;onA{j9w}r_) zVRC<%{2r$KgsCPlwHi#V2~%BR>LQrB3Z`y{sqrxNJWRa|JDB_^;17Y4Jm_HB}Si^#1ShyFW&cGrYSlkt&2}H-il6kPy z50>qR=_7q9bjJ<*q00Y_rQVPaIiBR z91I61!@t4TqxP&{jBf2o9ZqLrHMxF&z27-Ba=>@kQv1Fy!c4##`K@hmv85l;4pgi4T*0;dAubR{^w z8qR2NW;L8O;A{?@n*!&{!}(`$;Q(BWfJ+f@xhY&e09R_ll?{++3W*CKu?Ui);HnN+ zTfx<1aLp60{e^3#aJ?K{cY*8c;QDsBeh{vIf*Z}@#!k3#9Bx{}&EIhAD%@TNcgDh< z>2PNe+>L?cijYzVQj#Eb5TyQw`->qh64GbD1ABPz0v@h}M_u93H+Z}Wp148=g^Z{0 z^e8;DgJ&BdvjSvBK;}xwEP>~};Q1POo()-bA=@0X=Ri&+$XO3BV&G*Kyh?%B2(S0U z8#8$G4c`2Nckb}+2fSYaAA;dyANXVqpPk`zEPUw^Ht1>~29{Qgj24Fw;d;1?A7LSYCLIY7}=C^`*AxlmLB#R`h6La_ssn8LpV z0)?ckabP+@M}jT{#}k}Ea2>(D1n(34O}HeyGU3$-uS0lK!p9Q+hVWb>#uI5nq$81U zhL-KZzM3W|qXvftW2IX6uRB0b+KVRGdO8Ig?7Ir1Ev5-6r~7qCX`1TVnhn=B319 zAhF0LRlG>mQ>5w@QuPk8>PM_HNVValS^%luk<>6HH7rOCYf>YF)Lcbs?jSYeiS=qy zE1cB&N^FJ@8-HRmhuEwnHjhZ{Dx`J;Qrn5toQm+-M*MZdQN$SOrdYPntO;Ud*X+TJW6w)w| zG;$`54v@wMX}p3oE+$RFNRz+B-i_EFAolM`Q%;(8AWip?rhkb;PvUTZIOLIL&ZJo+ zX?B}5dq|oOC(S327UfBcEYdQXv}#0Jr4YxK#BnEa%p|Qllh$#h^#|f)OPp2`ry|m3 zGHL5Z+72ge14!E_(sny(dz!ROBW+)iwm*q;ed0Wdw3|WNPb3|Nl8zpv<5<#hI_cDo zbaEw~ZAjCNtT7h(PCf&!7?z2eu<)r&w()|MI{)F_fCOv#fj~LS90qKdPXB*OU z0_nMy^t?iPekZ-GNUz?c*HY3eh4gw#dc7vS%}H+?(%YN#UO{?qCA}Y!-v3A+Mf$WP zeMXZ${-n=V(&svHF(WQ*iAy))GKIKYAud0NOFrq_k@SrueOHpcPl#)E;<}l*SrE7J z#4Uli-63u{#4VS&S0L`Sh5k@@L5|8u5;{ov~BA!;nvn}x)LOkaZ&t1ebiFm#u zUX_TK1MwO}yv7r+>BMUx@!CPW;)&N4;+00cz7wxf(%**kcO?B?N&g9?|02?VC+UBN z^iL!G|04q`k^%N)fD0MmPX;U?19p)CSIEFoWRNKtRF4emP6mx5gTl$6O=M6!8FZTr zdPlq&@vcR@orrfo;_XAcBZ>DW;vG-CZxipA#5;dJB&Ze%x~NOdNMPV%o<5T%ahPuBs7DBej{O=ghi9tRmkimWcFJ!r!Se4O~RX#a90xU zPr{dy@K_R_Ou|2t2vZW#h(rt|5uqgF5Q)enk%UB+Bau}}q!)=CP9m3($n_-hI*EKl z=9-eZ7G$m`nLCWk-9+Z@CUakqdDY3hWn|t)GVceO??~p4BnwQ*f@)+zAXyMX7VIYr zo{)tmWT6vTxP>hINTPHS)saN?B~g(i>I8|(CW}nTq7G!y1hQy4SrkbY{Uy<6WcgvT zx;$Bbm~3$)TaS=!7s>W9WakL7`!3lNK=x*meW%I(VdOwna&Rj-xQ`raOAZeq$NG{J zW#<$*kxvpTky8!Hsm{W8kjGSvs&N-5E9mu(vR`D^5SF}X06TzE|`d?Od~$VEvmRwWlFkc%hDrE%o4Ik_A`E`K6dHj>2F zBr$^|rID+iiDk6g&3S>(|M^5_(KY(XB|kjIV4 z<5uKxC-S&AdHjiFG$I+fu= z@>VBruakG~s&3 zH5)}WGirW`n%}18FR1w!YFojWpj9R~@*7>y7D{8Zy);6KFBdKiwwd+Oe2wE3t-O03W2Ces*)}KuqY@`h%X~Ube zksEFFhBiJxn>3HIw#V03u(Jl+I|-8U_m?VryZ-)j>~8#SK8?(?ZRnSYufcA?Y5Y9 zA5ME%(jKw2X9L=+2JKZsd!M0wlBi2d>avUWO`xvbsM{dw-jlkQ-JfW`rPRZndVHsz z`>0n}>Xk$LKcoX*(t#)FAYbZTmwLxj?|*b~0v%F=4!KK*9-%`M>Cgvs*jhU5A07Uh zj)iB2%+gfu#FBAxh_`aGe& zhv}q1>Nk`6eWCtCXn;QrD4{`$2IbMof==E+r*xuI1)aK|P8&^wkp}Oi)3?$Y2Wdzs zo!N}e{7Pqq&{;QW=v*55orZ0sv%~2e3p!^mo%4f+AEOagG@_VBZl;lGbnXT^&xy`E zLg$;(`8()>_H@Bfx^M)IYD}XJ&_&*K@m3lgK$k3|OXt&NYw7a)bj2FFvOHb+kFL5; zS9{PkoUZvn*Cx_+pXvI$bVD-T)R1oaLpML6TL#mu_H=6|jY*_2FX%Q-x0juLbjN5(V&=xrJgH2ya| z;Y?3fr3nq_sVVgITzY0MJv)w`eMisb(DSG1g`f1|bb85&Uamzi=hDPVG%=4}RrK0S zdc7mPQJ3C0PH!%yx9sVyoU(|N-pQwTP3Ya)^qxJvmr9d=(Uf~MbuGO=i>8gE>5er0 z1bq-dAGW3s3+bZ*`uG5Sa*k$PrB5f*XRYb8M>KN*ecp*a|3DdW&^Mpx+amfdlD_Xq-^bAp)#(R+`XQ5kw51;x(oceZil(3b zqo2pn&yVSs`t-{w`qhqpok71A&~Jn2x3lznEBZZ@elMUuM$?}r^k*3TnNNR>p}*JB z+!XpJhW@=s|NBJqifR5HTHr_vFVmtZTH-`YcF})BXlY*tIwKVr{m9Ul@hwbjW-^q? zBBqL%$zE2@pOuee6<#t^V5YU1*%nr@EvsCaX+4>i!t^`LxWvp?F^ksB;xV(#XH_0E zt5K}lNml(Js}ag-)?hU=nRO7W#aXTM%w_?rZO3XqWwrs#t}?Sb#OgF=b*)(4G*-`> z)vv|s|6~mgvxfGp;a%3qn>E&16ARX43$yRV>@!%?j;!ek=D?VPKXW+6npI@Y*0bg{ zS@Uq#{1a<2oV7T{TDD{@H?x-SSgSzRDxEntVUDrP@e6A`k+pu#oE9>tAFNFPYx9(~ z?atbsXU>(G^K{nEinZI#+E-`o&$A9Dtiu@AA)j>|&N|*_ojh2ld8|_|>)e%fe!;p7 zVqNaCuI*UYDAtX$Zj)KJJFL4W>;9Vc@M1l-u%6Xe&p_6TvR-Md_ej=zGV48;^(n{t zcrur2%w<1w$!2{AvA*}2t21-mz}&2u+g|4Om$}bp?(bN?cC6o7=23@vY-JvQnWs1N z{KveaSbxR(Z(#j*vi_xPz;ZU=7aKT^4g6V_>#{*1Y|stn?Zv#Wv%xLc;B9R1J2qq_ z81|}Hg+N#dzFoIVdK)+cxyI3j!m#&69ULF<%eno5dy#XOn(0 zzqZV874xsh{FgERd={{P1thURM;5q>1vOzoJJ{rkZ1O@jIgL$mWm6K_)GBQ1ZZ@qZ zo3@%wd&7dmSa1fL9?E7+U^Bk5kTxu27n|9b%?xL=hOt@iS!g>JdY^^$XJI$k?7D3B z9yX^Dn-j{yO<1@e3r}JZ?ODVT7U{qum$Aq~Hg^x3XV2yxXY;$V`AgXRk8D9GTad#R z4qyv&Sd;~eTFs)~utlM4(J!`m3|st!Mb~1{TiFsTwqy!h@`Ww!&z62<%X+e9kJ$3| zZ21Sa;vri(f~}m)R?cOsOxUVHY_&C8eSoe0#n#MbYl_+032bc=Ti1uJOJnP8*!m-E zLlw3mh;8`JHYTu5L2Pq1ws|+(GL&t#W-+EL<}Taj#I_w_+t;ui<=D>ZZ0Ae1YYf}< zhwZ+`_AF<6gV;We?YqqO&t?bKu!FnUp|LC$S?m)QH-p9Hvcu=u5m$DkkR7vU#|l_{ zEf(LC9k*e}{n?3S?BpnRGLt3jXQxK6)28h7Uv_3WJKK?+y~obQvh!!yg=Oqw8+Ne^ zyV#dqe9A6)vCEuYKE|%RV~OWjlFpL8v8(IZwf^jSJ$Ai_-I&F06tkQA+0A3@R%3Q+ zGrQe_-M-B3RAqPE*_|)!?j&}vBD)vJk~^^EFqTq}r7UA9&sb_#mU@HTug&gnVrfn+ z?G{V#$N3!f}mNTBc(AkT%?4=2NIg`CCWv@1~*OI+_irc~;b)6_8BkZ3)D{aL}ry$foScmWxi3gJVNSh)(gKQ#}_26Y0H0B{6g@T~ifzl7< zTT}QD>cJP z&R8i4D>uW+3$XHI)S^)PjQTv(pQEuDjm>CY4$b}1{4rYCp+zWKmP5-KXqk&u7GYI} zRZX$#4y<|17FsnxtLA9sj8@&y$`!4~p_M;cy~k?NSbZGUsDw4kW6cL>y$EZy zKpQi(IfJ#!VeLU!I}>e(pzVFMYmIgr(C#_b8HRN(V4eT4Za1uZ0_$00z13L1BGwPa z`WLZ5Cv30}8|v6_88&jp#ta+p#3sGa-W=^WVpCsqsD}`-;s+V2jS!vJ$q8 z!B&US(H0#yV(UHVWRGo{V_Sx8TVmT&=v)Jxv$5SIY+ni6$6yC%>^K}d`C#W}*!dxL zZI9hTu={lEu>^Z5>^&9x9L2sv&~*~JO~!sz(W5+{Qp#42;CUYz%6P zK^rmX4^H;L$?-V36sNf2l&v`B6HaZ7Qy1dY$2hGnP7A?lw=vingJ)oHI!?F8=}U3? zN1V|eXY9rqr5G{-Lk?odU!2()XRg4RnK-Kf&I-X37xY9lVHhl?)a;(@sM4@R%SCCzY28ZMoT z%PQltlel~UF3-aiTX1E2TzLssb;nidxOzCQ{)B60;98DrH{-hIxb8l#_s0$8aKk~| z*b_H?z)g#Ba|7Ib7q|H1Rx{jM6}Q&Gty6L96^yBXF@rH?KgQ(ZwobTh1#Zj2?G15z zIBtJ{I~wAS1-K&zcRJzDHMsLD?&^WNcH^!exVs(hj>g?jaE~qSnT&fb;okDNcQEcf zfP0H@pF8e5fcpvVABy`=;em>Hz!wi(!-Lj%Z~z`0jR)7^!DKx63=f&%q0V?{IvzTN zhq5rX62^AN*iej($JqB6R}JI(VcbHDJCAWc@UR^o9*l=q;Nfd{I3JHR!6Rew$QC^E z0FRpB(av~u79Kr;N59~)I(Te29@~J&QZZg)d`FC*iSh9m{|S%V;PD}Nd<`DohR4(J z1j7@p@q{0q*oh||S(vLl|Hh9?i;$>*3*5fi#%LI@_rVZsYMrQ@ldcq$A}#p9_D zc)BK@9*Cz`;OSdqqSvx#C49~8^v&m%;1DUeuK-Vt~w4DbBJyW{b0Cf;+$ zd)G0!4JIGP6l+Wwizy+PavoEPFx3oG-7xhS-mi@Jr{n!hOzVVc2Qb|X(`R6M4nF9K z590A*ReU%PAAZ3{{qfNyd|VeFuf)gs_+&IbnT$`?%pm@x)30x%;4Gv;E(Qp{L~8QU;pKV}@m zjB}WA4Kq?OBLg#DVa6BC_=_2(_|ycS>iDze}`@abH9x*DJE z#-|DR^d>$t$7l8M*$jMk12YZGtc#gWnArz2hhb(QW=3M>8qC~_nWr)HHfCmG<~Mv! z@VNy(Z-mb~;qw9bd>1}HjnD7k^BjDhi&+Y@YG77#%<73*o|rWpvwSdX8fJxKRy1a< z#jNd^bqKQ(FzX6t-NmfOnDr8~zF^jWm`yOd0%lucc5TdVgxRezyCY`1WA;eQ4#MmR z%wCDvJ23kgW+!5HI%dDd?A$VV19QwVr!MBS#++W5GZ=IHFlP?tti+rhm~$F)u4B#@ ze4*isHuz#RzKF&bC-B8{e2Mt73BDYNFC*~fL428xFAMRNExziDucqUx?fB{zzWRx; ztK;il_&OM0@50xq__`S1G{iUF_$CV9B;cFZ__h+h?SOCn@$D9TdmG>Whwtq0ohQDF z#P|2{LjZm_g&z{}Lot4AgC8UD<1PI73_rEOPagQ`41OMip9Ao7IDX!MpHJbJB>c7* ze-z*^iN6iZorHg`;@{c$pCjg3V4gMRHNd|{0f+Ff%!I=-x%{-V}4i6cgOspnD2x6 z(=mS@=C8#37|cI}`KK}e8s?{Aem3TR#{9f8umlS#V?j+UXoLk$SkN5{Jh5OT7WiYq zEG&q^g0)z%4GRup!AUH*j0JbG;0YGI#)2PMP>h8pSZINTwpi$Zh3&Dh4;Bu>!f{wQ z1q;Kma48mU!oq!6cmfNrU|}*AKEuNISeT1NfJLTQWQ9d`Skx4Y+G0_6Eb_pj;aKF0 zMKiEyJ{GOQqHS0di$!O!=sFgqV^IzkeZiu9Eaq6OVX-w9H^$;NSlk1Py|8!`76)K) zC>Afm;&oWO3yb5h_%s$LVR14RKgHs=So{-Cm$kE`-r4d7}ASD&~^3vM!p zn=Iibk9fJ7yqpg&cY>EI=H*Rzc`sgm8!!KXS7^p7gz*ZC%VIQcx|o~k+-y6q*pOE| z%`0``l~Q@-VZ8D;uFdCqRjwcBh6^`7aP#@x!kSxL;Fg29WiGGMfLH0tt8C&`?(wR< zdDVN|Y9P0I#j6GIY6ZOdLSCaXud##Ibl^2_a_eE-`VX(Qg4;CYHaB_gF}(IaZo7rs zIdVH6ZWqSwvU#0yypA`ov!B=b%j6V8Re6IT z-rxprSdBNF!W-V=jcjD-h3Tzev7v-EYs#9LeQ){}VaQ``x-lM8p+z@2V#r$@XE;ca^J zHmiA?EZ(*OZyUnf-r&wUcOK21k8$S`-p+-$+sxa2;O$%S_VaoBbl$<5cL?AeF7S>f zyrU!U*p+vj#yei)opj!50`GKzcdpDkPvo61@h&>=;>){S;a$ynS3ll0iFdQ)-2!;G zYrK06-aUkOPv<=v@gAdjk09P-H}CPA_w2%ZuID{J^In~JuMND{SKhk|@4bol{?7Y! z<9)X9K0moj5AG7fU4HYveR<#g+!eU%5bnC1yKdpGce(2$?)rkee&??LxSPS<8gaLt z+^rvX8^YauxLXK!TgKgXbGJ*}Et$JL=WcJf+ZXQkhr5+jHTz#2XAcCBFI`Uz5()e&*|uZ>Y&PeB>KX@J;>srayf1 zT)xGOZ@J31PUkV!JmwDH_K)vq!FLM2GmGy!!FMm_ds^^4*?jLFzHcJm-<=<*%@5@A zgV*_?9{kX49_z#76px$5<397lA|5}O$Dii$-}&*n z{P+{n^{7iFx#-E?H=4aFSxkmh4G(Y#4pSR)X z=kxRL`Gtx6!bg6w2fw(NU#iA0t>u?n@XHVRl`;IvZ=M*$6TkALP=3{fUybG0T=;c^ zU(e<@R`Hv?_{~%NR&9Q3KEL&r-*(}*Pw+b~{LUMG_X@wal;3;EldJLMb3A1bPkF#o zU3uy~e!n-rf10P+@wC-Et%Rpn;OW(Px-Cy{#M4{y^!7Zx2TynB4|M(@gFkr5AAI5u ze)9)K{9yopIDB=*JXZZ1qC;X`^e|nuiJI*t=^XId8 zRzIF?#yLA5kEB}znKgRQq|M5@G z{L^***_D5O&A-gxU)%DpMf_VN|1S9V>-@(&{>}{G z;7)?ai!yCW))T6gP&Eh1ES#ZJnszQdEB^Y8(_b!-aKQVf~+| zwM5vInN~YQ?V7^2vaplF?vtobZ#e{Y8TjqCvW7*iAG%E*jMojhl%k-9(ee z!hV8iI!ib#70tp#^GTw4sA#@Kw5TmwoD(gFh?Yg7)m7oRShTJuTHh2-b3~gm3G2CN z8!nuy3g-mT?uclAKy*kD9g{?-wW9NQ(WR#7k|DaT6Wu&Sx96h!1kpV~^q`{0dC_yK z==nadMDGKl&vM~1O}Km(eMgJFPlcS?_$>zdh=JK+P&+YbtMG0tyf2BtL&e|%F~m;{$r3}Ci(&1>@QPyi zD=}i27?B}HE*GP^iqX0l{YH%0A;u0BV}FTpi^O;oODc*b_ry{sv2>qU<|dZqiRC$B#SO7?xLEmDtO^vX-iy^^ z#OfTeX1iEBQmnlz*0mDrEyel*v7rq8YAH7QiH*C(CLgi6so0z@woDUSK8mfw#nwwA zriO?)Cbo4J+g^z6;bQv_v163jX(o1F6uXv)-QHsNL$SwA>?sv{Pl@>p@X zj2f#duDFXU3q_)hNW3JH+KHqK;_9d}dQ4m!FRon|*Vl;~W5kUe;zpLZxmet4DQ;~R zxBiLSF5>oPafgXJ0piXNad(Qin=0-#68CnCWGj(;UZe~WDW64Zs7Ngo_h*ayH$btBcIb z;`u0%HD6@!7dcbJi_YT3Zt;?dmrum2gW|QLczs>GSt8!{6YrXd_m#!_Z1Lfc_*hST z+$TOY5uXyo=h5OzMe${&_-ZD;E)ZXf#kYy#TZZ^PUVP6LKbDD~b;QrL;ujIWx{F`Y z;&*59yFlbF5PvF)Kexo+Nb&cx_|Hq^RTFtHMSgXW?=1>Y6dV_YHALYOQTSFAbr3}d zL~$iiyi$~yijn|Pk|O?jihs{U=~4;pCA^Ykp`_&`T`6gfWZfk@A<1{pR$r6D?3R|N$siBTS8UtiaCTkv-*3G5$Nm;9* zthHO(=+b6^tX)mkJ|S)UO569+u9>u(E$xzI9U<#nk#%RvdMN9ymi7C{223^xkPRNn zhB30yc-d%|Y?LhvCVQ=t zy*tX@^JMRzvQLn787BK$$-d{LYa8iWBHh+YcWdc>O!o7W9w0q(q-RIzxl($*mR@V5 z*9X~uw(OrJ2ZYIi7INTmIf%7678x0gd|$sy0>(CKpMA31ER91e1LsvNOE zj;tp~aXIRl96eZ$nJdS7$+2VQ*y(bdwH)_Fj<=EHr^*S<<%F+t;&JI?D}DA$-#K#9 z5IO0F^mCAYTclr+^dBw#Z^?iLGT^WbtSkdp$sh|E6eB11l2arCakLb*O$ZitZ^H^@ywZVHr} z=gKX*+-fglG#TS9V_wK@!E(E^+!ET4N`^fk!^0Ha;)i!RCHcCt7@meiFc7v#VG^4}F%%4F$z1w9p%D&nVTOGT$BR!y-LihWk- zq42)q_KKfT!dJ<1O0HJ2P?h<7CQ6y?SLK3Kx%aC4QC0qus!&%|XsRkWsS2G{g+8i+ zm#Q#KRhXtKgelW;%FITYEmIYls`yh?x}_>FR9b}6zAJrzGJKR#s4NU+@k?1+D$AX! zN()uxkE$A~telipx~euqRezysqN@2yS?^P|hO1gXlud7CQ>1E-Rkcf%ZHBVjq3Y8tRD(3t&_^}QSB(Nyqa4+Er)ttw+4oaTCn<*(%He@(wnH@^ zs+#{&ErL|b(W+Hz)hb`LrmFRH)%u-s%2RC?tF~*D^8)3(PPJ>I+NG-YYgLDqs>4s! zah2-SSaq(ay0lPTx$1gJbqiJ9QFZrJJu0dmvsKT!s#j&zD^~S3RPTAJPZ!nah;mt_ z`r50$$c*2*VR`FvKs!D>O&W)T~k!x>SXAR$&L#>~U&#jGEJ3&AF(;E2{7*D*UI4=%*r{sK^L4 zw}zU#vrKYS^QNfznwlS{7R*!&eyN2g)WRec)lfyXP*LqvRCg8SrlJO^s8K2^L`6lY zs1+(|yNWuZq7v1jnrcxCwP=-Ev`a0vQ;S=x#phJCrHZy!(MweHF14h#TGB!-Nl;5} zswJgrX;-z>O)VX)mTpr^AFHJ=)zU9&8K`CD)iMjUtbtngLoGk1Rs^UOGu4V{wPL4Q zxl^rPtkyZH^~2PL#cJb8wJ}|7%2t~`s!auIv!=H6P%*>Qjt*+)B(>|E+T)`3Oj3LI zs(q8x{$6VT33Z^oI&exIoU0BwtJonb_P2^#tqzY>M=GnMOdY+bj&)MUKB)MO>i95q z{DnFZtxmeAlgTRKm^!seopx4dI;u0j)Y)uxu1lFksm_mA7Y3_~j_Q(=y7Wk0PEc2N zt3*R3HBm{w)YX~lTBy3dUES!VZv0R;PpVrR)a@qfj#PKfsk`UYy`$>h1(jS!B{xyY ztyFS*mE27w_f^ULRkDvt4pPbCD*2;I{-u%&RSHunZDRTsnp&o)l;PoRjK3D{rc+uS9Sl7x?il)xJolqY5z0#9q?^b+1?98(v?^Y?Cyjv zQ4Uow)aI$?Bug9Q7{u7I!IF{M7?7ptQ{?Q+ zn|$((lYDc5d|OM--9*maL(UB&=jM}hx#XOKoNFO}d6N9)L-Lm&$af!- z?|vcQOUd_lknf)&-%ljp|3dzHp8Rk#`QbkD!#Ct_+sNOoQ$v@AL z|M*P)yN~5J%#`1-OMb&i`3;}TZ}>%i<4F09dijk$`HfBT8^4p^^tAk@1M-_bkoP++ zmyDH57Rn_-xzsL~w#ub@)ro%qV%xPWi2)E%A0h8wEbqTn-v7M(jw1P;%jI`w%kT8a z@9dD@c}RZe$MU-r^1JSl-<2W1>u34hYWY2t@_V<*@7pF`&#0Wd0|MT=#x`KH~VHYx(hjH)lw<5Ec zM-;Sw|3?%t8HYwP0~B9S4>M2^GmpOfBJ-%CEmF)prYIMFWCkf>=#vrt{JqTM3Zb`` zVV+O~YMH?b`e$L^rR^9RqKRteNyQtHdzhybuL_?qL&SUc-6cl2h3*tqGoi3ItOC2H zoVU+7HH9VteF^_RK?fc_Ww!^)!45vP#{_!NnayT0Zrp>yR1jXm|LF~a_S85R>*m}* zu(i|Jm>b*B+6#MNJ$nGW;C2B%pTT9czgV5)f?XuCTn0_HI!Cq5 zWpbMF?pEOWWy_WsXBsqCo%pP}5F6sjCT^n%5=ieKWH2kq@N%KiYBB>0W|!HI&uWT1 z$}umBcYh>-87_V<<(Lup`AY&bQvAx7Fr&oJ8&jB<#80h;d0DX)UvIP`ML5Td!F@YY znX&jrHhMcP!&efT`{8>DH9ygE{5GlgN%6%GMhe4>hYRr#0w3E_=p(}4=~xK|;IP{X zJ%`)X{y;MX!Oh{@@L=INE9o65#7YYErJ49P=K9hKBZ)bAjK0CVq7Yv0Hx64p8OdYD z_;AyLQ6{ zSZ}F>_h5IZr)Fc#(RQFW0(w);Gpo&Zo7-h4?V*sbrlzc{Y8`9=dc(^bgds2+)NBH* z1cU8WCTRpxCGz~J z$eu!n}DPlg~$1<-fVj_>>@%gxW$N3?}%mUn~j@+VQ7And%FpCs1 z`}eRYj}4w(&;@SOUZ{Ye1BKG3cjY=4`HEX$JBeh;TGj@;{&I5R1A=1Z_z}uXD7Bk` zm<$HiSgvcPgHQb(RYt!7$Au?U8L-^E3cHZI+=bYKraH?`Lm(AqlHTDmh|Rse2l1KC zs|6dg9(w#;b!9$>OB5FtZ(;_M)oe9ba=9EB1&hiiZ6}M?CA7!)a1P!94zSxC9y@)u z=VSU1&?g98gj4iRVVsaH+$@X|CMiJ}cJ66n6q>W%dAwy{1RzlnN>I#PtnJ5H0Z<9VAv5$Y&!TxFsQ5$O(SpH#iJR;Srl8#SBTR3m?mJynLN9#`Gm>k@#qnbFj%eudQBn z{$p8(8B*|UUScqCdKKtH7SsqIm?b_wTnajJ0dG*GE7e-b$WlqEwbTMyq78FFWsLIx zUC$&aVw{l@;Z9~XHoSwr99hb&QN#?Qat)KH*tVTXQp8lzpoU3S)U`4xikN3;lA1|X z#Q5p?LMBZy-~f}Zh;_Z^9#N9~2B*gUs#_a? zMndalUWcn(No7(8I30GE(`yfckGRb)lTx@{YG&HwRuqS{K3xz< zWqGKvb4|mT=Y+c^2qmgnX%Z{XT7d(TU+?5=td)2>B6P|iQ>#xkX*dIiroo762{qx2 z$mqzOOqN2(5`f88&_RNO$-x)w=9pZ3ZYRAh5@PZcBYMl3eEeQVN%XrQyRexlP{d^R za7-cY_u=_PIOLu9p2dooHvA}2#PGCK!>AQCEsRDHQ@26rVoF7Aw2#p$V%E}+@w-kj zi@wk3v4x>KIL3gVW9Y*g#)unJ=xhyRQpB`IZY*TXikR6nIiF$i9LrNP2ZvV`JsoW+fagqGPpGVy!h-=us-h&}F5J4}5N$k9gj}4A_pw z^+#+rbS!N6=x!5OfU{b;?1aVa3bd;DVB3Z9d9a?Z^5 zm7#b$alR(8dCfi}=s<7gbp+F(!p*uD(5H~VqwhTbiJBN+mhc8V1&EanVP@B^Is~7Q zcXxgEq0%mm*$_#gBN)9&Z%~1zJO#2LCqF*{Rzq?)DV$Kgs^V4jS8!t4*Vbzp1>jb$!aFiAv#dm@YhJ z67C|vj%FpLyiN-SV)mFl%8%RykaSCU)vSxmvepwPK^8&v<1Z8|hAW$7%TVIEc zl^@zlYfJVebmbfY^6AOpmp6?*0z@HpDVFj zMWv1UPn@j|-fp#%IR_*S?ct5E88&M+X19}l`y>vB4V43gi^{b)zd7D&C3ELWQr504 zTL#NuWl3^2nYT}3wWEMTDHIjqFV1E~-|fI0Np^~6CB#8ocx6K}nKMUXwer{ml%gI% zJ3aLTGjiJT4?Z|5{+m2<s9>+RfEg{Yg?vGOCo3xt`@Lp| zNhSOND;cHYS5a-LgczyA>j`*+00+O@d$y)^^TAF}oeQUc54>7OG33G;ZZ(i}D6yqo z^eVtmWeQuW*gzf*u+FMwb(wSKz6e0n*+z{KN7xuruO&}XOs5B|*bG!x_yW#aPr!Mp z(R|3TrovKK=|}@otmTXiryx*nQTTJ$C|eBA-RDx#8kOm35Tl_5{rd$UaME_Ew=kM{F*J8D#s z5i-9ih{sCx%HDA@Jk70)d7R#g0YxR$*vouh?|+Zp3RDiC=O2CH-C28<9Yn!wt7+W; zl~7+&T|}G~m(>Y1P_YRI-HXnvOXpAWWy3g_KS4b^VQEGzJVRhs+w3FLcE5UL4lIHN zMQKUctLeVtGS;d0nAqH6HVa>^s8Q3Yq%Y9LOv%-$>9N__ z@};j&?OA?kddni1Kp@jnXv*X*Cf@2ot+wz;#KkxibbNmYD&SG{yL!f{=;$X55C}Rq z1Lz}EL2tv~_$k~bJR%GfrVRV?>;No3gaN0t)7E8G`VBz%+lIux!=Ky*1 z$w`ks^WM;JRWZVhA7~BZQZ#K~+zNWH(2o&TO0NuLth5Y#UQY;YsKRW-ZFHHHG2heU zRg6bL*Yx*b#1i2*;dtVh(Y-R136rvSl{BA=?-P*75UJm3)T;!zIEI(wnJZo4RZz6t zOjU!g(yO&t(AArFtY9~XZTTE6fwm^t2zwSZEwHBYX_i!!^de`mjg;CW8+pdcXw1*lq&<^F?vlNlh2HruCBVexh21D*}QoRCrv!G z;uwn0j=$1DVpJ;Z*dsJD>%Q3cp$gj5n^VFjhsB9A&tZ2soTO`KDm*LPB;hPpG=HK> z@qh>1Zfvuyu_!*Pv@lDR3fce~P$O&7ruy_X*tULqWExYBZO^2SqL5Z7g3U~&g5ETM zslpdMRmD_`GFXk%>iNi?C^pdR>XqUZ5w+0G)F=cAeSoRO!&%oI{!!R2b|Y0rTKX=V z+^fLuj65%NUUix9dzv3L|6+`&XG`@eK7~uqC`!rKo8xi{ba^=t3k%mjzkhCfa!+wP zkczsBs>b~0d=&=&eBX}&Cfbs>qodT^-qaL6+SXMM9k4}TW3C~Va$U%T4g*~nQJo*d z)G2!VU6^oH%t;s0k8ppzLfC)(e)aijOoKvLabfng=R40&V%92z+zZpM-CuQnD$}T- z3;H)IdM8|%b?w0m=RaYZ6tS-`%?hFGLgiHlBfrNeq#d@qx4=5+L|^!-AkLlcSrfw9 z<#YJm0n&D)e$(15o{-mHhW79QX|-LP^DoO_X-;wMHBs$eD97fg6waCPmmlmtyO(%d zeH~()h?4}(3CCHC#^REcB2B4&wvh$$kaSr=SC@)DBP$Phg34~Fg&u1;U!(P>+D+b) z5E?QYdaTxFz6R=`(pG7&BQ~GG!=eedWEYiab*1J)K8H`^R{+tQ0s$4Z$SUi-0VTad z+5mOts(hc`Q|!sJo9rBlC3qd+<~uDdrY_#2x8oo!1mQ7OxB-2}DUKEB#ahG&l69~i zj(o0`gm|BkH4;;gFzCia{%NJ zK`&GDpcbR_^EaTl#*Lh{^l_Y-!-X5@NHjVF(OxR)5Y;}|p>5CW%n7dvEp+EL`}i{J zZc7{2YOOQ{3S1K_l6^1XRV#$aXjtZ}Kv+PZ74D$pb!6)EIO{kI8h^7-SAhz^<-oY7 zvAQH7ue3N_6$|E&5oeuIms?P-ZQkM0W9|?<1n3Ishd#dU)v-NfbUpNyMEP zSucyqzwjhp6h$29ebH8)x%9m|+K3Mui5`CYszx%g5!^`w^y~8jnHELWg`1gH{Jw*3 zi%y1!;=-bf=){QVU6x*$c^Raj)$||HJ5^n~GZeiam0yUx`qZ{)gWp}4fA!97S3OHV zywxTABPVk2A*Kx;J}fFx(eZu%eaWGPr_(x8O91DQw|G?~7@WM!B4sOWOpv2gIz*Bf6R z`oQ#Y4=7{2^bIxh{zq@0RYA9I?exRb537CXJglz_wKpHxThR)e$y;-djC@SEW2{i3 zEYjGvuG^{80af)F6ahl6vMEy-Qa>s9-$fVYn?i0 zfjch%O(Zf%MwQ!kAOE;Bc7_tx6s^w9S-N;uCM9aWU=6HFEzW{e(71A{ ziP5dbfRGfK^RklGY1XR{XvvKtF8BAQT*g}l(eY6iVdgdamZIHjSG;gx(3SH(jVxn2 z6s^6fS9akaeh54YPzX?^Rd2IxDT5V<1mg(Sskxi1tc!6;<#$R3|tuGI6BJceXoT)VGp`& zweb3smIaUui%N2eIV)%7F~$Xq^Bl%-VpRdmhbeKX8QFR2EXXIE-RutSuL&#B{dHnT zdu$$u%NuU4st2;ZE;Ug#Sq3E>m!%~SEs@0L^{_F!InQf$vmUgoYwPis$Kp1+ zQ|jV_%R!LC;D}JI>R;^22JICEMK_Y8pHIA(tP`rk8ai;EITw zH7YkLIQW-=w+Co!RB+0!-I*Pg9K(gjuRincD{}H!Z}pWU2!aiaw)}AK@+b)A{A;w$ zxtG4u+oH{lxS;AgyzWXv!l+)axYIyOGz=Z|F6suk3h4Mb-_AKq-tCr@d+p^I?D>l= zMwSeiFB$vV(2g0P5#eNUh>b?a;xO0NUXn{Q3&ALrqC!tS$C}~+!JEwe> zUC(m{XGU43HwCRHu44NT#$dnyW(4i0LgZ~dqH*-W=(KpOcSRp6C;HoK6w7fkT>|HL zS{!{R=QaC0(f2CA33lbY+oMg<8?ZyK>>Pg88{dFa?9!3HqY3+o=~4)4;g)D@5v;9p znOv-@H(px6B^y}}i}ANc7>4J>=pqXv3dZAhBK`(mi${+!BIZLl61zmQrgcfx0uXM6 z#|4z8n_zL-as)Br6C`HVB4PrDAOfKx;*BlR68+Lq#7KnKBlVrD}QTZ=bmbP{2g z@FxbgyLL5p)VDVI)*-O6E~_D)2=T&ViLS}q3T=dj^BIV@EG|hch)*b4hVyF8+U#yZ zSJ600FwK(;DI}(qHbpz|tKLizm~5qm(Y~X~OW$45exuS0PxT!icBOk7dh7eZ%=G9r z=q?nC;H9q{BcDsk)rrbg#Lw{8McrE9LfuMd$lS2Sp{y?2scFKQ{)g}B@9E9o%=q?U z)ifBjq_B{;@d&yRI!Qx^3pl_qmXKiobvc|wrcM+-0KElMknI<{h>&=_PZpdB{3H=|O8b=QRkDc-DVXogVRPrkLTu-l2a z9-S?%M4#HBFI!YU4ALR5xFpV0#6>ft#-ODF>Y>Nh4a6s1oH}>{j3(1|EjqgQ{Ue){ z;5FG;&cG%lCPE^luEi|C$$bafo4TwUxoR;YK?_4LujJ2l63i%i7~v^tsS!L;XWQl= zUs0>X8L+$UqKuoJT5?+8BsPo90#?GJaaP6*iaaPRVOS{4PlP1MYCzdOwROwJ4PKYW zE&hj^5)-Mc3pFL?OnHmNVAOHNs87^YwkG1DCW&oVV%K6=1yj?Ot-NT4Sf|BPy|uxw z4tjT*~@f@4@>cw#b{zi&EQ1?p6r$PODu+4p_|26dKbsv(#p*RYcEm zKDv3*YOd7UVu|o4sa9(=Ak^nmQKisdTEv?(|?qSGM8+TgYBfNCgrY!NlB(T!0$0&XUYTEE($MK|YBsov-hs%WCDsv&eu zobArNCe98*qp|C9oQ;)%D_|iX2jd~dG5Rv9-IwUCD7lm>&$-T}?*kRyf#cj+>%!z0 zCd0Vv^#=m65^51PFqdYL>YDlfms78m2b-!Y>s^($C~Czccx(ZJ0%t*AF=@Fz8_3f$ zKK`=9=O|avVbX(DWxMt)?iwygo_|b`2zR~z!dI#aD7S|lE0d;AMdqD2W0hE8^cJ&4 z42wrbXTc*EPFxx^agrEtl3X4%s-c~IGx0{8YM6+hfkLvF@j^J{^@Yk>H`KN`oHlS+ zYSUU*h16a{s8k#Wj1GMSLKCT?pq2HS{0NDHNzWP!QYQ)u6lnusK8euRC;d86i7Ef5 zqY{^oA#L=ADN%u=Nl*WalSRqP$8hiB$)e!VBy@!RCP)&(%vSML@*+u0b7ggT zZBcc4p|-w81sxr2n=z&5a)A?5OfKz$F|(%5?OeHCN#ln9MuTtA#%S*d@rVK-J)uf} z9xxS9={wo!bt1rTIh59@slpDy2Hj%jjCGRdk4v;Zbx4OfGj*xfK%So@VMPGa0%o_^ zD?2VY#7r%H<9vQSv&d(zgdK!NcF4-h%6wiCu$^>B3SEx6XwZqOKm?8p;Z@+dHJC9f z#-OtZbci&IWDZuOB9v#t8Zxu@USy|tS6+3Q!Bv2l>A00>Bg9y>01Q`O<|u)sWY(*g zKQZYHUV~S4L^v;n#k#1JW5)TSz1<5T*QP7UBv;h#863IJrQW1AjHl@wnHL-`W#kW1 zH*Z9^8KaTqnRzRWxt6ON3AlO?QTO#_q^>kVgoo%mOs`C8Hrl+ZzeVnSRA#VptTLu9 zl2*?Yxbvfl_64%ju?MFpr@`!1skyAr>VXHCo0hKon0vH`ED(?=nKMnh>WU1`3^4{OOK+0$484JwCtQqMtVDxf9S~DL-8jTK%2gj8S zq~N#;X)?%Bn=(u~4ns3!Pl!X=4IUf-5o>kxE7D#Z4Ai5Ik}f1W}(5~W|z`NDdUbRi6BkE#*dKmR12 zDv~my?v5b)=LqrmMUoSB3w5I6>f>l2v!g-$mbZ<&9B5cBqd1oW4Rurm`^zBcu{k)5 zF@#4XPQ-|@gY-H}^oIpK5wRfULFqPF$8N+92-(o0UJO-M)#TOWS50_p!BG|y|EL$i zX?Hpu+k4*FAM#cP8p|47K6@a57ht;_WOB&{q=3arEk#zX3OJv|!G}4&h#T_g%=5aE zB}-miqAt}L3|0$owP7y*D2|+KhjSx_H#l^ErJo>QFw4NFNfx1YgJb0%Sb+9bWt90R3G@UC?1iE9!t?NmmX&jEOUG zNt#Ed78VkV=)<8=^&renTo}Iik%|@>O5Z|DggltOgI0P#%t(D6IYfst2nFPE#^N;wZB}lnHeG`qCfp{StgGIL zSVAIw@sPyl@P*Np@#yR(jtDQ#0GcL&?rzWZP-89^ixdFOuV-O^MZW|D?MvwrorO~) z1Yr#EUI#hZ0KyCj#HAN4&|CN-q)H*Hh^+*GPY@RUE0P0QdN-y(9A2b~ID35U;oX>K zjY4J?wBso7sZH^Mxie%k3(n&`AcZ7qqIQbfDjPpP9Lp_PU;(1#5S6v9#Q1p3m^7fUXRYs zCWTPYyDWOSgp0g{G*J4d-Z6d6MY;qpbLIfOgDO>#T{3771+N{U8DQoX1DPYeNLvt{ z##&2fwk->Usk|_QPvDV*BqoNnVb)zxFMJyrQ`ksMKGv&+SHR*Jg_)ibD~^)3LGQM{ zR=6P-$pXTQ2H`owXkslbnwDU?nxDBBQ@QJqbl|wm?GVGzD7{gGnR}qOI_O~g_u#dM z5cmhT#jmZ)pyzsDtjr<7l0Y_6G^XWd-LK8HVi;OTmN%zvR>oA&9f)Son?fBTFZpgl zb7WL8d!uM^$3$TYoK{Y#@N}VGcW~|~M1gZXw>U9t0alA(Cb=&ra`7D|SGpbN@EVyl zLo}pU&*7`llHY=&kxU93{b3QW=m>U*jN(MwY~m0)CAMb_uju2r5*9OH2GBT55x>?s zOxS4#4F;hlty({ls4%Y*jG9TRxR7@_CBoB3qsH=6L@zF(Tu2(dCu%V@SEW^W>WLc7 z0)#HEoJcqI3EZ9i>lMqc%GdC8cw`B)4OtZZw=3qNOMU5*$bx@7L?2}S{|s=ZV1P3X zGCb){B-&h}l?sdK5aCWbPSpxcjz;$;TZL;QDvD3c^iN_ue_iB8F8F91Lr1-j^z%W= zx8Oa4Zyf1GA1I$KG3fFOmb0_5>F1xL{poB~3@tmK^gV-0pJz?k>B%JsxDTCh`dqWy zTcx6Fq%}T&%{y~;k5Em5nej<;)*P79JsPjR6+uJcCPDt$3kZpR2}d`qKhQFL|C&=M z6T9kKx`SozFuDlHz{UVjc#L*4+qzQ{kYa|EaX!ydz$2_WL~67+JRA0G+o}@Mg*TW! zaBu|7{uaK!8d3ZN_CE?w^Z|${LTS_<9q-7UC>d8+w8Bt2qEFE%P|+ak@j9CAo4r4X z>gFORvge|@Nuy8nshgq;A79(p+&;DQAgUc~ES2h_H%-AH1F5>msC*)NGb3WVNUThy z%Bc5n{KArphsQ;|hZKZ)qle3M%y-pCPT`pSb@aCJn?`S)vH=dk$NO3i!2#%uZyN6~ zhRm3L^?Dp$6|`x)jZK{2h^f{*Um{Wxg$H2ba2NoCK3jG=_EcO?7Q9HtEL=Q6IR|EK z$ojk0Yr?6f6N3kXJ;S!hlW8})5fWaXy1jTm5D&_T$3~_N{huX##kZbsWL_)l+Kdl< zB%$@C&9AnqtDzOTT5H-7z-q{;jI*;oix*9}%kEM^lVP2{tkjq3Ujlc9ml8B@E-9`QJ!z;1H>z zBmMe?4=xQ+bc9oSlf)sSW6wW!{zaw)OxhA-o<5UZigNptGy{^{#;`e{sSzNAxbeN9mTXbz5{Q z0po;M+E?wvGMcCVSH>2Z^Q)tS>qHy{3H10TC6Ptw2(IW|BhsD!Ukxtu@njgA8W332 zBCvS7P>j*}^@IIus^?{Q0JGiO2`#2lF-rD%LJp4sON=ltMgJ)Mw@2?0dh{^!>k<3t z^lyaVkAEorpAX}cDOck1o(H8PyH~w_c>m6TC^^VlVQFhLT>b{NG_n9%@o%_`X=G~Y z%@UI}cs$VO2}scsh@LPY>IBeCjLV`YMDC6{07aJ?aP@&u(q8k$<9A*mD79Z`>}$k+ zCH+iq?5(|ctDY+!LTn#-p_LB1;vAgr&FDMv{LJ$YFu9P$rC=)JdirdWF}TRK(EgHr zFvJmI$n=MV`-GTh-=fbcX@?9ptZgiJ{hBem8q$$5dv$njt~J*eVqhQ~k_m&q96%>3 zYmm5F?OK>Law;PFznR}4iK%Nl|4RG44XO_|?f%&DljG0m<5QV^L#XLm@-Jr6B97~` z79Sqmws{j_p~@lg+A!fE0@pUNmMx1z+*)r8uT#+y8I-%W+C4TW<_PTIL6{2zGE8pq zYxG&{44&xpoL1xGg4Np$D^@+J;_L7kiPSV@aER08Qlh?9-lvGR505!h9|dsiRWo`T3EYv)9$&W~Vw zrKj3g?^%=m=*#fzwKzabWLV_ZsLhQ-n=4kv%%b?=ntrhE}ak!V1}Ywf-MNztIAfK2s3#hcvYyM8-%qa^0D4iHba=gV_YMz{# z#j=;t97O5b&7l-XB;&4RSk53w2g#;P9B>m72{1Ad$)0Yv*Mp!noJ>asKYjcpl~OtV z-OFD*q$=utfZ2f~_!Nz~wwmtv_0@DOGpnvt)A?(vFICgs_(b=Eh=e7wqHFrh%K0NR z8kaQ&JL;-c;Me)JeoYX`fR$wPp76dFXGw;#H~T-YtFwppQAykQXkA^3#<(hH8Irz# zU01jBy1Kei%9yXPP;M_O^d3wY?l)E=$#buNL;bp%V;748M;#Y#frXG_$PtGQRW=YE zU)iRjugEF_m6b|*r}Q=OEq3PGb!Ek3i0JcRzqOkhc%-b0IF1?8MEa9plU|MfU8;Ng z*We$a#vW#;SZd`*=EUP~T^WKTn4G^f0VP5wN`y~V9;&TU(t%RsO{Tc=+*vLyiYeHT zLRlLezc1ib^+c9XXdULd_#TRPvg65r8`@iZzH zr`_f7xcn~hl@4d3C^WQ+ga207wS7kDWAvt@^d3sY-ct4T)-|0q5&<=gg37Q?#9e~e z%Dfe$jKx-DE@0Jx&s3w|mS2}DqM(Z3KtZo`1lF8gBa7EgjTJIj@2s|m?S4CQV!(my z5fP`t>6WieNJvS?EUN|71fff--%@U_)xcEJd*9_Z_L}h;a3WOaa=G2&8%Kp7OWZ_p zPp13N4`!yoXhUp4zKQ4ch1zuW0w{s}2Ai*9^9QeOJ%s`area=v$yyjYM(BqlIpncEa_JAqx*MqaGi+Ju*9Udg z3EoBa(iS@+ySv%-d?V}+)VGToNgLFXpf;ez$fcs8wx%w>exhmxEX^;OhXrvwi$*l9 zeh@Z0UwBERpQ2y(0D`qsR535ol^W(49ByrF^#xoaIR#n$qRBuO7pBz;^hn4ZIP0VD z-(LUz+p5=~r6^eJWZhVr;)ljIyt7kNUQ(0Ymbw+ESPi}j5?7&29nku9UPBP7pt26h zVQ#D2>?tiz@TVdld)fk+Phdgqn!0oXxvo;-)@Owqg?u{r-3|&CS z&_B@x8i!TEw+mq`KzPoQ`p+M+8I{$CNT{zOi@u?W$9%am#2v!j|C6?(s_8vf$l3_V!9w-=AF&CC{Hsj4-p=xRYZiYwQI6S(FPrO7tGIMQ3(nshVRzmd^jBWCn@ zBmt7A_A+t8?;6FF{3mVQXE#ontrG5)EskG}sd@EY%nI8e=(gFa!(cy#0=31l(|y$Y z+9r4nPE2c@zs2IPI^A~ibKC2mf>;{&@JBBQgT~+h%9ZfInW-PlJih3wRT$|O7HAV; z9;62s0GT~+W|qZnaH{AMdX!l{__Oa-u*0{dvbn0Yy`~3iCJzpPCt-;`E-#}XD=iP1 z2{GM~r0XOhr&0{@usD4C^^!0eQn>L5M=!MD3>s>epqFRmO{N560-!xcLJ!7!c8A^L zsdd-+{8cq|?gs3}JEVbz(n6JxDAOACdgY_icw~R+*IUZW9wW*IV#9jOPcB26`kuHZ!XMQL@tgg%7U_m!Ptb4GC zC~HyGxL~H!U>BP}{OS|;U$JDb+>8PymO;IC{&D7In4Y&rldUi0Sfe^uGuM)B)$*Ev zm~-;E{7t(Ky+=`5(dR!D1_|R;pyjoEDM6b8ixG3s+UT4h* zvLNY=Hx6{2I*Xi=O=(qQ99V?!LX++)N1fMcsWW%rl8HZKCxyhi`)=r{Zfx7Wzxf;fGs4kj5~v7xLbe+GsY5kg z!6WGaYK+$wLJ+Kks1n&3wsL!2Um*kwI<1w}=jN59BTT!9L#Z+FSO~$_V-~bS{AX*h zt+m&;Vt@bfx|#@)p^Dy}59e^$dXlTVSQC*0DSFW>_=9u;q&dc3N7m@8%CD9UDw(lF zSq!D#;#y5*i3it9Qs?C4rgj#czyhDCiNY#oKm7c*|Ccg4#C6<9AGZa)PGp0BWs_8R zD}8>8!=g%pByJTtLl!&lakM(xoUOj&6??YeM6K48Wd`&7#RzzmSA`q5#&=9ry#nJW z6$t}~B}HP@noS0tOt46FJX;D{o5{&y+W&}6g0;0Q%2GsljFOAoT9Qd|IOn8f-PrW@n=>-0XGP z%0)^>s05RKYoN#?DuX;{ED%<0((B7iF4VJ!4HbD#)}}*ESY*w`PD?bW6=^kwWf@}q z#j=ZUYF0Q_08%dxyN=!92 zpBHJ1FGq$;%GPyk*b%t8@H7izxp*W+Ct_yha>QF{EaUd+gKE?r7ITi(LNJuNNn$Fp zU{N*>UC>ZRg#Pq9iK)_BgKtsUUeV&dn#x}QE3B)~w_oN+y{7QALtmQ}UQOtf-fW3W zi**y~*awRyU?4KBIrgA3u#L$oY2TuPp6b2j>z!Wo!;Dq)LQ^1{tSHUNK#RX95+|~U z-$XYF!;lvb6c(?_E>wXP`JI-U!b8hoBpJ*;^g!IIZQGP|lI(O`&n(Qf%oo`WZmtS~ z1lQi^V=-WnF;ap=M(A%+LOVC0Sb_U~7PV(7?Wi9_>Zn%bDw%6VwNmZ$}4+1|%jA zhu-|L_dk5^!1lT-pS=Rz(EtXR;li*6-JzC>#*RRt@oH9^cG+kcD8u{2t+vgmqulEh?2;y5Pgwfiv6EpcdE1)k(e zkt#6y-G#@@$gg#|E^!3vLJb}gb_Sy5o-D43PzWovIHO{v8Z4|-Azjkyvj(}a2*Pt# zi^*83j$bK~1WHYqaptTJw~996N{d~uZBp(4$E%IkIoYYsWVDMAa>V5b(*a4R^ zi&y9omnB`~NAPt>^sU36T3Z!(+%BJ%&|8H2F7YI^TC*Cfcd_OV-4UlHjBe5!9Mm0NpB(kYEF?*CjDVqRZvc zc?x}nUSk-A#p4WmE6LY1R^s&ftacN5Pso-ykV%RY7xQyPY$2;h7YhrAEaadhzq+$A1xS)d5izj(?o&wVRf^hp3%=&XW$Vb+N$%DlYcfPrHw8X8pqpJsci_TC; z1cl(16tB+7OEao1=ma8Vqi=rmkvaG@-W*_+VqtjF}=cI=Of>;HI=r;Q5$m0zMeHC0}r z*NMv-%!EYCEQ~0#ZD^7&t(7D$YtUp|ueISsv&)2=Q?O9}=7$pL?LR8%Is|36{tA>` zWsS$eu;gEZvTadNHYgLMsR-=;Ucf&Edk?))Nvr=m&Gg8G*i&QaooHwpThU#ke{7(y z&=o59&ioU1?z+_fiC(5MyDe^gA(FC?V~hw4Vj5fEpp8CjqXAo`t-Ydblef+p#HDNc zmU#GIr!;ity2iO)at^bPAWk8>Scsc|eXMq?>$H_xFT!3$MH!j-UHPx85XgTIi3rFO zj2bTAWy5ues}yB|M1r!@3!~(Ou`AMZcx0#km&pm9bdg|`A{xsp^b?cET7I!kt{v$o zzcQA2F40)7L}OW26ZADyw_~XW*|R=zwyIYrDx)hcMa`~AM2Pf1{{*v3QL=*Bt*Gt& zn%RShOm*ZB8fLE|)XnS@mmb1}cJ^OfXa{Q{Z__Xb6fv*Ue-<(a#f)!s(WZPM7|kkQ zTw$lEkJfr=C8rNAQkO0+yR*FSs8DCa$Wr8-Eu@3a>#*D|x)s@tG?%`ucaazLxAf* z{VOtaUm5_dtnld5_lrDa^t2b&M)qM^1~;lAdoGbBVtP%dB74OZntDy+aU(2l42*1M zUK2Nj+xjl)H9dfjg-agbt{LZVVh)L0k$3yyv*YKN{g8RpYkD^Fskq3+IB}7SUXwTS zGjmwn;3Dr|suIL+!X4M#JF>eU_C&8qhkJeCMC0bLdbxmZL+ab5jjZ43)riZ~ASVYn zr^&6WO58rRI)ixhWe8Fds_K8`8o#b9^*!+#5sb{gcnz+AVW>^sI`PUic(13hrT~l1 zgDzjN*3okalk<)h!9172t`(D}u0ZJ6>fPhVuUbZ-e7b2-EVE4NkYU_8xPN>asW!v=*B+o~0v2*qQ@nX}$ zy+WKgCb&g}2N;@y>qoTsFrkm@N90^t4MIFVLwK;S-!E=G&@Va)pY<(OBsN7O4E0JY z!oljk1t`j;CC1#oVLU*2@Dsf_Vzf@EWR+E|t zJ1-0AC=+oQqSpt@B= zzB@5$Ez?vNxifrec9Y8>hM2foi5oh(ojejFk&P#o+aNT6amywIz>6*u@BRw_cnqDi zz5g-A-}f=E<9u(4+<`Gb1_l75=p;HDiO%;6ud0L$77gFCSawZ>IrKSPermijsuF&r zSxgXR#1?RG4|a#!{55(^lH=kzMxENAEzsxT6Fnv^0Yiwb<$@MGhW-l2Yq$jktBbCu z43r^dz#DF`wV=q}BE^`z)Lr7zxU^_7`xY7OtD^dK5mllusUg&bwTh8x*VZr5J9;Nc zg3FCX3rmYw_2p#->R}xgP;G(Z<|fhDUa5*& zvGTSO4w<<~5l5F|W^b~jU|~whwS`{zqz^~BA|9MMt}=VTv(C4@tTRefv?Hy}C9W;N zT3CzLkiudlB5c7lL8?O+K)xc@g&^nEY|(00Y7((;uzUx>KC=Tee+Vm;mAiel9Ton4 z*f(pXyP+c8k!{mQ`3u8@3dZ9I1ys=D-WuF%_p|ui$Tu*X^hT{(Q;N4)D%C)KxwXt1 zG)IR3sr`l4BJBus4$tx;4bEW4HE^&l*H_{21nRwEWNqN8ENj7Af+-ihuN0r5_Zh*% zK&N-7lD;SXvdRbu^*91HpR=d+B-ZWuWo~4wC=oiy=Zu=wYZB+@T8f5YBm+YPV7 z7VaaoqfWrag%M6+q(vCPugJ=|L@ps>45R$drW)d||AI>XBuurAg)uP0HWvmN7`oiC)L)uh&bcpE@N@m(Qd1KYdELjoy~pZFN}1)fX|7QU-4TebltevWu%K zs#!!Z_Ae;I;Mp$5QXbyRd$>CN9?Mp~43{9o!B(5~CQ_oyHKoHmejz3To`KP}F-TIu zrGRk!=n7%YH$xp3ad8ncZ-!tK)QENJgCZUjLoL+uf7M;$T3rYZ(4oiaAbPiQBlPGR zittgbnCAjV^ofxV<;-qg**XJ+yJ3RxXlV*T(lzp&uu$D)b(OX)rjO#0X)t$5VTMtQ z2q`Oq5Lh^lX?Xmvs$omr9u&|&><|_R3Y9QX%v}Cz`7COubu5B{O|Gq22x7m?Jnhr6 zi@hZXHj)Y%9UY+LOQ26-7Yg!^g_rH5QU=w*@Md?N!!Ke~(G|opAopTrLHre0Tcpi) znQ*bk0#YOsMwx{_4F=&U^d)Hj5fs;pFP1@KsqvC5UR>hj4SEM7+*vvHTZCM3Mbr=8 zqJQv_4|_*5k~C{+W8!DnE5c*KEiZLX*s0QQW%7&GZ~g8~dc!_d z8-&tZMw$wZMaGhZmzFHR`~$+=H=zSx)m`1Jg2suv;6nuA@egA7+)4+yIJc=eY1ir_ z@C$tNHv9}{SMPecQ-?K-;^ectuoAqirr|iQ9rCxiXPy=wOu)3{WM%Jq*^rvl7A4Ms z&zVV2Zg^W|qb><$_W$|&!|SHUDdG97X|rPUik9p6JieekHNXWpETt+htEjEPsCLVS zMT>@ynErw)W-^_Mj~0M%&{5^A4byqHX1r^eEATcQ@Dm-1SbS$zQ=W(cXst$~8M8#V z|JA3g7Q`z=Y{l!MPcET@pP961Vy50<^{711P``oyfZO+YKp1FGbu85+Yct}IN(oub zskPV@qv(7MMzP<2i&r{6UAiZA-O|0YPo{L~Lz)H@D7WA4#HgcF+gwE6TefL9V*D;# zrsrp25S0iwX0FIks~~m#vVeB$;**bc&T&{w7K2OUT~m*+|KKUY6VDI&YV-+J&Mqcl z(fR{a@!1#Ot@n&c68gO`d=7fvL+KC%kl)*NG-P!eRaP*Ww1(V*Iq6Fw9?}|dfx71U zruJZyztM*Gt!t}mD$6g+#}wrJWd#U?s>8KMceKA>UsqmHksHn*JaqCX6)djPHkSHX z&TKI0O$o^`m(1I{>HtOsBj}65V&?D{KmVmGzB@;yh0z#{FM!N0bVBJo1eKrr_`t5t zP#HQ1-Ns-pCh}LN&KXBcxQ2-V6NrUtZR>5VW#yQv#f4eGLHsuP(%va(rc74Ya;z{ zxXZoOEviVlZ2ziv5|pc9_SkvCy*R$O*dqQoY);pDM+M;8_oZF2iOc7uh$E{+T_0-2 zq4B9<4lFP(*00vZ>*LYGFIuqax? zCw3NMgopyS3LQZCVO&7XOCB%81;cX0{yZKI*ih&(A{E z%4LqB?$xJrPFt~p+vV*!zGeLZ1U+>Yj2v*0I&U3xFG7yQ^UseEZZ+vZ?73g{-J&Iz z`mWqA_MKOcrR57uQ^da0EfM>!(R8`*Dvwm}uixs#bw6#aXHCVcRcq>(_QWH+8I$>0 z5mtZ&TO97KXHQV3{t)sxcpK}RQ1f8*3ER^zRL@1XmUupqUU@L(=XdmIb0pI`X0 zUX98}Ly9&Rg_T#v?owMRQp>om)o)egk?w`%EDeNtZ|OHsMmh*;c$xH+TYS(x88_8rkWFoqO%wXB8aXe^qw%V|0Dilx;oXj^HxVJW8`wfJUC59a zGmN=tB}=yFV_q<3JT8-oX3cF!&R1p88Plg+r*$1JHc{aWdyIA2Tau6?a_;O`^p3wR z{&67oz%$4yg3+At6{ds|n@U>#4{`4SA7z!c58Ebr%({_veb{x?3HFK=8wv`7H0g+x zPyz`dy|sWocvLJTp;$anEKxY>5|9Xes{EsNIH+hrH3z8Y6 z0olo)8L?GMTgPso$=Lu;&(6YhEQH$-etq_~yM*69uuI^+iOPA0U%sw;-$#4C{~O%5 z4F-?COXZpdevyY4K7OY-@-bS7*`;@Hpx&b}C2QrnB5g71J<}*H$GrEh{bR=tlha{l zqVE|IHWRDvgLDpB5ZTZYgm|Z6MYIuFtHgUSAsr zqUW)*ADH@*qzY^u-JSFn<91_rUJYWyD^@NY9D;5~8`uKNis6)96+ec=a4UP3yw1kC zgRKpQQjnROWZ&rM&GdHTznBqu3wb-{)QmbuOHwoFkRE~o3I09&z2)6|zs=+H_o;6| zZfQ=vtX>=obL2_)ydH9j(5t?Di(X#6aE1n4#KLd5je6erR}WqB4dGtdICt(Xw@teh zj4OS@Hol6ew(a^X-Z{;w-Gn>5^R=$ftd^g(lpwRFGJ)QtY*lX1 zb{HHcut_oE)>u(lU0H*-)a5|do|Uvrw*Ue~l)36+2smX)zZA*di2Y(3;pW6IS{t%b zT5C3tPf5er(npM7a5W-C`k1g;RFbDkz+&-Yjh<~9kI}QJkMhP^c*C5_4ifrXZa;h` zeVw&uDqm^-Yjtl~XJg}5kj^5p&OzL=@-&z^>!zgM&80t(J8P-L;`@Eg$E1bZsCFmk z$YrTwl5Y~OG5SR-tg&61J%w~i)(0=?R~y#94DM(4Tjy8K|Rwy+W`2*FR^`t7d^i2w^478_@(7 z!Gx>_CSd+5Y1P!|;mS4H+%080NdwoA>&?&1$jcRz-11nG!!25~c4AEat}SBn`p(lk zwzV|XRe_h)n_F9$CWL{f?uE^_e+0XM=3qV>MLOto2YtA~RF61{r_99i5Zp=x_7p^> zPSfe>toc;@DB-5xbN|>e^oGai4N;~rg)nNR5H%4?U*X}RUU_F;OEzMpsTpx8<%L#k z@@qDAVHZ?3-Miegz9olcJ&g86@wb|V>$i|k$eYJ{_K*+ArWXvtABfZ-F%&R+x`ItS zmU2uyM&*|}`lojD276=q{`TG9kypWJ`NY@46{Y4=maW8#e%F+oLkdv+g_z~W3*m}K z?qQr>kDYmJdsb6Xi=thx7C8B{Ab`yAX4H#wz!3R_<y^CL)RGsi#&y3I25KO^f)`r0uA;%4WA1 zk$00+039`kokpwGo52io1OxbM8s>}@;T^C!X40o`g$TAxF z#J6IYCX_8y7Y$(uPf-U{CF-lOEyyd&jk=XAnwvUX5~o^=?viEBw&pcFa4ZGE?bBU7 ztsuWvVIj!MnoeFI%eUy?9BAB! zmKdpm@|0i7aMi=r9GYP~!8;BLTT%af{*p z@~=k-CF6o5wv$Jku@zB=HzMxY&7X>xJaEOZ)2J1UAEzVoCS2^S%W>A3i1#l%%U9c< z!5*yVWp>)?fsr@chN#Dz5x4f?X46LAOxu4DRJtX?H5U@?-utPqpMNXjdkxNdcH~(X zBjz2dwhK5HhiZ?0*S`lfQY!rBVmw|i`d&eeIBwQj^tk{PQd*$1 zsr@zQSan{bbAT=aC-OBRQl-BJ;Yru{Q_dZ<8NJuQdZc272PXtWTK+ zt{iqaop7!vJ~?>w9|Aq_EIZmd;%MJ9!5-Modf+pIhaU^n^IZo67r$co#h>fng$FJW zuEXJv4jz8lxh^+w+BrOh;w`! zgRQZZwZ?fj`oXsgeSZvVlj0F4QD>k{bb&UZqek3m3}T&cMf_m6@T3b_gomo?0(Quu z8l(RVAd@-(Upp6}W~{Dd5iWp`hXU2rzDICiT}0A|1M6{Me8jqu2mUe825Pjyxhv`e zZBT+XICn)b!Lgx2uR_l_cjOI$0rM?pkaI^4i=Sr+5;j1GN6`n%5|TI42n*Q}AuSqY zO-~B+4UKP1;JLE!Tmf95Dey@2YJWor%@<@Lu0sI>0r?P9!t(=NLBLvU zpcyhSVFkVx1s-hKfRue}iS!wRzl0~CPZKG8fOqU~Z=`<=VzHtBdt>FcA1__Iux zDV?t1t6Wu;2oNiy{OiK<<@p6bV>qI4&40%Z|MEY}hJD$8|GziWY`)rERc(XW9rd4= z!}3b<^VAL%&U~644rulWw~r z6X@*z7w{Ew2Jroa;MaKbD0>q)B=}|_O~?9HVQPWhO-nouBfb&d9p!jo|MOE+BJ;L?`U-=as%rNToOq^VZNBmtWJT?NTt-NVCp7U zV=JCtD9z6=msUmflBVij?B=k&)sQq;@P&lQ800$=Tu%@|#pM~(tHqJ*i6Z!lN>61J zIi9COz|QV4+sQ7{mWQoTB_5)x#9M%eNY7h_>p(aG6r^o+NQW|OZCbmstfU&T#l7LA z*6p>st#%8bcPLFA%)?M=I`ej;G?vPWI(48l3Fk_)ySkC=Mro`lO-TVOjpe-36qHB` z^4-$Pk)=sZ&PHjVlxI~sid_Y8&H`4DQ&OOm!JW;5veLF3IA$~&n5;3VmT1D|$|VKa zp5nTw9@1Lf&EoTnvukM{Kww-}rMdzRXEB{drTpoG2Tz|~aPax(7c6-G`GX5iBd>Vk z_e`sh=8q2jVja{Me`y6rdO`*rM`3>#6LrMvu@RB|HUIuDWl-F4AiV$fi)%k#jdwAjH)6b@>{q04ivAu)zK2)SL$B}!-o^}n7yL-LDyVuADO?p$ zo``(Sw~j(BWiyZ+>?c*!}+?j23CY@1n6H%Z^@+tWv14 zA)_TGzdj3lPT>zC#I>~=4F}bi2$4#q1FVint77Wwf!3g-vE2ZNwFa0I;c5{?ICQu$ z>8{E`M&R}I8@?^GAvrlSGdZOpqphu>u~qCJcU5a`3-$Ya>4OjT_C*PRYP$jhU^1BO@V6!&DJn)>2oLvEA6xT-jbz=Gb0e?XIsPy=4EA zA7=NGjk3CUl4~f?$n!a=uAmU{s+_WHuhKHh@v!~rBAH5t@~w2`+j1;Yw+x=j?Q{um zKkhhbIk;6?y#|QL)Wo#3B5s-g4yL@A;`>8T&eB4k@x8^rA3+cL75I~hOdXTOfIe4D zq-u2uC-e`D7U{J{3~CQVB%nGG`PKO?8fw<2b2A~P#58og?fj!*=XVi6lTq$FdTTvdA@)GN}=`@2kS(a#$Ofkb zSEQ-g80EYCbU1SQoi=wU$=a$igGKZ{znEW>khCoBu?BFrgq>*Yd~NfBXz{l~A1}Om zE-{Gi4TIaH%7*lY0G|L<1APw`^83m6&h9Fw#cnlQ%bLpi%nhb;ZMhsiCbdi_&!7J2 z!e{aH*OP~6SQ;J0(LRf)f;h@--a%S|w-q9NnV}rML_4TH?Hv8WdfpM=%SE;H+P?r- zdL8+K^sEPXu(&4CvDTVxSGnOuG?g2ihCRAQT^pybl)07W73DKap`-c?5pEO0Vugpe zDF#uIToTMrdebP<7a9uLWDB&qk{dhhJ9@cM)Pz7B4_M5@Y)4wuKaOtWe>u9MFuky_ zxHvHr=nB2>o3KkGDl}U)n+uT)6OjmM{i>aL6yFkqt;$Sk#%@u%bs}l>_+?HwlZH=!{ykrffYauFT_% zdLtsvoF1Qxg%`sl3W=0))FYC)gI*uh=ku!?-MnvYcy+!zPpwiaq4*S@S5;DNvpXDO z_SDw_Jg;v;5TvW5S(b^Q4v6GpbXk&@v_%$`*S4>s-onU7+;ED3mIPC$#bUInP2B1# zB}l7KKsX!gYuY@>jUrof8o;DoTUdc1Wwz<iku&)*0Ex0`e#C_ zrmeU>*Q$l~7D?4BHLLU0fL5^~>(ttr*U;!9TsLXZ?vr@cX1lgbvQG!zY2q@1DS?y~ zHI$?ku17F5or7;1#zRuenu?W3l$jBoF;x!^7#rfIb>;5zhR&_E+X9ultUrqXfaSpT z`ab9X%w8ZkZstFXST*{iz`H4dyh!1DS2D}~d1$gYt{KpY5j}}%6 zPvU1K`%9msEAcb*mwnFa*ca9><_Ge_^5pWosDb=&Naf{YQ(q%!8v4CaXx%fBNxG6Y_{9+&Ucorbj*DWEo0rD>+x_i>i=DsShu6Vn z(Z^ng7BU|@CbZo7f=(-#|9zuK zU7hXDLxHqP6YwGC|J*3D<<-F!vlEL$@8Hg}WzkUg!u#_{1dSdY`W3m=*V%tJ|0#r8 zjkMD@ng1-%#*)DL_4j|@$V8dZ1EPd`d11r3kps+(#YFT`Kn{TcwIGia7p+Go9CJ}J zWNBy!?CdFPI?~Qz(Lg>CXD_ip69~^RMVJV5DnV}bk)*QpozYf}3w;?w!J;k$&77y8 zT5B~TDT7Wgptk=Ofeb0Y{otR= zf6mAgi-X_YKJ2@{;=AKr?b`qq%dA+^nB;|cbp@#^chw^J=aD+oOvuDz(GV+aMUK>H z8dOfDHP@C7tPyxk_51GUO00P1@KJ^=&w` zuPV${$S|^~K@OjbC+pt`W^w%6@mI>i=i-hp8 z3r_vzjW3{oI2QPcYI>9jQ43G`?i;LMdY!L<{>T?@imzWyo+0D)|h$BBz7Vh;jJ^Mun@W?zcD=GJX-rWbvb0tuF&D;B8Bv zd-l2GOWun*NxHi0j~gMb$~dS?v|44>s?>CFY`z$~b??4SJ;$P&$>yRhc?VNFrQl`; z@JOM!|K61836phdEwm(rKg}64m)yq1w`X;TJ4wB}zVw}K?|jiqe{TY0&1PzHHkevm zHWRcC)oaEl&xRV+QP03^-xoZlt9v&)@mPkq@8Yqd&wOn#ZvLdBet<#%KwmvG}16^56 zEl>LVbTw?RJMQ>K_~X_kE9b7ClN7r#V-ML!4s~qZ(Y`T#OA1pr-nGATFDJE%3X&5F z;vvVhswuhi*$Kk6fNTGb2xI627y;oVIVU}>?rVb4EXX5xVmX z9iuysF<+eS94zAjo^avKAagjV<1R*i9v>h-PryYkMt;sXtS{g@=X~${6UsN?q(WP* z^m3cf;YF$(BOt~cJ01iQwgQkL0!xj~X;2YIg$1h-=bz$R#{0qgoej?N0z~DFa*UT^ zgPhnQ4Tu9+F)IvJno6!6>y}7SpwGv&7-{J(;Ju`@z2jKV=kx};<}^5KN+rp{RTG7| z^P|9d1Me69*@}S=FUpq}*5{N*Z6pV`lzU%4bCixI-;qsOU8{g!yKU^F!e}tf8q6;2 zr+tYcvl9!n8x%!wpA?a4*?CH+SHLGgG!C6h=hf7xiHsvf%4AhGfFS-nkupUiK|K}Q zi(s%uI`;k_JlIFHhu-=Rk;iFv>&p#LcQqJw7KK3r3gpPgHqcSO>Y)plOj;t6t29N} zziOcEY2|ix2v_15|Q3VLZbGwBa*eUOglBc0J}|m2rk=)h=YaAx-h> zCJbi|_N0n;XgmhCEqB&6w4_v}CFW(uO#gK54^e+5AGg1L`oN*KlWkvOHUU4!D-}Do z4$fAP$wp!Vml>0ixlX3m>&zxw%U{~w@7`(!W2K$68xLEtweS?WfSgo7@;I$Pt!0mp zX^yk5Kod?=E=ydMlC}!#|FdtbI3?k1dNa7PHBzlqC3#wip1Kx8|3&h0x2#!bgRVDd zC1|AYwf-r*%pp>&PK{m)1&f(99NTQ}iAU!>JZs0&<53=%YBR|;3mnz$k! zY{3S#X@1SZ#syew6Vp>-_vCyKwU6}JyUT14Mzra-6!ps9AYYTu`_BAehJDYxK80$f zf}8owb88;~4lKd3&Z9ONOg8h|8$bBAoBl4?=yZJV7ypFLc~5-TJn?w)#JJdJb7BhD zWzR=r=~RYnoy>qH7H$>(u>GI^`fktnQC)z2zmkaDeFj!^YCTFu`F~Z>w*Ei0UcUb% zE#7`51aGe9jXSfUI0qqMDI_tYGptF9{_orcW*6S`sXDt`TDWBuCYoy6>@@zE{ zB|@0^UqWXcb^)FBPT`x%Os;*^hJ2uF{A+yGJY?>TQDlp3Lv~}8p&D~`>l%90e@#uM zN!O5wL>pIT7)b(qt)$45>&kA=X%)87udd8_%%o&%DVs>PVP$Clr} z^?8ogAzEZ9_7oAaIi@3VUs7jYTV7kyEK9U!ZOg(fYpNISS2&bTg@g0xJy6`JB2}ge zGe>ziz)vsPJ%NlR6EbGLytsV3eK!jFP5wWk&!C`B^}Bovc``jd`g!aD)$m&u*^4Yv z=s7Vfx9zjK!`t`5vu3nvxz3Ds?7cbR)O);2p;bmHgu9kb!={Z}FnjX}^cB$;fUF-S zZ^#a&Uw`Vy1sM z?}sP`HVS*=U7Bse_RFR()l`7St&O->VS<@CM+vmR(nEEy43LSSS@ac$5{s1 z_5hOs{|SNBSFwu}+ELl)ZoL zM|_D_Bv<6+7Xd}|CFDM?{pgjZQ$5%yem1vu?ymVUbK+(tN#A^8!wZDF@0oF9p{RT{ zy-|(?s?_v?Y&mC^hz@u=4#QRlM&x=u`75`lZ&UA&R^iTP#lpUDvQnSAI*Xh2mT=`` z?!vCdW6z7WZ`xP4rTewlE#MF_v7_R0O@bNPk?wibuRERTw2snl&_KU(nl>@W33@Nb%4 z+w|&D@(T7t&+HfOgyUtE27Ai$#-*Z8e^6~H!hXvS4ATYU^1^vxh{{;fNw$HkFuWAR ztzs{!%5)dJE?m{Qrgv`FYRZ*hQ|lKaF|9yu>WCum84nmc&97I~1MKjL`-Sln6Q(>E zHJ7&Y${c+r#MD+{_XMdw0i!#|oa4;HL~y~#$MeD7P&6WEjfv5e8Cfjsb>3rf12~AT z4sZ1<4;_Bs%STr_;=OA7vR9HfPNP@q;PO>Fxo_zeyraR=05gAsc86qBUw+kk%p2L+ z@o`D0%9Q?v4ScW$vuko|3aYt}>186jQ&Ghvqd;V);GVr-6w{Z~7kgL>B&gN2zxn8H z0$|-><>sSu*T8-L(hz5n>u2k>Au#9KhUVP!>UK&v@mQR0LnRzNEk)I!Wpo$pnB2O$ zC61dvStQM~0|tp5yvoOGRX@}#{4YWRWjT^0uBA1?G{AO25ra4m z)NMptvUkaWx7~c8(&Lg_zE%GGsghZmIIk^L`iT++Uxd36J@cU#(Pw!%u@ zBCl9v0>zgT4h_Kkm>*Nuq^&lv$h}c!%CM~>_mTBWu_iC*OWKvPEq!YSS&h`<%yr_0 zWbJWfwax)%W9D;12!Z4{*P08>ayveBsk(}H5zcp?lm7x9sQJ(6i@1L8p%A-8C)9+jnP_!HB>P&0fuU zI-BN-$`h-XVtydydu^p0GWvIlsy4MX@AP=g9`>QY$?>`r%;+iG+(@s*)lN&>em!Yw(K3=1Ix0DH9Ci@fUk#oW8X)WmTjd4_r& zya6lf*1F-8jPPyIu;JshINbG(Fc3gt$|7#y&XMVq885`HpQnk|Ez_@rdNsmwsb-ZC zvIx*;GFnY$I*KlO?eB1JF5q^*51_N6R81!7#~PkQvs@RJKw@1oTZy&M$)Lary`fMS zBUz*Z&|F)>+At7}2I9He>Z$DARojj*?j{V7y-*I{U??{PSTl8y!p4R@LRd5nA|2NW zb8?armk>Eej72u_*|1IIRpS=&83C*!3=?x$4?hLLdXcl#;c>X>b#(6QRD{P{NC-rw zuz_qc)`J2jRRlVU`7hi9CFDhN$SI?+8Y8+5Cd?4B6@UA0vn*9A8d%%+E zu^PFr!uAqw440yvf2xDbsFFN%uf zdlIXPjz%B5o!rU^H$N^s4ql(@pQeAJ*Webv+exqfAy?DJWHB%PPl`BQw?VFon z_t0x?!lRGek#U=FZ4?&fEp!<`HZPNv3F^h1H_TjD*4j+oB8kEr8bjyv zv%!A0h^1H~ZTBO-IbzxKdqG88n|9ji4T&GWhdf- zcI1Q8Uz|8oc<>1!ddAY>cBIj!;ij@i7j6WJvQ zK9{nN?0~Q&qbxS-n1LBd$Mi$Sn3smF8Fy#;L#U*s%V{iq^i4va`XOo?X^OGN=B&?K zi|ncUzj+o^2dTx`Ir*HcP}JMK;~<FD7K9U@6i zW?>q5;bNNN>$nMbi;A`zDmuhIcUKtj*7rihZnjvMYY^@e?j^!Z zBFv%>;?sq=%S)hED^Pfq zA;7=@^WpM4W;_bWM|K_7zUIbl4O=*i&4LD|i`u?@9e3W4UAZR6hWgwzAq=q^oyy34 zTgrb3RaQJoBiTWro3%qGu~N9Yxc=#2`SPg6@4>_(LFYf0ya*Ei8W3yW?xHyEN*z79t+QoL3Hr#FB4zY1P6& zKrRL_rM1mXDYfbA3)0p-^Y{2SqJYAqzdhYcqcIq*cHCP~z)f|=oz^CM|%UezEBEtO#utU9*OwL&qlaN@l5|8`X=P~eVUPTTcanL_< z;LgyCp+&AUD06RFz4(4$H>cFU|H+{P^mlL$(+B6mg?y0gZ{FPQu$izj;h~Z20{buK z-!~zMUjk~m5}h#h#cXSSCv9tCg9)&{+ z3JY@gBw?)Z*#zOal`l@i3B^_wWRy`717|THau0@bXKig`T4QojL3-Tk9qV^SVVL%S z=Khb=yPsb1!C&8KH4+2TRu(=x|K2rEML)Pu_#=XwF&mPwOZtGcesGeGrI%6D$Mo{| z+XF`$ghzym=Y;22oOSWOv|E5=;=O!vG`fnFl-?m0wx!?aR0r91PEssI z6t;*gw%KdAEczQhwM3E#9e0T%x2(vjF(I_MK)C7Y`00dOn^JWE_K1kSfc2(}c;(Ja zlUk>NKN>W({k-oWPu>=;b&)@(WJn4y%f@u0xFqA5JJJ!Ix`kemR-e=Y5NHpF*`dPj z<=}~rjaj)A@##r#zudcW+Ui*klBdZ0y=$@CNn9t-D&|aT2rIQ2+OS=&ZX$=sCyz8> zI}h#0U0om&Nf+jdde(k40qaMJB3rHC+!|5O-j-b$jPy3)>8&`c=Iw84P~R1K<&x@Z zaM8EmQK$7^OULmUjP<1%C4PsvMdaY-Z1OI*f2B1}Ecn7^W!Ac)WO@m!X>=2)&?I891Kd1`&C*q=aF3FCYRi6|0)ufrfQ_stP8ZDW}FyPN9CtK7b5 z>soPo*fNsh)uF_=W}YS;-ttvtYu?9hp&`Q@NA!)tNs_@8843!-nD^s^o54sRvQ{?I z2qaMx*HjZIS&sVZ`bUF%jy>VNi$CFe{?o27n{)Fk*eiXO=!2t|Gj1o0#<>K6dJW&% z*0{MVvu$lcQhIDcQ}X7hNq#-3Y8;kM?BMNMkjs+>H8xnaIRtuV&|Cygl1jk3Xx(Vp zPMj(@$UsP`E>`BsQgc_!OLQtNEDQ}PuGVsO8g~IWe;H3pkxG}T(il>W1giHfSXQ{m zee{J3VC-ENg|XijLb1QG;mE#=pxD<0Q0%Tf7l7Cg0mRLzaw z*-m!pb^`R?p>M~4tFn|?Ien2vqAAWb7MKfB8%@*&t=qpw^!cvl)g}0mn;2!Zi`mn5 z6E~i&VHAKW3;c25V-YPsz3at4KDN>NI5e!z^ zh-$7xH8+G|<7;4aT0ZSp{n0!)xBlk;?V%TfoLivW`j7v{LCUQ`0x_C~Ns0r?{niUO z#Omqj%D#XcF0)UVyyPH}SZc-sMkMx?cCMoYyKOs&#QyHP7W-?vUG7Tg6w2s^3y8#e z^si{!^_`iO%PvABrmd47Qg`dil>s6#xmvE|lFfBrT83G;qg#=o1KfQw6Incu+x}|m+&dBMf*3U55 znrt<0ZJw?`S6pb6m~xFXjKUZLVxwR>NHxak3qV~{Z17fA)l}D^cYaDggGz~wF2Eiu zi@qe>@)4w7qDckaz_pba$q^ z?L`v*cI!sAf?cVq0+~`P{~*b2Y5t7mDNGi*JL@X8W2YMa8nbcc2_oS|VR;li<7?;l z#Qs6aC*0(pEK+1>n73PIl39?Ph#1Eg{SWbGCu~Y^{b;R>Pw!s!8g-Tyv~3D( zEl8`phGG4SIQB*>&7P1oF=wK}o7NCbR+HxwUYr~lbkWE0$FdPE-r!8C39x|K;8=$LRnmV8e~`zxLGcBL~rma!5%IxlKzCSM$uBrUCg=dj_EzEkOQ3TGf8DBGS^Rlw1b z@Aw`%5$n!gI^E)h(Fp&X-lcPv!*^F|GW_ZRYSkvBGMInMGx5uCDV;ctS2OQ%xiWaShthw+qFLpCBrV&Cd&F+1QSHPI_; z=x^J|hg|2&HPHxm-wu}l7pL!AcU0U>%Xp36WNF>~unqp`U<9NBmQ)t*_ix?M5FUYP~vj^7=a#30H9NNWeA5Nqh6_#K;5f=KmIf%&y72 z$L6tnU~-q5;Xk-l@Q9!X1-2zpY$>)W@=BzTpf`YFU18btW5?IcufZEej3SfGR#jBb zMP~T8!1MZV8mNL!61}r;BfXNNH~8)nm2P%#DBs|2p6iJ(o|TiHJ#Vo}1y2X+-leyg zTFdL&pOdMHD;tnc9*xJi|=MA7fYql1-e~@U1yY-O91~MvevEx>GsQ8r+)nU8#~?*lfx@E+b6L7~(dF6J( zWz6Ky>|Qnpk|rfn9*F01mBpo^1xFV5CiZc~RZgdops0BSLlDfsdCx!i&zW=lS z-=iLUcL}@CKSp>c0N9SCy! z9lq^>PcOKqKR0kdf5h+uE`H~M<$*&HavEM7y3WAsA|hwBYS|z9C!Z~Fqj#Zq{tvwW zPv|}1lPK&xflu)|-7a;II*vkCcZc&$Y~7H*0B{6UKr~uO(fX{##lSo;hq%(Lg*&2C z<4$5x|CDf&Rj5i+f#g?*bq;2L2XO?uwF{(W4$UTb?d`DFnM{MZ1pXw!xmm{-L_|J9 z6AJlchV1Uo=Tjo?Jjkcw(Yl~&DM2$0;UD5@s*uHh%RcH~`v(8d2+;PV`u-pPUErXO z*La)70*PoFgW#m^%-WjL0lWfmBb@KEFdH%Iw3?*#>sRC~fJX#o6XFPZAm^Z;X0shU zeDL7eEgT}v$UA@o4MDkyTNWH#a9C|Cwg%7wP#>+G-?_X!k%O8KLR6gpvk*F}y{l_y z-67CA+F5dFu|}<4FmJ(viECwQ+(XSVznfEYcJ09h2j|(;9u>1%ytR3j&Ky`YYE33j0B60q+JPza!kNzz*Z%=D~h1; zsBQCb{k3N~jZ+Vq)WDr(YbP$ilc?1i#ulYEA!yP>&K}s*$$@c^J((ZZMDn)AlGwhy zb3v^ZU?@156xL#!`Y_7AWg@7`A?}5l@<_j2xRdw4<~sqLjnQl)J57fi2OBNml7-#i zEN~SwMy5s9S=CxZVURSWhOZ?GetV5cQ$5@I5)not!L-25j0}^>(s00j(6o!#%tpXX zeee6<6PfhL!^6tpsKBZLwO=hV<>;Az0H@$IIv`;E@8PC;JwiH& z6?>ITvD$93vYQ?`;7jCvulY{^ImA#sEA{i03o^7gmIX8`;j^Q^C;K(W^57bQ4~~N; z8TuJ!#=Dz$1i8*g&h@A&Su})QK68O`p?=_sg-?uc$r z3=L0V<1Z|h5GE;-N;M{hJBs%I!pAxI>!%ac_g(!*5zc@w8Fn!C$_(_1L=UZX(Y~dx zfg1jgBvx35-%pY34Kq)0|LX(o#PqEzz9I;D_0hP$A^W#;-YawQR1^161s@s;ilL!k zJ#wV>;92rF@~RMrQ~pM_?mTglae1+ExZJ*Aa2&#p4vfRm)_v7SOz4kn9BKh9Ms64S z>a4s)8q5qBhfDz`G!73bcMgujnKQEE$Frg@qpaw6lISPq&BH^PXvZ6v%}toi8yCKt zurbtMPN3cq!_Xd!>szvW31(CDD;wy1F%u3y%;yR7dh0wkC74eAtv}Okm%hAY$*efc zSV$X2!tl==9h}-P*~!_|&ekYbLs?~%FM7nBjmQgv-@)1X<=!QIamSG71MNia#3c_4 zPU^uqox9Ye&W54Mc(8V7S6BPs)IL2NgB(SQo3&)gl4Zk}fQudNPYnlEgH4Qj?~eo2 zP_5N#qDcDwXFAt~M$-&biyH9OS(}#hE!z`Z6an{QBA>$#^LxUi((Gb2q#2`ptv@qJ z5FqY5wh0p`i&=3ef9B|)S)p0QYhVhj8a zW$WLsS*K5;EsZGBrel45dv;%BRnI=Rssq}Z8jfg~8Wlf*b@<^^oeE(^{CBYP<&Xbkoi3KiP1uI1Cf9=03`|w5? zT(^9$h1o1xNT>WM91bH}b*URvE%C>0<>^VxJk@1^nMb$*C};}?f@j3|{@*d(JmC!W zCKj#*MMG9ddd0`@{+J(n9?FF?u`Drr*8kS_9b8+7Y+uwV19;Ovg%8y?sJF*p0178D z1>_Y4rT}_Fu$ug+fnnoOZwy%9ETM*pcMX}FT+rUU)No596BooK1Px*g9Z#@$^xCjW zTRoI)Y`~YtAA?yvq7B|US3h+8@t-rf+2BkbGP&db584ga44T|+Fu6y}Oe0NhpQ=9_ z`MCuOi3CD=Ksp<^FW&^<@quhX7loBl5SNZOs^J2*ScChI3+*v(_%`H1dkiZz9DW=N z@#*YAvn(*@7``SnN(RL>j_T-jEr{)2F>ZtK8`xc{{&t$iCnY9E7pwr@h1t&7+XUD~ zhPF^nYw)UQM44^4i56Ndn7dkEJHKm1`}$yKGK@C}Vi~AU1s!>y4yc^JobY@CC#H*O zAhK39Ac4*BU>ajI1^)56RH`G$O`%bxf5%MA_H-~8RQ(%$uw=)if!XF}FvKFWSCehX zK-BKiRmA~bs}>J8T`y(1f}!688~@T3)f4RI#&}b_CEk=*Er;G91cnR_?MB@;{dR10 zEH=bC+@EX#D3g0{-bny9B7_>=5l%&}Z|P-wcdVK#CQnaG74BBB(tvHTksmj2`qRh+ z=RRIbpDqCgAC;|NrCY6CXHZ&|cEp*gU8ZWw2Ga)P2CShN=sjU0>*Z1n#RZqrU`t`q zxM)LhY!^D%QUN1isG(T3W@GbdWWalRGo+4$F=8Z2*YLvK&S@=3D|uzd_Pz8n*PVh0 zE1QvCYGV$3jMlrd7d*60-!kc{mOI}EbuzK;IAsa8?4@?=p%VP`Zk-Em*Mragn67wb z99c}#zj+$qfP%YbBPXH2){fcd?I4| zRQ$-1R>y>q=qr69hSM{sxfcW{HkAna*)lh$Zd~52u>jW&%A7E@UWq(erAcnmbx++g zwd!#bpi;1P^jOF2hmXC!<@6T2#pyCRIkOv_)`mH%MY(Hpf>3Mj1ElRTHvoQI8cPYX zZi(>fQW4x#Y;POc?3=;t@+R2j{iA}6C4y>1rC&IM{*1AIG0T9i56%SxT*#zues%D+ zz8^y?77ht6$bp$uSzysHm7H^Ks9!yYVsowvk+a-7cw67v{%d%7I6|HW>yT zeoSVobA)r!4LTb=H$QuMLSm9et1}ugtl&TX8+Gyt?a`g{FKN!8{o&~3MqDi9>BQDS zw;*j@T0-E8utzkI3%>zmb$I5-haMYd0OLcda2qR1DNir|4(16fcA(5R!Nm&y8gt&& zzVEBxhuk?n;hfi~bl?I0UjfJQEmI)?d2X;>Y7yZEw>raoN&`2a^A+_!I5>*euV0xn zqFZyq;r{FS?;`|@jQ=5`|8E=cJCgSJI(<*`JC@bIh-i$!41jRtj*9{HLYQAn4ptx9 z)Dr-V+d#G7At_iiFJls!%t6y9N{9mB7k^=kJuW6^(%*dP;Lmu6xS$^vMioVLN3^8--_zi|q?aLn^HN}r zWiFR~=tK{5lMi>f4Ej=vfsEkPDn(J$z=6!F1_2gN>BYv@{G8y> z3V8fcl*-I9IfyUubVFBoJhXoZjNzsW$8c~6b2gb*u+2c zJ%0Gae@VkPw8Hfy?o1jCrSz{lH>d_OF1diBH|c!LA@f~?&@u4m!Jy55G4@ss8+#d- z9((?o7<=H#3Pg=gUb2|4CicecSOIb{4Wa=nS1ya0n|!HS2v!1@|FgAFT~pIg*=o}| z;OIkWhT*GhI;YOA1br(h3+^{q60ura(455|-1!IB5ib8(Hq&YFmR<1;CfIf7^j+ox0Bf~>U+=a2E;RE5P?p~AE zklQ9fY6sNEnV-lCAE?*qKn^|YkC*Ncv)h+-uiOb*H_&KsJ9hMTzuJDOxjHyib0hr! z0~hNrdAYfnl2o;Y38M!9Jq*FCFsmFANipyxEFj2qz>sHLky?{pog1>^FM2JQGw09y z==1dRO60)6H3TXZ4GIMkDLNUD1h-OoP7!4J41pMqkKDQXRAL;JhxdYV!OwEp! z-OJkN1ea>=Qfu|a=97_k&#B3(O09$k7TlX8xW1)7s?`{r?gE6qtN{M&IH`_-|>+P^{+1Fywf6ZC(zZ0hw6%9&=k| z57{wz2=)~A^CD1}3-+N1)a&dxlf_nA>!~ZP`ybisI-9JvxK38fX>BIvccgMmC4o)S zokGdT0Mt>sgBP~qmaNk%T}r3YA$J)aPKU$pblP2Lhrk8iAG|=~bAu1cdbXFY;)T+| zf(Y!Rr&N_OzEG*5rF z+gz-(1y{kzms|yhZ}PB5w?L~iI6Ok5qyN4U19c$!=NhDc=ExJCxnwtE0h_xABW3-O z%xuGmg2ELf>i|Nwd5Y}{mjaZI%-U3Q17iXvR$yWC{hb|cvT18%btUz3hYkWm*g>Dm zg7`%NvpQFuy9Us6i;R2~8!+Xf3R-M2O;k@xTaNmel?T<#Q{^VdEm^t!< zXIMA5_~<}|9fv^`h;R*{!hl!NXyk0>P-xVU*Y+r#axi-YvRZ6h|Cqqmm>n(lqr%`N zQCo6Lvt8MsNJi!kw*Kcl@1aDG;6CkQ+ccJtl2wu|&y^ui3MLaIr2JHmYSh-?0Dx0Wy_f%nON zZjkwL#83CCNa}wTTWqaLqm9B+3=ewEbju7fgNqJV*mFHdNii9X7JI$D!PWp6Um(9{ zo4;FR(E><_z@?=Q$+;|giENm?zC9wj%LW7=G8kEQirZ!@Wf?*^(n~6B?h?*-+<*L{ z=eGG;gPBMs+{n@3Kvpx$MDpZ-b(FFB6aq*!-8#L7(|}?c`ACtz%ljLsg(u|(#t3)9 za-!xWgU#a{i^c|2DYAyt`sukdG&7(i7^cWkgTe_=T#KPzUaxG>fEY87Hq_Ev{8L#XG}JkdxYzxxthp!~z)QJF-ah*4&fY6XXQf z6K+#B$dPlQ(;0NiOjV{j6S&Mk&e0a%R*}|%q96}SodthiFf!}g?cXhO$u&{{RTSYe zgHnRCSyf3$fx5)a`H%RHUi7?Xe{&!+O0CCDlvzsL5SdY^;49C*#gjq+eNgw>8M)Ju zg~h5#3wcBMhY>9>ovb-wMOrQ>LP7ZMB(;nt8{I-{%yeZrGOb`-3*;+p@@+s=*cfo+ z7T9Gh$578ww)XoEh(N$-1eu*AOs+I}qYzfC(0E-g&UeK3%0HNG*NmS}0jI_D@9@5cQQ!|)%R^&iR0Niw1Z9cYO>EJ}m zdv6xuW|5+2VxS^d@a`-!ixfY-7DSt?I^t}@qcYs3?EK;Tb#AyN6Y^RFGR;^^*$f-h z&50Wcca&7V-vty<+4y7R7^!`~lPU7yHG60}j-KFOCW%XOa|e^5NY|iqvyFBb!ub0 zEv+*i{I{fF{CZ$-ir!~+lrug7bT|2U%?zj^uN5_fVhiEt3UKt^jj>hlE_}#u6c(#KQ4^R6Fd258R z;U!MJ)$1**5YronIzmrkPeG*;#2vrPq~_?u{=f3{st78&3cmwRoi~2@{&g_3WH4U( z@;NUbWvNdWPuk`NZl@@xD1xG#B9znjfSYF#1u@Gk8O)syxn1bkaJRywkxGjsVgcn0 zb&cqb6_o`J$mRSpOBj$UAIcdPA)uUL0srDZ;E5je^0RW^@;@*4r6LRGC989EH~j~T zCcwLyODFN^^{EZXwT!3EX6dMHX=rQ+XDRge`eyNsO%1Je9mvHZ7IjT>U3z_%O@)L%Xve6P(kTD?!4Tr4P)5^x;gFp! zg2jO7DlDFXdwI$Qn!X%_l#Q7!nQb{Rs^I8M%t_76%p#CRMP6vB(k>Mb{4tn1^k#58 z_1_TYb=XQ-1~p7TZjpe8x|%)I(barq8OW>w;lY;rdW)^15J{P8ie3za7-7 zV3&hb#j_&{ETxNh8akGOE6)ZQ2t$pwR#y-08RWqKvY`_6eqtnIMXNK`nrkc^o)wkI z38#b4Bk_&>nU)Yf3^pcf36_BM=MgRO%Ni2`DontGWv!emsbCDYZKxW0f)(RiGvfNR zbRe9kzX=RDR;|CmMAIM6Bl`yw>zp>6$W_3BaosBZEp~Ba-zNNud#z^;Y7_snhPQ-U zp#x)8%Z+NF`MA^ueo7e9UtwLj%iIt}3HDQWp}WXk6bcEW=&eZqW9l#$7Ve>7+4}E9 z(;2ZTDa$XDlo#5E^>BKF|DQwUsi>@|^41_2$50XjcLcja=o&v+Kdk;~_s=w;f6|D) z<$G>K6<7EzLtV`WC-Eh^THJ=XjY-=y*uucdti(hKinjly9%%-^M?Q4 zP?SD2J;1%ivI?mA|F>%Y^Lv5%!(wv&Oq!CHk&~6pmNaCu=oO(9Gc3UZO*ag7#Zge5KxK18})=H*HNL` z-5b0U9TluyY)%7tsBAe0PnH@eY5ZW7W@~l8TZP?j5MlJMh=IBNqxgYEuuKfFOiHnc z-5omJcg_MDxIK8M09xlo-d6w``~M}h&H_X9AX-P`Q(p|N(?54$6yLuHHiZ#3g-jwI zxI6s+W9~h`q$;vD;8p4AYwOOp>w3|3v0G8ZjEaZ^B}hw7Xr z=V6#3=L`md2#AVt&1uc9Yuf6u#{K`dZugz(9?ck#-5)35@5#89IJT&5WG@|&Tf?bg0$9=#-+7+()`=a z+9wvRoP*4KDOqi_P;yRrhIOA>!Eu5ONcZ^5t@4fLa3#$^3_ zVr5oMPBr|eq=38&t#tBrEWtY?p4$_Y|BtoK-?3b*fB96mfkC74Q*pD-q_qupKoi` z{_^A83Id-;9$~ zNc#I&6dquHh`sEwss+B4F|iA6mD&xKqKcww4f+rhs#a+i7#3Lb2_S*vr{WiVi6st+ zjY8yQrVu@KE_4FjsI}Hddr_a)SkM&f@VdgBg4}#b8wUBa!^8e42iqGF=V08g-DTYz z8<)tMSf9)*ix%jn#|wJ#Jxe%y6E`$2X@cbW-c^DuYOYBbUj%&r_F#K@?a}tDM4J2a zzrJho3<{d}H{?w|#C`le5LmWs|>4JS#xSv_LXFI`X$*qxeU?2vKK~qkyE?Zry zWLM40>cg%|+e81Prlm^yr?x%xs&5Zvv8&YSN&}$P8|up%)nO$aFmWgA!~Qa8C7Y;b z_-^7mE9qZopVK?(0Clo~7HLI#`)jl>GC?HFO1yMB1S%miSGMdiadQmzLaMjhn1AA zlj)+_Jed*Fc0S6Gy`B1EW!hMoE3WLMOCem2xOXIxj-CB;T|2-A1I(Ic+SOXU}aGM)TFF3MxH)X2s9G=1(*l{GuVAkuQf`hHiE>Ht_ z(hc1tJi17zxsoSnN1{fT(^2IPyUW}`4}v7akzERo+63)b&>ARJ-~6~(TkR--gPF}> zMy9N6rd(^WJ9Lpf*~>&be)GaUmNSCXtd6PX}>k@N}qadkDjBDU+XeQ^o6pN{RSMeNF( zSKmp52fE6>NTLI2kH5l%bwBIzIvc2oE0b&9P4=61v1bXCzQUpJoHZaWW@tdk575+rv_mTb}Nf&%eMFQQLRqlA(IDL-H$pj`o(>>7&>f zVVcfFt`*NFeMH{TR`-{Ov!sg@YL|zz|B&K-fV%1`I*ZYK=LAw@_Z)N#V;NVHO#8oS z5hLcL>N0PeCgM^y>b?2u4t-Ld!IGnKbWE~^$nAo$%u?)C@q-D)9WCM5! z$A_^DsLW537VlxeSJp=pBf`$YlXCcYV#L)oK$LAqZuf(mtBwR4Js}S37SJJS=nPT> zghrv`Z%Ok>ZWN_bGF*g^sOyNKwTL_+{EY9ONR4Jaife2Gurl{wtg%#pbP4Tk%7D8P zfKY3bf-W5*Xd{PdYkLoo>}hL~dcXm4Vm-*P%mwmvF3?A(%7afk|O-vrZn1$ z_3DnbNd|iv@`e9*U?AW66%nUS7p|>CrbwfPEsP1#k3_8)bZSy(S;vy3ywd!<=-Iw7cG4l2 zJkQk4re36MO!Nw0i=cM;K(xN(@9C2fujp14c9e_vsgg~R-clm!b!qmh+_YQ)$CtuUW++2WT4F9H zTIYQCQqPK270W78Y5??W1GcomUy2mHyRtVGZz&S)9HxNo8fZJDq}&q1DeHB5JUbh= z)VI|O*k=_^T~G%s@?^+S4^vUj1$+nnPD-qv+!(2goD%EGs_T3PjPg=sy4IS^`2w5S zaUOdZd|!ORWO|jtP*WVtBf>q=Jlu%Z*6e}c;RVdQ@E#kkC|kEx+rq{2um_-otJ|;O z+ZvZUl0TxK!{v45q7`W{=#Lt6@a2=wJbgy<9C`AQUDJF?PRn^x-u@t^fTBk2>(L@9##86XSUTLn{(J@95-D_7w`Z&d|cVAA* zG5V3Z9f>;On?*mRI7VDB3IZ$3isT-JK+o4gaQYYfyP~+*VFKQ#MX4<>sXz{v{`BuX zp||d;t2fRft{62REjX0E6KGgSX(7;sbnZo~e25JIaqT75;0`E|L~C1Gm`e5!H-nPpmddsz@m#!_#D6knp}iDjE~)dqns zxk;ff)@n(PaD;9Z!|DDtNXd|DPAkpevVhqwutz^p*Z_{w)srs6Pmvi)g5(??pK#z6MY!5qL+XSkWytQcam*pB)g;Uxp#Yc<0kRJLURjqP z&NG{gMs)|iL%I^HS(rakfo#nMNDZE)EOnaQuo+|Z1cU>xDiC-s$@$+a^J+`$eEvW{ zojjVJkvhO`?ulL;h$z@hF>*le#GZ3gx#^E<8(kC7i=3H{T(*?YwIEZzadKLkI1pHLO~ z;?Z~SU2k^Tpnnj8pZQ;OhJw#mKeeAUkUDK;Mp;g%5FVgawG}M~mTq}eGm4BESHNx& zN|{38;ODL5CjI@0YQ3D?b?U*7GvKg-+!jJH>!;AOq|Dr9!0apxYs-r(^c8S&)aB&m zt=ds=R6_@}&lcCP^SlnEkssUi#98tx`Sjemx61rZo*o0b9D_6-v5s%^okZ6p;&$ow znGYZ}Vyk-t?v^gQ)ZTr+-d?m8&ko-y|0}2k#`ceQoP3_VPM%+QV$4pn+vWxJVcH}3 zp|k9_kYB?7jILvmyOxGid<#e_Nwcj*P7a>uH~3}XygZ1)uaBY@*D;I${6YFJo5p8s z!oF!QEcMxdzHAcm+00)jifY?uiEV*Rp3OkD-)-7ng3-6)!*sTncMkXGwWc-JR0y4m z0?Tlf^#e=cFzGBJl0^LKG?T-=tq3rT*CZrlINCRpels3?+T6!)%a zSwa?)SpTI-d&;^w+*MZkjy1eJ=*yLhZ<4c`D}>?OT>;vJ)`G z?Y~aT1^h|gcD)upTkCUq_yiZQM}N!rp1uB80`H@JOz^uqjy#P_MNck0IDUIx0@Q(jAX~@73DPpWuFvN=H+*T~JZLOORZt%HX5<~pqP4Tam z*9)J`<_W#gjcll>BnGxm$bGnYh+R^-_(R`?>6M{xIg4;h(Y}G=_RNO0SR~8SR?SO~ za*^+Z_muAhXB7!9G9!+Qf}b~0YYm+oUG6Vs9T{sM2GtOvIJFhpa8{)NglrB)X@@Nr zPhBRrZNusfS=A{n6Hn~phBuPiBQ)>WRJ*0c&2ehHf(K`t!)%U;7JNJ2ZRc~skDmT}c25c_4f7_9{i|!Puh*NP@9Am^EUtb2^e5L9urys7q zmU3-n$@(I}38l3Y(1|`i-Cl>^=1$+7-c-29?nPQHa0&qM&Fhw>7Ocv!!JrIibUZV< zkOLJw<7^341*^i`kJMo*89wE)5l95bSFDh5ux`}1rsAF$DXGLF&_%7>`p2dy|j1uv~u=|9H*ORk9A77;|+Q-vJbt+^~XK}x?5(U#AmRl?JbTNy8mz48*>dQSRn2mbwm^%Lo}s^pgnWjO+K$9+_bZn*tgy*?Rf~z!5hY8%v>+#PQ1! zV0Dm){RTgxe=3}T3bY^T`7tMry+#*{qhnf+tHn1|k!;!~y5KU((Q!*H7UQ~QYqV<& zCc6>Bb1GR=lUB8?Zb@wl5s+NhQEFSL%T8H6(T;{Va&Xw|4K(lASg|qacLlh!+a|KH zpsi>}-md&Th`$Lt!|r`$je9nqMi0)wKuG_@^`3A^5yr7A6T5g0x^8zg)Pv^4T^l83 zw#)4k_Pxo=al%(vk<;*ku`4Cn4u84u34H)Ed)&|sVtr#Hx1w%k^Sld2Za3Lfu(=>M zax-qnyHM-G(9@?&jmi6-BaTwBt9y)6(bs5Zlu7tQDVS6uXw~G-Plt4UN^g@1P8ps^ z@1EB>$z2F?n`20a+!kx+eHYi+5prkZI(uc; z%iqeyztUHCTwgfoQ}@1(jVqTTs5vdwZ3w3N#wejnB&x}eAC#n)*s3@N|5Z_nSFgPgwI zR^Kv`UX@mj8$5(mVb7~EZY#I)K)3Gi0)y9Sa0#E%!HJz80?9hMPM6oMTtD}M&hH_c z^0&y`ws>TWP_4JvU3kH}VI)~J77GusI}Q1|#LiBqvnxf~tLt%L^qh#?dyzt9 zo8X5?haidCLSQ%~o;WR(|2EE1G9ERP24Ql4cATMq#rTZG712S^PUF-BJvWI6dhZ&7=my~Ng{pmZ$XX>cOp~|{-k_S!KBRVy5FfK2<=tA^vcV=JXCTYXjk0lz>f*Xw z%)88i?bdgJq>qm)A9IoNtK!O~3E|%#p+cf{ZVnS<(;tgBn62X^aj5ppsh#Cx<47KI zk@7#pl`G`($?V2N>mjFo6KKDo2l#O{=f_v^6Ve14_lop-m3y;D)zYu9vtO_37!g?^ zQjPTBN4fk4m5trNf8k$APouBhsEUl}zy{M<(3@8W>jHqqgO-i?&~tr9?^f8H4!7GW zVA0>LXb1+|pztg+*pbt>;|?UB&oh>+g`8n-)Yjmde-oZKrSuCtlOb=ccdSo0VhPbm zzFnj@soEc5b3}SGfAUgfl{iLq2c3g|li2`D*lMx7B2b|rE^Vd5mDiZPBWM5NZ}tGh z|3~uA6snl}LF3M*P4!JKSGbb6gdhSH)Ov_HW^;ai-nzUsc^mVZ3u?{C=dH&!SIn(# z_HePwF4Sc;r8X{|J76(WkQ>O2yIIe}eRCFMFU!w%*tNw7a@JNLq!Dm2QcPoAeOtrM zhNbmsb$MO{I3uoR2(oW%9kXE|xrf}H-h1W!D?iNmfqX_jX?bt!OG5Gydb?5ljy|gJ z_>qp5yiCq_+e4>sm{vIzzN>ab#|V|{B{uhwqrM{*hnnIy>qQw03Kke}b>XM%TeMH& zl6#Qdp@4b8Zs6N_{kT2xyZJNeCyI~TxJw95(c(mmR;$?`_#vvp>i) z(Bi$mY)s-3Oyo7rDPw(|R!YFs!+`*E8M*NM}f z&v#dfBLrGt%IQ#wBNzxW-#3XXY8v!kP;y($NS~h4m+QqPU!taxYNPP=97W6~{{Wkt zxGY|$V|be`uC&*&%e%DpZTW}~KLN;aBC^2)QrIQQ#K_ZRd*0b`wp30Ot^R|WZByqWSkx2V+xdB;F=#3B(JD}UY1rO+y z;o{b}rP1}-4j1fN{v3qAGp7)@9W?sPZa37bP+|Qh<`BvZHmmyo&Kp?4K)!Zbx#T-M z{x&N($s*j^VqRvFL(&WM4A$Sprag`?_Kg(j#0U9WgQ2%DZ^e=)$SksAQ%YTo)3?1R zkKRScqq~rw@a@h|{{O;E>!$qnVWVRs8u4PR(#1&F|MV0Qh&QM@M$`Y{@QTP-5##gk z*xfRhu`ls+l)Z^A==8XR$Q^WC;;QPn2~VQy1>5Q=)XGCNop4*>1vUOgq-g&XAlhDBhhXPZ!7OT=w zzP1id5?r|O*nJ^#ndHg&w}@S2R~_rzT8F=Z{Y!dt3AQL4PcL3$@AogX?0 zlTROp8%ngEyw1~)sb(fl;j63VzRzI~cCLM?U;7}~$j5g*Tul-uy7UKm>^FQU4?SJ+ zS;B6y0b=D`;o$h@1_7@Ua^VYp`g-7W9i4(Pu-5`$xv(n#nW8f8c$|S6myaJ;h}wD zN2hN?exbLjlJ`>`eHQxbwo`}CQl-alm(0t^Ay+t%iR`ihc5h+6U7rWn9<$#Ra0qlz zAypQA!2TRA+<>T*a^ftv`B%QWY{#^1D;pM9%nO+iVC_Q=)PAfNCcW@@?q^IaD{3+F zcU|RHe}6h?LL1B6V00R}gAE)6YLWMSKRtfPx2Q(Y4@7z!pDjLb zK^L&sVGET67qeDjfbX&%h9UxRA7LRoCVoNJfkUvP*w1D>wQ%d$U_qNXi2Vy@B}6C# zhR8SXlc`S*+9JeUh3oe6*8!w>cJq@54t&IQCmdea>O=Ntl4dp(KPzy7?9`ekLNsEI>s2!Cr_D=m=3_oE8SW9zf$!zXYPGT01uBdpfaWecZa$$N+jP$i!@6L|nkk01CGXg+w}Ex3<3B{JxB zR1(FwhU%Rzl}@L!p!s+rmFphkz2;)@M7S=GLPp$6HDvIPhu>KqBWvlsiQU}%1|Ls= zBUIU|95pa!&gyD~-ACULu}K_}2F~K1*|O?Ma#r~I^_RX^^WafwqGAN3Bq0*TR&DV) zq|sy7vJ-Mopsgt|uZ@~ezLq~*Gb*tk8(-%A;AC!vH}A{vH9^PEr=B0T%Pjdi2|GSW zq%>`8w0>8%H_MX&71OM)R_H|bS9ti-9jFt`VBM9regS!0xNX>&o77ra&ysvHqB|qf zJ5`QfjPw(r$P*UpfhN37c(&)gdi>VU#a)bxOycJFFq#S z>y7L8on8Iz3V~~tFshdophrz=<$cu*tEvIE3$ue&1>Wi;HP;TG)_8z zCpq{^2W(-w7yUk|Ib4#VVH=eOtEp7YbqZK`&=X$H7v8;+Mo@b2I2I;cmk&lJ zAk?DcK4rm{nAcfkzOv3zmZN3^oU9MIod`yYu29o4OIfg4ext9lxjfvWrW=!jek*cN z9{k~~7`abbv&v^Mn@x!QpRdgG>KfE^fP?ly5+elOlvQgYvy?TfzRR zX-M5Rp=q}0fs%4L{b444U^)(|f0YXQrYw>6=LHepadDH1-ODaT`H>#chx7-VSc+o> z-jhxQ=)=)cj4V^Q{9KIwcdF9BUH{>AG*%q>st> zNa7SF89s+$M;NH-Sfg-elY1kzcAP>b0KEF`+Qb@vRh7nm(6-mQ z3)m@;M79<0*6z=DBfYE#_pAyptjkr!L7iV%+OWE6btTRN4_tcRd`?kSRv#jbq_Wrx z<(7n1m$GhoPHGMU0$mOtT+c;?y+U86g&=AwB1O)5?nRy@K$8MJD=HUPEabUwkpM@~ zl~{^3q_DzJX4;vvxoC4SzuCj*cjzQVkuFaUOH^^C1s=7~!g@Tro3=M>YJfMm-DwtT zaA9$2L%Iq`U|sa~A@@JGHyj3M;F42^ zoM$jhS3iT@1LxvU@_bs1SLejg0q%`$ z77s+j@ssHzR8t{FH;{W{AR&|CcF*s|0=qxjmyQvr>3&rtAF$;ebCTqCXLM^f29Xu3 zlMaAJKl3Q!3&WtLd1?cyI!MXqpx)g?s_e9N30uzx;9!!RbG)k z0Q195=rJA0e>jaN4}t{zUx)5%=;d+UkC`sz?w^V)irM_-BKpTJ$~vY<-B3&8LIs2vN@|!e#&^Wk0gL^Gbx<+G!G#5gobJTaAJVg1mQ7&6yr9pq z(c_b$rZHanL>3L0f>k972k6MudEy6jerG=(ML%Sl^H^D4YicjOCM1bH&7YdQTh?cgaNl`d}L`GS-*E58sXyxss|s;ikpZFN&OZ z7c!%W^Rob%JABH2)4}Fro&Ec-Pr|Z`%)zhp{*O;_E~Sq`?S4MGYB|1$G&^ad6)m=f zYcrmaw;tQx&x>Sj1%`YCAtNf>?>OK%ttF3>f$WJztbcy|C0szfL?(Rc*u8aZO)L4D z96nsN&r|CvtC6%Jexu_S`{We_$)0dkT>NgSfXD^}&_9^VX07I-c0-OW|I{M5l4?S= zH5%eGcumgv&Pf&I7>9+tPSa9OQF!g zapiWBG9TP7uH4(q%_*+Mh^S0)%pnVfXYLe9lbs$RJIO{1LKpbSZ?xUBkXt&K_*s#}&0dLHG3GG@$5t)ER$wkA>^gcRG zq(fD6dpt?DZz|u9D>=XB(*kfg_r)n+us!u@cs}hpdiwP2J&$STla#f^3n6xLEe0#V zj=@nKwEGurm`{YqW-pjDanIc6A&qa2{0kZu`jF~ykC|lo>XHTBKPlP2eDh2qj8B<8 zapKXG=6!{br$v`Ev%D}FDjprihME>S5IlYzF@=xet98A^|}2Iwgm{|FT377Y>hDo|;HQ zXDm;e#eks3k?cE#0|8zR7k;K+D)e=0r3E475OX*oPV$JJzKT#@ixkmQ-V~@7n3r8E zM*1gJm)F3>)dR@K!EkYn>1UGPkb;g7e2GQZ<_*G2bR_*w;RGx+hd&s}zCvYfUD{Ifk`3@<6UgQu{wT1G)a6pFc;))%LDHu8tdi>em&>wa!$;>-cG0`-0BdU&$l6I+A|= z2O_yFQY6>^)BZU=S>6@N6}jPG{kkH#n*CL%WG=FM7l@H+B{e}ic{^Q7*U~?-TbNDV z;qMCR;^oh?(ezI&gDqzh*`L_+3FWA#{X~0;NQbME2hbckMl_p{g8;K@2k@I`HeI2w9WGtTza=Su)@^kPF?{~Jo53!AtZlCk90YPvtssp2r$@Cq?83vAzY%c+3XfvO^d7Zy%vuZ z_Czq%P4p(ju%a$3#NKcKb=&v=gh_1^&QmW!)36XPrI$!)7Wf9+JE^9uq1J2iS~S3n zh_U8ZUvb9d@FivXN>e%FTyWYTn%pmNQ1=-yQsxxEy+dnw#A8_ z2w&aKfg2^CzFU*>Y^#kH9z31wi(Ew?6d!yC83+LS>Ji?1FUtRzy@$Er#xonRN;*n> zcM#G;0CwFf3>*lce;%eHP`n~VItcWAwo#1yL5YF1sY{ZOn!sL)5I;3j<6XCtS8_dM z1bryWor{cy=(MKe4@z8|-RgSM|6)S3#42NE{-#U2eA~ z*>EH>S-jYH00wsP?`~oMsDJ{K>mOVdzG{~jALEY$K@kE&5Ti^c)brOVB%cNksVuCu zpq!5wMo$_^Fc-GC>(Qh59-rnR3&UiRKNx^u3*taj$N+>QM+YR?5E=hm=Q!k&EF02N zNTU!xI|wFmSz*_g;1~EA&GdR!4A(Y6mW*+DFSu97xp2c=_&sEv&b z&FrRci=nX%lQ&P>H2v`Wlc_$N*UGJ$0DtG7w-p4Lcy=j$q?q;>?6o-|SYV0C4wvx7o30-hgu7!kEnIZ`HjdHC#5Z` zIdo`C%@z%v-KC+x^U<^Bj~Vmi{PPLVlTV(F8nhgJMY=etZAZbpd8-OmY1r&It>)sS z^G_al>7`i*MkhSyTIvds=Z+0-^3|xRod*|R5)CfCObRXzDC0}NfA(!2lzifWzUrG< zAmPJTRy;Rk$g)Wz)hzLoqt#mu9jaXRgc^a(2u=3mI5DJ}3wYQv8%Qr1h3veS(#u|^ z19@n3eCbV7216h4yJ_!#qyCNt5#q?5^t~Y63^qv{R8Dt^hoSjDhBzD|xiH_ik?} zgVgFhq(orZm6M+;onma5*)f#=Uh(EBcmcHa}5;H|QM#cKkULx-6dHlW(vD8U3 zH=J$zhz^oH0WyrbqPv;+ST4H*QTyDl0pH!GqWn8{NA+X%cT-VUl@X9#6+U8v&Zg1K zbO8Br=?cIH`7Zw5UBkuq=@VSD0h8DM?43&wJ{s>vG3(0(M@MapS@Ns4O7HpXPi604 zv2)6Wt{KGv{PD?#|LSf0bvSRH-njSRfw$$JbEl8|wRzbb8qvXlu215yORyC_1eYnv zkZzxrHO??J!Qy|)^o;qiE@mh!S`k$)xt50J`=$rteLePAwpcbAWAF82YZ6sf?_k%K z;=59uN}Hv{#@wWD&s|5<;$cgJkgBJ*}qZh zmyGOmN!(8Uf45|_mM+WTSlMt$lVv^De`?~j0EK#B%!sf&Y5<^X3+DK!TWH4x)vjI%ns>pb5 zF{QV4SVZ~=cUc%mhjF7Rdx*ghjVCYB#z|t;PRu(u^|h3==(hZdL+-^xE256L7m2L+ zGaC(8v@S2$Op@!*4aXcd8jd8c5M3sw3${dePBTu2l4#@#nbR$lmG*{cRM%?$HS(|DsNe$!j`2si}&wM zQ0$)Ba%BCEdM_O6v4uUxuI0Vqp76=X=&0f1YjiZCejW2F_V|%=Qbz#Gb+Eq2& zF$L}#f1@iC2^-9&!(oFn+4RIMn*a;%d(c3npcVER(I)Cp-7&Wxioimfd#=0=Ia!k9 z>KQt1xVYhY{<{=~;P3M4U{-lc+W&3zef!>mL%CPhH9gyMW@EgLdU?&7%JhnufBvgnlXB=LXbKsQqQ=0DB zd!Ztma}HGDLaJ9^rjDw@x0LU$JWv4;-VAHa(8d` zK4&Ygh^L`+ad&~jZx7p{0E5m)XIZUH*R3m!h0Mq<_V9>hJL&zA{vsWxVk>&^f0yxp zlj(Jl26{WBWVWIw{#k~9k}GH+`sjA#tVC?-Q}ih=Mt41yO6gNfdQAI7{1NyoUIaAP zbDVA$%SgRHP$tk@=nBM!0Y}>`AXo58h0joD;F%*`6AEjG1GheQSOLv7 zG*9rU1e~sr?1@aFYeXH%H5qk)#APcG1BP@X@C>*W%iJ8y3l`(%YA*p;A)UjH01m?m z&~6Q#Lk}xlQobtqp?Yy?PiBMYm29F|8q@__HdJmp)^VQ9HR=PE5HHRxJDdTaZg z;?L`qq@c7!XBUQ+C`#-lP~!-?3R@ZfvN7On(zO2r=}LI5Md<*!do1z>&F;dE>?nxE zC+p(wbW>xvj~Bc=CuWXZm~csxaxNv0p|1ctv=exe<-{tEgCV0afJ(gk_sBSrE{_3F zFOS2aoDsvQoYB=EUNsvXS2gVHlFffcTsM|S^Um<9*)1ZCLsjE`B@*1_BXP~-#8R|G za)0Vc?-6Hz%f^1m#uDl89kctusU2t$0ge{o2U^+CWAq-v{|=pg;sL>H3R?n*JObbn zjv1+juK-8^JtGzs04Yq<9$-VKvwH~tJM`GJ_bq;&n~y;)5Nwca!+fy{;@2A4Jw}UI?)1JE7?9jaX0QP%9@D0fMTu z6%H3e#cXDKPu>u!h@|(VPbv8?tR(Ui>rHzj)YKCfYN~bF>9u%1r{guLRd!a1uX>?j zv>UNWzwnlSo{C!93)#${d%}UYH)2q=attc&nNF{lqHbzvzf)?s{Rw6AFEkw%8XGIEG>f#->{w|wtTfW3>2>+_%H+4`=AQ5OQmB&%9kGd~(1CSf zXC+VV8#KU4oXs@e#ftEsAisDOUK~7_7BO)v67?cViT>s3H|R<{6nZJHdZ5=&A1evF zZ!KHQZeLQ2hsj3HytPH$Mfo28)$HAODzm2^_XyPqYY>Q7iUov8~tf*ij$TntA& z_F!c?U4ae>SReg*zTdw4fuv+$wtU>Pm*QF_p)>D7`!k^vFmUkT(n@>SK?mk-Vkv}; z5PJRep;CUi7hb+^H%+5AY(_i)hiUbh1H~S8`>wTgF^bUTUg*Z((dEH!Fd)~@@L*@Q zIheR|Fee){p^(?+;XRHLHzJ*_U=J3TI*J`Iw;O`ypp(ul`-EnrW2o?2W%BOGmiAl4 zk5v2zwp{#530HWXT1OmkgBJ|56%M1;Q~-Ck+mc|e4?@3bKB{m8tU&9I^Sw<+_8 zb&EQ(E~&}stpsAQ>cd`FC`AtU<%FHv)9Xis>l9WL!uM|X?#4ZuUdflv>h=8)CClt} zd6~jqR~iDq>uphhS0A@gMCL|z^isSn&g%8k%}*vJKND$;{3sHS19p@}dztcVAMONs z>7+%AtURFr%#mJ$7e<|+-{}Tl645cdZdj0k(s)OIvjlOITR8GKd`Y$qN+@JZJuq_t-`M6VqNnseh}cPoQg4BBeG zpU?dUfWBG|=!@!>vW4Q|Zy*vx!G?6;C1Konm{u&nZxh(FkghEN@E68E4@0F6_8KVH z`5u3$uOe7bVW@-U?AxR|QV|Sd|JepuVfv_QS5G=oMTaAnk4{o0KJ3FEPVV+_5QFu5 zO1Fog;B*pPt*J-ZEkn4vlbz0XWl z5YQxaR<{>!g_F^2)iaGEos(Gd4g>DgTooNk`yt_%>Tp=3Pb9waMeL2KJ@H-w?ee!H z`5?_tEc-b2)r1C-E=Vl;C{}bE1j>b~XSaxSQQ`}Ki@h+O&KGG)V%eL#Y_Wrn`T20IOnmRd*n1-=&h=HQgBZ5e ziEo_#no~?ypfjC=78wqa0IJ_qRb*OEx<0w{cZf6---YG!$Oh@V%bG>H4$r@ppSNEseRq~V zA<`@qd?^=1I;0OK*NZe8&p+yX{)6h$s*Qj)p}DF;1|*KW3+wGLz>y+fmHg9G z`SYJrq|g6}+@iEV)nV?qpHm)j!pDjhf}j-n#rAbl`;q9-&^ewB^nG-^I=0eBq;6dLPiffN_sOrdpOUJH z4jZZg3-D^LlFNU(Nvb9`d>xrs6}f)xztxP4AT=D^fqt-eVu;@lf51ydKTFyT7 zTYh7tGr#0MOxdbP79A^X6%D`EsimbTv~5fo#F_B|4v5l!TZC}lDiv}Z&MUW>dLC9vD{%XCJ1<4cK9 zdE(o%qF-twH4?qC`EEZKeVi8&qlC*7-F_-skREZx)8B1=W8)Cf(odrUAx~_q-uCJ8 zOeM^xJQ$IBdG;fFC1&~_Yk8&W;307p7EH2SNdJb%t5x)6hLw&z=P)f2Q!&_`tR8t@ z`g#+rTx;;*t@4NM4@=Jpyk^o=w;UJwcGUf&jdY%vuIh)BIvFUPL|?Iqh|%zF#o6w& z?1J1;&gGzx&Qt2i^JRxgt3Yd%A&FfGL)PBf%`3~7-aq&*c7tY&GGDJZrWx(P1i`6n3hF(MdV3A7J_6gKBx|$v zdFE0pGFj+}u^e)T@E}_uZMRD}DanzyX-)eWF%Era^yuDfB4H2XFTI56&X0zO1K6C- zs}#U|gvsY8&{c#!jK43?TTh*jVfaM8^okb(_M9610=qR@;RLp7^5`f^50FcZh+#KPcNamXnnou#L?&B(8NxPnJSjah`0_wmdq_;M{ZZj6M?KyD@3fSR!$5jLy$`% zYH5ldZ(l3ssD^Y@iMd#Xoo5LLzQ=^$C6zMe&-+BaQ#1Kvi0dmvtiB4lT197xfRX|g z-4HAJNhO#3bOW#Q=N6RnO}n!r?NUcNn(({`&wnSs-`-Q|!aHEWVimGfX;Jv6&cfSx zVaKk~Vu^~D&}T#)O0VxMy<7S;G+HcGO+}cg9({Mng^?=h)9cZm0nZ=re7;QjNRRf6 zc)q6dxmJ3<4$nF+&8u#KT-!vN;2+xp**Sm|>BMhzo7`HgH27hc zx&5K_f*ZO=D9-+#1ORwAd;0SO>u?b)GCA@sNa}6n(aNX`n4RUQOK2iNsj{F{8TZT1 z@Rhb0nuLA`dw?IAn|s1pZ5HUY3k%H9A$#=tEMX{{p(t8XV9VuIVoCCT{zT(+u<09Tf50>C|t29Z#5Afp7r|MFCRVgg63(` ztgC*)15an}66Ox!0@+~OZ*;E>Wq6kYeW>5qKAMCEegI^k8HfNNz7oVYlC2>ApX9T% z&VM>-@~|!JkMQAIZY^*|i4`nHyBWE{qQr(SPVBRi98~FJ?80|JXPKnq%ib208)ZbS);=y7;^J+(}^%PDbMa%uX#&Z;jx#i z;X6($9DYa0<|&3>ZE*m8bnc+Te$M9Wyu}ryR(M-kQB62WKz0R5VTmNSM3P4$$$lY8)?XvZ zZ49hUB#HbwNx#Cr2_$`P771rb=Q*;ivfSr$BfS|ip%lA71tM%Jg8q=l>k9F_Og=pv z&5+#5RzNaIkt+w&ptoZ=;OsPq9F2~uQc@_SD${a{S3f-KuW!G+@5~Eoq_fJcUgj-z zNet|f7+8PM>Wnh*?PS1M(kF5Ko@E2&A+GVXl2%e3-Ik(5>@hjBytx6gUieJuAugAC zqmxfVD?%-{IRwNWS~YhjELQly*!i~9y)FUs)m0hA3f~Z_Y4rx2(22px4O#a{1}U;- zVOJ>Z+!Z8J`L+OGw{&5G(n{<$b(&)h$;QiCveGHoti+=^rzEYR>fc@&QqEkk$0SS= zT;V(Ut~((Y(9ssE`t40$Y{e%weIt8V)V3D4sO!kaP(xEwOK`nsle5fKPhJ+j1fgN6 zwE$NP`3!Dp)U48|0Vlyikl@CQQG>>ck6IBY^Z_M2lQJFa?8}St3h<+0YZjDn`FVwj zJK4MJ0r_~U1|KveoG5xX=L2&9nT$SBdYnNIlC%UZZmaMaKx({DQ5vj9D{>xoo=PT! zrfhe#MOP~hB}_lBW3?}>HLppy_j`rS10%0zeaqpUP1TLnK|dct_&dc|0ZDo+=p}Xy zr%V+wd7(fIn?oj(A!}`R?wZV^k|Hham^Qn|r#TCLDzB|`%as_VkS>jI)IJx$d*9AY;jV*rbwsD-@CYt>a9-4{UQ_Dkttj*X6ftVW=9-P@;M?EQbzu-OZ-X$PR4;cft z-P15;;|RCW2MZjwcDFkKWa|Y$th;n>c`rOOa;7KJY7@bw7f;{5TlcL z0Jw-`5y`Q!-`jKS8CsJhE=Y86!AJnEp|=ri?6XKGhBQ!7HZ}(A>utLn&jIbE!sX?e zd;(@4?2bcOx+16x1DHtgd&(*_RFCE6llGMuXG%;(q~&HzSZ-0KlJ=FpN|W90;K`4W zX9BB_E>T#$W+-1*l8ora#+PUUuYKL~?$;jv8|`uGy^p^fc>cZtLkA8}KNl8X*!sem z^ZOne`B=__4-H#({=IG@000tX(St8odE<_rjW{~wjT;W3m1Vw~-EGSktSnx=+Ei>e znJUepQ@eJZJw3g7Dul6hal#m1CUL7ICXB^a2^YrVdLA$F{(<#TlVNMd%$|!>st`7T z$Yw1D%_&tyH5M=MB;32JUp_$SmBJ?voEmWFLql#+lYwtf*a8)LqdsKXl(l#H9!MSK zu5#DXtohnGxE00(XAQlzMLfUr^!Yb8Jv?%B=FpKtQr`S9aV)-Jw|4Gb-d3DX;W#lN zIuv>z&al5KeL_{!PS#CDYc@>X@PNOMOAT)kh?zfpmw_h zK?NRXb8u6OV-Gn!y>==|Cu^)+b}az|K%BG1iF3tVcI~#Q&>qmIe50)PxodXs%U+;% z&RkqL3qbg0XLaKKOZyEKodw=yULD5I=66(Et4p_&H^|@W_59h zY$7cUjhnCuY%VEV;6$t?7gjxCh za;&sflI;Sp6>MrqJKD)$gF#6tL|2KUAB^cJwal=hvx)tDo8E{`Au3b`r87^dyl?ZA zFaEyuqmR`e!I#Ec7k5HSi`XtLVwbdtvH9_nA^N>rn#4<$_bpDHH*xLm57pmc6Y$2L z@Y46C()UGO-zN;*+lY_DBC-Z-h^DhuE*0JYK226t%1Wim^r$R)??~w5PI?{s=(qZ9>-A2(uTc1gc@>xmEu>KdJfV+px!J=mQ@AZ& z6QC}9{t)2+A$5wfmNI|9?RWVl8N`f!n@OgPvrqwoV)0w_q($hEz0ypI%|*!MJw;(d z+8V@9t^9n~=ZbJkjZ_2B)WBON)Ly$#@>O^X}G+Fz7pXu`@`C?2=lVJ(ex-fMPaTmR+qy~D>~-9WhBM3 z;qZc=XtvzQ}`>w z(hw_#Jc7cMhZGqr*O|CdfOkJ}seMXs;7d*7Y`>*$xp49Zh1=>yu)6R>w|f9?#kdE= zA5Af;#nWD6= z+Fgn4aPd?}mw=&bJtfR71pqiE*XqZS5Oi;Y0rg|+F&+)Z^ODL!UOB%;n@gl?v?Sy) zA*p~ASt}b5+eTf;H;A|z%o5xONt$E1eW6nr>{MhBeV7LXTI@EHSz9~@tJefI4qgn^ zVK1#-UxkDa8^|611iq6JC$n(a{e zG`D$umY_ug7iWDj5%TQ~)fzVfE}a`vo7a$4Wd6Fm!lDwJ-dt=mA!f;0>1jheB?&k} zZol9SGx5@2MN&~&ccdbWypM3IaI94zS`V-} zdSeNY2}*#{NE*BKQbUJ|&<~kCj#_IV9eXs(Q4%d=vtoy}%Ia}@5L6F!7ul>u@6Vh# zb^65oLz6XmB;8a{B3SIcGR-?mveDJZl?Ysh$Oo)k8q(Fkjm#>%k65geN>byl3e3upiD@ zv+Km3^?UYcHj#2;c`ni)nYrq?yqS*5RDD1@>zAv3J-Hyh(?PfF%qht8}s6is)Y0 z{w+w+=|J*@Vx;1HLa8SBR|8&NzE|`<}2*UuMC{X~VD;7UUUoh%k4}!Na(-0FCMzr=r#q+`Mb)`lTZ# zO&zW|c3cc?YOUD_HmE6D2gA8l(>IByC3C`wDqaqtcd~J!xy%NXt4ovIWeCXzbfzD8 znI0{m1qIqy3FUZ``l%$3zb5R(%}(=3lF{f2YigAHD>iRbKSN4a)ZvJ#s|DH(FaWrc%ApWXDtqB)v}CV9igPpNqTn$y$-rfd9gQ zP&il(Vp^@$wt8zFvYQC2(o<*8TvxSO?T2l;wV}CnTTSMgr3E>u%L_Jc?lxgpv-?C# z2yv}{Pr_{s$q&3{ugR@*>%D+C`B1sDxo%5yL&jS5eON%HW}VG!GvRa-q))y|azjIe zPfT7jKG7nTr$8@J?q0KTkvf&6m*(XNpDW1;UkJJ|mjyAT$Qze$%9fUr#Bo-)#p9^6 z`irn zu6{N0F`^ax;jPqLgQXZ6b~Prl7>8f-q{5SvL5oQAAul#7`}96<i&DsX~gB4)K%@X^&WvcHo&3m_#9s{EbSwS?s0>f=Xte8qdq!U}vHav&AF?W-{-E3WG>> z;CVTaC9|`c1U&GfDO{k;`g_kS$(~o?A3QHTdtT9tpVviK*{!I`7x`mFC|p_-zLF?# z@DK%mt)x9-G9qRYNdc9x-RXu+8f6mBX2;W?*v7#2gw%hA94Q@KmLoQ{pm1=vm|_Q~ zN(X1o9&Eeh;CDXcV64Xd8+#kn>uI&lWVGARr95WuF(n%5GPP>rO8?=%#q^JebO zqf4K8bKldapPGAQ){Oh-%ut_9ar-iR_wMamv}mbe#flXTV@EC#QeRRQah^DY{(nK@ zlomaR8+fY#M1P9>0?dZpmQG5ZKXLfCeR*r7Yjcn~&xnXVd^0iAW!(gDiXnB7!%FR8z z{BiYGnv2Cy=_c}E>X=hWTh~Xy;^&EZLJ0SW2$UA6;P1pJ;><4=oe?)rki`x$L8(QE zUEISM157-Mv8mPUce{kf1b9yGnEl{gOy6!F+`E0WpsQ8Ss;p~msa;jKXU`=A`JwWO z^0SvKE`ES*5|;7rD|hrq3P^?LY-vi8soq3J8`WzXsovgh@OW(wfNk?ZuoeU$H+>KR z75KoJM+>-0oQ4|EC^pV{{j5A^oiIcgTn0=ha6S-R;VdaMWk^ck})8M1Of1bn%i-EYNvpNc zt&#twGQtPD)kiBrLN*!&(WU0z3a1-uO4y|W$&4HQbo8hUbF>@V8|^UC5CFMYwEgwJ zVOoZqe4xV>N6UDkR8%e-ZrP>YK{v-ohESu{ihvXNKF|P##*l2xhX-OKVCD!WAcnCT zM0CRqG=o?P%Fs@87}6&yv8npuv5A%_g2;i2R(HsAuMZ}>9m@jOLhX}(s}HvD)s?ha zXR*7CHdg@lRD-d1K=VhKqQPt^ACw#dPV6yyHU@Ag=pim1w_Nomhq$T>Eb88v3l8b8 zK*<*LhgjQAuwcQ^`l-B770KnJNdZ-^@FEBdAfNiC3LkW`rhI6`Cpcj=f&>D^bLe;B zbE2C}gsl1#h)DcM6EWsWiNEmh@0Jh0X#4E?H5-YWjU)%KDtS{`uR_|7C5J(ufsve& zuR?4XJw@H*1WL%tpD}6;eD-S;9*5J(NNJR~AVvvA^&?!yi%}Xji{OMpg^kxq)?Tmj zqO%919q~#C{jPaS72sj_LWad7aYPMRQFHn5Z%iD{<|mNwCfrzfZnT7Vkm?)RNhoe| z`8z5<8zX`ep>TxV3T(phiez$hkjE91?b7V_F0!0z%}0H^E2YL#uAG;|Wzf(}{FD#(+u3E$}|| zofw0s^qerULcnhY(?<*HSy&n-N*YJu(!=S&u%(hCZ5ONMix)pJQ5P@kpKYT zA%|{9u!Tpt0$F;$%I(s(n?ZhG%79;dlb6e%#Ipo999vZ$tg6$fS;OLIc9+5Lu{PM6 zQD1?u2#Q&#HQ;5OY32?mY~MUhM;P7GC*&wrT{e~!FsG$eXM<|F1!FqD>ii))f+LKJ z%uUu_hgFAyo+w%Q_Spv#6(Ug<1)4bAr~Xz23_SNG-qP2VDV$q$#MSbw3S`vLWG)m- z?}uFG1Bf~@PsL@^H(GRn_udVxIIJ&_;arXy!Du4Fc*(F0F_-i~{{~7HR-l)CgfRvA zQLN@QJJ#Y8c-2@EG!hF5$xJ$tpyVVl6ZirsZ>FKwl*7h$<|W(m3NQD=-Pio=w+Das zn>SYc{N^7#c1X9&5TOZ1}kN;SgSl;^Tg?Zm>zmiFJwLUj$BQ#F6f*719snO>ID|S#B41r0i9VNx z8f`k4fqYAeAW-YJyP%xVe+B`1As+9CvD2pF;e{eRa0iyW$pDAb?nbN)wmy??=a$i@ zChh=;X1afK_ecRHwIM%WKiJHWH2e3B?B2P(X}OxNZPGTip~4YrZfoMw8l(+FtZvhtb7(H2tYA=)xb2_ zQH7tJRr0@G4AH;z<4<1<*1z=QuU`z?zvSaz0ycXIe*cnh$ltgK$$!bGfB6td|0Q3M zRTqK#Fa7k2?|vlA|I)8s{vm+>OTP0wdsINmf42<%&-%DwAmY!X|K(e~+^>)R>ep}V zx#8w(7Juh^KV12npD_`5SNOZnKP~;@>1Q0jm^sIK>l_p)9y_yhkUOI*mj=GCD_0S| zuPc}LozYFy?a9}^=HX-@^yF**e3+BnRV|p2(y#KpzvJZn<*yaLI#FS`2c>`L!b+75 z0cA?ycB+lB;*4)x$&TrMoE<-PgZ$^>*Ety=zH>imAK;Xk6UBowCu$C7mTM#BndLgg zsq&4*{S287kl*w%yh|MbKW)5=E_KRr>|IIVofsn-|UC%rC*Ccj<;&>vX9>*-kW z>tmB%N2|rLvv11F>KVIOxqfk4`Gnv!3x`5swLIVL}K*_(@TxtWw2MJBXc(5IFcfcVQ#mF%u`DL3yk1kL2OwnXDk}?TSfwH=&Rrw`f7&y(? zfbW|@Wh*XBl{=nMcFF%@6~Sf85M#l(NQzo{6?#hH!iewlcJQK(9Y_5Z^uK^J(X3h8 zU{r3uUBM-kZ_Jt39BV(UlYcT>#t?q9vDXf?;$Au`V07KM-UC3lhB!IMZo2rQ?BZm; z>QIc^_@ttdTW89j)Na*An%B<0O8K<%;Oz==*?rC+nnj14Vf)L<$6-XyKY11DSz8F_ zw>>F;65M>PTb_j72hKPYl}cU^%;LN$+0CtgeD9 z9=~pEM%)miu^c(_+o#^yb|Mf8!0ZQUV3ZAPk)4fcs{AAQ5Qr|O{PwrRpzd?V2 zDc4-X{{780@?_1G;OYnMeyD2d+kcV`9Gq*s2(8@r=Ckq_9{cM=tMgG*?~7=0b4aP& zar-gl(*k%uz0QY}D^}gMP=V#(L8yqVWR+1NpY)*ov6=E`SN(>_KN`P+dz#fk#Ui=m zGWV){ZTDfYJx6epJUZKiTMpeKUq4U&S4YmmitT2jhRcK+t_8}ZpD5Fpeb;UGIWTE1 z!718yedh(`b4QeqMfGX6i%YkK4G^kg%?2iZLppyl5VBvyi~WBkUXy{4osQQO{C}n9 z4^v)w;i+H!>aM45yX~%7*Z$!7`~F=sHs!%b_8mLAfB(^=`B;tT6z<^K3kyM_dOcIqZ1}DgD zedxG!{%)sJW%6G=^7KHN5VvT+LlO{W@}P~x6mX4AFLz?V4HW;t*6J+^xbKu(@M1H9 z|6y`Ymv6!AOEUgfE4|a?>JOX)4ILDftfKOlFT53j-HK8@QGbmq{IPrmoasZape|iu z{BV>L<!aa8_3>b1fDIZe4bt>s~NfaDZs(MIhZ;DFdr{4~b+v#J%- zevXHFt^CGeF8Cij_^su)(1b~VY+W|Nq`PHeNLbK5ICu(wR?R@`Tyn@GmmGq|)9jG* zifPgzt~j%}LnVkI#^yRcaqjUMxLq(^iliRpHD^`Y#V0TR2oD36vWJY%9N)omuV{`+ z&Yt@3ihbf7&#I{Y*7yao{(<7|W1L>u6rt+QVxQ_l%`h8@hw=MS3&l|AzW2U`dHO}w z!_#E8*1m9Nd2tdai|of@Lf*lB?;(}J?lDF5Wb`@}?+ye!0=e@Ul__PSCNsHnCgRQ| zCa=+7!vFK64KeaPP`bj$mr!v%$)@V?$0I@q$^S+b1k(f90`u3X1Z~`jXCzOGtE6BM z4my#SzFN9yaqgKRu&lZ@LsY|_i9I7 z8;Hm}c08<9EZ+;H+M(5>i|B21<$^Vf)-S7G{tzWg7j+)c&~7Q6$%X@r3w$sT&q5{i zH>MhvwBNf3MRo?|WAb%xyuJUIYPzMhqb`k{OE4z&r268+V*0-Aa}OeNmJ$ho7w#wBsX(4v}UJqH_27(c+%X^X4JN!8u{17 zn4L?}6hPGQVG(A+s8J;gU)e7O(D~jU1Bh8bB8o&4@jwjeu1Fy44+Fa#p=r7+wKKIX zxdSO;gzqeI3rSdFAZ;F|;ZbpGFab1ZOkha+Jniv!1%_x039~4nU3ja5j`%m5ceo0T zxz?}?&>Q4IsKaIRSln)#%|$#uRLTb6d56Hv0d5Yr(2~+6^@+MdLw;3W7c~X-l*|p( zdmFtizBcbVT2GroEup4RYp5A+j1?K(8IDJs_pK!kL~0Nqu!&a59@7t?!Aq3x4W)yH zV3yAWGkluQ!r9&9-vpiwZP0B;?^|cUiC$@Lj~jn{E`O8L!C3BFvu*h{lF?`Najj%` zH~>OHtGyVD&#;6KYYb3o4uJdzdbJoMCJKsS(KEWb%XR`j*LO~HfIxt7-W9arY+?dH zq6CdG>RK$NFn*ST%&nqbO?}>kF9vXATo{a};+S;F8T0NjM8b!?5tIeMuEMH8;~N&6 z1Hd&1Y<869+IcnD)CS(=mTcI*-y;)Pfr&HwV}EQ5_fU5`(YTQP*-XQ+QK6&TB0l-lz-1Tonmz8+1}xNpI2Z1bzP&T_)F#Y9E3`T zJGSYd>m~X+%?5LPXK0)M#eR6?iDto+eIT$wnnQRqo-$s31j~@TZ+Gjw2*5M!2a8RV za*tl(_8T4Q@ssiuoWU%hXZ*H<$^KYJIF5djM68Gh0u}+C0VKu=fzdLTo;7yDUnF8} zejXqYVzauOMnuZmJUU8-Z{yn9BKdq*N0$a+Ak1wNap{;C#a~EJkP(C}0z*1^X!CNf z&O@{wixbD~p2?ZD=`@xFYHRpR25IPUR*J_EUWJ z!m^MqL}i4DH<6GoXvT@OKBM30T@`QzYT23(n>tqJ+j>{BBoM?0l6)@waUkqwqYEFi z9Klje2D5N8L`cwFpwuLB_+9W6S$QjO;my20Xr$(V#m`h&8v>6m#v77#$E_*S($}~H zN=SrIkI}R%0gy` zaxzPUYl1Zh)>?2e69U8r1d6SGyU*@nI?*XQ1t-Bj>=(ARy;$=IV)3n8mZcF}2eJy3 z6>!`{;)8#P8%ig$v0ji{C&C?}D4ttViU)HN)I+Bkr4)Xh!)(!7v>unK4Se4&2r#Tr z!P}utnozQ1^Vtv-*Gaa7Iza)}1m~MC5{L(~!I-b$PkG}`oGu$;jRKgmCQ(n+&Cr{S zh8u}*FPO3si-Jg{=td?`Gw$3h{Jm`OI$2W58oH-)qvypEqz0cO;^LW`?K?W8ESjiayMEjC!Bh1a1j8Lm~Qkm*izC z4y%itvT+V;1jI992sCV1xomL*7mtikBA$*%MXN25g>$}~Y%Pj~R$mWok z7LuV(*6KdST6Q{J$U*zfZZCBI50pLJ@~=P zF1}#rPSCFS=uQzusWco(r!!FN5oj1Fc_P);jhr^g*pDHiX@<}$f_XSNe7 zKkvvkK{|sdUm~om6=D}A0{TwJv;i!)fjxXb)(*(e(bzNVF9b+Bu-6v_Qg}d!qg?0fdn)ifkVRzgj*+d6a3_;u-iGfyEqu$kSUgNI;-b@?RB4r3A2~}C= zZ$;*e>VjIK1CYa3Cte0pQp?pu+cwGz*jv(8x+j`(tk%S`;E6JcI_gfMSMe99Sb# zlGU`A4z~_lJDuI$etQO4!HhG36c`qa4}}Uav(UiZ@4{kt06pligpDW}paa)J0-+s`7M`|{Ek>seo z4QH}Mw4zR2E-+=nL%oKR(MSq1HwJVkkggt7$m47nIO*!r>U3?+HqFYJ9H^l}K+=Yw z6L^~d+9hOBv3;Tt(aBg4RzQZv?OAuhl?`Q#093MMr%7u<0Vf2M>_N8_dVjoi=UNCT zF-+6WjEU_+_C!iACZO=7h+vmofD3q{(U`l#mNVpxow`l~1Qg9iBfTtM2O1wqln}*Z zdp9D+q(BD*6y;aY24o{mej`+;A<#|&Cf{<1(lx@SoIU1Fc$ncC6{P6ssmQ+QOQ;uv z;YetYuglkqE!hhrbGy(P>K6Kh!QkUi&S^(pw@cUGK18fJOWxe=MO_m#4Rjs_lQRl= zM3`ZcloaD(kZfV{;b(yzkMl&x6DD=MQ4i)%LzK@bj!i6?p%$o91s|YqzW>$+puqKQNW2U8hEhe2= zuvY9BFj4`NghC)2Ukj6Z4kM`Z+dP|G2AJA#s^Q(E+y#3JHX2ZS>@VJK5p_a)2qqPL zsZE}h=2qf^Fu*NS8~UF(hkP9Y;E)j-PVsmJb3yhTw-MO$xe!1%sFx|duzKRI1jGvd zWx_Osm4aIg!Se~^-EmvS)Mblnb3m+PWx_H>})&zwXQJBG~?C2YrF`{(=x2q+YVLw~_QVNw%x;P?xekdp`tT+ZwY0SDvZ z+sw9luMJ+b9jL*^UI-`#TR>0%5dt>lE?B5YxdR!1T>`%-5OFcU0B8^gxxW0L2XjKB zuD0o(I)^6`Q7gYM{*sGkkX$VV%b_FSWMLU3Ln$FI6#(N*mAok?qEdeHqcLKOeDVVo(F6g$Mcu$Pq_!pig}T@eS& zZL7!bap12V_{frn0AB{x9;fOyPfIJKZ?ZnMs zfi}0n)gCe!jef>Thh1huKpLS#rTF9Gb_7r|&WHs_4Oh@EJm3npEp?fI?lgJQs9;OC z9dHGNCrA(;eMpET(-FX}##2*dsVavUnfRNbr%v{D#d;&%fC2AajuvxTd-b|nozY^p zn;RqR!_5L|601Y&L2UTr2RJ`8p5Fmy5{7B3)B-QGUR))t1QFUQZ@owFYxcBxh%X7q zMZ70G9PSkQg`J^YbSK^E>-TngM_k=5V!e|KGO28Dks3r@=)x1|d=2gvw-5_qxsfiZ z7t?v+3G%*PcbA(4?&sRvjc&cK!MobK8UX3lLW7_SHA}5hm((NXLpVkNzZ$OU?T3Wu z^K>F?$-48{QN7wMVB3{rN}~st4@qx2A>g8tTNR; za2jw3qv3pNYpj=FNo%1gO+h>FV3H7!F2NPEryv;+`@+-5ABNXM%tMMrld%qBx=LlY z*o}5wQ)EM=CZy#T@SBhsddRQ!*Z4L#o1FH%J!4N2(|@B;SkxlfMF%PiU=o6l0M13o z$M!`G<};8_d=St`Oe;toJLxdLJJyui5Y_=R1wi+8k2jh7tS`H7o%s$3-MJltj zcrT2AETyfgk!tSExvy8=bBxMMUw?{%lXMEDOJ-C0s51HN4|qrU>g%&qR9Sk@e0s}V zO24lvu6~mnSM4aODjb8H@(w+)Ge~7fV5+hXbBa-ZP&QU%@Kc7a9+v-`s=9}`@h`o; z$5f$9oATdT*@YRRViD-nX??&*xeR02_DvK3F;dq zcEnogtFbreTJ2W51wnn*7ujDcwFcJGHK2*EbulO#`aXF@d(xiJb=muTBP7A98nL>e z-a(TdOLuo3*pf{q!pRtsB-L%oac)TJgu>Yd`+u+$O@cdR7p$UXU9{Q1k}ijBzs63` z2s#mpF*_kBlIB~v?R0BoHw4Ufy3L6WW$03-_2|4tj~*4&uw8BntANGlt;iLy{$%8h zrCe@91>o_1fY91>Dy!Y;fqRQMD{Ic@2wM0Cp$$G-BW?4vfIJ?GH$c2tf8Hou-QW;3 z_&}gL0Ok+4noOy~U%*}u!)GXkeXxNM!iI8Z{IAc4IA0}9A51tj9ySa!#1Q>sm_J_} z94IWhimsVK(j6QK=I9XZ3?zLh2X`U{6@>R6Y?0c;M%ZL+fd((JK=QKwCob4hc4QQ- zG18U?@(z_aL9&%Sd)ZN(4|-6vTf;PCuHi~1P_ILiNec5K>Ew-2h#s%OK(t!0o1?X+ z;Eqx96|jZbMPC#IPGO8Z6b8U5PNG1h>8wo#^_#^TIod9+m)a3x149m)^LT8Q_GVK( z&Y(5dG%Q{IBbScW5rih4NnNHTXYWR|KJJCuL^*y0PHZZf?8lQ%qsw(NeQ2mRmJk3> zj>h0Ovet1}Q~|IIR6nxt{=1u&(Uqj+7uiYC#H$2>AEmo#f1uCTVf~Zt^tu<Y!-*jYPUIzP7?tF9l$37s&1HGm|dO~W{Ke>EA4P3Z9cn} zIP@y!(J@m86c2cz7g-d95`YHb1q?myA%mEhM5T z^iIPVNzAN5oux~1if$IvPr8{!S@4aRQufEHw=Nz0$>3edS>bPypdr`{Y1a-P*i6R1 zToH`($w(&N-8neCy>~F*lkAFR!CeZ+3^-wxcY9_t9U(a+bZlOyQBB)zYuYVL8lL$y z;LXmU!|x#D*H-uu*2H2iNZqMzne8LnH+Q6CJtAai)E@-PLK5k$1Tm-GNY%hni$!AT zLMA$ti%DUuf7+`J(m^uVnd|8(=kB*!@EwSm2RI|?y82?}yn zR{G~~H`O<_8w@5(`^wlRX$g1;v^vgGFeck`b^V?m+|bCt&@Qar4tK%6N87(Ve9ICa ztbKILeaOrO-rfB2vjZPxIsx2@lmlrF*NN>ylen>DK>hG;4hFFsrHk&$HnCMOTx30= z_SD<%AtEr>h#7}Tu(Dg~lP*^u@JBGY$Z`~jxgu%Ji#_2%slZID^JY@PJLHCOHvTDjGRJDEky`u+W9ivVLq86F zm8=hJgmNxlp=^tu0VF3}rOX)*a^5(+VOW)0!<&T;{s=z+U-z)T!@t?P)zu4$>#=!l zq%~X}Zh+EVz&9X4xxll)NaXjMIX^?x+F@w7Ne$s(J?&(nq4iXg}}1Qc(>YVlXJhSx{y*(F0IjSt;l?_2L^ zb>Slc#*q+%TH%92m((ZrPMp4UZ$i-b~CxJ?cYfL~rcE)-{Gm$@X2TMK_ zmKP!yNJkBayZt+$K6`>gZqliIj9VXOYJ3&@zB3d>f;ToA>+bo!#=W@8dDINjGvlBE5E#ngFlO4O<6SxaC^}gv&T_^F4I1!U!z$y z3e^Hzg{iJa*~b~2Hme#wRV&mREY(ca$xoQM1J8yBH5A!Cc-B!z$$W}-MSEiXu>nkb459rv3>dgk zuqa`GMG>RM3nd4L41y6T7!p}}2}ImuhNoZ~S}OpiMh|0HzNK^-lI|tech<8KCYlHb z3Nd72rnM<8>ZZz3Ak<=cY_3|S_TkMVT!QW81N0n%#)}PB-{x9I^olB=Qz5)z51R`s z)2+R$N~twO08k<0g2l~3H%kthKopME63j5|4s)_2kPe^_PO+n#8|{(!><(VcBDR4$ zai`gL5d5cBo7aQ_1he1fCU%e2U~VIF0WlL?3~gjAyd|WEe%JbRehb2N2tQ!aK!s&3 z33r&Z^=uji-9R}Thp9l=1(-PaajgG{2y(utkU|)hnLDvGFQA4z7x#BbC`StCqj20P z8rfhKz+}Ya>-=a$fZT`G4^`xYBLTw-1w<^33y%^JAp))x7K(N|T93Pj@aX$Y`@`@@zm-%jS0?bO%?1gdR)$4j@(DhZj?}%(G-W$z4jm z!a_#yow!hi2OSLNwSdcbqfe;F-fhkSu;;r$v{QAO%Q9VhxQ|(bB zt5L#3M`3*Q0v{867&*6n^?NAKs+G_PYc#KkjhkN);dXgwD&Ja zKK1L8EeKAv&C}0CD6|zUvu*7^u;A9cFZnx(Z>#SK`!;unCsR*rsB1RND5M#J=3qml zHQa)~&CE@1@U#Rrzz1`Njc1V;VJuO<9ic|xbxKwF3yxSH1FoP9ypYZVFR)IVsV=%c zxPi90*08n7z!v@1pevypFr~~RC3P1DC`Xi%j*?JUSPU1E+e5wBCUMbYZ8XC>sTJ}IGPO2rqFON?h9?$B z0FY(gfowuV+!<)MS#+%?7bem!N(^aXW6RQuy66BvJ$~5jQA5-Te~_hYz{dbZ0nZj$ zyo&%AWI{`boqa$QQqh5Es9mxr&nXGS^u5RCS3=1$AF1h8b7C=&sRU8N(3Z3wjpc7?%;DA{! z0Hp>T8FT@v?3rI*)&)qLV&{bHz!m;L*~zW=aw?NJEkN0NG{Jr`pHB>RMEHF@UCDt#dK7fPSEIu26YXpDHJdtDY*ojQfMwP= zuEn#>_KC&4RBFb zaJ^I*3Ki1wl+JhPZ^%~TV-GLUEnTUm_jM?rNhpMG4Q)c|jYreX(QPrRg?iOf_wnOv) zJ+gOX|F%Or4)3O~kV9*CE>btsCY{}k$ z4f#6R0I2?t54AtNq@mH=z=mrWWF`_U$BY5=IhdM7ZA(FQSG{-r{xyeI9=?r|MXT2? z($MC7QwlLayVoPO=j%FGW0#a*8L!SdeIxvF4}b#TNAs4z$8h+-iUsNjU@pvN{p!sd zcWSy(x*Uy1qTwhj&Ky}vS3qS4jdTgUt{QeRur*N|Sz?)Y7sb>t=G2b5zIt#R9RW7D z&Dhb||72>1CRbrxS+g2k)90%DHlkb&zHvm|#}84ulYm2?_BE!P1ZU6<>w|_7*A5;O zxAevnJkrOEj~BJ(PJ)fn0*$KNUr9H{{Chw>iBt#lpx5c7^Wh}a(ps2z3$Tyf;mEma zTzL*I2M+|8Rx-LpwR79)m*^3?yS1x^Zp0#MsE7Rk!W-iCg~Qoh&%AtMaMfZBo%PMD z>RY_t7%W!uV#OfM7YYODvkZA4Qedo*Ce=OScm%QphpwbG0`9MlKH}H1lqiOK{$^L9 z_%0odvp8%7rLdibloeZQa{;BWjaxQgbr^wTfu>~cO!`ndF7_s}rBc|Id@}=vTJ%i> zcvi0mBV?tpj~zI)dv~c6w$)T)Kt}=ShOO2urBc{?7R}hS{=!n&Z{1rif!%d<@8La% z6Y0+0?rx-WP?JqU!E+_BlDdH4BU}Xr+(8Mf)8N*usX#?{sRVYd6>!dS39J((uuEvQ zZ#GI`!E2>K(;rY|uo76gs#F8(_pe#LY5k`44CQuV4eaV2sG!R2m(WBtjF|gq!5Nw+ZN?&i8i;~xUhdK*`{bR!~=3qfFz2h{Y(bOvA?T_g0?#K=%;DjFDijvnA z^M82rdX&7P9npfp`q6D&D0wv;Sh>FT!jjiJo;zFV8i6SW-?pJ594=M5nspBFFuC~`$>q*XoDTSvM|MXoJ{wY??C zEz^C-1GVU2nQbJja}r%&u#BL{71SGiZy}y!MXrXS`iABUi(KbE#y$7s*mF;hp|+I+ zfB&Q#y{=MiYZ$a}KQH|IPo)%W52X<|k(!IsRRQ8%4l-uTZ2!P*UC>8 zTR6ZI+*+MYt5zyZ?fZ&R%EYBjt1Fuk&slC*O$sSt1|0=*;&_ z9R9rvhB>2rW)z^q$dx+s@ecKG(bxKiIDDS`0~uXhZmn7}&FJ3-p_O2yQYo^Mvv0J%w=ah%bw_ZGYetO4WDo?Mx z|NQjgFm!GC_Y0dW$1Sc8`RAJG@|41DAdb|@9lKk-0C zEo)Hv{?8^li+OVT@WNhpm_I6(IJ&h_OOGN)6OtK>(Ojpe48SBrnyUeuP~Qy!Sc+GTD>myFUU$}8ij{lYht2W2ff1SV4vz~y;!CcxkSym+=Li(kI7 z)RZLyYyNB(P1J^vyYAYk+*fYJGCI-P1raoi;lWpNE`$(5tQpJb*9t~Zj z3)*4=^F~hG#j>GI`C?eZ{ILUfwt9l@rB{`zOmkDc;9Dy60r~ zNh~zAT&YwkUsBWx!Aq@~N9X02jRH!FJh6?|SaOEP7rxZ^625tZtiiW$kZ(}FENhe- zG&AUo#`y~n3Jap7WS{d`^D)3~P;w7<5*9X9F84g7y^oX-@rd9s(gHxjkv@L1O6J)tY1U zcz*vVBGky0#=#VPcI=fM zNd`K=Qt|N)@wOfFkIjD^9RWquKcI_=C!)_S+q`VJ28xk24xFycs4$p~Mi1|ZYo<>* zJyF|NyK&_?5saKqDe)-{(t@ie3GTp+GXkVN__bV z&bQ=^oyVN^eGBl#J_F%NB8~SmVb2R2bItN^9%Hn8~t0u zM^55}D}j8}_F}v1?6V~k5BI%>zjxywpRT$Vt>{X|frS|dq^u49b`&FF#jzjUhX3?P z&hB%-Xi6LXy`vLa^$TUKnuIAZ^}Uae{i3YJ*{?DwYjO6~Qr+zb_vSyn!Om{}a~lk| zRBB)Sg|aokZWovTpUJMXvwL=Oh4L-kcm9s#=gy!0k%`F+edJ>$@3kx1e{$UkVBwlk zJ|o8c-p`-;->);FJQb(T4^?^Y{4MO8cnG17UO9hjm$lqK-VAI*u{nRKe8#C~W)`oM zpXTnP?KfAWH?8iC`#@b^v$(w-XeI`zw+>p8X}F&~a2t2fj$2OAQ#AP+@Rz~z&nf)8 zo#t+3?`KYx*{=TLtD++Q}Qv|>Zut91V*+6Gg{mp1?K+PEC zeY6cDCTz&FAaIM^|I@N5X8xIFGoJqFWm9xu*^KYU7yho8F77X1=cj*_seEH z^Uo}sV)~<(&A0>0h7IcPOK)~#7cLvuoAQatZvvjNmKDbrJ!l4ZeO2*>Bj-xw@n#z` z|IyJL~xp9dl5b_C*JXCbyLF9&U)fE1J$ zG~sKMH7cJEK~rFavN~4bgn$-E)9U0p6*Jpl_sX?6CsMpDYy)2^e}14#ijDGDF-7uQ z#TPjF$C$Jw#np4UA5_Wmne4%2+tro&%@f}^^L}MdGTx^?qpFC8y*Ad48~hb_bMKMLT(#t2WtZx|U0bOYt(|K5 z`asb}--g8}CbF9MuCC10Onl@0_bZz%wnp{)z>d0vIL`9fGf{1OxB_(L+aK=~oeTE}@3a z4c&%aeldWBg@iO3b~mr9)mJx`LS`O<_nZvw#|qo~Vwq?LxzZ3iNLYUS!2B6@cz9?X zK|1BO0r^;{Gx~J)vAryeX-+pL+F~HFA(?!tZ{OOH`!sjbyJzZ^Z<3|sHWhNEem8$d z?~)fIZ}4abZbwN8`osZoak6;-VJ?~O%fLiNOK*WFUy#4RSdx)W0B^MXc?NwfrRA*| zR~*g}vetN&w!_zyuYsfjAbg1^UzNX#qku96Cn5+*&uxck%DVKrp5O8s`6Ep=t05;0$Tq08G7a`+ydI-d6+&z4dMa><*ke@ z(Gl}>dB+_6Ex}cyax+zK_9!>QS@3z(GySUqi|8!6Jai))Cq>XszQrrwD#*74clCCU zMZ1I;>|+wKh79VDKJ$PcQLAyZK3mpqeAv+nmOYj$Px!L*Fo=nF)BmKWcsOJ9MBpt3 z@sE2CBh!}vn=Xyo!>z)@QA39ACq3qC6TCqAF9 z%s>AHyn}BYm#-cB_px7}m?Xb||0l~Y$dr@QxSE2d!85Al=gNHU8xbPjdSDbF=zfaT>ZsC#o*r_SY#- zpE|LVL5L(bT76-6u?}rRx(HGJEPq$!15`DHLYM!-&z;feAfm+yq&3y!|EA1TX`Pl$ zSc&c~bIwJIpI7cup_v8f3k=!~YnIU;(^aQ$Mt*AXj~jvFjew?L%gJXcd7bXN=cjDl zefVfFDCOlMq~lkrrk-?-O)7f+olS_M2lc(2$9wLv;sg zPVT6>{5iQ$rQCGp`=yyby|}amC!Jc1{UE;#mH!QFwhz4d&GXOd1$ib`*QDa-_M8U;_ZJ!*!Ru}`S9x4)&rB|mg41{{KYEeT0HLw z(ZJS$+;Vu5?3ed)^4(Q(NWsa!R9XviGv0rmy?<4ed^f~N>HUkp-#uP+cIlM9-gz_o z_0i(T*+ElJE{43BIK6z~=^=2~HA)|suY!j0=dW_%#~57E`4>+9YLya_F}AxeIPUBR zcgq+Y4u4Qda^ou+xv8gbnAnc;+{2%}d~b1DXKB>}y8)~#;?}^4iyL2Bw|(B$jh(Ag zOJlAe+JppUZt%pTPsx=;0R1m3&}eYk3_nD|VX|KNzCq`=Ymtv<9KQkiCWBmQ{Dty) z5;yd^V$^C`^U#8Suq(?#_7w=(3x+r6?C{P>VfKX?h#|81yZAO}MNE^5rd6yK4D1^)f4JURC> znTu!pQ5>8^uQRV}mQs2D5{0V=NfwBg4%l~^x3rPt8@8|8G6TgRD5Q}5F;;8NZXE!H z)^Iyx6hK)K+s9t!T=@ta=T^26&#i&dB+L5ml=k8)*o!|cE-1}!@iMkJi+7%o6DKAY zhd^^7Us_n4`7P%T+ZB;=9 zRF~hW`s)<@GxhkKzz4K-a5X#^zo^)N}_av&yF3r{HJmN@~W%q@`G}B6@Kffl6~@%?37b4 z`Eqe7`}XQfzO77W4$OBy^1h%kdvQnSZ<^gxaUM2zZ`Jr`n9RVj#bC)zSi-rGFTJk%z^ zn{#_>+BP*ew}7Bg=x{O4#B&#@teQFx?01+^!hYIP{6Cyrb>a2#=2P&$K8g1peZ6>; zll!aWAFk&9yz}c7@--9xfA5mt>%Ydy16A+;3LetecD_@2=2u_i-dX*%%J+Y@@RHvb zUGn=SpSPlyv^-dKCcBf9hpNV3oA!;>f2xqbyOaCo>OYqLKl?lTpWTvByp1z<={pU% ziTK@_73bsh?>GI=mq%5ltzkoNJq18erID1Gc%v2xk! zdG!~DImv}-go!M|{)sFCfMVoB2bartbZ7fOc?vSF6m=9_Xu$*o9gK=TaKxX_EC3Db zb-Rr{+HPIP-@DmtE?3BOhh1^-;N)rR4sSG^1QkK5d@jPW6lx$%K|aJ5#hG6D0qztn zyfFfUC4ciNG;i2^uuuSMi-8>z^+}6K*WTXTNXZ(ieVxUaEVrT-I8grCjGxz0{cG%f z>n&>-i@}P`>);Rly{Iht`{|eRypi+i7b&pS-Cwhfo}{@qw$NQPg;AcOoft7Zll;w3 zvBk~9Lfs2;1In|yT3DR|Ia7Tu_#cd#)$h-l2vkWiP>#nY2ushXD>@SSOexX*{=b&K zftin_z=};HEVTiyI`_O;_uq4Ay6D6`$7d1Al|;U%gX;T0#CqmaSb6EJh>L07zXqoQ zK3j6f&?PwL1E(i@{I^~_B4dRoY(>I~jsMJ3Z2aI2a=E?0Bclo1`_<=?0|7@$eP+%? z#0n(db}*iTWE&}j_th0ztIk-;kDvM1(l@}7@3N>6sdUDXH$z`<>G)G8p1m{)b^o*T zo+9qB1rZ)C%{2-x^8TlgcQP3~xR~b5H8>U8XSpSy`_L|##h`GpTQ44wu|jkuT&S6u z`m5p-@(oC?+1mj0-r%q{wOXv3%pgZsK3#FItz)M~zFxkrGEI@3Nlw&=vME<9KY2;M zuHwVqmv5|~qod)HYYEPPvTL~jq(Mti25%0X^^{S=7;`aK89jTKqD|M5N~;wNOrkZa zd3?r_iu1oH*H_RLoAis&>`adkE(McF4#A0^i(~W;RG#FKzW_WYx+O)4uq(PbbqJ$m zog#q00>#5rB`PnLJzOR&b(9kRbN^#!#ra?48!G6V;SuCZS*;GTx~x>U)>>~`Y%R5* zVmU^)7$BQn$ws=CC^s*zG}{dhhR@TSxM^|4`CpWo6|}L{qjlTRSP2T>nGA$cts54% z&@JG%!cV}e(g>k3bdeFXQY-oz5_x9jKk)!&SLR)LcNUT9$M$v&qP06Cev$xp!+2f5 z%V%f1sog;g3OjfWUeF z!iO#D@5rC180<}KfBW>}uP9Zk@4f}h<@NI8fJi*MB{$U7(rwbfk#m{#hBk{60h49A z6K`wet(C0sBM!X%uzSGVVNclN`sb7>BO4xlV9UyVwqum^9F+zlDA$JdTf=W0y87qK zUY_%o7tl(PKhl44jJ}D5eCrYAn{*!4dEfwEa_f#R|1q~?fk^QqgW#hc!bAqbea1X4o{;SEJV) z1-GQ0n3_}|C_yR38hT&-^3~04rY4k#GJ=GTeLXRCAg7`U9(d(syffSZ_OXOFiUwkn zlqISq+O~FNFHr6#+Q{;o;FKZ<9zZoNND{#76O3j_?|xO>kpx-eZn{0QXDbO+F|Lne>h(P|0ZH zt}e3U1ywSVjR0gXKsY0=1%_G^Hu`6as^TJ!-JE*j=GxaOAEPP*nhf!2BJNcMqfRV2 z@Hl$V7p1MXZf&DK;9+HetfEjYRrE@TIx8kHn1Hy$L>3|9@xhxKIHby2I^DgLoH#lb z2M?P^Q>rfw7_55tTG;ryq^*m{3*|pd%r{YLl*_q3DLA5jntnx@i&Dg&o-ru3T!tok zf*Ikh!t21zgTMh?EWtYk7MxpANwK71UZoVz)5Vr)p*v951u4sq>q&1ic9Su*i1=rH<0mJ&n27bkx0!j;C1qxN>pBm z>f&cBB=BfyFcP#KYg^?+aPop3*&*(yW3*cbMqUFWQ6kzvO>RLUL55=8CzN3=<6>Ss~j2;a^ zRdizu&{}Ja@e&C>;)>T}md5>+fyOrH#bSB~l}chd=-Gkgl(;=N>t|b6f2QQ9N>7>E8=j?OX_8g>X4keuG@{|O}vDh#L~ z(NISO<+}-A7{(=acx-k%QI;tyRW2uL=+LSeB!?RL0W1OG153c;U&k~te^$1h)5O`* z5?EMCA2xho33P=Y{cw3|9r5q>z3zV$MqW6OV)6JmctDA~QL(5Z_z5v_r_;qqC(xW^ zLOk!K{d_+b!=RSlNXn}LD`G<)`ntV%>jldpm%em4I8eE(r`lXwfwbpmyt?QlE2l+5 zf|W(`2X;MkG#Sao`_esPl#hcx0@-w%2+)mZe7OO_Q3109RU`>_~W&o3)` z4yf``z$KXW_d@%N;2xu~bK2h&L77t**mb(_>I~+Qh6y3*7UWThPS85w8!C*OCFkrw z{llQJF|NM6LuhN=5=rdz0li3NMICiebm6Dza{&pK9N$xB?- z;Bp2_F~SgZ2D;qPNLuvsZ&Br#&mH{;c|jv&il4AQ;kX}uW(8U1tah$0{3xCYHxJvsw9x`d94Vy&TQEa?V-hbQyxiyY6u@H7rJ3`YU64E(~2aaO$vAjf*} zP{TBx8UWQuB<=OJcE@_qWlDdD;1(ao=Nz_w@{OG@;m*#Bj zFfWzi(P-T|y$VRa1AzJk**VzV5sd^eN$7{JPhg#U;5)G97LdDU3o>UylIj$5`pZy} ziN{_<8OWC|^K zU~A97u0uWFkk3tYs+L|$=zJ2#-1$<0jz9{nVl4B>fzR6_Z6wQ0xF)VgQ!q|NleO7Y zVS#33{>f<~-k@3 z2P^la!kuNn)GbF_iniifV;#qXzm$b03!v1EI$=n?r{NRyZnP&8V<3->Puy*=NDZVI z%s$*IGTR5TLiD&~%YcRs>!^8?w)de;w|*q(j|r>YCMVjvIS|O_GjOM&UA8X&!pBxNv?Vy3m-kzX~&Iwv!R1ysks6sK)TN^iBu!}$+XJO2o z;8Kflk5JnLNw5o4-z0<+$CSAmCHT8YVHvyAnOM_o8|hM^eX!OH4p-9Pt3Ne%b^v6n zmJ_u_7-FGX^E_&c7W5txQ_`9whlww65L^35%Lg$0rGR`sgnvH^sg^5+M`iWM+)sZ^ zxCaRS8=pe9{s!UVqP>S@nG3~xzx?XBG_R9ZHc8w$!FV9%Po#Dpq_>RH3*EtRTLNiR zzdp!*>9E^-66yBdri}|_OGs6fY6bV0&@AFL=$VaiPtX-2&?=Cm&rgIsC^!z2MM zV%Ji%k!(N*iqnf_Fl(7mt|0>2^Hxhj5o+K7pnpXKtEgg?+sq~O3zY=L(4;rEjplY9 z+eJm*C~_voox%@0p4=~7zYn(3-)q!T4tpvys33pjI9M9ZVt6 z`b`TE(64OXa9zGIwN$vN{4UT>qxXfIN}VEoyDJiCOKk5x8crvB1EKAq4$xX=R}`hz z22_jDrKte3clButRBpE8&$Imoyi)O;YCTwv(3HYqg#phnrYklazi@3umTL&9l7Go3lh_D1k17@H2EIM`lXY=WF zLQL(jinu410I3HnKcA`u%gK5>RB%bdc@GU$_0|C=a&koE)%w(KOeyuz=0*t)VenT# z;DLrjz8G504cs4vun5HEP)NooRpE zJ9*ukNIky}yIAf;5zM5USa+z+wpsd`(Mg2%d$6d?7VZ&QG-zCnagR}?{XrhcY{;KH zZ9`l@?c~jm@r2CsTA1~K(0Rgo+La*;RVMsSO=d*)`at@2rWYeYwinP?r@ z@7ccrPU{wQTkGvQUdzo8=AE|PMf4WYXrg~38RNDzjBZ$*U%FU|a-h+t=6otqtzQ#^ zn=$LunwD|PCfP3q)hTQBlJ*^lXvx5r-Z1w*eO?sX)Z5$Yn>+=a5K&6H166f0Gr=ysGN$*?~P-GxtZMvaqUZ@kcD z4ydA-cPDm>z0Z+`91CHZ3?0s((a!<`J*W)~jZG>@veAj6kQ?HG?I-Lp538Xb^abR+&?u-yT6k|-_BER3fHd*q zs_SD;MTf|uhid<9r|4^X{cqtX zFIe>n01%hV#=pKV6K>Xt1#ZDtzj-bB$#K~*iPa^QUPg?IZ|zNDOM{QY>Z$E%Ocr5I zxu>CN#7+76bSje3YxhYU^l=f{Wj)w4*ts!@S>b*WzVlW=JYyvYKu9K6E%_~peI6P@ z2Wyn2ZvcR?)s^WBt8k*V>`+H1{)DS5Tcxij+#T~j{pDcLosiMeobF(}|LrAP9u-9Q z+$@NMe}3=2U&#)VZEd|B@s_sQI9|m@4@q{Q594wAuw3GG#sIzPiwwv2`Qb94kqk(h zi+338bq>IgRQBHOvdkS~Dk_^(%1{S^W^m;qn~RpSe>aTr!o- zsqn+k??Z9xmUmIJ`XRmGj;{qy_DA725*})ZX0s;*%F+lowr+6s>Y|d>*xD{|YnBYv z9Yd*qmv=9l%HH5G`2{(26Sm)_#9EiKmke;d!Oq^^wkq_C)|#8- zQ0Kihb7AI2(6UtX>&eq(p65PThzYquTa98CoPpJ00`W2lCtY4HKG?Sz>F#%O#)D0@ zvirmei&G(OMo1`k>0N4%r47ElRfiyv*8};aa5Iu_wY|ZiVq^o5Qb7GNuFYXabzJNqa{R z$=Q03E{45BVZpr}-g6vEp77Df^mR!(l}x5ul8TlVWs4Gw&9d1iizTQujKwwwJ0SqS z8Q>@}+2#t0aXcw3{kNx}4|ozS0ds5jK=nzfAS~RlA+Sxr`;w-<%Wr3sh|Pfh^d#eg-l_CrzyB0x`GJTkeLsX8^|r6uX?}W z&DGoL$OGhw)*IrAj*T`)6ZX-|lT6PAk*RGTghILWktce@`9>=zm^Z|8mLkm2cg~G-h%0nz(o| zb=rj=QwA_Q@9M<~m*$j_(h#G`R|ijDyllnF#b@8UKr}IN@!His;GVd6oqzA**v0EU z?2^CSyogidBlJPC@1cE9jy*TF1R`eewJcsvNL;xw2(}w|twH9fa8%c{K#9h*x zxYfdPiTPR6EbGEG3HesEX!qe513xdS%GaD&C}}h~8f3!jyJ#GG*x_iz#r-iVin^kx zVQ~?STPI~7T!;?}Q*v|~8}9GAs5NTm{-_m2>|t}{XZ6ut z7d_ntN8>AiMQ;c=Iwqcby8Dg3zCyqYO!T*1rxh{c7;qx$kS37ky-WA75_d%|g=AJm zZr;1^v;VBj{%0k;;>FYqFbnEIQBT4L5v_SWy8|IVo0_moHkh?jEw76tp+A>c<*FmVxHp7I(E1@*`d?KCQu`OkpUr zUmc_KBv<7;ozog_pQvYCbz(F}!Iw{zB=WA}aN{+%b>^55#r(?U=c=(LUK2t}hffKy>hVE&uW(tJW6#s7}en~uKe_2NeB zNBz>PlL`Y)QN>yPirN!`F9&XQXAbKRP<`qvFf)fzxgI*&n=l z`tK+tbk*5EdS~KCvjl*TR_8+fm=>M=fp;f9P*NbF#b^KI$iz=J2-79BBo_+9wDjx` z9Gm#SN|l7JJ^LpwPyD1#SR|qAav|zV*XJ_TUb^Az&%HA7xwU{KmgPcqmzJOX^W(zh zY(z94^m24XR&Mt%lCasK|LW8yRy3VAU2mQG(R_+&IcLT`J^kRz&z-RMPW@yqz#ZQ? zVISiIH5;{EFCX6bwv=qH?x>8QbrPISy~)-%4y*0!d)MW!DQUF&^lp%(qs!2p?oN8U zartRwM7Y%&RTIegSAjd6X~zNb4sK}V6}XKZ8|sQ$s%m77L?2NkAr1ow0SBvspv)rh zix8a$SBzvHH)FMYmDUE*FJzvi!(>yOk&g5YkQc}&bEET8X0TV`K#xUZK{(BA zq}$CUT;U-`P2@lk1X)>2IjT1nqgBVN)PxW7zI|F6!~g29mwm{4Muh4a%FYRN(b6^ za96AQ>z`XYw{F$?MI3AYW3uLSQ!c&ia{T)&*DyYLa2I@X-X_Ns|E%c@AgB zZ9rOn?l=tKR+$*@x#K9xrPtP;=WHgg;)j%zu+%EHmoMNCg@C94UHY$cBIru7qvhlR zp-E(DwlE?or~qYeXbIeF=|wak@+ZS-lHmMkTa^lr

KHd%&|8S^QlTavNt-kJ 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 OGPjg*S?asglm7=Ph_8_V literal 0 HcmV?d00001 diff --git a/submodules/TelegramUI/Resources/Fonts/latinmodern-math.plist b/submodules/TelegramUI/Resources/Fonts/latinmodern-math.plist new file mode 100755 index 0000000000000000000000000000000000000000..c9240d8b761679f602980af01c0e97594f5003c6 GIT binary patch literal 65067 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 MTMathUILabel { + let view = MTMathUILabel() + view.setContentHuggingPriority(.required, for: .vertical) + view.setContentCompressionResistancePriority(.required, for: .vertical) + return view + } + + func updateUIView(_ view: MTMathUILabel, context: Context) { + view.latex = equation + let font = MTFontManager().font(withName: font.rawValue, size: fontSize) + font?.fallbackFont = UIFont.systemFont(ofSize: fontSize) + view.font = font + view.textAlignment = textAlignment + view.labelMode = labelMode + view.textColor = MTColor(Color.primary) + view.contentInsets = insets + view.invalidateIntrinsicContentSize() + } + + func sizeThatFits(_ proposal: ProposedViewSize, uiView: MTMathUILabel, context: Context) -> CGSize? { + // Enable line wrapping by passing proposed width to the label + if let width = proposal.width, width.isFinite, width > 0 { + uiView.preferredMaxLayoutWidth = width + let size = uiView.sizeThatFits(CGSize(width: width, height: .greatestFiniteMagnitude)) + return size + } + return nil + } +} +``` + +For code that works with SwiftUI running natively under MacOS use the following: + +```swift +import SwiftUI +import SwiftMath + +struct MathView: NSViewRepresentable { + var equation: String + var font: MathFont = .latinModernFont + var textAlignment: MTTextAlignment = .center + var fontSize: CGFloat = 30 + var labelMode: MTMathUILabelMode = .text + var insets: MTEdgeInsets = MTEdgeInsets() + + func makeNSView(context: Context) -> MTMathUILabel { + let view = MTMathUILabel() + view.setContentHuggingPriority(.required, for: .vertical) + view.setContentCompressionResistancePriority(.required, for: .vertical) + return view + } + + func updateNSView(_ view: MTMathUILabel, context: Context) { + view.latex = equation + let font = MTFontManager().font(withName: font.rawValue, size: fontSize) + font?.fallbackFont = NSFont.systemFont(ofSize: fontSize) + view.font = font + view.textAlignment = textAlignment + view.labelMode = labelMode + view.textColor = MTColor(Color.primary) + view.contentInsets = insets + view.invalidateIntrinsicContentSize() + } + + func sizeThatFits(_ proposal: ProposedViewSize, nsView: MTMathUILabel, context: Context) -> CGSize? { + // Enable line wrapping by passing proposed width to the label + if let width = proposal.width, width.isFinite, width > 0 { + nsView.preferredMaxLayoutWidth = width + let size = nsView.sizeThatFits(CGSize(width: width, height: .greatestFiniteMagnitude)) + return size + } + return nil + } +} +``` + +### Automatic Line Wrapping + +`SwiftMath` supports automatic line wrapping (multiline display) for mathematical content. The implementation uses **interatom line breaking** which breaks equations at atom boundaries (between mathematical elements) rather than within them, preserving the semantic structure of the mathematics. + +#### Using Line Wrapping with UIKit/AppKit + +For direct `MTMathUILabel` usage, set the `preferredMaxLayoutWidth` property: + +```swift +let label = MTMathUILabel() +label.latex = "\\text{Calculer le discriminant }\\Delta=b^{2}-4ac\\text{ avec }a=1\\text{, }b=-1\\text{, }c=-5" +label.font = MTFontManager.fontManager.defaultFont + +// Enable line wrapping by setting a maximum width +label.preferredMaxLayoutWidth = 235 +``` + +You can also use `sizeThatFits` to calculate the size with a width constraint: + +```swift +let constrainedSize = label.sizeThatFits(CGSize(width: 235, height: .greatestFiniteMagnitude)) +``` + +#### Using Line Wrapping with SwiftUI + +The `MathView` examples above include `sizeThatFits()` which automatically enables line wrapping when SwiftUI proposes a width constraint. No additional configuration is needed: + +```swift +VStack(alignment: .leading, spacing: 8) { + MathView( + equation: "\\text{Calculer le discriminant }\\Delta=b^{2}-4ac\\text{ avec }a=1\\text{, }b=-1\\text{, }c=-5", + fontSize: 17, + labelMode: .text + ) +} +.frame(maxWidth: 235) // The equation will break across multiple lines +``` + +#### Line Wrapping Behavior and Capabilities + +SwiftMath implements **two complementary line breaking mechanisms**: + +##### 1. Interatom Line Breaking (Primary) +Breaks equations **between atoms** (mathematical elements) when content exceeds the width constraint. This is the preferred method as it maintains semantic integrity. + +##### 2. Universal Line Breaking (Fallback) +For very long text within single atoms, breaks at Unicode word boundaries using Core Text with number protection (prevents splitting numbers like "3.14"). + +See `MULTILINE_IMPLEMENTATION_NOTES.md` for implementation details and recent changes. + +#### Fully Supported Cases + +These atom types work perfectly with interatom line breaking: + +**✅ Variables and ordinary text:** +```swift +label.latex = "a b c d e f g h i j k l m n o p" +label.preferredMaxLayoutWidth = 150 +// Breaks between individual variables at natural boundaries +``` + +**✅ Binary operators (+, -, ×, ÷):** +```swift +label.latex = "a+b+c+d+e+f+g+h" +label.preferredMaxLayoutWidth = 100 +// Breaks cleanly: "a+b+c+d+" +// "e+f+g+h" +``` + +**✅ Relations (=, <, >, ≤, ≥, etc.):** +```swift +label.latex = "a=1, b=2, c=3, d=4, e=5" +label.preferredMaxLayoutWidth = 120 +// Breaks after commas and operators +``` + +**✅ Mixed text and simple math:** +```swift +label.latex = "\\text{Calculer }\\Delta=b^{2}-4ac\\text{ avec }a=1\\text{, }b=-1" +label.preferredMaxLayoutWidth = 200 +// Breaks between text and math atoms naturally +``` + +**✅ Punctuation (commas, periods):** +```swift +label.latex = "\\text{First, second, third, fourth, fifth}" +label.preferredMaxLayoutWidth = 150 +// Breaks at commas and spaces +``` + +**✅ Brackets and parentheses (simple):** +```swift +label.latex = "(a+b)+(c+d)+(e+f)" +label.preferredMaxLayoutWidth = 120 +// Breaks between parenthesized groups +``` + +**✅ Greek letters and symbols:** +```swift +label.latex = "\\alpha+\\beta+\\gamma+\\delta+\\epsilon+\\zeta" +label.preferredMaxLayoutWidth = 150 +// Breaks between Greek letters +``` + +**✅ Fractions (NEW!):** +```swift +label.latex = "a+\\frac{1}{2}+b+\\frac{3}{4}+c" +label.preferredMaxLayoutWidth = 150 +// Fractions stay inline if they fit, break to new line only when needed +// Example: "a + ½ + b" stays on one line if it fits +``` + +**✅ Radicals/Square roots (NEW!):** +```swift +label.latex = "x+\\sqrt{2}+y+\\sqrt{3}+z" +label.preferredMaxLayoutWidth = 150 +// Radicals stay inline if they fit, break to new line only when needed +// Example: "x + √2 + y" stays on one line if it fits +``` + +**✅ Mixed fractions and radicals (NEW!):** +```swift +label.latex = "a+\\frac{1}{2}+\\sqrt{3}+b" +label.preferredMaxLayoutWidth = 200 +// Breaks between complex mathematical elements +``` + +#### Limited Support Cases + +These cases work but with some constraints: + +**✅ Large operators (NEW!):** +```swift +label.latex = "a + \\sum_{i=1}^{n} x_i + \\int_{0}^{1} f(x)dx + b" +label.preferredMaxLayoutWidth = 200 +// Large operators stay inline when they fit! +// Includes height checking for operators with limits +``` + +**✅ Delimited expressions (NEW!):** +```swift +label.latex = "(a+b) + \\left(\\frac{c}{d}\\right) + e" +label.preferredMaxLayoutWidth = 200 +// Delimiters stay inline when they fit! +// Inner content respects width constraints and wraps naturally +``` + +**✅ Colored expressions (NEW!):** +```swift +label.latex = "a + \\color{red}{b + c + d} + e" +label.preferredMaxLayoutWidth = 200 +// Colored sections stay inline when they fit! +// Inner content respects width constraints and wraps properly +``` + +**✅ Matrices/tables (NEW!):** +```swift +label.latex = "A = \\begin{pmatrix} 1 & 2 \\end{pmatrix} + B" +label.preferredMaxLayoutWidth = 200 +// Small matrices stay inline when they fit! +``` + +**✅ Atoms with superscripts/subscripts (IMPROVED!):** +```swift +label.latex = "a^{2}+b^{2}+c^{2}+d^{2}+e^{2}" +label.preferredMaxLayoutWidth = 150 +// Now works with width-based breaking! +// Scripted atoms participate in smart line breaking decisions +``` + +**✅ Math accents:** +```swift +label.latex = "\\hat{x} + \\tilde{y} + \\bar{z} + \\vec{w}" +label.preferredMaxLayoutWidth = 150 +// Common accents (\hat, \tilde, \bar, \vec) work well +// Vector arrows (\overrightarrow, etc.) supported with stretching +``` + +**⚠️ Very long single text atoms:** +```swift +label.latex = "\\text{This is an extremely long piece of text within a single text command}" +label.preferredMaxLayoutWidth = 200 +// Uses Unicode word boundary breaking with Core Text +// Protects numbers from being split (e.g., "3.14" stays together) +``` +**Note**: Breaks within the text atom rather than between atoms, which is expected behavior for very long continuous text. + +#### Best Practices + +**DO:** +- Use interatom breaking for simple equations with operators and relations +- Use for mixed text and math where you want natural breaks +- Use for long sequences of variables, numbers, and operators +- Set appropriate `preferredMaxLayoutWidth` based on your layout needs + +**DON'T:** +- Expect natural breaking in expressions with large operators (∑, ∫, etc. - not yet optimized) +- Expect natural breaking in expressions with \left...\right delimiters (not yet optimized) +- Use extremely narrow widths (less than ~80pt) which may cause poor breaks + +#### Examples + +**Excellent use case (discriminant formula):** +```swift +label.latex = "\\text{Calculer le discriminant }\\Delta=b^{2}-4ac\\text{ avec }a=1\\text{, }b=-1\\text{, }c=-5" +label.preferredMaxLayoutWidth = 235 +// ✅ Breaks naturally at good points between atoms +``` + +**Good use case (simple arithmetic):** +```swift +label.latex = "5+10+15+20+25+30+35+40+45+50" +label.preferredMaxLayoutWidth = 150 +// ✅ Breaks between operators cleanly +``` + +**Excellent use case (fractions inline - NEW!):** +```swift +label.latex = "a+\\frac{1}{2}+b+\\frac{3}{4}+c" +label.preferredMaxLayoutWidth = 200 +// ✅ Fractions stay inline when they fit! +// Breaks: "a + ½ + b" on line 1, "+ ¾ + c" on line 2 +``` + +**Excellent use case (radicals inline - NEW!):** +```swift +label.latex = "x+\\sqrt{2}+y+\\sqrt{3}+z" +label.preferredMaxLayoutWidth = 150 +// ✅ Radicals stay inline when they fit! +// Example: "x + √2 + y" on line 1, "+ √3 + z" on line 2 +``` + +**Alternative for complex expressions:** +```swift +// Instead of trying to break this: +label.latex = "x = \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}" +// Consider it as a single display equation without width constraint +label.preferredMaxLayoutWidth = 0 // No breaking +``` + +#### Technical Details + +- **Line spacing**: Dynamic line height based on actual content (tall fractions get more space, regular content stays compact) +- **Breaking algorithm**: Greedy with look-ahead and break quality scoring - prefers breaking after operators over other positions +- **Width calculation**: Includes inter-element spacing according to TeX spacing rules +- **Number protection**: Numbers in patterns like "3.14", "1,000", etc. are kept intact +- **Supports locales**: English, French, Swiss number formats +- **Advanced features**: Tokenization infrastructure with phase-based processing (preprocessing → tokenization → line fitting → display generation) + +For complete implementation details including recent improvements (dynamic line height, break quality scoring, early exit optimization), see [MULTILINE_IMPLEMENTATION_NOTES.md](MULTILINE_IMPLEMENTATION_NOTES.md). + +### Included Features +This is a list of formula types that the library currently supports: + +* Simple algebraic equations +* Fractions and continued fractions (including `\frac`, `\dfrac`, `\tfrac`, `\cfrac`) +* Exponents and subscripts +* Trigonometric formulae (including inverse hyperbolic: `\arcsinh`, `\arccosh`, etc.) +* Square roots and n-th roots +* Calculus symbols - limits, derivatives, integrals (including `\iint`, `\iiint`, `\iiiint`) +* Big operators (e.g. product, sum) +* Big delimiters (using `\left` and `\right`) +* Manual delimiter sizing (`\big`, `\Big`, `\bigg`, `\Bigg` and variants) +* Greek alphabet +* Bold Greek symbols (`\boldsymbol`) +* Combinatorics (`\binom`, `\choose` etc.) +* Geometry symbols (e.g. angle, congruence etc.) +* Ratios, proportions, percentages +* Math spacing +* Overline and underline +* Math accents (including `\hat`, `\tilde`, `\bar`, `\vec`, `\dot`, `\ddot`, etc.) +* Vector arrows (`\vec`, `\overrightarrow`, `\overleftarrow`, `\overleftrightarrow` with automatic stretching) +* Wide accents (`\widehat`, `\widetilde`) +* Operator names (`\operatorname{name}`) +* Matrices (including `\smallmatrix` and starred variants like `pmatrix*` with alignment) +* Multi-line subscripts and limits (`\substack`) +* Equation alignment +* Change bold, roman, caligraphic and other font styles (`\bf`, `\text`, etc.) +* Style commands (`\displaystyle`, `\textstyle`) +* Custom operators (`\operatorname`, `\operatorname*`) +* Dirac notation (`\bra`, `\ket`, `\braket`) +* Most commonly used math symbols +* Colors for both text and background +* **Inline and display math mode delimiters** (see below) +* **Automatic line wrapping** (see Automatic Line Wrapping section) + +### LaTeX Math Delimiters + +`SwiftMath` now supports all standard LaTeX math delimiters for both inline and display modes. The parser automatically detects and handles these delimiters: + +#### Inline Math (Text Style) +Use these delimiters for inline math within text, which renders more compactly: + +```swift +// Dollar signs (TeX style) +label.latex = "$E = mc^2$" + +// Parentheses (LaTeX style) +label.latex = "\\(\\sum_{i=1}^{n} x_i\\)" + +// Cases environment in inline mode +label.latex = "\\(\\begin{cases} x + y = 5 \\\\ 2x - y = 1 \\end{cases}\\)" +``` + +#### Display Math (Display Style) +Use these delimiters for standalone equations with larger operators and limits: + +```swift +// Double dollar signs (TeX style) +label.latex = "$$\\int_{0}^{\\infty} e^{-x^2} dx = \\frac{\\sqrt{\\pi}}{2}$$" + +// Square brackets (LaTeX style) +label.latex = "\\[\\sum_{k=1}^{n} k^2 = \\frac{n(n+1)(2n+1)}{6}\\]" + +// Equation environment +label.latex = "\\begin{equation} x^2 + y^2 = z^2 \\end{equation}" + +// Cases environment in display mode +label.latex = "\\begin{cases} x + y = 5 \\\\ 2x - y = 1 \\end{cases}" +``` + +**Note:** The difference between inline and display modes: +- **Inline mode** (`$...$` or `\(...\)`) renders compactly, suitable for math within text +- **Display mode** (`$$...$$`, `\[...\]`, or environments) renders with larger operators and limits positioned above/below + +All delimiters are automatically stripped during parsing, and the math mode is set appropriately. No additional configuration is needed! + +#### Backward Compatibility +Equations without explicit delimiters continue to work as before, defaulting to display mode: + +```swift +label.latex = "x = \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}" // Works as always +``` + +#### Programmatic API +For advanced use cases where you need to parse LaTeX and determine the detected style programmatically, use the `buildWithStyle` method: + +```swift +// Parse LaTeX and get both the math list and detected style +let (mathList, style) = MTMathListBuilder.buildWithStyle(fromString: "\\[x^2 + y^2 = z^2\\]") + +// style will be .display for \[...\] or $$...$$ +// style will be .text for \(...\) or $...$ + +// Create a display with the detected style +if let mathList = mathList { + let display = MTTypesetter.createLineForMathList(mathList, font: myFont, style: style) + // Use the display for rendering +} +``` + +This is particularly useful when building custom renderers or when you need to respect the user's choice of delimiter style. + +Note: SwiftMath only supports the commands in LaTeX's math mode. There is +also no language support for other than west European langugages and some +Cyrillic characters. There would be two ways to support more languages: + +1) Find a math font compatible with `SwiftMath` that contains all the glyphs +for that language. +2) Add support to `SwiftMath` for standard Unicode fonts that contain all +langauge glyphs. + +Of these two, the first is much easier. However, if you want a challenge, +try to tackle the second option. + +### Example + +The [SwiftMathDemo](https://github.com/mgriebling/SwiftMathDemo) is a SwiftUI version +of the Objective-C demo included in `iosMath` that uses `SwiftMath` as a Swift package dependency. + +### Advanced configuration + +`MTMathUILabel` supports some advanced configuration options: + +##### Math mode + +You can change the mode of the `MTMathUILabel` between Display Mode +(equivalent to `$$` or `\[` in LaTeX) and Text Mode (equivalent to `$` +or `\(` in LaTeX). The default style is Display. To switch to Text +simply: + +```swift +label.labelMode = .text +``` + +##### Text Alignment +The default alignment of the equations is left. This can be changed to +center or right as follows: + +```swift +label.textAlignment = .center +``` + +##### Font size +The default font-size is 30pt. You can change it as follows: + +```swift +label.fontSize = 25 +``` +##### Font +The default font is *Latin Modern Math*. This can be changed as: + +```swift +label.font = MTFontManager.fontmanager.termesFont(withSize:20) +``` + +This project has 12 fonts bundled with it, but you can use any OTF math +font. A python script is included that generates the `.plist` files +required for an `.otf` font to work with `SwiftMath`. If you generate +(and test) any other fonts please contribute them back to this project for +others to benefit. + + + +Note: The `KpMath-Light`, `KpMath-Sans`, `Asana` fonts currently incorrectly +render very large radicals. It appears that the font files do +not properly define the offsets required to typeset these glyphs. If +anyone can fix this, it would be greatly appreciated. + +##### Text Color +The default color of the rendered equation is black. You can change +it to any other color as follows: + +```swift +label.textColor = .red +``` + +It is also possible to set different colors for different parts of the +equation. Just access the `displayList` field and set the `textColor` +of the underlying displays of which you want to change the color. + +##### Fallback Font for Unicode Text +By default, math fonts only support a limited set of characters (Latin, Greek, common math symbols). +To display other Unicode characters like Chinese, Japanese, Korean, emoji, or other scripts in `\text{}` +commands, you can configure a fallback font: + +```swift +let mathFont = MTFontManager().font(withName: MathFont.latinModernFont.rawValue, size: 30) + +// Set a fallback font for unsupported characters (defaults to nil) +#if os(iOS) || os(visionOS) +let systemFont = UIFont.systemFont(ofSize: 30) +mathFont?.fallbackFont = CTFontCreateWithName(systemFont.fontName as CFString, 30, nil) +#elseif os(macOS) +let systemFont = NSFont.systemFont(ofSize: 30) +mathFont?.fallbackFont = CTFontCreateWithName(systemFont.fontName as CFString, 30, nil) +#endif + +label.font = mathFont +label.latex = "\\text{Hello 世界 🌍}" // English, Chinese, and emoji +``` + +When the main math font doesn't contain a glyph for a character, the fallback font will be used automatically. +This is particularly useful for: +- Chinese text: `\text{中文}` +- Japanese text: `\text{日本語}` +- Korean text: `\text{한국어}` +- Emoji: `\text{Math is fun! 🎉📐}` +- Mixed scripts: `\text{Equation: 方程式}` + +**Note**: The fallback font only applies to characters within `\text{}` commands, not regular math mode. + +##### Custom Commands +You can define your own commands that are not already predefined. This is +similar to macros is LaTeX. To define your own command use: + +```swift +MTMathAtomFactory.addLatexSymbol("lcm", value: MTMathAtomFactory.operator(withName: "lcm", limits: false)) +``` + +This creates an `\lcm` command that can be used in the LaTeX. + +##### Content Insets +The `MTMathUILabel` has `contentInsets` for finer control of placement of the +equation in relation to the view. + +If you need to set it you can do as follows: + +```swift +label.contentInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 20) +``` + +##### Error handling + +If the LaTeX text given to `MTMathUILabel` is +invalid or if it contains commands that aren't currently supported then +an error message will be displayed instead of the label. + +This error can be programmatically retrieved as `label.error`. If you +prefer not to display anything then set: + +```swift +label.displayErrorInline = true +``` + +## Future Enhancements + +Note this is not a complete implementation of LaTeX math mode. There are +some pieces that are missing and may be included in future updates: + +* `\middle` delimiter for use between `\left` and `\right` +* Some fine spacing commands (`\:`, `\;`, `\!` - note that `\,` works) + +For a complete list of features and their implementation status, see [MISSING_FEATURES.md](MISSING_FEATURES.md). + +## License + +`SwiftMath` is available under the MIT license. See the [LICENSE](./LICENSE) +file for more info. + +### Fonts +This distribution contains the following fonts. These fonts are +licensed as follows: +* Latin Modern Math: + [GUST Font License](GUST-FONT-LICENSE.txt) +* Tex Gyre Termes: + [GUST Font License](GUST-FONT-LICENSE.txt) +* [XITS Math](https://github.com/khaledhosny/xits-math): + [Open Font License](OFL.txt) +* [KpMath Light/KpMath Sans](http://scripts.sil.org/OFL): + [SIL Open Font License](OFL.txt) diff --git a/third-party/SwiftMath/Sources/MathBundle/MTFontMathTableV2.swift b/third-party/SwiftMath/Sources/MathBundle/MTFontMathTableV2.swift new file mode 100755 index 0000000000..beb2320aa0 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathBundle/MTFontMathTableV2.swift @@ -0,0 +1,194 @@ +// +// MTFontMathTableV2.swift +// +// +// Created by Peter Tang on 15/9/2023. +// + +import Foundation +import CoreGraphics +import CoreText + +internal class MTFontMathTableV2: MTFontMathTable { + private let mathFont: MathFont + private let fontSize: CGFloat + private let unitsPerEm: UInt + private let mTable: NSDictionary + init(mathFont: MathFont, size: CGFloat, unitsPerEm: UInt) { + self.mathFont = mathFont + self.fontSize = size + self.unitsPerEm = unitsPerEm + mTable = mathFont.rawMathTable() + super.init(withFont: mathFont.mtfont(size: fontSize), mathTable: mTable) + super._mathTable = nil + // disable all possible access to _mathTable in superclass! + } + override var _mathTable: NSDictionary? { + set { fatalError("\(#function) change to _mathTable \(mathFont.rawValue) not allowed.") } + get { mTable } + } + override var muUnit: CGFloat { fontSize/18 } + + override func fontUnitsToPt(_ fontUnits:Int) -> CGFloat { + CGFloat(fontUnits) * fontSize / CGFloat(unitsPerEm) + } + override func constantFromTable(_ constName: String) -> CGFloat { + guard let consts = mTable[kConstants] as? NSDictionary, let val = consts[constName] as? NSNumber else { + return .zero + } + return fontUnitsToPt(val.intValue) + } + override func percentFromTable(_ percentName: String) -> CGFloat { + guard let consts = mTable[kConstants] as? NSDictionary, let val = consts[percentName] as? NSNumber else { + return .zero + } + return CGFloat(val.floatValue) / 100 + } + /** Returns an Array of all the vertical variants of the glyph if any. If + there are no variants for the glyph, the array contains the given glyph. */ + override func getVerticalVariantsForGlyph(_ glyph: CGGlyph) -> [NSNumber?] { + guard let variants = mTable[kVertVariants] as? NSDictionary else { return [] } + return self.getVariantsForGlyph(glyph, inDictionary: variants) + } + /** Returns an Array of all the horizontal variants of the glyph if any. If + there are no variants for the glyph, the array contains the given glyph. */ + override func getHorizontalVariantsForGlyph(_ glyph: CGGlyph) -> [NSNumber?] { + guard let variants = mTable[kHorizVariants] as? NSDictionary else { return [] } + return self.getVariantsForGlyph(glyph, inDictionary:variants) + } + override func getVariantsForGlyph(_ glyph: CGGlyph, inDictionary variants: NSDictionary) -> [NSNumber?] { + let font = mathFont.mtfont(size: fontSize) + let glyphName = font.get(nameForGlyph: glyph) + + var glyphArray = [NSNumber]() + let variantGlyphs = variants[glyphName] as? NSArray + + guard let variantGlyphs = variantGlyphs, variantGlyphs.count != .zero else { + // There are no extra variants, so just add the current glyph to it. + let glyph = font.get(glyphWithName: glyphName) + glyphArray.append(NSNumber(value:glyph)) + return glyphArray + } + for gvn in variantGlyphs { + if let glyphVariantName = gvn as? String { + let variantGlyph = font.get(glyphWithName: glyphVariantName) + glyphArray.append(NSNumber(value:variantGlyph)) + } + } + return glyphArray + } + /** Returns a larger vertical variant of the given glyph if any. + If there is no larger version, this returns the current glyph. + + - Parameter glyph: The glyph to find a larger variant for + - Parameter forDisplayStyle: If true, selects the largest appropriate variant for display style. + If false, selects the next larger variant (incremental sizing). + - Returns: A larger glyph variant, or the original glyph if no variants exist + */ + override func getLargerGlyph(_ glyph: CGGlyph, forDisplayStyle: Bool = false) -> CGGlyph { + let font = mathFont.mtfont(size: fontSize) + let glyphName = font.get(nameForGlyph: glyph) + + guard let variants = mTable[kVertVariants] as? NSDictionary, + let variantGlyphs = variants[glyphName] as? NSArray, variantGlyphs.count != .zero else { + // There are no extra variants, so just returnt the current glyph. + return glyph + } + + if forDisplayStyle { + // For display style, select a large variant suitable for mathematical display mode + // Display integrals should be significantly larger (~2.2em) for visual prominence + let count = variantGlyphs.count + + // Strategy: Use the largest variant, but avoid extreme sizes for fonts with many variants + let targetIndex: Int + if count <= 2 { + // Small variant list: use the last one (e.g., integral.size1 at ~2.2em) + targetIndex = count - 1 + } else if count <= 4 { + // Medium variant list: use second-to-last to avoid extremes + targetIndex = count - 2 + } else { + // Large variant list (like texgyretermes with 6 variants): + // Use variant at ~60% position to get appropriate display size (~2.0em) + // For 7 variants (0-6), this gives index 4 + targetIndex = min(count - 2, Int(Double(count) * 0.6)) + } + + if let glyphVariantName = variantGlyphs[targetIndex] as? String { + let variantGlyph = font.get(glyphWithName: glyphVariantName) + return variantGlyph + } + } else { + // Text/inline style: use incremental sizing for moderate enlargement + // Find the first variant with a different name + for gvn in variantGlyphs { + if let glyphVariantName = gvn as? String, glyphVariantName != glyphName { + let variantGlyph = font.get(glyphWithName: glyphVariantName) + return variantGlyph + } + } + } + + // We did not find any variants of this glyph so return it. + return glyph + } + /** Returns the italic correction for the given glyph if any. If there + isn't any this returns 0. */ + override func getItalicCorrection(_ glyph: CGGlyph) -> CGFloat { + let font = mathFont.mtfont(size: fontSize) + let glyphName = font.get(nameForGlyph: glyph) + + guard let italics = mTable[kItalic] as? NSDictionary, let val = italics[glyphName] as? NSNumber else { + return .zero + } + // if val is nil, this returns 0. + return fontUnitsToPt(val.intValue) + } + override func getTopAccentAdjustment(_ glyph: CGGlyph) -> CGFloat { + let font = mathFont.mtfont(size: fontSize) + let glyphName = font.get(nameForGlyph: glyph) + + guard let accents = mTable[kAccents] as? NSDictionary, let val = accents[glyphName] as? NSNumber else { + // If no top accent is defined then it is the center of the advance width. + var glyph = glyph + var advances = CGSize.zero + CTFontGetAdvancesForGlyphs(font.ctFont, .horizontal, &glyph, &advances, 1) + return advances.width/2 + } + return fontUnitsToPt(val.intValue) + } + override func getVerticalGlyphAssembly(forGlyph glyph: CGGlyph) -> [GlyphPart] { + let font = mathFont.mtfont(size: fontSize) + let glyphName = font.get(nameForGlyph: glyph) + + guard let assemblyTable = mTable[kVertAssembly] as? NSDictionary, + let assemblyInfo = assemblyTable[glyphName] as? NSDictionary, + let parts = assemblyInfo[kAssemblyParts] as? NSArray else { + // No vertical assembly defined for glyph + // parts should always have been defined, but if it isn't return nil + return [] + } + + var rv = [GlyphPart]() + for part in parts { + guard let partInfo = part as? NSDictionary, + let adv = partInfo["advance"] as? NSNumber, + let end = partInfo["endConnector"] as? NSNumber, + let start = partInfo["startConnector"] as? NSNumber, + let ext = partInfo["extender"] as? NSNumber, + let glyphName = partInfo["glyph"] as? String else { continue } + let fullAdvance = fontUnitsToPt(adv.intValue) + let endConnectorLength = fontUnitsToPt(end.intValue) + let startConnectorLength = fontUnitsToPt(start.intValue) + let isExtender = ext.boolValue + let glyph = font.get(glyphWithName: glyphName) + let part = GlyphPart(glyph: glyph, fullAdvance: fullAdvance, + startConnectorLength: startConnectorLength, + endConnectorLength: endConnectorLength, + isExtender: isExtender) + rv.append(part) + } + return rv + } +} diff --git a/third-party/SwiftMath/Sources/MathBundle/MTFontV2.swift b/third-party/SwiftMath/Sources/MathBundle/MTFontV2.swift new file mode 100755 index 0000000000..14c09a063c --- /dev/null +++ b/third-party/SwiftMath/Sources/MathBundle/MTFontV2.swift @@ -0,0 +1,68 @@ +// +// MTFontV2.swift +// +// +// Created by Peter Tang on 15/9/2023. +// + +import Foundation +import CoreGraphics +import CoreText + +extension MathFont { + public func mtfont(size: CGFloat) -> MTFontV2 { + MTFontV2(font: self, size: size) + } +} +public final class MTFontV2: MTFont { + let font: MathFont + let size: CGFloat + private let _cgFont: CGFont + private let _ctFont: CTFont + private let unitsPerEm: UInt + private var _mathTab: MTFontMathTableV2? + init(font: MathFont = .latinModernFont, size: CGFloat) { + self.font = font + self.size = size + // MathFont cgfont and ctfont are fast & threadsafe, keep a local copy is cheaper than + // handling via NSLock + self._cgFont = font.cgFont() + self._ctFont = font.ctFont(withSize: size) + self.unitsPerEm = self._ctFont.unitsPerEm + super.init() + + super.defaultCGFont = nil + super.ctFont = nil + super.mathTable = nil + super.rawMathTable = nil + } + override var defaultCGFont: CGFont! { + set { fatalError("\(#function): change to \(font.fontName) not allowed.") } + get { _cgFont } + } + override var ctFont: CTFont! { + set { fatalError("\(#function): change to \(font.fontName) not allowed.") } + get { _ctFont } + } + private let mtfontV2LockOnMathTable = NSLock() + override var mathTable: MTFontMathTable? { + set { fatalError("\(#function): change to \(font.rawValue) not allowed.") } + get { + guard _mathTab == nil else { return _mathTab } + //Note: lazy _mathTab initialization is now threadsafe. + mtfontV2LockOnMathTable.lock() + defer { mtfontV2LockOnMathTable.unlock() } + if _mathTab == nil { + _mathTab = MTFontMathTableV2(mathFont: font, size: size, unitsPerEm: unitsPerEm) + } + return _mathTab + } + } + override var rawMathTable: NSDictionary? { + set { fatalError("\(#function): change to \(font.rawValue) not allowed.") } + get { fatalError("\(#function): access to \(font.rawValue) not allowed.") } + } + public override func copy(withSize size: CGFloat) -> MTFont { + MTFontV2(font: font, size: size) + } +} diff --git a/third-party/SwiftMath/Sources/MathBundle/MathFont.swift b/third-party/SwiftMath/Sources/MathBundle/MathFont.swift new file mode 100644 index 0000000000..650d8f6ee7 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathBundle/MathFont.swift @@ -0,0 +1,225 @@ +// +// MathFont.swift +// +// +// Created by Peter Tang on 10/9/2023. +// + +#if os(iOS) || os(visionOS) +import UIKit +#elseif os(macOS) +import AppKit +#endif + +/// Now available for everyone to use +public enum MathFont: String, CaseIterable, Identifiable { + + public var id: Self { self } // Makes things simpler for SwiftUI + + case latinModernFont = "latinmodern-math" + case kpMathLightFont = "KpMath-Light" + case kpMathSansFont = "KpMath-Sans" + case xitsFont = "xits-math" + case termesFont = "texgyretermes-math" + case asanaFont = "Asana-Math" + case eulerFont = "Euler-Math" + case firaFont = "FiraMath-Regular" + case notoSansFont = "NotoSansMath-Regular" + case libertinusFont = "LibertinusMath-Regular" + case garamondFont = "Garamond-Math" + case leteSansFont = "LeteSansMath" + + var fontFamilyName: String { + switch self { + case .latinModernFont: "Latin Modern Math" + case .kpMathLightFont: "KpMath" + case .kpMathSansFont: "KpMath" + case .xitsFont: "XITS Math" + case .termesFont: "TeX Gyre Termes Math" + case .asanaFont: "Asana Math" + case .eulerFont: "Euler Math" + case .firaFont: "Fira Math" + case .notoSansFont: "Noto Sans Math" + case .libertinusFont: "Libertinus Math" + case .garamondFont: "Garamond-Math" // PostScript name is "Garamond-Math", not "Garamond Math" + case .leteSansFont: "Lete Sans Math" + } + } + + var postScriptName: String { + switch self { + case .latinModernFont: "LatinModernMath-Regular" + case .kpMathLightFont: "KpMath-Light" + case .kpMathSansFont: "KpMath-Sans" + case .xitsFont: "XITSMath" + case .termesFont: "TeXGyreTermesMath-Regular" + case .asanaFont: "Asana-Math" + case .eulerFont: "Euler-Math" + case .firaFont: "FiraMath-Regular" + case .notoSansFont: "NotoSansMath-Regular" + case .libertinusFont: "LibertinusMath-Regular" + case .garamondFont: "Garamond-Math" + case .leteSansFont: "LeteSansMath" + } + } + + var fontName: String { self.rawValue } + + public func cgFont() -> CGFont { + BundleManager.manager.obtainCGFont(font: self) + } + public func ctFont(withSize size: CGFloat) -> CTFont { + BundleManager.manager.obtainCTFont(font: self, withSize: size) + } + internal func rawMathTable() -> NSDictionary { + BundleManager.manager.obtainRawMathTable(font: self) + } + + //Note: Below code are no longer supported, unable to tell if UIFont/NSFont is threadsafe, not used in SwiftMath. + // #if os(iOS) || os(visionOS) + // public func uiFont(withSize size: CGFloat) -> UIFont? { + // UIFont(name: fontName, size: size) + // } + // #endif + // #if os(macOS) + // public func nsFont(withSize size: CGFloat) -> NSFont? { + // NSFont(name: fontName, size: size) + // } + // #endif +} +internal extension CTFont { + /** The size of this font in points. */ + var fontSize: CGFloat { + CTFontGetSize(self) + } + var unitsPerEm: UInt { + return UInt(CTFontGetUnitsPerEm(self)) + } +} +private class BundleManager { + //Note: below should be lightweight and without threadsafe problem. + static internal let manager = BundleManager() + + private var cgFonts = [MathFont: CGFont]() + private var ctFonts = [CTFontSizePair: CTFont]() + private var rawMathTables = [MathFont: NSDictionary]() + + private let threadSafeQueue = DispatchQueue(label: "com.smartmath.mathfont.threadsafequeue", + qos: .userInitiated, + attributes: .concurrent) + + private func registerCGFont(mathFont: MathFont) throws { + guard let frameworkBundleURL = Bundle.main.url(forResource: "mathFonts", withExtension: "bundle"), + let resourceBundleURL = Bundle(url: frameworkBundleURL)?.path(forResource: mathFont.rawValue, ofType: "otf") else { + throw FontError.fontPathNotFound + } + guard let fontData = NSData(contentsOfFile: resourceBundleURL), let dataProvider = CGDataProvider(data: fontData) else { + throw FontError.invalidFontFile + } + guard let defaultCGFont = CGFont(dataProvider) else { + throw FontError.initFontError + } + + cgFonts[mathFont] = defaultCGFont + + /// This does not load the complete math font, it only has about half the glyphs of the full math font. + /// In particular it does not have the math italic characters which breaks our variable rendering. + /// So we first load a CGFont from the file and then convert it to a CTFont. + var errorRef: Unmanaged? = nil + guard CTFontManagerRegisterGraphicsFont(defaultCGFont, &errorRef) else { + throw FontError.registerFailed + } + let postsript = (defaultCGFont.postScriptName as? String) ?? "" + let cgfontName = (defaultCGFont.fullName as? String) ?? "" + let threadName = Thread.isMainThread ? "main" : "global" + debugPrint("mathFonts bundle resource: \(mathFont.rawValue), font: \(cgfontName), ps: \(postsript) registered on \(threadName).") + } + + private func registerMathTable(mathFont: MathFont) throws { + guard let frameworkBundleURL = Bundle.main.url(forResource: "mathFonts", withExtension: "bundle"), + let mathTablePlist = Bundle(url: frameworkBundleURL)?.url(forResource: mathFont.rawValue, withExtension:"plist") else { + throw FontError.fontPathNotFound + } + guard let rawMathTable = NSDictionary(contentsOf: mathTablePlist), + let version = rawMathTable["version"] as? String, + version == "1.3" else { + throw FontError.invalidMathTable + } + + rawMathTables[mathFont] = rawMathTable + + let threadName = Thread.isMainThread ? "main" : "global" + debugPrint("mathFonts bundle resource: \(mathFont.rawValue).plist registered on \(threadName).") + } + + private func onDemandRegistration(mathFont: MathFont) { + guard threadSafeQueue.sync(execute: { cgFonts[mathFont] }) == nil else { return } + // Note: resourceLoading is now serialized. + threadSafeQueue.sync(flags: .barrier, execute: { [weak self] in + if self?.cgFonts[mathFont] == nil { + do { + try BundleManager.manager.registerCGFont(mathFont: mathFont) + try BundleManager.manager.registerMathTable(mathFont: mathFont) + + } catch { + fatalError("MTMathFonts:\(#function) ondemand loading failed, mathFont \(mathFont.rawValue), reason \(error)") + } + } + }) + } + fileprivate func obtainCGFont(font: MathFont) -> CGFont { + onDemandRegistration(mathFont: font) + guard let cgFont = threadSafeQueue.sync(execute: { cgFonts[font] }) else { + fatalError("\(#function) unable to locate CGFont \(font.fontName)") + } + return cgFont + } + + fileprivate func obtainCTFont(font: MathFont, withSize size: CGFloat) -> CTFont { + onDemandRegistration(mathFont: font) + let fontSizePair = CTFontSizePair(font: font, size: size) + let ctFont = threadSafeQueue.sync(execute: { ctFonts[fontSizePair] }) + guard ctFont == nil else { return ctFont! } + guard let cgFont = threadSafeQueue.sync(execute: { cgFonts[font] }) else { + fatalError("\(#function) unable to locate CGFont \(font.fontName) to create CTFont") + } + //Note: ctfont creation and caching is now threadsafe. + guard threadSafeQueue.sync(execute: { ctFonts[fontSizePair] }) == nil else { return ctFonts[fontSizePair]! } + return threadSafeQueue.sync(flags: .barrier, execute: { + if let ctfont = ctFonts[fontSizePair] { + return ctfont + } else { + let result = CTFontCreateWithGraphicsFont(cgFont, size, nil, nil) + ctFonts[fontSizePair] = result + return result + } + }) + } + fileprivate func obtainRawMathTable(font: MathFont) -> NSDictionary { + onDemandRegistration(mathFont: font) + guard let mathTable = threadSafeQueue.sync(execute: { rawMathTables[font] } ) else { + fatalError("\(#function) unable to locate mathTable: \(font.rawValue).plist") + } + return mathTable + } + deinit { + ctFonts.removeAll() + var errorRef: Unmanaged? = nil + cgFonts.values.forEach { cgFont in + CTFontManagerUnregisterGraphicsFont(cgFont, &errorRef) + } + cgFonts.removeAll() + } + public enum FontError: Error { + case invalidFontFile + case fontPathNotFound + case initFontError + case registerFailed + case invalidMathTable + } + + private struct CTFontSizePair: Hashable { + let font: MathFont + let size: CGFloat + } +} diff --git a/third-party/SwiftMath/Sources/MathBundle/MathImage.swift b/third-party/SwiftMath/Sources/MathBundle/MathImage.swift new file mode 100755 index 0000000000..89a06cb5eb --- /dev/null +++ b/third-party/SwiftMath/Sources/MathBundle/MathImage.swift @@ -0,0 +1,123 @@ +// +// MathImage.swift +// +// +// Created by Peter Tang on 15/9/2023. +// + +import Foundation + +#if os(iOS) || os(visionOS) + import UIKit +#elseif os(macOS) + import AppKit +#endif + +public struct MathImage { + public var font: MathFont = .latinModernFont + public var fontSize: CGFloat + public var textColor: MTColor + + public var labelMode: MTMathUILabelMode + public var textAlignment: MTTextAlignment + + public var contentInsets: MTEdgeInsets = MTEdgeInsetsZero + + public let latex: String + + private(set) var intrinsicContentSize = CGSize.zero + + public init(latex: String, fontSize: CGFloat, textColor: MTColor, labelMode: MTMathUILabelMode = .display, textAlignment: MTTextAlignment = .center) { + self.latex = latex + self.fontSize = fontSize + self.textColor = textColor + self.labelMode = labelMode + self.textAlignment = textAlignment + } +} +extension MathImage { + public var currentStyle: MTLineStyle { + switch labelMode { + case .display: return .display + case .text: return .text + } + } + private func intrinsicContentSize(_ displayList: MTMathListDisplay) -> CGSize { + CGSize(width: displayList.width + contentInsets.left + contentInsets.right, + height: displayList.ascent + displayList.descent + contentInsets.top + contentInsets.bottom) + } + public struct LayoutInfo { + public var ascent: CGFloat = 0 + public var descent: CGFloat = 0 + + public init(ascent: CGFloat, descent: CGFloat) { + self.ascent = ascent + self.descent = descent + } + } + public mutating func asImage() -> (NSError?, MTImage?, LayoutInfo?) { + func layoutImage(size: CGSize, displayList: MTMathListDisplay) { + var textX = CGFloat(0) + switch self.textAlignment { + case .left: textX = contentInsets.left + case .center: textX = (size.width - contentInsets.left - contentInsets.right - displayList.width) / 2 + contentInsets.left + case .right: textX = size.width - displayList.width - contentInsets.right + } + let availableHeight = size.height - contentInsets.bottom - contentInsets.top + + // center things vertically + var height = displayList.ascent + displayList.descent + if height < fontSize/2 { + height = fontSize/2 // set height to half the font size + } + let textY = (availableHeight - height) / 2 + displayList.descent + contentInsets.bottom + displayList.position = CGPoint(x: textX, y: textY) + } + var error: NSError? + let mtfont: MTFont? = font.mtfont(size: fontSize) + + guard let mathList = MTMathListBuilder.build(fromString: latex, error: &error), error == nil, + let displayList = MTTypesetter.createLineForMathList(mathList, font: mtfont, style: currentStyle) else { + return (error, nil, nil) + } + + intrinsicContentSize = intrinsicContentSize(displayList) + displayList.textColor = textColor + + let size = intrinsicContentSize.regularized + layoutImage(size: size, displayList: displayList) + + #if os(iOS) || os(visionOS) + let renderer = UIGraphicsImageRenderer(size: size) + let image = renderer.image { rendererContext in + rendererContext.cgContext.saveGState() + rendererContext.cgContext.concatenate(.flippedVertically(size.height)) + displayList.draw(rendererContext.cgContext) + rendererContext.cgContext.restoreGState() + } + return (nil, image, LayoutInfo(ascent: displayList.ascent, descent: displayList.descent)) + #endif + #if os(macOS) + let image = NSImage(size: size, flipped: false) { bounds in + guard let context = NSGraphicsContext.current?.cgContext else { return false } + context.saveGState() + displayList.draw(context) + context.restoreGState() + return true + } + return (nil, image, LayoutInfo(ascent: displayList.ascent, descent: displayList.descent)) + #endif + } +} +private extension CGAffineTransform { + static func flippedVertically(_ height: CGFloat) -> CGAffineTransform { + var transform = CGAffineTransform(scaleX: 1, y: -1) + transform = transform.translatedBy(x: 0, y: -height) + return transform + } +} +extension CGSize { + fileprivate var regularized: CGSize { + CGSize(width: ceil(width), height: ceil(height)) + } +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTBezierPath.swift b/third-party/SwiftMath/Sources/MathRender/MTBezierPath.swift new file mode 100755 index 0000000000..fb5e082a89 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTBezierPath.swift @@ -0,0 +1,35 @@ + +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by 安志钢. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation + +#if os(macOS) + +extension MTBezierPath { + func addLine(to point: CGPoint) { + self.line(to: point) + } +} + +extension MTView { + + var backgroundColor:MTColor? { + get { + MTColor(cgColor: self.layer?.backgroundColor ?? MTColor.clear.cgColor) + } + set { + self.layer?.backgroundColor = MTColor.clear.cgColor + self.wantsLayer = true + } + } + +} + +#endif + diff --git a/third-party/SwiftMath/Sources/MathRender/MTColor.swift b/third-party/SwiftMath/Sources/MathRender/MTColor.swift new file mode 100755 index 0000000000..88f8a0d24a --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTColor.swift @@ -0,0 +1,28 @@ + +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by Markus Sähn. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation + +extension MTColor { + + public convenience init?(fromHexString hexString:String) { + if hexString.isEmpty { return nil } + if !hexString.hasPrefix("#") { return nil } + + var rgbValue = UInt64(0) + let scanner = Scanner(string: hexString) + scanner.charactersToBeSkipped = CharacterSet(charactersIn: "#") + scanner.scanHexInt64(&rgbValue) + self.init(red: CGFloat((rgbValue & 0xFF0000) >> 16)/255.0, + green: CGFloat((rgbValue & 0xFF00) >> 8)/255.0, + blue: CGFloat((rgbValue & 0xFF))/255.0, + alpha: 1.0) + } + +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTConfig.swift b/third-party/SwiftMath/Sources/MathRender/MTConfig.swift new file mode 100755 index 0000000000..19f339bf69 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTConfig.swift @@ -0,0 +1,40 @@ +import Foundation + +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by 安志钢. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +#if os(iOS) || os(visionOS) + +import UIKit + +public typealias MTView = UIView +public typealias MTColor = UIColor +public typealias MTBezierPath = UIBezierPath +public typealias MTLabel = UILabel +public typealias MTEdgeInsets = UIEdgeInsets +public typealias MTRect = CGRect +public typealias MTImage = UIImage + +let MTEdgeInsetsZero = UIEdgeInsets.zero +func MTGraphicsGetCurrentContext() -> CGContext? { UIGraphicsGetCurrentContext() } + +#else + +import AppKit + +public typealias MTView = NSView +public typealias MTColor = NSColor +public typealias MTBezierPath = NSBezierPath +public typealias MTEdgeInsets = NSEdgeInsets +public typealias MTRect = NSRect +public typealias MTImage = NSImage + +let MTEdgeInsetsZero = NSEdgeInsets.init(top: 0, left: 0, bottom: 0, right: 0) +func MTGraphicsGetCurrentContext() -> CGContext? { NSGraphicsContext.current?.cgContext } + +#endif diff --git a/third-party/SwiftMath/Sources/MathRender/MTFont.swift b/third-party/SwiftMath/Sources/MathRender/MTFont.swift new file mode 100644 index 0000000000..e1e418d821 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTFont.swift @@ -0,0 +1,81 @@ + +import Foundation +import CoreText +import AppBundle + +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by Kostub Deshmukh. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +public class MTFont { + + var defaultCGFont: CGFont! + var ctFont: CTFont! + var mathTable: MTFontMathTable? + var rawMathTable: NSDictionary? + + /// Fallback font for characters not supported by the main math font. + /// Defaults to the system font at the same size. This is particularly useful + /// for rendering text in \text{} commands with characters outside the math font's coverage + /// (e.g., Chinese, Japanese, Korean, emoji, etc.) + public var fallbackFont: CTFont? + + init() {} + + /// `MTFont(fontWithName:)` does not load the complete math font, it only has about half the glyphs of the full math font. + /// In particular it does not have the math italic characters which breaks our variable rendering. + /// So we first load a CGFont from the file and then convert it to a CTFont. + convenience init(fontWithName name: String, size:CGFloat) { + self.init() + //print("Loading font \(name)") + let bundle = getAppBundle() + let fontPath = bundle.path(forResource: name, ofType: "otf") + let fontDataProvider = CGDataProvider(filename: fontPath!) + self.defaultCGFont = CGFont(fontDataProvider!)! + //print("Num glyphs: \(self.defaultCGFont.numberOfGlyphs)") + + self.ctFont = CTFontCreateWithGraphicsFont(self.defaultCGFont, size, nil, nil); + + //print("Loading associated .plist") + let mathTablePlist = bundle.url(forResource:name, withExtension:"plist") + self.rawMathTable = NSDictionary(contentsOf: mathTablePlist!) + self.mathTable = MTFontMathTable(withFont:self, mathTable:rawMathTable!) + } + + static var fontBundle:Bundle { + // Uses bundle for class so that this can be access by the unit tests. + Bundle(url: Bundle.main.url(forResource: "mathFonts", withExtension: "bundle")!)! + } + + /** Returns a copy of this font but with a different size. */ + public func copy(withSize size: CGFloat) -> MTFont { + let newFont = MTFont() + newFont.defaultCGFont = self.defaultCGFont + newFont.ctFont = CTFontCreateWithGraphicsFont(self.defaultCGFont, size, nil, nil) + newFont.rawMathTable = self.rawMathTable + newFont.mathTable = MTFontMathTable(withFont: newFont, mathTable: newFont.rawMathTable!) + return newFont + } + + func get(nameForGlyph glyph:CGGlyph) -> String { + let name = defaultCGFont.name(for: glyph) as? String + return name ?? "" + } + + func get(glyphWithName name:String) -> CGGlyph { + defaultCGFont.getGlyphWithGlyphName(name: name as CFString) + } + + /** The size of this font in points. */ + public var fontSize:CGFloat { CTFontGetSize(self.ctFont) } + + deinit { + self.ctFont = nil + self.defaultCGFont = nil + } + +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTFontManager.swift b/third-party/SwiftMath/Sources/MathRender/MTFontManager.swift new file mode 100755 index 0000000000..71f42cc477 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTFontManager.swift @@ -0,0 +1,93 @@ + +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by Kostub Deshmukh. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation + +public class MTFontManager { + + static public private(set) var manager: MTFontManager = { + MTFontManager() + }() + + let kDefaultFontSize = CGFloat(20) + + static var fontManager : MTFontManager { + return manager + } + + public init() { } + + @RWLocked + var nameToFontMap = [String: MTFont]() + + public func font(withName name:String, size:CGFloat) -> MTFont? { + var f = self.nameToFontMap[name] + if f == nil { + f = MTFont(fontWithName: name, size: size) + self.nameToFontMap[name] = f + } + + if f!.fontSize == size { return f } + else { return f!.copy(withSize: size) } + } + + public func latinModernFont(withSize size:CGFloat) -> MTFont? { + MTFontManager.fontManager.font(withName: "latinmodern-math", size: size) + } + + public func kpMathLightFont(withSize size:CGFloat) -> MTFont? { + MTFontManager.fontManager.font(withName: "KpMath-Light", size: size) + } + + public func kpMathSansFont(withSize size:CGFloat) -> MTFont? { + MTFontManager.fontManager.font(withName: "KpMath-Sans", size: size) + } + + public func xitsFont(withSize size:CGFloat) -> MTFont? { + MTFontManager.fontManager.font(withName: "xits-math", size: size) + } + + public func termesFont(withSize size:CGFloat) -> MTFont? { + MTFontManager.fontManager.font(withName: "texgyretermes-math", size: size) + } + + public func asanaFont(withSize size:CGFloat) -> MTFont? { + MTFontManager.fontManager.font(withName: "Asana-Math", size: size) + } + + public func eulerFont(withSize size:CGFloat) -> MTFont? { + MTFontManager.fontManager.font(withName: "Euler-Math", size: size) + } + + public func firaRegularFont(withSize size:CGFloat) -> MTFont? { + MTFontManager.fontManager.font(withName: "FiraMath-Regular", size: size) + } + + public func notoSansRegularFont(withSize size:CGFloat) -> MTFont? { + MTFontManager.fontManager.font(withName: "NotoSansMath-Regular", size: size) + } + + public func libertinusRegularFont(withSize size:CGFloat) -> MTFont? { + MTFontManager.fontManager.font(withName: "LibertinusMath-Regular", size: size) + } + + public func garamondMathFont(withSize size:CGFloat) -> MTFont? { + MTFontManager.fontManager.font(withName: "Garamond-Math", size: size) + } + + public func leteSansFont(withSize size:CGFloat) -> MTFont? { + MTFontManager.fontManager.font(withName: "LeteSansMath", size: size) + } + + public var defaultFont: MTFont? { + MTFontManager.fontManager.latinModernFont(withSize: kDefaultFontSize) + } + + +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTFontMathTable.swift b/third-party/SwiftMath/Sources/MathRender/MTFontMathTable.swift new file mode 100755 index 0000000000..35e252b1ad --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTFontMathTable.swift @@ -0,0 +1,355 @@ +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by Kostub Deshmukh. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation +import CoreText + +struct GlyphPart { + /// The glyph that represents this part + var glyph: CGGlyph! + + /// Full advance width/height for this part, in the direction of the extension in points. + var fullAdvance: CGFloat = 0 + + /// Advance width/ height of the straight bar connector material at the beginning of the glyph in points. + var startConnectorLength: CGFloat = 0 + + /// Advance width/ height of the straight bar connector material at the end of the glyph in points. + var endConnectorLength: CGFloat = 0 + + /// If this part is an extender. If set, the part can be skipped or repeated. + var isExtender: Bool = false +} + +/** This class represents the Math table of an open type font. + + The math table is documented here: https://www.microsoft.com/typography/otspec/math.htm + + How the constants in this class affect the display is documented here: + http://www.tug.org/TUGboat/tb30-1/tb94vieth.pdf + + Note: We don't parse the math table from the open type font. Rather we parse it + in python and convert it to a .plist file which is easily consumed by this class. + This approach is preferable to spending an inordinate amount of time figuring out + how to parse the returned NSData object using the open type rules. + + Remark: This class is not meant to be used outside of this library. + */ +class MTFontMathTable { + + // The font for this math table. + public private(set) weak var font:MTFont? // @property (nonatomic, readonly, weak) MTFont* font; + + var _unitsPerEm: UInt + var _fontSize: CGFloat + var _mathTable: NSDictionary! + + let kConstants = "constants" + + /** MU unit in points */ + var muUnit:CGFloat { _fontSize/18 } + + func fontUnitsToPt(_ fontUnits:Int) -> CGFloat { + CGFloat(fontUnits) * _fontSize / CGFloat(_unitsPerEm) + } + + init(withFont font: MTFont?, mathTable:NSDictionary) { + assert(font != nil, "font has nil value") + assert(font!.ctFont != nil, "font.ctFont has nil value") + self.font = font + // do domething with font + _unitsPerEm = UInt(CTFontGetUnitsPerEm(font!.ctFont)) + _fontSize = font!.fontSize; + _mathTable = mathTable + let version = _mathTable["version"] as! String + if version != "1.3" { + NSException(name: NSExceptionName.internalInconsistencyException, reason: "Invalid version of math table plist: \(version)").raise() + } + } + + func constantFromTable(_ constName:String) -> CGFloat { + let consts = _mathTable[kConstants] as! NSDictionary? + let val = consts![constName] as! NSNumber? + return fontUnitsToPt(val!.intValue) + } + + func percentFromTable(_ percentName:String) -> CGFloat { + let consts = _mathTable[kConstants] as! NSDictionary? + let val = consts![percentName] as! NSNumber? + return CGFloat(val!.floatValue) / 100 + } + + /// Math Font Metrics from the opentype specification + // MARK: - Fractions + var fractionNumeratorDisplayStyleShiftUp:CGFloat { constantFromTable("FractionNumeratorDisplayStyleShiftUp") } // \sigma_8 in TeX + var fractionNumeratorShiftUp:CGFloat { constantFromTable("FractionNumeratorShiftUp") } // \sigma_9 in TeX + var fractionDenominatorDisplayStyleShiftDown:CGFloat { constantFromTable("FractionDenominatorDisplayStyleShiftDown") } // \sigma_11 in TeX + var fractionDenominatorShiftDown:CGFloat { constantFromTable("FractionDenominatorShiftDown") } // \sigma_12 in TeX + var fractionNumeratorDisplayStyleGapMin:CGFloat { constantFromTable("FractionNumDisplayStyleGapMin") } // 3 * \xi_8 in TeX + var fractionNumeratorGapMin:CGFloat { constantFromTable("FractionNumeratorGapMin") } // \xi_8 in TeX + var fractionDenominatorDisplayStyleGapMin:CGFloat { constantFromTable("FractionDenomDisplayStyleGapMin") } // 3 * \xi_8 in TeX + var fractionDenominatorGapMin:CGFloat { constantFromTable("FractionDenominatorGapMin") } // \xi_8 in TeX + var fractionRuleThickness:CGFloat { constantFromTable("FractionRuleThickness") } // \xi_8 in TeX + var skewedFractionHorizonalGap:CGFloat { constantFromTable("SkewedFractionHorizontalGap") } // \sigma_20 in TeX + var skewedFractionVerticalGap:CGFloat { constantFromTable("SkewedFractionVerticalGap") } // \sigma_21 in TeX + + // MARK: - Non-standard + /// FractionDelimiterSize and FractionDelimiterDisplayStyleSize are not constants + /// specified in the OpenType Math specification. Rather these are proposed LuaTeX extensions + /// for the TeX parameters \sigma_20 (delim1) and \sigma_21 (delim2). Since these do not + /// exist in the fonts that we have, we use the same approach as LuaTeX and use the fontSize + /// to determine these values. The constants used match the metrics values of the original TeX fonts. + /// Note: An alternative approach is to use DelimitedSubFormulaMinHeight for \sigma21 and use a factor + /// of 2 to get \sigma 20 as proposed in Vieth paper. + /// The XeTeX implementation sets \sigma21 = fontSize and \sigma20 = DelimitedSubFormulaMinHeight which + /// will produce smaller delimiters. + /// Of all the approaches we've implemented LuaTeX's approach since it mimics LaTeX most accurately. + var fractionDelimiterSize: CGFloat { 1.01 * _fontSize } + + /// Modified constant from 2.4 to 2.39 for better visual appearance. + var fractionDelimiterDisplayStyleSize: CGFloat { 2.39 * _fontSize } + + // MARK: - Stacks + var stackTopDisplayStyleShiftUp:CGFloat { constantFromTable("StackTopDisplayStyleShiftUp") } // \sigma_8 in TeX + var stackTopShiftUp:CGFloat { constantFromTable("StackTopShiftUp") } // \sigma_10 in TeX + var stackDisplayStyleGapMin:CGFloat { constantFromTable("StackDisplayStyleGapMin") } // 7 \xi_8 in TeX + var stackGapMin:CGFloat { constantFromTable("StackGapMin") } // 3 \xi_8 in TeX + var stackBottomDisplayStyleShiftDown:CGFloat { constantFromTable("StackBottomDisplayStyleShiftDown") } // \sigma_11 in TeX + var stackBottomShiftDown:CGFloat { constantFromTable("StackBottomShiftDown") } // \sigma_12 in TeX + + var stretchStackBottomShiftDown:CGFloat { constantFromTable("StretchStackBottomShiftDown") } + var stretchStackGapAboveMin:CGFloat { constantFromTable("StretchStackGapAboveMin") } + var stretchStackGapBelowMin:CGFloat { constantFromTable("StretchStackGapBelowMin") } + var stretchStackTopShiftUp:CGFloat { constantFromTable("StretchStackTopShiftUp") } + + // MARK: - super/sub scripts + + var superscriptShiftUp:CGFloat { constantFromTable("SuperscriptShiftUp") } // \sigma_13, \sigma_14 in TeX + var superscriptShiftUpCramped:CGFloat { constantFromTable("SuperscriptShiftUpCramped") } // \sigma_15 in TeX + var subscriptShiftDown:CGFloat { constantFromTable("SubscriptShiftDown") } // \sigma_16, \sigma_17 in TeX + var superscriptBaselineDropMax:CGFloat { constantFromTable("SuperscriptBaselineDropMax") } // \sigma_18 in TeX + var subscriptBaselineDropMin:CGFloat { constantFromTable("SubscriptBaselineDropMin") } // \sigma_19 in TeX + var superscriptBottomMin:CGFloat { constantFromTable("SuperscriptBottomMin") } // 1/4 \sigma_5 in TeX + var subscriptTopMax:CGFloat { constantFromTable("SubscriptTopMax") } // 4/5 \sigma_5 in TeX + var subSuperscriptGapMin:CGFloat { constantFromTable("SubSuperscriptGapMin") } // 4 \xi_8 in TeX + var superscriptBottomMaxWithSubscript:CGFloat { constantFromTable("SuperscriptBottomMaxWithSubscript") } // 4/5 \sigma_5 in TeX + + var spaceAfterScript:CGFloat { constantFromTable("SpaceAfterScript") } + + // MARK: - radicals + var radicalExtraAscender:CGFloat { constantFromTable("RadicalExtraAscender") } // \xi_8 in Tex + var radicalRuleThickness:CGFloat { constantFromTable("RadicalRuleThickness") } // \xi_8 in Tex + var radicalDisplayStyleVerticalGap:CGFloat { constantFromTable("RadicalDisplayStyleVerticalGap") } // \xi_8 + 1/4 \sigma_5 in Tex + var radicalVerticalGap:CGFloat { constantFromTable("RadicalVerticalGap") } // 5/4 \xi_8 in Tex + var radicalKernBeforeDegree:CGFloat { constantFromTable("RadicalKernBeforeDegree") } // 5 mu in Tex + var radicalKernAfterDegree:CGFloat { constantFromTable("RadicalKernAfterDegree") } // -10 mu in Tex + var radicalDegreeBottomRaisePercent:CGFloat { percentFromTable("RadicalDegreeBottomRaisePercent") } // 60% in Tex + + // MARK: - Limits + var upperLimitBaselineRiseMin:CGFloat { constantFromTable("UpperLimitBaselineRiseMin") } // \xi_11 in TeX + var upperLimitGapMin:CGFloat { constantFromTable("UpperLimitGapMin") } // \xi_9 in TeX + var lowerLimitGapMin:CGFloat { constantFromTable("LowerLimitGapMin") } // \xi_10 in TeX + var lowerLimitBaselineDropMin:CGFloat { constantFromTable("LowerLimitBaselineDropMin") } // \xi_12 in TeX + var limitExtraAscenderDescender:CGFloat { 0 } // \xi_13 in TeX, not present in OpenType so we always set it to 0. + + // MARK: - Underline + var underbarVerticalGap:CGFloat { constantFromTable("UnderbarVerticalGap") } // 3 \xi_8 in TeX + var underbarRuleThickness:CGFloat { constantFromTable("UnderbarRuleThickness") } // \xi_8 in TeX + var underbarExtraDescender:CGFloat { constantFromTable("UnderbarExtraDescender") } // \xi_8 in TeX + + // MARK: - Overline + var overbarVerticalGap:CGFloat { constantFromTable("OverbarVerticalGap") } // 3 \xi_8 in TeX + var overbarRuleThickness:CGFloat { constantFromTable("OverbarRuleThickness") } // \xi_8 in TeX + var overbarExtraAscender:CGFloat { constantFromTable("OverbarExtraAscender") } // \xi_8 in TeX + + // MARK: - Constants + + var axisHeight:CGFloat { constantFromTable("AxisHeight") } // \sigma_22 in TeX + var scriptScaleDown:CGFloat { percentFromTable("ScriptPercentScaleDown") } + var scriptScriptScaleDown:CGFloat { percentFromTable("ScriptScriptPercentScaleDown") } + var mathLeading:CGFloat { constantFromTable("MathLeading") } + var delimitedSubFormulaMinHeight:CGFloat { constantFromTable("DelimitedSubFormulaMinHeight") } + + // MARK: - Accent + + var accentBaseHeight:CGFloat { constantFromTable("AccentBaseHeight") } // \fontdimen5 in TeX (x-height) + var flattenedAccentBaseHeight:CGFloat { constantFromTable("FlattenedAccentBaseHeight") } + + // MARK: - Variants + + let kVertVariants = "v_variants" + let kHorizVariants = "h_variants" + + /** Returns an Array of all the vertical variants of the glyph if any. If + there are no variants for the glyph, the array contains the given glyph. */ + func getVerticalVariantsForGlyph( _ glyph:CGGlyph) -> [NSNumber?] { + let variants = _mathTable[kVertVariants] as! NSDictionary? + return self.getVariantsForGlyph(glyph, inDictionary: variants!) + } + + /** Returns an Array of all the horizontal variants of the glyph if any. If + there are no variants for the glyph, the array contains the given glyph. */ + func getHorizontalVariantsForGlyph( _ glyph:CGGlyph) -> [NSNumber?] { + let variants = _mathTable[kHorizVariants] as! NSDictionary + return self.getVariantsForGlyph(glyph, inDictionary:variants) + } + + func getVariantsForGlyph(_ glyph: CGGlyph, inDictionary variants:NSDictionary) -> [NSNumber?] { + let glyphName = self.font!.get(nameForGlyph: glyph) + let variantGlyphs = variants[glyphName] as! NSArray? + var glyphArray = [NSNumber]() + if variantGlyphs == nil || variantGlyphs?.count == 0 { + // There are no extra variants, so just add the current glyph to it. + let glyph = self.font!.get(glyphWithName: glyphName) + glyphArray.append(NSNumber(value:glyph)) + return glyphArray + } + for gvn in variantGlyphs! { + let glyphVariantName = gvn as! String? + let variantGlyph = self.font?.get(glyphWithName: glyphVariantName!) + glyphArray.append(NSNumber(value:variantGlyph!)) + } + return glyphArray + } + + /** Returns a larger vertical variant of the given glyph if any. + If there is no larger version, this returns the current glyph. + + - Parameter glyph: The glyph to find a larger variant for + - Parameter forDisplayStyle: If true, selects the largest appropriate variant for display style. + If false, selects the next larger variant (incremental sizing). + - Returns: A larger glyph variant, or the original glyph if no variants exist + */ + func getLargerGlyph(_ glyph:CGGlyph, forDisplayStyle: Bool = false) -> CGGlyph { + let variants = _mathTable[kVertVariants] as! NSDictionary? + let glyphName = self.font?.get(nameForGlyph: glyph) + let variantGlyphs = variants![glyphName!] as! NSArray? + if variantGlyphs == nil || variantGlyphs?.count == 0 { + // There are no extra variants, so just returnt the current glyph. + return glyph + } + + if forDisplayStyle { + // For display style, select a large variant suitable for mathematical display mode + // Display integrals should be significantly larger (~2.2em) for visual prominence + let count = variantGlyphs!.count + + // Strategy: Use the largest variant, but avoid extreme sizes for fonts with many variants + let targetIndex: Int + if count <= 2 { + // Small variant list: use the last one (e.g., integral.size1 at ~2.2em) + targetIndex = count - 1 + } else if count <= 4 { + // Medium variant list: use second-to-last to avoid extremes + targetIndex = count - 2 + } else { + // Large variant list (like texgyretermes with 6 variants): + // Use variant at ~60% position to get appropriate display size (~2.0em) + // For 7 variants (0-6), this gives index 4 + targetIndex = min(count - 2, Int(Double(count) * 0.6)) + } + + if let glyphVariantName = variantGlyphs![targetIndex] as? String { + let variantGlyph = self.font?.get(glyphWithName: glyphVariantName) + return variantGlyph! + } + } else { + // Text/inline style: use incremental sizing for moderate enlargement + // Find the first variant with a different name + for gvn in variantGlyphs! { + let glyphVariantName = gvn as! String? + if glyphVariantName != glyphName { + let variantGlyph = self.font?.get(glyphWithName: glyphVariantName!) + return variantGlyph! + } + } + } + + // We did not find any variants of this glyph so return it. + return glyph; + } + + // MARK: - Italic Correction + + let kItalic = "italic" + + /** Returns the italic correction for the given glyph if any. If there + isn't any this returns 0. */ + func getItalicCorrection(_ glyph: CGGlyph) -> CGFloat { + let italics = _mathTable[kItalic] as! NSDictionary? + let glyphName = self.font?.get(nameForGlyph: glyph) + let val = italics![glyphName!] as! NSNumber? + // if val is nil, this returns 0. + return self.fontUnitsToPt(val?.intValue ?? 0) + } + + // MARK: - Accents + + let kAccents = "accents" + + /** Returns the adjustment to the top accent for the given glyph if any. + If there isn't any this returns -1. */ + func getTopAccentAdjustment(_ glyph: CGGlyph) -> CGFloat { + var glyph = glyph + let accents = _mathTable[kAccents] as! NSDictionary? + let glyphName = self.font?.get(nameForGlyph: glyph) + let val = accents![glyphName!] as! NSNumber? + if let val = val { + return self.fontUnitsToPt(val.intValue) + } else { + // If no top accent is defined then it is the center of the advance width. + var advances = CGSize.zero + CTFontGetAdvancesForGlyphs(self.font!.ctFont, .horizontal, &glyph, &advances, 1) + return advances.width/2 + } + } + + // MARK: - Glyph Construction + + /** Minimum overlap of connecting glyphs during glyph construction */ + var minConnectorOverlap:CGFloat { constantFromTable("MinConnectorOverlap") } + + let kVertAssembly = "v_assembly" + let kAssemblyParts = "parts" + + /** Returns an array of the glyph parts to be used for constructing vertical variants + of this glyph. If there is no glyph assembly defined, returns an empty array. */ + func getVerticalGlyphAssembly(forGlyph glyph:CGGlyph) -> [GlyphPart] { + let assemblyTable = _mathTable[kVertAssembly] as! NSDictionary? + let glyphName = self.font?.get(nameForGlyph: glyph) + let assemblyInfo = assemblyTable![glyphName!] as! NSDictionary? + if assemblyInfo == nil { + // No vertical assembly defined for glyph + return [] + } + let parts = assemblyInfo![kAssemblyParts] as! NSArray? + if parts == nil { + // parts should always have been defined, but if it isn't return nil + return [] + } + var rv = [GlyphPart]() + for part in parts! { + let partInfo = part as! NSDictionary? + var part = GlyphPart() + let adv = partInfo!["advance"] as! NSNumber? + part.fullAdvance = self.fontUnitsToPt(adv!.intValue) + let end = partInfo!["endConnector"] as! NSNumber? + part.endConnectorLength = self.fontUnitsToPt(end!.intValue) + let start = partInfo!["startConnector"] as! NSNumber? + part.startConnectorLength = self.fontUnitsToPt(start!.intValue) + let ext = partInfo!["extender"] as! NSNumber? + part.isExtender = ext!.boolValue + let glyphName = partInfo!["glyph"] as! String? + part.glyph = self.font?.get(glyphWithName: glyphName!) + rv.append(part) + } + return rv + } + + +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTLabel.swift b/third-party/SwiftMath/Sources/MathRender/MTLabel.swift new file mode 100755 index 0000000000..8964a9027b --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTLabel.swift @@ -0,0 +1,37 @@ +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by 安志钢. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation +import SwiftUI + +#if os(macOS) + +public class MTLabel : NSTextField { + + init() { + super.init(frame: .zero) + self.stringValue = "" + self.isBezeled = false + self.drawsBackground = false + self.isEditable = false + self.isSelectable = false + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + } + + // MARK: - Customized getter and setter methods for property text. + var text:String? { + get { super.stringValue } + set { super.stringValue = newValue! } + } + +} + +#endif diff --git a/third-party/SwiftMath/Sources/MathRender/MTMathAtomFactory.swift b/third-party/SwiftMath/Sources/MathRender/MTMathAtomFactory.swift new file mode 100644 index 0000000000..8d35a93dc3 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTMathAtomFactory.swift @@ -0,0 +1,1141 @@ +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by Kostub Deshmukh. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation + +/** A factory to create commonly used MTMathAtoms. */ +public class MTMathAtomFactory { + + public static let aliases = [ + "lnot" : "neg", + "land" : "wedge", + "lor" : "vee", + "ne" : "neq", + "le" : "leq", + "ge" : "geq", + "lbrace" : "{", + "rbrace" : "}", + "Vert" : "|", + "gets" : "leftarrow", + "to" : "rightarrow", + "iff" : "Longleftrightarrow", + "AA" : "angstrom" + ] + + public static let delimiters = [ + "." : "", // . means no delimiter + "(" : "(", + ")" : ")", + "[" : "[", + "]" : "]", + "<" : "\u{2329}", + ">" : "\u{232A}", + "/" : "/", + "\\" : "\\", + "|" : "|", + "lgroup" : "\u{27EE}", + "rgroup" : "\u{27EF}", + "||" : "\u{2016}", + "Vert" : "\u{2016}", + "vert" : "|", + "uparrow" : "\u{2191}", + "downarrow" : "\u{2193}", + "updownarrow" : "\u{2195}", + "Uparrow" : "\u{21D1}", + "Downarrow" : "\u{21D3}", + "Updownarrow" : "\u{21D5}", + "backslash" : "\\", + "rangle" : "\u{232A}", + "langle" : "\u{2329}", + "rbrace" : "}", + "}" : "}", + "{" : "{", + "lbrace" : "{", + "lceil" : "\u{2308}", + "rceil" : "\u{2309}", + "lfloor" : "\u{230A}", + "rfloor" : "\u{230B}", + // Corner brackets (amssymb) + "ulcorner" : "\u{231C}", // upper left corner + "urcorner" : "\u{231D}", // upper right corner + "llcorner" : "\u{231E}", // lower left corner + "lrcorner" : "\u{231F}", // lower right corner + // Double square brackets (strachey brackets) + "llbracket" : "\u{27E6}", // left double bracket + "rrbracket" : "\u{27E7}", // right double bracket + ] + + private static let delimValueLock = NSLock() + static var _delimValueToName = [String: String]() + public static var delimValueToName: [String: String] { + if _delimValueToName.isEmpty { + var output = [String: String]() + for (key, value) in Self.delimiters { + if let existingValue = output[value] { + if key.count > existingValue.count { + continue + } else if key.count == existingValue.count { + if key.compare(existingValue) == .orderedDescending { + continue + } + } + } + output[value] = key + } + // protect lazily loading table in a multi-thread concurrent environment + delimValueLock.lock() + defer { delimValueLock.unlock() } + if _delimValueToName.isEmpty { + _delimValueToName = output + } + } + return _delimValueToName + } + + public static let accents = [ + "grave" : "\u{0300}", + "acute" : "\u{0301}", + "hat" : "\u{0302}", // In our implementation hat and widehat behave the same. + "tilde" : "\u{0303}", // In our implementation tilde and widetilde behave the same. + "bar" : "\u{0304}", + "breve" : "\u{0306}", + "dot" : "\u{0307}", + "ddot" : "\u{0308}", + "check" : "\u{030C}", + "vec" : "\u{20D7}", + "widehat" : "\u{0302}", + "widetilde" : "\u{0303}", + "overleftarrow" : "\u{20D6}", // Combining left arrow above + "overrightarrow" : "\u{20D7}", // Combining right arrow above (same as vec) + "overleftrightarrow" : "\u{20E1}" // Combining left right arrow above + ] + + private static let accentValueLock = NSLock() + static var _accentValueToName: [String: String]? = nil + public static var accentValueToName: [String: String] { + if _accentValueToName == nil { + var output = [String: String]() + + for (key, value) in Self.accents { + if let existingValue = output[value] { + if key.count > existingValue.count { + continue + } else if key.count == existingValue.count { + if key.compare(existingValue) == .orderedDescending { + continue + } + } + } + output[value] = key + } + // protect lazily loading table in a multi-thread concurrent environment + accentValueLock.lock() + defer { accentValueLock.unlock() } + if _accentValueToName == nil { + _accentValueToName = output + } + } + return _accentValueToName! + } + + static var supportedLatexSymbolNames:[String] { + let commands = MTMathAtomFactory.supportedLatexSymbols + return commands.keys.map { String($0) } + } + + static var supportedLatexSymbols: [String: MTMathAtom] = [ + "square" : MTMathAtomFactory.placeholder(), + + // Greek characters + "alpha" : MTMathAtom(type: .variable, value: "\u{03B1}"), + "beta" : MTMathAtom(type: .variable, value: "\u{03B2}"), + "gamma" : MTMathAtom(type: .variable, value: "\u{03B3}"), + "delta" : MTMathAtom(type: .variable, value: "\u{03B4}"), + "varepsilon" : MTMathAtom(type: .variable, value: "\u{03B5}"), + "zeta" : MTMathAtom(type: .variable, value: "\u{03B6}"), + "eta" : MTMathAtom(type: .variable, value: "\u{03B7}"), + "theta" : MTMathAtom(type: .variable, value: "\u{03B8}"), + "iota" : MTMathAtom(type: .variable, value: "\u{03B9}"), + "kappa" : MTMathAtom(type: .variable, value: "\u{03BA}"), + "lambda" : MTMathAtom(type: .variable, value: "\u{03BB}"), + "mu" : MTMathAtom(type: .variable, value: "\u{03BC}"), + "nu" : MTMathAtom(type: .variable, value: "\u{03BD}"), + "xi" : MTMathAtom(type: .variable, value: "\u{03BE}"), + "omicron" : MTMathAtom(type: .variable, value: "\u{03BF}"), + "pi" : MTMathAtom(type: .variable, value: "\u{03C0}"), + "rho" : MTMathAtom(type: .variable, value: "\u{03C1}"), + "varsigma" : MTMathAtom(type: .variable, value: "\u{03C2}"), + "sigma" : MTMathAtom(type: .variable, value: "\u{03C3}"), + "tau" : MTMathAtom(type: .variable, value: "\u{03C4}"), + "upsilon" : MTMathAtom(type: .variable, value: "\u{03C5}"), + "varphi" : MTMathAtom(type: .variable, value: "\u{03C6}"), + "chi" : MTMathAtom(type: .variable, value: "\u{03C7}"), + "psi" : MTMathAtom(type: .variable, value: "\u{03C8}"), + "omega" : MTMathAtom(type: .variable, value: "\u{03C9}"), + // We mark the following greek chars as ordinary so that we don't try + // to automatically italicize them as we do with variables. + // These characters fall outside the rules of italicization that we have defined. + "epsilon" : MTMathAtom(type: .ordinary, value: "\u{0001D716}"), + "vartheta" : MTMathAtom(type: .ordinary, value: "\u{0001D717}"), + "phi" : MTMathAtom(type: .ordinary, value: "\u{0001D719}"), + "varrho" : MTMathAtom(type: .ordinary, value: "\u{0001D71A}"), + "varpi" : MTMathAtom(type: .ordinary, value: "\u{0001D71B}"), + "varkappa" : MTMathAtom(type: .ordinary, value: "\u{03F0}"), + // Note: digamma (U+03DD) and Digamma (U+03DC) are not supported by Latin Modern Math font + + // Capital greek characters + "Gamma" : MTMathAtom(type: .variable, value: "\u{0393}"), + "Delta" : MTMathAtom(type: .variable, value: "\u{0394}"), + "Theta" : MTMathAtom(type: .variable, value: "\u{0398}"), + "Lambda" : MTMathAtom(type: .variable, value: "\u{039B}"), + "Xi" : MTMathAtom(type: .variable, value: "\u{039E}"), + "Pi" : MTMathAtom(type: .variable, value: "\u{03A0}"), + "Sigma" : MTMathAtom(type: .variable, value: "\u{03A3}"), + "Upsilon" : MTMathAtom(type: .variable, value: "\u{03A5}"), + "Phi" : MTMathAtom(type: .variable, value: "\u{03A6}"), + "Psi" : MTMathAtom(type: .variable, value: "\u{03A8}"), + "Omega" : MTMathAtom(type: .variable, value: "\u{03A9}"), + + // Open + "lceil" : MTMathAtom(type: .open, value: "\u{2308}"), + "lfloor" : MTMathAtom(type: .open, value: "\u{230A}"), + "langle" : MTMathAtom(type: .open, value: "\u{27E8}"), + "lgroup" : MTMathAtom(type: .open, value: "\u{27EE}"), + + // Close + "rceil" : MTMathAtom(type: .close, value: "\u{2309}"), + "rfloor" : MTMathAtom(type: .close, value: "\u{230B}"), + "rangle" : MTMathAtom(type: .close, value: "\u{27E9}"), + "rgroup" : MTMathAtom(type: .close, value: "\u{27EF}"), + + // Arrows + "leftarrow" : MTMathAtom(type: .relation, value: "\u{2190}"), + "uparrow" : MTMathAtom(type: .relation, value: "\u{2191}"), + "rightarrow" : MTMathAtom(type: .relation, value: "\u{2192}"), + "downarrow" : MTMathAtom(type: .relation, value: "\u{2193}"), + "leftrightarrow" : MTMathAtom(type: .relation, value: "\u{2194}"), + "updownarrow" : MTMathAtom(type: .relation, value: "\u{2195}"), + "nwarrow" : MTMathAtom(type: .relation, value: "\u{2196}"), + "nearrow" : MTMathAtom(type: .relation, value: "\u{2197}"), + "searrow" : MTMathAtom(type: .relation, value: "\u{2198}"), + "swarrow" : MTMathAtom(type: .relation, value: "\u{2199}"), + "mapsto" : MTMathAtom(type: .relation, value: "\u{21A6}"), + "Leftarrow" : MTMathAtom(type: .relation, value: "\u{21D0}"), + "Uparrow" : MTMathAtom(type: .relation, value: "\u{21D1}"), + "Rightarrow" : MTMathAtom(type: .relation, value: "\u{21D2}"), + "Downarrow" : MTMathAtom(type: .relation, value: "\u{21D3}"), + "Leftrightarrow" : MTMathAtom(type: .relation, value: "\u{21D4}"), + "Updownarrow" : MTMathAtom(type: .relation, value: "\u{21D5}"), + "longleftarrow" : MTMathAtom(type: .relation, value: "\u{27F5}"), + "longrightarrow" : MTMathAtom(type: .relation, value: "\u{27F6}"), + "longleftrightarrow" : MTMathAtom(type: .relation, value: "\u{27F7}"), + "Longleftarrow" : MTMathAtom(type: .relation, value: "\u{27F8}"), + "Longrightarrow" : MTMathAtom(type: .relation, value: "\u{27F9}"), + "Longleftrightarrow" : MTMathAtom(type: .relation, value: "\u{27FA}"), + "longmapsto" : MTMathAtom(type: .relation, value: "\u{27FC}"), + "hookrightarrow" : MTMathAtom(type: .relation, value: "\u{21AA}"), + "hookleftarrow" : MTMathAtom(type: .relation, value: "\u{21A9}"), + + + // Relations + "leq" : MTMathAtom(type: .relation, value: UnicodeSymbol.lessEqual), + "geq" : MTMathAtom(type: .relation, value: UnicodeSymbol.greaterEqual), + "leqslant" : MTMathAtom(type: .relation, value: "\u{2A7D}"), + "geqslant" : MTMathAtom(type: .relation, value: "\u{2A7E}"), + "neq" : MTMathAtom(type: .relation, value: UnicodeSymbol.notEqual), + "in" : MTMathAtom(type: .relation, value: "\u{2208}"), + "notin" : MTMathAtom(type: .relation, value: "\u{2209}"), + "ni" : MTMathAtom(type: .relation, value: "\u{220B}"), + "propto" : MTMathAtom(type: .relation, value: "\u{221D}"), + "mid" : MTMathAtom(type: .relation, value: "\u{2223}"), + "parallel" : MTMathAtom(type: .relation, value: "\u{2225}"), + "sim" : MTMathAtom(type: .relation, value: "\u{223C}"), + "simeq" : MTMathAtom(type: .relation, value: "\u{2243}"), + "cong" : MTMathAtom(type: .relation, value: "\u{2245}"), + "approx" : MTMathAtom(type: .relation, value: "\u{2248}"), + "asymp" : MTMathAtom(type: .relation, value: "\u{224D}"), + "doteq" : MTMathAtom(type: .relation, value: "\u{2250}"), + "equiv" : MTMathAtom(type: .relation, value: "\u{2261}"), + "gg" : MTMathAtom(type: .relation, value: "\u{226B}"), + "ll" : MTMathAtom(type: .relation, value: "\u{226A}"), + "prec" : MTMathAtom(type: .relation, value: "\u{227A}"), + "succ" : MTMathAtom(type: .relation, value: "\u{227B}"), + "preceq" : MTMathAtom(type: .relation, value: "\u{2AAF}"), + "succeq" : MTMathAtom(type: .relation, value: "\u{2AB0}"), + "subset" : MTMathAtom(type: .relation, value: "\u{2282}"), + "supset" : MTMathAtom(type: .relation, value: "\u{2283}"), + "subseteq" : MTMathAtom(type: .relation, value: "\u{2286}"), + "supseteq" : MTMathAtom(type: .relation, value: "\u{2287}"), + "sqsubset" : MTMathAtom(type: .relation, value: "\u{228F}"), + "sqsupset" : MTMathAtom(type: .relation, value: "\u{2290}"), + "sqsubseteq" : MTMathAtom(type: .relation, value: "\u{2291}"), + "sqsupseteq" : MTMathAtom(type: .relation, value: "\u{2292}"), + "models" : MTMathAtom(type: .relation, value: "\u{22A7}"), + "vdash" : MTMathAtom(type: .relation, value: "\u{22A2}"), + "dashv" : MTMathAtom(type: .relation, value: "\u{22A3}"), + "bowtie" : MTMathAtom(type: .relation, value: "\u{22C8}"), + "perp" : MTMathAtom(type: .relation, value: "\u{27C2}"), + "implies" : MTMathAtom(type: .relation, value: "\u{27F9}"), + + // Negated relations (amssymb) + // Inequality negations + "nless" : MTMathAtom(type: .relation, value: "\u{226E}"), + "ngtr" : MTMathAtom(type: .relation, value: "\u{226F}"), + "nleq" : MTMathAtom(type: .relation, value: "\u{2270}"), + "ngeq" : MTMathAtom(type: .relation, value: "\u{2271}"), + "nleqslant" : MTMathAtom(type: .relation, value: "\u{2A87}"), + "ngeqslant" : MTMathAtom(type: .relation, value: "\u{2A88}"), + "lneq" : MTMathAtom(type: .relation, value: "\u{2A87}"), + "gneq" : MTMathAtom(type: .relation, value: "\u{2A88}"), + "lneqq" : MTMathAtom(type: .relation, value: "\u{2268}"), + "gneqq" : MTMathAtom(type: .relation, value: "\u{2269}"), + "lnsim" : MTMathAtom(type: .relation, value: "\u{22E6}"), + "gnsim" : MTMathAtom(type: .relation, value: "\u{22E7}"), + "lnapprox" : MTMathAtom(type: .relation, value: "\u{2A89}"), + "gnapprox" : MTMathAtom(type: .relation, value: "\u{2A8A}"), + + // Ordering negations + "nprec" : MTMathAtom(type: .relation, value: "\u{2280}"), + "nsucc" : MTMathAtom(type: .relation, value: "\u{2281}"), + "npreceq" : MTMathAtom(type: .relation, value: "\u{22E0}"), + "nsucceq" : MTMathAtom(type: .relation, value: "\u{22E1}"), + "precneqq" : MTMathAtom(type: .relation, value: "\u{2AB5}"), + "succneqq" : MTMathAtom(type: .relation, value: "\u{2AB6}"), + "precnsim" : MTMathAtom(type: .relation, value: "\u{22E8}"), + "succnsim" : MTMathAtom(type: .relation, value: "\u{22E9}"), + "precnapprox" : MTMathAtom(type: .relation, value: "\u{2AB9}"), + "succnapprox" : MTMathAtom(type: .relation, value: "\u{2ABA}"), + + // Similarity/congruence negations + "nsim" : MTMathAtom(type: .relation, value: "\u{2241}"), + "ncong" : MTMathAtom(type: .relation, value: "\u{2247}"), + "nmid" : MTMathAtom(type: .relation, value: "\u{2224}"), + "nshortmid" : MTMathAtom(type: .relation, value: "\u{2224}"), + "nparallel" : MTMathAtom(type: .relation, value: "\u{2226}"), + "nshortparallel" : MTMathAtom(type: .relation, value: "\u{2226}"), + + // Set relation negations + "nsubseteq" : MTMathAtom(type: .relation, value: "\u{2288}"), + "nsupseteq" : MTMathAtom(type: .relation, value: "\u{2289}"), + "subsetneq" : MTMathAtom(type: .relation, value: "\u{228A}"), + "supsetneq" : MTMathAtom(type: .relation, value: "\u{228B}"), + "subsetneqq" : MTMathAtom(type: .relation, value: "\u{2ACB}"), + "supsetneqq" : MTMathAtom(type: .relation, value: "\u{2ACC}"), + "varsubsetneq" : MTMathAtom(type: .relation, value: "\u{228A}"), + "varsupsetneq" : MTMathAtom(type: .relation, value: "\u{228B}"), + "varsubsetneqq" : MTMathAtom(type: .relation, value: "\u{2ACB}"), + "varsupsetneqq" : MTMathAtom(type: .relation, value: "\u{2ACC}"), + "notni" : MTMathAtom(type: .relation, value: "\u{220C}"), + "nni" : MTMathAtom(type: .relation, value: "\u{220C}"), + + // Triangle negations + "ntriangleleft" : MTMathAtom(type: .relation, value: "\u{22EA}"), + "ntriangleright" : MTMathAtom(type: .relation, value: "\u{22EB}"), + "ntrianglelefteq" : MTMathAtom(type: .relation, value: "\u{22EC}"), + "ntrianglerighteq" : MTMathAtom(type: .relation, value: "\u{22ED}"), + + // Turnstile negations + "nvdash" : MTMathAtom(type: .relation, value: "\u{22AC}"), + "nvDash" : MTMathAtom(type: .relation, value: "\u{22AD}"), + "nVdash" : MTMathAtom(type: .relation, value: "\u{22AE}"), + "nVDash" : MTMathAtom(type: .relation, value: "\u{22AF}"), + + // Square subset negations + "nsqsubseteq" : MTMathAtom(type: .relation, value: "\u{22E2}"), + "nsqsupseteq" : MTMathAtom(type: .relation, value: "\u{22E3}"), + + // operators + "times" : MTMathAtomFactory.times(), + "div" : MTMathAtomFactory.divide(), + "pm" : MTMathAtom(type: .binaryOperator, value: "\u{00B1}"), + "dagger" : MTMathAtom(type: .binaryOperator, value: "\u{2020}"), + "ddagger" : MTMathAtom(type: .binaryOperator, value: "\u{2021}"), + "mp" : MTMathAtom(type: .binaryOperator, value: "\u{2213}"), + "setminus" : MTMathAtom(type: .binaryOperator, value: "\u{2216}"), + "ast" : MTMathAtom(type: .binaryOperator, value: "\u{2217}"), + "circ" : MTMathAtom(type: .binaryOperator, value: "\u{2218}"), + "bullet" : MTMathAtom(type: .binaryOperator, value: "\u{2219}"), + "wedge" : MTMathAtom(type: .binaryOperator, value: "\u{2227}"), + "vee" : MTMathAtom(type: .binaryOperator, value: "\u{2228}"), + "cap" : MTMathAtom(type: .binaryOperator, value: "\u{2229}"), + "cup" : MTMathAtom(type: .binaryOperator, value: "\u{222A}"), + "wr" : MTMathAtom(type: .binaryOperator, value: "\u{2240}"), + "uplus" : MTMathAtom(type: .binaryOperator, value: "\u{228E}"), + "sqcap" : MTMathAtom(type: .binaryOperator, value: "\u{2293}"), + "sqcup" : MTMathAtom(type: .binaryOperator, value: "\u{2294}"), + "oplus" : MTMathAtom(type: .binaryOperator, value: "\u{2295}"), + "ominus" : MTMathAtom(type: .binaryOperator, value: "\u{2296}"), + "otimes" : MTMathAtom(type: .binaryOperator, value: "\u{2297}"), + "oslash" : MTMathAtom(type: .binaryOperator, value: "\u{2298}"), + "odot" : MTMathAtom(type: .binaryOperator, value: "\u{2299}"), + "star" : MTMathAtom(type: .binaryOperator, value: "\u{22C6}"), + "cdot" : MTMathAtom(type: .binaryOperator, value: "\u{22C5}"), + "diamond" : MTMathAtom(type: .binaryOperator, value: "\u{22C4}"), + "amalg" : MTMathAtom(type: .binaryOperator, value: "\u{2A3F}"), + + // Additional binary operators (amssymb) + "ltimes" : MTMathAtom(type: .binaryOperator, value: "\u{22C9}"), // left semidirect product + "rtimes" : MTMathAtom(type: .binaryOperator, value: "\u{22CA}"), // right semidirect product + "circledast" : MTMathAtom(type: .binaryOperator, value: "\u{229B}"), + "circledcirc" : MTMathAtom(type: .binaryOperator, value: "\u{229A}"), + "circleddash" : MTMathAtom(type: .binaryOperator, value: "\u{229D}"), + "boxdot" : MTMathAtom(type: .binaryOperator, value: "\u{22A1}"), + "boxminus" : MTMathAtom(type: .binaryOperator, value: "\u{229F}"), + "boxplus" : MTMathAtom(type: .binaryOperator, value: "\u{229E}"), + "boxtimes" : MTMathAtom(type: .binaryOperator, value: "\u{22A0}"), + "divideontimes" : MTMathAtom(type: .binaryOperator, value: "\u{22C7}"), + "dotplus" : MTMathAtom(type: .binaryOperator, value: "\u{2214}"), + "lhd" : MTMathAtom(type: .binaryOperator, value: "\u{22B2}"), // left normal subgroup + "rhd" : MTMathAtom(type: .binaryOperator, value: "\u{22B3}"), // right normal subgroup + "unlhd" : MTMathAtom(type: .binaryOperator, value: "\u{22B4}"), // left normal subgroup or equal + "unrhd" : MTMathAtom(type: .binaryOperator, value: "\u{22B5}"), // right normal subgroup or equal + "intercal" : MTMathAtom(type: .binaryOperator, value: "\u{22BA}"), + "barwedge" : MTMathAtom(type: .binaryOperator, value: "\u{22BC}"), + "veebar" : MTMathAtom(type: .binaryOperator, value: "\u{22BB}"), + "curlywedge" : MTMathAtom(type: .binaryOperator, value: "\u{22CF}"), + "curlyvee" : MTMathAtom(type: .binaryOperator, value: "\u{22CE}"), + "doublebarwedge" : MTMathAtom(type: .binaryOperator, value: "\u{2A5E}"), + "centerdot" : MTMathAtom(type: .binaryOperator, value: "\u{22C5}"), // alias for cdot + + // No limit operators + "log" : MTMathAtomFactory.operatorWithName( "log", limits: false), + "lg" : MTMathAtomFactory.operatorWithName( "lg", limits: false), + "ln" : MTMathAtomFactory.operatorWithName( "ln", limits: false), + "sin" : MTMathAtomFactory.operatorWithName( "sin", limits: false), + "arcsin" : MTMathAtomFactory.operatorWithName( "arcsin", limits: false), + "sinh" : MTMathAtomFactory.operatorWithName( "sinh", limits: false), + "cos" : MTMathAtomFactory.operatorWithName( "cos", limits: false), + "arccos" : MTMathAtomFactory.operatorWithName( "arccos", limits: false), + "cosh" : MTMathAtomFactory.operatorWithName( "cosh", limits: false), + "tan" : MTMathAtomFactory.operatorWithName( "tan", limits: false), + "arctan" : MTMathAtomFactory.operatorWithName( "arctan", limits: false), + "tanh" : MTMathAtomFactory.operatorWithName( "tanh", limits: false), + "cot" : MTMathAtomFactory.operatorWithName( "cot", limits: false), + "coth" : MTMathAtomFactory.operatorWithName( "coth", limits: false), + "sec" : MTMathAtomFactory.operatorWithName( "sec", limits: false), + "csc" : MTMathAtomFactory.operatorWithName( "csc", limits: false), + // Additional inverse trig functions + "arccot" : MTMathAtomFactory.operatorWithName( "arccot", limits: false), + "arcsec" : MTMathAtomFactory.operatorWithName( "arcsec", limits: false), + "arccsc" : MTMathAtomFactory.operatorWithName( "arccsc", limits: false), + // Additional hyperbolic functions + "sech" : MTMathAtomFactory.operatorWithName( "sech", limits: false), + "csch" : MTMathAtomFactory.operatorWithName( "csch", limits: false), + // Inverse hyperbolic functions + "arcsinh" : MTMathAtomFactory.operatorWithName( "arcsinh", limits: false), + "arccosh" : MTMathAtomFactory.operatorWithName( "arccosh", limits: false), + "arctanh" : MTMathAtomFactory.operatorWithName( "arctanh", limits: false), + "arccoth" : MTMathAtomFactory.operatorWithName( "arccoth", limits: false), + "arcsech" : MTMathAtomFactory.operatorWithName( "arcsech", limits: false), + "arccsch" : MTMathAtomFactory.operatorWithName( "arccsch", limits: false), + "arg" : MTMathAtomFactory.operatorWithName( "arg", limits: false), + "ker" : MTMathAtomFactory.operatorWithName( "ker", limits: false), + "dim" : MTMathAtomFactory.operatorWithName( "dim", limits: false), + "hom" : MTMathAtomFactory.operatorWithName( "hom", limits: false), + "exp" : MTMathAtomFactory.operatorWithName( "exp", limits: false), + "deg" : MTMathAtomFactory.operatorWithName( "deg", limits: false), + "mod" : MTMathAtomFactory.operatorWithName("mod", limits: false), + + // Limit operators + "lim" : MTMathAtomFactory.operatorWithName( "lim", limits: true), + "limsup" : MTMathAtomFactory.operatorWithName( "lim sup", limits: true), + "liminf" : MTMathAtomFactory.operatorWithName( "lim inf", limits: true), + "max" : MTMathAtomFactory.operatorWithName( "max", limits: true), + "min" : MTMathAtomFactory.operatorWithName( "min", limits: true), + "sup" : MTMathAtomFactory.operatorWithName( "sup", limits: true), + "inf" : MTMathAtomFactory.operatorWithName( "inf", limits: true), + "det" : MTMathAtomFactory.operatorWithName( "det", limits: true), + "Pr" : MTMathAtomFactory.operatorWithName( "Pr", limits: true), + "gcd" : MTMathAtomFactory.operatorWithName( "gcd", limits: true), + + // Large operators + "prod" : MTMathAtomFactory.operatorWithName( "\u{220F}", limits: true), + "coprod" : MTMathAtomFactory.operatorWithName( "\u{2210}", limits: true), + "sum" : MTMathAtomFactory.operatorWithName( "\u{2211}", limits: true), + "int" : MTMathAtomFactory.operatorWithName( "\u{222B}", limits: false), + "iint" : MTMathAtomFactory.operatorWithName( "\u{222C}", limits: false), + "iiint" : MTMathAtomFactory.operatorWithName( "\u{222D}", limits: false), + "iiiint" : MTMathAtomFactory.operatorWithName( "\u{2A0C}", limits: false), + "oint" : MTMathAtomFactory.operatorWithName( "\u{222E}", limits: false), + "bigwedge" : MTMathAtomFactory.operatorWithName( "\u{22C0}", limits: true), + "bigvee" : MTMathAtomFactory.operatorWithName( "\u{22C1}", limits: true), + "bigcap" : MTMathAtomFactory.operatorWithName( "\u{22C2}", limits: true), + "bigcup" : MTMathAtomFactory.operatorWithName( "\u{22C3}", limits: true), + "bigodot" : MTMathAtomFactory.operatorWithName( "\u{2A00}", limits: true), + "bigoplus" : MTMathAtomFactory.operatorWithName( "\u{2A01}", limits: true), + "bigotimes" : MTMathAtomFactory.operatorWithName( "\u{2A02}", limits: true), + "biguplus" : MTMathAtomFactory.operatorWithName( "\u{2A04}", limits: true), + "bigsqcup" : MTMathAtomFactory.operatorWithName( "\u{2A06}", limits: true), + + // Latex command characters + "{" : MTMathAtom(type: .open, value: "{"), + "}" : MTMathAtom(type: .close, value: "}"), + "$" : MTMathAtom(type: .ordinary, value: "$"), + "&" : MTMathAtom(type: .ordinary, value: "&"), + "#" : MTMathAtom(type: .ordinary, value: "#"), + "%" : MTMathAtom(type: .ordinary, value: "%"), + "_" : MTMathAtom(type: .ordinary, value: "_"), + " " : MTMathAtom(type: .ordinary, value: " "), + "backslash" : MTMathAtom(type: .ordinary, value: "\\"), + + // Punctuation + // Note: \colon is different from : which is a relation + "colon" : MTMathAtom(type: .punctuation, value: ":"), + "cdotp" : MTMathAtom(type: .punctuation, value: "\u{00B7}"), + + // Other symbols + "degree" : MTMathAtom(type: .ordinary, value: "\u{00B0}"), + "neg" : MTMathAtom(type: .ordinary, value: "\u{00AC}"), + "angstrom" : MTMathAtom(type: .ordinary, value: "\u{00C5}"), + "aa" : MTMathAtom(type: .ordinary, value: "\u{00E5}"), // NEW å + "ae" : MTMathAtom(type: .ordinary, value: "\u{00E6}"), // NEW æ + "o" : MTMathAtom(type: .ordinary, value: "\u{00F8}"), // NEW ø + "oe" : MTMathAtom(type: .ordinary, value: "\u{0153}"), // NEW œ + "ss" : MTMathAtom(type: .ordinary, value: "\u{00DF}"), // NEW ß + "cc" : MTMathAtom(type: .ordinary, value: "\u{00E7}"), // NEW ç + "CC" : MTMathAtom(type: .ordinary, value: "\u{00C7}"), // NEW Ç + "O" : MTMathAtom(type: .ordinary, value: "\u{00D8}"), // NEW Ø + "AE" : MTMathAtom(type: .ordinary, value: "\u{00C6}"), // NEW Æ + "OE" : MTMathAtom(type: .ordinary, value: "\u{0152}"), // NEW Œ + "|" : MTMathAtom(type: .ordinary, value: "\u{2016}"), + "vert" : MTMathAtom(type: .ordinary, value: "|"), + "ldots" : MTMathAtom(type: .ordinary, value: "\u{2026}"), + "prime" : MTMathAtom(type: .ordinary, value: "\u{2032}"), + "hbar" : MTMathAtom(type: .ordinary, value: "\u{210F}"), + "lbar" : MTMathAtom(type: .ordinary, value: "\u{019B}"), // NEW ƛ + "Im" : MTMathAtom(type: .ordinary, value: "\u{2111}"), + "ell" : MTMathAtom(type: .ordinary, value: "\u{2113}"), + "wp" : MTMathAtom(type: .ordinary, value: "\u{2118}"), + "Re" : MTMathAtom(type: .ordinary, value: "\u{211C}"), + "mho" : MTMathAtom(type: .ordinary, value: "\u{2127}"), + "aleph" : MTMathAtom(type: .ordinary, value: "\u{2135}"), + "beth" : MTMathAtom(type: .ordinary, value: "\u{2136}"), + "gimel" : MTMathAtom(type: .ordinary, value: "\u{2137}"), + "daleth" : MTMathAtom(type: .ordinary, value: "\u{2138}"), + "forall" : MTMathAtom(type: .ordinary, value: "\u{2200}"), + "exists" : MTMathAtom(type: .ordinary, value: "\u{2203}"), + "nexists" : MTMathAtom(type: .ordinary, value: "\u{2204}"), + "emptyset" : MTMathAtom(type: .ordinary, value: "\u{2205}"), + "varnothing" : MTMathAtom(type: .ordinary, value: "\u{2205}"), + "nabla" : MTMathAtom(type: .ordinary, value: "\u{2207}"), + "infty" : MTMathAtom(type: .ordinary, value: "\u{221E}"), + "angle" : MTMathAtom(type: .ordinary, value: "\u{2220}"), + "measuredangle" : MTMathAtom(type: .ordinary, value: "\u{2221}"), + "top" : MTMathAtom(type: .ordinary, value: "\u{22A4}"), + "bot" : MTMathAtom(type: .ordinary, value: "\u{22A5}"), + "vdots" : MTMathAtom(type: .ordinary, value: "\u{22EE}"), + "cdots" : MTMathAtom(type: .ordinary, value: "\u{22EF}"), + "ddots" : MTMathAtom(type: .ordinary, value: "\u{22F1}"), + "triangle" : MTMathAtom(type: .ordinary, value: "\u{25B3}"), + "Box" : MTMathAtom(type: .ordinary, value: "\u{25A1}"), + "imath" : MTMathAtom(type: .ordinary, value: "\u{0001D6A4}"), + "jmath" : MTMathAtom(type: .ordinary, value: "\u{0001D6A5}"), + "upquote" : MTMathAtom(type: .ordinary, value: "\u{0027}"), + "partial" : MTMathAtom(type: .ordinary, value: "\u{0001D715}"), + + // Spacing + "," : MTMathSpace(space: 3), + ">" : MTMathSpace(space: 4), + ";" : MTMathSpace(space: 5), + "!" : MTMathSpace(space: -3), + "quad" : MTMathSpace(space: 18), // quad = 1em = 18mu + "qquad" : MTMathSpace(space: 36), // qquad = 2em + + // Style + "displaystyle" : MTMathStyle(style: .display), + "textstyle" : MTMathStyle(style: .text), + "scriptstyle" : MTMathStyle(style: .script), + "scriptscriptstyle" : MTMathStyle(style: .scriptOfScript), + ] + + static var supportedAccentedCharacters: [Character: (String, String)] = [ + // Acute accents + "á": ("acute", "a"), "é": ("acute", "e"), "í": ("acute", "i"), + "ó": ("acute", "o"), "ú": ("acute", "u"), "ý": ("acute", "y"), + + // Grave accents + "à": ("grave", "a"), "è": ("grave", "e"), "ì": ("grave", "i"), + "ò": ("grave", "o"), "ù": ("grave", "u"), + + // Circumflex + "â": ("hat", "a"), "ê": ("hat", "e"), "î": ("hat", "i"), + "ĵ": ("hat", "j"), // j with circumflex (Esperanto) + "ô": ("hat", "o"), "û": ("hat", "u"), + + // Umlaut/dieresis + "ä": ("ddot", "a"), "ë": ("ddot", "e"), "ï": ("ddot", "i"), + "ö": ("ddot", "o"), "ü": ("ddot", "u"), "ÿ": ("ddot", "y"), + + // Tilde + "ã": ("tilde", "a"), "ñ": ("tilde", "n"), "õ": ("tilde", "o"), + + // Special characters + "ç": ("cc", ""), "ø": ("o", ""), "å": ("aa", ""), "æ": ("ae", ""), + "œ": ("oe", ""), "ß": ("ss", ""), + "'": ("upquote", ""), // this may be dangerous in math mode + + // Upper case variants + "Á": ("acute", "A"), "É": ("acute", "E"), "Í": ("acute", "I"), + "Ó": ("acute", "O"), "Ú": ("acute", "U"), "Ý": ("acute", "Y"), + "À": ("grave", "A"), "È": ("grave", "E"), "Ì": ("grave", "I"), + "Ò": ("grave", "O"), "Ù": ("grave", "U"), + "Â": ("hat", "A"), "Ê": ("hat", "E"), "Î": ("hat", "I"), + "Ô": ("hat", "O"), "Û": ("hat", "U"), + "Ä": ("ddot", "A"), "Ë": ("ddot", "E"), "Ï": ("ddot", "I"), + "Ö": ("ddot", "O"), "Ü": ("ddot", "U"), + "Ã": ("tilde", "A"), "Ñ": ("tilde", "N"), "Õ": ("tilde", "O"), + "Ç": ("CC", ""), + "Ø": ("O", ""), + "Å": ("AA", ""), + "Æ": ("AE", ""), + "Œ": ("OE", ""), + ] + + private static let textToLatexLock = NSLock() + static var _textToLatexSymbolName: [String: String]? = nil + public static var textToLatexSymbolName: [String: String] { + get { + if self._textToLatexSymbolName == nil { + var output = [String: String]() + for (key, atom) in Self.supportedLatexSymbols { + if atom.nucleus.count == 0 { + continue + } + if let existingText = output[atom.nucleus] { + // If there are 2 key for the same symbol, choose one deterministically. + if key.count > existingText.count { + // Keep the shorter command + continue + } else if key.count == existingText.count { + // If the length is the same, keep the alphabetically first + if key.compare(existingText) == .orderedDescending { + continue + } + } + } + output[atom.nucleus] = key + } + // protect lazily loading table in a multi-thread concurrent environment + textToLatexLock.lock() + defer { textToLatexLock.unlock() } + if self._textToLatexSymbolName == nil { + self._textToLatexSymbolName = output + } + } + return self._textToLatexSymbolName! + } + // make textToLatexSymbolName readonly (allows internal load) + // entries can be lazily added with NSLock protection. + // set { + // self._textToLatexSymbolName = newValue + // } + } + + // public static let sharedInstance = MTMathAtomFactory() + + static let fontStyles : [String: MTFontStyle] = [ + "mathnormal" : .defaultStyle, + "mathrm": .roman, + "textrm": .roman, + "rm": .roman, + "mathbf": .bold, + "bf": .bold, + "textbf": .bold, + "mathcal": .caligraphic, + "cal": .caligraphic, + "mathtt": .typewriter, + "texttt": .typewriter, + "mathit": .italic, + "textit": .italic, + "mit": .italic, + "mathsf": .sansSerif, + "textsf": .sansSerif, + "mathfrak": .fraktur, + "frak": .fraktur, + "mathbb": .blackboard, + "mathbfit": .boldItalic, + "bm": .boldItalic, + "boldsymbol": .boldItalic, + "text": .roman, + // Note: operatorname is handled specially in MTMathListBuilder to create proper operators + ] + + public static func fontStyleWithName(_ fontName:String) -> MTFontStyle? { + fontStyles[fontName] + } + + public static func fontNameForStyle(_ fontStyle:MTFontStyle) -> String { + switch fontStyle { + case .defaultStyle: return "mathnormal" + case .roman: return "mathrm" + case .bold: return "mathbf" + case .fraktur: return "mathfrak" + case .caligraphic: return "mathcal" + case .italic: return "mathit" + case .sansSerif: return "mathsf" + case .blackboard: return "mathbb" + case .typewriter: return "mathtt" + case .boldItalic: return "bm" + } + } + + /// Returns an atom for the multiplication sign (i.e., \times or "*") + public static func times() -> MTMathAtom { + MTMathAtom(type: .binaryOperator, value: UnicodeSymbol.multiplication) + } + + /// Returns an atom for the division sign (i.e., \div or "/") + public static func divide() -> MTMathAtom { + MTMathAtom(type: .binaryOperator, value: UnicodeSymbol.division) + } + + /// Returns an atom which is a placeholder square + public static func placeholder() -> MTMathAtom { + MTMathAtom(type: .placeholder, value: UnicodeSymbol.whiteSquare) + } + + /** Returns a fraction with a placeholder for the numerator and denominator */ + public static func placeholderFraction() -> MTFraction { + let frac = MTFraction() + frac.numerator = MTMathList() + frac.numerator?.add(placeholder()) + frac.denominator = MTMathList() + frac.denominator?.add(placeholder()) + return frac + } + + /** Returns a square root with a placeholder as the radicand. */ + public static func placeholderSquareRoot() -> MTRadical { + let rad = MTRadical() + rad.radicand = MTMathList() + rad.radicand?.add(placeholder()) + return rad + } + + /** Returns a radical with a placeholder as the radicand. */ + public static func placeholderRadical() -> MTRadical { + let rad = MTRadical() + rad.radicand = MTMathList() + rad.degree = MTMathList() + rad.radicand?.add(placeholder()) + rad.degree?.add(placeholder()) + return rad + } + + /// Latin Small Letter Dotless I (U+0131) - base character that can be styled + private static let dotlessI: Character = "\u{0131}" + /// Latin Small Letter Dotless J (U+0237) - base character that can be styled + private static let dotlessJ: Character = "\u{0237}" + + public static func atom(fromAccentedCharacter ch: Character) -> MTMathAtom? { + if let symbol = supportedAccentedCharacters[ch] { + // first handle any special characters + if let atom = atom(forLatexSymbol: symbol.0) { + return atom + } + + if let accent = MTMathAtomFactory.accent(withName: symbol.0) { + // The command is an accent + let list = MTMathList() + let baseChar = Array(symbol.1)[0] + // Use dotless variants for 'i' and 'j' to avoid double dots with accents. + // We use the base Latin dotless characters (U+0131, U+0237) rather than + // the pre-styled mathematical italic versions (U+1D6A4, U+1D6A5) so that + // font style (roman, bold, etc.) is properly applied during rendering. + if baseChar == "i" { + list.add(MTMathAtom(type: .ordinary, value: String(dotlessI))) + } else if baseChar == "j" { + list.add(MTMathAtom(type: .ordinary, value: String(dotlessJ))) + } else { + list.add(atom(forCharacter: baseChar)) + } + accent.innerList = list + return accent + } + } + return nil + } + + // MARK: - + /** Gets the atom with the right type for the given character. If an atom + cannot be determined for a given character this returns nil. + This function follows latex conventions for assigning types to the atoms. + The following characters are not supported and will return nil: + - Any non-ascii character. + - Any control character or spaces (< 0x21) + - Latex control chars: $ % # & ~ ' + - Chars with special meaning in latex: ^ _ { } \ + All other characters, including those with accents, will have a non-nil atom returned. + */ + public static func atom(forCharacter ch: Character) -> MTMathAtom? { + let chStr = String(ch) + switch chStr { + case "\u{0410}"..."\u{044F}": + // Cyrillic alphabet + return MTMathAtom(type: .ordinary, value: chStr) + case _ where supportedAccentedCharacters.keys.contains(ch): + // support for áéíóúýàèìòùâêîôûäëïöüÿãñõçøåæœß'ÁÉÍÓÚÝÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÃÑÕÇØÅÆŒ + return atom(fromAccentedCharacter: ch) + case _ where ch.utf32Char < 0x0021 || ch.utf32Char > 0x007E: + return nil + case "$", "%", "#", "&", "~", "\'", "^", "_", "{", "}", "\\": + return nil + case "(", "[": + return MTMathAtom(type: .open, value: chStr) + case ")", "]", "!", "?": + return MTMathAtom(type: .close, value: chStr) + case ",", ";": + return MTMathAtom(type: .punctuation, value: chStr) + case "=", ">", "<": + return MTMathAtom(type: .relation, value: chStr) + case ":": + // Math colon is ratio. Regular colon is \colon + return MTMathAtom(type: .relation, value: "\u{2236}") + case "-": + return MTMathAtom(type: .binaryOperator, value: "\u{2212}") + case "+", "*": + return MTMathAtom(type: .binaryOperator, value: chStr) + case ".", "0"..."9": + return MTMathAtom(type: .number, value: chStr) + case "a"..."z", "A"..."Z": + return MTMathAtom(type: .variable, value: chStr) + case "\"", "/", "@", "`", "|": + return MTMathAtom(type: .ordinary, value: chStr) + default: + assertionFailure("Unknown ASCII character '\(ch)'. Should have been handled earlier.") + return nil + } + } + + /** Returns a `MTMathList` with one atom per character in the given string. This function + does not do any LaTeX conversion or interpretation. It simply uses `atom(forCharacter:)` to + convert the characters to atoms. Any character that cannot be converted is ignored. */ + public static func atomList(for string: String) -> MTMathList { + let list = MTMathList() + for character in string { + if let newAtom = atom(forCharacter: character) { + list.add(newAtom) + } + } + return list + } + + /** Returns an atom with the right type for a given latex symbol (e.g. theta) + If the latex symbol is unknown this will return nil. This supports LaTeX aliases as well. + */ + public static func atom(forLatexSymbol name: String) -> MTMathAtom? { + var name = name + if let canonicalName = aliases[name] { + name = canonicalName + } + if let atom = supportedLatexSymbols[name] { + return atom.copy() + } + return nil + } + + /** Finds the name of the LaTeX symbol name for the given atom. This function is a reverse + of the above function. If no latex symbol name corresponds to the atom, then this returns `nil` + If nucleus of the atom is empty, then this will return `nil`. + Note: This is not an exact reverse of the above in the case of aliases. If an LaTeX alias + points to a given symbol, then this function will return the original symbol name and not the + alias. + Note: This function does not convert MathSpaces to latex command names either. + */ + public static func latexSymbolName(for atom: MTMathAtom) -> String? { + guard !atom.nucleus.isEmpty else { return nil } + return Self.textToLatexSymbolName[atom.nucleus] + } + + /** Define a latex symbol for rendering. This function allows defining custom symbols that are + not already present in the default set, or override existing symbols with new meaning. + e.g. to define a symbol for "lcm" one can call: + `MTMathAtomFactory.add(latexSymbol:"lcm", value:MTMathAtomFactory.operatorWithName("lcm", limits: false))` */ + public static func add(latexSymbol name: String, value: MTMathAtom) { + let _ = Self.textToLatexSymbolName + // above force textToLatexSymbolName to initialise first, _textToLatexSymbolName also initialized. + // protect lazily loading table in a multi-thread concurrent environment + textToLatexLock.lock() + defer { textToLatexLock.unlock() } + supportedLatexSymbols[name] = value + Self._textToLatexSymbolName?[value.nucleus] = name + } + + /** Returns a large opertor for the given name. If limits is true, limits are set up on + the operator and displayed differently. */ + public static func operatorWithName(_ name: String, limits: Bool) -> MTLargeOperator { + MTLargeOperator(value: name, limits: limits) + } + + /** Returns an accent with the given name. The name of the accent is the LaTeX name + such as `grave`, `hat` etc. If the name is not a recognized accent name, this + returns nil. The `innerList` of the returned `MTAccent` is nil. + */ + public static func accent(withName name: String) -> MTAccent? { + if let accentValue = accents[name] { + let accent = MTAccent(value: accentValue) + // Mark stretchy arrow accents (\overleftarrow, \overrightarrow, \overleftrightarrow) + // These should stretch to match content width + // \vec is NOT stretchy - it should use a small fixed-size arrow + let stretchyAccents: Set = ["overleftarrow", "overrightarrow", "overleftrightarrow"] + accent.isStretchy = stretchyAccents.contains(name) + + // Mark wide accents (\widehat, \widetilde, \widecheck) + // These should stretch horizontally to cover content width + // \hat, \tilde, \check are NOT wide - they use fixed-size accents + let wideAccents: Set = ["widehat", "widetilde", "widecheck"] + accent.isWide = wideAccents.contains(name) + + return accent + } + return nil + } + + /** Returns the accent name for the given accent. This is the reverse of the above + function. */ + public static func accentName(_ accent: MTAccent) -> String? { + accentValueToName[accent.nucleus] + } + + /** Creates a new boundary atom for the given delimiter name. If the delimiter name + is not recognized it returns nil. A delimiter name can be a single character such + as '(' or a latex command such as 'uparrow'. + @note In order to distinguish between the delimiter '|' and the delimiter '\|' the delimiter '\|' + the has been renamed to '||'. + */ + public static func boundary(forDelimiter name: String) -> MTMathAtom? { + if let delimValue = Self.delimiters[name] { + return MTMathAtom(type: .boundary, value: delimValue) + } + return nil + } + + /** Returns the delimiter name for a boundary atom. This is a reverse of the above function. + If the atom is not a boundary atom or if the delimiter value is unknown this returns `nil`. + @note This is not an exact reverse of the above function. Some delimiters have two names (e.g. + `<` and `langle`) and this function always returns the shorter name. + */ + public static func getDelimiterName(of boundary: MTMathAtom) -> String? { + guard boundary.type == .boundary else { return nil } + return Self.delimValueToName[boundary.nucleus] + } + + /** Returns a fraction with the given numerator and denominator. */ + public static func fraction(withNumerator num: MTMathList, denominator denom: MTMathList) -> MTFraction { + let frac = MTFraction() + frac.numerator = num + frac.denominator = denom + return frac + } + + public static func mathListForCharacters(_ chars:String) -> MTMathList? { + let list = MTMathList() + for ch in chars { + if let atom = self.atom(forCharacter: ch) { + list.add(atom) + } + } + return list + } + + /** Simplification of above function when numerator and denominator are simple strings. + This function converts the strings to a `MTFraction`. */ + public static func fraction(withNumeratorString numStr: String, denominatorString denomStr: String) -> MTFraction { + let num = Self.atomList(for: numStr) + let denom = Self.atomList(for: denomStr) + return Self.fraction(withNumerator: num, denominator: denom) + } + + + static let matrixEnvs = [ + "matrix": [], + "pmatrix": ["(", ")"], + "bmatrix": ["[", "]"], + "Bmatrix": ["{", "}"], + "vmatrix": ["vert", "vert"], + "Vmatrix": ["Vert", "Vert"], + "smallmatrix": [], + // Starred versions with optional alignment + "matrix*": [], + "pmatrix*": ["(", ")"], + "bmatrix*": ["[", "]"], + "Bmatrix*": ["{", "}"], + "vmatrix*": ["vert", "vert"], + "Vmatrix*": ["Vert", "Vert"] + ] + + /** Builds a table for a given environment with the given rows. Returns a `MTMathAtom` containing the + table and any other atoms necessary for the given environment. Returns nil and sets error + if the table could not be built. + @param env The environment to use to build the table. If the env is nil, then the default table is built. + @note The reason this function returns a `MTMathAtom` and not a `MTMathTable` is because some + matrix environments are have builtin delimiters added to the table and hence are returned as inner atoms. + + Column constraints by environment (matching KaTeX behavior): + - `aligned`, `eqalign`: Any number of columns (1, 2, 3, 4+) with r-l-r-l alignment pattern + - `split`: Maximum 2 columns with r-l alignment + - `gather`, `displaylines`: Exactly 1 column, centered + - `cases`: 1 or 2 columns, left-aligned + - `eqnarray`: Exactly 3 columns with r-c-l alignment + */ + public static func table(withEnvironment env: String?, alignment: MTColumnAlignment? = nil, rows: [[MTMathList]], error:inout NSError?) -> MTMathAtom? { + let table = MTMathTable(environment: env) + + for i in 0.. 2 { + let message = "split environment can have at most 2 columns" + if error == nil { + error = NSError(domain: MTParseError, code: MTParseErrors.invalidNumColumns.rawValue, userInfo: [NSLocalizedDescriptionKey:message]) + } + return nil + } + + let spacer = MTMathAtom(type: .ordinary, value: "") + + // Add spacer at beginning of odd-indexed columns (1, 3, 5, ...) + // This matches KaTeX behavior for binary operator spacing + for i in 0.. CGSize { + CGSize(width: displayList.width + contentInsets.left + contentInsets.right, + height: displayList.ascent + displayList.descent + contentInsets.top + contentInsets.bottom) + } + public func asImage() -> (NSError?, MTImage?) { + func layoutImage(size: CGSize, displayList: MTMathListDisplay) { + var textX = CGFloat(0) + switch self.textAlignment { + case .left: textX = contentInsets.left + case .center: textX = (size.width - contentInsets.left - contentInsets.right - displayList.width) / 2 + contentInsets.left + case .right: textX = size.width - displayList.width - contentInsets.right + } + let availableHeight = size.height - contentInsets.bottom - contentInsets.top + + // center things vertically + var height = displayList.ascent + displayList.descent + if height < fontSize/2 { + height = fontSize/2 // set height to half the font size + } + let textY = (availableHeight - height) / 2 + displayList.descent + contentInsets.bottom + displayList.position = CGPoint(x: textX, y: textY) + } + + var error: NSError? + guard let mathList = MTMathListBuilder.build(fromString: latex, error: &error), error == nil, + let displayList = MTTypesetter.createLineForMathList(mathList, font: font, style: currentStyle) else { + return (error, nil) + } + + intrinsicContentSize = intrinsicContentSize(displayList) + displayList.textColor = textColor + + let size = intrinsicContentSize + layoutImage(size: size, displayList: displayList) + + #if os(iOS) || os(visionOS) + let renderer = UIGraphicsImageRenderer(size: size) + let image = renderer.image { rendererContext in + rendererContext.cgContext.saveGState() + rendererContext.cgContext.concatenate(.flippedVertically(size.height)) + displayList.draw(rendererContext.cgContext) + rendererContext.cgContext.restoreGState() + } + return (nil, image) + #endif + #if os(macOS) + let image = NSImage(size: size, flipped: false) { bounds in + guard let context = NSGraphicsContext.current?.cgContext else { return false } + context.saveGState() + displayList.draw(context) + context.restoreGState() + return true + } + return (nil, image) + #endif + } +} +private extension CGAffineTransform { + static func flippedVertically(_ height: CGFloat) -> CGAffineTransform { + var transform = CGAffineTransform(scaleX: 1, y: -1) + transform = transform.translatedBy(x: 0, y: -height) + return transform + } +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTMathList.swift b/third-party/SwiftMath/Sources/MathRender/MTMathList.swift new file mode 100644 index 0000000000..9feb02db5c --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTMathList.swift @@ -0,0 +1,1058 @@ +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by Kostub Deshmukh. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation + +/** + The type of atom in a `MTMathList`. + + The type of the atom determines how it is rendered, and spacing between the atoms. + */ +public enum MTMathAtomType: Int, CustomStringConvertible, Comparable { + /// A number or text in ordinary format - Ord in TeX + case ordinary = 1 + /// A number - Does not exist in TeX + case number + /// A variable (i.e. text in italic format) - Does not exist in TeX + case variable + /// A large operator such as (sin/cos, integral etc.) - Op in TeX + case largeOperator + /// A binary operator - Bin in TeX + case binaryOperator + /// A unary operator - Does not exist in TeX. + case unaryOperator + /// A relation, e.g. = > < etc. - Rel in TeX + case relation + /// Open brackets - Open in TeX + case open + /// Close brackets - Close in TeX + case close + /// A fraction e.g 1/2 - generalized fraction node in TeX + case fraction + /// A radical operator e.g. sqrt(2) + case radical + /// Punctuation such as , - Punct in TeX + case punctuation + /// A placeholder square for future input. Does not exist in TeX + case placeholder + /// An inner atom, i.e. an embedded math list - Inner in TeX + case inner + /// An underlined atom - Under in TeX + case underline + /// An overlined atom - Over in TeX + case overline + /// An accented atom - Accent in TeX + case accent + + // Atoms after this point do not support subscripts or superscripts + + /// A left atom - Left & Right in TeX. We don't need two since we track boundaries separately. + case boundary = 101 + + // Atoms after this are non-math TeX nodes that are still useful in math mode. They do not have + // the usual structure. + + /// Spacing between math atoms. This denotes both glue and kern for TeX. We do not + /// distinguish between glue and kern. + case space = 201 + + /// Denotes style changes during rendering. + case style + case color + case textcolor + case colorBox + + // Atoms after this point are not part of TeX and do not have the usual structure. + + /// An table atom. This atom does not exist in TeX. It is equivalent to the TeX command + /// halign which is handled outside of the TeX math rendering engine. We bring it into our + /// math typesetting to handle matrices and other tables. + case table = 1001 + + func isNotBinaryOperator() -> Bool { + switch self { + case .binaryOperator, .relation, .open, .punctuation, .largeOperator: return true + default: return false + } + } + + func isScriptAllowed() -> Bool { self < .boundary } + + // we want string representations to be capitalized + public var description: String { + switch self { + case .ordinary: return "Ordinary" + case .number: return "Number" + case .variable: return "Variable" + case .largeOperator: return "Large Operator" + case .binaryOperator: return "Binary Operator" + case .unaryOperator: return "Unary Operator" + case .relation: return "Relation" + case .open: return "Open" + case .close: return "Close" + case .fraction: return "Fraction" + case .radical: return "Radical" + case .punctuation: return "Punctuation" + case .placeholder: return "Placeholder" + case .inner: return "Inner" + case .underline: return "Underline" + case .overline: return "Overline" + case .accent: return "Accent" + case .boundary: return "Boundary" + case .space: return "Space" + case .style: return "Style" + case .color: return "Color" + case .textcolor: return "TextColor" + case .colorBox: return "Colorbox" + case .table: return "Table" + } + } + + // comparable support + public static func < (lhs: MTMathAtomType, rhs: MTMathAtomType) -> Bool { lhs.rawValue < rhs.rawValue } +} + +/** + The font style of a character. + + The fontstyle of the atom determines what style the character is rendered in. This only applies to atoms + of type kMTMathAtomVariable and kMTMathAtomNumber. None of the other atom types change their font style. + */ +public enum MTFontStyle:Int { + /// The default latex rendering style. i.e. variables are italic and numbers are roman. + case defaultStyle = 0, + /// Roman font style i.e. \mathrm + roman, + /// Bold font style i.e. \mathbf + bold, + /// Caligraphic font style i.e. \mathcal + caligraphic, + /// Typewriter (monospace) style i.e. \mathtt + typewriter, + /// Italic style i.e. \mathit + italic, + /// San-serif font i.e. \mathss + sansSerif, + /// Fractur font i.e \mathfrak + fraktur, + /// Blackboard font i.e. \mathbb + blackboard, + /// Bold italic + boldItalic +} + +// MARK: - MTMathAtom + +/** A `MTMathAtom` is the basic unit of a math list. Each atom represents a single character + or mathematical operator in a list. However certain atoms can represent more complex structures + such as fractions and radicals. Each atom has a type which determines how the atom is rendered and + a nucleus. The nucleus contains the character(s) that need to be rendered. However the nucleus may + be empty for certain types of atoms. An atom has an optional subscript or superscript which represents + the subscript or superscript that is to be rendered. + + Certain types of atoms inherit from `MTMathAtom` and may have additional fields. + */ +public class MTMathAtom: NSObject { + /** The type of the atom. */ + public var type = MTMathAtomType.ordinary + /** An optional subscript. */ + public var subScript: MTMathList? { + didSet { + if subScript != nil && !self.isScriptAllowed() { + subScript = nil + NSException(name: NSExceptionName(rawValue: "Error"), reason: "Subscripts not allowed for atom of type \(self.type)").raise() + } + } + } + /** An optional superscript. */ + public var superScript: MTMathList? { + didSet { + if superScript != nil && !self.isScriptAllowed() { + superScript = nil + NSException(name: NSExceptionName(rawValue: "Error"), reason: "Superscripts not allowed for atom of type \(self.type)").raise() + } + } + } + + /** The nucleus of the atom. */ + public var nucleus: String = "" + + /// The index range in the MTMathList this MTMathAtom tracks. This is used by the finalizing and preprocessing steps + /// which fuse MTMathAtoms to track the position of the current MTMathAtom in the original list. + public var indexRange = NSRange(location: 0, length: 0) // indexRange in list that this atom tracks: + + /** The font style to be used for the atom. */ + var fontStyle: MTFontStyle = .defaultStyle + + /// If this atom was formed by fusion of multiple atoms, then this stores the list of atoms that were fused to create this one. + /// This is used in the finalizing and preprocessing steps. + var fusedAtoms = [MTMathAtom]() + + init(_ atom:MTMathAtom?) { + guard let atom = atom else { return } + self.type = atom.type + self.nucleus = atom.nucleus + self.subScript = MTMathList(atom.subScript) + self.superScript = MTMathList(atom.superScript) + self.indexRange = atom.indexRange + self.fontStyle = atom.fontStyle + self.fusedAtoms = atom.fusedAtoms + } + + override init() { } + + /// Factory function to create an atom with a given type and value. + /// - parameter type: The type of the atom to instantiate. + /// - parameter value: The value of the atoms nucleus. The value is ignored for fractions and radicals. + init(type:MTMathAtomType, value:String) { + self.type = type + self.nucleus = type == .radical ? "" : value + } + + /// Returns a copy of `self`. + public func copy() -> MTMathAtom { + switch self.type { + case .largeOperator: + return MTLargeOperator(self as? MTLargeOperator) + case .fraction: + return MTFraction(self as? MTFraction) + case .radical: + return MTRadical(self as? MTRadical) + case .style: + return MTMathStyle(self as? MTMathStyle) + case .inner: + return MTInner(self as? MTInner) + case .underline: + return MTUnderLine(self as? MTUnderLine) + case .overline: + return MTOverLine(self as? MTOverLine) + case .accent: + return MTAccent(self as? MTAccent) + case .space: + return MTMathSpace(self as? MTMathSpace) + case .color: + return MTMathColor(self as? MTMathColor) + case .textcolor: + return MTMathTextColor(self as? MTMathTextColor) + case .colorBox: + return MTMathColorbox(self as? MTMathColorbox) + case .table: + return MTMathTable(self as! MTMathTable) + default: + return MTMathAtom(self) + } + } + + public override var description: String { + var string = "" + string += self.nucleus + if self.superScript != nil { + string += "^{\(self.superScript!.description)}" + } + if self.subScript != nil { + string += "_{\(self.subScript!.description)}" + } + return string + } + + /// Returns a finalized copy of the atom + public var finalized: MTMathAtom { + let finalized : MTMathAtom = self.copy() + finalized.superScript = finalized.superScript?.finalized + finalized.subScript = finalized.subScript?.finalized + return finalized + } + + public var string:String { + var str = self.nucleus + if let superScript = self.superScript { + str.append("^{\(superScript.string)}") + } + if let subScript = self.subScript { + str.append("_{\(subScript.string)}") + } + return str + } + + // Fuse the given atom with this one by combining their nucleii. + func fuse(with atom: MTMathAtom) { + assert(self.subScript == nil, "Cannot fuse into an atom which has a subscript: \(self)"); + assert(self.superScript == nil, "Cannot fuse into an atom which has a superscript: \(self)"); + assert(atom.type == self.type, "Only atoms of the same type can be fused. \(self), \(atom)"); + guard self.subScript == nil, self.superScript == nil, self.type == atom.type + else { return } + + // Update the fused atoms list + if self.fusedAtoms.isEmpty { + self.fusedAtoms.append(MTMathAtom(self)) + } + if atom.fusedAtoms.count > 0 { + self.fusedAtoms.append(contentsOf: atom.fusedAtoms) + } else { + self.fusedAtoms.append(atom) + } + + // Update nucleus: + self.nucleus += atom.nucleus + + // Update range: + self.indexRange.length += atom.indexRange.length + + // Update super/subscript: + self.superScript = atom.superScript + self.subScript = atom.subScript + } + + /** Returns true if this atom allows scripts (sub or super). */ + func isScriptAllowed() -> Bool { self.type.isScriptAllowed() } + + func isNotBinaryOperator() -> Bool { self.type.isNotBinaryOperator() } + +} + +func isNotBinaryOperator(_ prevNode:MTMathAtom?) -> Bool { + guard let prevNode = prevNode else { return true } + return prevNode.type.isNotBinaryOperator() +} + +// MARK: - MTFraction + +public class MTFraction: MTMathAtom { + public var hasRule: Bool = true + public var leftDelimiter = "" + public var rightDelimiter = "" + public var numerator: MTMathList? + public var denominator: MTMathList? + + // Continued fraction properties + public var isContinuedFraction: Bool = false + public var alignment: String = "c" // "l", "r", "c" for left, right, center + + init(_ frac: MTFraction?) { + super.init(frac) + self.type = .fraction + if let frac = frac { + self.numerator = MTMathList(frac.numerator) + self.denominator = MTMathList(frac.denominator) + self.hasRule = frac.hasRule + self.leftDelimiter = frac.leftDelimiter + self.rightDelimiter = frac.rightDelimiter + self.isContinuedFraction = frac.isContinuedFraction + self.alignment = frac.alignment + } + } + + init(hasRule rule:Bool = true) { + super.init() + self.type = .fraction + self.hasRule = rule + } + + override public var description: String { + var string = self.hasRule ? "\\frac" : "\\atop" + if !self.leftDelimiter.isEmpty { + string += "[\(self.leftDelimiter)]" + } + if !self.rightDelimiter.isEmpty { + string += "[\(self.rightDelimiter)]" + } + string += "{\(self.numerator?.description ?? "placeholder")}{\(self.denominator?.description ?? "placeholder")}" + if self.superScript != nil { + string += "^{\(self.superScript!.description)}" + } + if self.subScript != nil { + string += "_{\(self.subScript!.description)}" + } + return string + } + + override public var finalized: MTMathAtom { + let newFrac = super.finalized as! MTFraction + newFrac.numerator = newFrac.numerator?.finalized + newFrac.denominator = newFrac.denominator?.finalized + return newFrac + } + +} + +// MARK: - MTRadical +/** An atom of type radical (square root). */ +public class MTRadical: MTMathAtom { + /// Denotes the term under the square root sign + public var radicand: MTMathList? + + /// Denotes the degree of the radical, i.e. the value to the top left of the radical sign + /// This can be null if there is no degree. + public var degree: MTMathList? + + init(_ rad:MTRadical?) { + super.init(rad) + self.type = .radical + self.radicand = MTMathList(rad?.radicand) + self.degree = MTMathList(rad?.degree) + self.nucleus = "" + } + + override init() { + super.init() + self.type = .radical + self.nucleus = "" + } + + override public var description: String { + var string = "\\sqrt" + if self.degree != nil { + string += "[\(self.degree!.description)]" + } + if self.radicand != nil { + string += "{\(self.radicand?.description ?? "placeholder")}" + } + if self.superScript != nil { + string += "^{\(self.superScript!.description)}" + } + if self.subScript != nil { + string += "_{\(self.subScript!.description)}" + } + return string + } + + override public var finalized: MTMathAtom { + let newRad = super.finalized as! MTRadical + newRad.radicand = newRad.radicand?.finalized + newRad.degree = newRad.degree?.finalized + return newRad + } +} + +// MARK: - MTLargeOperator +/** A `MTMathAtom` of type `kMTMathAtom.largeOperator`. */ +public class MTLargeOperator: MTMathAtom { + + /** Indicates whether the limits (if present) should be displayed + above and below the operator in display mode. If limits is false + then the limits (if present) are displayed like a regular subscript/superscript. + */ + public var limits: Bool = false + + init(_ op:MTLargeOperator?) { + super.init(op) + self.type = .largeOperator + self.limits = op!.limits + } + + init(value: String, limits: Bool) { + super.init(type: .largeOperator, value: value) + self.limits = limits + } +} + +// MARK: - MTInner +/** An inner atom. This denotes an atom which contains a math list inside it. An inner atom + has optional boundaries. Note: Only one boundary may be present, it is not required to have + both. */ +public class MTInner: MTMathAtom { + /// The inner math list + public var innerList: MTMathList? + /// The left boundary atom. This must be a node of type kMTMathAtomBoundary + public var leftBoundary: MTMathAtom? { + didSet { + if let left = leftBoundary, left.type != .boundary { + leftBoundary = nil + NSException(name: NSExceptionName(rawValue: "Error"), reason: "Left boundary must be of type .boundary").raise() + } + } + } + /// The right boundary atom. This must be a node of type kMTMathAtomBoundary + public var rightBoundary: MTMathAtom? { + didSet { + if let right = rightBoundary, right.type != .boundary { + rightBoundary = nil + NSException(name: NSExceptionName(rawValue: "Error"), reason: "Right boundary must be of type .boundary").raise() + } + } + } + + /// Optional explicit delimiter height (in points). When set, this overrides the automatic + /// delimiter sizing based on inner content. Used by \big, \Big, \bigg, \Bigg commands. + public var delimiterHeight: CGFloat? + + init(_ inner:MTInner?) { + super.init(inner) + self.type = .inner + self.innerList = MTMathList(inner?.innerList) + self.leftBoundary = MTMathAtom(inner?.leftBoundary) + self.rightBoundary = MTMathAtom(inner?.rightBoundary) + self.delimiterHeight = inner?.delimiterHeight + } + + override init() { + super.init() + self.type = .inner + } + + override public var description: String { + var string = "\\inner" + if self.leftBoundary != nil { + string += "[\(self.leftBoundary!.nucleus)]" + } + string += "{\(self.innerList!.description)}" + if self.rightBoundary != nil { + string += "[\(self.rightBoundary!.nucleus)]" + } + if self.superScript != nil { + string += "^{\(self.superScript!.description)}" + } + if self.subScript != nil { + string += "_{\(self.subScript!.description)}" + } + return string + } + + override public var finalized: MTMathAtom { + let newInner = super.finalized as! MTInner + newInner.innerList = newInner.innerList?.finalized + return newInner + } +} + +// MARK: - MTOverLIne +/** An atom with a line over the contained math list. */ +public class MTOverLine: MTMathAtom { + public var innerList: MTMathList? + + override public var finalized: MTMathAtom { + let newOverline = MTOverLine(self) + newOverline.innerList = newOverline.innerList?.finalized + return newOverline + } + + init(_ over: MTOverLine?) { + super.init(over) + self.type = .overline + self.innerList = MTMathList(over!.innerList) + } + + override init() { + super.init() + self.type = .overline + } +} + +// MARK: - MTUnderLine +/** An atom with a line under the contained math list. */ +public class MTUnderLine: MTMathAtom { + public var innerList: MTMathList? + + override public var finalized: MTMathAtom { + let newUnderline = super.finalized as! MTUnderLine + newUnderline.innerList = newUnderline.innerList?.finalized + return newUnderline + } + + init(_ under: MTUnderLine?) { + super.init(under) + self.type = .underline + self.innerList = MTMathList(under?.innerList) + } + + override init() { + super.init() + self.type = .underline + } +} + +// MARK: - MTAccent + +public class MTAccent: MTMathAtom { + public var innerList: MTMathList? + /// Indicates if this accent should use stretchy arrow behavior (for \overrightarrow, etc.) + /// vs short accent behavior (for \vec). Only applies to arrow accents. + public var isStretchy: Bool = false + /// Indicates if this accent should use wide stretching behavior (for \widehat, \widetilde) + /// vs regular fixed-size accent behavior (for \hat, \tilde). + public var isWide: Bool = false + + override public var finalized: MTMathAtom { + let newAccent = super.finalized as! MTAccent + newAccent.innerList = newAccent.innerList?.finalized + newAccent.isStretchy = self.isStretchy + newAccent.isWide = self.isWide + return newAccent + } + + init(_ accent: MTAccent?) { + super.init(accent) + self.type = .accent + self.innerList = MTMathList(accent?.innerList) + self.isStretchy = accent?.isStretchy ?? false + self.isWide = accent?.isWide ?? false + } + + init(value: String) { + super.init() + self.type = .accent + self.nucleus = value + } +} + +// MARK: - MTMathSpace +/** An atom representing space. + Note: None of the usual fields of the `MTMathAtom` apply even though this + class inherits from `MTMathAtom`. i.e. it is meaningless to have a value + in the nucleus, subscript or superscript fields. */ +public class MTMathSpace: MTMathAtom { + /** The amount of space represented by this object in mu units. */ + public var space: CGFloat = 0 + + /// Creates a new `MTMathSpace` with the given spacing. + /// - parameter space: The amount of space in mu units. + init(_ space: MTMathSpace?) { + super.init(space) + self.type = .space + self.space = space?.space ?? 0 + } + + init(space:CGFloat) { + super.init() + self.type = .space + self.space = space + } +} + +/** + Styling of a line of math + */ +public enum MTLineStyle:Int, Comparable { + /// Display style + case display + /// Text style (inline) + case text + /// Script style (for sub/super scripts) + case script + /// Script script style (for scripts of scripts) + case scriptOfScript + + public func inc() -> MTLineStyle { + let raw = self.rawValue + 1 + if let style = MTLineStyle(rawValue: raw) { return style } + return .display + } + + public var isNotScript:Bool { self < .script } + public static func < (lhs: MTLineStyle, rhs: MTLineStyle) -> Bool { lhs.rawValue < rhs.rawValue } +} + +// MARK: - MTMathStyle +/** An atom representing a style change. + Note: None of the usual fields of the `MTMathAtom` apply even though this + class inherits from `MTMathAtom`. i.e. it is meaningless to have a value + in the nucleus, subscript or superscript fields. */ +public class MTMathStyle: MTMathAtom { + public var style: MTLineStyle = .display + + init(_ style:MTMathStyle?) { + super.init(style) + self.type = .style + self.style = style!.style + } + + init(style:MTLineStyle) { + super.init() + self.type = .style + self.style = style + } +} + +// MARK: - MTMathColor +/** An atom representing an color element. + Note: None of the usual fields of the `MTMathAtom` apply even though this + class inherits from `MTMathAtom`. i.e. it is meaningless to have a value + in the nucleus, subscript or superscript fields. */ +public class MTMathColor: MTMathAtom { + public var colorString:String="" + public var innerList:MTMathList? + + init(_ color: MTMathColor?) { + super.init(color) + self.type = .color + self.colorString = color?.colorString ?? "" + self.innerList = MTMathList(color?.innerList) + } + + override init() { + super.init() + self.type = .color + } + + public override var string: String { + "\\color{\(self.colorString)}{\(self.innerList!.string)}" + } + + override public var finalized: MTMathAtom { + let newColor = super.finalized as! MTMathColor + newColor.innerList = newColor.innerList?.finalized + return newColor + } +} + +// MARK: - MTMathTextColor +/** An atom representing an textcolor element. + Note: None of the usual fields of the `MTMathAtom` apply even though this + class inherits from `MTMathAtom`. i.e. it is meaningless to have a value + in the nucleus, subscript or superscript fields. */ +public class MTMathTextColor: MTMathAtom { + public var colorString:String="" + public var innerList:MTMathList? + + init(_ color: MTMathTextColor?) { + super.init(color) + self.type = .textcolor + self.colorString = color?.colorString ?? "" + self.innerList = MTMathList(color?.innerList) + } + + override init() { + super.init() + self.type = .textcolor + } + + public override var string: String { + "\\textcolor{\(self.colorString)}{\(self.innerList!.string)}" + } + + override public var finalized: MTMathAtom { + let newColor = super.finalized as! MTMathTextColor + newColor.innerList = newColor.innerList?.finalized + return newColor + } +} + +// MARK: - MTMathColorbox +/** An atom representing an colorbox element. + Note: None of the usual fields of the `MTMathAtom` apply even though this + class inherits from `MTMathAtom`. i.e. it is meaningless to have a value + in the nucleus, subscript or superscript fields. */ +public class MTMathColorbox: MTMathAtom { + public var colorString="" + public var innerList:MTMathList? + + init(_ cbox: MTMathColorbox?) { + super.init(cbox) + self.type = .colorBox + self.colorString = cbox?.colorString ?? "" + self.innerList = MTMathList(cbox?.innerList) + } + + override init() { + super.init() + self.type = .colorBox + } + + public override var string: String { + "\\colorbox{\(self.colorString)}{\(self.innerList!.string)}" + } + + override public var finalized: MTMathAtom { + let newColor = super.finalized as! MTMathColorbox + newColor.innerList = newColor.innerList?.finalized + return newColor + } +} + +/** + Alignment for a column of MTMathTable + */ +public enum MTColumnAlignment { + case left + case center + case right +} + +// MARK: - MTMathTable +/** An atom representing an table element. This atom is not like other + atoms and is not present in TeX. We use it to represent the `\halign` command + in TeX with some simplifications. This is used for matrices, equation + alignments and other uses of multiline environments. + + The cells in the table are represented as a two dimensional array of + `MTMathList` objects. The `MTMathList`s could be empty to denote a missing + value in the cell. Additionally an array of alignments indicates how each + column will be aligned. + */ +public class MTMathTable: MTMathAtom { + /// The alignment for each column (left, right, center). The default alignment + /// for a column (if not set) is center. + public var alignments = [MTColumnAlignment]() + /// The cells in the table as a two dimensional array. + public var cells = [[MTMathList]]() + /// The name of the environment that this table denotes. + public var environment = "" + /// Spacing between each column in mu units. + public var interColumnSpacing: CGFloat = 0 + /// Additional spacing between rows in jots (one jot is 0.3 times font size). + /// If the additional spacing is 0, then normal row spacing is used are used. + public var interRowAdditionalSpacing: CGFloat = 0 + + override public var finalized: MTMathAtom { + let table = super.finalized as! MTMathTable + for var row in table.cells { + for i in 0.. MTColumnAlignment { + if self.alignments.count <= col { + return MTColumnAlignment.center + } else { + return self.alignments[col] + } + } + + public var numColumns: Int { + var numberOfCols = 0 + for row in self.cells { + numberOfCols = max(numberOfCols, row.count) + } + return numberOfCols + } + + public var numRows: Int { self.cells.count } +} + +// MARK: - MTMathList + +extension MTMathList { + public override var description: String { self.atoms.description } + /// converts the MTMathList to a string form. Note: This is not the LaTeX form. + public var string: String { self.description } +} + +/** A representation of a list of math objects. + + This list can be constructed directly or built with + the help of the MTMathListBuilder. It is not required that the mathematics represented make sense + (i.e. this can represent something like "x 2 = +". This list can be used for display using MTLine + or can be a list of tokens to be used by a parser after finalizedMathList is called. + + Note: This class is for **advanced** usage only. + */ +public class MTMathList : NSObject { + + init?(_ list:MTMathList?) { + guard let list = list else { return nil } + for atom in list.atoms { + self.atoms.append(atom.copy()) + } + } + + /// A list of MathAtoms + public var atoms = [MTMathAtom]() + + /// Create a new math list as a final expression and update atoms + /// by combining like atoms that occur together and converting unary operators to binary operators. + /// This function does not modify the current MTMathList + public var finalized: MTMathList { + let finalizedList = MTMathList() + let zeroRange = NSMakeRange(0, 0) + + var prevNode: MTMathAtom? = nil + for atom in self.atoms { + let newNode = atom.finalized + + if NSEqualRanges(zeroRange, atom.indexRange) { + // CRITICAL FIX: Check if prevNode has a valid range location before using it + // If location is NSNotFound, treat as if there's no prevNode + // This prevents negative overflow when creating NSMakeRange + let index: Int + if prevNode == nil || prevNode!.indexRange.location == NSNotFound { + index = 0 + } else { + // Additional safety: check for potential overflow + let location = prevNode!.indexRange.location + let length = prevNode!.indexRange.length + // If either value is suspicious (negative or too large), reset to 0 + if location < 0 || length < 0 || location > Int.max - length { + index = 0 + } else { + index = location + length + } + } + newNode.indexRange = NSMakeRange(index, 1) + } + + switch newNode.type { + case .binaryOperator: + if isNotBinaryOperator(prevNode) { + newNode.type = .unaryOperator + } + case .relation, .punctuation, .close: + if prevNode != nil && prevNode!.type == .binaryOperator { + prevNode!.type = .unaryOperator + } + case .number: + if prevNode != nil && prevNode!.type == .number && prevNode!.subScript == nil && prevNode!.superScript == nil { + prevNode!.fuse(with: newNode) + continue // skip the current node, we are done here. + } + default: break + } + finalizedList.add(newNode) + prevNode = newNode + } + if prevNode != nil && prevNode!.type == .binaryOperator { + prevNode!.type = .unaryOperator + } + return finalizedList + } + + public init(atoms: [MTMathAtom]) { + self.atoms.append(contentsOf: atoms) + } + + public init(atom: MTMathAtom) { + self.atoms.append(atom) + } + + public override init() { super.init() } + + func NSParamException(_ param:Any?) { + if param == nil { + NSException(name: NSExceptionName(rawValue: "Error"), reason: "Parameter cannot be nil").raise() + } + } + + func NSIndexException(_ array:[Any], index: Int) { + guard !array.indices.contains(index) else { return } + NSException(name: NSExceptionName(rawValue: "Error"), reason: "Index \(index) out of bounds").raise() + } + + /// Add an atom to the end of the list. + /// - parameter atom: The atom to be inserted. This cannot be `nil` and cannot have the type `kMTMathAtomBoundary`. + /// - throws NSException if the atom is of type `kMTMathAtomBoundary` + public func add(_ atom: MTMathAtom?) { + guard let atom = atom else { return } + if self.isAtomAllowed(atom) { + self.atoms.append(atom) + } else { + NSException(name: NSExceptionName(rawValue: "Error"), reason: "Cannot add atom of type \(atom.type.rawValue) into mathlist").raise() + } + } + + /// Inserts an atom at the given index. If index is already occupied, the objects at index and beyond are + /// shifted by adding 1 to their indices to make room. An insert to an `index` greater than the number of atoms + /// is ignored. Insertions of nil atoms is ignored. + /// - parameter atom: The atom to be inserted. This cannot be `nil` and cannot have the type `kMTMathAtom.boundary`. + /// - parameter index: The index where the atom is to be inserted. The index should be less than or equal to the + /// number of elements in the math list. + /// - throws NSException if the atom is of type kMTMathAtomBoundary + public func insert(_ atom: MTMathAtom?, at index: Int) { + // NSParamException(atom) + guard let atom = atom else { return } + guard self.atoms.indices.contains(index) || index == self.atoms.endIndex else { return } + // guard self.atoms.endIndex >= index else { NSIndexException(); return } + if self.isAtomAllowed(atom) { + // NSIndexException(self.atoms, index: index) + self.atoms.insert(atom, at: index) + } else { + NSException(name: NSExceptionName(rawValue: "Error"), reason: "Cannot add atom of type \(atom.type.rawValue) into mathlist").raise() + } + } + + /// Append the given list to the end of the current list. + /// - parameter list: The list to append. + public func append(_ list: MTMathList?) { + guard let list = list else { return } + self.atoms += list.atoms + } + + /** Removes the last atom from the math list. If there are no atoms in the list this does nothing. */ + public func removeLastAtom() { + if !self.atoms.isEmpty { + self.atoms.removeLast() + } + } + + /// Removes the atom at the given index. + /// - parameter index: The index at which to remove the atom. Must be less than the number of atoms + /// in the list. + public func removeAtom(at index: Int) { + NSIndexException(self.atoms, index:index) + self.atoms.remove(at: index) + } + + /** Removes all the atoms within the given range. */ + public func removeAtoms(in range: ClosedRange) { + NSIndexException(self.atoms, index: range.lowerBound) + NSIndexException(self.atoms, index: range.upperBound) + self.atoms.removeSubrange(range) + } + + func isAtomAllowed(_ atom: MTMathAtom?) -> Bool { atom?.type != .boundary } +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTMathListBuilder.swift b/third-party/SwiftMath/Sources/MathRender/MTMathListBuilder.swift new file mode 100644 index 0000000000..4083fd90d9 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTMathListBuilder.swift @@ -0,0 +1,1613 @@ +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by Kostub Deshmukh. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation + +/** `MTMathListBuilder` is a class for parsing LaTeX into an `MTMathList` that + can be rendered and processed mathematically. + */ +struct MTEnvProperties { + var envName: String? + var ended: Bool + var numRows: Int + var alignment: MTColumnAlignment? // Optional alignment for starred matrix environments + + init(name: String?, alignment: MTColumnAlignment? = nil) { + self.envName = name + self.numRows = 0 + self.ended = false + self.alignment = alignment + } +} + +/** + The error encountered when parsing a LaTeX string. + + The `code` in the `NSError` is one of the following indicating why the LaTeX string + could not be parsed. + */ +enum MTParseErrors:Int { + /// The braces { } do not match. + case mismatchBraces = 1 + /// A command in the string is not recognized. + case invalidCommand + /// An expected character such as ] was not found. + case characterNotFound + /// The \left or \right command was not followed by a delimiter. + case missingDelimiter + /// The delimiter following \left or \right was not a valid delimiter. + case invalidDelimiter + /// There is no \right corresponding to the \left command. + case missingRight + /// There is no \left corresponding to the \right command. + case missingLeft + /// The environment given to the \begin command is not recognized + case invalidEnv + /// A command is used which is only valid inside a \begin,\end environment + case missingEnv + /// There is no \begin corresponding to the \end command. + case missingBegin + /// There is no \end corresponding to the \begin command. + case missingEnd + /// The number of columns do not match the environment + case invalidNumColumns + /// Internal error, due to a programming mistake. + case internalError + /// Limit control applied incorrectly + case invalidLimits +} + +let MTParseError = "ParseError" + +/** `MTMathListBuilder` is a class for parsing LaTeX into an `MTMathList` that + can be rendered and processed mathematically. + */ +public struct MTMathListBuilder { + /// The math mode determines rendering style (inline vs display) + enum MathMode { + /// Display style - larger operators, limits above/below (e.g., $$...$$, \[...\]) + case display + /// Inline/text style - compact operators, limits to the side (e.g., $...$, \(...\)) + case inline + + /// Convert MathMode to MTLineStyle for rendering + func toLineStyle() -> MTLineStyle { + switch self { + case .display: + return .display + case .inline: + return .text + } + } + } + + var string: String + var currentCharIndex: String.Index + var currentInnerAtom: MTInner? + var currentEnv: MTEnvProperties? + var currentFontStyle:MTFontStyle + var spacesAllowed:Bool + var mathMode: MathMode = .display + + /** Contains any error that occurred during parsing. */ + var error:NSError? + + // MARK: - Character-handling routines + + var hasCharacters: Bool { currentCharIndex < string.endIndex } + + // gets the next character and increments the index + mutating func getNextCharacter() -> Character { + assert(self.hasCharacters, "Retrieving character at index \(self.currentCharIndex) beyond length \(self.string.count)") + let ch = string[currentCharIndex] + currentCharIndex = string.index(after: currentCharIndex) + return ch + } + + mutating func unlookCharacter() { + assert(currentCharIndex > string.startIndex, "Unlooking when at the first character.") + if currentCharIndex > string.startIndex { + currentCharIndex = string.index(before: currentCharIndex) + } + } + + // Peek at next command without consuming it (for \not lookahead) + mutating func peekNextCommand() -> String { + let savedIndex = currentCharIndex + skipSpaces() + + guard hasCharacters else { + currentCharIndex = savedIndex + return "" + } + + let char = getNextCharacter() + let command: String + + if char == "\\" { + command = readCommand() + } else { + command = "" + } + + // Restore position + currentCharIndex = savedIndex + return command + } + + // Consume the next command (after peeking) + mutating func consumeNextCommand() { + skipSpaces() + + guard hasCharacters else { return } + + let char = getNextCharacter() + if char == "\\" { + _ = readCommand() + } + } + + + + mutating func expectCharacter(_ ch: Character) -> Bool { + MTAssertNotSpace(ch) + self.skipSpaces() + + if self.hasCharacters { + let nextChar = self.getNextCharacter() + MTAssertNotSpace(nextChar) + if nextChar == ch { + return true + } else { + self.unlookCharacter() + return false + } + } + return false + } + + public static let spaceToCommands: [CGFloat: String] = [ + 3 : ",", + 4 : ">", + 5 : ";", + (-3) : "!", + 18 : "quad", + 36 : "qquad", + ] + + public static let styleToCommands: [MTLineStyle: String] = [ + .display: "displaystyle", + .text: "textstyle", + .script: "scriptstyle", + .scriptOfScript: "scriptscriptstyle" + ] + + // Comprehensive mapping of \not command combinations to Unicode negated symbols + public static let notCombinations: [String: String] = [ + // Primary targets (user requested) + "equiv": "\u{2262}", // ≢ Not equivalent + "subset": "\u{2284}", // ⊄ Not subset + "in": "\u{2209}", // ∉ Not element of + + // Additional standard negations + "sim": "\u{2241}", // ≁ Not similar + "approx": "\u{2249}", // ≉ Not approximately equal + "cong": "\u{2247}", // ≇ Not congruent + "parallel": "\u{2226}", // ∦ Not parallel + "subseteq": "\u{2288}", // ⊈ Not subset or equal + "supset": "\u{2285}", // ⊅ Not superset + "supseteq": "\u{2289}", // ⊉ Not superset or equal + "=": "\u{2260}", // ≠ Not equal (alternative to \neq) + ] + + /// Delimiter sizing commands with their size multipliers (relative to font size). + /// Values based on standard TeX: at 10pt, \big=8.5pt, \Big=11.5pt, \bigg=14.5pt, \Bigg=17.5pt + /// These translate to approximately 0.85x, 1.15x, 1.45x, 1.75x of font size. + /// We use slightly larger values to ensure visible size differences. + public static let delimiterSizeCommands: [String: CGFloat] = [ + // Basic sizing commands + "big": 1.0, + "Big": 1.4, + "bigg": 1.8, + "Bigg": 2.2, + // Left variants (same sizes, just semantic distinction in LaTeX) + "bigl": 1.0, + "Bigl": 1.4, + "biggl": 1.8, + "Biggl": 2.2, + // Right variants + "bigr": 1.0, + "Bigr": 1.4, + "biggr": 1.8, + "Biggr": 2.2, + // Middle variants (used between delimiters) + "bigm": 1.0, + "Bigm": 1.4, + "biggm": 1.8, + "Biggm": 2.2, + ] + + init(string: String) { + self.error = nil + self.string = string + self.currentCharIndex = string.startIndex + self.currentFontStyle = .defaultStyle + self.spacesAllowed = false + } + + // MARK: - Delimiter Detection + + /// Detects and strips LaTeX math delimiters from the input string. + /// Returns the cleaned content and the detected math mode. + /// Supports: $...$ \(...\) $$...$$ \[...\] and environments + func detectAndStripDelimiters(from str: String) -> (String, MathMode) { + let trimmed = str.trimmingCharacters(in: .whitespacesAndNewlines) + + // Check display delimiters first (more specific patterns) + + // \[...\] - LaTeX display math + if trimmed.hasPrefix("\\[") && trimmed.hasSuffix("\\]") && trimmed.count > 4 { + let content = String(trimmed.dropFirst(2).dropLast(2)) + return (content, .display) + } + + // $$...$$ - TeX display math (check before single $) + if trimmed.hasPrefix("$$") && trimmed.hasSuffix("$$") && trimmed.count > 4 { + let content = String(trimmed.dropFirst(2).dropLast(2)) + return (content, .display) + } + + // Check inline delimiters + + // \(...\) - LaTeX inline math + if trimmed.hasPrefix("\\(") && trimmed.hasSuffix("\\)") && trimmed.count > 4 { + let content = String(trimmed.dropFirst(2).dropLast(2)) + return (content, .inline) + } + + // $...$ - TeX inline math (must check after $$) + if trimmed.hasPrefix("$") && trimmed.hasSuffix("$") && trimmed.count > 2 && !trimmed.hasPrefix("$$") { + let content = String(trimmed.dropFirst(1).dropLast(1)) + return (content, .inline) + } + + // Check if it's an environment (\begin{...}\end{...}) + // These are handled by existing logic and are display mode by default + if trimmed.hasPrefix("\\begin{") { + return (str, .display) + } + + // No delimiters found - default to display mode (current behavior for backward compatibility) + return (str, .display) + } + + // MARK: - MTMathList builder functions + + /// Builds a mathlist from the internal `string`. Returns nil if there is an error. + public mutating func build() -> MTMathList? { + // Detect and strip delimiters, updating the string and mode + let (cleanedString, mode) = detectAndStripDelimiters(from: self.string) + self.string = cleanedString + self.currentCharIndex = cleanedString.startIndex + self.mathMode = mode + + // If inline mode, we could optionally prepend a \textstyle command + // to force inline rendering of operators. For now, just track the mode. + + let list = self.buildInternal(false) + if self.hasCharacters && error == nil { + self.setError(.mismatchBraces, message: "Mismatched braces: \(self.string)") + return nil + } + if error != nil { + return nil + } + + // Note: For inline mode, we insert \textstyle to match LaTeX behavior. + // However, fractionStyle() has been modified to keep fractions at the + // same font size in both display and text modes (not one level smaller). + // Large operators show limits above/below in text style due to the updated + // condition in makeLargeOp() that checks both .display and .text styles. + if mode == .inline && list != nil && !list!.atoms.isEmpty { + // Prepend \textstyle to force inline rendering + let styleAtom = MTMathStyle(style: .text) + list!.atoms.insert(styleAtom, at: 0) + } + + return list + } + + /** Construct a math list from a given string. If there is parse error, returns + nil. To retrieve the error use the function `MTMathListBuilder.build(fromString:error:)`. + */ + public static func build(fromString string: String) -> MTMathList? { + var builder = MTMathListBuilder(string: string) + return builder.build() + } + + /** Construct a math list from a given string. If there is an error while + constructing the string, this returns nil. The error is returned in the + `error` parameter. + */ + public static func build(fromString string: String, error:inout NSError?) -> MTMathList? { + var builder = MTMathListBuilder(string: string) + let output = builder.build() + if builder.error != nil { + error = builder.error + return nil + } + return output + } + + /** Construct a math list from a given string and return the detected style. + This method detects LaTeX delimiters like \[...\], $$...$$, $...$, \(...\) + and returns the appropriate rendering style (.display or .text). + + If there is a parse error, returns nil for the MathList. + + - Parameter string: The LaTeX string to parse + - Returns: A tuple containing the parsed MathList and the detected MTLineStyle + */ + public static func buildWithStyle(fromString string: String) -> (mathList: MTMathList?, style: MTLineStyle) { + var builder = MTMathListBuilder(string: string) + let mathList = builder.build() + let style = builder.mathMode.toLineStyle() + return (mathList, style) + } + + /** Construct a math list from a given string and return the detected style. + This method detects LaTeX delimiters like \[...\], $$...$$, $...$, \(...\) + and returns the appropriate rendering style (.display or .text). + + If there is an error while constructing the string, this returns nil for the MathList. + The error is returned in the `error` parameter. + + - Parameters: + - string: The LaTeX string to parse + - error: An inout parameter that will contain any parse error + - Returns: A tuple containing the parsed MathList and the detected MTLineStyle + */ + public static func buildWithStyle(fromString string: String, error: inout NSError?) -> (mathList: MTMathList?, style: MTLineStyle) { + var builder = MTMathListBuilder(string: string) + let output = builder.build() + let style = builder.mathMode.toLineStyle() + if builder.error != nil { + error = builder.error + return (nil, style) + } + return (output, style) + } + + public mutating func buildInternal(_ oneCharOnly: Bool) -> MTMathList? { + self.buildInternal(oneCharOnly, stopChar: nil) + } + + public mutating func buildInternal(_ oneCharOnly: Bool, stopChar stop: Character?) -> MTMathList? { + let list = MTMathList() + assert(!(oneCharOnly && stop != nil), "Cannot set both oneCharOnly and stopChar.") + var prevAtom: MTMathAtom? = nil + while self.hasCharacters { + if error != nil { return nil } // If there is an error thus far then bail out. + + var atom: MTMathAtom? = nil + let char = self.getNextCharacter() + + if oneCharOnly { + if char == "^" || char == "}" || char == "_" || char == "&" { + // this is not the character we are looking for. + // They are meant for the caller to look at. + self.unlookCharacter() + return list + } + } + // If there is a stop character, keep scanning 'til we find it + if stop != nil && char == stop! { + return list + } + + if char == "^" { + assert(!oneCharOnly, "This should have been handled before") + if (prevAtom == nil || prevAtom!.superScript != nil || !prevAtom!.isScriptAllowed()) { + // If there is no previous atom, or if it already has a superscript + // or if scripts are not allowed for it, then add an empty node. + prevAtom = MTMathAtom(type: .ordinary, value: "") + list.add(prevAtom!) + } + // this is a superscript for the previous atom + // note: if the next char is the stopChar it will be consumed by the ^ and so it doesn't count as stop + prevAtom!.superScript = self.buildInternal(true) + continue + } else if char == "_" { + assert(!oneCharOnly, "This should have been handled before") + if (prevAtom == nil || prevAtom!.subScript != nil || !prevAtom!.isScriptAllowed()) { + // If there is no previous atom, or if it already has a subcript + // or if scripts are not allowed for it, then add an empty node. + prevAtom = MTMathAtom(type: .ordinary, value: "") + list.add(prevAtom!) + } + // this is a subscript for the previous atom + // note: if the next char is the stopChar it will be consumed by the _ and so it doesn't count as stop + prevAtom!.subScript = self.buildInternal(true) + continue + } else if char == "{" { + // this puts us in a recursive routine, and sets oneCharOnly to false and no stop character + if let subList = self.buildInternal(false, stopChar: "}") { + prevAtom = subList.atoms.last + list.append(subList) + if oneCharOnly { + return list + } + } + continue + } else if char == "}" { + // \ means a command + assert(!oneCharOnly, "This should have been handled before") + assert(stop == nil, "This should have been handled before") + // Special case: } terminates implicit table (envName == nil) created by \\ + // This happens when \\ is used inside braces: \substack{a \\ b} + if self.currentEnv != nil && self.currentEnv!.envName == nil { + // Mark environment as ended, don't consume the } + self.currentEnv!.ended = true + return list + } + // We encountered a closing brace when there is no stop set, that means there was no + // corresponding opening brace. + self.setError(.mismatchBraces, message:"Mismatched braces.") + return nil + } else if char == "\\" { + let command = readCommand() + let done = stopCommand(command, list:list, stopChar:stop) + if done != nil { + return done + } else if error != nil { + return nil + } + if self.applyModifier(command, atom:prevAtom) { + continue + } + + if let fontStyle = MTMathAtomFactory.fontStyleWithName(command) { + let oldSpacesAllowed = spacesAllowed + // Text has special consideration where it allows spaces without escaping. + spacesAllowed = command == "text" + let oldFontStyle = currentFontStyle + currentFontStyle = fontStyle + if let sublist = self.buildInternal(true) { + // Restore the font style. + currentFontStyle = oldFontStyle + spacesAllowed = oldSpacesAllowed + + prevAtom = sublist.atoms.last + list.append(sublist) + if oneCharOnly { + return list + } + } + continue + } + atom = self.atomForCommand(command) + if atom == nil { + // this was an unknown command, + // we flag an error and return + // (note setError will not set the error if there is already one, so we flag internal error + // in the odd case that an _error is not set. + self.setError(.internalError, message:"Internal error") + return nil + } + } else if char == "&" { + // used for column separation in tables + assert(!oneCharOnly, "This should have been handled before") + if self.currentEnv != nil { + return list + } else { + // Create a new table with the current list and a default env + if let table = self.buildTable(env: nil, firstList: list, isRow: false) { + return MTMathList(atom: table) + } else { + return nil + } + } + } else if spacesAllowed && char == " " { + // If spaces are allowed then spaces do not need escaping with a \ before being used. + atom = MTMathAtomFactory.atom(forLatexSymbol: " ") + } else { + atom = MTMathAtomFactory.atom(forCharacter: char) + if atom == nil { + // Not a recognized character in standard math mode + // In text mode (spacesAllowed && roman style), accept any Unicode character for fallback font support + // This enables Chinese, Japanese, Korean, emoji, etc. in \text{} commands + if spacesAllowed && currentFontStyle == .roman { + atom = MTMathAtom(type: .ordinary, value: String(char)) + } else { + // In math mode or non-text commands, skip unrecognized characters + continue + } + } + } + + assert(atom != nil, "Atom shouldn't be nil") + atom?.fontStyle = currentFontStyle + // If this is an accent atom (e.g., from an accented character like "é"), + // propagate the font style to the inner list atoms that don't already have + // an explicit font style. This handles Unicode accented characters which are + // converted to accents by atom(fromAccentedCharacter:) without font style context. + // We only set font style on atoms with .defaultStyle to avoid overriding + // explicit font style commands like \textbf inside accents. + if let accent = atom as? MTAccent, let innerList = accent.innerList { + for innerAtom in innerList.atoms { + if innerAtom.fontStyle == .defaultStyle { + innerAtom.fontStyle = currentFontStyle + } + } + } + list.add(atom) + prevAtom = atom + + if oneCharOnly { + return list + } + } + if stop != nil { + if stop == "}" { + // We did not find a corresponding closing brace. + self.setError(.mismatchBraces, message:"Missing closing brace") + } else { + // we never found our stop character + let errorMessage = "Expected character not found: \(stop!)" + self.setError(.characterNotFound, message:errorMessage) + } + } + return list + } + + + // MARK: - MTMathList to LaTeX conversion + + /// This converts the MTMathList to LaTeX. + public static func mathListToString(_ ml: MTMathList?) -> String { + var str = "" + var currentfontStyle = MTFontStyle.defaultStyle + if let atomList = ml { + for atom in atomList.atoms { + if currentfontStyle != atom.fontStyle { + if currentfontStyle != .defaultStyle { + str += "}" + } + if atom.fontStyle != .defaultStyle { + let fontStyleName = MTMathAtomFactory.fontNameForStyle(atom.fontStyle) + str += "\\\(fontStyleName){" + } + currentfontStyle = atom.fontStyle + } + if atom.type == .fraction { + if let frac = atom as? MTFraction { + if frac.isContinuedFraction { + // Generate \cfrac with optional alignment + if frac.alignment != "c" { + str += "\\cfrac[\(frac.alignment)]{\(mathListToString(frac.numerator!))}{\(mathListToString(frac.denominator!))}" + } else { + str += "\\cfrac{\(mathListToString(frac.numerator!))}{\(mathListToString(frac.denominator!))}" + } + } else if frac.hasRule { + str += "\\frac{\(mathListToString(frac.numerator!))}{\(mathListToString(frac.denominator!))}" + } else { + let command: String + if frac.leftDelimiter.isEmpty && frac.rightDelimiter.isEmpty { + command = "atop" + } else if frac.leftDelimiter == "(" && frac.rightDelimiter == ")" { + command = "choose" + } else if frac.leftDelimiter == "{" && frac.rightDelimiter == "}" { + command = "brace" + } else if frac.leftDelimiter == "[" && frac.rightDelimiter == "]" { + command = "brack" + } else { + command = "atopwithdelims\(frac.leftDelimiter)\(frac.rightDelimiter)" + } + str += "{\(mathListToString(frac.numerator!)) \\\(command) \(mathListToString(frac.denominator!))}" + } + } + } else if atom.type == .radical { + str += "\\sqrt" + if let rad = atom as? MTRadical { + if rad.degree != nil { + str += "[\(mathListToString(rad.degree!))]" + } + str += "{\(mathListToString(rad.radicand!))}" + } + } else if atom.type == .inner { + if let inner = atom as? MTInner { + if inner.leftBoundary != nil || inner.rightBoundary != nil { + if inner.leftBoundary != nil { + str += "\\left\(delimToString(delim: inner.leftBoundary!)) " + } else { + str += "\\left. " + } + + str += mathListToString(inner.innerList!) + + if inner.rightBoundary != nil { + str += "\\right\(delimToString(delim: inner.rightBoundary!)) " + } else { + str += "\\right. " + } + } else { + str += "{\(mathListToString(inner.innerList!))}" + } + } + } else if atom.type == .table { + if let table = atom as? MTMathTable { + if !table.environment.isEmpty { + str += "\\begin{\(table.environment)}" + } + + for i in 0..= 1 && cell.atoms[0].type == .style { + // remove first atom + cell.atoms.removeFirst() + } + } + if table.environment == "eqalign" || table.environment == "aligned" || table.environment == "split" { + if j == 1 && cell.atoms.count >= 1 && cell.atoms[0].type == .ordinary && cell.atoms[0].nucleus.count == 0 { + // remove empty nucleus added for spacing + cell.atoms.removeFirst() + } + } + str += mathListToString(cell) + if j < row.count - 1 { + str += "&" + } + } + if i < table.numRows - 1 { + str += "\\\\ " + } + } + if !table.environment.isEmpty { + str += "\\end{\(table.environment)}" + } + } + } else if atom.type == .overline { + if let overline = atom as? MTOverLine { + str += "\\overline" + str += "{\(mathListToString(overline.innerList!))}" + } + } else if atom.type == .underline { + if let underline = atom as? MTUnderLine { + str += "\\underline" + str += "{\(mathListToString(underline.innerList!))}" + } + } else if atom.type == .accent { + if let accent = atom as? MTAccent { + str += "\\\(MTMathAtomFactory.accentName(accent)!){\(mathListToString(accent.innerList!))}" + } + } else if atom.type == .largeOperator { + let op = atom as! MTLargeOperator + let command = MTMathAtomFactory.latexSymbolName(for: atom) + let originalOp = MTMathAtomFactory.atom(forLatexSymbol: command!) as! MTLargeOperator + str += "\\\(command!) " + if originalOp.limits != op.limits { + if op.limits { + str += "\\limits " + } else { + str += "\\nolimits " + } + } + } else if atom.type == .space { + if let space = atom as? MTMathSpace { + if let command = Self.spaceToCommands[space.space] { + str += "\\\(command) " + } else { + str += String(format: "\\mkern%.1fmu", space.space) + } + } + } else if atom.type == .style { + if let style = atom as? MTMathStyle { + if let command = Self.styleToCommands[style.style] { + str += "\\\(command) " + } + } + } else if atom.nucleus.isEmpty { + str += "{}" + } else if atom.nucleus == "\u{2236}" { + // math colon + str += ":" + } else if atom.nucleus == "\u{2212}" { + // math minus + str += "-" + } else { + if let command = MTMathAtomFactory.latexSymbolName(for: atom) { + str += "\\\(command) " + } else { + str += "\(atom.nucleus)" + } + } + + if atom.superScript != nil { + str += "^{\(mathListToString(atom.superScript!))}" + } + + if atom.subScript != nil { + str += "_{\(mathListToString(atom.subScript!))}" + } + } + } + if currentfontStyle != .defaultStyle { + str += "}" + } + return str + } + + public static func delimToString(delim: MTMathAtom) -> String { + if let command = MTMathAtomFactory.getDelimiterName(of: delim) { + let singleChars = [ "(", ")", "[", "]", "<", ">", "|", ".", "/"] + if singleChars.contains(command) { + return command + } else if command == "||" { + return "\\|" + } else { + return "\\\(command)" + } + } + return "" + } + + mutating func atomForCommand(_ command:String) -> MTMathAtom? { + if let atom = MTMathAtomFactory.atom(forLatexSymbol: command) { + return atom + } + if let accent = MTMathAtomFactory.accent(withName: command) { + // The command is an accent + accent.innerList = self.buildInternal(true) + return accent; + } else if command == "frac" { + // A fraction command has 2 arguments + let frac = MTFraction() + frac.numerator = self.buildInternal(true) + frac.denominator = self.buildInternal(true) + return frac; + } else if command == "cfrac" { + // A continued fraction command with optional alignment and 2 arguments + let frac = MTFraction() + frac.isContinuedFraction = true + + // Parse optional alignment parameter [l], [r], [c] + skipSpaces() + if hasCharacters && string[currentCharIndex] == "[" { + _ = getNextCharacter() // consume '[' + if hasCharacters { + let alignmentChar = getNextCharacter() + if alignmentChar == "l" || alignmentChar == "r" || alignmentChar == "c" { + frac.alignment = String(alignmentChar) + } + } + // Consume closing ']' + if hasCharacters && string[currentCharIndex] == "]" { + _ = getNextCharacter() + } + } + + frac.numerator = self.buildInternal(true) + frac.denominator = self.buildInternal(true) + return frac; + } else if command == "dfrac" { + // Display-style fraction command has 2 arguments + let frac = MTFraction() + let numerator = self.buildInternal(true) + let denominator = self.buildInternal(true) + + // Prepend \displaystyle to force display mode rendering + let displayStyle = MTMathStyle(style: .display) + numerator?.insert(displayStyle, at: 0) + denominator?.insert(displayStyle, at: 0) + + frac.numerator = numerator + frac.denominator = denominator + return frac; + } else if command == "tfrac" { + // Text-style fraction command has 2 arguments + let frac = MTFraction() + let numerator = self.buildInternal(true) + let denominator = self.buildInternal(true) + + // Prepend \textstyle to force text mode rendering + let textStyle = MTMathStyle(style: .text) + numerator?.insert(textStyle, at: 0) + denominator?.insert(textStyle, at: 0) + + frac.numerator = numerator + frac.denominator = denominator + return frac; + } else if command == "binom" { + // A binom command has 2 arguments + let frac = MTFraction(hasRule: false) + frac.numerator = self.buildInternal(true) + frac.denominator = self.buildInternal(true) + frac.leftDelimiter = "("; + frac.rightDelimiter = ")"; + return frac; + } else if command == "bra" { + // Dirac bra notation: \bra{psi} -> ⟨psi| + let inner = MTInner() + inner.leftBoundary = MTMathAtomFactory.boundary(forDelimiter: "langle") + inner.rightBoundary = MTMathAtomFactory.boundary(forDelimiter: "|") + inner.innerList = self.buildInternal(true) + return inner + } else if command == "ket" { + // Dirac ket notation: \ket{psi} -> |psi⟩ + let inner = MTInner() + inner.leftBoundary = MTMathAtomFactory.boundary(forDelimiter: "|") + inner.rightBoundary = MTMathAtomFactory.boundary(forDelimiter: "rangle") + inner.innerList = self.buildInternal(true) + return inner + } else if command == "braket" { + // Dirac braket notation: \braket{phi}{psi} -> ⟨phi|psi⟩ + let inner = MTInner() + inner.leftBoundary = MTMathAtomFactory.boundary(forDelimiter: "langle") + inner.rightBoundary = MTMathAtomFactory.boundary(forDelimiter: "rangle") + // Build the inner content: phi | psi + let phi = self.buildInternal(true) + let psi = self.buildInternal(true) + let content = MTMathList() + if let phiList = phi { + for atom in phiList.atoms { + content.add(atom) + } + } + // Add the | separator + content.add(MTMathAtom(type: .ordinary, value: "|")) + if let psiList = psi { + for atom in psiList.atoms { + content.add(atom) + } + } + inner.innerList = content + return inner + } else if command == "operatorname" || command == "operatorname*" { + // \operatorname{name} creates a custom operator with proper spacing + // \operatorname*{name} creates an operator with limits above/below + let hasLimits = command.hasSuffix("*") + + // Parse the operator name + let content = self.buildInternal(true) + + // Convert the parsed content to a string + var operatorName = "" + if let atoms = content?.atoms { + for atom in atoms { + operatorName += atom.nucleus + } + } + + if operatorName.isEmpty { + let errorMessage = "Missing operator name for \\operatorname" + self.setError(.invalidCommand, message: errorMessage) + return nil + } + + return MTLargeOperator(value: operatorName, limits: hasLimits) + } else if command == "sqrt" { + // A sqrt command with one argument + let rad = MTRadical() + guard self.hasCharacters else { + rad.radicand = self.buildInternal(true) + return rad + } + let ch = self.getNextCharacter() + if (ch == "[") { + // special handling for sqrt[degree]{radicand} + rad.degree = self.buildInternal(false, stopChar:"]") + rad.radicand = self.buildInternal(true) + } else { + self.unlookCharacter() + rad.radicand = self.buildInternal(true) + } + return rad; + } else if command == "left" { + // Save the current inner while a new one gets built. + let oldInner = currentInnerAtom + currentInnerAtom = MTInner() + currentInnerAtom!.leftBoundary = self.getBoundaryAtom("left") + if currentInnerAtom!.leftBoundary == nil { + return nil; + } + currentInnerAtom!.innerList = self.buildInternal(false) + if currentInnerAtom!.rightBoundary == nil { + // A right node would have set the right boundary so we must be missing the right node. + let errorMessage = "Missing \\right" + self.setError(.missingRight, message:errorMessage) + return nil + } + // reinstate the old inner atom. + let newInner = currentInnerAtom; + currentInnerAtom = oldInner; + return newInner; + } else if command == "overline" { + // The overline command has 1 arguments + let over = MTOverLine() + over.innerList = self.buildInternal(true) + return over + } else if command == "underline" { + // The underline command has 1 arguments + let under = MTUnderLine() + under.innerList = self.buildInternal(true) + return under + } else if command == "substack" { + // \substack reads ONE braced argument containing rows separated by \\ + // Similar to how \frac reads {numerator}{denominator} + + // Read the braced content using standard pattern + let content = self.buildInternal(true) + + if content == nil { + return nil + } + + // The content may already be a table if \\ was encountered + // Check if we got a table from the \\ parsing + if content!.atoms.count == 1, let tableAtom = content!.atoms.first as? MTMathTable { + return tableAtom + } + + // Otherwise, single row - wrap in table + var rows = [[MTMathList]]() + rows.append([content!]) + + var error: NSError? = self.error + let table = MTMathAtomFactory.table(withEnvironment: nil, rows: rows, error: &error) + if table == nil && self.error == nil { + self.error = error + return nil + } + + return table + } else if command == "begin" { + let env = self.readEnvironment() + if env == nil { + return nil; + } + let table = self.buildTable(env: env, firstList:nil, isRow:false) + return table + } else if command == "color" { + // A color command has 2 arguments + let mathColor = MTMathColor() + let color = self.readColor() + if color == nil { + return nil; + } + mathColor.colorString = color! + mathColor.innerList = self.buildInternal(true) + return mathColor + } else if command == "textcolor" { + // A textcolor command has 2 arguments + let mathColor = MTMathTextColor() + let color = self.readColor() + if color == nil { + return nil; + } + mathColor.colorString = color! + mathColor.innerList = self.buildInternal(true) + return mathColor + } else if command == "colorbox" { + // A color command has 2 arguments + let mathColorbox = MTMathColorbox() + let color = self.readColor() + if color == nil { + return nil; + } + mathColorbox.colorString = color! + mathColorbox.innerList = self.buildInternal(true) + return mathColorbox + } else if command == "pmod" { + // A pmod command has 1 argument - creates (mod n) + let inner = MTInner() + inner.leftBoundary = MTMathAtomFactory.boundary(forDelimiter: "(") + inner.rightBoundary = MTMathAtomFactory.boundary(forDelimiter: ")") + + let innerList = MTMathList() + + // Add the "mod" operator (upright text) + let modOperator = MTMathAtomFactory.atom(forLatexSymbol: "mod")! + innerList.add(modOperator) + + // Add medium space between "mod" and argument (6mu) + let space = MTMathSpace(space: 6.0) + innerList.add(space) + + // Parse the argument from braces + let argument = self.buildInternal(true) + if let argList = argument { + innerList.append(argList) + } + + inner.innerList = innerList + return inner + } else if command == "not" { + // Handle \not command with lookahead for comprehensive negation support + let nextCommand = self.peekNextCommand() + + if let negatedUnicode = Self.notCombinations[nextCommand] { + self.consumeNextCommand() // Remove base symbol from stream + return MTMathAtom(type: .relation, value: negatedUnicode) + } else { + let errorMessage = "Unsupported \\not\\\(nextCommand) combination" + self.setError(.invalidCommand, message: errorMessage) + return nil + } + } else if let sizeMultiplier = Self.delimiterSizeCommands[command] { + // Handle \big, \Big, \bigg, \Bigg and their variants + let delim = self.readDelimiter() + if delim == nil { + let errorMessage = "Missing delimiter for \\\(command)" + self.setError(.missingDelimiter, message: errorMessage) + return nil + } + let boundary = MTMathAtomFactory.boundary(forDelimiter: delim!) + if boundary == nil { + let errorMessage = "Invalid delimiter for \\\(command): \(delim!)" + self.setError(.invalidDelimiter, message: errorMessage) + return nil + } + + // Create MTInner with explicit delimiter height + let inner = MTInner() + + // Determine if this is a left, right, or middle delimiter based on command suffix + let isLeft = command.hasSuffix("l") + let isRight = command.hasSuffix("r") + // let isMiddle = command.hasSuffix("m") // For future use + + if isLeft { + inner.leftBoundary = boundary + inner.rightBoundary = MTMathAtomFactory.boundary(forDelimiter: ".") + } else if isRight { + inner.leftBoundary = MTMathAtomFactory.boundary(forDelimiter: ".") + inner.rightBoundary = boundary + } else { + // For \big, \Big, \bigg, \Bigg and \bigm variants, use the delimiter on both sides + // but with empty inner content - it's just a sized delimiter + inner.leftBoundary = boundary + inner.rightBoundary = MTMathAtomFactory.boundary(forDelimiter: ".") + } + + inner.innerList = MTMathList() + inner.delimiterHeight = sizeMultiplier // Store multiplier, typesetter will compute actual height + + return inner + } else { + let errorMessage = "Invalid command \\\(command)" + self.setError(.invalidCommand, message:errorMessage) + return nil; + } + } + + mutating func readColor() -> String? { + if !self.expectCharacter("{") { + // We didn't find an opening brace, so no env found. + self.setError(.characterNotFound, message:"Missing {") + return nil; + } + + // Ignore spaces and nonascii. + self.skipSpaces() + + // a string of all upper and lower case characters. + var mutable = "" + while self.hasCharacters { + let ch = self.getNextCharacter() + if ch == "#" || (ch >= "A" && ch <= "Z") || (ch >= "a" && ch <= "z") || (ch >= "0" && ch <= "9") { + mutable.append(ch) // appendString:[NSString stringWithCharacters:&ch length:1]]; + } else { + // we went too far + self.unlookCharacter() + break; + } + } + + if !self.expectCharacter("}") { + // We didn't find an closing brace, so invalid format. + self.setError(.characterNotFound, message:"Missing }") + return nil; + } + return mutable; + } + + mutating func skipSpaces() { + while self.hasCharacters { + let ch = self.getNextCharacter().utf32Char + if ch < 0x21 || ch > 0x7E { + // skip non ascii characters and spaces + continue; + } else { + self.unlookCharacter() + return; + } + } + } + + static var fractionCommands: [String:[Character]] { + [ + "over": [], + "atop" : [], + "choose" : [ "(", ")"], + "brack" : [ "[", "]"], + "brace" : [ "{", "}"] + ] + } + + mutating func stopCommand(_ command: String, list:MTMathList, stopChar:Character?) -> MTMathList? { + if command == "right" { + if currentInnerAtom == nil { + let errorMessage = "Missing \\left"; + self.setError(.missingLeft, message:errorMessage) + return nil; + } + currentInnerAtom!.rightBoundary = self.getBoundaryAtom("right") + if currentInnerAtom!.rightBoundary == nil { + return nil; + } + // return the list read so far. + return list + } else if let delims = Self.fractionCommands[command] { + var frac:MTFraction! = nil; + if command == "over" { + frac = MTFraction() + } else { + frac = MTFraction(hasRule: false) + } + if delims.count == 2 { + frac.leftDelimiter = String(delims[0]) + frac.rightDelimiter = String(delims[1]) + } + frac.numerator = list; + frac.denominator = self.buildInternal(false, stopChar: stopChar) + if error != nil { + return nil; + } + let fracList = MTMathList() + fracList.add(frac) + return fracList + } else if command == "\\" || command == "cr" { + if currentEnv != nil { + // Stop the current list and increment the row count + currentEnv!.numRows+=1 + return list + } else { + // Create a new table with the current list and a default env + if let table = self.buildTable(env: nil, firstList:list, isRow:true) { + return MTMathList(atom: table) + } + } + } else if command == "end" { + if currentEnv == nil { + let errorMessage = "Missing \\begin"; + self.setError(.missingBegin, message:errorMessage) + return nil + } + let env = self.readEnvironment() + if env == nil { + return nil + } + if env! != currentEnv!.envName { + let errorMessage = "Begin environment name \(currentEnv!.envName ?? "(none)") does not match end name: \(env!)" + self.setError(.invalidEnv, message:errorMessage) + return nil + } + // Finish the current environment. + currentEnv!.ended = true + return list + } + return nil + } + + // Applies the modifier to the atom. Returns true if modifier applied. + mutating func applyModifier(_ modifier:String, atom:MTMathAtom?) -> Bool { + if modifier == "limits" { + if atom?.type != .largeOperator { + let errorMessage = "Limits can only be applied to an operator." + self.setError(.invalidLimits, message:errorMessage) + } else { + let op = atom as! MTLargeOperator + op.limits = true + } + return true + } else if modifier == "nolimits" { + if atom?.type != .largeOperator { + let errorMessage = "No limits can only be applied to an operator." + self.setError(.invalidLimits, message:errorMessage) + } else { + let op = atom as! MTLargeOperator + op.limits = false + } + return true + } + return false + } + + mutating func setError(_ code:MTParseErrors, message:String) { + // Only record the first error. + if error == nil { + error = NSError(domain: MTParseError, code: code.rawValue, userInfo: [ NSLocalizedDescriptionKey : message ]) + } + } + + mutating func atom(forCommand command: String) -> MTMathAtom? { + if let atom = MTMathAtomFactory.atom(forLatexSymbol: command) { + return atom + } + if let accent = MTMathAtomFactory.accent(withName: command) { + accent.innerList = self.buildInternal(true) + return accent + } else if command == "frac" { + let frac = MTFraction() + frac.numerator = self.buildInternal(true) + frac.denominator = self.buildInternal(true) + return frac + } else if command == "cfrac" { + let frac = MTFraction() + frac.isContinuedFraction = true + + // Parse optional alignment parameter [l], [r], [c] + skipSpaces() + if hasCharacters && string[currentCharIndex] == "[" { + _ = getNextCharacter() // consume '[' + if hasCharacters { + let alignmentChar = getNextCharacter() + if alignmentChar == "l" || alignmentChar == "r" || alignmentChar == "c" { + frac.alignment = String(alignmentChar) + } + } + // Consume closing ']' + if hasCharacters && string[currentCharIndex] == "]" { + _ = getNextCharacter() + } + } + + frac.numerator = self.buildInternal(true) + frac.denominator = self.buildInternal(true) + return frac + } else if command == "dfrac" { + // Display-style fraction command has 2 arguments + let frac = MTFraction() + let numerator = self.buildInternal(true) + let denominator = self.buildInternal(true) + + // Prepend \displaystyle to force display mode rendering + let displayStyle = MTMathStyle(style: .display) + numerator?.insert(displayStyle, at: 0) + denominator?.insert(displayStyle, at: 0) + + frac.numerator = numerator + frac.denominator = denominator + return frac + } else if command == "tfrac" { + // Text-style fraction command has 2 arguments + let frac = MTFraction() + let numerator = self.buildInternal(true) + let denominator = self.buildInternal(true) + + // Prepend \textstyle to force text mode rendering + let textStyle = MTMathStyle(style: .text) + numerator?.insert(textStyle, at: 0) + denominator?.insert(textStyle, at: 0) + + frac.numerator = numerator + frac.denominator = denominator + return frac + } else if command == "binom" { + let frac = MTFraction(hasRule: false) + frac.numerator = self.buildInternal(true) + frac.denominator = self.buildInternal(true) + frac.leftDelimiter = "(" + frac.rightDelimiter = ")" + return frac + } else if command == "bra" { + // Dirac bra notation: \bra{psi} -> ⟨psi| + let inner = MTInner() + inner.leftBoundary = MTMathAtomFactory.boundary(forDelimiter: "langle") + inner.rightBoundary = MTMathAtomFactory.boundary(forDelimiter: "|") + inner.innerList = self.buildInternal(true) + return inner + } else if command == "ket" { + // Dirac ket notation: \ket{psi} -> |psi⟩ + let inner = MTInner() + inner.leftBoundary = MTMathAtomFactory.boundary(forDelimiter: "|") + inner.rightBoundary = MTMathAtomFactory.boundary(forDelimiter: "rangle") + inner.innerList = self.buildInternal(true) + return inner + } else if command == "braket" { + // Dirac braket notation: \braket{phi}{psi} -> ⟨phi|psi⟩ + let inner = MTInner() + inner.leftBoundary = MTMathAtomFactory.boundary(forDelimiter: "langle") + inner.rightBoundary = MTMathAtomFactory.boundary(forDelimiter: "rangle") + let phi = self.buildInternal(true) + let psi = self.buildInternal(true) + let content = MTMathList() + if let phiList = phi { + for atom in phiList.atoms { + content.add(atom) + } + } + content.add(MTMathAtom(type: .ordinary, value: "|")) + if let psiList = psi { + for atom in psiList.atoms { + content.add(atom) + } + } + inner.innerList = content + return inner + } else if command == "operatorname" || command == "operatorname*" { + // \operatorname{name} creates a custom operator with proper spacing + // \operatorname*{name} creates an operator with limits above/below + let hasLimits = command.hasSuffix("*") + + let content = self.buildInternal(true) + var operatorName = "" + if let atoms = content?.atoms { + for atom in atoms { + operatorName += atom.nucleus + } + } + if operatorName.isEmpty { + self.setError(.invalidCommand, message: "Missing operator name for \\operatorname") + return nil + } + return MTLargeOperator(value: operatorName, limits: hasLimits) + } else if command == "sqrt" { + let rad = MTRadical() + guard self.hasCharacters else { + rad.radicand = self.buildInternal(true) + return rad + } + let char = self.getNextCharacter() + if char == "[" { + rad.degree = self.buildInternal(false, stopChar: "]") + rad.radicand = self.buildInternal(true) + } else { + self.unlookCharacter() + rad.radicand = self.buildInternal(true) + } + return rad + } else if command == "left" { + let oldInner = self.currentInnerAtom + self.currentInnerAtom = MTInner() + self.currentInnerAtom?.leftBoundary = self.getBoundaryAtom("left") + if self.currentInnerAtom?.leftBoundary == nil { + return nil + } + self.currentInnerAtom!.innerList = self.buildInternal(false) + if self.currentInnerAtom?.rightBoundary == nil { + self.setError(.missingRight, message: "Missing \\right") + return nil + } + let newInner = self.currentInnerAtom + currentInnerAtom = oldInner + return newInner + } else if command == "overline" { + let over = MTOverLine() + over.innerList = self.buildInternal(true) + + return over + } else if command == "underline" { + let under = MTUnderLine() + under.innerList = self.buildInternal(true) + + return under + } else if command == "begin" { + if let env = self.readEnvironment() { + // Check if this is a starred matrix environment and read optional alignment + var alignment: MTColumnAlignment? = nil + if env.hasSuffix("*") { + alignment = self.readOptionalAlignment() + if self.error != nil { + return nil + } + } + + let table = self.buildTable(env: env, alignment: alignment, firstList: nil, isRow: false) + return table + } else { + return nil + } + } else if command == "color" { + // A color command has 2 arguments + let mathColor = MTMathColor() + mathColor.colorString = self.readColor()! + mathColor.innerList = self.buildInternal(true) + return mathColor + } else if command == "colorbox" { + // A color command has 2 arguments + let mathColorbox = MTMathColorbox() + mathColorbox.colorString = self.readColor()! + mathColorbox.innerList = self.buildInternal(true) + return mathColorbox + } else { + self.setError(.invalidCommand, message: "Invalid command \\\(command)") + return nil + } + } + + mutating func readEnvironment() -> String? { + if !self.expectCharacter("{") { + // We didn't find an opening brace, so no env found. + self.setError(.characterNotFound, message: "Missing {") + return nil + } + + self.skipSpaces() + let env = self.readString() + + if !self.expectCharacter("}") { + // We didn"t find an closing brace, so invalid format. + self.setError(.characterNotFound, message: "Missing }") + return nil; + } + return env + } + + /// Reads optional alignment parameter for starred matrix environments: [r], [l], or [c] + mutating func readOptionalAlignment() -> MTColumnAlignment? { + self.skipSpaces() + + // Check if there's an opening bracket + guard hasCharacters && string[currentCharIndex] == "[" else { + return nil + } + + _ = getNextCharacter() // consume '[' + self.skipSpaces() + + guard hasCharacters else { + self.setError(.characterNotFound, message: "Missing alignment specifier after [") + return nil + } + + let alignChar = getNextCharacter() + let alignment: MTColumnAlignment? + + switch alignChar { + case "l": + alignment = .left + case "c": + alignment = .center + case "r": + alignment = .right + default: + self.setError(.invalidEnv, message: "Invalid alignment specifier: \(alignChar). Must be l, c, or r") + return nil + } + + self.skipSpaces() + + if !self.expectCharacter("]") { + self.setError(.characterNotFound, message: "Missing ] after alignment specifier") + return nil + } + + return alignment + } + + func MTAssertNotSpace(_ ch: Character) { + assert(ch >= "\u{21}" && ch <= "\u{7E}", "Expected non-space character \(ch)") + } + + mutating func buildTable(env: String?, alignment: MTColumnAlignment? = nil, firstList: MTMathList?, isRow: Bool) -> MTMathAtom? { + // Save the current env till an new one gets built. + let oldEnv = self.currentEnv + + currentEnv = MTEnvProperties(name: env, alignment: alignment) + + var currentRow = 0 + var currentCol = 0 + + var rows = [[MTMathList]]() + rows.append([MTMathList]()) + if firstList != nil { + rows[currentRow].append(firstList!) + if isRow { + currentEnv!.numRows+=1 + currentRow+=1 + rows.append([MTMathList]()) + } else { + currentCol+=1 + } + } + while !currentEnv!.ended && self.hasCharacters { + let list = self.buildInternal(false) + if list == nil { + // If there is an error building the list, bail out early. + return nil + } + rows[currentRow].append(list!) + currentCol+=1 + if currentEnv!.numRows > currentRow { + currentRow = currentEnv!.numRows + rows.append([MTMathList]()) + currentCol = 0 + } + } + + if !currentEnv!.ended && currentEnv!.envName != nil { + self.setError(.missingEnd, message: "Missing \\end") + return nil + } + + var error:NSError? = self.error + let table = MTMathAtomFactory.table(withEnvironment: currentEnv?.envName, alignment: currentEnv?.alignment, rows: rows, error: &error) + if table == nil && self.error == nil { + self.error = error + return nil + } + self.currentEnv = oldEnv + return table + } + + mutating func getBoundaryAtom(_ delimiterType: String) -> MTMathAtom? { + let delim = self.readDelimiter() + if delim == nil { + let errorMessage = "Missing delimiter for \\\(delimiterType)" + self.setError(.missingDelimiter, message:errorMessage) + return nil + } + let boundary = MTMathAtomFactory.boundary(forDelimiter: delim!) + if boundary == nil { + let errorMessage = "Invalid delimiter for \(delimiterType): \(delim!)" + self.setError(.invalidDelimiter, message:errorMessage) + return nil + } + return boundary + } + + mutating func readDelimiter() -> String? { + self.skipSpaces() + while self.hasCharacters { + let char = self.getNextCharacter() + MTAssertNotSpace(char) + if char == "\\" { + let command = self.readCommand() + if command == "|" { + return "||" + } + return command + } else { + return String(char) + } + } + return nil + } + + mutating func readCommand() -> String { + let singleChars = "{}$#%_| ,>;!\\" + if self.hasCharacters { + let char = self.getNextCharacter() + if let _ = singleChars.firstIndex(of: char) { + return String(char) + } else { + self.unlookCharacter() + } + } + return self.readString() + } + + mutating func readString() -> String { + // a string of all upper and lower case characters (and asterisks for starred environments) + var output = "" + while self.hasCharacters { + let char = self.getNextCharacter() + if char.isLowercase || char.isUppercase || char == "*" { + output.append(char) + } else { + self.unlookCharacter() + break + } + } + return output + } +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTMathListDisplay.swift b/third-party/SwiftMath/Sources/MathRender/MTMathListDisplay.swift new file mode 100755 index 0000000000..a0fa47c879 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTMathListDisplay.swift @@ -0,0 +1,881 @@ +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by Kostub Deshmukh. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation +import QuartzCore +import CoreText +import SwiftUI + +func isIos6Supported() -> Bool { + if !MTDisplay.initialized { +#if os(iOS) || os(visionOS) + let reqSysVer = "6.0" + let currSysVer = UIDevice.current.systemVersion + if currSysVer.compare(reqSysVer, options: .numeric) != .orderedAscending { + MTDisplay.supported = true + } +#else + MTDisplay.supported = true +#endif + MTDisplay.initialized = true + } + return MTDisplay.supported +} + +// The Downshift protocol allows an MTDisplay to be shifted down by a given amount. +protocol DownShift { + var shiftDown:CGFloat { set get } +} + +// MARK: - MTDisplay + +/// The base class for rendering a math equation. +public class MTDisplay:NSObject { + + // needed for isIos6Supported() func above + static var initialized = false + static var supported = false + + /// Draws itself in the given graphics context. + public func draw(_ context:CGContext) { + if self.localBackgroundColor != nil { + context.saveGState() + context.setBlendMode(.normal) + context.setFillColor(self.localBackgroundColor!.cgColor) + context.fill(self.displayBounds()) + context.restoreGState() + } + } + + /// Gets the bounding rectangle for the MTDisplay + func displayBounds() -> CGRect { + CGRectMake(self.position.x, self.position.y - self.descent, self.width, self.ascent + self.descent) + } + + /// For debugging. Shows the object in quick look in Xcode. +#if os(iOS) || os(visionOS) + func debugQuickLookObject() -> Any { + let size = CGSizeMake(self.width, self.ascent + self.descent); + UIGraphicsBeginImageContext(size); + + // get a reference to that context we created + let context = UIGraphicsGetCurrentContext()! + // translate/flip the graphics context (for transforming from CG* coords to UI* coords + context.translateBy(x: 0, y: size.height); + context.scaleBy(x: 1.0, y: -1.0); + // move the position to (0,0) + context.translateBy(x: -self.position.x, y: -self.position.y); + + // Move the line up by self.descent + context.translateBy(x: 0, y: self.descent); + // Draw self on context + self.draw(context) + + // generate a new UIImage from the graphics context we drew onto + let img = UIGraphicsGetImageFromCurrentImageContext() + return img as Any + } +#endif + + /// The distance from the axis to the top of the display + public var ascent:CGFloat = 0 + /// The distance from the axis to the bottom of the display + public var descent:CGFloat = 0 + /// The width of the display + public var width:CGFloat = 0 + /// Position of the display with respect to the parent view or display. + var position = CGPoint.zero + /// The range of characters supported by this item + public var range:NSRange=NSMakeRange(0, 0) + /// Whether the display has a subscript/superscript following it. + public var hasScript:Bool = false + /// The text color for this display + var textColor: MTColor? + /// The local color, if the color was mutated local with the color command + var localTextColor: MTColor? + /// The background color for this display + var localBackgroundColor: MTColor? + +} + +/// Special class to be inherited from that implements the DownShift protocol +class MTDisplayDS : MTDisplay, DownShift { + + var shiftDown: CGFloat = 0 + +} + +// MARK: - MTCTLineDisplay + +/// A rendering of a single CTLine as an MTDisplay +public class MTCTLineDisplay : MTDisplay { + + /// The CTLine being displayed + public var line:CTLine! + /// The attributed string used to generate the CTLineRef. Note setting this does not reset the dimensions of + /// the display. So set only when + var attributedString:NSAttributedString? { + didSet { + line = CTLineCreateWithAttributedString(attributedString!) + } + } + + /// An array of MTMathAtoms that this CTLine displays. Used for indexing back into the MTMathList + public fileprivate(set) var atoms = [MTMathAtom]() + + init(withString attrString:NSAttributedString?, position:CGPoint, range:NSRange, font:MTFont?, atoms:[MTMathAtom]) { + super.init() + self.position = position + self.attributedString = attrString + self.line = CTLineCreateWithAttributedString(attrString!) + self.range = range + self.atoms = atoms + // We can't use typographic bounds here as the ascent and descent returned are for the font and not for the line. + // CRITICAL FIX for accented character clipping: + // Use the MAXIMUM of typographic width and visual width to account for glyph overhang. + // - Typographic width = advance width (how far the cursor moves) + // - Visual width = actual glyph extent (CGRectGetMaxX of glyph path bounds) + // Some glyphs (especially italic/oblique accented characters) extend beyond their advance width. + // Using max() ensures we account for overhang while maintaining proper spacing for normal glyphs. + let typographicWidth = CGFloat(CTLineGetTypographicBounds(line, nil, nil, nil)) + if isIos6Supported() { + let bounds = CTLineGetBoundsWithOptions(line, .useGlyphPathBounds) + self.ascent = max(0, CGRectGetMaxY(bounds) - 0); + self.descent = max(0, 0 - CGRectGetMinY(bounds)); + // Use the maximum of visual and typographic width to handle both: + // 1. Overhanging glyphs (visual > typographic) - prevents clipping + // 2. Normal glyphs (typographic >= visual) - maintains correct spacing + let visualWidth = CGRectGetMaxX(bounds) + self.width = max(typographicWidth, visualWidth); + } else { + // Our own implementation of the ios6 function to get glyph path bounds. + self.computeDimensions(font, typographicWidth: typographicWidth) + } + } + + override var textColor: MTColor? { + set { + super.textColor = newValue + let attrStr = attributedString!.mutableCopy() as! NSMutableAttributedString + let foregroundColor = NSAttributedString.Key(kCTForegroundColorAttributeName as String) + attrStr.addAttribute(foregroundColor, value:self.textColor!.cgColor, range:NSMakeRange(0, attrStr.length)) + self.attributedString = attrStr + } + get { super.textColor } + } + + func computeDimensions(_ font:MTFont?, typographicWidth: CGFloat) { + let runs = CTLineGetGlyphRuns(line) as NSArray + var maxVisualWidth: CGFloat = 0 + var currentX: CGFloat = 0 + + for obj in runs { + let run = obj as! CTRun? + let numGlyphs = CTRunGetGlyphCount(run!) + var glyphs = [CGGlyph]() + glyphs.reserveCapacity(numGlyphs) + CTRunGetGlyphs(run!, CFRangeMake(0, numGlyphs), &glyphs); + let bounds = CTFontGetBoundingRectsForGlyphs(font!.ctFont, .horizontal, glyphs, nil, numGlyphs); + let ascent = max(0, CGRectGetMaxY(bounds) - 0); + // Descent is how much the line goes below the origin. However if the line is all above the origin, then descent can't be negative. + let descent = max(0, 0 - CGRectGetMinY(bounds)); + if (ascent > self.ascent) { + self.ascent = ascent; + } + if (descent > self.descent) { + self.descent = descent; + } + + // Calculate visual width using glyph extent + // Get the rightmost edge of this run's glyphs + let runVisualWidth = CGRectGetMaxX(bounds) + let runRightEdge = currentX + runVisualWidth + + // Get advances to know where next run starts + var advances = [CGSize](repeating: CGSize.zero, count: numGlyphs) + CTRunGetAdvances(run!, CFRangeMake(0, numGlyphs), &advances) + for advance in advances { + currentX += advance.width + } + + if (runRightEdge > maxVisualWidth) { + maxVisualWidth = runRightEdge + } + } + + // Use maximum of typographic and visual width + self.width = max(typographicWidth, maxVisualWidth) + } + + override public func draw(_ context: CGContext) { + super.draw(context) + context.saveGState() + + context.textPosition = self.position + CTLineDraw(line, context) + + context.restoreGState() + } + +} + +// MARK: - MTMathListDisplay + +/// An MTLine is a rendered form of MTMathList in one line. +/// It can render itself using the draw method. +public class MTMathListDisplay : MTDisplay { + + /** + The type of position for a line, i.e. subscript/superscript or regular. + */ + public enum LinePosition : Int { + /// Regular + case regular + /// Positioned at a subscript + case ssubscript + /// Positioned at a superscript + case superscript + } + + /// Where the line is positioned + public var type:LinePosition = .regular + /// An array of MTDisplays which are positioned relative to the position of the + /// the current display. + public fileprivate(set) var subDisplays = [MTDisplay]() + /// If a subscript or superscript this denotes the location in the parent MTList. For a + /// regular list this is NSNotFound + public var index: Int = 0 + + init(withDisplays displays:[MTDisplay], range:NSRange) { + super.init() + self.subDisplays = displays + self.position = CGPoint.zero + self.type = .regular + self.index = NSNotFound + self.range = range + self.recomputeDimensions() + } + + override var textColor: MTColor? { + set { + super.textColor = newValue + for displayAtom in self.subDisplays { + if displayAtom.localTextColor == nil { + displayAtom.textColor = newValue + } else { + displayAtom.textColor = displayAtom.localTextColor + } + } + } + get { super.textColor } + } + + override public func draw(_ context: CGContext) { + super.draw(context) + context.saveGState() + + // Make the current position the origin as all the positions of the sub atoms are relative to the origin. + context.translateBy(x: self.position.x, y: self.position.y) + context.textPosition = CGPoint.zero + + // draw each atom separately + for displayAtom in self.subDisplays { + displayAtom.draw(context) + } + + context.restoreGState() + } + + func recomputeDimensions() { + var max_ascent:CGFloat = 0 + var max_descent:CGFloat = 0 + var max_width:CGFloat = 0 + for atom in self.subDisplays { + let ascent = max(0, atom.position.y + atom.ascent); + if (ascent > max_ascent) { + max_ascent = ascent; + } + + let descent = max(0, 0 - (atom.position.y - atom.descent)); + if (descent > max_descent) { + max_descent = descent; + } + let width = atom.width + atom.position.x; + if (width > max_width) { + max_width = width; + } + } + self.ascent = max_ascent; + self.descent = max_descent; + self.width = max_width; + } + +} + +// MARK: - MTFractionDisplay + +/// Rendering of an MTFraction as an MTDisplay +public class MTFractionDisplay : MTDisplay { + + /** A display representing the numerator of the fraction. Its position is relative + to the parent and is not treated as a sub-display. + */ + public fileprivate(set) var numerator:MTMathListDisplay? + /** A display representing the denominator of the fraction. Its position is relative + to the parent is not treated as a sub-display. + */ + public fileprivate(set) var denominator:MTMathListDisplay? + + var numeratorUp:CGFloat=0 { didSet { self.updateNumeratorPosition() } } + var denominatorDown:CGFloat=0 { didSet { self.updateDenominatorPosition() } } + var linePosition:CGFloat=0 + var lineThickness:CGFloat=0 + + init(withNumerator numerator:MTMathListDisplay?, denominator:MTMathListDisplay?, position:CGPoint, range:NSRange) { + super.init() + self.numerator = numerator; + self.denominator = denominator; + self.position = position; + + // CRITICAL FIX: Handle invalid ranges gracefully + // When table cells are typeset independently with maxWidth, atoms may have + // ranges that are invalid in the cell's context (e.g., (0,0) or other issues) + // Instead of crashing with assertion, normalize the range + if range.length == 0 { + // Create a dummy range with length 1 at the given location + self.range = NSMakeRange(range.location, 1) + } else { + self.range = range; + // Still assert for debugging if range length is something unexpected + assert(self.range.length == 1, "Fraction range length not 1 - range (\(range.location), \(range.length)") + } + } + + override public var ascent:CGFloat { + set { super.ascent = newValue } + get { (numerator?.ascent ?? 0) + self.numeratorUp } + } + + override public var descent:CGFloat { + set { super.descent = newValue } + get { (denominator?.descent ?? 0) + self.denominatorDown } + } + + override public var width:CGFloat { + set { super.width = newValue } + get { max(numerator?.width ?? 0, denominator?.width ?? 0) } + } + + func updateDenominatorPosition() { + guard denominator != nil else { return } + denominator!.position = CGPointMake(self.position.x + (self.width - denominator!.width)/2, self.position.y - self.denominatorDown) + } + + func updateNumeratorPosition() { + guard numerator != nil else { return } + numerator!.position = CGPointMake(self.position.x + (self.width - numerator!.width)/2, self.position.y + self.numeratorUp) + } + + override var position: CGPoint { + set { + super.position = newValue + self.updateDenominatorPosition() + self.updateNumeratorPosition() + } + get { super.position } + } + + override var textColor: MTColor? { + set { + super.textColor = newValue + numerator?.textColor = newValue + denominator?.textColor = newValue + } + get { super.textColor } + } + + override public func draw(_ context:CGContext) { + super.draw(context) + numerator?.draw(context) + denominator?.draw(context) + + context.saveGState() + + self.textColor?.setStroke() + + // draw the horizontal line + // Note: line thickness of 0 draws the thinnest possible line - we want no line so check for 0s + if self.lineThickness > 0 { + let path = MTBezierPath() + path.move(to: CGPointMake(self.position.x, self.position.y + self.linePosition)) + path.addLine(to: CGPointMake(self.position.x + self.width, self.position.y + self.linePosition)) + path.lineWidth = self.lineThickness + path.stroke() + } + + context.restoreGState() + } + +} + +// MARK: - MTRadicalDisplay + +/// Rendering of an MTRadical as an MTDisplay +class MTRadicalDisplay : MTDisplay { + + /** A display representing the radicand of the radical. Its position is relative + to the parent is not treated as a sub-display. + */ + public fileprivate(set) var radicand:MTMathListDisplay? + /** A display representing the degree of the radical. Its position is relative + to the parent is not treated as a sub-display. + */ + public fileprivate(set) var degree:MTMathListDisplay? + + override var position: CGPoint { + set { + super.position = newValue + self.updateRadicandPosition() + } + get { super.position } + } + + override var textColor: MTColor? { + set { + super.textColor = newValue + self.radicand?.textColor = newValue + self.degree?.textColor = newValue + } + get { super.textColor } + } + + private var _radicalGlyph:MTDisplay? + private var _radicalShift:CGFloat=0 + + var topKern:CGFloat=0 + var lineThickness:CGFloat=0 + + init(withRadicand radicand:MTMathListDisplay?, glyph:MTDisplay, position:CGPoint, range:NSRange) { + super.init() + self.radicand = radicand + _radicalGlyph = glyph + _radicalShift = 0 + + self.position = position + self.range = range + } + + func setDegree(_ degree:MTMathListDisplay?, fontMetrics:MTFontMathTable?) { + // sets up the degree of the radical + var kernBefore = fontMetrics!.radicalKernBeforeDegree; + let kernAfter = fontMetrics!.radicalKernAfterDegree; + let raise = fontMetrics!.radicalDegreeBottomRaisePercent * (self.ascent - self.descent); + + // The layout is: + // kernBefore, raise, degree, kernAfter, radical + self.degree = degree; + + // the radical is now shifted by kernBefore + degree.width + kernAfter + _radicalShift = kernBefore + degree!.width + kernAfter; + if _radicalShift < 0 { + // we can't have the radical shift backwards, so instead we increase the kernBefore such + // that _radicalShift will be 0. + kernBefore -= _radicalShift; + _radicalShift = 0; + } + + // Note: position of degree is relative to parent. + self.degree!.position = CGPointMake(self.position.x + kernBefore, self.position.y + raise); + // Update the width by the _radicalShift + self.width = _radicalShift + _radicalGlyph!.width + self.radicand!.width; + // update the position of the radicand + self.updateRadicandPosition() + } + + func updateRadicandPosition() { + // The position of the radicand includes the position of the MTRadicalDisplay + // This is to make the positioning of the radical consistent with fractions and + // have the cursor position finding algorithm work correctly. + // move the radicand by the width of the radical sign + self.radicand!.position = CGPointMake(self.position.x + _radicalShift + _radicalGlyph!.width, self.position.y); + } + + override public func draw(_ context: CGContext) { + super.draw(context) + + // draw the radicand & degree at its position + self.radicand?.draw(context) + self.degree?.draw(context) + + context.saveGState(); + self.textColor?.setStroke() + self.textColor?.setFill() + + // Make the current position the origin as all the positions of the sub atoms are relative to the origin. + context.translateBy(x: self.position.x + _radicalShift, y: self.position.y); + context.textPosition = CGPoint.zero + + // Draw the glyph. + _radicalGlyph?.draw(context) + + // Draw the VBOX + // for the kern of, we don't need to draw anything. + let heightFromTop = topKern; + + // draw the horizontal line with the given thickness + let path = MTBezierPath() + let lineStart = CGPointMake(_radicalGlyph!.width, self.ascent - heightFromTop - self.lineThickness / 2); // subtract half the line thickness to center the line + let lineEnd = CGPointMake(lineStart.x + self.radicand!.width, lineStart.y); + path.move(to: lineStart) + path.addLine(to: lineEnd) + path.lineWidth = lineThickness + path.lineCapStyle = .round + path.stroke() + + context.restoreGState(); + } +} + +// MARK: - MTGlyphDisplay + +/// Rendering a glyph as a display +class MTGlyphDisplay : MTDisplayDS { + + var glyph:CGGlyph! + var font:MTFont? + /// Horizontal scale factor for stretching glyphs (1.0 = no scaling) + var scaleX: CGFloat = 1.0 + + init(withGlpyh glyph:CGGlyph, range:NSRange, font:MTFont?) { + super.init() + self.font = font + self.glyph = glyph + + self.position = CGPoint.zero + self.range = range + } + + override public func draw(_ context: CGContext) { + super.draw(context) + context.saveGState() + + self.textColor?.setFill() + + // Make the current position the origin as all the positions of the sub atoms are relative to the origin. + + context.translateBy(x: self.position.x, y: self.position.y - self.shiftDown); + + // Apply horizontal scaling if needed (for stretchy arrows) + if scaleX != 1.0 { + context.scaleBy(x: scaleX, y: 1.0) + } + + context.textPosition = CGPoint.zero + + var pos = CGPoint.zero + CTFontDrawGlyphs(font!.ctFont, &glyph, &pos, 1, context); + + context.restoreGState(); + } + + override var ascent:CGFloat { + set { super.ascent = newValue } + get { super.ascent - self.shiftDown } + } + + override var descent:CGFloat { + set { super.descent = newValue } + get { super.descent + self.shiftDown } + } +} + +// MARK: - MTGlyphConstructionDisplay + +class MTGlyphConstructionDisplay:MTDisplayDS { + var glyphs = [CGGlyph]() + var positions = [CGPoint]() + var font:MTFont? + var numGlyphs:Int=0 + + init(withGlyphs glyphs:[NSNumber?], offsets:[NSNumber?], font:MTFont?) { + super.init() + assert(glyphs.count == offsets.count, "Glyphs and offsets need to match") + self.numGlyphs = glyphs.count; + self.glyphs = [CGGlyph](repeating: CGGlyph(), count: self.numGlyphs) //malloc(sizeof(CGGlyph) * _numGlyphs); + self.positions = [CGPoint](repeating: CGPoint.zero, count: self.numGlyphs) //malloc(sizeof(CGPoint) * _numGlyphs); + for i in 0 ..< self.numGlyphs { + self.glyphs[i] = glyphs[i]!.uint16Value + self.positions[i] = CGPointMake(0, CGFloat(offsets[i]!.floatValue)) + } + self.font = font + self.position = CGPoint.zero + } + + override public func draw(_ context: CGContext) { + super.draw(context) + context.saveGState() + + self.textColor?.setFill() + + // Make the current position the origin as all the positions of the sub atoms are relative to the origin. + context.translateBy(x: self.position.x, y: self.position.y - self.shiftDown) + context.textPosition = CGPoint.zero + + // Draw the glyphs. + CTFontDrawGlyphs(font!.ctFont, glyphs, positions, numGlyphs, context) + + context.restoreGState() + } + + override var ascent:CGFloat { + set { super.ascent = newValue } + get { super.ascent - self.shiftDown } + } + + override var descent:CGFloat { + set { super.descent = newValue } + get { super.descent + self.shiftDown } + } + +} + +// MARK: - MTLargeOpLimitsDisplay + +/// Rendering a large operator with limits as an MTDisplay +class MTLargeOpLimitsDisplay : MTDisplay { + + /** A display representing the upper limit of the large operator. Its position is relative + to the parent is not treated as a sub-display. + */ + var upperLimit:MTMathListDisplay? + /** A display representing the lower limit of the large operator. Its position is relative + to the parent is not treated as a sub-display. + */ + var lowerLimit:MTMathListDisplay? + + var limitShift:CGFloat=0 + var upperLimitGap:CGFloat=0 { didSet { self.updateUpperLimitPosition() } } + var lowerLimitGap:CGFloat=0 { didSet { self.updateLowerLimitPosition() } } + var extraPadding:CGFloat=0 + + var nucleus:MTDisplay? + + init(withNucleus nucleus:MTDisplay?, upperLimit:MTMathListDisplay?, lowerLimit:MTMathListDisplay?, limitShift:CGFloat, extraPadding:CGFloat) { + super.init() + self.upperLimit = upperLimit; + self.lowerLimit = lowerLimit; + self.nucleus = nucleus; + + var maxWidth = max(nucleus!.width, upperLimit?.width ?? 0) + maxWidth = max(maxWidth, lowerLimit?.width ?? 0) + + self.limitShift = limitShift; + self.upperLimitGap = 0; + self.lowerLimitGap = 0; + self.extraPadding = extraPadding; // corresponds to \xi_13 in TeX + self.width = maxWidth; + } + + override var ascent:CGFloat { + set { super.ascent = newValue } + get { + if self.upperLimit != nil { + return nucleus!.ascent + extraPadding + self.upperLimit!.ascent + upperLimitGap + self.upperLimit!.descent + } else { + return nucleus!.ascent + } + } + } + + override var descent:CGFloat { + set { super.descent = newValue } + get { + if self.lowerLimit != nil { + return nucleus!.descent + extraPadding + lowerLimitGap + self.lowerLimit!.descent + self.lowerLimit!.ascent; + } else { + return nucleus!.descent; + } + } + } + + override var position: CGPoint { + set { + super.position = newValue + self.updateLowerLimitPosition() + self.updateUpperLimitPosition() + self.updateNucleusPosition() + } + get { super.position } + } + + func updateLowerLimitPosition() { + if self.lowerLimit != nil { + // The position of the lower limit includes the position of the MTLargeOpLimitsDisplay + // This is to make the positioning of the radical consistent with fractions and radicals + // Move the starting point to below the nucleus leaving a gap of _lowerLimitGap and subtract + // the ascent to to get the baseline. Also center and shift it to the left by _limitShift. + self.lowerLimit!.position = CGPointMake(self.position.x - limitShift + (self.width - lowerLimit!.width)/2, + self.position.y - nucleus!.descent - lowerLimitGap - self.lowerLimit!.ascent); + } + } + + func updateUpperLimitPosition() { + if self.upperLimit != nil { + // The position of the upper limit includes the position of the MTLargeOpLimitsDisplay + // This is to make the positioning of the radical consistent with fractions and radicals + // Move the starting point to above the nucleus leaving a gap of _upperLimitGap and add + // the descent to to get the baseline. Also center and shift it to the right by _limitShift. + self.upperLimit!.position = CGPointMake(self.position.x + limitShift + (self.width - self.upperLimit!.width)/2, + self.position.y + nucleus!.ascent + upperLimitGap + self.upperLimit!.descent); + } + } + + func updateNucleusPosition() { + // Center the nucleus + nucleus?.position = CGPointMake(self.position.x + (self.width - nucleus!.width)/2, self.position.y); + } + + override var textColor: MTColor? { + set { + super.textColor = newValue + self.upperLimit?.textColor = newValue + self.lowerLimit?.textColor = newValue + nucleus?.textColor = newValue + } + get { super.textColor } + } + + override func draw(_ context:CGContext) { + super.draw(context) + // Draw the elements. + self.upperLimit?.draw(context) + self.lowerLimit?.draw(context) + nucleus?.draw(context) + } + +} + +// MARK: - MTLineDisplay + +/// Rendering of an list with an overline or underline +class MTLineDisplay : MTDisplay { + + /** A display representing the inner list that is underlined. Its position is relative + to the parent is not treated as a sub-display. + */ + var inner:MTMathListDisplay? + var lineShiftUp:CGFloat=0 + var lineThickness:CGFloat=0 + + init(withInner inner:MTMathListDisplay?, position:CGPoint, range:NSRange) { + super.init() + self.inner = inner; + + self.position = position; + self.range = range; + } + + override var textColor: MTColor? { + set { + super.textColor = newValue + inner?.textColor = newValue + } + get { super.textColor } + } + + override var position: CGPoint { + set { + super.position = newValue + self.updateInnerPosition() + } + get { super.position } + } + + override func draw(_ context:CGContext) { + super.draw(context) + self.inner?.draw(context) + + context.saveGState(); + + self.textColor?.setStroke() + + // draw the horizontal line + let path = MTBezierPath() + let lineStart = CGPointMake(self.position.x, self.position.y + self.lineShiftUp); + let lineEnd = CGPointMake(lineStart.x + self.inner!.width, lineStart.y); + path.move(to:lineStart) + path.addLine(to: lineEnd) + path.lineWidth = self.lineThickness; + path.stroke() + + context.restoreGState(); + } + + func updateInnerPosition() { + self.inner?.position = CGPointMake(self.position.x, self.position.y); + } + +} + +// MARK: - MTAccentDisplay + +/// Rendering an accent as a display +class MTAccentDisplay : MTDisplay { + + /** A display representing the inner list that is accented. Its position is relative + to the parent is not treated as a sub-display. + */ + var accentee:MTMathListDisplay? + + /** A display representing the accent. Its position is relative to the current display. + */ + var accent:MTGlyphDisplay? + + init(withAccent glyph:MTGlyphDisplay?, accentee:MTMathListDisplay?, range:NSRange) { + super.init() + self.accent = glyph + self.accentee = accentee + self.accentee?.position = CGPoint.zero + self.range = range + } + + override var textColor: MTColor? { + set { + super.textColor = newValue + accentee?.textColor = newValue + accent?.textColor = newValue + } + get { super.textColor } + } + + override var position: CGPoint { + set { + super.position = newValue + self.updateAccenteePosition() + } + get { super.position } + } + + func updateAccenteePosition() { + self.accentee?.position = CGPointMake(self.position.x, self.position.y); + } + + override func draw(_ context:CGContext) { + super.draw(context) + self.accentee?.draw(context) + + context.saveGState(); + context.translateBy(x: self.position.x, y: self.position.y); + context.textPosition = CGPoint.zero + + self.accent?.draw(context) + + context.restoreGState(); + } + +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTMathListIndex.swift b/third-party/SwiftMath/Sources/MathRender/MTMathListIndex.swift new file mode 100755 index 0000000000..34bd6bfbb0 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTMathListIndex.swift @@ -0,0 +1,197 @@ +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by Kostub Deshmukh. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation + +/** + * An index that points to a particular character in the MTMathList. The index is a LinkedList that represents + * a path from the beginning of the MTMathList to reach a particular atom in the list. The next node of the path + * is represented by the subIndex. The path terminates when the subIndex is nil. + * + * If there is a subIndex, the subIndexType denotes what branch the path takes (i.e. superscript, subscript, + * numerator, denominator etc.). + * e.g in the expression 25^{2/4} the index of the character 4 is represented as: + * (1, superscript) -> (0, denominator) -> (0, none) + * This can be interpreted as start at index 1 (i.e. the 5) go up to the superscript. + * Then look at index 0 (i.e. 2/4) and go to the denominator. Then look up index 0 (i.e. the 4) which this final + * index. + * + * The level of an index is the number of nodes in the LinkedList to get to the final path. + */ +public class MTMathListIndex { + + /** + The type of the subindex. + + The type of the subindex denotes what branch the path to the atom that this index points to takes. + */ + public enum MTMathListSubIndexType: Int { + /// The index denotes the whole atom, subIndex is nil. + case none = 0 + /// The position in the subindex is an index into the nucleus + case nucleus + /// The subindex indexes into the superscript. + case superscript + /// The subindex indexes into the subscript + case ssubscript + /// The subindex indexes into the numerator (only valid for fractions) + case numerator + /// The subindex indexes into the denominator (only valid for fractions) + case denominator + /// The subindex indexes into the radicand (only valid for radicals) + case radicand + /// The subindex indexes into the degree (only valid for radicals) + case degree + } + + /// The index of the associated atom. + var atomIndex: Int + + /// The type of subindex, e.g. superscript, numerator etc. + var subIndexType: MTMathListSubIndexType = .none + + /// The index into the sublist. + var subIndex: MTMathListIndex? + + var finalIndex: Int { + if self.subIndexType == .none { + return self.atomIndex + } else { + return self.subIndex?.finalIndex ?? 0 + } + } + + /// Returns the previous index if present. Returns `nil` if there is no previous index. + func prevIndex() -> MTMathListIndex? { + if self.subIndexType == .none { + if self.atomIndex > 0 { + return MTMathListIndex(level0Index: self.atomIndex - 1) + } + } else { + if let prevSubIndex = self.subIndex?.prevIndex() { + return MTMathListIndex(at: self.atomIndex, with: prevSubIndex, type: self.subIndexType) + } + } + return nil + } + + /// Returns the next index. + func nextIndex() -> MTMathListIndex { + if self.subIndexType == .none { + return MTMathListIndex(level0Index: self.atomIndex + 1) + } else if self.subIndexType == .nucleus { + return MTMathListIndex(at: self.atomIndex + 1, with: self.subIndex, type: self.subIndexType) + } else { + return MTMathListIndex(at: self.atomIndex, with: self.subIndex?.nextIndex(), type: self.subIndexType) + } + } + + /** + * Returns true if this index represents the beginning of a line. Note there may be multiple lines in a MTMathList, + * e.g. a superscript or a fraction numerator. This returns true if the innermost subindex points to the beginning of a + * line. + */ + func isBeginningOfLine() -> Bool { self.finalIndex == 0 } + + func isAtSameLevel(with index: MTMathListIndex?) -> Bool { + if self.subIndexType != index?.subIndexType { + return false + } else if self.subIndexType == .none { + // No subindexes, they are at the same level. + return true + } else if (self.atomIndex != index?.atomIndex) { + return false + } else { + return self.subIndex?.isAtSameLevel(with: index?.subIndex) ?? false + } + } + + /** Returns the type of the innermost sub index. */ + func finalSubIndexType() -> MTMathListSubIndexType { + if self.subIndex?.subIndex != nil { + return self.subIndex!.finalSubIndexType() + } else { + return self.subIndexType + } + } + + /** Returns true if any of the subIndexes of this index have the given type. */ + func hasSubIndex(ofType type: MTMathListSubIndexType) -> Bool { + if self.subIndexType == type { + return true + } else { + return self.subIndex?.hasSubIndex(ofType: type) ?? false + } + } + + func levelUp(with subIndex: MTMathListIndex?, type: MTMathListSubIndexType) -> MTMathListIndex { + if self.subIndexType == .none { + return MTMathListIndex(at: self.atomIndex, with: subIndex, type: type) + } + + return MTMathListIndex(at: self.atomIndex, with: self.subIndex?.levelUp(with: subIndex, type: type), type: self.subIndexType) + } + + func levelDown() -> MTMathListIndex? { + if self.subIndexType == .none { + return nil + } + + if let subIndexDown = self.subIndex?.levelDown() { + return MTMathListIndex(at: self.atomIndex, with: subIndexDown, type: self.subIndexType) + } else { + return MTMathListIndex(level0Index: self.atomIndex) + } + } + + /** Factory function to create a `MTMathListIndex` with no subindexes. + @param index The index of the atom that the `MTMathListIndex` points at. + */ + public init(level0Index: Int) { + self.atomIndex = level0Index + } + + public convenience init(at location: Int, with subIndex: MTMathListIndex?, type: MTMathListSubIndexType) { + self.init(level0Index: location) + self.subIndexType = type + self.subIndex = subIndex + } +} + +extension MTMathListIndex: CustomStringConvertible { + public var description: String { + if self.subIndex != nil { + return "[\(self.atomIndex), \(self.subIndexType.rawValue):\(self.subIndex!)]" + } + return "[\(self.atomIndex)]" + } +} + +extension MTMathListIndex: Hashable { + + public func hash(into hasher: inout Hasher) { + hasher.combine(self.atomIndex) + hasher.combine(self.subIndexType) + hasher.combine(self.subIndex) + } + +} + +extension MTMathListIndex: Equatable { + public static func ==(lhs: MTMathListIndex, rhs: MTMathListIndex) -> Bool { + if lhs.atomIndex != rhs.atomIndex || lhs.subIndexType != rhs.subIndexType { + return false + } + + if rhs.subIndex != nil { + return rhs.subIndex == lhs.subIndex + } else { + return lhs.subIndex == nil + } + } +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTMathRenderer.swift b/third-party/SwiftMath/Sources/MathRender/MTMathRenderer.swift new file mode 100644 index 0000000000..8243148734 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTMathRenderer.swift @@ -0,0 +1,83 @@ +import Foundation + +#if os(iOS) || os(visionOS) +import UIKit +#endif + +#if os(macOS) +import AppKit +#endif + +public struct MTMathRenderedFormula { + public let image: MTImage + public let size: CGSize + public let width: CGFloat + public let ascent: CGFloat + public let descent: CGFloat + + public init(image: MTImage, size: CGSize, width: CGFloat, ascent: CGFloat, descent: CGFloat) { + self.image = image + self.size = size + self.width = width + self.ascent = ascent + self.descent = descent + } +} + +public enum MTMathRenderer { + public static func render(latex: String, fontSize: CGFloat, textColor: MTColor, mode: MTMathUILabelMode = .display) -> MTMathRenderedFormula? { + guard let font = MTFontManager.fontManager.defaultFont?.copy(withSize: fontSize) else { + return nil + } + + var error: NSError? + guard let mathList = MTMathListBuilder.build(fromString: latex, error: &error), error == nil else { + return nil + } + + let style: MTLineStyle + switch mode { + case .display: + style = .display + case .text: + style = .text + } + + guard let displayList = MTTypesetter.createLineForMathList(mathList, font: font, style: style) else { + return nil + } + + displayList.textColor = textColor + + let width = max(1.0, ceil(displayList.width)) + let height = max(1.0, ceil(displayList.ascent + displayList.descent)) + let size = CGSize(width: width, height: height) + displayList.position = CGPoint(x: 0.0, y: displayList.descent) + + #if os(iOS) || os(visionOS) + let renderer = UIGraphicsImageRenderer(size: size) + let image = renderer.image { rendererContext in + rendererContext.cgContext.saveGState() + var transform = CGAffineTransform(scaleX: 1.0, y: -1.0) + transform = transform.translatedBy(x: 0.0, y: -size.height) + rendererContext.cgContext.concatenate(transform) + displayList.draw(rendererContext.cgContext) + rendererContext.cgContext.restoreGState() + } + return MTMathRenderedFormula(image: image, size: size, width: displayList.width, ascent: displayList.ascent, descent: displayList.descent) + #endif + + #if os(macOS) + let image = NSImage(size: size, flipped: false) { _ in + guard let context = NSGraphicsContext.current?.cgContext else { + return false + } + context.saveGState() + displayList.draw(context) + context.restoreGState() + return true + } + return MTMathRenderedFormula(image: image, size: size, width: displayList.width, ascent: displayList.ascent, descent: displayList.descent) + #endif + } +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTMathUILabel.swift b/third-party/SwiftMath/Sources/MathRender/MTMathUILabel.swift new file mode 100644 index 0000000000..b19aabba33 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTMathUILabel.swift @@ -0,0 +1,587 @@ +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by Kostub Deshmukh. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation +import CoreText + +/** + Different display styles supported by the `MTMathUILabel`. + + The only significant difference between the two modes is how fractions + and limits on large operators are displayed. + */ +public enum MTMathUILabelMode { + /// Display mode. Equivalent to $$ in TeX + case display + /// Text mode. Equivalent to $ in TeX. + case text +} + +/** + Horizontal text alignment for `MTMathUILabel`. + */ +public enum MTTextAlignment : UInt { + /// Align left. + case left + /// Align center. + case center + /// Align right. + case right +} + +/** The main view for rendering math. + + `MTMathLabel` accepts either a string in LaTeX or an `MTMathList` to display. Use + `MTMathList` directly only if you are building it programmatically (e.g. using an + editor), otherwise using LaTeX is the preferable method. + + The math display is centered vertically in the label. The default horizontal alignment is + is left. This can be changed by setting `textAlignment`. The math is default displayed in + *Display* mode. This can be changed using `labelMode`. + + When created it uses `[MTFontManager defaultFont]` as its font. This can be changed using + the `font` parameter. + */ +@IBDesignable +public class MTMathUILabel : MTView { + + /** The `MTMathList` to render. Setting this will remove any + `latex` that has already been set. If `latex` has been set, this will + return the parsed `MTMathList` if the `latex` parses successfully. Use this + setting if the `MTMathList` has been programmatically constructed, otherwise it + is preferred to use `latex`. + */ + public var mathList:MTMathList? { + set { + _mathList = newValue + _error = nil + _latex = MTMathListBuilder.mathListToString(newValue) + self.invalidateIntrinsicContentSize() + self.setNeedsLayout() + } + get { _mathList } + } + private var _mathList:MTMathList? + + /** The latex string to be displayed. Setting this will remove any `mathList` that + has been set. If latex has not been set, this will return the latex output for the + `mathList` that is set. + @see error */ + @IBInspectable + public var latex:String { + set { + _latex = newValue + _error = nil + var error : NSError? = nil + _mathList = MTMathListBuilder.build(fromString: newValue, error: &error) + if error != nil { + _mathList = nil + _error = error + self.errorLabel?.text = error!.localizedDescription + self.errorLabel?.frame = self.bounds + self.errorLabel?.isHidden = !self.displayErrorInline + } else { + self.errorLabel?.isHidden = true + } + self.invalidateIntrinsicContentSize() + self.setNeedsLayout() + } + get { _latex } + } + private var _latex = "" + + /** This contains any error that occurred when parsing the latex. */ + public var error:NSError? { _error } + private var _error:NSError? + + /** If true, if there is an error it displays the error message inline. Default true. */ + public var displayErrorInline = true + + /** If true, enables detailed debug logging for intrinsicContentSize calculations. + This helps diagnose rendering issues like missing row breaks in aligned environments. + Default false. */ + public var debugLogging = false + + /** The MTFont to use for rendering. */ + public var font:MTFont? { + set { + guard newValue != nil else { return } + _font = newValue + self.invalidateIntrinsicContentSize() + self.setNeedsLayout() + } + get { _font } + } + private var _font:MTFont? + + /** Convenience method to just set the size of the font without changing the fontface. */ + @IBInspectable + public var fontSize:CGFloat { + set { + _fontSize = newValue + let font = font?.copy(withSize: newValue) + self.font = font // also forces an update + } + get { _fontSize } + } + private var _fontSize:CGFloat=0 + + /** This sets the text color of the rendered math formula. The default color is black. */ + @IBInspectable + public var textColor:MTColor? { + set { + guard newValue != nil else { return } + _textColor = newValue + self.displayList?.textColor = newValue + self.setNeedsDisplay() + } + get { _textColor } + } + private var _textColor:MTColor? + + /** The minimum distance from the margin of the view to the rendered math. This value is + `UIEdgeInsetsZero` by default. This is useful if you need some padding between the math and + the border/background color. sizeThatFits: will have its returned size increased by these insets. + */ + @IBInspectable + public var contentInsets:MTEdgeInsets { + set { + _contentInsets = newValue + self.invalidateIntrinsicContentSize() + self.setNeedsLayout() + } + get { _contentInsets } + } + private var _contentInsets = MTEdgeInsetsZero + + /** The Label mode for the label. The default mode is Display */ + public var labelMode:MTMathUILabelMode { + set { + _labelMode = newValue + self.invalidateIntrinsicContentSize() + self.setNeedsLayout() + } + get { _labelMode } + } + private var _labelMode = MTMathUILabelMode.display + + /** Horizontal alignment for the text. The default is align left. */ + public var textAlignment:MTTextAlignment { + set { + _textAlignment = newValue + self.invalidateIntrinsicContentSize() + self.setNeedsLayout() + } + get { _textAlignment } + } + private var _textAlignment = MTTextAlignment.left + + /** The internal display of the MTMathUILabel. This is for advanced use only. */ + public var displayList: MTMathListDisplay? { _displayList } + private var _displayList:MTMathListDisplay? + + /** The preferred maximum width (in points) for a multiline label. + Set this property to enable line wrapping based on available width. */ + public var preferredMaxLayoutWidth: CGFloat { + set { + _preferredMaxLayoutWidth = newValue + _displayList = nil // Clear cached display list when width constraint changes + self.invalidateIntrinsicContentSize() + self.setNeedsLayout() + } + get { _preferredMaxLayoutWidth } + } + private var _preferredMaxLayoutWidth: CGFloat = 0 + + public var currentStyle:MTLineStyle { + switch _labelMode { + case .display: return .display + case .text: return .text + } + } + + public var errorLabel: MTLabel? + + public override init(frame: CGRect) { + super.init(frame: frame) + self.initCommon() + } + + public required init?(coder: NSCoder) { + super.init(coder: coder) + self.initCommon() + } + + func initCommon() { +#if os(macOS) + self.layer?.isGeometryFlipped = true +#else + self.layer.isGeometryFlipped = true + self.clipsToBounds = true +#endif + _fontSize = 20 + _contentInsets = MTEdgeInsetsZero + _labelMode = .display + let font = MTFontManager.fontManager.defaultFont + self.font = font + _textAlignment = .left + _displayList = nil + displayErrorInline = true + self.backgroundColor = MTColor.clear + + _textColor = MTColor.black + let label = MTLabel() + self.errorLabel = label +#if os(macOS) + label.layer?.isGeometryFlipped = true +#else + label.layer.isGeometryFlipped = true +#endif + label.isHidden = true + label.textColor = MTColor.red + self.addSubview(label) + } + + override public func draw(_ dirtyRect: MTRect) { + super.draw(dirtyRect) + if self.mathList == nil { return } + if self.font == nil { return } + + // Ensure display list is created before drawing + if _displayList == nil { + _layoutSubviews() + } + + guard let displayList = _displayList else { return } + + // drawing code + let context = MTGraphicsGetCurrentContext()! + context.saveGState() + + // CRITICAL FIX for clipping: If the displayList is wider than our bounds, + // expand the clipping rect to prevent content clipping. + // This handles cases where preferredMaxLayoutWidth is a hint but the content + // cannot fit within it even with line breaking. + let contentWidth = displayList.width + contentInsets.left + contentInsets.right + if contentWidth > bounds.size.width { + // Content is wider than bounds - expand clip rect + let expandedRect = CGRect( + x: bounds.origin.x, + y: bounds.origin.y, + width: contentWidth, + height: bounds.size.height + ) + context.clip(to: expandedRect) + } + + displayList.draw(context) + context.restoreGState() + } + + func _layoutSubviews() { + guard _mathList != nil && self.font != nil else { + _displayList = nil + errorLabel?.frame = self.bounds + self.setNeedsDisplay() + return + } + // Ensure we have a valid font before attempting to typeset + if self.font == nil { + // No valid font - try to get default font + if let defaultFont = MTFontManager.fontManager.defaultFont { + self._font = defaultFont + } else { + // Cannot typeset without a font, clear display list + _displayList = nil + errorLabel?.frame = self.bounds + self.setNeedsDisplay() + return + } + } + + // Use the effective width for layout + let effectiveWidth = _preferredMaxLayoutWidth > 0 ? _preferredMaxLayoutWidth : bounds.size.width + var availableWidth = effectiveWidth - contentInsets.left - contentInsets.right + // CRITICAL FIX: Ensure availableWidth is never negative + // Negative maxWidth passed to MTTypesetter can cause "Negative value is not representable" crashes + availableWidth = max(0, availableWidth) + + _displayList = MTTypesetter.createLineForMathList(_mathList, font: self.font, style: currentStyle, maxWidth: availableWidth) + + guard let displayList = _displayList else { + // Empty or invalid input - nothing to display + return + } + + displayList.textColor = textColor + var textX = CGFloat(0) + switch self.textAlignment { + case .left: textX = contentInsets.left + case .center: textX = (bounds.size.width - contentInsets.left - contentInsets.right - displayList.width) / 2 + contentInsets.left + case .right: textX = bounds.size.width - displayList.width - contentInsets.right + } + let availableHeight = bounds.size.height - contentInsets.bottom - contentInsets.top + + // center things vertically + var height = displayList.ascent + displayList.descent + if height < fontSize/2 { + height = fontSize/2 // set height to half the font size + } + let textY = (availableHeight - height) / 2 + displayList.descent + contentInsets.bottom + + displayList.position = CGPointMake(textX, textY) + errorLabel?.frame = self.bounds + self.setNeedsDisplay() + } + + func _sizeThatFits(_ size:CGSize) -> CGSize { + // Check if we have empty latex (empty string case) + if _latex.isEmpty { + // Empty latex - return zero size + return CGSize(width: 0, height: 0) + } + + guard _mathList != nil else { + // No content - return no-intrinsic-size marker + return CGSize(width: -1, height: -1) + } + + // Ensure we have a valid font before attempting to typeset + if self.font == nil { + // No valid font - try to get default font + if let defaultFont = MTFontManager.fontManager.defaultFont { + self._font = defaultFont + } else { + // Cannot typeset without a font + return CGSize(width: -1, height: -1) + } + } + + // Determine the maximum width to use + var maxWidth: CGFloat = 0 + if _preferredMaxLayoutWidth > 0 { + maxWidth = _preferredMaxLayoutWidth - contentInsets.left - contentInsets.right + // CRITICAL FIX: Ensure maxWidth is never negative + // If contentInsets exceed available width, clamp to 0 + maxWidth = max(0, maxWidth) + } else if size.width > 0 { + maxWidth = size.width - contentInsets.left - contentInsets.right + // CRITICAL FIX: Ensure maxWidth is never negative + maxWidth = max(0, maxWidth) + } + + var displayList:MTMathListDisplay? = nil + displayList = MTTypesetter.createLineForMathList(_mathList, font: self.font, style: currentStyle, maxWidth: maxWidth) + + guard displayList != nil else { + // Failed to create display list + return CGSize(width: -1, height: -1) + } + + var resultWidth = displayList!.width + contentInsets.left + contentInsets.right + var resultHeight = displayList!.ascent + displayList!.descent + contentInsets.top + contentInsets.bottom + + // DEBUG LOGGING for width calculation + if debugLogging { + print("\n=== MTMathUILabel intrinsicContentSize DEBUG ===") + print("LaTeX: \(self.latex)") + // Show raw bytes to help debug escaping issues + let latexBytes = Array(self.latex.utf8.prefix(100)) + print("LaTeX bytes (first 100): \(latexBytes)") + print("preferredMaxLayoutWidth: \(_preferredMaxLayoutWidth)") + print("size constraint: \(size)") + print("maxWidth passed to typesetter: \(maxWidth)") + print("displayList.width: \(displayList!.width)") + print("displayList.ascent: \(displayList!.ascent)") + print("displayList.descent: \(displayList!.descent)") + print("Number of subDisplays: \(displayList!.subDisplays.count)") + // Count lines by unique Y positions + let yPositions = Set(displayList!.subDisplays.map { $0.position.y }) + print("Number of lines (unique Y positions): \(yPositions.count)") + print("contentInsets: \(contentInsets)") + print("resultWidth (before clamping): \(resultWidth)") + print("resultHeight (before clamping): \(resultHeight)") + + // HELPFUL WARNING: Detect common escaping mistake + // Check for environments that typically have multiple rows but only 1 row is rendered + let multiRowEnvs = ["aligned", "align", "eqnarray", "gather", "split"] + let latexLower = self.latex.lowercased() + for env in multiRowEnvs { + if latexLower.contains("\\begin{\(env)}") { + // Check if there's a table with only 1 row + if let ml = _mathList { + for atom in ml.atoms { + if let table = atom as? MTMathTable, table.numRows == 1 { + // Check if latex contains single backslash (spacing) where double might be intended + // Pattern: \\ followed by non-backslash (like space or letter) + if self.latex.contains("\\ ") || self.latex.range(of: #"\\[a-zA-Z]"#, options: .regularExpression) != nil { + print("⚠️ WARNING: '\(env)' environment has only 1 row.") + print(" If you intended multiple rows, use '\\\\\\\\' (4 backslashes in Swift strings)") + print(" or use raw strings: #\"...42\\\\ \\\\dfrac...\"#") + print(" Current input has '\\\\ ' which is a SPACING command, not a row break.") + } + } + } + } + } + } + } + + // CRITICAL FIX: Ensure dimensions are never negative + // Negative values cause crashes in NSRange calculations and SwiftUI layout + resultWidth = max(0, resultWidth) + resultHeight = max(0, resultHeight) + + // CRITICAL FIX for accented character clipping: + // The preferredMaxLayoutWidth is a HINT for line breaking, NOT a hard constraint. + // If the typesetter cannot fit content within that width (even with line breaking), + // we MUST return the actual content width to prevent clipping. + // + // ONLY clamp in extreme cases to prevent layout explosion (>50% over or >100pt over) + if _preferredMaxLayoutWidth > 0 && resultWidth > _preferredMaxLayoutWidth { + let overflow = resultWidth - _preferredMaxLayoutWidth + let overflowPercent = (overflow / _preferredMaxLayoutWidth) * 100 + + if debugLogging { + print(" Content exceeds preferredMaxLayoutWidth:") + print(" preferredMaxLayoutWidth: \(_preferredMaxLayoutWidth)") + print(" resultWidth: \(resultWidth)") + print(" overflow: \(overflow) (\(String(format: "%.1f", overflowPercent))%)") + + // Check line breaking + let yPositions = Set(displayList!.subDisplays.map { $0.position.y }) + print(" hasMultipleLines: \(yPositions.count > 1) (yPositions: \(yPositions.count))") + + // Check if any content would be clipped at different widths + print(" SubDisplay analysis:") + for (i, sub) in displayList!.subDisplays.enumerated() { + let rightEdge = sub.position.x + sub.width + let clippedAtPreferred = rightEdge > _preferredMaxLayoutWidth + let clippedAtResult = rightEdge > resultWidth + print(" Sub[\(i)]: rightEdge=\(rightEdge) clippedAt\(_preferredMaxLayoutWidth)=\(clippedAtPreferred) clippedAt\(resultWidth)=\(clippedAtResult)") + } + } + + // ONLY clamp for truly excessive overflow (>50% or >100pt) + // This prevents layout explosion while allowing normal overflow + let extremeOverflowThreshold: CGFloat = max(_preferredMaxLayoutWidth * 0.5, 100.0) + + if overflow > extremeOverflowThreshold { + // Extreme overflow - clamp to prevent layout issues + let clampedWidth = _preferredMaxLayoutWidth + extremeOverflowThreshold + if debugLogging { + print(" ⚠️ EXTREME OVERFLOW - clamping from \(resultWidth) to \(clampedWidth)") + print(" ⚠️ WARNING: This will cause content clipping!") + } + resultWidth = clampedWidth + } else { + // Normal overflow - keep actual content width to prevent clipping + if debugLogging { + print(" ✓ Normal overflow - keeping actual width \(resultWidth) to prevent clipping") + } + // resultWidth stays as is - NO CLAMPING + } + } else if _preferredMaxLayoutWidth == 0 && size.width > 0 && resultWidth > size.width { + // Similar tolerance for size.width constraint + let tolerance = max(size.width * 0.05, 10.0) + let maxAllowedWidth = size.width + tolerance + + if debugLogging { + print(" Exceeds size.width constraint:") + print(" tolerance: \(tolerance)") + print(" maxAllowedWidth: \(maxAllowedWidth)") + print(" overflow amount: \(resultWidth - size.width)") + } + + if resultWidth <= maxAllowedWidth { + // Within tolerance - use actual content width + // resultWidth stays as is + if debugLogging { + print(" ✓ Within tolerance - keeping actual width") + } + } else { + if debugLogging { + print(" ⚠️ CLAMPING to maxAllowedWidth (may clip content!)") + } + resultWidth = maxAllowedWidth + } + } + + if debugLogging { + print(" Final resultWidth: \(resultWidth)") + print(" Final resultHeight: \(resultHeight)") + + // Check if any display elements would be clipped + if let display = displayList { + print(" Display subdisplays: \(display.subDisplays.count)") + let yPositions = Set(display.subDisplays.map { $0.position.y }).sorted() + print(" Unique Y positions (lines): \(yPositions.count) -> \(yPositions)") + + for (i, sub) in display.subDisplays.enumerated() { + let rightEdge = sub.position.x + sub.width + let clipped = rightEdge > resultWidth + + // Extract text content if this is a CTLineDisplay + var textContent = "" + if let ctLineDisplay = sub as? MTCTLineDisplay, + let attrString = ctLineDisplay.attributedString { + textContent = " text=\"\(attrString.string)\"" + } + + print(" Sub[\(i)]: type=\(type(of: sub)), y=\(sub.position.y), x=\(sub.position.x), width=\(sub.width), rightEdge=\(rightEdge)\(textContent)\(clipped ? " ⚠️ CLIPPED" : "")") + + // Show internal structure for MTMathListDisplay + if let mathListDisplay = sub as? MTMathListDisplay, !mathListDisplay.subDisplays.isEmpty { + print(" → Contains \(mathListDisplay.subDisplays.count) sub-displays:") + for (j, innerSub) in mathListDisplay.subDisplays.enumerated() { + var innerTextContent = "" + if let innerCTLineDisplay = innerSub as? MTCTLineDisplay, + let innerAttrString = innerCTLineDisplay.attributedString { + innerTextContent = " text=\"\(innerAttrString.string)\"" + } + print(" [\(j)]: type=\(type(of: innerSub)), y=\(innerSub.position.y), x=\(innerSub.position.x), width=\(innerSub.width)\(innerTextContent)") + } + } + + if clipped { + print(" ⚠️ CLIPPING: rightEdge \(rightEdge) > resultWidth \(resultWidth)") + print(" Clipped amount: \(rightEdge - resultWidth)") + } + } + } + print("=== END DEBUG ===\n") + } + + return CGSize(width: resultWidth, height: resultHeight) + } + + #if os(macOS) + public func sizeThatFits(_ size: CGSize) -> CGSize { + return _sizeThatFits(size) + } + #else + public override func sizeThatFits(_ size: CGSize) -> CGSize { + return _sizeThatFits(size) + } + #endif + +#if os(macOS) + func setNeedsDisplay() { self.needsDisplay = true } + func setNeedsLayout() { self.needsLayout = true } + public override var fittingSize: CGSize { _sizeThatFits(CGSizeZero) } + public override var intrinsicContentSize: CGSize { _sizeThatFits(CGSizeZero) } + override public func layout() { + self._layoutSubviews() + super.layout() + } +#else + public override var intrinsicContentSize: CGSize { _sizeThatFits(CGSizeZero) } + override public func layoutSubviews() { _layoutSubviews() } +#endif + +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTTypesetter+Tokenization.swift b/third-party/SwiftMath/Sources/MathRender/MTTypesetter+Tokenization.swift new file mode 100644 index 0000000000..3911df6499 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTTypesetter+Tokenization.swift @@ -0,0 +1,68 @@ +// +// MTTypesetter+Tokenization.swift +// SwiftMath +// +// Created by Claude Code on 2025-12-16. +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation +import CoreGraphics + +extension MTTypesetter { + + /// Create a line for a math list using the new tokenization approach + /// This is an alternative to the existing createLineForMathList that uses + /// pre-tokenization and greedy line fitting + static func createLineForMathListWithTokenization( + _ mathList: MTMathList?, + font: MTFont?, + style: MTLineStyle, + cramped: Bool, + spaced: Bool, + maxWidth: CGFloat + ) -> MTMathListDisplay? { + guard let mathList = mathList else { return nil } + guard let font = font else { return nil } + guard !mathList.atoms.isEmpty else { + // Return empty display instead of nil (matches KaTeX behavior) + return MTMathListDisplay(withDisplays: [], range: NSMakeRange(0, 0)) + } + + // Phase 0: Preprocess atoms to fuse ordinary characters + // This is critical for accents and other structures where multi-character + // text like "xyzw" should stay together as a single atom + let preprocessedAtoms = MTTypesetter.preprocessMathList(mathList) + + // Phase 1: Tokenize atoms into breakable elements + let tokenizer = MTAtomTokenizer(font: font, style: style, cramped: cramped, maxWidth: maxWidth) + let elements = tokenizer.tokenize(preprocessedAtoms) + + guard !elements.isEmpty else { return nil } + + // Phase 2: Fit elements into lines + let margin = spaced ? font.mathTable?.muUnit ?? 0 : 0 + let fitter = MTLineFitter(maxWidth: maxWidth, margin: margin) + let fittedLines = fitter.fitLines(elements) + + // Phase 3: Generate displays from fitted lines + let generator = MTDisplayGenerator(font: font, style: style) + let displays = generator.generateDisplays(from: fittedLines, startPosition: CGPoint.zero) + + // Determine range from atoms + let range: NSRange + if let firstAtom = mathList.atoms.first, let lastAtom = mathList.atoms.last { + let start = firstAtom.indexRange.location + let end = NSMaxRange(lastAtom.indexRange) + range = NSMakeRange(start, end - start) + } else { + range = NSMakeRange(0, 0) + } + + // Create and return the math list display + let mathListDisplay = MTMathListDisplay(withDisplays: displays, range: range) + + return mathListDisplay + } +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTTypesetter.swift b/third-party/SwiftMath/Sources/MathRender/MTTypesetter.swift new file mode 100644 index 0000000000..72d67a2315 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTTypesetter.swift @@ -0,0 +1,1927 @@ +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by Kostub Deshmukh. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation +import CoreText + +// MARK: - Inter Element Spacing + +enum InterElementSpaceType : Int { + case invalid = -1 + case none = 0 + case thin + case nsThin // Thin but not in script mode + case nsMedium + case nsThick +} + +var interElementSpaceArray = [[InterElementSpaceType]]() +private let interElementLock = NSLock() + +func getInterElementSpaces() -> [[InterElementSpaceType]] { + if interElementSpaceArray.isEmpty { + + interElementLock.lock() + defer { interElementLock.unlock() } + guard interElementSpaceArray.isEmpty else { return interElementSpaceArray } + + interElementSpaceArray = + // ordinary operator binary relation open close punct fraction + [ [.none, .thin, .nsMedium, .nsThick, .none, .none, .none, .nsThin], // ordinary + [.thin, .thin, .invalid, .nsThick, .none, .none, .none, .nsThin], // operator + [.nsMedium, .nsMedium, .invalid, .invalid, .nsMedium, .invalid, .invalid, .nsMedium], // binary + [.nsThick, .nsThick, .invalid, .none, .nsThick, .none, .none, .nsThick], // relation + [.none, .none, .invalid, .none, .none, .none, .none, .none], // open + [.none, .thin, .nsMedium, .nsThick, .none, .none, .none, .nsThin], // close + [.nsThin, .nsThin, .invalid, .nsThin, .nsThin, .nsThin, .nsThin, .nsThin], // punct + [.nsThin, .thin, .nsMedium, .nsThick, .nsThin, .none, .nsThin, .nsThin], // fraction + [.nsMedium, .nsThin, .nsMedium, .nsThick, .none, .none, .none, .nsThin]] // radical + } + return interElementSpaceArray +} + + +// Get's the index for the given type. If row is true, the index is for the row (i.e. left element) otherwise it is for the column (right element) +func getInterElementSpaceArrayIndexForType(_ type:MTMathAtomType, row:Bool) -> Int { + switch type { + case .color, .textcolor, .colorBox, .ordinary, .placeholder: // A placeholder is treated as ordinary + return 0 + case .largeOperator: + return 1 + case .binaryOperator: + return 2; + case .relation: + return 3; + case .open: + return 4; + case .close: + return 5; + case .punctuation: + return 6; + case .fraction, // Fraction and inner are treated the same. + .inner: + return 7; + case .radical: + if row { + // Radicals have inter element spaces only when on the left side. + // Note: This is a departure from latex but we don't want \sqrt{4}4 to look weird so we put a space in between. + // They have the same spacing as ordinary except with ordinary. + return 8; + } else { + // Treat radical as ordinary on the right side + return 0 + } + // Numbers, variables, and unary operators are treated as ordinary + case .number, .variable, .unaryOperator: + return 0 + // Decorative types (accent, underline, overline) are treated as ordinary + case .accent, .underline, .overline: + return 0 + // Special types that don't typically participate in spacing are treated as ordinary + case .boundary, .space, .style, .table: + return 0 + } +} + +// MARK: - Italics +// mathit +func getItalicized(_ ch:Character) -> UTF32Char { + var unicode = ch.utf32Char + + // Special cases for italics + if ch == "h" { return UnicodeSymbol.planksConstant } + // Dotless i (U+0131) → Mathematical Italic Small Dotless I (U+1D6A4) + if ch == "\u{0131}" { return 0x1D6A4 } + // Dotless j (U+0237) → Mathematical Italic Small Dotless J (U+1D6A5) + if ch == "\u{0237}" { return 0x1D6A5 } + + if ch.isUpperEnglish { + unicode = UnicodeSymbol.capitalItalicStart + (ch.utf32Char - Character("A").utf32Char) + } else if ch.isLowerEnglish { + unicode = UnicodeSymbol.lowerItalicStart + (ch.utf32Char - Character("a").utf32Char) + } else if ch.isCapitalGreek { + // Capital Greek characters + unicode = UnicodeSymbol.greekCapitalItalicStart + (ch.utf32Char - UnicodeSymbol.capitalGreekStart) + } else if ch.isLowerGreek { + // Greek characters + unicode = UnicodeSymbol.greekLowerItalicStart + (ch.utf32Char - UnicodeSymbol.lowerGreekStart) + } else if ch.isGreekSymbol { + return UnicodeSymbol.greekSymbolItalicStart + ch.greekSymbolOrder! + } + // Note there are no italicized numbers in unicode so we don't support italicizing numbers. + return unicode +} + +// mathbf +func getBold(_ ch:Character) -> UTF32Char { + var unicode = ch.utf32Char + if ch.isUpperEnglish { + unicode = UnicodeSymbol.mathCapitalBoldStart + (ch.utf32Char - Character("A").utf32Char) + } else if ch.isLowerEnglish { + unicode = UnicodeSymbol.mathLowerBoldStart + (ch.utf32Char - Character("a").utf32Char) + } else if ch.isCapitalGreek { + // Capital Greek characters + unicode = UnicodeSymbol.greekCapitalBoldStart + (ch.utf32Char - UnicodeSymbol.capitalGreekStart); + } else if ch.isLowerGreek { + // Greek characters + unicode = UnicodeSymbol.greekLowerBoldStart + (ch.utf32Char - UnicodeSymbol.lowerGreekStart); + } else if ch.isGreekSymbol { + return UnicodeSymbol.greekSymbolBoldStart + ch.greekSymbolOrder! + } else if ch.isNumber { + unicode = UnicodeSymbol.numberBoldStart + (ch.utf32Char - Character("0").utf32Char) + } + return unicode +} + +// mathbfit +func getBoldItalic(_ ch:Character) -> UTF32Char { + var unicode = ch.utf32Char + if ch.isUpperEnglish { + unicode = UnicodeSymbol.mathCapitalBoldItalicStart + (ch.utf32Char - Character("A").utf32Char) + } else if ch.isLowerEnglish { + unicode = UnicodeSymbol.mathLowerBoldItalicStart + (ch.utf32Char - Character("a").utf32Char) + } else if ch.isCapitalGreek { + // Capital Greek characters + unicode = UnicodeSymbol.greekCapitalBoldItalicStart + (ch.utf32Char - UnicodeSymbol.capitalGreekStart); + } else if ch.isLowerGreek { + // Greek characters + unicode = UnicodeSymbol.greekLowerBoldItalicStart + (ch.utf32Char - UnicodeSymbol.lowerGreekStart); + } else if ch.isGreekSymbol { + return UnicodeSymbol.greekSymbolBoldItalicStart + ch.greekSymbolOrder! + } else if ch.isNumber { + // No bold italic for numbers so we just bold them. + unicode = getBold(ch); + } + return unicode; +} + +// LaTeX default +func getDefaultStyle(_ ch:Character) -> UTF32Char { + if ch.isLowerEnglish || ch.isUpperEnglish || ch.isLowerGreek || ch.isGreekSymbol { + return getItalicized(ch); + } else if ch == "\u{0131}" || ch == "\u{0237}" { + // Dotless i (U+0131) and dotless j (U+0237) should be italicized in default style + return getItalicized(ch); + } else if ch.isNumber || ch.isCapitalGreek { + // In the default style numbers and capital greek is roman + return ch.utf32Char + } else if ch == "." { + // . is treated as a number in our code, but it doesn't change fonts. + return ch.utf32Char + } else { + NSException(name: NSExceptionName("IllegalCharacter"), reason: "Unknown character \(ch) for default style.").raise() + } + return ch.utf32Char +} + +// mathcal/mathscr (caligraphic or script) +func getCaligraphic(_ ch:Character) -> UTF32Char { + // Caligraphic has lots of exceptions: + switch ch { + case "B": + return 0x212C; // Script B (bernoulli) + case "E": + return 0x2130; // Script E (emf) + case "F": + return 0x2131; // Script F (fourier) + case "H": + return 0x210B; // Script H (hamiltonian) + case "I": + return 0x2110; // Script I + case "L": + return 0x2112; // Script L (laplace) + case "M": + return 0x2133; // Script M (M-matrix) + case "R": + return 0x211B; // Script R (Riemann integral) + case "e": + return 0x212F; // Script e (Natural exponent) + case "g": + return 0x210A; // Script g (real number) + case "o": + return 0x2134; // Script o (order) + default: + break; + } + var unicode:UTF32Char + if ch.isUpperEnglish { + unicode = UnicodeSymbol.mathCapitalScriptStart + (ch.utf32Char - Character("A").utf32Char) + } else if ch.isLowerEnglish { + // Latin Modern Math does not have lower case caligraphic characters, so we use + // the default style instead of showing a ? + unicode = getDefaultStyle(ch) + } else { + // Caligraphic characters don't exist for greek or numbers, we give them the + // default treatment. + unicode = getDefaultStyle(ch) + } + return unicode; +} + +// mathtt (monospace) +func getTypewriter(_ ch:Character) -> UTF32Char { + if ch.isUpperEnglish { + return UnicodeSymbol.mathCapitalTTStart + (ch.utf32Char - Character("A").utf32Char) + } else if ch.isLowerEnglish { + return UnicodeSymbol.mathLowerTTStart + (ch.utf32Char - Character("a").utf32Char) + } else if ch.isNumber { + return UnicodeSymbol.numberTTStart + (ch.utf32Char - Character("0").utf32Char) + } + // Monospace characters don't exist for greek, we give them the + // default treatment. + return getDefaultStyle(ch); +} + +// mathsf +func getSansSerif(_ ch:Character) -> UTF32Char { + if ch.isUpperEnglish { + return UnicodeSymbol.mathCapitalSansSerifStart + (ch.utf32Char - Character("A").utf32Char) + } else if ch.isLowerEnglish { + return UnicodeSymbol.mathLowerSansSerifStart + (ch.utf32Char - Character("a").utf32Char) + } else if ch.isNumber { + return UnicodeSymbol.numberSansSerifStart + (ch.utf32Char - Character("0").utf32Char) + } + // Sans-serif characters don't exist for greek, we give them the + // default treatment. + return getDefaultStyle(ch); +} + +// mathfrak +func getFraktur(_ ch:Character) -> UTF32Char { + // Fraktur has exceptions: + switch ch { + case "C": + return 0x212D; // C Fraktur + case "H": + return 0x210C; // Hilbert space + case "I": + return 0x2111; // Imaginary + case "R": + return 0x211C; // Real + case "Z": + return 0x2128; // Z Fraktur + default: + break; + } + if ch.isUpperEnglish { + return UnicodeSymbol.mathCapitalFrakturStart + (ch.utf32Char - Character("A").utf32Char) + } else if ch.isLowerEnglish { + return UnicodeSymbol.mathLowerFrakturStart + (ch.utf32Char - Character("a").utf32Char) + } + // Fraktur characters don't exist for greek & numbers, we give them the + // default treatment. + return getDefaultStyle(ch); +} + +// mathbb (double struck) +func getBlackboard(_ ch:Character) -> UTF32Char { + // Blackboard has lots of exceptions: + switch(ch) { + case "C": + return 0x2102; // Complex numbers + case "H": + return 0x210D; // Quarternions + case "N": + return 0x2115; // Natural numbers + case "P": + return 0x2119; // Primes + case "Q": + return 0x211A; // Rationals + case "R": + return 0x211D; // Reals + case "Z": + return 0x2124; // Integers + default: + break; + } + if ch.isUpperEnglish { + return UnicodeSymbol.mathCapitalBlackboardStart + (ch.utf32Char - Character("A").utf32Char) + } else if ch.isLowerEnglish { + return UnicodeSymbol.mathLowerBlackboardStart + (ch.utf32Char - Character("a").utf32Char) + } else if ch.isNumber { + return UnicodeSymbol.numberBlackboardStart + (ch.utf32Char - Character("0").utf32Char) + } + // Blackboard characters don't exist for greek, we give them the + // default treatment. + return getDefaultStyle(ch); +} + +func styleCharacter(_ ch:Character, fontStyle:MTFontStyle) -> UTF32Char { + switch fontStyle { + case .defaultStyle: + return getDefaultStyle(ch); + case .roman: + return ch.utf32Char + case .bold: + return getBold(ch); + case .italic: + return getItalicized(ch); + case .boldItalic: + return getBoldItalic(ch); + case .caligraphic: + return getCaligraphic(ch); + case .typewriter: + return getTypewriter(ch); + case .sansSerif: + return getSansSerif(ch); + case .fraktur: + return getFraktur(ch); + case .blackboard: + return getBlackboard(ch); + } +} + +func changeFont(_ str:String, fontStyle:MTFontStyle) -> String { + var retval = "" + let codes = Array(str) + for i in 0.. MTMathListDisplay? { + let finalizedList = mathList?.finalized + // default is not cramped, no width constraint + return self.createLineForMathList(finalizedList, font:font, style:style, cramped:false, maxWidth: 0) + } + + static func createLineForMathList(_ mathList:MTMathList?, font:MTFont?, style:MTLineStyle, maxWidth:CGFloat) -> MTMathListDisplay? { + let finalizedList = mathList?.finalized + // default is not cramped + return self.createLineForMathList(finalizedList, font:font, style:style, cramped:false, maxWidth: maxWidth) + } + + // Internal + static func createLineForMathList(_ mathList:MTMathList?, font:MTFont?, style:MTLineStyle, cramped:Bool) -> MTMathListDisplay? { + return self.createLineForMathList(mathList, font:font, style:style, cramped:cramped, spaced:false, maxWidth: 0) + } + + // Internal + static func createLineForMathList(_ mathList:MTMathList?, font:MTFont?, style:MTLineStyle, cramped:Bool, maxWidth:CGFloat) -> MTMathListDisplay? { + return self.createLineForMathList(mathList, font:font, style:style, cramped:cramped, spaced:false, maxWidth: maxWidth) + } + + // Internal + static func createLineForMathList(_ mathList:MTMathList?, font:MTFont?, style:MTLineStyle, cramped:Bool, spaced:Bool) -> MTMathListDisplay? { + return self.createLineForMathList(mathList, font:font, style:style, cramped:cramped, spaced:spaced, maxWidth: 0) + } + + // Internal + static func createLineForMathList(_ mathList:MTMathList?, font:MTFont?, style:MTLineStyle, cramped:Bool, spaced:Bool, maxWidth:CGFloat) -> MTMathListDisplay? { + assert(font != nil) + + // Always use tokenization approach + // The tokenization path handles both constrained (maxWidth > 0) and unconstrained (maxWidth = 0) rendering + return createLineForMathListWithTokenization( + mathList, + font: font, + style: style, + cramped: cramped, + spaced: spaced, + maxWidth: maxWidth + ) + } + + static var placeholderColor: MTColor { MTColor.blue } + + init(withFont font:MTFont?, style:MTLineStyle, cramped:Bool, spaced:Bool, maxWidth:CGFloat = 0) { + self.font = font + self.displayAtoms = [MTDisplay]() + self.currentPosition = CGPoint.zero + self.cramped = cramped + self.spaced = spaced + self.maxWidth = maxWidth + self.style = style + } + + static func preprocessMathList(_ ml:MTMathList?) -> [MTMathAtom] { + // Note: Some of the preprocessing described by the TeX algorithm is done in the finalize method of MTMathList. + // Specifically rules 5 & 6 in Appendix G are handled by finalize. + // This function does not do a complete preprocessing as specified by TeX either. It removes any special atom types + // that are not included in TeX and applies Rule 14 to merge ordinary characters. + var preprocessed = [MTMathAtom]() // arrayWithCapacity:ml.atoms.count) + var prevNode:MTMathAtom! = nil + preprocessed.reserveCapacity(ml!.atoms.count) + for atom in ml!.atoms { + if atom.type == .variable || atom.type == .number { + // This is not a TeX type node. TeX does this during parsing the input. + // switch to using the italic math font + // We convert it to ordinary + let newFont = changeFont(atom.nucleus, fontStyle: atom.fontStyle) // mathItalicize(atom.nucleus) + atom.type = .ordinary + atom.nucleus = newFont + } else if atom.type == .unaryOperator { + // Neither of these are TeX nodes. TeX treats these as Ordinary. So will we. + atom.type = .ordinary + } else if atom.type == .binaryOperator { + // CRITICAL FIX: Convert binary operators to ordinary (unary) in appropriate contexts + // According to TeX rules (TeXbook Appendix G, Rule 5), a binary operator is converted + // to ordinary when it appears after: Bin, Op, Rel, Open, Punct, or at the beginning + // This handles cases like "=-2" where minus should be unary, not binary + let shouldConvertToOrdinary: Bool + if prevNode == nil { + // At the beginning of the list + shouldConvertToOrdinary = true + } else { + switch prevNode.type { + case .binaryOperator, .relation, .open, .punctuation, .largeOperator: + shouldConvertToOrdinary = true + default: + shouldConvertToOrdinary = false + } + } + + if shouldConvertToOrdinary { + atom.type = .ordinary + } + } + + if atom.type == .ordinary { + // This is Rule 14 to merge ordinary characters. + // combine ordinary atoms together + // CRITICAL FIX: Only fuse atoms with the same fontStyle + // This prevents fusing roman text (\text{...}) with italic math variables (A, B, etc.) + // which would cause incorrect line breaking when the combined string is tokenized + if prevNode != nil && prevNode.type == .ordinary && prevNode.subScript == nil && prevNode.superScript == nil && prevNode.fontStyle == atom.fontStyle { + prevNode.fuse(with: atom) + // skip the current node, we are done here. + continue + } + } + + // TODO: add italic correction here or in second pass? + prevNode = atom + preprocessed.append(atom) + } + return preprocessed + } + + // returns the size of the font in this style + static func getStyleSize(_ style:MTLineStyle, font:MTFont?) -> CGFloat { + let original = font!.fontSize + let scaled: CGFloat + switch style { + case .display, .text: + scaled = original + case .script: + scaled = original * font!.mathTable!.scriptScaleDown + case .scriptOfScript: + scaled = original * font!.mathTable!.scriptScriptScaleDown + } + // Apply minimum font size threshold to prevent deeply nested exponents + // from becoming unreadable (common for expressions like 2^{2^{2^2}}) + // Minimum of 6pt ensures readability while maintaining proper hierarchy + return max(scaled, 6.0) + } + + // MARK: - Spacing + + // Returned in units of mu = 1/18 em. + func getSpacingInMu(_ type: InterElementSpaceType) -> Int { + // let valid = [MTLineStyle.display, .text] + switch type { + case .invalid: return -1 + case .none: return 0 + case .thin: return 3 + case .nsThin: return style.isNotScript ? 3 : 0; + case .nsMedium: return style.isNotScript ? 4 : 0; + case .nsThick: return style.isNotScript ? 5 : 0; + } + } + + func getInterElementSpace(_ left: MTMathAtomType, right:MTMathAtomType) -> CGFloat { + let leftIndex = getInterElementSpaceArrayIndexForType(left, row: true) + let rightIndex = getInterElementSpaceArrayIndexForType(right, row: false) + let spaceArray = getInterElementSpaces()[Int(leftIndex)] + let spaceTypeObj = spaceArray[Int(rightIndex)] + let spaceType = spaceTypeObj + assert(spaceType != .invalid, "Invalid space between \(left) and \(right)") + + let spaceMultipler = self.getSpacingInMu(spaceType) + if spaceMultipler > 0 { + // 1 em = size of font in pt. space multipler is in multiples mu or 1/18 em + return CGFloat(spaceMultipler) * styleFont.mathTable!.muUnit + } + return 0 + } + + + // MARK: - Subscript/Superscript + + func scriptStyle() -> MTLineStyle { + switch style { + case .display, .text: return .script + case .script, .scriptOfScript: return .scriptOfScript + } + } + + // subscript is always cramped + func subscriptCramped() -> Bool { true } + + // superscript is cramped only if the current style is cramped + func superScriptCramped() -> Bool { cramped } + + func superScriptShiftUp() -> CGFloat { + if cramped { + return styleFont.mathTable!.superscriptShiftUpCramped; + } else { + return styleFont.mathTable!.superscriptShiftUp; + } + } + + // make scripts for the last atom + // index is the index of the element which is getting the sub/super scripts. + func makeScripts(_ atom: MTMathAtom?, display:MTDisplay?, index:UInt, delta:CGFloat) { + guard let atom = atom else { return } + guard atom.subScript != nil || atom.superScript != nil else { return } + guard let mathTable = styleFont.mathTable else { return } + + var superScriptShiftUp = 0.0 + var subscriptShiftDown = 0.0 + + display?.hasScript = true + if !(display is MTCTLineDisplay), let display = display { + // get the font in script style + let scriptFontSize = Self.getStyleSize(self.scriptStyle(), font:font) + let scriptFont = font.copy(withSize: scriptFontSize) + let scriptFontMetrics = scriptFont.mathTable + + // if it is not a simple line then + if let scriptFontMetrics = scriptFontMetrics { + superScriptShiftUp = display.ascent - scriptFontMetrics.superscriptBaselineDropMax + subscriptShiftDown = display.descent + scriptFontMetrics.subscriptBaselineDropMin + } + } + + if atom.superScript == nil { + guard let _subscript = MTTypesetter.createLineForMathList(atom.subScript, font:font, style:self.scriptStyle(), cramped:self.subscriptCramped()) else { return } + _subscript.type = .ssubscript + _subscript.index = Int(index) + + subscriptShiftDown = fmax(subscriptShiftDown, mathTable.subscriptShiftDown); + subscriptShiftDown = fmax(subscriptShiftDown, _subscript.ascent - mathTable.subscriptTopMax); + // add the subscript + _subscript.position = CGPointMake(currentPosition.x, currentPosition.y - subscriptShiftDown); + displayAtoms.append(_subscript) + // update the position + currentPosition.x += _subscript.width + mathTable.spaceAfterScript; + return; + } + + guard let superScript = MTTypesetter.createLineForMathList(atom.superScript, font:font, style:self.scriptStyle(), cramped:self.superScriptCramped()) else { return } + superScript.type = .superscript + superScript.index = Int(index); + superScriptShiftUp = fmax(superScriptShiftUp, self.superScriptShiftUp()); + superScriptShiftUp = fmax(superScriptShiftUp, superScript.descent + mathTable.superscriptBottomMin); + + if atom.subScript == nil { + superScript.position = CGPointMake(currentPosition.x, currentPosition.y + superScriptShiftUp); + displayAtoms.append(superScript) + // update the position + currentPosition.x += superScript.width + mathTable.spaceAfterScript; + return; + } + guard let ssubscript = MTTypesetter.createLineForMathList(atom.subScript, font:font, style:self.scriptStyle(), cramped:self.subscriptCramped()) else { return } + ssubscript.type = .ssubscript + ssubscript.index = Int(index) + subscriptShiftDown = fmax(subscriptShiftDown, mathTable.subscriptShiftDown); + + // joint positioning of subscript & superscript + let subSuperScriptGap = (superScriptShiftUp - superScript.descent) + (subscriptShiftDown - ssubscript.ascent); + if (subSuperScriptGap < mathTable.subSuperscriptGapMin) { + // Set the gap to atleast as much + subscriptShiftDown += mathTable.subSuperscriptGapMin - subSuperScriptGap; + let superscriptBottomDelta = mathTable.superscriptBottomMaxWithSubscript - (superScriptShiftUp - superScript.descent); + if (superscriptBottomDelta > 0) { + // superscript is lower than the max allowed by the font with a subscript. + superScriptShiftUp += superscriptBottomDelta; + subscriptShiftDown -= superscriptBottomDelta; + } + } + // The delta is the italic correction above that shift superscript position + superScript.position = CGPointMake(currentPosition.x + delta, currentPosition.y + superScriptShiftUp); + displayAtoms.append(superScript) + ssubscript.position = CGPointMake(currentPosition.x, currentPosition.y - subscriptShiftDown); + displayAtoms.append(ssubscript) + currentPosition.x += max(superScript.width + delta, ssubscript.width) + mathTable.spaceAfterScript; + } + + // MARK: - Helper Functions + + /// Safely converts an NSRange location to UInt, returning 0 if the location is invalid (NSNotFound) + /// This prevents "Negative value is not representable" crashes when converting NSNotFound to UInt + private func safeUIntFromLocation(_ location: Int) -> UInt { + if location == NSNotFound || location < 0 { + return 0 + } + return UInt(location) + } + + // MARK: - Fractions + + func numeratorShiftUp(_ hasRule:Bool) -> CGFloat { + if hasRule { + if style == .display { + return styleFont.mathTable!.fractionNumeratorDisplayStyleShiftUp + } else { + return styleFont.mathTable!.fractionNumeratorShiftUp + } + } else { + if style == .display { + return styleFont.mathTable!.stackTopDisplayStyleShiftUp + } else { + return styleFont.mathTable!.stackTopShiftUp + } + } + } + + func numeratorGapMin() -> CGFloat { + if style == .display { + return styleFont.mathTable!.fractionNumeratorDisplayStyleGapMin; + } else { + return styleFont.mathTable!.fractionNumeratorGapMin; + } + } + + func denominatorShiftDown(_ hasRule:Bool) -> CGFloat { + if hasRule { + if style == .display { + return styleFont.mathTable!.fractionDenominatorDisplayStyleShiftDown; + } else { + return styleFont.mathTable!.fractionDenominatorShiftDown; + } + } else { + if style == .display { + return styleFont.mathTable!.stackBottomDisplayStyleShiftDown; + } else { + return styleFont.mathTable!.stackBottomShiftDown; + } + } + } + + func denominatorGapMin() -> CGFloat { + if style == .display { + return styleFont.mathTable!.fractionDenominatorDisplayStyleGapMin; + } else { + return styleFont.mathTable!.fractionDenominatorGapMin; + } + } + + func stackGapMin() -> CGFloat { + if style == .display { + return styleFont.mathTable!.stackDisplayStyleGapMin; + } else { + return styleFont.mathTable!.stackGapMin; + } + } + + func fractionDelimiterHeight()-> CGFloat { + if style == .display { + return styleFont.mathTable!.fractionDelimiterDisplayStyleSize; + } else { + return styleFont.mathTable!.fractionDelimiterSize; + } + } + + func fractionStyle() -> MTLineStyle { + // Keep fractions at the same style level instead of incrementing. + // This ensures that fraction numerators/denominators have the same + // font size as regular text, preventing them from appearing too small + // in inline mode or when nested. + return style + } + + func makeFraction(_ frac:MTFraction?) -> MTDisplay? { + guard let frac = frac else { return nil } + + // lay out the parts of the fraction + let numeratorStyle: MTLineStyle + let denominatorStyle: MTLineStyle + + if frac.isContinuedFraction { + // Continued fractions always use display style + numeratorStyle = .display + denominatorStyle = .display + } else { + // Regular fractions use adaptive style + let fractionStyle = self.fractionStyle; + numeratorStyle = fractionStyle() + denominatorStyle = fractionStyle() + } + + let numeratorDisplay = MTTypesetter.createLineForMathList(frac.numerator, font:font, style:numeratorStyle, cramped:false) + let denominatorDisplay = MTTypesetter.createLineForMathList(frac.denominator, font:font, style:denominatorStyle, cramped:true) + + // Handle empty numerator or denominator by creating empty displays + let numDisplay = numeratorDisplay ?? MTMathListDisplay(withDisplays: [], range: NSMakeRange(0, 0)) + let denomDisplay = denominatorDisplay ?? MTMathListDisplay(withDisplays: [], range: NSMakeRange(0, 0)) + + // determine the location of the numerator + var numeratorShiftUp = self.numeratorShiftUp(frac.hasRule) + var denominatorShiftDown = self.denominatorShiftDown(frac.hasRule) + let barLocation = styleFont.mathTable!.axisHeight + let barThickness = frac.hasRule ? styleFont.mathTable!.fractionRuleThickness : 0 + + if frac.hasRule { + // This is the difference between the lowest edge of the numerator and the top edge of the fraction bar + let distanceFromNumeratorToBar = (numeratorShiftUp - numDisplay.descent) - (barLocation + barThickness/2); + // The distance should at least be displayGap + let minNumeratorGap = self.numeratorGapMin; + if distanceFromNumeratorToBar < minNumeratorGap() { + // This makes the distance between the bottom of the numerator and the top edge of the fraction bar + // at least minNumeratorGap. + numeratorShiftUp += (minNumeratorGap() - distanceFromNumeratorToBar); + } + + // Do the same for the denominator + // This is the difference between the top edge of the denominator and the bottom edge of the fraction bar + let distanceFromDenominatorToBar = (barLocation - barThickness/2) - (denomDisplay.ascent - denominatorShiftDown); + // The distance should at least be denominator gap + let minDenominatorGap = self.denominatorGapMin; + if distanceFromDenominatorToBar < minDenominatorGap() { + // This makes the distance between the top of the denominator and the bottom of the fraction bar to be exactly + // minDenominatorGap + denominatorShiftDown += (minDenominatorGap() - distanceFromDenominatorToBar); + } + } else { + // This is the distance between the numerator and the denominator + let clearance = (numeratorShiftUp - numDisplay.descent) - (denomDisplay.ascent - denominatorShiftDown); + // This is the minimum clearance between the numerator and denominator. + // For ruleless fractions (like binom, choose, atop), use 1.5x the standard gap + // for better visual separation, following TeX's approach for binomial coefficients + let minGap = self.stackGapMin() * 1.5 + if clearance < minGap { + numeratorShiftUp += (minGap - clearance)/2; + denominatorShiftDown += (minGap - clearance)/2; + } + } + + let display = MTFractionDisplay(withNumerator: numDisplay, denominator: denomDisplay, position: currentPosition, range: frac.indexRange) + + display.numeratorUp = numeratorShiftUp; + display.denominatorDown = denominatorShiftDown; + display.lineThickness = barThickness; + display.linePosition = barLocation; + if frac.leftDelimiter.isEmpty && frac.rightDelimiter.isEmpty { + return display + } else { + return self.addDelimitersToFractionDisplay(display, forFraction: frac) + } + } + + func addDelimitersToFractionDisplay(_ display: MTFractionDisplay, forFraction frac: MTFraction) -> MTDisplay { + assert(!frac.leftDelimiter.isEmpty || !frac.rightDelimiter.isEmpty, "Fraction should have delimiters to call this function") + + var innerElements = [MTDisplay]() + let glyphHeight = self.fractionDelimiterHeight + var position = CGPoint.zero + if !frac.leftDelimiter.isEmpty { + if let leftGlyph = self.findGlyphForBoundary(frac.leftDelimiter, withHeight: glyphHeight()) { + leftGlyph.position = position + position.x += leftGlyph.width + innerElements.append(leftGlyph) + } + } + + display.position = position + position.x += display.width + innerElements.append(display) + + if !frac.rightDelimiter.isEmpty { + if let rightGlyph = self.findGlyphForBoundary(frac.rightDelimiter, withHeight: glyphHeight()) { + rightGlyph.position = position + position.x += rightGlyph.width + innerElements.append(rightGlyph) + } + } + let innerDisplay = MTMathListDisplay(withDisplays: innerElements, range: frac.indexRange) + innerDisplay.position = currentPosition + return innerDisplay + } + + // MARK: - Radicals + + func radicalVerticalGap() -> CGFloat { + if style == .display { + return styleFont.mathTable!.radicalDisplayStyleVerticalGap + } else { + return styleFont.mathTable!.radicalVerticalGap + } + } + + func getRadicalGlyphWithHeight(_ radicalHeight:CGFloat) -> MTDisplayDS? { + var glyphAscent=CGFloat(0), glyphDescent=CGFloat(0), glyphWidth=CGFloat(0) + + let radicalGlyph = self.findGlyphForCharacterAtIndex("\u{221A}".startIndex, inString:"\u{221A}") + let glyph = self.findGlyph(radicalGlyph, withHeight:radicalHeight, glyphAscent:&glyphAscent, glyphDescent:&glyphDescent, glyphWidth:&glyphWidth) + + var glyphDisplay:MTDisplayDS? + if glyphAscent + glyphDescent < radicalHeight { + // the glyphs is not as large as required. A glyph needs to be constructed using the extenders. + glyphDisplay = self.constructGlyph(radicalGlyph, withHeight:radicalHeight) + } + + if glyphDisplay == nil { + // No constructed display so use the glyph we got. + glyphDisplay = MTGlyphDisplay(withGlpyh: glyph, range: NSMakeRange(NSNotFound, 0), font:styleFont) + glyphDisplay!.ascent = glyphAscent; + glyphDisplay!.descent = glyphDescent; + glyphDisplay!.width = glyphWidth; + } + return glyphDisplay; + } + + func makeRadical(_ radicand:MTMathList?, range:NSRange) -> MTRadicalDisplay? { + let innerDisplay = MTTypesetter.createLineForMathList(radicand, font:font, style:style, cramped:true)! + var clearance = self.radicalVerticalGap() + let radicalRuleThickness = styleFont.mathTable!.radicalRuleThickness + let radicalHeight = innerDisplay.ascent + innerDisplay.descent + clearance + radicalRuleThickness + + let glyph = self.getRadicalGlyphWithHeight(radicalHeight)! + + // Note this is a departure from Latex. Latex assumes that glyphAscent == thickness. + // Open type math makes no such assumption, and ascent and descent are independent of the thickness. + // Latex computes delta as descent - (h(inner) + d(inner) + clearance) + // but since we may not have ascent == thickness, we modify the delta calculation slightly. + // If the font designer followes Latex conventions, it will be identical. + let delta = (glyph.descent + glyph.ascent) - (innerDisplay.ascent + innerDisplay.descent + clearance + radicalRuleThickness) + if delta > 0 { + clearance += delta/2 // increase the clearance to center the radicand inside the sign. + } + + // we need to shift the radical glyph up, to coincide with the baseline of inner. + // The new ascent of the radical glyph should be thickness + adjusted clearance + h(inner) + let radicalAscent = radicalRuleThickness + clearance + innerDisplay.ascent + let shiftUp = radicalAscent - glyph.ascent // Note: if the font designer followed latex conventions, this is the same as glyphAscent == thickness. + glyph.shiftDown = -shiftUp + + let radical = MTRadicalDisplay(withRadicand: innerDisplay, glyph: glyph, position: currentPosition, range: range) + radical.ascent = radicalAscent + styleFont.mathTable!.radicalExtraAscender + radical.topKern = styleFont.mathTable!.radicalExtraAscender + radical.lineThickness = radicalRuleThickness + // Note: Until we have radical construction from parts, it is possible that glyphAscent+glyphDescent is less + // than the requested height of the glyph (i.e. radicalHeight), so in the case the innerDisplay has a larger + // descent we use the innerDisplay's descent. + radical.descent = max(glyph.ascent + glyph.descent - radicalAscent, innerDisplay.descent) + radical.width = glyph.width + innerDisplay.width + return radical + } + + // MARK: - Glyphs + + func findGlyph(_ glyph:CGGlyph, withHeight height:CGFloat, glyphAscent:inout CGFloat, glyphDescent:inout CGFloat, glyphWidth:inout CGFloat) -> CGGlyph { + let variants = styleFont.mathTable!.getVerticalVariantsForGlyph(glyph) + let numVariants = variants.count; + var glyphs = [CGGlyph]()// numVariants) + glyphs.reserveCapacity(numVariants) + for i in 0 ..< numVariants { + let glyph = variants[i]!.uint16Value + glyphs.append(glyph) + } + + var bboxes = [CGRect](repeating: CGRect.zero, count: numVariants) + var advances = [CGSize](repeating: CGSize.zero, count: numVariants) + + // Get the bounds for these glyphs + CTFontGetBoundingRectsForGlyphs(styleFont.ctFont, .horizontal, glyphs, &bboxes, numVariants) + CTFontGetAdvancesForGlyphs(styleFont.ctFont, .horizontal, glyphs, &advances, numVariants); + var ascent=CGFloat(0), descent=CGFloat(0), width=CGFloat(0) + for i in 0..= height) { + glyphAscent = ascent; + glyphDescent = descent; + glyphWidth = width; + return glyphs[i] + } + } + glyphAscent = ascent; + glyphDescent = descent; + glyphWidth = width; + return glyphs[numVariants - 1] + } + + func constructGlyph(_ glyph:CGGlyph, withHeight glyphHeight:CGFloat) -> MTGlyphConstructionDisplay? { + let parts = styleFont.mathTable!.getVerticalGlyphAssembly(forGlyph: glyph) + if parts.count == 0 { + return nil + } + var glyphs = [NSNumber](), offsets = [NSNumber]() + var height:CGFloat=0 + self.constructGlyphWithParts(parts, glyphHeight:glyphHeight, glyphs:&glyphs, offsets:&offsets, height:&height) + var first = glyphs[0].uint16Value + let width = CTFontGetAdvancesForGlyphs(styleFont.ctFont, .horizontal, &first, nil, 1); + let display = MTGlyphConstructionDisplay(withGlyphs: glyphs, offsets: offsets, font: styleFont) + display.width = width; + display.ascent = height; + display.descent = 0; // it's upto the rendering to adjust the display up or down. + return display; + } + + func constructGlyphWithParts(_ parts:[GlyphPart], glyphHeight:CGFloat, glyphs:inout [NSNumber], offsets:inout [NSNumber], height:inout CGFloat) { + // Loop forever until the glyph height is valid + for numExtenders in 0..= glyphHeight) { + // we are done + glyphs = glyphsRv; + offsets = offsetsRv; + height = minHeight; + return; + } else if (glyphHeight <= maxHeight) { + // spread the delta equally between all the connectors + let delta = glyphHeight - minHeight; + let deltaIncrease = Float(delta) / Float(glyphsRv.count - 1) + var lastOffset = CGFloat(0) + for i in 0.. CGGlyph { + // Get the character at index taking into account UTF-32 characters + var chars = Array(str[index].utf16) + + // Get the glyph from the font + var glyph = [CGGlyph](repeating: CGGlyph.zero, count: chars.count) + let found = CTFontGetGlyphsForCharacters(styleFont.ctFont, &chars, &glyph, chars.count) + if !found { + // Try fallback font if available + if let fallbackFont = styleFont.fallbackFont { + let fallbackFound = CTFontGetGlyphsForCharacters(fallbackFont, &chars, &glyph, chars.count) + if fallbackFound { + return glyph[0] + } + } + // the font did not contain a glyph for our character, so we just return 0 (notdef) + return 0 + } + return glyph[0] + } + + // MARK: - Large Operators + + func makeLargeOp(_ op:MTLargeOperator!) -> MTDisplay? { + // Show limits above/below in display mode + // For inline mode, we still center limits below for operators like \lim, but with tighter spacing + let limits = op.limits && (style == .display || style == .text) + var delta = CGFloat(0) + if op.nucleus.count == 1 { + var glyph = self.findGlyphForCharacterAtIndex(op.nucleus.startIndex, inString:op.nucleus) + if glyph != 0 { + // Enlarge large operators to make them visually distinctive + if style == .display { + // Display style: use large variant for mathematical display mode (~2.2em) + glyph = styleFont.mathTable!.getLargerGlyph(glyph, forDisplayStyle: true) + } else if style == .text { + // Text/inline style: use moderately larger variant to ensure operator is taller than surrounding text + glyph = styleFont.mathTable!.getLargerGlyph(glyph, forDisplayStyle: false) + } + // Script and scriptOfScript styles keep base size (compact rendering) + } + // This is be the italic correction of the character. + delta = styleFont.mathTable!.getItalicCorrection(glyph) + + // vertically center + let bbox = CTFontGetBoundingRectsForGlyphs(styleFont.ctFont, .horizontal, &glyph, nil, 1); + let width = CTFontGetAdvancesForGlyphs(styleFont.ctFont, .horizontal, &glyph, nil, 1); + var ascent=CGFloat(0), descent=CGFloat(0) + getBboxDetails(bbox, ascent: &ascent, descent: &descent) + let shiftDown = 0.5*(ascent - descent) - styleFont.mathTable!.axisHeight; + let glyphDisplay = MTGlyphDisplay(withGlpyh: glyph, range: op.indexRange, font: styleFont) + glyphDisplay.ascent = ascent; + glyphDisplay.descent = descent; + glyphDisplay.width = width; + if (op.subScript != nil) && !limits { + // Remove italic correction from the width of the glyph if + // there is a subscript and limits is not set. + glyphDisplay.width -= delta; + } + glyphDisplay.shiftDown = shiftDown; + glyphDisplay.position = currentPosition; + return self.addLimitsToDisplay(glyphDisplay, forOperator:op, delta:delta) + } else { + // Create a regular node + let line = NSMutableAttributedString(string: op.nucleus) + // add the font + line.addAttribute(kCTFontAttributeName as NSAttributedString.Key, value:styleFont.ctFont!, range:NSMakeRange(0, line.length)) + let displayAtom = MTCTLineDisplay(withString: line, position: currentPosition, range: op.indexRange, font: styleFont, atoms: [op]) + return self.addLimitsToDisplay(displayAtom, forOperator:op, delta:0) + } + } + + func addLimitsToDisplay(_ display:MTDisplay?, forOperator op:MTLargeOperator, delta:CGFloat) -> MTDisplay? { + // If there is no subscript or superscript, just return the current display + if op.subScript == nil && op.superScript == nil { + currentPosition.x += display!.width + return display; + } + // Show limits above/below in both display and text (inline) modes + if op.limits && (style == .display || style == .text) { + // make limits (above/below positioning) + var superScript:MTMathListDisplay? = nil, subScript:MTMathListDisplay? = nil + + // Scale font for script style before creating scripts + // This matches how MTDisplayPreRenderer.renderScript() handles script sizing + let scriptStyle = self.scriptStyle() + let scriptFontSize = MTTypesetter.getStyleSize(scriptStyle, font: font) + let scriptFont = font.copy(withSize: scriptFontSize) + + if op.superScript != nil { + superScript = MTTypesetter.createLineForMathList(op.superScript, font:scriptFont, style:scriptStyle, cramped:self.superScriptCramped()) + } + if op.subScript != nil { + subScript = MTTypesetter.createLineForMathList(op.subScript, font:scriptFont, style:scriptStyle, cramped:self.subscriptCramped()) + } + assert((superScript != nil) || (subScript != nil), "At least one of superscript or subscript should have been present."); + let opsDisplay = MTLargeOpLimitsDisplay(withNucleus:display, upperLimit:superScript, lowerLimit:subScript, limitShift:delta/2, extraPadding:0) + + // Use standard OpenType MATH metrics for limit spacing + if superScript != nil { + let upperLimitGap = max(styleFont.mathTable!.upperLimitGapMin, styleFont.mathTable!.upperLimitBaselineRiseMin - superScript!.descent); + opsDisplay.upperLimitGap = upperLimitGap; + } + if subScript != nil { + let lowerLimitGap = max(styleFont.mathTable!.lowerLimitGapMin, styleFont.mathTable!.lowerLimitBaselineDropMin - subScript!.ascent); + opsDisplay.lowerLimitGap = lowerLimitGap; + } + opsDisplay.position = currentPosition; + opsDisplay.range = op.indexRange; + currentPosition.x += opsDisplay.width; + return opsDisplay; + } else { + currentPosition.x += display!.width; + self.makeScripts(op, display:display, index:safeUIntFromLocation(op.indexRange.location), delta:delta) + return display; + } + } + + // MARK: - Large delimiters + + // Delimiter shortfall from plain.tex + static let kDelimiterFactor = CGFloat(901) + static let kDelimiterShortfallPoints = CGFloat(5) + + func makeLeftRight(_ inner: MTInner?, maxWidth: CGFloat = 0) -> MTDisplay? { + assert(inner!.leftBoundary != nil || inner!.rightBoundary != nil, "Inner should have a boundary to call this function"); + + let glyphHeight: CGFloat + + // Check if we have an explicit delimiter height (from \big, \Big, etc.) + if let delimiterMultiplier = inner!.delimiterHeight { + // delimiterHeight is a multiplier (e.g., 1.2, 1.8, 2.4, 3.0) + // Multiply by font size to get actual height + glyphHeight = styleFont.fontSize * delimiterMultiplier + } else { + // Calculate height based on inner content (for \left...\right) + let innerListDisplay = MTTypesetter.createLineForMathList(inner!.innerList, font:font, style:style, cramped:cramped, spaced:true, maxWidth:maxWidth) + let axisHeight = styleFont.mathTable!.axisHeight + // delta is the max distance from the axis + let delta = max(innerListDisplay!.ascent - axisHeight, innerListDisplay!.descent + axisHeight); + let d1 = (delta / 500) * MTTypesetter.kDelimiterFactor; // This represents atleast 90% of the formula + let d2 = 2 * delta - MTTypesetter.kDelimiterShortfallPoints; // This represents a shortfall of 5pt + // The size of the delimiter glyph should cover at least 90% of the formula or + // be at most 5pt short. + glyphHeight = max(d1, d2); + } + + var innerElements = [MTDisplay]() + var position = CGPoint.zero + + // Add horizontal padding between delimiters and content + // Use 2 mu (about 1/9 em) for breathing room, matching TeX standards + let delimiterPadding = styleFont.mathTable!.muUnit * 2 + + if inner!.leftBoundary != nil && !inner!.leftBoundary!.nucleus.isEmpty { + let leftGlyph = self.findGlyphForBoundary(inner!.leftBoundary!.nucleus, withHeight:glyphHeight) + leftGlyph!.position = position + position.x += leftGlyph!.width + innerElements.append(leftGlyph!) + // Add padding after left delimiter + position.x += delimiterPadding + } + + // Only include inner content if not using explicit delimiter height + // (explicit height commands like \big produce standalone delimiters) + if inner!.delimiterHeight == nil { + let innerListDisplay = MTTypesetter.createLineForMathList(inner!.innerList, font:font, style:style, cramped:cramped, spaced:true, maxWidth:maxWidth) + innerListDisplay!.position = position; + position.x += innerListDisplay!.width; + innerElements.append(innerListDisplay!) + } + + if inner!.rightBoundary != nil && !inner!.rightBoundary!.nucleus.isEmpty { + // Add padding before right delimiter + position.x += delimiterPadding + let rightGlyph = self.findGlyphForBoundary(inner!.rightBoundary!.nucleus, withHeight:glyphHeight) + rightGlyph!.position = position; + position.x += rightGlyph!.width; + innerElements.append(rightGlyph!) + } + let innerDisplay = MTMathListDisplay(withDisplays: innerElements, range: inner!.indexRange) + return innerDisplay + } + + func findGlyphForBoundary(_ delimiter:String, withHeight glyphHeight:CGFloat) -> MTDisplay? { + var glyphAscent=CGFloat(0), glyphDescent=CGFloat(0), glyphWidth=CGFloat(0) + let leftGlyph = self.findGlyphForCharacterAtIndex(delimiter.startIndex, inString:delimiter) + let glyph = self.findGlyph(leftGlyph, withHeight:glyphHeight, glyphAscent:&glyphAscent, glyphDescent:&glyphDescent, glyphWidth:&glyphWidth) + + var glyphDisplay:MTDisplayDS? + if (glyphAscent + glyphDescent < glyphHeight) { + // we didn't find a pre-built glyph that is large enough + glyphDisplay = self.constructGlyph(leftGlyph, withHeight:glyphHeight) + } + + if glyphDisplay == nil { + // Create a glyph display + glyphDisplay = MTGlyphDisplay(withGlpyh: glyph, range: NSMakeRange(NSNotFound, 0), font:styleFont) + glyphDisplay!.ascent = glyphAscent; + glyphDisplay!.descent = glyphDescent; + glyphDisplay!.width = glyphWidth; + } + // Center the glyph on the axis + let shiftDown = 0.5*(glyphDisplay!.ascent - glyphDisplay!.descent) - styleFont.mathTable!.axisHeight; + glyphDisplay!.shiftDown = shiftDown; + return glyphDisplay; + } + + // MARK: - Underline/Overline + + func makeUnderline(_ under:MTUnderLine?) -> MTDisplay? { + let innerListDisplay = MTTypesetter.createLineForMathList(under!.innerList, font:font, style:style, cramped:cramped) + let underDisplay = MTLineDisplay(withInner: innerListDisplay, position: currentPosition, range: under!.indexRange) + // Move the line down by the vertical gap. + underDisplay.lineShiftUp = -(innerListDisplay!.descent + styleFont.mathTable!.underbarVerticalGap); + underDisplay.lineThickness = styleFont.mathTable!.underbarRuleThickness; + underDisplay.ascent = innerListDisplay!.ascent + underDisplay.descent = innerListDisplay!.descent + styleFont.mathTable!.underbarVerticalGap + styleFont.mathTable!.underbarRuleThickness + styleFont.mathTable!.underbarExtraDescender; + underDisplay.width = innerListDisplay!.width; + return underDisplay; + } + + func makeOverline(_ over:MTOverLine?) -> MTDisplay? { + let innerListDisplay = MTTypesetter.createLineForMathList(over!.innerList, font:font, style:style, cramped:true) + let overDisplay = MTLineDisplay(withInner:innerListDisplay, position:currentPosition, range:over!.indexRange) + overDisplay.lineShiftUp = innerListDisplay!.ascent + styleFont.mathTable!.overbarVerticalGap; + overDisplay.lineThickness = styleFont.mathTable!.underbarRuleThickness; + overDisplay.ascent = innerListDisplay!.ascent + styleFont.mathTable!.overbarVerticalGap + styleFont.mathTable!.overbarRuleThickness + styleFont.mathTable!.overbarExtraAscender; + overDisplay.descent = innerListDisplay!.descent; + overDisplay.width = innerListDisplay!.width; + return overDisplay; + } + + // MARK: - Accents + + func isSingleCharAccentee(_ accent:MTAccent?) -> Bool { + guard let accent = accent else { return false } + if accent.innerList!.atoms.count != 1 { + // Not a single char list. + return false + } + let innerAtom = accent.innerList!.atoms[0] + if innerAtom.nucleus.count != 1 { + // A complex atom, not a simple char. + return false + } + if innerAtom.subScript != nil || innerAtom.superScript != nil { + return false + } + return true + } + + // The distance the accent must be moved from the beginning. + func getSkew(_ accent: MTAccent?, accenteeWidth width:CGFloat, accentGlyph:CGGlyph) -> CGFloat { + guard let accent = accent else { return 0 } + if accent.nucleus.isEmpty { + // No accent + return 0 + } + let accentAdjustment = styleFont.mathTable!.getTopAccentAdjustment(accentGlyph) + var accenteeAdjustment = CGFloat(0) + if !self.isSingleCharAccentee(accent) { + // use the center of the accentee + accenteeAdjustment = width/2 + } else { + let innerAtom = accent.innerList!.atoms[0] + let accenteeGlyph = self.findGlyphForCharacterAtIndex(innerAtom.nucleus.index(innerAtom.nucleus.endIndex, offsetBy:-1), inString:innerAtom.nucleus) + accenteeAdjustment = styleFont.mathTable!.getTopAccentAdjustment(accenteeGlyph) + } + // The adjustments need to aligned, so skew is just the difference. + return (accenteeAdjustment - accentAdjustment) + } + + // Find the largest horizontal variant if exists, with width less than max width. + func findVariantGlyph(_ glyph:CGGlyph, withMaxWidth maxWidth:CGFloat, maxWidth glyphAscent:inout CGFloat, glyphDescent:inout CGFloat, glyphWidth:inout CGFloat, glyphMinY:inout CGFloat) -> CGGlyph { + let variants = styleFont.mathTable!.getHorizontalVariantsForGlyph(glyph) + let numVariants = variants.count + assert(numVariants > 0, "A glyph is always it's own variant, so number of variants should be > 0"); + var glyphs = [CGGlyph]() // [numVariants) + glyphs.reserveCapacity(numVariants) + for i in 0 ..< numVariants { + let glyph = variants[i]!.uint16Value + glyphs.append(glyph) + } + + var curGlyph = glyphs[0] // if no other glyph is found, we'll return the first one. + var bboxes = [CGRect](repeating: CGRect.zero, count: numVariants) // [numVariants) + var advances = [CGSize](repeating: CGSize.zero, count:numVariants) + // Get the bounds for these glyphs + CTFontGetBoundingRectsForGlyphs(styleFont.ctFont, .horizontal, &glyphs, &bboxes, numVariants); + CTFontGetAdvancesForGlyphs(styleFont.ctFont, .horizontal, &glyphs, &advances, numVariants); + for i in 0.. maxWidth) { + if (i == 0) { + // glyph dimensions are not yet set + glyphWidth = advances[i].width; + glyphAscent = ascent; + glyphDescent = descent; + glyphMinY = bounds.minY; + } + return curGlyph; + } else { + curGlyph = glyphs[i] + glyphWidth = advances[i].width; + glyphAscent = ascent; + glyphDescent = descent; + glyphMinY = bounds.minY; + } + } + // We exhausted all the variants and none was larger than the width, so we return the largest + return curGlyph; + } + + /// Gets the proper glyph name for arrow accents that have stretchy variants in the font. + /// Returns different glyphs based on the LaTeX command used: + /// - \vec: use combining character glyph (uni20D7) for small fixed-size arrow + /// - \overrightarrow: use non-combining arrow (arrowright) which can be stretched + func getArrowAccentGlyphName(_ accent: MTAccent) -> String? { + // Check if this is a stretchy arrow accent (set by the factory based on LaTeX command) + let useStretchy = accent.isStretchy + + // Map Unicode combining characters to appropriate glyph names + switch accent.nucleus { + case "\u{20D6}": // Combining left arrow above + return useStretchy ? "arrowleft" : "uni20D6" + case "\u{20D7}": // Combining right arrow above (\vec or \overrightarrow) + return useStretchy ? "arrowright" : "uni20D7" + case "\u{20E1}": // Combining left right arrow above + return useStretchy ? "arrowboth" : "uni20E1" + default: + return nil + } + } + + /// Gets the proper glyph name for wide accents that should stretch to cover content. + /// Returns different glyphs based on the LaTeX command used: + /// - \hat: use combining character for fixed-size accent + /// - \widehat: use non-combining circumflex which can be stretched + func getWideAccentGlyphName(_ accent: MTAccent) -> String? { + // Only apply to wide accents (set by factory based on LaTeX command) + guard accent.isWide else { return nil } + + // Map Unicode combining characters to non-combining glyph names with stretchy variants + switch accent.nucleus { + case "\u{0302}": // COMBINING CIRCUMFLEX ACCENT (\hat or \widehat) + return "circumflex" + case "\u{0303}": // COMBINING TILDE (\tilde or \widetilde) + return "tilde" + case "\u{030C}": // COMBINING CARON (\check or \widecheck) + return "caron" + default: + return nil + } + } + + /// Counts the approximate character length of the content under a wide accent. + /// This is used to select the appropriate glyph variant. + func getWideAccentContentLength(_ accent: MTAccent) -> Int { + guard let innerList = accent.innerList else { return 0 } + + var charCount = 0 + for atom in innerList.atoms { + switch atom.type { + case .variable, .number: + // Count actual characters + charCount += atom.nucleus.count + case .ordinary, .binaryOperator, .relation: + // Count as single character + charCount += 1 + case .fraction: + // Fractions count as 2 units + charCount += 2 + case .radical: + // Radicals count as 2 units + charCount += 2 + case .largeOperator: + // Large operators count as 2 units + charCount += 2 + default: + // Other types count as 1 unit + charCount += 1 + } + } + return charCount + } + + /// Determines which glyph variant to use for a wide accent based on content length. + /// Returns a multiplier for the requested width (1.0, 1.5, 2.0, or 2.5) + /// Selects variants based on character count to ensure proper coverage. + func getWideAccentVariantMultiplier(_ accent: MTAccent) -> CGFloat { + let charCount = getWideAccentContentLength(accent) + + // Map character count to variant width request multiplier + // This helps select larger glyph variants from the font's MATH table + // 1-2 chars: request 1.0x (smallest variant) + // 3-4 chars: request 1.5x (medium variant) + // 5-6 chars: request 2.0x (large variant) + // 7+ chars: request 2.5x (largest variant) + if charCount <= 2 { + return 1.0 + } else if charCount <= 4 { + return 1.5 + } else if charCount <= 6 { + return 2.0 + } else { + return 2.5 + } + } + + func makeAccent(_ accent:MTAccent?) -> MTDisplay? { + guard let accent = accent else { return nil } + + let accentee = MTTypesetter.createLineForMathList(accent.innerList, font:font, style:style, cramped:true) + if accent.nucleus.isEmpty { + // no accent! + return accentee + } + + // If accentee is nil (empty content), create an empty display + guard let accentee = accentee else { + // Return an empty display for empty content + let emptyDisplay = MTMathListDisplay(withDisplays: [], range: accent.indexRange) + emptyDisplay.position = currentPosition + return emptyDisplay + } + + var accentGlyph: CGGlyph + let isArrowAccent = getArrowAccentGlyphName(accent) != nil + let isWideAccent = getWideAccentGlyphName(accent) != nil + + // Check for special accent types that need non-combining glyphs + if let wideGlyphName = getWideAccentGlyphName(accent) { + // For wide accents, use non-combining glyphs (e.g., "circumflex", "tilde") + // These have horizontal variants that can stretch + accentGlyph = styleFont.get(glyphWithName: wideGlyphName) + } else if let arrowGlyphName = getArrowAccentGlyphName(accent) { + // For arrow accents, use non-combining arrow glyphs (e.g., "arrowright") + // These have larger horizontal variants than the combining versions + accentGlyph = styleFont.get(glyphWithName: arrowGlyphName) + } else { + // For regular accents, use Unicode character lookup + let end = accent.nucleus.index(before: accent.nucleus.endIndex) + accentGlyph = self.findGlyphForCharacterAtIndex(end, inString:accent.nucleus) + } + + let accenteeWidth = accentee.width; + var glyphAscent=CGFloat(0), glyphDescent=CGFloat(0), glyphWidth=CGFloat(0), glyphMinY=CGFloat(0) + + // Adjust requested width based on accent type: + // - Wide accents (\widehat): request width based on content length (variant selection) + // - Arrow accents (\overrightarrow): request extra width for stretching + // - Regular accents: request exact content width + let requestedWidth: CGFloat + if isWideAccent { + // For wide accents, request width based on content length to select appropriate variant + let multiplier = getWideAccentVariantMultiplier(accent) + requestedWidth = accenteeWidth * multiplier + } else if isArrowAccent { + if accent.isStretchy { + requestedWidth = accenteeWidth * 1.1 // Request extra width for stretching + } else { + requestedWidth = 1.0 // Get smallest non-zero variant (typically .h1) + } + } else { + requestedWidth = accenteeWidth + } + + accentGlyph = self.findVariantGlyph(accentGlyph, withMaxWidth:requestedWidth, maxWidth:&glyphAscent, glyphDescent:&glyphDescent, glyphWidth:&glyphWidth, glyphMinY:&glyphMinY) + + // For non-stretchy arrow accents (\vec): if we got a zero-width glyph (base combining char), + // manually select the first variant which is the proper accent size + if isArrowAccent && !accent.isStretchy && glyphWidth == 0 { + guard let mathTable = styleFont.mathTable else { return nil } + let variants = mathTable.getHorizontalVariantsForGlyph(accentGlyph) + if variants.count > 1, let variantNum = variants[1] { + // Use the first variant (.h1) which has proper width + accentGlyph = CGGlyph(variantNum.uint16Value) + var glyph = accentGlyph + var advances = CGSize.zero + CTFontGetAdvancesForGlyphs(styleFont.ctFont, .horizontal, &glyph, &advances, 1) + glyphWidth = advances.width + // Recalculate ascent and descent for the variant glyph + var boundingRects = CGRect.zero + CTFontGetBoundingRectsForGlyphs(styleFont.ctFont, .horizontal, &glyph, &boundingRects, 1) + glyphMinY = boundingRects.minY + glyphAscent = boundingRects.maxY + glyphDescent = -boundingRects.minY + } + } + + // Special accents (arrows and wide accents) need more vertical space and different positioning + let delta: CGFloat + let height: CGFloat + let skew: CGFloat + + if isWideAccent { + // Wide accents (\widehat, \widetilde): use same vertical spacing as stretchy arrows + delta = 0 // No compression for wide accents + guard let mathTable = styleFont.mathTable else { return nil } + let wideAccentSpacing = mathTable.upperLimitGapMin // Same as stretchy arrows + // Compensate for internal glyph whitespace (minY > 0) + let minYCompensation = max(0, glyphMinY) + height = accentee.ascent + wideAccentSpacing - minYCompensation + + // For wide accents: if the largest glyph variant is still smaller than content width, + // scale it horizontally to fully cover the content + if glyphWidth < accenteeWidth { + // Add padding to make accent extend slightly beyond content + // Use ~0.1em padding (less than arrows which use ~0.167em) + let widePadding = styleFont.fontSize / 10 // Approximately 0.1em + let targetWidth = accenteeWidth + widePadding + + let scaleX = targetWidth / glyphWidth + let accentGlyphDisplay = MTGlyphDisplay(withGlpyh: accentGlyph, range: accent.indexRange, font: styleFont) + accentGlyphDisplay.scaleX = scaleX // Apply horizontal scaling + accentGlyphDisplay.ascent = glyphAscent + accentGlyphDisplay.descent = glyphDescent + accentGlyphDisplay.width = targetWidth // Set width to include padding + accentGlyphDisplay.position = CGPointMake(0, height) // Align to left edge + + var finalAccentee = accentee + if self.isSingleCharAccentee(accent) && (accent.subScript != nil || accent.superScript != nil) { + // Attach the super/subscripts to the accentee instead of the accent. + guard let innerList = accent.innerList, + !innerList.atoms.isEmpty else { return nil } + let innerAtom = innerList.atoms[0] + innerAtom.superScript = accent.superScript + innerAtom.subScript = accent.subScript + accent.superScript = nil + accent.subScript = nil + if let remadeAccentee = MTTypesetter.createLineForMathList(accent.innerList, font:font, style:style, cramped:cramped) { + finalAccentee = remadeAccentee + } + } + + let display = MTAccentDisplay(withAccent:accentGlyphDisplay, accentee:finalAccentee, range:accent.indexRange) + display.width = finalAccentee.width + display.descent = finalAccentee.descent + let ascent = height + glyphAscent + display.ascent = max(finalAccentee.ascent, ascent) + display.position = currentPosition + return display + } else { + // Wide accent glyph is wide enough: center it over the content + skew = (accenteeWidth - glyphWidth) / 2 + } + } else if isArrowAccent { + // Arrow accents spacing depends on whether they're stretchy or not + guard let mathTable = styleFont.mathTable else { return nil } + if accent.isStretchy { + // Stretchy arrows (\overrightarrow): use full ascent + additional spacing + delta = 0 // No compression for stretchy arrows + let arrowSpacing = mathTable.upperLimitGapMin // Use standard gap + // Compensate for internal glyph whitespace (minY > 0) + let minYCompensation = max(0, glyphMinY) + height = accentee.ascent + arrowSpacing - minYCompensation + } else { + // Non-stretchy arrows (\vec): use tight spacing like regular accents + // This gives a more compact appearance suitable for single-character vectors + delta = min(accentee.ascent, mathTable.accentBaseHeight) + // Use same formula as regular accents (no minYCompensation adjustment) + // This places the arrow properly above the character + height = accentee.ascent - delta + } + + // For stretchy arrow accents (\overrightarrow): if the largest glyph variant is still smaller than content width, + // scale it horizontally to fully cover the content + // Add small padding to make arrow tip extend slightly beyond content + // For non-stretchy accents (\vec): always center without scaling + if accent.isStretchy && glyphWidth < accenteeWidth { + // Add padding to make arrow extend beyond content on the tip side + // Use approximately 0.15-0.2em extra width + let arrowPadding = styleFont.fontSize / 6 // Approximately 0.167em at typical font sizes + let targetWidth = accenteeWidth + arrowPadding + + let scaleX = targetWidth / glyphWidth + let accentGlyphDisplay = MTGlyphDisplay(withGlpyh: accentGlyph, range: accent.indexRange, font: styleFont) + accentGlyphDisplay.scaleX = scaleX // Apply horizontal scaling + accentGlyphDisplay.ascent = glyphAscent + accentGlyphDisplay.descent = glyphDescent + accentGlyphDisplay.width = targetWidth // Set width to include padding + accentGlyphDisplay.position = CGPointMake(0, height) // Align to left edge + + var finalAccentee = accentee + if self.isSingleCharAccentee(accent) && (accent.subScript != nil || accent.superScript != nil) { + // Attach the super/subscripts to the accentee instead of the accent. + guard let innerList = accent.innerList, + !innerList.atoms.isEmpty else { return nil } + let innerAtom = innerList.atoms[0] + innerAtom.superScript = accent.superScript + innerAtom.subScript = accent.subScript + accent.superScript = nil + accent.subScript = nil + if let remadeAccentee = MTTypesetter.createLineForMathList(accent.innerList, font:font, style:style, cramped:cramped) { + finalAccentee = remadeAccentee + } + } + + let display = MTAccentDisplay(withAccent:accentGlyphDisplay, accentee:finalAccentee, range:accent.indexRange) + display.width = finalAccentee.width + display.descent = finalAccentee.descent + let ascent = height + glyphAscent + display.ascent = max(finalAccentee.ascent, ascent) + display.position = currentPosition + return display + } else { + // Arrow glyph is wide enough or is non-stretchy (\vec): center it over the content + skew = (accenteeWidth - glyphWidth) / 2 + } + } else { + // For regular accents: use traditional tight positioning + guard let mathTable = styleFont.mathTable else { return nil } + delta = min(accentee.ascent, mathTable.accentBaseHeight) + skew = self.getSkew(accent, accenteeWidth:accenteeWidth, accentGlyph:accentGlyph) + height = accentee.ascent - delta // This is always positive since delta <= height. + } + + let accentPosition = CGPointMake(skew, height); + let accentGlyphDisplay = MTGlyphDisplay(withGlpyh: accentGlyph, range: accent.indexRange, font: styleFont) + accentGlyphDisplay.ascent = glyphAscent; + accentGlyphDisplay.descent = glyphDescent; + accentGlyphDisplay.width = glyphWidth; + accentGlyphDisplay.position = accentPosition; + + var finalAccentee = accentee + if self.isSingleCharAccentee(accent) && (accent.subScript != nil || accent.superScript != nil) { + // Attach the super/subscripts to the accentee instead of the accent. + guard let innerList = accent.innerList, + !innerList.atoms.isEmpty else { return nil } + let innerAtom = innerList.atoms[0] + innerAtom.superScript = accent.superScript; + innerAtom.subScript = accent.subScript; + accent.superScript = nil; + accent.subScript = nil; + // Remake the accentee (now with sub/superscripts) + // Note: Latex adjusts the heights in case the height of the char is different in non-cramped mode. However this shouldn't be the case since cramping + // only affects fractions and superscripts. We skip adjusting the heights. + if let remadeAccentee = MTTypesetter.createLineForMathList(accent.innerList, font:font, style:style, cramped:cramped) { + finalAccentee = remadeAccentee + } + } + + let display = MTAccentDisplay(withAccent:accentGlyphDisplay, accentee:finalAccentee, range:accent.indexRange) + display.width = finalAccentee.width; + display.descent = finalAccentee.descent; + + // Calculate total ascent based on positioning + // For arrows: height already includes spacing, so ascent = height + glyphAscent + // For regular accents: ascent = accentee.ascent - delta + glyphAscent (existing formula) + let ascent = height + glyphAscent; + display.ascent = max(finalAccentee.ascent, ascent); + display.position = currentPosition; + + return display; + } + + /// Determines if an accent can use Unicode composition for inline rendering. + /// Unicode combining characters only work correctly for single base characters. + /// Multi-character expressions and arrow accents need font-based rendering. + func canUseUnicodeComposition(_ accent: MTAccent) -> Bool { + // Check if innerList has exactly one simple character + guard let innerList = accent.innerList, + innerList.atoms.count == 1, + let firstAtom = innerList.atoms.first else { + return false + } + + // Only allow simple variable/number atoms + guard firstAtom.type == .variable || firstAtom.type == .number else { + return false + } + + // Check that the atom doesn't have subscripts/superscripts + guard firstAtom.subScript == nil && firstAtom.superScript == nil else { + return false + } + + // Exclude arrow accents - they need stretching from font glyphs + // These Unicode combining characters only apply to single preceding characters + let arrowAccents: Set = [ + "\u{20D6}", // overleftarrow + "\u{20D7}", // overrightarrow / vec + "\u{20E1}" // overleftrightarrow + ] + + if arrowAccents.contains(accent.nucleus) { + return false + } + + return true + } + + // MARK: - Table + + let kBaseLineSkipMultiplier = CGFloat(1.2) // default base line stretch is 12 pt for 10pt font. + let kLineSkipMultiplier = CGFloat(0.1) // default is 1pt for 10pt font. + let kLineSkipLimitMultiplier = CGFloat(0) + let kJotMultiplier = CGFloat(0.3) // A jot is 3pt for a 10pt font. + + func makeTable(_ table:MTMathTable?) -> MTDisplay? { + let numColumns = table!.numColumns; + if numColumns == 0 || table!.numRows == 0 { + // Empty table + return MTMathListDisplay(withDisplays: [MTDisplay](), range: table!.indexRange) + } + + var columnWidths = [CGFloat](repeating: 0, count: numColumns) + let displays = self.typesetCells(table, columnWidths:&columnWidths) + + // Position all the columns in each row + var rowDisplays = [MTDisplay]() + for row in displays { + if let rowDisplay = self.makeRowWithColumns(row, forTable:table, columnWidths:columnWidths) { + rowDisplays.append(rowDisplay) + } + } + + // Position all the rows + self.positionRows(rowDisplays, forTable:table) + let tableDisplay = MTMathListDisplay(withDisplays: rowDisplays, range: table!.indexRange) + tableDisplay.position = currentPosition; + return tableDisplay; + } + + // Typeset every cell in the table. As a side-effect calculate the max column width of each column. + func typesetCells(_ table:MTMathTable?, columnWidths: inout [CGFloat]) -> [[MTDisplay]] { + var displays = [[MTDisplay]]() + for row in table!.cells { + var colDisplays = [MTDisplay]() + for i in 0.. MTMathListDisplay? { + var columnStart = CGFloat(0) + var rowRange = NSMakeRange(NSNotFound, 0); + for i in 0.. 0 { + if rowRange.location != NSNotFound { + rowRange = NSUnionRange(rowRange, col.range); + } else { + rowRange = col.range; + } + } + // If col.range is invalid or has zero length, skip it - don't update rowRange + + col.position = CGPointMake(cellPos, 0); + columnStart += colWidth + table!.interColumnSpacing * styleFont.mathTable!.muUnit; + } + + // If no valid ranges were found (all cells had zero-length ranges), use a synthetic range + // This represents the row conceptually spanning all its columns + if rowRange.location == NSNotFound { + rowRange = NSMakeRange(0, cols.count); + } + + // Create a display for the row + let rowDisplay = MTMathListDisplay(withDisplays: cols, range:rowRange) + return rowDisplay + } + + func positionRows(_ rows:[MTDisplay], forTable table:MTMathTable?) { + // Position the rows + // We will first position the rows starting from 0 and then in the second pass center the whole table vertically. + var currPos = CGFloat(0) + let openup = table!.interRowAdditionalSpacing * kJotMultiplier * styleFont.fontSize; + let baselineSkip = openup + kBaseLineSkipMultiplier * styleFont.fontSize; + let lineSkip = openup + kLineSkipMultiplier * styleFont.fontSize; + let lineSkipLimit = openup + kLineSkipLimitMultiplier * styleFont.fontSize; + var prevRowDescent = CGFloat(0) + var ascent = CGFloat(0) + var first = true + for row in rows { + if first { + row.position = CGPointZero; + ascent += row.ascent; + first = false; + } else { + var skip = baselineSkip; + if (skip - (prevRowDescent + row.ascent) < lineSkipLimit) { + // rows are too close to each other. Space them apart further + skip = prevRowDescent + row.ascent + lineSkip; + } + // We are going down so we decrease the y value. + currPos -= skip; + row.position = CGPointMake(0, currPos); + } + prevRowDescent = row.descent; + } + + // Vertically center the whole structure around the axis + // The descent of the structure is the position of the last row + // plus the descent of the last row. + let descent = -currPos + prevRowDescent; + let shiftDown = 0.5*(ascent - descent) - styleFont.mathTable!.axisHeight; + + for row in rows { + row.position = CGPointMake(row.position.x, row.position.y - shiftDown); + } + } +} diff --git a/third-party/SwiftMath/Sources/MathRender/MTUnicode.swift b/third-party/SwiftMath/Sources/MathRender/MTUnicode.swift new file mode 100755 index 0000000000..a1fc48d41c --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/MTUnicode.swift @@ -0,0 +1,89 @@ +// +// Created by Mike Griebling on 2022-12-31. +// Translated from an Objective-C implementation by Kostub Deshmukh. +// +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation + +public struct UnicodeSymbol { + static let multiplication = "\u{00D7}" + static let division = "\u{00F7}" + static let fractionSlash = "\u{2044}" + static let whiteSquare = "\u{25A1}" + static let blackSquare = "\u{25A0}" + static let lessEqual = "\u{2264}" + static let greaterEqual = "\u{2265}" + static let notEqual = "\u{2260}" + static let squareRoot = "\u{221A}" // \sqrt + static let cubeRoot = "\u{221B}" + static let infinity = "\u{221E}" // \infty + static let angle = "\u{2220}" // \angle + static let degree = "\u{00B0}" // \circ + + static let capitalGreekStart = UInt32(0x0391) + static let capitalGreekEnd = UInt32(0x03A9) + static let lowerGreekStart = UInt32(0x03B1) + static let lowerGreekEnd = UInt32(0x03C9) + static let planksConstant = UInt32(0x210e) + static let lowerItalicStart = UInt32(0x1D44E) + static let capitalItalicStart = UInt32(0x1D434) + static let greekLowerItalicStart = UInt32(0x1D6FC) + static let greekCapitalItalicStart = UInt32(0x1D6E2) + static let greekSymbolItalicStart = UInt32(0x1D716) + + static let mathCapitalBoldStart = UInt32(0x1D400) + static let mathLowerBoldStart = UInt32(0x1D41A) + static let greekCapitalBoldStart = UInt32(0x1D6A8) + static let greekLowerBoldStart = UInt32(0x1D6C2) + static let greekSymbolBoldStart = UInt32(0x1D6DC) + static let numberBoldStart = UInt32(0x1D7CE) + + static let mathCapitalBoldItalicStart = UInt32(0x1D468) + static let mathLowerBoldItalicStart = UInt32(0x1D482) + static let greekCapitalBoldItalicStart = UInt32(0x1D71C) + static let greekLowerBoldItalicStart = UInt32(0x1D736) + static let greekSymbolBoldItalicStart = UInt32(0x1D750) + + static let mathCapitalScriptStart = UInt32(0x1D49C) + static let mathCapitalTTStart = UInt32(0x1D670) + static let mathLowerTTStart = UInt32(0x1D68A) + static let numberTTStart = UInt32(0x1D7F6) + static let mathCapitalSansSerifStart = UInt32(0x1D5A0) + static let mathLowerSansSerifStart = UInt32(0x1D5BA) + static let numberSansSerifStart = UInt32(0x1D7E2) + static let mathCapitalFrakturStart = UInt32(0x1D504) + static let mathLowerFrakturStart = UInt32(0x1D51E) + static let mathCapitalBlackboardStart = UInt32(0x1D538) + static let mathLowerBlackboardStart = UInt32(0x1D552) + static let numberBlackboardStart = UInt32(0x1D7D8) +} + +extension Character { + + var utf32Char: UTF32Char { self.unicodeScalars.map { $0.value }.reduce(0, +) } + var isLowerEnglish : Bool { self >= "a" && self <= "z" } + var isUpperEnglish : Bool { self >= "A" && self <= "Z" } + var isNumber : Bool { self >= "0" && self <= "9" } + + var isLowerGreek : Bool { + let uch = self.utf32Char + return uch >= UnicodeSymbol.lowerGreekStart && uch <= UnicodeSymbol.lowerGreekEnd + } + + var isCapitalGreek : Bool { + let uch = self.utf32Char + return uch >= UnicodeSymbol.capitalGreekStart && uch <= UnicodeSymbol.capitalGreekEnd + } + + var greekSymbolOrder : UInt32? { + let greekSymbols : [UTF32Char] = [0x03F5, 0x03D1, 0x03F0, 0x03D5, 0x03F1, 0x03D6] + let index = greekSymbols.firstIndex(of: self.utf32Char) + if let pos = index { return UInt32(pos) } + return nil + } + + var isGreekSymbol : Bool { self.greekSymbolOrder != nil } +} diff --git a/third-party/SwiftMath/Sources/MathRender/RWLock.swift b/third-party/SwiftMath/Sources/MathRender/RWLock.swift new file mode 100644 index 0000000000..ccca3976e0 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/RWLock.swift @@ -0,0 +1,58 @@ +import Foundation + +final class RWLock { + init() { + pthread_rwlock_init(&lock, nil) + } + + deinit { + pthread_rwlock_destroy(&lock) + } + + func read(_ block: () -> T) -> T { + pthread_rwlock_rdlock(&lock) + defer { pthread_rwlock_unlock(&lock) } + return block() + } + + func readWrite(_ block: () -> T) -> T { + pthread_rwlock_wrlock(&lock) + defer { pthread_rwlock_unlock(&lock) } + return block() + } + + private var lock = pthread_rwlock_t() +} + +@propertyWrapper +struct RWLocked { + init(wrappedValue: T) { + value = wrappedValue + } + + var wrappedValue: T { + get { + lock.read { + value + } + } + set { + lock.readWrite { + value = newValue + } + } + } + + @discardableResult + mutating func readWrite(_ block: (inout T) -> Void) -> (oldValue: T, newValue: T) { + lock.readWrite { + let old = value + block(&value) + return (old, value) + } + } + + private var value: T + private let lock = RWLock() +} + diff --git a/third-party/SwiftMath/Sources/MathRender/Tokenization/MTAtomTokenizer.swift b/third-party/SwiftMath/Sources/MathRender/Tokenization/MTAtomTokenizer.swift new file mode 100644 index 0000000000..2a76a661a4 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/Tokenization/MTAtomTokenizer.swift @@ -0,0 +1,1145 @@ +// +// MTAtomTokenizer.swift +// SwiftMath +// +// Created by Claude Code on 2025-12-16. +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation +import CoreGraphics + +/// Tokenizes MTMathAtom lists into breakable elements +class MTAtomTokenizer { + + // MARK: - Properties + + let font: MTFont + let style: MTLineStyle + let cramped: Bool + let maxWidth: CGFloat + let widthCalculator: MTElementWidthCalculator + let displayRenderer: MTDisplayPreRenderer + + // MARK: - Initialization + + init(font: MTFont, style: MTLineStyle, cramped: Bool = false, maxWidth: CGFloat = 0) { + self.font = font + self.style = style + self.cramped = cramped + self.maxWidth = maxWidth + self.widthCalculator = MTElementWidthCalculator(font: font, style: style) + self.displayRenderer = MTDisplayPreRenderer(font: font, style: style, cramped: cramped) + } + + // MARK: - Main Tokenization + + /// Tokenize a list of atoms into breakable elements + func tokenize(_ atoms: [MTMathAtom]) -> [MTBreakableElement] { + var elements: [MTBreakableElement] = [] + var index = 0 + var currentStyle = self.style + + while index < atoms.count { + let atom = atoms[index] + let prevAtom = index > 0 ? atoms[index - 1] : nil + + // Check for style change atoms + if atom.type == .style, let styleAtom = atom as? MTMathStyle { + // Update style for subsequent atoms + currentStyle = styleAtom.style + index += 1 + continue + } + + // Create a tokenizer with the current style for this atom + let atomTokenizer: MTAtomTokenizer + if currentStyle != self.style { + atomTokenizer = MTAtomTokenizer(font: font, style: currentStyle, cramped: cramped, maxWidth: maxWidth) + } else { + atomTokenizer = self + } + + // Handle scripts (subscript/superscript) - these must be grouped with their base + if atom.superScript != nil || atom.subScript != nil { + let baseElements = atomTokenizer.tokenizeAtomWithScripts(atom, prevAtom: prevAtom, atomIndex: index, allAtoms: atoms) + elements.append(contentsOf: baseElements) + } else { + // Check if this is a multi-character text atom that needs character-level tokenization + let isTextAtom = atom.fontStyle == .roman + let isMultiChar = atom.nucleus.count > 1 + + if isTextAtom && isMultiChar { + // Break down multi-character text into individual characters for punctuation rules + let charElements = atomTokenizer.tokenizeMultiCharText(atom, prevElements: elements, atomIndex: index, allAtoms: atoms) + elements.append(contentsOf: charElements) + } else { + // Regular atom without scripts + if let element = atomTokenizer.tokenizeAtom(atom, prevAtom: prevAtom, atomIndex: index, allAtoms: atoms) { + elements.append(element) + } + } + } + + index += 1 + } + + return elements + } + + // MARK: - Atom Tokenization + + /// Tokenize a single atom (without scripts) + private func tokenizeAtom(_ atom: MTMathAtom, prevAtom: MTMathAtom?, atomIndex: Int, allAtoms: [MTMathAtom]) -> MTBreakableElement? { + switch atom.type { + // Simple text and variables + case .ordinary, .variable, .number: + return tokenizeTextAtom(atom, prevAtom: prevAtom, atomIndex: atomIndex, allAtoms: allAtoms) + + // Operators + case .binaryOperator, .relation, .unaryOperator: + return tokenizeOperator(atom, prevAtom: prevAtom, atomIndex: atomIndex) + + // Delimiters + case .open: + return tokenizeOpenDelimiter(atom, prevAtom: prevAtom, atomIndex: atomIndex) + + case .close: + return tokenizeCloseDelimiter(atom, prevAtom: prevAtom, atomIndex: atomIndex) + + // Punctuation + case .punctuation: + return tokenizePunctuation(atom, prevAtom: prevAtom, atomIndex: atomIndex) + + // Complex structures (atomic) + case .fraction: + return tokenizeFraction(atom as! MTFraction, prevAtom: prevAtom, atomIndex: atomIndex) + + case .radical: + return tokenizeRadical(atom as! MTRadical, prevAtom: prevAtom, atomIndex: atomIndex) + + case .largeOperator: + return tokenizeLargeOperator(atom as! MTLargeOperator, prevAtom: prevAtom, atomIndex: atomIndex) + + case .accent: + return tokenizeAccent(atom as! MTAccent, prevAtom: prevAtom, atomIndex: atomIndex, allAtoms: allAtoms) + + case .underline: + return tokenizeUnderline(atom as! MTUnderLine, prevAtom: prevAtom, atomIndex: atomIndex) + + case .overline: + return tokenizeOverline(atom as! MTOverLine, prevAtom: prevAtom, atomIndex: atomIndex) + + case .table: + return tokenizeTable(atom as! MTMathTable, prevAtom: prevAtom, atomIndex: atomIndex) + + case .inner: + return tokenizeInner(atom as! MTInner, prevAtom: prevAtom, atomIndex: atomIndex) + + // Spacing + case .space: + return tokenizeSpace(atom, prevAtom: prevAtom, atomIndex: atomIndex) + + // Style changes - these don't create elements + case .style: + return nil + + // Color - extract inner content with color attribute + case .color, .colorBox, .textcolor: + // For now, treat as ordinary (color will be handled in display generation) + return tokenizeTextAtom(atom, prevAtom: prevAtom, atomIndex: atomIndex, allAtoms: allAtoms) + + default: + // Treat unknown types as ordinary + return tokenizeTextAtom(atom, prevAtom: prevAtom, atomIndex: atomIndex, allAtoms: allAtoms) + } + } + + // MARK: - Text Atom Tokenization + + private func tokenizeTextAtom(_ atom: MTMathAtom, prevAtom: MTMathAtom?, atomIndex: Int, allAtoms: [MTMathAtom]) -> MTBreakableElement? { + let text = atom.nucleus + guard !text.isEmpty else { return nil } + + // Calculate width + let width = widthCalculator.measureText(text) + + // Calculate ascent/descent (approximate using font metrics) + let ascent = font.mathTable?.axisHeight ?? font.fontSize * 0.5 + let descent = font.fontSize * 0.2 + let height = ascent + descent + + // Determine break rules using Unicode word boundary detection + var isBreakBefore = true + var isBreakAfter = true + var penaltyBefore = MTBreakPenalty.good + var penaltyAfter = MTBreakPenalty.good + + let isTextAtom = atom.fontStyle == .roman + + // Only apply word boundary logic to text atoms (not math variables) + if isTextAtom { + // First apply punctuation rules for single-character text + // This handles cases where punctuation appears in roman text rather than as separate punctuation atoms + if text.count == 1, let char = text.first { + let (punctBreakBefore, punctBreakAfter, punctPenaltyBefore, punctPenaltyAfter) = punctuationBreakRules(char) + + // Apply punctuation rules + isBreakBefore = punctBreakBefore + penaltyBefore = punctPenaltyBefore + isBreakAfter = punctBreakAfter + penaltyAfter = punctPenaltyAfter + } + + // Then apply word boundary logic - this ANDs with punctuation rules + // Both rules must allow breaking for a break to be permitted + + // Check if we should break BEFORE this atom + if let prevAtom = prevAtom { + // Handle previous accent atoms (e.g., "é" before "r" in "bactéries") + if prevAtom.type == .accent && isTextLetterAtom(prevAtom) { + // Previous is a text accent - don't break if current is a letter + if text.first?.isLetter == true { + isBreakBefore = false + penaltyBefore = MTBreakPenalty.never + } + } else if prevAtom.fontStyle == .roman { + let prevText = prevAtom.nucleus + if !prevText.isEmpty && !text.isEmpty { + // Use Unicode word boundary detection + if !hasWordBoundaryBetween(prevText, and: text) { + // No word boundary = we're in the middle of a word + isBreakBefore = false + penaltyBefore = MTBreakPenalty.never + } + } + } + } + + // Check if we should break AFTER this atom + if atomIndex + 1 < allAtoms.count { + let nextAtom = allAtoms[atomIndex + 1] + // Handle next accent atoms (e.g., "t" before "é" in "bactéries") + if nextAtom.type == .accent && isTextLetterAtom(nextAtom) { + // Next is a text accent - don't break if current is a letter + if text.last?.isLetter == true { + isBreakAfter = false + penaltyAfter = MTBreakPenalty.never + } + } else if nextAtom.fontStyle == .roman { + let nextText = nextAtom.nucleus + if !text.isEmpty && !nextText.isEmpty { + // Use Unicode word boundary detection + if !hasWordBoundaryBetween(text, and: nextText) { + // No word boundary = next atom is part of same word + isBreakAfter = false + penaltyAfter = MTBreakPenalty.never + } + } + } + } + } + + return MTBreakableElement( + content: .text(text), + width: width, + height: height, + ascent: ascent, + descent: descent, + isBreakBefore: isBreakBefore, + isBreakAfter: isBreakAfter, + penaltyBefore: penaltyBefore, + penaltyAfter: penaltyAfter, + groupId: nil, + parentId: nil, + originalAtom: atom, + indexRange: atom.indexRange, + color: nil, + backgroundColor: nil, + indivisible: false + ) + } + + /// Tokenize a multi-character text atom into individual character elements + /// This enables character-level line breaking with proper punctuation rules + private func tokenizeMultiCharText(_ atom: MTMathAtom, prevElements: [MTBreakableElement], atomIndex: Int, allAtoms: [MTMathAtom]) -> [MTBreakableElement] { + let text = atom.nucleus + guard text.count > 1 else { return [] } + + let debugTokenization = !"".isEmpty // Enable to debug text tokenization + if debugTokenization { + print("\n=== Tokenizing multi-char text: '\(text)' ===") + } + + var charElements: [MTBreakableElement] = [] + let characters = Array(text) + + for (charIndex, char) in characters.enumerated() { + let charString = String(char) + + // Calculate width for this character + let width = widthCalculator.measureText(charString) + + // Calculate ascent/descent (approximate using font metrics) + let ascent = font.mathTable?.axisHeight ?? font.fontSize * 0.5 + let descent = font.fontSize * 0.2 + let height = ascent + descent + + // Determine break rules for this character + let (isBreakBefore, isBreakAfter, penaltyBefore, penaltyAfter) = characterBreakRules( + char: char, + prevChar: charIndex > 0 ? characters[charIndex - 1] : nil, + nextChar: charIndex < characters.count - 1 ? characters[charIndex + 1] : nil, + isFirstInAtom: charIndex == 0, + isLastInAtom: charIndex == characters.count - 1, + prevElements: prevElements, + nextAtom: atomIndex + 1 < allAtoms.count ? allAtoms[atomIndex + 1] : nil + ) + + let element = MTBreakableElement( + content: .text(charString), + width: width, + height: height, + ascent: ascent, + descent: descent, + isBreakBefore: isBreakBefore, + isBreakAfter: isBreakAfter, + penaltyBefore: penaltyBefore, + penaltyAfter: penaltyAfter, + groupId: nil, + parentId: nil, + originalAtom: atom, + indexRange: atom.indexRange, + color: nil, + backgroundColor: nil, + indivisible: false + ) + + if debugTokenization { + print(" [\(charIndex)] '\(charString)' breakBefore=\(isBreakBefore) breakAfter=\(isBreakAfter) penaltyBefore=\(penaltyBefore) penaltyAfter=\(penaltyAfter) width=\(width)") + } + + charElements.append(element) + } + + return charElements + } + + /// Determine break rules for a character in a multi-character text string + private func characterBreakRules( + char: Character, + prevChar: Character?, + nextChar: Character?, + isFirstInAtom: Bool, + isLastInAtom: Bool, + prevElements: [MTBreakableElement], + nextAtom: MTMathAtom? + ) -> (isBreakBefore: Bool, isBreakAfter: Bool, penaltyBefore: Int, penaltyAfter: Int) { + + // Apply punctuation rules + let (punctBreakBefore, punctBreakAfter, punctPenaltyBefore, punctPenaltyAfter) = punctuationBreakRules(char) + + var isBreakBefore = punctBreakBefore + var isBreakAfter = punctBreakAfter + var penaltyBefore = punctPenaltyBefore + var penaltyAfter = punctPenaltyAfter + + // Apply word boundary logic + // Don't break in the middle of a word (but CJK characters CAN break between each other) + if let prevChar = prevChar { + if char.isLetter && prevChar.isLetter { + // Check if either character is CJK - CJK allows breaks between characters + let isCJKBreak = isCJKCharacter(char) || isCJKCharacter(prevChar) + + if !isCJKBreak { + // Both letters in same non-CJK script - middle of word, don't break + isBreakBefore = false + penaltyBefore = MTBreakPenalty.never + } + // else: At least one is CJK - allow break (keep punctBreakBefore value) + } else if prevChar == "'" || prevChar == "-" { + // Apostrophe or hyphen - part of word + isBreakBefore = false + penaltyBefore = MTBreakPenalty.never + } + } else if isFirstInAtom { + // First character - check against previous element + if let lastElement = prevElements.last { + switch lastElement.content { + case .text(let prevText): + if let prevLastChar = prevText.last { + if char.isLetter && prevLastChar.isLetter { + // Check if either character is CJK + let isCJKBreak = isCJKCharacter(char) || isCJKCharacter(prevLastChar) + + if !isCJKBreak { + // Both non-CJK letters - don't break + isBreakBefore = false + penaltyBefore = MTBreakPenalty.never + } + } else if prevLastChar == "'" || prevLastChar == "-" { + isBreakBefore = false + penaltyBefore = MTBreakPenalty.never + } + } + case .display: + // Check if previous element is a text-mode accent (e.g., "é") + // Accents in text mode should not allow breaks after them if current is a letter + if lastElement.originalAtom.type == .accent, + isTextLetterAtom(lastElement.originalAtom), + char.isLetter { + isBreakBefore = false + penaltyBefore = MTBreakPenalty.never + } + default: + break + } + } + } + + if let nextChar = nextChar { + if char.isLetter && nextChar.isLetter { + // Check if either character is CJK + let isCJKBreak = isCJKCharacter(char) || isCJKCharacter(nextChar) + + if !isCJKBreak { + // Both non-CJK letters - middle of word, don't break + isBreakAfter = false + penaltyAfter = MTBreakPenalty.never + } + } else if nextChar == "'" || nextChar == "-" { + // Before apostrophe or hyphen - part of word + isBreakAfter = false + penaltyAfter = MTBreakPenalty.never + } + } else if isLastInAtom { + // Last character - check against next atom + if let nextAtom = nextAtom { + // Handle next accent atoms (e.g., "t" before "é" in "bactéries") + if nextAtom.type == .accent && isTextLetterAtom(nextAtom) { + if char.isLetter { + isBreakAfter = false + penaltyAfter = MTBreakPenalty.never + } + } else if nextAtom.fontStyle == .roman, + let nextFirstChar = nextAtom.nucleus.first { + if char.isLetter && nextFirstChar.isLetter { + // Check if either character is CJK + let isCJKBreak = isCJKCharacter(char) || isCJKCharacter(nextFirstChar) + + if !isCJKBreak { + // Both non-CJK letters - don't break + isBreakAfter = false + penaltyAfter = MTBreakPenalty.never + } + } + } + } + } + + return (isBreakBefore, isBreakAfter, penaltyBefore, penaltyAfter) + } + + // MARK: - Word Boundary Detection + + /// Determines if a character is a CJK (Chinese, Japanese, Korean) character + /// CJK characters can break between each other even though they are technically "letters" + private func isCJKCharacter(_ char: Character) -> Bool { + guard let scalar = char.unicodeScalars.first else { return false } + let value = scalar.value + + // CJK Unified Ideographs and extensions + return (value >= 0x4E00 && value <= 0x9FFF) || // CJK Unified Ideographs (most common Chinese/Japanese kanji) + (value >= 0x3400 && value <= 0x4DBF) || // CJK Unified Ideographs Extension A + (value >= 0x20000 && value <= 0x2A6DF) || // CJK Unified Ideographs Extension B + (value >= 0x3040 && value <= 0x309F) || // Hiragana (Japanese) + (value >= 0x30A0 && value <= 0x30FF) || // Katakana (Japanese) + (value >= 0xAC00 && value <= 0xD7AF) // Hangul Syllables (Korean) + } + + /// Determines if there's a word boundary between two text fragments + /// Combines Unicode word segmentation with special handling for contractions and hyphenated words + private func hasWordBoundaryBetween(_ text1: String, and text2: String) -> Bool { + // RULE 1: Check for apostrophes and hyphens between letters (contractions and hyphenated words) + // These should NOT be treated as word boundaries even though Unicode does + if let lastChar1 = text1.last, let firstChar2 = text2.first { + // Pattern: letter + apostrophe|hyphen + letter → NOT a word boundary + if lastChar1.isLetter && (firstChar2 == "'" || firstChar2 == "-") { + return false // Don't break before apostrophe/hyphen + } + if (lastChar1 == "'" || lastChar1 == "-") && firstChar2.isLetter { + return false // Don't break after apostrophe/hyphen + } + } + + // RULE 2: Use Unicode word boundary detection for everything else + // This properly handles: + // - International text (café, naïve, etc.) + // - Various Unicode whitespace characters + // - Em-dashes, ellipses, and other Unicode punctuation + // - Complex scripts (Thai, Japanese, etc.) + let combined = text1 + text2 + let junctionIndex = text1.endIndex + + var wordBoundaries: Set = [] + combined.enumerateSubstrings(in: combined.startIndex.. PunctuationClass { + let scalar = String(char).unicodeScalars.first?.value ?? 0 + + // Latin opening punctuation - never break after + if "([{".contains(char) { return .openingPunctuation } + + // Latin closing punctuation and sentence-ending - never break before + if ")]}".contains(char) { return .closingPunctuation } + if ".,;:!?".contains(char) { return .sentenceEnding } + + // Latin quotation marks - opening quotes + // U+0022 " QUOTATION MARK, U+0027 ' APOSTROPHE + // U+2018 ' LEFT SINGLE QUOTATION MARK, U+201C " LEFT DOUBLE QUOTATION MARK + // U+00AB « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, U+2039 ‹ SINGLE LEFT-POINTING ANGLE QUOTATION MARK + if scalar == 0x0022 || scalar == 0x0027 || // Basic quotes + scalar == 0x2018 || scalar == 0x201C || // Curly left quotes + scalar == 0x00AB || scalar == 0x2039 { // Guillemets + return .openingPunctuation + } + + // Latin quotation marks - closing quotes + // U+2019 ' RIGHT SINGLE QUOTATION MARK, U+201D " RIGHT DOUBLE QUOTATION MARK + // U+00BB » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, U+203A › SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + if scalar == 0x2019 || scalar == 0x201D || // Curly right quotes + scalar == 0x00BB || scalar == 0x203A { // Guillemets + return .closingPunctuation + } + + // CJK opening brackets (禁則: line-start prohibited) + // Japanese/Chinese full-width brackets and corner brackets + if "「『(【〔〈《".contains(char) { + return .openingPunctuation + } + + // CJK closing brackets (禁則: line-end prohibited) + if "」』)】〕〉》".contains(char) { + return .closingPunctuation + } + + // CJK sentence-ending punctuation (禁則: line-end prohibited) + // Japanese/Chinese full-width periods, commas, and other punctuation + if "。、!?:;".contains(char) { + return .sentenceEnding + } + + // CJK small kana (禁則: line-end prohibited) + // These are smaller versions of hiragana/katakana that must not start a line + if "ぁぃぅぇぉっゃゅょゎァィゥェォッャュョヮ".contains(char) { + return .cjkSmallKana + } + + // CJK iteration marks (禁則: line-end prohibited) + if "ゝゞヽヾ々〻".contains(char) { + return .cjkSmallKana // Same rules as small kana + } + + // CJK prolonged sound mark (禁則: line-end prohibited) + if char == "ー" { + return .cjkSmallKana // Same rules as small kana + } + + return .neutral + } + + /// Determine break rules for punctuation based on its classification + private func punctuationBreakRules(_ char: Character) -> (isBreakBefore: Bool, isBreakAfter: Bool, penaltyBefore: Int, penaltyAfter: Int) { + let classification = classifyPunctuation(char) + + switch classification { + case .openingPunctuation: + // Opening punctuation: can break before, NEVER after + // Examples: ( [ { " ' « 「『 + return (true, false, MTBreakPenalty.good, MTBreakPenalty.never) + + case .closingPunctuation: + // Closing punctuation: NEVER before, can break after + // Examples: ) ] } " ' » 」』 + return (false, true, MTBreakPenalty.never, MTBreakPenalty.good) + + case .sentenceEnding: + // Sentence-ending punctuation: NEVER before, good break after + // Examples: . , ; : ! ? 。、 + return (false, true, MTBreakPenalty.never, MTBreakPenalty.best) + + case .cjkSmallKana: + // CJK small kana and iteration marks: NEVER before, can break after + // Examples: っゃゅょゎ ゝゞ ー + return (false, true, MTBreakPenalty.never, MTBreakPenalty.good) + + case .neutral: + // Other punctuation: use default rules + return (true, true, MTBreakPenalty.good, MTBreakPenalty.good) + } + } + + // MARK: - Operator Tokenization + + private func tokenizeOperator(_ atom: MTMathAtom, prevAtom: MTMathAtom?, atomIndex: Int) -> MTBreakableElement? { + let op = atom.nucleus + guard !op.isEmpty else { return nil } + + // Calculate width with operator spacing + let width = widthCalculator.measureOperator(op, type: atom.type) + + let ascent = font.fontSize * 0.5 + let descent = font.fontSize * 0.2 + let height = ascent + descent + + return MTBreakableElement( + content: .operator(op, type: atom.type), + width: width, + height: height, + ascent: ascent, + descent: descent, + isBreakBefore: true, + isBreakAfter: true, + penaltyBefore: MTBreakPenalty.best, // Operators are best break points + penaltyAfter: MTBreakPenalty.best, + groupId: nil, + parentId: nil, + originalAtom: atom, + indexRange: atom.indexRange, + color: nil, + backgroundColor: nil, + indivisible: false + ) + } + + // MARK: - Delimiter Tokenization + + private func tokenizeOpenDelimiter(_ atom: MTMathAtom, prevAtom: MTMathAtom?, atomIndex: Int) -> MTBreakableElement? { + let delimiter = atom.nucleus + let width = widthCalculator.measureText(delimiter) + let ascent = font.fontSize * 0.6 + let descent = font.fontSize * 0.2 + + return MTBreakableElement( + content: .text(delimiter), + width: width, + height: ascent + descent, + ascent: ascent, + descent: descent, + isBreakBefore: true, + isBreakAfter: false, // NEVER break after open delimiter + penaltyBefore: MTBreakPenalty.acceptable, + penaltyAfter: MTBreakPenalty.bad, + groupId: nil, + parentId: nil, + originalAtom: atom, + indexRange: atom.indexRange, + color: nil, + backgroundColor: nil, + indivisible: false + ) + } + + private func tokenizeCloseDelimiter(_ atom: MTMathAtom, prevAtom: MTMathAtom?, atomIndex: Int) -> MTBreakableElement? { + let delimiter = atom.nucleus + let width = widthCalculator.measureText(delimiter) + let ascent = font.fontSize * 0.6 + let descent = font.fontSize * 0.2 + + return MTBreakableElement( + content: .text(delimiter), + width: width, + height: ascent + descent, + ascent: ascent, + descent: descent, + isBreakBefore: false, // NEVER break before close delimiter + isBreakAfter: true, + penaltyBefore: MTBreakPenalty.bad, + penaltyAfter: MTBreakPenalty.acceptable, + groupId: nil, + parentId: nil, + originalAtom: atom, + indexRange: atom.indexRange, + color: nil, + backgroundColor: nil, + indivisible: false + ) + } + + // MARK: - Punctuation Tokenization + + private func tokenizePunctuation(_ atom: MTMathAtom, prevAtom: MTMathAtom?, atomIndex: Int) -> MTBreakableElement? { + let punct = atom.nucleus + let width = widthCalculator.measureText(punct) + let ascent = font.fontSize * 0.5 + let descent = font.fontSize * 0.2 + + // Apply proper punctuation breaking rules based on character classification + // Default rules for multi-character punctuation or empty + var isBreakBefore = false + var isBreakAfter = true + var penaltyBefore = MTBreakPenalty.bad + var penaltyAfter = MTBreakPenalty.good + + // For single-character punctuation, use classification rules + if punct.count == 1, let char = punct.first { + (isBreakBefore, isBreakAfter, penaltyBefore, penaltyAfter) = punctuationBreakRules(char) + } + + return MTBreakableElement( + content: .text(punct), + width: width, + height: ascent + descent, + ascent: ascent, + descent: descent, + isBreakBefore: isBreakBefore, + isBreakAfter: isBreakAfter, + penaltyBefore: penaltyBefore, + penaltyAfter: penaltyAfter, + groupId: nil, + parentId: nil, + originalAtom: atom, + indexRange: atom.indexRange, + color: nil, + backgroundColor: nil, + indivisible: false + ) + } + + // MARK: - Script Tokenization + + private func tokenizeAtomWithScripts(_ atom: MTMathAtom, prevAtom: MTMathAtom?, atomIndex: Int, allAtoms: [MTMathAtom]) -> [MTBreakableElement] { + var elements: [MTBreakableElement] = [] + let groupId = UUID() // All elements in this group must stay together + + // First, create the base element + if let baseElement = tokenizeAtom(atom, prevAtom: prevAtom, atomIndex: atomIndex, allAtoms: allAtoms) { + var modifiedBase = baseElement + // Modify to be part of group + modifiedBase = MTBreakableElement( + content: baseElement.content, + width: baseElement.width, + height: baseElement.height, + ascent: baseElement.ascent, + descent: baseElement.descent, + isBreakBefore: baseElement.isBreakBefore, + isBreakAfter: false, // Cannot break after base - must include scripts + penaltyBefore: baseElement.penaltyBefore, + penaltyAfter: MTBreakPenalty.never, + groupId: groupId, + parentId: nil, + originalAtom: baseElement.originalAtom, + indexRange: baseElement.indexRange, + color: baseElement.color, + backgroundColor: baseElement.backgroundColor, + indivisible: baseElement.indivisible + ) + elements.append(modifiedBase) + } + + // Add superscript first if present (matches legacy typesetter order) + if let superScript = atom.superScript { + if let scriptDisplay = displayRenderer.renderScript(superScript, isSuper: true) { + let scriptElement = MTBreakableElement( + content: .script(scriptDisplay, isSuper: true), + width: scriptDisplay.width, + height: scriptDisplay.ascent + scriptDisplay.descent, + ascent: scriptDisplay.ascent, + descent: scriptDisplay.descent, + isBreakBefore: false, // Must stay with base + isBreakAfter: atom.subScript == nil, // Can break after if last script + penaltyBefore: MTBreakPenalty.never, + penaltyAfter: atom.subScript == nil ? MTBreakPenalty.good : MTBreakPenalty.never, + groupId: groupId, + parentId: nil, + originalAtom: atom, + indexRange: atom.indexRange, + color: nil, + backgroundColor: nil, + indivisible: true + ) + elements.append(scriptElement) + } + } + + // Add subscript after superscript (matches legacy typesetter order) + if let subScript = atom.subScript { + if let scriptDisplay = displayRenderer.renderScript(subScript, isSuper: false) { + let scriptElement = MTBreakableElement( + content: .script(scriptDisplay, isSuper: false), + width: scriptDisplay.width, + height: scriptDisplay.ascent + scriptDisplay.descent, + ascent: scriptDisplay.ascent, + descent: scriptDisplay.descent, + isBreakBefore: false, // Must stay with base + isBreakAfter: true, // Can break after subscript (it's always last) + penaltyBefore: MTBreakPenalty.never, + penaltyAfter: MTBreakPenalty.good, + groupId: groupId, + parentId: nil, + originalAtom: atom, + indexRange: atom.indexRange, + color: nil, + backgroundColor: nil, + indivisible: true + ) + elements.append(scriptElement) + } + } + + return elements + } + + // MARK: - Complex Structure Tokenization + + private func tokenizeFraction(_ fraction: MTFraction, prevAtom: MTMathAtom?, atomIndex: Int) -> MTBreakableElement? { + // Create a temporary typesetter to render the fraction + let typesetter = MTTypesetter(withFont: font, style: style, cramped: cramped, spaced: false) + guard let display = typesetter.makeFraction(fraction) else { return nil } + + return MTBreakableElement( + content: .display(display), + width: display.width, + height: display.ascent + display.descent, + ascent: display.ascent, + descent: display.descent, + isBreakBefore: true, + isBreakAfter: true, + penaltyBefore: MTBreakPenalty.moderate, + penaltyAfter: MTBreakPenalty.moderate, + groupId: nil, + parentId: nil, + originalAtom: fraction, + indexRange: fraction.indexRange, + color: nil, + backgroundColor: nil, + indivisible: true // Fractions are atomic + ) + } + + private func tokenizeRadical(_ radical: MTRadical, prevAtom: MTMathAtom?, atomIndex: Int) -> MTBreakableElement? { + let typesetter = MTTypesetter(withFont: font, style: style, cramped: cramped, spaced: false) + guard let display = typesetter.makeRadical(radical.radicand, range: radical.indexRange) else { return nil } + + // Add degree if present + if radical.degree != nil { + // Use .script style (71% size) instead of .scriptOfScript (50% size) + // This matches TeX standard for radical degrees + let degree = MTTypesetter.createLineForMathList(radical.degree, font: font, style: .script) + display.setDegree(degree, fontMetrics: font.mathTable) + } + + return MTBreakableElement( + content: .display(display), + width: display.width, + height: display.ascent + display.descent, + ascent: display.ascent, + descent: display.descent, + isBreakBefore: true, + isBreakAfter: true, + penaltyBefore: MTBreakPenalty.good, + penaltyAfter: MTBreakPenalty.good, + groupId: nil, + parentId: nil, + originalAtom: radical, + indexRange: radical.indexRange, + color: nil, + backgroundColor: nil, + indivisible: true // Radicals are atomic + ) + } + + private func tokenizeLargeOperator(_ op: MTLargeOperator, prevAtom: MTMathAtom?, atomIndex: Int) -> MTBreakableElement? { + // CRITICAL DISTINCTION: + // - If op.limits=true (e.g., \sum, \prod, \lim in text mode): Scripts go ABOVE/BELOW + // → makeLargeOp() creates MTLargeOpLimitsDisplay, which is self-contained + // → We should NOT clear scripts, let makeLargeOp() handle everything + // + // - If op.limits=false (e.g., \int in text mode): Scripts go TO THE SIDE + // → makeLargeOp() would create scripts via makeScripts(), causing duplication + // → We MUST clear scripts and let tokenizeAtomWithScripts() handle them separately + + let limits = op.limits && (style == .display || style == .text) + + let originalSuperScript = op.superScript + let originalSubScript = op.subScript + + // Only clear scripts for side-script operators (limits=false) + if !limits && (originalSuperScript != nil || originalSubScript != nil) { + op.superScript = nil + op.subScript = nil + } + + let typesetter = MTTypesetter(withFont: font, style: style, cramped: cramped, spaced: false) + guard let operatorDisplay = typesetter.makeLargeOp(op) else { + // Restore scripts before returning + op.superScript = originalSuperScript + op.subScript = originalSubScript + return nil + } + + // CRITICAL: Handle scripts based on positioning mode + if !limits { + // Side-script operators (limits=false): Restore scripts for tokenizeAtomWithScripts to handle + op.superScript = originalSuperScript + op.subScript = originalSubScript + } else { + // Limit operators (limits=true): Scripts are already rendered in MTLargeOpLimitsDisplay + // MUST clear them from atom to prevent tokenizeAtomWithScripts from rendering them again + op.superScript = nil + op.subScript = nil + } + + // CRITICAL: Handle italic correction (delta) for side-script operators + // When scripts are present and limits is false, the operator width is reduced by delta + // (see MTTypesetter.makeLargeOp line 1046-1050) + // Since we cleared scripts for side-script operators, makeLargeOp() didn't apply this reduction + var finalWidth = operatorDisplay.width + + if !limits && (originalSubScript != nil) { + // Get the italic correction for the operator glyph + if let glyphDisplay = operatorDisplay as? MTGlyphDisplay, + let mathTable = font.mathTable { + let delta = mathTable.getItalicCorrection(glyphDisplay.glyph) + finalWidth -= delta + } + } + + let finalDisplay = operatorDisplay + + return MTBreakableElement( + content: .display(finalDisplay), + width: finalWidth, + height: finalDisplay.ascent + finalDisplay.descent, + ascent: finalDisplay.ascent, + descent: finalDisplay.descent, + isBreakBefore: true, + isBreakAfter: true, + penaltyBefore: MTBreakPenalty.good, + penaltyAfter: MTBreakPenalty.good, + groupId: nil, + parentId: nil, + originalAtom: op, + indexRange: op.indexRange, + color: nil, + backgroundColor: nil, + indivisible: true + ) + } + + private func tokenizeAccent(_ accent: MTAccent, prevAtom: MTMathAtom?, atomIndex: Int, allAtoms: [MTMathAtom]) -> MTBreakableElement? { + let typesetter = MTTypesetter(withFont: font, style: style, cramped: cramped, spaced: false) + guard let display = typesetter.makeAccent(accent) else { return nil } + + // Determine break rules - accents in text mode should respect word boundaries + var isBreakBefore = true + var isBreakAfter = true + var penaltyBefore = MTBreakPenalty.good + var penaltyAfter = MTBreakPenalty.good + + // Check if this accent is in a text context (the accented character is roman text) + // An accent's innerList contains the base character(s) + let isTextAccent = accent.innerList?.atoms.first?.fontStyle == .roman + + if isTextAccent { + // Check previous atom - if it's a letter in text mode, don't break before + if let prevAtom = prevAtom { + let prevIsTextLetter = isTextLetterAtom(prevAtom) + if prevIsTextLetter { + isBreakBefore = false + penaltyBefore = MTBreakPenalty.never + } + } + + // Check next atom - if it's a letter in text mode, don't break after + if atomIndex + 1 < allAtoms.count { + let nextAtom = allAtoms[atomIndex + 1] + let nextIsTextLetter = isTextLetterAtom(nextAtom) + if nextIsTextLetter { + isBreakAfter = false + penaltyAfter = MTBreakPenalty.never + } + } + } + + return MTBreakableElement( + content: .display(display), + width: display.width, + height: display.ascent + display.descent, + ascent: display.ascent, + descent: display.descent, + isBreakBefore: isBreakBefore, + isBreakAfter: isBreakAfter, + penaltyBefore: penaltyBefore, + penaltyAfter: penaltyAfter, + groupId: nil, + parentId: nil, + originalAtom: accent, + indexRange: accent.indexRange, + color: nil, + backgroundColor: nil, + indivisible: true + ) + } + + /// Helper to check if an atom is a letter in text mode (roman style) + private func isTextLetterAtom(_ atom: MTMathAtom) -> Bool { + // For accent atoms, check their inner content FIRST + // (accent atom's nucleus contains the accent mark, not the letter) + if let accent = atom as? MTAccent { + if let firstInner = accent.innerList?.atoms.first { + return isTextLetterAtom(firstInner) + } + return false + } + // For regular text atoms with roman style + if atom.fontStyle == .roman { + // Check if the nucleus contains only letters + let nucleus = atom.nucleus + if !nucleus.isEmpty { + return nucleus.allSatisfy { $0.isLetter } + } + } + return false + } + + private func tokenizeUnderline(_ underline: MTUnderLine, prevAtom: MTMathAtom?, atomIndex: Int) -> MTBreakableElement? { + let typesetter = MTTypesetter(withFont: font, style: style, cramped: cramped, spaced: false) + guard let display = typesetter.makeUnderline(underline) else { return nil } + + return MTBreakableElement( + content: .display(display), + width: display.width, + height: display.ascent + display.descent, + ascent: display.ascent, + descent: display.descent, + isBreakBefore: true, + isBreakAfter: true, + penaltyBefore: MTBreakPenalty.good, + penaltyAfter: MTBreakPenalty.good, + groupId: nil, + parentId: nil, + originalAtom: underline, + indexRange: underline.indexRange, + color: nil, + backgroundColor: nil, + indivisible: true + ) + } + + private func tokenizeOverline(_ overline: MTOverLine, prevAtom: MTMathAtom?, atomIndex: Int) -> MTBreakableElement? { + let typesetter = MTTypesetter(withFont: font, style: style, cramped: cramped, spaced: false) + guard let display = typesetter.makeOverline(overline) else { return nil } + + return MTBreakableElement( + content: .display(display), + width: display.width, + height: display.ascent + display.descent, + ascent: display.ascent, + descent: display.descent, + isBreakBefore: true, + isBreakAfter: true, + penaltyBefore: MTBreakPenalty.good, + penaltyAfter: MTBreakPenalty.good, + groupId: nil, + parentId: nil, + originalAtom: overline, + indexRange: overline.indexRange, + color: nil, + backgroundColor: nil, + indivisible: true + ) + } + + private func tokenizeTable(_ table: MTMathTable, prevAtom: MTMathAtom?, atomIndex: Int) -> MTBreakableElement? { + let typesetter = MTTypesetter(withFont: font, style: style, cramped: cramped, spaced: false, maxWidth: maxWidth) + guard let display = typesetter.makeTable(table) else { return nil } + + return MTBreakableElement( + content: .display(display), + width: display.width, + height: display.ascent + display.descent, + ascent: display.ascent, + descent: display.descent, + isBreakBefore: true, + isBreakAfter: true, + penaltyBefore: MTBreakPenalty.moderate, + penaltyAfter: MTBreakPenalty.moderate, + groupId: nil, + parentId: nil, + originalAtom: table, + indexRange: table.indexRange, + color: nil, + backgroundColor: nil, + indivisible: true + ) + } + + private func tokenizeInner(_ inner: MTInner, prevAtom: MTMathAtom?, atomIndex: Int) -> MTBreakableElement? { + let typesetter = MTTypesetter(withFont: font, style: style, cramped: cramped, spaced: false) + guard let display = typesetter.makeLeftRight(inner) else { return nil } + + return MTBreakableElement( + content: .display(display), + width: display.width, + height: display.ascent + display.descent, + ascent: display.ascent, + descent: display.descent, + isBreakBefore: true, + isBreakAfter: true, + penaltyBefore: MTBreakPenalty.good, + penaltyAfter: MTBreakPenalty.good, + groupId: nil, + parentId: nil, + originalAtom: inner, + indexRange: inner.indexRange, + color: nil, + backgroundColor: nil, + indivisible: false + ) + } + + private func tokenizeSpace(_ atom: MTMathAtom, prevAtom: MTMathAtom?, atomIndex: Int) -> MTBreakableElement? { + // Space atoms typically don't participate in breaking + // They are rendered as-is + let width = widthCalculator.measureSpace(atom.type) + + return MTBreakableElement( + content: .space(width), + width: width, + height: 0, + ascent: 0, + descent: 0, + isBreakBefore: false, + isBreakAfter: false, + penaltyBefore: MTBreakPenalty.never, + penaltyAfter: MTBreakPenalty.never, + groupId: nil, + parentId: nil, + originalAtom: atom, + indexRange: atom.indexRange, + color: nil, + backgroundColor: nil, + indivisible: true + ) + } +} diff --git a/third-party/SwiftMath/Sources/MathRender/Tokenization/MTBreakableElement.swift b/third-party/SwiftMath/Sources/MathRender/Tokenization/MTBreakableElement.swift new file mode 100644 index 0000000000..163a86871f --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/Tokenization/MTBreakableElement.swift @@ -0,0 +1,115 @@ +// +// MTBreakableElement.swift +// SwiftMath +// +// Created by Claude Code on 2025-12-16. +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation +import CoreGraphics + +// MARK: - MTElementContent + +/// Represents the content type of a breakable element +enum MTElementContent { + /// Simple text content + case text(String) + /// Pre-rendered display (fraction, radical, etc.) + case display(MTDisplay) + /// Math operator with spacing + case `operator`(String, type: MTMathAtomType) + /// Explicit spacing + case space(CGFloat) + /// Superscript or subscript display + case script(MTDisplay, isSuper: Bool) +} + +// MARK: - MTBreakableElement + +/// Represents a breakable element with pre-calculated width and break rules +struct MTBreakableElement { + // MARK: Display properties + + /// The content of this element + let content: MTElementContent + + /// Pre-calculated width (cached) + let width: CGFloat + + /// Height of the element + let height: CGFloat + + /// Distance from baseline to top + let ascent: CGFloat + + /// Distance from baseline to bottom + let descent: CGFloat + + // MARK: Breaking rules + + /// Can break BEFORE this element? + let isBreakBefore: Bool + + /// Can break AFTER this element? + let isBreakAfter: Bool + + /// Penalty for breaking before (0=good, 100=bad, 150=never) + let penaltyBefore: Int + + /// Penalty for breaking after (0=good, 100=bad, 150=never) + let penaltyAfter: Int + + // MARK: Relationship tracking + + /// Elements with same groupId must stay together + let groupId: UUID? + + /// Parent element ID (for scripts) + let parentId: UUID? + + // MARK: Source tracking + + /// Original atom this element was created from + let originalAtom: MTMathAtom + + /// Index range in the original math list + let indexRange: NSRange + + // MARK: Optional attributes + + /// Text color for this element + let color: MTColor? + + /// Background color for this element + let backgroundColor: MTColor? + + // MARK: Atomicity flag + + /// If true, NEVER break this element internally + let indivisible: Bool +} + +// MARK: - Penalty Constants + +/// Penalty values for line breaking decisions +enum MTBreakPenalty { + /// Best break points (operators, relations) + static let best = 0 + + /// Good break points (ordinary atoms, after scripts) + static let good = 10 + + /// Moderate penalty (before fractions, radicals) + static let moderate = 15 + + /// Acceptable break points + static let acceptable = 50 + + /// Bad break points (avoid if possible) + static let bad = 100 + + /// Never break here (grouped elements) + static let never = 150 +} diff --git a/third-party/SwiftMath/Sources/MathRender/Tokenization/MTDisplayGenerator.swift b/third-party/SwiftMath/Sources/MathRender/Tokenization/MTDisplayGenerator.swift new file mode 100644 index 0000000000..b9faf4f267 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/Tokenization/MTDisplayGenerator.swift @@ -0,0 +1,389 @@ +// +// MTDisplayGenerator.swift +// SwiftMath +// +// Created by Claude Code on 2025-12-16. +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation +import CoreGraphics +import CoreText + +/// Generates MTDisplay objects from fitted lines of breakable elements +class MTDisplayGenerator { + + // MARK: - Properties + + let font: MTFont + let style: MTLineStyle + let widthCalculator: MTElementWidthCalculator + + // MARK: - Initialization + + init(font: MTFont, style: MTLineStyle) { + self.font = font + self.style = style + self.widthCalculator = MTElementWidthCalculator(font: font, style: style) + } + + // MARK: - Display Generation + + /// Generate displays from fitted lines + func generateDisplays(from lines: [[MTBreakableElement]], startPosition: CGPoint) -> [MTDisplay] { + var allDisplays: [MTDisplay] = [] + var currentY = startPosition.y + + // Minimum spacing between lines (20% of font size for breathing room) + let minimumLineSpacing = font.fontSize * 0.2 + + for (index, line) in lines.enumerated() { + let (lineDisplays, currentLineMetrics) = generateLine(line, at: CGPoint(x: startPosition.x, y: currentY)) + allDisplays.append(contentsOf: lineDisplays) + + // Calculate spacing for next line based on actual content heights + if index < lines.count - 1 { + let nextLine = lines[index + 1] + let nextLineAscent = nextLine.map { $0.ascent }.max() ?? 0 + + // Space needed = current line's descent + minimum spacing + next line's ascent + let spaceNeeded = currentLineMetrics.descent + minimumLineSpacing + nextLineAscent + + // Ensure minimum spacing of 1.2x font size for readability + let minSpacing = font.fontSize * 1.2 + currentY -= max(spaceNeeded, minSpacing) + } + } + + return allDisplays + } + + /// Line metrics for spacing calculation + struct LineMetrics { + let ascent: CGFloat + let descent: CGFloat + var height: CGFloat { ascent + descent } + } + + /// Generate displays for a single line + private func generateLine(_ elements: [MTBreakableElement], at position: CGPoint) -> ([MTDisplay], LineMetrics) { + var displays: [MTDisplay] = [] + var xOffset: CGFloat = 0 + + // Calculate line metrics + let lineAscent = elements.map { $0.ascent }.max() ?? 0 + let lineDescent = elements.map { $0.descent }.max() ?? 0 + + // Baseline y position + let baseline = position.y + + var i = 0 + while i < elements.count { + let element = elements[i] + + // Check if this is part of a group (base + scripts) + if let groupId = element.groupId { + // Collect all elements in this group + var groupElements: [MTBreakableElement] = [] + var j = i + while j < elements.count && elements[j].groupId == groupId { + groupElements.append(elements[j]) + j += 1 + } + + // Render the group + let groupAdvance = renderGroup(groupElements, at: CGPoint(x: position.x + xOffset, y: baseline), displays: &displays) + xOffset += groupAdvance + i = j + } else { + // Regular element (not part of a group) + + // CRITICAL: For operators, spacing should be split evenly before and after + // The element.width includes both spacing, but we need to position the operator + // with half spacing before it + var spacingBefore: CGFloat = 0 + if case .operator(let op, _) = element.content { + // Get the actual text width vs element width to calculate spacing + let textWidth = widthCalculator.measureText(op) + let totalSpacing = element.width - textWidth + spacingBefore = totalSpacing / 2 + } + + let elementPosition = CGPoint(x: position.x + xOffset + spacingBefore, y: baseline) + + switch element.content { + case .text(let text): + let display = createTextDisplay(text, at: elementPosition, element: element) + displays.append(display) + + case .display(let preRenderedDisplay): + // Use pre-rendered display (fraction, radical, etc.) + let mutableDisplay = preRenderedDisplay + mutableDisplay.position = elementPosition + displays.append(mutableDisplay) + + case .operator(let op, _): + let display = createTextDisplay(op, at: elementPosition, element: element) + displays.append(display) + + case .script: + // Standalone script (shouldn't happen, but handle gracefully) + break + + case .space: + // No display for space, just advance position + break + } + + xOffset += element.width + i += 1 + } + } + + return (displays, LineMetrics(ascent: lineAscent, descent: lineDescent)) + } + + /// Render a group of elements (base + scripts) and return the horizontal advance + private func renderGroup(_ groupElements: [MTBreakableElement], at position: CGPoint, displays: inout [MTDisplay]) -> CGFloat { + var baseWidth: CGFloat = 0 + var superscriptWidth: CGFloat = 0 + var subscriptWidth: CGFloat = 0 + var baseXOffset: CGFloat = 0 + + // Check if this group has any scripts + let hasScripts = groupElements.contains { element in + if case .script = element.content { + return true + } + return false + } + + // Track the start index of base displays for dimension adjustment + let baseDisplayStartIndex = displays.count + + // First pass: render base elements and collect script widths + for element in groupElements { + switch element.content { + case .script: + // Skip scripts in first pass + break + default: + // Render base element + let basePosition = CGPoint(x: position.x + baseXOffset, y: position.y) + + switch element.content { + case .text(let text): + let display = createTextDisplay(text, at: basePosition, element: element, hasScript: hasScripts) + displays.append(display) + case .display(let preRenderedDisplay): + let mutableDisplay = preRenderedDisplay + mutableDisplay.position = basePosition + displays.append(mutableDisplay) + case .operator(let op, _): + let display = createTextDisplay(op, at: basePosition, element: element, hasScript: hasScripts) + displays.append(display) + default: + break + } + + baseWidth += element.width + baseXOffset += element.width + } + } + + // Second pass: collect script information for joint positioning + var superscriptDisplay: MTDisplay? = nil + var subscriptDisplay: MTDisplay? = nil + var hasBothScripts = false + + for element in groupElements { + if case .script(let scriptDisplay, let isSuper) = element.content { + if isSuper { + superscriptDisplay = scriptDisplay + } else { + subscriptDisplay = scriptDisplay + } + } + } + + hasBothScripts = superscriptDisplay != nil && subscriptDisplay != nil + + // Third pass: render scripts with proper positioning + var superScriptShiftUp: CGFloat = 0 + var subscriptShiftDown: CGFloat = 0 + + // Check if base is a glyph (not CTLineDisplay) for special positioning + // For glyphs (like large operators), position scripts relative to glyph edges + var isGlyphBase = false + for disp in displays[baseDisplayStartIndex.. 0 { + // Superscript is lower than the max allowed by the font with a subscript + superScriptShiftUp += superscriptBottomDelta + subscriptShiftDown -= superscriptBottomDelta + } + } + } + + // Calculate italic correction (delta) for superscript positioning + // Superscripts are positioned at baseWidth + delta, subscripts at baseWidth + var delta: CGFloat = 0 + if superscriptDisplay != nil { + // Get italic correction from the base display if it's a glyph + for disp in displays[baseDisplayStartIndex.. baseDisplayStartIndex { + // Calculate the full extent of the group including scripts + var maxAscent: CGFloat = 0 + var maxDescent: CGFloat = 0 + + for i in baseDisplayStartIndex.. MTDisplay { + let attrString = NSMutableAttributedString(string: text) + attrString.addAttribute( + NSAttributedString.Key(kCTFontAttributeName as String), + value: font.ctFont as Any, + range: NSMakeRange(0, attrString.length) + ) + + // If the atom was fused (multiple ordinary chars combined), use fusedAtoms + // Otherwise, use the original atom + let atoms: [MTMathAtom] + if !element.originalAtom.fusedAtoms.isEmpty { + atoms = element.originalAtom.fusedAtoms + } else { + atoms = [element.originalAtom] + } + + let display = MTCTLineDisplay( + withString: attrString, + position: position, + range: element.indexRange, + font: font, + atoms: atoms + ) + + // Mark if this base element has associated scripts + display.hasScript = hasScript + + return display + } +} diff --git a/third-party/SwiftMath/Sources/MathRender/Tokenization/MTDisplayPreRenderer.swift b/third-party/SwiftMath/Sources/MathRender/Tokenization/MTDisplayPreRenderer.swift new file mode 100644 index 0000000000..d6af072a60 --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/Tokenization/MTDisplayPreRenderer.swift @@ -0,0 +1,88 @@ +// +// MTDisplayPreRenderer.swift +// SwiftMath +// +// Created by Claude Code on 2025-12-16. +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation +import CoreGraphics + +/// Pre-renders complex atoms (fractions, radicals, etc.) as MTDisplay objects during tokenization +class MTDisplayPreRenderer { + + // MARK: - Properties + + let font: MTFont + let style: MTLineStyle + let cramped: Bool + + // MARK: - Initialization + + init(font: MTFont, style: MTLineStyle, cramped: Bool) { + self.font = font + self.style = style + self.cramped = cramped + } + + // MARK: - Script Rendering + + /// Render a script (superscript or subscript) as a display + func renderScript(_ mathList: MTMathList, isSuper: Bool) -> MTDisplay? { + let scriptStyle = getScriptStyle() + let scriptCramped = isSuper ? cramped : true // Subscripts are always cramped + + // Scale the font for the script style + let scriptFontSize = MTTypesetter.getStyleSize(scriptStyle, font: font) + let scriptFont = font.copy(withSize: scriptFontSize) + + guard let display = MTTypesetter.createLineForMathList( + mathList, + font: scriptFont, + style: scriptStyle, + cramped: scriptCramped, + spaced: false + ) else { + return nil + } + + // If the result is a MTMathListDisplay with a single subdisplay, unwrap it + // This matches the behavior of the legacy typesetter + if display.subDisplays.count == 1 { + return display.subDisplays[0] + } + + return display + } + + /// Get the appropriate style for scripts + private func getScriptStyle() -> MTLineStyle { + switch style { + case .display, .text: + return .script + case .script, .scriptOfScript: + return .scriptOfScript + } + } + + // MARK: - Helper Methods + + /// Pre-render a simple math list without width constraints + /// Used for rendering content inside fractions, radicals, etc. + func renderMathList(_ mathList: MTMathList?, style renderStyle: MTLineStyle? = nil, cramped renderCramped: Bool? = nil) -> MTDisplay? { + guard let mathList = mathList else { return nil } + + let actualStyle = renderStyle ?? style + let actualCramped = renderCramped ?? cramped + + return MTTypesetter.createLineForMathList( + mathList, + font: font, + style: actualStyle, + cramped: actualCramped, + spaced: false + ) + } +} diff --git a/third-party/SwiftMath/Sources/MathRender/Tokenization/MTElementWidthCalculator.swift b/third-party/SwiftMath/Sources/MathRender/Tokenization/MTElementWidthCalculator.swift new file mode 100644 index 0000000000..258eb768be --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/Tokenization/MTElementWidthCalculator.swift @@ -0,0 +1,165 @@ +// +// MTElementWidthCalculator.swift +// SwiftMath +// +// Created by Claude Code on 2025-12-16. +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation +import CoreText +import CoreGraphics + +/// Calculates widths for breakable elements with appropriate spacing +class MTElementWidthCalculator { + + // MARK: - Properties + + let font: MTFont + let style: MTLineStyle + + // MARK: - Initialization + + init(font: MTFont, style: MTLineStyle) { + self.font = font + self.style = style + } + + // MARK: - Text Width Measurement + + /// Measure width of simple text + func measureText(_ text: String) -> CGFloat { + guard !text.isEmpty else { return 0 } + + let attrString = NSAttributedString(string: text, attributes: [ + kCTFontAttributeName as NSAttributedString.Key: font.ctFont as Any + ]) + let line = CTLineCreateWithAttributedString(attrString as CFAttributedString) + return CGFloat(CTLineGetTypographicBounds(line, nil, nil, nil)) + } + + // MARK: - Operator Width Measurement + + /// Measure width of operator with appropriate spacing + func measureOperator(_ op: String, type: MTMathAtomType) -> CGFloat { + let baseWidth = measureText(op) + let spacing = getOperatorSpacing(type) + return baseWidth + spacing + } + + /// Get spacing for an operator (both sides) + private func getOperatorSpacing(_ type: MTMathAtomType) -> CGFloat { + guard let mathTable = font.mathTable else { return 0 } + let muUnit = mathTable.muUnit + + switch type { + case .binaryOperator: + // Binary operators: 4mu on each side = 8mu total + return 2 * muUnit * 4 + + case .relation: + // Relations: 5mu on each side = 10mu total + return 2 * muUnit * 5 + + case .largeOperator: + // Large operators in inline mode: 1mu on each side + if style == .display || style == .text { + return 0 // In display mode, handled by MTLargeOpLimitsDisplay + } + return 2 * muUnit * 1 + + default: + return 0 + } + } + + // MARK: - Display Width Measurement + + /// Measure width of a pre-rendered display + func measureDisplay(_ display: MTDisplay) -> CGFloat { + return display.width + } + + // MARK: - Space Width Measurement + + /// Get width of explicit spacing command + func measureSpace(_ spaceType: MTMathAtomType) -> CGFloat { + guard let mathTable = font.mathTable else { return 0 } + let muUnit = mathTable.muUnit + + // Note: These are the explicit spacing commands in LaTeX + // \, = thin space (3mu) + // \: = medium space (4mu) + // \; = thick space (5mu) + // \quad = 1em + // \qquad = 2em + + switch spaceType { + case .space: + // Default space - context dependent + // For now, use thin space + return muUnit * 3 + default: + return 0 + } + } + + /// Measure explicit space value + func measureExplicitSpace(_ width: CGFloat) -> CGFloat { + return width + } + + // MARK: - Inter-element Spacing + + /// Get inter-element spacing between two atom types + func getInterElementSpacing(left: MTMathAtomType, right: MTMathAtomType) -> CGFloat { + let leftIndex = getInterElementSpaceArrayIndexForType(left, row: true) + let rightIndex = getInterElementSpaceArrayIndexForType(right, row: false) + let spaceArray = getInterElementSpaces()[Int(leftIndex)] + let spaceType = spaceArray[Int(rightIndex)] + + guard spaceType != .invalid else { + // Should not happen in well-formed math + return 0 + } + + let spaceMultiplier = getSpacingInMu(spaceType) + if spaceMultiplier > 0, let mathTable = font.mathTable { + return CGFloat(spaceMultiplier) * mathTable.muUnit + } + return 0 + } + + /// Get spacing multiplier in mu units + private func getSpacingInMu(_ spaceType: InterElementSpaceType) -> Int { + switch style { + case .display, .text: + switch spaceType { + case .none, .invalid: + return 0 + case .thin: + return 3 + case .nsThin, .nsMedium, .nsThick: + // ns = non-script, same as regular in display/text mode + switch spaceType { + case .nsThin: return 3 + case .nsMedium: return 4 + case .nsThick: return 5 + default: return 0 + } + } + + case .script, .scriptOfScript: + switch spaceType { + case .none, .invalid: + return 0 + case .thin: + return 3 + case .nsThin, .nsMedium, .nsThick: + // In script mode, ns types don't add space + return 0 + } + } + } +} diff --git a/third-party/SwiftMath/Sources/MathRender/Tokenization/MTLineFitter.swift b/third-party/SwiftMath/Sources/MathRender/Tokenization/MTLineFitter.swift new file mode 100644 index 0000000000..5afdc36a2a --- /dev/null +++ b/third-party/SwiftMath/Sources/MathRender/Tokenization/MTLineFitter.swift @@ -0,0 +1,266 @@ +// +// MTLineFitter.swift +// SwiftMath +// +// Created by Claude Code on 2025-12-16. +// This software may be modified and distributed under the terms of the +// MIT license. See the LICENSE file for details. +// + +import Foundation +import CoreGraphics + +/// Fits breakable elements into lines respecting width constraints and break rules +class MTLineFitter { + + // MARK: - Properties + + let maxWidth: CGFloat + let margin: CGFloat + + // MARK: - Initialization + + init(maxWidth: CGFloat, margin: CGFloat = 0) { + self.maxWidth = maxWidth + self.margin = margin + } + + // MARK: - Line Fitting + + /// Fit elements into lines using greedy algorithm with backtracking + func fitLines(_ elements: [MTBreakableElement]) -> [[MTBreakableElement]] { + guard !elements.isEmpty else { return [] } + guard maxWidth > 0 else { return [elements] } // No width constraint + + let debugPunctuation = !"".isEmpty // Enable to debug line breaking issues + + if debugPunctuation { + print("\n=== MTLineFitter: fitting \(elements.count) elements, maxWidth=\(maxWidth) ===") + for (idx, elem) in elements.enumerated() { + if case .text(let t) = elem.content { + print("[\(idx)] '\(t)' breakBefore=\(elem.isBreakBefore) breakAfter=\(elem.isBreakAfter) width=\(elem.width)") + } + } + } + + var lines: [[MTBreakableElement]] = [[]] + var currentWidth: CGFloat = 0 + var i = 0 + + while i < elements.count { + let element = elements[i] + + if debugPunctuation, case .text(let t) = element.content { + print("\n Processing element[\(i)]: '\(t)' breakBefore=\(element.isBreakBefore)") + } + + // Handle grouped elements (base + scripts) + if let groupId = element.groupId { + let (groupElements, nextIndex) = collectGroup(elements, startIndex: i, groupId: groupId) + + // Calculate group width correctly for scripts + // Scripts overlap vertically, so width = max(script widths), not sum + let groupWidth = calculateGroupWidth(groupElements) + + // Check if group fits on current line + if !lines.last!.isEmpty && currentWidth + groupWidth > maxWidth - margin { + // Group doesn't fit - check if first element of group can start a new line + if groupElements.first?.isBreakBefore ?? true { + // Can start new line + lines.append([]) + currentWidth = 0 + } else { + // Cannot start new line - keep with previous line (allow overflow) + // This handles cases like punctuation after base+script groups + } + } + + // Add entire group to current line + lines[lines.count - 1].append(contentsOf: groupElements) + currentWidth += groupWidth + i = nextIndex + continue + } + + // Check if element fits on current line + if !lines.last!.isEmpty && currentWidth + element.width > maxWidth - margin { + if debugPunctuation, case .text = element.content { + print(" Doesn't fit (width=\(currentWidth) + \(element.width) > \(maxWidth)), current line has \(lines.last!.count) elements") + } + // Element doesn't fit - find best break point in current line + if let breakIndex = findBestBreak(in: lines[lines.count - 1]) { + if debugPunctuation { + print(" Found break at index \(breakIndex) out of \(lines.last!.count) elements") + if breakIndex < lines.last!.count { + if case .text(let t) = lines.last![breakIndex].content { + print(" Break at element: '\(t)'") + } + } + } + // Found a break point - move elements from breakIndex onward to next line + let moveElements = Array(lines[lines.count - 1][breakIndex...]) + let oldLine = Array(lines[lines.count - 1][.. Adding '\(t)' to new line (part of unbreakable sequence)") + } + lines[lines.count - 1].append(element) + currentWidth += element.width + i += 1 + continue + } else { + if debugPunctuation, case .text(let t) = element.content { + print(" -> Adding '\(t)' to new line (can start line)") + } + } + // Current element can start a line, will be added to new line below + } else { + // Should not happen if findBestBreak is correct, but handle gracefully + // Keep elements on current line (allow overflow) + lines[lines.count - 1].append(contentsOf: moveElements) + currentWidth += moveElements.reduce(0) { $0 + $1.width } + } + } else { + // No good break point found + // Check if current element can start a new line + if element.isBreakBefore { + // Element can start new line + lines.append([]) + currentWidth = 0 + } else { + // Element cannot start a new line (e.g., closing punctuation) + // Keep it on current line even if it causes overflow + // This respects punctuation rules over width constraints + lines[lines.count - 1].append(element) + currentWidth += element.width + i += 1 + continue + } + } + } + + // Add element to current line (may overflow if indivisible and too wide) + lines[lines.count - 1].append(element) + currentWidth += element.width + i += 1 + } + + let finalLines = lines.filter { !$0.isEmpty } + + if debugPunctuation { + print("\n=== Final lines: ===") + for (lineIdx, line) in finalLines.enumerated() { + print("Line \(lineIdx):") + for elem in line { + if case .text(let t) = elem.content { + print(" '\(t)'", terminator: "") + } + } + print() + } + } + + return finalLines + } + + // MARK: - Helper Methods + + /// Calculate the correct width for a group of elements (e.g., base + scripts) + /// Scripts overlap vertically, so the group width is not the sum of all widths + private func calculateGroupWidth(_ groupElements: [MTBreakableElement]) -> CGFloat { + // For grouped elements (base + scripts), just sum all widths + // The display generator will handle the actual positioning and overlap + // This is just for line fitting purposes + return groupElements.reduce(0) { $0 + $1.width } + } + + /// Collect all elements that share the same groupId + private func collectGroup(_ elements: [MTBreakableElement], startIndex: Int, groupId: UUID) -> ([MTBreakableElement], Int) { + var groupElements: [MTBreakableElement] = [] + var index = startIndex + + while index < elements.count && elements[index].groupId == groupId { + groupElements.append(elements[index]) + index += 1 + } + + return (groupElements, index) + } + + /// Find the best break point in a line + /// Returns the index where the break should occur (elements from this index move to next line) + private func findBestBreak(in line: [MTBreakableElement]) -> Int? { + var bestIndex: Int? = nil + var lowestPenalty = Int.max + + let debugBreak = !"".isEmpty // Enable to debug break point selection + + // Scan from right to left to prefer breaking later in the line + // Note: Skip the last element (idx == line.count - 1) because breaking after it + // would move 0 elements to the next line, which is pointless + for (idx, element) in line.enumerated().reversed() { + // Skip the last element - we need to move at least 1 element to the next line + if idx >= line.count - 1 { + continue + } + + // Can we break after this element? + let canBreakAfter = element.isBreakAfter + let penaltyAfter = element.penaltyAfter + + // Check if next element (which would move to new line) allows breaking before it + let canBreakBeforeNext = line[idx + 1].isBreakBefore + let penaltyBeforeNext = line[idx + 1].penaltyBefore + + // We can break here only if BOTH: + // 1. Current element allows breaking after it + // 2. Next element allows breaking before it + if canBreakAfter && canBreakBeforeNext { + let totalPenalty = max(penaltyAfter, penaltyBeforeNext) + if totalPenalty < lowestPenalty { + if debugBreak && idx < line.count - 1 { + let currText = if case .text(let t) = element.content { t } else { "?" } + let nextText = if case .text(let t) = line[idx + 1].content { t } else { "?" } + print(" Considering break: '\(currText)' | '\(nextText)' at idx=\(idx), penalty=\(totalPenalty)") + } + bestIndex = idx + 1 + lowestPenalty = totalPenalty + } + } + } + + if debugBreak { + print(" Best break: index=\(bestIndex ?? -1), penalty=\(lowestPenalty)") + } + + // Only return if we found an acceptable break point + if let index = bestIndex, lowestPenalty <= MTBreakPenalty.bad { + return index + } + + return nil + } + + /// Check if a line width exceeds the maximum + private func exceedsMaxWidth(_ width: CGFloat) -> Bool { + return width > maxWidth - margin + } +} diff --git a/third-party/SwiftMath/Sources/mathFonts.bundle/Asana-Math.otf b/third-party/SwiftMath/Sources/mathFonts.bundle/Asana-Math.otf new file mode 100755 index 0000000000000000000000000000000000000000..fb43a860105eb163d97f52932cdc5d8db5e3c43d GIT binary patch literal 433528 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