From 4c09fe3bfe94fbec31d115596f0fd4acf06f6dfa Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Sat, 29 Mar 2025 14:11:25 -0500 Subject: [PATCH 01/42] Update tests.sh --- .github/scripts/tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/scripts/tests.sh b/.github/scripts/tests.sh index c90874f48..116b6253a 100755 --- a/.github/scripts/tests.sh +++ b/.github/scripts/tests.sh @@ -16,6 +16,6 @@ export LC_CTYPE=en_US.UTF-8 set -o pipefail && arch -"${ARCH}" xcodebuild \ -scheme CodeEditTextView \ -derivedDataPath ".build" \ - -destination "platform=macos,arch=${ARCH}" \ + -destination "platform=macOS,arch=${ARCH},name=My Mac" \ -skipPackagePluginValidation \ clean test | xcpretty From 33c0971ebaf00255a86cb287ca9358d837ba84cd Mon Sep 17 00:00:00 2001 From: Abe Date: Sat, 29 Mar 2025 12:44:41 -0700 Subject: [PATCH 02/42] Added underscore to selection (#73) --- .../CodeEditTextView/Extensions/CharacterSet.swift | 14 ++++++++++++++ .../SelectionManipulation+Horizontal.swift | 3 ++- .../TextView/TextView+Select.swift | 4 ++-- 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 Sources/CodeEditTextView/Extensions/CharacterSet.swift diff --git a/Sources/CodeEditTextView/Extensions/CharacterSet.swift b/Sources/CodeEditTextView/Extensions/CharacterSet.swift new file mode 100644 index 000000000..0d59bc970 --- /dev/null +++ b/Sources/CodeEditTextView/Extensions/CharacterSet.swift @@ -0,0 +1,14 @@ +// +// CharacterSet.swift +// CodeEditTextView +// +// Created by Abe Malla on 3/29/25. +// + +import Foundation + +extension CharacterSet { + /// Returns a character set containing the characters common in code names + static let codeIdentifierCharacters: CharacterSet = .alphanumerics + .union(.init(charactersIn: "_")) +} diff --git a/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Horizontal.swift b/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Horizontal.swift index d12033377..73e40325e 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Horizontal.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Horizontal.swift @@ -109,10 +109,11 @@ package extension TextSelectionManager { if hasFoundValidWordChar && CharacterSet.punctuationCharacters .union(.whitespacesAndNewlines) + .subtracting(CharacterSet.codeIdentifierCharacters) .isSuperset(of: CharacterSet(charactersIn: substring)) { stop.pointee = true return - } else if CharacterSet.alphanumerics.isSuperset(of: CharacterSet(charactersIn: substring)) { + } else if CharacterSet.codeIdentifierCharacters.isSuperset(of: CharacterSet(charactersIn: substring)) { hasFoundValidWordChar = true } rangeToDelete.length += substring.count diff --git a/Sources/CodeEditTextView/TextView/TextView+Select.swift b/Sources/CodeEditTextView/TextView/TextView+Select.swift index 6ee70a264..f3da417db 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Select.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Select.swift @@ -37,8 +37,8 @@ extension TextView { } let charSet = CharacterSet(charactersIn: String(char)) let characterSet: CharacterSet - if CharacterSet.alphanumerics.isSuperset(of: charSet) { - characterSet = .alphanumerics + if CharacterSet.codeIdentifierCharacters.isSuperset(of: charSet) { + characterSet = .codeIdentifierCharacters } else if CharacterSet.whitespaces.isSuperset(of: charSet) { characterSet = .whitespaces } else if CharacterSet.newlines.isSuperset(of: charSet) { From e86ca5914ccb4a4f885d3e9a56cfe9462cc64411 Mon Sep 17 00:00:00 2001 From: Abe Date: Mon, 31 Mar 2025 06:07:42 -0700 Subject: [PATCH 03/42] Added mouse drag selection modes (#75) ### Description There are 3 different selection modes that editors typically have when clicking and dragging the mouse. 1. Character - simple click and drag to select by character 2. Word - double click a word and then drag to start selecting by word ranges 3. Line - triple click and drag to start selecting by entire lines This PR tracks and implements the different selection mode behaviors. ### Related Issues Closes #74 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots Character selection (default behavior, unchanged) https://github.com/user-attachments/assets/6f863cfb-35e9-4871-8dbb-9c21f97fdf47 Double click for word selection https://github.com/user-attachments/assets/0c84ba50-0a0d-4e04-8b98-565cdcab8580 Triple click for line selection https://github.com/user-attachments/assets/df700d71-e72e-4ea7-9c04-76d212009d1f --- .../Cursors/CursorSelectionMode.swift | 12 ++++ .../TextView/TextView+Mouse.swift | 47 +++++++++++-- .../TextView/TextView+Select.swift | 70 ++++++++++++------- .../CodeEditTextView/TextView/TextView.swift | 1 + 4 files changed, 99 insertions(+), 31 deletions(-) create mode 100644 Sources/CodeEditTextView/Cursors/CursorSelectionMode.swift diff --git a/Sources/CodeEditTextView/Cursors/CursorSelectionMode.swift b/Sources/CodeEditTextView/Cursors/CursorSelectionMode.swift new file mode 100644 index 000000000..7a7da3ed0 --- /dev/null +++ b/Sources/CodeEditTextView/Cursors/CursorSelectionMode.swift @@ -0,0 +1,12 @@ +// +// CursorSelectionMode.swift +// CodeEditTextView +// +// Created by Abe Malla on 3/31/25. +// + +enum CursorSelectionMode { + case character + case word + case line +} diff --git a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift b/Sources/CodeEditTextView/TextView/TextView+Mouse.swift index 3a4839fe1..dc752e7c7 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Mouse.swift @@ -42,6 +42,8 @@ extension TextView { /// if shift, we extend the selection to the click location /// else we set the cursor fileprivate func handleSingleClick(event: NSEvent, offset: Int) { + cursorSelectionMode = .character + guard isEditable else { super.mouseDown(with: event) return @@ -59,6 +61,8 @@ extension TextView { } fileprivate func handleDoubleClick(event: NSEvent) { + cursorSelectionMode = .word + guard !event.modifierFlags.contains(.shift) else { super.mouseDown(with: event) return @@ -68,6 +72,8 @@ extension TextView { } fileprivate func handleTripleClick(event: NSEvent) { + cursorSelectionMode = .line + guard !event.modifierFlags.contains(.shift) else { super.mouseDown(with: event) return @@ -97,12 +103,43 @@ extension TextView { let endPosition = layoutManager.textOffsetAtPoint(convert(event.locationInWindow, from: nil)) else { return } - selectionManager.setSelectedRange( - NSRange( - location: min(startPosition, endPosition), - length: max(startPosition, endPosition) - min(startPosition, endPosition) + + switch cursorSelectionMode { + case .character: + selectionManager.setSelectedRange( + NSRange( + location: min(startPosition, endPosition), + length: max(startPosition, endPosition) - min(startPosition, endPosition) + ) + ) + + case .word: + let startWordRange = findWordBoundary(at: startPosition) + let endWordRange = findWordBoundary(at: endPosition) + + selectionManager.setSelectedRange( + NSRange( + location: min(startWordRange.location, endWordRange.location), + length: max(startWordRange.location + startWordRange.length, + endWordRange.location + endWordRange.length) - + min(startWordRange.location, endWordRange.location) + ) + ) + + case .line: + let startLineRange = findLineBoundary(at: startPosition) + let endLineRange = findLineBoundary(at: endPosition) + + selectionManager.setSelectedRange( + NSRange( + location: min(startLineRange.location, endLineRange.location), + length: max(startLineRange.location + startLineRange.length, + endLineRange.location + endLineRange.length) - + min(startLineRange.location, endLineRange.location) + ) ) - ) + } + setNeedsDisplay() self.autoscroll(with: event) } diff --git a/Sources/CodeEditTextView/TextView/TextView+Select.swift b/Sources/CodeEditTextView/TextView/TextView+Select.swift index f3da417db..390b6225d 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Select.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Select.swift @@ -29,35 +29,53 @@ extension TextView { override public func selectWord(_ sender: Any?) { let newSelections = selectionManager.textSelections.compactMap { (textSelection) -> NSRange? in - guard textSelection.range.isEmpty, - let char = textStorage.substring( - from: NSRange(location: textSelection.range.location, length: 1) - )?.first else { - return nil - } - let charSet = CharacterSet(charactersIn: String(char)) - let characterSet: CharacterSet - if CharacterSet.codeIdentifierCharacters.isSuperset(of: charSet) { - characterSet = .codeIdentifierCharacters - } else if CharacterSet.whitespaces.isSuperset(of: charSet) { - characterSet = .whitespaces - } else if CharacterSet.newlines.isSuperset(of: charSet) { - characterSet = .newlines - } else if CharacterSet.punctuationCharacters.isSuperset(of: charSet) { - characterSet = .punctuationCharacters - } else { - return nil - } - guard let start = textStorage - .findPrecedingOccurrenceOfCharacter(in: characterSet.inverted, from: textSelection.range.location), - let end = textStorage - .findNextOccurrenceOfCharacter(in: characterSet.inverted, from: textSelection.range.max) else { - return nil + guard textSelection.range.isEmpty else { + return nil + } + return findWordBoundary(at: textSelection.range.location) } - return NSRange(start: start, end: end) - } selectionManager.setSelectedRanges(newSelections) unmarkTextIfNeeded() needsDisplay = true } + + /// Given a position, find the range of the word that exists at that position. + internal func findWordBoundary(at position: Int) -> NSRange { + guard position >= 0 && position < textStorage.length, + let char = textStorage.substring( + from: NSRange(location: position, length: 1) + )?.first else { + return NSRange(location: position, length: 0) + } + + let charSet = CharacterSet(charactersIn: String(char)) + let characterSet: CharacterSet + + if CharacterSet.codeIdentifierCharacters.isSuperset(of: charSet) { + characterSet = .codeIdentifierCharacters + } else if CharacterSet.whitespaces.isSuperset(of: charSet) { + characterSet = .whitespaces + } else if CharacterSet.newlines.isSuperset(of: charSet) { + characterSet = .newlines + } else if CharacterSet.punctuationCharacters.isSuperset(of: charSet) { + characterSet = .punctuationCharacters + } else { + return NSRange(location: position, length: 0) + } + + guard let start = textStorage.findPrecedingOccurrenceOfCharacter(in: characterSet.inverted, from: position), + let end = textStorage.findNextOccurrenceOfCharacter(in: characterSet.inverted, from: position) else { + return NSRange(location: position, length: 0) + } + + return NSRange(start: start, end: end) + } + + /// Given a position, find the range of the entire line that exists at that position. + internal func findLineBoundary(at position: Int) -> NSRange { + guard let linePosition = layoutManager.textLineForOffset(position) else { + return NSRange(location: position, length: 0) + } + return linePosition.range + } } diff --git a/Sources/CodeEditTextView/TextView/TextView.swift b/Sources/CodeEditTextView/TextView/TextView.swift index 84a0a46d6..29eb1736c 100644 --- a/Sources/CodeEditTextView/TextView/TextView.swift +++ b/Sources/CodeEditTextView/TextView/TextView.swift @@ -248,6 +248,7 @@ public class TextView: NSView, NSTextContent { var isFirstResponder: Bool = false var mouseDragAnchor: CGPoint? var mouseDragTimer: Timer? + var cursorSelectionMode: CursorSelectionMode = .character private var fontCharWidth: CGFloat { (" " as NSString).size(withAttributes: [.font: font]).width From fe36e690a4db32ba09246a32a0f56a4021548665 Mon Sep 17 00:00:00 2001 From: Austin Condiff Date: Sun, 6 Apr 2025 10:22:27 -0500 Subject: [PATCH 04/42] Emphasis Manager Enhancements (#78) * Cleaned up the emphasize highlights appearance. Added black text layer. * Removed unused changes from last commit. * Enabled anti aliasing and font smoothing. Using findHighlightColor instead of a custom color. * Update EmphasizeAPI Colors On Draw * Renamed EmphasisAPI to EmphasisManager. Separated concerns by moving match cycle logic from EmphasisManager to FindViewController. Using EmphasisManager in bracket pair matching instead of custom implementation reducing duplicated code. Implemented flash find matches when clicking the next and previous buttons when the editor is in focus. `bracketPairHighlight` becomes `bracketPairEmphasis`. Fixed various find issues and cleaned up implementation. * Fix Scrolling To Emphasized Ranges, Swift 6 Warning * Use flatMap * Weakly reference `layer` and `textLayer` in delayed animation * Fix nested `if` * Weakly reference `self` in delayed animation * Update docs * Move `Emphasis` and `EmphasisStyle` to Files * Remove Extra Closing Bracket * Lint Error * Comment on line drawing * Return Early From `updateSelectionViews` When Not First Responder * Docs, Naming * Docs Co-authored-by: Tom Ludwig * Docs - Spelling * Add EmphasisManager Docs --------- Co-authored-by: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Co-authored-by: Tom Ludwig --- .../EmphasisManager/Emphasis.swift | 47 +++ .../EmphasisManager/EmphasisManager.swift | 319 ++++++++++++++++++ .../EmphasisManager/EmphasisStyle.swift | 31 ++ .../EmphasizeAPI/EmphasizeAPI.swift | 184 ---------- .../NSBezierPath+CGPathFallback.swift | 2 +- .../TextLayoutManager+Public.swift | 2 +- .../TextLine/LineFragmentView.swift | 10 +- .../TextSelectionManager.swift | 22 +- .../TextView/TextView+Layout.swift | 1 + .../CodeEditTextView/TextView/TextView.swift | 6 +- 10 files changed, 421 insertions(+), 203 deletions(-) create mode 100644 Sources/CodeEditTextView/EmphasisManager/Emphasis.swift create mode 100644 Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift create mode 100644 Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift delete mode 100644 Sources/CodeEditTextView/EmphasizeAPI/EmphasizeAPI.swift diff --git a/Sources/CodeEditTextView/EmphasisManager/Emphasis.swift b/Sources/CodeEditTextView/EmphasisManager/Emphasis.swift new file mode 100644 index 000000000..aac05d528 --- /dev/null +++ b/Sources/CodeEditTextView/EmphasisManager/Emphasis.swift @@ -0,0 +1,47 @@ +// +// Emphasis.swift +// CodeEditTextView +// +// Created by Khan Winter on 3/31/25. +// + +import AppKit + +/// Represents a single emphasis with its properties +public struct Emphasis { + /// The range the emphasis applies it's style to, relative to the entire text document. + public let range: NSRange + + /// The style to apply emphasis with, handled by the ``EmphasisManager``. + public let style: EmphasisStyle + + /// Set to `true` to 'flash' the emphasis before removing it automatically after being added. + /// + /// Useful when an emphasis should be temporary and quick, like when emphasizing paired brackets in a document. + public let flash: Bool + + /// Set to `true` to style the emphasis as 'inactive'. + /// + /// When ``style`` is ``EmphasisStyle/standard``, this reduces shadows and background color. + /// For all styles, if drawing text on top of them, this uses ``EmphasisManager/getInactiveTextColor`` instead of + /// the text view's text color to render the emphasized text. + public let inactive: Bool + + /// Set to `true` if the emphasis manager should update the text view's selected range to match + /// this object's ``Emphasis/range`` value. + public let selectInDocument: Bool + + public init( + range: NSRange, + style: EmphasisStyle = .standard, + flash: Bool = false, + inactive: Bool = false, + selectInDocument: Bool = false + ) { + self.range = range + self.style = style + self.flash = flash + self.inactive = inactive + self.selectInDocument = selectInDocument + } +} diff --git a/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift b/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift new file mode 100644 index 000000000..091829348 --- /dev/null +++ b/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift @@ -0,0 +1,319 @@ +// +// EmphasisManager.swift +// CodeEditTextView +// +// Created by Tom Ludwig on 05.11.24. +// + +import AppKit + +/// Manages text emphases within a text view, supporting multiple styles and groups. +/// +/// Text emphasis draws attention to a range of text, indicating importance. +/// This object may be used in a code editor to emphasize search results, or indicate +/// bracket pairs, for instance. +/// +/// This object is designed to allow for easy grouping of emphasis types. An outside +/// object is responsible for managing what emphases are visible. Because it's very +/// likely that more than one type of emphasis may occur on the document at the same +/// time, grouping allows each emphasis to be managed separately from the others by +/// each outside object without knowledge of the other's state. +public final class EmphasisManager { + /// Internal representation of a emphasis layer with its associated text layer + private struct EmphasisLayer { + let emphasis: Emphasis + let layer: CAShapeLayer + let textLayer: CATextLayer? + } + + private var emphasisGroups: [String: [EmphasisLayer]] = [:] + private let activeColor: NSColor = .findHighlightColor + private let inactiveColor: NSColor = NSColor.lightGray.withAlphaComponent(0.4) + private var originalSelectionColor: NSColor? + + weak var textView: TextView? + + init(textView: TextView) { + self.textView = textView + } + + /// Adds a single emphasis to the specified group. + /// - Parameters: + /// - emphasis: The emphasis to add + /// - id: A group identifier + public func addEmphasis(_ emphasis: Emphasis, for id: String) { + addEmphases([emphasis], for: id) + } + + /// Adds multiple emphases to the specified group. + /// - Parameters: + /// - emphases: The emphases to add + /// - id: The group identifier + public func addEmphases(_ emphases: [Emphasis], for id: String) { + // Store the current selection background color if not already stored + if originalSelectionColor == nil { + originalSelectionColor = textView?.selectionManager.selectionBackgroundColor ?? .selectedTextBackgroundColor + } + + let layers = emphases.map { createEmphasisLayer(for: $0) } + emphasisGroups[id] = layers + + // Handle selections + handleSelections(for: emphases) + + // Handle flash animations + for (index, emphasis) in emphases.enumerated() where emphasis.flash { + let layer = layers[index] + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in + guard let self = self else { return } + self.applyFadeOutAnimation(to: layer.layer, textLayer: layer.textLayer) + // Remove the emphasis from the group + if var emphases = self.emphasisGroups[id] { + emphases.remove(at: index) + if emphases.isEmpty { + self.emphasisGroups.removeValue(forKey: id) + } else { + self.emphasisGroups[id] = emphases + } + } + } + } + } + + /// Replaces all emphases in the specified group. + /// - Parameters: + /// - emphases: The new emphases + /// - id: The group identifier + public func replaceEmphases(_ emphases: [Emphasis], for id: String) { + removeEmphases(for: id) + addEmphases(emphases, for: id) + } + + /// Updates the emphases for a group by transforming the existing array. + /// - Parameters: + /// - id: The group identifier + /// - transform: The transformation to apply to the existing emphases + public func updateEmphases(for id: String, _ transform: ([Emphasis]) -> [Emphasis]) { + guard let existingLayers = emphasisGroups[id] else { return } + let existingEmphases = existingLayers.map { $0.emphasis } + let newEmphases = transform(existingEmphases) + replaceEmphases(newEmphases, for: id) + } + + /// Removes all emphases for the given group. + /// - Parameter id: The group identifier + public func removeEmphases(for id: String) { + emphasisGroups[id]?.forEach { layer in + layer.layer.removeAllAnimations() + layer.layer.removeFromSuperlayer() + layer.textLayer?.removeAllAnimations() + layer.textLayer?.removeFromSuperlayer() + } + emphasisGroups[id] = nil + } + + /// Removes all emphases for all groups. + public func removeAllEmphases() { + emphasisGroups.keys.forEach { removeEmphases(for: $0) } + emphasisGroups.removeAll() + + // Restore original selection emphasising + if let originalColor = originalSelectionColor { + textView?.selectionManager.selectionBackgroundColor = originalColor + } + originalSelectionColor = nil + } + + /// Gets all emphases for a given group. + /// - Parameter id: The group identifier + /// - Returns: Array of emphases in the group + public func getEmphases(for id: String) -> [Emphasis] { + emphasisGroups[id]?.map { $0.emphasis } ?? [] + } + + /// Updates the positions and bounds of all emphasis layers to match the current text layout. + public func updateLayerBackgrounds() { + for layer in emphasisGroups.flatMap(\.value) { + if let shapePath = textView?.layoutManager?.roundedPathForRange(layer.emphasis.range) { + if #available(macOS 14.0, *) { + layer.layer.path = shapePath.cgPath + } else { + layer.layer.path = shapePath.cgPathFallback + } + + // Update bounds and position + if let cgPath = layer.layer.path { + let boundingBox = cgPath.boundingBox + layer.layer.bounds = boundingBox + layer.layer.position = CGPoint(x: boundingBox.midX, y: boundingBox.midY) + } + + // Update text layer if it exists + if let textLayer = layer.textLayer { + var bounds = shapePath.bounds + bounds.origin.y += 1 // Move down by 1 pixel + textLayer.frame = bounds + } + } + } + } + + private func createEmphasisLayer(for emphasis: Emphasis) -> EmphasisLayer { + guard let shapePath = textView?.layoutManager?.roundedPathForRange(emphasis.range) else { + return EmphasisLayer(emphasis: emphasis, layer: CAShapeLayer(), textLayer: nil) + } + + let layer = createShapeLayer(shapePath: shapePath, emphasis: emphasis) + textView?.layer?.insertSublayer(layer, at: 1) + + let textLayer = createTextLayer(for: emphasis) + if let textLayer = textLayer { + textView?.layer?.addSublayer(textLayer) + } + + if emphasis.inactive == false && emphasis.style == .standard { + applyPopAnimation(to: layer) + } + + return EmphasisLayer(emphasis: emphasis, layer: layer, textLayer: textLayer) + } + + private func createShapeLayer(shapePath: NSBezierPath, emphasis: Emphasis) -> CAShapeLayer { + let layer = CAShapeLayer() + + switch emphasis.style { + case .standard: + layer.cornerRadius = 4.0 + layer.fillColor = (emphasis.inactive ? inactiveColor : activeColor).cgColor + layer.shadowColor = .black + layer.shadowOpacity = emphasis.inactive ? 0.0 : 0.5 + layer.shadowOffset = CGSize(width: 0, height: 1.5) + layer.shadowRadius = 1.5 + layer.opacity = 1.0 + layer.zPosition = emphasis.inactive ? 0 : 1 + case .underline(let color): + layer.lineWidth = 1.0 + layer.lineCap = .round + layer.strokeColor = color.cgColor + layer.fillColor = nil + layer.opacity = emphasis.flash ? 0.0 : 1.0 + layer.zPosition = 1 + case .outline(let color): + layer.cornerRadius = 2.5 + layer.borderColor = color.cgColor + layer.borderWidth = 0.5 + layer.fillColor = nil + layer.opacity = emphasis.flash ? 0.0 : 1.0 + layer.zPosition = 1 + } + + if #available(macOS 14.0, *) { + layer.path = shapePath.cgPath + } else { + layer.path = shapePath.cgPathFallback + } + + // Set bounds of the layer; needed for the scale animation + if let cgPath = layer.path { + let boundingBox = cgPath.boundingBox + layer.bounds = boundingBox + layer.position = CGPoint(x: boundingBox.midX, y: boundingBox.midY) + } + + return layer + } + + private func createTextLayer(for emphasis: Emphasis) -> CATextLayer? { + guard let textView = textView, + let layoutManager = textView.layoutManager, + let shapePath = layoutManager.roundedPathForRange(emphasis.range), + let originalString = textView.textStorage?.attributedSubstring(from: emphasis.range) else { + return nil + } + + var bounds = shapePath.bounds + bounds.origin.y += 1 // Move down by 1 pixel + + // Create text layer + let textLayer = CATextLayer() + textLayer.frame = bounds + textLayer.backgroundColor = NSColor.clear.cgColor + textLayer.contentsScale = textView.window?.screen?.backingScaleFactor ?? 2.0 + textLayer.allowsFontSubpixelQuantization = true + textLayer.zPosition = 2 + + // Get the font from the attributed string + if let font = originalString.attribute(.font, at: 0, effectiveRange: nil) as? NSFont { + textLayer.font = font + } else { + textLayer.font = NSFont.systemFont(ofSize: NSFont.systemFontSize) + } + + updateTextLayer(textLayer, with: originalString, emphasis: emphasis) + return textLayer + } + + private func updateTextLayer( + _ textLayer: CATextLayer, + with originalString: NSAttributedString, + emphasis: Emphasis + ) { + let text = NSMutableAttributedString(attributedString: originalString) + text.addAttribute( + .foregroundColor, + value: emphasis.inactive ? getInactiveTextColor() : NSColor.black, + range: NSRange(location: 0, length: text.length) + ) + textLayer.string = text + } + + private func getInactiveTextColor() -> NSColor { + if textView?.effectiveAppearance.name == .darkAqua { + return .white + } + return .black + } + + private func applyPopAnimation(to layer: CALayer) { + let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale") + scaleAnimation.values = [1.0, 1.25, 1.0] + scaleAnimation.keyTimes = [0, 0.3, 1] + scaleAnimation.duration = 0.1 + scaleAnimation.timingFunctions = [CAMediaTimingFunction(name: .easeOut)] + + layer.add(scaleAnimation, forKey: "popAnimation") + } + + private func applyFadeOutAnimation(to layer: CALayer, textLayer: CATextLayer?) { + let fadeAnimation = CABasicAnimation(keyPath: "opacity") + fadeAnimation.fromValue = 1.0 + fadeAnimation.toValue = 0.0 + fadeAnimation.duration = 0.1 + fadeAnimation.timingFunction = CAMediaTimingFunction(name: .easeOut) + fadeAnimation.fillMode = .forwards + fadeAnimation.isRemovedOnCompletion = false + + layer.add(fadeAnimation, forKey: "fadeOutAnimation") + + if let textLayer = textLayer, let textFadeAnimation = fadeAnimation.copy() as? CABasicAnimation { + textLayer.add(textFadeAnimation, forKey: "fadeOutAnimation") + textLayer.add(textFadeAnimation, forKey: "fadeOutAnimation") + } + + // Remove both layers after animation completes + DispatchQueue.main.asyncAfter(deadline: .now() + fadeAnimation.duration) { [weak layer, weak textLayer] in + layer?.removeFromSuperlayer() + textLayer?.removeFromSuperlayer() + } + } + + /// Handles selection of text ranges for emphases where select is true + private func handleSelections(for emphases: [Emphasis]) { + let selectableRanges = emphases.filter(\.selectInDocument).map(\.range) + guard let textView, !selectableRanges.isEmpty else { return } + + textView.selectionManager.setSelectedRanges(selectableRanges) + textView.scrollSelectionToVisible() + textView.needsDisplay = true + } +} diff --git a/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift b/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift new file mode 100644 index 000000000..443ffb794 --- /dev/null +++ b/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift @@ -0,0 +1,31 @@ +// +// EmphasisStyle.swift +// CodeEditTextView +// +// Created by Khan Winter on 3/31/25. +// + +import AppKit + +/// Defines the style of emphasis to apply to text ranges +public enum EmphasisStyle: Equatable { + /// Standard emphasis with background color + case standard + /// Underline emphasis with a line color + case underline(color: NSColor) + /// Outline emphasis with a border color + case outline(color: NSColor) + + public static func == (lhs: EmphasisStyle, rhs: EmphasisStyle) -> Bool { + switch (lhs, rhs) { + case (.standard, .standard): + return true + case (.underline(let lhsColor), .underline(let rhsColor)): + return lhsColor == rhsColor + case (.outline(let lhsColor), .outline(let rhsColor)): + return lhsColor == rhsColor + default: + return false + } + } +} diff --git a/Sources/CodeEditTextView/EmphasizeAPI/EmphasizeAPI.swift b/Sources/CodeEditTextView/EmphasizeAPI/EmphasizeAPI.swift deleted file mode 100644 index 0ed8a5716..000000000 --- a/Sources/CodeEditTextView/EmphasizeAPI/EmphasizeAPI.swift +++ /dev/null @@ -1,184 +0,0 @@ -// -// EmphasizeAPI.swift -// CodeEditTextView -// -// Created by Tom Ludwig on 05.11.24. -// - -import AppKit - -/// Emphasizes text ranges within a given text view. -public class EmphasizeAPI { - // MARK: - Properties - - public private(set) var emphasizedRanges: [EmphasizedRange] = [] - public private(set) var emphasizedRangeIndex: Int? - private let activeColor: NSColor = NSColor(hex: 0xFFFB00, alpha: 1) - private let inactiveColor: NSColor = NSColor.lightGray.withAlphaComponent(0.4) - - weak var textView: TextView? - - init(textView: TextView) { - self.textView = textView - } - - // MARK: - Structs - public struct EmphasizedRange { - public var range: NSRange - var layer: CAShapeLayer - } - - // MARK: - Public Methods - - /// Emphasises multiple ranges, with one optionally marked as active (highlighted usually in yellow). - /// - /// - Parameters: - /// - ranges: An array of ranges to highlight. - /// - activeIndex: The index of the range to highlight in yellow. Defaults to `nil`. - /// - clearPrevious: Removes previous emphasised ranges. Defaults to `true`. - public func emphasizeRanges(ranges: [NSRange], activeIndex: Int? = nil, clearPrevious: Bool = true) { - if clearPrevious { - removeEmphasizeLayers() // Clear all existing highlights - } - - ranges.enumerated().forEach { index, range in - let isActive = (index == activeIndex) - emphasizeRange(range: range, active: isActive) - - if isActive { - emphasizedRangeIndex = activeIndex - } - } - } - - /// Emphasises a single range. - /// - Parameters: - /// - range: The text range to highlight. - /// - active: Whether the range should be highlighted as active (usually in yellow). Defaults to `false`. - public func emphasizeRange(range: NSRange, active: Bool = false) { - guard let shapePath = textView?.layoutManager?.roundedPathForRange(range) else { return } - - let layer = createEmphasizeLayer(shapePath: shapePath, active: active) - textView?.layer?.insertSublayer(layer, at: 1) - - emphasizedRanges.append(EmphasizedRange(range: range, layer: layer)) - } - - /// Removes the highlight for a specific range. - /// - Parameter range: The range to remove. - public func removeHighlightForRange(_ range: NSRange) { - guard let index = emphasizedRanges.firstIndex(where: { $0.range == range }) else { return } - - let removedLayer = emphasizedRanges[index].layer - removedLayer.removeFromSuperlayer() - - emphasizedRanges.remove(at: index) - - // Adjust the active highlight index - if let currentIndex = emphasizedRangeIndex { - if currentIndex == index { - // TODO: What is the desired behaviour here? - emphasizedRangeIndex = nil // Reset if the active highlight is removed - } else if currentIndex > index { - emphasizedRangeIndex = currentIndex - 1 // Shift if the removed index was before the active index - } - } - } - - /// Highlights the previous emphasised range (usually in yellow). - /// - /// - Returns: An optional `NSRange` representing the newly active emphasized range. - /// Returns `nil` if there are no prior ranges to highlight. - @discardableResult - public func highlightPrevious() -> NSRange? { - return shiftActiveHighlight(amount: -1) - } - - /// Highlights the next emphasised range (usually in yellow). - /// - /// - Returns: An optional `NSRange` representing the newly active emphasized range. - /// Returns `nil` if there are no subsequent ranges to highlight. - @discardableResult - public func highlightNext() -> NSRange? { - return shiftActiveHighlight(amount: 1) - } - - /// Removes all emphasised ranges. - public func removeEmphasizeLayers() { - emphasizedRanges.forEach { $0.layer.removeFromSuperlayer() } - emphasizedRanges.removeAll() - emphasizedRangeIndex = nil - } - - // MARK: - Private Methods - - private func createEmphasizeLayer(shapePath: NSBezierPath, active: Bool) -> CAShapeLayer { - let layer = CAShapeLayer() - layer.cornerRadius = 3.0 - layer.fillColor = (active ? activeColor : inactiveColor).cgColor - layer.shadowColor = .black - layer.shadowOpacity = active ? 0.3 : 0.0 - layer.shadowOffset = CGSize(width: 0, height: 1) - layer.shadowRadius = 3.0 - layer.opacity = 1.0 - - if #available(macOS 14.0, *) { - layer.path = shapePath.cgPath - } else { - layer.path = shapePath.cgPathFallback - } - - // Set bounds of the layer; needed for the scale animation - if let cgPath = layer.path { - let boundingBox = cgPath.boundingBox - layer.bounds = boundingBox - layer.position = CGPoint(x: boundingBox.midX, y: boundingBox.midY) - } - - return layer - } - - /// Shifts the active highlight to a different emphasized range based on the specified offset. - /// - /// - Parameter amount: The offset to shift the active highlight. - /// - A positive value moves to subsequent ranges. - /// - A negative value moves to prior ranges. - /// - /// - Returns: An optional `NSRange` representing the newly active highlight, colored in the active color. - /// Returns `nil` if no change occurred (e.g., if there are no highlighted ranges). - private func shiftActiveHighlight(amount: Int) -> NSRange? { - guard !emphasizedRanges.isEmpty else { return nil } - - var currentIndex = emphasizedRangeIndex ?? -1 - currentIndex = (currentIndex + amount + emphasizedRanges.count) % emphasizedRanges.count - - guard currentIndex < emphasizedRanges.count else { return nil } - - // Reset the previously active layer - if let currentIndex = emphasizedRangeIndex { - let previousLayer = emphasizedRanges[currentIndex].layer - previousLayer.fillColor = inactiveColor.cgColor - previousLayer.shadowOpacity = 0.0 - } - - // Set the new active layer - let newLayer = emphasizedRanges[currentIndex].layer - newLayer.fillColor = activeColor.cgColor - newLayer.shadowOpacity = 0.3 - - applyPopAnimation(to: newLayer) - emphasizedRangeIndex = currentIndex - - return emphasizedRanges[currentIndex].range - } - - private func applyPopAnimation(to layer: CALayer) { - let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale") - scaleAnimation.values = [1.0, 1.5, 1.0] - scaleAnimation.keyTimes = [0, 0.3, 1] - scaleAnimation.duration = 0.2 - scaleAnimation.timingFunctions = [CAMediaTimingFunction(name: .easeOut)] - - layer.add(scaleAnimation, forKey: "popAnimation") - } -} diff --git a/Sources/CodeEditTextView/Extensions/NSBezierPath+CGPathFallback.swift b/Sources/CodeEditTextView/Extensions/NSBezierPath+CGPathFallback.swift index dcb1a7121..a174185d6 100644 --- a/Sources/CodeEditTextView/Extensions/NSBezierPath+CGPathFallback.swift +++ b/Sources/CodeEditTextView/Extensions/NSBezierPath+CGPathFallback.swift @@ -24,7 +24,7 @@ extension NSBezierPath { path.addCurve(to: points[2], control1: points[0], control2: points[1]) case .closePath: path.closeSubpath() - @unknown default: + default: continue } } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift index 34617613d..4a849742e 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift @@ -234,7 +234,7 @@ extension TextLayoutManager { // Close the path if let firstPoint = points.first { - return NSBezierPath.smoothPath(points + [firstPoint], radius: 2) + return NSBezierPath.smoothPath(points + [firstPoint], radius: 4) } return nil diff --git a/Sources/CodeEditTextView/TextLine/LineFragmentView.swift b/Sources/CodeEditTextView/TextLine/LineFragmentView.swift index 043c1829e..ff5625d23 100644 --- a/Sources/CodeEditTextView/TextLine/LineFragmentView.swift +++ b/Sources/CodeEditTextView/TextLine/LineFragmentView.swift @@ -42,12 +42,18 @@ final class LineFragmentView: NSView { } context.saveGState() + // Removes jagged edges context.setAllowsAntialiasing(true) context.setShouldAntialias(true) - context.setAllowsFontSmoothing(false) - context.setShouldSmoothFonts(false) + + // Effectively increases the screen resolution by drawing text in each LED color pixel (R, G, or B), rather than + // the triplet of pixels (RGB) for a regular pixel. This can increase text clarity, but loses effectiveness + // in low-contrast settings. context.setAllowsFontSubpixelPositioning(true) context.setShouldSubpixelPositionFonts(true) + + // Quantizes the position of each glyph, resulting in slightly less accurate positioning, and gaining higher + // quality bitmaps and performance. context.setAllowsFontSubpixelQuantization(true) context.setShouldSubpixelQuantizeFonts(true) diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift index b6311a9ab..dde0a2c98 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift @@ -78,10 +78,9 @@ public class TextSelectionManager: NSObject { let selection = TextSelection(range: range) selection.suggestedXPos = layoutManager?.rectForOffset(range.location)?.minX textSelections = [selection] - if textView?.isFirstResponder ?? false { - updateSelectionViews() - NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self)) - } + updateSelectionViews() + NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self)) + delegate?.setNeedsDisplay() } /// Set the selected ranges to new ranges. Overrides any existing selections. @@ -99,10 +98,9 @@ public class TextSelectionManager: NSObject { selection.suggestedXPos = layoutManager?.rectForOffset($0.location)?.minX return selection } - if textView?.isFirstResponder ?? false { - updateSelectionViews() - NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self)) - } + updateSelectionViews() + NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self)) + delegate?.setNeedsDisplay() } /// Append a new selected range to the existing ones. @@ -126,10 +124,9 @@ public class TextSelectionManager: NSObject { textSelections.append(newTextSelection) } - if textView?.isFirstResponder ?? false { - updateSelectionViews() - NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self)) - } + updateSelectionViews() + NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self)) + delegate?.setNeedsDisplay() } // MARK: - Selection Views @@ -137,6 +134,7 @@ public class TextSelectionManager: NSObject { /// Update all selection cursors. Placing them in the correct position for each text selection and reseting the /// blink timer. func updateSelectionViews() { + guard textView?.isFirstResponder ?? false else { return } var didUpdate: Bool = false for textSelection in textSelections { diff --git a/Sources/CodeEditTextView/TextView/TextView+Layout.swift b/Sources/CodeEditTextView/TextView/TextView+Layout.swift index 038dd349a..6f9a0067b 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Layout.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Layout.swift @@ -22,6 +22,7 @@ extension TextView { if isSelectable { selectionManager.drawSelections(in: dirtyRect) } + emphasisManager?.updateLayerBackgrounds() } override open var isFlipped: Bool { diff --git a/Sources/CodeEditTextView/TextView/TextView.swift b/Sources/CodeEditTextView/TextView/TextView.swift index 29eb1736c..f499457ba 100644 --- a/Sources/CodeEditTextView/TextView/TextView.swift +++ b/Sources/CodeEditTextView/TextView/TextView.swift @@ -240,8 +240,8 @@ public class TextView: NSView, NSTextContent { /// The selection manager for the text view. package(set) public var selectionManager: TextSelectionManager! - /// Empasizse text ranges in the text view - public var emphasizeAPI: EmphasizeAPI? + /// Manages emphasized text ranges in the text view + public var emphasisManager: EmphasisManager? // MARK: - Private Properties @@ -299,7 +299,7 @@ public class TextView: NSView, NSTextContent { super.init(frame: .zero) - self.emphasizeAPI = EmphasizeAPI(textView: self) + self.emphasisManager = EmphasisManager(textView: self) self.storageDelegate = MultiStorageDelegate() wantsLayer = true From 02202a8d925dc902f18626e953b3447e320253d1 Mon Sep 17 00:00:00 2001 From: Abe Date: Sun, 6 Apr 2025 14:57:40 -0700 Subject: [PATCH 05/42] Added scroll past end behavior (overscroll) (#77) ### Description Added optional functionality to allow the user to scroll past the end of the document, like in Xcode or VSCode. ### Related Issues Closes #76 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots This is showing an extra 50% of the available screen. It will properly update when resizing the window as well. https://github.com/user-attachments/assets/40ef3f49-1a8b-4cad-a975-9cb9429ce32b --- .../TextSelectionManager/TextSelectionManager.swift | 1 - .../CodeEditTextView/TextView/TextView+Layout.swift | 4 +++- Sources/CodeEditTextView/TextView/TextView.swift | 10 ++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift index dde0a2c98..ae25b55bb 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift @@ -219,7 +219,6 @@ public class TextSelectionManager: NSObject { .getLine(atOffset: range.location - (selectedLine.range.location))? .height ?? layoutManager?.estimateLineHeight() - } /// Removes all cursor views and stops the cursor blink timer. diff --git a/Sources/CodeEditTextView/TextView/TextView+Layout.swift b/Sources/CodeEditTextView/TextView/TextView+Layout.swift index 6f9a0067b..a2579c855 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Layout.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Layout.swift @@ -65,7 +65,9 @@ extension TextView { public func updateFrameIfNeeded() -> Bool { var availableSize = scrollView?.contentSize ?? .zero availableSize.height -= (scrollView?.contentInsets.top ?? 0) + (scrollView?.contentInsets.bottom ?? 0) - let newHeight = max(layoutManager.estimatedHeight(), availableSize.height) + + let extraHeight = availableSize.height * overscrollAmount + let newHeight = max(layoutManager.estimatedHeight() + extraHeight, availableSize.height) let newWidth = layoutManager.estimatedWidth() var didUpdate = false diff --git a/Sources/CodeEditTextView/TextView/TextView.swift b/Sources/CodeEditTextView/TextView/TextView.swift index f499457ba..abeb112ff 100644 --- a/Sources/CodeEditTextView/TextView/TextView.swift +++ b/Sources/CodeEditTextView/TextView/TextView.swift @@ -107,6 +107,16 @@ public class TextView: NSView, NSTextContent { } } + /// The amount of extra space to add when overscroll is enabled, as a percentage of the viewport height + public var overscrollAmount: CGFloat = 0.5 { + didSet { + if overscrollAmount < 0 { + overscrollAmount = 0 + } + updateFrameIfNeeded() + } + } + /// Whether or not the editor should wrap lines public var wrapLines: Bool { get { From 47faec9fb571c9c695897e69f0a4f08512ae682e Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Mon, 7 Apr 2025 13:19:40 -0500 Subject: [PATCH 06/42] Fix EmphasisAPI Leaking Layers, Emphasis Drawing (#79) ### Description - Fixes an emphasis manager bug where it could leak layers without removing their `CALayer`s when replacing flash emphases with other emphases. - Updates the emphasis drawing code to correctly draw underlines. - Updates the `roundedPathForRange` to correctly handle emphases that span multiple line fragments. While fixing the last point, I discovered that the emphasis manager doesn't correctly draw the text on emphases that span multiple line fragments. This makes sense, as right now it's just using a CATextLayer that has no knowledge of line breaks. In the future, that text layer should be replaced by a custom layer that draws the text using knowledge of existing line fragments positions. However, I think the issues this PR fixes are too important to wait until that can be done. Also note that that change will be critical to drag and drop, so it will absolutely be done and I have a branch somewhere with some of that work already completed. ### Related Issues * https://github.com/CodeEditApp/CodeEditSourceEditor/pull/295 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots Screen recording showing the text layer bug mentioned above, as well as the fixed multi-fragment drawing, and the fixed leak. Prior to this, when switching from flash to any other emphasis type, there was a good chance one of the new emphases would be kept. This was due to the emphasis manager assuming that the emphasis being flashed was kept around after the animation delay. This has been fixed in this PR. https://github.com/user-attachments/assets/a29048e4-ab81-4376-abe0-e0499e448ea8 --- .../EmphasisManager/Emphasis.swift | 2 +- .../EmphasisManager/EmphasisManager.swift | 126 +++++++++------ .../EmphasisManager/EmphasisStyle.swift | 11 ++ .../TextLayoutManager+Public.swift | 147 ++++++++---------- .../TextLayoutManager/TextLayoutManager.swift | 3 +- .../TextLayoutManger+ensureLayout.swift | 33 ++++ .../TextLine/LineFragment.swift | 14 ++ .../EmphasisManagerTests.swift | 36 +++++ 8 files changed, 240 insertions(+), 132 deletions(-) create mode 100644 Sources/CodeEditTextView/TextLayoutManager/TextLayoutManger+ensureLayout.swift create mode 100644 Tests/CodeEditTextViewTests/EmphasisManagerTests.swift diff --git a/Sources/CodeEditTextView/EmphasisManager/Emphasis.swift b/Sources/CodeEditTextView/EmphasisManager/Emphasis.swift index aac05d528..0e7f44904 100644 --- a/Sources/CodeEditTextView/EmphasisManager/Emphasis.swift +++ b/Sources/CodeEditTextView/EmphasisManager/Emphasis.swift @@ -8,7 +8,7 @@ import AppKit /// Represents a single emphasis with its properties -public struct Emphasis { +public struct Emphasis: Equatable { /// The range the emphasis applies it's style to, relative to the entire text document. public let range: NSRange diff --git a/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift b/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift index 091829348..833996be6 100644 --- a/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift +++ b/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift @@ -20,10 +20,17 @@ import AppKit /// each outside object without knowledge of the other's state. public final class EmphasisManager { /// Internal representation of a emphasis layer with its associated text layer - private struct EmphasisLayer { + private struct EmphasisLayer: Equatable { let emphasis: Emphasis let layer: CAShapeLayer let textLayer: CATextLayer? + + func removeLayers() { + layer.removeAllAnimations() + layer.removeFromSuperlayer() + textLayer?.removeAllAnimations() + textLayer?.removeFromSuperlayer() + } } private var emphasisGroups: [String: [EmphasisLayer]] = [:] @@ -37,6 +44,8 @@ public final class EmphasisManager { self.textView = textView } + // MARK: - Add, Update, Remove + /// Adds a single emphasis to the specified group. /// - Parameters: /// - emphasis: The emphasis to add @@ -56,24 +65,27 @@ public final class EmphasisManager { } let layers = emphases.map { createEmphasisLayer(for: $0) } - emphasisGroups[id] = layers - + emphasisGroups[id, default: []].append(contentsOf: layers) // Handle selections handleSelections(for: emphases) // Handle flash animations - for (index, emphasis) in emphases.enumerated() where emphasis.flash { - let layer = layers[index] + for flashingLayer in emphasisGroups[id, default: []].filter({ $0.emphasis.flash }) { DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in guard let self = self else { return } - self.applyFadeOutAnimation(to: layer.layer, textLayer: layer.textLayer) - // Remove the emphasis from the group - if var emphases = self.emphasisGroups[id] { - emphases.remove(at: index) - if emphases.isEmpty { + self.applyFadeOutAnimation(to: flashingLayer.layer, textLayer: flashingLayer.textLayer) { + // Remove the emphasis from the group if it still exists + guard let emphasisIdx = self.emphasisGroups[id, default: []].firstIndex( + where: { $0 == flashingLayer } + ) else { + return + } + + self.emphasisGroups[id, default: []][emphasisIdx].removeLayers() + self.emphasisGroups[id, default: []].remove(at: emphasisIdx) + + if self.emphasisGroups[id, default: []].isEmpty { self.emphasisGroups.removeValue(forKey: id) - } else { - self.emphasisGroups[id] = emphases } } } @@ -94,8 +106,7 @@ public final class EmphasisManager { /// - id: The group identifier /// - transform: The transformation to apply to the existing emphases public func updateEmphases(for id: String, _ transform: ([Emphasis]) -> [Emphasis]) { - guard let existingLayers = emphasisGroups[id] else { return } - let existingEmphases = existingLayers.map { $0.emphasis } + let existingEmphases = emphasisGroups[id, default: []].map { $0.emphasis } let newEmphases = transform(existingEmphases) replaceEmphases(newEmphases, for: id) } @@ -103,13 +114,12 @@ public final class EmphasisManager { /// Removes all emphases for the given group. /// - Parameter id: The group identifier public func removeEmphases(for id: String) { - emphasisGroups[id]?.forEach { layer in - layer.layer.removeAllAnimations() - layer.layer.removeFromSuperlayer() - layer.textLayer?.removeAllAnimations() - layer.textLayer?.removeFromSuperlayer() + emphasisGroups[id]?.forEach { emphasis in + emphasis.removeLayers() } emphasisGroups[id] = nil + + textView?.layer?.layoutIfNeeded() } /// Removes all emphases for all groups. @@ -117,7 +127,7 @@ public final class EmphasisManager { emphasisGroups.keys.forEach { removeEmphases(for: $0) } emphasisGroups.removeAll() - // Restore original selection emphasising + // Restore original selection emphasizing if let originalColor = originalSelectionColor { textView?.selectionManager.selectionBackgroundColor = originalColor } @@ -128,38 +138,44 @@ public final class EmphasisManager { /// - Parameter id: The group identifier /// - Returns: Array of emphases in the group public func getEmphases(for id: String) -> [Emphasis] { - emphasisGroups[id]?.map { $0.emphasis } ?? [] + emphasisGroups[id, default: []].map(\.emphasis) } + // MARK: - Drawing Layers + /// Updates the positions and bounds of all emphasis layers to match the current text layout. public func updateLayerBackgrounds() { - for layer in emphasisGroups.flatMap(\.value) { - if let shapePath = textView?.layoutManager?.roundedPathForRange(layer.emphasis.range) { - if #available(macOS 14.0, *) { - layer.layer.path = shapePath.cgPath - } else { - layer.layer.path = shapePath.cgPathFallback - } + for emphasis in emphasisGroups.flatMap(\.value) { + guard let shapePath = makeShapePath( + forStyle: emphasis.emphasis.style, + range: emphasis.emphasis.range + ) else { + continue + } + if #available(macOS 14.0, *) { + emphasis.layer.path = shapePath.cgPath + } else { + emphasis.layer.path = shapePath.cgPathFallback + } - // Update bounds and position - if let cgPath = layer.layer.path { - let boundingBox = cgPath.boundingBox - layer.layer.bounds = boundingBox - layer.layer.position = CGPoint(x: boundingBox.midX, y: boundingBox.midY) - } + // Update bounds and position + if let cgPath = emphasis.layer.path { + let boundingBox = cgPath.boundingBox + emphasis.layer.bounds = boundingBox + emphasis.layer.position = CGPoint(x: boundingBox.midX, y: boundingBox.midY) + } - // Update text layer if it exists - if let textLayer = layer.textLayer { - var bounds = shapePath.bounds - bounds.origin.y += 1 // Move down by 1 pixel - textLayer.frame = bounds - } + // Update text layer if it exists + if let textLayer = emphasis.textLayer { + var bounds = shapePath.bounds + bounds.origin.y += 1 // Move down by 1 pixel + textLayer.frame = bounds } } } private func createEmphasisLayer(for emphasis: Emphasis) -> EmphasisLayer { - guard let shapePath = textView?.layoutManager?.roundedPathForRange(emphasis.range) else { + guard let shapePath = makeShapePath(forStyle: emphasis.style, range: emphasis.range) else { return EmphasisLayer(emphasis: emphasis, layer: CAShapeLayer(), textLayer: nil) } @@ -178,6 +194,25 @@ public final class EmphasisManager { return EmphasisLayer(emphasis: emphasis, layer: layer, textLayer: textLayer) } + private func makeShapePath(forStyle emphasisStyle: EmphasisStyle, range: NSRange) -> NSBezierPath? { + switch emphasisStyle { + case .standard, .outline: + return textView?.layoutManager.roundedPathForRange(range, cornerRadius: emphasisStyle.shapeRadius) + case .underline: + guard let layoutManager = textView?.layoutManager else { + return nil + } + let lineHeight = layoutManager.estimateLineHeight() + let lineBottomPadding = (lineHeight - (lineHeight / layoutManager.lineHeightMultiplier)) / 4 + let path = NSBezierPath() + for rect in layoutManager.rectsFor(range: range) { + path.move(to: NSPoint(x: rect.minX, y: rect.maxY - lineBottomPadding)) + path.line(to: NSPoint(x: rect.maxX, y: rect.maxY - lineBottomPadding)) + } + return path + } + } + private func createShapeLayer(shapePath: NSBezierPath, emphasis: Emphasis) -> CAShapeLayer { let layer = CAShapeLayer() @@ -274,6 +309,8 @@ public final class EmphasisManager { return .black } + // MARK: - Animations + private func applyPopAnimation(to layer: CALayer) { let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale") scaleAnimation.values = [1.0, 1.25, 1.0] @@ -284,7 +321,7 @@ public final class EmphasisManager { layer.add(scaleAnimation, forKey: "popAnimation") } - private func applyFadeOutAnimation(to layer: CALayer, textLayer: CATextLayer?) { + private func applyFadeOutAnimation(to layer: CALayer, textLayer: CATextLayer?, completion: @escaping () -> Void) { let fadeAnimation = CABasicAnimation(keyPath: "opacity") fadeAnimation.fromValue = 1.0 fadeAnimation.toValue = 0.0 @@ -301,9 +338,10 @@ public final class EmphasisManager { } // Remove both layers after animation completes - DispatchQueue.main.asyncAfter(deadline: .now() + fadeAnimation.duration) { [weak layer, weak textLayer] in - layer?.removeFromSuperlayer() + DispatchQueue.main.asyncAfter(deadline: .now() + fadeAnimation.duration) { + layer.removeFromSuperlayer() textLayer?.removeFromSuperlayer() + completion() } } diff --git a/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift b/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift index 443ffb794..53fe1f29c 100644 --- a/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift +++ b/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift @@ -28,4 +28,15 @@ public enum EmphasisStyle: Equatable { return false } } + + var shapeRadius: CGFloat { + switch self { + case .standard: + 4 + case .underline: + 0 + case .outline: + 2.5 + } + } } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift index 4a849742e..90cf4eff3 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift @@ -153,12 +153,56 @@ extension TextLayoutManager { ) } - // swiftlint:disable function_body_length + /// Calculates all text bounding rects that intersect with a given range. + /// - Parameters: + /// - range: The range to calculate bounding rects for. + /// - line: The line to calculate rects for. + /// - Returns: Multiple bounding rects. Will return one rect for each line fragment that overlaps the given range. + public func rectsFor(range: NSRange) -> [CGRect] { + lineStorage.linesInRange(range).flatMap { self.rectsFor(range: range, in: $0) } + } + + /// Calculates all text bounding rects that intersect with a given range, with a given line position. + /// - Parameters: + /// - range: The range to calculate bounding rects for. + /// - line: The line to calculate rects for. + /// - Returns: Multiple bounding rects. Will return one rect for each line fragment that overlaps the given range. + private func rectsFor(range: NSRange, in line: borrowing TextLineStorage.TextLinePosition) -> [CGRect] { + guard let textStorage = (textStorage?.string as? NSString) else { return [] } + + // Don't make rects in between characters + let realRangeStart = textStorage.rangeOfComposedCharacterSequence(at: range.lowerBound) + let realRangeEnd = textStorage.rangeOfComposedCharacterSequence(at: range.upperBound - 1) + + // Fragments are relative to the line + let relativeRange = NSRange( + start: realRangeStart.lowerBound - line.range.location, + end: realRangeEnd.upperBound - line.range.location + ) + + var rects: [CGRect] = [] + for fragmentPosition in line.data.lineFragments.linesInRange(relativeRange) { + guard let intersectingRange = fragmentPosition.range.intersection(relativeRange) else { continue } + let fragmentRect = fragmentPosition.data.rectFor(range: intersectingRange) + rects.append( + CGRect( + x: fragmentRect.minX + edgeInsets.left, + y: fragmentPosition.yPos + line.yPos, + width: fragmentRect.width, + height: fragmentRect.height + ) + ) + } + return rects + } + /// Creates a smooth bezier path for the specified range. /// If the range exceeds the available text, it uses the maximum available range. - /// - Parameter range: The range of text offsets to generate the path for. + /// - Parameters: + /// - range: The range of text offsets to generate the path for. + /// - cornerRadius: The radius of the edges when rounding. Defaults to four. /// - Returns: An `NSBezierPath` representing the visual shape for the text range, or `nil` if the range is invalid. - public func roundedPathForRange(_ range: NSRange) -> NSBezierPath? { + public func roundedPathForRange(_ range: NSRange, cornerRadius: CGFloat = 4) -> NSBezierPath? { // Ensure the range is within the bounds of the text storage let validRange = NSRange( location: range.lowerBound, @@ -170,63 +214,20 @@ extension TextLayoutManager { var rightSidePoints: [CGPoint] = [] // Points for Bottom-right → Top-right var leftSidePoints: [CGPoint] = [] // Points for Bottom-left → Top-left - var currentOffset = validRange.lowerBound - - // Process each line fragment within the range - while currentOffset < validRange.upperBound { - guard let linePosition = lineStorage.getLine(atOffset: currentOffset) else { return nil } - - if linePosition.data.lineFragments.isEmpty { - let newHeight = ensureLayoutFor(position: linePosition) - if linePosition.height != newHeight { - delegate?.layoutManagerHeightDidUpdate(newHeight: lineStorage.height) - } - } - - guard let fragmentPosition = linePosition.data.typesetter.lineFragments.getLine( - atOffset: currentOffset - linePosition.range.location - ) else { break } - - // Calculate the X positions for the range's boundaries within the fragment - let realRangeStart = (textStorage?.string as? NSString)? - .rangeOfComposedCharacterSequence(at: validRange.lowerBound) - ?? NSRange(location: validRange.lowerBound, length: 0) - - let realRangeEnd = (textStorage?.string as? NSString)? - .rangeOfComposedCharacterSequence(at: validRange.upperBound - 1) - ?? NSRange(location: validRange.upperBound - 1, length: 0) - - let minXPos = CTLineGetOffsetForStringIndex( - fragmentPosition.data.ctLine, - realRangeStart.location - linePosition.range.location, - nil - ) + edgeInsets.left - - let maxXPos = CTLineGetOffsetForStringIndex( - fragmentPosition.data.ctLine, - realRangeEnd.upperBound - linePosition.range.location, - nil - ) + edgeInsets.left - - // Ensure the fragment has a valid width - guard maxXPos > minXPos else { break } - - // Add the Y positions for the fragment - let topY = linePosition.yPos + fragmentPosition.yPos + fragmentPosition.data.scaledHeight - let bottomY = linePosition.yPos + fragmentPosition.yPos - - // Append points in the correct order - rightSidePoints.append(contentsOf: [ - CGPoint(x: maxXPos, y: bottomY), // Bottom-right - CGPoint(x: maxXPos, y: topY) // Top-right - ]) - leftSidePoints.insert(contentsOf: [ - CGPoint(x: minXPos, y: topY), // Top-left - CGPoint(x: minXPos, y: bottomY) // Bottom-left - ], at: 0) - - // Move to the next fragment - currentOffset = min(validRange.upperBound, linePosition.range.upperBound) + for fragmentRect in rectsFor(range: range) { + rightSidePoints.append( + contentsOf: [ + CGPoint(x: fragmentRect.maxX, y: fragmentRect.minY), // Bottom-right + CGPoint(x: fragmentRect.maxX, y: fragmentRect.maxY) // Top-right + ] + ) + leftSidePoints.insert( + contentsOf: [ + CGPoint(x: fragmentRect.minX, y: fragmentRect.maxY), // Top-left + CGPoint(x: fragmentRect.minX, y: fragmentRect.minY) // Bottom-left + ], + at: 0 + ) } // Combine the points in clockwise order @@ -234,12 +235,11 @@ extension TextLayoutManager { // Close the path if let firstPoint = points.first { - return NSBezierPath.smoothPath(points + [firstPoint], radius: 4) + return NSBezierPath.smoothPath(points + [firstPoint], radius: cornerRadius) } return nil } - // swiftlint:enable function_body_length /// Finds a suitable cursor rect for the end position. /// - Returns: A CGRect if it could be created. @@ -292,27 +292,4 @@ extension TextLayoutManager { delegate?.layoutManagerHeightDidUpdate(newHeight: lineStorage.height) } } - - /// Forces layout calculation for all lines up to and including the given offset. - /// - Parameter offset: The offset to ensure layout until. - private func ensureLayoutFor(position: TextLineStorage.TextLinePosition) -> CGFloat { - guard let textStorage else { return 0 } - let displayData = TextLine.DisplayData( - maxWidth: maxLineLayoutWidth, - lineHeightMultiplier: lineHeightMultiplier, - estimatedLineHeight: estimateLineHeight() - ) - position.data.prepareForDisplay( - displayData: displayData, - range: position.range, - stringRef: textStorage, - markedRanges: markedTextManager.markedRanges(in: position.range), - breakStrategy: lineBreakStrategy - ) - var height: CGFloat = 0 - for fragmentPosition in position.data.lineFragments { - height += fragmentPosition.data.scaledHeight - } - return height - } } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift index 1173b81dc..2afe9a93f 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift @@ -212,8 +212,7 @@ public class TextLayoutManager: NSObject { /// Lays out all visible lines func layoutLines(in rect: NSRect? = nil) { // swiftlint:disable:this function_body_length assertNotInLayout() - guard layoutView?.superview != nil, - let visibleRect = rect ?? delegate?.visibleRect, + guard let visibleRect = rect ?? delegate?.visibleRect, !isInTransaction, let textStorage else { return diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManger+ensureLayout.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManger+ensureLayout.swift new file mode 100644 index 000000000..813c29e62 --- /dev/null +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManger+ensureLayout.swift @@ -0,0 +1,33 @@ +// +// TextLayoutManger+ensureLayout.swift +// CodeEditTextView +// +// Created by Khan Winter on 4/7/25. +// + +import Foundation + +extension TextLayoutManager { + /// Forces layout calculation for all lines up to and including the given offset. + /// - Parameter offset: The offset to ensure layout until. + package func ensureLayoutFor(position: TextLineStorage.TextLinePosition) -> CGFloat { + guard let textStorage else { return 0 } + let displayData = TextLine.DisplayData( + maxWidth: maxLineLayoutWidth, + lineHeightMultiplier: lineHeightMultiplier, + estimatedLineHeight: estimateLineHeight() + ) + position.data.prepareForDisplay( + displayData: displayData, + range: position.range, + stringRef: textStorage, + markedRanges: markedTextManager.markedRanges(in: position.range), + breakStrategy: lineBreakStrategy + ) + var height: CGFloat = 0 + for fragmentPosition in position.data.lineFragments { + height += fragmentPosition.data.scaledHeight + } + return height + } +} diff --git a/Sources/CodeEditTextView/TextLine/LineFragment.swift b/Sources/CodeEditTextView/TextLine/LineFragment.swift index ebe6db74b..3a62e2b9d 100644 --- a/Sources/CodeEditTextView/TextLine/LineFragment.swift +++ b/Sources/CodeEditTextView/TextLine/LineFragment.swift @@ -39,4 +39,18 @@ public final class LineFragment: Identifiable, Equatable { public static func == (lhs: LineFragment, rhs: LineFragment) -> Bool { lhs.id == rhs.id } + + /// Calculates the drawing rect for a given range. + /// - Parameter range: The range to calculate the bounds for, relative to the line. + /// - Returns: A rect that contains the text contents in the given range. + func rectFor(range: NSRange) -> CGRect { + let minXPos = CTLineGetOffsetForStringIndex(ctLine, range.lowerBound, nil) + let maxXPos = CTLineGetOffsetForStringIndex(ctLine, range.upperBound, nil) + return CGRect( + x: minXPos, + y: 0, + width: maxXPos - minXPos, + height: scaledHeight + ) + } } diff --git a/Tests/CodeEditTextViewTests/EmphasisManagerTests.swift b/Tests/CodeEditTextViewTests/EmphasisManagerTests.swift new file mode 100644 index 000000000..a921f1051 --- /dev/null +++ b/Tests/CodeEditTextViewTests/EmphasisManagerTests.swift @@ -0,0 +1,36 @@ +import Testing +import Foundation +@testable import CodeEditTextView + +@Suite() +struct EmphasisManagerTests { + @Test() @MainActor + func testFlashEmphasisLayersNotLeaked() { + // Ensure layers are not leaked when switching from flash emphasis to any other emphasis type. + let textView = TextView(string: "Lorem Ipsum") + textView.frame = NSRect(x: 0, y: 0, width: 1000, height: 100) + textView.layoutManager.layoutLines(in: CGRect(origin: .zero, size: CGSize(width: 1000, height: 100))) + textView.emphasisManager?.addEmphasis( + Emphasis(range: NSRange(location: 0, length: 5), style: .standard, flash: true), + for: "e" + ) + + // Text layer and emphasis layer + #expect(textView.layer?.sublayers?.count == 2) + #expect(textView.emphasisManager?.getEmphases(for: "e").count == 1) + + textView.emphasisManager?.addEmphases( + [Emphasis(range: NSRange(location: 0, length: 5), style: .underline(color: .red), flash: true)], + for: "e" + ) + + #expect(textView.layer?.sublayers?.count == 4) + #expect(textView.emphasisManager?.getEmphases(for: "e").count == 2) + + textView.emphasisManager?.removeAllEmphases() + + // No emphasis layers remain + #expect(textView.layer?.sublayers?.count == nil) + #expect(textView.emphasisManager?.getEmphases(for: "e").count == 0) + } +} From 82bc83250c3136a75b7c73657211b510a21a3e2e Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Tue, 8 Apr 2025 09:35:20 -0500 Subject: [PATCH 07/42] Improve Drag and Drop (#80) ### Description Improves the drag and drop capabilities of the editor. In particular: - Adds a new `DraggingTextRenderer` that renders text into itself using knowledge of existing text layout to match text while being dragged. - Overrides drag and drop methods on the text view to correctly support the gesture. - Moves line fragment drawing logic into the `LineFragment` class instead of `LineFragmentView` to enable drawing contents into whatever drawing target is necessary. ### Related Issues * closes #42 ### Checklist ~~TODO:~~ - [x] Drag text without background - [x] Cursor updates to indicate drag destination location. - [x] Modifier flags - [x] Hold option to copy instead of cut - [x] Escape to cancel - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots https://github.com/user-attachments/assets/09070c3d-e512-47d7-a362-a1d73148ff00 --- .../CodeEditTextViewExampleDocument.swift | 2 +- .../TextLayoutManager+Public.swift | 8 + ...t => TextLayoutManager+ensureLayout.swift} | 2 +- .../TextLayoutManager/TextLayoutManager.swift | 2 +- .../TextLine/LineFragment.swift | 38 +++ .../TextLine/LineFragmentView.swift | 29 +-- .../TextSelectionManager.swift | 12 +- .../TextView/DraggingTextRenderer.swift | 109 ++++++++ .../TextView/TextView+Drag.swift | 237 ++++++++++++++++-- .../TextView/TextView+Lifecycle.swift | 33 +++ .../TextView/TextView+Mouse.swift | 33 ++- .../CodeEditTextView/TextView/TextView.swift | 37 +-- 12 files changed, 446 insertions(+), 96 deletions(-) rename Sources/CodeEditTextView/TextLayoutManager/{TextLayoutManger+ensureLayout.swift => TextLayoutManager+ensureLayout.swift} (96%) create mode 100644 Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift create mode 100644 Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Documents/CodeEditTextViewExampleDocument.swift b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Documents/CodeEditTextViewExampleDocument.swift index 790a38fbb..c427db932 100644 --- a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Documents/CodeEditTextViewExampleDocument.swift +++ b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Documents/CodeEditTextViewExampleDocument.swift @@ -25,7 +25,7 @@ struct CodeEditTextViewExampleDocument: FileDocument { guard let data = configuration.file.regularFileContents else { throw CocoaError(.fileReadCorruptFile) } - text = String(bytes: data, encoding: .utf8) + text = String(bytes: data, encoding: .utf8) ?? "" } func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper { diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift index 90cf4eff3..f53e14f85 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift @@ -8,6 +8,8 @@ import AppKit extension TextLayoutManager { + // MARK: - Estimate + public func estimatedHeight() -> CGFloat { max(lineStorage.height, estimateLineHeight()) } @@ -16,6 +18,8 @@ extension TextLayoutManager { maxLineWidth + edgeInsets.horizontal } + // MARK: - Text Lines + /// Finds a text line for the given y position relative to the text view. /// /// Y values begin at the top of the view and extend down. Eg, a `0` y value would return the first line in @@ -101,6 +105,8 @@ extension TextLayoutManager { } } + // MARK: - Rect For Offset + /// Find a position for the character at a given offset. /// Returns the rect of the character at the given offset. /// The rect may represent more than one unicode unit, for instance if the offset is at the beginning of an @@ -263,6 +269,8 @@ extension TextLayoutManager { return nil } + // MARK: - Ensure Layout + /// Forces layout calculation for all lines up to and including the given offset. /// - Parameter offset: The offset to ensure layout until. public func ensureLayoutUntil(_ offset: Int) { diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManger+ensureLayout.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+ensureLayout.swift similarity index 96% rename from Sources/CodeEditTextView/TextLayoutManager/TextLayoutManger+ensureLayout.swift rename to Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+ensureLayout.swift index 813c29e62..e0e5fa07d 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManger+ensureLayout.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+ensureLayout.swift @@ -1,5 +1,5 @@ // -// TextLayoutManger+ensureLayout.swift +// TextLayoutManager+ensureLayout.swift // CodeEditTextView // // Created by Khan Winter on 4/7/25. diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift index 2afe9a93f..3e042225c 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift @@ -70,7 +70,7 @@ public class TextLayoutManager: NSObject { weak var textStorage: NSTextStorage? var lineStorage: TextLineStorage = TextLineStorage() var markedTextManager: MarkedTextManager = MarkedTextManager() - private let viewReuseQueue: ViewReuseQueue = ViewReuseQueue() + let viewReuseQueue: ViewReuseQueue = ViewReuseQueue() package var visibleLineIds: Set = [] /// Used to force a complete re-layout using `setNeedsLayout` package var needsLayout: Bool = false diff --git a/Sources/CodeEditTextView/TextLine/LineFragment.swift b/Sources/CodeEditTextView/TextLine/LineFragment.swift index 3a62e2b9d..f4ace5689 100644 --- a/Sources/CodeEditTextView/TextLine/LineFragment.swift +++ b/Sources/CodeEditTextView/TextLine/LineFragment.swift @@ -6,6 +6,7 @@ // import AppKit +import CodeEditTextViewObjC /// A ``LineFragment`` represents a subrange of characters in a line. Every text line contains at least one line /// fragments, and any lines that need to be broken due to width constraints will contain more than one fragment. @@ -40,6 +41,43 @@ public final class LineFragment: Identifiable, Equatable { lhs.id == rhs.id } + /// Finds the x position of the offset in the string the fragment represents. + /// - Parameter offset: The offset, relative to the start of the *line*. + /// - Returns: The x position of the character in the drawn line, from the left. + public func xPos(for offset: Int) -> CGFloat { + return CTLineGetOffsetForStringIndex(ctLine, offset, nil) + } + + public func draw(in context: CGContext, yPos: CGFloat) { + context.saveGState() + + // Removes jagged edges + context.setAllowsAntialiasing(true) + context.setShouldAntialias(true) + + // Effectively increases the screen resolution by drawing text in each LED color pixel (R, G, or B), rather than + // the triplet of pixels (RGB) for a regular pixel. This can increase text clarity, but loses effectiveness + // in low-contrast settings. + context.setAllowsFontSubpixelPositioning(true) + context.setShouldSubpixelPositionFonts(true) + + // Quantizes the position of each glyph, resulting in slightly less accurate positioning, and gaining higher + // quality bitmaps and performance. + context.setAllowsFontSubpixelQuantization(true) + context.setShouldSubpixelQuantizeFonts(true) + + ContextSetHiddenSmoothingStyle(context, 16) + + context.textMatrix = .init(scaleX: 1, y: -1) + context.textPosition = CGPoint( + x: 0, + y: yPos + height - descent + (heightDifference/2) + ).pixelAligned + + CTLineDraw(ctLine, context) + context.restoreGState() + } + /// Calculates the drawing rect for a given range. /// - Parameter range: The range to calculate the bounds for, relative to the line. /// - Returns: A rect that contains the text contents in the given range. diff --git a/Sources/CodeEditTextView/TextLine/LineFragmentView.swift b/Sources/CodeEditTextView/TextLine/LineFragmentView.swift index ff5625d23..3536fd4e0 100644 --- a/Sources/CodeEditTextView/TextLine/LineFragmentView.swift +++ b/Sources/CodeEditTextView/TextLine/LineFragmentView.swift @@ -6,7 +6,6 @@ // import AppKit -import CodeEditTextViewObjC /// Displays a line fragment. final class LineFragmentView: NSView { @@ -40,32 +39,6 @@ final class LineFragmentView: NSView { guard let lineFragment, let context = NSGraphicsContext.current?.cgContext else { return } - context.saveGState() - - // Removes jagged edges - context.setAllowsAntialiasing(true) - context.setShouldAntialias(true) - - // Effectively increases the screen resolution by drawing text in each LED color pixel (R, G, or B), rather than - // the triplet of pixels (RGB) for a regular pixel. This can increase text clarity, but loses effectiveness - // in low-contrast settings. - context.setAllowsFontSubpixelPositioning(true) - context.setShouldSubpixelPositionFonts(true) - - // Quantizes the position of each glyph, resulting in slightly less accurate positioning, and gaining higher - // quality bitmaps and performance. - context.setAllowsFontSubpixelQuantization(true) - context.setShouldSubpixelQuantizeFonts(true) - - ContextSetHiddenSmoothingStyle(context, 16) - - context.textMatrix = .init(scaleX: 1, y: -1) - context.textPosition = CGPoint( - x: 0, - y: lineFragment.height - lineFragment.descent + (lineFragment.heightDifference/2) - ).pixelAligned - - CTLineDraw(lineFragment.ctLine, context) - context.restoreGState() + lineFragment.draw(in: context, yPos: 0.0) } } diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift index ae25b55bb..453fcac87 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift @@ -139,17 +139,19 @@ public class TextSelectionManager: NSObject { for textSelection in textSelections { if textSelection.range.isEmpty { - let cursorOrigin = (layoutManager?.rectForOffset(textSelection.range.location) ?? .zero).origin + guard let cursorRect = layoutManager?.rectForOffset(textSelection.range.location) else { + continue + } var doesViewNeedReposition: Bool // If using the system cursor, macOS will change the origin and height by about 0.5, so we do an // approximate equals in that case to avoid extra updates. if useSystemCursor, #available(macOS 14.0, *) { - doesViewNeedReposition = !textSelection.boundingRect.origin.approxEqual(cursorOrigin) + doesViewNeedReposition = !textSelection.boundingRect.origin.approxEqual(cursorRect.origin) || !textSelection.boundingRect.height.approxEqual(layoutManager?.estimateLineHeight() ?? 0) } else { - doesViewNeedReposition = textSelection.boundingRect.origin != cursorOrigin + doesViewNeedReposition = textSelection.boundingRect.origin != cursorRect.origin || textSelection.boundingRect.height != layoutManager?.estimateLineHeight() ?? 0 } @@ -175,8 +177,8 @@ public class TextSelectionManager: NSObject { textView?.addSubview(cursorView) } - cursorView.frame.origin = cursorOrigin - cursorView.frame.size.height = heightForCursorAt(textSelection.range) ?? 0 + cursorView.frame.origin = cursorRect.origin + cursorView.frame.size.height = cursorRect.height textSelection.view = cursorView textSelection.boundingRect = cursorView.frame diff --git a/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift b/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift new file mode 100644 index 000000000..03fc773e4 --- /dev/null +++ b/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift @@ -0,0 +1,109 @@ +// +// DraggingTextRenderer.swift +// CodeEditTextView +// +// Created by Khan Winter on 11/24/24. +// + +import AppKit + +class DraggingTextRenderer: NSView { + let ranges: [NSRange] + let layoutManager: TextLayoutManager + + override var isFlipped: Bool { + true + } + + override var intrinsicContentSize: NSSize { + self.frame.size + } + + init?(ranges: [NSRange], layoutManager: TextLayoutManager) { + self.ranges = ranges + self.layoutManager = layoutManager + + assert(!ranges.isEmpty, "Empty ranges not allowed") + + var minY: CGFloat = .infinity + var maxY: CGFloat = 0.0 + + for range in ranges { + for line in layoutManager.lineStorage.linesInRange(range) { + minY = min(minY, line.yPos) + maxY = max(maxY, line.yPos + line.height) + } + } + + let frame = CGRect( + x: layoutManager.edgeInsets.left, + y: minY, + width: layoutManager.maxLineWidth, + height: maxY - minY + ) + + super.init(frame: frame) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func draw(_ dirtyRect: NSRect) { + super.draw(dirtyRect) + guard let context = NSGraphicsContext.current?.cgContext, + let firstRange = ranges.first, + let minRect = layoutManager.rectForOffset(firstRange.lowerBound) else { + return + } + + for range in ranges { + for line in layoutManager.lineStorage.linesInRange(range) { + drawLine(line, in: range, yOffset: minRect.minY, context: context) + } + } + } + + private func drawLine( + _ line: TextLineStorage.TextLinePosition, + in selectedRange: NSRange, + yOffset: CGFloat, + context: CGContext + ) { + for fragment in line.data.lineFragments { + guard let fragmentRange = fragment.range.shifted(by: line.range.location), + fragmentRange.intersection(selectedRange) != nil else { + continue + } + let fragmentYPos = line.yPos + fragment.yPos - yOffset + fragment.data.draw(in: context, yPos: fragmentYPos) + + // Clear text that's not selected + if fragmentRange.contains(selectedRange.lowerBound) { + let relativeOffset = selectedRange.lowerBound - line.range.lowerBound + let selectionXPos = fragment.data.xPos(for: relativeOffset) + context.clear( + CGRect( + x: 0.0, + y: fragmentYPos, + width: selectionXPos, + height: fragment.height + ).pixelAligned + ) + } + + if fragmentRange.contains(selectedRange.upperBound) { + let relativeOffset = selectedRange.upperBound - line.range.lowerBound + let selectionXPos = fragment.data.xPos(for: relativeOffset) + context.clear( + CGRect( + x: selectionXPos, + y: fragmentYPos, + width: frame.width - selectionXPos, + height: fragment.height + ).pixelAligned + ) + } + } + } +} diff --git a/Sources/CodeEditTextView/TextView/TextView+Drag.swift b/Sources/CodeEditTextView/TextView/TextView+Drag.swift index f4ac08e84..186d25dbd 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Drag.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Drag.swift @@ -5,10 +5,16 @@ // Created by Khan Winter on 10/20/23. // +import Foundation import AppKit +private let pasteboardObjects = [NSString.self, NSURL.self] + extension TextView: NSDraggingSource { - class DragSelectionGesture: NSPressGestureRecognizer { + // MARK: - Drag Gesture + + /// Custom press gesture recognizer that fails if it does not click into a selected range. + private class DragSelectionGesture: NSPressGestureRecognizer { override func mouseDown(with event: NSEvent) { guard isEnabled, let view = self.view as? TextView, event.type == .leftMouseDown else { return @@ -26,6 +32,8 @@ extension TextView: NSDraggingSource { } } + /// Adds a gesture for recognizing selection dragging gestures to the text view. + /// See ``TextView/DragSelectionGesture`` for details. func setUpDragGesture() { let dragGesture = DragSelectionGesture(target: self, action: #selector(dragGestureHandler(_:))) dragGesture.minimumPressDuration = NSEvent.doubleClickInterval / 3 @@ -33,47 +41,228 @@ extension TextView: NSDraggingSource { addGestureRecognizer(dragGesture) } - @objc private func dragGestureHandler(_ sender: Any) { - let selectionRects = selectionManager.textSelections.filter({ !$0.range.isEmpty }).flatMap { - selectionManager.getFillRects(in: frame, for: $0) - } - // TODO: This SUcks - let minX = selectionRects.min(by: { $0.minX < $1.minX })?.minX ?? 0.0 - let minY = selectionRects.min(by: { $0.minY < $1.minY })?.minY ?? 0.0 - let maxX = selectionRects.max(by: { $0.maxX < $1.maxX })?.maxX ?? 0.0 - let maxY = selectionRects.max(by: { $0.maxY < $1.maxY })?.maxY ?? 0.0 - let imageBounds = CGRect( - x: minX, - y: minY, - width: maxX - minX, - height: maxY - minY - ) + /// Handles state change on the drag and drop gesture recognizer. + /// + /// This will ignore any gesture state besides `.began`, and will end by setting the state to `.ended`. The gesture + /// is only meant to handle *recognizing* the drag, but the system drag interaction handles the rest. + /// + /// This will create a ``DraggingTextRenderer`` with the contents of the visible text selection. That is converted + /// into an image and given to a new dragging session on the text view + /// + /// The rest of the drag interaction is handled by ``performDragOperation(_:)``, ``draggingUpdated(_:)``, + /// ``draggingSession(_:willBeginAt:)`` and family. + /// + /// - Parameter sender: The gesture that's sending the state change. + @objc private func dragGestureHandler(_ sender: DragSelectionGesture) { + guard sender.state == .began else { return } + defer { + sender.state = .ended + } - guard let bitmap = bitmapImageRepForCachingDisplay(in: imageBounds) else { + guard let visibleTextRange, + let draggingView = DraggingTextRenderer( + ranges: selectionManager.textSelections + .sorted(using: KeyPathComparator(\.range.location)) + .compactMap { $0.range.intersection(visibleTextRange) }, + layoutManager: layoutManager + ) else { return } - selectionRects.forEach { selectionRect in - self.cacheDisplay(in: selectionRect, to: bitmap) + guard let bitmap = bitmapImageRepForCachingDisplay(in: draggingView.frame) else { + return + } + + draggingView.cacheDisplay(in: draggingView.bounds, to: bitmap) + + guard let cgImage = bitmap.cgImage else { + return } - let draggingImage = NSImage(cgImage: bitmap.cgImage!, size: imageBounds.size) + let draggingImage = NSImage(cgImage: cgImage, size: draggingView.intrinsicContentSize) - let attributedString = selectionManager + let attributedStrings = selectionManager .textSelections .sorted(by: { $0.range.location < $1.range.location }) .map { textStorage.attributedSubstring(from: $0.range) } - .reduce(NSMutableAttributedString(), { $0.append($1); return $0 }) + let attributedString = NSMutableAttributedString() + for (idx, string) in attributedStrings.enumerated() { + attributedString.append(string) + if idx < attributedStrings.count - 1 { + attributedString.append(NSAttributedString(string: layoutManager.detectedLineEnding.rawValue)) + } + } + let draggingItem = NSDraggingItem(pasteboardWriter: attributedString) - draggingItem.setDraggingFrame(imageBounds, contents: draggingImage) + draggingItem.setDraggingFrame(draggingView.frame, contents: draggingImage) + + guard let currentEvent = NSApp.currentEvent else { + return + } - beginDraggingSession(with: [draggingItem], event: NSApp.currentEvent!, source: self) + beginDraggingSession(with: [draggingItem], event: currentEvent, source: self) } + // MARK: - NSDraggingSource + public func draggingSession( _ session: NSDraggingSession, sourceOperationMaskFor context: NSDraggingContext ) -> NSDragOperation { context == .outsideApplication ? .copy : .move } + + public func draggingSession(_ session: NSDraggingSession, willBeginAt screenPoint: NSPoint) { + if let draggingCursorView { + draggingCursorView.removeFromSuperview() + self.draggingCursorView = nil + } + isDragging = true + setUpMouseAutoscrollTimer() + } + + /// Updates the text view about a dragging session. The text view will update the ``TextView/draggingCursorView`` + /// cursor to match the drop destination depending on where the drag is on the text view. + /// + /// The text view will not place a dragging cursor view when the dragging destination is in an existing + /// text selection. + /// - Parameters: + /// - session: The dragging session that was updated. + /// - screenPoint: The position on the screen where the drag exists. + public func draggingSession(_ session: NSDraggingSession, movedTo screenPoint: NSPoint) { + guard let windowCoordinates = self.window?.convertPoint(fromScreen: screenPoint) else { + return + } + + let viewPoint = self.convert(windowCoordinates, from: nil) // Converts from window + let cursor: NSView + + if let draggingCursorView { + cursor = draggingCursorView + } else if useSystemCursor, #available(macOS 15, *) { + let systemCursor = NSTextInsertionIndicator() + cursor = systemCursor + systemCursor.displayMode = .visible + addSubview(cursor) + } else { + cursor = CursorView(color: selectionManager.insertionPointColor) + addSubview(cursor) + } + + self.draggingCursorView = cursor + + guard let documentOffset = layoutManager.textOffsetAtPoint(viewPoint), + let cursorPosition = layoutManager.rectForOffset(documentOffset) else { + return + } + + // Don't show a cursor in selected areas + guard !selectionManager.textSelections.contains(where: { $0.range.contains(documentOffset) }) else { + draggingCursorView?.removeFromSuperview() + draggingCursorView = nil + return + } + + cursor.frame.origin = cursorPosition.origin + cursor.frame.size.height = cursorPosition.height + } + + public func draggingSession( + _ session: NSDraggingSession, + endedAt screenPoint: NSPoint, + operation: NSDragOperation + ) { + if let draggingCursorView { + draggingCursorView.removeFromSuperview() + self.draggingCursorView = nil + } + isDragging = false + disableMouseAutoscrollTimer() + } + + override public func draggingEntered(_ sender: any NSDraggingInfo) -> NSDragOperation { + determineDragOperation(sender) + } + + override public func draggingUpdated(_ sender: any NSDraggingInfo) -> NSDragOperation { + determineDragOperation(sender) + } + + private func determineDragOperation(_ dragInfo: any NSDraggingInfo) -> NSDragOperation { + let canReadObjects = dragInfo.draggingPasteboard.canReadObject(forClasses: pasteboardObjects) + + guard canReadObjects else { + return NSDragOperation() + } + + if let currentEvent = NSApplication.shared.currentEvent, currentEvent.modifierFlags.contains(.option) { + return .copy + } + + return .move + } + + // MARK: - Perform Drag + + /// Performs the final drop operation. + /// + /// This method accepts a number of items from the dragging info's pasteboard, and cuts them into the + /// destination determined by the ``TextView/draggingCursorView``. + /// + /// If the app's current event has the `option` key pressed, this will only paste the text from the pasteboard, + /// and not remove the original dragged text. + /// + /// - Parameter sender: The dragging info to use. + /// - Returns: `true`, if the drag was accepted. + override public func performDragOperation(_ sender: any NSDraggingInfo) -> Bool { + guard let objects = sender.draggingPasteboard.readObjects(forClasses: pasteboardObjects)? + .compactMap({ anyObject in + if let object = anyObject as? NSString { + return String(object) + } else if let object = anyObject as? NSURL, let string = object.absoluteString { + return String(string) + } + return nil + }), + objects.count > 0 else { + return false + } + let insertionString = objects.joined(separator: layoutManager.detectedLineEnding.rawValue) + + // Grab the insertion location + guard let draggingCursorView, + var insertionOffset = layoutManager.textOffsetAtPoint(draggingCursorView.frame.origin) else { + // There was no active drag + return false + } + + let shouldCutSourceText = !(NSApplication.shared.currentEvent?.modifierFlags.contains(.option) ?? false) + + undoManager?.beginUndoGrouping() + + if shouldCutSourceText, let source = sender.draggingSource as? TextView, source === self { + // Offset the insertion location so that we can remove the text first before pasting it into the editor. + var updatedInsertionOffset = insertionOffset + for selection in source.selectionManager.textSelections.reversed() + where selection.range.location < insertionOffset { + if selection.range.upperBound > insertionOffset { + updatedInsertionOffset -= insertionOffset - selection.range.location + } else { + updatedInsertionOffset -= selection.range.length + } + } + insertionOffset = updatedInsertionOffset + insertText("") // Replace the selected ranges with nothing + } + + undoManager?.endUndoGrouping() + + replaceCharacters(in: [NSRange(location: insertionOffset, length: 0)], with: insertionString) + + selectionManager.setSelectedRange( + NSRange(location: insertionOffset, length: NSString(string: insertionString).length) + ) + + return true + } } diff --git a/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift b/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift new file mode 100644 index 000000000..af07527fe --- /dev/null +++ b/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift @@ -0,0 +1,33 @@ +// +// TextView+Lifecycle.swift +// CodeEditTextView +// +// Created by Khan Winter on 4/7/25. +// + +import AppKit + +extension TextView { + override public func layout() { + layoutManager.layoutLines() + super.layout() + } + + override public func viewWillMove(toWindow newWindow: NSWindow?) { + super.viewWillMove(toWindow: newWindow) + layoutManager.layoutLines() + } + + override public func viewWillMove(toSuperview newSuperview: NSView?) { + guard let scrollView = enclosingScrollView else { + return + } + + setUpScrollListeners(scrollView: scrollView) + } + + override public func viewDidEndLiveResize() { + super.viewDidEndLiveResize() + updateFrameIfNeeded() + } +} diff --git a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift b/Sources/CodeEditTextView/TextView/TextView+Mouse.swift index dc752e7c7..db1a96d1b 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Mouse.swift @@ -28,14 +28,7 @@ extension TextView { break } - mouseDragTimer?.invalidate() - // https://cocoadev.github.io/AutoScrolling/ (fired at ~45Hz) - mouseDragTimer = Timer.scheduledTimer(withTimeInterval: 0.022, repeats: true) { [weak self] _ in - if let event = self?.window?.currentEvent, event.type == .leftMouseDragged { - self?.mouseDragged(with: event) - self?.autoscroll(with: event) - } - } + setUpMouseAutoscrollTimer() } /// Single click, if control-shift we add a cursor @@ -84,13 +77,12 @@ extension TextView { override public func mouseUp(with event: NSEvent) { mouseDragAnchor = nil - mouseDragTimer?.invalidate() - mouseDragTimer = nil + disableMouseAutoscrollTimer() super.mouseUp(with: event) } override public func mouseDragged(with event: NSEvent) { - guard !(inputContext?.handleEvent(event) ?? false) && isSelectable else { + guard !(inputContext?.handleEvent(event) ?? false) && isSelectable && !isDragging else { return } @@ -171,4 +163,23 @@ extension TextView { selectionManager.setSelectedRange(selectedRange) setNeedsDisplay() } + + /// Sets up a timer that fires at a predetermined period to autoscroll the text view. + /// Ensure the timer is disabled using ``disableMouseAutoscrollTimer``. + func setUpMouseAutoscrollTimer() { + mouseDragTimer?.invalidate() + // https://cocoadev.github.io/AutoScrolling/ (fired at ~45Hz) + mouseDragTimer = Timer.scheduledTimer(withTimeInterval: 0.022, repeats: true) { [weak self] _ in + if let event = self?.window?.currentEvent, event.type == .leftMouseDragged { + self?.mouseDragged(with: event) + self?.autoscroll(with: event) + } + } + } + + /// Disables the mouse drag timer started by ``setUpMouseAutoscrollTimer`` + func disableMouseAutoscrollTimer() { + mouseDragTimer?.invalidate() + mouseDragTimer = nil + } } diff --git a/Sources/CodeEditTextView/TextView/TextView.swift b/Sources/CodeEditTextView/TextView/TextView.swift index abeb112ff..85b2e11b0 100644 --- a/Sources/CodeEditTextView/TextView/TextView.swift +++ b/Sources/CodeEditTextView/TextView/TextView.swift @@ -245,8 +245,10 @@ public class TextView: NSView, NSTextContent { /// layout system. Use methods like ``TextView/replaceCharacters(in:with:)-58mt7`` or /// ``TextView/insertText(_:)`` to modify content. package(set) public var textStorage: NSTextStorage! + /// The layout manager for the text view. package(set) public var layoutManager: TextLayoutManager! + /// The selection manager for the text view. package(set) public var selectionManager: TextSelectionManager! @@ -256,15 +258,24 @@ public class TextView: NSView, NSTextContent { // MARK: - Private Properties var isFirstResponder: Bool = false + + /// When dragging to create a selection, these enable us to scroll the view as the user drags outside the view's + /// bounds. var mouseDragAnchor: CGPoint? var mouseDragTimer: Timer? var cursorSelectionMode: CursorSelectionMode = .character + /// When we receive a drag operation we add a temporary cursor view not managed by the selection manager. + /// This is the reference to that view, it is cleaned up when a drag ends. + var draggingCursorView: NSView? + var isDragging: Bool = false + private var fontCharWidth: CGFloat { (" " as NSString).size(withAttributes: [.font: font]).width } internal(set) public var _undoManager: CEUndoManager? + @objc dynamic open var allowsUndo: Bool var scrollView: NSScrollView? { @@ -316,6 +327,7 @@ public class TextView: NSView, NSTextContent { postsFrameChangedNotifications = true postsBoundsChangedNotifications = true autoresizingMask = [.width, .height] + registerForDraggedTypes([.string, .fileContents, .html, .multipleTextSelection, .tabularText, .rtf]) self.typingAttributes = [ .font: font, @@ -344,31 +356,6 @@ public class TextView: NSView, NSTextContent { NSRange(location: 0, length: textStorage.length) } - // MARK: - View Lifecycle - - override public func layout() { - layoutManager.layoutLines() - super.layout() - } - - override public func viewWillMove(toWindow newWindow: NSWindow?) { - super.viewWillMove(toWindow: newWindow) - layoutManager.layoutLines() - } - - override public func viewWillMove(toSuperview newSuperview: NSView?) { - guard let scrollView = enclosingScrollView else { - return - } - - setUpScrollListeners(scrollView: scrollView) - } - - override public func viewDidEndLiveResize() { - super.viewDidEndLiveResize() - updateFrameIfNeeded() - } - // MARK: - Hit test /// Returns the responding view for a given point. From d5ef35fdffeb043e457baec8d45a5e601458b58d Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Tue, 8 Apr 2025 12:29:03 -0500 Subject: [PATCH 08/42] Force Break Undo Groups When Forcing Grouping (#81) ### Description Forces the undo manager to start a new undo group after calling `startUndoGrouping` or `endUndoGrouping`. This fixes a case where two groups could accidentally be combined. For instance when dragging text and then dragging it back into the same spot. Previously that operation would result in the following undo grouping: After first drag: ``` Group 1: - {0,8} "" // Removed text Group 2: - {0, 0} "DragText" // Inserted text ``` After dragging back to the original location: ``` Group 1: - {0,8} "" // Removed text Group 2: - {0, 0} "DragText" // Inserted text - {0,8} "" // Removed text Group 3: - {0, 0} "DragText" // Inserted text ``` When it *should* have looked like the following after the second drag back to the original position. ``` Group 1: - {0,8} "" // Removed text Group 2: - {0, 0} "DragText" // Inserted text Group 3: - {0,8} "" // Removed text Group 4: - {0, 0} "DragText" // Inserted text ``` ### Related Issues * N/A ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots N/A --- .../Utils/CEUndoManager.swift | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/Sources/CodeEditTextView/Utils/CEUndoManager.swift b/Sources/CodeEditTextView/Utils/CEUndoManager.swift index c716d49b4..cf724bc8e 100644 --- a/Sources/CodeEditTextView/Utils/CEUndoManager.swift +++ b/Sources/CodeEditTextView/Utils/CEUndoManager.swift @@ -83,6 +83,11 @@ public class CEUndoManager { private weak var textView: TextView? private(set) public var isGrouping: Bool = false + + /// After ``endUndoGrouping`` is called, we'd expect the next mutation to be exclusive no matter what. This + /// flag facilitates that, and is set by ``endUndoGrouping`` + private var shouldBreakNextGroup: Bool = false + /// True when the manager is ignoring mutations. private var isDisabled: Bool = false @@ -154,18 +159,19 @@ public class CEUndoManager { return } let newMutation = Mutation(mutation: mutation, inverse: textStorage.inverseMutation(for: mutation)) - if !undoStack.isEmpty, let lastMutation = undoStack.last?.mutations.last { - if isGrouping || shouldContinueGroup(newMutation, lastMutation: lastMutation) { - undoStack[undoStack.count - 1].mutations.append(newMutation) - } else { - undoStack.append(UndoGroup(mutations: [newMutation])) - } + // We can continue a group if: + // - A group exists + // - We're not direct to break the current group + // - We're forced grouping OR we automagically detect we can group. + if !undoStack.isEmpty, + let lastMutation = undoStack.last?.mutations.last, + !shouldBreakNextGroup, + isGrouping || shouldContinueGroup(newMutation, lastMutation: lastMutation) { + undoStack[undoStack.count - 1].mutations.append(newMutation) } else { - undoStack.append( - UndoGroup(mutations: [newMutation]) - ) + undoStack.append(UndoGroup(mutations: [newMutation])) + shouldBreakNextGroup = false } - redoStack.removeAll() } @@ -178,6 +184,8 @@ public class CEUndoManager { return } isGrouping = true + // This is a new undo group, break for it. + shouldBreakNextGroup = true } /// Stops grouping all incoming mutations. @@ -187,6 +195,8 @@ public class CEUndoManager { return } isGrouping = false + // We just ended a group, do not allow the next mutation to be added to the group we just made. + shouldBreakNextGroup = true } /// Determines whether or not two mutations should be grouped. From 5114e0deff0b1d9f9fbb4b19deb9224bc886f7b2 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Wed, 9 Apr 2025 11:29:17 -0500 Subject: [PATCH 09/42] Move Layout Updates to NSTextStorage Delegate (#82) ### Description **Detailed Changes** - Makes `TextLayoutManager` a text storage delegate. - Updates `TextLayoutManager` to use the text storage methods to update internal state. - Remove `TextLayoutManager`'s layout transaction capabilities. - Updates `replaceCharacters` to reflect the new layout manager requirements. - Moves layout back into a `CATransaction`, now that method ordering is slightly different, macOS might call `layout` on the text view while we're laying out text. Doing that in a transaction ensures that doesn't happen and layout is atomic. **Tests** - Adds tests to the layout manager to ensure modifications are kept valid. - Adds tests for `rects(in:)` to ensure it doesn't invalidate layout information. - Adds a test ensuring editing text contents in a text view delegate callback doesn't break layout. ### Discussion This change untangles the text layout updating from text view code. Right now the hierarchy looks like this: ``` (Update occurs) TextView -> Text Layout Update -> Text Storage Update ``` This isn't great, because it means anything that modifies the text outside of the text view *must* remember to update layout, selection, send notifications, and do it all in the right order. I'd like to move it to this hierarchy: ``` (Update occurs) TextView -> Text Storage Update -> Text Layout Update ``` This way any component can modify the text storage, and that will be reflected in the layout manager. There's a myriad of small bugs in our editor right now that are effected by this. One key result of this change is the ability to correctly modify text in textView delegate callbacks. Right now, if the text is updated in a callback, it can lead to a recursive layout call to the text layout manager. This leads to bad internal state, and bugs where entire sections of text disappear entirely. This also comes with a performance boost. Since NSTextStorage automatically coagulates text changes, we'll perform less layout passes for each edit, and components can make use of the text storage's transaction capabilities to only cause layout after all edits have been applied in a transaction. > [!NOTE] > This change cannot be applied to the selection manager, the selection manager needs much more fine-grained information about edits than the layout manager to correctly update itself. > @hi2gage and I have also discussed some modifications to the selection API, since keeping it in sync with the text storage makes less sense than the layout manager. ### Related Issues * Could be related to https://github.com/CodeEditApp/CodeEditSourceEditor/issues/196 ### Checklist - [x] Add Tests - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots --- .../TextLayoutManager+Edits.swift | 94 ++++++++----- .../TextLayoutManager+Public.swift | 10 +- .../TextLayoutManager+Transaction.swift | 38 ----- .../TextLayoutManager+ensureLayout.swift | 7 +- .../TextLayoutManager/TextLayoutManager.swift | 19 ++- .../TextSelectionManager.swift | 7 +- .../TextView/TextView+ReplaceCharacters.swift | 3 - .../CodeEditTextView/TextView/TextView.swift | 2 +- .../Utils/CEUndoManager.swift | 10 +- .../EmphasisManagerTests.swift | 3 +- .../TextLayoutManagerTests.swift | 133 ++++++++++++++++++ .../CodeEditTextViewTests/TextViewTests.swift | 43 ++++++ 12 files changed, 267 insertions(+), 102 deletions(-) delete mode 100644 Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Transaction.swift create mode 100644 Tests/CodeEditTextViewTests/TextLayoutManagerTests.swift create mode 100644 Tests/CodeEditTextViewTests/TextViewTests.swift diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift index 8219bf162..1c3d97240 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift @@ -10,17 +10,50 @@ import AppKit // MARK: - Edits extension TextLayoutManager: NSTextStorageDelegate { - /// Notifies the layout manager of an edit. + /// Receives edit notifications from the text storage and updates internal data structures to stay in sync with + /// text content. /// - /// Used by the `TextView` to tell the layout manager about any edits that will happen. - /// Use this to keep the layout manager's line storage in sync with the text storage. + /// If the changes are only attribute changes, this method invalidates layout for the edited range and returns. /// - /// - Parameters: - /// - range: The range of the edit. - /// - string: The string to replace in the given range. - public func willReplaceCharactersInRange(range: NSRange, with string: String) { + /// Otherwise, any lines that were removed or replaced by the edit are first removed from the text line layout + /// storage. Then, any new lines are inserted into the same storage. + /// + /// For instance, if inserting a newline this method will: + /// - Remove no lines (none were replaced) + /// - Update the current line's range to contain the newline character. + /// - Insert a new line after the current line. + /// + /// If a selection containing a newline is deleted and replaced with two more newlines this method will: + /// - Delete the original line. + /// - Insert two lines. + /// + /// - Note: This method *does not* cause a layout calculation. If a method is finding `NaN` values for line + /// fragments, ensure `layout` or `ensureLayoutUntil` are called on the subject ranges. + public func textStorage( + _ textStorage: NSTextStorage, + didProcessEditing editedMask: NSTextStorageEditActions, + range editedRange: NSRange, + changeInLength delta: Int + ) { + guard editedMask.contains(.editedCharacters) else { + if editedMask.contains(.editedAttributes) && delta == 0 { + invalidateLayoutForRange(editedRange) + } + return + } + + let insertedStringRange = NSRange(location: editedRange.location, length: editedRange.length - delta) + removeLayoutLinesIn(range: insertedStringRange) + insertNewLines(for: editedRange) + invalidateLayoutForRange(editedRange) + } + + /// Removes all lines in the range, as if they were deleted. This is a setup for inserting the lines back in on an + /// edit. + /// - Parameter range: The range that was deleted. + private func removeLayoutLinesIn(range: NSRange) { // Loop through each line being replaced in reverse, updating and removing where necessary. - for linePosition in lineStorage.linesInRange(range).reversed() { + for linePosition in lineStorage.linesInRange(range).reversed() { // Two cases: Updated line, deleted line entirely guard let intersection = linePosition.range.intersection(range), !intersection.isEmpty else { continue } if intersection == linePosition.range && linePosition.range.max != lineStorage.length { @@ -38,25 +71,24 @@ extension TextLayoutManager: NSTextStorageDelegate { lineStorage.update(atIndex: linePosition.range.location, delta: -intersection.length, deltaHeight: 0) } } + } + /// Inserts any newly inserted lines into the line layout storage. Exits early if the range is empty. + /// - Parameter range: The range of the string that was inserted into the text storage. + private func insertNewLines(for range: NSRange) { + guard !range.isEmpty, let string = textStorage?.substring(from: range) as? NSString else { return } // Loop through each line being inserted, inserting & splitting where necessary - if !string.isEmpty { - var index = 0 - while let nextLine = (string as NSString).getNextLine(startingAt: index) { - let lineRange = NSRange(start: index, end: nextLine.max) - applyLineInsert((string as NSString).substring(with: lineRange) as NSString, at: range.location + index) - index = nextLine.max - } + var index = 0 + while let nextLine = string.getNextLine(startingAt: index) { + let lineRange = NSRange(start: index, end: nextLine.max) + applyLineInsert(string.substring(with: lineRange) as NSString, at: range.location + index) + index = nextLine.max + } - if index < (string as NSString).length { - // Get the last line. - applyLineInsert( - (string as NSString).substring(from: index) as NSString, - at: range.location + index - ) - } + if index < string.length { + // Get the last line. + applyLineInsert(string.substring(from: index) as NSString, at: range.location + index) } - setNeedsLayout() } /// Applies a line insert to the internal line storage tree. @@ -65,7 +97,7 @@ extension TextLayoutManager: NSTextStorageDelegate { /// - location: The location the string is being inserted into. private func applyLineInsert(_ insertedString: NSString, at location: Int) { if LineEnding(line: insertedString as String) != nil { - if location == textStorage?.length ?? 0 { + if location == lineStorage.length { // Insert a new line at the end of the document, need to insert a new line 'cause there's nothing to // split. Also, append the new text to the last line. lineStorage.update(atIndex: location, delta: insertedString.length, deltaHeight: 0.0) @@ -96,18 +128,4 @@ extension TextLayoutManager: NSTextStorageDelegate { lineStorage.update(atIndex: location, delta: insertedString.length, deltaHeight: 0.0) } } - - /// This method is to simplify keeping the layout manager in sync with attribute changes in the storage object. - /// This does not handle cases where characters have been inserted or removed from the storage. - /// For that, see the `willPerformEdit` method. - public func textStorage( - _ textStorage: NSTextStorage, - didProcessEditing editedMask: NSTextStorageEditActions, - range editedRange: NSRange, - changeInLength delta: Int - ) { - if editedMask.contains(.editedAttributes) && delta == 0 { - invalidateLayoutForRange(editedRange) - } - } } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift index f53e14f85..6fa1d9c9e 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift @@ -121,7 +121,7 @@ extension TextLayoutManager { return nil } if linePosition.data.lineFragments.isEmpty { - let newHeight = ensureLayoutFor(position: linePosition) + let newHeight = preparePositionForDisplay(linePosition) if linePosition.height != newHeight { delegate?.layoutManagerHeightDidUpdate(newHeight: lineStorage.height) } @@ -165,7 +165,8 @@ extension TextLayoutManager { /// - line: The line to calculate rects for. /// - Returns: Multiple bounding rects. Will return one rect for each line fragment that overlaps the given range. public func rectsFor(range: NSRange) -> [CGRect] { - lineStorage.linesInRange(range).flatMap { self.rectsFor(range: range, in: $0) } + ensureLayoutUntil(range.max) + return lineStorage.linesInRange(range).flatMap { self.rectsFor(range: range, in: $0) } } /// Calculates all text bounding rects that intersect with a given range, with a given line position. @@ -190,6 +191,7 @@ extension TextLayoutManager { for fragmentPosition in line.data.lineFragments.linesInRange(relativeRange) { guard let intersectingRange = fragmentPosition.range.intersection(relativeRange) else { continue } let fragmentRect = fragmentPosition.data.rectFor(range: intersectingRange) + guard fragmentRect.width > 0 else { continue } rects.append( CGRect( x: fragmentRect.minX + edgeInsets.left, @@ -239,6 +241,8 @@ extension TextLayoutManager { // Combine the points in clockwise order let points = leftSidePoints + rightSidePoints + guard points.allSatisfy({ $0.x.isFinite && $0.y.isFinite }) else { return nil } + // Close the path if let firstPoint = points.first { return NSBezierPath.smoothPath(points + [firstPoint], radius: cornerRadius) @@ -286,7 +290,7 @@ extension TextLayoutManager { for linePosition in lineStorage.linesInRange( NSRange(start: startingLinePosition.range.location, end: linePosition.range.max) ) { - let height = ensureLayoutFor(position: linePosition) + let height = preparePositionForDisplay(linePosition) if height != linePosition.height { lineStorage.update( atIndex: linePosition.range.location, diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Transaction.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Transaction.swift deleted file mode 100644 index c160bfd57..000000000 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Transaction.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// TextLayoutManager+Transaction.swift -// CodeEditTextView -// -// Created by Khan Winter on 2/24/24. -// - -import Foundation - -extension TextLayoutManager { - /// Begins a transaction, preventing the layout manager from performing layout until the `endTransaction` is called. - /// Useful for grouping attribute modifications into one layout pass rather than laying out every update. - /// - /// You can nest transaction start/end calls, the layout manager will not cause layout until the last transaction - /// group is ended. - /// - /// Ensure there is a balanced number of begin/end calls. If there is a missing endTranscaction call, the layout - /// manager will never lay out text. If there is a end call without matching a start call an assertionFailure - /// will occur. - public func beginTransaction() { - transactionCounter += 1 - } - - /// Ends a transaction. When called, the layout manager will layout any necessary lines. - public func endTransaction(forceLayout: Bool = false) { - transactionCounter -= 1 - if transactionCounter == 0 { - if forceLayout { - setNeedsLayout() - } - layoutLines() - } else if transactionCounter < 0 { - assertionFailure( - "TextLayoutManager.endTransaction called without a matching TextLayoutManager.beginTransaction call" - ) - } - } -} diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+ensureLayout.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+ensureLayout.swift index e0e5fa07d..e2cf08d15 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+ensureLayout.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+ensureLayout.swift @@ -8,9 +8,10 @@ import Foundation extension TextLayoutManager { - /// Forces layout calculation for all lines up to and including the given offset. - /// - Parameter offset: The offset to ensure layout until. - package func ensureLayoutFor(position: TextLineStorage.TextLinePosition) -> CGFloat { + /// Invalidates and prepares a line position for display. + /// - Parameter position: The line position to prepare. + /// - Returns: The height of the newly laid out line and all it's fragments. + package func preparePositionForDisplay(_ position: TextLineStorage.TextLinePosition) -> CGFloat { guard let textStorage else { return 0 } let displayData = TextLine.DisplayData( maxWidth: maxLineLayoutWidth, diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift index 3e042225c..880c28748 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift @@ -199,8 +199,6 @@ public class TextLayoutManager: NSObject { /// ``TextLayoutManager/estimateLineHeight()`` is called. private var _estimateLineHeight: CGFloat? - // MARK: - Layout - /// Asserts that the caller is not in an active layout pass. /// See docs on ``isInLayout`` for more details. private func assertNotInLayout() { @@ -209,6 +207,8 @@ public class TextLayoutManager: NSObject { #endif } + // MARK: - Layout + /// Lays out all visible lines func layoutLines(in rect: NSRect? = nil) { // swiftlint:disable:this function_body_length assertNotInLayout() @@ -217,9 +217,15 @@ public class TextLayoutManager: NSObject { let textStorage else { return } + + // The macOS may call `layout` on the textView while we're laying out fragment views. This ensures the view + // tree modifications caused by this method are atomic, so macOS won't call `layout` while we're already doing + // that + CATransaction.begin() #if DEBUG isInLayout = true #endif + let minY = max(visibleRect.minY - verticalLayoutPadding, 0) let maxY = max(visibleRect.maxY + verticalLayoutPadding, 0) let originalHeight = lineStorage.height @@ -265,16 +271,17 @@ public class TextLayoutManager: NSObject { newVisibleLines.insert(linePosition.data.id) } + #if DEBUG + isInLayout = false + #endif + CATransaction.commit() + // Enqueue any lines not used in this layout pass. viewReuseQueue.enqueueViews(notInSet: usedFragmentIDs) // Update the visible lines with the new set. visibleLineIds = newVisibleLines - #if DEBUG - isInLayout = false - #endif - // These are fine to update outside of `isInLayout` as our internal data structures are finalized at this point // so laying out again won't break our line storage or visible line. diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift index 453fcac87..a56c73a68 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift @@ -86,6 +86,8 @@ public class TextSelectionManager: NSObject { /// Set the selected ranges to new ranges. Overrides any existing selections. /// - Parameter range: The selected ranges to set. public func setSelectedRanges(_ ranges: [NSRange]) { + let oldRanges = textSelections.map(\.range) + textSelections.forEach { $0.view?.removeFromSuperview() } // Remove duplicates, invalid ranges, update suggested X position. textSelections = Set(ranges) @@ -99,8 +101,11 @@ public class TextSelectionManager: NSObject { return selection } updateSelectionViews() - NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self)) delegate?.setNeedsDisplay() + + if oldRanges != textSelections.map(\.range) { + NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self)) + } } /// Append a new selected range to the existing ones. diff --git a/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift b/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift index 06949b21a..951e9977e 100644 --- a/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift +++ b/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift @@ -16,7 +16,6 @@ extension TextView { public func replaceCharacters(in ranges: [NSRange], with string: String) { guard isEditable else { return } NotificationCenter.default.post(name: Self.textWillChangeNotification, object: self) - layoutManager.beginTransaction() textStorage.beginEditing() // Can't insert an empty string into an empty range. One must be not empty @@ -25,7 +24,6 @@ extension TextView { (delegate?.textView(self, shouldReplaceContentsIn: range, with: string) ?? true) { delegate?.textView(self, willReplaceContentsIn: range, with: string) - layoutManager.willReplaceCharactersInRange(range: range, with: string) _undoManager?.registerMutation( TextMutation(string: string as String, range: range, limit: textStorage.length) ) @@ -39,7 +37,6 @@ extension TextView { } textStorage.endEditing() - layoutManager.endTransaction() selectionManager.notifyAfterEdit() NotificationCenter.default.post(name: Self.textDidChangeNotification, object: self) diff --git a/Sources/CodeEditTextView/TextView/TextView.swift b/Sources/CodeEditTextView/TextView/TextView.swift index 85b2e11b0..9b0337f9e 100644 --- a/Sources/CodeEditTextView/TextView/TextView.swift +++ b/Sources/CodeEditTextView/TextView/TextView.swift @@ -58,7 +58,6 @@ public class TextView: NSView, NSTextContent { textStorage.string } set { - layoutManager.willReplaceCharactersInRange(range: documentRange, with: newValue) textStorage.setAttributedString(NSAttributedString(string: newValue, attributes: typingAttributes)) } } @@ -339,6 +338,7 @@ public class TextView: NSView, NSTextContent { layoutManager = setUpLayoutManager(lineHeightMultiplier: lineHeightMultiplier, wrapLines: wrapLines) storageDelegate.addDelegate(layoutManager) + selectionManager = setUpSelectionManager() selectionManager.useSystemCursor = useSystemCursor diff --git a/Sources/CodeEditTextView/Utils/CEUndoManager.swift b/Sources/CodeEditTextView/Utils/CEUndoManager.swift index cf724bc8e..fd800fcf1 100644 --- a/Sources/CodeEditTextView/Utils/CEUndoManager.swift +++ b/Sources/CodeEditTextView/Utils/CEUndoManager.swift @@ -179,10 +179,7 @@ public class CEUndoManager { /// Groups all incoming mutations. public func beginUndoGrouping() { - guard !isGrouping else { - assertionFailure("UndoManager already in a group. Call `beginUndoGrouping` before this can be called.") - return - } + guard !isGrouping else { return } isGrouping = true // This is a new undo group, break for it. shouldBreakNextGroup = true @@ -190,10 +187,7 @@ public class CEUndoManager { /// Stops grouping all incoming mutations. public func endUndoGrouping() { - guard isGrouping else { - assertionFailure("UndoManager not in a group. Call `endUndoGrouping` before this can be called.") - return - } + guard isGrouping else { return } isGrouping = false // We just ended a group, do not allow the next mutation to be added to the group we just made. shouldBreakNextGroup = true diff --git a/Tests/CodeEditTextViewTests/EmphasisManagerTests.swift b/Tests/CodeEditTextViewTests/EmphasisManagerTests.swift index a921f1051..4cdf8468b 100644 --- a/Tests/CodeEditTextViewTests/EmphasisManagerTests.swift +++ b/Tests/CodeEditTextViewTests/EmphasisManagerTests.swift @@ -4,7 +4,8 @@ import Foundation @Suite() struct EmphasisManagerTests { - @Test() @MainActor + @Test() + @MainActor func testFlashEmphasisLayersNotLeaked() { // Ensure layers are not leaked when switching from flash emphasis to any other emphasis type. let textView = TextView(string: "Lorem Ipsum") diff --git a/Tests/CodeEditTextViewTests/TextLayoutManagerTests.swift b/Tests/CodeEditTextViewTests/TextLayoutManagerTests.swift new file mode 100644 index 000000000..1dcc9a7dd --- /dev/null +++ b/Tests/CodeEditTextViewTests/TextLayoutManagerTests.swift @@ -0,0 +1,133 @@ +import Testing +import AppKit +@testable import CodeEditTextView + +extension TextLineStorage { + /// Validate that the internal tree is intact and correct. + /// + /// Ensures that: + /// - All lines can be queried by their index starting from `0`. + /// - All lines can be found by iterating `y` positions. + func validateInternalState() { + func validateLines(_ lines: [TextLineStorage.TextLinePosition]) { + var _lastLine: TextLineStorage.TextLinePosition? + for line in lines { + guard let lastLine = _lastLine else { + #expect(line.index == 0) + _lastLine = line + return + } + + #expect(line.index == lastLine.index + 1) + #expect(line.yPos >= lastLine.yPos + lastLine.height) + #expect(line.range.location == lastLine.range.max + 1) + _lastLine = line + } + } + + let linesUsingIndex = (0.. Bool)? + + func textView(_ textView: TextView, shouldReplaceContentsIn range: NSRange, with string: String) -> Bool { + shouldReplaceContents?(textView, range, string) ?? true + } + } + + let textView: TextView + let delegate: MockDelegate + + init() { + textView = TextView(string: "Lorem Ipsum") + delegate = MockDelegate() + textView.delegate = delegate + } + + @Test + func delegateChangesText() { + var hasReplaced = false + delegate.shouldReplaceContents = { textView, _, _ -> Bool in + if !hasReplaced { + hasReplaced.toggle() + textView.replaceCharacters(in: NSRange(location: 0, length: 0), with: " World ") + } + + return true + } + + textView.replaceCharacters(in: NSRange(location: 0, length: 0), with: "Hello") + + #expect(textView.string == "Hello World Lorem Ipsum") + // available in test module + textView.layoutManager.lineStorage.validateInternalState() + } +} From 2a252a07474a3361afba1ed8062099ca3dc77a93 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Wed, 9 Apr 2025 11:35:16 -0500 Subject: [PATCH 10/42] Remove Unused Variables in `smoothPath` (#83) Fixes a few warnings in `smoothPath`, and guards against a divide-by-zero assertion failure. --- .../Extensions/NSBezierPath+SmoothPath.swift | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Sources/CodeEditTextView/Extensions/NSBezierPath+SmoothPath.swift b/Sources/CodeEditTextView/Extensions/NSBezierPath+SmoothPath.swift index 114652f61..4a09a64ef 100644 --- a/Sources/CodeEditTextView/Extensions/NSBezierPath+SmoothPath.swift +++ b/Sources/CodeEditTextView/Extensions/NSBezierPath+SmoothPath.swift @@ -60,19 +60,13 @@ extension NSBezierPath { let distance1 = sqrt(vector1.x * vector1.x + vector1.y * vector1.y) let distance2 = sqrt(vector2.x * vector2.x + vector2.y * vector2.y) - // TODO: Check if .zero should get used or just skipped - if distance1.isZero || distance2.isZero { continue } + if distance1.isZero || distance2.isZero { + // Dividing by 0 will result in `NaN` points. + continue + } let unitVector1 = distance1 > 0 ? NSPoint(x: vector1.x / distance1, y: vector1.y / distance1) : NSPoint.zero let unitVector2 = distance2 > 0 ? NSPoint(x: vector2.x / distance2, y: vector2.y / distance2) : NSPoint.zero - // This uses the dot product formula: cos(θ) = (u1 • u2), - // where u1 and u2 are unit vectors. The result will range from -1 to 1: - let angleCosine = unitVector1.x * unitVector2.x + unitVector1.y * unitVector2.y - - // If the cosine of the angle is less than 0.5 (i.e., angle > ~60 degrees), - // the radius is reduced to half to avoid overlapping or excessive smoothing. - let clampedRadius = angleCosine < 0.5 ? radius /** 0.5 */: radius // Adjust for sharp angles - // Calculate the corner start and end let cornerStart = NSPoint(x: p1.x - unitVector1.x * radius, y: p1.y - unitVector1.y * radius) let cornerEnd = NSPoint(x: p1.x + unitVector2.x * radius, y: p1.y + unitVector2.y * radius) @@ -95,6 +89,14 @@ extension NSBezierPath { // Calculate the vectors and unit vectors let finalVector = NSPoint(x: firstPoint.x - lastPoint.x, y: firstPoint.y - lastPoint.y) let distance = sqrt(finalVector.x * finalVector.x + finalVector.y * finalVector.y) + + // Dividing by 0 after this will cause an assertion failure. Something went wrong with the given points + // this could mean we're rounding a 0-width and 0-height rect. + guard distance != 0 else { + path.line(to: lastPoint) + return path + } + let unitVector = NSPoint(x: finalVector.x / distance, y: finalVector.y / distance) // Calculate the final corner start and initial corner end From 6fa3516477206fa0007becd6fbc9a16ede15a515 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Fri, 11 Apr 2025 13:20:11 -0500 Subject: [PATCH 11/42] Invalidation Performance, Rename LineStorage `index` to `offset` (#85) ### Description Fixes a few small things: - No longer nukes layout information on every invalidation call. Instead tells the layout view that it needs layout, meaning layout will be performed when the system determines it's necessary. - When doing something like syntax highlighting, this means that layout will be calculated *once* for each invalidated line, rather than once *per color update*. - When editing text, forces a layout pass to ensure edited lines are updated. - Renames a confusing `atIndex` to `atOffset` to avoid potential confusion in the `TextLineStorage` object. - Fix a small missing notification and delegate update in `setTextStorage`. - Moves layout manager layout methods to their own file. ### Related Issues N/A, general cleanup. ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots N/A --- .../TextLayoutManager+Edits.swift | 13 +- .../TextLayoutManager+Invalidation.swift | 6 +- .../TextLayoutManager+Layout.swift | 210 ++++++++++++++++++ .../TextLayoutManager+Public.swift | 7 +- .../TextLayoutManager+ensureLayout.swift | 34 --- .../TextLayoutManager/TextLayoutManager.swift | 178 +-------------- .../TextLineStorage/TextLineStorage.swift | 19 +- .../TextView/TextView+Layout.swift | 5 + .../TextView/TextView+Lifecycle.swift | 5 - .../TextView/TextView+SetText.swift | 7 + .../TextLayoutLineStorageTests.swift | 10 +- 11 files changed, 252 insertions(+), 242 deletions(-) create mode 100644 Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift delete mode 100644 Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+ensureLayout.swift diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift index 1c3d97240..192b8a981 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift @@ -45,7 +45,8 @@ extension TextLayoutManager: NSTextStorageDelegate { let insertedStringRange = NSRange(location: editedRange.location, length: editedRange.length - delta) removeLayoutLinesIn(range: insertedStringRange) insertNewLines(for: editedRange) - invalidateLayoutForRange(editedRange) + + setNeedsLayout() } /// Removes all lines in the range, as if they were deleted. This is a setup for inserting the lines back in on an @@ -65,10 +66,10 @@ extension TextLayoutManager: NSTextStorageDelegate { lineStorage.delete(lineAt: nextLine.range.location) let delta = -intersection.length + nextLine.range.length if delta != 0 { - lineStorage.update(atIndex: linePosition.range.location, delta: delta, deltaHeight: 0) + lineStorage.update(atOffset: linePosition.range.location, delta: delta, deltaHeight: 0) } } else { - lineStorage.update(atIndex: linePosition.range.location, delta: -intersection.length, deltaHeight: 0) + lineStorage.update(atOffset: linePosition.range.location, delta: -intersection.length, deltaHeight: 0) } } } @@ -100,7 +101,7 @@ extension TextLayoutManager: NSTextStorageDelegate { if location == lineStorage.length { // Insert a new line at the end of the document, need to insert a new line 'cause there's nothing to // split. Also, append the new text to the last line. - lineStorage.update(atIndex: location, delta: insertedString.length, deltaHeight: 0.0) + lineStorage.update(atOffset: location, delta: insertedString.length, deltaHeight: 0.0) lineStorage.insert( line: TextLine(), atOffset: location + insertedString.length, @@ -114,7 +115,7 @@ extension TextLayoutManager: NSTextStorageDelegate { let splitLength = linePosition.range.max - location let lineDelta = insertedString.length - splitLength // The difference in the line being edited if lineDelta != 0 { - lineStorage.update(atIndex: location, delta: lineDelta, deltaHeight: 0.0) + lineStorage.update(atOffset: location, delta: lineDelta, deltaHeight: 0.0) } lineStorage.insert( @@ -125,7 +126,7 @@ extension TextLayoutManager: NSTextStorageDelegate { ) } } else { - lineStorage.update(atIndex: location, delta: insertedString.length, deltaHeight: 0.0) + lineStorage.update(atOffset: location, delta: insertedString.length, deltaHeight: 0.0) } } } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Invalidation.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Invalidation.swift index 6ddb9a305..24fec8074 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Invalidation.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Invalidation.swift @@ -14,7 +14,8 @@ extension TextLayoutManager { for linePosition in lineStorage.linesStartingAt(rect.minY, until: rect.maxY) { linePosition.data.setNeedsLayout() } - layoutLines() + + layoutView?.needsLayout = true } /// Invalidates layout for the given range of text. @@ -24,11 +25,12 @@ extension TextLayoutManager { linePosition.data.setNeedsLayout() } - layoutLines() + layoutView?.needsLayout = true } public func setNeedsLayout() { needsLayout = true visibleLineIds.removeAll(keepingCapacity: true) + layoutView?.needsLayout = true } } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift new file mode 100644 index 000000000..764b1ec92 --- /dev/null +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift @@ -0,0 +1,210 @@ +// +// TextLayoutManager+ensureLayout.swift +// CodeEditTextView +// +// Created by Khan Winter on 4/7/25. +// + +import AppKit + +extension TextLayoutManager { + /// Contains all data required to perform layout on a text line. + private struct LineLayoutData { + let minY: CGFloat + let maxY: CGFloat + let maxWidth: CGFloat + } + + /// Asserts that the caller is not in an active layout pass. + /// See docs on ``isInLayout`` for more details. + private func assertNotInLayout() { +#if DEBUG // This is redundant, but it keeps the flag debug-only too which helps prevent misuse. + assert(!isInLayout, "layoutLines called while already in a layout pass. This is a programmer error.") +#endif + } + + // MARK: - Layout + + /// Lays out all visible lines + func layoutLines(in rect: NSRect? = nil) { // swiftlint:disable:this function_body_length + assertNotInLayout() + guard let visibleRect = rect ?? delegate?.visibleRect, + !isInTransaction, + let textStorage else { + return + } + + // The macOS may call `layout` on the textView while we're laying out fragment views. This ensures the view + // tree modifications caused by this method are atomic, so macOS won't call `layout` while we're already doing + // that + CATransaction.begin() +#if DEBUG + isInLayout = true +#endif + + let minY = max(visibleRect.minY - verticalLayoutPadding, 0) + let maxY = max(visibleRect.maxY + verticalLayoutPadding, 0) + let originalHeight = lineStorage.height + var usedFragmentIDs = Set() + var forceLayout: Bool = needsLayout + var newVisibleLines: Set = [] + var yContentAdjustment: CGFloat = 0 + var maxFoundLineWidth = maxLineWidth + + // Layout all lines, fetching lines lazily as they are laid out. + for linePosition in lineStorage.linesStartingAt(minY, until: maxY).lazy { + guard linePosition.yPos < maxY else { break } + if forceLayout + || linePosition.data.needsLayout(maxWidth: maxLineLayoutWidth) + || !visibleLineIds.contains(linePosition.data.id) { + let lineSize = layoutLine( + linePosition, + textStorage: textStorage, + layoutData: LineLayoutData(minY: minY, maxY: maxY, maxWidth: maxLineLayoutWidth), + laidOutFragmentIDs: &usedFragmentIDs + ) + if lineSize.height != linePosition.height { + lineStorage.update( + atOffset: linePosition.range.location, + delta: 0, + deltaHeight: lineSize.height - linePosition.height + ) + // If we've updated a line's height, force re-layout for the rest of the pass. + forceLayout = true + + if linePosition.yPos < minY { + // Adjust the scroll position by the difference between the new height and old. + yContentAdjustment += lineSize.height - linePosition.height + } + } + if maxFoundLineWidth < lineSize.width { + maxFoundLineWidth = lineSize.width + } + } else { + // Make sure the used fragment views aren't dequeued. + usedFragmentIDs.formUnion(linePosition.data.lineFragments.map(\.data.id)) + } + newVisibleLines.insert(linePosition.data.id) + } + +#if DEBUG + isInLayout = false +#endif + CATransaction.commit() + + // Enqueue any lines not used in this layout pass. + viewReuseQueue.enqueueViews(notInSet: usedFragmentIDs) + + // Update the visible lines with the new set. + visibleLineIds = newVisibleLines + + // These are fine to update outside of `isInLayout` as our internal data structures are finalized at this point + // so laying out again won't break our line storage or visible line. + + if maxFoundLineWidth > maxLineWidth { + maxLineWidth = maxFoundLineWidth + } + + if yContentAdjustment != 0 { + delegate?.layoutManagerYAdjustment(yContentAdjustment) + } + + if originalHeight != lineStorage.height || layoutView?.frame.size.height != lineStorage.height { + delegate?.layoutManagerHeightDidUpdate(newHeight: lineStorage.height) + } + + needsLayout = false + } + + /// Lays out a single text line. + /// - Parameters: + /// - position: The line position from storage to use for layout. + /// - textStorage: The text storage object to use for text info. + /// - layoutData: The information required to perform layout for the given line. + /// - laidOutFragmentIDs: Updated by this method as line fragments are laid out. + /// - Returns: A `CGSize` representing the max width and total height of the laid out portion of the line. + private func layoutLine( + _ position: TextLineStorage.TextLinePosition, + textStorage: NSTextStorage, + layoutData: LineLayoutData, + laidOutFragmentIDs: inout Set + ) -> CGSize { + let lineDisplayData = TextLine.DisplayData( + maxWidth: layoutData.maxWidth, + lineHeightMultiplier: lineHeightMultiplier, + estimatedLineHeight: estimateLineHeight() + ) + + let line = position.data + line.prepareForDisplay( + displayData: lineDisplayData, + range: position.range, + stringRef: textStorage, + markedRanges: markedTextManager.markedRanges(in: position.range), + breakStrategy: lineBreakStrategy + ) + + if position.range.isEmpty { + return CGSize(width: 0, height: estimateLineHeight()) + } + + var height: CGFloat = 0 + var width: CGFloat = 0 + let relativeMinY = max(layoutData.minY - position.yPos, 0) + let relativeMaxY = max(layoutData.maxY - position.yPos, relativeMinY) + + for lineFragmentPosition in line.lineFragments.linesStartingAt( + relativeMinY, + until: relativeMaxY + ) { + let lineFragment = lineFragmentPosition.data + + layoutFragmentView(for: lineFragmentPosition, at: position.yPos + lineFragmentPosition.yPos) + + width = max(width, lineFragment.width) + height += lineFragment.scaledHeight + laidOutFragmentIDs.insert(lineFragment.id) + } + + return CGSize(width: width, height: height) + } + + /// Lays out a line fragment view for the given line fragment at the specified y value. + /// - Parameters: + /// - lineFragment: The line fragment position to lay out a view for. + /// - yPos: The y value at which the line should begin. + private func layoutFragmentView( + for lineFragment: TextLineStorage.TextLinePosition, + at yPos: CGFloat + ) { + let view = viewReuseQueue.getOrCreateView(forKey: lineFragment.data.id) + view.setLineFragment(lineFragment.data) + view.frame.origin = CGPoint(x: edgeInsets.left, y: yPos) + layoutView?.addSubview(view) + view.needsDisplay = true + } + + /// Invalidates and prepares a line position for display. + /// - Parameter position: The line position to prepare. + /// - Returns: The height of the newly laid out line and all it's fragments. + func preparePositionForDisplay(_ position: TextLineStorage.TextLinePosition) -> CGFloat { + guard let textStorage else { return 0 } + let displayData = TextLine.DisplayData( + maxWidth: maxLineLayoutWidth, + lineHeightMultiplier: lineHeightMultiplier, + estimatedLineHeight: estimateLineHeight() + ) + position.data.prepareForDisplay( + displayData: displayData, + range: position.range, + stringRef: textStorage, + markedRanges: markedTextManager.markedRanges(in: position.range), + breakStrategy: lineBreakStrategy + ) + var height: CGFloat = 0 + for fragmentPosition in position.data.lineFragments { + height += fragmentPosition.data.scaledHeight + } + return height + } +} diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift index 6fa1d9c9e..5c9f14059 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift @@ -121,10 +121,7 @@ extension TextLayoutManager { return nil } if linePosition.data.lineFragments.isEmpty { - let newHeight = preparePositionForDisplay(linePosition) - if linePosition.height != newHeight { - delegate?.layoutManagerHeightDidUpdate(newHeight: lineStorage.height) - } + ensureLayoutUntil(offset) } guard let fragmentPosition = linePosition.data.typesetter.lineFragments.getLine( @@ -293,7 +290,7 @@ extension TextLayoutManager { let height = preparePositionForDisplay(linePosition) if height != linePosition.height { lineStorage.update( - atIndex: linePosition.range.location, + atOffset: linePosition.range.location, delta: 0, deltaHeight: height - linePosition.height ) diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+ensureLayout.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+ensureLayout.swift deleted file mode 100644 index e2cf08d15..000000000 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+ensureLayout.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// TextLayoutManager+ensureLayout.swift -// CodeEditTextView -// -// Created by Khan Winter on 4/7/25. -// - -import Foundation - -extension TextLayoutManager { - /// Invalidates and prepares a line position for display. - /// - Parameter position: The line position to prepare. - /// - Returns: The height of the newly laid out line and all it's fragments. - package func preparePositionForDisplay(_ position: TextLineStorage.TextLinePosition) -> CGFloat { - guard let textStorage else { return 0 } - let displayData = TextLine.DisplayData( - maxWidth: maxLineLayoutWidth, - lineHeightMultiplier: lineHeightMultiplier, - estimatedLineHeight: estimateLineHeight() - ) - position.data.prepareForDisplay( - displayData: displayData, - range: position.range, - stringRef: textStorage, - markedRanges: markedTextManager.markedRanges(in: position.range), - breakStrategy: lineBreakStrategy - ) - var height: CGFloat = 0 - for fragmentPosition in position.data.lineFragments { - height += fragmentPosition.data.scaledHeight - } - return height - } -} diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift index 880c28748..45df87e95 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift @@ -84,7 +84,7 @@ public class TextLayoutManager: NSObject { /// Ensures that layout calls are not overlapping, potentially causing layout issues. /// This is used over a lock, as locks in performant code such as this would be detrimental to performance. /// Also only included in debug builds. DO NOT USE for checking if layout is active or not. That is an anti-pattern. - private var isInLayout: Bool = false + var isInLayout: Bool = false #endif weak var layoutView: NSView? @@ -109,13 +109,6 @@ public class TextLayoutManager: NSObject { (delegate?.textViewportSize().width ?? .greatestFiniteMagnitude) - edgeInsets.horizontal } - /// Contains all data required to perform layout on a text line. - private struct LineLayoutData { - let minY: CGFloat - let maxY: CGFloat - let maxWidth: CGFloat - } - // MARK: - Init /// Initialize a text layout manager and prepare it for use. @@ -199,175 +192,6 @@ public class TextLayoutManager: NSObject { /// ``TextLayoutManager/estimateLineHeight()`` is called. private var _estimateLineHeight: CGFloat? - /// Asserts that the caller is not in an active layout pass. - /// See docs on ``isInLayout`` for more details. - private func assertNotInLayout() { - #if DEBUG // This is redundant, but it keeps the flag debug-only too which helps prevent misuse. - assert(!isInLayout, "layoutLines called while already in a layout pass. This is a programmer error.") - #endif - } - - // MARK: - Layout - - /// Lays out all visible lines - func layoutLines(in rect: NSRect? = nil) { // swiftlint:disable:this function_body_length - assertNotInLayout() - guard let visibleRect = rect ?? delegate?.visibleRect, - !isInTransaction, - let textStorage else { - return - } - - // The macOS may call `layout` on the textView while we're laying out fragment views. This ensures the view - // tree modifications caused by this method are atomic, so macOS won't call `layout` while we're already doing - // that - CATransaction.begin() - #if DEBUG - isInLayout = true - #endif - - let minY = max(visibleRect.minY - verticalLayoutPadding, 0) - let maxY = max(visibleRect.maxY + verticalLayoutPadding, 0) - let originalHeight = lineStorage.height - var usedFragmentIDs = Set() - var forceLayout: Bool = needsLayout - var newVisibleLines: Set = [] - var yContentAdjustment: CGFloat = 0 - var maxFoundLineWidth = maxLineWidth - - // Layout all lines, fetching lines lazily as they are laid out. - for linePosition in lineStorage.linesStartingAt(minY, until: maxY).lazy { - guard linePosition.yPos < maxY else { break } - if forceLayout - || linePosition.data.needsLayout(maxWidth: maxLineLayoutWidth) - || !visibleLineIds.contains(linePosition.data.id) { - let lineSize = layoutLine( - linePosition, - textStorage: textStorage, - layoutData: LineLayoutData(minY: minY, maxY: maxY, maxWidth: maxLineLayoutWidth), - laidOutFragmentIDs: &usedFragmentIDs - ) - if lineSize.height != linePosition.height { - lineStorage.update( - atIndex: linePosition.range.location, - delta: 0, - deltaHeight: lineSize.height - linePosition.height - ) - // If we've updated a line's height, force re-layout for the rest of the pass. - forceLayout = true - - if linePosition.yPos < minY { - // Adjust the scroll position by the difference between the new height and old. - yContentAdjustment += lineSize.height - linePosition.height - } - } - if maxFoundLineWidth < lineSize.width { - maxFoundLineWidth = lineSize.width - } - } else { - // Make sure the used fragment views aren't dequeued. - usedFragmentIDs.formUnion(linePosition.data.lineFragments.map(\.data.id)) - } - newVisibleLines.insert(linePosition.data.id) - } - - #if DEBUG - isInLayout = false - #endif - CATransaction.commit() - - // Enqueue any lines not used in this layout pass. - viewReuseQueue.enqueueViews(notInSet: usedFragmentIDs) - - // Update the visible lines with the new set. - visibleLineIds = newVisibleLines - - // These are fine to update outside of `isInLayout` as our internal data structures are finalized at this point - // so laying out again won't break our line storage or visible line. - - if maxFoundLineWidth > maxLineWidth { - maxLineWidth = maxFoundLineWidth - } - - if yContentAdjustment != 0 { - delegate?.layoutManagerYAdjustment(yContentAdjustment) - } - - if originalHeight != lineStorage.height || layoutView?.frame.size.height != lineStorage.height { - delegate?.layoutManagerHeightDidUpdate(newHeight: lineStorage.height) - } - - needsLayout = false - } - - /// Lays out a single text line. - /// - Parameters: - /// - position: The line position from storage to use for layout. - /// - textStorage: The text storage object to use for text info. - /// - layoutData: The information required to perform layout for the given line. - /// - laidOutFragmentIDs: Updated by this method as line fragments are laid out. - /// - Returns: A `CGSize` representing the max width and total height of the laid out portion of the line. - private func layoutLine( - _ position: TextLineStorage.TextLinePosition, - textStorage: NSTextStorage, - layoutData: LineLayoutData, - laidOutFragmentIDs: inout Set - ) -> CGSize { - let lineDisplayData = TextLine.DisplayData( - maxWidth: layoutData.maxWidth, - lineHeightMultiplier: lineHeightMultiplier, - estimatedLineHeight: estimateLineHeight() - ) - - let line = position.data - line.prepareForDisplay( - displayData: lineDisplayData, - range: position.range, - stringRef: textStorage, - markedRanges: markedTextManager.markedRanges(in: position.range), - breakStrategy: lineBreakStrategy - ) - - if position.range.isEmpty { - return CGSize(width: 0, height: estimateLineHeight()) - } - - var height: CGFloat = 0 - var width: CGFloat = 0 - let relativeMinY = max(layoutData.minY - position.yPos, 0) - let relativeMaxY = max(layoutData.maxY - position.yPos, relativeMinY) - - for lineFragmentPosition in line.lineFragments.linesStartingAt( - relativeMinY, - until: relativeMaxY - ) { - let lineFragment = lineFragmentPosition.data - - layoutFragmentView(for: lineFragmentPosition, at: position.yPos + lineFragmentPosition.yPos) - - width = max(width, lineFragment.width) - height += lineFragment.scaledHeight - laidOutFragmentIDs.insert(lineFragment.id) - } - - return CGSize(width: width, height: height) - } - - /// Lays out a line fragment view for the given line fragment at the specified y value. - /// - Parameters: - /// - lineFragment: The line fragment position to lay out a view for. - /// - yPos: The y value at which the line should begin. - private func layoutFragmentView( - for lineFragment: TextLineStorage.TextLinePosition, - at yPos: CGFloat - ) { - let view = viewReuseQueue.getOrCreateView(forKey: lineFragment.data.id) - view.setLineFragment(lineFragment.data) - view.frame.origin = CGPoint(x: edgeInsets.left, y: yPos) - layoutView?.addSubview(view) - view.needsDisplay = true - } - deinit { lineStorage.removeAll() layoutView = nil diff --git a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage.swift b/Sources/CodeEditTextView/TextLineStorage/TextLineStorage.swift index 55a78d5cd..72b94effd 100644 --- a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage.swift +++ b/Sources/CodeEditTextView/TextLineStorage/TextLineStorage.swift @@ -190,26 +190,29 @@ public final class TextLineStorage { /// - Complexity `O(m log n)` where `m` is the number of lines that need to be deleted as a result of this update. /// and `n` is the number of lines stored in the tree. /// - Parameters: - /// - index: The index where the edit began + /// - offset: The offset where the edit began /// - delta: The change in length of the document. Negative for deletes, positive for insertions. /// - deltaHeight: The change in height of the document. - public func update(atIndex index: Int, delta: Int, deltaHeight: CGFloat) { - assert(index >= 0 && index <= self.length, "Invalid index, expected between 0 and \(self.length). Got \(index)") + public func update(atOffset offset: Int, delta: Int, deltaHeight: CGFloat) { + assert( + offset >= 0 && offset <= self.length, + "Invalid index, expected between 0 and \(self.length). Got \(offset)" + ) assert(delta != 0 || deltaHeight != 0, "Delta must be non-0") let position: NodePosition? - if index == self.length { // Updates at the end of the document are valid + if offset == self.length { // Updates at the end of the document are valid position = lastNode } else { - position = search(for: index) + position = search(for: offset) } guard let position else { - assertionFailure("No line found at index \(index)") + assertionFailure("No line found at index \(offset)") return } if delta < 0 { assert( - index - position.textPos > delta, - "Delta too large. Deleting \(-delta) from line at position \(index) extends beyond the line's range." + offset - position.textPos > delta, + "Delta too large. Deleting \(-delta) from line at position \(offset) extends beyond the line's range." ) } length += delta diff --git a/Sources/CodeEditTextView/TextView/TextView+Layout.swift b/Sources/CodeEditTextView/TextView/TextView+Layout.swift index a2579c855..c0a700aec 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Layout.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Layout.swift @@ -8,6 +8,11 @@ import Foundation extension TextView { + override public func layout() { + super.layout() + layoutManager.layoutLines() + } + open override class var isCompatibleWithResponsiveScrolling: Bool { true } diff --git a/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift b/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift index af07527fe..9befba72a 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift @@ -8,11 +8,6 @@ import AppKit extension TextView { - override public func layout() { - layoutManager.layoutLines() - super.layout() - } - override public func viewWillMove(toWindow newWindow: NSWindow?) { super.viewWillMove(toWindow: newWindow) layoutManager.layoutLines() diff --git a/Sources/CodeEditTextView/TextView/TextView+SetText.swift b/Sources/CodeEditTextView/TextView/TextView+SetText.swift index 7581dbcd7..a3f064857 100644 --- a/Sources/CodeEditTextView/TextView/TextView+SetText.swift +++ b/Sources/CodeEditTextView/TextView/TextView+SetText.swift @@ -27,9 +27,16 @@ extension TextView { textStorage.addAttributes(typingAttributes, range: documentRange) layoutManager.textStorage = textStorage layoutManager.reset() + storageDelegate.addDelegate(layoutManager) selectionManager.textStorage = textStorage selectionManager.setSelectedRanges(selectionManager.textSelections.map { $0.range }) + NotificationCenter.default.post( + Notification( + name: TextSelectionManager.selectionChangedNotification, + object: selectionManager + ) + ) _undoManager?.clearStack() diff --git a/Tests/CodeEditTextViewTests/TextLayoutLineStorageTests.swift b/Tests/CodeEditTextViewTests/TextLayoutLineStorageTests.swift index 1b613199b..30b9376de 100644 --- a/Tests/CodeEditTextViewTests/TextLayoutLineStorageTests.swift +++ b/Tests/CodeEditTextViewTests/TextLayoutLineStorageTests.swift @@ -89,7 +89,7 @@ final class TextLayoutLineStorageTests: XCTestCase { // Single Element tree.insert(line: TextLine(), atOffset: 0, length: 1, height: 1.0) - tree.update(atIndex: 0, delta: 20, deltaHeight: 5.0) + tree.update(atOffset: 0, delta: 20, deltaHeight: 5.0) XCTAssertEqual(tree.length, 21, "Tree length incorrect") XCTAssertEqual(tree.count, 1, "Tree count incorrect") XCTAssertEqual(tree.height, 6, "Tree height incorrect") @@ -98,7 +98,7 @@ final class TextLayoutLineStorageTests: XCTestCase { // Update First tree = createBalancedTree() - tree.update(atIndex: 0, delta: 12, deltaHeight: -0.5) + tree.update(atOffset: 0, delta: 12, deltaHeight: -0.5) XCTAssertEqual(tree.height, 14.5, "Tree height incorrect") XCTAssertEqual(tree.count, 15, "Tree count changed") XCTAssertEqual(tree.length, 132, "Tree length incorrect") @@ -107,7 +107,7 @@ final class TextLayoutLineStorageTests: XCTestCase { // Update Last tree = createBalancedTree() - tree.update(atIndex: tree.length - 1, delta: -14, deltaHeight: 1.75) + tree.update(atOffset: tree.length - 1, delta: -14, deltaHeight: 1.75) XCTAssertEqual(tree.height, 16.75, "Tree height incorrect") XCTAssertEqual(tree.count, 15, "Tree count changed") XCTAssertEqual(tree.length, 106, "Tree length incorrect") @@ -116,7 +116,7 @@ final class TextLayoutLineStorageTests: XCTestCase { // Update middle tree = createBalancedTree() - tree.update(atIndex: 45, delta: -9, deltaHeight: 1.0) + tree.update(atOffset: 45, delta: -9, deltaHeight: 1.0) XCTAssertEqual(tree.height, 16.0, "Tree height incorrect") XCTAssertEqual(tree.count, 15, "Tree count changed") XCTAssertEqual(tree.length, 111, "Tree length incorrect") @@ -131,7 +131,7 @@ final class TextLayoutLineStorageTests: XCTestCase { let originalHeight = tree.height let originalCount = tree.count let originalLength = tree.length - tree.update(atIndex: Int.random(in: 0.. Date: Sun, 13 Apr 2025 14:45:18 -0600 Subject: [PATCH 12/42] Update replaceCharacters function (#87) --- .../TextSelectionManager+Update.swift | 4 +- .../TextSelectionManager.swift | 4 +- .../TextView/TextView+ReplaceCharacters.swift | 54 ++++++++++++++++--- 3 files changed, 50 insertions(+), 12 deletions(-) diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Update.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Update.swift index 8ea0c7490..0c319681d 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Update.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Update.swift @@ -39,8 +39,8 @@ extension TextSelectionManager { } } - func notifyAfterEdit() { - updateSelectionViews() + public func notifyAfterEdit(force: Bool = false) { + updateSelectionViews(force: force) NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self)) } } diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift index a56c73a68..9df5922bd 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift @@ -138,7 +138,7 @@ public class TextSelectionManager: NSObject { /// Update all selection cursors. Placing them in the correct position for each text selection and reseting the /// blink timer. - func updateSelectionViews() { + func updateSelectionViews(force: Bool = false) { guard textView?.isFirstResponder ?? false else { return } var didUpdate: Bool = false @@ -197,7 +197,7 @@ public class TextSelectionManager: NSObject { } } - if didUpdate { + if didUpdate || force { delegate?.setNeedsDisplay() cursorTimer.resetTimer() resetSystemCursorTimers() diff --git a/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift b/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift index 951e9977e..6acd0d040 100644 --- a/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift +++ b/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift @@ -13,15 +13,23 @@ extension TextView { /// - Parameters: /// - ranges: The ranges to replace /// - string: The string to insert in the ranges. - public func replaceCharacters(in ranges: [NSRange], with string: String) { + /// - skipUpdateSelection: Skips the selection update step + public func replaceCharacters( + in ranges: [NSRange], + with string: String, + skipUpdateSelection: Bool = false + ) { guard isEditable else { return } NotificationCenter.default.post(name: Self.textWillChangeNotification, object: self) textStorage.beginEditing() + func valid(range: NSRange, string: String) -> Bool { + (!range.isEmpty || !string.isEmpty) && + (delegate?.textView(self, shouldReplaceContentsIn: range, with: string) ?? true) + } + // Can't insert an empty string into an empty range. One must be not empty - for range in ranges.sorted(by: { $0.location > $1.location }) where - (!range.isEmpty || !string.isEmpty) && - (delegate?.textView(self, shouldReplaceContentsIn: range, with: string) ?? true) { + for range in ranges.sorted(by: { $0.location > $1.location }) where valid(range: range, string: string) { delegate?.textView(self, willReplaceContentsIn: range, with: string) _undoManager?.registerMutation( @@ -31,13 +39,17 @@ extension TextView { in: range, with: NSAttributedString(string: string, attributes: typingAttributes) ) - selectionManager.didReplaceCharacters(in: range, replacementLength: (string as NSString).length) + if !skipUpdateSelection { + selectionManager.didReplaceCharacters(in: range, replacementLength: (string as NSString).length) + } delegate?.textView(self, didReplaceContentsIn: range, with: string) } textStorage.endEditing() - selectionManager.notifyAfterEdit() + if !skipUpdateSelection { + selectionManager.notifyAfterEdit() + } NotificationCenter.default.post(name: Self.textDidChangeNotification, object: self) // `scrollSelectionToVisible` is a little expensive to call every time. Instead we just check if the first @@ -51,7 +63,33 @@ extension TextView { /// - Parameters: /// - range: The range to replace. /// - string: The string to insert in the range. - public func replaceCharacters(in range: NSRange, with string: String) { - replaceCharacters(in: [range], with: string) + /// - skipUpdateSelection: Skips the selection update step + public func replaceCharacters( + in range: NSRange, + with string: String, + skipUpdateSelection: Bool = false + ) { + replaceCharacters(in: [range], with: string, skipUpdateSelection: skipUpdateSelection) + } + + /// Iterates over all text selections in the `TextView` and applies the provided callback. + /// + /// This method is typically used when you need to perform an operation on each text selection in the editor, + /// such as adjusting indentation, or other selection-based operations. The callback + /// is executed for each selection, and you can modify the selection or perform related tasks. + /// + /// - Parameters: + /// - callback: A closure that will be executed for each selection in the `TextView`. It takes two parameters: + /// a `TextView` instance, allowing access to the view's properties and methods and a + /// `TextSelectionManager.TextSelection` representing the current selection to operate on. + /// + /// - Note: The selections are iterated in reverse order, so modifications to earlier selections won't affect later + /// ones. The method automatically calls `notifyAfterEdit()` on the `selectionManager` after all + /// selections are processed. + public func editSelections(callback: (TextView, TextSelectionManager.TextSelection) -> Void) { + for textSelection in selectionManager.textSelections.reversed() { + callback(self, textSelection) + } + selectionManager.notifyAfterEdit(force: true) } } From 66e10658b5a0199479b1534f9bef531df34d0a91 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Mon, 14 Apr 2025 12:13:55 -0500 Subject: [PATCH 13/42] Fix Text Disappearing (#88) ### Description Fixes two small bugs: - When deleting a line from the line text storage, a replaced node's left subtree metadata would be replaced, instead of added to when removing that node. This caused the left subtree to be invisible in some cases, leading to broken layout. - Force a layout pass after editing, as was the behavior before the recent layout manager changes. Fixes an issue where editing text would not move the cursor correctly. - Adds a test case to the aforementioned line storage bug. ### Related Issues * closes https://github.com/CodeEditApp/CodeEditSourceEditor/issues/196 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots N/A --- .../TextLineStorage/TextLineStorage.swift | 13 +- .../TextView/TextView+ReplaceCharacters.swift | 6 + .../TextLayoutLineStorageTests.swift | 130 ++++++++++++++++-- 3 files changed, 137 insertions(+), 12 deletions(-) diff --git a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage.swift b/Sources/CodeEditTextView/TextLineStorage/TextLineStorage.swift index 72b94effd..f944fae30 100644 --- a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage.swift +++ b/Sources/CodeEditTextView/TextLineStorage/TextLineStorage.swift @@ -58,6 +58,13 @@ public final class TextLineStorage { public init() { } + init(root: Node, count: Int, length: Int, height: CGFloat) { + self.root = root + self.count = count + self.length = length + self.height = height + } + // MARK: - Public Methods /// Inserts a new line for the given range. @@ -408,9 +415,9 @@ private extension TextLineStorage { } else { transplant(nodeY, with: nodeY.right) - nodeY.right?.leftSubtreeCount = nodeY.leftSubtreeCount - nodeY.right?.leftSubtreeHeight = nodeY.leftSubtreeHeight - nodeY.right?.leftSubtreeOffset = nodeY.leftSubtreeOffset + nodeY.right?.leftSubtreeCount += nodeY.leftSubtreeCount + nodeY.right?.leftSubtreeHeight += nodeY.leftSubtreeHeight + nodeY.right?.leftSubtreeOffset += nodeY.leftSubtreeOffset nodeY.right = nodeZ.right nodeY.right?.parent = nodeY diff --git a/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift b/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift index 6acd0d040..93fc2e715 100644 --- a/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift +++ b/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift @@ -47,6 +47,12 @@ extension TextView { } textStorage.endEditing() + + // Cause a layout pass now that we've finished editing, if there were any edits. + if !ranges.isEmpty { + layout() + } + if !skipUpdateSelection { selectionManager.notifyAfterEdit() } diff --git a/Tests/CodeEditTextViewTests/TextLayoutLineStorageTests.swift b/Tests/CodeEditTextViewTests/TextLayoutLineStorageTests.swift index 30b9376de..5316f1638 100644 --- a/Tests/CodeEditTextViewTests/TextLayoutLineStorageTests.swift +++ b/Tests/CodeEditTextViewTests/TextLayoutLineStorageTests.swift @@ -7,7 +7,12 @@ fileprivate extension CGFloat { } } -final class TextLayoutLineStorageTests: XCTestCase { +extension UUID: @retroactive Identifiable { + public var id: UUID { self } +} + +final class TextLayoutLineStorageTests: XCTestCase { // swiftlint:disable:this type_body_length + /// Creates a balanced height=3 tree useful for testing and debugging. /// - Returns: A new tree. fileprivate func createBalancedTree() -> TextLineStorage { @@ -20,16 +25,16 @@ final class TextLayoutLineStorageTests: XCTestCase { return tree } + struct ChildData { + let length: Int + let count: Int + let height: CGFloat + } + /// Recursively checks that the given tree has the correct metadata everywhere. /// - Parameter tree: The tree to check. - fileprivate func assertTreeMetadataCorrect(_ tree: TextLineStorage) throws { - struct ChildData { - let length: Int - let count: Int - let height: CGFloat - } - - func checkChildren(_ node: TextLineStorage.Node?) -> ChildData { + fileprivate func assertTreeMetadataCorrect(_ tree: TextLineStorage) throws { + func checkChildren(_ node: TextLineStorage.Node?) -> ChildData { guard let node else { return ChildData(length: 0, count: 0, height: 0.0) } let leftSubtreeData = checkChildren(node.left) let rightSubtreeData = checkChildren(node.right) @@ -272,4 +277,111 @@ final class TextLayoutLineStorageTests: XCTestCase { } } } + + func test_transplantWithExistingLeftNodes() throws { // swiftlint:disable:this function_body_length + typealias Storage = TextLineStorage + typealias Node = TextLineStorage.Node + // Test that when transplanting a node with no left nodes, with a node with left nodes, that + // the resulting tree has valid 'left_' metadata + // 1 + // / \ + // 7 2 + // / + // 3 ← this will be moved, this test ensures 4 retains it's left subtree count + // \ + // 4 + // | | + // 5 6 + + let node5 = Node( + length: 5, + data: UUID(), + leftSubtreeOffset: 0, + leftSubtreeHeight: 0, + leftSubtreeCount: 0, + height: 1, + left: nil, + right: nil, + parent: nil, + color: .black + ) + + let node6 = Node( + length: 6, + data: UUID(), + leftSubtreeOffset: 0, + leftSubtreeHeight: 0, + leftSubtreeCount: 0, + height: 1, + left: nil, + right: nil, + parent: nil, + color: .black + ) + + let node4 = Node( + length: 4, + data: UUID(), + leftSubtreeOffset: 5, + leftSubtreeHeight: 1, + leftSubtreeCount: 1, // node5 is on the left + height: 1, + left: node5, + right: node6, + parent: nil, + color: .black + ) + node5.parent = node4 + node6.parent = node4 + + let node3 = Node( + length: 3, + data: UUID(), + leftSubtreeOffset: 0, + leftSubtreeHeight: 0, + leftSubtreeCount: 0, + height: 1, + left: nil, + right: node4, + parent: nil, + color: .black + ) + node4.parent = node3 + + let node2 = Node( + length: 2, + data: UUID(), + leftSubtreeOffset: 18, + leftSubtreeHeight: 4, + leftSubtreeCount: 4, // node3 is on the left + height: 1, + left: node3, + right: nil, + parent: nil, + color: .black + ) + node3.parent = node2 + + let node7 = Node(length: 7, data: UUID(), height: 1) + + let node1 = Node( + length: 1, + data: UUID(), + leftSubtreeOffset: 7, + leftSubtreeHeight: 1, + leftSubtreeCount: 1, + height: 1, + left: node7, + right: node2, + parent: nil, + color: .black + ) + node2.parent = node1 + + let storage = Storage(root: node1, count: 7, length: 28, height: 7) + + storage.delete(lineAt: 7) // Delete the root + + try assertTreeMetadataCorrect(storage) + } } From 7d24b803e9af8d7fc2110b77f6eae6086303d4d7 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Fri, 18 Apr 2025 09:48:25 -0500 Subject: [PATCH 14/42] Remove Unnecessary Layout Call --- .../TextView/TextView+ReplaceCharacters.swift | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift b/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift index 93fc2e715..9a0c7cec3 100644 --- a/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift +++ b/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift @@ -48,11 +48,6 @@ extension TextView { textStorage.endEditing() - // Cause a layout pass now that we've finished editing, if there were any edits. - if !ranges.isEmpty { - layout() - } - if !skipUpdateSelection { selectionManager.notifyAfterEdit() } From 2603ff1d8b45c2c48b8b06a68b1bd4aee905ee73 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Sat, 19 Apr 2025 12:48:06 -0500 Subject: [PATCH 15/42] Introduce Override Layout Behavior API (#84) ### Description Introduces an API to override how text is laid out by the layout manager. An API consumer can implement an object conforming to the `TextLayoutManagerRenderDelegate` protocol to provide custom behavior. Introduces tests for new APIs. Specific changes: - Created a new `TextLayoutManagerRenderDelegate` which contains optional methods to override layout behavior. All methods are optional, and default to the default implementation. - Updates the layout manager to use these methods where relevant. - Estimated height, line height. - Finding `x` position in a line fragment. - Creating a view to render a line fragment (`LineFragmentView` by default, but the render delegate can give a custom one). - Makes lots of variables and methods public that weren't previously. Since we're allowing using the layout manager outside the context of a text view, these are necessarily public. - `LineFragmentView` is now an `open` class to allow for overriding methods. - Two methods on `LineFragment` have been marked as depreciated (`xPos` and `rectFor`). These were moved to the `TextLayoutManger` to ensure that the new render delegate can inject it's own behavior for both those methods if available. - `TextSelectionManager` - `draw` method is now public, for drawing selections in a custom context. - Updates some methods that were calculating drawing rects to use the layout manager information, rather than text view information. This allows the selection manager's behavior to reflect overridden layout manager behavior. - Documented exactly what `layoutLines` does in `TextLayoutManager`. - Removed two misleading methods. `ensureLayoutUntil` was used once, and it was not being used correctly. `preparePositionForDisplay` was only used by that method. Both of these methods destroyed layout information without recourse, sometimes causing text to just disappear despite a perfectly valid layout pass. - `ensureLayoutUntil` could be added back, but needs to be implemented in a way that's additive, rather than removing layout information. - Removing these changes didn't effect the ability to jump to scroll positions, or emphasize text ranges. ### Related Issues * https://github.com/CodeEditApp/CodeEditSourceEditor/issues/33 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots --- .../Extensions/NSRange+/NSRange+init.swift | 2 +- .../MarkedTextManager/MarkedRanges.swift | 15 ++ .../MarkedTextManager/MarkedTextManager.swift | 7 - .../TextLayoutManager+Layout.swift | 154 +++++++++++------- .../TextLayoutManager+Public.swift | 68 +++----- .../TextLayoutManager/TextLayoutManager.swift | 44 ++--- .../TextLayoutManagerDelegate.swift | 18 ++ .../TextLayoutManagerRenderDelegate.swift | 60 +++++++ .../TextLine/LineFragment.swift | 28 +++- .../TextLine/LineFragmentView.swift | 17 +- .../CodeEditTextView/TextLine/TextLine.swift | 29 +++- .../TextLine/Typesetter.swift | 20 ++- .../TextSelectionManager+Draw.swift | 2 +- .../TextSelectionManager+FillRects.swift | 2 +- .../TextSelectionManager.swift | 2 +- .../TextView/DraggingTextRenderer.swift | 4 +- .../Utils/ViewReuseQueue.swift | 8 +- ...verridingLayoutManagerRenderingTests.swift | 114 +++++++++++++ .../TypesetterTests.swift | 6 + 19 files changed, 429 insertions(+), 171 deletions(-) create mode 100644 Sources/CodeEditTextView/MarkedTextManager/MarkedRanges.swift create mode 100644 Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerDelegate.swift create mode 100644 Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerRenderDelegate.swift create mode 100644 Tests/CodeEditTextViewTests/OverridingLayoutManagerRenderingTests.swift diff --git a/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+init.swift b/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+init.swift index a9dc211a2..0c8c8e6a0 100644 --- a/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+init.swift +++ b/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+init.swift @@ -7,7 +7,7 @@ import Foundation -extension NSRange { +public extension NSRange { @inline(__always) init(start: Int, end: Int) { self.init(location: start, length: end - start) diff --git a/Sources/CodeEditTextView/MarkedTextManager/MarkedRanges.swift b/Sources/CodeEditTextView/MarkedTextManager/MarkedRanges.swift new file mode 100644 index 000000000..3cfcdbafd --- /dev/null +++ b/Sources/CodeEditTextView/MarkedTextManager/MarkedRanges.swift @@ -0,0 +1,15 @@ +// +// MarkedRanges.swift +// CodeEditTextView +// +// Created by Khan Winter on 4/17/25. +// + +import AppKit + +/// Struct for passing attribute and range information easily down into line fragments, typesetters without +/// requiring a reference to the marked text manager. +public struct MarkedRanges { + let ranges: [NSRange] + let attributes: [NSAttributedString.Key: Any] +} diff --git a/Sources/CodeEditTextView/MarkedTextManager/MarkedTextManager.swift b/Sources/CodeEditTextView/MarkedTextManager/MarkedTextManager.swift index 9c7612913..5270dce8d 100644 --- a/Sources/CodeEditTextView/MarkedTextManager/MarkedTextManager.swift +++ b/Sources/CodeEditTextView/MarkedTextManager/MarkedTextManager.swift @@ -9,13 +9,6 @@ import AppKit /// Manages marked ranges. Not a public API. class MarkedTextManager { - /// Struct for passing attribute and range information easily down into line fragments, typesetters w/o - /// requiring a reference to the marked text manager. - struct MarkedRanges { - let ranges: [NSRange] - let attributes: [NSAttributedString.Key: Any] - } - /// All marked ranges being tracked. private(set) var markedRanges: [NSRange] = [] diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift index 764b1ec92..b90c18b46 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift @@ -15,19 +15,53 @@ extension TextLayoutManager { let maxWidth: CGFloat } - /// Asserts that the caller is not in an active layout pass. - /// See docs on ``isInLayout`` for more details. - private func assertNotInLayout() { -#if DEBUG // This is redundant, but it keeps the flag debug-only too which helps prevent misuse. - assert(!isInLayout, "layoutLines called while already in a layout pass. This is a programmer error.") -#endif - } - - // MARK: - Layout + // MARK: - Layout Lines /// Lays out all visible lines - func layoutLines(in rect: NSRect? = nil) { // swiftlint:disable:this function_body_length - assertNotInLayout() + /// + /// ## Overview Of The Layout Routine + /// + /// The basic premise of this method is that it loops over all lines in the given rect (defaults to the visible + /// rect), checks if the line needs a layout calculation, and performs layout on the line if it does. + /// + /// The thing that makes this layout method so fast is the second point, checking if a line needs layout. To + /// determine if a line needs a layout pass, the layout manager can check three things: + /// - **1** Was the line laid out under the assumption of a different maximum layout width? + /// For instance, if a line was previously broken by the line wrapping setting, it won’t need to wrap once the + /// line wrapping is disabled. This will detect that, and cause the lines to be recalculated. + /// - **2** Was the line previously not visible? This is determined by keeping a set of visible line IDs. If the + /// line does not appear in that set, we can assume it was previously off screen and may need layout. + /// - **3** Was the line entirely laid out? We break up lines into line fragments. When we do layout, we determine + /// all line fragments but don't necessarily place them all in the view. This checks if all line fragments have + /// been placed in the view. If not, we need to place them. + /// + /// Once it has been determined that a line needs layout, we perform layout by recalculating it's line fragments, + /// removing all old line fragment views, and creating new ones for the line. + /// + /// ## Laziness + /// + /// At the end of the layout pass, we clean up any old lines by updating the set of visible line IDs and fragment + /// IDs. Any IDs that no longer appear in those sets are removed to save resources. This facilitates the text view's + /// ability to only render text that is visible and saves tons of resources (similar to the lazy loading of + /// collection or table views). + /// + /// The other important lazy attribute is the line iteration. Line iteration is done lazily. As we iterate + /// through lines and potentially update their heights, the next line is only queried for *after* the updates are + /// finished. + /// + /// ## Reentry + /// + /// An important thing to note is that this method cannot be reentered. If a layout pass has begun while a layout + /// pass is already ongoing, internal data structures will be broken. In debug builds, this is checked with a simple + /// boolean and assertion. + /// + /// To help ensure this property, all view modifications are performed within a `CATransaction`. This guarantees + /// that macOS calls `layout` on any related views only after we’ve finished inserting and removing line fragment + /// views. Otherwise, inserting a line fragment view could trigger a layout pass prematurely and cause this method + /// to re-enter. + /// - Warning: This is probably not what you're looking for. If you need to invalidate layout, or update lines, this + /// is not the way to do so. This should only be called when macOS performs layout. + public func layoutLines(in rect: NSRect? = nil) { // swiftlint:disable:this function_body_length guard let visibleRect = rect ?? delegate?.visibleRect, !isInTransaction, let textStorage else { @@ -38,9 +72,7 @@ extension TextLayoutManager { // tree modifications caused by this method are atomic, so macOS won't call `layout` while we're already doing // that CATransaction.begin() -#if DEBUG - isInLayout = true -#endif + layoutLock.lock() let minY = max(visibleRect.minY - verticalLayoutPadding, 0) let maxY = max(visibleRect.maxY + verticalLayoutPadding, 0) @@ -53,10 +85,13 @@ extension TextLayoutManager { // Layout all lines, fetching lines lazily as they are laid out. for linePosition in lineStorage.linesStartingAt(minY, until: maxY).lazy { - guard linePosition.yPos < maxY else { break } - if forceLayout - || linePosition.data.needsLayout(maxWidth: maxLineLayoutWidth) - || !visibleLineIds.contains(linePosition.data.id) { + guard linePosition.yPos < maxY else { continue } + // Three ways to determine if a line needs to be re-calculated. + let changedWidth = linePosition.data.needsLayout(maxWidth: maxLineLayoutWidth) + let wasNotVisible = !visibleLineIds.contains(linePosition.data.id) + let lineNotEntirelyLaidOut = linePosition.height != linePosition.data.lineFragments.height + + if forceLayout || changedWidth || wasNotVisible || lineNotEntirelyLaidOut { let lineSize = layoutLine( linePosition, textStorage: textStorage, @@ -87,19 +122,19 @@ extension TextLayoutManager { newVisibleLines.insert(linePosition.data.id) } -#if DEBUG - isInLayout = false -#endif - CATransaction.commit() - // Enqueue any lines not used in this layout pass. viewReuseQueue.enqueueViews(notInSet: usedFragmentIDs) // Update the visible lines with the new set. visibleLineIds = newVisibleLines - // These are fine to update outside of `isInLayout` as our internal data structures are finalized at this point - // so laying out again won't break our line storage or visible line. + // The delegate methods below may call another layout pass, make sure we don't send it into a loop of forced + // layout. + needsLayout = false + + // Commit the view tree changes we just made. + layoutLock.unlock() + CATransaction.commit() if maxFoundLineWidth > maxLineWidth { maxLineWidth = maxFoundLineWidth @@ -112,10 +147,10 @@ extension TextLayoutManager { if originalHeight != lineStorage.height || layoutView?.frame.size.height != lineStorage.height { delegate?.layoutManagerHeightDidUpdate(newHeight: lineStorage.height) } - - needsLayout = false } + // MARK: - Layout Single Line + /// Lays out a single text line. /// - Parameters: /// - position: The line position from storage to use for layout. @@ -136,13 +171,24 @@ extension TextLayoutManager { ) let line = position.data - line.prepareForDisplay( - displayData: lineDisplayData, - range: position.range, - stringRef: textStorage, - markedRanges: markedTextManager.markedRanges(in: position.range), - breakStrategy: lineBreakStrategy - ) + if let renderDelegate { + renderDelegate.prepareForDisplay( + textLine: line, + displayData: lineDisplayData, + range: position.range, + stringRef: textStorage, + markedRanges: markedTextManager.markedRanges(in: position.range), + breakStrategy: lineBreakStrategy + ) + } else { + line.prepareForDisplay( + displayData: lineDisplayData, + range: position.range, + stringRef: textStorage, + markedRanges: markedTextManager.markedRanges(in: position.range), + breakStrategy: lineBreakStrategy + ) + } if position.range.isEmpty { return CGSize(width: 0, height: estimateLineHeight()) @@ -153,10 +199,11 @@ extension TextLayoutManager { let relativeMinY = max(layoutData.minY - position.yPos, 0) let relativeMaxY = max(layoutData.maxY - position.yPos, relativeMinY) - for lineFragmentPosition in line.lineFragments.linesStartingAt( - relativeMinY, - until: relativeMaxY - ) { +// for lineFragmentPosition in line.lineFragments.linesStartingAt( +// relativeMinY, +// until: relativeMaxY +// ) { + for lineFragmentPosition in line.lineFragments { let lineFragment = lineFragmentPosition.data layoutFragmentView(for: lineFragmentPosition, at: position.yPos + lineFragmentPosition.yPos) @@ -169,6 +216,8 @@ extension TextLayoutManager { return CGSize(width: width, height: height) } + // MARK: - Layout Fragment + /// Lays out a line fragment view for the given line fragment at the specified y value. /// - Parameters: /// - lineFragment: The line fragment position to lay out a view for. @@ -177,34 +226,13 @@ extension TextLayoutManager { for lineFragment: TextLineStorage.TextLinePosition, at yPos: CGFloat ) { - let view = viewReuseQueue.getOrCreateView(forKey: lineFragment.data.id) + let view = viewReuseQueue.getOrCreateView(forKey: lineFragment.data.id) { + renderDelegate?.lineFragmentView(for: lineFragment.data) ?? LineFragmentView() + } + view.translatesAutoresizingMaskIntoConstraints = false view.setLineFragment(lineFragment.data) view.frame.origin = CGPoint(x: edgeInsets.left, y: yPos) layoutView?.addSubview(view) view.needsDisplay = true } - - /// Invalidates and prepares a line position for display. - /// - Parameter position: The line position to prepare. - /// - Returns: The height of the newly laid out line and all it's fragments. - func preparePositionForDisplay(_ position: TextLineStorage.TextLinePosition) -> CGFloat { - guard let textStorage else { return 0 } - let displayData = TextLine.DisplayData( - maxWidth: maxLineLayoutWidth, - lineHeightMultiplier: lineHeightMultiplier, - estimatedLineHeight: estimateLineHeight() - ) - position.data.prepareForDisplay( - displayData: displayData, - range: position.range, - stringRef: textStorage, - markedRanges: markedTextManager.markedRanges(in: position.range), - breakStrategy: lineBreakStrategy - ) - var height: CGFloat = 0 - for fragmentPosition in position.data.lineFragments { - height += fragmentPosition.data.scaledHeight - } - return height - } } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift index 5c9f14059..c79b8b5f5 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift @@ -120,9 +120,6 @@ extension TextLayoutManager { guard let linePosition = lineStorage.getLine(atOffset: offset) else { return nil } - if linePosition.data.lineFragments.isEmpty { - ensureLayoutUntil(offset) - } guard let fragmentPosition = linePosition.data.typesetter.lineFragments.getLine( atOffset: offset - linePosition.range.location @@ -137,15 +134,13 @@ extension TextLayoutManager { : (textStorage?.string as? NSString)?.rangeOfComposedCharacterSequence(at: offset) ?? NSRange(location: offset, length: 0) - let minXPos = CTLineGetOffsetForStringIndex( - fragmentPosition.data.ctLine, - realRange.location - linePosition.range.location, // CTLines have the same relative range as the line - nil + let minXPos = characterXPosition( + in: fragmentPosition.data, + for: realRange.location - linePosition.range.location ) - let maxXPos = CTLineGetOffsetForStringIndex( - fragmentPosition.data.ctLine, - realRange.max - linePosition.range.location, - nil + let maxXPos = characterXPosition( + in: fragmentPosition.data, + for: realRange.max - linePosition.range.location ) return CGRect( @@ -162,7 +157,6 @@ extension TextLayoutManager { /// - line: The line to calculate rects for. /// - Returns: Multiple bounding rects. Will return one rect for each line fragment that overlaps the given range. public func rectsFor(range: NSRange) -> [CGRect] { - ensureLayoutUntil(range.max) return lineStorage.linesInRange(range).flatMap { self.rectsFor(range: range, in: $0) } } @@ -187,7 +181,7 @@ extension TextLayoutManager { var rects: [CGRect] = [] for fragmentPosition in line.data.lineFragments.linesInRange(relativeRange) { guard let intersectingRange = fragmentPosition.range.intersection(relativeRange) else { continue } - let fragmentRect = fragmentPosition.data.rectFor(range: intersectingRange) + let fragmentRect = characterRect(in: fragmentPosition.data, for: intersectingRange) guard fragmentRect.width > 0 else { continue } rects.append( CGRect( @@ -270,35 +264,25 @@ extension TextLayoutManager { return nil } - // MARK: - Ensure Layout - - /// Forces layout calculation for all lines up to and including the given offset. - /// - Parameter offset: The offset to ensure layout until. - public func ensureLayoutUntil(_ offset: Int) { - guard let linePosition = lineStorage.getLine(atOffset: offset), - let visibleRect = delegate?.visibleRect, - visibleRect.maxY < linePosition.yPos + linePosition.height, - let startingLinePosition = lineStorage.getLine(atPosition: visibleRect.minY) - else { - return - } - let originalHeight = lineStorage.height - - for linePosition in lineStorage.linesInRange( - NSRange(start: startingLinePosition.range.location, end: linePosition.range.max) - ) { - let height = preparePositionForDisplay(linePosition) - if height != linePosition.height { - lineStorage.update( - atOffset: linePosition.range.location, - delta: 0, - deltaHeight: height - linePosition.height - ) - } - } + // MARK: - Line Fragment Rects - if originalHeight != lineStorage.height || layoutView?.frame.size.height != lineStorage.height { - delegate?.layoutManagerHeightDidUpdate(newHeight: lineStorage.height) - } + /// Finds the x position of the offset in the string the fragment represents. + /// - Parameters: + /// - lineFragment: The line fragment to calculate for. + /// - offset: The offset, relative to the start of the *line*. + /// - Returns: The x position of the character in the drawn line, from the left. + public func characterXPosition(in lineFragment: LineFragment, for offset: Int) -> CGFloat { + renderDelegate?.characterXPosition(in: lineFragment, for: offset) ?? lineFragment._xPos(for: offset) + } + + public func characterRect(in lineFragment: LineFragment, for range: NSRange) -> CGRect { + let minXPos = characterXPosition(in: lineFragment, for: range.lowerBound) + let maxXPos = characterXPosition(in: lineFragment, for: range.upperBound) + return CGRect( + x: minXPos, + y: 0, + width: maxXPos - minXPos, + height: lineFragment.scaledHeight + ).pixelAligned } } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift index 45df87e95..7cf7b0428 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift @@ -8,16 +8,6 @@ import Foundation import AppKit -public protocol TextLayoutManagerDelegate: AnyObject { - func layoutManagerHeightDidUpdate(newHeight: CGFloat) - func layoutManagerMaxWidthDidChange(newWidth: CGFloat) - func layoutManagerTypingAttributes() -> [NSAttributedString.Key: Any] - func textViewportSize() -> CGSize - func layoutManagerYAdjustment(_ yAdjustment: CGFloat) - - var visibleRect: NSRect { get } -} - /// The text layout manager manages laying out lines in a code document. public class TextLayoutManager: NSObject { // MARK: - Public Properties @@ -65,6 +55,15 @@ public class TextLayoutManager: NSObject { } } + public weak var renderDelegate: TextLayoutManagerRenderDelegate? { + didSet { + // Rebuild using potentially overridden behavior. + _estimateLineHeight = nil + lineStorage.removeAll() + prepareTextLines() + } + } + // MARK: - Internal weak var textStorage: NSTextStorage? @@ -79,13 +78,10 @@ public class TextLayoutManager: NSObject { public var isInTransaction: Bool { transactionCounter > 0 } - #if DEBUG + /// Guard variable for an assertion check in debug builds. /// Ensures that layout calls are not overlapping, potentially causing layout issues. - /// This is used over a lock, as locks in performant code such as this would be detrimental to performance. - /// Also only included in debug builds. DO NOT USE for checking if layout is active or not. That is an anti-pattern. - var isInLayout: Bool = false - #endif + var layoutLock: NSLock = NSLock() weak var layoutView: NSView? @@ -100,12 +96,12 @@ public class TextLayoutManager: NSObject { /// The maximum width available to lay out lines in, used to determine how much space is available for laying out /// lines. Evals to `.greatestFiniteMagnitude` when ``wrapLines`` is `false`. - var maxLineLayoutWidth: CGFloat { + public var maxLineLayoutWidth: CGFloat { wrapLines ? wrapLinesWidth : .greatestFiniteMagnitude } /// The width of the space available to draw text fragments when wrapping lines. - var wrapLinesWidth: CGFloat { + public var wrapLinesWidth: CGFloat { (delegate?.textViewportSize().width ?? .greatestFiniteMagnitude) - edgeInsets.horizontal } @@ -118,18 +114,20 @@ public class TextLayoutManager: NSObject { /// - wrapLines: Set to true to wrap lines to the visible editor width. /// - textView: The view to layout text fragments in. /// - delegate: A delegate for the layout manager. - init( + public init( textStorage: NSTextStorage, lineHeightMultiplier: CGFloat, wrapLines: Bool, textView: NSView, - delegate: TextLayoutManagerDelegate? + delegate: TextLayoutManagerDelegate?, + renderDelegate: TextLayoutManagerRenderDelegate? = nil ) { self.textStorage = textStorage self.lineHeightMultiplier = lineHeightMultiplier self.wrapLines = wrapLines self.layoutView = textView self.delegate = delegate + self.renderDelegate = renderDelegate super.init() prepareTextLines() } @@ -175,6 +173,9 @@ public class TextLayoutManager: NSObject { public func estimateLineHeight() -> CGFloat { if let _estimateLineHeight { return _estimateLineHeight + } else if let estimate = renderDelegate?.estimatedLineHeight() { + _estimateLineHeight = estimate + return estimate } else { let string = NSAttributedString(string: "0", attributes: delegate?.layoutManagerTypingAttributes() ?? [:]) let typesetter = CTTypesetterCreateWithAttributedString(string) @@ -183,8 +184,9 @@ public class TextLayoutManager: NSObject { var descent: CGFloat = 0 var leading: CGFloat = 0 CTLineGetTypographicBounds(ctLine, &ascent, &descent, &leading) - _estimateLineHeight = (ascent + descent + leading) * lineHeightMultiplier - return _estimateLineHeight! + let height = (ascent + descent + leading) * lineHeightMultiplier + _estimateLineHeight = height + return height } } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerDelegate.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerDelegate.swift new file mode 100644 index 000000000..b6850b3cc --- /dev/null +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerDelegate.swift @@ -0,0 +1,18 @@ +// +// TextLayoutManagerDelegate.swift +// CodeEditTextView +// +// Created by Khan Winter on 4/10/25. +// + +import AppKit + +public protocol TextLayoutManagerDelegate: AnyObject { + func layoutManagerHeightDidUpdate(newHeight: CGFloat) + func layoutManagerMaxWidthDidChange(newWidth: CGFloat) + func layoutManagerTypingAttributes() -> [NSAttributedString.Key: Any] + func textViewportSize() -> CGSize + func layoutManagerYAdjustment(_ yAdjustment: CGFloat) + + var visibleRect: NSRect { get } +} diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerRenderDelegate.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerRenderDelegate.swift new file mode 100644 index 000000000..6e366d3c5 --- /dev/null +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerRenderDelegate.swift @@ -0,0 +1,60 @@ +// +// TextLayoutManagerRenderDelegate.swift +// CodeEditTextView +// +// Created by Khan Winter on 4/10/25. +// + +import AppKit + +/// Provide an instance of this class to the ``TextLayoutManager`` to override how the layout manager performs layout +/// and display for text lines and fragments. +/// +/// All methods on this protocol are optional, and default to the default behavior. +public protocol TextLayoutManagerRenderDelegate: AnyObject { + func prepareForDisplay( // swiftlint:disable:this function_parameter_count + textLine: TextLine, + displayData: TextLine.DisplayData, + range: NSRange, + stringRef: NSTextStorage, + markedRanges: MarkedRanges?, + breakStrategy: LineBreakStrategy + ) + + func estimatedLineHeight() -> CGFloat? + + func lineFragmentView(for lineFragment: LineFragment) -> LineFragmentView + + func characterXPosition(in lineFragment: LineFragment, for offset: Int) -> CGFloat +} + +public extension TextLayoutManagerRenderDelegate { + func prepareForDisplay( // swiftlint:disable:this function_parameter_count + textLine: TextLine, + displayData: TextLine.DisplayData, + range: NSRange, + stringRef: NSTextStorage, + markedRanges: MarkedRanges?, + breakStrategy: LineBreakStrategy + ) { + textLine.prepareForDisplay( + displayData: displayData, + range: range, + stringRef: stringRef, + markedRanges: markedRanges, + breakStrategy: breakStrategy + ) + } + + func estimatedLineHeight() -> CGFloat? { + nil + } + + func lineFragmentView(for lineFragment: LineFragment) -> LineFragmentView { + LineFragmentView() + } + + func characterXPosition(in lineFragment: LineFragment, for offset: Int) -> CGFloat { + lineFragment._xPos(for: offset) + } +} diff --git a/Sources/CodeEditTextView/TextLine/LineFragment.swift b/Sources/CodeEditTextView/TextLine/LineFragment.swift index f4ace5689..923848ab1 100644 --- a/Sources/CodeEditTextView/TextLine/LineFragment.swift +++ b/Sources/CodeEditTextView/TextLine/LineFragment.swift @@ -12,11 +12,12 @@ import CodeEditTextViewObjC /// fragments, and any lines that need to be broken due to width constraints will contain more than one fragment. public final class LineFragment: Identifiable, Equatable { public let id = UUID() - private(set) public var ctLine: CTLine - public let width: CGFloat - public let height: CGFloat - public let descent: CGFloat - public let scaledHeight: CGFloat + public let documentRange: NSRange + public var ctLine: CTLine + public var width: CGFloat + public var height: CGFloat + public var descent: CGFloat + public var scaledHeight: CGFloat /// The difference between the real text height and the scaled height public var heightDifference: CGFloat { @@ -24,12 +25,14 @@ public final class LineFragment: Identifiable, Equatable { } init( + documentRange: NSRange, ctLine: CTLine, width: CGFloat, height: CGFloat, descent: CGFloat, lineHeightMultiplier: CGFloat ) { + self.documentRange = documentRange self.ctLine = ctLine self.width = width self.height = height @@ -44,7 +47,17 @@ public final class LineFragment: Identifiable, Equatable { /// Finds the x position of the offset in the string the fragment represents. /// - Parameter offset: The offset, relative to the start of the *line*. /// - Returns: The x position of the character in the drawn line, from the left. - public func xPos(for offset: Int) -> CGFloat { + @available(*, deprecated, renamed: "layoutManager.characterXPosition(in:)", message: "Moved to layout manager") + public func xPos(for offset: Int) -> CGFloat { _xPos(for: offset) } + + /// Finds the x position of the offset in the string the fragment represents. + /// + /// Underscored, because although this needs to be accessible outside this class, the relevant layout manager method + /// should be used. + /// + /// - Parameter offset: The offset, relative to the start of the *line*. + /// - Returns: The x position of the character in the drawn line, from the left. + func _xPos(for offset: Int) -> CGFloat { return CTLineGetOffsetForStringIndex(ctLine, offset, nil) } @@ -81,7 +94,8 @@ public final class LineFragment: Identifiable, Equatable { /// Calculates the drawing rect for a given range. /// - Parameter range: The range to calculate the bounds for, relative to the line. /// - Returns: A rect that contains the text contents in the given range. - func rectFor(range: NSRange) -> CGRect { + @available(*, deprecated, renamed: "layoutManager.characterRect(in:)", message: "Moved to layout manager") + public func rectFor(range: NSRange) -> CGRect { let minXPos = CTLineGetOffsetForStringIndex(ctLine, range.lowerBound, nil) let maxXPos = CTLineGetOffsetForStringIndex(ctLine, range.upperBound, nil) return CGRect( diff --git a/Sources/CodeEditTextView/TextLine/LineFragmentView.swift b/Sources/CodeEditTextView/TextLine/LineFragmentView.swift index 3536fd4e0..89b9141dc 100644 --- a/Sources/CodeEditTextView/TextLine/LineFragmentView.swift +++ b/Sources/CodeEditTextView/TextLine/LineFragmentView.swift @@ -8,37 +8,38 @@ import AppKit /// Displays a line fragment. -final class LineFragmentView: NSView { - private weak var lineFragment: LineFragment? +open class LineFragmentView: NSView { + public weak var lineFragment: LineFragment? - override var isFlipped: Bool { + open override var isFlipped: Bool { true } - override var isOpaque: Bool { + open override var isOpaque: Bool { false } - override func hitTest(_ point: NSPoint) -> NSView? { nil } + open override func hitTest(_ point: NSPoint) -> NSView? { nil } /// Prepare the view for reuse, clears the line fragment reference. - override func prepareForReuse() { + open override func prepareForReuse() { super.prepareForReuse() lineFragment = nil } /// Set a new line fragment for this view, updating view size. /// - Parameter newFragment: The new fragment to use. - public func setLineFragment(_ newFragment: LineFragment) { + open func setLineFragment(_ newFragment: LineFragment) { self.lineFragment = newFragment self.frame.size = CGSize(width: newFragment.width, height: newFragment.scaledHeight) } /// Draws the line fragment in the graphics context. - override func draw(_ dirtyRect: NSRect) { + open override func draw(_ dirtyRect: NSRect) { guard let lineFragment, let context = NSGraphicsContext.current?.cgContext else { return } + lineFragment.draw(in: context, yPos: 0.0) } } diff --git a/Sources/CodeEditTextView/TextLine/TextLine.swift b/Sources/CodeEditTextView/TextLine/TextLine.swift index 0bce6307b..9e1ac6289 100644 --- a/Sources/CodeEditTextView/TextLine/TextLine.swift +++ b/Sources/CodeEditTextView/TextLine/TextLine.swift @@ -31,7 +31,15 @@ public final class TextLine: Identifiable, Equatable { /// - Returns: True, if this line has been marked as needing layout using ``TextLine/setNeedsLayout()`` or if the /// line needs to find new line breaks due to a new constraining width. func needsLayout(maxWidth: CGFloat) -> Bool { - needsLayout || maxWidth != self.maxWidth + needsLayout // Force layout + || ( + // Both max widths we're comparing are finite + maxWidth.isFinite + && (self.maxWidth ?? 0.0).isFinite + // We can't use `<` here because we want to calculate layout again if this was previously constrained to a + // small layout size and needs to grow. + && maxWidth != (self.maxWidth ?? 0.0) + ) } /// Prepares the line for display, generating all potential line breaks and calculating the real height of the line. @@ -41,17 +49,18 @@ public final class TextLine: Identifiable, Equatable { /// - stringRef: A reference to the string storage for the document. /// - markedRanges: Any marked ranges in the line. /// - breakStrategy: Determines how line breaks are calculated. - func prepareForDisplay( + public func prepareForDisplay( displayData: DisplayData, range: NSRange, stringRef: NSTextStorage, - markedRanges: MarkedTextManager.MarkedRanges?, + markedRanges: MarkedRanges?, breakStrategy: LineBreakStrategy ) { let string = stringRef.attributedSubstring(from: range) self.maxWidth = displayData.maxWidth typesetter.typeset( string, + documentRange: range, displayData: displayData, breakStrategy: breakStrategy, markedRanges: markedRanges @@ -64,9 +73,15 @@ public final class TextLine: Identifiable, Equatable { } /// Contains all required data to perform a typeset and layout operation on a text line. - struct DisplayData { - let maxWidth: CGFloat - let lineHeightMultiplier: CGFloat - let estimatedLineHeight: CGFloat + public struct DisplayData { + public let maxWidth: CGFloat + public let lineHeightMultiplier: CGFloat + public let estimatedLineHeight: CGFloat + + public init(maxWidth: CGFloat, lineHeightMultiplier: CGFloat, estimatedLineHeight: CGFloat) { + self.maxWidth = maxWidth + self.lineHeightMultiplier = lineHeightMultiplier + self.estimatedLineHeight = estimatedLineHeight + } } } diff --git a/Sources/CodeEditTextView/TextLine/Typesetter.swift b/Sources/CodeEditTextView/TextLine/Typesetter.swift index f05c69c75..0a0afdb44 100644 --- a/Sources/CodeEditTextView/TextLine/Typesetter.swift +++ b/Sources/CodeEditTextView/TextLine/Typesetter.swift @@ -8,21 +8,24 @@ import Foundation import CoreText -final class Typesetter { - var typesetter: CTTypesetter? - var string: NSAttributedString! - var lineFragments = TextLineStorage() +final public class Typesetter { + public var typesetter: CTTypesetter? + public var string: NSAttributedString! + public var documentRange: NSRange? + public var lineFragments = TextLineStorage() // MARK: - Init & Prepare - init() { } + public init() { } - func typeset( + public func typeset( _ string: NSAttributedString, + documentRange: NSRange, displayData: TextLine.DisplayData, breakStrategy: LineBreakStrategy, - markedRanges: MarkedTextManager.MarkedRanges? + markedRanges: MarkedRanges? ) { + self.documentRange = documentRange lineFragments.removeAll() if let markedRanges { let mutableString = NSMutableAttributedString(attributedString: string) @@ -62,6 +65,7 @@ final class Typesetter { // Insert an empty fragment let ctLine = CTTypesetterCreateLine(typesetter, CFRangeMake(0, 0)) let fragment = LineFragment( + documentRange: NSRange(location: (documentRange ?? .notFound).location, length: 0), ctLine: ctLine, width: 0, height: estimatedLineHeight/lineHeightMultiplier, @@ -107,7 +111,9 @@ final class Typesetter { var leading: CGFloat = 0 let width = CGFloat(CTLineGetTypographicBounds(ctLine, &ascent, &descent, &leading)) let height = ascent + descent + leading + let range = NSRange(location: (documentRange ?? .notFound).location + range.location, length: range.length) return LineFragment( + documentRange: range, ctLine: ctLine, width: width, height: height, diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift index e79832fdc..45907d6c1 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift @@ -10,7 +10,7 @@ import AppKit extension TextSelectionManager { /// Draws line backgrounds and selection rects for each selection in the given rect. /// - Parameter rect: The rect to draw in. - func drawSelections(in rect: NSRect) { + public func drawSelections(in rect: NSRect) { guard let context = NSGraphicsContext.current?.cgContext else { return } context.saveGState() var highlightedLines: Set = [] diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift index 204e09ebb..666f9b711 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift @@ -18,7 +18,7 @@ extension TextSelectionManager { /// - Returns: An array of rects that the selection overlaps. func getFillRects(in rect: NSRect, for textSelection: TextSelection) -> [CGRect] { guard let layoutManager, - let range = textSelection.range.intersection(textView?.visibleTextRange ?? .zero) else { + let range = textSelection.range.intersection(delegate?.visibleTextRange ?? .zero) else { return [] } diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift index 9df5922bd..28e8801a2 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift @@ -52,7 +52,7 @@ public class TextSelectionManager: NSObject { weak var delegate: TextSelectionManagerDelegate? var cursorTimer: CursorTimer - init( + public init( layoutManager: TextLayoutManager, textStorage: NSTextStorage, textView: TextView?, diff --git a/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift b/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift index 03fc773e4..b8680f443 100644 --- a/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift +++ b/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift @@ -81,7 +81,7 @@ class DraggingTextRenderer: NSView { // Clear text that's not selected if fragmentRange.contains(selectedRange.lowerBound) { let relativeOffset = selectedRange.lowerBound - line.range.lowerBound - let selectionXPos = fragment.data.xPos(for: relativeOffset) + let selectionXPos = layoutManager.characterXPosition(in: fragment.data, for: relativeOffset) context.clear( CGRect( x: 0.0, @@ -94,7 +94,7 @@ class DraggingTextRenderer: NSView { if fragmentRange.contains(selectedRange.upperBound) { let relativeOffset = selectedRange.upperBound - line.range.lowerBound - let selectionXPos = fragment.data.xPos(for: relativeOffset) + let selectionXPos = layoutManager.characterXPosition(in: fragment.data, for: relativeOffset) context.clear( CGRect( x: selectionXPos, diff --git a/Sources/CodeEditTextView/Utils/ViewReuseQueue.swift b/Sources/CodeEditTextView/Utils/ViewReuseQueue.swift index c969c573c..15a65d014 100644 --- a/Sources/CodeEditTextView/Utils/ViewReuseQueue.swift +++ b/Sources/CodeEditTextView/Utils/ViewReuseQueue.swift @@ -24,14 +24,16 @@ public class ViewReuseQueue { /// If there was no view dequeued for the given key, the returned view will either be a view queued for reuse or a /// new view object. /// - /// - Parameter key: The key for the view to find. + /// - Parameters: + /// - key: The key for the view to find. + /// - createView: A callback that is called to create a new instance of the queued view types. /// - Returns: A view for the given key. - public func getOrCreateView(forKey key: Key) -> View { + public func getOrCreateView(forKey key: Key, createView: () -> View) -> View { let view: View if let usedView = usedViews[key] { view = usedView } else { - view = queuedViews.popFirst() ?? View() + view = queuedViews.popFirst() ?? createView() view.prepareForReuse() usedViews[key] = view } diff --git a/Tests/CodeEditTextViewTests/OverridingLayoutManagerRenderingTests.swift b/Tests/CodeEditTextViewTests/OverridingLayoutManagerRenderingTests.swift new file mode 100644 index 000000000..85a8eb68e --- /dev/null +++ b/Tests/CodeEditTextViewTests/OverridingLayoutManagerRenderingTests.swift @@ -0,0 +1,114 @@ +import Testing +import AppKit +@testable import CodeEditTextView + +class MockRenderDelegate: TextLayoutManagerRenderDelegate { + var prepareForDisplay: (( + _ textLine: TextLine, + _ displayData: TextLine.DisplayData, + _ range: NSRange, + _ stringRef: NSTextStorage, + _ markedRanges: MarkedRanges?, + _ breakStrategy: LineBreakStrategy + ) -> Void)? + + var estimatedLineHeightOverride: (() -> CGFloat)? + + func prepareForDisplay( // swiftlint:disable:this function_parameter_count + textLine: TextLine, + displayData: TextLine.DisplayData, + range: NSRange, + stringRef: NSTextStorage, + markedRanges: MarkedRanges?, + breakStrategy: LineBreakStrategy + ) { + prepareForDisplay?( + textLine, + displayData, + range, + stringRef, + markedRanges, + breakStrategy + ) ?? textLine.prepareForDisplay( + displayData: displayData, + range: range, + stringRef: stringRef, + markedRanges: markedRanges, + breakStrategy: breakStrategy + ) + } + + func estimatedLineHeight() -> CGFloat? { + estimatedLineHeightOverride?() + } +} + +@Suite +@MainActor +struct OverridingLayoutManagerRenderingTests { + let mockDelegate: MockRenderDelegate + let textView: TextView + let textStorage: NSTextStorage + let layoutManager: TextLayoutManager + + init() throws { + textView = TextView(string: "A\nB\nC\nD") + textView.frame = NSRect(x: 0, y: 0, width: 1000, height: 1000) + textStorage = textView.textStorage + layoutManager = try #require(textView.layoutManager) + mockDelegate = MockRenderDelegate() + layoutManager.renderDelegate = mockDelegate + } + + @Test + func overriddenLineHeight() { + mockDelegate.prepareForDisplay = { textLine, displayData, range, stringRef, markedRanges, breakStrategy in + textLine.prepareForDisplay( + displayData: displayData, + range: range, + stringRef: stringRef, + markedRanges: markedRanges, + breakStrategy: breakStrategy + ) + // Update all text fragments to be height = 2.0 + textLine.lineFragments.forEach { fragmentPosition in + let idealHeight: CGFloat = 2.0 + textLine.lineFragments.update( + atOffset: fragmentPosition.index, + delta: 0, + deltaHeight: -(fragmentPosition.height - idealHeight) + ) + fragmentPosition.data.height = 2.0 + fragmentPosition.data.scaledHeight = 2.0 + } + } + + layoutManager.invalidateLayoutForRect(NSRect(x: 0, y: 0, width: 1000, height: 1000)) + layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000)) + + // 4 lines, each 2px tall + #expect(layoutManager.lineStorage.height == 8.0) + + // Edit some text + + textStorage.replaceCharacters(in: NSRange(location: 0, length: 0), with: "0\n1\r\n2\r") + layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000)) + + #expect(layoutManager.lineCount == 7) + #expect(layoutManager.lineStorage.height == 14.0) + layoutManager.lineStorage.validateInternalState() + } + + @Test + func overriddenEstimatedLineHeight() { + // The layout manager should use the estimation from the render delegate, not the font size. + mockDelegate.estimatedLineHeightOverride = { + 1.0 + } + + layoutManager.renderDelegate = mockDelegate + + #expect(layoutManager.estimateLineHeight() == 1.0) + #expect(layoutManager.estimatedHeight() == 4.0) // 4 lines, each 1 high + } +} diff --git a/Tests/CodeEditTextViewTests/TypesetterTests.swift b/Tests/CodeEditTextViewTests/TypesetterTests.swift index 07954a7cf..3b62e8fbe 100644 --- a/Tests/CodeEditTextViewTests/TypesetterTests.swift +++ b/Tests/CodeEditTextViewTests/TypesetterTests.swift @@ -11,6 +11,7 @@ class TypesetterTests: XCTestCase { let typesetter = Typesetter() typesetter.typeset( NSAttributedString(string: "testline\n"), + documentRange: NSRange(location: 0, length: 9), displayData: unlimitedLineWidthDisplayData, breakStrategy: .word, markedRanges: nil @@ -20,6 +21,7 @@ class TypesetterTests: XCTestCase { typesetter.typeset( NSAttributedString(string: "testline\n"), + documentRange: NSRange(location: 0, length: 9), displayData: unlimitedLineWidthDisplayData, breakStrategy: .character, markedRanges: nil @@ -32,6 +34,7 @@ class TypesetterTests: XCTestCase { let typesetter = Typesetter() typesetter.typeset( NSAttributedString(string: "testline\r"), + documentRange: NSRange(location: 0, length: 9), displayData: unlimitedLineWidthDisplayData, breakStrategy: .word, markedRanges: nil @@ -41,6 +44,7 @@ class TypesetterTests: XCTestCase { typesetter.typeset( NSAttributedString(string: "testline\r"), + documentRange: NSRange(location: 0, length: 9), displayData: unlimitedLineWidthDisplayData, breakStrategy: .character, markedRanges: nil @@ -53,6 +57,7 @@ class TypesetterTests: XCTestCase { let typesetter = Typesetter() typesetter.typeset( NSAttributedString(string: "testline\r\n"), + documentRange: NSRange(location: 0, length: 10), displayData: unlimitedLineWidthDisplayData, breakStrategy: .word, markedRanges: nil @@ -62,6 +67,7 @@ class TypesetterTests: XCTestCase { typesetter.typeset( NSAttributedString(string: "testline\r\n"), + documentRange: NSRange(location: 0, length: 10), displayData: unlimitedLineWidthDisplayData, breakStrategy: .character, markedRanges: nil From a5912e60f6bac25cd1cdf8bb532e1125b21cf7f7 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Mon, 21 Apr 2025 10:13:18 -0500 Subject: [PATCH 16/42] Fix Iterator Edge Case (#90) ### Description Fixes an edge case in the line iterators. Adds docs. ### Related Issues N/A ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots N/A --- .../TextLineStorage+Iterator.swift | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+Iterator.swift b/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+Iterator.swift index a7c4b7eb7..c79d4adcb 100644 --- a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+Iterator.swift +++ b/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+Iterator.swift @@ -7,11 +7,24 @@ import Foundation +/// # Dev Note +/// +/// For these iterators, prefer `.getLine(atIndex: )` for finding the next item in the iteration. +/// Using plain indexes instead of y positions or ranges has led to far fewer edge cases. public extension TextLineStorage { + /// Iterate over all lines overlapping a range of `y` positions. Positions in the middle of line contents will + /// return that line. + /// - Parameters: + /// - minY: The minimum y position to start at. + /// - maxY: The maximum y position to stop at. + /// - Returns: A lazy iterator for retrieving lines. func linesStartingAt(_ minY: CGFloat, until maxY: CGFloat) -> TextLineStorageYIterator { TextLineStorageYIterator(storage: self, minY: minY, maxY: maxY) } + /// Iterate over all lines overlapping a range in the document. + /// - Parameter range: The range to query. + /// - Returns: A lazy iterator for retrieving lines. func linesInRange(_ range: NSRange) -> TextLineStorageRangeIterator { TextLineStorageRangeIterator(storage: self, range: range) } @@ -36,7 +49,7 @@ public extension TextLineStorage { return nil } self.currentPosition = nextPosition - return self.currentPosition! + return nextPosition } else if let nextPosition = storage.getLine(atPosition: minY) { self.currentPosition = nextPosition return nextPosition @@ -60,11 +73,11 @@ public extension TextLineStorage { public mutating func next() -> TextLinePosition? { if let currentPosition { guard currentPosition.range.max < range.max, - let nextPosition = storage.getLine(atOffset: currentPosition.range.max) else { + let nextPosition = storage.getLine(atIndex: currentPosition.index + 1) else { return nil } self.currentPosition = nextPosition - return self.currentPosition! + return nextPosition } else if let nextPosition = storage.getLine(atOffset: range.location) { self.currentPosition = nextPosition return nextPosition @@ -92,11 +105,11 @@ extension TextLineStorage: LazySequenceProtocol { public mutating func next() -> TextLinePosition? { if let currentPosition { guard currentPosition.range.max < storage.length, - let nextPosition = storage.getLine(atOffset: currentPosition.range.max) else { + let nextPosition = storage.getLine(atIndex: currentPosition.index + 1) else { return nil } self.currentPosition = nextPosition - return self.currentPosition! + return nextPosition } else if let nextPosition = storage.getLine(atOffset: 0) { self.currentPosition = nextPosition return nextPosition From 2a6e7c752922e6e6407721a6b0599620c8363e42 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Mon, 21 Apr 2025 15:39:18 -0500 Subject: [PATCH 17/42] Fix Incorrect Copy/Paste Menu Actions (#91) ### Description Fixes a typo where copy/paste menu items were incorrectly mapped to `undo`, causing their actions to trigger an undo instead of the intended action. ### Related Issues * closes https://github.com/CodeEditApp/CodeEdit/issues/1996 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots In the example CETV app: https://github.com/user-attachments/assets/8f3b3358-fa45-4cc2-8646-6bf28abdf158 --- Sources/CodeEditTextView/TextView/TextView+Menu.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/CodeEditTextView/TextView/TextView+Menu.swift b/Sources/CodeEditTextView/TextView/TextView+Menu.swift index e7f6f7c8d..508f0caf6 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Menu.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Menu.swift @@ -15,8 +15,8 @@ extension TextView { menu.items = [ NSMenuItem(title: "Cut", action: #selector(cut(_:)), keyEquivalent: "x"), - NSMenuItem(title: "Copy", action: #selector(undo(_:)), keyEquivalent: "c"), - NSMenuItem(title: "Paste", action: #selector(undo(_:)), keyEquivalent: "v") + NSMenuItem(title: "Copy", action: #selector(copy(_:)), keyEquivalent: "c"), + NSMenuItem(title: "Paste", action: #selector(paste(_:)), keyEquivalent: "v") ] return menu From e35d6553230b76c22f0d4d874ab631af7f60c53a Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Fri, 25 Apr 2025 16:01:45 -0500 Subject: [PATCH 18/42] Share Text Storage Delegates (#92) ### Description Makes the text view share the `MultiStorageDelegate` if it's already installed on the text storage object. This allows for multiple editors to completely share a storage object, receiving update events and sending them to the necessary objects without removing the other text view's objects from the shared delegate. ### Related Issues * N/A ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots --- .../TextView/TextView+SetText.swift | 4 ++++ .../CodeEditTextView/TextView/TextView.swift | 6 ++++- .../CodeEditTextViewTests/TextViewTests.swift | 24 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/Sources/CodeEditTextView/TextView/TextView+SetText.swift b/Sources/CodeEditTextView/TextView/TextView+SetText.swift index a3f064857..6ba66916a 100644 --- a/Sources/CodeEditTextView/TextView/TextView+SetText.swift +++ b/Sources/CodeEditTextView/TextView/TextView+SetText.swift @@ -20,6 +20,10 @@ extension TextView { public func setTextStorage(_ textStorage: NSTextStorage) { self.textStorage = textStorage + if let storageDelegate = textStorage.delegate as? MultiStorageDelegate { + self.storageDelegate = storageDelegate + } + subviews.forEach { view in view.removeFromSuperview() } diff --git a/Sources/CodeEditTextView/TextView/TextView.swift b/Sources/CodeEditTextView/TextView/TextView.swift index 9b0337f9e..4c9cf7c31 100644 --- a/Sources/CodeEditTextView/TextView/TextView.swift +++ b/Sources/CodeEditTextView/TextView/TextView.swift @@ -320,7 +320,11 @@ public class TextView: NSView, NSTextContent { super.init(frame: .zero) self.emphasisManager = EmphasisManager(textView: self) - self.storageDelegate = MultiStorageDelegate() + if let storageDelegate = textStorage.delegate as? MultiStorageDelegate { + self.storageDelegate = storageDelegate + } else { + self.storageDelegate = MultiStorageDelegate() + } wantsLayer = true postsFrameChangedNotifications = true diff --git a/Tests/CodeEditTextViewTests/TextViewTests.swift b/Tests/CodeEditTextViewTests/TextViewTests.swift index da5056d27..d8ac192b1 100644 --- a/Tests/CodeEditTextViewTests/TextViewTests.swift +++ b/Tests/CodeEditTextViewTests/TextViewTests.swift @@ -40,4 +40,28 @@ struct TextViewTests { // available in test module textView.layoutManager.lineStorage.validateInternalState() } + + @Test + func sharedTextStorage() { + let storage = NSTextStorage(string: "Hello world") + + let textView1 = TextView(string: "") + textView1.frame = NSRect(x: 0, y: 0, width: 100, height: 100) + textView1.layoutSubtreeIfNeeded() + textView1.setTextStorage(storage) + + let textView2 = TextView(string: "") + textView2.frame = NSRect(x: 0, y: 0, width: 100, height: 100) + textView2.layoutSubtreeIfNeeded() + textView2.setTextStorage(storage) + + // Expect both text views to receive edited events from the storage + #expect(textView1.layoutManager.lineCount == 1) + #expect(textView2.layoutManager.lineCount == 1) + + storage.replaceCharacters(in: NSRange(location: 11, length: 0), with: "\nMore Lines\n") + + #expect(textView1.layoutManager.lineCount == 3) + #expect(textView2.layoutManager.lineCount == 3) + } } From d82b1c0572b1d4a66852439a839a05e545db4674 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Fri, 9 May 2025 11:20:29 -0500 Subject: [PATCH 19/42] Text Attachment Support (#93) ### Description Adds an API for creating "text attachments". Essentially, views that replace ranges of text and act as a single character in typesetting, layout, and selection. #### Detailed Changes Text layout consists of two steps: - Laying out whole lines - Typesetting line fragments The changes in this PR mostly consist of changes to the typesetting step. This step breaks down a line of text into fragments that fit into a constrained width. Text attachments are built by making 'runs' of content in that typesetting step. > These are intentionally kept separate from the text storage. If these modifications were in the storage object, they'd be shared between editors that share storage objects. Putting these in the layout system means that a user can fold lines in one editor, and view them normally in another. - Text attachments: - **New** `TextAttachment` protocol. A generic type that can draw it's contents in a line. - **New** `AnyTextAttachment` helps type-erase `any TextAttachment` and has a `range` for CETV to use. Very similar to `AnyHashable` or `AnyView`. - **New** `TextAttachmentManager` manages an ordered array of attachments, and manages hiding and showing text lines as needed, as well as invalidating layout when modifications happen. - `TextLayoutManager` changes: - Added a new `determineVisiblePosition` method. This method takes in a line position and returns a new (potentially larger) position by merging lines covered by attachments. This is the foundational method for merging lines that attachments cover. - Removing the existing `Iterator`. - Added two iterators, `YPositionIterator` and `RangeIterator` that iterate over a range of y positions and text offsets, respectively. These iterators are now used by the `layoutLines` method to merge lines that have attachments and not layout hidden lines. - Typesetting: - `Typesetter.swift` is marked as new, but that's because it's drastically changed. - `Typesetter` still performs typesetting on a text line, but it now takes into account attachments. It breaks the line into content runs, then calculates line fragments using those runs and a constrained width. - `TypesetContext` and `LineFragmentTypesetContext` represent partial parsing states while typesetting. They're both used once during typesetting and then discarded. Keeping them in their own structs makes `Typesetter` much more readable. - `CTLineTypesetData` was previously represented by a tuple, but a struct makes things clearer. It represents layout information received from a `CTTypesetter` for a `CTLine`. - Line break suggestion methods moved to a `CTTypesetter` extension. Each method was taking a `typesetter` argument, so moving to an extension makes them more ergonomic. - The only change to these methods was a change from passing a `startOffset` to instead pass a `subrange` that the typesetter finds line breaks in. - `LineFragment` - Line fragments now have to manage a series of content runs that can be either attachments or plain text. - Drawing methods have been updated to loop over runs and draw them. - Position fetching methods now take into account attachments as well as text positions. - Scroll view listeners - *this could have been a different PR but it's a small change, sorry!*. - Fixed up the way the text view found it's enclosing scroll view, and listens to scroll changes. #### Testing - Added typesetting tests for attachments. - Added layout manager tests. - Iteration - Invalidation - Attachments ### Related Issues * https://github.com/CodeEditApp/CodeEditSourceEditor/issues/43 * https://github.com/CodeEditApp/CodeEditSourceEditor/issues/287 * https://github.com/CodeEditApp/CodeEdit/issues/1623 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots > Demo menu item was a testing menu item, it either adds a demo attachment to the selected range, or removes selected attachments (if any are selected). It's not included in this PR. To test the changes like in the demo video replace `TextView+Menu.swift` with this:
`TextView+Menu.swift`

```swift // // TextView+Menu.swift // CodeEditTextView // // Created by Khan Winter on 8/21/23. // import AppKit extension TextView { override public func menu(for event: NSEvent) -> NSMenu? { guard event.type == .rightMouseDown else { return nil } let menu = NSMenu() menu.items = [ NSMenuItem(title: "Cut", action: #selector(cut(_:)), keyEquivalent: "x"), NSMenuItem(title: "Copy", action: #selector(copy(_:)), keyEquivalent: "c"), NSMenuItem(title: "Paste", action: #selector(paste(_:)), keyEquivalent: "v"), NSMenuItem(title: "Attach", action: #selector(toggleAttachmentAtSelection), keyEquivalent: "b") ] return menu } class DemoAttachment: TextAttachment { var width: CGFloat = 100 func draw(in context: CGContext, rect: NSRect) { context.setFillColor(NSColor.red.cgColor) context.fill(rect) } } @objc func toggleAttachmentAtSelection() { if layoutManager.attachments.get( startingIn: selectedRange() ).first?.range.location == selectedRange().location { layoutManager.attachments.remove(atOffset: selectedRange().location) } else { layoutManager.attachments.add(DemoAttachment(), for: selectedRange()) } } } ```

https://github.com/user-attachments/assets/b178fe13-d5d2-4e3d-aa55-f913df1d6c4b --- .../CodeEditTextViewExample.xcscheme | 78 ++++++ .../CodeEditTextViewExampleDocument.swift | 20 +- .../Views/ContentView.swift | 6 +- .../Views/SwiftUITextView.swift | 41 +-- .../CTTypesetter+SuggestLineBreak.swift | 127 +++++++++ .../TextAttachments/TextAttachment.swift | 31 +++ .../TextAttachmentManager.swift | 160 +++++++++++ .../TextLayoutManager+Edits.swift | 4 +- .../TextLayoutManager+Iterator.swift | 192 +++++++++++++- .../TextLayoutManager+Layout.swift | 31 ++- .../TextLayoutManager+Public.swift | 116 +++++--- .../TextLayoutManager/TextLayoutManager.swift | 5 +- .../TextLayoutManagerRenderDelegate.swift | 6 +- .../TextLine/LineFragment.swift | 132 ++++++++-- .../CodeEditTextView/TextLine/TextLine.swift | 17 +- .../TextLine/Typesetter.swift | 246 ----------------- .../Typesetter/CTLineTypesetData.swift | 16 ++ .../LineFragmentTypesetContext.swift | 24 ++ .../TextLine/Typesetter/TypesetContext.swift | 82 ++++++ .../TextLine/Typesetter/Typesetter.swift | 249 ++++++++++++++++++ ...lectionManager+SelectionManipulation.swift | 18 +- .../TextSelectionManager+Draw.swift | 4 +- .../TextSelectionManager+FillRects.swift | 2 +- .../TextView/TextView+Lifecycle.swift | 4 +- .../TextView/TextView+Setup.swift | 19 +- ...verridingLayoutManagerRenderingTests.swift | 14 +- .../TextLayoutManagerAttachmentsTests.swift | 111 ++++++++ .../TextLayoutManagerTests.swift | 77 +++++- .../TypesetterTests.swift | 249 ++++++++++++++++-- 29 files changed, 1661 insertions(+), 420 deletions(-) create mode 100644 Example/CodeEditTextViewExample/CodeEditTextViewExample.xcodeproj/xcshareddata/xcschemes/CodeEditTextViewExample.xcscheme create mode 100644 Sources/CodeEditTextView/Extensions/CTTypesetter+SuggestLineBreak.swift create mode 100644 Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift create mode 100644 Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift delete mode 100644 Sources/CodeEditTextView/TextLine/Typesetter.swift create mode 100644 Sources/CodeEditTextView/TextLine/Typesetter/CTLineTypesetData.swift create mode 100644 Sources/CodeEditTextView/TextLine/Typesetter/LineFragmentTypesetContext.swift create mode 100644 Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift create mode 100644 Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift rename Tests/CodeEditTextViewTests/{ => LayoutManager}/OverridingLayoutManagerRenderingTests.swift (91%) create mode 100644 Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerAttachmentsTests.swift rename Tests/CodeEditTextViewTests/{ => LayoutManager}/TextLayoutManagerTests.swift (62%) diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample.xcodeproj/xcshareddata/xcschemes/CodeEditTextViewExample.xcscheme b/Example/CodeEditTextViewExample/CodeEditTextViewExample.xcodeproj/xcshareddata/xcschemes/CodeEditTextViewExample.xcscheme new file mode 100644 index 000000000..ceaa1d0a1 --- /dev/null +++ b/Example/CodeEditTextViewExample/CodeEditTextViewExample.xcodeproj/xcshareddata/xcschemes/CodeEditTextViewExample.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Documents/CodeEditTextViewExampleDocument.swift b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Documents/CodeEditTextViewExampleDocument.swift index c427db932..47a86c96c 100644 --- a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Documents/CodeEditTextViewExampleDocument.swift +++ b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Documents/CodeEditTextViewExampleDocument.swift @@ -8,11 +8,11 @@ import SwiftUI import UniformTypeIdentifiers -struct CodeEditTextViewExampleDocument: FileDocument { - var text: String +struct CodeEditTextViewExampleDocument: FileDocument, @unchecked Sendable { + var text: NSTextStorage init(text: String = "") { - self.text = text + self.text = NSTextStorage(string: text) } static var readableContentTypes: [UTType] { @@ -25,11 +25,21 @@ struct CodeEditTextViewExampleDocument: FileDocument { guard let data = configuration.file.regularFileContents else { throw CocoaError(.fileReadCorruptFile) } - text = String(bytes: data, encoding: .utf8) ?? "" + text = try NSTextStorage( + data: data, + options: [.characterEncoding: NSUTF8StringEncoding, .fileType: NSAttributedString.DocumentType.plain], + documentAttributes: nil + ) } func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper { - let data = Data(text.utf8) + let data = try text.data( + from: NSRange(location: 0, length: text.length), + documentAttributes: [ + .documentType: NSAttributedString.DocumentType.plain, + .characterEncoding: NSUTF8StringEncoding + ] + ) return .init(regularFileWithContents: data) } } diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/ContentView.swift b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/ContentView.swift index c6b0f4f0f..1a64d8b54 100644 --- a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/ContentView.swift +++ b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/ContentView.swift @@ -19,7 +19,11 @@ struct ContentView: View { Toggle("Inset Edges", isOn: $enableEdgeInsets) } Divider() - SwiftUITextView(text: $document.text, wrapLines: $wrapLines, enableEdgeInsets: $enableEdgeInsets) + SwiftUITextView( + text: document.text, + wrapLines: $wrapLines, + enableEdgeInsets: $enableEdgeInsets + ) } } } diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/SwiftUITextView.swift b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/SwiftUITextView.swift index 96d5d732b..1bb836239 100644 --- a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/SwiftUITextView.swift +++ b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/SwiftUITextView.swift @@ -10,13 +10,13 @@ import AppKit import CodeEditTextView struct SwiftUITextView: NSViewControllerRepresentable { - @Binding var text: String + var text: NSTextStorage @Binding var wrapLines: Bool @Binding var enableEdgeInsets: Bool func makeNSViewController(context: Context) -> TextViewController { - let controller = TextViewController(string: text) - context.coordinator.controller = controller + let controller = TextViewController(string: "") + controller.textView.setTextStorage(text) controller.wrapLines = wrapLines controller.enableEdgeInsets = enableEdgeInsets return controller @@ -26,39 +26,4 @@ struct SwiftUITextView: NSViewControllerRepresentable { nsViewController.wrapLines = wrapLines nsViewController.enableEdgeInsets = enableEdgeInsets } - - func makeCoordinator() -> Coordinator { - Coordinator(text: $text) - } - - @MainActor - public class Coordinator: NSObject { - weak var controller: TextViewController? - var text: Binding - - init(text: Binding) { - self.text = text - super.init() - - NotificationCenter.default.addObserver( - self, - selector: #selector(textViewDidChangeText(_:)), - name: TextView.textDidChangeNotification, - object: nil - ) - } - - @objc func textViewDidChangeText(_ notification: Notification) { - guard let textView = notification.object as? TextView, - let controller, - controller.textView === textView else { - return - } - text.wrappedValue = textView.string - } - - deinit { - NotificationCenter.default.removeObserver(self) - } - } } diff --git a/Sources/CodeEditTextView/Extensions/CTTypesetter+SuggestLineBreak.swift b/Sources/CodeEditTextView/Extensions/CTTypesetter+SuggestLineBreak.swift new file mode 100644 index 000000000..fefe98530 --- /dev/null +++ b/Sources/CodeEditTextView/Extensions/CTTypesetter+SuggestLineBreak.swift @@ -0,0 +1,127 @@ +// +// CTTypesetter+SuggestLineBreak.swift +// CodeEditTextView +// +// Created by Khan Winter on 4/24/25. +// + +import AppKit + +extension CTTypesetter { + /// Suggest a line break for the given line break strategy. + /// - Parameters: + /// - typesetter: The typesetter to use. + /// - strategy: The strategy that determines a valid line break. + /// - startingOffset: Where to start breaking. + /// - constrainingWidth: The available space for the line. + /// - Returns: An offset relative to the entire string indicating where to break. + func suggestLineBreak( + using string: NSAttributedString, + strategy: LineBreakStrategy, + subrange: NSRange, + constrainingWidth: CGFloat + ) -> Int { + switch strategy { + case .character: + return suggestLineBreakForCharacter( + string: string, + startingOffset: subrange.location, + constrainingWidth: constrainingWidth + ) + case .word: + return suggestLineBreakForWord( + string: string, + subrange: subrange, + constrainingWidth: constrainingWidth + ) + } + } + + /// Suggest a line break for the character break strategy. + /// - Parameters: + /// - typesetter: The typesetter to use. + /// - startingOffset: Where to start breaking. + /// - constrainingWidth: The available space for the line. + /// - Returns: An offset relative to the entire string indicating where to break. + private func suggestLineBreakForCharacter( + string: NSAttributedString, + startingOffset: Int, + constrainingWidth: CGFloat + ) -> Int { + var breakIndex: Int + // Check if we need to skip to an attachment + + breakIndex = startingOffset + CTTypesetterSuggestClusterBreak(self, startingOffset, constrainingWidth) + guard breakIndex < string.length else { + return breakIndex + } + let substring = string.attributedSubstring(from: NSRange(location: breakIndex - 1, length: 2)).string + if substring == LineEnding.carriageReturnLineFeed.rawValue { + // Breaking in the middle of the clrf line ending + breakIndex += 1 + } + + return breakIndex + } + + /// Suggest a line break for the word break strategy. + /// - Parameters: + /// - typesetter: The typesetter to use. + /// - startingOffset: Where to start breaking. + /// - constrainingWidth: The available space for the line. + /// - Returns: An offset relative to the entire string indicating where to break. + private func suggestLineBreakForWord( + string: NSAttributedString, + subrange: NSRange, + constrainingWidth: CGFloat + ) -> Int { + var breakIndex = subrange.location + CTTypesetterSuggestClusterBreak(self, subrange.location, constrainingWidth) + let isBreakAtEndOfString = breakIndex >= subrange.max + + let isNextCharacterCarriageReturn = checkIfLineBreakOnCRLF(breakIndex, for: string) + if isNextCharacterCarriageReturn { + breakIndex += 1 + } + + let canLastCharacterBreak = (breakIndex - 1 > 0 && ensureCharacterCanBreakLine(at: breakIndex - 1, for: string)) + + if isBreakAtEndOfString || canLastCharacterBreak { + // Breaking either at the end of the string, or on a whitespace. + return breakIndex + } else if breakIndex - 1 > 0 { + // Try to walk backwards until we hit a whitespace or punctuation + var index = breakIndex - 1 + + while breakIndex - index < 100 && index > subrange.location { + if ensureCharacterCanBreakLine(at: index, for: string) { + return index + 1 + } + index -= 1 + } + } + + return breakIndex + } + + /// Ensures the character at the given index can break a line. + /// - Parameter index: The index to check at. + /// - Returns: True, if the character is a whitespace or punctuation character. + private func ensureCharacterCanBreakLine(at index: Int, for string: NSAttributedString) -> Bool { + let subrange = (string.string as NSString).rangeOfComposedCharacterSequence(at: index) + let set = CharacterSet(charactersIn: (string.string as NSString).substring(with: subrange)) + return set.isSubset(of: .whitespacesAndNewlines) || set.isSubset(of: .punctuationCharacters) + } + + /// Check if the break index is on a CRLF (`\r\n`) character, indicating a valid break position. + /// - Parameter breakIndex: The index to check in the string. + /// - Returns: True, if the break index lies after the `\n` character in a `\r\n` sequence. + private func checkIfLineBreakOnCRLF(_ breakIndex: Int, for string: NSAttributedString) -> Bool { + guard breakIndex - 1 > 0 && breakIndex + 1 <= string.length else { + return false + } + let substringRange = NSRange(location: breakIndex - 1, length: 2) + let substring = string.attributedSubstring(from: substringRange).string + + return substring == LineEnding.carriageReturnLineFeed.rawValue + } +} diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift new file mode 100644 index 000000000..61ca777f2 --- /dev/null +++ b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift @@ -0,0 +1,31 @@ +// +// TextAttachment.swift +// CodeEditTextView +// +// Created by Khan Winter on 4/24/25. +// + +import AppKit + +/// Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view. +public protocol TextAttachment: AnyObject { + var width: CGFloat { get } + func draw(in context: CGContext, rect: NSRect) +} + +/// Type-erasing type for ``TextAttachment`` that also contains range information about the attachment. +/// +/// This type cannot be initialized outside of `CodeEditTextView`, but will be received when interrogating +/// the ``TextAttachmentManager``. +public struct AnyTextAttachment: Equatable { + var range: NSRange + let attachment: any TextAttachment + + var width: CGFloat { + attachment.width + } + + public static func == (_ lhs: AnyTextAttachment, _ rhs: AnyTextAttachment) -> Bool { + lhs.range == rhs.range && lhs.attachment === rhs.attachment + } +} diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift new file mode 100644 index 000000000..5bad2de1e --- /dev/null +++ b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift @@ -0,0 +1,160 @@ +// +// TextAttachmentManager.swift +// CodeEditTextView +// +// Created by Khan Winter on 4/24/25. +// + +import Foundation + +/// Manages a set of attachments for the layout manager, provides methods for efficiently finding attachments for a +/// line range. +/// +/// If two attachments are overlapping, the one placed further along in the document will be +/// ignored when laying out attachments. +public final class TextAttachmentManager { + private var orderedAttachments: [AnyTextAttachment] = [] + weak var layoutManager: TextLayoutManager? + + /// Adds a new attachment, keeping `orderedAttachments` sorted by range.location. + /// If two attachments overlap, the layout phase will later ignore the one with the higher start. + /// - Complexity: `O(n log(n))` due to array insertion. Could be improved with a binary tree. + public func add(_ attachment: any TextAttachment, for range: NSRange) { + let attachment = AnyTextAttachment(range: range, attachment: attachment) + let insertIndex = findInsertionIndex(for: range.location) + orderedAttachments.insert(attachment, at: insertIndex) + layoutManager?.lineStorage.linesInRange(range).dropFirst().forEach { + if $0.height != 0 { + layoutManager?.lineStorage.update(atOffset: $0.range.location, delta: 0, deltaHeight: -$0.height) + } + } + layoutManager?.setNeedsLayout() + } + + /// Removes an attachment and invalidates layout for the removed range. + /// - Parameter offset: The offset the attachment begins at. + /// - Returns: The removed attachment, if it exists. + @discardableResult + public func remove(atOffset offset: Int) -> AnyTextAttachment? { + let index = findInsertionIndex(for: offset) + + guard index < orderedAttachments.count && orderedAttachments[index].range.location == offset else { + return nil + } + + let attachment = orderedAttachments.remove(at: index) + layoutManager?.invalidateLayoutForRange(attachment.range) + return attachment + } + + /// Finds attachments starting in the given line range, and returns them as an array. + /// Returned attachment's ranges will be relative to the _document_, not the line. + /// - Complexity: `O(n log(n))`, ideally `O(log(n))` + public func getAttachmentsStartingIn(_ range: NSRange) -> [AnyTextAttachment] { + var results: [AnyTextAttachment] = [] + var idx = findInsertionIndex(for: range.location) + while idx < orderedAttachments.count { + let attachment = orderedAttachments[idx] + let loc = attachment.range.location + if loc >= range.upperBound { + break + } + if range.contains(loc) { + if let lastResult = results.last, !lastResult.range.contains(attachment.range.location) { + results.append(attachment) + } else if results.isEmpty { + results.append(attachment) + } + } + idx += 1 + } + return results + } + + /// Returns all attachments whose ranges overlap the given query range. + /// + /// - Parameter range: The `NSRange` to test for overlap. + /// - Returns: An array of `AnyTextAttachment` instances whose ranges intersect `query`. + public func getAttachmentsOverlapping(_ range: NSRange) -> [AnyTextAttachment] { + // Find the first attachment whose end is beyond the start of the query. + guard let startIdx = firstIndex(where: { $0.range.upperBound > range.location }) else { + return [] + } + + var results: [AnyTextAttachment] = [] + var idx = startIdx + + // Collect every subsequent attachment that truly overlaps the query. + while idx < orderedAttachments.count { + let attachment = orderedAttachments[idx] + if attachment.range.location >= range.upperBound { + break + } + if attachment.range.intersection(range)?.length ?? 0 > 0, + results.last?.range != attachment.range { + results.append(attachment) + } + idx += 1 + } + + return results + } + + /// Updates the text attachments to stay in the same relative spot after the edit, and removes any attachments that + /// were in the updated range. + /// - Parameters: + /// - atOffset: The offset text was updated at. + /// - delta: The change delta, positive is an insertion. + package func textUpdated(atOffset: Int, delta: Int) { + for (idx, attachment) in orderedAttachments.enumerated().reversed() { + if attachment.range.contains(atOffset) { + orderedAttachments.remove(at: idx) + } else if attachment.range.location > atOffset { + orderedAttachments[idx].range.location += delta + } + } + } +} + +private extension TextAttachmentManager { + /// Binary-searches `orderedAttachments` and returns the smallest index + /// at which `predicate(attachment)` is true (i.e. the lower-bound index). + /// + /// - Note: always returns a value in `0...orderedAttachments.count`. + /// If it returns `orderedAttachments.count`, no element satisfied + /// the predicate, but that’s still a valid insertion point. + func lowerBoundIndex( + where predicate: (AnyTextAttachment) -> Bool + ) -> Int { + var low = 0 + var high = orderedAttachments.count + while low < high { + let mid = (low + high) / 2 + if predicate(orderedAttachments[mid]) { + high = mid + } else { + low = mid + 1 + } + } + return low + } + + /// Returns the index in `orderedAttachments` at which an attachment whose + /// `range.location == location` *could* be inserted, keeping the array sorted. + /// + /// - Parameter location: the attachment’s `range.location` + /// - Returns: a valid insertion index in `0...orderedAttachments.count` + func findInsertionIndex(for location: Int) -> Int { + lowerBoundIndex { $0.range.location >= location } + } + + /// Finds the first index whose attachment satisfies `predicate`. + /// + /// - Parameter predicate: the query predicate. + /// - Returns: the first matching index, or `nil` if none of the + /// attachments satisfy the predicate. + func firstIndex(where predicate: (AnyTextAttachment) -> Bool) -> Int? { + let idx = lowerBoundIndex { predicate($0) } + return idx < orderedAttachments.count ? idx : nil + } +} diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift index 192b8a981..b3d7d11bc 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift @@ -46,7 +46,9 @@ extension TextLayoutManager: NSTextStorageDelegate { removeLayoutLinesIn(range: insertedStringRange) insertNewLines(for: editedRange) - setNeedsLayout() + attachments.textUpdated(atOffset: editedRange.location, delta: delta) + + invalidateLayoutForRange(insertedStringRange) } /// Removes all lines in the range, as if they were deleted. This is a setup for inserting the lines back in on an diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift index ff7315270..4e5efede5 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift @@ -14,14 +14,14 @@ public extension TextLayoutManager { /// if there is no delegate from `0` to the estimated document height. /// /// - Returns: An iterator to iterate through all visible lines. - func visibleLines() -> Iterator { + func visibleLines() -> YPositionIterator { let visibleRect = delegate?.visibleRect ?? NSRect( x: 0, y: 0, width: 0, height: estimatedHeight() ) - return Iterator(minY: max(visibleRect.minY, 0), maxY: max(visibleRect.maxY, 0), storage: self.lineStorage) + return YPositionIterator(minY: max(visibleRect.minY, 0), maxY: max(visibleRect.maxY, 0), layoutManager: self) } /// Iterate over all lines in the y position range. @@ -29,19 +29,193 @@ public extension TextLayoutManager { /// - minY: The minimum y position to begin at. /// - maxY: The maximum y position to iterate to. /// - Returns: An iterator that will iterate through all text lines in the y position range. - func linesStartingAt(_ minY: CGFloat, until maxY: CGFloat) -> TextLineStorage.TextLineStorageYIterator { - lineStorage.linesStartingAt(minY, until: maxY) + func linesStartingAt(_ minY: CGFloat, until maxY: CGFloat) -> YPositionIterator { + YPositionIterator(minY: minY, maxY: maxY, layoutManager: self) } + /// Iterate over all lines that overlap a document range. + /// - Parameters: + /// - range: The range in the document to iterate over. + /// - Returns: An iterator for lines in the range. The iterator returns lines that *overlap* with the range. + /// Returned lines may extend slightly before or after the queried range. + func linesInRange(_ range: NSRange) -> RangeIterator { + RangeIterator(range: range, layoutManager: self) + } + + /// This iterator iterates over "visible" text positions that overlap a range of vertical `y` positions + /// using ``TextLayoutManager/determineVisiblePosition(for:)``. + /// + /// Next elements are retrieved lazily. Additionally, this iterator uses a stable `index` rather than a y position + /// or a range to fetch the next line. This means the line storage can be updated during iteration. + struct YPositionIterator: LazySequenceProtocol, IteratorProtocol { + typealias TextLinePosition = TextLineStorage.TextLinePosition + + private weak var layoutManager: TextLayoutManager? + private let minY: CGFloat + private let maxY: CGFloat + private var currentPosition: (position: TextLinePosition, indexRange: ClosedRange)? + + init(minY: CGFloat, maxY: CGFloat, layoutManager: TextLayoutManager) { + self.minY = minY + self.maxY = maxY + self.layoutManager = layoutManager + } + + /// Iterates over the "visible" text positions. + /// + /// See documentation on ``TextLayoutManager/determineVisiblePosition(for:)`` for details. + public mutating func next() -> TextLineStorage.TextLinePosition? { + if let currentPosition { + guard let nextPosition = layoutManager?.lineStorage.getLine( + atIndex: currentPosition.indexRange.upperBound + 1 + ), nextPosition.yPos < maxY else { + return nil + } + self.currentPosition = layoutManager?.determineVisiblePosition(for: nextPosition) + return self.currentPosition?.position + } else if let position = layoutManager?.lineStorage.getLine(atPosition: minY) { + currentPosition = layoutManager?.determineVisiblePosition(for: position) + return currentPosition?.position + } - struct Iterator: LazySequenceProtocol, IteratorProtocol { - private var storageIterator: TextLineStorage.TextLineStorageYIterator + return nil + } + } + + /// This iterator iterates over "visible" text positions that overlap a document using + /// ``TextLayoutManager/determineVisiblePosition(for:)``. + /// + /// Next elements are retrieved lazily. Additionally, this iterator uses a stable `index` rather than a y position + /// or a range to fetch the next line. This means the line storage can be updated during iteration. + struct RangeIterator: LazySequenceProtocol, IteratorProtocol { + typealias TextLinePosition = TextLineStorage.TextLinePosition + + private weak var layoutManager: TextLayoutManager? + private let range: NSRange + private var currentPosition: (position: TextLinePosition, indexRange: ClosedRange)? - init(minY: CGFloat, maxY: CGFloat, storage: TextLineStorage) { - storageIterator = storage.linesStartingAt(minY, until: maxY) + init(range: NSRange, layoutManager: TextLayoutManager) { + self.range = range + self.layoutManager = layoutManager } + /// Iterates over the "visible" text positions. + /// + /// See documentation on ``TextLayoutManager/determineVisiblePosition(for:)`` for details. public mutating func next() -> TextLineStorage.TextLinePosition? { - storageIterator.next() + if let currentPosition { + guard let nextPosition = layoutManager?.lineStorage.getLine( + atIndex: currentPosition.indexRange.upperBound + 1 + ), nextPosition.range.location < range.max else { + return nil + } + self.currentPosition = layoutManager?.determineVisiblePosition(for: nextPosition) + return self.currentPosition?.position + } else if let position = layoutManager?.lineStorage.getLine(atOffset: range.location) { + currentPosition = layoutManager?.determineVisiblePosition(for: position) + return currentPosition?.position + } + + return nil + } + } + + /// Determines the “visible” line position by merging any consecutive lines + /// that are spanned by text attachments. If an attachment overlaps beyond the + /// bounds of the original line, this method will extend the returned range to + /// cover the full span of those attachments (and recurse if further attachments + /// cross into newly included lines). + /// + /// For example, given the following: *(`[` == attachment start, `]` == attachment end)* + /// ``` + /// Line 1 + /// Line[ 2 + /// Line 3 + /// Line] 4 + /// ``` + /// If you start at the position for “Line 2”, the first and last attachments + /// overlap lines 2–4, so this method will extend the range to cover lines 2–4 + /// and return a position whose `range` spans the entire attachment. + /// + /// # Why recursion? + /// + /// When an attachment extends the visible range, it may pull in new lines that themselves overlap other + /// attachments. A simple one‐pass merge wouldn’t catch those secondary overlaps. By calling + /// determineVisiblePosition again on the newly extended range, we ensure that all cascading attachments—no matter + /// how many lines they span—are folded into a single, coherent TextLinePosition before returning. + /// + /// - Parameter originalPosition: The initial `TextLinePosition` to inspect. + /// Pass in the position you got from `lineStorage.getLine(atOffset:)` or similar. + /// - Returns: A tuple containing `position`: A `TextLinePosition` whose `range` and `index` have been + /// adjusted to include any attachment‐spanned lines.. `indexRange`: A `ClosedRange` listing all of + /// the line indices that are now covered by the returned position. + /// Returns `nil` if `originalPosition` is `nil`. + func determineVisiblePosition( + for originalPosition: TextLineStorage.TextLinePosition? + ) -> (position: TextLineStorage.TextLinePosition, indexRange: ClosedRange)? { + guard let originalPosition else { return nil } + return determineVisiblePositionRecursively( + for: (originalPosition, originalPosition.index...originalPosition.index), + recursionDepth: 0 + ) + } + + /// Private implementation of ``TextLayoutManager/determineVisiblePosition(for:)``. + /// + /// Separated for readability. This method does not have an optional parameter, and keeps track of a recursion + /// depth. + private func determineVisiblePositionRecursively( + for originalPosition: (position: TextLineStorage.TextLinePosition, indexRange: ClosedRange), + recursionDepth: Int + ) -> (position: TextLineStorage.TextLinePosition, indexRange: ClosedRange)? { + // Arbitrary max recursion depth. Ensures we don't spiral into in an infinite recursion. + guard recursionDepth < 10 else { + logger.warning("Visible position recursed for over 10 levels, returning early.") + return originalPosition + } + + let attachments = attachments.getAttachmentsOverlapping(originalPosition.position.range) + guard let firstAttachment = attachments.first, let lastAttachment = attachments.last else { + // No change, either no attachments or attachment doesn't span multiple lines. + return originalPosition + } + + var minIndex = originalPosition.indexRange.lowerBound + var maxIndex = originalPosition.indexRange.upperBound + var newPosition = originalPosition.position + + if firstAttachment.range.location < originalPosition.position.range.location, + let extendedLinePosition = lineStorage.getLine(atOffset: firstAttachment.range.location) { + newPosition = TextLineStorage.TextLinePosition( + data: extendedLinePosition.data, + range: NSRange(start: extendedLinePosition.range.location, end: newPosition.range.max), + yPos: extendedLinePosition.yPos, + height: extendedLinePosition.height, + index: extendedLinePosition.index + ) + minIndex = min(minIndex, newPosition.index) + } + + if lastAttachment.range.max > originalPosition.position.range.max, + let extendedLinePosition = lineStorage.getLine(atOffset: lastAttachment.range.max) { + newPosition = TextLineStorage.TextLinePosition( + data: newPosition.data, + range: NSRange(start: newPosition.range.location, end: extendedLinePosition.range.max), + yPos: newPosition.yPos, + height: newPosition.height, + index: newPosition.index // We want to keep the minimum index. + ) + maxIndex = max(maxIndex, extendedLinePosition.index) + } + + // Base case, we haven't updated anything + if minIndex...maxIndex == originalPosition.indexRange { + return (newPosition, minIndex...maxIndex) + } else { + // Recurse, to make sure we combine all necessary lines. + return determineVisiblePositionRecursively( + for: (newPosition, minIndex...maxIndex), + recursionDepth: recursionDepth + 1 + ) } } } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift index b90c18b46..cdbc2704d 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift @@ -61,11 +61,12 @@ extension TextLayoutManager { /// to re-enter. /// - Warning: This is probably not what you're looking for. If you need to invalidate layout, or update lines, this /// is not the way to do so. This should only be called when macOS performs layout. - public func layoutLines(in rect: NSRect? = nil) { // swiftlint:disable:this function_body_length + @discardableResult + public func layoutLines(in rect: NSRect? = nil) -> Set { // swiftlint:disable:this function_body_length guard let visibleRect = rect ?? delegate?.visibleRect, !isInTransaction, let textStorage else { - return + return [] } // The macOS may call `layout` on the textView while we're laying out fragment views. This ensures the view @@ -77,14 +78,18 @@ extension TextLayoutManager { let minY = max(visibleRect.minY - verticalLayoutPadding, 0) let maxY = max(visibleRect.maxY + verticalLayoutPadding, 0) let originalHeight = lineStorage.height - var usedFragmentIDs = Set() + var usedFragmentIDs = Set() var forceLayout: Bool = needsLayout var newVisibleLines: Set = [] var yContentAdjustment: CGFloat = 0 var maxFoundLineWidth = maxLineWidth +#if DEBUG + var laidOutLines: Set = [] +#endif + // Layout all lines, fetching lines lazily as they are laid out. - for linePosition in lineStorage.linesStartingAt(minY, until: maxY).lazy { + for linePosition in linesStartingAt(minY, until: maxY).lazy { guard linePosition.yPos < maxY else { continue } // Three ways to determine if a line needs to be re-calculated. let changedWidth = linePosition.data.needsLayout(maxWidth: maxLineLayoutWidth) @@ -115,6 +120,9 @@ extension TextLayoutManager { if maxFoundLineWidth < lineSize.width { maxFoundLineWidth = lineSize.width } +#if DEBUG + laidOutLines.insert(linePosition.data.id) +#endif } else { // Make sure the used fragment views aren't dequeued. usedFragmentIDs.formUnion(linePosition.data.lineFragments.map(\.data.id)) @@ -147,6 +155,12 @@ extension TextLayoutManager { if originalHeight != lineStorage.height || layoutView?.frame.size.height != lineStorage.height { delegate?.layoutManagerHeightDidUpdate(newHeight: lineStorage.height) } + +#if DEBUG + return laidOutLines +#else + return [] +#endif } // MARK: - Layout Single Line @@ -162,12 +176,13 @@ extension TextLayoutManager { _ position: TextLineStorage.TextLinePosition, textStorage: NSTextStorage, layoutData: LineLayoutData, - laidOutFragmentIDs: inout Set + laidOutFragmentIDs: inout Set ) -> CGSize { let lineDisplayData = TextLine.DisplayData( maxWidth: layoutData.maxWidth, lineHeightMultiplier: lineHeightMultiplier, - estimatedLineHeight: estimateLineHeight() + estimatedLineHeight: estimateLineHeight(), + breakStrategy: lineBreakStrategy ) let line = position.data @@ -178,7 +193,7 @@ extension TextLayoutManager { range: position.range, stringRef: textStorage, markedRanges: markedTextManager.markedRanges(in: position.range), - breakStrategy: lineBreakStrategy + attachments: attachments.getAttachmentsStartingIn(position.range) ) } else { line.prepareForDisplay( @@ -186,7 +201,7 @@ extension TextLayoutManager { range: position.range, stringRef: textStorage, markedRanges: markedTextManager.markedRanges(in: position.range), - breakStrategy: lineBreakStrategy + attachments: attachments.getAttachmentsStartingIn(position.range) ) } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift index c79b8b5f5..6a1a4df61 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift @@ -29,7 +29,7 @@ extension TextLayoutManager { /// - Parameter posY: The y position to find a line for. /// - Returns: A text line position, if a line could be found at the given y position. public func textLineForPosition(_ posY: CGFloat) -> TextLineStorage.TextLinePosition? { - lineStorage.getLine(atPosition: posY) + determineVisiblePosition(for: lineStorage.getLine(atPosition: posY))?.position } /// Finds a text line for a given text offset. @@ -46,7 +46,7 @@ extension TextLayoutManager { if offset == lineStorage.length { return lineStorage.last } else { - return lineStorage.getLine(atOffset: offset) + return determineVisiblePosition(for: lineStorage.getLine(atOffset: offset))?.position } } @@ -56,7 +56,7 @@ extension TextLayoutManager { /// - Returns: The text line position if any, `nil` if the index is out of bounds. public func textLineForIndex(_ index: Int) -> TextLineStorage.TextLinePosition? { guard index >= 0 && index < lineStorage.count else { return nil } - return lineStorage.getLine(atIndex: index) + return determineVisiblePosition(for: lineStorage.getLine(atIndex: index))?.position } /// Calculates the text position at the given point in the view. @@ -69,39 +69,83 @@ extension TextLayoutManager { guard point.y <= estimatedHeight() else { // End position is a special case. return textStorage?.length } - guard let position = lineStorage.getLine(atPosition: point.y), - let fragmentPosition = position.data.typesetter.lineFragments.getLine( - atPosition: point.y - position.yPos + guard let linePosition = determineVisiblePosition(for: lineStorage.getLine(atPosition: point.y))?.position, + let fragmentPosition = linePosition.data.typesetter.lineFragments.getLine( + atPosition: point.y - linePosition.yPos ) else { return nil } let fragment = fragmentPosition.data if fragment.width == 0 { - return position.range.location + fragmentPosition.range.location - } else if fragment.width < point.x - edgeInsets.left { - let fragmentRange = CTLineGetStringRange(fragment.ctLine) - let globalFragmentRange = NSRange( - location: position.range.location + fragmentRange.location, - length: fragmentRange.length - ) - let endPosition = position.range.location + fragmentRange.location + fragmentRange.length - - // If the endPosition is at the end of the line, and the line ends with a line ending character - // return the index before the eol. - if endPosition == position.range.max, - let lineEnding = LineEnding(line: textStorage?.substring(from: globalFragmentRange) ?? "") { - return endPosition - lineEnding.length - } else { - return endPosition - } + return linePosition.range.location + fragmentPosition.range.location + } else if fragment.width <= point.x - edgeInsets.left { + return findOffsetAfterEndOf(fragmentPosition: fragmentPosition, in: linePosition) + } else { + return findOffsetAtPoint(inFragment: fragment, point: point, inLine: linePosition) + } + } + + /// Finds a document offset after a line fragment. Returns a cursor position. + /// + /// If the fragment ends the line, return the position before the potential line break. This visually positions the + /// cursor at the end of the line, but before the break character. If deleted, it edits the visually selected line. + /// + /// If not at the line end, do the same with the fragment and respect any composed character sequences at + /// the line break. + /// + /// Return the line end position otherwise. + /// + /// - Parameters: + /// - fragmentPosition: The fragment position being queried. + /// - linePosition: The line position that contains the `fragment`. + /// - Returns: The position visually at the end of the line fragment. + private func findOffsetAfterEndOf( + fragmentPosition: TextLineStorage.TextLinePosition, + in linePosition: TextLineStorage.TextLinePosition + ) -> Int? { + let endPosition = fragmentPosition.data.documentRange.max + + // If the endPosition is at the end of the line, and the line ends with a line ending character + // return the index before the eol. + if fragmentPosition.index == linePosition.data.lineFragments.count - 1, + let lineEnding = LineEnding(line: textStorage?.substring(from: fragmentPosition.data.documentRange) ?? "") { + return endPosition - lineEnding.length + } else if fragmentPosition.index != linePosition.data.lineFragments.count - 1 { + // If this isn't the last fragment, we want to place the cursor at the offset right before the break + // index, to appear on the end of *this* fragment. + let string = (textStorage?.string as? NSString) + return string?.rangeOfComposedCharacterSequence(at: endPosition - 1).location } else { - // Somewhere in the fragment + // Otherwise, return the end of the fragment (and the end of the line). + return endPosition + } + } + + /// Finds a document offset for a point that lies in a line fragment. + /// - Parameters: + /// - fragment: The fragment the point lies in. + /// - point: The point being queried, relative to the text view. + /// - linePosition: The position that contains the `fragment`. + /// - Returns: The offset (relative to the document) that's closest to the given point, or `nil` if it could not be + /// found. + private func findOffsetAtPoint( + inFragment fragment: LineFragment, + point: CGPoint, + inLine linePosition: TextLineStorage.TextLinePosition + ) -> Int? { + guard let (content, contentPosition) = fragment.findContent(atX: point.x - edgeInsets.left) else { + return nil + } + switch content.data { + case .text(let ctLine): let fragmentIndex = CTLineGetStringIndexForPosition( - fragment.ctLine, - CGPoint(x: point.x - edgeInsets.left, y: fragment.height/2) + ctLine, + CGPoint(x: point.x - edgeInsets.left - contentPosition.xPos, y: fragment.height/2) ) - return position.range.location + fragmentIndex + return fragmentIndex + contentPosition.offset + linePosition.range.location + case .attachment: + return contentPosition.offset + linePosition.range.location } } @@ -117,10 +161,9 @@ extension TextLayoutManager { guard offset != lineStorage.length else { return rectForEndOffset() } - guard let linePosition = lineStorage.getLine(atOffset: offset) else { + guard let linePosition = determineVisiblePosition(for: lineStorage.getLine(atOffset: offset))?.position else { return nil } - guard let fragmentPosition = linePosition.data.typesetter.lineFragments.getLine( atOffset: offset - linePosition.range.location ) else { @@ -129,18 +172,21 @@ extension TextLayoutManager { // Get the *real* length of the character at the offset. If this is a surrogate pair it'll return the correct // length of the character at the offset. - let realRange = textStorage?.length == 0 - ? NSRange(location: offset, length: 0) - : (textStorage?.string as? NSString)?.rangeOfComposedCharacterSequence(at: offset) - ?? NSRange(location: offset, length: 0) + let realRange = if textStorage?.length == 0 { + NSRange(location: offset, length: 0) + } else if let string = textStorage?.string as? NSString { + string.rangeOfComposedCharacterSequence(at: offset) + } else { + NSRange(location: offset, length: 0) + } let minXPos = characterXPosition( in: fragmentPosition.data, - for: realRange.location - linePosition.range.location + for: realRange.location - fragmentPosition.data.documentRange.location ) let maxXPos = characterXPosition( in: fragmentPosition.data, - for: realRange.max - linePosition.range.location + for: realRange.max - fragmentPosition.data.documentRange.location ) return CGRect( diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift index 7cf7b0428..84195b00c 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift @@ -64,12 +64,14 @@ public class TextLayoutManager: NSObject { } } + public let attachments: TextAttachmentManager = TextAttachmentManager() + // MARK: - Internal weak var textStorage: NSTextStorage? var lineStorage: TextLineStorage = TextLineStorage() var markedTextManager: MarkedTextManager = MarkedTextManager() - let viewReuseQueue: ViewReuseQueue = ViewReuseQueue() + let viewReuseQueue: ViewReuseQueue = ViewReuseQueue() package var visibleLineIds: Set = [] /// Used to force a complete re-layout using `setNeedsLayout` package var needsLayout: Bool = false @@ -130,6 +132,7 @@ public class TextLayoutManager: NSObject { self.renderDelegate = renderDelegate super.init() prepareTextLines() + attachments.layoutManager = self } /// Prepares the layout manager for use. diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerRenderDelegate.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerRenderDelegate.swift index 6e366d3c5..34e930b75 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerRenderDelegate.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerRenderDelegate.swift @@ -18,7 +18,7 @@ public protocol TextLayoutManagerRenderDelegate: AnyObject { range: NSRange, stringRef: NSTextStorage, markedRanges: MarkedRanges?, - breakStrategy: LineBreakStrategy + attachments: [AnyTextAttachment] ) func estimatedLineHeight() -> CGFloat? @@ -35,14 +35,14 @@ public extension TextLayoutManagerRenderDelegate { range: NSRange, stringRef: NSTextStorage, markedRanges: MarkedRanges?, - breakStrategy: LineBreakStrategy + attachments: [AnyTextAttachment] ) { textLine.prepareForDisplay( displayData: displayData, range: range, stringRef: stringRef, markedRanges: markedRanges, - breakStrategy: breakStrategy + attachments: attachments ) } diff --git a/Sources/CodeEditTextView/TextLine/LineFragment.swift b/Sources/CodeEditTextView/TextLine/LineFragment.swift index 923848ab1..1c777bcf5 100644 --- a/Sources/CodeEditTextView/TextLine/LineFragment.swift +++ b/Sources/CodeEditTextView/TextLine/LineFragment.swift @@ -11,9 +11,44 @@ import CodeEditTextViewObjC /// A ``LineFragment`` represents a subrange of characters in a line. Every text line contains at least one line /// fragments, and any lines that need to be broken due to width constraints will contain more than one fragment. public final class LineFragment: Identifiable, Equatable { + public struct FragmentContent: Equatable { + public enum Content: Equatable { + case text(line: CTLine) + case attachment(attachment: AnyTextAttachment) + } + + public let data: Content + public let width: CGFloat + + public var length: Int { + switch data { + case .text(let line): + CTLineGetStringRange(line).length + case .attachment(let attachment): + attachment.range.length + } + } + +#if DEBUG + var isText: Bool { + switch data { + case .text: + true + case .attachment: + false + } + } +#endif + } + + public struct ContentPosition { + let xPos: CGFloat + let offset: Int + } + public let id = UUID() public let documentRange: NSRange - public var ctLine: CTLine + public var contents: [FragmentContent] public var width: CGFloat public var height: CGFloat public var descent: CGFloat @@ -26,14 +61,14 @@ public final class LineFragment: Identifiable, Equatable { init( documentRange: NSRange, - ctLine: CTLine, + contents: [FragmentContent], width: CGFloat, height: CGFloat, descent: CGFloat, lineHeightMultiplier: CGFloat ) { self.documentRange = documentRange - self.ctLine = ctLine + self.contents = contents self.width = width self.height = height self.descent = descent @@ -44,12 +79,6 @@ public final class LineFragment: Identifiable, Equatable { lhs.id == rhs.id } - /// Finds the x position of the offset in the string the fragment represents. - /// - Parameter offset: The offset, relative to the start of the *line*. - /// - Returns: The x position of the character in the drawn line, from the left. - @available(*, deprecated, renamed: "layoutManager.characterXPosition(in:)", message: "Moved to layout manager") - public func xPos(for offset: Int) -> CGFloat { _xPos(for: offset) } - /// Finds the x position of the offset in the string the fragment represents. /// /// Underscored, because although this needs to be accessible outside this class, the relevant layout manager method @@ -58,7 +87,19 @@ public final class LineFragment: Identifiable, Equatable { /// - Parameter offset: The offset, relative to the start of the *line*. /// - Returns: The x position of the character in the drawn line, from the left. func _xPos(for offset: Int) -> CGFloat { - return CTLineGetOffsetForStringIndex(ctLine, offset, nil) + guard let (content, position) = findContent(at: offset) else { + return width + } + switch content.data { + case .text(let ctLine): + return CTLineGetOffsetForStringIndex( + ctLine, + CTLineGetStringRange(ctLine).location + offset - position.offset, + nil + ) + position.xPos + case .attachment: + return position.xPos + } } public func draw(in context: CGContext, yPos: CGFloat) { @@ -82,27 +123,62 @@ public final class LineFragment: Identifiable, Equatable { ContextSetHiddenSmoothingStyle(context, 16) context.textMatrix = .init(scaleX: 1, y: -1) - context.textPosition = CGPoint( - x: 0, - y: yPos + height - descent + (heightDifference/2) - ).pixelAligned - CTLineDraw(ctLine, context) + var currentPosition: CGFloat = 0.0 + var currentLocation = 0 + for content in contents { + context.saveGState() + switch content.data { + case .text(let ctLine): + context.textPosition = CGPoint( + x: currentPosition, + y: yPos + height - descent + (heightDifference/2) + ).pixelAligned + CTLineDraw(ctLine, context) + case .attachment(let attachment): + attachment.attachment.draw( + in: context, + rect: NSRect(x: currentPosition, y: yPos, width: attachment.width, height: scaledHeight) + ) + } + context.restoreGState() + currentPosition += content.width + currentLocation += content.length + } context.restoreGState() } - /// Calculates the drawing rect for a given range. - /// - Parameter range: The range to calculate the bounds for, relative to the line. - /// - Returns: A rect that contains the text contents in the given range. - @available(*, deprecated, renamed: "layoutManager.characterRect(in:)", message: "Moved to layout manager") - public func rectFor(range: NSRange) -> CGRect { - let minXPos = CTLineGetOffsetForStringIndex(ctLine, range.lowerBound, nil) - let maxXPos = CTLineGetOffsetForStringIndex(ctLine, range.upperBound, nil) - return CGRect( - x: minXPos, - y: 0, - width: maxXPos - minXPos, - height: scaledHeight - ) + package func findContent(at location: Int) -> (content: FragmentContent, position: ContentPosition)? { + var position = ContentPosition(xPos: 0, offset: 0) + + for content in contents { + let length = content.length + let width = content.width + + if (position.offset..<(position.offset + length)).contains(location) { + return (content, position) + } + + position = ContentPosition(xPos: position.xPos + width, offset: position.offset + length) + } + + return nil + } + + package func findContent(atX xPos: CGFloat) -> (content: FragmentContent, position: ContentPosition)? { + var position = ContentPosition(xPos: 0, offset: 0) + + for content in contents { + let length = content.length + let width = content.width + + if (position.xPos..<(position.xPos + width)).contains(xPos) { + return (content, position) + } + + position = ContentPosition(xPos: position.xPos + width, offset: position.offset + length) + } + + return nil } } diff --git a/Sources/CodeEditTextView/TextLine/TextLine.swift b/Sources/CodeEditTextView/TextLine/TextLine.swift index 9e1ac6289..2eee6f375 100644 --- a/Sources/CodeEditTextView/TextLine/TextLine.swift +++ b/Sources/CodeEditTextView/TextLine/TextLine.swift @@ -48,13 +48,13 @@ public final class TextLine: Identifiable, Equatable { /// - range: The range this text range represents in the entire document. /// - stringRef: A reference to the string storage for the document. /// - markedRanges: Any marked ranges in the line. - /// - breakStrategy: Determines how line breaks are calculated. + /// - attachments: Any attachments overlapping the line range. public func prepareForDisplay( displayData: DisplayData, range: NSRange, stringRef: NSTextStorage, markedRanges: MarkedRanges?, - breakStrategy: LineBreakStrategy + attachments: [AnyTextAttachment] ) { let string = stringRef.attributedSubstring(from: range) self.maxWidth = displayData.maxWidth @@ -62,8 +62,8 @@ public final class TextLine: Identifiable, Equatable { string, documentRange: range, displayData: displayData, - breakStrategy: breakStrategy, - markedRanges: markedRanges + markedRanges: markedRanges, + attachments: attachments ) needsLayout = false } @@ -77,11 +77,18 @@ public final class TextLine: Identifiable, Equatable { public let maxWidth: CGFloat public let lineHeightMultiplier: CGFloat public let estimatedLineHeight: CGFloat + public let breakStrategy: LineBreakStrategy - public init(maxWidth: CGFloat, lineHeightMultiplier: CGFloat, estimatedLineHeight: CGFloat) { + public init( + maxWidth: CGFloat, + lineHeightMultiplier: CGFloat, + estimatedLineHeight: CGFloat, + breakStrategy: LineBreakStrategy = .character + ) { self.maxWidth = maxWidth self.lineHeightMultiplier = lineHeightMultiplier self.estimatedLineHeight = estimatedLineHeight + self.breakStrategy = breakStrategy } } } diff --git a/Sources/CodeEditTextView/TextLine/Typesetter.swift b/Sources/CodeEditTextView/TextLine/Typesetter.swift deleted file mode 100644 index 0a0afdb44..000000000 --- a/Sources/CodeEditTextView/TextLine/Typesetter.swift +++ /dev/null @@ -1,246 +0,0 @@ -// -// Typesetter.swift -// CodeEditTextView -// -// Created by Khan Winter on 6/21/23. -// - -import Foundation -import CoreText - -final public class Typesetter { - public var typesetter: CTTypesetter? - public var string: NSAttributedString! - public var documentRange: NSRange? - public var lineFragments = TextLineStorage() - - // MARK: - Init & Prepare - - public init() { } - - public func typeset( - _ string: NSAttributedString, - documentRange: NSRange, - displayData: TextLine.DisplayData, - breakStrategy: LineBreakStrategy, - markedRanges: MarkedRanges? - ) { - self.documentRange = documentRange - lineFragments.removeAll() - if let markedRanges { - let mutableString = NSMutableAttributedString(attributedString: string) - for markedRange in markedRanges.ranges { - mutableString.addAttributes(markedRanges.attributes, range: markedRange) - } - self.string = mutableString - } else { - self.string = string - } - self.typesetter = CTTypesetterCreateWithAttributedString(self.string) - generateLines( - maxWidth: displayData.maxWidth, - lineHeightMultiplier: displayData.lineHeightMultiplier, - estimatedLineHeight: displayData.estimatedLineHeight, - breakStrategy: breakStrategy - ) - } - - // MARK: - Generate lines - - /// Generate line fragments. - /// - Parameters: - /// - maxWidth: The maximum width the line can be. - /// - lineHeightMultiplier: The multiplier to apply to an empty line's height. - /// - estimatedLineHeight: The estimated height of an empty line. - private func generateLines( - maxWidth: CGFloat, - lineHeightMultiplier: CGFloat, - estimatedLineHeight: CGFloat, - breakStrategy: LineBreakStrategy - ) { - guard let typesetter else { return } - var lines: [TextLineStorage.BuildItem] = [] - var height: CGFloat = 0 - if string.length == 0 { - // Insert an empty fragment - let ctLine = CTTypesetterCreateLine(typesetter, CFRangeMake(0, 0)) - let fragment = LineFragment( - documentRange: NSRange(location: (documentRange ?? .notFound).location, length: 0), - ctLine: ctLine, - width: 0, - height: estimatedLineHeight/lineHeightMultiplier, - descent: 0, - lineHeightMultiplier: lineHeightMultiplier - ) - lines = [.init(data: fragment, length: 0, height: fragment.scaledHeight)] - } else { - var startIndex = 0 - while startIndex < string.length { - let lineBreak = suggestLineBreak( - using: typesetter, - strategy: breakStrategy, - startingOffset: startIndex, - constrainingWidth: maxWidth - ) - let lineFragment = typesetLine( - range: NSRange(start: startIndex, end: lineBreak), - lineHeightMultiplier: lineHeightMultiplier - ) - lines.append(.init( - data: lineFragment, - length: lineBreak - startIndex, - height: lineFragment.scaledHeight - )) - startIndex = lineBreak - height = lineFragment.scaledHeight - } - } - // Use an efficient tree building algorithm rather than adding lines sequentially - lineFragments.build(from: lines, estimatedLineHeight: height) - } - - /// Typeset a new fragment. - /// - Parameters: - /// - range: The range of the fragment. - /// - lineHeightMultiplier: The multiplier to apply to the line's height. - /// - Returns: A new line fragment. - private func typesetLine(range: NSRange, lineHeightMultiplier: CGFloat) -> LineFragment { - let ctLine = CTTypesetterCreateLine(typesetter!, CFRangeMake(range.location, range.length)) - var ascent: CGFloat = 0 - var descent: CGFloat = 0 - var leading: CGFloat = 0 - let width = CGFloat(CTLineGetTypographicBounds(ctLine, &ascent, &descent, &leading)) - let height = ascent + descent + leading - let range = NSRange(location: (documentRange ?? .notFound).location + range.location, length: range.length) - return LineFragment( - documentRange: range, - ctLine: ctLine, - width: width, - height: height, - descent: descent, - lineHeightMultiplier: lineHeightMultiplier - ) - } - - // MARK: - Line Breaks - - /// Suggest a line break for the given line break strategy. - /// - Parameters: - /// - typesetter: The typesetter to use. - /// - strategy: The strategy that determines a valid line break. - /// - startingOffset: Where to start breaking. - /// - constrainingWidth: The available space for the line. - /// - Returns: An offset relative to the entire string indicating where to break. - private func suggestLineBreak( - using typesetter: CTTypesetter, - strategy: LineBreakStrategy, - startingOffset: Int, - constrainingWidth: CGFloat - ) -> Int { - switch strategy { - case .character: - return suggestLineBreakForCharacter( - using: typesetter, - startingOffset: startingOffset, - constrainingWidth: constrainingWidth - ) - case .word: - return suggestLineBreakForWord( - using: typesetter, - startingOffset: startingOffset, - constrainingWidth: constrainingWidth - ) - } - } - - /// Suggest a line break for the character break strategy. - /// - Parameters: - /// - typesetter: The typesetter to use. - /// - startingOffset: Where to start breaking. - /// - constrainingWidth: The available space for the line. - /// - Returns: An offset relative to the entire string indicating where to break. - private func suggestLineBreakForCharacter( - using typesetter: CTTypesetter, - startingOffset: Int, - constrainingWidth: CGFloat - ) -> Int { - var breakIndex: Int - breakIndex = startingOffset + CTTypesetterSuggestClusterBreak(typesetter, startingOffset, constrainingWidth) - guard breakIndex < string.length else { - return breakIndex - } - let substring = string.attributedSubstring(from: NSRange(location: breakIndex - 1, length: 2)).string - if substring == LineEnding.carriageReturnLineFeed.rawValue { - // Breaking in the middle of the clrf line ending - return breakIndex + 1 - } - return breakIndex - } - - /// Suggest a line break for the word break strategy. - /// - Parameters: - /// - typesetter: The typesetter to use. - /// - startingOffset: Where to start breaking. - /// - constrainingWidth: The available space for the line. - /// - Returns: An offset relative to the entire string indicating where to break. - private func suggestLineBreakForWord( - using typesetter: CTTypesetter, - startingOffset: Int, - constrainingWidth: CGFloat - ) -> Int { - var breakIndex = startingOffset + CTTypesetterSuggestClusterBreak(typesetter, startingOffset, constrainingWidth) - - let isBreakAtEndOfString = breakIndex >= string.length - - let isNextCharacterCarriageReturn = checkIfLineBreakOnCRLF(breakIndex) - if isNextCharacterCarriageReturn { - breakIndex += 1 - } - - let canLastCharacterBreak = (breakIndex - 1 > 0 && ensureCharacterCanBreakLine(at: breakIndex - 1)) - - if isBreakAtEndOfString || canLastCharacterBreak { - // Breaking either at the end of the string, or on a whitespace. - return breakIndex - } else if breakIndex - 1 > 0 { - // Try to walk backwards until we hit a whitespace or punctuation - var index = breakIndex - 1 - - while breakIndex - index < 100 && index > startingOffset { - if ensureCharacterCanBreakLine(at: index) { - return index + 1 - } - index -= 1 - } - } - - return breakIndex - } - - /// Ensures the character at the given index can break a line. - /// - Parameter index: The index to check at. - /// - Returns: True, if the character is a whitespace or punctuation character. - private func ensureCharacterCanBreakLine(at index: Int) -> Bool { - let set = CharacterSet( - charactersIn: string.attributedSubstring(from: NSRange(location: index, length: 1)).string - ) - return set.isSubset(of: .whitespacesAndNewlines) || set.isSubset(of: .punctuationCharacters) - } - - /// Check if the break index is on a CRLF (`\r\n`) character, indicating a valid break position. - /// - Parameter breakIndex: The index to check in the string. - /// - Returns: True, if the break index lies after the `\n` character in a `\r\n` sequence. - private func checkIfLineBreakOnCRLF(_ breakIndex: Int) -> Bool { - guard breakIndex - 1 > 0 && breakIndex + 1 <= string.length else { - return false - } - let substringRange = NSRange(location: breakIndex - 1, length: 2) - let substring = string.attributedSubstring(from: substringRange).string - - return substring == LineEnding.carriageReturnLineFeed.rawValue - } - - deinit { - lineFragments.removeAll() - } -} diff --git a/Sources/CodeEditTextView/TextLine/Typesetter/CTLineTypesetData.swift b/Sources/CodeEditTextView/TextLine/Typesetter/CTLineTypesetData.swift new file mode 100644 index 000000000..7466a9e5d --- /dev/null +++ b/Sources/CodeEditTextView/TextLine/Typesetter/CTLineTypesetData.swift @@ -0,0 +1,16 @@ +// +// CTLineTypesetData.swift +// CodeEditTextView +// +// Created by Khan Winter on 4/24/25. +// + +import AppKit + +/// Represents layout information received from a `CTTypesetter` for a `CTLine`. +struct CTLineTypesetData { + let ctLine: CTLine + let descent: CGFloat + let width: CGFloat + let height: CGFloat +} diff --git a/Sources/CodeEditTextView/TextLine/Typesetter/LineFragmentTypesetContext.swift b/Sources/CodeEditTextView/TextLine/Typesetter/LineFragmentTypesetContext.swift new file mode 100644 index 000000000..f6bb487b2 --- /dev/null +++ b/Sources/CodeEditTextView/TextLine/Typesetter/LineFragmentTypesetContext.swift @@ -0,0 +1,24 @@ +// +// LineFragmentTypesetContext.swift +// CodeEditTextView +// +// Created by Khan Winter on 4/24/25. +// + +import CoreGraphics + +/// Represents partial parsing state for typesetting a line fragment. Used once during typesetting and then discarded. +struct LineFragmentTypesetContext { + var contents: [LineFragment.FragmentContent] = [] + var start: Int + var width: CGFloat + var height: CGFloat + var descent: CGFloat + + mutating func clear() { + contents.removeAll(keepingCapacity: true) + width = 0 + height = 0 + descent = 0 + } +} diff --git a/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift b/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift new file mode 100644 index 000000000..9f0f713d9 --- /dev/null +++ b/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift @@ -0,0 +1,82 @@ +// +// TypesetContext.swift +// CodeEditTextView +// +// Created by Khan Winter on 4/24/25. +// + +import Foundation + +/// Represents partial parsing state for typesetting a line. Used once during typesetting and then discarded. +/// Contains a few methods for appending data or popping the current line data. +struct TypesetContext { + let documentRange: NSRange + let displayData: TextLine.DisplayData + + /// Accumulated generated line fragments. + var lines: [TextLineStorage.BuildItem] = [] + var maxHeight: CGFloat = 0 + /// The current fragment typesetting context. + var fragmentContext = LineFragmentTypesetContext(start: 0, width: 0.0, height: 0.0, descent: 0.0) + + /// Tracks the current position when laying out runs + var currentPosition: Int = 0 + + // MARK: - Fragment Context Modification + + /// Appends an attachment to the current ``fragmentContext`` + /// - Parameter attachment: The type-erased attachment to append. + mutating func appendAttachment(_ attachment: AnyTextAttachment) { + // Check if we can append this attachment to the current line + if fragmentContext.width + attachment.width > displayData.maxWidth { + popCurrentData() + } + + // Add the attachment to the current line + fragmentContext.contents.append( + .init(data: .attachment(attachment: attachment), width: attachment.width) + ) + fragmentContext.width += attachment.width + fragmentContext.height = fragmentContext.height == 0 ? maxHeight : fragmentContext.height + currentPosition += attachment.range.length + } + + /// Appends a text range to the current ``fragmentContext`` + /// - Parameters: + /// - typesettingRange: The range relative to the typesetter for the current fragment context. + /// - lineBreak: The position that the text fragment should end at, relative to the typesetter's range. + /// - typesetData: Data received from the typesetter. + mutating func appendText(typesettingRange: NSRange, lineBreak: Int, typesetData: CTLineTypesetData) { + fragmentContext.contents.append( + .init(data: .text(line: typesetData.ctLine), width: typesetData.width) + ) + fragmentContext.width += typesetData.width + fragmentContext.height = typesetData.height + fragmentContext.descent = max(typesetData.descent, fragmentContext.descent) + currentPosition = lineBreak + typesettingRange.location + } + + // MARK: - Pop Fragments + + /// Pop the current fragment state into a new line fragment, and reset the fragment state. + mutating func popCurrentData() { + let fragment = LineFragment( + documentRange: NSRange( + location: fragmentContext.start + documentRange.location, + length: currentPosition - fragmentContext.start + ), + contents: fragmentContext.contents, + width: fragmentContext.width, + height: fragmentContext.height, + descent: fragmentContext.descent, + lineHeightMultiplier: displayData.lineHeightMultiplier + ) + lines.append( + .init(data: fragment, length: currentPosition - fragmentContext.start, height: fragment.scaledHeight) + ) + maxHeight = max(maxHeight, fragment.scaledHeight) + + fragmentContext.clear() + fragmentContext.start = currentPosition + } +} diff --git a/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift b/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift new file mode 100644 index 000000000..10c6d244e --- /dev/null +++ b/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift @@ -0,0 +1,249 @@ +// +// Typesetter.swift +// CodeEditTextView +// +// Created by Khan Winter on 6/21/23. +// + +import AppKit +import CoreText + +/// The `Typesetter` is responsible for producing text fragments from a document range. It transforms a text line +/// and attachments into a sequence of `LineFragment`s, which reflect the visual structure of the text line. +/// +/// This class has one primary method: ``typeset(_:documentRange:displayData:markedRanges:attachments:)``, which +/// performs the typesetting algorithm and breaks content into runs using attachments. +/// +/// To retrieve the line fragments generated by this class, access the ``lineFragments`` property. +final public class Typesetter { + struct ContentRun { + let range: NSRange + let type: RunType + + enum RunType { + case attachment(AnyTextAttachment) + case string(CTTypesetter) + } + } + + public var documentRange: NSRange? + public var lineFragments = TextLineStorage() + + // MARK: - Init & Prepare + + public init() { } + + public func typeset( + _ string: NSAttributedString, + documentRange: NSRange, + displayData: TextLine.DisplayData, + markedRanges: MarkedRanges?, + attachments: [AnyTextAttachment] = [] + ) { + let string = makeString(string: string, markedRanges: markedRanges) + lineFragments.removeAll() + + // Fast path + if string.length == 0 || displayData.maxWidth <= 0 { + typesetEmptyLine(displayData: displayData, string: string) + return + } + let (lines, maxHeight) = typesetLineFragments( + string: string, + documentRange: documentRange, + displayData: displayData, + attachments: attachments + ) + lineFragments.build(from: lines, estimatedLineHeight: maxHeight) + } + + private func makeString(string: NSAttributedString, markedRanges: MarkedRanges?) -> NSAttributedString { + if let markedRanges { + let mutableString = NSMutableAttributedString(attributedString: string) + for markedRange in markedRanges.ranges { + mutableString.addAttributes(markedRanges.attributes, range: markedRange) + } + return mutableString + } + + return string + } + + // MARK: - Create Content Lines + + /// Breaks up the string into a series of 'runs' making up the visual content of this text line. + /// - Parameters: + /// - string: The string reference to use. + /// - documentRange: The range in the string reference. + /// - attachments: Any text attachments overlapping the string reference. + /// - Returns: A series of content runs making up this line. + func createContentRuns( + string: NSAttributedString, + documentRange: NSRange, + attachments: [AnyTextAttachment] + ) -> [ContentRun] { + var attachments = attachments + var currentPosition = 0 + let maxPosition = documentRange.length + var runs: [ContentRun] = [] + + while currentPosition < maxPosition { + guard let nextAttachment = attachments.first else { + // No attachments, use the remaining length + if maxPosition > currentPosition { + let range = NSRange(location: currentPosition, length: maxPosition - currentPosition) + let substring = string.attributedSubstring(from: range) + runs.append( + ContentRun( + range: range, + type: .string(CTTypesetterCreateWithAttributedString(substring)) + ) + ) + } + break + } + attachments.removeFirst() + // adjust the range to be relative to the line + let attachmentRange = NSRange( + location: nextAttachment.range.location - documentRange.location, + length: nextAttachment.range.length + ) + + // Use the space before the attachment + if nextAttachment.range.location > currentPosition { + let range = NSRange(start: currentPosition, end: attachmentRange.location) + let substring = string.attributedSubstring(from: range) + runs.append( + ContentRun(range: range, type: .string(CTTypesetterCreateWithAttributedString(substring))) + ) + } + + runs.append(ContentRun(range: attachmentRange, type: .attachment(nextAttachment))) + currentPosition = attachmentRange.max + } + + return runs + } + + // MARK: - Typeset Content Runs + + func typesetLineFragments( + string: NSAttributedString, + documentRange: NSRange, + displayData: TextLine.DisplayData, + attachments: [AnyTextAttachment] + ) -> (lines: [TextLineStorage.BuildItem], maxHeight: CGFloat) { + let contentRuns = createContentRuns(string: string, documentRange: documentRange, attachments: attachments) + var context = TypesetContext(documentRange: documentRange, displayData: displayData) + + for run in contentRuns { + switch run.type { + case .attachment(let attachment): + context.appendAttachment(attachment) + case .string(let typesetter): + layoutTextUntilLineBreak( + context: &context, + string: string, + range: run.range, + typesetter: typesetter, + displayData: displayData + ) + } + } + + if !context.fragmentContext.contents.isEmpty { + context.popCurrentData() + } + + return (context.lines, context.maxHeight) + } + + // MARK: - Layout Text Fragments + + func layoutTextUntilLineBreak( + context: inout TypesetContext, + string: NSAttributedString, + range: NSRange, + typesetter: CTTypesetter, + displayData: TextLine.DisplayData + ) { + let substring = string.attributedSubstring(from: range) + + // Layout as many fragments as possible in this content run + while context.currentPosition < range.max { + // The line break indicates the distance from the range we’re typesetting on that should be broken at. + // It's relative to the range being typeset, not the line + let lineBreak = typesetter.suggestLineBreak( + using: substring, + strategy: displayData.breakStrategy, + subrange: NSRange(start: context.currentPosition - range.location, end: range.length), + constrainingWidth: displayData.maxWidth - context.fragmentContext.width + ) + + // Indicates the subrange on the range that the typesetter knows about. This may not be the entire line + let typesetSubrange = NSRange(location: context.currentPosition - range.location, length: lineBreak) + let typesetData = typesetLine(typesetter: typesetter, range: typesetSubrange) + + // The typesetter won't tell us if 0 characters can fit in the constrained space. This checks to + // make sure we can fit something. If not, we pop and continue + if lineBreak == 1 && context.fragmentContext.width + typesetData.width > displayData.maxWidth { + context.popCurrentData() + continue + } + + // Amend the current line data to include this line, popping the current line afterwards + context.appendText(typesettingRange: range, lineBreak: lineBreak, typesetData: typesetData) + + // If this isn't the end of the line, we should break so we pop the context and start a new fragment. + if context.currentPosition != range.max { + context.popCurrentData() + } + } + } + + // MARK: - Typeset CTLines + + /// Typeset a new fragment. + /// - Parameters: + /// - range: The range of the fragment. + /// - lineHeightMultiplier: The multiplier to apply to the line's height. + /// - Returns: A new line fragment. + private func typesetLine(typesetter: CTTypesetter, range: NSRange) -> CTLineTypesetData { + let ctLine = CTTypesetterCreateLine(typesetter, CFRangeMake(range.location, range.length)) + var ascent: CGFloat = 0 + var descent: CGFloat = 0 + var leading: CGFloat = 0 + let width = CGFloat(CTLineGetTypographicBounds(ctLine, &ascent, &descent, &leading)) + let height = ascent + descent + leading + return CTLineTypesetData( + ctLine: ctLine, + descent: descent, + width: width, + height: height + ) + } + + /// Typesets a single, 0-length line fragment. + /// - Parameter displayData: Relevant information for layout estimation. + private func typesetEmptyLine(displayData: TextLine.DisplayData, string: NSAttributedString) { + let typesetter = CTTypesetterCreateWithAttributedString(string) + // Insert an empty fragment + let ctLine = CTTypesetterCreateLine(typesetter, CFRangeMake(0, 0)) + let fragment = LineFragment( + documentRange: NSRange(location: (documentRange ?? .notFound).location, length: 0), + contents: [.init(data: .text(line: ctLine), width: 0.0)], + width: 0, + height: displayData.estimatedLineHeight / displayData.lineHeightMultiplier, + descent: 0, + lineHeightMultiplier: displayData.lineHeightMultiplier + ) + lineFragments.build( + from: [.init(data: fragment, length: 0, height: fragment.scaledHeight)], + estimatedLineHeight: 0 + ) + } + + deinit { + lineFragments.removeAll() + } +} diff --git a/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/TextSelectionManager+SelectionManipulation.swift b/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/TextSelectionManager+SelectionManipulation.swift index d94563a7b..eb7e8a349 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/TextSelectionManager+SelectionManipulation.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/TextSelectionManager+SelectionManipulation.swift @@ -25,36 +25,46 @@ public extension TextSelectionManager { decomposeCharacters: Bool = false, suggestedXPos: CGFloat? = nil ) -> NSRange { + var range: NSRange switch direction { case .backward: guard offset > 0 else { return NSRange(location: offset, length: 0) } // Can't go backwards beyond 0 - return extendSelectionHorizontal( + range = extendSelectionHorizontal( from: offset, destination: destination, delta: -1, decomposeCharacters: decomposeCharacters ) case .forward: - return extendSelectionHorizontal( + range = extendSelectionHorizontal( from: offset, destination: destination, delta: 1, decomposeCharacters: decomposeCharacters ) case .up: - return extendSelectionVertical( + range = extendSelectionVertical( from: offset, destination: destination, up: true, suggestedXPos: suggestedXPos ) case .down: - return extendSelectionVertical( + range = extendSelectionVertical( from: offset, destination: destination, up: false, suggestedXPos: suggestedXPos ) } + + // Extend ranges to include attachments. + if let attachments = layoutManager?.attachments.getAttachmentsOverlapping(range) { + attachments.forEach { textAttachment in + range.formUnion(textAttachment.range) + } + } + + return range } } diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift index 45907d6c1..60b0c7e60 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift @@ -13,7 +13,7 @@ extension TextSelectionManager { public func drawSelections(in rect: NSRect) { guard let context = NSGraphicsContext.current?.cgContext else { return } context.saveGState() - var highlightedLines: Set = [] + var highlightedLines: Set = [] // For each selection in the rect for textSelection in textSelections { if textSelection.range.isEmpty { @@ -41,7 +41,7 @@ extension TextSelectionManager { in rect: NSRect, for textSelection: TextSelection, context: CGContext, - highlightedLines: inout Set + highlightedLines: inout Set ) { guard let linePosition = layoutManager?.textLineForOffset(textSelection.range.location), !highlightedLines.contains(linePosition.data.id) else { diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift index 666f9b711..da5165f32 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift @@ -37,7 +37,7 @@ extension TextSelectionManager { height: rect.height ).intersection(rect) - for linePosition in layoutManager.lineStorage.linesInRange(range) { + for linePosition in layoutManager.linesInRange(range) { fillRects.append( contentsOf: getFillRects(in: validTextDrawingRect, selectionRange: range, forPosition: linePosition) ) diff --git a/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift b/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift index 9befba72a..812919d0c 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift @@ -14,7 +14,9 @@ extension TextView { } override public func viewWillMove(toSuperview newSuperview: NSView?) { - guard let scrollView = enclosingScrollView else { + super.viewWillMove(toSuperview: newSuperview) + guard let clipView = newSuperview as? NSClipView, + let scrollView = enclosingScrollView ?? clipView.enclosingScrollView else { return } diff --git a/Sources/CodeEditTextView/TextView/TextView+Setup.swift b/Sources/CodeEditTextView/TextView/TextView+Setup.swift index c894cf04e..a17d39026 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Setup.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Setup.swift @@ -28,9 +28,6 @@ extension TextView { } func setUpScrollListeners(scrollView: NSScrollView) { - NotificationCenter.default.removeObserver(self, name: NSScrollView.willStartLiveScrollNotification, object: nil) - NotificationCenter.default.removeObserver(self, name: NSScrollView.didEndLiveScrollNotification, object: nil) - NotificationCenter.default.addObserver( self, selector: #selector(scrollViewWillStartScroll), @@ -44,6 +41,22 @@ extension TextView { name: NSScrollView.didEndLiveScrollNotification, object: scrollView ) + + NotificationCenter.default.addObserver( + forName: NSView.boundsDidChangeNotification, + object: scrollView.contentView, + queue: .main + ) { [weak self] _ in + self?.updatedViewport(self?.visibleRect ?? .zero) + } + + NotificationCenter.default.addObserver( + forName: NSView.frameDidChangeNotification, + object: scrollView.contentView, + queue: .main + ) { [weak self] _ in + self?.updatedViewport(self?.visibleRect ?? .zero) + } } @objc func scrollViewWillStartScroll() { diff --git a/Tests/CodeEditTextViewTests/OverridingLayoutManagerRenderingTests.swift b/Tests/CodeEditTextViewTests/LayoutManager/OverridingLayoutManagerRenderingTests.swift similarity index 91% rename from Tests/CodeEditTextViewTests/OverridingLayoutManagerRenderingTests.swift rename to Tests/CodeEditTextViewTests/LayoutManager/OverridingLayoutManagerRenderingTests.swift index 85a8eb68e..07f222fb6 100644 --- a/Tests/CodeEditTextViewTests/OverridingLayoutManagerRenderingTests.swift +++ b/Tests/CodeEditTextViewTests/LayoutManager/OverridingLayoutManagerRenderingTests.swift @@ -8,8 +8,7 @@ class MockRenderDelegate: TextLayoutManagerRenderDelegate { _ displayData: TextLine.DisplayData, _ range: NSRange, _ stringRef: NSTextStorage, - _ markedRanges: MarkedRanges?, - _ breakStrategy: LineBreakStrategy + _ markedRanges: MarkedRanges? ) -> Void)? var estimatedLineHeightOverride: (() -> CGFloat)? @@ -20,21 +19,20 @@ class MockRenderDelegate: TextLayoutManagerRenderDelegate { range: NSRange, stringRef: NSTextStorage, markedRanges: MarkedRanges?, - breakStrategy: LineBreakStrategy + attachments: [AnyTextAttachment] ) { prepareForDisplay?( textLine, displayData, range, stringRef, - markedRanges, - breakStrategy + markedRanges ) ?? textLine.prepareForDisplay( displayData: displayData, range: range, stringRef: stringRef, markedRanges: markedRanges, - breakStrategy: breakStrategy + attachments: [] ) } @@ -62,13 +60,13 @@ struct OverridingLayoutManagerRenderingTests { @Test func overriddenLineHeight() { - mockDelegate.prepareForDisplay = { textLine, displayData, range, stringRef, markedRanges, breakStrategy in + mockDelegate.prepareForDisplay = { textLine, displayData, range, stringRef, markedRanges in textLine.prepareForDisplay( displayData: displayData, range: range, stringRef: stringRef, markedRanges: markedRanges, - breakStrategy: breakStrategy + attachments: [] ) // Update all text fragments to be height = 2.0 textLine.lineFragments.forEach { fragmentPosition in diff --git a/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerAttachmentsTests.swift b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerAttachmentsTests.swift new file mode 100644 index 000000000..a3510c608 --- /dev/null +++ b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerAttachmentsTests.swift @@ -0,0 +1,111 @@ +// +// TextLayoutManagerAttachmentsTests.swift +// CodeEditTextView +// +// Created by Khan Winter on 5/5/25. +// + +import Testing +import AppKit +@testable import CodeEditTextView + +@Suite +@MainActor +struct TextLayoutManagerAttachmentsTests { + let textView: TextView + let textStorage: NSTextStorage + let layoutManager: TextLayoutManager + + init() throws { + textView = TextView(string: "12\n45\n78\n01\n") + textView.frame = NSRect(x: 0, y: 0, width: 1000, height: 1000) + textStorage = textView.textStorage + layoutManager = try #require(textView.layoutManager) + } + + @Test + func addAndGetAttachments() throws { + layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 2, end: 8)) + #expect(layoutManager.attachments.getAttachmentsOverlapping(textView.documentRange).count == 1) + #expect(layoutManager.attachments.getAttachmentsOverlapping(NSRange(start: 0, end: 3)).count == 1) + #expect(layoutManager.attachments.getAttachmentsStartingIn(NSRange(start: 0, end: 3)).count == 1) + } + + // MARK: - Determine Visible Line Tests + + @Test + func determineVisibleLinesMovesForwards() throws { + // From middle of the first line, to middle of the third line + layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 2, end: 8)) + + // Start with the first line, should extend to the third line + let originalPosition = try #require(layoutManager.lineStorage.getLine(atIndex: 0)) // zero-indexed + let newPosition = try #require(layoutManager.determineVisiblePosition(for: originalPosition)) + + #expect(newPosition.indexRange == 0...2) + #expect(newPosition.position.range == NSRange(start: 0, end: 9)) // Lines one -> three + } + + @Test + func determineVisibleLinesMovesBackwards() throws { + // From middle of the first line, to middle of the third line + layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 2, end: 8)) + + // Start with the third line, should extend back to the first line + let originalPosition = try #require(layoutManager.lineStorage.getLine(atIndex: 2)) // zero-indexed + let newPosition = try #require(layoutManager.determineVisiblePosition(for: originalPosition)) + + #expect(newPosition.indexRange == 0...2) + #expect(newPosition.position.range == NSRange(start: 0, end: 9)) // Lines one -> three + } + + @Test + func determineVisibleLinesMergesMultipleAttachments() throws { + // Two attachments, meeting at the third line. `determineVisiblePosition` should merge all four lines. + layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 2, end: 7)) + layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 7, end: 11)) + + let originalPosition = try #require(layoutManager.lineStorage.getLine(atIndex: 2)) // zero-indexed + let newPosition = try #require(layoutManager.determineVisiblePosition(for: originalPosition)) + + #expect(newPosition.indexRange == 0...3) + #expect(newPosition.position.range == NSRange(start: 0, end: 12)) // Lines one -> four + } + + @Test + func determineVisibleLinesMergesOverlappingAttachments() throws { + // Two attachments, overlapping at the third line. `determineVisiblePosition` should merge all four lines. + layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 2, end: 7)) + layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 5, end: 11)) + + let originalPosition = try #require(layoutManager.lineStorage.getLine(atIndex: 2)) // zero-indexed + let newPosition = try #require(layoutManager.determineVisiblePosition(for: originalPosition)) + + #expect(newPosition.indexRange == 0...3) + #expect(newPosition.position.range == NSRange(start: 0, end: 12)) // Lines one -> four + } + + // MARK: - Iterator Tests + + @Test + func iterateWithAttachments() { + layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 1, end: 2)) + + let lines = layoutManager.linesStartingAt(0, until: 1000) + + // Line "5" is from the trailing newline. That shows up as an empty line in the view. + #expect(lines.map { $0.index } == [0, 1, 2, 3, 4]) + } + + @Test + func iterateWithMultilineAttachments() { + // Two attachments, meeting at the third line. + layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 2, end: 7)) + layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 7, end: 11)) + + let lines = layoutManager.linesStartingAt(0, until: 1000) + + // Line "5" is from the trailing newline. That shows up as an empty line in the view. + #expect(lines.map { $0.index } == [0, 4]) + } +} diff --git a/Tests/CodeEditTextViewTests/TextLayoutManagerTests.swift b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift similarity index 62% rename from Tests/CodeEditTextViewTests/TextLayoutManagerTests.swift rename to Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift index 1dcc9a7dd..dc34b6e25 100644 --- a/Tests/CodeEditTextViewTests/TextLayoutManagerTests.swift +++ b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift @@ -43,6 +43,7 @@ struct TextLayoutManagerTests { init() throws { textView = TextView(string: "A\nB\nC\nD") textView.frame = NSRect(x: 0, y: 0, width: 1000, height: 1000) + textView.updateFrameIfNeeded() textStorage = textView.textStorage layoutManager = try #require(textView.layoutManager) } @@ -101,7 +102,6 @@ struct TextLayoutManagerTests { layoutManager.lineStorage.validateInternalState() } - /// # 04/09/25 /// This ensures that getting line rect info does not invalidate layout. The issue was previously caused by a /// call to ``TextLayoutManager/preparePositionForDisplay``. @Test @@ -130,4 +130,79 @@ struct TextLayoutManagerTests { #expect(lineFragmentIDs == afterLineFragmentIDs, "Line fragments were invalidated by `rectsFor(range:)` call.") layoutManager.lineStorage.validateInternalState() } + + /// It's easy to iterate through lines by taking the last line's range, and adding one to the end of the range. + /// However, that will always skip lines that are empty, but represent a line. This test ensures that when we + /// iterate over a range, we'll always find those empty lines. + /// + /// Related implementation: ``TextLayoutManager/Iterator`` + @Test + func yPositionIteratorDoesNotSkipEmptyLines() { + // Layout manager keeps 1-length lines at the 2nd and 4th lines. + textStorage.mutableString.setString("A\n\nB\n\nC") + layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000)) + + var lineIndexes: [Int] = [] + for line in layoutManager.linesStartingAt(0.0, until: 1000.0) { + lineIndexes.append(line.index) + } + + var lastLineIndex: Int? + for lineIndex in lineIndexes { + if let lastIndex = lastLineIndex { + #expect(lineIndex - 1 == lastIndex, "Skipped an index when iterating.") + } else { + #expect(lineIndex == 0, "First index was not 0") + } + lastLineIndex = lineIndex + } + } + + /// See comment for `yPositionIteratorDoesNotSkipEmptyLines`. + @Test + func rangeIteratorDoesNotSkipEmptyLines() { + // Layout manager keeps 1-length lines at the 2nd and 4th lines. + textStorage.mutableString.setString("A\n\nB\n\nC") + layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000)) + + var lineIndexes: [Int] = [] + for line in layoutManager.linesInRange(textView.documentRange) { + lineIndexes.append(line.index) + } + + var lastLineIndex: Int? + for lineIndex in lineIndexes { + if let lastIndex = lastLineIndex { + #expect(lineIndex - 1 == lastIndex, "Skipped an index when iterating.") + } else { + #expect(lineIndex == 0, "First index was not 0") + } + lastLineIndex = lineIndex + } + } + + @Test + func afterLayoutDoesntNeedLayout() { + layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000)) + #expect(layoutManager.needsLayout == false) + } + + @Test + func invalidatingRangeLaysOutLines() { + layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000)) + + let lineIds = Set(layoutManager.linesInRange(NSRange(start: 2, end: 4)).map { $0.data.id }) + layoutManager.invalidateLayoutForRange(NSRange(start: 2, end: 4)) + + #expect(layoutManager.needsLayout == false) // No forced layout + #expect( + layoutManager + .linesInRange(NSRange(start: 2, end: 4)) + .allSatisfy({ $0.data.needsLayout(maxWidth: .infinity) }) + ) + + let invalidatedLineIds = layoutManager.layoutLines() + + #expect(invalidatedLineIds == lineIds, "Invalidated lines != lines that were laid out in next pass.") + } } diff --git a/Tests/CodeEditTextViewTests/TypesetterTests.swift b/Tests/CodeEditTextViewTests/TypesetterTests.swift index 3b62e8fbe..e065cb69c 100644 --- a/Tests/CodeEditTextViewTests/TypesetterTests.swift +++ b/Tests/CodeEditTextViewTests/TypesetterTests.swift @@ -1,19 +1,41 @@ import XCTest @testable import CodeEditTextView -// swiftlint:disable all +final class DemoTextAttachment: TextAttachment { + var width: CGFloat + + init(width: CGFloat = 100) { + self.width = width + } + + func draw(in context: CGContext, rect: NSRect) { + context.saveGState() + context.setFillColor(NSColor.red.cgColor) + context.fill(rect) + context.restoreGState() + } +} class TypesetterTests: XCTestCase { - let limitedLineWidthDisplayData = TextLine.DisplayData(maxWidth: 150, lineHeightMultiplier: 1.0, estimatedLineHeight: 20.0) - let unlimitedLineWidthDisplayData = TextLine.DisplayData(maxWidth: .infinity, lineHeightMultiplier: 1.0, estimatedLineHeight: 20.0) + // NOTE: makes chars that are ~6.18 pts wide + let attributes: [NSAttributedString.Key: Any] = [.font: NSFont.monospacedSystemFont(ofSize: 10, weight: .regular)] + var typesetter: Typesetter! + + override func setUp() { + typesetter = Typesetter() + continueAfterFailure = false + } func test_LineFeedBreak() { - let typesetter = Typesetter() typesetter.typeset( NSAttributedString(string: "testline\n"), documentRange: NSRange(location: 0, length: 9), - displayData: unlimitedLineWidthDisplayData, - breakStrategy: .word, + displayData: TextLine.DisplayData( + maxWidth: .infinity, + lineHeightMultiplier: 1.0, + estimatedLineHeight: 20.0, + breakStrategy: .word + ), markedRanges: nil ) @@ -22,8 +44,12 @@ class TypesetterTests: XCTestCase { typesetter.typeset( NSAttributedString(string: "testline\n"), documentRange: NSRange(location: 0, length: 9), - displayData: unlimitedLineWidthDisplayData, - breakStrategy: .character, + displayData: TextLine.DisplayData( + maxWidth: .infinity, + lineHeightMultiplier: 1.0, + estimatedLineHeight: 20.0, + breakStrategy: .character + ), markedRanges: nil ) @@ -31,12 +57,15 @@ class TypesetterTests: XCTestCase { } func test_carriageReturnBreak() { - let typesetter = Typesetter() typesetter.typeset( NSAttributedString(string: "testline\r"), documentRange: NSRange(location: 0, length: 9), - displayData: unlimitedLineWidthDisplayData, - breakStrategy: .word, + displayData: TextLine.DisplayData( + maxWidth: .infinity, + lineHeightMultiplier: 1.0, + estimatedLineHeight: 20.0, + breakStrategy: .word + ), markedRanges: nil ) @@ -45,8 +74,12 @@ class TypesetterTests: XCTestCase { typesetter.typeset( NSAttributedString(string: "testline\r"), documentRange: NSRange(location: 0, length: 9), - displayData: unlimitedLineWidthDisplayData, - breakStrategy: .character, + displayData: TextLine.DisplayData( + maxWidth: .infinity, + lineHeightMultiplier: 1.0, + estimatedLineHeight: 20.0, + breakStrategy: .character + ), markedRanges: nil ) @@ -54,12 +87,15 @@ class TypesetterTests: XCTestCase { } func test_carriageReturnLineFeedBreak() { - let typesetter = Typesetter() typesetter.typeset( NSAttributedString(string: "testline\r\n"), documentRange: NSRange(location: 0, length: 10), - displayData: unlimitedLineWidthDisplayData, - breakStrategy: .word, + displayData: TextLine.DisplayData( + maxWidth: .infinity, + lineHeightMultiplier: 1.0, + estimatedLineHeight: 20.0, + breakStrategy: .word + ), markedRanges: nil ) @@ -68,13 +104,186 @@ class TypesetterTests: XCTestCase { typesetter.typeset( NSAttributedString(string: "testline\r\n"), documentRange: NSRange(location: 0, length: 10), - displayData: unlimitedLineWidthDisplayData, - breakStrategy: .character, + displayData: TextLine.DisplayData( + maxWidth: .infinity, + lineHeightMultiplier: 1.0, + estimatedLineHeight: 20.0, + breakStrategy: .character + ), markedRanges: nil ) XCTAssertEqual(typesetter.lineFragments.count, 1, "Typesetter typeset incorrect number of lines.") } -} -// swiftlint:enable all + func test_wrapLinesReturnsValidFragmentRanges() throws { + // Ensure that when wrapping, each wrapped line fragment has correct ranges. + typesetter.typeset( + NSAttributedString(string: String(repeating: "A", count: 1000), attributes: attributes), + documentRange: NSRange(location: 0, length: 1000), + displayData: TextLine.DisplayData( + maxWidth: 150, + lineHeightMultiplier: 1.0, + estimatedLineHeight: 20.0, + breakStrategy: .character + ), + markedRanges: nil, + attachments: [] + ) + + let firstFragment = try XCTUnwrap(typesetter.lineFragments.first) + + for fragment in typesetter.lineFragments { + // The end of the fragment shouldn't extend beyond the valid document range + XCTAssertLessThanOrEqual(fragment.range.max, 1000) + // Because we're breaking on characters, and filling each line with the same char + // Each fragment should be as long or shorter than the first fragment. + XCTAssertLessThanOrEqual(fragment.range.length, firstFragment.range.length) + } + } + + // MARK: - Attachments + + func test_layoutSingleFragmentWithAttachment() throws { + let attachment = DemoTextAttachment() + typesetter.typeset( + NSAttributedString(string: "ABC"), + documentRange: NSRange(location: 0, length: 3), + displayData: TextLine.DisplayData( + maxWidth: .infinity, + lineHeightMultiplier: 1.0, + estimatedLineHeight: 20.0, + breakStrategy: .character + ), + markedRanges: nil, + attachments: [AnyTextAttachment(range: NSRange(location: 1, length: 1), attachment: attachment)] + ) + + XCTAssertEqual(typesetter.lineFragments.count, 1) + let fragment = try XCTUnwrap(typesetter.lineFragments.first?.data) + XCTAssertEqual(fragment.contents.count, 3) + XCTAssertTrue(fragment.contents[0].isText) + XCTAssertFalse(fragment.contents[1].isText) + XCTAssertTrue(fragment.contents[2].isText) + XCTAssertEqual( + fragment.contents[1], + .init( + data: .attachment(attachment: .init(range: NSRange(location: 1, length: 1), attachment: attachment)), + width: attachment.width + ) + ) + } + + func test_layoutSingleFragmentEntirelyAttachment() throws { + let attachment = DemoTextAttachment() + typesetter.typeset( + NSAttributedString(string: "ABC"), + documentRange: NSRange(location: 0, length: 3), + displayData: TextLine.DisplayData( + maxWidth: .infinity, + lineHeightMultiplier: 1.0, + estimatedLineHeight: 20.0, + breakStrategy: .character + ), + markedRanges: nil, + attachments: [AnyTextAttachment(range: NSRange(location: 0, length: 3), attachment: attachment)] + ) + + XCTAssertEqual(typesetter.lineFragments.count, 1) + let fragment = try XCTUnwrap(typesetter.lineFragments.first?.data) + XCTAssertEqual(fragment.contents.count, 1) + XCTAssertFalse(fragment.contents[0].isText) + XCTAssertEqual( + fragment.contents[0], + .init( + data: .attachment(attachment: .init(range: NSRange(location: 0, length: 3), attachment: attachment)), + width: attachment.width + ) + ) + } + + func test_wrapLinesWithAttachment() throws { + let attachment = DemoTextAttachment(width: 130) + + // Total should be slightly > 160px, breaking off 2 and 3 + typesetter.typeset( + NSAttributedString(string: "ABC123", attributes: attributes), + documentRange: NSRange(location: 0, length: 6), + displayData: TextLine.DisplayData( + maxWidth: 150, + lineHeightMultiplier: 1.0, + estimatedLineHeight: 20.0, + breakStrategy: .character + ), + markedRanges: nil, + attachments: [.init(range: NSRange(location: 1, length: 1), attachment: attachment)] + ) + + XCTAssertEqual(typesetter.lineFragments.count, 2) + + var fragment = try XCTUnwrap(typesetter.lineFragments.first?.data) + XCTAssertEqual(fragment.contents.count, 3) // First fragment includes the attachment and characters after + XCTAssertTrue(fragment.contents[0].isText) + XCTAssertFalse(fragment.contents[1].isText) + XCTAssertTrue(fragment.contents[2].isText) + + fragment = try XCTUnwrap(typesetter.lineFragments.getLine(atIndex: 1)?.data) + XCTAssertEqual(fragment.contents.count, 1) // Second fragment is only text + XCTAssertTrue(fragment.contents[0].isText) + } + + func test_wrapLinesWithWideAttachment() throws { + // Attachment takes up more than the available room. + // Expected result: attachment is on it's own line fragment with no other text. + let attachment = DemoTextAttachment(width: 150) + + typesetter.typeset( + NSAttributedString(string: "ABC123", attributes: attributes), + documentRange: NSRange(location: 0, length: 6), + displayData: TextLine.DisplayData( + maxWidth: 150, + lineHeightMultiplier: 1.0, + estimatedLineHeight: 20.0, + breakStrategy: .character + ), + markedRanges: nil, + attachments: [.init(range: NSRange(location: 1, length: 1), attachment: attachment)] + ) + + XCTAssertEqual(typesetter.lineFragments.count, 3) + + var fragment = try XCTUnwrap(typesetter.lineFragments.first?.data) + XCTAssertEqual(fragment.documentRange, NSRange(location: 0, length: 1)) + XCTAssertEqual(fragment.contents.count, 1) + XCTAssertTrue(fragment.contents[0].isText) + + fragment = try XCTUnwrap(typesetter.lineFragments.getLine(atIndex: 1)?.data) + XCTAssertEqual(fragment.documentRange, NSRange(location: 1, length: 1)) + XCTAssertEqual(fragment.contents.count, 1) + XCTAssertFalse(fragment.contents[0].isText) + + fragment = try XCTUnwrap(typesetter.lineFragments.getLine(atIndex: 2)?.data) + XCTAssertEqual(fragment.documentRange, NSRange(location: 2, length: 4)) + XCTAssertEqual(fragment.contents.count, 1) + XCTAssertTrue(fragment.contents[0].isText) + } + + func test_wrapLinesDoesNotBreakOnLastNewline() throws { + let attachment = DemoTextAttachment(width: 50) + let string = NSAttributedString(string: "AB CD\n12 34\nWX YZ\n", attributes: attributes) + typesetter.typeset( + string, + documentRange: NSRange(location: 0, length: 15), + displayData: TextLine.DisplayData( + maxWidth: .infinity, + lineHeightMultiplier: 1.0, + estimatedLineHeight: 20.0, + breakStrategy: .word + ), + markedRanges: nil, + attachments: [.init(range: NSRange(start: 4, end: 15), attachment: attachment)] + ) + + XCTAssertEqual(typesetter.lineFragments.count, 1) + } +} From d51f3ad8370457acc431fa01eede555c3e58b86d Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Tue, 27 May 2025 10:16:49 -0500 Subject: [PATCH 20/42] Don't Try to Set a Negative Frame Height (#96) ### Description Fixes a potential recursion where CETV tries to set it's frame to a negative number (due to overscroll & scroll inset weirdness). This adds a super simple sanity check to make sure we limit the textview to a `0` frame at minimum. This hang would occur when no content is present, making the content size an odd number, which also makes scroll views freak out on macOS. ### Related Issues * https://github.com/CodeEditApp/CodeEdit/issues/2049 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots N/A, fixes a hang. --- Sources/CodeEditTextView/TextView/TextView+Layout.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/CodeEditTextView/TextView/TextView+Layout.swift b/Sources/CodeEditTextView/TextView/TextView+Layout.swift index c0a700aec..5a4162252 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Layout.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Layout.swift @@ -72,7 +72,7 @@ extension TextView { availableSize.height -= (scrollView?.contentInsets.top ?? 0) + (scrollView?.contentInsets.bottom ?? 0) let extraHeight = availableSize.height * overscrollAmount - let newHeight = max(layoutManager.estimatedHeight() + extraHeight, availableSize.height) + let newHeight = max(layoutManager.estimatedHeight() + extraHeight, availableSize.height, 0) let newWidth = layoutManager.estimatedWidth() var didUpdate = false From bc405e44b5d56403a63264331e18885983f58cf6 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Tue, 27 May 2025 12:10:52 -0500 Subject: [PATCH 21/42] Update Build Documentation Workflow An attempt to fix the build documentation workflow that's failing on main. --- .github/workflows/build-documentation.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-documentation.yml b/.github/workflows/build-documentation.yml index 3b73dfdd5..63756f779 100644 --- a/.github/workflows/build-documentation.yml +++ b/.github/workflows/build-documentation.yml @@ -7,7 +7,7 @@ jobs: runs-on: [self-hosted, macOS] steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Build Documentation run: exec ./.github/scripts/build-docc.sh - name: Init new repo in dist folder and commit generated files @@ -20,7 +20,7 @@ jobs: git commit -m 'deploy' - name: Force push to destination branch - uses: ad-m/github-push-action@v0.6.0 + uses: ad-m/github-push-action@v0.8.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} branch: docs From 69282e2ea7ad8976b062b945d575da47b61ed208 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Wed, 28 May 2025 10:09:30 -0500 Subject: [PATCH 22/42] [hotfix:] Layout After New/Removed Lines (#97) ### Description Hotfix to fix mistakenly broken editing capabilities for inserting or deleting new lines. Updates the layout pass to correctly detect new lines, and if a new one is laid out, continues to layout lines after that line. Eg: ``` 1 2 <- Insert "\n" 3 ``` Before: ``` [visible text] 1 2 <- Layout invalidated 3 <- Layout _NOT_ invalidated, missing new line. ``` Now: ``` [visible text] 1 2 <- Layout invalidated <- Layout invalidated 3 <- Layout invalidated ``` Adds a new test case for this. ### Related Issues ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots --- .../TextLayoutManager+Layout.swift | 18 ++++++++----- .../TextLayoutManagerTests.swift | 25 ++++++++++++++++++- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift index cdbc2704d..042622830 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift @@ -87,30 +87,28 @@ extension TextLayoutManager { #if DEBUG var laidOutLines: Set = [] #endif - // Layout all lines, fetching lines lazily as they are laid out. for linePosition in linesStartingAt(minY, until: maxY).lazy { guard linePosition.yPos < maxY else { continue } // Three ways to determine if a line needs to be re-calculated. - let changedWidth = linePosition.data.needsLayout(maxWidth: maxLineLayoutWidth) + let linePositionNeedsLayout = linePosition.data.needsLayout(maxWidth: maxLineLayoutWidth) let wasNotVisible = !visibleLineIds.contains(linePosition.data.id) let lineNotEntirelyLaidOut = linePosition.height != linePosition.data.lineFragments.height - if forceLayout || changedWidth || wasNotVisible || lineNotEntirelyLaidOut { + if forceLayout || linePositionNeedsLayout || wasNotVisible || lineNotEntirelyLaidOut { let lineSize = layoutLine( linePosition, textStorage: textStorage, layoutData: LineLayoutData(minY: minY, maxY: maxY, maxWidth: maxLineLayoutWidth), laidOutFragmentIDs: &usedFragmentIDs ) - if lineSize.height != linePosition.height { + let wasLineHeightChanged = lineSize.height != linePosition.height + if wasLineHeightChanged { lineStorage.update( atOffset: linePosition.range.location, delta: 0, deltaHeight: lineSize.height - linePosition.height ) - // If we've updated a line's height, force re-layout for the rest of the pass. - forceLayout = true if linePosition.yPos < minY { // Adjust the scroll position by the difference between the new height and old. @@ -123,6 +121,14 @@ extension TextLayoutManager { #if DEBUG laidOutLines.insert(linePosition.data.id) #endif + // If we've updated a line's height, or a line position was newly laid out, force re-layout for the + // rest of the pass (going down the screen). + // + // These two signals identify: + // - New lines being inserted & Lines being deleted (lineNotEntirelyLaidOut) + // - Line updated for width change (wasLineHeightChanged) + + forceLayout = forceLayout || wasLineHeightChanged || lineNotEntirelyLaidOut } else { // Make sure the used fragment views aren't dequeued. usedFragmentIDs.formUnion(linePosition.data.lineFragments.map(\.data.id)) diff --git a/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift index dc34b6e25..7306e62dd 100644 --- a/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift +++ b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift @@ -187,6 +187,9 @@ struct TextLayoutManagerTests { #expect(layoutManager.needsLayout == false) } + /// Invalidating a range shouldn't cause a layout on any other lines next layout pass. + /// Note that this is correct behavior, and edits that add or remove lines will trigger another heuristic. + /// See `editsWithNewlinesForceLayoutGoingDownScreen` @Test func invalidatingRangeLaysOutLines() { layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000)) @@ -203,6 +206,26 @@ struct TextLayoutManagerTests { let invalidatedLineIds = layoutManager.layoutLines() - #expect(invalidatedLineIds == lineIds, "Invalidated lines != lines that were laid out in next pass.") + #expect( + invalidatedLineIds.isSuperset(of: lineIds), + "Invalidated lines != lines that were laid out in next pass." + ) + } + + /// Inserting a new line should cause layout going down the rest of the screen, because the following lines + /// should have moved their position to accomodate the new line. + @Test + func editsWithNewlinesForceLayoutGoingDownScreen() { + layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000)) + textStorage.replaceCharacters(in: NSRange(start: 4, end: 4), with: "Z\n") + + let expectedLineIds = Array( + layoutManager.lineStorage.linesInRange(NSRange(location: 4, length: 9)) + ).map { $0.data.id } + + #expect(layoutManager.needsLayout == false) // No forced layout for entire view + + let invalidatedLineIds = layoutManager.layoutLines() + #expect(Set(expectedLineIds) == invalidatedLineIds) } } From 040be6e531b024f5d9226b3bae078c6de0b2f4c3 Mon Sep 17 00:00:00 2001 From: Austin Condiff Date: Wed, 4 Jun 2025 08:35:35 -0500 Subject: [PATCH 23/42] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d615c4484..3c8ee6009 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ Special thanks to [Matt Massicotte](https://twitter.com/mattie) for the great wo - +

        CodeEdit        

From 7f70ee5fa788361ae63619b5111a14f59c24bcdb Mon Sep 17 00:00:00 2001 From: Austin Condiff Date: Thu, 5 Jun 2025 15:55:04 -0500 Subject: [PATCH 24/42] Added product icon and status bar to example app (#101) * Added product icon and status bar to example app similar to what has been done to CodeEditSourceEditor. * Fixed SwiftLint errors --- .../project.pbxproj | 77 +++++---------- .../CodeEditTextView-Icon-1024.png | Bin 0 -> 1180146 bytes .../CodeEditTextView-Icon-128.png | Bin 0 -> 22449 bytes .../CodeEditTextView-Icon-16.png | Bin 0 -> 1861 bytes .../CodeEditTextView-Icon-256.png | Bin 0 -> 78701 bytes .../CodeEditTextView-Icon-32.png | Bin 0 -> 3115 bytes .../CodeEditTextView-Icon-512.png | Bin 0 -> 299865 bytes .../CodeEditTextView-Icon-64.png | Bin 0 -> 7442 bytes .../AppIcon.appiconset/Contents.json | 89 ++++++++++++------ .../Views/ContentView.swift | 26 +++-- .../Views/StatusBar.swift | 63 +++++++++++++ .../Views/SwiftUITextView.swift | 9 ++ .../Views/TextViewController.swift | 19 ++++ 13 files changed, 195 insertions(+), 88 deletions(-) create mode 100644 Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/CodeEditTextView-Icon-1024.png create mode 100644 Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/CodeEditTextView-Icon-128.png create mode 100644 Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/CodeEditTextView-Icon-16.png create mode 100644 Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/CodeEditTextView-Icon-256.png create mode 100644 Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/CodeEditTextView-Icon-32.png create mode 100644 Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/CodeEditTextView-Icon-512.png create mode 100644 Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/CodeEditTextView-Icon-64.png create mode 100644 Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/StatusBar.swift diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample.xcodeproj/project.pbxproj b/Example/CodeEditTextViewExample/CodeEditTextViewExample.xcodeproj/project.pbxproj index 4a583aa28..d0ba091d5 100644 --- a/Example/CodeEditTextViewExample/CodeEditTextViewExample.xcodeproj/project.pbxproj +++ b/Example/CodeEditTextViewExample/CodeEditTextViewExample.xcodeproj/project.pbxproj @@ -8,27 +8,34 @@ /* Begin PBXBuildFile section */ 6C2265DF2D306AB7008710D7 /* CodeEditTextView in Frameworks */ = {isa = PBXBuildFile; productRef = 6C2265DE2D306AB7008710D7 /* CodeEditTextView */; }; - 6C2265E42D306B90008710D7 /* SwiftUITextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C2265E32D306B90008710D7 /* SwiftUITextView.swift */; }; - 6C2265E62D306D37008710D7 /* TextViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C2265E52D306D37008710D7 /* TextViewController.swift */; }; - 6CCDA29B2D306A25007CD84A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6CCDA2942D306A25007CD84A /* Assets.xcassets */; }; - 6CCDA29D2D306A25007CD84A /* CodeEditTextViewExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CCDA2952D306A25007CD84A /* CodeEditTextViewExampleApp.swift */; }; - 6CCDA29E2D306A25007CD84A /* CodeEditTextViewExampleDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CCDA2962D306A25007CD84A /* CodeEditTextViewExampleDocument.swift */; }; - 6CCDA29F2D306A25007CD84A /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CCDA2972D306A25007CD84A /* ContentView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 6C2265E12D306B58008710D7 /* CodeEditTextViewExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = CodeEditTextViewExample.entitlements; sourceTree = ""; }; - 6C2265E32D306B90008710D7 /* SwiftUITextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUITextView.swift; sourceTree = ""; }; - 6C2265E52D306D37008710D7 /* TextViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextViewController.swift; sourceTree = ""; }; 6CCDA27D2D306A1B007CD84A /* CodeEditTextViewExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CodeEditTextViewExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 6CCDA2942D306A25007CD84A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 6CCDA2952D306A25007CD84A /* CodeEditTextViewExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeEditTextViewExampleApp.swift; sourceTree = ""; }; - 6CCDA2962D306A25007CD84A /* CodeEditTextViewExampleDocument.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeEditTextViewExampleDocument.swift; sourceTree = ""; }; - 6CCDA2972D306A25007CD84A /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - 6CCDA2982D306A25007CD84A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 6CCDA2A12D306A5B007CD84A /* CodeEditTextView */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = CodeEditTextView; path = ../..; sourceTree = ""; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ + B6654F662DF001EB003B32B8 /* Exceptions for "CodeEditTextViewExample" folder in "CodeEditTextViewExample" target */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Info.plist, + ); + target = 6CCDA27C2D306A1B007CD84A /* CodeEditTextViewExample */; + }; +/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + B6654F5D2DF001EB003B32B8 /* CodeEditTextViewExample */ = { + isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + B6654F662DF001EB003B32B8 /* Exceptions for "CodeEditTextViewExample" folder in "CodeEditTextViewExample" target */, + ); + path = CodeEditTextViewExample; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + /* Begin PBXFrameworksBuildPhase section */ 6CCDA27A2D306A1B007CD84A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; @@ -41,29 +48,11 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 6C2265E02D306AEB008710D7 /* Documents */ = { - isa = PBXGroup; - children = ( - 6CCDA2962D306A25007CD84A /* CodeEditTextViewExampleDocument.swift */, - ); - path = Documents; - sourceTree = ""; - }; - 6C2265E22D306B69008710D7 /* Views */ = { - isa = PBXGroup; - children = ( - 6CCDA2972D306A25007CD84A /* ContentView.swift */, - 6C2265E32D306B90008710D7 /* SwiftUITextView.swift */, - 6C2265E52D306D37008710D7 /* TextViewController.swift */, - ); - path = Views; - sourceTree = ""; - }; 6CCDA2742D306A1B007CD84A = { isa = PBXGroup; children = ( 6CCDA2A12D306A5B007CD84A /* CodeEditTextView */, - 6CCDA2992D306A25007CD84A /* CodeEditTextViewExample */, + B6654F5D2DF001EB003B32B8 /* CodeEditTextViewExample */, 6CCDA2A02D306A5B007CD84A /* Frameworks */, 6CCDA27E2D306A1B007CD84A /* Products */, ); @@ -77,19 +66,6 @@ name = Products; sourceTree = ""; }; - 6CCDA2992D306A25007CD84A /* CodeEditTextViewExample */ = { - isa = PBXGroup; - children = ( - 6CCDA2952D306A25007CD84A /* CodeEditTextViewExampleApp.swift */, - 6C2265E02D306AEB008710D7 /* Documents */, - 6C2265E22D306B69008710D7 /* Views */, - 6CCDA2942D306A25007CD84A /* Assets.xcassets */, - 6CCDA2982D306A25007CD84A /* Info.plist */, - 6C2265E12D306B58008710D7 /* CodeEditTextViewExample.entitlements */, - ); - path = CodeEditTextViewExample; - sourceTree = ""; - }; 6CCDA2A02D306A5B007CD84A /* Frameworks */ = { isa = PBXGroup; children = ( @@ -112,6 +88,9 @@ ); dependencies = ( ); + fileSystemSynchronizedGroups = ( + B6654F5D2DF001EB003B32B8 /* CodeEditTextViewExample */, + ); name = CodeEditTextViewExample; packageProductDependencies = ( 6C2265DE2D306AB7008710D7 /* CodeEditTextView */, @@ -159,7 +138,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6CCDA29B2D306A25007CD84A /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -170,11 +148,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6C2265E62D306D37008710D7 /* TextViewController.swift in Sources */, - 6CCDA29D2D306A25007CD84A /* CodeEditTextViewExampleApp.swift in Sources */, - 6CCDA29E2D306A25007CD84A /* CodeEditTextViewExampleDocument.swift in Sources */, - 6CCDA29F2D306A25007CD84A /* ContentView.swift in Sources */, - 6C2265E42D306B90008710D7 /* SwiftUITextView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/CodeEditTextView-Icon-1024.png b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/CodeEditTextView-Icon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..86c5e447866340d506e5f09d1af47538acd6b532 GIT binary patch literal 1180146 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%0AuCNzzqT>t42F^ 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

6B61z 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 z z(lq8(M`6U*PH~-;pT2AHch_9r@4)r&@(3nB>uYbzLK?~^o zE1kIg-^T#vS(evcd+jc_xsdYA3ymP>HV7L6!QA>dVTG2PrFWgR;kWbd3+lwP@nvvJ zW3=%e@XL9xxzDx=`pj7a1fh#Y-8%w`DTvZ$z}`@>26%OgMFKbjQ5to&hAEf7nP3bY zSyF4Drr|?H{Sur~VmZGIWH>cwSstC1Jc%3f5`m3Q^3=lrU}fQ(K;is$tjylSGzc^G7gf8lGPfz!CSo~I`#R*in6BYhb(C_yCi z{5epq{t_{86I553`e{iv{ZlBe404)tUBO`MBy6KmK<_-nPIfTu43QO`hjyv>*Umxu zYap+XBnK2zr`09dTVCuf93siPoh5WQCkwmC{${xuk|- zP-KZX!rr8}nJMeh_BQPaO_$CMrRpty=y4privWl6b>N&u1>sS@_OgaCu`xyY1SLsJ zeMctq#=g?$1+nB*Hp@)<#$l3fEmoUaX1iB-eE@`jOV8ivp)Yt{pU{W8Kp?P#JK-{+ zD|SR4T=Axs^v7vm>f*#Qgo9UohPUPNTizclXe*O_$>_c$NKvZq7a z*mh`}E#Jl(>6aaKA@TVeJ-|D(|Gf-QO(pLewQHA5=95X8F~Wb!zT_82nDP>T$vl<{ zs9fc5dD_y}PRSyqyQsW}31DGi)wVG<^4iH{+J|LJ4&?;~A`U5}AU#v-)H~7bW6je? z`5WBsHXA!jKQabN-GED9(e^9tlyhR8iWiDyN|`u)bSMS<@on{g{nvlXo%A2=&YgR1 z_j5n@kqvKPrmDi93;&tsxWV0WlKQYtmcEDALu*hh`)TwBUsz$hQ~uh;SA9&=FEcTT z@A$&c^-0(CJ`>(IUVlA(X(#xN6J4-!7XY94!>{h)E&poc-F6M6-Sj1GclvJ1SqN}Z z!1y^bI@z|5b|LdJ3jjA*46y#*MIPS=aE7Ukcdzu$@(YWjxKKUwO;R z&kXXVDJJ@(hc`atA>Vu@fEeHl4t*gZkEdp=kw*cb5ql!HHXDd@p}R;hHy2_%oLBtNSalIP z_^Ov%8JTlFGy|7E#qR>JKHr6UqiS&`(phEoMbX+$+ouohnG~;hLUwVDmikR(UNpoZ zZS5c0>PU9-150tnmX;m*t1$D+-F69KQ`2gPtRLBLwN5Sxr18yNlOAx@1)ydfqLlepmc|Z7NBh%?U?W%>9l|LXMc8`?^vGrJd0cZ zfB3^6-e8r>XI_q;d+s?07jAnw=FWdw562sJG;Yy?PQC)Lf=MT82@(lDx&2J#Ih_*L z$dMXIo8;VvRa^%poeUV{PBGAHvMt%V zYM5R?6&MO7xuw9x+X`cW^6eA+LtlOgO!SQzXdUR*XOSW&o!trwIoe6~`BOVof*}FP za%F(5DRf2;b>Gqw)Bx=Sps>opokrgf9$k*|+?+I>@S`KEx7fo;$>_t z9lc28Ar7VfDCT_g4+@*Vcts}kw1dkIjg_B4?*Z*4jMT@z;a!l*V4Z9zoR3pkw~+^I zJJjvmNhz|ak8p}U4$9F%Ax8b zgZb5U4OHFT!QDfY&)p{qNtr3d9@cg0J8dq7oyal>P*&^C?W59Fe$8X@+^w?XXOk~Z z^V)_TAo^>&LeR7YYpH%Q11ad`W>*R*s~%9xq-NiyRyB*hSrUsbv_8we8EUmVO`>fV zO?ISrBG1H1fdcN)OKne_!0U4!Cr^!SHr~fdacb*Me%JFJ;sinFEu&VpFP@cS{4;5)w0p} zz4|DZcAFn3q3z4k#Lv3}7L2gND+Ix}zRBanHs*jId`_pzW(SY-^#L8MwusfM24y4D z$TN03To}MvWLv!scD#i)G@Rrys9xQXwo1-Ldh0Qg5ytDtqAOB$Y?Qg%H z$?X02pGn?4pKpv%(Kp`s4lf7%aiq~B9RtL6$f(`D^M4QT0Ep;_;evn*#>(KL0OP*A z0I)CR>%yG){)}x?CypVm5huO#f0>DYx7KT0$3DFA-vt8egLD1QvBf?2xM*=Y{l63V zvu7XN-T%Ou$mM%yeDR=n`uX;5w({T2LPX`P-(|wiILBQK-o5n^1?gK)c`S)z{2nZM zde{Gbb|t*eqXbuYpVf69S+MSvJ!1pxp`IUo=IPKF|K^x6twxk~uCbNn#v)kSIj&+X zCtvzl;kd{G*uo=Eu+lN_=3lf+UTJUq7OyoHaf}D<(8O&$)6;rE97U76)QGU$^j6fMpbjU3NY@ z-?@14qAvi&&69aTE2#ITdJ*X%1;me3Y% ze##;%d3)ZrSUKhnsB&7CP61NE1;;pTY-oURu-5^K<;x5pl*`w_rRN};AzjNC&(z5Z)D{EeA3%G|1%IY)JPIRu7LmLvpc$MwcDJ{XBwmrN zyV9`CMH2N?cLyZRk6o#5JB;GP8x>~q5%T#Hi;5Ip(yA<8mu6SKmEEn-J_GH!KSBK| zM=B*J%8Fc`FS~VMvFIZI!jLN|Vl4imM%xZ%C{zCF^yEo9Mnul^L6AE+YX_<=bcTT+ z+FtuI9Ja(UfBTmqd2AP3!UHP#&wv0WLvlTitgK}4KMNKttULG!9C%~9KnZ3Xke;rQ zdgy>uB1|+@B7RdmXmV{*X9tX~+q1^6N`B5~$MbqE=Wka2rJWpkEj!7pZk_g>ItNM~ z{v1?WKMZ;!7Fk@iOj584MdQsR7sDhu?JIHy%s&WAVxoFc@A+nT z;ekt)QK^a(nH#5iZENtQO4_7;rk$#%_%|gkM+S8j&R^vzr00W&WUOd;*_RzEY1{V! zuce-LdYG@=)SsaX`9oUPK{#M$_3*F0szM)PdpH%;@|0AD%0-<>j5>1yv_uvP)HOMW zhLe@OKfvDsJ$3E^iVP)goYcu;1FwP6c8sPM?;hly{PL`n?Kg`o(L`aL#B&`R_lu_DFS_2Px zeOYpyGI^= zC=RmusxLQoyd@0(^x60s2;vC0+zXjda3%GepIK>}B0ytHxo-O~UwnC`{Vyxjz29UAx3@OhRv!P@?t|JhR$N6DJ191uT`WMAdj3<0Hfk9q=lURzqI5Zmi*~E zVDw4tLmN!{A34cNoQZvcg8<09v%^zD;BCv3)MC#fxgEyRvRgU zVemR6rU4T8^E??yfKWy&zOwu*u`-Zja?oA+V=U zoyI=3i7=@bcq*SZw(f)<98S;xd8r=-_MDTv&c|>po;bewT^~WH&?ybsJIM6TgnqjG z6PLSswcBK+1>5oq>GF2P8(Yu`cfc)OX)1^Ga3J|q9Pk`SE5C_4;FC4i;AXg=uN+QZg+U&bye{iMrLdtvdyl2BnLq$HyLfjQVN2k*+T8qLO!M+-B`_ zkhLK7r@1k;G<+`z9bj!xx;n1c`V(V~*1dYj$9^zi>yOtFDY{fN#{jlVL8h#@dmWLb z4MZVGPd@pC^yLbV@+z*`u{BlF(Y<#j9PDdT7XY@TpP+clegKu>s@rlgD=*u?aOW-kC!hd85OAfivwE zW+Q{w(v|<@DW_Xr<<_#utAq3;u9A8I#d?=VC(6Q)o(j@9ppPtlBqD#?9|Lj*>?)i^ zq3&v`p30@%(lAL=Jda#)-ag^cM<2}u*a?Atnzko>z`S-SD~?u?81gZXb0HHLWi_mk zFRXE@`f#NBPk5?`Y~@JXOgoScxKI);@k#m*o%Iohy^PuA5jf$s&(%#A022%4;UwIx z$+ns5W?}X0BPYlXe}x=-2&a1v{6{|Wk;o!llXtN+!1zZpp<&&aXPZ=SCwXp7HctlH zaBNH-r+Yt%k5=P&neHeM=8^0dX_J1*Z%v@?0orM77x%PcJXj%gE3YV z@Q;!lTDp09s`)94gnPItD`fM{OX7fJ#Tx*QmMe!Zj{W|3zq@<=_1Ex$>$^uE<=KCB z1h}x&_S-h_t(RYB!u$3X6D)HA@6m~UKBGrnyPE)m<*vA8XJTVM#mC#wZMXL^srHkC zd2i0L#SQoxbHu%Nojd-#{oh9toM_*RpPJnAKhJ9`H!dR^^r|tu3xD;>HGJXGEXZBG zd~Np*k7DphHe3DO@x{)B)nBQ-k1CwzF28)#mD|{B!ND;Gg4wC0&ajj1lSKt>rkvV= zac&j?{3?Pk5mXH2(pNa)O9y9npZLV{*r)!aZ<=f)p6B*LGRU_qyn0C7#kRL3&`P7N zVbNiH5waL0bk}hMC05M2@|lFQU7E}bUGn6+TH4lc2_wG!R8AH#>X!CedNdT(=Ov0w z(hFTPfuY{zoc1Avy`F!~G$z~Ux36_~ggdfOibB!lY0Q#lVzEd>0+uVtGr~i|GQ_o<2 zSCY^P^PdpZuEZJNm2kpK0DWQlbr+qOFXe_PyQg=*_j|wRP5_V2k?gdG)}7;Ru)x1) zO}ByO&pZhm&SyXS*<&X1M_>5D7kn4Mbv|!#Jq^Esse@kO(l}Q8@I2*^?I5jzMK~jj$IxTI;y}x!AWN98 zyeD_d4`uLxFTT%o8MEL6wTQj~3{=QhZa-f$9X&udwcf+VJV8vkl-po6`bAce4;w$% zOWNwP0$77!1xJLM1UyefxAQefLwsqc{04rn0RU+DDwF5TA%s2grA48iIZOtJN3O!h z9>T7C<#n(~TwJy{d@`7Wwlt-s&7CAf4Rh>VNzs+g)VgWX)((UtS{0(eE&PP;p|@=* zwywvPi$LTotRO%rXJ@`X>{nI0=Zn^asa4`(i&cC zA{PEkhypJIZ*}S*=yCG=^UtTQk`JW2F@)6?HU#a542d01bknYATgqh}Px89SV^{*S zd}Hb-AOlwz{JPK9g5_e3bmYh1RF|^q$I{gI%A-2UUtMpK3HeQ8NQ*KS6FL!hz+#>Y zOzM{x@!7-Gp;DkSO|atPeBBUad zIN=Yx#~Uk#IQirG$>;KqW_HZ!Fi)y8(F5azmF;0OacJwR0xTey}*%lj9V3~EX-~wSIcR&uR zbyONvopUGmgL>0ZAJv}vuaf}JQzytHoh}_sZuY*O71S4y=M#UnlZy!(IzJ2?Au<4jP9oGoFztyWJ)3Ab;`y`Rm=AZ@#(v z_$NNT`v_woWj3jw|NQUnAL8+l-Hx~B-FiKMp|fcIf8_~#NM~@B!}Q*}mv$FldoAxP zICF-_LehWrj(#C{n?954*Iv7*;j;i=(M!O3wNEsqf1=Q9Kf&i$5sZQE3Ng=5qMhOk z0P@J)f6ak?tYatp#+1wNu?v80|JvCF0qfw+H{Z(6fY8Hs(z*9O78Kw)b?Uj>{B0-3 z#nbmX!8(&|_-^;t@V?+rUcOk+mjU++0eu&N-l>D+u?LRwb^KYsl{&tFe_dv=$d|gk z|314Eq_g5+doWF;jgIljXIcEY4?M}1j^iTF=h`?0LVj|Pm*W+W_SW&e<$lFm6I=Qi zuT8*k+G}kb++4Svdo2qP{F_AUT)Z0R&EyOa$BouspW`1|mditXNKATOAM%SXz^Ol_ zn;dpU{Bk>G=-Dp&5^CWyb+=)G$GMF!@^K1c`?A_bn6}4>h2p@?c+Uck?b3ck7-9Xz zO8n^Y;gUGiK4dAAborrA$Q$}5y74lAx z$k~`}Xttph-~yXLQgSJwiA-ZRaL&Nhe1nMi3peKt9&MEnqtzN{g%hE{!n_cc2ZTZc z89ch+H!r*?75PjuQX5*8nP2F7-ekule+PQf$~i}I!lyz9cw~-l!0&nO=?SRZl91l~ zLO={VUvzP>y&uA~)Xr5z@kd8_xy4^p2Q~NK|9}H315se28+h^)M!ZSd(C)?H3*p$* zGH?ULvwR$-6L}b*8%{0nAkW2<(Q$St$Oj&Am=56RHXL*Us|^*zYww80rZR+w6Uf$S zdE22m;9#2|+teLUv~wu9tGhXC=O%szn=V9@hevHAFX<^% zN=H2FZs-alU4JBsg=0IVuw(2ZAGdr?J4%}qY)j&* zDtdvRiG3Cj%$M4szHSY6L1_k)h0#3H$QL6*m&qYT8FaDjy1F2I>QX!I<3`)PjI>q; zgvg*?>TKju3~9yw+QfH0B}I7 zzA+1bO~3uyza1O6@D;tLjp#$zLw=Du{!|a#$6ET%*fQ-iA_X2ft4rlHj?`v@-*zjk zrcXO5t+Xw6;H_qZY~#`8YR8Ll5~k zpZQFDFM7qN#qUerkTft_P1~|S6&p^SIgvp19=`zdU-K zJjOnz#M>4Bytd^gIe(Q7Y|5i}W@YhuEhunRdfE>gTdwU*?s~hME$=QGxc%ORose8| zG$x`SnfApaTfZ357-P(ugr(;+bi7!1^fUf%q4m+T+R2Oh;pnf5iFfJ(Z-3&9oip}V zQ25!l9cU&x>O<(U$61U5OSU$ni?MtX?h#(*vD?#Zzj9_rXO$C-+Bji&jJT9Ftsqq!H9gkHzmdbB%?;Jn41-6R#;H2(Q&_T6=&dREl+x|~jxw^pu zz|pyL=XM|a*vH%fuv*T}74bN{cs~CN>M_Cnge{!B1E7s(8j%gs-!xSDc+Q~I#uu7X z=Fvu;&io*749>vWFefi3{4vkThDmjDZJw}Z6Tl{z6t*;ANWQ^rt}CDL21judctUxV z<-EK~d@GD@$~g{tD03%r4UUn^Kn$uKk*U?t;Oe!w{aNTBKs6XhA)EOlm$VY}=vYmq zy#k>6lm6|$`*#V1LsQ&2x4Z+U4v4+3UabqqRt^+$H*(3;L7?TGG}|G_Q5}&i6hZ|@ zup_q9qF%R&1J`*UM4oL0Ls0R}XXzyYLUpkyD`8}4m+43D3ytWQZql^Bg-pVm$mU9^x;Y2A~^^EQUkXn!R z<*6U@9pL-Z-yJkdTOR(*ocgcMOvx$FM8b&yFtt&2`t@J`^=z9R90+KOIt{$+ z@F&SIsoTdrtzXF(UdvbYt3#i%nxs=1%5Tn*!?z(v7eCYWAOGVYlmp7_eQIRfztaW2 z5o#8hg2bQ49(!VU{``6P*FUp(9Glj6vLKXrQd@^AG-4LNv@u&S}*oONQVAC<1L;Vj=<|IOe0&8?o5#f7>qXq1nF$xj}} zKaUSS_|WbT|L_lEGp|FNgO5l#5vnc40h_u?{VzCSjl1X0o!fopGoN0(Y9IKZCVa4= z63aJ+sd2(v-K3vK<81%5&B!K({3^~?|CV7D))lLdHjmvihb*vdTVC@U8n6n_JaPaH zW0QU_oHqL0=gx1B<;>2K=sy00oDSGct%1@@27m6y2fy%ze+v(JYu|l4$gV!}$mEW3 z7czwLF(01~Hx8I;quuUr|L(uA?fjkHbI(1ud+hPYSsW}a_4i+r;>>w-%t&7HE9%WK zD{li|#_4Ea$a+=4IS%|G{Yp|<+`8_a{U83|hj|<%;}`6eU4q(;|CgBXzVXIu@rS$& z5TY6XBz}5l|5Ucp8~5`VCOEe1&;pjpVPbucOt|q)7XuPIw%Es=b+*#iCw!UawcUG6 z_}}N90Oof>);`5M@Y!}xekWttF7;O5bLW9|B!55W=c5CGLl!4}zWLvuy0{BWC9{a3 z^~g*71mE2R`kHkof1TO|3U?3qb%%G~c?Z1iTA0|XRqZ}L`q5{053o37ZOGGp{pKXE zpY+>9SuR?Sg>7lao)ZT%MqTZF>St)j@9|xAOm!lVH$*HqxzG&DQM4_ehj)2A=N zl)cfQ3`>RZk$&v3aJI2IrPil)C;Y_k$VJ{^(w^$;Z|F_=#0}*M4RD3Ae-B^hB~+F^ zcjnB!Pm1T_m5*4NfIVWj31K3Sf~w~Uk3q&jPX2%OSAR9a_!xlc!i5W#?G2dRJAXci z1#WGDAB5H&++~6F#>(Aa{Ka3yzUR-M_f7v!@{hmEb7eX_let6#wz)WHwk^3mCXIrX z(g$7fv_Y_`)CQhl>l^&(%z5<6cF~qPcc%>$ZHNXA1!>jV3GdtVKFFDG+HeF~P0LBB zJkyxT_Go9%S%PD(xtfl^0o&wBQ(RL5)t>pH*Fa~s9fU^%gjgeCbTNcc2Q>dX2oPxAH`>*r2j^Fs>gt$n)-jvbU^0 z;vI*5jo8Pn1qkfrxqOvVoZ7aF1KZZPu@O|1f9z7b*M8dBvg)w6se0=Y@^NA`yoK}U z_DAzlo@Z~}s$E|cRp0TaY;#9MnogcS$8MiBUfBGfQAFyYJ`FC8IQ+$fleVC-)rMzz zX8J$5y@wEKP9#+fq@gpYXg zyUup@Ozf9!oj^?eY%;-Twzh(jItVWE31iCS8XDq8SEFOf&1?Snco6tgeQRINO-r}s zYtS=KIz!j%<}KgDR+Q((t-?&1^-vovzh6wfOE$8OFOMw;UVE5oXYrN)I<~ui_wWD1 zf5^+hMh;-65^RL!qR-Gr82cQE3p+_a6y?*O{`Bs*exsA@bG=;Ot7gVVcV`Ib~KKM2Dr-e%fI|9OyKXH#gEjH z`q?g(Grpt$(7#Q*S9VpH_ny7iFMsamel9$f%S8a?PCZ4A$}l$dL%P56E5E!g#Et!+ zT%NqNN42>`z2Z=}$+MXwQ zefV$kkudq*Tb_G#GkHDf@OtuuH|d9SJ!LBX#%n*^{lh;z6TSQyJpDz#&Q|*c_!4^k z;N_Q6zp~9w=Q&e^qV{zMh9CU1-ehN^8XUrmV<3g5!jDQYW|Ob?h2^Ya?*2Z(*lAi;;_lPv<-S z963T2kjiJr&iKsmlODUWqP`}G%)__5#qPqh49nBLKHjn9DZlJ~oxVPG6&}O{<;3T7 zpf28x}HQrXyj1 z1#VE2D`a_PK$x9C@^N4$fGe39=V1%CHMS!_W(5z0VoNrBW}r0pff-nDj41uu$ zbBeyyYjA;*-Ov%9^_yeDlHafuod}29~`!oVGKKUETE1606+jqL_t)f zu?yCORP0^FU{iaUmpYNc;$1O{8#waO&g>Q7k&%D$bFi?NS6`Gg@O;2e6bDBRBu#ty ztxN#HpTVr<;(17OrL10)=Oe86p7k2LEO~_U9&!ucYy40dR620h*gg#(b1IwPk4Zz= z)8Ng4;_l@Zest!7!E?B_Ex^wtZR^DWnD4UwJd>?(hHp@6$F^*+ZIsHb_}KOxE}K4KU0-ucDVFtzWN{r{;08b5Pf` zNz0{e8n_t@$}qg*qbwMqyMAqI{HaZpU)-T1j9?j^WQFAdA4_VF2+F819rhxR<0bmRFAi z9*ldEg&kid_@h7iBPL_tOSxZxmavlxiR{~4ciMzcAeJA{bo38Ht~$#@Ka#Q6(s81| z7o2yW{`9A}zAV0{YvA^w35I8n#a9}EkPerU6llThvbgqBKlM|)uYUEb{(??q72mU9k{ZKBdM)qrqzP1~EJSQy|wGUHIUmfuaq&x)#plwIERxbs*L)uVf(H7B>_O$oc z(q>&@rTVNl!aDK)#AA=)LqETE;TXH2XI)XQe{rP!tFv_(lXGobz%u=+x$yXydYL}X zK%5UM?*4Z^;P=gM{@=!{&`>WAc;lyMjz0CNPo94I(?5HZ566LL?N|^0(-;15_Zsi2 zfA;6yVU!PyZvCC~VXOWz!A8@JgQR&TjXmbx^I^I7!n`xjd{goz2j3fLEf!b!UcqxO zJkRdTSDB>TN?SZ1+q#t-g+t@YmCH<4zLziNXBT0zZ66t9Wm50t+4g^qiMFe%k%@ZH zMJ&6M?eKm8(1nHBnWFwC7vP-8zrjzWUE=5ToG@Kx;v}!cKYf^b^2xitB46*Fs9SCJ zyI#0E?I-bZo{t&Y5zjf)& z-5c~%zEW_Ng#$UrLl|Xog8e9qN&Y0I$>G9kH(UQdx(8tW5oUZsZ#=x8e9s+EVBwlC zaOMfW4u%)Be`uI*tP(Hn1{j~to4g;o$w+7_jrt0LFWdIvQX9I2JwT7%u^SnyBZ~}j zhc*yGO4Byzm{FPfeY?~T@v3nnaRrp>=UMqos9;(zOG%Nk6?3>#$F$K*)E7<=m=~O0 z>o`c9zeoUc_)5@h;+=(=Yxg_9^E*fMU#ETqkc9vZuxTpr&GgMgLaTuk3sLbbWW33xjvIxq$4JF)N(Pnwflp*(D-mP=#7IDp(%HHEEy#vWvn7CbvR zrOc1>LA&HD_weyNvZ;p_vJ&ru=0bp-wQ1yvPRL}3VdN6WJZX7t@bf-fg&kdzQjc_+6oW80J)@5H zZ-IXS@@b4V?jU7w8Yj!I(Ky5w4yW?1PLV^{_yc9NicsBQ(X0N=m>SqMKS`#t&ZKH| zGS7<0fCL>?sPgCwqRpTJzW9}O?|?*@fzvjt4#UT~)h6aUP|>dHUTTsouJ#nh?XUaP zGHHurxd%_s0qLN7WcMtbygi$QJ;&3UJ9&EJSF&BSvn^U*z*D96np=B`e?|9TQ?h7D z$0VLjQ(IcIS^l)5hysQ1t%x)c5<_Rk6D({(R^_|{3^6<*{9FyFzs9UA(-!z zi044ldNqk>lFr^{9W<>8UCM+5WV;qtoccp$)?cgxW0#&_`6S`1(_;LN^1@aZpK?jy ztWWAzbdkR_9DGYvpV<<8%#((2m9=rwr>SI7)?ZJ!o1Gtbe}FIMLnrjGjqvz~f@QI# zI@P{h8?F-^XW+S0khJwPOsdYSGa<2DJFU_qH`l$Lb-~BfXKVE4 z)bEmy-D8`B^3WBPB#ddpUwLys;KaIZ2Go9lmhx46hkL_jYy_8DsKOegNyQzN+PphSy&IAqxTi+-T#wvBOV@w<$1Vka{tvm`$z^};L{{PMB|iM?fA!yF0YLkR z?~(Rrhoba}4XsnJ-+4^?m@&fmMqcefHXmL|4^k947U}|kaMIE~&c6?Mo5$i+cmr16 z^kujLzlbt4(Rs-Vyu`c6B2D`&5Boo0z^g8X4C+4%xTA+OiVqI(#yWk@`jofqr9oU} zTutm}almo5G+SP{;0WuYh3s5YkP12*|A(LP*|@jV3O{40_$&5_lvc#6I}s!c!x%}P z;tQ+XBfIg!e0W4R^KJ7kM49w?3FQG;ad%w@3QcpRq*PgJ5c-_8_9c&3E?gaSLKmAkXGB8(RiQY`_*#b9r0K8`t-atT)PjbbI!BIW{ z=yn!5&l7&~?~L!bFjzXl`D1&xgwY^RnN0Y!&q(Ej#FkI%r121aS=)6mVgv9`8!>PR zDF@BLvPlLFV~*!0gMowlJk=7AqLvwAgb^QE24UK6(fvzvw3BgsWS}wdopcw^#>YX1 zV-*J}LtCJF9$*DG&*#^uP_Fgg_~fspR7x-Vs1gLS<(<;`9AhH~$57vB1abXQb_4(L@Empc6JLq7#fFz<@GyBYVB1Lx z=aUHW96Wn3ok>n6X5wkyz-6K#O=ag$PVwyA2H(09p#vg2z4Eg&F-b#Q@8zTK*qM9p zq21Eau8z`Xp%3aW;<gB{{>|tKz_whdZFWRvPFj6@JH!VfvbGkahrTH6bOWTHJ^23 zQV-L7jehKOD8De~S7vcTJv;|L3po^=;pc?_Z$Oa0EY*IdjULzfN1q5cKLAj%Zc#73 zVkjLxmP=n*hMs5bG<;((<-1fBR1y5B)>D!S~wjyKv!OeLnFptx)djN;|=K z4UFR#@)Xy>4@m>Y&Xe!i!#Z++dt?6IE@7~ESv$2AzZuR?em(f$?cAT`gN=O!LK?Qg z+NQp&?hPpY=NLj8hl&d+R(smt$ARYAfmnOD$Pg@g|co zrSPWk=6RP}r5}Fy5$-!#i+#a0rlkGj)zkv^Jj;ZZer)xBP!p88l41Q|^9Ai304!x+ zwzjQ`vQ$TYCPYl&+$p1s4?XkL=JC?BEWazyRjt_2R|8`+pl>)4zi!)^43|?2*?I@87?* zd!AnhxXfaRWf|CnCH5v}yC5Px`xYNYTxFupPmu=V{B3N_XIFtAsXWIA`8xKn-|S+V zK-$t*h%U1e;mH0BxqJ|08*pL31<1E~&tD$yLbKlW4bM)z`xM`PwXX*G!9N##-5nsD zc($X`a{{6!#8OG5Geo94RpkXw&iW- zkzU&TpSIV9%f!woXj@}UMFlBV^b8@)Y1Y!o>lI%Zhec1b4ia(o)Sa7TF$`Qk!K_>a zoQ%Ka06~4J{WyNHVpH^Qv9trD-MC4vJ~TEp1N|5o*oP@!c)Hv0_OE~a>zBd5&Vw?4 z7X8SdYh`YP+n%|~!_g4qXJC&h+ZqL9h*Mt!@WE>I(ttP9`(lB5%=<#>CJ`(U$MosH zzg@{!wND;@{P8qmUjtwPfU(Z$5$7XT(NCHD+n~uhJ)#kKk^10gS{~rqMg*=yP1{+Y zN@!&pWAbR62_ytP8>9K+c{GJ}E}QSRP4fUGnHO3ILDswmfR+tS<(Nr@<#SB%EIoqB zqG`V4I6?`$l+r;`*lrzvr7*B5Z-dsz-dzEET^!`e)4`9HQN?yBr78cWy0qn{aOT=U zm52H?d6vFCUvUgzTd)?Me}y*~4{iswc61vpuI&!G1+bloovnxT22S}+aLw5=^>JY8 z0BX|MAa$I~+QxxG^be@~D!25r4G>kNRpYdl7eqB&bt6f6bf9*l-QOug>Ni1rN`jo5 zkyCN@6P(ghj_TFA&vhyViI7)&j%_M`{an+Gon(^h=v$esQR}_F)CGswR~rJKT3wYt z6MW0lJ}A#*VU^F$liDadTLKrpp=L>Om17Ql+6Q;IlpB+-P3G3JV`s_$wUzNW2mW$t`HK8otTdu85+9~`NnUnz& zJ;+l9pTrkdApNj9(E>xSWwoc*!&ezh)1GnzsoD9nxd6wy;uQEFcsy>$Az?3_5=6@!YPDX1E;Dud@?3t8W zFAkEmR3xVD*BlYah92C(~%f z_fLEgCv{W$d)dYosbBa{84y|u0Jy~Ng14_-p-sC(jmb6VO#WG<@aG484WWzoKK1vyHL6T3 zfaTR7pZNQ0Q|{2wKb-jc(|<1ZU%SrE0anOvIp2@^xj=A^L%3yje6g_`lA)(D{FQ+E z8VeHaM0oQJe}!Pabrh4;W(Xo3cgcP1qYop#ao?kHDh6DCTEB8h%Eeaalgn9p79PTT zJw7;~w3MtN<{q3WH~!5S)G~0xYwt&U`IJ*Vx3=T`YPaZ;_$&=NdAd_q10&g{J>Vad!?T0P4yXuB;8>Op zhjXukf((=2;Kkn+q3UL`o6bX;@&h1So}`fRZ_W)q<_#~eP2Tq@_L8%?`J3_;{CW-i z8n|fIy=e=s-I$nS!gmaA6x4$hE}E8mw1Y+mISI7NvY?c!Xw4DcGs%rCi0h{+kGz% z{)(%Nc1BKkt6L|+4%RV!p45=yaOT*rx5Y{*kiCQys;X zkV6lRV3bjY8RW=c5M}jR|DqDaNz$GhJhBAFJaE9seL01X4w$^Q@u9*QzS|%yJbju= z{m7hgl<@_`4MCnaCg4*Cg{j>73pNE%JDbdxo)fi_=w#YKd~goPc5$j1@(WMUT^p24 z+yql-)A2yBJx0{<3+M9oehrA0zb~1{7f-viO&7`7WGq@Fa#9m%Ox${>E#fC&=!cPQ z*-9c=P}FCVR?UpC=AlpekPW7gu?=vCpw&%Xm8c2Xb3-0xYT5P8_S&ia$;6?394!9m zG#a`_N))Ia!8u=S=L@NFwOJ~&KAekBx#n5L{F!?H|l;bcI0Qzm0l>;#_gf&clR zed7mG6cLKPD{`{?e zP2b70ivYJV89u+e)h+){#DTkoBk>NH^y%RFvCe+cpH~4czs)NEyjzbwuko6i6Mti$ z-wv>!t?j9A_=gWqu5B~cgXQjGaPh*Q6O8ZStI8?f8J_0*MSts8AMjfu)~RhozqU%; zWu#8-D#$J;jgX_e58mSY1aG~?$N$(3VO;ftqV61!f7{y0?qQz(e~{ONQpW_Hd`QuH zmBB&sHuZgwKQM7@U}^6(E%C$ANlGrfNn=%c9jkKRp6wZIWO08aUW@tN5HphH{4N8@~_(|3Ke{jnbaq%r%U!0TM| zJ)^U(n%?E;Y&sdQ83xkO2q0+y1g{xEm7fhg^bK;Ir252to6s9z_|MiIntuj|L>Ra0 znMCz4sI-A6*rsu(Ghhpt`NGhzBu!8jr$M0j7TTE^v^uCG12%`Wh3No=j%7u;pB%o)Kf;F z!>3#5xC(#EJc390@*8f8)Pc6>T6y^=b!!JXyj)n&&%up-gk5E1M&RnN!J;i=v|dL( zSJ6*S_$}h)TgpJStZJ+ugBK+>JSmZuZt#<*I@KJWQ~e-DJp5Md2+4{^?% z#kRhWH&2q`fr%Yd<%v8pA|K?jwX8x@ITTo4Cps#m zpAQza;D~ z;fz*dG3hzzlqYf}7IjN4Cb-siDJ`@z(jmL}7)TeCrIT}uBosdeh!SIFw?Q^(!PSaU8`@QMi7(AaHRbX6?!nj-PK?rFiK zUd%CO7k9;A1MS)xY^y=(f)H^%evQojmL7twvefPGDoK z^Ey^sLN9*G9%F``l=RY^qoXoS!a|5dTaD3LKj~LsXbTfoSv>|%`qrUxwbn|_k5O*0 zD4(7YzJxGRByhI_vQYmjl`zYe?$Gkf`?uV3Yji%t z#9mwY)L+@GFBb!R-P51rJI|BSG)_%jEvdIVXXZul|5GGG+)JWV=F!3kV*J4&iwvlm2u5`hl?;A8<@# z8*^In*E`_QXF3quVXQ;;L*BlOhpga zE0r=zF%cg;$B+0Yd5jYRBfUwE9faQef_oNR(A2;_Jh(u&Jx{rGkYL{|{SBXz_R~9~geAivaep`h5YwiF5?)1Wi3r_m4@e07v z=RWs2w?GfgL){epW_p(v7{7j(=r_@Rgay(Df9=m6AqVP|mq)CY~@?ldgoRe~eA78p?6qC>+94?BbgU$Yv_3>UUI@RH|^@FPGF zp=H1_SX+J==-#Q%VcFre!Qk*-{^W&?fuo&{)aVEa(!#@R@vSuCJ7CRr&Xg-xwh=FY zoEWDA!@E{e6Gzz%S{M!Gs#@sB21Yq$^AMx3ASK9Z6bU(q^Qx<)9b^ez_?9uqqK~m7 za4^(g5ZK#~C(IeN+xdybKW$pcbDewgtv6RiU8yxsRiit941ngX`<$(97ZE}XdJgE3 z71p)6da3W~c#%;v2&Y#2G*7pT)8S9K@_9%j9VH{@26b)koM?7tl#a9mEPd-0xfpQ3 z%KEPFWa6~0_uRb#scF0D?UGWLAk}Vrkd=*`u}W;AuJVk6oRrxK9QiJ&S!N17^DUoy z&tn&PnL4;=hZ21COe?e03gSOD)~6TQ*xUmBRhvwK13~$jlvsOMCZ2vs8Mnv)@8Pc) z!p3i%yllMp`3~}ihnn>XP20Ko;)b79$}nkQp%9*ABWngSU4)2CmBY$rR3)>}kp3nQ z*CrQ|H*4*q1hurX2iC0;REdL^jFN^l7UVRwlxze|cd?-@C8Z$=CL#PmrUrA}>@B z3p$Zf$_#=6>vjE6zLs0Z!g`ozJo4{8k4$q&)?s<>{X;nU<{Zcl5~b@v-F&1e@q5;^)7hn544)B(OVvg;MLPxIs3P`1qc z&;`ddGOe4y*cOA=^2n&1lSjXX@vtfOCZ7fcUwo$2r5PK9WN?td@qqn=_qMUh**G`f zh5<2UiY%Nw4^n=b^l$&>?{?q$&c)qBk38bGUzu%k2@8iB-Wu~DjgFRW|72ncILaKt zTMPb|_WCC%(&b;#&}01*#{b?=GS6Kr?9SZ1z@o*A-+wU+<36F+XY%g<0>8pU`~{!> zGeMS4|1h!i3HhSwcOvpD2+;J~3}<=I|6ZPcJJ~lm0raW6G0!Kpo6gjYi#hK=2u8~x~{!_+J2QqitJ24Hv0tQp1v*bE@t7L#0l%(Nw^>R>%%1c3w!wi z!G5^S4+!%!pzC4Aypo`-zJ@UJNlW^|y4~Nn=OV?M{Pdq&y00^4v&?T0m>OqxyN4cp zaQ8tzbco!sVxIo%+@#W`HYn-gHHZFB+m~PQ(9L`f%|5WwSosvC-B6vW7>fd*7EGD6 z?4$MPUWfkaO!UoHLTaHh$V5+BbiW25Eb-mg1^_@F z<=p#$xZ)*VEmGFGN&L`*pGmmzkcO`yB*n{dP1||BRNeMrP7_r}ZM;v5SuI@qBbQ0L zXft_R?@RyF8CxP1^eeMts%;U3_A?0_7jk#J+kcn-!V~{gC9)j51Dag`ei+?O|Hxm} z;@8r4-~RTu^Q$lH066-yKl`(gdg`gC{HQwQR;(WeH_z|d0tp>VM?BFn%L|pqe~r+M(0hY;XpN z1~|_?FtHI!D9x6p!~i6hm1Qe2V$hGIt*vk%64`VZ(lCG+EKJCw@VO43m2W_nQ$`a$ ztKi;aV1p28lD`dT%^w&V|2yQ%I3ND-mV9GXWLk0|xcSx5JYXPKxxIHQobvlrWB3SU z9_0(WvPuU=$)f}!p&KvS3$y3#wKgz1#)M*FN_nf30doSZic>^l zz($$n!9kGNpAu;mXKcIY2NNKA-=}g_51jQI+N*N~O1TV;cEA&~$yO1OG>$jPYBn-( zU-^_nmq~}Y7HmX?H>$P+5?MQyXK8q=F7hy^IECBaPt1n=4YEZpWpfa8fG<69%u=Qs z(%d4r_;xM_K1NpVHx%*df%4%RGlP>4)963&p#xQ`@QV;C6F}<-ZWXLD3CFSMaFwQ^ z4W~XwJnXsX`rtjk6cAmivx{#anP4|wf~?NCqLW3!<{TKV!k806j9pH6%FuRhegqfA zwg~#vuI;|5yg8^H5#;*k8Qk= zN)#ceBlzN@6sE4C3+$IH03tu2`l8oPSXw_4pbceDiuHijrDH)7dSHqAiDk&M!K5t% zwItyRpU?)%QS{P)uhvlU+Br9AKT{X#VB6O&+9xTKMf~1@|EdFhwl))@_2Lc*+wDFd znbzQICfbM;s$k%EGr3b9q~~x@Y_e=*@GL*&*<=Eyq|}w0^)c6F1Wb;7gLg2P#lG?( z-@%$}k~aHMw#t*QC}S6OoHY7bHa4%F`AZCH>Vm-@r)@eo;PthG`k*jOpeSnWg6p6y zebb({_HQ9Rl0If>fjYI}Iwv~|ZmaL|Lukeo6E$0#(k`sFb0i1X`@S|TFm@IUs)bVUU8P~L8AoU65d#VAIf#nnzpLnm+ttXvex!}U@$r& zWN2yU1O61NySC~CjLW12bM*ALzP}91ufO)g-No--U?JeGo$vnJfBMlnw?NlJ zk9hb0MRsq#kUDgtT>H_hV<)d0-?b&eQ5SBPcK4kN1b!1h6FA{?2Y{1zf4b5gPfn`b zW%V{s*0rG%?6>*YpHJAmHh$+Fa2DQOXz~mFZ?f(F7};*S_4e4)`j-EjZ@sy@^KO3K zg+&JW>SvcP@!`O8EABJ#kNq%%ws@T<_=wJqgubfas~dg^UcFuTH5T~`2kPU`5V}yH z+)n=ei9){tpv+m6aF+s$9{Ru4=u_|i;-`Nqa%l6h{nTyhNTZN8pAe2izIbo_VEMIp zGYPH-7kKF9P8izH__ppp*YE(eZNxLIId!1{SrZEFT`a?v6%3-%HP4phS$Zoo_r%*h zY}{+fUD&pN39tAk4b#Zwt=BHlSYPO#aa~Y=Gd3h%R)A0$8X?p_9fWvY#k?{`tG4}O zcyL2(ut=~KaTBiqhHvt{S458W@WSlW5n0hkh(#u4EC$F(7{?sZ!GhRLy`;A6;X_XH zPnqwW0DGNXG4l220o@T0viSYcqmMo+i6nkX-Jez8J@wR69*3+4FhxO&fn;6 zP&H5`*vr=@&f#AJfP;~d#{h(WIix2X2O$7FHCko!6h#|0DgU}&d3Fpl5Qaf{&;i+r zt`wWGi$D#@@@S`kJQ5@9lN0%Nd2btWNgX&T=g6xbrsQ!R4hH1v*r1w@{{U7Tb?{JL z?KC`RJWOo5uQ~JbOK&f`H8PePqr*$TTwlPnE>1Y5`Kk+85 zj&I32JS}y=Q@h1R2et{WMhbn;<3e7Wq!U_j)OHMZSk1Ois?Q3euV}}yo%S|k@`T|& z0}bjlZ9;!mCzCq63&GQB6~Q0#bB+1*D9$BPivd-$Y%`-n`oxs9X{-D&Uofv|JM${8E zUn1ndC-o-H@K=7WhhCnSs*3<5>e z$Bj?mH8V*WOx+DMvDgo>8Pn8JxdUuJrt=@rv1IX|GqwT(ud3o{j@q zC(zczdJ>;W_)`zm_KFXqO@)qvtZ#}bn_QHkTqmMnl z`{=_T)0)>byIMO|%Bv#S zjta$Y1EUx-KC|5#d)3Qd#LwuIP(}Ri?(PRuH+R3`*rKZ5Mr|B5lW~ zCh2+@hn2}BO@3B8H(ajdEl1=@=4oOubOt7|x^x>HEK8VE*OD7Oy;q0ohx2nkizMy< zkSXP7{PI6%UxAjXcJf!!j5*l_fS(<)qve#zzp9;i>ZzxWICdQ3ZPH8cW_tG)sQ0~l z{F|5u7Qiuc=ac`heeG-4fA9BxFRlEEC!Wa1EjVANQ36&6ra_9}F92jkjCa1yutnx9 z3jq(1oyNt-#c=k3rD3(9mg#i*6C`Ax0rv_*bo{pY1_CbZvE^+h;lc2jpy0g?&qjM7 zTbRt`n*0tRfH78ZORN{KI)?@;z-w>-ZU-N#*nulJ?`XCTE==Kp4AS_=X1-sP?Oa_yo!U&AB+I9g3ueCk;*wDHJ zQkhKJ$N{2f?vlqJSX2k=elnY~ruaaCWJCG-{Jn6Jk9=h_kBW``Ir&7UJ=T1WQ zwvOufK+nhx2s|TT;bj-Kfm2KW@bb?ij!j} zrJtDkGi%OskK7o?|obg-_?`;NR+5 zoo@9}zX*hlEo=Rm(<63+u=%CWMQF;GD^*GTm_NyZxO%ft5`7h|a;SS)B8#%mK*s@G z>quVE&dxcZB2K)>nsNnth`%ihwC zeHh5~chN&TI+3597=t&st#flVlR9bN+Sm_Nnr@J*)Tk=AHl{5F#y=x#?SdbLBxmeh zlNb*r5Fh1C9FEW6qugnS@hW^aG1=G_`z#B$zALMACbjL=f5IUQTbeqet?*>L+hAId{9gTcfkh-#!B0@##7M z*;b#g{2NEf@2eO-__1%WI*$LT)n2V)0gG>Yb)jT-&5{`A8<>G~T^52U31W){SoOkX#&?Du0+t^&mRIXFgoa&sgT^AhaJK*Q z7v9(~IH)s1DxtrI!FHgX-?ni4;0qpPm~f3(Jp+)#6Ql;LO|^6Pg>9@j-GkunPZ$hKY8)obI+a7 zF`TR|Fb2P4R(M_Ya+E=9z>v5QXNIi|pYsEH$tkJP_5@hiYKC}qe1Z0pThiJ&=fed6Mupcl% zR!S$pqg3#f9KTt5iR(RA0Aa2Y^4yX+2m}o7XQ>El zcMr3C!p=BtO!@SK*gf`8H|s?l>$JN^#wVm{EjCFXIR0waLzu>e+Gpuq6rm*@c^weW z@7c>W1(8R(!v)~O6eB?su8|#EcujIf53non9jsP2b(K~T5g^o*!L-37yW3mMGgYUy zrDX8Ofw26PPaA6u<@R2`$~}5T7mG<=Yb)(h*fLKW$-s6dJv@y;eqmy}RriBmYW-{8 zBx#$v5VQ?^Hu(oGFl!POb1WLt8l8m+ZSv$We0({8YfRi&B+t>wvrSG|CDCrNH}Hc` zMv|tb3IKx+H(4-Qav0l`V-^6UCI0vVW!x%<_O+;GdMXXrjPP(!=3w3W03MlPic{x1 z0m2}x@nAo3mr+ppQ@_gH(n*;-LT~w!I?s0$e0piDU)2yfMwT_%ZGA%2cz`_H;)8UW z>T?qDgJ$hxR*@(2f!#|9ni%C{>}40&ihIF|Jc2K}oP>2@u>Dr~s#j^8uvpY5sp2bE z7e9?lwXIF3{d73+$9}*#TCwT}wzXQ*d+Fqx6xtk4E#rDMM0uwVNd383aAVsMedq{V zS;;&|$+KBfEO&KMHk1CckLTjsMwb``h>Xdpje}pgRCv*gA|gn$GXCXP|7!QW7hc$X z{K+SGk39593nMU>o^#@2*sVOIXd!>S&iyL$r|70QdI6f|vM>%|%@W3chcMbJWs6XB z0YbT7c>aaF`|s0ox6P}(Kb6=1f-nE`Wc_>3KgWdka$=q3wo_?3(f4cSe%#M{Ud2*? z@b)9SPNKMpkJ#pJA-0|6D5xA+L4TkoOkVV-qo zasj|tVKQ#|p1(T~e68S?TW`sIUN!I)1QrBfg?v2OXJM3&@*yXE4fk%__mw5(?}VOv z;<6&zzUPC4^6~mD-urjrrahFqF+OU>_R@KTUw*jf?z=)$JY%=9OutsOwm|IX4F~?2 zU?HxDX}ebN!~5K|o`Ff>#7X@;z77K>rxZ(j(WJ~+J@-Rj8QMPJiJZkzLeX=M?H1cb z13jWo+d^X9UM}!TM_L}}A35W{z{zjMFI=ar?Z2{29S_f1pm*Z#XLtgy!_n_e{VwaVs5@JoulwOEWj* z`jE**GyLet`H$ZKV2+fZtmI+n8RS25$Mm=P4uF&Y^4PJc^b?SakXzoA-8{cL3+UlD z)B9rqTU!o4Tw!7X;Q9r=WO?!8#ZxBx*ZshS4IYO-(cy9Qd;~-G;_?+tPN&B^HJt{V!iQ?1Z0ORk@8ayypwnx6 zM#m}%Qt}m)K+r*euni!qpUNo2ycP8+-%r-0ap-`1UCLjnOu$go&hAhi%SJ|p7k^TN zWCNsmmdS4dpPkb7o<2%+AXIEScvFHr*Xn30{S5pIPrm%k=bUl8_pO)8>!j|+v^puY zTJlEd$d^G{b+Dt7vAoSu7E^f@27P2V`CPY-lDXMp`9{I`Yu(X7c(rhqH}$z-Qori7 z?j3~QSgyW%d8Fxm^;xokJ0ipqPKY5WOgb3!--J&|%NEPPSy#gMSi198eHM(;xk<4} znmXT}rul=5yx7w^9~&uiD2D!C{{2El7c{iHb)gQ?81>>u8GM z`Inq~89<~A(3m+>HvGm(vwqt5jU^*vX{d|I?Zi#`9aksZb9NAdgjo;~0-Ut}+QYIX zpH~phBrx_#?O0rTlmn1Og2-+@S(U+#U4Xe44f`}Jb}HPSm-jBh1Twbd8X_~;+6W3k zzP7Y3$KSjs9x>AfM?n@`23bzNsnaCvUfz{Wb2t&xz}B2{TOaXt3d2jW0%KwM$BbsL zNnEg(Upe4auE@svQf<2oLR|O0bSqQqQeIuKQch(ojO`_~2t9BC#{5*9+kclJfwk}; znO8Yv*)nuv;@Mc^VxikOOJd&!q^Vx93+}-%6sn7sa&goo#?2YXRW8|QGPdNfy<1Px z?7&(Z8~fx}JLgHUc;Z+;h^j*`k6SvzafLDCu>*2Q2FvqIma@f5n4Iq zH+I7W=H`9|{ncr~P>wIyVGFqVk@zbMeHyE#uW*;kMqea-Wb*?SM1t%4*nKiQbpxL) zuE?qM8yD)8njN0;x7JzuI_?dr8f$pUa^j2rua5F)dGydGtrt|Io(UJ$sHyceGBvNX zV=6MlRdGh10Vd8b_7Cd&_DxlWp5XbUs+Lr0uNQyahW`Ww5apZ+G><}dBe-^S1W@y|(p zp8i+G-K(#@!u$U(#m4D(4dQH$cHN~DA+#kyz`DMDCpbq@2x(NR(sQ4 ze5!t(C-6Rn=e5vGuw4xB>AF6P*nRSk#cdB6Yo)JfJIewA{^BnUxQOA;1X`EwX1ILi zQWhrsWdauo`YQrHp+3(fp6?D|2X_Q@x4^BbculBI!m5Y$=q?4nyW|4J8*Kmg*8=kD z0(||bpfYMx7aJb?*hj;gtoq`rv#HCe1JBx&bNn=YxO5P}GLvTy%O=(vLAXaOA>|v$ zzyzM`HNmzZ`Sv5mtf6N<6Ves4iG%XPW+q|UhF1$kyS9ye?6zHL7cmZLDvMQY*|?-2 zFya(J7kt{KF*`c=$2g^)9-*1tL=NPQReRY=zwuc<;T3#7Hn{xL9X(`)Hs@USMtBy2 zR*7Po%#)71-00ke)U&>_4rF)`jQ|2J7J~k%vZkh6~Fj@^x+SGnB8~R&#?8(j^7Ue`U(JT>*&O- zFszUrpFex{K?mqO^;n}OPByZ1&<3GeI*p8=Z1UQtIG!^&%S6F<0y}86$#haV9sNFV zP|(I3GK~lhCMW1gKLKe4P$-zS@^}{tfgF&SFOF#jg@T%8OtdTm>+q`*(lr@0CeYXs z8{`jCK02aqP2zOmQ+{=0F){#MP@D!KIng0G4jz?jY$q*27M;;Sna0>18f#}_c?Zr? zm!EPIw2th2M;|-((Z@-LaIu4ifF>xw!ZJ^)WB5LqUHp*9%*d?_cIE~~GiLIXM?Ao2 zmo9Addg@tNc@E%jWv9 zqwqS3!LqUjZYW}u(kn~Lw?x_8mxs7ryudvBo(Kd7VCC6qqP7Ph_|njZNdYkJ_Q0&SrkrxlBW}sJQ+T$ zi@=s{2=PaH`P&nhn<#3a-LhTY0Vg%VKg$sWT9s972R@zrXYvToOsa@$kl2#!Mkk480K3aath6OWScvGC!Sy40icVmt*9;6( zH`39^+qT6~Q+?Tv002M$NklGEh{KbE zR%?-9wOt0_T5#fLtv`zn@-e|TbuRy@H*8cnu#r6Kr>K#|Nw4r%^(EwptokUrDbL&J`NLOV&8rF+G5G4uCD-^3*AIO7 zejaw+Y4(=%#_HX;H`kuWf19^_bJZD0sSE3+L*e>M`_I0zB3?O*6!`5UfC_Lx3R-&a zK2cB0v!H<9P31|0&#k_|7XK;S^5ko3bMvou5DdFaTU|7TUE`0~A;A1GW~-Zc85e75 zU>(bthfE-nMV+~$q^W!--YJF;XiP-6R93=01=fl2rAM*-JF?3|e8uiH_JOzM#i_k} zU%o@d7^z&$Q4;vvp=CT%Cy(JFyblOH?!E862gtw9E@z3I`sy}%8BGx3*JepdY{z5$?|r2O&XW_oWH=nIbTjmAyv0}HrK#h6a5& zesmk~bpiT_G)4xYr^NTRT=3g;(g7OZ$ZwEvRAL~op{0EhzV$VsDZG zWCkS-QVBK*p6Wy&WpFTnR1;ZrZQBDjiJ8aYU*wlUW7olo(5)}C; zpR;harI6C9?GF7Swm`<1E1jCKYob8Du+q`@%#TdyK0jx)WU2iSMlJMD>wz*vVRT?e zwRo^?-VsJV;>9+}OceA1lbxe-IDm6uMm;*=#00v;GEqH2-Kl#PZ)oJ<9~G@2+cCJ( zQa+DEn@l?}Uwv8^X}@6+i=$)l6m02~Iu>7t6Cc zFC_B7#KyI|>>aFH|H|%@(Qa!6!ipuYc69*AR}|u-rCWawA8ds`L>C-`f<+(dXAa^m z`cUWsgYBq`B&ARNSVU~t>r}f--!ytTFguH^2BYM2I*J(=+{(91+Sy7RThT7hVWE_3 z6X+YCxUa>kXYD3-V^#oxkXHR$Uuulijv?0^;(;`*S(?N0{yZC3X`Aw1i-_7llUiU*bdX9OInhU1*8%z3JES9jbg&U* z5k4qEgjS-YRj-YO^RR)fo)JmCR%U&?i=D!B3wZU4zNvS$BaexjPmoP#S)`IAtsWbk z(*O6{KDI;6q3&F}7>D`ozq^28x!t3BI=*PPAB7|1HDv)`Sr&~Lz;L%=|B$Wc z=Xv`7alQfYfxw9!D@L;ZQQo9=%5~Y$0++uQ0{UDW@SN=AQ#SsTeBh}1t?w|;a%GK; zho5-VjlVhmt#5rR@7mvU@4fkupA#1s?@owaehlshED(JEh3Dx*_;4PR_Xs0h+b?#~ zX5CWXpRaV{t-Nlb_m`dSzUOWx-Tw67EyP7$Cjnj@9H091YyZ6W&r^6O;= z0@scLMHC6H)b=*_Z6_9)KWF8il*uJ!9X}S{_Tjzu8z1Z#4xdp_$|Ofwhz`%fSQbCv zwC5?U1!q^c@G1qb6+o1{OuT8V;3?z8ELob&A3Dv648sqA0#Z+o@j;IdoHEI+AfZv6 zz_j}S*Vx(d%<&2BQD%8dqHulhehGkxcw+n`h`^4mAdRc{7s4DeW(=pigdWFu^3j$v zj{oT@UB%FoPRog*fHvYeHsv-WUV)qf-~pXd~IifnARM zsdV_CFkd?68v$4O#)M30B5efn=l!9suy;Ve#n-0d)ZFNhXqlY(3W z829O*ZCp021PKB~8)qjqY>EV_PgHDj^vj$uE55Z6?e$^jQ-i~ctV6|fcf`lVQE z0p#*&>HhE3gXbTa)SsmO1FI}{3ZZL0*Cs*gN329M_?e^+ zFyQ2oZ778npsG9|k|TvP*KB!Y6kxrXgqtH7aiD$O2{(0YckO_amGDIzPAEqn_v#Ey zWtU-{NuStc8UL}4&Gfv2za&P-#Q z$Vj33m{J$qi-RpS7I-=34?U?_fwLZpl?+kpw=y#!Q~OV)s5EBx=^+xB8!YM7{^$X+ z^NfvhYK(jGi679m?$(&;^!V(#d^l-6wGEQE>S28;qxI24JlH}>n;#tH7=IKgb;5CSBUn7Lwn1S6$d_Z13$|LRyrfg6(;o0efQ$- z;n%<jC0AztPw`*q5%Sr9A(p| z|8cUi_DTM$9VV6~HZT_GctCt=4LXMhv@ORL)CqMZ&N@OvzaIZGz6oa<8e9AcUB(ww ztY!NCv=Q)==aA5ao5U1!$^#SoHY?Y^l|MHt28EA2q?w^8aQ4O8!~_ojm_TR0t|vap z*Ltmvi*ED?Fn`AXZM(+gfgL^eyc)0MyABr|BAc`H^u2P!_UvNur96%<6RPHvqV2E#N3S0N`=L$NqdR8koKwE#id> z7lQwVFMQ!T-%ATW7Xj4kW_tfDupjlme>DH8QaWYp|IVlX8o?P$OA-qE57nt0m<8J2qN~&BwArN`!5q?1@>Mc zr=3tH_WZ8(VRE=|ZFPFFTNZVkjP;2s4#rbKIxX<+Pq8N*#G)Qi+9^yYH+5Scm3N+! zYZKuDqe&SQX#?-IExK;?6kXRHzP?-;-vp!GsU{P^MT-vX56i4O7MQgdUadd3a|D6T zuZvM&!<8pxo)kcO%Chm5S#N54J9j%`o>{q)Ub-MEpeIw|l{w_m&on;d-7$l$L%+eC z>7yaq#Rp{A>=bOIguaKShZ(ubuwNLIfGm}d#En{1mWpOMLi5*qeYO5-EhNJy|A>iC zV;?6p)>qp`>q%QDNmg0Xw)K_0e@9R42n0{nFuT%XVQ4M+Dik*~i%cTb$o6ZSC{N3v z31sRXUizcHBK_8TSj6n+NnZC+erXI`{N6ml$(L?qI-p~l^$B3is=O%^L7K~V)-^da z1z_|oc0tH%;D#@ZFl}^*{_o@koHTS^rh!E`v3Tse@WTt?y)DH+YDfDvye7E?jta_Xbbg8H+8ubfL^B zXsGws0eYel(_sny*g?7#X9Ty8!OBzlFPw)lD1wQ%D_<=HG@Ok*^ zGx~vx6z&3W;lSMo=Wpe^0QQd%^6V=Fehe@l0_5IZ3dOCi($}8$PqyDT-*}Vb4P@n; z0?H;GcZJB0`*SRwJpS0nve*G)bd{b-Iv(%57ViJ04B+}}``JC*qC<#l{FeVXLHXh1 z(oO#0`RbpnT(oK4@D>bR4PRSKQMdR}B&Hl>UCG4;b zZD(ES{?fHwaSA;3OO+>15pL~QA(({$@gx<%)OqPx*Zmesh_64&vl2u!1^p>?IN6*d zYsL{UkroGV&=ZlJ!-V8zkByc(;xFi?^7P1+BSIl zf1MpT$2|Nr5CxLgpL6yVX^0)u{;u=N^f3=gWAZQYI`!}V?(fc^6;Wbu8Q)Cr!2+qe z_ke#B^&J-Q6#y3k{Ah(g1?bimUjg{UCq5BJb_al+3k^=&AMwu1iC>a+m6gVE^fN#6 zGkJk3jg5wB@U?N;&|7LmLKWhQGziWMvaYM?aOmG8m<&5p`I zwP2-mkPJ9JNwJev9`E79;o^qB!R%<=4%7})+IHsB^C&M#lc$`>U!9fMf%@2i+vwVf z*^=j|Ps~~m8y-07VbYGn*ZT~n$cApl&7qkNm%@xx0_C6Rt9%|^$XNOTD1QI~7evKg zsXDat0mR9F?B4;4+yAtc+EzYIE~@cZJJ?AfU^>jvKVPJF@W3J3*uv{&!}!3!PhNRQ zzP^(>+~k&&DMp7kGD&%Le5f74q?H3=s%^cRw1M@i-@tcuVlDG;@o=rhFT8^(kCtbi zrjV<`q_?GvgY9fWzx7}xDQD0lm%f$y6c3)TsqJgk%CpKSZ%2D*hh=xg-O@&*G@B1o z+qnY+Wzuc~7i8?9D*8iBR)SSu|EBE`PvQ?Xd2A@(+NySzruIn-z%G$Bbo~Pr7WYb7 zJnMrxKrfTFv40M|RMcwYHJA_!PMEeWCV!4AQt!G#4YA6Asi%sj2JcL^jmlU#+otOm zjcw#-7Ay~8oS2y8qwkRC_K{7`3`=Uj2&$V6sXOjW=ScBLs_S{wM*$D$=s^7JO@n!31ZmiNHpliEoeXrIO>A)BNdoseA` zk{cfr-((xq-68|`#wiEBz>~GveaWzw7dj!Z{2;XaqaB?r!7e*EQod~G;N6PzuljSc zO~r?}&Q2sJZsV7pM_y%_7-PQmQJoYsqDU@>aag`iEX6s&Ho`_I&saP6;6ZAo(v!gO zQI{mh0-wcB^Oox5u?WqAUrE=#)<^maY>;>iyu5m}@BI4T{@w1o7ccC7>_Z>gJ@)8h zJT-O;IW|EaAam`RTFJFpk+*mIzZ3_iC^x_`h1kPU?j(4lx5x^xwMNqWO`7ccH!fAe)Ph=bv=wBb4vZ}fDME!V_7cvwfb@>Jb; zaK|0D^I^f;ws-%9>Bo|JC!YzwcJ(_LeFEF>H2Gn@t5-Wo_ow-MT6&iHH|ZB+w|ubB z%5G()FF4O+{&sd9nB{hSKkz5KyBfsxpK{r@G^dMgml<<9!3Q9)=A|3}RTf`4eYJpH zs*%Ut0{W~e@(2U`hd+G(?*99Kth|=9$+z_MCnze%;aOox(t}U@II=FdRT`MXKZh{- zr98}Yo4FP5z5X|^FOWyE8Z`x=F;05arrf4%!w3 zBf4_vAGKq(G0*l6!;n{g?IK)hBpV&f4*AIGwSB(*c4Q6hz-m;qJ{(iGZlouKyu>fZ z&`q2)t_+V*;*YfRfJnT>f7FtXKM5IuCio8`=jtn7<9F(Tn3Y{maKH18J0I`?Cv%-D z1`ZEFkC-Fro7Z1?ZM=*If^Gv6o?Z=VtUy4DL=6bVOTbBhGEUiFQY(myWg>G}{q1|1DJ-0@(8?(txdY_Ue~G?e7SI;%)wg(uf2rZY>#lv3SI^*PS`(VfW^Lnry%-sZaqZj7j4RYVp-m0%LR~boBKmN30W3#Q&_-y*Nv`v6# z(i2}i_*p+EE$(nZZbJTz`paO`2m8<;q)z0yd_p;vJbJ~dQwH3{Yo9!J8yf{_{aL!G zXX2UJhk5#zdW~-3jVyAL-aFu9W6Pki=`*_9M)Yly3+d|YwKO;Xk{34ChEzrLuuRbD zf3v$`;Tg|)m2u}!|9Snylb_h#{~^XQP?osyYV?tpi5g6v6ZikPATI2=h(xta{FTMDE>m8dY z>yld^gsPLvOx(Cn9h0d}`i6@DzDIwackc!ERRN!-*CSeYPW-R%sGJ z76tCmIJ}MwNDVyMtFGT6moSqA^E&YGZp`TeC-cW@6h(FwL5^_^?lwKMfGAE=`(mjZ zTa|x4W*S`pif2L?J;>TjSw0J=W7|lP1}cx;k!e*+!dh?1zGp!@G0(U$ zag=*>)Eugs-6X5_iA95%v)@7UJ%8p!$NuEstFOL#%G~HWA5Zs}MUKAw-?Socn z1hRq$XT#${`pAzC{g|8gwVl#;LSCg~zTj)}$})9_T_{NyRwsk4>fj&I1zDwQD!&dA z)YW95wNqowx%J~JE*fbAqIPuEHrm!Yw)1!J9lgjKnxnt+dx-BqC^kaE>Sg_uM#gLi z>X+`9bPLbL5pAb*`LpubR>w!Ld>WxT;Q4@ zc6IU?NK^COLYKjnc2bXJ&fs7Pg@izLX3(bU+R&XIk)avrgze-d0wuv;ewFLk$ns@B zGiyK5^uxs?sMvN5ik)zm0Dn_;hx(*Ua|FaiJFn%D0WP^h@Z6cR+xomKY$lSjjy&>T zqQys)ZSfrhF#(EwD9W2Z(sH1?U=RHTvPn*kD_^T3G$^q=FAs4oo@sErMpO(^VPiY< z6cUz^4SS!s5Ca{b#!Exr_Kd%hdo8ae=rf1ukk?^d0HeeZtem-_BH2NE3xiSxp7OuO_$a^-98B%dJq zd*gF&+({b**1p5G?Rjw2t*{Pkv9iN#9-jk&UQV3Src`7MC6)SG3^x5o`9?yJtyRSf zNZM#}$|^-n;}h3u##%5j3J*ed>qHqPAU*1z*Uyr{9~L9VIw{P8Q^P2w^>gKm-O1r+ z1o-RI_||C`f~>Q#acv5a0((k7<=Ok%O&$>eR9id zbdpV;3mRP5@9$$+EeEYmfP{7N1wM#jf3^3oSd2b})h_BP-V}b~=ri)P%6K!_thCv` z`MdvP_kVrk?{^=5@PXYYKlLdlyT}sx-P3o8@=BYDv295(+{OaN9ogpZHwTOlKK1w7xM2Iq4g+5G zi#*VBBIauWmif8@kM!YX`)Hk_s;&qg{R(Zyw(4uDuQFDBgKreLL&5%BZS2eRVeRtp zLl5pA_{ja-Q$EdSM4E{+P?Ld0D)Y>*imU0#Q{n<$ornYvfa326Ec)HhJYJePwcnM1Z)1b-Na|$ zuU(rTrUnKHZF$wwMZ=KDpS)&}k5sQxaw{Xq1zuo_gxQVuN+_{BA7Jmj7-r zZ{qw&3$XqF)Q?v90l;UTdFIrw{S&}XKlGsw9X;^C1E)^>arQ(CSH5Tjei8GC?f++3 z`SN!&S4f&c3qHRZyRFEEZ;(g>q+!_@J*ML$-w_ZY&9;(Op3`1f$*;!GVA2U<(`r+q znO6QZ_BMD|9^siX2QUo)2HQ5^x|2aU(F#7wt2BqnybLNFY^-3C`>MJEo*0!$KEP!m zLpij=$RpG~2sI#@*8ok3M-~F05i7h{IUNn{Fa+JF+#~DK-2zS9^SYpuFgSY1w`C26 zBd>X}O-ch1-l?bQBzRvR{0_A^-)N)CrJc0x>;MtJG)h<CblH!W5SBR4h|4=!~9)5XWOrReIWPTVSIt z-sp?+v)r^a;0hLwVZ4YumZP)(U@s5Tpr3e_V#OA`NB zdPFS81gn5r)n?v18If*jdv4uHNgnDw1KG%-(}ix!S3MOUWg~xVAswlx$r@O2Wzjs% zXbk{?9;2^ys^80NB@NAGl#9MYR~>41^)N0KCT#NYy5WEXF8I{f)$oAyvY{N%t+bVW zU_wnhVd9Z#_#ic4-i_Rz2Uik@b!)y&mxMy0k(!zMRL#K|8otLl@4YItb(#dQcH`SB zh}HJ(;)7J}2sT?FqSt%V1RGz`CHwk@y!QOM2s<&O%$R`og1^;WS(RIPO+&+W>3zzl zUKdb&;{aB;cc#i+AEyi!As6~+v3TYqR>b4@$;1JBy_8$ct!irr*w%@|{`j7{;Dgf- zRNl?3X{tcz7u9-Xu&s1apnQ~Fz12$?`@)H_gCh)ufayE6-3X_2!i`;gQoT>T)*hDI zUr!y)*|L!lykMtYr(fCEi8M2r&?w+kkG7ZbX;qb8W6hq|n$E7TP)uC^Lp~;EJ$=If&fW}II-iNL;?J}>RQ;qAHqn-a{d{v zoNzFy$k+Do=3{wIi2X31@5q}poL}F6{<{}qgW!>8yEFFrbpH0+?_fgSkLcyyej748 zeD%Rafi4jEo--fWgSL~esi(L3NTAnzv;q3@U7oJ{9e~T3ytyOAd&TzK0e9bh?;2Mz zxyzG!`X2D99rF8KftlR3jS_zp~}~1lYreJ8$!Z-?fSS zk^nwyNRf9YlAJH|zP~$F-{PAIzK+m#*4Gu<$=Ls#-TnBFf1)_h!a2qdyh|dh`ML0N zE6Vlig4gxlULr5pVj$cevt@?<+O*@t>7&9pf1J$c0YZBq8b;!O;$Fr*IJ9jSGo}3= z^rztKqslM>jO^aGU))PHW#SkywB;mWIWpcVJ@qV%v~sLPW969d4Xm{|$RNieHu!C$ z#3IM!lwpYQ$b?@%S?!;T5u^6pZq~d}*K#)(f1ll1++FPD* zF}`z<6F}GnJmG{aSNwfSlodl;Fu{i>d<&c)Lb08{$u{r3Z1~H_$-+(u4ZNbSwjFML z`XXlW2`qW?V2*sGgJ#H8JYq09u%&nlSnUjEaAIIGII5)o463G)FE{*=c|Lr?V9SXe z(?9ZnjRoi;35?Lm-30L!&wxQzc`Ot4Hrn$Tq2=nGL4w#lH78IL>MHvf(~;*)N{e1fdM)=O^A`msRe>0 zfMYxHF?M`**{-VZo8RyMU(bHuGK@5eeV1BQ@3;3}>p8DyJ?pU7-dj7mmMqN?%R3!* zfUb^z`qQ7@5v=lP2iundw;zlp2uHr5@8B@ykc=LxzGRLaT1~OFoxAmA$BPQl-OfwY z^*^|wJv9cPHd=X+Q(S2~=-59O7rQOL3Ykq#b*&A1*U3_8wqvj^W4g+ty#5vsVb#wp z`B^vPbCyjSyQ@z+3t$~+nUr1rV>9`AEt8g^pZ~yFj8k5mP>4*yD6K5oq#V51C%D3j zI(`-eYG-D~uazKLs2)v=wdwy{iG2&-IVWDDm) z37#<8ei$C&1b{#0MZ`4hwh8kN2SmzMnFg!ZBPUcSfPivvoP`7B8lU!#l=bPIF7f={ zv~kP<@ArJq_w3&Fu6ONR?2ImyD^p`b?2%nA!;dzZxMcfw@S;897o5jp%LwwLX!pgx z`@7xW@pBOG_o%&_6}d36TY#Qxp)fB*OIZoT!^jqKEcz7!dyma2ExiCsb$cVe^fDeA~lUL7|%iQ$Dv zE-r76lL^i9lJ+~h4}S22Jd68=ZQ`)e0Ns{5cdij6ox;Qe+p2PIF&5apJdGWXJ@(k{ zbD#fQ?Eerk&#lW5UI9p&M@z}mdP)04w-_3J9)+r>Z8K@ zd+ONtxT*q&02huSq-^Gh=_kTY5wr987oB!mK zPo=J;?e=T8_M7kX_Zc^M_a9k(rLB(!Nc6@VdFwxuf7`9G*v|@Xv6@c}x?92Za~B0X z*N>#3PSFFs`~rZoroDTon?mWk8^KQ#KFb#Xd_m}RGWUY(8yGd{p51^3uBT8I&;XxUS_MvK26+a@NR|EODH%xOY@M1 zeT$#?ojz#8)5g|2|6}jf_egtUld#HBP0Mdz-kWf#V_?`-6j@bp{BKpcWF{d8eLYu} zMOEqZ^CEp9r}kKM3jyPG;N2?Jp;*7DdauVzp_;V752rKUW+xkmnZw zj(IQIC4Q07evGms-jjAjd^=+M|CP0?S_Y@guXg;j&9(FjSm4?Mz$;)xNzmBRVEO!C zKKDn~DZ%jct#5tnG0*=WIVg5(i!TB6**RMVivUjk&)GfF?U2wicuD;tc!O~+$dR{mBnaOKT*$_lp;DR3cXc$nr%hR=i9dB`b~Rkm&Ajtf^*k7aZ!3(Pyl75Ts%WMQ3U1IrJGjjW8s zb`F&O!^u+ox-*RIq$>9MmkS*4ZD2_P>Kk6k^j z%t#ZX$0s6RaMA;ZWr*J`qw|8pWprux|M6{j#G=N`AT%pW=Bzg=@a{$cw!0T&_2hpY8nnbLsPx%g9u*0=Q) zygVLJx%B1O7+tqG0R7X`r$O&F#xH&8%amQ&eej1rxcj&N%fF3`(iUu~6j=wKh8CF? z47mF0daPm9gSLD2*^9g1{LSBB!tuA^t?tUZ?o@%k+A?{z8Ou%jwn-m}T~f#Kz2Mkx z&ZTY|cZ^}+vL?FXNAUDf^)%|1;`r4}Od-yrTu&cK?~7mjB6mjrboZYB;XS*5^KU-1 zd&3*wSY*sk%fpEH3dU4t7C`v220An0L#nh(PEzJ^lCaw5zxOcK{}I)H?cl1 zlZtQObKln@=XbItoh_p-MlE~p+l<^h03K@Ev*-FBSMbas@lcg~=ZXt2fAmLxlsn0D zm(+SupC`Ff%GZ8&fBxrxzWdkz`hVR0*pK~K7KNm$jYnRueMBwnP#rJTBeq3mX?2l? z1uERoYhi!)cYk;HDQJ7Mpfpyyq`V6Nt1c-F4*C3-FRCUMaJrOSFv8ic!HoXe`5;l8 z9xU{PwLE$Nbnkr+;49bdzVo}ji!seD*#0V9O_+p~8%fXMm}}`xnmj?B>>OSTvt3u8 zqKPiNG&?D2{(?W`W&J(RTkL)I|7qT2e}T{BiSBdySpbtR?bA<@J^au^@kQ&*Qa|#_A^|#!uNPWZ=I!OFjCmY{@>!_1PV7sDck$uDjuYz-N*${r zV_?_fqBr<+!|a4lKl4==`GG5wBj5Uu$Z6k7Zfbo{s4eLFxxwb*Lg2NIeCk78WH$pp zc9-+b;`&I7$;m%_Fb%IZ&8}g5=&7epSXeeAFz%Ah34iXq^Ugk3sv}%WuZRV%EdabC zW-JjK70Ew7w{pyY^_W0-MJHx8OOK9Mv&!XUDmwve5IDOlVJ;zFVZne8$QDp~arFrV z=F>1~%gHV~np{ryjbZ|YbZA`C_w=d&Vgu*rXfOdI9SwZaiaiqXq~l;^kGq1J8D^KI zWPoqXkW;S>By&!zFc1P~W(PPD@v;L8gz$==L}x<6DXDUlS!@CwpaU$6YPW|q_?Qc2 zG9y?Dp|cn`8R}%dSU^$29Ep7S`0HRNIb053;s4XeKDPTDk9e3|RiBP$

)D93UPa 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 z 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%0D%bs#kLHN0V>lm3UcRwqbbjA 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ℜ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⁣o6IK1>Q7R4 z3Y&aEK5}3%A$Z=lGht#&gA>oq(A)8@{5XwneHfN@{xGpizL24_VvwcwnY6gZOq%0E z$hG=y*_gn>j|4(apUqRsI61xQb=Uz1l?p^fm1%V00oo+R!E%a$YaBRqg91c!v&tg` zu?lY6M~$wz{24#y4voOn#q;;~VuYS@pkdCqOEL*)B6*CIR%WeDm_Q?T5LqVb|Ta-b_V?Oa&9Bn+9Sky2{p+ zmClhQ4xSD{xTIzjkvk;RERp%8dLAqJ5iZV(bIf6Gc~h;?r;cT~OhZk|Q7 zdYFi}%L(UErac`ctaNCoH~Bo&JdoG9)Q-2ePo>`#xJ@F4w>lPs%uJvgO4yo<@iyBq*n34gZP9 zHy!3T^m{vip(wwgqmuL%P5!2B($UfAXgIASf!T*|4X#F>{Gs1}DxjOtL?E8`zo1* z=uNrdp-BK_IM8%6kJ~1ad-ccgBj9<5vwzm(4as&n^psGmt5^`tt>V8#l*?e>qdRsZ!I zB51(s?0`oZ6qk?i42mD-fIF+<2JjB* zWdP?4I3UlYq1O@4AH3Oo@}O&VZnnp+yUZBJj>Zi4HachR~LD*~eoycQsjyzq7M zkRP~{*DW&HL52LbFB2F<_+;Rn91f^s?yy4b4PQw%`u0gg=yl;9e64lWsk+@NU7xn=y$PA4pFQO@X4o>%-vh63lIftD zMJrqJQ-xt{>~r2z2A zp2*2>Ox;}yT3C`66nsc_mWkWS+Ue|FVJ58nD<#i|JNGb6JIV)5mv#KFIu=GkXd#bY z&4rJxr*u}u{GLd13o;q_SAPo!o!J#wI~p|xYIqTMJN?7T zQoK{%bcc>~fjsbJT06M&tiFfekwN+(-sng7&>ml}3rt+#^d-CPKRm$SR&wPZTKw%P z?Xi3IM~m~7fRTB0p_NLg;q)f_gz`G*cEtb+7e~Rtjic7l;LcK!%^*)DA9~3;{0!}(vYkdaTDZ64DULeK&{-bE zvUG3+l#DuQGoT&3FzT=bX5~n>WF}D?jPRoa14r?cCforpZ=(-*bSw-s=7)T+1lLrY z<>(gfEyLiHJG>1a!(Z-g)0$7~qyv+NZFEpwm-*d5h_}i^%B_DGH3)dx4T!kC^3Mrx z*tg-qpH?$&TPIe-Is>pRe>jcYWSaN<;ek0JH`LhM{w-`HHm!+H?zAEry{*@Ml};W! z>saW3?#6w18T=bPJjJ!jXLK|&1V`AJ4p3zpKJ{k+L|=YKxrX*`_=C6d#9DG?msWe} zwE9kiSo;Xw(btjhFjU)M2Vl0&w+;q=+r`vT^&uFFdw5#up*^o==yXkb>qsE+3%`6D zwSD=R!9?bppEWKjvUj+zNhnr z|K_OJ!xXUl$>Q_D<+ICh|?T&Db|Q-^o>$;IF4YmY9+53$ps zVRCFRD<8q(X(n@4Z0PZ6;Vpc25+`~6Q~&V`zpL^%rQ7@)No(+w6Fx>q)6tbDe3mi% z&U3n_;otq%Niwy5nvgh@eekzMOfvKf0Fj#-?%uxJ*B##P-T8bz z&tZjlGgueqtbvEsn|xzuGpGxhXe@Ra-GFbIrabK;a8CvY^O2{1Ij}QKg4ynbY~|0S z0Ug^Z(8-p_hkt1g`^5#H9(;86X5^qF_U~*2uNTx_^%KI!`#u(eSx(v@HNj7dzj^pXl7;5 z@FafcfpdqQm(1E(p>%Rznn7Z4t52{3Vdl2%iT6Bt1CDHB2F88xNIdu?__xkFxNnY; zZ}D@j%=~2ReS8KS{s?^Vl<)F!^;y(4ba$U&Kf~*O;V*aYJK0wH+KXW9khhi@?S zI9bV~E}>Ccsx-eJ*u(Rk@6jxddYzOT0iMr_&%pRJggsZa|0^o`S>^iPK6y zBHsLj1iaA=Es$CyEm|}J5-FVsfx%_th9-b87=z;r$lXzt8=d7&v@1-?q#amy>+%BK^JF=a~dB zGuC%tFnaxa93?LpRw_GZy4nsNzlQ-POJ*2Xw)3-bW zJX49M<29B0Qirg3R>Kf{g2q!t=hry2e)4GH6|+M8Mffqxc#Ih5w4e8tUxAuDLw_2e z-RZsDSTCoS0iQ$d;?)v#nn!e15SEN&io5A{wH3L zkACuZe)`Z>tde&+C!+_0`Jr=cNKqXAg2X_jw1T(WjpH0~HYPLNAcmK1O1q49BPMO= zPI)MMGUoM#2s^eQ?x?S&Q&RQ+8W_fs5SF(;IQN9emchWqb~QZXohauz4_>24V`M-l zEH$-L(`S0A{$@u&2^aFRPGhr7Bd|D2$Ku4HLoLS^L};>TolIrhfR_xiQt;ARQlaBG zqs(y!O$NQ>nT}37lz1N**{nmByiU`VnW|t9e!(c;F{hCW$%((PcX0zVuO3JzgD`eE zt9f9Q;c75@K;-bEp%uSuA?2yOcDdT(Je%I|GvN|!RYl*mM>e~3v-zZ(&C|A%tFg;W zYebFfEP&)2UhrK7j{jJ^peh|tyPmt>AvvNc_NT)%9h^xUd}A|sOqoPIDUPrr4Gy{Y z^VIdBF?Kk(O&ZKD67_$}A)|mcuG5)`s8MnPJ(GLt>9P(qmol(V@7q2iPb>eF52WKg z%V%_o4+AP@(N)?+AT_*9XNmoLUUjgfW&$pB=`I}~pF*4ogehjD3iv^U>MR$=?mFG6pw( z$vkC&_MViWNYD71-3?wRsvjy2_tM~>T@7a$d_Q~mKmV`)`|zO;f0&#_te(Q}+xFYf zCu8%@fHe%@A%DObbUTm2DgJ0&vtpgy0$sVz;I+F6avhxnPxO<&hZnO-EuV?LyB@Hz zoz?5y8+5>H1=~3Q2J9x{Z)Cs^M`cbNUJQWw`mXe6YrMff77M7$E#pcz=VO-Ur4;`f7kW-jNr}kobn7$CQ3}KcOoT| z7W8o?a-&7JFGf~vM0aU~r?1KDj`Tu4A=hM4KiS+&GKo(e%)IuL^93wvMmN1V{uwy7 zzV)`+#BLpy#ehccoi6LXkDW8;Fmi#L*wJ(AKU=IFrhW5|Zoe?ldHY8TFJ9)j5#hl$2VDOFOVl5E;Qw1$D-}X3)s@ zuj}5b*Qd!tHep@DM|9H()!mWAPw+;StJ$F#LYtBkLd*v%%dGg-(z89f>Dlj{$5jZ^d*kjICgC?L6^-g%%8n`n7 z@Um4n2pHts-uAZC_X(M?I?F`Bsdoc~>dih7Y}K88NoJ_>tFzLO zPos(eSsgOT89W0+M39qbN-1E-9ZYq<&Ga6 zkr@nb{Rd5g4)WzP*&S?YWcC{whc9Vc$Kr!iC=5Bo(c48` zyr2sXJ~}Skt^moBq|m*{yJ5ivS1#u#yCW|RAJqdMkMt{Le;Ti&LHo`K=y9o_A+d*qQXOT_u%YhL@>zW)tjD22!fZnc9y8tGM?@=;%4@HO-j z*RmKe9jcRj^HcrmfP3+c7pu_k|BJuK0QkA)wbGrA(&1~r_G>84&LRYc4q16V{jktY zWRfm|IH%xiL)HkTiNLr$^`7tMHgxcxd-~}^zG~BL=}u?98UDa27XxHMOMqW6AfQL(KlX)bXA{_F zpZ2|-YV@Rbr$FHC4yfL;^P!*NQ;yLin^b0ewYnJ427Jd}G7&PnAjmAut2xdu;QNHz zr+Lr++FCdWKHK~K=+NW?TQo`Ge1O777cV6Llu!InZubvKl|)6 zwZWZt`C)vC+}g-I?ef{lm#t z*k;ujoOo&5lZaPk_lJoOJ6-cGx75I*te$S2MfbI!s-pSf$Wty<1g@9-VKa%#%w{`< zDsue7Oss1M_Qb@rk#Z?J{6LZAE>V@s6%WdW9IYcs=lj_6=oA#VQTUECSt59r=4Y1= zBIwmNS03^!ugmmVdxrjn!`qQ|@F`)MXnE00eZ>XdInO~GnaMc(CRh-OW}6RR{Jy@< z4)`QGc*?{dy7DIE(QqS7<|oZho7qgsl2igKlIn~fQzn(QHl>)I9Uw2N5itCOL}*O? z%}sKv{gMGyBLMmwUv-|Z0Gx&|34P57b3OwYe}4XnPkiFc!l<;b`l_!weCR_TI=tyk zZ#w^ppZJN>EUI>Qb-CAo73z_~$x-d9n-&vFRhNgS*LEp&pe zWY)_}S1Y~Rn8^W4^QU>=Pj%7BVaTTJrG>ax`ljMleGD@)$ga%wiV)T>3b08an^tRsvVii*p(dPSr1R zteI-~;#6cFe4HdF60kxhp`Hi8;u$XY(;)X!vaWJ^T%zV(R>kQ zJKdvv;L=jSXW?QGBs=g)nv=N%@J@$*?6G$oekUDU+dDN50co09V~+KWZ+zq7EpPc3 zCtvnuuWEc?s>@E0E?oHLU}v(#;GfKx)M)8QzSP%|Lnr*Ve(SdmfBeVq>A)Wj^aZ>L zbb*Ix)>HrGCW=av8W^^-b*f+Uf^iD>nD69xq~@6AXDKh7k;MP=uTMrs@?}S(8;4jGjNK( zRVS+sdcoGnmAHwW`U#iQi@)PLzT@QEzU|xcg!bYMkJ0Ic{;)lKfSXSB#i~na4(h;= ziEcjd|9$ZA_P77W;qk{GUwn*gTgR`+p!U1}hwnao+qeFAi|696t_{Ib##juw*jU~t zj*Oiay^?pu9dxJ#z|+V$emRsg$$L2b>7V?`;a%@~S0*=~XxVJJ>4JLY3!jXyGKT-I zve8xsdA{#dydU_`M-ItTV|*e8z7+ zUuUrF@IHK5O?MW7yw|Qh*qsIsyyAi5;Qx6%g?9%HzL*oZy&G@KJX{9R?8x?4W{}dT z-?%Gs-V>Qj+_0_g6fhByNfI(;>OV?N9msv{ZrP9uPv3%pvo9qC<*eB8b-7=!iUn7; z^G7e;8PGBv{d<+dfc>s~r2y>J6Yu)#*pn|4_ZhsL=SwFhL2BpWfo$p^eD`GX!^GON z&pcfkblgeh%9&jR!TY}V{n;>?zYjh9@X1$wZ1Bc0~ecRe&so~Q(J5% zbvNAx7VrJ)!jL!2Y&GCTMs40lJ`#J%0G6Jnu1%dNoyeyQk2sRcjt67~IN9y^>(I=z zIs$&@G4S{&|Kyw6ezPUC=W7y!W8kKaD`7Y@8PVv$;}ye6Pa4Fn%jrj)yz_T{=kUAl ze)r*X`4n_vgL3#8_$(Y8zWcks`;ga2YpZDQ$#>M%`>@|U?mLc(jbv+ox?Z~<;IsGn z`qL6R$sK6@=5PMy;XUtp&*8J_KR}Kykma9AI^ss1aP!sm9|6*=^Y!?lyA7Bex$WQT z;kB>(+QUD6<9~CWwz@ciz43d@MpyBivAy&;ltZ3EDlqE7_^Q!eX>jiY5Z>@R`N69* zax43kaMD_jAPaxshOGI;=j6qS%kmd;Cb0(D$z zX`iP%3xC$xIy#+Ql4(QelKw97zIjDMyNqxAy7CSBW36M0^>Eq`6vd;2#?|!S#$Ho6 zc@{e-c?U+U5v8GR0@IQ6bde!SBm69KmOpJb(`&zaqtnv=9_eQBr3 zVLz!@=jq6p0gDf5muzsiGO36h{dCSbEDl6v3D7v3oNld>`U%@vft{ej&$sHuY4n7U zP32dSrjZ)vHj7ioI3xjXcqivP!((vVh9PcrI^|mP?0$-a-!rJ8RHslx7k|cahD_ba z_?@QCiggs4fWD5bch@fDSu)~$aa7q$I&mCoE>Tlx#KiF)Rp6I)J&#-$vL$MTxT*lt zoOeS*39-RJ{s8I_|H3c)Z`s=VRC&@+(v3z^*<_DXas5d;(3!P7eBbwd-ywqoZc!-| z2Y`|1MCUd>6_FMA)RdE$%@@3WAIOa8FZ{cI*VQ=BI%eo5F{}mu_{K=n+?A7#G)Tc# zeIi8{R_JtW_;54gNyk8K3CyNF@zYLJ&jFgji+yGF>|uA$H0xBPnbHc zOI(uMxo&c8dv$tIPf#|@t_^ygKmO5=&+p?OKm6bi{$OD$^I}kEK!?7%#|}*+-3Ic) zu*B0j`c^)E{^x%_yEi`GXN|6S9m?tC9LuTrl2rV7L&r7zRafriJt||GUGU5q+MWFmPjO#@RhQSzkc~fF)Z$df?C#SZ4CqkP~h6yGr*iG%S?1|sH30?Us z9~pMo@@+nXF+iiY$-DU?i{Hp8EqNs-X5`$R#?+^iYwWDNHGk_rsy=;3xauPL3_2*5 z#CX8l=8vx6Tr!nqFMyy2cFMPP<(OYQnXDM%6)b%8eQ}UcI$~%=Cs(|h7@PwWpwPqL zo}_Xwz^OClu-9MvKYs1-n{R*n;a~l)|LXkJul}-@jIGW-(`V8$JXD3JIb9mwkz+d3 zk-IvJXu(;;UA_C|U;gF8AN;`|RA<{h$s+9h&t!G}*M8+!4}bJWe{}etf8>Aa;dU*7 z!0^W^!d{)qZ60~Hq(z2kY3@^89c%-LV$}^DEvGMUTL4LF7hc~pO`Hzr?F`lh-_^DX zuMIWb29^-{-9&&Xc>{!Z zzVn@Fb3eb+o39VGj+tnow`tF+yvZEM%@(Zy06+jqL_t&_Gz7k5CUW_l&`BJbm8Zcj zUHsKw{ng>G{`#*DPyWr5hqt`>&4Gx0=P&+*%AU+*y$H%PGUU~tOlW4XH9iKcdA;l` zJO7XW@t05Z9b~gBg{*LpHP^(R^pH&LQYI7+-}61+6ZBC*+BVfT=o{oy|KYA5NNmcx z6D$Dezy#EUv+Qj9OxwCoe)5w|v!ex$$`KrU0SB#w{JHR@VJvW?D@B7|CmI44T?%be zcl+@1kACd%v5$PTayqbW2RwNtX#9`75h%1Lh@VGls4A*)HD!XkT1L`4DN#F~_JkbD z&^39nTwP91Fw?%~x#$*L>68!s#yHLVZ9a7LUBYGYg}LS{{iHR2qAI&jm)g}-Jz3z9 z-j1GbZRDg)ZFDA7hQF3&q8NMiz$P!`PIPjb99`{3H4#4RXVEsHC3g!hsmWiJNh6Q8 zG1~#F@SiPc zb_dj5v@QlJK20UcDA+80Dq1Ud(Q^vwOb4`Tk^9;9n)KZBPx|H@Bj<}=5=y(B1GSwq zFbNR6SLLY#n99}rIGyR1G+Y1dhSCF0beg-RFC1y8(!raCKG;nTsH`jG7OimMOoGMC z49uqi2)JHC_^l&bPAPH8Mn2B1jTcoVu^Ql~07bTEJQSAVsi zIr+wK{KmtnNd<@%ZbE76f22cDzD2Gy&)eyuq4V%_|MuTDJ9;|Qez*&tL@kffz{72( zJ&%X82ntS_;8O$FEu=}?d@GXCMc@~#xLfI*%D2mY8ksuyWl-rXXVqOG+VH)3z=wto zkGV$=uJy|a2EE@pbiFL|z_GORuGBlV`iFk#f6P0;SK8sh%h`*`lTOx>yB(77KNf+Z zgw3;ia6k1^Kh@5p^4%RmY1+u)Y2--0HoTj^JrD!S?hTyqONU?@A9KL3u;tthqPj|& z9puFuIDF8zd-_^7nMXVguE{r(57m==XEUG#C%EQ^flS1VO$K%nS9)mDU%~y^Vapkz zQa5HI1&$FdJOLbLdc7#Gsh>y#!5co%ShBQ{rw17mpK6%02b{3!VsptAR}kBd?ZLD0 zf$J*k!v9j+WoN5ig^zZ0Rp#Q)pX8y_a8_SwpeDedKZoo2>2&dY zQ@@hGdQ8OA8JzsUV9D2aikKPz&(E^K_>d+m4Vs|KAZRi8`-;0{4D z81;^<{a>=({eki;9%2o___6RD|EKOptl_)Z zM*nWLF~9g9{=?yeANW9NLlCN^FO#~91?8j+Z>RG+apMDPA;V(moE|>&*H5O7M8?27 ztS_o@wwWjwPibechW;$fG~c+s{{AtivxGxbx->O&t>Al?t!yRX80V}?W@|} z`N9Eztq7{0*eJUB%uwuTbbK>17zCUL{)FzrKic{jbQy-C|NDy11T+4g&#NbP>d=P? zAlK_DlLzk0fq>gS6USP>voVvaXs=0tBpPtkmIg3oXM$e&=6_-5zICtt2+t-G?07TT z0-v}|Q${v^e9n`4Uq+nYyyAanak8;{8uqd7d6|G+Ia4^MvTGlzfkv;QWq2RLl{xr+p*-J^mz?(LD8wQP;WlnLk`R#s(H%*d|~3qyI=<=<0A_*x(`* z^#(18YR7cJp9a~~wc1hA62VG@`NnPn}dMZ!@&|_O=y$oPJpc-%!ZF!x7&% zv(s_dSc{`-CHKHtatBq)g%e2J;xpLbz&jxMOCt_&kt)6Ik31AMV37$^gBw7eykDy0 zM@D?l`(oqBtLezEv64|on|d-WS?8CBl`pT~W;GRG0;dQTUH8Jz{_M|mkkH8ku0Cma z$AncU`l)V$BQp?9*Z5h@d;RPG>%#*NP6yQ&$yd3!j^3b27+TWTeQ0?9^?(2O|Guj( z0cc(w9rSmjF7M*C+i$_?_@fg{;cJ|C;WV=4ee7rQZQ3L2E{7{wU52AD$-LN#o-}G` zT*v}9{coCN(};~uVT5PlS~|5VNJr$BkIe>ewK{QQZ^j7keea*9j(zpXKmX@%f}}j< zEm~v)I(ayGO#mtX(&Uw2+Y>}cKv)xfGVNGNZI+PK898cAT&~jXqKSA zi!R&|p!$oAur2t5rcqMyH}zrR+DS)V7Ef^DJNUHVr%KL)m*bHnblXiAHfq?&FTCjFPte9?x9>HoGFSWtttByRh z?&Lttyn`Q`#$8U@BVIA{%7!S<<}rdIVU}`sqb_(dYw80@25ZgQMOp9%_rZkdu07D|L=dv;QxckGlLT~O54+axh`7>>G)H;sAI{; z+Nzi8ZhX!2&)vvM>L>edd)qH*`2{r0OnEuf&-VGUv~+Hz-Js9*e(%eN@zQq?pq2D% znUK1f!7RPtlZ`~hhkLHylRBw>lOI95UI|G1u_goA zUU>*kY{L~WEaWMC<0mjC0leRyExqHC0$13`>52yaHZQJozigID?5!Iv|e4&R#Bd*aw?Z^Ya@q7h^2 zLPGERhyJ4tf0O4oe&aU|Pv`XsyhXeO{jlM4WG`^rNHzk_Phav4Z+OGu>%Q*mVyo)2 zdc`l%?X-!o1-iD@6`v3=XqBJ-|I`2TpPZMlbywZc&(-0- z$}MpGv=7iX4u(hdOIazmOaz>N%eQ<>WgD8&clhUnOk9|3rvvH6C$7= zUfXYr7K#(!;)C04HLmikU7AYZzI-RYa&6s8T>6TYp&}J@bQ{IhhV_fn4d1w{cf9e} z%5Z3eV}h7)OH-gdQkT{B@t?DcrJH&KrhkeTI$Jy|yy$`rY7Z-alD3sp>e?sxrJEx! z^6at#$v(?m`J;)3LYu*h7Z)3K}i^o zDNanedPv?=g4;+TRnGPTFP~hCNblvlk7(8;NPbJ;k+!j z=R4tx)4-hxfG|-Z+uj}l?AO7%_9DZ^3m0$Ul zbbgjuuG0+oeG=me2c2-5&W-$WY-W+SGt}{A^QoBmXVq3^a$l`wd6o6c;UeN@{Xu_I#PF#TRviR)@RyE; z{jta1amZ}u5uZ+RdUTz1*z%BZpWvF(Ona3MN$6`#tuXGbgJeV7>g+T&8mAc~!I6z! z7jyz!eTPdVJ9wZ={%AWn!&~_bX}qG6L6iRA z!XpNM2`5ixJLEgw@ea=ck30cft8)>(jb!msjy7oY(`p^u7mct4gPE7uGs@AC(DIM6 zbT|?STmDvh>!k!?>seaz9qa3s4Gaq_lGqx%k!J^d;WGqkFVg(WF!?3^fPVbCGHRfF z2?t#0`)#^MzM@AZ8pU9?vPt86RzIr)stSk^^ox7!EmggxFSAAf?{ zg)L-^UYRG#sdaO6ABV8Tif!VPZnEg}I=7F7&8J?^WTU9gGWbQi8I z+wcURvcApMf&>Te`O`l=y!mfFlY!5x&NHwI?roQ~Lo7DLt70s=8D6mOtjf1%z#!~F ziir#|k4{rg1|0FD%eE?$gZaWpCl0>zJHNBr&Ea4x)tiU#LC&q8h)BHpGBSvN$8W!* za`N^3f@>&sTRXj&a0>k*YMImz22G41;TVsfC!Y9Z2H?*koPQaZWOW&he%>$n4Desf z3Ht`;R@0TGL9rbHR?5AHUjH87?C`C2uCrs}^u?^q1&$B4Z4^&F$@lO>uRJ`Muk7I2 zC;gs1&*VZ@yLEWG>K~r?VY)mGJYVKhfUn4o2|Ek!%j*bqW#XXvNZFQ;bm+;7-|pCm zEIRws21GY$5BLyU{0-9G!vo%`wO0eYpAV<|vrKT9EQXU0*&!uWyawz0b%@)Mm)(-X zce)LT$m=WxJSfkWLy(wophwOR{o47e1M+k-3eDi-Z!>$4>pZiQ?pz4oyR#GG`RtlN zo7dj_+l67UwhutOKl1J!Mq~&tAzG8FZsSfB{ULpz^YnXK2hqV-d0zK`ls%p&?CYWJ z?GsNt5xQ)#gZ}zw_w@lQ-%;L$6OA2`ChW)2%Zdme#|4G(Q9r;&h0Wvd{oe286~6yI z6XtNJ|Klt105+B%-ZeOr4=Gha{r%i$KYQYg8MZR*?C>%5%jDj*pfKsM+u7-Bm42|~ zz5SE7{>y)fnd%1|`sgkZ+8@E|=38FjZ}N)FpXD@l&=Jm@xX)_GsH<2kpnOXEfjt-u>=(pJW1{^*A|`mcQ|F#g}>=t^+$;^wkd` z6#Xfmp5ej+f0ulSQ}k+%hCf_^g*Q~PN;LIEJ~o~@pN1o-upKgqZy%;Q(OHNfp^s4Q zOTJk|8aX_}jr8zS9Lyb~9TX=owwo?G5UOkb68KD&B!oH+ zh)>BYFE_K`WKz|_Tr<`N0)x21I`((s8%r?0vE!r2WZZL>_}uoD#6wBYGIZz9%hJG|34oWSzJEA#4rx1k^wCF8e(@K7QD2WB?MyH{ z@mqXUK_<^QF_l~A$dyxsfAIxL2QS+xL(2gPLyD8<5I89;PnvX2bprR^P#34slb53{ zv}w}PcX++7HU)qy8 z$H`LLjRtUUrrQBL-}}Aa6P!yw6j+fL zaZd?mp9im!9G#%8^)mS&P1fP%*fBctHnhWY&`!sCoIYG+dI_J2D;{#9RfUpcoH2QH z7ezY~AcA!9Sjayph2AWv78LmXcDw++yR zXFp+dlRV0^dTM&2FSdbhI9K`Lm%gq;Z{mtiynv>F#t!(|=|Pr6ID6?pBKXtZ&LDT? zDIIj-k=K2uLe}7M>>RP?v20vB@cv~b5yQmi}EoH z+Tt$Gf*LL4e{yY^NB=30)U8YOI?1tl0y{XSgSPXcWq@F?CtZF%0Pmht#$nH@MC_{G zX>ltpKYG;h8h&6K+i=~yz{R%k!j4@h&#mnIdhg*)Z+cTF6!EmnQ(my}RzXotFb0JD zR}W8o;)xELJBUmV)L5H8+2N|VvSlxzM5-b#+n_Sl#; zeEh@h_knEtfA*PYGa#yei<(AX*MgU9=HRl0nR%}1N7C2kipUchwI|NK(+17q{uGixeeWLFb zIf?$>ypL{myCxON=-hsBUbQfgO+sKZaNVnp-qCmHUk2{dtoGl?iG(xg%^`hx_S%sN z1S@;w==ZI|PgifFm+L7{1ONN-`T<$CZbo0Ri5wJo(^mb^-~MduHzcbw_NbgQiI7(x zdd5K#(7cg>x-xRm?BR3{Ec80S-7SxlyLKn8S{eAY4%2wzGgsP40f#-(EjuxRVS?QR zfU>!og8;8&fOr~xm~`lbN^sx0^>kh>$izk9&P)~r_jRuybZ~H1c^`Zz2O~!J&DLO z$|na~?e=o~)W6zu(05g`xWJ(2*E+?IrmoPvGW*o0KG`n>U}nQi84kZh@EjHAdi1p? zANj~f8bADxO%rj;L!c{HuIJ#<*=nxdqrYgJ*g^5xOj`TmM_5ZhZ+PrekQF}H?z&uV zRyn=zz3*$eUb~t)mNG_{PS93v_!ZDHboMB4Phwtmna9-5*33*)xr2}rK( z1Mm}VYrGQMN%vPh@=D`TWZF}#-^~5=@w(cZ?Ah6K`vsGYVKU6>JgqWG&gdzF_&DdZ zOGcIf(FYv<0^Et5DTCCDQX-!|v}^l%_^jOM3wVx`7C%{%bIG6Uw2Ne(Hi)m^ebbRe ze)Z6!#?N#@eepoX;m91X)8Ht4kNf}LD~3mnx+>c9?@%vRfHZuGzm-(=l#NDS&~ zSnHB$5`BUogKz9*CNw55_?8!*R#?yK7rgQ3w4OSYbh`o6gEHeeKa;!&uqppc3bYYO zJ~n0S!n8VJ6uU}(I8U>Pc9I=eCniU|{~vm1Sp+@JPUy4zPO|&!EW3tIvQzW)wXc2c zc|QGDksPF+gVue@?1JgV`<=@dr-3^Y0AHNm{$4Id0G~i$zv%!#;qk{G_sNQrZ~CTh zI{(8z{KMAhRH##D02t)E&uW1s6HY-KZ*;DMk@^(pe6^ho6-vL^Du|%6bAroROwF!i zYjXdz5~t(N;i!ZvGv}o)k3XGCjW&F%()U_~;YZrUtM971TAs?C-=wLJ6FT?_W))qU z0B(gk@H`7yAqxjXlZO}w!*!&mP$w$i!ZG>rI`pSwE!Mzv27UBX=W6v{|FonN7pUya zP6JLp@=xcSKFGX621jX2;v}^L+I!W&il9MCK#ON}j4JD% zT)1{^H7L^%2X63G&vLdEE!zsY>B=ywT^bL3;_2icDpx$W#ffcoHK{nmQ#uS9+^vf= zZQ*M=DaxPg#tT|lQYPVvFzu{I`&8WlZC1_NIisV&QK5nM(_&6*7EjmFvz98e(PO`K zqZ1EtZ7()*B?n=B`ct0@Z*%(f)QzlIvFTLBur;udve(g75)b%w5I`f$Zp0Fz$! zN0xMAbWXN>t5F;PEp!|B)IE9)PlI1o&{$tI^zPA>E}+Sl@aZ|7i|A&px{45rAC6sS zRz3{6ra>mJ`am~$-}nc927=+cCb!QOfEEwK=hS<=EV~`u1SMI-?*Rc`!(fGqbQOY5 z3_8P3KxdL;ywyW0xQujJJnRD+BpGtitlQ8x}?|TBL zMVLInL58S=WIEef{WuTLm9hDf!hanP`-Ej9UiZ~?@I*!B>94cxz9D=GF5MxO`+NzY zanV^PQt-Y*cBRo}ip}6)22b=i6Jo?4*bF8r`uJBi%>WeY&d zo@W|1HcYg zgOAsu7lU=}r~x+`Y~$u_Tko^eAU1k`CJG)5&AYRD9f#Ae2N)1Pmsb%ukQ*=NJ^u{0 zt^5<$L<2u!;Jp3Z^}7v}eI?+owlQ9PsGg!TpYppE+IzQxtAV7!d6I(>~j&*uQ?iOgOi~JycCbPAG&6VYG^ZC#jDla5D| zL$1TmOgvYA@d8)k(^ft1Kxy|?v=dfA=LV~1#gf%l^y{b>6utt)w^ z0uzU9gpW(U@`@+4(Mn-m3zi~@4P<9H#yYai+w3}!YWaLat{sligsf#K4@Kf{HHZoT@&`jQNuRj`EeMKv@ zlBWqtfqU}_r+EB_T*xPa$>JgPfL|CtIPD(3<)N?EO%Vy=E{AQGyA0K!%Dd?K`bKs# zZe7aSvLIV-R~e4XO{~q13}h4++=x~zykMd2L~M+|)owL0wr&x~eV+qZUIxd=9{G1% zqT@Q0&`peejZ$EwA>t1*E@WT(chQyG4;^H)emD`{A#3!!gJ;Tm+Wd`gt@h6!G$m^rG z@~UG#ETR@O$~w9$+0TqArx|*y!b8Q@-XgfI7qZm zp2(Wjdyk>dQO@kSLHHb8wYUy|Qo?d&#RKQ-b6atm;ymBD@m$~M3`@d=oVlm3@ScXO zyp4wo9?sPkQtuHfcbz>Bn4CI-a3ejRp29cO!#|OQKoo}T8ZdOk`=dXIH~1PC1a6OU zd0uE5&pM6RR!827VJA!arGfC`J<;TCmJyJhMIXr{mQC%0)-u*9&D{wp4~jFMiHy^@ zwedGHD35gDQ;1}#+|_M6Cqahd#4jsSd*n;Qc7FJ~e7V5{+t%Tp9EvPirOql?aBbOh zY<+Oez#D%$o(2S|sFk7R9Nc3&V^`rvC~ve&211idolKtGb~j>rCPc5!n+Htmb>tMr zW|l29O{Z;MQ@MVf0ck5of8gnry@%BX_yjQSrMuV3M`zpFw7tsB0PM);F|SurOtjI# zF;q|CH&-}sdu8cpB?~HYqO-&BaP`=EtWGcC?W9QPJK!;#AM1hq7cvYVm!8wbh&~f> zniW*qU>D=xX63#1mb#mdtW-XFMLUvau4*O|5RAnwJq20S8i~>gj;*xw0!C-5dWem7 zf?zVXtTJe-U%M7v*n-XuCya%lD}=qk`^_!{UAa7W0wbp%m$}dS&(gV5%;mcqz=JU#_^=?+LZyvnif8|O(rx!o@VpgebN#8#9>J{IwpFwv!rGY_@?|j7r z_Z}X3)gzgJeV}xd(OGoW6ZHAN=;qnyo;f`K?0nYM;07-p?6fjIGp`Krx^$=A>BMU0BfBAdX z&1zY}nDlx0k%#lm`d5ZtXtSvVy6|i_V9iW1X7?AFmrM(r@8^Chy2zG$80C z=%(-B-G6xf^haucwL7ojbyA>CF!4o3XZ~+E4zuSyY(B#bo)m1{#^edU%?l>uJBkF) zd_w4+cujMlwJqcGaJ=hI(;$TFNK0LKA$H@d4pTnb9`dSJktw>Mkd%wNq^Of}o{Dc*^p2JF#M6=y|{E4ltJO$7F*p$f-+Ch6Se&xP-;fB}Z6f_|0Y-K83*l}pGzqE7PzSMyo;LQJq(Nu165g%25o4mB8H;})IAoNDxbSk7y zq`NgZ9fYoq@7+P#proBRI6c1hEE52B0i9;>fB0ZttIlqK;<)qYOQV5{-r1K1-#=O` zsZ^~G@673~2LCZ+TUkz=0bn*OTe4hTj7^Yghnjw z)||2)G|ZtxaRya=@o_9kIM**0caNh*$n9 z(6-r0ndg>~!HKQxx>f8nLO3W>UU~$x2UsRgbhf7R70Clj&+^buc+3Bb&VY1PzGc_@ z7GU|tM|ms%({U|)JL^+Eih#}1(dDr1ZaON#A2@VFBEP9S`1ULF6JSAs)O9)1#rr|I;e!3L$_W%yZ{18Y!$Hd$jj z0c%=!x~%)biFon{cLDlpJV7r7@Vm~H=S0xr1)jMd9nGKwzo2$U1o}RQ9{+|fWVRmR z;u9v{(36(ui^;CYtpBxn*>d}yHJkEHczTh|go}Z7TwicZr`>(vDkoJ(mP%rvK)0d zCX&0Ic=7OoNx)y}toRe3o#XSQ;puNb`?$viG$AoLOMUfkOfP`1yE(;JGUk2M?Av)@gvP zj7tsrFxBViyuVuo?7XQ1h-&LDH(}WHBCpS;0T%!Z!bTzWt z!J~{LU1T$WiqFb@59bSvG7wt3J-Z9MS4X0d@Ru@=ZP;#0gFOr|`dF*LEgN!p)q#FZ zP~%_T>(Tx7Oi~y~`plwqcKNDD9_i#o9!snBDtcn0#wfd-_m$1oKEkIgfO(XTrua%B&2uK2+6%KM;7_jm;4p-%dh9vP1>^a+< zQ$C#e!j~Dtc)F&eccFjxaIt@%HHC1~#;>+yKf~ph=MxhGwu)z>rZUqpIImA^xu4G~ zDR~&);a}}0y!6`B-!ZGyQb(122G8xQOkZK>ZJk}o?!e}a9!!qpzWL~8AsIwrWb+!I z(DO`!SevVmL$LDpo4=Ry;z|88;Sb~Iv-6QG+Tdh)Y4FV6!!z=oSX+EhJYB#|=N))w z5T1^Qf&EO1t#mM8h2cfsz1TEzwQK?>egBF-c_!=7;`!UA6j^aX(1ylDMEPBGLBhNF zlttLQ?E84m;>=7#1gXC-jJ!hs=AOR0V=DTiJb09w5WSX}jk`W^!API>ZS1DH3ckHd z%lKiWnoj5Fi&?b?MZV-8wrk&^i8YfYuIe=|j6FubQzw-5<`Z9@b6vYw^;3@hUj`#@ zOsq zy)<)Xr%oPw?6I?4TVo%8{PFX=r+k|0>8tZyW7|73<8ET$kS_xiCJrEWKU0#n!lVP% z$_VpR(ixmhMV$`V5g^sV05?v4K&|Yj7OTJGa57NQeKxq(4G_TjLV+P6`9p z3~=j+%g}BVHKKT&#vE_cp+Ks-Oq$hV>6|lI9W`yIK|z(PoH$WWw&%{|d0}*B@#{dQ zRh~;n^ps9T@M_?92!8#OJeJMlz+5_cnu6Yb$aPeluD*QYkD6K?H9Upi@R9;{56JfO zHPKX3@+pq#l#z4)HYs!>&Vqw#whqEKwmpb6lp3!<6d(N;@2o0xwJ*=D2nOsz%QU(u zfixnC(2_`jq#cER`!7ga2h0t;?okXNggkbWet{PMtoa(qu`p}lY1swYyeJb0j zD|pkfB17&It?b6OmYgY$u83-5Xt?eg9_ypov=C=lbO%hsHB72x*dNq`X70RCO)OnC7qFx zWa?XRv>O!5i1QeIY`LPVjDn+&=&FOHvqGs#-r$*hjn2<%SKRl`RArd-2g_|>|I>o2h4 z$>rH z;)_F%k2JYyi@lXeI<*?@K))dG;0sQJWv_j>TD^Zbp9uu>Z2r+heQkI*h^0#ho*DRG z%K*N+rZUKKGQY_c+j?!&2YVv}Z+@5@WPjcl2{Nz`!_{I+Br;ve*9ENn-_z~+R@x1w zd!S)xp-rN?yULtd)I} ztow`t6nrwyVSrZl_GA|>+anX$2X&VB1YyQmJ5mk;+W$n1VUgXy!jdFg{6EB{H`yjOpHK0VLmO714? zcu(2kVPjghvd4dh-1KeuWqy4E-+%|cgzar!TuUopu4Ed%atLkGa*kT+EZd1r{Lkwf zVBqS+M;NLvNq%vguj(M=y8;{KN=wGTWIic2x#{XBY?>yO+*{#ZI*h)_p)B}Cix{^u zkr4Y!-BuPs-A@(cFSL*KU;VhW5w*5r@E>D}8OPShy?NGdJ>15_yM}CFUm8#0==Rq-~*@e+SSX>BUL}qwY=gZ6&OBI`Mu-@j5K1o z9{JpgMJ0WOq}8#H{I$2-Mu3F21*<+NB0Dg=?t@z{iR>}rNbNF_{MHq$!wN)mRs={cD6pA#DS#kzI|0k z#lYVV02LusB`8$7UCC2n>j=i?r!rr3z~?z_N*q_JTq|*U8-P{9bRksa>4?U$mxs8U zR@9ZZ(yQ2>{Qw;u8Aqe5n)qV~KpUet0zqDt+r{y#Ink!@#hKi7ba51wDrm~sLZ(3} zO>_rulE?XPC(5bFD;*ekX~7@JPD~_qzsrrbBn`cWVE9Ty*G`Deu;SwM=AF1;E3b5bZiwW!L*$&ET04y=dCfTa>$D3O zcukW)-p;CvLpwC^1n1zLasVp_DkI2Tx0CKW;bEiO@iOQ)se;GzyzA%0*@zl^#E2lUaQ+YU+ze*h75ezqM?+kzee^N z=cRk*bCwmHSuq;fb)byJhL*!`OrDHhH$Rsr%XX)D>Tv5)^++EHWJNu z;_=zZn3QD%PkiZ?=klF=CWQhjBnvsmCapYm0x*dt4bh{!bPtPrWgtiETrq@=(pm6$ zsFzWxbC(Wb3d$!i18*a@X?ol@O2V11GzAi zWH^-N@X^l%hDK>EeaP2|DZVGPguF99^*>SY(1oOHnTXSwMu*avHhVF!!d+zxVC!z; z=^(kK6i05V(-so_=ASZx+b=5YN;o()N55kS>?_hw9DoGe>a-3&^3P!6FW&zFr@j{^ zh=z99xRF(6LC1LvCGX2;0PbfHyF2G(G)R9sljLlfTvqMv6zJ-82KD<42>8?;JivQ1 zhyR(ZwQ}#EJQD`W#Kgig`3&29<36uQWWf8plm1gr<)@1dq*JeTrtMDXAbt4{@_XIO zAekI5WJ0!Q3Iwmo1a^(SNv}?Ngy+h>%E+V!I@iMw-tcS6-$VhwsSVJc_LY*uzu$khDd)vtb4=+A32^w05*_nl%*Oeg5MVCJ{&qdQANdj~cqw5~@E z*L9!E+{;@#jGdZ5VcUu8;8T2lF~E4nRsR>tBVNz^CV%fb_=l!?0Y7 zC*?b~tvonc7&~z4524tfH z@XDEX!S7c(@U{bUAs_wlGY0s0uOMb~!KsmnoIUZo{+dWBL`3xhkqoFkY{w1;v6C;a%Nla`m8 zbQ3jr@{F#ECG62z54T>N;$68-Smmy{SW$4}T|Eo3@oh(Ftz8f$x$+ida6l=ptf~kJ zA(gm=TD{>|6J?@!vktCpMe~wQ-IqD!OKjRCb}L(=8eF%|X$ReX1z@sx+81@uPU73@ zM&kx{i4yze@Awn^3W$K&?bGFZ$s13B*Pm7IYtw;my^rqQo_NLcrTQ&?BAoL#7DDa3 zatL5#qN77zlkPP*&hjeU`FryP3+Jlk6M%;w{m~!2ov*AN-uAY)0lgExL>hQ$&HNG} z{l|!g5$79~r!mm0Kl`&kyFXWP^3Hd@^TY(eGV)!QtD?+)IUU!5Pqw-^9aFq*rm0LF z*tWv&%GcTv07$&s+1f7yFR+}Q+jK}Q1xu-8%T2?^lSTX!_fpyh@3pw6f(AUU zsrq6NVG%8#8;=GTJiro3-Gkeqdm!Fdnhk%Zyn;nmjMWT%=Flj*&sNBa?H3I>m-sd zyd}=8y zNL|(3_y<-|kU|G}CK=^d9MNf4?7)%Bd(!-a3l@cZv$6kn`IsbQ$sy zb7-+GbtAI^p{d-%ezxf*Vo$K(slIv9Y{$@~60HQtF?|L};pqkyyAm91sJ!(rZoH6JBO){UjD&6F=|Ha_+t$k(t)bb>ee$#EH09g9pC_>&2YG7(BMyiYq! zh)krd11!N{TfM2j3I1KrFJCvlC1dl@&#*cSN-NEB61v%u=?#LA;|K6uU)T2A4xfv< zTpq1pXTyGThxYP|(+|i@SD8Zhd&-%zNj)~ zYd6!#Q0z-KeoGx=X5!oLUTM{`{z9xbiEX#^#lfXsX_%s#X$!S()tbb>+HoZ@Jcor- z;~z4d|Lx!Y?WxxRG6{B?&qvGAM;|@hS^XaceyRRW3;U(Q_KzG- zjMV!ntwq_Y(n)|A?YYA%;uz0!sL_=eeEi<+9stPxvm$V68w{g25ulbNUEOGb<%l&gq=0xjfqK2R3kB&Wt z{2(ly!_T z5b)ERZNdG*fRRDFtFiG_7Af@9y4psVb-ijbCyEc+KC50^*GJxBvj&qah~3b$4)Dm; zDl2L_WYMH}y3tXK@5*ER4$5sz=yp~r*(zV9o-&us7j=bB?E@~lK)|a4ANueIPVyPS z@^g<>;)p)EPkPv#0j77%6$T#stccqx{d5jlGZ0E_x6+65;pDE+ZJo?chYbGF>*{@0 zj!ZzB%nP#GoK}!)7kEiFYPM7W@Xc>23KC-tGsg$SI!*>j|P`kyYJ6=1h%|8 zc<`?50O%yd^T`{(!7^^WFkb?AJ_iTF;m5DwnLOxeQ|(f?FJC(_P&Z(wToe1gX22Ku zQQ6d`q-j;=wS#1;T}M9#?C$LbU~}^HlXbCzd^4f^EL$vJolFXE zbUKp`nQRIFFGPprz>spcYr>>WKed?nvFn;gWV?EJ%~yPR%JFVYmR~mEHnKB<#Xod; z#BYRRN1pqONJQMWB#&@RUvT2+12EW~PA2-s>yD#f9C}VVmtFrV|G*SiZp&iHDW|P# z@qCu@Sn~9F$^*A4hNOpPC*t`ge7UTyPGN>t>xqI)@w8kn7DGxWWp*X?KV=%TOx3<> zv8OQdpp!rRMrh)(lif$&$3qcITFB%OxzSHQXbRfjOLzHirb_LJU?R0TZzo@#8YN7=A{C0kRDfKDs zpb`|SA9k4g_5q?v)sv4e)Z(e8k+>X@n52uoR*}FGvKpwdw@luyNmn+7$Cf|tAxEqs zbyWI(&Xrb_Pk9K;?$3}xAF-3=D>tHo@~F&%xOUKfThi!0Y%QCsZZNwkCT)1u#te?p ziSa|8BkG(7C5=BLm;BP$1o=FSo@YTNvhK;TGU&DFfSl$F0k^dY@tI8RR|Xkg002M$ zNklJbl!t$gBe^wtp54+zLk;l;=Xi5)h87< zmsF%HeTPRrSv4Lzj6;q?OLgL~Y>TdAQ(4o27+O=Ix08T8LB(%}1r9&?1@V4(~ zNCzMQv{~5jmxs*MC!$;9iy&o}l`DAgQnBR7&$B=7tpJ$dD5CXeO_PLu?=xiT00`U>~80I_+EqSbYjLn5y`)* z3(He>VBs0N9$jiU6GhAv4s`T|y1$dQdB^hvyi?9eJ{uXHRsx}PQt{^}T9MY4Gl*?h ze2|A`Y$Y3f(^XERj(>!CO&N z#+S;}WMw{%+#L%e`{*QS&olVVI5~Q1ogH3-M+Husv9^eYHW^Ul&&b6#3I$2h@YOmw zJQ7qwQk!mD=g9{?^g){Mz|`RMX1<3Qz{AxHv>(Xov2V)HmSmF*S8|}(AK2bGRyWzEEd!v(V)HG}`VD`!{5RTA7Jzg-8u8gRpIf^4y-3-#;jY2NJ* z6R9vQzkBkI|9#m>;E+ARiaglvfQ#+8vLUuko`K7A{*gr-c^trJrQcxSW@z79G;Q$? zP|rZfdTVK<#ByB&h0uzFpv

-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 =ybhDNjZggWu{&CLpKtLVyJ|ZPN#Mel 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

7P^B&j(qB)F-{LC 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�srJLt+s2hK(c=|4Q{;m0?j@q z%}7Cn8~BvLz$lltWj^^e-ZGkWuZ@qdNql$-IsTBPa#|PBjsM6Kyh-Z-e2<60mOMEb z;}tlvGY}>ZidgxU4AlP_=*z!hV8v$|EQdeKqxYp3`ppo2GWd?6IOtXvDN~AfIZI%N zN97qAMB%-4bwXvUzL-LS=ccP=^U9+z{-PjY45k_2WpUtBZz19Ty$lP_!eJd~n+q>N zHhr7&Red)_oTWANd^Q`;jO{9~u*L*Wsb%lmZ~7x-`%5F1+LV)gDS;Dh&?6V+(sN)*j`}L2P^wpy^AX5`o1uc;Y*F zrhTA@_DI5?FwqC}Gf{~;v?amhnVxIPV{pm87|N*}9OJWm^WTKz2Q;CRuU*>^?}SXC z(w0O&5+xh;cze@gQ6)9=`oCZe2t-;pY`-+^8?8aST-xP2WSW7uN68t2aKm%seWzkI?e)D95*G~mV)sXzbu&s+IUIP}8N ztfygS5U0sEq=7Rwc`f zxHz1WPUCLQV4|aFkWQUR97mo*JE{DEA0dTl9duA zCFs<9r$fwOi8N>Zb<%a>cA(ab|H>EVHW|r&%wwX{2B^9C)ey7snxON{s;6`o9&y;A z_SsHu9kf|Hm{CR#{L7(M;RifvK;S|W>G-BB%dd2l57>R4k!$qj zYWMIb@51_Qqhm)mIA|ER%Y@ktMML4_Sw%qoOh|iJ3QEF5=I>h<2K6CgYTi+ z^cb%m)%zzu`N_>&-}=_Y3-QS5yQj)$K6jN2ygYPc2A{;?6$V$M9sEnv4!bsDIr6Mh zR-;;-$sc^D_vpRv(tV6cfVbcGLqb+2XoY`p2xEXYx4EyPf%cShCr+I35MI9Ks!W0# zXFh+XDZ|3IaIf-fc_j`0LaGx8$&c0#iw7h%xp(_i{>bSGcd$Kf?{Ad_5MJ_L%RJB2cEb@0l+8@!MI7Y|DN2ckCt z)3eP@|ELENV+Y14*x&r^CpS;6!y%n;p@fs3Ey$#&oH27JCA^m(xA@=1sE+zn6 z_5Yf$eU0Bc=F@w;DnOY}xWozfP|87uP83{!?pkcf)vKG=TL+xr@SE#yuUEIO`s>SF z*>aVw{?`I5&pKv#&kh6Lb9aEQ{oBdju^k0$bV`-ATmYIuG2e-Xe;%Bq^WB-cf&$eP z7GAz!a5v`|FtGM39lrDH)?Z&Ya2LZFtN$ImU`K0cW|^vA|7i=CwL|jDMpo^~+q%tU z8w_FA8K_uBuH2>m!bx@rtX&4`K?8EK(1C=nCI(MvA%00;B4fz(M}PFku(uf)7@WEa&@6rH znZk~CvCXPB5$aBSmW8-11p%e4jwjye34s%FEJRo_FJ8D$r8GVEzL&unF1ES0PGmPN zn#CH@o&^Darbvpic*D#pn--5y858h{vB;Zf<&c-*Z}en)fcKRhDIjm{Z1khR-XF=a z@27wR2Ze(nXVYtc-iseQ*xCN^eB!D;!Pfv}d`tWZ1O1!61~P$ia^SyV;P39~p!F5& z^YHR%;Cuq$<DxeigM_mZ-Q#+`vI%l^i&pV@ONCjXp=wQS^9o>5xYqJ%T04K!j zFMcQ{w1e z^kjHC+2RVHI4C;%paYhlv??EXK@7E&!!#U|7KHo>FN>ypWYUC;;x{kK)1WZOY0cKnlbbmdPzvUC6~n8=<_=VJW&K`tmU1FZItuZHFMMIyQ6~UAd~bA%JuNAL zB*T=0v-9Ez2I3!j=piNm@)&u0hpymz0wtc$!4Z>58B>O~cIIvtR&P@=^%>GCpDh#Z zswt6&@ zTqj|aI_Qx{{?~4e>{78l7%WF8RMhXX^)M@L>69l2kQcJeaOxk%rf`wZxYiA2arLZa z>jc7sAOEY(^L%l@ZTlXwC$G^pSBEH?m$X9fGWE?49C3WED+6S8<3RZyR^y#G+`82r z$*_1bL+1|pzK0d_YuROxav(LkJD`zmw8)|C`a#QpTiOgKa`XvoE9Txhkn%yF>OtN; zz|Wt-f$&|(`2vIW>)EXkA)(Z=w=aHya*F=_V1=sS!cZQ3x!wPvtpe^WlN=uMXC0W; z_v?IaPyMJ5!wu3@h-C_;6s~6%_^Ck)D!6%H{|4Lp^N+6?NcV&j$MbD=Y4fvg-^rwk zuU3fr^ppWVlLk%>WC8$rv%?_t%->xi+N!?Le_E8f`Fg%8QroD#>pRD`W$I8D;FsrE zmv!P$MI)28^-`Z&G2Kx^+3-_FaT{zeyc56mEBq)d|C=n0^3r-0{Hg!OCo_MF&AL(l zqCTYI@0c#}>8MXxh{JT@;0;yWx>9ewwH}%-?(`#!!_KlQO}x0~S6uK#P_Mn_5?w7k zT;xsK_)6rCAcF_tV zt)kcrwE^$46@S^z*c(~P5QMxPK9vO$&Nmf8p>syL?Vx%g9p4Hu5^6KbEW-us zJbuXs1`{9tmtY(M{2Xv(%Y<|mKG_xLWPqgKKiJF;FR_= zXN$tZyGaf_IH*nK@UWbHSQwS<7>AiNKBYtOvRWVdUD{=1pKv%*>p1}+*eYlO3a@ZM- zT=FXV$kLSnc~G7iWQ1;%Cd=yMA`9GZvTHC&S<{fiQzjgsuk9Gzr2@LxpYo_x%ThW9 z@rMQK4tOXcF*ctvl%MI~$vy1S;Kmk_Mk-mw2$tFu+Og>1w)kx{)lUX%5m+pnofC5@ zJNb@IDz|k+{n+UgNhT7OJQ=FggNXhEc0XldOJ=xwM(gqJD!L zmP=RNj@$y<;V%#E+-ywv=mEmPBP&pX$%zkZ&h2JZMonu}+-bpiEA$cWb|c z{|-dr=R8bMysoM_Il2I*ysB@pHeEisrxQ(V zY?Q~6!9?X-yA^-`IB;tI;wwz+OyNj}hk{$*Ok4bEjwUD3;E#wkC_u?>b!;25VF!|#&I_vAI|0}QxWeZ0WL8)X}xEADw; zSbnu>X-LlydX~fTyV`f#12E%jv=LwyuIe`#*Pm&3!+H9+Nks~NMcGad}c6De#+WiR*?bxUZq2(T=({4Zv24tm2@5JQpXL-V4DM%eO=1@ zZFH|>WZ9bwTfA6!lGKr0-ZzCGPAynjM}NO5VE4|%SFQV4&XWZIs@odNQDT! z{xLgc$R)eMz-N(4r#iJbeI2g46^S%L2f%q&&&EwK@7O`Xgf+c&Ax{X~?uIr4eRN_w zqJ0>u>)xx|!C(63(SJ|b`&|1>Wd4+Ac{d1t&;t=mCbL<$%5o?1LFcU|QS^E8%!HJWVU6wcmFkq1A0lK(*6qm0ZEfic`rzfha3xo>%2w zm7J!I7H_5Zs*}+}W`4n*&RAD826y!g)9Okd z=xn%UIkez$CRLmOa7(X)4%5s(S36M-qI_1T(Tf!E%*yM)*brTn7s#p)`8otU>%urN z8zJP+pY#mbeW4ubq|nUVWO(Hx=~+4D@UA*$aW78NzOt1V+`~f#d*BFO_*Sp#E8F?N zC7g7Xhwn^hfX*Nbk&s-Tu= zq(!$*TmYb57{qgl?ay8h;i4xO3zSIV3+mvto!Sok$)CmwFkrx+&Z96bHwWR}-63s% zTxN90{~2yk@ko(A*?7wHj9@yb^|MMjHAZyOa}WWa!?(TjMyf_tDT zE^AkKM$Byg_7?r%X?bfJl;;|hYrkq`^yo^ho$tsFUM738l0NdfVx1rz zC&mbt8)lYkd8s{0+k6)EJi~9dU&=>TC(x`1 z!AG5R;=lrPMcece)3j$jP;ppi`w%0Sba+e0;Sr2_ZAXm%T0to)fPD12UMv2-HRet}i;*=F&9BgUl z_1|raECb2{Sz|-MIheBi)q%WwP2SXz)<5k`ecZ*ieRq?boxTuQWs;As@F5p^^#DQZ zmpdwOk_d1;0kGu>& zW|4pM5$DqsDtN4C*pYb5A24OIK2qoO>52D?4xP-C5B-L|#=I9UaKxRiK{0%#0rbR^ zy*yg~q@6=(@rl$R+;i)*F!F0aS-JX0WLb1~V9unywr<^*FRupkjjj^GAMuICc!Pr{ z>zk{pQZZH>2K8f|nC;ibX+xvu=*39F;Omp^*P0kv5!xa)k2b4b6>`L1+S3IZ9^sU0 zWteiZPPGn{ck^5R`u^(1_Qc|_d@Q${d!1y$pGih1TLzE(PdQ3^_?i6d6CIXXKS3_{ zXdprW-y&5{M`gnUK1bgJzm!dNUOSQgd|o!?Ejbt3kX5iy?k*wQ1&Y*PZF|GK&jET^p-DtxsYABZY8Fc?NG6T7(FBbblNi+}j?j zch7T@ucccBz>xvH&cvXy?RfRjFQYMUb<=+I31^<&EbsA_Z^3~-%&-D@wv{G#y=wG;U<%*xL*#5?E{Kod% zzx~_!%FL--Sh9W9jv&Ub!?TKP?Fc*g$F@&t$Syzs{MF}l0M?gqMT# zNjSr*#6F~D&^zc529MWqNWyzh-2R}kgA=fGqvLCR^I}KP`X{Lj_QfSlo^|MPNWpKU zu5-^9&cy*{8$j2geLWxn4RCC({fY3%-@0Dm)1Z(Zn(bJ4A4gB-L%dEX2#k%6l05iqew{h@(YGB>Tj&g&)K}Ol z?8;v~$*4X51XWeOw!8;Cv=k(r(dZP;ZCH`>az;qX&#D6*&Ga$U8#+t-Vm|NeR&llS zErm7)Gb^hs;wW!YwJ^8tb6hdi( zDKX=a*?KNcd9;2G?IlO>Sr5b~esKzGUS_}2@i&jZW16N*C!EFi^6X?3xWw^~|L{+I z0>tG)|-3@?**c+Hbf7BcZ+dhEB& zE$J6FuVd@~D>(dbY{6@6>gX!H=vUeK847RJw#Fy zS5BBLRku8mYo8Wn3s?GO(!W#w@nd8&-Jdwtb#G(xp`6BRqm|b_Q{@?dr7EPAn&Yu5 z5b}?8+k1mJ%%@(w=RZNe==loWIUuc;hrZaIN0jqg$Tdwn{mNIK+Wd>cgK(q)2|St5H_NZ^)`f30V2YbQ!Mk zaM1%DVF0w%+OT~f>vTnq+#M?nVy=~??T`MmA?gKBWt#Z0PkEVqvK0kMl)%BPk8#;C zF}`!hGdNCJ{m&Ty>;T9o(;t2G(KB~^_zJ)iPdwq^|MVNa;Tz80|Ni&y{H!{kQ5Tg= z_&X0Tg9gqg0A2fH7#d zBhxWIaYoEROaQGsR#vW^46w3~LouoKz^j$9&cudbo#cs+weI`Je8TDQbzV9ugHFJ> zX$ZW62T&YH=!S(fid5;+BwoHmtt0WDt1;3r=m2SIlAehCDGg~m8#~U!XPK}$7(PIm zM#5??N_n+`9v+p$70l4%zGO=~tIRlKJ01#Aw^zN%nnT6eth8hecOC2st@Fg6E*+?0 z>8RV|!P3OZKWTEAM%%vB8P3?r2Sbn%C%nH5(zzP%PY~s6vfJR@HttM%bzmNG?{@4A zphMNNtE{TWl>lWmLpwph7$*)J13-=UpJ>vJYs5@x{_gsA(~f907}EFTedHAzhgF?5Ad{+!!+A5cJNWV z%RoEl%OSfH6AYwwob><^Q7e7yCuF4@nMxH8@$4LuU(Bky&ex_O*c;Zc1TS#&R^t4D$vMuWvfz2 z_fwJ#?BUP)nP7E}zWbPT7%dHX=&HE%kSUd48a^9{4NW_EDl}sTP>a4e%9F6+Z^`Q9 zR0g&1sm_Y7_N46o?6{0R)KPRyym;a#AR?U%;+9RD*4J><2mDbEWQ`o+G#wc!W_L_A z-t#F>sjD8Y>2`U8@=04+z4DBmx=oqSFM!5@G$&$j{^w(lVKewOY@?ld1X6bN=D^kt zqjfHI2>T-?_?#4A_e{#p*M%k6|w#5ylyvD@ou{)Z~3>ehG~251nFO`9TzmftUL5APnxT^hV>$ z7lf|-l&APz;?zlbl2$_Ero2N}7NK#R$Mo*K(wPSXdYYw`%hN7>&y$%hKZjwZwQ~6W|Ms(= z{p|m=Qaf(2R#-9h7Y4vG`^c?$0+7Ck&VXm@eS;3tj=gzWfvsP5Qgtdi1Oq&$(gxRh z_TqC;k)C@I`y<{)*4#RF<8%x@|= zQ<<8N9sA(WN!t=aJ!D!Wr&z#j* z5bQx*b_ya6_{HOIU$*Gvz_*Ph^@xsdH$U2Gvhz}YoNOTkxp~wOZ7MuZ^q~`=&4{bA z)i&%Hc!--Qk{15Ullsc}1GN*g$ydr+?CDf+4JmMI+vW)$0uX$+9BBfi+%h=n)s_0H zOv0PS>nEx`1NZP`uILdR=s&y%&V1^2)w$3%&Ah2g+BNmUi@wdYRmY+O>G?b~TE6u+ z*&zf0(HW#=t<9jwv#jHTr5Riak&z0CRdF76rNkupXXC}$~N-3a(@SDZta)XsSDzg zS$|nQ!!Ff>>Ar51_oN+|%MxiX-nbgr$bk&k8K6J)l_&FBfQ5GVJ-)O18uD8Qy816Z zePd3?k8!F?d=T!#ZSh(0WKix#ZGE%4b+XY_rIQ=_k+Zzg;K}~lhyUz2Ru9^f+^r`r z7I-TG`sAO7^!W+Gs~n)H4kEh+ip;eKN`mqGbYL^7MwvR1p)R!@Ut_rTB4-uY=|-L# z$fhXbppsLj=$^wBRg`6v-2uS%`~!Hj-kFFw`tHAV&a%^vWmle#e*l-ybu}$Uwcyml zJR`pf06sO*+t9O}G?-T%NzYJ!Tz!eh^l%qAv@1`Bpal*z(L3?rFk}20Vkaa&xXY8N z`5)a*K6&jbd^*_a12}-`d%DmMElDm>7Oy`0RgA?@4Od!aFgGQC5R_ur9vV6**k^J6|?FHUS0-cEqJ^0iQ=^x62ENcI@*PVn{Gqnu= z9{QNYN!0*AIrR(LU3?dG)Um2)w;SG`Vs3@Cr9OK*UNr?DORj9v#29Y?D4TT>>a6kb^Uoc-5+RR~-Vtjg0D3zk;N zmiGaz?F+^Ma^+o;5$EKD_B@c@Xdjuz;J%ZvDfh*j`iE(&OL$lI3F=_+8yi-(72;Oy zey#q(mTmlBU;@|zKDAxr>MH?$6$h(|Y3}$k&hGWEfBl(XO#7B^`Ig;%_uaSU5J*4& z7or}h?im0>Zd#iSa&6sHLJ%x#Dn1)iKopN+6ZBH8z#p%C7^Q3O}89 z8-6f3LI&q)R%LNG+^(Gm;L;(>llbFAgy-Id*KL}{#o6KmoRJOv#Mz+NN$On0Buh>f zEU&QR{qXGxIGpt#m!X_?QkzG)r8}K>(bSRY7!A^Q)vcXr93yf@S2U)|v4=COj3bE7 zI4tqBPdARBW82FFcx1=z*l^o`n$b?CxTGUparkUU233U&`6RZdX+9HD7Y0B@QD-9lUx+Rf@oJ5Pu1}XUD(c%j?>Z@B0#i^X~Ir7L)N@~w{ z`8VDGzJ*0=Ac&MS%gbBShgXxEPd)^!9bSe@!3Y5>XTgp;*h_>*!h{xr2Leg*TVU1$As?Mnpl|l z@Rkmgc!4WY$^=ossf`OO?-NE}?JQJR#${4%0S!F8uJE?_wf-+$UXj#BE7|`A^0FFR$zp=pu9`}5RuXQl^)L(49Iy3EX9As%rFR*m( zGQhO1uek6+mk%^7GNUzlC(WQu8j?u7kCsy=IjmCPvtw#iRAS?;gW^=thq@U5fE?O` zb^y<@L*emF{L-;f7Vy|%^;-C`Rm)!^aO964$y53EybgV<+efcm z;}m;Vqc2_LGkxyB;GZksci;00CVY7%0N4@)foiNO(^+#xTp68Ul1C>L?sohC(z$fq zP2q}v$`H64&po%f=HZYGdT(B5p#AjIoSyw9J~4O)uN<)L-cJpZ&%w9)vP_&5I%P+Z zI=2Ww2CuL}=dgiz{j3W~tSV-U_Z?0!xq9E71Pid2W&7${bjs8Z+iMARHjN>I<1p+adB0(;sb@g$~y2;ozJtF&DZ`;c^UafCZDH%j?T5ET10ELih^44eTj(G~}jw$Q70ucCPT9a+x#o_KmY(quHuj1dp)rkb*sl(uu$DklW z8;soOmsiM4z_sYNOa7Nl)0KuD>TLuw=QG?*jNDx`skqtd@w>HX`GEj zp6VeHfv@c}|A9}L>67{q4gYPU^n-?^$Ib+UfID59mUdY>%Xv@+fl=?NzaSH5{15o7 zd)^Ba26N})Re6;+^BQ`d&Em-j%B}ipe>Jd;PoC&Zp|xH93M*}Wpt@4WKI_XV8$eW~ zW#PhNcQI%m#3V_431PN;R4%+T;D`}F8(&ZpOWDZ1aQtAg<-z%8TPCNSmDl(j_@8)w z6EtqJBYNwnaozsUR(}^wPrlKFz8tN z+u#276AXCA0f1Y!uVhuN~N#aZ-a-l6%NPZ3GLh+IX>aQRey3Q?mC7J_;m<4r10*&KSOvJXR5=paa@kT zbUVEs#v{D=N(b5t$_6g@bfm^{;W-@`-_h1D=m^^o>a5D&fxg+~Ll?y_d2mf;G!kCy z4Ep|>LFeGXTk0h+#0{>HM+r81Gw_`}Ix2&(Ym$W9gP^)npG#I|pwIuwCtVvfufqAy zU_;PyZ2Y8~=Dj}~$Z3dqj1C*u^xA-(KA##JpU`-56vhTn`3&fWV%u}0ymvj;C{;5wCVN<5KHoKkF%t<-a|rPIKwuX-F?khit#A$%yY{HQ~(2I^P%@V<6y zT=ivVweZBLM_{Z+LnGgFHzUqs>Q`lqM$>sRRr`{sLp_KzCY29ZvGXL1vJZ`vnRJPl zCJD(idR=;QFhr6arR$r&`yZd-lX)*hANoM~5AWjPUOoFAdubWu$wTVyV&H#?_y3K* zbO$>C7>wt&kyRfoW`CJbrL!vTHL(}`7x|Q+bvQw@fv4Cibwb{6IPmA62OCCzteCqq ziuWzqf$)4@6L^M|_otW?a56#JGFgBh-LHs~KZkcgBpW~Ar{y!{$}{lF>x!8x@;P~4 zi&K9DeG*UM#k@qM+_~XaoycY3<=H`c^=rA?Uf>78edp4T`Hi>17@hbDLuJ$7`#MAN zp$FygJPz|)hRWzK@A9fI>?CCyUYLyGb5nP9>nR+CRSg}Ia>%ny_>v*d#x==D^=^%h)?$^w5Bx6qm{9`fYZeAuHY$ zuh-)|i$7i!Dj$?bc(zjMOIY}QPWwuk8-|{8X9rCE zN)(X%OF!k|fOGJROS$%Rz^PAA*X{fGc_*7Pr z<=NjJAeMDVn=%;w2JUbTZp3PRT&T)FWiYsj57NOW`~>r)hRJ8q!CrMTFkVw0UQ_R+ z*EaPS*T7?MXd!Z?-EvYpdWfC149XjJw`@o}Oy+i*Ka4mLn7%Kp>d(!;FY84}9Om=N z!QE9d{xTCS$ZrT;B@2wsG=aJ0o6oodz#Y!O_*!(*jAIe>gvC&IKJOg-yGz=!k}xc$ zZhr6we{l1uPkk!z3;#lUez{!@Ebn-`XwLH=Yv6$g9=LhmefMpAZ^d|Kw$3o{3!DRR z;tl{RQL4UabS!twig_?b44jVJ87n-kIF?SFVjL`SX4CODyU98$E2OJ^#5>+dx`aa~ z9N1YYDhJ1z?N550t`*&iZSdYzp5q`5!_XDB&RTbU2*TBQHaboW*z^Gd7G}u1Iy=P4 zyN-vjIt}d@_?~Ff3Iq3a2Fssqw+%uv?KMdn!uwzCnmT;$c@2LyD9O72lS8J;yVI-9 zxK9;Vou2seBW+~k8orHJ_crvRZ^wYW5lbgt)t^6|c{|1clFvqN>6Z9?V_sTu#)7Gr zBVmttAXP--kd0aid}OdfihTJqEss8|FgzVUyUN&(m3b<&=_C8Vc2$Lj*+z;6d|=fL z1G&9kly4gH@CW_aER9GQ24Oo${|kEHUb>NkkPe;n9ZHi(cdrPyI^K~qz)NOp4K$K{ z|3?|ibLsY7>wQ@S4lP2po_`sxHJO-U;wT zwyt^u5seXs8jMrFdw(~AspJ-AQ*>qLPky;lYb zY}uDv+h4qP6@Ky4o)v)o#g@Q(jhz9?sh!+lTdg|1z8O$SSOY6jpQ8#A@GqTZC%9~q-lcLdzafqeIH ze!*i|bBq~ws3O2r{H?Xp0P4GEk*z`)Gx-?BY zmnZ$T13-iErq{QnoeMwXp8{vuSth{dD+1=RV*rZSA`=ASQjWkZeQ2+81T~YB?lroi z+J^=(_J0iIowgv){?U#N;&z~9-pWvZOl$r3>%hnc8spr#l6pZsw2nb017i6$zxcSu zXIM{p3?B2E4ln3Iy_AR1htUxnxP>FQ#Wi`!;Vtor5?Ad4WYTJ={$VnF$?i%BUh8`n zXcS02l8P>36W$-<2A^diTz|@7uutUu_)6pUX~0&#>La#G1a$(@w2_u)cixRmM>HY} z^=Q?xEL4DV%1mD1K#~cgFA(S8YFE>N@oXorN+nIwe7&LiHIKn$`3{&7iEditGmhZ> zOpN(#c6577P}jrb__Luy_C01fGG3b14SgP-WAn5rhJimOklk)WH2vi&LEkny_9|P} z``j!=Sr_z|kR(Y648#ZNa%EyA{f$hpka`oCE*!%6(PElBn@4<8Z}vPceW<5PoN+Tc zO&1QAQ@P{{7 zu3Xu$3*cY~dq&Q0Zbt)0y|LRtbDmcX#O|puguLs|M8JmM$$j_T=c$&vH@@+Wry96$ z&UpD*IcB<2$(R}Q41g^&Vkdv}NALT>+1amA_kg4l9zt3Jx*W914I#bKw>|>Hbl=)P0=;G-Pi&+U7T}Kb@%1;e`x1 z5cmA(4V@VmRT|jbcuxn%hE+!-KeJ7jl!C~D`6Vb5Uh-I4s485-Q}i-CjBLUR;BEnF zD4RM_bWzt8S1&$?SFX})-|5f*id*8&UUM%vS1@pw&U9h~k*Inv_R+7apaR324mzI? z6ix0IEYB(ZAmEQ(7bQH_v3XKPcE0G4rE`BoGaXjQ?oilkd|3Md~m1i3^ zc+9gfYx^H4h|gci!8bCSZeXfo$IwObmCXF1ll(Mvo<$IyrsJ3_C}y#hMkk%A!vIVE zEFft@v^Hkr*G@$a0^&q!%h!XG##To^$|tXVJ*AD9R6T$y1NL-Ag{aKtA6=Ga)71GY z=lvjLO;#W(7OM`_m;cmNFd{WKc^{JJ(GfSauatf4?$BrolJWqLgD>Gn9`T81#mN-6 zQZ^->)k#aenu(O`fuJDm?AsZl%L_aK4DcK_qgV9g4i4#$&0AIm-Hde9DZ*1W%Z{0x zQ}1L+u(6kJSTZK%R=aPS7lqg zP|{X}_h-Dc2G`{ES@uOYD0!tQ1vq@Ftf!uOcJtU{Uj&DPeIeC->zZnGvP`e+0g=4M zo&l*ym}JeQkAu$39AtMf@0|A)BES-cC+oI0d5zQYEeEC#v4c)pq)rPBjeG`>LA?We z2mjF_N!Q8i09ak#0WEzeO3TUA+OCIo<_X>dCegu|;i_$^Y} zU{b>Q)LRp46Y3O-%m*;oCR(zqvcd=D7P(KO_vyZN&XeDc+yuc<*e@0#zmK_Y+CQ&KdUVv zC4MIyv<>_R0;x*^Jf`1*Z$50_H{L`8c0u0&PYvzk0cLe&JJ@=oz3C%l3Y7H8yp>mf zL8a8Wi+)1*R+yFr`~Y~P#hkp!j}F?;3%@|548ynhl)XDHRC@>I>dyN`FHF$rR(SMCy1HmN7RTTbor&T!XhZTfv{0lCY|^!@i7%{^uYK*(JmCnP z+HVk@u=ZCSP@i&0qJvuPUG$`upoj?KmNp4nCx>wdt7ZU+Zz6!MlgqZHwQptXJ1I^+ z8tR+ty%ymb4VQ@Ejwwfl{sF|g2JQO# z_^-en>yUTnDoprmKRvR7Ou1X0+B@Ybzvxiixk#kR@oL%^=%<|lyQBR&VNvviR{~Dm z1$`W#xpT`uJEeDi0`QSX9y#G_YCAry?je9Wu5f;w=luSw*TDG%z*n!kf0onAO=J$L z_^$8zuFa4A*pE4bwPS0G@jCMDlTSXmdDENTa5KG)mHQr5^MNR`^tU5S9;lwSx?RXoDV}bVTCkr)&lXISl)OFESmr zjT!H^2dDKuofzZg1H3^97HJg^_lt+%#ECip;ywdYI5ygZ_*+3iY2pIBt zHk98+1^q2LNet(0RJ9FY?2Ll8lR(1SVSsLAm%hKTo8%e3kzxi@mWT8`ksg-P$;!K_ ztNiG&fd)P!cpD-gWfPXjPQ$AWXF?}H4n$#@K}2}2Ezq10M;Xycl(snhqYgaSPyI}g zo{ynh6(xOOEVso_veZV*0G{yDyvk-sK9Z#soQWfTHJrvZKK7qgV)d562Ui<#aD_oS zx#*}3u5_2pkiEJd8|vVyc=>C7%4hgSK9#rVk|$Eir#Sa*A?ZV7u1<9EhA6y))Sk#b zz&jjPjickC-!c$%Xf&I8MrUqQ=PEy5Tgt*pe@~ztQS`ftWDg(Tqk3TA7{B)oAOW}j z%3!>|4qlL1+o*aAUZB7hKC#U2C6#K*!}Dpa7nEg1ovHWU(@O{HKTiiCtRH zXFw03(9*85<(v#>r`?8s;ws1}fq2op`fFaD!{%J6);6+Z#*Saofk1)!t82Wwf0dPP z5503jVGmEoGxZPKvP0!I_^jvy|HAXUHijKvXW;L)dhJQMEO&M0M1YeI#@}%l_e=tK z=&bZknE<%Xs|{zDZ*HD@_PKu63!bc_e&xWyx4uO?jK?9(&s^QO4#Ua_jubcgvIDW@ zpukhkByrn)B%k?4?Ktla17vx?Z+3X-*VPbstXocAJpbG?T(9kYsPX=8#(?p8Z1H!s z|1vzfV?Z5UrCj`Cf-=@tYLVKHhluH~>`1q+Z2E-+>nQT5*YT@k8$`-z(&uV9#s=Zl zavxZ(3%GS=9vMKI#Sjo_`xA$8UaLawn(~Kt(~pC=3U8hRPs9bMyFZlAAS_%(R`b}l zI#1ULtJp&F46Vr{aWTu5_zd=5R@)%ry**3gpyLs*v`vd4+nhwk`YSLYSNvpfHtiN! zpl2THJMvH4CLhwu0E}|<5MI%?467Fh(`({{Ho^4rFU@?qQ{MSyaLfcaJ{H0&&N|oO zkTAUc(gC=1l?-gFdsAO->&wtd5gHj_4p z{O+pZd)4IEHdi|(qXgwPj%2Qm7wc=%Cy=*Pjq(a~VC8@MUs|}j%>Wv3ahWb{d1!ww zl#=FM!<4!5d*2C%=2P>x+D0PyBYu6Z{!sn+>`xxVWKP>h{zsY}<9mH>xmc@5gv()_vF&w}SEi=T7;+4j*#AKkwB&2P@RXfBp=pX?r} z&V;~16@7qO?VX30Lj$$Cmjlx|j%Yx`Cq%El%Q7cgE{D7E#D5QJVh2FB|F2JBLW$VY})giT#(kOcu7R4@3xAz!_lb{mY z0Wjz!mLp4=4yLjl9BSY|81y_0J+J!2d7e8_C(guuxRstX!!K9imp+rv=gz=3|D?4c zsa(bh$5ZmsK(*6F%ow})(>YuNDl;@s^Z8fU=rn@ljIKDxHpS&JV836CGRIs^+*0iU-NQ^f_`%N4f23 z_>TARZN4xFhn1)Gzl1I37OYokR^R5jHKeSF>XyOkdi3nX&e*be_ywtT*N(}0JStaU z;3u8rK(?G0D=<2=%UdG2o%Gm0yrw*2cZFZ&Bj(Wb*+Fe5SnT-e8(eAWmPzr+8`A8{ z_9K7x->Rq7x5Y#n=ut-BEJ z=H7{cSHAjHo3G_d0r&DL+OK`hYdNIw-q1c}GFKfrAcM)P`}?!^nR47mUvyP@7 zxLbw$=*_{uLmSF3wk|?~gWuX;Z5YL87sfsJ+(l~W#}(AJk;hmst6a+8iceba_jZeZ z48k2>#SM)9j-<*N0RJreG+y~8?>>FqBp-P4AHM(p;AYT1>9XRzWoKxooya4)!3~UZ zSbmm)aia&z{1B?l;0Hz@Bb>oFS4G##FERLG04&bQe(+7F0>QL7`50eAoW{{{QjJwX%%9s=PBt=6dIxV?5{a zjAtC?m~+~HOurF+QbfjyEv0uXn=Q0Sk&M+7_w|v1Uws*u#hv_xI(0?AgUtAFeCE(^ zL|^4c7So_rHUgGqS;STW{!g1=mr8);C(Io6bz_c%R^P-~W#by0#?dL0r(+QN2<`2H zgL+ESEnaA`_azoO zGA{(o_7{SHUjo=)zI@qlHv@Wd=3O0e_}#LTB+#E+zkcggIt<0GhzATM46>R`auaZYi4o0DP_^Ua z!k+;?2;83?sOWxW_Ij#HQJ93L>pae|xrgdV? z%mj4s2E^kGno<{wpZY0Z7Gyin3~%9;C3Jeub?!#AKFG@$1Rqegu{H1qvA~Z_gCBbE zQVv&vCs8?O!dqS@1hCRK3r_u~!z5RJfpe47`Z)jqKmbWZK~$oiGie8gt<~uO#VqEPd?lGSAcW5J>^9ti&X!LMmJNCAP>VNh3>M?D) z-qFAEM*6_@xadVTV3x_GBW-`kRc*10GK`*5ntG3HtL{^O)Z;6!ytezF#BL{)0D{-H zsWj7PSD53cu3?dPkjCY149OX z`J5pBlxL)wlw>jo=uPg}E0cAhe`!}Icy7PkeS>O&dgt4B)RR-T#V_xaiA1#|Uq9k*Dd<4Ow+9@<_tt6Q1d-2ItH{oR&Aj+0U zhte*~wUPQU=1TuB z?$nn$E0;Wu7q+DpzJO*CA=0Qtd095)I@#2fTSUr3^%2GVe0-N*Xw+__PS~XuG@~DAGO=KVXKlo~HY#2wY zEx2|pF+8Cz?VKoN?s0OZIH z0I0+d_K!aL=#IJ5?wMzv+4(Z{D_5@UzRBa%J_Zn=yMOMO1+0*}=?+@J#)6}s@cD`p zoz}D*d9yXEVK%ngR@^3qz);=`nm>{>??p_1Oj_h_|TrtR-mb0 zZNWCg)yXL*enJ56Gi({eLt(RedJy@Q=E1*|>M$5lfPr1=ES0B=aixKs_&0P# zg2rat%2VHQ0F^FZEWs(-!M%`W5hjl`iosFJT(_rEfBhI1oi=5dvRngG-)%v~rL&UKRg5 zO7{O@9>{*oKU}iJHMMUP7t$!K9b1=zVda6Y=uA^T5P0piS6O6ugKhh-LgiEk^~-4!P6$oj z{TCpMs_>de94;W!rSwS)c=4nZS*3-;s=$)87Yb*ACq`((+7Je1}$e= zbOY-Rfz*+0XyIGHIf1{r%MNJUSKx(_m zv%RHVgX+S&ciwXyJn3{{!1yZNe)3IhVgvsV^o6ZID*H_0gp{XA*pV$>058*)SAD=< z5hyF>*c>q12|gY9g>V0qcp3c2peWSUZJ~Bjq=XJBZANx1vSpQwnu%8T{ zWk2cY2jD4i?Bw+!)mGghk=#Cx#x4wPVckp5MH^%dV(X#{F=Q!N>QHkDBE0AFv!4@b z>Q93C5aNs~HR@bVCMcEFU# zfgXHuE9+5Qp-DNwpVP&z?Zay_l+C2f`a|y6Q($gT2Z?KG8(%vvv5v(&Bx!{&$fM&X z#{wgttonZIT3^7V||JHv5u-vzKt=Vt)VSS@2NaO;&B=-Tj^&^cKpkUAhv z$4ZG%qRZ+Ogk zCR*O{v9JkF4eFU#l4nMOeC{4BDDy$-o$I<|=}!56X9;##<9YqfE)AzJrfOwTt7{c2o{R5>sb@E4^h8 z<>2n#HaJmke_$%dW<+V5gr{5|TAf4lMgaY;V3m3FG`p+LZU?n9?10qCkyR|uEpbk5 zk>}r$p>m1mz#%e5Kktsze`1p8)$8FctUv3)yro0(JYO;=f60)+O=MIKV9;{I6~;2` z8@r_*$g}Srp2BGVf$`jdl;zO@dCYU-);n*ZpTV=ZV~@xOjyi(8;SUXAg|Uux1_w5| zV{8E_GLY|a$)+POoYv6{w1n}qUgLktfSUZMo5fq2&|&n4J*l8Y)9jJimlDFy@$hoa z*d>FH$PwUyhew#ip_dPESQ8cw56y`a5AL+_B>4EW%cpeK-rq#Z*+r}TK$V>EC zG?A|MbsMtJch44npMlmlXTsaNO1<0fc_$M}1Ai7BOiqL^c_*HU{>4idvlGE*c9rWM z%B)jmcJ(Kd1sByE)WTQ1Zl5RqQ&&#rV`pth(hpWmn4N27-Tc(NHG%W4y$cEsmg|$6 zP=A!tz+p>GyJB0)V32yixAJ%dck*4B@lL-BAvc-eCvIX(WxXdmE!f`Abr#XG&|6;a z#Q5CjKEoq+_blG>Kg8AX!)a5Mto|A}bQ$LvH)w`sGkWhoq?NvUm`1i*>|;f zc$i;5V-n1@xF#vOAg+!r#}?*07Be&eYd(~Lvqbq1TlFPljIA%1-^e8%V*#F!CYV4! z6bjK5Agk(+9qv0Upih5Qj?CYwqq4Q0`W$}@VZo9Fx_7rvu^xM@r4 zsc;mH{g2xMyn(4?FawA9kh)5sT>P~&zw}3x0#`em&jPT0zrWN6DCyfgnk@6^_^EXP z+)*D=xvJ-a51ck=b(WX0Pibwxqi1|aao`<2P$XqhNcg7I!Yb1q)|*LK>&*V8{!n-* z#(#a^h}4y1cn*X|`8H+zvd?2*0GmJbtRs`4(8w1gW_R7d3=NM_6C7bnAA6Cn6(Yl; zHss!Mt1pTOwWmi^qBkfmP&paJN=tXkj7`X3WJ9~T@0+|G%tPLmXaEi$8=-+8XgU%)+qTSTl?J-n;!@Mt zk<`IYCrMeCFgDRohn@`^TArI!Nxe8rC!H`>0TbNPfl*4pNIVT_qY@+*Ds-fWPN8Ff zIwbf&lxb7w35RkmuKej-k5|2$t$mcH9a;Ixha4w=x6mPS+Nng38H_AG7B2uTL*IoB zb9Ynb20)8DiIPS-S&Nn~c9LsQpuGr!ksTcLbF!E^QrGIP{!1@tNH4U!fk12#*<2h^VR_nTqVHrXOpQ<1?)Y3tWOzFsx1xy9WRt!-C=mhM* zq8)d6>tfg>pSWTh>vk8%3C(d@bdR&*Ys$mq0tMja0GT!spF&^nhIps0rhy48LjW8a z68YXq>kA?~q0n^3srs?9>65->NSayHqUNkq@X80`{&V1~t(6nl;xRovjEeb?9_ zVBUQ^%l@xF{+CQ@-8pde8qfXn&m9C#Hrz#U&pmxno{JDJ2>4ZjzATVI7?XNsxXCNO z^(Xq4_?UO*z3YCjgEmYgUuM*qJe{0JUOgbPc5tai8OQ@{`#x{H)vD-5ZAAwc7_4_~ zBR%=bCp9SnVRZuVpvHgw+eHuT!p?}Fy4|1m0%#BM^XLUMlv_Kw$l=0=bh}8vVmbPo zJbvgy&+H!i5AWH3=R4m?`!Qcy>j=}txBM}G#a3jh&za{>y%t`OCto_^%yspRU(r^| zXYt}7Ep@F7;Gp{G4lMtNzxtS=?QARdBbKRC+KHWo0D-Hn#=Rup*zMw>a<6h2_mMqt zZs##b%=J|7&qAo60I8Kq;Kuc5I zSnkPDBFYnsMcv9|959Y4qmOuxKJGixETyAO3a@-di}4HTwjT7A^RQ@NCU0QU|I2su zfNEZXE<;By8b?_9N4{03krO=gO~f)?nb1}rZ@mp~?d^m)u`DtVPmd;%f#z6$hFbFd z1Fe{ClQDi|zUCB9TOgzIC@aT-)ef2Tk*`d*CwRzb)uEwTu0n18Bt4vR1i9G@A=U17;VwR1y&w`6?G-YocaO6U}ViAVHPs+<=Q4%;G5l*RNJ9% z>Jm6rh%DOTC?y}g(nD#N$O8x-lRnk!kx`E$ROTku(>fCOVam&n02A4Od z#`!kcHZdT8vvW2G`7@w-2Wx_njf?ZG00ha&_1J6z3lW6Gh zFmO09@j3!Es9P?7BhwMT1f1&90nNxIZE=z!H_x{6FL}|)m3;1q5g1J1g|6QnHQ9L@ zv@EWihfYp83=>)q0TNJEXgUmdtRliXG0Q=g2{|`A$`87t!)tX&OUG>KmA2RFFnX-K zq2x)~cP|mV(m>(c}dm@Vz#mQxG~jC@ftC^Y#JFF$10q2&At) z^cn2o_F#3lE0GSy%m6EkDglk`)|pAZNSltu>(;CFk1&pC9GFN)KY^}zP6*sKS_+GX za+=7Tw=&xSWbw-U_`?ZpWceM}<+XUG&K%@a@AzHGZF+DyMnG(A9-Aneej8s+U0dh6 z12i~I2NPcM8~>M)g9r7I&Y~f({$&Og+YVAZ^VPv~ljd}iFTH~;+g?LMI^rymH{Qr8 zKlKZ5V5DI!hc1I2T6Xl&Q5{%=8^0A!n_2^K2mUZX^DgkMn@s*r3uBBR85FD_Nk?{R zC>OkwsTcDylgMNIa9ccKEU@xkDg2dJyy{hY+rVJiWe|{$Q~ZhrJIKdgu#Py6_>43B z_NPk@@sPK&p<(Z$nAiFZ5n$x)0^Ru7(V~ZLeBuI;bkq}U?~J48$?kvsuYV>6|Cl`F zQh(2EBbdi6=p6F0KIxz18GgRC9(lC4ZOF;|eQZmgyL5oxmTZ65xtr~a_xujC6RUeJ zcJiOQkTB4GPI{f>`{Q{@;MH}vd!0$KlY4*CPzUdhyG(P=#}bgs#{;}81{rwqTzz7t zF~<62i##sj0>f2k>knDjqBJsJUG*U}`kY^joW?=*H)#X;#yH7o?pELMaZ-4W-3P`3 z?dQb4lLhqPn%d$YRUsYEvHtkFHb1*|9sSUY&jiMw*4=#{u>d^PW4rVdi7ptZQ|cIc z_pmVY7|)X8HwpHoFOTgPpC;er-wGjF>zcIkBP9^gIeGE{e%XN2BU~y-eWYL<)UN3x zLh*n9NBV~(eRp%vrlcj!WheP#LkwD5S!PN;=l1`g!g}R9SF;^*9T=chpsx3t#8+-90PQL@Yb!FWGatPl`r;-ys0r{-X{8?haj;rew28i(BKHnXN9AO zjAad|JXjp#T-mip{Fmd{%WHHDEoD%ezyR;LaH7G3YSFGH{igBO96A@}3|{;QnrWxh zt~^cB9NSCB1=M_X316{)-xBb`MZU#P+{i?kxRyIUIypz5z%{QWg#rJ`&yh0W_(Bzn z&cu~PT${r#ds5RaW3St`M{O zD`qSxO=vU)KDNbXN)wtJPH`iE?q=Vm{MMPWI<7P(dtSTLKH_Jh3`60SlQycPn5liF zFs5ab@Esd$HdZ3!HE9#`r6tbf%ip|cC;ZaQ@g99dWFOcNT7R%t+P~l(n@aW|TX5iQ z-=cmoGP+>bv1IF(0%J8A)7Ee-`2sKg*hH4GIjYR7uW^AqTB|KJ6H53j|EuytpA-7V zyados0DAM&uL4Ndxe&*_UjdM=?+5tGSH80Uo!|K#FRKJ{=Hl+3J7R%t#CAuh-6gWS za^=dNT>!3F`OM1h>8GDQr=b~0CMZnf&(IY#8|6YjanfbW7MA=Fu)LwNf!<5!ZMG;P-vq&}fqO?q zdW%K_Q`RAG?|@1(yb=U$_{zS?M=-VB8eZgPW0$71=SNs!V$lJFPzDPJDYb^d+1#Kd z0DIjDN4ueRkOz5dBV`aty57t-Xg0tykX3@CK*m+A7zm$OyOg@ zasXso^3Goe3hFM+;7Lb7^ivk|gqIB0NP|Ynqg<)LGr0)FJDEbqoMrQrX^}qO)cmov zgFWRi;U_)uT>d7G+SnS8%{e+yvb-?p$k>IY19pS3R6=Dh+dylzQ_i%Xli{Vu?!W%m z|95}w+KuqjKb<_Kx}DU(I?u7oKk{+SM9o&_@j<>f{~#}}JJ0(G+&N$hPY@%Q1o-&^ zyF3Cw9V?fEZs|r{Z0lg(7<`o%<6XV#7XVIjx8G|g9@0`?{lba1Um)-fzITXx@!)-I zvvga(anes2=CJ_ela{`D&qeZ?%!_}EV`1SslWz6(O9UD~KJnwUb?v85@EJk# z-2uX)ZElUmTHv|Z2Yuzvqd&dNw)lqtM!55DX2C#75DabZ@#$NS-)TkWL9`9PtF&su(eDX zJnBCT_OsZNZS}@?J*s%+OPlA?bFr)=#tZF>Lci@ivQrQ8)V{_k+i>{nF8ZkXOBaqt zJ#2zBu}Ncx@V?kmU8Y@2lhxfwg_p0s9GL>#y64lf)MNd@Nw}}jQw#eD?|lM=-ujA2 z$is!_h6!bA4C|t(#l%9y0wC+uE2toWAxn90vVc_kl7}wfub5t#7#Kp>BkPr&F`LjPWRVupc!f!!&CQ?lb^U8ZTD^Sjk#%O zfN0m$CvYA)l<&HhjB+Fui5o;NMi>52FSbe&u<<{ABzO`8R-at;EtoNrg2{t{_|}pn z@<=M^Xp0>3@H|qWi=S+imUpnrLmZ7(d?wnlkL}(VTpi=z0r5IFD-t}yGO@4hjkTp$ zYb#~1mBn$(CXYNDPa|4oQHIJ9yP~(QBNg%Er*uqeyV`edxLIZr$Hh|HP~h8asxLMl zxPhH((bX420E%=ytuT-2a%1l2hPZwYurQ5$) zWwZ;f4sBU`z|D40S+TWAo5fb}(HoUppOyw=tlY2x09$liU^#dEUt&?&#V#X*dSu5l z6aC%0-t{g&{pY6v$v&aay>`my0nb<*IO7xPXFNKv^Bn-t)DYgGad1;3lW{k_H47}a zd}~DRV&85798{-0``XvOmTz9N2(Wwk<(Kz3wn4&oJyZ5dU4d8^v z;tE+70EV&+$)64I=-iIN#%rT$J_u=~tBD9ZspmHGHMpYHhSut2hpvsjK`)J!Alp?x zd90WilENpCtMd2I&OrQ)9_@9`M;77y8PLGyXUB+s3t-B{lj-2wDVfaf5OO-G$}nZZ zOS>!P!6(E;HsYYXf$Vj73SZd?pz!mKhdL;mWd^h!m(4=sVDktBG`5Ptt>d8=USqh` z;?kKzUl^0Y*>T9STQifdT!HWp=ZE_A+5wr{d!0N87rPnD)gr-Kx!ZXP?_>Zy0GoOu zswxwMrrN$b3G2Y4@>Cpf7xT*9aYXS)kDx&>omj-lU^2EKH)Q(kn(SXgd^G!QgbnGDO4~xs#%C@+)vfgj^{mNjyi|f%e@_Ic# zvN>IZpq*263(q55W%8$(($Sy$JmZ0`JWTU4ENKnx;OQ%r7r)FbAKIQnp^nsmAnTa z6S%~mOs;$(9!zR4eAv75K4##Z;oOa9f?=Jw(4hV<-duj*K_c5nndrdzR^qC@Cfqt|^Vpr1zut>b7iG}`+g{AV zhNE#85q-3vZC(A=HuUKJ#1l_sCx)~w8^7@w`r&hk({WU&rj8VNrNPVPYAfT{l@tBk zWWfKzcA_KCp*8$0H+elWagl5DRxxGf3Ap4rhF|zYTY3kb7H!(u;9FkUp^vB%t|&RT z-I^C0uKEg;s(FoIE*RTdB#cW^_bhthBWXe8@m6|5Mh%n~Pi}l^IqN1sVtxdx%+p5! z8XauU%IYt^qhAPb%*%oRlR#|0wQ*QzXu3ea#R0y&BQLthYxvPdQixo66v~*Ah18PT z{>m!+C>7VFPOU3>8V3{ri!Iq&=N%(}o4$^IIZ{eP+&M1V(P8jraRAyhf$(A-M}2E^ z<4bg0M`a?1pMG7Ph0WJ9TvQ33Fw_;v>q)gukjbiEDJz-w4YW!5b)n<7IPIbcx~NZS zOT$U{ajNg8y`e<>#L3@54&{M|Qg|x1ak}yxY+X9>)WndfkMaUBZaHnPeV+W(S2_Ke zT>U1}g_qaH^6+i_fzf)kZmB#kN!5F3D4+EZ+X5$z`0BDT2y2WJHs15pIA6$b|W0w;O zWh}fr{245fB!fI-lGh`j`3}Af_;eE~Qy*7pg(*=FaloHW9{YMfQyGNkKXC2DHhqcQ~|?cmJoej19nF zM?3JyC+^gXWp;4fLnId&TqJM@0rI$#d_)VgaUaHk%E5Oe1x$G?mxLrRoUEoxmu25_Z6(N2wjFiz6oe!7Za&QXJ$* zLcY7HJysptqgt+R^7d#FzID?2(U;sXpIsWjDI7^u&bi}+@AiEL_=AojKgy)xv*>-{ zl?sJj=*we%wRdGuj?#@!1tzjB`KH{#tc&>B1|5w4al$BFd8bW~eTkQ|dDn%?$)JH} z)U_UiPwtafck3CWE!%=Kws0Vokq7h^EaW>_Ru)*{-v6W|^DtGpk^M+S@?F7~~VZTr+Y@ZuU*E|Bm023$~5ZwFZC&h>5hmzcoM zju!biAA0Sz*F#I2DU%cO+|}2Y5X6|^OZa@BfIAAbwGrBw=pw_lYj5oS^(Q~s-M~)n zWH`^Ue!rAJT|FpuMb^}t3mq3?+mr2${puxe8YM`2BYtG;M3yuZu1(tDRd}kW^{OAo zH)4C50YczwR2spIU{%s?bRXns@vc%4jWZDl4Qp67LtV597b8eT06LHA;bg?=8DzcW2 zcC(!LNk-xkw59JaIsuS2K)HG&AC8s^7ev;+K{$TVSRFvv<$W=QjE20S=1 z55Ivvb!}0Y0vfo=Qy!JUy0l)5$%~8U-pPlN6K`>xJkedEp8av9)t~ER*?fTX$AH6ap>ZCDXvv;EG`RjXTg$9C#b>uOi?#q+2x)S9ZLVQhBvQkoE@NCiSu{O&?9 z_L^6}iXA|(3}FqnVq~#UKH{mvq|srnrIkGDOj_bNw$bMuXRgHysCcKk?-3Z=Yd8H$ zAN4Nzria)ux}86zf6~6B)C+lDR=n~^ofuQa(W;aK%Vm5=^{B1vLcx`dI?{uV zosz&PSIJ^qD&C=@`*AFjpEac~*#_Jas*NSkMQ{8m6MJ~(E-1V_z|(meY_poInps!hvwWC0EKBVkykK+Yb$Rcmw)*T51~vBk_a^fwBB)P zu74Y34XcOFz~BNMOPBtMMdTa@GqIh_tG6A3dbVTOs-e*$G{~b|`~+xm2~u|dk(JC0 z#wZ6Y?4TF>SBCwL$2DXbK196OAYB`RwtiyEmO~`LG@V9_RiT!=*2CD!&SL0xz?;kH zHFT9}ep82`L16YsT90s~LoP#QaKNWd4pfNH<0IN>>@d8wgS511MCwh9_=^Jx;gK|x ze{JH90O=hkCmGOzg!+|tc}B+AwRc+U%MMancXp1oz4Y`*@t{I~D4m)wb&T;H5K;4C zefjd+(g6lfHVZbg*>Sg0`8wh7O1Uf+ z!E@y>Il;+swc%r#`$@~N2tDB(>`OOWFQFs6Jj=K7hn&#FSj7X*wDfHraw)$P)6mN# z{B-xd7k`lF?S1!%b)qjjFf=)cbiyrpalA9`WYonBC)qBzT;O?iKM#10^YN`9gM&Dk z)Y~4lqcXGj3p~38peOtdx3%+)dk2BOFv(~1$DiI{A;9)iy40NnmQf$z(SwUDKv?Et zg}nSMpug-gA>YM`*Z@3DG7}Id*6w_eoD&n1i?A2D>+j_M{`>FCqK01;xc`Csc5i>@ z!@Gyy`N;0E#~$Ck;~nqJXa8IP!2{#e*(z+1go(bSZnz@NZK zBN^+j#8yIfG^or95g&BB8~#)2rZAo29a~`mUjYH9Ewsd-@?{DUW+#|q;^x3_+u7C2PW-{)~Yb_(O-Sx zr{~f%F57!o=1JQ{FOU8vx!Xs$X@|p8#SJOtSuYLQ_N6L-2^2-NRLf>;B13Ud2Y%5PcMeMFyf z0W-AiE9Hv-95y*pPi>N$dv$M*Dpt4F`cqy>5nCwqncu*|qBhZMG@(8i) zA)dN!Z6$Q7Z|ngLeZ%*_D7XJia0pN3OM8IEd}(E5>sUB4LCUtL+UcHSPyMN5FY0^A zZrqTja)&?CTRW!O8aXI;{H{EvpZw%sUS`*qUpP}w8A8G^z`_9w0ZjHmJv-re$|C_g z=03akzW2Si-2Ojvr!Rf!OQ*hIJp}LmxnmZXy1Qcp|D6-k!S`3LT+va_Sh?E!NejMj zxtjCAI^)8O>(5xR&WS%ZL~@#E4`xc7ZX>n4 zfrCtnZ1BZN1I)SC{-nDluF3S0BDYz#(;r?kIZg%xf79SC^I8(khjs!Byd<(x@d_ih z!B>8hHb62ah|bWcbZZX-PdZ+3SF8qOAXleMSq6|9To8j`XmB&FPBXX-Vut7_zlorI z)-H_|=*r8E(b?31^&mBPa&exPV z(J~F+)lo!l@h*TP&n|YvIRe|xt$f9CFg`wDthd|_+rdMA>bX(}BN>z=b9lE{%Sl(i z)JB!fye#mf%&XcaJYx$xTgj!fbDmszR>$LWo57lE0JN{axAFaQ>3N>sh%y!kP{BK! z4jikeUE6#n&U$(9p$CgYzP1|uLx;i1OxDpiy<-HBlYEvv9$>4r$-Lz|xlZq%e7%GJ z%dN*&Jo6Sf@fiP;z3N$elbn=FPx#SI1Z`-J>C!!X`iwL_B0P1OPYa26tWyBjAL9(# zZdt8Q@7_>n{zX>X5wbCMup@68disk$?P{tHHIZ5J?l-*a3(5t#Fk}#xqcBeVOseR0 z2kxa891AuZcuHLYe=l#@*PQYlySCjcbF*A%l(uy)+~Man6Jz46(n-^uBuzotJ^%a* zJa^9<^-)lt6yExD@YBJw+vLsH&v@YsGd?U%H=d^KSo78;H7r4G(B#fbT+C zqKtJ+EP|IdjZOeMK=(@oz5(Al&^EpS-(;EX)4M*Iq=B0krQ)+LPPnk*jsW3rT=$2( zz^JRd+*##h-^T!K_kLbat7$7IRk1TiX-oGK^rU%#MT+yplJ0Q0zzzc*3E&Rl!|!~@ z?p=>QiXHB=!-|2`Is;{6&-6{o%rAGi6@=u$2}UN7@Jyv7f3-&e1PyrWN8hb3)DM$S zzj7em*a@3H`tC<}Pe1i^7thHbUmM%Xw|$NLL%1wBx6a1TJ(|EvKWyx+PqeM(ZaO|7 zUFrC*JfOjOU}ZshYzn=h8F*M{=L3V^jRtfi=XGc;`Sh<$R>Xl$+h1)YZ89gXMylMA z-`MgdJ@Z9?%6f=p10#|=W&+%psy5_IuBPT|m()r4$jcvvX`|}8QtU7~PFs||@E-k5n-k7_+XFB4ObkT_ zfDiCgCC%_q-w8&kmyKsxSHRGhrnDPjS~XUewrJ{6SzK_jdvo*qvOta>d`Nj_VEp zwz2G9eDOsa$)2wPobiVLZ2#vmfGuj;7_glUCXWHQ1%|snFWWGuaoQNSpkTucMjN36 zL?e^EY&so?S#F0#8#jh9p-YFiunbOi0#5we!M5(kCDP!tl52kXx{7N6AovjNMlLaC zB~>^FfejK3CZL#SuN9oG)VCcMPB{(o>Zf=Olm?GUp8B?IlYBQjc%5!x>`)jZq4>({ zQG64!gO2n(d}=b!j!2jWH}6FIEHgT%EFj_e*kg|+P@AK?vD6S2K6TQ8gq^JeDCoLn zE`w{?IjOeeGA+KdxEhAaah#}th$%l41PP&sAT5na@`_wmIB9H@JEpRObnd9y;UbH$ z1Ec3Cv-Od|QcaV=13=`3V&H|dqg&Mh;jq)V(b<8>(2~zGGsV!4T*A+QeUMW(<`^>e;d=s|ulc1f14xWP&_>aDx z4=?llN&k2;?wMzv)*q5@negzB0|_sU<7A#b`Q(#NQdE7dr=C~F;#5xVs%gR`^M__( z$X+~JCOrp&-d*apbLG)Si^r;H^8f_+eeZi;XnSX7Y?Jz5HX(DffqpJhl|e6lOEatr5=J2Yv` zv)IG>cALBtSfoguUS!L>gF^3kAE(Fwc5w6)ZQ~@HcwoD95|c+W7Sc5q0JNuX-M`AS z{Mzwep2tTWe6!np)7Fs9Nw9Cr-~10Zc3`dV#XiX9^ZnlG_p^cOf$A(W@O}UW`F*zm zy94CCM1~OYPa%)sL%ZUUYYdRC^&V`FUZZ1h z(l0Fj!!HU$II(i+U%8sWGR@+pZA*WobsKy4ZmISYl?D~j`}xrJ17T`qlRW76 zjuVtC3r6IrfA|Wc3sCMaZJ3POTA0K{b~VM!KsVXW@E1DqpZjk1ots2BaQ%9m%zwCi=E&92#p+$k&RweX3q`RCZH?>({J zo0dO9WPHjxv@AL!q_FCyjM~Zk>RB7j%^27H^>Y`rYOmItu*Rq3&&f&?nIs-qcL&&R z>)%VS8AK>d!;i30cjT83(6O8{0uXwl`U>lB(G!eI zuUGzN$Kn}cQ`c0I{v*Qtf`|W&?9%KFCh4_Z3$uI_wEd1}_+KLL7UQ(M>x_AgJDwec z`SVL?JH{kwkA4B*@y8$Eef!(rK5?A#?6c4AKKjv*?s=j5-5mfL`wpk&l6RQuzi)DW z1pvR^pZV;+FR|byfG0XN1F%yaoW`;D9RM`WjJkbR(`}&MW#P`uDR5`3hWW*SSEiw@ zc5lly%q6hfh8;|q;72Ih8lL%y{Wiv-;WYc{@B@L zZKAF7OL=7D%te{Xdt56dDY|oE$h9&cKGx6dB-!ul`kF>74RCq5>{^`{@3uUx`&2ww*ru|0pPZ*};@Cq6E=Bt(YXVNnEZXw^5>Rbt>q zS9yHu)1U6ZQWW_)JJnYt6=o7Ge$Eh3Jbl#TXFl_p*vB>jeMs|xCcaL;2N&L!%X{dHC!99+ICfk%4LxOg|NGyccTpU}2`@ch@%Pq&q?atRa0Pz%p2yxZ zvMl)%1EAeD7oOCMO;MVar{_@H@`O`Vf7@x3dLzxTbCr-tK~`X=%{ z|HAin-+SR7!z*{Sz;be*yUbGO`X1h)ATjIQNnYL_4(|OA-p^vxWhUutyLa-u`H!4i z2fjZ=K7O*#%B|j7Ec!he#)EgZQEJ2(k{@Fk&6u% zctPI1^d;_Y=q?F;=Zw2}_r$jLFVb-l!8>oSy!r}n(tnjLn*X|c^_8E>I{M@;KjqT6 zpT#vFEwGM^b?W7vTCe^2sDrkE6ORe-^#k4wa4+@aPJ|oRe2l>oZ3Vt}8n1p%`t;0P6_w!v#xU*BExu?Vd|`DJzkJ^923Qcl*E z{31XWT9AXJNadm9Zs*CfESYHoTtruRR!^Z#1*6PHw)Dy)V;iojLL(D4C%+~=eDk|y z3;C#{{jifG6Iq*$y-pjz{?bdlFq1?etIu;Dn{mD9h0x^X5s<>9!J01*k0y`k!lBo- zd5S_0hz-`se*6yo(hn!ziiaQiNEhYW%t`b3r#k!jIIr;n+NWQMIq)-o+U&@qEaq!z z>v!EaAls|9Cy&{Rj{VfzpYOzx|H$mZ*C@tu>;LV0rEij^wp0dVph+6aX&i7;*x$ik z_7d{5v#6|%QHvk4+t2vkvX)CT@QKf&v@b9}2{;$@x^TB1ZvaI(raqkE$A;Pqd}%bL z{&;>`-D@kNZOJMlaty4;K}-FiFM1!@qIgd|^%VK#F}O2P4&e~#m|<&MZSK2|eB>kO zI+9gynHslTOtXI+8q&^!0(OaPw1E$Q_`^9jzM8BbB+0pxU3V_T?#Y=tR91Cu8^~mQ z;cLJ8MEs_YeFnF6BRzG%cc~%=5z|-ICj^~#_a;B>?tuC>0>XUcMD)-C*FHv?UA&-c zrjnFLXzO#@y|Q;G!_(y^|MScp=;WnMjLsk`XM7U0{J=Xi0& z&X-s`^UO2(3IGHCGw=M-5Dm6Y*76kq@b>HgIAQXiM*w_Q#>PP-c}|)(BHN%x8W!!1 z3)-O9iS`np5&AP=n1pK?fc6Nc1e`Wz@8AgE)F2MM6iS}y0Oba~;|`$k#~n`wqbndF z(biEJBpom&_#E1-#1dG_*O$9AH6U6fkHZ~_=$yPvuu!2Bcvo3XYgRv^$0kky<(u;0 zY7fT|z4S7-z90w;nAUt(% zdF8NkkZxD&E$?3eREa)#2@ za(RtkW0%;ivVHi&AL4nj#}|eSTE|5cw|-)YK<#u}7Y+*kkDvS5EWA0mQwHtGFN2}6 zQT%4vw01#Dbo}T?Kf+y#cZO#D(K+|YiIX3?_t1mo8gMFFoKP{6e&H8>p}PR!E8XL| zupT;Cs9dR|*t7$+pZ(dNwS$DXq-u-Nwf67#tUdS6)RYPB`7eC_7vS0EIC?rD)=bLc zi>*uv2n-<=1(d%*Vts7EI7+RZwQ{W_tSwmYC^@dD=QBgDyL7|RyEOi=o* zPwiy=9}=ca5+@5PluN^Z&ph*V-dEtYNnC#>7tBmkHpeNq%yaw&A1mI#SmpxuTvKXR z|0;JEtbCd5ddQVFL@9JYsVq5;@Ijuq7gE5sZF*(fw4N(l@nMerE1Nz&X=F7ozFuDq zl05CNCuR=p9Ic??W85=e|CzRK95*T3Bza7`P3Qq6y!B_=#Q3mrNqP`14;r%cSQ3Gh zlk20&EHp=s_G8$NyvTzcl;3M4i9OZHzRU#ugu%gA_DP ze+luik+z+4b(#rU?RKaaePUvzx=tG1Z13)>`^8`U#VNAy+C0Fqnn`}j-cQvPH0^@& z4}9PQyCZL-!|PHbce+;Z_L=gW||@XSkij_u{$g*a)xIjK$GI}tdG4}JEMPg?d%$M{n>MZl)uiK`8SQy;Gr2VtU~ z;%GiKi$TE&yD~XJNh;qpbqh1tlp6FU>>3CabTfm#m`j8vBg=E}(S$)v+bOmSwP>vo9?g$bX1)7mRtYl6Be$n zxw6Fy*Qt*I^i9*R*jV)H6DItL7IXwU`YpGr5nNx@=WU#}^Fsqj$gp*#D>dH+YQyu6 zlBH?vT$^Wx4L1d;aWW_ZFVSNKs=#_~OO~%cCl3d{2C3=LTc+v6$q%CP7TzGUCAcj4 zC|ZjI7R_Ke!AXHVccA7msVc%t$=p6?ZtW5|mpp}U z;8v~~_z10tBdZe+Uk2zT-8@E1TjxA>^w_(=y~C*CN8naBoi=#Z$=vD8U7XEgF(QjEl3~Z!RN8Z z9^1KiKpAd0a_O_(?q{2ohu0n_S+}jX{qFI{-?#h17qp%F4h{GN?<8+%_089%cPyVK zkvF62(Cp;Dela{oh8d_slSQu^S-AM}m%kjbw3k1VcZY3vV*^E(mc>@(Sd#(O-UrCjq+oBFWXMY|! z`=UX282Ekx7kMt6yC=4?jobc!jy%?ZpE7iDLcRKlLKZeGr$U_kqY!qvl^q6|G=lH@ z2J|@Zrn$HZ1UAEOkwKf%igSlkTY5+M;FE1vu{(Ih_eElD_i+H|n$nQ<2jG;;5NJQ} z5Zi`7_@NI5SKCgSa~E&@$s>FgK(D=M{=l0*zG&&h0neo_oJVWgwqVLA_~?B22;0Sz z;t5;6;+5}Qhc1K@M-xk3a1rl-D?aU>6k^Gnlnf9mFq0pX&j3j}FnwWY|RR`H@M`s7A} zRpr>A?f5WxRHn$ep68Z^*S2AgrsxHJ;mq4-^6#!0V~sMPiZ`r+CwqVPGbSFVEG~5g zstl9=tH1iI>7%8~&Oqd~KRWp7@%hx7yMX@B-}ntbpPhvT?I1U0RA%iYJ;af7_*5G8 z=;hcpbrSmnS!d3;)YxK*jiIHuj;%5V1OC`HeMHvyLL0|NlZFq+jI&{EzW|eXcf_Jh znUzKR(8(5+y!o1hWHJr})p2j(BkKmMV-ay%rmQLPkK@OVgGXQMV_>riDHsTirCD%` zZmWK%iOd0@(}fM`#22J)Dg1iPxyCf*NIgVJ;N#A zyi*neAj=8`KW>Qn@;~0Y^Sp~LsnEat%fCGFv+0bpo%o-8@rz&F-F*RIZF;Bwwk6zY zs{hXEUEv)7Jh$RcOYB()*s}}Z#ApAR`0sJ-?Nm+~+-#jMWe#xV=l~{( z3(wSTWHBE(D_DRkN$kMDdJ9y66Tl!Wj^~FJPU$&lGn8>2W#zLt1FH~@uIzAXdxP|4 zI>oR4UtisQ{r~>@&TUJRq-Ovd*<6}&0=x197M^s1&~!{jnUlOVFywkB`~oY79n{#} zybP#O#6fdA9%;0bvF=RjpuE$eGSmo+cN_**-dasqX-U^}xq5`8HWsMz;X`@BP|A}X zI6DdDyCDuoaUHl^5k@|^Uw6h()NtqvcRWKhW9m;8@?{A0V%fBy5U^91>%Xx4-TlmGKN~*Z z`qsB<7ww2IuqcI9_%!CiDPDbQ{6nR@$-tckNUed6r(llnj2sS}gq5CmVXZd@TjLkv zo6`C_27rze0_&mlMh1O=Hza|u-+h|LH=O)_>sx=5E%OferMc`Dnhvn!Yg=Ml>B$$q z@P){z;fz=M0kmV|pT73f-FJBeAQM}vFFulb#U>7R5yuGOmVN#G9FuBg_8EHl-h1!; zd10RQs=UWZyEqWkr@bSueixD5ZTopEwwlIvw=#JbMj8(2&G%7&*b#oxcTvD+-(6^R z_d%Z5$BypAxCgoP!Hc}KuXh!ZpKI?jx&UKaJ~?qBMJ(|j$9bcAx8Lt_M_(Kl4&04) zo!tT6$+EA&oEWEisH2M{Z@m6SxBPQ%y}QU^%vW~(KZ|*Rb&;1BnQD7{Ej6rd^x0ei zjxBX7z`*aMPd-VSH5JTBOpNd0OZT!E_%omW)b4FOu3-Mb{sCIZyWP`IKbc9*4}Rb~ zc8^p2Owx@Et&hlWo-*;z>(R-@kttUu+k$-kIUyMTj=0(ZlGq0I8vl|Z96spIJ?$~{ z3xiD<hNoF8Ngs1W4wmwGoLVt2(jo*hrdCdMYP*i!L*BCgs&?b9F$KO$ozOxUWwsx1nW{AE6Vg>~ zY36LT)phLvcz4zb!^Sf@pfR=q8d+8?r?00zqC0hFN}aUvSc~M8mo)efU&nwqUg2G6 zKVdSjVfXYwH@W-o4rk{)dvD^X2Y3HNlrN&4;5VrRZ=hbea^;M#sqLSA_Sw+`@`!df z-4P4uGk4P+w!k;O@eMx%xcj3&`lC~J0G#++6a8uM=ho!$oP$=%PH7Mh49@dRj4Q21 zoKx;py^lqNUv7gs1czzR<{!?T;HL?C*T&w_=t5vfCgcn(9%wr>`cq)+-JlTd8;7=b zr7W2s+Yj5Bq@3X6U`3w(A{TIyt&BZ};K~y|Wk4Cwi(?=q=&rKBBZ*}*80LZjf+Yq$ zXb|AqSsRF#E=2^S0V$XK5ng$fyB(qMhb{yAswm@G^O9ig>9PG5RT8<8s znNB+J7}*5(ytqIi^3r!b(e0H zF>9;2zG>MS2uLvX8NSdKM|zVUxbK18Q%^m)d-(0|$TQK_YwI65r~?Q4^8WIdzr166 zT6PSKe$t4KGT6!;OLUEL@Qjb+R}9>-ZJHeFbjB-=dP?`nC!fqV?W-(6TzBE8j-q{x z2U(=}rC<7`_??q9<+r9y+DBT#nU5cv0fi_X7-dzTysVCbCBzAD+-2MJ2XnWX%pCEL ze(EW{vg(FGhLdP{L3P=t12p}q^=LGqp5wFDCzDHP`0_XJyngYEU)p{4v!6i*^|o!c zZCK;-RzCiOmVRmqyBw=y^{CF4Kl$-j*|&<{Rv zndjnrr(O9bDYpauYutT*o#*?{gX;jT3Y0!zoeRt_JUoXS<=WcCWaT7A!B26GElajAU%1MjK48k+si8X7 zRb@~=QH{~7&Y-)MA&dFT4w6yBQ8Dsb*Ct`av$P8!$yP1(*vcjz*zbr_+5$lv;E>>t za4lcshDC!zcmU}Ms^|&zLG3VfrM38CgOLw@p9bppBa>MC zVqf!)_?5=8X~d?#$S$jx;b?3Txej$)mO&;l` z$$J+fusT`S#)^RDZ~v6{l7p=3IY;TK`(~%qzc@=~z|-%~G3}xCp`Pd<&5Z5Tchl9F z5dnl5dh*t1y|!Gn$|w9N#uup%`vOXWKVx^{(9Z^tKG1PjaqUZDBj)><199bJ(jNMm zu~r-D#jPi0t1l{tJ0{4__ygn}H#-0OAO7JVew}&EEp~O>V6Nk1&b|!LJ}kSCc*l(| zpvLU`yr0LKq05d;uhvjYk7`Vu9T zP>|cVg&Dw{XgE+e8Ax6D@Sg$9z-&@KPvHTibWGa-Fu^Ya6XczaOdLDQ4k(d_44+Xo zeS}WS=ZSkqj<;*GZFiD2qAg4vV9o^1notlIL6A)bO1fmPyyA6|=r#IS^?{iImjQVO zbF=e8J6Fzji0L4}H_{(EN9~}66ruK!rU{ynLK?zYZc>JSljKDv+b`*7Fe>8Ona_(8 z#ZhnNoVy!yhj!>{AL0CYZrxkf^YW}5-d*iC)~#z0{7)*b_^DxhZTts1-5Lp$FQw8C zMNL}%;JNVe1s26FKlrxYM?dy9CW;@*qK?l*kE{<|?qeTbi=#c&O&v|?O_9kw?dgCc zxbRh0FMO7fvgU&$YfZrEi91XFGXo&gS`^H=y7|b-_>!5@_wEvJd`cZmp2yq~q$ADa z51T90yuI*Z*n!c)PUfK#h$$o0YtFXlyiZh1Fm=(ph;NaG7~uW(j5Y?^Rhg7-Mr?6T;rZ&A>vgaj13p_=zzYQ z?f%L{Vv!hsDnF)+Jf48xVW*q6bA1^ZO)f0>*ur&=xwB6m){5R~54I61Cj&@GJIKxM z02M)4WmJ3Hi|3taf`S|;xANr*;K7G?>mIKIRd|2et=;HYgK9Q(|_c=OUbfFg%@l@Sl3Ts&!zLZ7@P7qqle zVlDB@m*+8f7Ds;S5?=htpq$X`o%EDTSKg&7X}NCl;ydA0+0&OqCa=#KGoUGqLMfl} zx&y&D85^l5|MV-{j7i+oHh-+6_(jg$9adWekU!#NTR1cIcpjlhnudAkZxt(?xM@7wP6>5)>&D~or^lA_5 z=Hnm#`0gX@h&2xS_^WWXol7h{x`WC#tbfSEWVt$zjVx=uC|6~Xu6$)NvQ>B1b8D?- ze08^_bM?a+xZ<&`3`_ZFYiBN?BPHO z&^_a$^S6-CcLnU9e){PhFHt|`W{)pb_Y;81P{xty?w>nhf%cepg3?_YZ?-_ans&rs z;}nPX9RR1k<MM8QACuCuTUk|DioY+<`)-S4+RP!NUZ*+2T!y z8unb9XHqVc*Zyqm%3!j=TQo4{X&bNo8L-3=UiwaIORfV2;o;0b0+p12$EfyLxlAeX zb2_$t#-hq0e_#=DqZXGbB8IN zv}Nk#qJjdemmQjQsI}B><|i4b*Mz`W2OV74>DXbeqVNYG*A5~b@YGH{f*9WNRs7QN zsP3`%Ixj`-p{>UsrY@9F*}N|9(YbbC{-bT=uio;EU(_s_Ac!xIvAcYPF~6|2qOxY7 z2(0?*zt%Oi899`vvZ;|=wViUG*_kk?KEG$c0n*`)Tjb`Ca+#_Nb)}DI0NFeT#!g-% z7x_;7&?q)Bul2U+z=9SsIR4=n9TshMQFbn6C75)C$=+scm`r_WyeofnYusp5O0nrFKtQPd5(8z zs6%uTp0W&Es4U^D4D|=k!2u{GZ7l`Ta-2~QY`>?8W#UJUUX8DF)^ znD5^E@5^9IJG}FecV;)xrTZAj!aK$cSN>2Tw&NQpX?t+eeExg~w@fv{Kf7me5V!p+ zpLhA)(ZFuW47mJigO45fvORhG)q&o5?@Rl0nT6GOEkP7@WF>Jr;X_6nlKaIi?ovS_h#Z?onAP9i_a#qQz1HC zSn}UQ_N(aOy8x(h^id}lR;S)N4_j>q!>0b+jtV2L#EQLbGp6)g#uxQNZoMotICBBy z{d{4^mw_6a!lOHFtV_%R1FFxL4{96BO~>b6+urnR+g9WOw%67@)>~!5TJBF9Pkfs^ zWz#moPq}6Kgr8cRZp5>|aYYkfm+QuKnS?aHLM z$|W6>_O)&!A#!TLkv}n?g5wwQsk^wd?OfX$e2FEY;UvY>daLc!Uz*4IDTCK8rg6G( zYA@rOwv3FNV=!ndA+lm0brNPvM{|?fx+T*0T2<9CJYD!(xK@jOoaM7%HFg==Gx;@6 zLu}c+vWc%f<)ciltMIDD@X=1zrSvRIJX|_gChc!MR4>bgn@OK|v|bo#V1MquXd6P0 z6BiIDu)vL%wAxCreqBtL>&R*0+gfjxW@o zmhG)rd^Dd><{V?I;z|o9G!?nBth&^g2rECkA={?OcB!r0J-ePHiOjYm!7T^Zu4w7z0rVpa3q9Vm49jf`Xf=Xf~WDXskrON~%x{&Fo4sc}?Mz1D{1rJoHR zN8H$j0_qESgiK#gJ;ED)sS^&^&hkZ@)6kQT>5zYWU0J4H%xhj^*T*gUW&1JURdSAL zsJ;V$g@Q94>)iX5G(Z2y<9$9lefG7lea+9PpIo_erOJtXH{CG{++6^;W2W2)rSZ68 z<$C~@!=>5AUzL>MqBt0WF| zssPU$0CHr-QGKW5+_9#&b5Pql?1p!y2^^{uRAWZ1sxyi zdB;PX$gp4>@Gk;6T9!dKbW<-I&lGR^XeT65m(Ovh z7r4dGbLrdhAGtv&w(Q_X$qYAe!c@zahg6cZttZ$*9ew-ovR!oY+-Esm@t+ifhCl}l z=8x||0MQHUU{%{%=MFMOk%zF_zA7P4aE^T<;-*urOu1`sHD@9Jc#E5|I1$QDfegkr z&5#3L?Xx1fu+lSmzEV1VWfIet!g&g%t4+f+rIk@Q7vlu7T}g9%@Mx@}Q39vD+xrqY zcW}~A-_;-GJ^aTOUe`vxgsIz|m%MUa0}kYYp?7CZQ~z-hua)s&j!kFblv(=TpAb97 zok8ld*~m4pH^CE^NCK@)3RYl~H&n9F<$3Kq@=ySM+6_9Hv|D7*w~(>E3|$J=8`)Ft z;Opo`e@KcYm+SyYBz64#mtNkz`282F&x!|5w3O6=rqA2!$9eG{lg_J5a-C4S#nm!j z{^yo^?P0BoH?36J#J$SI+DSY!tJ)D&l->61q~AO8J_g{##?K`Q>!JWa(J#;GpE8NO z=N#X;zb`&@>Arijeb<4i6LtGg4 z5QB5?*j~!r-*fCL@CAt1uV3Ar@@YTg(mWF2I|<}*!xt2?Q1QB-C*;~>-EQZYSUY&9 zJI}f6E5!yq8=)9&OIR(|q7B=cM5@sNLvV{Y2zY6pYUey_3!ll&fpVOCP~=pnD`nVxtZqo&eJy-1N3X_#hB^${fpKdfKq^)IP_)r5+}EtAn@F@?L^PTmL-2b^_b>obOLP!8iSXui?p< zZA;b%eg|E_j1iauWa>@XY97xwzX&R@DkTnXXl3tqKl;&+UUr8e^O&=>qcUGObIxOZ zP_O6c>u&HEXij`2#ECyUr1!i-0JaI{n}~N$?u-TML3f7MT`ILeTDEVk z)N#N0&2PGuW%uoGfBS^<6Q2FIt@_D}J=^{FtdQBdvj|Z1+y1i3dh<0};>w($2f}Ln z1_sW8>yW|wqw#-y|y9yZyOi_D_P4Xi5oZ@J(<1h92nzm0!>$|CkR+(@Tq*^ zE3eI~8bF7C=0ph+N;>Jl-#}IxmCNqQPGab)a%Ak>Dg?rN*+SW+(S+Vyn+!-@!OdIP zT5K1Btm=i<{5uSu7C>wvy4S#F;;_ym)7Z+eSKGBS6UH*>n<(3qOjI=taN6FS&qStinTaEEiteWpcJU&B%g0 zmUU=Txm(W}?5$22n$8qMn;HS$_T-)Hsk2QU?@TT@bqTDzQFL@3{lXtu%CaCZgADUQ zkxFnP4|$f`RKy=Ug|AAIA`5UHm3R1g?y$2y9nivZsxO;_mA*;(`hmyDRMRe97;d7s zW&TW&&&q;SJW2;ARrkUS?Z~)rgt0UORwjY^t>;wKqM7GS>G&%n1@IKB^2X4;gjeO6 zdZ>I3jSsYhudJ0%osS1V!uo>;U@l%VC?Q3C@;o-W14?Yp!S9jOQJh+X$3kEGm9&qRCG336X!@ajb9#?9+0 z6*zYjIGMSAtuLm`wqxw&Gy3;Ga6bzUm$KvGyk7u7E*}x_Jph%>ZR_j?(hvCg2-V2u zYVez^(fsmMB1M5$H|V?9o>vC!t_VM zDziK>EMC>P2+#&=yqblFVkt}<_BNTYQ~Ic}MQzYJjBLt9a=atI$b)a1>%yRQK}{y! z38&p78!)pNV7`es4X*|q+X7r#&`1Oi^)^oOKe||4o%DVEMf#KEBR%uxXC68b{xYf7 z(FdGk>-ca?9i>`?6Lf4nNYYQzo`)acp&Q4bj44m$DRt(Jm^_& zUtv<8!$T5QS?k378OvD5i_fB687mr;7cJ>kcF!0`F$1<*<8lC}4mnl@WvI>7(KcxE zT+`3U%2?{+g>(x6P;?YnjHE0GbobN2k0TdqN;5tNsCvbw%Efi9um~aO*j1|4rET47 zll@d;27aP%89$2+CF(*P^{P%Czldl4L59jCjQQHb*bv`y0TB_MOGwbZJMwZKc!`mk zSJu$r5?a`aInZ+y$1Aw8dBQG$Gj4K5MBnny;~hunzVrEf zzw6n*U%6p!C|^;l>i6!w*Lu$DSWVSJSH@*gn~2@4f1eb-yQ9Ce_U||7pam0<9 zW+xex57Pu;^_V1&B}NAa$RRz`z>hp+h1Ue!+9bjeWP`Hmt#)=|H?$lOM8AO9@zes^ zW3i*89g=(mL$pP8FVoPImg+efik+Y@u>PptlQ*)8r#!L9#<0(rf)+l5mu2sAj=ubX zTG)Bm~sSmlI7|f9mt%c<=PNoHh&y>G`KR_A(F_BOAOpFy{{Ra_U5(8h z7)m$tS+){862dr(S2OughiNm)QoUB_vVKLzW>LL^S#$L5_yjoW-@Iv8y{>)s6Q8k< zup=Aj$f|$&#gp38BMe*|rGz8^>97ClZ{p0Y6DHv#VU;C1r__355rs*xF9LMyy-N7c zJ9@sHu`MF#fzwB`=n9VIT|m%>_I~E}X62WklLvQe=rDOu;`IrKgHl?G+> zj%#d&Y~q?qPy5Mk#oUza|L9j?!(ZW;OaL6%Gj?m`Jw)obg_KBM{N!`0A9oR!7Y~!R z9cY_<_OaCR!3(Usj2rq%GjdcXe^AfQYN@UF@mX+z9h(TJ|M|0Rm|`dBip$QasG0s^ z#UsigxfWEI>`A{jH@b)tBK%PRnLik?$fvSmSejU-_c+svY4fQ&{AW?98(rOUqwlQeM2eWB&3SlY3#^PH@8ck?&t&2f)!6zVL-e z%N*#)PowL90r)R(`Hl=OYKd%K?*2?qT%92q|IYx-(-0OzVX?wX z`8g;PC%;8k+SZSkj$C)mL` zcI;Vupo98To`s7DGyJWb170cfPX;-(k=P8m*oC$GuOEG!dbeKDYRRY1cq)AGman;G z-fh}`1>^y~;NVLdeTLl0_aVRBVGTbf#^}=a#0~)N%sX@rf9l)?1-H^a!)HY=KX--g z`P^COclFBEz5{@_WGl!EyhYo|cV4QATzB&rz+LPH@J^H4^l|D;vahnu-^sR%3D5gA z3uQoG&y^wXA^<1VL>;@h^f=q7yQ=bmvXf-o0kjtPDwU5B$M8=9h&C_~xIs?tkhwz$TB|i&_fUJ z9)9?t*c*zsJ9I)gAG1{ZHUU6YuhB} z5s>21K^$T%<_&F1uy$k^n|a(%w5LsM;An4q8QybV0rty~o>kX8KBO=hyHHNRxyDAz zPtq&)TsxZYPabJ&@{6~KkI2ZYK0YcX9O6c1WibuDi&JyQxdrtf{&Jc4$DwlQv-Uky zn!zgcZ38WDZ14rdE?Am>sJD_=*D5%+Q7zkp{30i3sU5RCmlwatgRU;h#=k7{pIUPFJ$VT1!;Kt&=`f|-`Tu@GveY?1^0Zgl(IJJ3Y zuX}+LpRiuAVql{dbljd!O-df3wUhQSZb{8-X~9QTmadh-vLdY`hw=@YnYC+(m+vNL z>M|f{KiWoI>3K{afR0J9)6e9JZ5DiSbv0v#^_@CjK4z&l3Pt|HH{%3#^9NmwoI1!Z z0n5dSKLRhJwpNxVaXOZ@a;6^U2#oa+;6uD*#K#sH4%)zL0IpL2L#gi>~a0@SDH+n@{=(0R7_`H#p7HoPO2l^uY%o1pMr1K8qW{`li(%%M(izW`9nygaFq>E)sQPnl|*-)C6(hUL*8|M4H^dbYl})rCRh zIakJLWM{k+U~F~dv!CRh^3n{q#~ia@@U*R@4Z00*fN7$h+VK3Pahm0iSYv~xu${8a z_#kMk&a6Sf&dap8^xRHvONW8J!C2S{5PRNqv@kXxDzHJ#pl51)X(!Pw?$T+53ch^? zf*XJ;Ycx(z;u$beR$9`O_u`*?bvBtNFEG++aGlBI$RTah+&Po?VOlhYc8=QF{0z^44Bf@*w)2wO7KLJ518?9^F*wVH=8es{s~DIale%uVMsNLR znKAm(ky!VL$}qCN5Hka#jFD+!nD4K0wgXi5jNTCvU&(fQAi`p=3%XHmJ(_o@PwjwQ z+I1U?rvvV!9bmm6aL6+;n$;bjT@jT!BjdJbd1kdETwH+Al z9&2OrYA1E#-z*vclYCM04u^%W+A9Il3n#goeRMJMUDW#g=f9Y3_O>er^CpQpDNntj z-*x4noqH{wlW^O;Z_)O7e4qcH34aLiM>rR)e0x5Kp?S{9KYTKYPt|my{vwlh-=?46 zdQ`wS^81Xx_SN17GGF$0_no|VfEUW;5dml^hvk0KPx*X%yF+Wog+9ZbcXFWDoh(=w zOZ*I>pX_rX;=;wgFwxotBaZ>x2~U#~`Aqt-k&^)H_yV6B%!@|x2ftR};|ci!01Fn^ zg@L};^2v?}ZJ_h4)I~(=mO7>^|8kxh*J#bhHmwQ&S{rSr*0Xp0zx7-HJ05Z9mkum7 zX@l*b=b$#)TdH51BeeXb>+dkd!!7eW^Nn*9hpvnxL$CE=f0o5g43L>|Em6poKR;>7 z%b(ZQ)qDoix{|1Q{)V1#lWaqi?=k*IJ(xUqL4gGwP;8IVDc`g~{k<{-Ui^uxhpL-j z+U+wVFFf>{NtLPX)V$Hj7(0_l)u~E*8wqDxZ5SJ2i{R8YmSG@#3fY$4;$#QV!qrOn z-YiaR6VmKlL@?uqZ96i;u67|FXX3=x%B3F!WJhX!=yA#$HWUeGJq&+kh{r6sYNPh2 zQYks=6$1LZ?ZbsW+ls&8CLA2q&smkIk&(aU&2?m3@+rS?+BK-i==JizmL*P^1C1D6 z|2DR$L;R8nrgrqjqP~!C`MPwLj?281wNOi{|Hx>8vBW%eGr=ng$VWQ~Tf0!UuE_(2 zMFOtF!+h9VE-Opv&$z5VHD4Xow*7)6R$Z)iSowu5Ji4KG>rgwkT-v6Q&vKKok~Yzs zBElfQer4YtaTlED&~kFV_#zT~M*q}JWRPl;=Fcuk0}Sl6(GtUYR`nGF$)&`)Rz83F zwX*BWBZuS7)We!|BW1727j|%!CG`Pf`K@>a-W~XWaMpwJ32QP>==rTVM9So2es@<` z723LZ_N_xNG!_P#^fmZ8TJuul0D;KzRGhknSGAG(XSD7NY~ zSZWzT!&s9bG!5QP+(85}oPbAT1;B7fw)6yp7UXy5X zkT^f<*1@tv3hm&pNt)IXIw_czW&n}b7gz#AlktO`RNE94643*T8uw3@r=Fmvoc`otzQ;q~ zoBX9N@~c(ts$V;ucUOQkMsB50P-Q{`j^#&r9_>WJ^;L0GrBd)oI#)fEFXt6_s;}$3X%LhN$c8jnO$ToYeFT8c7 z4|Gt?Dd!G~FY;16C!qJ+UfHc*ufdPIbq?T z9UL5==Z*f)KKo2)srT2u`Zez4^Oc!nUSP-_eRps9X8L>Yxo>xY=l`|Y3-mn~z`t;j z7Xe~h?JLo2;fMYO+PpC=lYe#rOuN^zsSDZ@tdd@Mfn5S#STE${PAYBKMS!GaE@10V zznud0;9Q%w{n@h^XV356^5~oV?B7&(;YxA)YoYzbBz=uMZGZhVqDd1=2DTr82ZmWQJbZA?L){F{R_^_yY@3`9v=^!)~#w_>M!;5oS?J3bmEI zDF4{_5#4IwP&c|{iIf=GtfcIYPfB;Y2%6~>k)I)AKM z0+w(FXBw&jif*R)3GQ~#YcLNyD5!8dna#gUImWrzr+*}RaqOgy;oGx(%4QkJ}3 z)!Zh-Xyjgp(zR^aMB(?XopT`U`*JtCEcZCZ1@mO>e@h63&@h-8s1jQe8RcPgG-2r( z2u8QX#(Zcw0MJH}(@9Tdm8d)fSY4L^S-TR&GBK5L?r^yRv88s*8?1t&5mwhyF|BuX z8Esh*-3^9LzO;q<2~^!UhpxIQP2P%Lxk_m93_Li(oY29WV%J44zJ$!CP=;uEEq}6( zL5^^N3fo-k59(~0_EJ7;X<+m0FL{-r$l;?7`ch~snK*VD{VuvxvTJ~H^%Jfslfn2v zapc=Ui?XmNfaoj)@EOQfjTUOME*$jvCfplz(ye}ZSKmU-U+YrdZENPv9Yz^&8BIOY za<(Ju(Ugu|y`odH)L$RVh4Pxj%{lpgW1Z5_t?lZYvdW-#Q=^@;cJ=OY7Mrvq_PoKO zN9$v?19#N;;(FXv-osaE)je7uNBKph?T@hHMAg=x)e{K|j}F-JX1cm<@05(LPUH=5 zLLa@ZAbMpd0KYq9dkbQhy8uQp4}+`0GtT;2!cN7cKmban83@6N^>DeUfMuiOmS6Yv;T21LD?;F zK@IQ7f`HfRd*M8v9pv2p$~Itp67B__?dPeq-IdGhQ37{7LD;STsUMJ>>cgUiH6D_ruJgkmk#EyCeqA zJH2g(qo0c$r^m)A?ILu$C>alJX(}Vv0sz-&IsBX)t2cg6xxT0WOV3An2>Zkj*fJKe z&8Qb$zXKogl~{jEj|_SHA!T2hKvNvam|Azjn3QRb#vUd~xGH7fBR}1ZZ3lg0qll1e z=u2J)gknFPhH99&JK@C9E;l6e(qsjYZ+tUpau*A7x7UK*n*1+`mDN7d#be)uu5OVZ z-U?tlG|BUf3il9n;t{N!j-g-IKAsV;~$yHvPmDnZ{zH7Qs}62#we(uZq~7)o5BNS z{l2ZKa;W#{w3Mbu==d;1YzNw7LaWCMg{G%|6O!+-*a9lv3KJYdB!t$48lLb5{3l}rbi zc0P+v3JoCQ`kO(L1uHLYzf|^r4OT6OzhR_unU#LAvWi%;ylufW|U5z}75Si)8241_S&X#=S0~Mvhe({%RaMV}Bn??ps9aNPz0P+`R zI>fG&cY**fQSDIz7uY4k(9?!5wR!E+fszCix42%B$k0ym-RhEaVUm`;EOU_3PE(x9 zv1)viNr!h^BPr^pGhDi<&w7-^UM&3T^VQu6zX`jad0w4U7y3!cB2M&Pi)FMK=~`EZ z@^hX6qIlUx4!<#>JeQqw$9vg!)7fj(k=Ese@Ebsjk+B7Jd`2qbxTk+HF6Y_sIgM0)&88q$l0 zt#k9>yBVGGRn^NcfQCojKVajjyn<3ix)Ru0CZW|y&wk`mL$qaDZ z;_n?A1}2FYPk;FRmv{i}pBI2M6#k({LM$W%-1)keBgyK87F(BLZV+T$EeP#F9guYZp!esi^9qK1sw7`)w#hU)pW@C!rM!=){Qrg$VWN0n1&!E?JY#`B6FP##WMs)PI#YzYy{WPJgfdDuGnj6{7RF>>Ecb&H z(%c-;F7X}80&*COA|tr!KXncqAxrzUA67Qu!i!AvBU5Sx_gReZ*t+pnA z8Kno?iG71Q4~~9U9?ho?Q+4{_h1I9Jh$GBWu6nBlGKG$+pB z4FbOF1ce_NC58#*}<9980-|!9J;AH=tj_&S&r=Na0 z-^S$anDzp$f;j;5Jpd>EXdEA&fdQi0AVSxM=3tc^g6}@C*)ThJGAeA*Ai>0-F%2~M z(%@&HSc7+Bm z^~}$6_3c)2CmD7Ku><8ET|t+kb=859unxGz9a!pP32HW zaX4<1RO`|=a+mH>3jGcArtqMzK5YEv+0iLm<+GlPt1avxg}FJk69gs6yMNZ3*Fz({ zh&n=Jv#HSbiAm5{bmxxmlyu;!pygx!(18O~7a2_q4doji4wAh_4n{Q<(E3_F5%%)! zmdLgVakZT=LnmXDQE&-1Z@T8v;_!iX7PZ7ZOwOlG)_WG2kb86(9+r!?*_-Pwdcnzd ziJX?TUYX=(P~LiyhUL;$KTa8RFd0rIbnqj6)1e)$AL~Y(StuwBH#RI=^))g|m+DQu zmd|GEI0f{g=%yRQfFrN=upWk%dGZiLH1)D9{FkqwQ|MaHQ)f=d$|ayq3c}NJWs2<= zz!E1UEz>aJ53fnSQ14@Z`vf+|x5><;35us&Yj1tSqk20L^7DA^+z2mdUgQ~lpZyR0 zMf5=Iw3+8$=!^U^SVso$@*L`YjS2KsCgo17wSyCLC-2ICK5yUWId}NK$Rh-_piF}9 zy4%MOF7Q%6p5^B`e0R~*29;MCY)ks7y19^i!WRKTA3s!P{Zjo60`3TK!k@1Oz&AQj zZu{^PdoD!yJ_INCI=qvBYwIO}-jUTGO;$#R@z9_}!GE=R>NdA$Em!%#wOnH)ZX|Xj zegsB1aat$h9PJ)tr`+ow`e)ItGM18mCz&5y@%d5b0o6V^S%98Tp6Bx$Iv(|0>vqcK zXqn*{8z+!!KL+|x(U$f1!jwn+W${lrfXXJlTFthpU!dobTblr@60v3afNbUMVuU@* z^j9g{bO>!rr4PYQO1+l86PKjnlm61aud)D>$>%IS#s62V#=Fu^N-L31p9(>3vDs&J zd$gZSzPgBuFz^)D9V%{{c45gjDPH0M{=ZGcpk|pnpTu)F*G#&?2TD>@7vW4(pThSS zzf4@VT>qE8kKF{PyjTApQV_LXQEAnq9Q+9?8+jc5fsu~F zlJ<6z$wo8i@SR22+I(mzqw>*bxBrkAw3cClto?=Cw`sGnUrOZ^oN?>qhGz3qUeLBz z&y8=jPfPr}DQ0W|Q zusjNhEEu4+1unctTaU=XU(?vHw3-K;-o-@Vl7AAb1ZQx*l%2xwT|?RT5Zi8})vl<@+M<1c*q%O5l97$i*6^)~}` zny;~CHPm)~!g1ybT_=!ckZer0Cy&x-i#hyT>>b;! zb?PW>ofW*2o32UMpS0EogU6{~ayQns>wPkUnsXqQp{;lrj zK@;Yi&Cn}v&W3<6(P!};odO#g{UaRUecQ2Zd-2(50%ls*8E9)a^WxK)98^Yil%BS+ z?%jf~+-WPL!>Ys(U?2rNr^XFN-`J+ME>LjirIk?J?6U^C${?P}vNpo;l4LWfJ>l*D zA3ZYeRp=$1dID+#^YeGwEoq@k&zJvQ;_dvg}=lq<3^Np^55-8+~>i{qyQU4$_? zp}FRy+X)FVfIt~qPX3kKZT&YmYPUP@y2Oi;Udg)#E{3l%W!pasA~NuO0rH%M9AEI~ z!hpDz`FMe`8KA(t$jbun%H4lsp*tEbp|3IHe0YnOcO0-#-~`M!{5$!-di4c5Ry?JsVm9`Vx!5hE%8~f-2 zwlsN2-EPOm{bMFZnZyZ{7yo%;DxPQZtbeaKA`SfwqNUkIU13clZ_A`(ykxka0MRxp z+@$zyBOJ?MHaoWElE~S}rWKtPf>$p;axYT7>453r!+T^OOm2)lQ!M zoV)|)UsCFyc%{FOekhb8`ym&zL1!Jex|`R##4+&DOWuA0Hgv&(pYoV$qtfvjeN(XU zCC?7r_$8G6b8&>O|Ejw`X)d~SV~wf6f-0O_{jrfAQhn7SX^FC~DvKEMYHEMfx}fdE zzIsC`Xa?dt%?fz3%(rfg`8Cn9Im9eu0S1iX+8?Qy@lboJ_sHkDJUwpbOK0)bD>po- z=)Fzkp^0nb%1He{!(`de8oOo8vv^1+zRl5k6-8PjlX^)&8ZFi4)B4nH#bywNQ90># zkpw%ilLQRu22XzRCqVVWk!i-d<^lrj{_Xu-L7V=R0>=%dCPgR99-Hzm2p*@>29>4x z@=V>T!$MGp+R9_=TO~m>2Q|z zYn%~Rp3Rq6WF{ZnmAfzN*<4pvZ~(2imKdLY?bm+ImjF7rIpWTLb^&mc^VClON_TcY z`;tHw3Ni?K2q*)4@c5nV9v*%jeNp6pAz$z@~X@K%J-@xuM!f|e3n@+>XNEUw$c>9h;c;kru zU}WQ(Ak{z*xDrOpCDX_SFO!9eY}BK%UmRN-79Lbs=*BMdoJ&ICTr6Y#w&!Cf|# z(3bgyUSx35!`1tJ2PBP6KVZ;hF)(nF0f2QPEjic^rd}MdSxjnK&m+ScKnNgj?PJF> zwzY#wqAa)~k^)z)3$b)HHjvO4z-EwVmpt@CXHph=q+84DOFFQBs<;p9*69%N@E9o$RB@0 zQ+kqc5lK59`aFmvZc-%^Xa6=fzYO^5~rwar`BpVtsQg@4#T}qFg5HGj_BNY}Hre~CaNUAi zoY@5-jgi$yBfRT7pG>sOyJI@G+@#Gf?*b9W-y~)5XSn zh;s3?$Bo?mbP&4kM8e~FCf3%2+v#6m;$IrTFi}_I++_#u0y_@e?r*u<_3va7@0tc7~WZ%ya z$^+!Q6wpP8EOM9yzJBilhxpdBM)X>{##hLzZmnbeM6mP?IaQW7+7VK?~b_&w)W~FgbUAnnkJR7na9+rDw7o&@LUIEV|@@n>he^ zh3Pl~98&FQJ{QrqB=Q;QQF*eBS4f zSmpxYVN8>T*T#6I>4KEFH;rACD)f+Avna>rSEGOW2cZx{IjjDXhwQ0W%Z!Juo9II+ zJmI12{gM;-H7$#PXA+lAXj#B%2(MG zT$s@H+C-Zsku9ypzSudLmXU`YEmtb(sIM?{-4P^(N$$FE4C>BN7tR^;O@Dz*#LB$v zPkJWD7;~;%v+!w47bI0LH7@*$5CWv{@jWx*o3GB34zBTC<&Iy(j~kD4p_}358~b1q zkFgg7)qZ3f`r1S6@iof}qc~zH^SWUMAJ2!~$R@w0`r^ia<<7P6@nP(5Qf~85rau5v z50OC#WVgSM95%p;v} z=YPjeXCHS?o%kL!Vq)e>?2tb8vFY#q-tYAWs!WFb?c*)Bz-rOAnCfkEHnOwF9((MF zZ7fIcde^%)i?|qI;!6Ohyy(I^n@%3{b7hPbva|bnv$R`gSS&bY(Cl+DkJAK%vC(ZE zY#N4*BMoHhhyinDej>&STs(D%7Kvd5BN!E z+wo9+D6TFe%S=F}zwQDo8)@CjJ~qNq(YMt>B_dAbVuylhcDpzM(P7oW`jm>DtjRot z%DK1!1USCQ72~O`Tve1)94A;EBn35p%+o%LTqYR8YKzeJTz-E~l9rPP>5q+rE3bu< zy3D|AUmuc^_6+DWLiH$&!XN|W zeV4~-Hw(?h4)aT7@mofMR`R9!@fn7G)ZpSn(zY8{$F|S+1+!z ztHAdQSa*3=9SXt(2m0nKXF}$hTSeaSOKt7BF{pYpu9G={V; z%TU`Nrs`AMVyTwZB}HZP?Hx2Svf0Fo(pKLN6OG; zabQ7x+vzy)@|@0B+S)+hcJbXZe_hbg=CyJQW;r-6#Ojs7~=}BH<*N93X`K9^jiPRUwtM;M(EY1&D~^J zaPE$1byz-hYol4L4xNKC2nrDS@W-LsvcL+_%0mw0M*VqgH*oeRrm^qH zr2n@awY>7Q9<+7MXWdnf5aG}0nrrxP^k7&X!Cu92uE-2t7V(EpkFmw>*~^!|$V+NZ zeBmGT^87#Znapp%J0?FuzTpjT(BI-be*TY_rRUtorr9-p=KM){Zl{;W0{aKOUmp7Z zWU1OXbbLQ!;oW~%v`lY$)0^VpmOb#m19o0VpZnbB@?HQY|G8%J@ALoG%^7zaPyXN! z{@^L@wp=0a9vj0=4OSppv_!N0*>h+!nM|vhiHA}1h_SB?ny2f4Hn{YT*mM-qwlUIm z1L#EBs0k>^W}jiZ^z*YI!NS20sIrS{&~WnEz_)0IuX(~4;9ambFq$e2*Xl-$MtoO& z(}5b)O!D_tEMUll?BpwO?^=>Az8zsYUT9~4=^cv7si87(F-WRIWiCA~3G#9>P8n z4!D$gg*%kPkuC3bA3c}SzdU6d->dW9acy1h`?&|Nkd8MM6vz;Ive z5t~K-bjt^FqJz)Lu1S})5HWIxw)Cm|<%i*=3`?$!e+EsI9?Bj^pspoR@f{dcM{+_- z_||3XTH30j3=Xt%M~S+ag^(Z}{1JZnSq7I73o81Oa}0$4?V#Bk`3Z zzEn?${sZTrw}Zl%0v~aJ*tRvIcxTm=MVN$E|MFiEHw#6;Jr1pQPahPpMDN z_}pNMGf?s+iFwhcJm4KOS!F|CVrKd?$@9QAunWc0#ebD!7YA0-@rlLo zT5VQX?OCn&yyZ&@za;~Q)^&Kw%u9aSF~HbTkS@H{4&wND)yG)?xP19a5FArW*yeYh zH|o1hKD79wjClbWyEAy6k!|>QW-GpT^G+ab@Amr)XFmzZ zdk0nw%A^HF^jpJB;xxw?RHI@){hSic_3sw0sta5vKIEHuhzsurAAIfZ4R3gT{BG(S zVh7jI_aAOAA8Xz=J+RRmf1B&^>!IP%WE{_(bCjsOdmeuu4IMNzQ7A1o;?Lq(y|?l( ziIBFF4t+sp*dVH^E6K^#8Firx=X%9!eXsp>+XEfM)?W%2zcP&+Xg3Jfp;_B({V@+E1bhTV-IeTwi_F zvoZ|K#0ODoS`GoIy51INW= z4W7hW|Fr=-WX~O5FFi{`q|GlNf()r&Z@SrcwfK1V>A(BCPI$;*-r^Skw9NJe0Q&wo z4!Q=3InuFk+!#G`Q9we>opwL+BR_)Zbs_U^r(0`*|8@j(Yw7=!rA8ysadqUgx4-@E zJ6E*+^iTiPm;W6-{`ljT(KdVMfOh~K(_rn0P90z|&^rb$ivTo=QyUKhu*Z3M({~s- zqzzpeY>kmtYShX=l}RZeG+2PAfq8A3qd`V|v-01wCb~g_XF8b%cLU9&;7hx>W=BWz zP2{f#NSMxKoX$T$4t^Bb=XQaEdqgHjAsPG#)u0`zxRMehk;q(j1TeC4H;sH#1Dt2_ z_Mp)bDYlmf_<)YBgilh2&|p11odDa;)*ZzKVC5N^YuBK8m&WaBxzN1W%8t19Xs5-{ zgj{vW#J0qunNN(%Q~8yLQ=LGXsY^f;cxUw;vI+I#_!CxM{w8TZ#T3$xEM=`PPF=lL zPgU6CPY0q5V;AN1Zh1Mzu2xe9wtrm2`GHn)QDCfd$n(-NBw8`~73fkB~Zkmm9lF<$}@=@Sp4t?rTAPb4W>kU@~1 zI}*&O&WH|ae_mU@CZ?j~+GE*!);tC;t&ox?cP=Y_CSlNWtNfR~^kqt+E1ytkedLZk z6J?)wZJSCf&z*N)pm*oR zf}Ltg?#Qz>{~D9`yaxcC@4fd1oN zym;vX?-jTnpYDXiJGJ;S4swYF0&Dv2yYEf>vVJeFXZ+RQNxQQ1%(oWHfSioT?Bw6U zrG94rB-{-aIW)14kHjaf=iWA@d`$|-i}SAmZ|V{po1?T$`buJSDxh^09AhXl`I*JH zyyZ<<;Baz9N@GxF{0q>vMIAc&n>_4FS}&_s^NBffD6_?u>w$kOpC!gq&k8nwL^hiw0BAIm-?ox{$@aw{f*P*4q zl8^<#avHhD=E^?jDbZj;2{?2KB# z!4rSEK(e#wNp*P>1IFpkvJk~NsSR?pRoR2sQQLrTm*}H%CLUZ|s&5 zjmPkv$^pTj_#gS}zkY&J9ou)B$?VMC&GsdJ=8uWKk3jpZzvcNV+G}3(np1Cr@>2BE zZ~2yQ@#d*`x6{jLffcG=Mh^ePN&n2x{LD=L&*}I~{$ulb@gIXam*3m+dbB;9vI`)q zX57v33jwEWi;Ao$H>ufcFp5RI?y}K3P9Rmn zmMwh{Opdh^C1FE{MmpxL%jq~Z4&V)r_@OFO2YyzV$$U~|33qKz zs>ReVm-*XM%X;TYJ(O!h21y;2CH~qA&$V&tYRbg(XX02Akt;CXP z1|}BUwu7@|Q+5a4r4{tpa?uTOc?)AQf9QHWa)mfP1k|Rt;@M8+;o#VMRJPAQ^+kSP zh@YHeA{1Pq;E`wNMdasO`B{YRE*$VZ_mh4u1bFv+^l{FZr{P4 zI=#r`-`xT3ZtzaN_OjmGsUU6PFCmM`cHyMQxB1t$`si6-Oo(q8lcf0^TmF4FfpT8q zF#-p&Gl&;H#&#g7|EM271a&nqHW=BuP|(4&ASPpP2Flo~lP>VcU(GePef{en+CBIU zui;$y_8-zOey_DlY=aD@y+7Dq!bh^w1EGWF_=1^9^-<}I+bC2Xwwv*dscUu9K5z<6 zc~6@29;q*(5W@Nwth5?~C_?avCORkduc2MPQXNC$#4T}=r_L`%gHmiJkKvsn{!mY8 z2O~GiulBx=_4hc6dZ*%e#DOnfXI6M}XDIMYHq;TOT2HWvZ?$BTvFB)WyI(PVq}uxfXAY1OxE0n<6y89yoo+c0PJ3lk`_F8xaGGe34@v zg+G*87&%UUPbp zINCOEf(>fv1zUNL8Z}B&p7Wb}a957HS$FEObctRRM5SP_@mgpq6FB2U<4X#o47E#j z{lNR*?LmgKw802?I-8utyuZjnjM^tjHqT@Xhmgn2Z_Z4G)Vlh&Y6E z0B^t;eBtLj2n59mD7`iUKo{EPCn1bDrqH4cB3xA_pq5~EP)-gF`pAq9*(SZ{|i-jP^>+EE+~h(dp} zeZ-4RoP>}n_ulr1$grRT(9ua<#tfA;sQl5I1YD5RRVd2y@*WYilfU?j<;y1Okilr^ z4y_*bjnO3C%mIwN>JjbiTW?s3Y_YfNoGzV|Z4EX6Kw;}H)a&SlPYF;ku`P{esG|5Fmb=R zqt$L~lWyBUcj?bhJxSrvyZ2lyz8ih6sV~)ol%UZxlN9UHY<}Iz5AWE0G@X9+y#Z+<#j-d#FROCfpcW%GLvw37Pw2m z#|=!rJaF#ZT1U$7ZUp%*<3=BCq04CpUx4VBOx=}m`SP>7tGxZ+MTUN<06obE2^pvX z@01}&2j7&3kFM>%38%@6u*yQ>C82dm$OLLC$5?voaiVBoi zX!{XaUsYG{W?Nj}T}>*y<6mT;t7CvWeM&^yKUCG_NT8lZ4FjLILKH%NUoZG9O>k&M^6hq#3=z5FG^ zeBs(NrM+2nl$#rrYtv*L{59qnuMd-Ot8S!5QR^anSuBWb`ZI|<)Z;IVZ36TkX`8}$ z?Qh2Tfdx+5`k`@LJ35>&vmm?`ey0|aL4AVMNSbmE{a z+}VGE`HGJ$`|LkOts(lm6L$c>>l9v5(4#i8P5I7%C!Tm>=jZ>p`+vgr|08aos{7_A zi{I_TEwaGvM*wb-A^(5K9QoqEM<0FE0pHO_`Ro)608Z9U`R-+AwoLYo0ycBn#_`El zzxq`_n{mclGEczqA-j{`|NYhL#mvD`}odEhoVY zQV~YJP*-}nGSqHhl5AkSHh8W0*+~p#2F8&+u*fuNuS-{pPo)XG^83yNLfq=;BWch$ zGg?PP`7K>557(g?VRwA%^aVb-bvbx3uc!po3{K#YI$3tL^DS8ewYn&`gXYShe)5uj z`P$j{+Wbv_xdDruk&%f7#pyEAablt9WXCKmCvI-l%cP0UW}~&>B&QAS3LCD z%hXIdhl7^Q_Dcp1lq+v1g~}{nQ|Nh(?$SVH?sDA7v*&b>K(x-R19frmA!a6A%LmMl zE@oo}>8?Bu`{7dfDoiUN{A}RSm2Bxg{beS}BqyxAoj2$6M`HN4$~FsU)34lSe|Ehx z05Ra3?bQL>BVy~Q^`ON|$9%AqZ1?+N;+@Lm!6;cyX)?I+_{h!^Lh9G&b#i;+xUI{{-sGi z$|by?zw=JK3kI8<%M>s0{6B*vCj5Lxk2~ZH31hF$n)*~ zc}qL7=OXREFB>>pjNaZ`KuXH2vn^rK}V zPNv+NjZO=`z{_zhTmOtdZ+**~QwP2f*EDui2hXKxnrn~8$Jdr0@8J(&q${pAzd+qv z$0MhEN37KYJ~*jMcy$i>1y}s_iwyXtckU+@UmmuhF+xknZ`H}4@=Tl?nnJ3}N)C?U zH~w$G0afZH&u}A?<%>oK;*^iQg)P4CE!p4Em6yElx##ZPCH%_flLjB&wy{n)6l3)E zsE?1F9IXHpv_2}AGTT?^Td`+j*ut~4G#LBDFv7h0fmd4q4WGw$i+Fq~uLj+dk_7}D@B*=B} zz@f-R_cbOU7un>WdZLi4fN~vs=>yWXUPexL&S*`?JmRU}*m~+u`+%4-=ajJwloy>W z!a#RfsrbI5VJQvxabQNChz7KD^iw+P@RqMMCn=l$(dri4cA~T{Y{;iF03ZLuIFf|& z9L0rxY^MtK0rb>nE?9()lE_yL`Ys&cz%x%@C6%r|S-%L~^xecRYB02=ZxUzDt$S@} zp6$St(XmJLHs-}};Q#|3N>LAGlWqHIu}a$-&3a78LS1|b*yufkSliep!_wPw^Q7c) z`Be0D@eH5GF8W)12-}plK7s2f*V4;at9{&|8d`}J(qFjo%knUWxX6_q_kvVZ>cr2B z@?2o-U`0sN_^3|evMR-|Iu^0EntHacbTJ%Q7DG<$ub;xkndH;Yc~jHQ{e&Z?KEC0X z0sIPp^B(FpmXa=y031L3@WUr89{BA4(PNK2cKXvl{nKasU=?2q``dqRods?$0NgrT z{zH_`{_qd~@bt%i?8nZ1_jiBy*?Zpep4}slJYw7D?ar^J;hy+K0Jp{*(I`%t_&fQx zQP7^w&N2A`6)m2I=Z!rxIB_B7ZssDCPM;o|`viMOdPw zbWG6IKE^CNgvVK}{F6WVlier(?(h6`W9TSr155fOcByBR}!|S=YjE`Xc9aLdy5L*FALf%2&Q(_tv+*b@x5r z^F84=a@Ud7Sz5~6qx?!cD#OpRF`_o<0*$NmSC|<7>7V||?k_&_k=+-bdWvn&FQg+D z-h~TOd;&S`@XVM0B>9XyV`H@n%+gVq_?|{yDe@tb_29X7GC5e0U+PYoIlst@;2wPK zgS+qguJ7Ev^PT^yJ`8Ma*}G@r$^*U`kj1i| z-}Y`D&0SnxV!HF4Cd4uu9`@PmVI9Z|1u)HC7be-T=wLDBfT)g1-c_x7+n)aFul{Q1 zj;ODF?HS5zU-{^h$}w`vgS^ll-%>frB`x9(qOaH$N!xcGP8&je~C zZ0Ll=H|zVhe)Vut&37LY2hc8e?vJ=rdEOlZ)RVsJ;Lb^!pX>u9ayi*#EX5+iRTgGg zWWXmJP-zz@wO{}GGkmg-XZ3-<|K9tU6sZ!<`24GwRPf`PR4i zCp^RL%LLt~?N;d68#^UlpyLUPLN|;zz^g|VI;k)1r9EO(77XGPT;dUMKqz2Zt%WH- z>7q2Wj?nqe-50;`RDRNH(%wofENAejUr4!m9KwJ6&*P-=)oHQgxh^j9Eb8u&M;_Vv z>?!a;!uNu%Zj%mq4sC%)jx7(q#`nZKjvpbW=-2l34uDOAGsj`9>8yA2Cr^0mSN`%y z8Rv7Yjm)3xfgf1m#ZL^UP%GM=hPVFe0^fK2%YV81ZsH2`AcY5^oD;X9<0on%RSK3T zNxOB?Yx;Wp$o4}p;Aj7TcJ#52J+b>w|LOnUJ(bw{e0UH2Z~CThBBp&8G3}k9B|m@Z zm!Y7X|3Ipo#vaAZd?J$>!e)0%#GcDGtyv`Enm@6ZbcKmkdJ=xKGiz)rit#8frwh*5 zrBgva_4Q|cS#RbW%+sST2TmUOmYe*0*v~Kg zObThOjLG);27x~ctjg*oJ#|eMoTeQ+aMNEV76-?hyO@n;CBrF7JVK=|YL!iQ|Ugf$k)B>a}*P*^%ET(UIv!gG+Q#N(d;FoHtvl zr@TTR`J#JdQ=x5vXX#;mP)O3xON~ugbdHdb*Jb4qmmud*A!q1psLD8uGcm{pZ$MU{&y~BY2zA-U4a6G(=XiT+KShp%W`~a<;;p zW6=VH@w&mJ0WNPSOz;3%(!nt>4-fO?Z=SR!_zZl@ zo$Pc#w{QAJmIhy8d?wIPW1ii{debgU2`&V3`N_jhVxAY2U*(rhf_LsTE2?xb`Ag){ z7KQaVvU*%A%fVA0@w0Laid&Vv9)45qXSV*g|NZ}9;{Qn*r6Y)*oGY&uGhhxMX*j@E z3Ux7cz+_Hkja?NSxZ#;X{&>y*(6h4(u44`vK~*~`qcoIJzW!>X)hR{)*73+SG8C@< z6FHnGQd(4;NuyXySOPkwUu>%ac% zxif2N>C`6b+Gl=i%f&BxDEeH>3p=SnCdS}JAQv=D>Mvb?+Des#t&Gjr&dMWE zECjITNYchWCiIg(`IEZ`9`O6Pagk2EIf1LZgELeLI6M<>fYcQCF2v{%fC{LemndH0#mJ=Jzj;iWs- zS;0|wCvEu$zP38&U1IK#-hJ1dyVpJRIu@ZG-ra}pPMD;Jg)-?^w&(ez-&H2e*L*=A zUUu=Wi%iIQR{*pe==r?;)n~8lo_XdgyRUxr8Gc{k4*K=Tq5XZ%ex8x`+5QJuaPXyl zd08Jc)zFvuS=aJ@o=Lhp0sQpeb1VQ@RZb)rc;(K%FI2mSmk64FiAMnLW=p*b5_q2m zQ)J}2vAgR|b{4SZ-}e(3XPrDLFJ%ByF@|7>a=W6J=E5Mi-zoHCpV6ff6b>g#m z%Z}1E*114olHKrhxY+BqivaMab;^qh+3E7YEALC26UUf>x+MSXSBNaH=|^g-=56@mEnE?nZi&GX zTJa#X8+yuTU~N~P8(04Azx`i!k38~7+akEyRX&k{bK#5w+QF2zL-{22Yd>(71&`nO zjeoa$;)#z1PZ-<7_Iy3`r0Y-KKmOxC?%lxhu>SqQ&wiwLk>O9@U^|sBc(J)VkNna` zW@L3m@ak8YXw~JTld?-QvT#1~dsHXua$=q^!YZE@)*nw?*jo8RXO8ZcGBws}hfZY0 zj|VO@X-|Lhk*{fJ*mlhsTFSGBx1`FLA58E=MS}(@xwWBf2h&8-JfXU~&@dSTl_uVI>OONir=;DF4a+jS_ zINk`eDiay}BhSItC&V!+*Vt-cMi2PvjCCwPu|vkOQ(ioa^W$#+bq6l-H*MB7Q{GGG zplXBRpE^>GB~NM@V|H`_BdD@fb{O7uDNcf3AmXZ7u z!i!hz@~gl4t3UB`KlgM0FLYjHQqR|LuU~ijKZ^j~893!#Xeab_H<I)Sh3S99u4#U-i}1tC3?|R>mGdFw*iwf2ZS@w z5!TdpX~VS9H;{PVKt|(EP*3PhV@>dA7qSHbi5qCsxs-Rx3_z>lhu8c;wsycvhP^Dx zoq<+aI3Sl&9}n_H+3GlEGK{I6e}S7^>;8BJ(@)b z=?d%bQ=j_O?w5Y)mvXnae6>>-)(+|@dRaa{W$(E*b>Nx$v+bk~&=LLdiv=gI*a1DY z71t4V?B2TU^wBpnVY$!V8D7z8-9|uvb&PEsymT_7 zUn}?47AVo5fAJT8F~{?4AK&!H4v`xf#PM8w?~Hp#^KIYqHlNi_ovEjHu4j-S?BTEY z`$3L6Sk4`Q-7o+0FXyiRvc+0BVgO0ydpDjR=eg6SY_toW@Erevh+B@!tMw)?ZRpWo z=yI*WpLvG6uvfhUS^0Dm7Yc;CNGvw#C;3Dk6K8g0u?TS2?p3dT&F(%XC=6<*ZaM-& z2PYU#=C2aZvkM3RGOkBP>3jE|XZ-yJ@?+rO9Xv(-9 z7kSLZ-3iir9=a|D_@#o&&t0yZz7v4O8|$|3U}@`0Y=v%VdgA{M9B0y%iJKA;hb`9+ zBjB7T$GY$(i!6Mw%jY6T>r-3oV?+n8t>>0$UtzElZ0g^GXIq={v|}o~ZP8d|UsL}J zkHt$r_|&I9z5B**{Km~@FhK78VpRCa)BKg>DKF*|_@(RjXGgx`Lo_RW&$XT*VWaD?P+$V{Or&E-0pLq`)t}{ zcmb#Eqo?rF^5`PjpZ(dN?Y{lnzdbJu(^D*y2R_5h#6G+?C{PNQ%3@=L^8JXg2iE$E zN{PwBaMe4Q0>t^G$!Vv^>G)|!!^;9H68+#;_+&*tiK{1d$)RJb(c7b`I_V!BbEt#% zHLfURCZFU9uWlYz{{;b_iMHQZc9quHNWhsS8sAJdD{0H)+_80!1vrGQHUPyNq;0Y1jtVWl$&;@bo82REKie4M^*aa-t^R;bL zk7J+FRT%3ebriKaK1GhUJLqbAb+IiE9yGHnRynON{vVWW_6@jybW&9iPf3=&I3p|T z-&>5zc$|W?IUw<^n-?!E6MyWxr)5d&Q<*EP++yHd+wPDAvu*7KGF^ZNb@y-n&Am+y#QSEuG<&A;ow$_Gy20b+WQIhd;D$R_HC!{c*i@=ydmSe z02GFKR2{&J+v%2Cz!CiI^fFq&m8`eD?QMM0>0Up3arDMFzL95&ukAkev5(n1>|XoY z*E*RwN5e=ySx%bV1#rx^a@sqs=;XwDI`@W$-*Crwe8+eEKpGn%py7z7N%JtM8x;~6 zY=ub)Dr@p@Sp&@$kK6ezJcE>>t#AYzTlCuK#Yq~yyljh-_n3e~RvW)%`N1b09S|mi zTbO`ixpH`H+JaUB_bOLyuhW4zXah4kt&T2o*%2MmGY}geCzz$fsJt+X5Ww$slz;fJ z)e|}jw zR5>ei2bdkGIhoq??jW}MO5Xvm6SAS_adZqUwBrGLy|tf%pz5vdkYC>T88>&dxpX^F zAKQ+P>w40+6Z!n-KEL}H|Kjb@$2#gD$Ay42ujEHpXgLrR&q06#JL&Uvjoq*O%CBsb z|JKXCuB^+YZwA$tkN(n<#^C6uPBff~)Nbm7PXGhsz#jTR^*f{wMd2JAV-MThY`vbl zW!AMpL0mwi@8A5*UuQ>z3s2&Qh(@ZN@{%Hbd+Mb|v5pv|(;me6t>5}B?!JF|(+!=@ z*utJqJIPDj@(lf4d-s4v%(HiV=XWw-MOR?Dz|z(>ZK%iQ$yF0m`=QB|-Pag1& ze%L<8EOy1F=&mdfsBdeZ+FzQLQ8}xdv?{xcYG@0LgTpU=i97F1XzN$nn>qtWIrTet z#;A`Iee2pb^S}cSaCi9LECBc^zMFKw&fYPSi1e&g%cka zdhXfh$i?>jvp>)xE{YkR+>-CJ>DK2(UpPoUL?erQ+oqW;iH9#=qa9cmKC6F?-AOLs zxZ~qI?;lWBC;ysUTUe%!h|FZZgVy*j@)GUwr!MaJE)y3jUf^?v(v-h6z3ZgRlTx=1 zps}6V(lk$oLMfj*c`nbDIlei$sXP7WRZRZxxqB^~K*Ks!-l@~^;W=uL+Qc?v+p|6! zf3&?m9v@h=JeQ9+p}oP@$IaK4#)Y@M4cH|1e~q41J?d`ee`Ts&lmo=np9@!i`ImobT<0aoKCTj){8i5M%dn__1qZpBQbn2k z$ve7H04!p!$2q7UaZ4wpMa5p$nzpu^SX;m$=S121=S z;=H%9AB3Q*mNcqI+lU3qS$?)-^Xz^&rXrMvlo#;l4Z-U*6@zUrQr1r;yF(MyW(AtLZCW`Pzry z``+L9UD`GuoH}*#f5JG;yZ^?wQ~cw^$JOXhT_DguPl0iP;Fw43PF*x*G2qlW6Tdph z5WjuAk8o1hl3LF?qE-~HX+Jz{Ii5pVxL<9Wb4xWnLQ{&t`E#3%01@mUQs zQXDy0qtOS6J5Q$!K50j%*($?xxgYz{AN|p^LIzqaP#**rk<&m8@K&n(ZaOT)cvLn6WTUuTj2!+Zu z$6O1zC~%CO49=5;6^=!l-1X!tI}lI zp%~O}>P+QBJ&3DcSte2IeDojs;+8nPQC7Q~r;HA|loR}P$dLg=AbBQFYKyL7-yhm#ZD z*Kov($g1IvPsgye^oiUBADddF&eAkV>%0>@bkx19F&6SWb+pm z>5h2rI)hZPskuy^Kk$JM?B4zE|2ev92j693vVGw3-ZD!aFELW)AK^aymw&;4`y<>L zbSFqB0MNiZ;G#dZ6?5rD=ct?O3`*Rtsa;tBIQk&F5PT;?=)u4j+TC%?Vgwl(z>o(G ze%cAUa&A)24}S22d1l=OCMVkF;oQg!Bu9;6-h$7aM(tCULyB{hsh{ z0nhajb#bz7YT1o^PVXvr=r8kWJ+PvKe&);hoDBN;LGS$ea=lBJ?m|Cz`gD@$0)us_ z>GT^HYrXb)es>-`k6!j2Zn@X@@4NpV_#UxyfgKF!;7}TT z_u>sd`NvEDcuw7;^sMLD7hPhf<+DELZHB&TJ?C77t!wg?!{j-C`QLoc;{m|sA9~s< z@8N}uuYARQ2@ck8@g!HhrDZbT^7)xJi-swO+;k(tn6&eL@Sm*UD_ZrdtYpR(?)3WH z=RUW4{Ttp;86hMse+!axePG3z#bB8n4v+gai%ep{LLbqH``$>^SVL7p$k{LlaS zk9Obx{ok+KtQfrB9Gd7LH}h!=ysJX{>O<;aTKX%Z1^)QMA!m&hUTD9up$jj3br};( zo>MGKD<^3h9~@c^2ElmD@S(}5J{6~e*0x?!9N$d zmK_Ou`g>)ohooA`!xa3H>ex8gI?zhR>mvtdRhK9onu|yJkD=k1t~S)3#D6WNGSIa? z8Y|fXzxYVa_~>P0koIVdkpKKF7auwrbebe;b54F!<0x3=n{|4}wvHR%W&xGupGR|BM#Rb9CIFH7Bp*Jldb(#bBl;P*7oJcg;yr$E?uNP zI`$C&xBi>YZpAak4K4x%kvWksN%v8JGj>d!aXiQ5e?I^h>2`WqEU<3{FAMqGL?3(X zu{5M_{^oB!WlPIBpYhk(X&659f8>iYNXPCFu<^S(=ER>ybi_dPoR19Hkbpe{pRYze z`y_Xw-ZUM976vpS!NF(4gY7JATLDBE1DSC1GccHDFrLVARJ<*)fRjK?NpbVM`B*eQ6__>|H^_qw(ZxtH36NzB5DK~m7 zo(b4?UW9l>vKLc;1amcLpw>?9V8q`#LIayvD-F%*_&)TZ4@pO35Dbx-ft+_BwW$Mu zZ24A^P3Ebk%_e~zy7IE)*DR;J+lF%_rE@&3J*8_pkWtp5A&VK%O3z;gjCS1Ct*9`l zzRIBu`mJ3q;tyH;S@fjK2PjGdTqr`K{H3jp?C`YZ8d#F;&@60()zH>Y?< z9QB!U;r*GU8~x!WjGfu|XSVT0pT4bs_^7CZZMUnMrY;ZZnlC+NH>s;10gzX+i3Ns0Gs(-s>v7O>DTJ*JI*T4W}fyN|^COI(4WKx|0oOa;FPRt#mlRSMn znn(F$qTpb!JT+VDzenwnuowlVUZ$QaFZvK)^m+H30K*F_9C+1dw5{9beIeDIJPSYh zolyHMe(#ie2Ut5eF?SN5-7nbY0&mavJa$}lqLA|AK}RNhSMz3nAIF&87|Q2!_I^sw z6nV9eCZ+lK(m?&eXP3{x>k@bEqd&3H=g`yUu)Q{NA;C7`y5m(Q=d=!X!SEJ;^<|Rv z?AO1VyVp*Juf5o}-1`**^>fFALu~88iMzgj9lPk);_H1^uRO=ZpSS%ZtIzwtz(UD& zb~OBd?7d5`F4|9T?clXllAk0-U) zIq!~$wVwNW*0V0LB0`z9FArhm1zW}$h^58H7SYTs{gHq4L*j56c~fkynUN&aiZ1Xc zIGo(T)-S#Iyt*e=2o@R~r*0=tp2t7wDwA-rtF)2N`rh+OXUe7RlJkp=6Fz z<*(JvuNeCJ4yA0$L4-It;|nY%@swk9r<~zjKR0Okv0hHNg*Sz+@^XIcSCt_3AQ;7~ z{|A;n2WGXmh1U7dhi)WYa%@uDJ7f%k+|s6|)O;(K&RmE)@{OLS=X?9vjj>`6{xh;m zN4wZBdJk#rGVRy}ezjHK$gymeI)qN-)+p#XZC$z4Z^|6Gd9B{^VU(EI=MK9gDFd%x zIquc3l|}e8P-sTarK^oR^vTx{wu$uV+7lT^{$46eDup*471n(FINQJ41-^#fY$<)n zLbqcJiHw~`fAmT_rmhwTwFd`SfA&fCVV<+#_ljlAUHCxEg8(|8aUsCOyUz@32i_s1 zx!nPMPINJ;-VAcTeyg9h&i(17ac zqzn$BM)2TIbN5aNV&G0-ag{VFcP8qJ29XA|2DtL(FPR1egV6*&!yTe;@<}Va48W)> z`}tgq`GJ)sDq1P&5V+0&I-R)m9OU-61x&%w$7huZ@L8dEGM#e=fXFO;J6L{^PddAt zl~LVHmgUHwz=WUnH@;IB(A<;u*n@ra6OdnY0MHIa7&{2*Str)Hu-1D)V?RLlf#Te; z4i40Elz-_fC8zL$hrFBsm{vL2mCd7o@&trB>bGizbt}6I8^|I^I!Sf3qcquRdhO2+ zTbQ}FW0CQ)Z8{o?10$XTu=Dc=*o zf@6aZP}{)ZDyMP_XZprB-hhzAkPRP@w}ThkMF(U`EIWVQj;~KV!MgymLjhVlZR>&h zB~E&$T$F6FmzMNN=HKUYfA8lLp|?-I^~Sd{=ruU`OufG6#LI<+>umM+*?YH%Kf#L$ ztp^8+=fua+SzV+loGI;IpMsX3tIQ)v&@`q=+b<262nl(v{vnejKLLns~LPIx0)t!`|b!a>0KRi_IIht@pMwX~{>u>X-FT^Gq&68}GHd zG7RnG^Y168G0^nJH@+F4*01z2@#Q~lY;em@9=qPh^2iTg#YMX-P}prKyN5Yjh!$V~%I+CHq$>Mx8kyGzlRO8N*47_pVOHPf_dC(S^Ufw?caYHuN}deTjx&3k{Oys(g$^)Bz2_T9~9QTOY=8`Fh!$ z+R%6?4X%_U^ak5wZayeKr1T~03_>C0nMpavj!rhueNjG%c)5;^pW3kbQ*XK4V!Ct| zfXC=Jbmf^W4ok({1R4G9{5|J~3-(69*pE7gOm~!MClK><>$}zGq*gvuE=+43ucfD5 z5`(z5o+7_7m>P0HMRz^c-!X$w&<@Ygs7vDmepP4PSVq_B%cME7T7l+g$4BhGkfCde zoSsLvWYG@0=qxYGwNQ2>S!pEY9v`z@`Z-d@Tag0ewJ^31`%-&PERr&9%E=)&K|G<% zcI5&R=0PYY-vNE(k8MPg8KYBBF9^boOmAR5Wa6(==Pm!hD(x9B`tv1#XDpP{EH9rDTQ2!X0A*X^ zGk}1P4{X^NCm*r}j%OMlGU*F)IzA~)6Nf(GdzSee;E(*skDR>r+G~d&{^1|a_G3Sb zLkDTY@I3%md|rmm&+Y%dO~{6N%6V3YU14Jffvtl^N^dBWWok~_ATy7I@791OA3&O* zL){=#?jX)qX`{DminyFgwe*}AwUY}N&&tO1KRC z3g&cxBKuD|20#NOeIfkCOF(CM7a7XXT0O@NRX%^zS5`$mcQPSK4dS(FbjbyO)JeMLM|AX36lHZlJ;}-Y z3>GH9o)I^-wL!Uhm%iuHa%*QS3;om?OTgtLhoq%Uc{+xYmNtq_j_{<{NrjmsADNt+ zam>F94^}UA?WCvj(KlUX5YWNQ(igi_wh_nyq3Kx8sV8}9oRJT@uyq4Da`Tr@$>vB; zdBURwc@`Q<$o5Dd(smIW)lTZBpW&U6^=&52%ApJ<&;2Qf_1JvQGq$!p?2}6e8m;@n z#_r^`vqe%wrp}|1+dgMPXht&O2mRPd-q1oiJO2k1*Un=jF41lGtGr|meI3+#w-z%* zRtM^S&P=*Y03{L|RuANN0iQH7r0#)nknbc{edIa1Qv_^jmxkBcN*z4*o60^C;B)Q1 z!CN@%%>fEOZj9jvoR8n+c}Ms-i1z1X);1{5;p-h!>C{g0${5i$gdgpGV|njbwho5J zv=hs1cRmt@TA66y<3)V#bnx?rmV1}qNmF_0c6@4)E%P$H#-v=Co@5*S(@*m$K0lv# zl$<>IPabZ=*CyAlW527^73NVM?GQO7&-?`Puw)H6>b zGrECmTW~?-;REh4(ysNT+UiQ4%{N9kare`L&hoGFs6t;5irhT1pf1YgT_IRu2PSpC ztH7NH$al)l0BxWS+T=EL{PdqVXS@_pe@;8ZF5b=3F7+!0vEU$4Y-Y?lV-bRj#4jTf zO<;pp4=#ec&O*w%e({Cp^Oc3fLI~`2FJ#+^l;j&E@+3EP=20Af1xsIo+j(6$#oo^g z-<;Ny`fHEzAq(hx4&B~;lJ=zU!~f7{{*5uMx8wFj`-QU2 zBz=NU>8R5(Tl_wJmEHNjz}C0=>H~+X^=~DUt}=3O-1i4;@mGDMFHV!kPC~5X>3eb~ zHoJ|y8?VlV7T<~Z^Ur^D%hT_%c4TmYDt6(oeAK}<LWHJS==;fK}48D8;+GuMJjbh9;;ckK3>P6ORUiuoq%CdHN zh-04dQv3Q-2a|l{tzGB3ytqJeVztyuYzR$! zyv&x}6u~t7B4@hARW}tUE+Aa_de*vTv>Cgl%$+2mhsLp+^|5@yYup8V!V$8`nA%7k z(gw09pbeJZp_6O;skOGs>IacSA(Uk4J28Wdz*?sMi~;`NFMa7tx3Hbt`5gc{r}0te zc!p3uMhEYMlYee%x(HxiUJyvUJ#a(x)Opg)n>Slm$XUK(U!)J)0*x9UHq{Gyk5~W) zKH$*jzxHdtmguj;vz`AEjqB2jFTO~7Xn^!CKa>A6R?jYTGzi$7Px(X!W3+2$?g03s zKl-Cr{U`Jq`$*rxDnS$*&GAOPsf{%W95M$ z2SL!oi9iQg@({tE95lM3@1X19(c;Li zuXr<1VGspi?-Xc{8PH659G^~DYz96IitBgOP5QOqkav~GC0v+k61sk+Ouk5KY-hgb z{)-Lh`PhyYJ5u(lDat;DPHT6qDWKkEmMdr78OTJqoZx~xwY*0>rja%8e7^6iSWbhe!U;cNE zF9BR)U?`t085uCLTj{s#DW=R*V}X<7hu*b^XTAo&qRo}Or$wK^o;;Ur{n!eyjQ@wb+?Va@f3>{4(?UTo!JQ{;)#t>@e&&2?H;&Y~;zgw>&q z-pFiyr_L>m8u*676qw`T9~Cg6a4s|Ou|%=BffqmJ+GaVM=xO1*M$S}5(Cw1Xn7w0=D6qyQ+*(- zW=@Wkcls3b$Ox^mXZh~&YSF^qwL^ULz#QN|j6x#|uli;Iq>E@CNB`Qj@gxgiv1li_e6KWZBJW+H z`_d1!f!(k%O%D`5^0ZnayJoWgF)4$3ba8@w7N>28PL^B@u$;dOzPelY>f}#3Wx;6} z10TZ5k-7o9c51AXt?|qxZIkx&d~84V@)+X4s7L!_U|sA(Cd;iusc}Y}C=V_-+QRr7 z`W|h!wTqB#W#~*%WlyF!%SOs&QtzSTwREeC^p(+xWo6JV;t9h^=%|5JEPeuJVyATd87E{eHp7O*`8;|- znPO|B)b-L^I@LKIvawWGljYWg$H*?<_0tAuTfS>-B#!iW4^G}=kh%;{OUlbL6WzU` z3UYZYGCFY;dMW2z9F$3!bd{g~TT+%~lHj>d2Dpsh#sWI~&6_vV0JuYU_WJ9u zU*d59pDpzB7ry-Oig)d7Onw*Bw`$Xf&V6YHo#qvvo#Fiew1xABG?XiRvg{qU`@X`K znV+P6&_WX6IojN~BA9rx9T9{uMI3N4o^t*gK_<}5(LiB1Gu$Om60^mzV|J<|P8&SY zg@uDoK*%(?x5rp41b-e4m;p#z_K$&@gApSEC1T}z0*Wwnu*}H`jJ~Um5G8lma3MZ8 zAyRrMn^N&jcFvw-gTf})iM*Fm(r}AT%E$rMfM;-XzA3DE9*^l-uIzLW*<$LE4u?1i zJqK?hfTo>`Pq{;)dVv!^QZ5ra{c}vGyE;G@Ah<0b z`K9TApaW#=YmbLI^0s5Kvzi1=>bsA3EZMw;o&kck&_>#fA9+rCx!Y;|poDqSQQVa^ zWTThzx+U6{GTlyXRlO~jr#~l3FyPVHeoaBRsVj=1hwQOS>&WvZFZ9t}-N>^}z%^wd zz`Utv&m9nnr`R4-FZi9hC{KTm4(i9yi5%jRLN|ZfLj!ek_zpW7x>Xm5%_i!I1JykE zc5NOyVl6)$f3tM)4|xZG*&eTq*id5P9uB+&E0;{#aT-$Ei)EWVmdw)jj-L7-Ct>BK zO~nyzj^xJ{8T6;lvnaPFLdd<^uQaTmB=}*>Mz@?h0Bo7`zV)5A;&ItE0G?66&yG=J zv=Mw7<(-iD*pL$z@18qB_1XW*8QU*bi6DV@Yy1Q5mfJq_`8s#(K;J=?19Nw2yvMs; z!1VrfI2ce+F>mSmVI9JX%^vkwI zp9qI_eMtHhLO-@1T$CVzt9&Nwvb4-@{`j80q#&gDvygM%G=%v00CoT+B^J&Vcu-StPPY^-1!OPPrB5Nc6IA0BY)ATo)cE*1>a&MJfzi%65ARuOBKK@qyAzV#sa%riV?L^)hw7 zw{h`DFVCA=$KBD^iJlyNq%1MSZ4hW_8!>I|p7SguDCFXAnFdL9)iN4aeZBzZ!ECwAa&~9 zJQMIs^+ktrB8kptsnFXEC2A=+l^|^@{A>gD@W!2yLE8Lc>+-_KAu8qLgsu@D=g(vx zo#WfWNLwrVg4(`twwUsmlzOrL$*?B%={ka*<~g}bA?q&iXz7g?%a2H90m6|-7ORd6 zBqLo^#g=K`7C*G_9o`U=4gb?FGj>ep?D(d2GIDzZ%opoU(oEWh8ZtLWJPxI5Ekgmc z0ju7|6;;r8Q7@@w9aEU0%cKvm-6*56OB!0r|Kg>38fT6Tfxvu}>!p&|iu81+17QQ+Jcqx-T@ACvYafV`7vRe>zO#|0w)#h(wy0v8Ja zAC4XWhg8_o;@d4Rao7Lkv!DI!;b(vLXV3V4_vNqft;uK!=rD|benU&5J1Z~`})_u_R7azc;P?6v@P8BNl0+8V=%MhGPsy*%m#y= zcjDI|w~$wm*g6ld?U|fF6e~1}18wts_9)4qNZ@x~2cCh8C=%WVW0Q2}yfP8=Y}9Ll zB8= z2A}C{k%Jw`Zm*AsMDlbzp;cL>MO4ilK5b^oThW&ek%jYg1mG*f$Rg~>V7_T&R1Ql0 zgBlJdJK@$2p$WXsLZ#|`Y=PdlO3&hihVex+(h(<`;%38>yx3D;@f2Nn`Q>$v9b~36 z2FtC>JcJ3JaD7v6{0q{q^iR?jS|A@Fz60@g4AZ6bF;%^LLi{+wI{% zw-XTaXW-?zHgZD3#LCn7EMt@0xg0x6fAj@!=nr~kXCRV0G5D-Q4hOku)xo!p ztiKFwHBxx#uf`!|82etLTvBK1#d|ebuGT=9GfpSIUBmwA){*`N&+%BExrrlcUB;OZ`K74rp@MtOPxmp!M8j8y8~1 zLF17`p>gWdpZr9g`xgq^#@~di^Jx)dN;#OXyx}XpcJs)O*1OK}3y7I#svqe?M==z> z!NFeg;UfCm@by1&@P{pa%a1IsKdNjmHr=8Q$A zSRjiM)PchZURq}fz7L_qIMub?%3G{F!wk^KW3^5aM%`GTikYlKCuKO0Qfj`G%Vg{f zZt8ywtL&v&zcwG5kqd{2($))#Egy0EIkKTDklN9d=hjs$+-+arg}5}Wuk?4ZzkDo1 z`rt-ba-bFYq&a*?caQ3!&aIocftl;~@3gS3vuGakaT{qzLLYDSr~< zxxO;~Di!^iq@9u~GDILi|6^aUWQp&@##D?fkh$Xv2j8-rh6y{#P#fS{i;BWu;c!!R z&?d)eWLI8)>)KVfj2VPgM<4s4+?4aE1~Beob$bKs+}+9Cyfios6JPeHf{JzUE&uqM zk2AX%8~sBY6O;c-G>%isY&d5&oPYYKe|p76 zZDTd9Lyu5uL${<2x^M=u2B{q{`1xbQHXyG~qv0sD%Y!h$3Bfdj_o~v*4VI>ZB2xk~ zkapMvL^~^T8+_p504jGU0?eO%&^S4zGk*~)G^Nvl1Q{r(4!#7%qq2W6t$YrJQTD>6 z!?yPUWy(0^+QD4HW^gQ3K09U3Ewcj!EpJOl9)cO~b8|q`;I8ic=*U{8O!BdVt^6sE zKCv_KCeM${!3hmJMDas6a2e>Pqs*OZWEq$lV5x(5AM>ftz~sP8?glu}_{O4jj*;tLP?Ih7kpl5MX(SFdb756{;-#LllWUExlC@A|t4<+Joo%+(Rk3!b>%L3aS}OZ?ZuD17#;Pa%RJNR z`w?=E?>W*kR_b%!(N|ab`#u4A2&)|)@{%iQ`uK}BVjY>60p19F@0?Nv48rfR2%t=N z@7z84&bPjk&#v9$D+Z^Th{=n#gB&Jx)%Q4w%nk-UqxSRH&%i35c^s0!&{9Q7&T0$L zaq{-ki!ZR~{Z#cu7xkI?^QbQQY4fzF-RG=r%Ys9L-F(6JW?6j-NlG(|BiQ3O4vQ?Xkm(%gCaL8r(#xv!Z6uiZcLdx{Fmge9EK;p_% zc#r(>5ws+J8)tm$zr0Lybf~1R5_IvRdWzr4AXG&P&KgIBzBa|4kg1Q#TiK*rA1ltt z5*^f^YszV@|qK7n=lGoSfP8ig;! zARzesj4uH6#XAS@9MSon`YAwn0JtN-#{+)v_kQmc?$X>+>}mX4^EMFEEdALyXX}tb z*v73K{9nferYt1TILT{!bs@myK-Gbc!OKp`Ntoml#R9SYiGCBrl;verh{?4WOBQg%Q+crMxC&qWq*lsv zws#Q9XkR6~KkH~6Ga&R_y5?)+P$Dzu3unPoMu=u01R)2XOs4iGD9ro<2dxaeHF@YZ z7)MtCoWxjO96QMd@LqFnC$t8)lqIMhcRKQ*vozml#xocecWk-ILf+7h5yh+g88q1; zSWaIOo#iF2c|$Mf;Cb{X&!O*eWl)Ciaos_!x!RTIp^?vl?XqqLWWLom199M6ufo@d zI9c|Wf>*6qB+8xHWI;{+rC*TB=D=;_binO^&YyBd_RuOx{b+da`lzSvt!-{-&2iu& z6|~0V)WyMzcv=A39`axJvs@aR9Fcmrsre?`lQPxJ3kZtw{MAmvv-FmoiYv5qs&{!U z3S=V-LO5yid|%MXu9{7@+5;Iv%7InmiW7g^v3H7uaZ&}ylC`$qbhN(X-@pTF8o9KA zcA6hfK$&*KAC}#PhsPG%zWtrIa@V{Im4}ljpLi;c;fwwp_*sumqJ0CoTlsAdzK7)o z+w`w9iIS%p`BV1Dj~;&h&zI*ZgU?vo-Y8`vy~?=5?u*PaGe(WvT}N-r-)9@Y1I1^b z{YY?pe&59)cO2Zf{sb~UnaN(}1*=YO@K}PA^jq)V%A)}&9vp4u;|Ff-7Vk1gUrczP z#|Px)px#>cO)31LP1vYx`%V zVCFn=mNQ{-;T+vr@zP6O>==I*c|a)RK+$SIVrjb8<{9>ELk)S9!d{x?NIp2U%cYmegUrH!`9xw5v6}jLjvDH^(W(CYjjU82oygSbDibdW z{X-A{L&Z^&wm<491D?hi?O(brR)nFcyi2AWwSkjV$u^&Q=bQve=+WPCmAbPIeM3J? zTei^(f`8y89d$__aPkzX*R`4DCB2BWCJ< z!>=}}-T{ql@;6j1Uu9f)mPPF8gJmXP`y6)}RDShxK}-LupGrqrCj}0X%nuw}XXI@% z-Y8%6(tgq1wz+gjEd+Aeto2wq%okL;9fJatOc!BRd&@-J9V_ay$d3J%Ow$I(zo7wp zt6-0rAzS?;6S4wk6>>x5;DYXPnz}O266NI=S$S6tlyeOa`Lw?MIvH)o7nfUUTiuH8 zO-uUHgLn9u{Kq)x?c)5|=Rg1X6L&&??sK0z{-umAe5ThWj`CPB_cdMp;Gr#=?a z7euuHj!ax=BfWX^=82yHq!Ao`@+W`t{3m|mCr;e~KtMV8J?DBzA7SOZdnz;rfJN>Fa&4+)*cAY|ul6BlnK z)dZfqdPneDeNtECwo%$~-|iv?Eq! zGYHoH04}~lj(S)VNb?{b zTJYea_Anr(jO*c@GCL;+O&Gp*3*Gt@0Nm9>(OINvXC$5c$hQMrbU6erfn3^Nj|>Xp zwfc-s%3+#8wwDg*m1B};;_-hiAf!Vht8z}g2!AAha3(MH2u+XLG)Cc1_?J%L#|Gj_ z7wN0ts$=sfE&jkrt-j>ZwlWjg1+#U+BOj86%+Q#DrPmd1v)y7>yN_L3e@qB?9H0}5 z$1Kir~f|t&0JLu?;W3#x_OlVe|-Z>`~uny$dlr zIZ|#5$bhHxHk$I~XL|EHZ)Q;KD9W7?ckkZj*>fhj@Yf#3#9UiP+#ON3>rBG0uSvOd zP&07q=+CboJm9MWK1$$c0&}-dS%_l~xr23|1zfjJ8yD}hxZv~TPAt50PdvvL;R_v~ zuXkYTKa=s$L7C4rKg__FILf(n?sAv@z4zV;ol|IPmmBcDapOteDex4F32y!G7Tirv zcOsy(&l}(4vudo@p=E*d9x3;imnY?}Dmra9~pouE!ZnZ)NMwu4Ri(e95+bgqH>3X)0F4JYukv4 zqmy8HOcK^hY3z7T`e--!F8S#T;lj)OwtP<>8|8;`}^Ll-Q`&N=%-7! z!I7La9Xl`0cmDtYKmbWZK~&@}Fa=}d@>i~%iS1z0(C0{>FMf6mWFfP$xC=hEO<`&e z{?dlS7eYg0^paU@75M6jJZz8dt_}-lOjE#}#*(uAe~7S~9GgrE537j`&y8$ex%Q?U zj$@>)aF#V|0MI&bIG9s3LgCA z1-8J)G(9(p3+{QZOLP8;?@xc6a_zi$X}T;Z7cQ5U9sc1T{^1qc#wnjp^(E%#zR=vA zL(s{tWfuYDVgDpN@<-X9{^_4SaVIo){u5-lNh%m1?HjzfNRQ6~jmVFW{srY)AP((L zfS>!hpWE8}zyJHcpSTFXGcb7%fS@$GbH9`6V3Fhi;*6~{+ov>G1mFel@1MW^`s=T* zV8yu82w|wS_~q$D!w9!JHfLx*|J+m7Tw|MVF&N)oYWup@(_~dGF53>ye-YoOvVfX5bPC4T?XI zD*t2;?$DL5c_aIr?;WJF`*W~U*_87rFfYC%S2?AF8oFciN|u4>bYvqB*ebVp70}>m zd4D~(#OvWN>B=4oMdYvLrs3nc)Xk5b=>TizsaGK?LOZ}-hc-NBBDQkF)3W6Q8Yr~q zF0R+gnY$FxtJmfYUSZZCa>1Ktn#GWTRZo366DSl>56k>nJ<_cSYePL$+5Fl4hVQx_ zJew2e8NAe9fp-Z!H4akoogi8WkXUv%@B`qMxwB z)Hvv%*8H)YK-4-5<_6Lj5}n8shTo77*NA4)91d_ozgf#hod^_W0Z0EX=7sly_b&Y% z-X`wEUc1fRZS5}HycjQoPvVsmY2W_u_GzC@bYN?;T97QV_+meI3OIq1#@ImJg)`3` zT(|h7-Whk`gO8XlJ~)Xmxju1`v@1<&?8jznS9{1&?7Voi5&F}SZ&+$tJAWfs;NZea~uF4 z<0Qo?@Yn@LVaPMvNzT}YOk<6o7*p1iL9{e$(@bKFEBK^#$*-i=U)sjf-32l@CBHJ+ z?pN#}xA;8@Bu^LUd~`+o&CV=^7uI9pk`rI`Oxi79G{Vw4ba@KgEN}%iaLT1tgQJWy znG?zdu^jWae}tE;e$!Z6y|k|dkq%p;VQe@ten_NlqC@=<-f=)>H@xxo{8Amnjm0WZoJ zGmKwWe`HxQsJ?YF^yCp4IGX3XgpMC6ENkvg%<)0?Ni?Lf6hw*o!6Z61+)X7 zKzE10fgJ)q`#)krYU(DZ7k?g;1@@Nxm>67;jU%UJ`YwRA!ga#i|1S}Q5C8hF|LTjs zXmjTW-=Ik&Ij4~@2z}D;W2SMql4gS<+4}SKfZzF@-}ygitAj<}{RqT}P+HAGktae%Sts4>d!DFuWCRA}( zPm!|z5p8gXr*cWn_X((*-3M0R{-9sUS8r4=b&On)jlMNv%4?wz-gqs%*hzR( z_1NVwzx=D8^pBs1cj7&`GpQeWl@*GV=WV>z3V(z~oM+&U7uL)hTaG-Tzl?WmL(46z zjFNAuG$t7rJfFBQ`5pz+Uo%MH!T~h2(%!Ak((X~cy-qJ3isbc~X&48WCSN4zV*}^x7*PJ}SABm#`i0!lzroiEPMO>zRO1RZpSsariQNoH zUA(xBOukUlbbl=>Sf?OIr@ToUI$p;>=BF;jXkB`Z7obm|EJ#|Dl$pbw%-0fXH!_WNV-!4yMz*ZKSirc)(HGj>UiKpkL92dKkvo~M=(r$t< zQSmx{H#kO@me;4p_bm6T8$2_#2h)b&$OFCLRsZ%}JxAA}J?$TSV(RC~@kx$WTZ)%mS|?6W>R0t!W$sH*XYozMl1+?(k{ScY-{Vx7I)TiBu<{-O*hYk* zwnI-{y!L2}Dt@WT&-UjpIAqWjE|~Hd|B=nuW!Mc(>3%Trh!F2rldqGsePSkDcHGcL zwMFVcK};}N$^=)rth-5(k!x{0Pl~;JKK#ed2A=*ety931ccXlYB8Jje1@ymp@->7<}?@RL-?! zBncY)C?=C+jfk`9A|NUF#yj}dYVqRv zGs%6SpM3M1-+Yz)Jf7?#GD!t|blG!p@?JCgQ+EdB9RTn<_;mp6aQ-zOhxY4dH+lA- zN2H_I!rRV6=;F_ZZhS6D*I$4A*0Ixtf3<^?KxwOs2W*g)eW?0| zV6F|64V4zB18$Us4zdKMIyVq9NGl8Zh!1U(ax04+%XA7U;E!|7*}aUi7PMZ3$EM0oR=5v{ohomP39Lo(wFyNE{wPzvx^R|G zGH|tD>sC5mYaelthXc>i(G>Dl`!(2(jVKR2Xx2yJn*lik3z%2`(u+OirhKmQXJDI4 zbE9I8{1MiS^6y}ZyJ;G?!C-$mCqOb z-DL-tI{>`<{t!5pb7DvDXdbv*DqZ#9d+nL@tG|=}!@(C7s!Vm2rf=rCeU82h-~qb;x=w0yj|kdzbGSp8J2{qtB-Z^Gw^sHP_AC z43ctqE&L!H{TV;qvkJ={=(IcSVG>{8^0?tdZut4%d}6Tv+?Zh7s2>EEI#gYC$Tjc) z)5><5(lsIqGkkp{NcPGALh8k`Jcpezv;H$Qv+(0a14x&5Z6=8{!_e9Io2l_hv}LNr zcW$YRQZ(WJ!uNTRWRvxz&8A%u6Rsi>uf9!tgaML);T!!u zW^fQ&p?=z#Levk9Kj;QeZ6kk=+Od5ewzHmi#`uu9j{Wf2noIkut`jHVX+M6pldOz4 z8rx_m_C)+wCzEwINqi?$$2MGLv5B=M9eK#giHY&WNvReD-xS&&BbR*_cAol;K9mgq z!nGeVM25HZyL_*UCDuPkx&^jQ9y}w7eCkJmP%SJWXk?SV^`?JY-!4j;)LU7O<(PAi z`co72PYs6m%9#UV+6^X&qdc(#I(u|1m3l;m)Fnc7J`duuzji@Bs?}*m>!fkqbARcR z({HFJL~R9XSlNyF=u$f(CFd?oHdVjKhOp@);HU2L@F)Mq6UpiKyB|wa-&Rz|8&h}F z{(!VCawA@Ct5PP@A^_hyudgV(k9}zeEo#alIbSj0EV7sf&&c7q_=tqO@$KY~o|aqB zXit{bK#$VeY!o}wRwfos${Ka2fdhNB> z{On)qfxAwLZqGmeeBS!cwT3n^H#5SSK^1WH5N&|d+v`H)!R zE^^vx^1#4$+D5+GR9u6ev>0s1c>eJ^ztyWw2Q|1;?!Z$<4%DOr(kPRo^i9enPw_a$ zZpU^IZfp_S;0%v;eBIV6E#v&S=qiXN!YuBTC zjBMgeDlKp*+0Pe!_=>|BRGM&+b~KLjj?9L_Od^uiUY8R53TzfbC$s12+B7B9n@<09TGx#w6XL}^6mH$oNiN6nBKLO}O z--QHWP3pVug5+q8*cR^aVpsjy#|B&!xXKInd~V;*_W1~c@?7(s1nPyXJ}aNa2Yfc$ z@tOSJyK^rw`oaB&obw0(QeE{c4Q|ubUm4iDlfX&7x@#-9$NEgOM!$3C_Q`kOew&Fu zI|_@^w&Y?L8KDs+mmyM-WO&5mfvfFt5FL;lWjJK# z#iu{@2_9{@5p=+-PqWNl~~*wHhY0Kz)9EBZNM zw|`q07N}0rw5wb!*<)8SY)6%1*I8UAiDM$a#4xs)e#*MC|DX6%eJZE?Ox*E>kmM_i zwp9-&%Z1k-jzMCR@EEZ%eQYirB=eADyp#r!!KgXeR!DwC?Nv8gf^rFwEDlc=407Qy zsWe7@WJDrhsSg*9SCW~h02kiLSTeR5xmR6O*AG(W8i)RvE1PTI!Qf>cjcP%F(Mi^k zeei|T-<>Sm56IEDBp>CSJNo*BnZoRPv`7~M}vi@T!|$CTY7V@pGi|$jl;s3;Kln3+HY*}xMl{v z3lqjK?HawXQ)GwUa)IW@->@fbP#(gli%C@-vziy&W|NnNsI-4+E0g7Ex5Dzzwio*b zr{io-tuxz5)6|*$nswTjQF4kbtpni#Z%8D`r#va=nqL;w;1#J|{;^zHwB6Wm$(OR| zvg|4&G?X+++}^#9?9lNjA0!8@ychlC@~3>Y-8$b25NTe(Xdbj=1bXV%Rfdy4{^LLX z0t?CpvH5a|24^iRc0d2v$3CY1?gF^XI|9zA7#BrlI%} zz%(vs*_JQ+%*;DYLQN`SdG)(DO{(~+dxTVcHm{qFkm}XInP{^ z0KS5UG$wg24LfIZ4FcY|a%eI^#vmn}fq4r?T+o4mq97d{%U@b16>+L5eDYR6lhzD4 z%$J7)C(kYOdV-?z$k#lRfwnR==;fZG#tBRRR4)fCV>9uj;cw1i#x)SZtNxY|qv`yV zBNIGJ5v!A2`vlLCJssqfm8Euwrs;fylOOVK260fZ2-=Z3uo^l`woQ(9z}RGDRyJu) z+VYqDQ!b1(NymDaL0bm12q}6@AdIrCj7UY9n9}tZI+l|>pS+ETgs3YCwytVp`?%uf zx{kQf6eWu$uUU!=ZAz+ec$j#KLf05_gQpzUr?QWn;*D=v zJ_vK}k#1BYq_FZzBORkgimb{aSxF48w3L8RUF^I1dt|Hq#1TgRrdB4uXKv-; zpw7?vouBbGe-;l+d;yG4W3!lW=T;U8e0-pf4P4_7|2epJg0CGPavsxiPK4mx0k<*6Sh{3f^=&MGRmwb90ctdIN<%{W zwTlwo`G1mr%sXu+iKRMM9@fGj90eJ$xXs+67ztTgy${IrjbPp&?(}md8ym=$j@= zc`lAVUH{CTXGEwB;6jaR0ZvROhU#M7D8Gf)WBi+P%Z3+I8NJg+47i`EGd`|(WeIue zYoZ_w<*U5!zn`6Rn=QgesexL6oS+xz6Wirm-w6#SF-(h~wRDM2@{3KDz2t3qVU)es z9^G-n%$T!PC(4SgjWM21UlH>XKdOqpT>FO<=f*&jJUEv?&yjZ$MU*Lj`z?7&FKv=C z?q@SMMK2-~+01f?XX>V5NcpQ8J?GGR@>0dYN!@V>to1tfx9-=3--(|j{4JaG82YM( z?0Q7(SfDHddTKI8+1?aH7=_J0V%Y5;RWdq`eciUY| zl8?x>9i+p{cxaq-5-Bf#mYL+wvRULCc*j)`%MGl+U;^I(A;!{u^$-%^zh?r9A>o}Jdo^YZr5^VG@(CgSU`c!t+o{*`zp1a$adb#bq4IDV z8Ig^s(3*Ih6Lr*-kMO8nYsR);$~PF*{l+)``~S&{%-{2oWs-vmpa0jt^kJ2kr*(W_ zSHMGF0(gmej_(S1$kzW8UIKXVacJI+_Rx0#um}(t2T$CK^!O~W{Q2=QxS*Uylt!?e z`{eKb?(cjDz}e6I%+I(wcIKA=ocwDm8jTZucLD^*M#PQ)&(o-cA!Qf9pZ(dNed*qv zJKr=ctj3!{8z~L2y+^^@fu(VmRI>S#0RvtTc!}6#2}W~m@L7$XM$8*<8<^5b4h><2 zv6IZ8Qwj#9hGXJqR2lHlwp{0f9jNVW?fgu3I41K=1~|{XlvioD=j&2T~WFGmMQI=xMMSEL>Ayz{ziCY?!aM} zGdQJ@6=|+L5OdKuI{2^uQhUG z@R63tfLWubt%i2pE;xgix|A;RhIRoH9=v1c;JZA_+jhU(aSck;6%nM_*wE*0iz_~p zaJKzNMk{)yp{tA|k45Is&*%~AniW2xAJu>CW;?ybgs-+wQaNodK%t z$8D<8_QiS6@maoWH+&Ia^OjhV#ZU0%jyQGV^ZHl8TMH-Q?}Yv#pVfPx38mZY@A2Y3 zv{1Ov_x%HT?*}qmW74i)`69nd>;mvn1@F9RV{PHf0kIP83wtUvGUQmVju~tx z)_>~dsLsYlIb!#zr;j}M?8!?Xdx7iJR*F+5pH;unmlAcS&X)5x=8gZ29}Mi!_c(MQ zS=*_>vd6%ym$q*FhnaXx+B@Om68MRG5pw+ze_mueI#@+%#Fd$a0DZU!9aIwqoLeam zZGL1?&d3eu^rHmr=q2M`+YcY$r0+qP!414RQBZjrXM}Yj!q}R2 z$XrJoLu8AQnUpihOa3s1ynPexQgz`~ousV|&6hT^y0xA{?WRctZ?ZgzJac0!vXs#n zwfPcd-k6DvkX1A>qYJQpU8Hfii?GsyBFw6*JdK0KwMo*J&JqXJYE!MEJGo0qiKJ_6 zvRVC$qBXQ*A(bz_5t+VjkGRRu|X2IEFP?k+g z<5;GltA5nu(ZZKGvHd2$Uh7T-+gtQT9*^EQ@tE-hARtnA9y$(Db!-}2iLZWuN0+v5 z%hkX6mYHG)j@nW=P0GG(OL3L=;8|oMXiWcZJqT|~odXyg7)Z{3-y?XTBwfqvRh3V^ zgDcX+2lGf<{VRbB*#Gh`|MK_7KOR^1#pSM|Rsc@y|Df-VqEp@zkbHIkNXOlAm)QP) z`1zmz`K-$Q?ce_GCAa^ZI3mV)O0q8gJSGdIRv#1X3$owG0y;O7{_~e#e);4N{@@Qz zUU}t}gI@xmk+=)M24-+Muu^u;qXB+8%HF^b!QtQ+08aVYn0yZG?BD+F-~Nl0NJbi% zET`$%n47k3^3t+#C7bhAK49$>y|V1Md?v$jn1yBlF-c9D{tQY!r{zi~@u-6t^H!Am zAn&ZiTh70h85l#hv?#+U&Dd4UwH=oOTLa+G^*C}z7V*jR&Rb<@XE*Rr&ZNiyXRzx4 zQ3dG?uz`B>2bvxlNTu(fN3lXD_Ne|tR{`aBe2w_qs;lM4a{7&QvxJxSlnJL?4Zy2Y zgzm9!-n|4ZokHtmT}Y7v%e2$bOvqn6;5YGKR)MX|fg(rVbb{DNSZQRy;9^F~I)Mvw zp$iv&(-}?YT)LGLB7+jS#_kXeZUm7YI;2D596N-B9kM4<@D6Qp8Hg;$QO4jnkpZst zu=|jC{7lj;6K$2$di2!#&LA9n=dps+C%%Tq)DGnXonXTW9PhfK1-CX@XLZ`j#Nbzj zNM6SPrNvCdOi`sRz8C!kcj1W}nM0$#EF!!_jl44;5HFd5bpeF^Fl1OS=4&?x%1%g~ zs0cql0MhP)zj#~k`Lv(Af3UTSE?YF*ra+~M%UA*!xm=kP2 z7x>guPqQ<#B{heEg+l#|6Kj#)k!#p0+$r$9@<)XX3a&da{*E zZ~T*U{m6J#QSg8C(2uH2b(Ih8FapV2VDa?BNmJimd$)5^(N-*3HUPE&xz^9Z2d-Mg z36}Jo2!vYXJ&pqopfU8q^JX{k7Jrbc61kw$34Rye+UD%5+HT~+dGu*rtoTH}dd$zR z-@AZ{8GWHIQqQ&HCi{k?#1os_9-;&|JxVN#OTejTuJxTzUUHBx^e#v3;amlIQ>d*X z7;vVk-`cMAVtIU%qxCS=r9P&ipL6)Dm;Jst+9mn=_Chd^ArzviyQTh79DTaH(ig8d zDSXB@E}Ai^SH-lOp-H(i$=7^SW$HKyIpRJer#!WJtc6OJ+ioKUxXSIMedLv&qHC+h zQhcUN0-Hk6ttaCjy;1a!y5!py##Z}y$bPEhp78@oP6~Y)>xlqbAIe2?6^Y4lx2aF8 ztWK*vp_{TV_+2mZ%vW#yer!Jc{ZdKZ@e@0CtfO6_jSA};dE6NwZtHQzcY#}Nxjgz9 z(>#74&(u*WNS-F;My1H*SqvM9v3c9t$cPxVWevpN`lFL#&j7SQOTVd~mUzLLY~qW& zUn3kxvN_%M>6oS{9iaVk#@93-8D-5olq9(2$);`&w6RyAykSOvxhUE1WO` zZ~mNnw9GvDc;rX;m|Y~b)nEP9Uwr|%Qx?wsO!f0MM6}hamXppZe6Ndm2c!6jGUcn(@tt}oTKqHSbab|B8JcIHKrVXwQ(hW$$I)LUXKO>6C$$&Vn z=*oMWlqXO&SO`~M4N$_F3^4v{nR$=6C0*h^DG0*)1M55^=cTv}c6R2KDRlSXmCi%b zkq_RgW+xUyK*Q&^#Bm@f38k10htmj~fi)LRwb$5MzN6C|2eLeNJA@CNXUnzeF0%s= z)5vMvpc}BIzsv>%*TSXV;x=RzSA0|JFMUw1tt0W8;Dm2vkOLm_=dN|jLV3xsFZ6UF zA+lxQ;Hq-;rbF>4EeE^Rr+LycX#PA0gphgN9I*JoFwN35YJmW?c&dKDTGGd`cJ07}=SoThfrIbDB%XiF`e^9<;fr@B#$@9`5ZcA^b8b--huDdp>^Ew;P}puLlYF1F!bs5l9_sVi7DzXLOA z=pW6q4GC)sPL1S6;AELLv-EB~#diu1+&16~6^&3my`1)D-Q{kYbwhq^1MSMGtm@C5 zZv0-EO!d7)iqNr5jBhwm#m#~*taR@3-2At{{hiS7r^GI0g02_j?!CJKu#p3^Yuqts zTO!Y?Kf#Lu-J<`!Psd3!6MAi;&DP?R{FKdI1uhO){D7m+*}LGNJ=DQP00d{!f8*qa z6L+@wU+4UCKC@Q)7axCDYGm_SZ5IH1bHBR!0yGD2PV!C4r0=+35#JC7e*WI~D+QEa zwtrGlem{UAv>JcG4tqD94$(m zwh0$SKK03uXMqAAA-6s<*p=H@(S@Y()kQi7^1@2kruK0I>(Pnt-UbV&yiR}|JO>uB z^c87%t-UxBzZ&nA$#d&yXceybo|~U-&rZ$<4!RUbG+oWQa`kGvTtKVt)oa;4bUTh9kAKQ*Tq-}Tgj~XM9ofeRnm=?~ z_wwxm%Vsg9iEM>TK9-W^%F%{v;m%mB9Zi+r1CTMPhjYeARd#>KWpbWx)v_~43DJ0mx|bQ;SL-4fMF zx%`cLB=qu-{3tOrg|}Wjngml1^H>;%O?1yudg=FgVkUfT`p2n1=kCT`>8bh&kEeMqEv+u?hQjic z?WA`5_C0-E)bY1-fb^}at+L1fMr2m0C^r1CQuUxfxyq}yV62E3(B|jS-_)IAvWxju z<{w}8`G4hc;_vqVc?5v0b6^fW5(n;qoy>xXcmCC{e)Z%Re&H8R+}-@;FMm03DdZ0_ zsNs>8Q*v?qur08f{)bKWg5Lk11#Coo2_SaAdGqFhMvyIp+`XY~ogaKjhLeAG0N4=n z9ZjG2_eFqy4Zu7anvIw--s$_l|NFoHDrMi0pAE;L-^uuzbQwThWnT#x;HI-lyA_Y0 z0PXM#O0eO?AUZ+FHYseA6O0A~a||8^nz<9VfH(-JY6g%77R!Y9XHacm-7yT-b~4^+ zRd%Ez0PlnS$N*D=E5Aj14^mR9PL);O1XHrOUcIw{+%)_nLu7n}&K88A5&R4SLD zm0en;XSuQmE<8r(mW#8?R_jX6B#sFQa_k@Q_%DA48^RRMbAHzO;wjy&96pnjagu|N z)??+gN?WE+cwW6kw=zRC}p&%8|jrX>6UvhRQAv%~AZt5xE_B>a&j| zFENEW_s-WNrPRCnR401%!r09st4SM&8RyAZ3Ca!EM69L{y+y|l^4B$ z+jS#%fG9sYXPlH5YdNSS|IE+p@jrDHre^Q(GuW11>}%(X&f0sD@FVl=L{K&%7Rk^Q z%(i4QUpywfoc3JK4))f7Z-ev1=HPEcQmiNP*tobZhP6AYesLqBZ@A+un0@80du z@=pEx5ANkL26Z>Nd*JqMzA!*Ld*X>FGeLKO;06m9-Ys_GFW)D5!Jq@ZH{blu$(?)b zMoKsE-j&8Zm)%a%X-Tbk)EOxw>k8i|AlxuH)B&s|yk;`2m;TMgzmsOYMulQs@7oXJn zD^6qgqM7zz7#E1ut+FYHzoFrA&PPUR^e&~!ue5lk41AB`5$Y1rhKBZ^^9?ncP(Q2f zS)N~Btf_sqRc*uKR2sE5!7pi0+M|m`#u)oyh@v}2}$|wCU-oyZj$qbIm=kBYC*WPgz!qXjR`~Nj|MPqf3OyYNk0TWi!= zfz`51Xzaie45Zsmcp-Wr)G9Xskt0X`7-%Gz;|CfvqCs+#Gx&MFZvQ5EgmQbY^xIi9 zD7Y$`l~ITrT-lPhDL{Z?XPyJuu$Fm575|7QnRy;O6Tr2|5IFP2=^d}g*Ulw_qtb#7 zAZ<1s=rPDMFN3NEcZmtN4=&KcJ2t^>e(6Y4dWF{}CIhWJq#rml7cP03OtHF7|Co+3 zf(aL}{OzCV{4AUEIWBMj(KCqUE#I#E>XOQ_-xagdY<+SkNjwd`>e0?8WJV5-+;p$} zY;$vB7I=Wfbz5=t^cvA?tI~@mWSZwsJB%%chkR$CBrPWTH9$zf0UOqytt-y++@AQ& z=TRHa`C*@$0NpJ^^e9(bP)gm&-xNDbQvT%uD|k6`BF%H!%0y~rkQQGjs+(+!o{*&K zlTY=P4|%nJx7urql2X;BF2a(>Mce6SD>3mE=~_Cr^xC9uL(g(@Dl2ErukTrB<1-9A zvdEHh?IB+Hiy!?IBK*7-ZzW~fWB>)KE)G-%ZQeQ&I&~05-t{~-&=3J16{U$vgO_v@Hu%m`N)G?^?e@RyMTVe?>gJ@pXQT#&wb>hC)b{E zB3)aLRjgm@)&(WEsJdfdUJ&Sl)Wb6-_k2$8-u-?RKv?;B^zOXx9`MnE%iOv5?z?t1 zUmN(20)&rj>g<5hZTolbvi%=^*ZEq2_HzN@D!T@*@|A*Xe7^Ac=aJQ~1wca`ltWw> zGOQdY1bzWPo85kom;T+p#ZG|tvNIx&1>ncV5O+R}UE>ST*`z`K3}WNo=GIMG-gdSe zA#Ge)KJt<0PCm}o|D9&ra+Ho_@LL>&nYtI(>tnp0H!tTfo`pWI#aW5Vz)|-*yyr?x zn@d$@GE}@3+p{1LrIf?|6P(bHHa^VdSVQ57rNFga@?II**m1c&pY~E7iPg~E2-vrn zj&bsM75O;0x(ETs=!?A`dOPvjAkAz*yOUedKvJep{K z$+Nw>6JzXb`wuKW3tnO|g^Azx%TAWm1DjZ!c;Vt5HInPp75SE#Tre}w_(3v=dekWK zSZ$jH;g#Pl`UNRiq+S`r-{cpkph` zOj_546BcP`UFs?=;XS$|jC64EL7|07IgM@j%c8Q$OCFUa_N=DLMy1wgggs8eD{APq zpCapU^1HwLyZ_C_eRm{tQ&QsQ``PkSZ(2%2-I=pw!5bcDEC|p)eB|s`e&ttA`Sf3e z|Bc`HjTiyg;7H?`|Hb*^vp{=;$4CEy@@|1~ZU?g2^5WJPzX-r~m`i-p@0`hhV0=*q zKO55-3k13Aza9f{d(ElaN?Ema)y;PTod4k;{^5Tqn+6RVP}-6~YsC>8x5)xh0)4O3 z_EOe%w+FNYi!B(XgUuvr#Rr#*2^?wl4LY=2gYT9&l~;mQIwxpUprgUp3S`LIK}xX~ z9Q2W#4nJ`+vOpA`(mf88=qw^jq3D)79(LFbXxW)y97REc9--P`xe#iXAR9b6S^7mM zd6?v>P%oK|H!?@VMN>OjpGv^gMDPi5DNslKJCxCpgR zzzb(?zW1zM^*i+(TcyL55UF;8B%x?@9oZ-!X; zB#`iJkDAJQtBobCoEg~lLK54+AQ${uDnDXBX<`FMZ=@=vO*DW<<#6(>&JOxIcz>t29>d2Wl;Il`?6{Ii>J=Yl9X7|^Cdg&uH|i& z;KkJ5HTOCDE&{E}Di`PqdLBKISy`WoT-iw)01RGAv)$0n0>-JkiD{GPzkKhu$2;1uk(>0_Mk; z%WgGn%vYvKw8?00-pDn_fe|-2F)6-I#%8;ohem=JNR}y+NxW-Uu0=1eLmL_ThVRIM zZ2Cd`h12?jkJBh7m;5Q7xciUE?(#AH1w6F1yn5(^%1}8fUT_s+rAu)56uP+v!tAn(s4UD~wf9m7nmoWb1XA;K61(kLY(0FWW`Kn77 zDgcp0;sw{Cx9A8vyha9T=%+psu=;I^Dr}F~4*$?+z$M1D-39_Yzd(QCYhf zVjYq}vdV2=(lU9Jr+gAWkvwHvy|n(-IljX|{=&-(Tuy6Ck7G}q2^)0`f^_{SLQ-RF zh^(BUF}A6l3O7Cg`7IsSUFrk{jjhUVOjIY&r6;WP^t-0i0W2BUETYnw1~9hN2h=D2 z0u9+i?+C2puMtWe9Lr8WWPbAoVt;gXa+FycBI7oGSv7^c%lBYi8=wpHvoITJ>U)7# zK6T-kwAosi`lI<7>&17KwXoVsy#y?Y`hDm@k|Pu<)mOgqmA~fwWA9?4%tyTYUxpD# zAQv)x7r?{ko_j7eCT;5CoVm><<}8<-_q_i4>*w4MJ@NDC3;*Kq1GK=jgdZTw|EXEg zhB|O~`Q?|--1g$T0KWCDZ=LKKjv*o^hw&V1Gsjd|*Y*2Ic~Q zFWSfpH|%%`GN-&j^S^)l+i$&U^Rz-~yzQt7CKJT8I?dTbTQDaRBg_=j;9>xpYxBGa zjkV(FxdB5sR7p^D@@4P{^GsHXV^FiR$oOuUaZIPMIxBff$0Y6C!LI_zQ|crXQ#Wk0 z2`+pCeFMB@<^?8_PXIF;JnRyF$^wtVmAv`h6>Czj>SliR5M_^1?bO{yUY-u7Ef0N& znp2Kod(3E1kGHytaRHr`S?H3mQ+>w6ArRvny&3O}$J<4jfr~oq0}z-QHdmafudD)m^;tGkF2Ac<3|UQNEFD z5v<$sJ%o-7vAHysOj8GoPV$i%O3J21^{2>ILzAOFs8@AhP`i9+2A^vXp$J=A@Z#h* z1#^8Yhh@tift}|%Yp?pu_-0`nqqO(3QOL{lop)~KF1+3$PA19NF`vxCR#$!bAKT`A z5uXG8CzzajSKi6}aZ*kv8TYxv|A0ra;%m@LwV}V;@9*%!*1Jsnr@gqtAo^(^h^38U zPbbLFKIi0}xA^lumnYf6-w76VrhSlm+Ozt2choJq4(4z0eu8K6Xc+XUmgDWpzHm@Z zzD&?MaaVy05x2PGfB()sK27-U3EM6EXu=w}8}BNezJ`?Wl0S~H*AwT?CDkEGI9);* zVe7l`4;N8B`SBmZhS!@vWrFih*r{vJ@kC0}7MGKS!%h<%Cnfz3eF5a%9=){ha1cmU1{`5JE7clx8EB@Mj=`X#&H#UTvdHTNXffOZ#H-Et= zuXhlgq&Cj4TJ=$oN9rQ=3?Xrwv`tbE%O);>)Icj^T@7gCgk}3AafyhO(5L+wLnbNn zP@3}`$v0)!gnDs4_MSQ<>IUZMPwGnh2_w8mf2Pq*yBYuIx{CmnLpz(F1;mkoy4LH& zGkNr`zR7$SC$L}DB##qRkjK)2_L8^1+A)w^Byo|^yU^+y6p)nHG6-RvG5^2Nc_T39ph78!CM=7YSqLZ3myjH9sU4-ZP*Acz_(*G z+jv+~d&|SLyeSv*&@U@W?OnLSDx3VwGnSXP($)4JtBYr~sb`~;@Plvux-N09Q(s6V zd{t7OUJE}-d&6hRyxLD~C{2pmM#qEYV@lm~Ix60Ny1^1o8ajtC0#fq-MFg4v<|kCObAPnsSLUXg7D-^p`8X%gOm zFZ{6_g_BOXdEIoLt*vuut`n^4)Pbsjj5 z&IiRoF@ri&^wjL&gsS8y$|rmX&F^YGJkIr)q0(*194OUQSe|UZ>NHPTIhMtGF&VRGjct4tXshK$k|Z zEL*ZTSr{{u1&xJ~6@K-U2fx}5M&YGQ3^2zo&CUz#Mot;7L@A0be-0h!dh{oKFM*By zw2MW}18vEQ6tU4hNLRLsE{=mulk}Vjn#3J^2Q9({RxiNVPJky#*Rs?jWr0Ho@5o5g zl=cxl6d1WvU-d`jFIZvU;w}7{oN;;C?XI9Wm~l|$Cndw5iK>exegWXgr#cb8!uEP) zHc2x-bW<*0(3kpvhHv0EmNPWHRyU;6A; z;Cbu*ye6ji?mY5332?!|ZTrfqkKN!+|1MNKfxIpl+=YiaT!(JHCct|Ee2;*zKI^O8 zE*#u~#;rThK}H{Wke;+#588yf^PflbOfAOxit8W%06+jqL_t)LJ?|s}pUA&eu5AL- z_NcA&(HCF%C~fMQtJyex_=&@>GXPt$&(ZTXb#_?>_VqqLPtx{|;y5vcazI#)~e8(p~eUbWOmGX8jN7~41yG0k!oUMo$W<9n#7DN9*d671r8=_Z%*RG(?v zj5n^ba!uO&h1p6ch4OgdI|F`8;K(bj;~-u0BP#^95;6R0vw^QI;u%wxlaGMtyRMNB znohb*m^MwXLp=&nakVkx#!lMGT4kvb)pl$Rv@`HC%@7;f-{GmgxCzTPvG*!>V|(Rt zNBgvk<{jkYFPXF;Y(j=Vc?WoOvD}P5B@HqWd-?$bll#h$-^54t{46^*Df)U@*<{@# zw4+1I{_MaXId`30NjXlL1r1ni7uhRkeUtDLj{6rA7juaRemHwZ&d?x+G8-i;UuBx?YtR!oCCWV!-?0Za-%@5;pMneIWu zG8l#-srq2Wb31#V1Z2KRdowa&>#<`$C*?%D`=o zeViK;lhM2Q%1}AvO)jLPrcP-PI1g>(Y}iK^<9%8<>7K#n=>2PUiE z`mB^`m}DyxM-zg9q@zx`HjEwS+AC-LArFn8iW+UKy%v+gOtD*`%#TbZD6qRTwd zKgie4^)tL0Ag&Vu#y!WxfQP}?1AKMhMtQR#pz>+o$PRBy%IW$PpztzU37Bl)yTsCt z908Gsv}Pp=_o@HpsrGR&Y!J?)@-GN?>^zpSeuq#S#QCqvTp=7t&QDVu2?H?hKImZ^(ZSz5P)53bn8 zS88;MDZJC3`yHP~mi#0OP5i2N)EE7DX)Sx0xI$!!t%i3K6ukky)IW8WM%pOwwTpZ# z9I??F96E@fAcXaLcq1!R)x8i-ct$xyH(TqLDqCzE9$uMYmJ4`MHYDK69DR=Tw1Il4 zmb@YxVyHJhH0`E5sq0H|Co7%c?3YKJ@a)9SVbZ1&`pfD9%Qc5$XGM_Z41S%kD1T)z z$Uk;k_r`lf7VKzHK55GHIB$fDw$PS_tL+LO+WCQc=!GV7h~Ln*z3_cyi4}OKJa|gM z5k5=zp*!WzI1lqceul>7a`>QX<#E3$-=kkbB7ZOftbMejb+=_B*;GRO8gKdp2kN#t zi>-RBzM1lwtJ*2h>RmAhm)E?4lg^ zE96~xxodBKg$8yD@kgc-N4uR>t|r1E{2qPui~r4slD1b&24o*Il707I{*v1>5l-=J z*H&CVan5VbXBfkr0q*1<{^1{X?|ILAT>8JizWiScy)>c4@TKAX9m$mnVpZd`&(4=t zf=_+wQ~TGy{`Dtsc*7gwEHn(Ah~$l51hDb|?q>i~O-YO65RMLX(pXmW)RRv>nNI=& zONvJrZI!!ymR9UKmO2srfcFG`+8Af)t==k;bu{%}jT0^$;u9pmKeO3}aa5hLtW)MX ziS-Gpw&)x=s3imVbu^I?NFAtjqt?=E8kcEEOpic{8w49`(RN}gkK z=KL+dps-&M@G1W#4(rj)ysjXAI;NCwR|3e-rT?x-xP%<~u8XVyc=D@X&1VVYN3dZ! z{@RQqm4Zu$A~UIzcm6%Fl_VhT6(Fag?vu#9II+G;NdBXyKvBuK_*w zl-X7Glqa$D&C3^g*L5dLoPugP!8jAhL~jzp+Z)gx#!O7fuT>6 z>!j2EJL#u?7#PdyT&rKw(^gA%mlay(fdgH25neb&8Gj)D(3$dJyKFom*%I9%d*#Dc zl31Y=Z_*e#BfnOI65ge&lQ!cH>dJMAanMXTiM}Yyewc8UMhC_%n`|D5%@BmFo1BeL zG!A0(N{K{ly8ttfLvdwieJGLU{ltxE(oi2m+H=nNG#t$2SNl{zYixBhf5jk%3w?#b z@{@c5NE_RxY2LJLlh(4J>{hDa`J)`(mquw#ylML82~f_Zu$IfpQX1A_<4emp`h*dW z9|1`>jdGYrK9ymm4TF*j+=@B~x+0MN0G%uIzXNM&maaCWo|CR!YR{r6qwO9iMcP7E z5^!gH@U|3$@=rTirxNrbAg>1_LQJqvJ#u&!uj$r{2ngE1d#=rd3y&jvOHzEU4ZZ(Eo*93?Cfq(z+|M!RR6K+6$g@*@u+HYTqkk!bvNxrhYzj*QDDXT0` z7{er!U&jXLy!L$MzWeU;p@Yl+Bk0fn{LgP?23{k)^sa|*vjryazs+o}lYfB)sEem= z0C>uKnI{iE_~7Yxeb;xLQfabDhC5~Ql>Y>0lFDF3vSQE}o;b_q9snND%xeIgO~3lP zzx%rn=?~%)h{TC-r{k>i)IS*X8@X6NI)-&v*W-MrU>Gm-zyt-LMJfZa<1`&`aBwZw zWgViyCFaIwa)3te;C4){lk$rG7)~cH6`nNsG-5hg8#D1EAI``QM+P%YIyfjX==jF@ z$pLtLDh+LxPDOX3>~Ohw!YBNP<-S6XHlRm7 z`H5S68V~S>hLr4#7)&?Vp$T7Zhv$+#f(T~1c(b`7SfRT$2GZdezO{L{EnH`y(TDy3 zlKIns%*AO#Jo>|qxdOARI;n4E7tT2K*viZzW;D7uS+mki5H6~wb8V6ek;z1AKf~x9 z8A%@6#;c3sdOh;lY6TYBhBv?Y%|Z~FTfu=iPOdFR#W$v;) z<%CvSC0R^oJspMOBo(-^Ys=xvSBP5!Se8n0uFd2pZ-X4eH+kIj=BqlJjvh%1cp{}= zQL#mfZ6ov1j1 zgDEq1_%E;nv-=kKg#rYL-tJ}K1jQ9>8hxQ*erkK=y$U~aI!BCwPW%%r53RG_Wl{wl z?z!i+$aU+K>6On1xY$7A1no0n@-Fu)J+O%wIPvOF)mN~gG3WY-(kB%X1CRdz+he`D z6QIExIFex|zw%r@&M);4m$F3`c2MHIcy@@*x5OK{f@#W2d%nrZtxtEumQo8|HE+G9 zu4(C%_11yVWH6chg`QH4taFx~rc~BysLpC?fFb7Rw+a!X@9|3+#RtjyY&@6Y4Jfak zWWrIoQr}6t@4kCeegj+#eoIHbOcd&*LsvXxkI%7;zy0m+NW5r#UT~wW4AoJ+t23w7 zj_Y^oJ6R@7B(@eFWwIGCv^w}dlrQNUq|uUZ{RW}kRC<5T~gOaDD+C-;8&?7i=O@99TB`qBOU_uqf| z3%~FS`v)IP*_+L7KD;$`W|4rD?~- zQr0Ixyh}~IGDcVFaw}g&Bt9XLz=Y$XCrut3W|5Uep z^tqPZ?(J`VTb{HEBi(dxS6Ota{I+6&Dx@CLrQDYmby<;=adec%BVTyTGLnId9ZNG? z_AaaUiMoUR)G6&qr~UTZ?_htAJ9jspKeyt85?lGY%@v-wr*jX@Od8Vpwwz}3zh|Dw z(|>jGDWwB;H{$DnpL2tA4&q5;CBd_Nh2SEe6U;=ybU>G^(jiyFPm9)u z<}tyD!zs6!EU*mu#~C4ZuVe+soiD#b(B+N1Y|ti$;}9pGhE*560dTR*oiT-LeKK+r zN>)d-n-X3j(sCM-*9@!%NBC6_rre-R;f2vwtftt%=}q@yTjN`QgxNYwOWKu(o9Gb$ zYrX4T?@GCjeM$96n)2%-=`3&cPdO?J_J^1Wgx$lLmaNu2DVxyxt)_3chzQD<@x4#{~f;`$szvfeMVcV9~Zl+n+JjWi; zGmo5PX&tQGP{@s+c=5xnSV zek$7wgEAZZm9z3V;aKaMqHRi7SY@g`z~LJB+Axw(=W{N6u_+m`SA8ohs;~iyE;!4L zGS_xX7Wim40?~z4E*YioH2MNyewrp6I0yTwNAlE?aR`7dyRNnoJHufB;IKh!0*ob{DhpT|EvJ84YIJdY?c4OdH(dLKm8CmZcOe*Qn+0Cs-uj8~t}_`uVLpYmt$f9l~%0B)C1rd$u-ZVOCF{dV)YPXAy5>QT!$ zg+4oA`ZWM&#oqt^_ow18*yn-4S?XzL9;r|#cC>l#CWwAVlS=Qv--&>$z@M1r>j3}n zXFvPLI{1Z)kM5KAVPDpM&lktBoQ3|1#$Tt9U50^GMx95Tiw^DBNh$y6pl6vh&s+R3 zEUnz>wDf5U#%@mHZE$oto(;}G);S(Iwxkqy@K#j#OQ{VYSJ0)y#CKua5TRFi(y&8t z8uvQ4%A=k-UgSp(Lr>Lhl>s%rFMBgqOgj?M%wTg?{y}ZH=|#s-AO*Q<}xefCQM(k}{bTR{z%?CgkR!+N zc0emJ@8v%o@N@!+tM25A`87Imt{l)hqNhxhfY6ej_tNwrB-yeXTHJ-6Dd6N?bY&q_ zHgx3beeZwY?hbY7V{-_*z@rQI~JasGOm%4B)AUVPu3}g!QTThd%V73}6GZq+n^z$6)ZdK&wTD5P>SkTA z{Ps%%&+rPsGnrga7G=Eo=9_%No|OeDd!S!>p4SX`jX*aof8+J%&tH0e_uMnjGAVH( z8xqRP@+&X>P09^Y%Covg5RFZ&f0i_Fn_pa-#E-t{5T_k)yY=SXEAP5WkLnzFFo_Scl^2-DjsB5A!vK?@N*!<}JSMoW2JLxXEr~4T!<6BXHTed=;SFx&pw2;3 zS$Zh4Dg>Uhw_ZmFZf!&Kcgia*56gyFl&{blUe;%{0kyhL{T9w+(WN=Ny8q|@{DZ$=Yt>oKwh(wPhixEzwkn4<*sj6#mXeykN;2q zV_pF;&LeaY!FuBAnXzH{MKn#M*_I3)&@1nzJMDkuM;7A@-b=$W+KEB?9)77|y+==a z0(6ZxlwNxZ)Ni>ae>6dw8ZMLtJz`JK>L9Oar?@w2@vaP$Rz+$LSF8mP7W%U2U5=>Q z6^><}$PyJ+;}f(c?FOtYD0Um68-1mBc;GRw2@Ee~8QU1g5rT`Xq{B=4b1m^r2O_=q zlZJ-cyL~M0L+yx|ag{mx?w_YDI?*HV%F#CFSe9IiNRZS@%l)i&z+(7yR;3Ut9fNTE z=DOmq8;Fd~l_k(yS($cim53&W3O`hfxt#ME@=iL^oHA&+GFS%;rjOp-rc+5_Y38Yv zVVx`Mu@2H`-);j%x6mtHWzsTT+>TKtcV=<;GIt2 z!%A#}kU^^+vGgvE!00weuQIW+Pg&C<)9gEF28V2hW4q>KWL768cpS6?A2{KQTmI@7nhwMwPkE@9OVLL+ zm*6_s9J`nYcI30koOsH{U-E`DpNR1lk^Sqw>vfrc+IYgxz`eDAtJVYYyN7}Oc`}Rt zqyptKy$^r*!>hBdp60`$ypD{?56aRlx18Vo#83PLPtNb4?psgs6Arc$`ecb1@3v|v zPu$E_2MfE~>Fa*#r+zBS@#}N8j_YO{b@r%CP6Dy3{jzKPjp{)EY2KZ8IsW)E^WD`% zc6KjcW_Ny`nj2hF?>qmNA17CDWDs+Z9{|fT^?LYl%d-B%=KtNzKMX z9+S_?cK0jp%1Q?4I0Kk6K7PjXF8v;@Z`#Xy={KEA?-JKfv>HEf#t$9q(DD7?8Rua> z1Dhq%Q!XYATcx}YEq%Oc11FyMrr(4Q_|YHzQ3ju^2qC|PoxxFjisfk?;N;P6&R8iE z0;Jhq3-g-Syk_^~KmOw>U&9;5n@;*7%YeajuJOUz(fX$yY%6+f`jT$mkG$xxaB8=a z&9hJX2d;D%&Cyr?2z}GEg%g#+TUH-<;DNjzl?MgTGQIVW2?St5mwZee$3`hnWV7+3 zkHb#CwDK>PUl|>&Q_)u)4?Yo8_H&^w{?GsVU$ck8t3szfTYjbOIXd!?ATl8HYLDU@ zr(LWJm2=fS+W(fr_I2v3^j%aPXohlpY=+C;5~!P2o@JvIM_Tg5w!~K;2+E|bfQ1skAex{Eb5v z@^bMCfO%noO}e}+3mh#M)mcFMRO(@xdXG-rXF@)7NSBUB1Nb#Cx3#};Z5s}DAu+FO zj^CaKD#~fO#8xHe6+E_}JRB>|%9(5NjI+#ACUEWbdBz*s&S=lvw+;a>C(DaRVN>73 z5UqkcbkT9|a((n+C+<9~!y{N0EJoOrdOATrKD<-sVKnwK-m(MTd7c2OfR&(f{)K&wu_Rbah&O z{?AX9`{X~n|N9Cvx}3T}pq~fy8oDn1*O#97-oLAy|KJb)U>JqHG7765u7?-b0;`0* zxJ<8e+xgDRj(1*CahV0%J@UvSdn(OYXT|Ql_g=rRd4>W0nKdZcfANc7+|x;SV~sOZ zrajAQ_Ef0-zz}zq3VDW(=yNOwW)GrQ-%ov_PSF{O?-}P+2W6c*&WCX^D>A1#k8w8f zt)SrG<2VX=TxUxoOd(EVL<4E1&an*+BvDA*R<3n2_{$7_MkXDSc%EPA#FkUKCSF)O ziM|Rj!8mabv?@z!*69k1nDCMv@TjF`Tn3kckXO04^RCD~-FYWVJa1)#B0u?cfp2Zg zC!G%!S$vIad)`K@1C=^!>C?$e$9eSgY-0kUt#K&b+RFyRLtLfw+K>Uo>f8WNV^&$x zFfJGcZ~RKbR)+9a-q1eqIp#apnWWGb$Y-!)qO8;D3N6zTHywqRpP``*ypAsG+IwsU zA~RXYkxq~D5#J!K4u%~pzT+M5*!|d#eSiVb`S8{jhXy-QWL1nrlI3BQ0j`X-VU7(U z-zRswJrixaH@@+W88pfBB2Qt3QMRlc@r-O4M0=f1P#baKmwst*?GPDfIoR|BS9;!W z`nMxzX93XW!J?BVaKT;h4o1~O+1(iHtt_4Asr~L1cfKO@EYqv5XtZ>uMh5dIOH)H4 z9aPv@uFXTjva?U)-}(LD@1S_^6Xbkbex<3e^4!YA*W2E9KZ7Jz9q>(hpQciiB13ct zeCwIk4in-=@9E%$w-qnB&O7?lsr&BxzMP+9Sv&r3!>NczWd=Dqd1V=?O{H(YFFo6CYZcvGhTxsE}0s78!><6GPF|QraU-GFv zI-5@y*u2lqs^$Ic83y>k`V?&j6j@1-*9VxCU4slwZr(dN^0lu#LB93r|MSSFJnG^5 zr>jtEGVIoJ*kYisCN}wzR3QM8KyAMYFDPkK=hKnKuCIRe-MhQ)d|As}DF(+M;SJi! z!!U7P8?`_jc!UpdiW1*9@Zozzqqv!(jh~RVdLK{RgbtJr{Ko%`43$kEqh!KU3iq#I z0_=6Kd;RVQfA9x)xAHXz+Y!s^vb%~{)Dthy2{W)bgH1+$*ehDXZPbxBzTpjg4dQ%O zXIQQc0|2e9{!@erkvDPiF%m*#Ckw@~j2JSp!&w+X##anIJVk7*ou}@3y==lnEI8s>R0wI*ENi;rcYQjQci6Hl5NN^w%G6#jQ^XdYrYa;UxvMnQm3Q=*XX4V zJW1czum4z99fTitp3N$iJ;dZkzF>)pBVPx?0LVXWbW@hSYHPjS^bNG5ex{`N!DPLXkH6kxW@3u_?DTX~c3LrY4rL)zz*d1+5SMH#02m2Y?{Q0l*FBfI5r{)sbe@<*?V5_s=h zzO-5WNoXk#hk8a%g=?T#EnbVR(StL2Ez{U2VjjwXaC1o4pnNMBk()kfgSWmg-G!;c zo&f_&TMmtpscEIB=%Fs`(nCJOPgt%OPfra4D;ulA#Cw*H;otl(|K{gD_qoq~gR<%J z|I5$N$LqPj3d06Rd0xa|ARjM~-19LV3JYltSz6gLX$f{;m6u1X~I_)_h z1PaINKi_T(TswvM?dEo!ek`ymVJb2eCY9}h2OjVp^AleM_{?WMbB2!F$$Dqzj8Cb2 z&-aNZo;Y=h4V?&g*R)pV{eK4k4*Y#DhkniJ*+2f{KmN~bZuYOJQ#jQtYi1Q-s#n=L z(^yBMEC~^#4o8>;CkyasgkBH^U$~(WMf{N@J9SA?hcz&GN5(G*MY4^)!Nz^cPL#ldd24qnF=s=tcrNxhvwsRpmkR|D$yH0R* zJD`c5!zr?fV+LZ%!-Pzh-1>AwM~+0Xi-QJfX=c58`AF}E&Rk=Mapd6&bG19n9>-yu zBt>TLnfYfEvdX8-hkS&N#@6Dbw;{cH+9$60kDbpAS*)baT{&BV@!f-1e?y2DWw+>dGVD{b()EuDG!1F{e?|ZKa z5ISzs6CWN1b<#HK6n^VoIq5iHx|8@L;k1!uWZ8k&G0ri$^EP(fS3KxWx;lED0D-_GuW^&+XYN|4NsW@l zH{C(Jbyqy$#zok!LSvtaEQnjSgs(qS0)n#T)O%@6Xt~t~$)i4lmVrEI-A_7sW!wGE z?|YIu7{`bmQl->b=xmuP%umnuJ+}U(0i{8L(gk{gE0D!L+G_}!rERai+<() z``t+QvVEBiT>IbZCoZX1$_R&~#m{mjF4+{Z^lM$vU3A+?rehCw|#Qg65}R`dIZ(Mqyr- zu@^ZEyBfBaDOj<2S@0C{mcy8vJje{XEDyKKMUYOsm$~=>@wvFikjXf&L zHP`Y+Ezs4ayWM-;BV|(G@o5^xYyS0WV@zlVSp}8Ie}ns4&4T-rKIUAmP=+{k5v zZOW3*iJe%7qLe=)3L$Q6Q=bBzCin|aPpkNGBRxYW7VEp!$KaUp7d zEzq9vi^}pkGb)b-pHnK`=}-RTPo8=B;fMFX@f*L9JpmZ_`=sB*Q{MOYtT#BzlEPEJ z4nXJi49th>$C8J4k1aof#AswB=&{_`7PN=O{oXo(406#WFDqq*49ObD~G)P~X zI!!}-u+DEiRW;5AgA^|bnx`E%H{z>v-8w%Gu5|do@Qh|#?j>EdoT009GBCn%%U_yy zsJw2xa_NMjp9Uz);eZ-@kWZWQFFzA;`q){#fg3&3V5-M5#H4$hYc8~d0CoP&595a3 zaUKAe-D8!@P+T3l-9ZWuGUOV3=}W_)Y1C5-nPCGnI@o!er!XVCwz4B%;ir+3OB+ki zBd2=KeR6>t=@_pJ4z3OD__d&q9BD+A8+c_NorD+0C-TH+27ojKLKYKM3OwPfUmHS` zXbe?}c%QO{F8u~O-0j2&W00SXn*&9!SLZru;*BiIZMp~Spxbh+{hCkOnFP`ubWN!h zmZ-=eE%U&7Bpq=Nwm#(LS)csc;im4@_UhC33nxD*X_?*94s@1Lt+L9`4iFrO$Nv0j ztaPY>b!tr-L&v;w(0>n40vn%>N$g2dgkRRKy%X6V;1y62)?`V`+}Oa>H86IVEcaval=zxOKlTRd`ED%IUJ5`4NALZ0d=R6;LB=Hj}3O*v=?^g{Ohx z<9J1TOYaI;w)-guLx8im`m*MWbz90U%i7EIu^*SI54I0$P|0S7lndmE46B_$={6YB zr%tg}S)$ZE&fsbjLzkad2IG*AgyzfmA2DNR&J4MAJJ*yU`4SCT1z+WjTV6-XWGI*I zQ(#YdDEqPhm$rI_2X$Rty%)x~71E9+OBqNqo(`PZ;KPQ7>NNC-Lo}O<>K-|BX&#W6 z@+lBhikfSGw2K4FvC~10mJMhZL%rR+ln8yae#JVhFH)}kS>(qjS~lcwUKvJ4;~-R8 z;&E@9eAo4o46~(t9qB@f^ngnr7;`asbT#@84d`T_3_yTx9rM9RWB@_iEEYfCdKoKGD$;-W51;t$I&s?*gN{WPQ8(do(L*P1t9t>6_vjDs z4dNDG?}FQj1F0iBPSbI~upTrHrJXySAt4S4{5VeOD3VTc20x~?ffHQE=lR-T$Cme{ zH+k%K2?n*qrPHf?MUzPw>EPs<0q>dxULbL}HfR%Uq?E-&hweF!acNe^9&3i5ol;0|!ff?D3co2Wkr8+Kp-W&yK4}PNMOq?gn zsi9>nm-$f+JHDecm86q7=@1^^yjtWo`L%_OtU*yI3+YTI9y)gDN#BGtzMsVmitT;n z0|Hwie%{+lIZW9BUb&puFdwWt47LI*L~<5wQF zx+u}&>E+N4Iey%4!@6aeH{?mSvUC0UM;^^<3og@l7ks-k`U0QMDX;GUHz#1hpUdlC z{)(4#?z{bzy8Jm=U944G)Fs^T~>^QODXZN1x)t^oTF!<+v`xELz@&Ozt4*YU} zoj6wjSp*%R`V@cD6`6&%zH5Wa4CHSWZ6Ty+CK41?$}mBi$bW7X1wqti|Lky>bUG#JVzO#MRr$WL?-T~nroD@gf%!w zD12?aU`({=SzZ@x>MH|hpDvmc>&{&dC z*=IAn%4}T95y+mW-LVeJ=4j$1Tv|uVv@)ZqdM&w4kDkjU%A+YQ@8#d?V_bb`%nd(b zOfzo`k{$X{yS$Vo@>G6n5;AP{lIxQGxu%Q`ga^0<~k-&)y~IlPyGUQf{8PBeD%u<^csuKv~QWW9$^nL;>Mz1T)~ zLfZDtJRNG~W7{WP56hZ#A`D>4gmr^+jF*A>flP3kzG@yf*kmh1$~SswljO_7xBOF^ z(7}}oEf>n793Dq>`o*ZoICZZ&fVUY*|9l*-GNWW7w9@a?tf9??`Q|m~!RobTI%Nam zt!JII;5Mc?mR`BbOd9q{=9ok1TDE5?yX-+V(67b7E|8qb0NyZ%6Ym7;B z-}`rhK1G%l0Imoy&-1l1bU@@YC%lH7c=Pe^|NifN$a%^{z}~SAs{;1!`tRU>?fyUJ zx_*8UEwGC4i^%aht5_hFiwffnGhxn#oig}8<0=3hv+-1-)31ExD>|!e1W1%$3pnBa zip%}Ehs@r}7|(=ra0S3AOJT2k>|-DMudE{YGEZ;aD)t(OB<2I|hOh z{FV#ndO8Bo?2|8LYy+>US7$?;W%C_5%1aqMq{T&@Av!zQP=DZa#3Vo{*My`)*^Y^D z6O^TJZ2*IN(7TKlaN)pDx|HCto(88=f(*q!qK^*Om=qkKlF!0wM{Pbb5obuF$|>pL z8&$e=P59Am@I1>$+-i*sTzjwWJj+?zsy>|?H-5=L#YWZ!Rs0!b8<%&XS0m(oLv*7J z>crF`zV?rHuu>j*mT%W2qcN-WqEGYxu^_n zu(g38wSx_{A!SRMlcUDeX6=;0i#${&m*E<;lk}9rrL~pAl*;JfS<3PmSnb;Y7fB+k zG@Jj;In%|RdNuhLZI|-xSh}&(+P?r4X-q!I)BF!_ANQ?mWK3rd&a6JAE-C+_sh--} z)kzs}S(njEy2`)-zv>oUqf7NC8s9;hj1nf#+hH9V5eTa|IC}i?FXsJXJHOi0j-^l2 zyS{_m#5Q{d;%DiQ-^MEyH}d5F=5sg4UL&&xRwg$mQ$`1n+F;(d&*$|R;QM;W<@I?$ z>!`GS0xj-2mhI;W8N6@db7nrRk1WWe9hB8P@*RC&TW}8mpB}rv!Y%AYa3lD)-s~p> zdF_D73BMfRMrRK6?EpFfnz8^dSLa9%U%z{5mX-r!8Du$Zp@$72O7d+i1<)>8*cDvY2@#Hu5&MN z{lT=4$|_WG*#Qx|3NwwcY1|SH`QtT;Fd*DzbJu_vwL;)k6+wBWDx05qO-P4J_v5MTK2bY#5cv>Yv8Ed9C9kYET!6Vgf|%f6T3R-75)Gb2^1=L zim$Apv1lL3YG%i7Lth!SjlL|hF=(|Mm@V=Vmm$}w%i5iI@!nv2XuWLbMCp4dns^@I zr9`bVmG8tSjk>!gZsRYOol7_5BO`r|=12Tf^P(_ZoA+}_lfbFxk+G5W#ZI&*ec=u{ z<2;Z-WG>O43;msb#n8G}S%f1*Gx>;X@YO5Zw7#0sI%2whQaPo8pP`&|kSkv4L}4=^ zbhMS_TboqBzB(YS_NHrp2&Rsymn%aJ{>G>0uJuDa?dM_nE0l^N7k3V)+aoSr<&wt0 zDZ`-+))s4$Z1IrpwD01YZm@oPYPs+-#_a{al%0JC`^Gm~6!oUdA39zqkS9Z82^?1t^7#UTfZeEK_3tVMtS_kaJl(fKlC4vn3`KlHNsAFmHxp$(Hq z2K(~i`ovYq$j{}O)9?A7@5!sm!0r9~9}hYO3-1RXd~j)(sOvv3vISNNdXc$aXQu`5 z2if={Ghoh$F-w;3VZPxFZ`l3yU;i~e_H4eN$vbj>LgT9M(NF>PuBkLuJmSx=0w7Cq zsBrqMQ{U<1xXNAvpO6umTyIkcl-a;VCl$Z$5g_aTQLxho9QbvT78W6NWCl;_;609T zL-u}-0J6Y%O%lYZ2DjcU$?`DZEW*!g@iQAM6Bz63?8uk15FMa!cGr@Ao;pG|7s=TbZo?JupnzC`M(=w5mVWfVwtL2U|8T#!gy^yyE3!dVayyiBF zbJkW4N%%#;b|A|`UOZ{e6BywPZqx?c0vI?`YMeX?BwBmfF;O<35{N$?-*!S*MuG=V zdE^O*l(eg|5TxW;1^mgSb#C$}1Brl|v@!^uY9!3kDYVhi!9!%So*0}|kS_8CIZN-8 z(jW7)E0N4A^N>x+Afi5|c~&Y|MMUpmka+k?@-3C_>^#Gb*%rDre2 zG{MyX2ABes3uDf^N z_vU-)%rX!K-nJ=t*voR5dLq-6*8+dHmgFpC~ zc8rts#oyvFX`bP;$+*x~dQOn4>?v1`3cv6eU+4gzU`dpQ{0!BNYwU;imK|Iy0}0+S zUg@dx0gmeO>cC(94bWn%2yNFv=8}UG<)8fbyy61y0A*J1B#q2-ay}WtwfQWJGU^{z zNc|5@U@XJ>W0H~cn7(bNIQrva4h?Y<2Zq-M)0Qm)ji|hT&Fd-3PP&J(R9A;Aiiw@H zBWDQtn_wDfo37=z(TA4)fZuVAz_U?ZCh<|36(mu>hyc)C=O7AW@T~2CTXyP(vr~QxCv4kcnHpERjnkir575eM;1>gF zUmMUavXrlB(Hm4(#i&;%5th6TNF`MiKUv#yFI|tasW11s&13D^w6+IL6Q^Zby0x?Q zbCp}-48==%$o>2%gLYQ_@TM)CvtGRQw9u0mIm3WSt>{geXD|#5zDFBczBuPvLg2`) z002M$NklR7)`@NG8TX|fzNp3`@ zvGdTOP?o+cjlcY}Kl`)4XI&;Js;|-cpfSZ4`e)cc*-gt$%4>U0jw9FU!w)~~DuBfE zdcamt`0`mEdXjKZGEmolUTh0k2Cj#f$O2a02iFXkD*)Ib^Yrn@AKx>0KV=iH6W^Or zGzarfKKZ0Ob7v)hPkX4Cr>+9v>3?SBoCE;W!}oOTQC|M_U;p+0i)%g!=qqkpR;R;` zW3%$b*=%X6I<7GYUZ4);;CSk+ycb6&q~mI1QHN^U#Ek>@TsK^JJhHO}bVP7Gq!@%L z&EiWV?IdYRp2+|lsskJ_MTxWyaCL0iSjNckUwpVSofoJnldrgP0 zG|FRiQZ*sxUh+03HaZ5Hx7xio*w}n(V=KMI&whA1D}v1iSENN;agGP(ZP?_~BNvOl z`gUMv+LEEqG18%gdwR*qPZ}J{Rm#Cp9@&Yw;f5)HJwq$yTcb%8(Xt|g&Ug%&fpzlQ zw4^K1=y$LOF!FS;Xz*m7PboEzl1~sB+gFcv=7NQRmu_Ps^EDmdmZw8~N%@E8#LE+X z>71^z!eGKDL54ZYe*)#wf)#vimMk$MvHZfAcw-W4in6V&Bdauuv9(2RmkkmF{>mmG zmYmo_dPA-j0~*qf9Y{PQ}o4^)&aaW5ivVxb7dX&oq2A!TI<^6sq5Y*L)0_`3D1l%n=_4kRs?_Hx-!gJ5@YJh_zFcc$zN&_-cXjBtL<362W`-7EoTFX!}XP=hy`B((})<*uuwt|ALRdMpJ_nMQu|H*P02hBWwSJKdF=4ZiiQ|HJMMCQK%vbF@;n=G~<9 zTz^;}GG)&51o7tHYX!r0ZI8GP@hR%LPkL-|Ov7tzvf8m=rOZncJ8Uv~uT48J>;%=w zwYY`0aps{8PrbN{k9C67U|jVrJ>h4fB2R%;0#M3`^-B!PM^tQ`0AGEUEjplA%*qZ9 zc%!(i$}hZ=N5IK*>O~#|aa6pt{L#A3E1iYTcZ0kgcLKaRSTcTqa)D zM2%uKbP(>fKE3jZ(tI;sn*4HJ@~3SqPt&ZcE2Ml`*SnWTCAK`-{t4?LZNnk|I*^1v z$u;$&7f`8)<`+bc1Bq+$$Q4-aXPF+Ku*yyH33kSLy_Fc?Mjmlwl>A=!p^>FR81kJSv%HWqS5AmwV`Rs;k5y9?rZze-S#euC%tf~2k=)eqy3pM<;we^F=-a8 z%AIra$FyZ0z(WcPA^WnylyPM>eU6c7&hya3g4z7F9kVPP#1l4lS7j9~KWV~KuK@)0 z!C>610??0S(gXa`qdu+Gp5_zw$Rt#4S%z7AgzLjHgirLwUA5x73~P_(Iu#q>p)(iE6>5;+Vq+kEgT?+3nv~103Kp3E+J`T~2UoReA%G zPG<`o?V!VwpY*)#Szk3pQZYnTy$QS^Hqx_Q608Uy>uIYbgfO} z;b!(f4jJEs2eoG!`Lv-pW0wQZ#fH<^NSJ;?$fcFy6~#cBi?0JPC_39})%BM|qcA;%?Tp!_MlaTGLd+6guz zdvS%7Mm#*c=WGTJo9P&NR=(zdMcsSznmTXHc??|cwT%WM9O{Sn zz(UBhjn=B;0VZ9Zu`NI1>MOMK22Wk6yzbS3?rTyCnoH}&JM7@K2A$H$N$C7`;HCuA*oeX`2?gX#dltQ>;a|y!BuX01cKs z<>h(tYQGX29lSCP>%nuiJ&>NV*tRG6p&%(+gX4MX(>%qFU6;(pd9UoXVlWr&?wBv{ z24A^gQVDozdMJY#EljV=UwWo%pMlY*P7vPq*&`E28jxT=)5cBQp*ecWCoq8=TgHlu z@V4qL{V650z8PNF_FDF(udnnBR30QqP5xt}g>LK?gf}2!O@^1YjMOj=AnCPlUvXV|Z4&IXMD>kcrDIP{RS$vq z<2LrUe(Sf~{O{^4|HoEJ>UbkK$m6Eu?i1ka$<}=zK)Ok}6GVPqIR)Q6%tZLqr#>aS zGrs#DIn?!fc*!hqP2Rs`QhWz9wh~Nu@WBUn-^&IWZj@o%z4zXG>fql=0KN=x^4+|H zX>bJqGj1;Rw-PzKW~FrY&2>mw5#Tiq+0|eC#b5jc7131yb*2J(9Cf7Q{BQ)|2&Sh2 zCiT2HICx=9*Wu`_;{YKv4r#+Jh5Y(XBI$r0(Z;7MKnD;9XBOJP8A5xVy;c@wCXBHH zh~uO&vIskX%x{2ns0N)-F8CSM1hfM&@(y449Kog`6$|-0Ahf3>o`*6W%NQC!A6KTT z0!jYysrgZcVWRW*SSl-Do`oOe0w)w5yp?j&K$vrKXb~{ZBl!W!VPICKb~w!oC2%lg z2%TJcz3i?Xfi+~@NW$EY^xQ{{v4MlEbow}_(+95n#ETq-4!^;X)^uczvpo7FBw~PH z37QY;WavZ>-B7d;XF8y;kpt>@YS}cO47JH|!&$4P!vW$!9y)U9C0}tYS6#9gGW>|Q zY~*>38mni^XYdM!KH710`XZh7w8PX6vb2&{beJceDB5EQh~Q0rw+<- zGV+VBtJ5rvS57ufmcIA(b`#7KJu9knQ6zeN{7PKP!$ zJMo~+@Rg0HjNZ&Q*>Ab+*1QU!Uh0ql?aO?k%+Hj$1OLsg5O4==xgpP$=Y7}ysogi8 zd@?@Jr}0i~h%KGl_+r6rY}|J{PyWxI;oW^YM%E$AnjJzr&0|EbtTz`JxU019`fG!m z&avqqf9BUsOc1NrCqjG+2nWW&GbEfM0?T2h8B|M8a~Xxp@e&>tD4Z#lR8DN`p?TUMsk41UQ+p75^@ zT$a9PLJ=*e@Qb}hmt_;D?P2-mg@uRh| z$bsKmPYuaOV;6k$q4h<&mIG!ax&kxeh3mC$^?m|S#R3r3B3ls zp*N)?vM7fUsNa0sXd(l2nA;fHtdiD~HFqviStV?GLvL0K80R5=%0~w6tFO3pbg(@k zI#iqJrMX;D z+N{rg?sLEQhky8okD?E6q+PkfxC2SE0>DD-amr5r(m!Q9V&0wjkdij|Dqs1y%9pYH zJo)}DZ+S}|Z2CFC2OfC96#yq|1wff!|9#0Ua46L;nF!z6j8kzj0hPk{|6>gI0{Frg zzK|MEr99;;0B-zu$}0d@nQ6;fB;rq4mg5E-C$0i;IgZFwzHH86B_z#N08g`@fU5vP zdw$Zu;27#N>Rcj=4nxPc0L7~VF+xW&zdDjOW~O_HU&q!?y6p{7Yp7(S15Vy08=8ks zzEs0!7{jNwL2mvV-GSy3L7{olqfBX({0;xgTp3D3xehwQhiE$`jk6CC=O@p=O-B+2 zkk^^&8R8yoRcJJNuNK(I3)U60%=STBj{ zg|gWonSUl$ms|!1sPrUEm45A}%~s=_jzk+|5i(e1z#8R^fF^k9Tpr6}gO^k~zO{2D zP-k)cJ=QrSa_!)hK_cD zKVzQK10+0Zx8nI}yyK3oqGu-ls60w~%YUvTlX6&oLQ?xw*TPjc#3i)?E7RD^fvFwX zHqwzXc2d7NlFjBR@^7NVHbB%~X|uJjc{62NP1^~m?(#gY^J5F;mWO$)KIO+fA^NS3 zs^!%BW!U84S{nt&JQ1JzsO~;ZT~E>wt-6bgg>o~UA?2veW%HZW8F^1s2lO7J!_* zYkt>$h#q?;as6mF{|;flyX)?|c5ivh_o16l)h9pfmp6|+$3822d)+wcEcVSiZl?SN zZ`l?bH;4I^jCq^9244Fo58z|mXf^qgbl@y&4t}(=aLQ`gH?(}V9;QBEUv!<~w_w`A z4(`&$b|v}*qPlpm4x`7^V?mT9L7A7YUhomyYlG*O`SC@?JKkHw7T&Ph zA7cm8SNzi2nAp-^;jWRvG)r+Zh!n3w3p*>D<=uPhukw0m8&|W9{?f>b0DQh_qo45x z?ul-DF*Kx2TnwT7r7LvzE;!c5x*2?ADNoCwaT!!eLw{bQBEPi8W&z|!y|a@#*Nb<~ zAsx)xUOwV$E8#pWH|oE1$a&}{&N{vDgh%7}@u49x{aNX1S0@?tZ+fBOSBgvTNF?oz zr}hf%l~rEzH3;c8n72%@qJ}grg7WhiI!-)V?n9G}<=nRfVStZ-AyfHFah}#!Zs0t-y7eF<1!XQ>6KNU5AujJ+EHxk*_=FBo3&aMc!%yOIm6FNL<(tEbP5%28_ z1OCSPnodK~5H9BhzwUtG$~eyhV~5BYatRRfw9cDy(m_{O;|wm@Y_O5>o}ai26AulU zk&300J_;@|$}Ms*7=SlN8i6H~wmX975MfJVQ<<6;`C;1*u7m{z zD|R?`^pQ<~$qjW_jn%A}sC}EC%3vcF+QG|@f>u~Als|OS`PPO*Q;=qs=?3jySnQRU z{;0CN3A2A=##Jf<*Qun40^8}7u^WbxY#Z5gLg7dtz(zk zKv+sl@@Ql?&cl#&^mDLiuybdADc6M9F*&kuRzhWxmL2Z&5lB()>FBmID%`RUeX&(f zh^tv^TMarL6Rd+A(=m}}Pa%~3- zSyn>fDtF81k~s7aKPUiS=}pH;x*qDjcpt#ILPyF?ZTi%O3#VWH(wA!k>o-i?5YHW_ zZ)8P)%jl)$>Hwe0`!2oj)Ejq9+fVnoAz$JklBeL3K|9mY-#5%FoCfqy_7> z<#A0WZe>&7m-c})@d=r@=o4c#9v|7dYCT_S2z!lgBiHCVG6oPEmb_VBKjt!cCxj*_ zn}d}ZuuPdFHvlP)en5PyDJ4Fr@-Z0Sr~2NtYK@IXmgu+yQ6uB!qYc2%t+=6JJ?q7G zp9@y!$ZLG&(3Y2hdrVz>ChcgtLH^=dq_~FlX+BGrJixH(ZeA+W9)FZ<#wJ_@C;*!V`?+HKl4|je_G36&7mRq;+%>w2rcBed$PF+n45nzjDri9{BV#}RcaJ>s@PGQVKl`)CiMwn(ZKncU@zZ~_ zTRwEm2DY?!r^H=#e=_WP)eQkDZ%!KQ8KYeJ>@Dy+I*B+=&hZAT!IA%R2ywN-=meoR zPw|p|#U+a4S#TH!r&DKQLzBj4d6P1khBTcE*f4uq8u*$vB=Wa0Sfy&U z>Jyyu*LFvW3!`p!igGq015q1n@gyQ?S_kD>xMr65(oUUuduX5mUi!#;%NuBo9IB2-<(sIA(7`J>v%Dp_-fML}GD1~0nqepmR$wxl-xxIsTpZ5FyfA)yr zsZEy9Iw+3OTc_}uEdRf4caA**#*aZrJC$`j;7m z=jkUh`Q(=57_$RCmZpPa$I?N&gM05acFGX8>;`}r8N@SbindQgan|GOLB0aKjCTAja z;hR@771lETefQnVo&>Lo{s2aH(w%hCn#D#hYmpqKK1}aH?i_I2!Im7e<_*1+Fy_<%hZ3%$|2M@)K*cB zbcratHd2PXt^}{Kh4F+%sP>hg@#c@8JQQDjv|$7igAnojA(&Iq5g%**yGft&BrP_T zUhOEoWvkIW#47*70Z}Urjr!KgSJ}#UuCv_QW3Z0#ukZ@TIG`%&ww5<0=Aq)MFLtj%Gp%Xi_O&I=aGrnK8@(wRmt$2#JKA;;~v!Zdn!mL}C<-1OKC4nsE^Q^os>#H-A-?cO4 z#@l#sR%F7p^4Ji|qlshOP(%fm8(3L00l;J(+mzU zj?+XD@Dr0;+V&Y>WW+Qk8|Intmk>QT9ueSob@ZFJ3J@1NtsItW7iAeI+0liDms|6zmOJfR#C?t5d z@o#6+NJBbWNpnCpPhUVws=vxT_As&}C5xU-W7D(dA@r16Zqb!wOKNHP6ofp`MCz>V zJWCrsoLXN4yneK&v?ho%c*eCfE?EzD4~AwN2zhAx)xnd~kVKy{Q0L}rsSYlHBsKpA z$vjENaz&W#vfBUh|9ob*=c!?Lx=(L~cg0zTk3W*5`6%oy476YV@>j4)-+7kkAIh8L zR^89a0Xs=P4YXq>p7y)&^wTWiznG=>@_`vRtTJGbuRU+Qh1URBVIZtarEk5Bl?FH6 zoTdKH@wEOqCJ&V5u)>N#K4g62e*;hdkuZ63qqc_L4dksW7R(0+if&ApPY?2{i@x#_ zuMRx3zAB*n1~)mhR^{~qWY-UcCv_ygH~FD03g6Bk^d=%Q>~^nt?Q3@T-S?)}Gh|Ue zQM89;%g{-VKIt{mye7%=WOB~yx@ilh<+AXlSAxQN$jgv23cp2kqaluINe3=vWXUhS z1Lpb%u5FL}TeQ(31I4)yjg@8`lq&=3FC@@I-f@<(dBlXZbP@ zNaKlgR(X)mmNDZJ)_G)_`rCA2@_-o>uFVYCizht3B?Gh6H7kkn>(}&Ee*>?*5`c5F zIj)IXabSfXw}-gnYswB~={PO46iFH|MFz~+Rac{%X|7-pRzK)LTy(KbGx#vT$ud`W z8Ax10S>9_$=~>1nf2E_&bB4;XpOQss^^|MtpYYN$dh8>!PTEsbu$g95?hGiGebV1a z8Bm_43u|6^ZxZ*SB`Bvs4Kp|<-n#7MO>{L4Ur|=tb_TE3(fUON2|<9AS>Hc&Lp$cP zYzbEUwylT3Y9^!cfdr*4y%wM7ue?3NQ?n#!CzsaC|BS0L3@XaKaU2re;HjH5r}|av zS=)bU7|iE|L!z!v)FlgKT6TLDuDQPi1G4=+FzBP%XBzt2#B0w6?9&Mxc<9$mGw7G$ z0hl&SRCroe<*h84xaKM_VO<@U<|+H5&*B$KbeP1_EQ_*YBttfxM|TUu!cAVvSN@Y; zyC_caH&_ZY{e-NlU9cK3fqVG2Z{vipG$$x;^^=AAn9{TQ+WI5VhG04m41dq3|BN9V zKlt=ty-t|0j-s3c@3;f`PI%IP>Z)X3Ro?sV{}27p4_*C}Klzi`!VSxr960^>$3LEX z9&&1IL+*Qd{r9D^z?AKmivM-KwLmK8u`zt_-+Kr7RLGsL0k|QcGi-EnPB>Hd_NQO{ z>Q~)>!<7Nq2f$^c94D?0umZa}05YeKJ@(jBfB9ek@)LCc;Y8)tQ)Ff^eZV@1%@^3A z*6D~I2NkU4Xe~G**&!EC&%&LthQuX4*uj*aV20>B^N-^IBgDa(ht2{nJ!Gi^J{~^W z=@5!Wussl*J`BK?f1Muj z@My%!=_&+bX-+*&Z>Y7XulTbNSGyH4A3|@QRr!zuodw%?n%;I|3 z0QQ>SHSZf(>^AoAgbt1Mq9JWzmW;tycHs*GBz)A*d?`I{;HRy;_b&mQ;Bpf?f@Nox zo`RkB=q0}i;>xG_w`kFGNPK~4=%eb!TUiMC198 zGMbQ|8y==K|4dRY%T3atJCe(jBOM@@xOPdusf8%5W}w$fILj=Xh8>BE>|78RTHc%P zv3Oa)3%B4qK~or_L?nI5h#sKBN)o+snhJI6m3E%m9f%cE4nS{?YgCV`NDY1HU>2A^7Aa)=eYDN zOZTC3?xq{_e!ZUzJjar8zg%Dk@Deas2Ylt>H35wEERzq}aE=b^x4!wUOhmX6!4UhQ zgLT}zG2gYJ^*kn*s{ShFNjrNqU!|=roFMQMZ7+NIox6Ybu6MFQ;(AgDq`|r>pW^@z z(6ucD2)Ry~Bkt%tY4Q-pI+U~5M~9vK<9ky3w_t{*^vKuLZ{v>r1|min;;s=^x*DVO zW2M+=WGjv8F?t#&6aAAbFuWJv!aFeHPnbCEVw`0!biD)D5dOJZb(eVkt+mQD^KC+S zMW4wl$q1J`4-fCd10?w`NMKwsP#Mf%XvL3I#`vyNCP>Ut6IXj>Iay{){lA)J{PJ@E zs62*D>MmZ%%bHxLD1ID+bcCM+9g|;5Xx`agv~N+EjW6_<4KkQ4zf2f-xrJkRBgF|# z#Md6mVce+GegirHYrcqYT55xEmAwOVuIczJ80}FRZ5Nu0a%_-??TdPP?J5cD*0FqR z{~jjap}BIX{PCCBOKl7|RI7t`p`-m5<5h|RSe-UlMCgiy)Uzd%fSq&<%CeFEz4@#y z#M3`im*(@xKl(axVVw3WeAe|N*g8MxNOxYNhQ3|MOj$mma^Zn(}yGF+wx0%+J8kVFa2yE zXduKU=eio(?)v#fx4@xfyy&d2Gd#9{ zmDvArgdK^_78?SX3oN39gbzn9uhWMK}aPL}&#f#_iUV8R6 zIVZJ_C=N@o9>Phihq`-|!|-VbY8oj)xh}&vPjDcne-jtAp^YQ-T2H@%E9>mkPoxgg zcEiDqhq&TN+jDdQI%EKBkh`+OZ|OcM(_j^@ziKeFMmL*(-)l5L=J-rxb#@tYX6)B& zzVXTt8cAbD9o#gEcA~`800i}lo^7XzX_>OYGDP+TTYD))aZSIrp!C3lGzwBx(bTG~U z`4uS4;E8Kc7p0iN;=_-8p276xJXQ4xyv%&R-%sb!VF3eNBI&g3UiIp`{d!6!3$~@+ zK-e*NiNAEzF;C#L!pM#*oBxsK@_*CM^M1b+-D98wZROJEH2;;&$pq=hKl=(O2Vi!B zzy9Rc*}?xp2J}vj-1&;T^8P=>n9O*llVSL(%5D!0MD>Tug$oyV-}uJYcTaumo7r{T zGNyd7D?GE29B^Yial$y~^4E;b+ZuS8HFi7CB*wen^$u1^+)+#t$A`_?1g_&JC-3EF zy0*_57-gFJKRg2BPX!BX>`i$qttL$UH*V-fp#FrnVwf%uVZ_NGmB}9O6&y zW@1KLccK==#9MynT2qpacn3QVKT9v#1=J__Dr1^@c4B(@Ui2_H(KQ23=^71w>`!tu zk4J|8*i^h;7tXwzU=wfttIo(&a7aPOw5Ipzy|!uzfOqgT73FNnZ2M@uVeI5t`kl;a zy!uIZ>S)XxEa)Phd9S~4a>Qt1mD?z}z zvvPTC=?YFzhbiNe7I{chCUFeJW$%rTyRjPZ9vN1%j9DFkSK_5~?AvJJ=x!gPiRWQThmoES7sZ5q@icLAq^GnI{s2<2UC zCxYz^bxhmwl&8*Hr^&=?WT<^c+cUXL7pF)0lBTEYAb})Z-r9a)NoMNccq08(I-`Y= zq?Atb30?cDo$Q@tHIzTl=rjYW8K`dOQJofCyM_EDK=(`s>xLblVei<V{J)qx?=B$p z?zef~Wq*OU_q+Z7nWvw*c;>lhBJ6|E67F8^j6R&WFBR0n4&>CEFS78=ezZklU)HC! zl+B$5{U$VvJ`CQyvuIOyf<=u77f68an7i9ZCGPT~e4cOj_ zqX^W!U`vC*wIl44f@{_c1L;sMeZ4e8rFyyFbWtDChAuQLzXy?k#9eFE*2f01N zC;E}+897ywtM;))wfvcI=dt@PR#B#qUiqsR2CP2Hn0W1|zNm0jE+ChN%@d)&a(g#{A9#)PYiyof5nl`@-f}GA}N)ALz<`NzxXRE;_ehcXEhxhu^Q0-TKm(z9hY*$q$$-pZ({h ze`y%dzQuyTrO*D$=We)jEHG{7&JpPEsw6awwEAfzSMCCM^2sM}*@%4h#+L!QwZ;`T z8=VbKC&oZ9jnzc}ZAW^(#pxTSIs96H4L1iXe>dOtu6O-9u%E4??6x5X**eXcOxr^1 zpm4J5G@u+O;kkS|n6*KBmO9CC4jW})pnU6E2sAJS={KDjxsww(%~a7XD}(V;3C7?K)IExwvZdFRZ?S^PRAr; z2Q1l1;6>~adf?3%Hc)16dh2&(Q@`jH+4H?`*vQkn#Bx=}UHn*kDA&k6^35PW!fT?| zH+dM>v}UC)F-xFwWN>u;r~rV0Nqr?=z4tD=Wfz>R0t&0WVl(W!c8Zl?=Ac}B>qBkK z@|fkIAcNb5Cai72pxRAYjPb(V;CrN@W%RZnEwFdEj1PR{@V9Ag{X+r0X;P z4akQbx*&8ixl3Ex;NdOGO$QS9o_PaKe9bqp#qAJg3rQ6XiJY!y{m`T5Fv16(?3$aLbZ*-<+wxd z1Ujst+l6QB#H4O|eCa}_ebDxc>h5tbJ1w+jcNx{TD>Gx2R`u2ANj~fK1q5WALg81 zUU8gDaGiOF+y6%k2l^bWoQz~^k- z1>p5H?sQ$cRmVIBbe=hG@)ZFV;xBLf(l7nePjXG@U8h!p^2WieKS@Wna3#Snoi8n& z6ouZB`1E!_ca{$*-np9^fTKV=| zXDLr78JS4LaSEep7=*E6x;Q2@#Hl(1jU1*`hv`(g-o*q5E8CG~qKv){Dy0dl1mkk# z6ghFyNnd@1>p-CcHSmEHzx)@j)PRMMX%3DI8A%Z}&2lVnI?GuJH+^+nT6XXG$G)2; zt#+iDe5d1ps)VJAJeDt59Kcx%LRb96IoruwX5mRTvQ|i74bo4Cb1WuQ5Yh)u8h(4Z zw3!%@?xdE^Ii26BN(v*NU3q7+4XkyoiypaSm2r&HwZm+gsKemaV$lN|Y4F6!4b0lj z3nx}F#o(H@wv$5^&x|;L;7=~a?@PM6AVlJXoOlaX`7|7&+jr?L349E`uEe zh%(kW%g45({S7Wc2`_|nwfnRaaZVpr@XhBC_ z>STLx0A)~4v`J$S$2Q_*m)z7Jp={sfSO2j#uW6?4BD?9{MYNn(pO63LCoZ0S<{9V# z2aM$-oc6f?f%{Ts*LeXSOmg@C@mIX!c(g_Ngmu!d>@Mc`-2a0-KHwJs8==f8}s&q0TL-t6yA1a~Do z%x4K-{))%*u7G^5P`O552auNObI*O*cfl~Ayv(BkHz?a%H~J#6Y?s#dDuf*j%IKp+ zE+9Z4N9trQt>f5A49}F6^8cf^eRDpMh)pC?LPoHI#|GmWK$4{WLVsa$who9hF9-y2 z7M7R9LGz6E!NACIL6rKOq>4QiRuXMqh_GNnX=bSpBt)XX{{M!zcCH^t&%nPhC*a#GifW0j8;A(#DXRffP z&^8P`c0cv&1IU_1PkG31kCoSQ-gddNT4a$4+R_)tg-XN7=Zj)9DNY)7EA3Pp09&bT zZ)>~iEUneAwB(cWh?2W_X?+8(lQs2&?yXxlGEoi<>+;AJ9%9Ef(o0zktX!(goYQC5 zi=E0WK>X;dr0<~)bYW1#bHPu0q`!B)x+2YDa$TnR3Eq~2X@!a3 zN_^nt&vo-jLzb8+D3K?AwDrfV%Dvdu4{?!cbka8R5>EW)BOfrPZC>gIv^gIPh3x`= z{B8Wd@VDs^m=P1vmxs8TO?dDA8*K0Jlzs$heQX;F06(plm6iOAH;^>hp#?o;9|Ob> zm}eVDE^DMR`=U?B9Jz5o5gJZ12)ludjN8_?S`ADSK6VrpU~Pr9vKVAS)%XhgPuZu= zfUg|tXxMmkPD*IR4(651seY1VkTrRY)LyIlY1||XdDgMDf25AgmN9?o?6tgn_k`Mn zFU8>>d2$R_$Fa51HMjPE_6L9P2mdvFv>ohCeTy&mBks+^EAHy2;Q$9(c47JHKg*FW z{F+<;FL@tX-c{xffTx)Fv;F_--S2+)Ex&H2?B3iI*7)6UXIP-M_Rf&yt`xL?8ps8c ze;alh$~)fij*EA`^PN|0_s{h+&pdPQXFl^8pZPzW_%u`(0Dbi(8y zD}zU`nl0>D!8`#cC+9eNAbp-WvIDYrB9t%IA5OtH4gsLGa7U)nw4=aqmg4~zJnW)D z368_h?X%wz2A*C8vhc3mv4ekhG|Hgd6Ba*)BTc;#1m5t;AXHdv-~gFSw`dxK)7Izu zn6A9F-|7H_fc%&zKX+Gf1!2XhE~YQ8ceortkd!)Ec{|XPuZQ7~9W8~)wNwFcz;kFx zf2%Evlatu7Z}Co`UOOPM9t!E8uyRc~kRNsC7Z5vtVFT|#U3>N5G(j2)u58xFrR&7W z`e-`~pX56U=q{57v;}eTEYHY0idl@M#eiq{I%kT6A|6kD8I3t+)a+W@}BmZG89JGKmL>dGj#7|tG&+_E4O+%34f6n?d<^Yk%#(; zJty71CqOtu><=9$`qI3gxACjL3kI2NGts`uJCMBl@505(1OcSG%H98mALRvpJUg$C z(LOKusX*S&FK^rBi^w8fzY1`lw83*B<6d|?@W4YCPWpY{#!DY~{n|vyQ*Gqz0!?k8?Y@P{|I1$X z7@6WXJ$2yBPJ2DJR?Gf02>BSiI%HSH%dXD}bW z`hDTVS(~blVbg5?w=Zz4`~f?Dq%-t`t2c{o)UiyyRAfVxEDvoduV(AZqF`iI{;`i< zIB5dt2e>qP;6fwgpfjB1c6P3h)gUHvVz*QMLX)bydDUlit&QYI3KH{A3ALZI4>aAx zsV7838{L)PgQ80)pY6M1Bg*EGEB%*cv2Y?azW83&=NXy4o61VPCcXU{8Tn&q8v+A{#=u0{fZnTQ)#s<`wMwW$$>$ zJA4Uw?))?Pk7zUbm+!g!EB4*BrO)cHfMDbH&7JH>y?Oa- zzxF@7>;G2ruEl zkk!EDCPfx5bhvf$b(&5*?ZM<%p1Dgr1S*4^?L1co2VpxACvouF@sX+(sBv7V5Pmz68%$8@ z@LN))oN|Tr-Vuf_v_-XZ>VQI9cksm>Pl+DkR3}>IVF~!^iJTdrDKBM1L0UF+(9=m% zG8t$Je{R3nDD}b)yyX|B6)(}~LI8T4HLqrSGY}4R60Fd6nWXn*?9Ca%C z^zMvx%b*O>bxXa^!GG-IPmNw}BW?k9B5gf!BJYIfw(+Js6v@piH*T?kKrZLymdy;DwYlfcD~FU|7m zBx!lqJ|{nz_H@v&ZcWutFJ!e|8*D#@PFyQ@eQSM(U>02$Vb~#}jR@*~{&HMos>MK1 zCw0@78$aX&7n$A3=Q)a36pa(ohn-qKCrzHxBxFH@a~LKCR@y&te>W#}tbHKzCLg%k zzLV36ZQVNgVfoa?rD%M4Q${q|)@Rb<7sIwn5UoLvMJq1#31-V9I!}Cf1i?I!m#=Ux z{1{whNH%hqpP<7)&#f~fBV^EJ%BZTg-kY&~8h$iHNC+v0`` z`iEm7VQ5iRu$4O72D`(hr3MuQTKu)=>U-!_11ewatbpQgKWVmgyW_)?J%ouqN1nTx zXrnV`P(gWYdz0=4@!}iFUpYuh2u%%*M8=hS(sGtw(zW>*stb>;-z@sFI|n@Eb_{12 z(uwaRZad;jd8{owxsuY5L~ygc{MyumqyEOKD) zECl%SKX)A?t9Es#z|FV4?QMDapPwve&JyxGz8vx1GrO5rSM2hYVpp8IzyHZCaJ0w& zVvOKKaoTJFz%*Krq*N#evaOiKfAFHYcLp z7AN;`UeFV7opXS7MWqm8OCU)FIDVIx32TeUf$Ned@w`x|a+iYfb^=~^0<;8`W1XpV z0vnwxXX$hx($0>B5Rl8W=Z&M|VI$LY#JVzh*BzIuG!35d*T#mP{Jo|lK5#}R()>Pj zXhOTXmbSK4uR3t)c2E&MFgD%8GF0D@H}SoL-x8!_W^!UjD}6)tZztZA{q5bQg@gWJ zXp_CA=70`sX;08v1}EDM?P1-!EO9tvtPEge0P^A=IMS?6P(B7pu*zgJ7}~+kd~K@a z$VpxqXph?pX6VSRxE)+(z&8Ui^-%`xxo;I8-NVMgg4+(yLzt|g;I5%!3o$6?tv{xv ze1?}aQjbWN=LX@_U6RR~$*Qm`-{N`>&EyS*$cK)!6(yCnxSVY}v~?a2fUrScexuvZ z_qn(f^GzF%4#0pL;iLg_Xr;_XX4BPrc;p;8Nfkt72PG?~@!^xx1{`&A&*TkMm~xS7rhqI^-K%1aLdO zjr0LN!6%Lj2X0sP(SYmR&HwTX&+~Gm=QAnr#d}|V{<(|C_^e;vDZpg@%Y5$dC0@?w zg3=2t7O1da3Q%tA(6i5c>EfAe{rA&;3=V1IkH7jgEKso!z=Fbk_j7ldvu2R5iw@%5 zU_s)A7oO`||Dkc6FA&U_FFOk?B6kj`pEyp!tkYT(1NxJot<*W^NprBRjb6dx$Upq1 zZ&cRK_n^&c?O#Id~PYmlGqy|hS}GDzO=F)n?pTPEfi z%$C;5GVsUbX08vq?4U@VY^h^t8ew7A32CO<*vfoGPcxXdurg~OW#53)zwL3ct-t24 zPSJJr-h9s~jdT4>!IZ+Uy<&c3u-t7I?#S8z{V6r^h;mrBT;SUvt+ng6S=%>kK>>$& zCgOeJT^A9@^DnW}s{N5JzXPp-xWyN$phsu8x(r^}sv> z^7K)Hu}>E;Dl_!*Swt+`)&Tw37rZS4_32JVsU0*^PZnlzq6$zudRQ66Jjq9&F+1Uu zR~vd(Csc_2gqN@KNn^?Z#cOZVx+t^tTDzS3IeZs&qGO<)41<%gj8%E)putPMQx5oQpxJ!_BB zgWwoZJnb!f09CzSkZBp8BG_*W&abV~>;zc@uK*a|g8a=Trj-MSi4v}!w5Ev!AmE2;fa7R@Gj2T5D^ zWdXiL(EzF)X>GLwrEpij>A0oG|JYM_>t^r9f2EDr4yJ2I&mN^wI@k^IPW9BGx^ie< z`AFN~K;{TsXlEz&+D!PNsR0_F@{ymDEhq^e66dm1Hc}WsEC*>prh|;g?v9W9@H;-6 zeGdZ(2j#Rkfs`J22gNIk@)-77Pxkw5i+dZ?G_GU9}CHAKN1Db9}1r*=L!&`|>~a zvEFJ+{(Kw%y$s49ec7WI5Ai&|pU?BNgOo_#JK$toIG_E0fyIOCEE2^2DI=^%TW}k{ zpBD5nfU16##S2igm~j0iUhv1H|9N%}_yvONe4*eaw*R~1LRwiUm@-`ad{F>9E2py9 z=GxvkYk%d!RvP#b9$ok+|LAQz_um%}RtSFA`kXEM^AKD?IFw<-QI6V2e9qAq8Ol#< zOd#Jp+njf|THjA~0k{w*JqtbJ3zLJoKD=D~2Ch_B7GX$9`xh=gTzLqGDwrm4qzjWT z0gRd%a7%zg=Mp(Hh*n?03%LBmZ`{76^!)0;nQ3HAanzrujwuNLrddk$BdUC&t!<y}@9Ny;Izgl)<*#80rP z2ccQ6{nh?^$A4kvs%;F`3)0=7v7JkN!`^+~`sB_!%gDRjsh8j>kB7y0?|gY;X^Phc znSohY0F=YB@GKlVkf?g6K0umzM+B1;5Eh+j6{tUuaF4}+zfUOLB7XSPx-q2G&qeDLtu7P*NkTH&J zF|wX$+bX@Xu}kjYX*7%Hq*pfUaX>_vI!z2=ZIzJb_!~6N==J>^P!+Q2sf?#GSGTnB z;VHN1n|l##kpQ*zZmcI$LhUv_6I{Gp?4EiCuktg}b|6hd?2PO^mySAmOqoVO`e4jc z-wJY*baxHsW+C$qA19XSmG2J|hfk4b_p$FK z<11w@09>*ASh0ME%%z|GGmqWMd67BunB@7RzS1}n?nb`q7T7xURTt#00JVS(WE;AR z0KP!O#^fTvAO7JVUie8spR;ir4l8kKkT~mo+y9l@{iWe906)*c%AGHea!ZemI*plp z8~WuZKl#aLf9H38=a=QI!`FG}E_ABXDaToI zc2Uxbqcbu;2T4g6p3c*bANdYGVtD-k9i#$Ji8J=dQx6a?_ub z{tkA$URi?7&p1*IBemE>IPD~?{<4#LJCX)ho$VNL;G?DEh$&CVcz4xK*08kfm}9TN zg|Ft1lKO7(g>Q!(rQ2(fCM7!ykK{8zwrmK9XgPHd=3q>IP&03X{pu0K^AK-%g|B!$ z#-`G!?Sm_P21H!(yjcgkD!?IL?xGJP?W5gB#_*De*}c=E+O0<&P!EgLuga#@BWI+q zo*l%&FWICiBzcvZw(O0ezB}tX1LnfAzr(U}-wP6N_8RVueI2c5M9Sj<` z(~XWuXc3AYTM)5sDBJmj-SW%(4#-yuVKqu@I~{oA*27A&gJy+{=z}M!QE7$_06ixi z`YD&8(lpzFcoFROIuZb7j%^S;R^nV(c~@7;HFuHNT_B~{z!%YR*M_?_qStRs*_nT| zf0-zwHd%VMiLJk@E5n&gZhZvcKm3QkVwaP5-nlalu6N0NXF^E?ahq`v7l@^*b+a`ZftZztQ)MI&)2tMu-h39QxTzCLmi z{M98p1E?R?ZMXYN-#X)G{a7%GtWG+mX@QuZdcd{s9`KF-*Lk0SZ~u1(mu6Jv7g>NX z9$Th_V!+%*+p;zv!edv=pT!5|@5KA--}-e|uYcWZlP}KVg)l(+?NA_Z!)iZa|4-rWjwjSCZR;Jcd{Y;s(tv4f5%#B{~(>JVVdzFMGW^)kY{1LzlDKA<$%uuGmALHS$T~ z2-9A(ptywC-HUcP0b8li)Yx(KVSnl+a#E$Mrq1FNcE*=ytV13GK{MBhn*4EiMdEXZxy>^pNdO^#zH zV)3P6fK5Heb}n>pIX3y^m!*TO!9hICGWDZ!248s$D|}_A@6i~*%YOrMk|1pE{TT5d zm{Wa1mW+v%$$H&-++7@F7s{=DxP4ngjAyB$lyzohBDZydBum}UJZ&Y9)|p+nIMwOZ zV`)iA{FJ+7hLG37*mg>9NERk}>aAXrH1b)?y0Br5)89rG?PD8DsEiPv>z3zSU}EY+ zl}cY@$5nk!HV{_%)<-QN$^`)ixi$f8M3kSU&876tk3f*&xx7m8yqqn2wKHE*AxFGP zrRT+rd&%#Z0Qktj+~9LR^;19fYn1P$j}9|Gph;c%{C@-nPUm%r{yD^Z@x>R7JNdt2 zqMyf-+4g_=!4G~g@AmoAKmAi#UatS&_va3 zSOmCm8_jS3_HSRk;~nqt&6*eP0`Lz1E&}jkKwr9XjjgJ;7_?fZX{am$Wc$uO2H-9L z^3p31cRSmS@BjYq|261*bRCP6IpQ|dwB4rbOq}?xGirydeCu$H-*&_gg@)dy&W(=d zZws4R@379Yyq2bTk)=NKAVYq(E}Nh%!V9N!H$Kj{Z!e*5MK$DEjvau2SNZBZao5w) z(eZ0chY?O>hKHvF`|R!RLL>ar0j1LbD1AjVN(XI6WAjA{6i+l z$Q1A$OvV1GN0sm?9i8;6pJ`a<;vse_?6!X&%usH1_8lKS;~zWF zR;(*t`)+_|pM8eM58Tq!e<7uXhV z&x@~plxbx%A6b(|S*C9=?>tz?Oj{b!6M)D8txXq)cmz*<8yIbCSUlsFU+UG=iL<;w zFTVEK3Ff4Q{_>{ZN*=7h znO=JjR`nBBvf%@!G!&SECut{{l8PFnSB9Vgw(<)bT+WN9zc%RiZMU|olEI@7z3>(Y z*v0oUva{e}8LOXs$tOO1NMN!>#a3L$0<*Yf0&tcUB^^p@6KTmq+O;_|vdA&IVIOl> z4tdE}*v7XF%CmCReyPK(wvR12Nh6PV0Ehhee0495LY0TL#m3n())vyO)IC*RF@$Z7 zBBzY0k%Gv>H*f3>;&wFvKz#QcKZKaw1{5>z=cyo7J;E9 zy|lNpb~w!{aATvyEtf5i8CRxE!`iZIQ2>h$6oz^UUwa+)OB#I$StGOMYN@1-m56!D zwpw{U>@s*-S(G zAUgp7z2^JGMB&llE59$^X9 zlm(8eaYspYSD3@4umF(wo>>gI_3hvO?N_`A@EY53uK6ZT&Bf&Z(r0pT9yZ?K(5TaR zZN#MI5dh9Ma<}>1u<>$z<7a;6XMXx{i1-W~ii-nuNIGR5zmEpVrDExeJ*4J!4Ic-<`l)>usaLv^%Tk@gJA&dEQK?zC}#te zSi-?ZDOIM^U}5!-E~Oo&b{sR`jh?r4ZWw`XBpp^eWoXj@oy!mz5eB-`DKG#;#8|?C z)dcA}pjAv{fw#JudD7i0=?SCFgcoQ#n%KgEAw*rR$|Rv>P`S)Qkq{+473FpgDbtjd zup6|O^bHYiGEz3wx3woqD*wX4-?HxjLED-q9n-91o?HGsqct`y{=mWXWGC;ChQ{#s zB)&GV{H5n`(6hFIMg|WK2(-z{AdQ`H29`YYM_!VqZq$(EfQ!AAE%xSGz6N=qcg!eT zhZ(Vy{JkWA6WOqRuDvtj;C6Y-P`a9K7nK6Yk9MeZNjV0X*?EB}tp~QBwwVsv7FTh! zW@+@CIzDOgcOo2}h$}w~B5Q3_eE|S@sh;R*b7>1}@GO1P%rni>^SXyRlNLL*aw~)U zH`ta;^EeM)I&uE^Q=ho_YhHk=&dM&F+uxn^i{a$Z@`eJ>>%W|>iI4KGfW377_KslMTJovlGXZoIh_F1;xKbwj8!+hS)yLavY@Erlt^*sYFEJPn{ufEnfAAR6N zIb2;_XJ>-p`i<*(Vc~UlV!3PJ6~07}s&bQb@A%_~1FsI(S!8g#{|o5x?DNX-Txh3k z(a*uTbmu)zm|!{in2PT~*)}0{bqG)LwHxsh&gdcu%V>kLO3(U0+>GeTPa^T<)amME z-8Wh_^c&XqQ=XHY^0XfHC?|Q!R$lbi@-r#zGZA>}M_OLRsh(|v#y5mNu+ep7k;bX* zwT((_Xos)$LJp1xq#?Y`wemB~rydKRFy-L{m^47@8c8W0tJC&t=xCCYr%0+EHbcecj+A`La z*FT=|RK_5td{VO1FL30gD*BLnY$qJbe%8;0hj>P6FUx`j<8lvg7Xd9J@LIabZ5dlv z*FI#%royUQ`P5$d!c6g87|G&@viMf}<*i?Qusk*lPW|2_G8WJtC;z1TM*lp^Pn_gy znczEzpuF56;G@Ww_@7JcaQWnuPwMlpKKMa?|oX%w2r@ z|LQ%=@1E`;3*6>A?jX7T&WmCL)ClK|$43E7b9K#CHz)s0{O{od0jH_{O z>v8h$mjZxymq1qcXso`>!xsWFZoYZzeeZkU$Jn~_K6&b#Im?EilbhJ#JnFCt6IO*h z%b$VSH2j6Z!2(%wO(PDO6l4G)^=W}P7FxJc(F9o;o;4JO~|N1=efw=g#dhFmWI<9djn=f~isU(dN-Fi#l@g+G^%t z!Fp**s%0}<14&rB!_pj&7GZtcI{uMc8=mP+VE7Uedq z&LdW?YxB&r!-oms^__#oAwKP0i4pF}*2wUs2 z@@b#H{L4?|`FgkDI~m`4<>HWoAfNqrV#ec87mvOCv5SWudx$zo{eh@*c)Y}xdKUn^ z^Y4T@{NUmCd?)Zu!Y^-LU3}^3r?VB`JO2;yX8y-t^~#IKU-@{zAL05j9y4$d_%QDQ zc!)&--xcs2?+$q31>W8d55GL{=%YM>z~X_n^yPj&4sZ>=%AxGidChB{oU1+fU(}u>rRxSsA{KkwO9oueN&)p&MpZ}A8%$EvYcC^!c`8y%SvexP1PRu8aHmkMdQN6~$*-&uq(99u=gp8GffMov zpzS*L0q7vC7nA%1;a#ZIKKqt_7r8>G6Z{2D+Hqk7H*DQbzszN6)u*7$f=1`AgVJD>jHH2RkBbFX0&#&1N%PV4!%n|XX$IJ+RJ*EdO#JRzL6L{ z&{Ci3PJbDk+ihiA+_18VW5BOu0$4ffH+S*U{P1#xh2TQQ^6@OKNl*LFg+HY0Z}e@m z5M?4LgJVAY7hgR+$VaKA5|&;x0(@lls#W?ny#+kit+cgLgFY$v)w?xna_vini@jsx zmYBGHFeUnG+U)0JPSw^Mqa44m~ zz!!N)(5?n)OJn6tVoVZvO6cO^$A0X`{s$-ij{lh_cxPWczZB*t!+q%=FV1~Dj|Pyg zA9D-LHMjmt@9C$XHqAT#7k~ZNe|?LEd>Nqc18|FtX})dKGcWP*x&PetX9X`k5NB8PuDNZ8g#h!sO(&jT1Q0C? z0W1s%C!I@P2>4zW1wL+5u*Ol&#{$0^;a2>q-ML&a0i21Md!= ze9pA1(1q&2)j`tgyXju9EHH83mRTglJ^_ofPb|7PcMguKIq^1MIt~yxliKpxPR-SR z(}FmimxI@}g{0+YXV4uTwVCO$$;b#ytRWvmW$f7r&Ur9Txjb(;;=uYGT<|rqAi{Gx zIyd6#RQ?XMxjPG-Tbc{o&TDNG{ekyPH#ukH9TYb`GL9IfJ@^!x9g&jKLGx>;OUGwI zf^rD!*+Y5;2URX;j7_GFQQowP+N9+OH}!?=*o3nInzN9=^)!#>AOq!b&aXVpt!>5k z{Rsxk7TBG%$tmfcmHYON{#55O>1E>J0JvmUx9Vr294bfb*?8>SLB!Y)sOl>02Kg%Y zdD_Z^eGew*^3hIo3`^qB#e~(%yS7M^KUH5ijmEMDqmKO zz3=6#0WK7%yAx~adbeMiX_Lt99eo9S5c)ob;NklS?q^Xz*)r%yCf{Y?pi(Hn-twnJgFGopRmZF)g%C~B*y7#_;G*K+K2+k*bnJEG_M0h0D7&N<%JDPY4# zI;(>?h1HMaZ-7vB>2_jKc`Oh`vz)}WoUKFRN|Z-#oz^Y?@Hx~9zv_~5hQ9U4JMa?_ zDgHmQbV6=jE3e!sBtLSdX%Bgjt4n-G?Ays*=?cGmyi=^Nbey0bQb3l-D|YC3MlMgX z5uf^ycD{DT;^4(T5n}yD?b1F>8j(mt9)X=~v0adDF3|P`eUS%NU07u)U}UR~`_fOz zX!o%bG90#xe>A;5D2pGkqC7=F2W5}#Miya9?^M5<-%m+mqx46so3M^+q$#1wF|vfO z$vv^U=~X(Ua(8nmQO+`JrGDR4bgANvRb`fPbD-PPw@X44Kh1v^AE zr}Ae(R+-3?r|o#lQe4MOhW4+>k%HB3ZQqvlxeT|Jcp0vSp#zVT6!Hr1O)GZjCB2~M z^c`Cud1#>>ytQM?5jeRz-XyL7mw`|CCi!SMAbywbpKls64{?La$^hqY`P6p`KZu8xyjjQsz$FU=F$VJj%gCFJS5EYu{Idi3mY*Yk%Uj-Z^~4iT_|-8N2Ye^Mu>c^y zv5&@E!$#h_KX--&wl3cp(%hBeHVd$lW}{4+lYb+euesI6I1M!`aG(3!=Pus#rZ@R= zj=Z6hbGGfUsu!2)E&#x#Kr-(FmFDILUENz}6`?zseb}7sR>hG*|&2Y&=JhTtSNvoE<{1ac05XHh*$%(_#8ZB0+c9|uq=CT+5xU*T-*{z^PX=@YxiXtB z9q4(E%$PgR)`6daL?)xz_P2Vb14d3HvI8ty=&(4FJL>Wt6QG}0f@^_>j3OrLsWws{ zd5lx82@7?=Xs?sZdzVkU8`PtnbuRN$8yC;Ga%AvI2WVMFcktGVfdSLAa*bKIrv5M} zjjWjnIH}<%m$Tn!yLeW>#D@-oYKPdOKdEo!hZq?&$y>P$$KZ>&ydzU``XgQ8_t-(u z+M;~3<&bamI&dt!a2@1plM%>hZt?&Fq%?&O4dgkcmAAjk-+1aH38on=pOp)FM6dm{ zo4R$70T14`WqG;PUbL6NOV+d53<= zdTns?25i-cS7rW0^?Tx6exlD@QLU7!05?`TsH#e-{$2-@M*7 z!OIO(@6bOBPtZttjQus1hZBM(ja@7S4*9&{^{>151{MI8CpnrgWqe-NO>evH1gUVr z1Hp4)TEvUH=Y{jyc;Kn08FsPIeS&4a;hJFznK%#y+X`~8n zxiBHceOhbi~H&SCXM9G3Tn6NJLC_UDX^5c zG-4Ld`jGfq)6}zChbL{X^vYNH@*bDk(}I>l>Kq!So@ft)S^6^0kZ3C2sScrt4Qij}hQApJG1^|_oJXRFRZMa8b@l_m zMkn*;odDio!N=?8ZtG9LntreCYBU->(%!?YKgq4FP^#rKX|pSEfW`MvD*bhFPVJ;J zbbMmo>8L!`hb?FG7`xE_pKQGJhaGHMf5h2Pp4h;CoW$S|Z~JVS))%yHnm=H`7#FK` z(?xURkp&(roBpCSQXg2@|i|XzMt;6 za_0aI{@O48;xGOYI}F}OFVjZ>(uv@obflzZK&;cLBZA_=PV$60H=IzNj(7uOY@A3O zozQV-^Xs(^o9?&tbD~okM{TywWSygDo$5H4Qqj4Fr>FXVDLU|0ew-pKr^*AW6C)E6 zbOv##kmUQc8clwN6MrPLbIQO2+IC_NjtFIoNqd>}c4VgxA%Ofy+Rhs(W-P@u6A|Ri zfMDUYWaNq-(@~q|H8MD1sE#{O31&nO4;jQ>YcmI5-uZTt;((%^gjn*bJ=Gs}4$jo2`W3pgw54)c zEDku-Et5sEhYtg<73kPjIwE_ATbcrtHl-gMI9ThkWn-~~X4!{kG);M(sTJBFgyo2* z-EkK03t#x6?>oshdi{}YTia-l2l)J-!O!P;_sQ-558RjMa-)Z={p1#dAnHfAC*RAq zd+VH&GwHc?U;X@qpK!NGV~}(4$YYP@bAnF%eWw6|P3^T4Y) zb#9%O$K#K`;^J-J^3C~NVJabMTdq^Da=mfMnV$txh-I>9B4Nt$h>Np$6Yt~&f4Z>y zeDPi{yhNYmFS#T>J>Qo(u})~ zLf6IK`Y+{4`Dj25=XGq|_Lq7(G)LD=B)$8+Upv{hQS9Oo&%{j}gZ<9Ng&)6}dWhtR zwKlKb!Xl))w6u{;yQq(o7Xx%6v2{y(q}`A&ZTXpY9!8Y&q{PKr*-8-Fu|fMMcg&c7 zo7}^v6OHH$JF)BEjf-<1@~>Pni+2Rqw8P-U&S7dXa^Y*4>|NT0DWCd}<_lAPo^wE7 z8$h@!k#4!#>Rpi3SDkQD7qS4cwgvDgBjXCPK5J}qA<1!pSfzWSX={-826@M7 zvE8YhPPn0wT?#fKMd(D;vX+kJAhdkTXRqaRuA4BccjQuUNZ7{x9l5fbM7)Nc0}uIt z!dV*&Z~C?c@qOR-eg8G~xB+ao_dEXgkzg08 zJ(Hdt!}8*grsbJu|GoQ<&WEtfJ+9n|?B~gqXdY3PMhn@*(m8ONbocj8vB2rgNOy`v zcjY)NfRnH-antDNxYDrr#Kx`f{Lb&ZhdcIu8Q@+ApnQ+hyZ+bwOyJ-D`+q-<$i_(n z&#Q46Sh`9l?OQGa(AcvOV4O7hUPHdH+Z)Jmoi@&S2blUVTqC~#5Y`du)sU}={7xJw?gSjEz>gy} zf1UGo)XcjyB#v4P2YsUqjqo&MV|6<0MLNmiQVaYa2=u1z!=Fx$*p99akUFK~*AOv)#th9%n zz7vieXqanokwbcU+=KJTthP=-R5|#jZ=lS$>=w8118VTEUGbc#NDkJV@QSs%R9o|` zQMHYBk%of=@5UyiJlY9wS;Ek7%nKSBC2KG5)@*|r$;>cCPEmn0X?B1?=eHt=f=yZ# zEo*RP(R^v4@7B|;M=L0 zpwc&7fO!77yeA;L3Ni>KgG_Nv%uev8?;#Cq z2xoY&&AM$}nc}{>aAgC9LfcOjxZ2=tr4Cius z9a|V7WE=q4rb#6)&4ec2dSvqC4vorCey7C`%T4=0qYR-TYW<$H(QVqQ^#^c@?}i4A z4^WPj{hYl%H!zZAi_=T>-?ImgsmrD zIQC(gBk9rs3p~57$~5+mjsgK;qiLCqe&Vr+LkW^;=VlO?u(su#)c9309dig|%dMw6 z$+tM#B4wvQ1lx>ZsS7tM5p_pP^W}tSz_&kuTZxanA;ORNp#dN2PU?aD>?`PPDDwND z5#EBegBm;t0*7r!Cd)IrjSrB=j9;So@~Y`-aP>3byYu}QqLo1tCx>4cTSf*?_C4w! zfpX4RD1M`UU*FKfK0$p9wb``&yb~vFEd2i95B}i2zx%tt`)TT}clE7u-u?G1<6KYt z9`dgvxA}hVufzfJCL{9*2VB>lc;X4)F_s<4?|%2YZ++KyeHY0M@8LZF>;zDLNQVAq z-96ty7C3pcJ4mRzqTFTy8&DExR2Lq8WAiWm;xF>X&EIDGjoWZ&tgh7EVtbC?=yWmQ z>Wy!FV;V5{c_EBz%Tvm&;R^?@5;Dd!vPuIAhp~G5l{T2E2sr4hmIQWvjacSw)h)2PEspdWi&mo8X)}raSRc9&{(>{i`hwLm=mX8Icr(rS@H+1 z((52FgPS9#GD1I!kFGM0?1DJ}GNfNY7K8AWePwWb(>(bb99xN78#E2f>QviAT~#I* z0nl@FRSu8E0^%@?BlEeI_u9^LWPxhZ$@459^OomQ$AnfHsU_?{!L!HG z0x>cyoaLKxfG$|NC4)o}nyIV3uCWMkXJYyflfjwX{4~%gB9Xk#H zS$#>4zVasRykw6%W#wP_tsgRQL9nc&U(&Qi$Me>^`yBkBLGjdI`kuEOfv?eJKv)|^ zUUI(t<1%fWt z<*>a`2A3=nsK<*hemNFUs>s1$)?GQ;`$cvgFyP7#26Yn0`Zc~0JZ0`8K(s|B<@AtV ze03t!ZSoNB;)$<)%f;6|@kHv8{5Le7wgz?slR^6t2|-f_*m{xL@)fw|OXIwZq@oO| z&kU~3r(T49;<6tc@z#%-XL{R#b=5()_8nT%p(#A*MH;k$bhVDS($Q|F$Mqhx z#@}>l!0&wA-e*9YI6h8Y8+`Y^*BEZ*u-Pc|0 z)_=LahxrKsleSzfG868GJJSNKWp}1*f9Iu|#*@aRF<4PcV`7qi_13q(HQs~I0=o6) z)|=n_=8M<8?sbRFXvm54g1}2w^L!y-UhHAxrU9q%LjRJ+f0He>*MPanfZDfsUjEWA z{K6l8^rQd#Z$JPZb*u<6&bOUKvH;kIuA|zx+jw_yr(+6@LGW5fXUHPMI0$h)3>(J@ zrXx+7l8~?STW42Pt8nQJ-CQgUao33&U*5*gC;kq!*Xfp?K9E61oGr5D41^s4|LP~L zIAbOgChvsLm?MJ9dUUR`WHMLBy}Fndb3njBlby>>D9tm-$Gi>O86Z;f+9C9FjH|b2 zxIqs+M~4GH1Ue9)vvb@MI`E#s5Z9WA7XwLKo!4#}_XOYa8oG2CcF6D~LHO8rb`XfO z8aT*v&{`XAYRgty>IIkMXZy)Mjv@bWILg&QcYsNc{xjIwa(7^|_E4_sql{59<#gg_ z8HD}OscM6@gSbj8z3srWgCev}69TohPB171RE4ymc)>MRKIBMS9ig28_uATWGjDfj z07_7}4yr1HX&nrUmph>{%J529%5M!wT$r_iY&UFL26q+Gc1HPk!XvN6HNL^NxC18h zQ~u;fHf=RKI?zL*B8wGH-lnb2EfevVcKBg}3MuVpcr*Sdp8CstPS3XL#5~XP4-dZz z@c64QH@MR>$7Xcmy@1dOCzHifYc<4(4 zAK;~g@<=IyXL$CRXD>eU>Caqz=}S-ND+HFYvZ}eZjZL%zdbA9<13Gq+zwpva96c%F zz`g$UZ@Bo@Z~cc^tO(TLtc|5*8N@!dQT&@EEf+$lcM(VW$Dn@XD4)s{GLbdcOh+;y zbAAEd9!}mZyL;(twrpbyX(PAwpheDZAa;a!oxX&#H267asgt2~XXEXAlv#i50?yL# zb9J)-chHbz@xyy7UwH3iUcR=$Gq_F#v6(t#(z@m0cHog!xjA$ck)smEC--66kv;Y& zem@KO@>He`(lY-%q&l6+Lw3q7bb?%4i5pqcS4p9Zf<6M&Q2C9wm0@0B??DFf2-(44 z{mPCB7}ckrb^@hL04#hb{aM@}CAQqr02#5(EDTv;tzY^_KRG8{^=w}%J;x(U-^GcO zSwJRV`zp6xs%4;@gn+Hh_B{H8k7d?AK^a7eEIGICMOf{?`XS^`m0g(NaveF7uVKKLG8Jawlufz4Hb^UNs7g?D*7w3Uzx;$L zZ?8Fm-5;(G0ga#X5@m>09QDkdW_g95G?zve#)3_aI(WGg65f&^%{o_Bj&F#=&iZFw z32BSft(0#Qb&{&Ll6Gx(7oyV40<-$E43q2Fm^xj4C;9eT_`z9?#7o?C`#1${S=8re z>}fenS%eWkf#qC!rdCg>t#0I9iw$loD`8LiDw{`mrhX-Ve;gVdz`z}4SQ)jEpxBc- zq3rK^*Sr2J`W=Il|Lpb!*3W_G^Wbw=|H3bZIT!H#0M9-5+&yOZX~zHnKmbWZK~&5e zEI9q})jnb@>?c0)iF`8f^Pm5`4KLw6-1X-;@Tg1|N3&`G1T!QFCEz)AfVzxc%~8nJ0NU-O#RI1{;t#(PPl zcEDgGzt=|rNVk#SLx<}pKyEMyx%Y>D=!gE*umAe5{}(ue*XuxlId@iAGSXW@-!P2BY4jW=?F zN_OD^%Y}nP;uAWdk*0LaaKg&nMy`jouPF>w>CiPYaAzXGq=457r4vv#r3^L^;gs7Q zsD5@ZI;j^&2AWdKKl;cd)Zt9LdYE{iXiFqJPnv8N=6XVB=R zR=mZHt^ioy9D40w%6zw8YnRj&i4YigMlazu2y5^xJ@PoES((Ztt#7f`CL9@D2>^UL zZ+CNQ$4IVCsm4zB4D#=@jmqsK2g*@?nrp-&Ep{Hek`Z&xKv=>;RJM_`Hn&n;@rgRa z>QR~uf^ugB%a|~Xyqg>*Tx)Z2I0HIDrZMg1U)5a09-Z@qYg zU0;?b0I|hHy^IXf*|2TEYtnh|bF(QX#ypFsis(0_+snzIV zL>N+fcfT@G7t-#?q{>s?*w%cYpo9K032H^Pe&)KQiRwGOBY!{atuflHG6?5{hT*)? zOg1^?LRl%7@ZLIVxlzBa@Dk$}Pj*1Lqn)_;ZHR1eTtCOHRqCsG`my?`wR{$iVU2T< zs76U261#D|_Fg;MMvefui(DIENuB7To$x(2_qKEDh3&(DnX@|?f`YSX5wkB==U-(VaK)jJDvfoq7Gd9l$NOr5=R(Wi<|sp!s8nKSg6QPz9|M9 zn*ZVvRvxZZG>N3;>>^$lSI`?>=H^83M3+YOYTYQs>Z`ScvD|FCv7Yr}gh*c!g!)E_ zZksla&9VTcUr&vXL4<)8s$`@>n$1cN;do%*%M@Mb;R{GbFXY2!7d@{UN*77Rm);$%^;!o^2wjcchKMdsNwRT#b+0jPA(vo+@scfcO z)*JMDD~pyWP4mIRNFV<2hu`~=k9_1)-1+wzqMP0f*F#4a&;x{UHI( zn{NMqyv804O2TJSq3xaA#X!T+*E_1>D-jpKl1XV@KBMC_mmKR6{5@$D3JI?Xe~xU?L=;4Kdv?|vwI zVd|)iyG2<&n_hmwr*rTu{oVx%h>|AKADw-lDb01roH;*`?Zlio7}j}9*HAtTSd@2; zWXzA9t~d*BvNlM7MC`$Jr4M~NDOcXp2_!>&x0j{dKpai!8B0e=BxNVM_L1&s!gns4 zgIH--_R_XHK9kFi2!U5j^A^XrVRdzAZm<*EvdyFwiG*pMy}Sd3rdffVzLj^&GxE|& zdDd8iDh=%sz0C8FmuX91m<&=#H*fQSiC!a{3ulqXK}1b}%%n)i4l8)dtOD zi~NmwnHU7tP6#UvxrmpzKY95PdFo`?tjNY4J7G<$td()wjp^jCJpqY6q3-~@@{hg% zTPOeB@BUuirti$x=k5(_N1vnLdi&U8FUuYHz5B0eoKQR2_E}Ebq0j$2Ky&-Dp9FmA zg%_d8jS;S$us_U;{(PJOUrF1oejv2`B5Q3YPj@2ZQ33F|vklGz#R1Miy9&@|7<+Bbc}*Rvz+@5RQ! zu{_at>};Wghwz&QFQTPy`UZ+Aeqi&IO}oo_aYZz3VKzN?Zexeq(7KX(1FrCkTdc=_wZk3yBz|IQ9T1<$~vJ8=1TZR_b&GYP0y!2OGNn5yWFWxB+FVZe) zqvZ`2sBPmd6L}fXcVw}?xrhnhh?6>*g}2Zjo2;#T$IAGOOzaOn?K9(BP1|(qe>nPs zEYdWTcI(?-i=*uf<<|mW9HFqLa_V{Gy{?Y7mko{Td;P2RGEs#`X|G+1F?0vra%dY{ z`r1n>;@*ybYJ1%tAN^Xe{N@p(Gn~bRLB}3r4|UhBv2C#hNq|Gn;+kKd+_PEAC`4sl zEE2-^)Q_z$KxoL=lyX1nN|-H zX1<3yrY&_bBJkQHe1*&7r&=NSEmP7B9g9rcfT;_!`bX*V9 zPrRA@XEA_XZ#P+xzT~E%S>D|j|CW!$@m{ga9o#LzoBuDFSBQVbd&t}|eDyuw^F0yd zJ>CAlI#sw(yZdveTA(%RPL=MiT(N*ofJ1*0hv0b|n=krfkb1=~0F!+j;O3k7Bp`3| z=bPEj*;sA(-o;F#$2ofE-+`y;Hf-EMQ*dHLsujsfp}`-E~k5^+5Unfw_s z=seR)^fJH8Zm3ehi zM&q7|<*vSH+6&4hAiSvT&(ovflf5V zz3+kg0k`eHz~uj>>ns3}{}S8uT`2IAfVbuud};bJKR@NCy>j+Wv`pez%q{`SumW3^Ume|CQ_ftnF9+V#u@YxYy;Laz1K&ZN>sr%0|9RQ=E+# zM>}Fj>b2?m)r`X!FK6r){wJTP{8|~<7<*|**LY}C2e(eQEv3w_F`@tLkN)V7{&&D( z61M@eagedS<9&`A2UOsEv0oMld_MsCUeb2bxY#*->1Y2)OU?h9ulX8TAMYVE&ddL@ z^`AM(Q9n$-8}57yv^L-Qa{ir`kOpkSqOG@c!WdV+55O%q1}5}z4y@K)(wMLLea_vU z!vcWMv|jm$0O|CaSJ!Cdp$E z#(W1+mTT^mvMpZy%r_`sb+=w{fZqXb>w+uj$`rY#+|^$h#5F5=iz`&FPj!f-=o`CB z+k-!!-!x^>WgrGyu84K%?cd17HVQrbl(5 z3|tElC}^jAf&bj+zmUoGebg!IyCx97b&PsSotU!Z+51Owmw#;&-q5|y_Ijrc!e#LU z|AN0{p|qdhb8Eh^PG+vV8vrKKc!=%vk3IUxh^J)KGq>sU;y@?=es=H$UQp;AF5f%g z^Z$>qgFwG(K2$DVWShToJ3)4`;@kiI?B6rbF!|5>2Y5FDiw`$!sfm_P<4V<8cup# zs?)V81DCgMQte35v|4 z0^WsBJBtpaS<>M_*?X3bZAxry5*rcUwnmhC-^X4|lO7TVcj*)s;`XJnmGYcq63+H- z7#kdX%u{}?yM3tiisM9Y4XWHBk)Lgc3rAx5DzC*)7`n!#g^%rl!)}=&1Z3p0TKL$k7cYJ_NNUwzeX{a3BZjLnhF_=eJnJe!pAl%8R$NaUey?qc#+(m0Tb2rItj zM>N5>x>c@h**{Q(O`SUy`1B)L6bKt}v|VN0F-vs_uUXiHj)}S1rHYO}8>Y5ICk3i* zc=+!4j#F)pA7>k#)|I$sb7ynDQ%$i)BFTi)^( z=Le~*Pd)Wi@_(C`kTdbWaPlv_;r~m<=HC6ilPu7>cPB}7SC;?Z7O>IL0A0O14tE6j z)=pl|p%c2AM(@i#Zn>?;i9L>}D5|5e7VeO@ zB9K%0phpV2;%of`nyJE?x(fm%nJT%2b_nu0ZErP$bUJtkdmauPatG{?p|b1Lg+^v5 zq7zpw2XS(zjB=71*BbxOODt&^)N4aJNG`E#IvB_l2Y``dcost%9!~bQY?UE0!Smc^ z00x%PktR9#BWDKWrP%byrhK4CZuy+U7^icE*2o|GpXge5R;J206X;PGnH@2mw!i|f zjvlm!;95^M2y5K>oDxc$dcxhohP6fOx@qQ&>>03ifMY6kY8F@IcOHZ{^hEtkJQK3e zY8z}@0*bT_0Jly{TfNtArso><>z{LT) zlkQi(^3~kk_qqGt6%}Ws1eh|g z_=b*lj1NnK1JKDj>=8g<1d#9gz0{A?ltTDhs%|&!Vrv?L=@9kEUC}c?qRrV=miE6? z%r>3JCqNMg8)Gwl-#upwI-^Ut>KnHFJbPGgw(d|L$hYjXuobbSZLqZlH`mVHldZfY zhYok1=^Dkh4e~Et6FM0%r?e~qqFU)lvu=af`iTtkbpa>oKtUvQ+f7-e?+MM? z=1@cM@D6|QJ+ED*M?5fE&>cCnc$1^kzB@rV%=d1$M;@WE%c`pl{Qk(#(5ckPX7u+F z%JyVXPTMH(h%gIO&=!An_iV`IOapl!NqGzoDd|^*6~y`jT=XGLenC@qBG8QAo3jKH zq$ztO3%rX#!jC%PX+2-~FpyJVNN!H9P4iHCd|oH7!wFkXtmPtoNm#eBZFrvAR?7Qe zDNRFkLRrhl!(EQ%fgIbRTcoM=T1S^i-uG!VSV!=MQ9->ULnS0#KFh0e0S~+E zhNGN*|M!3YfBcD`_=$gqoqVU4JA1Rc*E|1n_dnx*c=^`?9cw}>7W1EpZ&>_iet?{$1O|sS8>9S!chUFBU|U>*=qx`M?PJKofYu- z(W7$?2vEWWXU{<%N36r$iLmLVFTDP&!OrH~PNicSod_VxsYuFY+)(&BZ{m^I6WoY* z0%xwf1d<&Yp*eEttbGr_(h3Z^b?_X-@Bp5vOP#&GQ@H<^y*G>1G&$=$zmt`fSy`KH zyp(ad?P}wNGT4o0T0+7ajW6JW3vNLg%?*-SM7t3d7~EGB76@@MJr`)`0a}^?+DI(w z@rVo5G>g!*aT|dd4CBFVcQqatc!An0m&(j@&isD=e?0H^W!j^;?W{hL`JFf3h-Z(8 zCzdzfcpb2Kja*y}Oco-T^b4oSE9*Rw9r)ThI){$5gw2Er9>8t-kOz?r_^Jogr&GPv z7D}-XPV+!Wg5^#(O+4~2$dPvj2J4AOEEV0Bd4UCn0nx$&GLM;i=p?P7gXo8q;eDC^iN zbV48lYO-phUdl%p7eur{%Zey``h-Qi(rsSLO8T}9(;WOXue5s)CkM+g!fMKs%-oY! z_||9D{c7?L?dYtK1mpgkK*PrYYz{p{l1+B=2Ci60;1etOT7J@1j{1iVv;#*KG2MLC zBhAJXSo5Ko`coZh6YHu^%Rl?s|0oWVcn@!a@nddcvyjsvf z?W*6Qc@sFaz&9T6JRIrir=LQ9b_4iym$u-}00(j|5O@%wgHH!$zE0s2ez*Jo9XlGH z{QJM#U3uY!$TxOTUhQbGWU~uE8>NkzV*2u_RxjZR>i>40{D1A&K9q@xkSPO8M&3#1ulIvT zVGu=5%1nOVSU$@P3$}I6IthcO6*j!4&T;ZM`P!tuxBS{RhJMn}oq_Q!J4KYC+Sdo1 zXE8x}QYPqOwm%2J+FmSQ9PMI#xBV!KLA;1dT>h2?U`e;0`?Ku{ zXZ#?LRN~8Ki&M*89CsUpmjt0*_~t81^-$!>?1GeG>;OCqBKT9~NImn_8_Gd?mhIv% zj^%QAZ<=x$HW@@BSTEGGRoWUN&y;=JKfI4VT?CQXqOK--o0)(dsv*#)v` z|FGlQ&~lMi>)u?Km^-)3yMv5CMHNQgtvkXh3pCIZ7=#uEMvJ<1P3GUN4w#I!2b7RaP- z5llMLh*2u#Dj{-Q2*3u$mfpa%|7YQ9)~9C8tbgns&lD z6kZK3jzu=)S0wpWw&a3X9n%+fCrij{r!a#Kr0FXcy(EUTOvz~5B9g_8X^d7*^^vLL zNv*0(g|A)2kz95sL5r|e2KlF+q&|dJm~MSGkcA-vYJG7GVF8h_e^{}VKjmAR9Y2R* z^-I(?s0c5^PAs%#AnD){0up}jNSU5-N=!deD4Ez_UDeUKt0eMA?lfsV}Wsw zbMH1B;~vW4l?Hu6Lp^onj-W%)!JjgzKV>I?-}ZDjfKT{c{X4}G9D5)j3jw|cpyOja z&v0M`R{?+i=YReazxR8;_diQtS0_U&k50@mokwosYvRm$n|rbR5pY@r9l1SS9I*}r zy%vDk4JIeXUts_MtVyODpI`eQ@(@W_!^r28A@2t>x%^ptL&N+PBA0QU>d=_Xjf$Pj zk|i*=-H%-2Mdsv-q7>>n(v))fWDo#|9TF3}CG~96RJrLy#Bxxm4qiu2JBduBLtg^5 zv1KGo`Io2hLmeHUG-uh4J7Lt*lJvpB(l0Raw(IxR}^9KIXr2( znYJZOajl0^>z3H^u~?rd{Wp0K-g3Mjv^| z-<=1Z6L9I$z4>II=L-0w-+}xIivm9NR8K!Mc-h~Y{EHtm);QRQd*UttX?xwI`Ti1% z4H?G)N1^BU4_^Q9?yYbBx|VU^VoL70Axs%h-S8TE1qhUBmVGh$cgij_hS&nI^|83Y z_eWd4#U~9of?2v6rm*b8Wo*rd&5(d!m3lb*rx{bjmH!*f4dXiz=3n?QebUAjKy?=~|8=*+$M& z7h`7$ca|ww7dy04Z@DFX`sl=EGCJgyqs<0wL&{(o>BF&pZre9h zGbOCea!uESt>Fw3p)xhT?nzQH;8(q2D7O0aE^-t{#_Dc;Xj@7Gf8>Wf=m#r9b}J-a zoES~>!H2pWp!S(QpfHqP>R5L3bpc!WHjVOVeH6a(PuW>CE@~)8bOB`Zv2Wvh{f!74Fz%KIj_{;H3&e5Dw8VGPie0GE!HOxwehww21VOF%Yh2M?xc zBcn9Q1+t&oqDg`#O=&$;=wMVDRDugJOt8%vORc7ol3jfQr(Er?vSYyA z!|3DT;^H3r2OVvHZ;<4%k%Ije7AQKLB>9@#?zw5ghScY$-#gj5+^Pb2j=apLd`fR*8v$Aud`dcHr=H@Ild;C_Iw(x!PXl8d{N>O^B;__eN@ z(BSF+Rkr?L;{ZTq^oe~ZOwhdhVio}M`9Sh~$Nw5T17O3`d#`=^?`{G4-p9hjz4xhYeoky??(RpnSFEdin^Q`WVI*Rtj5yRU!iTj1XbpLm2o8ZX>3JQ=0SedrCrQ1wshS8%q$EcFOptxZG^XgYb&uMExd zZe1lcyrpH`(Due*3|M`b*F*WN2b1QcZos5HZhoqthrH!V41(< zJYlEZ)LD7y&$c}HRZsc!=Y4cq_hBNRl3ur(sxnXh;0rowMo6z+rKdKg4S-}JY@6I; znHa0{FuA@_80$-Tuv_3Tj2)M{WGU$0ze-COXvF^QKj`zmdDgHG9V58)#+zuyx>hAqge--r-QdL zm*v!7I~hFpA~?hyR#=|$5yko_3`QZISnE~nrvEQ)7j+8?EzI?m?Otpln#XRFrE#BQ;ov-j+Y=W6_}St59+8dx z=*NES$A11-fAv@2$x7jC>J;tt>--c#r=-KuA?OTA+8m({)4MQT4!J(Norv^Q&rVh( z{qUMkK`+iGbmg-M#}30_IibK9-^1xdbDKfDrsHlpi#XYIDF`E;{{rD4%d|*bFMGg) zbYwLdf|dt??9%XNrG16WS^!s`bOwu*A;SesmBAGJwV$1NXebJ@&+yy46SitD_0pM4 z$8Vm3TOP_`S>)-?8qk?;=VMTh2^pZF4Z{`~RTpUrV+X!aBA01Cf%DC9JV9-HP&28+i+NK4(&E^tqV73&ma?K2o{aklVf2QJeSrAWr$tD zk3A-x>nvsnYgxv&7-{rUvP{^uBlX|DGz%D2%xO#p0bSsjj#?3>MoM8X2hfE#`IaDz zgG%eY1>T=@TBem<6x(6swS0k#{$oV)Dc^M7qYJPuILY8pC`m<6Z8CMuw5dZ=hNeYt zwy?V+C9*+EIK@;3>qx2|kQGH%sT&?#i3C{pe07(alJH)9*B^L7 zzl)g$2dmcKku6uKxNGUbmp!<<@BaIkboU*6^FjkBa{U@7^iy`eqd)i_;`cm<|GmJI z_-lNEFM2TO)V}xJd#O+KSpacTZIyN4mIL6Rcg6LVx|8S?`%$_sUcf6M79-yU0^+C`o^Sv9uiw4$ zm0z>UuAtDM=&?CK{JR+9pic zK7-?EA^zYQpCEt3q#g2^wC20;+d4&AWYN-e%g_2Q?L%DKN${85Vui&wa(opT!Y6+! zUnE=hF*!7?lgyx$d-)gGpqpvFngh_unq=BW*w`(q#h3DvZRAR7%V6%kraa)G`CVAh zJWZEGs7Q%4{d#<(Vw%x#l$~#QcR)iohw~<<=3>udk5?NpEN7c879%_eWlgKRfGEJ=H5kh|Jc}w~b>q>(Y zNbIS=EvEQq%VTub9~(C~%}yHvcKo#0^nGv>PTcfM$Tl=IjB)L58K`69nyckXWa$nJ zH3UwK00JMr!W*o^?j*3i`KskIQOe$%&_$+WouoAlSYeD>+lZDy0MQLS;Zk9)Cm^bo|ZAn!267=S_AdivTI&@Gzkwu=>qwP)fmO$v{7QAfgP{&m~!IAFA|NX!J z@Gt-JFMk3bc!T>{061ka#X-OLCoBT^^Pykg_kpx$;6V47hlHn(Jo1QN3G;!UKK1lX zZ+g>-=Zd}SUGF+w=L8)6!Y};7$$Q@Op50@QJtocJKcXh>?9ZKH0c!VIxYI09CsE%( zJgaeh5nyY8k3atSsg3qCpZN^$gnsSro$q|7E25{*JoC({hkK|mr+hL9y_!#c;0!!O zFwTLjcs`tjI{`c(Fz`58cM05l;)y4o{E;8|kq>Zx#qLR2bY`OI(0Iz@1Vk3z$1#Jq zWUFuVzLTapd}%c3csHTsdNj_Ft^sG}zqR2j_ltm@vQc3cTDVUHL^C9{ZyqP?GahhYdQcyf6NFs+qw?Ym&!H#8#J@s)5eZulSkO&>^OUtTd2bc^ z^6dBQ&4r+cc#(F|YM%I9ouMHr#PxQU_ynyT;@N=r}a6uMdKgiC3Y==h&g;y77Kr&DJ zpMUQ8-7}mQ@XS+Bva`Vx|8LZXX&cL29P5DpSDWqRV{|v2%oPNG8&Ce<^bg;-wK=np z+Yx_sE$GChubmHn)bZ5)){DYd?v&RC8@SM1^(t}OdURYghHvyAV(W_CSKaIcLA;^m z)iC&(u%&h!rXd4x=2`drYZ*CEojNpE=}gcoZ*-xlY|?SDz+d9f5MH?YEp0XwlCj|p zt>l7r3opu28JtiBu3bVvmm6GV75*MUzjP`y?OB^1(6v5D0lM`kwt~jP8$qW(MHfth zji`sxL6+JaT=j`eq=%d&4|J?8_6b8<8}CE=duc0!K{$C@Ux+8sG|Sto!8Ye_l@H|*akb7es z@Ekeh6j+#+2Xvt{y98TLnKZ&wI5qY_P-P?~|BS|#%QnD8;nsnDzbyOmY9F>QksNj@ zTk=iK#1e5rMzoZT^vs@eI4BEuKAqZ^=#8~^iUwhWgWL+9It9(h08Qzq?^`wiHZxLZ zr(?8%jsIsH0PQSFOrNL>Bj3b>1A!wJRvl|Cy9O>Li(1N3*{H|Fxv#RwI{oont-2kv zN#dYhEQ<1L{`ipEw@Or#+HzRfSF`Ag-w4HJlhL)X;uUx7-E?J16`A}Ht?t6_c}P3y z(4X20joL4(EC=NS>Zd>Z>EHdH@A;lzg1(1*)3rH#zd@grhj_l;>kfbup8jX6zYqI- z$cOFR0g%^&J@<$jfF14r)-)oG+`+S%Vb!vcFha%aeU zCM6c2!PywoP=Dele&UFgxKm#P&^W#Z;1(TT3D~{mEpPE@)3MwAahNAhJ@wQn_j#{J zN8t|?7YFhRfcH3v#B~%7wE1QGkZ?E^^N#=MkN)TjKl`&k`yue+h~;ZPVPL@OXkZOy zlcFPA1HU>r9a(_+^OY5_PFjaqr|ET|b=JoHGbZ4=W)8?k@&??_Bi*iPcI?Ru1qV#} zVyO`r10>n_K%`>bf?Qa6`c(apMr?M#O3S%5SD4sl!Aow{xfW#CY!>gV2dQ%OI{eKW`V&`j<9tdiiyyX+sIX|% zew|DzP6l__Cv|GoS&~D;_9Q$$0i3;65m8ulw)2Kjq{Aheb^4B-`-sdti6*JWu}*m@)?9iTgE9+h@@2gdSW!!FPkL z`!78A9EbOD^1qXC-*F}Vf%_iZUE*_pIsN}-ukaw%i0u;}aWkkyJP%9r=eOPS)qs2M zi4NACEKXRamLmF!up)HwWd6wKVBJA&VPu++OL)U;Pp>l8?bml~3w*I- zvul#+#ef3^{STbKe%LJYrj^wPd#>fO4o1+T>i6ybu&H8x#3IX;Q+ zG?Q{zI;P-yP-}5V&rK#Gk~owVi#c#ey&ic6zKZ~DYa&J-W#ZSvUke%kPqcMByd%q^ zlf|5r0tt~7T2sFl4C$2(Y~rcYw~QNFUn#G1-HF^P()h{aFhuQ`F}t! z2%)WQS_e$C{L0Jvo=On=p?B(qtq^-r=hej)c~Hg@NT_~O=F-zIMTP~TFr(MlQn;lj zd6A>0OHExWr3_Y_auwe4_d5J2v#ut=OMk{rv@d<|10VE!E}!1t#6O<6tJmvV32I6zp|`sL*vOGra*sauxz8QF;~nqF(|_n5Ik)iBO4geb_2Lk4v&vf`HKpnslgVGaD^E_oI zfF8|G&+R-m^kbcX_^t^0$^e62@#Fbu)ZOdEy>VdmCpTIBy!k7?@+<%6$3FJ44<9%s z9D$T{xVUg`puZfWX`M)rjpzlO>pX=?hYGIQLsxn_;=(Ql%Sp0#uIX#Q8|4~szXkph_K zlXZi5!*eC&zMZWSYBlK7FFF8`f9nInV#Fz5X&84BXYgJ;VLdrrTnaKBckC1>i33Il z9=ojaMDpa;R;#R}m!MumfNg%QkpU1H;kzKAoFbq4WGCA)YPs0iJ2`Ue@3LJmOE;o% zpK@i3AOe5o*eJMjZIbf=t)C0*?R%_WC}NZ%Fi1hehKNvcWJMO8Q2k}-3oNpEam z7D&BKJ&<-SDL%Vw)*w_!$e>mRJBV7FG`)kR#sdcr9+Oc1wFeAR5KK67EpDQb#WFU{ zpMx~(nOo;Mcqk|5`?%U5=#T{p22|`8xQc(hy8HVtf06hLdB4>KgwfY4`+ktQvZg%urcAnJt+kdl zeN}7s4R3#24jVKr1y}<~=m4@9$dvY{Y}&@()By+oPI_f&zT0HYn|vbt*GH6=xVoS` z*-QCa8vbi&Od4&+(v-is(2QT+XqyHO=;0Fo3;n*F{U zgpF-CoKjC3q^u{?&JOKl{xa^^SW+9U+^qYd@A&|RRc?_d^htNZV$dFh3JT@H^*Vm0 zjGI^6*H4LP0F*%eUiHr;6I(}?9R*n-Ww89Jaq;D+z4p3ON0(1tZHR1ramzh&0su(_KD5R;CDg8>yH@@PLyY}L2Y zSa#mhZoe133n*>Nw%aMUn1%||dk?XztkQ5Hbb`9p=6kuNYuc2JH27tK!+G#Nl;+A$ z1Kh`N^JgFx*Y@P%Q~EhmL(ZKF)>(rxPP5)Gx(UCRv3y!yldO#5M|SmEKDDrY%1$2j zO5JK};SIvb*YSn;)&;MVr)a5%n3%I9xU(##3gw)J|^WdGygoPkCB&$|67x@xYn-El(S+2YR?8z!kuo zIxX^U@|r-l3xR&js{-+CIEoV-MrgXqh*NsePmO%?lb`$uzG?-tyA2O|lb8uy9AeYR zYF?b{T9GCVuP2I~z&OE@Fi)pwhiATVe+GFcYQ8_Rlg=Pf7(0%39?QE2tA9dc$zn<= z_OJJ5t?cxh3YeAs3>;kf779Efx_ea^xzv$(WLSLx`A&Y?87Y$pb}9yKA#U$)ZI;54 z6@E2!VF#!0CYJ`JmQ-DtR}KT^6tR&4`W*5txFHh z0xC2tdj=d45gKa}9UBUOT$`@)Rc3fKt@27%c)>HEO#Q8Fz%qEN{tj%4OB*Gr^}O{_ zzJ6ZMr}Qoa`Gnpeyc2h+$@>C}0Iz)ID|rpz$5Dc%SmRPBJ9Gv!0&^7Ub-tr02z=cZh z4cZqvGije|@_@M*4xr8=waNl zQ8WWOQO(0gVKHdyg>A@CT@nRnd`xXa>MHA|$9~YbrC&&&B|fQe!2hjDqC8{Yc0)@b zOtF=@ShElxTLP12CpEEyuHOErYl;qjb)B-4itxcmo?=^;+B|t+N#DCjr9l8!Bxx14 z^sI-s)&nsN(zibkh2W08R=F1-Q2n#yjON2*vbDpOPqnn&P8(bF0y=ogC49@abb#fDi4gji~7?){nJ17(T{%g3;3*K{nmQw@8sUscm3V;p&q~N`1SOEX#4bE9>;za zfV3Nw`LUCK9|HQxKWX`MC$VRWIr*Qh|I9HWwsVao<1N-p=GmV+!UBDf<&F^bOvtZh z0UO~s4jmgXdIq=Z9R2#Q|N6<#{LIgs<1Bz9KIL)D6MLUNowJd1D4-oY?Y>_Iz+vc# zeZYT#PX(Uvs=(1Y5YR?`lYHw+whJi-u;*|PH@@q;zUyE7!5{p=*S+?&uX~5-(`ng> zj04L`xlZiBO(bueIdbD<9T?(8>Arz0t`0sO&T^DhZ}gR)ZoevbU?OHZ+_8kYb-wlh zBIJH0WiVvEE*}bH(qZ6$ow(#Pdij?*$= zllR7-0T*%5T)ZuQ*;O9NX&m$HOr_trS~Zw99SA8IdN2TW)Dc;QN*QT;OvfpQ8$9W; zb4F0h;&w#B`=h+!*(ds54e}??S4`;H(S;00*M5uH!G!rq6Br!nMI2xx=0ME>jKSiM z2*64HwBy!AYWYh506+jqL_t&x46ILM&jP2OM=p6l1zzMha^sruMyOOqayazKb0wtg z;*eBYXHYG;t&VPo&FhS&5%+1Mu#Fp$pP`ep@|(2C0&#awXmVxt=U`ghMGZ_S^p7?8 zyv%@eg6h_3Zc-;PDXKB5Vvu4PH~>Am8zQh}&_R zMX7sMhK>-S`!@_ko_^+O%8WtxS~Svj{=2|af5Sx%{d?fS2l)cP{jsZQS?J)&(sj1_ zE2Qu6ryf%$uka+^g#{N8l+j%R)@${+bjd>m@5xRAbz$rjoq8Sshd(jt=ShkjWWy)_ zF6PSu;`)V)8@$)=Q~&b2d-;}gyDJB9YP1sAvplC8BEFOE?VmF0Py71ajIDg7)UCI`JP)4*8sUot-|A=F= zYdI>Iw58Fo=e-ibc8OSC>YP5QO6}z@ZuF+^nw}qRQTmqI38wPA9bjTkd5k`b-;tm8 zBTeeJ6i6uI5+yG6jxaYtHf%a__A;4Azkg;Jn~aE z$};}Wc=Q5Ke1E1Df7LKLG!^S&7F=Tt9^ zs=ubgw>OX-S%r6D)F2Q3E*YCNZQt@*Maqz<@)sTq7YP_2sk64@8kyx?{kvmsWUdX! zO&``asfA_lSZCmDdDd5EsCKsGYfEKp82-`&=U{=yeEVD%c`09h%AsAld(Yig2d}13 zY?iW=XSa(Klt)Y1|3i*@7Ya=FHU%j`nzlBxhHT|3ENRw3Y48KT_e+-a)B}V497`>` z0v&v>v1wS9HhP}A->^jYaPs-x-~HX6|FvKHwf~#G547WK|A)j({Qcx#-uWlZN&d0# z{3B=1{d&!7UX!Q)^nKa#FCXRw*)h!S;oYD9>7Sl{`?r647Qj7E%*p@lPyf-+`ag9{ z@z25?W&x|}S-8V3U^|@cIHStj-~RR^C;#3vna`D70KUhQI1T?IzZ0Cod7Q^Np8C50 zaE>Sa=W!P2c+z#ARl~d326RN;d9LQ)%>u#^tBi@`Fz#X{@jPb@y!^u-{_wxx{vlxE z_;l*&MBv}8`i_YlVCcHqS?lZ!dBUfQZpnk{skBa1?33bBVH%e-Xjx~9K04$TZ|mim5($_TbRPN{Aw3@2M!!RT+SPPzDXhBqL>lE7CmkQnz%6MYPPs@! z{%~iKip|%(G}O&JVTnVY$Sw)!wx23G`Zxdf_jmu>NB;NN!vPZ%^4|Pid~VM} z{~XA_{ta)~z3tJr?- z0=WI(Px7HHpYpqZ_bO;S@W9KEi3vSB3rNOhej?BT?P!SZ@y*sidVc`=vyi*g;e|!ift`>f7)!QE0$(tI69`&ITj*3^o*zeA>}bXq?4q*?~^%p2!G?T z_tMebH)&_sM!osrGF-Gw!w{NcmB;e?*4OaPn1Xz9v{mW0eB`1Ydw-^k$}f+x^XPuV zFQx%Xer#P{`Eref8pMm9t*6u1jQ(T4UiBFr-|XcXLa_xmDN?TJwaVNw96HMuxxXb1 z{gIp27}{@Qyhs(xiEB7<_4{r@^*c9a=sx$i4I?nC~xXq%&^Y>QrbzOL}9kk=uKD zihIa&=vIWqw}eumrVM&+1A4$yX{FPkjOA&Pbig6IpRZm(xr{7ctMk;`{dmTDw`icF zw3Io+#eB75aCz$gtKa?I-~GS(^q%s*=|ep(PVlpv7luyGkKF-4-1Hkx@WJ<~Uv~R4 zzIQd-b8C)Spw8J~zAF64BafW$<(+Kzck919iVqJNm$rD?0J>uclg`2&W`TXny2AuN z6Zb1E@YrLIo%%E9Q=j@&KH*{9EkHii#{u}6z!To-ImdRN>wXmgXOM=^y^h0e{(cVd z1jk}OkQGC&()3Wkyc^^;Bexit2Ar=GJoiIC^g}<&fcs0(h!;!;ii4nn>8<0`7!)U4 zCpHdL!kIAWJy+0q+5vebNpCt?xtcfuS`HTGmLWq2B6oShxU#Gu4PhY{-r|@R+IB)b z71guTIfxX7#V>DVHUuYKWNs(T&Nv;*(9GbL4(Ap=3uS1HbnQUO$5ry7p%jG`l7TvZ z{Y7RIR@{zlg7$WW9+e2~_=Vrg;Y3in#gKmSee&J3+1@K&I?DxXuI1Wm3MMwLogBoO zw`2up^jz|aO>{9qIq@ta$!8#~!X&^pL41GOWXgDGDf24dTt?QpN}#aAr{y00@RXjq z8A@m0`Im-xUq} zztR*j_mc*6@TOeN*L)x*2CeXoytSjb+=i4ePRzINJLx{iS^2pqE`rKrTQJ$mmBtwg z=C|%CmwB;oU|c|AVpXZ+X8y)}^gWb6x?xk{{QTb&fAhE2;Ng^ddVz_*pZmL;t54v4 z@}I>3_#33F4{-3!i;qkO?+%>lzW?vL`&X{`1(a)nS1u<3_j0hHgWq$sor@Rl$-2SUElPNqBHu`mI8&l*ZMf^=&v*iR(qGJ=?1UDxsb@v98@+i((JR9q4b5RPTCVla1FvFk9ZbZlG;iC*s3ZOKD?I9*4x9dhm-hX za3B-H9?I%O2Xy%}`K7FujEf|?DL>_f9AuT({))dOA0LnmXr;g;X&tw`4DzVtonVWv zUWg*U_}bA^e|H;2RYQ zT8F{@Z)l7k!R`Q-zB)@&8jcaYMqeTLx$rY(Z5|9luQu$$z2X8K#^V0jpZ(cK-uJ%u zIr-0I-|@JUe|{eQZ=u_0jl2EdF}k1qGc7;zo%G*;hui#5oCmz_b+2-jFMRM@;JdCTO+-IkDGqn2)n?^6&RVJz-SRzC)Ci zMd-Z9?=Rg{b+D!;-9a95*0I5h0T<4C$t{fh$KjbC$mIyhcF+)* zk#pMnRY(?Nms`%PU$!~ zx|#UgD?1@Nn3kZW@_Pow+QEG<;o}oxD>7vBC-grV@4dL2xF>2ywT5lXJpFePLa^$UcOL} zOwz`-!f6lh<;i`x+31uUe6qK4kbLNCQ*pPj;*q5Shd|4fGN9Z?_fCY0>BM-Wv)Z(9 z$|5ZUP&Yu@PBwl-OdH&ZKl%4h?H+&paVGi~qURi%rw$oNLHpIOerWeKuYA?+9wx?P zH}QSwaqZfRnH=G_g6~tt%P(B!m4YXciNPrH`0v8Sd-4>Yvr>2k;NF}m;Csmz!P9of zJQ=*fLe167SK)gjy8-xI68RVTb(_CC4&2)BFEH#5xXN~ac3$nCDI>*8kMk(vLlsEy`>0pZ0|!apGy^3&*&8Zu8e|@5}!3j~UzS+y3`ro1Mx2 zq0QVWktg7b&!K;ao{_Ms#jeO;Sm3d_U(gUjcz5JDq1l&j{8tt)7GD)f8A)gSh;f5> z(wTBQlr?!MsEk8@;iTU(p1PF&r?hxo08si21+E(Df8d+D>WI9wwYcI%8=SyNQ=e*Z zvDTjp2}_31(B}Bi*w%X0GMav{Op!|fkAgjWw|Pt8b|Ngch%0stH+FO#2NcW zFKB{il+eBc{*p>iO*0EqT>H%l%4)D2+#+xM(B|F?z8Ex5g_UFV#o9s~uY11bG39Hz zG&FOCO9>}U+(Vw?C|BgJVu>q?aN^rmY_ElD-7~#iY5U>B{ZCq$t^*d8uVcv422gsiFHZDKJUOUgy;GnGtp}5&Eh<|; z0Nw3A_y2tEV|?!K7Z_(d-}gXnpZpsvOaUFITL6yR9rqX0B|}xjn!%76yPk}nHF%V@GRWn z7N8;09{0|J`y|+CIlM#dPT0nO#Dc)lyWjopkRHJTu@1&dApR&a*Z522SUKPDba$@2=&1&T+=T-~QxJ{^XDT)KC4? z|D-(WtkTJ3kgBhX>mB(NY{EDc^5SgUg|s6ut@*m%<-|!-@N_bCu=EJf#-Z-m3TKY_ zi=RB=ocDBq9h&8b^;kA-=OI7ownM3-A35X1*Ujcd7yWVAQx<|nZpV|Wd`wz!bO5B= zr@#vd{V!u=Gm!ueWt2gry0P1hB=eRH0)*iF&l&=y7|!VBo%ssDuPvNnMi#Xt*{uGNLyP_*VcV)CaiKp&o)azQQcct#d9DO ze6Ctpo+Ib^qrTq`N(Zk{VR0ji0jUw_JqDJBzmeIi{Ge|IhBjq`o|X}}flWj^P-iSE zo<4!*0vZFkEC`WI=#xkmfHVpsf@g^A_>YvovYRHIr$&H}gw&ef}zvvc4&=L0z4 zL&(}Uz^xRq2!c_hg#6J2k=2N{d-&mpcW?f>e;B?=gTJQKhX`02R+W7ll$rs%WP);- zS35V~zuxy(8%)}EUHRTiXW*67ZS>wNNzw&cVR#Pw;Z=~iR|lWMa!-4#4w3}lq#?Im z>32}8{fYK4*bX8a{^l+wTG%@oQsbn-v2=+T*>U8Y1`^mf6(@B z^^&*01m#?mv=pU8GE28U)i;Y2ozh__uKH;&`ZCs6U{hb&la{u%kCdVJ!GV0o9`t+q z%LH+ky&xjp*eE05&Xp`}Bt#bT;2)jvv*EPLTdU?F09UwDRghnF zh{%_#ji0i&tSUD&^E!)J%HhAej{HPxJ5bZIBW-L;GNp|!tKO5Iz(ub<{Vr*mC%d?m z{b==dkV}x?1k+sHx89m;UT_zP(n6R&+L#M;)91-?@z-wh@fVrp9i8gu3kD1m8u08|?5sVz;hO{Ez8Z zQVSk>=pkQ;yZOD}`@JU~`p0|!#~c6{B_hz0D`iwexR|hscow-cEs*wnXNrC%^;lpv zO516YR>RB<3jil>;~CiB|NY%aM%zxf|N@{y1Hb4A%#E}Se0BAad}GaZ9+DF?sJQLBfY z%A|QU=paYOB=E=1)K0LST{?hehxoMt%XR4Jw;Tu#Ew9QKzec+Dlb+k+j4SIRDjfk0 zWEIvMWZ2{vUI#vOr_&bRV0v*!C(~n;3}W^$u@n8B`R#Otv)_|Op1_Mo@LmR^2Ivz+;LlFPu{P&-h{2<7jPzgsgUi982bHk{!|+-HEZW<|5mK;lcqCfwYec!Vun|zHUR#}s9hDnIp)#oTI(1f=-IXu{ zgQ;JDFa+;wUjG-O;!80;T$KaFn&wcLmt&EZ9h^P8DA{#!2dgqpX-s|Tz z04MHF<_*f=gyxzqVH`^Y`Y|DQ!Tl1fP_W8W~&jRP}8ixd4fZoMR_XPhYyC>Z_ zFemxz3$uv9j+tw`-+vvtXo{FDj4&B=_mTrxX(*F}`F>{ba`?S~&-9anPF6HZ|~d3`4`54`0d zdF#OZw!D^8U=>V$6u)uHXwcmC=#`{SdpTiZPeffi0 zB=7>y?fCH!gQNapsj4vSg4*wPD*e)%E$gHyj6NXp7N*qvYr1JsI_0w8?rge~$$`-? zIB(hf7?=!C|4d(Sm4o}kJhPS0 z(E7xyK$ea5mC&()BB>`+MD2j(l*0y-#h-%-TWqo2@B5muf%(JF_!h98vMNJ<*6Fo~ zWqFyFniT{ju=N2i4gKBFjPZamFZm<{2ATH#hV&NaEh1Ru@w%KraP>om(ZP6XC^UtI zRoY#uqfu;B*d=$Yl^t=SE?xG%$x=l&CEmW~0^KqN-ZG%x1b69`yey!gM{JWZTkUa^ zvn`Zs~e3)Ac21oD}w_u`YaJ5bAK=lq)kP&y8)D(YVY8v%83ynl0 z>*yvu0+(Ekpi-zL!TPUl=&!!?!4H1$Lr*;M#8V<5PsZqL{C&y}wqwTQrrl(BfFPdl zC5?RUTX=Tu;$Du=twX*;pC|uEO!!YYTP7PU_rd+f2aRIWRJKlgJ#=ZXGlwCn&lb%l?E`%eDiFaBb; zR{ri{>rc)J@SR#a=(R!^kLzv$2irK9oeKe6^-!KR>eGMe@;%b4dDlpxKJ=jv{Tm$8 zec$$N-}Zgp8ywW=*mS5|;%M>s85}8dU{*)OeQ@l6=E=3Xkr+4~kzFw-{Z0~C4-AtXX9+f+;h|*g-Pic6K^QWH=NqRAfACL#r)q3?C+3lFr zHMj?hx#lkzsbKbvR?3%thT>)8qKFQ-{WKw)4(5m5XhIDMP={C5z zVa8zC+AJCxcosJCX0;S4?H&DQs=G zXe>KK*V@8rC3NL=;Oe+TI~s&{5a57P5~?PiuPDgRxG=!;B*iC(Zb?NpZA+fB3G-HO zp23iG+sT$*pQbGO$_yW5Z-tU6p|ZBEc`wfy(0WfG(}8;i#wz4vcb>fTsioiG&i32X z!omk>(O>a0Lv}2?>XH+QP6(92fIa{unn574kkxvnom?bR0A&jq-n%UT$igS@Zprsaj{19$CsV}TRo?x7_PJ-e z9lryl=yEsP^|i;gTLAgw>qI`g2dMWiyx_zi0TBMuJ(qgs024|N^1}cKrlF`L#`*aQ zf|LJe*neH!540tK9L5ad_u`$lyvR8N-}sJi*uDH^51Mp~eS;;+ zDzgBrKic*7bo3(mR$n_f3)a#}lK1?S)>v$^(zxTF6)~&_9z&TykcT$h0#qO-J=Hys zi(B&uW@X~fb%HcHVQ-p~5Uu82o~~wa-0~`p+mIt`8bN$AQ_HZ`Kb$*%#H$qeDO+{h zgVqRK>TqqQOe5ElB~Y`=M+~^)avX0f&9u+zqy9~=FY4l|EyME$!4a<)_?ii@msG~J-w$62r#-!7a8x#YpAz7zuZV3TV@%40oE&msw`ievx5c1Rn8 zem-RxO4=ecTVI4-WgwsMLzrC63n=mngMWe<@=}N6mw|UDnp?$Y0a_CBTXJvxRPZee zaJ7Z92qQ1^tPa#TQdbC!=|Ydq3ZH%pT=nM{U+-rbq=W4sODQVj8Zil{oZ2atPI>yk zLka3zZR%8+b+B+ zX8>}|p9rDcjIF=q8C$$&`vmZ(OzfTE&qF&8`g2U4S9IOYW*+oi0LYnM>douDEN)-( zoqu=jp1kdCZ_8%`o&56(fIEeA=%2_2?;m5!zwx;$qxznOmyQKeD_=V5oM}P>J#~f7 zMr+U_?|ILAa+0TUz5;N{0f9OdozLkfKl#agBb3(zJRS64s+vi?Bb-wX2y{f_Cq-Ok z^n`Bj{fvnB_@5g(nw&<;xdA$!8$bNRKm4yh{_&50Se}OE027a^&!4RN#yRWXCkX2R z)9%WS#-Q(+e6Qr;NSo5D9Y){Na{ z<@Mj>OA=e;-u}gSeq?x^F#3yEIfxlok%6N%Hoi5>5O9!!0i{^l_D6)^D?GZ17ZB3b zdri8+N?3#Duv79q?${Wdy^YWzc>BRV^x^D4Y4B^$;QI7>_4knvD~yhSbGHU_pejoS z8rlz@(XlF29w({lL0GCKo_mXZ1mHRYx{(_M(n?eQ)tyh=F@b}o=1u6Sp20~o_ul}-CB~?J#<_0EZw84<41G|cNZ%> zF?!^itCO(cB9}H8J4om7r#_n0YXaBBa-XJP3-4J@%m4i6pU4EGbk$YCk(WB>gyj-X z?H_pH!R_>P=}O-P0-tDlE`U$=oy1?eek}+8J;k{K_^!~E*LhwMc=;<{!Q}cC44^J5 zL1?I-ZNYpG3%tTpeCv^es|%b-pf1X9M zEdh0r2!FpaXmx%*Isf{vf9vkyuYG8g>}k%=?|=vKijx@%`fVLi&{25m@k}4D~-Z?ExjrC*k-{GzsQ8lQa8E%mY?}f_J)?Q+H7>)>!**meOl_VGbrPG;tv)d{7K*x zxp4BZPVvj&-!@ZU+xoV6M^=5=*kfrVy20(?v6*(O)bbb)SD#SZE}y271lk4c>f^X= zq7miL4y#!T>mrNtn8)|i=|{UeK>U$wNO+&Nf}oRU+c3>AlIcyult0oQ%Ufo`x|nzv zD2>fN$_JA4V-Cw;?F4{SEwsrI;DB#=(rt2KrDmEk=+6(sA{ToM&X}flEp%+5J@_#R z--wKjl*^)*UaP>Ae|K;x@0yIqe@e$-^R;BP;R;)yD$dvm`T=m_Yk#0ZV+--r%R1)k zSk~ppgD~3Fpq!dPnwpghVc!On!+RF0L7<(gPf=6*`yiwV!mcw(BCEWxRVbEk`N`{0 zM*9wJIx@)7(EI9dyhbdq$qSvxzK08}1Q3XP)&Xb_jBn*(TQ)5GD1+unL;GBXK!NlP zV>9urqrqEcBJc1gN5tW)NoTA|YH5P+>qG+=6Uc)fWw4d4_s|TI@swum*vbD7|Im+q z;uD{Eg0Z!5`D~3laDA6wJbsST9g815`Q(#%;y;sr^BL!R;Ge4%*(Jc)G^cFw&y#<5 z0{cloKKee}^sPak>Yku-XpHiv{ba6M*Q&`rMzz-|DYOFkU}8D9xF2G^5CbtK~D zT_c>4J$?=oByMl+VSzU|tmKzn1Q>_0`Z>Ck_~~?bM7K~U+JOe1mGru4J1l+AI3N+E zsjmze&e&@lb-JjMT#mLk>+hjmnp6j`YYRsonUrV-?9+h@>r=(z@0$&B9C*W+638Yg zZ)95Zq+wckIX68>Co4|1WuB6%Y!E>=0j5+fC%n@Gm&;IU1`pW zxw%opKZ+9B!LAO47pS3whSC>84G&=s*F z`d2YShkBqK#eqp^IEaDVnoQW?)8Ubqch>=lD66~P4@RnIl*m9N6=?C*X2Zup(;`7` z7g~_umcgUC51-g!mFr4Zz)VvxY%fOmzr6(8GNmKt$CP)nFfJm?O zTQ0~GuBP(~j52bYxIBo5mo_s9Yq~oW82l42cWbP;E*M(&BclV?;7I5on12{7??oyD z)(syxGrS)g8~>}n`V2c4`UymJ^a+Q9Uk~29z#z!&|2eepKA!$BClHzpe4XHnFzb09?KDLMH#dLg2(-J1JM{31-!@k$D^JAKFZSZvB7To4;<= z=hiWCEYB$u>D~U*_9W+`fhRxFRQY{mtTn2&29X(P2s!< z$AmQ#O6?~8vY+k01b`{d!mI7UwGB^w^r>E+HiK_n6;@t`;W-{=^1NcJSi!h_QqO}| zaWgH4BS zm?)<_3{wsyEqw`g8N7*IyTUT>L2RZ8DHJ_Mwl;jsWqe9_Yz)ii~Z?!X}KYBZK0YZuWp! z7`ex147_R9y%dzN*o-{NaMgirV!E%F;wqnT;N>YZf29rk+G%et?INh~Y3guMUhbuF zt67EVumPJXiwoKoa@85~M!qi2P%c3%zWkQ{k)v&> zxWhwXq>-}M#t0_%5&@oY<;MGcdS#J@{1ijB#PV03vk+!NcmbsRQ%|K}dVfKS?Vv!_ z7m^@38LzOVCwcFyth@ereeBDe_W#fR_+x+kH@<$0UUqJI^3Maje38qCagN2gW`gfo zUcxw5mn=9Q*e&c$cJDgIx4!1fUvGTl8$I|Npgsj*y0HgN-M1RnLWh-}UMwgSP?wt9iVf5W7?k@OkuaylVu$dz#Pbe8_Wfj$M9+8DMxXAM>HBch1Ca z!RQ=~(wSnX`ZXDl>_o{ej>sY-?kA055i~ns5P5Urr8RIMFt80V^+7&5YUP;0)?zJ* z%Fh6A3BKve)a>^wguDK7B{PA{V zt1eN~gAuE5cu(0)eW*TBXcc5BW{V=I24R)W>wFEvbnRl@>p_ z!Kar2vjIsjSJ0#}_`(j(S4$gW^*i+gwxEHvy(2?}ku|g-=LTw$l6q+C#>ZDm+oyi= z4}IjC!|AMh%E=@pR7MW3=V6B@!=LG|_u0n9<3H)u%X{wl)z9ezv{^$;9bNRjmW6e@ zlf&{=2FrHjR91C&K}CI+iXkVj+Nt&tR=!IQWnIErPD=zXTdA8Qzff&i%1e97sr2gi z1SOB8${Cr!t-k0&opD!nxL(Q}es-oHiBxP)SkN}4(VOPu8y0(1#(B;JiNeO7%qjV$B^qI536$R0nz!gjXLQPSj>= z?6LsN&w-BEvb=3`VQ$>+_)?!lGRN7yU@T+gF6vSwKpvt@LXX zq$LkYB$c>NqEe2;M~292J7s`jn*3Yiuz~bYy?ue#mig!Q0pP^*y!gzwI|AH^n?nNqYK`HMM;`HEo`(XS`Xw;apmp?_ z&wS?eo4@&+PdNb4T>+*i@9bTFE%ee3`tF9@|8yj7oysZy3~IC0h$n70aURDw6$fT{HNe$J98sJM26hL) z=BS{-c>AU_vJ-&!mp-h|)w$_}mj6vh0c<-auK30{A02d@YTS06cnh(xR$K=jLx}Dn zos`aBdWLmbv_mLZ=0RJ>98a#kP}S`PacJgx;QWWK1Ng%r+~92KOTlzD2+~3D9?$IP z?c=o-%5Nq;9T*`fxcflS=6+L#?Ra;$@u#5dSkQ$q*U}^$!=V}R)yvBe@8$Gz$=qz2L zV|0f=u81I?MV)~R6L_!=XoRLZth7u;Ok9V8X{YcpUpcH3V?)t|onTdeUxd zzxc&3QLkL=aACv=fKQUKD>CpBw~LfJ2Q?YEN2AJdlPC5b_ILjLMYiwfbEWJExUqZw zh39rRNcVgIgLw{^@8&fBi+8gCAYFu#pHF)F6%0Sw<@p1AVSq{A1-ANYekcCkJXSxf(s|ya=BCiL4t4*y@v`od=hl6sJi8~$st9O0V?lrG|WnhpG zKUtub^BRPbt1Tx@J5ER%716rqWN7N(E&06x)N-?QCDr;lSMd&UosdjkeXVtM5n30Y z>bZO85Y{Z)4z$uYLB!b&smmD@H?-xKx{tf==e<3b4Q|s?($z@~hu%mo6F1E*e*3*NEO))B4OERa>+2}?fWtRiw-<|glWPJZgdKKbr#M%2!>w>k#AZT zXgbc72LZaZLFsC{)uw=VVNMwHbaa-MQTWFxgir3N6Yv!X{(%%)dsd#Yxv3KDwQ+I6 zWZjZUf@QM8;xCf+axByZ#MmUbJI~qr@(=#t5B}IkKl;%p+)2w~z%i5dAb8L3nDMv| z@N^~_gY!Voal1Qrvk(Bzi7;#DK*sZK{daut>Hg3-`N9{zkg>lH1C`J70DM4beC7<5 zOM9fulb4&bKQ9Rj?0busggR$R{C`c_F_C!z|g)51k5So^b!^%pb zTZV7|C%h9BM}reQ=3W1r?ie8b*jE9hCoUbtO}FZj9_PZX^s@-S_4@aJ|M&mW$3OnZ z{|Z;?z=+Pbj*mRO^7?tlurUs}PS?TDbbNLe0~5gGa0Z>T@)%D(3Hzr| zrf$6J;hIz)rtm}9+?yq>k*%P!rrW#uTZz20yY-)gUYZ)Rjr>E0d!ilGL{E^XQ7)M9 z6wmt(nu$Yw()?`F*l1)h&#+A{xlbAcQ-C!{=q>Z5(}s~KfY~Vn;@~5)xu{|%Hcyzq zhhCmE6BA7{4^Qd$DU{^o(}{5PS)DRHxYm(R_?58;3F<)kvU~YlJC-+ zmZx%>jkM8eZ!{rS|VKh4VFNuI`Mq79s7 ze4YvTT};UD;ne?^z3k{1 zC#LuCG~a~;20|$luXv6O!WGXa_*Z%N{~CA~I7{GO;Po9o>9fo&Ggb1C#T$P15BR6~ zbm4Q)J{xD?Vzj&D*ca^Rsa5eT|YI;xZ@1kX$uxws8A?V)Y_S)WoKYZ7YQel3$ob;TH?gY+84 z7Or19ZfJieJwtaE)lT4M(RZv?eM&`M)|1*>HUpLX+?!S&Jz;tjnj)Vd>=`X}$zM_7aR26@=8O-9T5XrJha&hz*Qf@g_f9q=6fb9;sD$2gSXvd{HxX@X$+cX3> zzcxx)6$T#q5qF<4VbA2BcmDs@*KN7K$@tq>cYUokl?VDZu)Kcj7~CKIUmni+?!Ph% z!|zmFX!s!R1?n+g zI{KVxvbTUEqO@fj@-$|%Y2-V10~pw16es6S0G{^WWHO)L8>f-o062)O9AXX9 z$`+$I8MpqgMSwUa7Xl!8)58IM2WhQZdTu}*&p-XA|KwkN{No?{unv`uLGOrjZD(;H z-x~0C(ju&R!r{c}oOId|ed}b?c>v%_`ecF^-T4E0R7{`aK(?K1Ts?#onXq8$`>+?j z-+$iAufNiojuTu+w+R)mq}lxKhM?cFk2WeNBmZw=0@ z8;Df6{XhZ8O}F84Aj77Ed6ojKLR(JGVC>jUx2%-M!S8|zuIZuYfXa-6um%NtdQ2E4 zCY@FGK-YHCFs|Oly=qqjTzg%3=I`rh9Vm`W(%Z)^V>OAEp(kbAoaxF$x$mD4 zrR-F(dM|`r6sz)TBW0{U);;)>kV&|WDg0M82=2%K_)i?xrHHc{K818R2zTx0A1b$15vbe;^Aeg^<4yQHJvv{i|kX0QycGXz&L zHyWm|-_%!7_Ba5F6Pm)A=k*|lQOXG8mxK3t;wiRRDss_EDBJ*x6z4Bf=f)h`s=;d z_FwY12|6)oUi^$0&?`^r&aab2(#2b4r0-q+w{3!UilZbRlA*t1+eN*kr8gfR=ww;_ zDog!Q{PiNV6$(^_^r767KQ=?=1(pl9t&3Z}bjV7&%0?%|jm?KclSw{ek1NVftd=FpK6L$QWVhV$9>2F3aX{WxBu=ojP@!c{3HP2u- z)p*7uO(fmt8&U`mf2wb7F=<|@?~!5BlmpnkVZs?OllVXFA@FHtGs$f~AU*4a!EAL= zM$;ioO5`+q$(>m4{ljCL+5=d9*w{>MtT&9Bk{{Y4tn$`vWYm$r#Sxp@&`Wf zfe-%4pZv++f_I&E>*uvke46j%-*@?W$QI4O%Y!$r8Cx?Bw?4}%hX8th7yi+SzU}OU zr~A7vfBDNUc%S_BU;lMP7st>3&BMU;^#5di_AfB%Ew9|1{dvh*U>jw;F5s z61ddS9^9OM$9H^(D}s#M?;z1!S0G#)X0G!3i!w)}vq(i|G-DC&Ad9Hpr zz=^$S;$?P)b4urdlR1a8(i!=BfJ@xcKj-S?d*A!sU-_5+@_*TV^EdzF|Gu49dOkp0 z?ayjA@i-h7_!+E894E@)4=3c7R-JgA?>KBV)4_Z1Q)wMAI91p@=%9B86-mYElI+0A z`L67Q@z>zBKF^p3c?~b~Gr>-0D{X%8b*I3D@FG2(@+1nw1kXJFqFYVwJwY}J#f>ax z@MJ>S5>0<%;s&{Q6waWA#y_NbGer4fu+X z-~v$eFq=kb&JA8E`cIGlr|@-f>IB*aA18jcc_;4o-G5&W0dyyYL7FGL4(VZk*I&G` zd*HzbDEGUh)pzoreky~t*b<4XcPvz9CxN)Qs(d-1w6G6+TsZJN0eN3!$3X^s$U{q@ zUGKT?aQg4}ee20nb0^9j6Uf*4m(U7;{)QPGtNN!9RNE zJ9hVT$RRcdbV^_88nk_ zM(UfOgS_UMw(54|mpXXJMSUY)KP~6-f);2zBjv(K002M$NklpV zq-|}+bY+3k%b^*Zr@*J5C+Z&+3pF`!@sZiQWFDDIsDt=H0Q|Fg{8*d3&L#V3C>Rk$K$th3e z_3FQj6JJ0Aey5)`RE`D?@}wi z3{UJ!eO3zXi3akL#_(D4rv7SY^YjV(a9H*&pXP0KYy-7!f|-8BF^{yIL@WR3EMIKK z4!N4M=`A1YZOR`!>%M(VWf^;UTiHhb%4@#1bE5B@(fjJM>Qe|DP@zr%LKTwEoG%bt zuD({f(pmBvR~Q>qs&?9%e1tP2(N$*`ULKYZ2Sd z>sJd%C2&CMCzQq8B#j#3?M-SWx!7gMQtZ}Nh;$bW>Gd@uYZj}qd+93CDP^o*f*Le^ zNM#_JK;x2M?4=wpyl{ng{@?%4{_qd~@CnNGrjvdjqA`{}cH+;t+pYfDsms;(8BX0H z;FwytXP$Y+bG$OyN2U{B-Sx@8a7^rveZ_Zu^4lE)KJnl2&j0DFU;XMxG+X~G((cqn z0OdoUF?$6+`}>lzKt1V8N~JSp4lQ6Cp8Lmm|6d1X!zOO>2^0RKcfb4HPU!PKkgJ2d zCv@y?0Dm}@oC&}+P6y|5lUD|GIQc9f^xOp?Og=G!bDA#%7r$*5ZaTVi4- zXouls)q7~!t8r}yC_EYd&reur379ZWUU>r>xy@?x83odjhJNwk$W`8vJoF>) z0u^oWh2xh2ihWc`nucUfjL>sn_nbON3e8B~&dB@n!CoB*wS!)AX|izw4oGH~f=^+a z!=Q~QH0<%hS9`2-QckQTY?#IrruoD)n#y1W2T#f(esRj7@(t9jc5thv1K(_M1Z3GJ zS1~#Of{r5_1tkPV9B|hYZw*EbYI!FPtYyh>FJOie(KT`^mp^R1=>>V>O?MF?wWw^v zd-!{ep%?7NQ+vsqvb2)(A0E|tU=Hx&0AM+}2yl^!I}4V(`}n4@dK;AaI$Q8NK=u8876!n-#*P5D?_c2+ z0H1!iL%_P=L4FtclE9U#SHV5r-E)!81^T;ikJR$?-yH?EH4ho|eSFK=R}XwjCm$tq zcjy&P`oGEo=;g~CGROje@BD-4e`hqIK`DoBn+F*yzxQge0$_gf@1fVcN?Qvi;udP} z)?eeo7-FjhRr{{GnK}UsG7IT1gKbeP4-mH>6YD&|r;MbVIu)NeWPntG$Y}&s(CoZfo4Q(1j*E|FHjTDH#ZTl-P_@T4l zO}8yeN8Yw!<#9oG$rF09$DW61k-dDyQ7-Fg(?`xFmwjxa>Oy}kuh>rg47Pvc%3<3x z&JUbTufTbKn}SLA&)C`$8@rf(&P5*hNz*n)h!GPkeyS;1g^{%z5 zo_ke2by>A)rK~_c?HB`_eSH^J{1iF~B>#|Qotq|U(^@vmuhM$0Ov0-l5(ycaso(0g zlpWhi%P8@To1^hf^ZGCVdQ|`|c=FTcCLYr9Uab~S$B40oUAV@z-c$xB4@A(8UbJjE zQMyDYuKD0u-cm<*pUC8Xc*i!bKC{fIJAavgh3x3i2}wbcACV_)i5iaZ%kcldaX?T1i+}Ove?#Z`R#0)A zI?sKpDP21R4$|7Olk5ZshHZT4Z4+5F?a*XUXkr3%PjJrY-L9~3enL=ht@`cAi6a%k zOaRJV4BHWdz73*5M~_?v+aCpv!_=<1Yin&>U`kUQeQjkF(8f~T!~@W%gt=_o=%8GM zGu_5m`E8tx-)FJnlvYo2uU*5N9pB~YQxU_^^u9}Y)q%kovf1bg3%7wop*=6U5{Z{i zI#E7thiPR&hKSKT5+-(AIv}{I%#gcWE*A2ez3J$dhJ2R3(b3M5n>MzSW12y}%6E*I zP@#;p<6xQt&T9h-tQ@FaOqbu-Onhm2ukPM!V_%aP7;!8*fNbf;O%P5RmJKcuqJw>D z8BCj8rL_(%w3V2Nk#DJo5@1Jv^{S3nyvP7GRWmg0RoEekT*TN3Ypoa9RV3}$$yd{p zN3oT5Tsm_(9rXiyggRnD200XRdy)Zs%8B@+^VlnjLr=L*Pbq7l`sA7JAv9Ezvosfd zPs;V7|M$arTJ95i{6=dhy0UDQr{m{%55LR*&u3?RNPwd~FSFsEgYcVgX7j)6&+U#` z5pYc3$#U(!0O}^}DaGg(CIFs)=kwvyCH>})^2@^qEAbt0c0%AhuN$~w;JI^@g{(rL z%p>a+CKIIXlYL(?c#H{r5Q~xdN;?`DEHyju#xq3Tz5YM1Jgf-|DwUgS}jwr7akg?YiayfkZAnN}HlB`b4ld2{uG<*KhTO+G8{5+}4yDQDVPnMzN4NW1b&Gv<^NxVT6?c=Y7{ zl+AfK)s`bGI7&g#4jHi3cLFzZG`+toZsF|9pz=f=zy?pdnt#zjdB`gYjyA8q0G9HY zzK9wyZCfV%Vmjh#o|vTjRq+yLcEZ4h4_j0V7OTD2J zRnvZ~r`pSmA|s=Hnd(}4t;hP^rh#=;n1^5#m;zlw@ooT4G$0$fTD1X7aHs zZ*1FJs!|8aH|1VD$=e)0@x@GFKrwch2o4OkL{NSqxXVI9ob2$sh} z3q*csZ`-LmkbjedI7HEQntE)dtPnJ2bz}-t+CK3Y9(}WPT{+ZU^#T|1q_H|HOsdQb zy>d!>_|Xu?u0y}+fI!U7H}Po*<5_22YW%-+`|5!W!h~ zp?sAQ?d^dPv`Z9$=adCYmL0sT79iQA^?r49la?jXPUA5H?dS`T_K;jp+S{Y}D;|C1 zQ~J^w1oJB8F38xHw8$1{3?Ulez{nv)g3pb0Y`^NJc`BM^82d#c?X^9nTEZCTq~Qaf z{3LeKM&`A1)9~hcR*N2Ns@SkEO z!K05pmZ$Xiwruq05_?&i$2Z+{Go7lN@|wUiyz}pbfg1)s^Z9370R?|#z>qGzwm>+* zcM{NtG9H!(_YHW8FAQ8@CBPLrf^G(A9(X9vR(CZ%_gjc1dZ+DP_<|R*>;FFs&n*cY z(^^-HyT7-(v|bKP;8N%GJr49(DGtEkX7oYMhsnkAdwrzN?a$}n%~y_(wzFC9d%WdI+Df~X^%2McaSb6 z{fKtbCSNEVwjFw4X;mk#L8#9m1$^@rmK!Og+K5)ZayX=sdIy$n*HmeH+4!C}f}4z# z5#*+f@b7hbTbBiqesIvs^vcPv_m(Zv)nA*(3BWgXmpUlCdLTod@K@scLFpQL2Osl{ zr|X~`XsSGglb>>I@`EdF?jdC{9P@Z?9*sVxd1wpHA?Pc5zCWEb=;$*BUb!TvZyGtx zSM8ZROi^<3#8(KG50$GtC}*C9FYc1xbmW}0k=-*#gwG_;!o@OxE}h7F;nGSGrv^(_ zNN)7AgMR&0vZ?yw@3g654;rqF8kzuFe6#);8zHpO z(LV}EyJdSO6g02p(L)NYZz)6EE&8EtxiAQ)&WkQ*aOYtNHdpRtMhgV#mVwrp&5mNp znP6U8bcjk^?YY`rqW2T`ouspW2lvWEdT5qbuG6nuGODlXl>#LE_V6LW2>wGVa7HPA zLd+erX){H2q6+)QW5j0hQ`EWIWBDAAdmkzhkMBxud}6xAv$|TgwdT%u@;~&i{?&K< z$Ok^~z6X)(*p;&Ol|u=#ob7;FN3yS$s{br_6>V(zuREfQ&wIXm-+1?5Nve!I#-7xt_BQ?&9zK&hLDL8Opc)Z$I~Q|I6(+ z-~7cmNyzB@XYg8osAu)id7AEfty!kVy&WPuw1j}@(*X@^n)r>Tv{a?eTQUMgVCjRX zlb2NRZQw`^QSn42WUwsHVA|eSHXXbToDJZ~Nn6m0ReEv*&GgWh7U}c@X%XRVygP@F z^aCe-Be6Y_*;3JIV5Njhm1hu4;}-+ipaDO53|j41oAwE;GD`EH;Yz0^PeZgvTdhTZ zb(SLov?)gJUm#Vwxipe=(1??#LehY1jqsO#@+G{Wo2h>-P{W~82CqKxkfr&y##Ht2k;ObTxXlM$FW;50EX?Iem5RHY@+aw!chj9HZ|9e|*? zjC9Wt;iboujKsIYuiYIKM}{hbJ}of(Iu+B$b6%5I=7B-GS&qH8BiCF^QaEZ&H6H!A z-GYM!l}Z#c)1?ia4ZsVKl}Y^K)=u`_O|>kAHaCUoU_>3mIML><^n}g`dO3$-G{X3vzj>qIxQ(U%4*qZCDgW5c zx}slkQpflH&*N*%cR$DH#(b^{a6-bJ`|XtZK7V}>IKW<}(qR=*h`rme_J`l-;^r-7K%xP;Dno2hB9k{d6XAnWE75jU(|7| zYV#DC#Bl&;nS_!>(De9@#1{`RY|3#Mq}O=tL6Wi)1!3|DLX`nc=^wC(!aPhMzU2n} zeZ?s}OBW&%hy?0onQ4B)$L3}eAbd3fs=Jp?{4@RyTjXK7D<+i3JT)!wmB|GV=%?QP zRAyTR%LG5bx7>}c={I2)`DlXpW6shv)DD&n?^Bw3Ru!UrHAomIOVz=}Ug`sS2$*Ib zdNy!vJn3an`pQ+_c#zl_?9eb?eJq#4#%7Sv?~jZT9PV<^KMNOb>qmKvBS1C3`4NA` zn}#*>Kt9*T%S+h_Vbx1$Cy(P#fFTu{o}yUVM*Bm=l_$y82wAN@S>-wU;0HhWo8SH2 z-~I0)?h+lJPUY!855wHt&wHiK3II3T=863kzskkuZ*{b;08qXwtk!h`K$~XSKQK;U z`?TNv0*-zCjg{d<&FU0d}qkz{xo9JY~uM3C`y_ozR01KIk_{ZA{~Ua5k5L z$!AEI6!1MH`sJ*{#h<{-b7nTV&ME*pM!w(ViUGfAdij0td*6dU`oll`KQUu@zp@#| zAI-J#I^{IRG;R*STsCg2hl^kO#Mjob;}AnAUOJ5r4zryjs5HkQD-YZ&+?4U0h5{Os$_&PORjWajcemK zZMmI*gU&>7q^FLa%WFD#V>X^wn>S;8om@f;zrf64<-aJ0p;O9blmp0{MAH|G=b$K~eOD3Os{B9IZz zW$AY6Z2rBMxAynP&dunm-g~}uGVFkWH+EER)5|-{C8gm#%t}wwNk`p;8(d?>Eq+%{ zOkAXahOh^+N6z3QuV*{i9@4dbByH&^UDYy8v#R6b$HW79gIsnHO&`9V(Kv9>N`6_+ z+`(JxRo0f<3?S{oE*pwV0Oab<=88-r%m4t0&XlrB@BWYd?e4M19!EavD55BiOQe+x zZ;|)$v->~q-A z&YgE+65rz9O6cMz2XADBK=~+NZKUp&c_$SvGWd6u!BZD5WOaaiETdXcJZ`+IzWgS> z9-*;B$p2NZe8uU@?s{pig;!tjIf)_PRW3;qev60VqU8+{6mC0}(R; zm`VhbAV$uXPufM;`^37-@V%CdIxIbk!@ayYmINyNS_41C>`aMXWHP!qkQUfNld!>SUytDhaq~&$2e(a zcEMI*rAtTJBe!zM51Xv^qJX9cA39!h#FC|3`zUH) zds7F-AMHXvRDPg%s*N}YUpmJ3P}kA|Z}YX$FSsESc=c}JY_xWOmoi({f>VG~CneA| zHX%juqxZl6{qJD#|BLXUSRT9KAE)Ch4({z6i)#Ow0em+7b3%Yg0AA!Rg%O0C;8+-QqY_`B* zwRtw{d8Qi{u!3ud<%nYwt}_ehMj(C*ROjH*B9;^B+I(V`R{?Y=Y!G+_$CFQsJpAy( znR)a*f5MT=mpI&&G)t0X!{L+vyc(c0^PWRFoB(jy(sknD{4V{`AN|oo-}#;2`L>UI zxEx#B#k_j3rwoGIc`!rg0ih3y zPX#)7o57_^`;?OwZfJ&pNFZH;UpLOg6_KDJ*HJc%o-$T`rbcB3J;Q^~#X%IM+XxaGqEemfKr0xp^96DP@u zH=SkakBx*aoo#o1qf(ZJhWRQF^;MSG(y~X8rg1}W$(2qAbt_N8=Y@7hXEI{V^VQ!bT+KJO>ZbLzHkt34&f}Txksnz7#pu$ zJf?ieM>s=j)5;I*0tw?OOAALBa94cmg)pVp`XP)VyjT6F2Mx@~=jxXF1LYa~!2xn` zW5zM*nw5^UjWkch3m17n(D&J>JIZb)1es1qt_ZXrr#T(qOt#EG=X_F_#WG`<52 zuUjq<3P$>eRm`csD?Y3}ENpdabPEdnFS;gY-_;h-6{}UB4TK8PFAWDAtt$s~YTy3h0wGA+jjZ>b4Wen{z@+XaZ&j-FuDv?harD8q} zos_WfS+++Ud7&FJW1nf?;ivD6p6gmwrQ@Hk=U6sX!b!r|KznL8os#*1F1BgHNCyV; zLC5QTN*cbdAkweax3+vnZ(t3G8XC;v*XCZu<|wfb;#%-Sf* z0q~`1t|+s?I1f<@+k9_YCJc<;(hIvH05Wk7jZhlf|5^y0V1rqY%WXEl#x*X`c<&UgOY_kG{@{h#!k=_+5$12A8Ql{oF7@9}#!vmDqPpG~$o+waaNwe4fO zQosjq?91hf+G9V>&8l2=ICAsuu@QI)_UYgI-uFfr2L2};v8hHN1cq~kT{vf_XTJr` zUIBRa=kZkB`YNyE33&2v^2v){^rGwj=5PMyl!3pFC7%&-CBWbP z-QW2gZTgsf*XYqlAKek}r~j^Zxsjg{#95^i&cNR?hVO2JvYguyPESXE%7%j1v#Q`a z9MmQFJn`+{{_X$k&;R_-Kk|k*yy4Aw)^r|hjPZ|ciF2bPw~ImSa$0rVJ}qtI;L=BV z_6b0F10E;unXoxK;r4;MMH7?M$&lR_DMjhpI5*w+@~(_+c#sntktX3hL9%JFUmm-MuGNipIyBP>B0jju5Ajm0BZuW;p)UJ%8NN_H9SU`RVh832 zSlGEtux}I*30r_b(607F0?)l^Ed~Yf+5wQAsa1Aj2kf)qNXIlgvkqL>y`rFd0luq`T1{9UYeJUvP)lo&mig($9iMH(_(* zKbKAV=|2bjehgm8tbAe#TW?rmZ?( z2NYOvmXnb`Sx&i=6!;S+UKxg_Y1Ubx4rM#Mg?=c7Ah`MCT>Y9q(pj?QY zL@eB4wQlr(t~o4CTF%Em7uwj1BJtT_<_u<#kP=^uNKIK)}bGDeHs$JtERa@3$6KRcWsy8qw83y241) zJT>S`D&f8ig+KY~TATKBqI(chDrL4pWlefwq#r)$oz+;}tddM8q|6jE6CU^x?Wicm z4erqPUN^u!R7St1TBi146DKs1*K`axOSKXJLf`n)KTY_p-}f9ncZO9&-G=aKjM5KXJ1)Ao=*aLHr~zrT#?I@e;=rwvM-k_b$5UM=YM|u zP2coQC-mQ4^%jBY=O6R_|BimXvMQWvO#lB-sl9q)3RHq+h1dy7FD$^l9<$M)%}JjY+t8$C zkU|FTo|Z%9vUn0xB;&&(^h#H}72<_$l&Y(^rq~f`2UmS%=pe&JadZMGxML&J+esQ) z)pNlGcIgyZSLZs7rKIGOrSBjJx7Vll>P4GFs`rv>2hjL|_Z-pd)@9; zIyG6+FHPy&akJA#zbEy>IBAPx$l#%uTU|Bf1k&viV#zhid?$Bj3h z4}a^F%lbw}sjSA6;Fc6UDidBz!3X$!F*aq%}2AQ)%4nl$5(KZu8e^5#XT9>Q9t zLP%Jzht3QDyf^rJ{W<->@&~I9X-MNHq>OVb{?JNX07!^E%QJPKay9bLdGLm&_lNY% z6NB(GD9!bf&9unPeQ*!#ll)u*TJ2>1?fF#?ZDrjQHgs10NY`>0JZ}giOKzYwzAyNY zJFHKEL3D8rb+wFIVK<%!{PwcBgxUcN6$5-}IB@kGYlb(nSz?es^_&2??&`xmJ7-8@h3gX^{M!d5qG z@0wr;4mPrGdo+l-&x=g=ud)Z?RsOe{D&Ss*&{(#RZ+Ukhs+_JwSSvJ0+qWA$;@$Mn zzi40k3-Z+FCu_x_^qYSz*XB*i9|Z_|Qw5^AU`N;EUrmo3&{Hh!>b=3UZUi)V@1xIu#cR=nlGz-5vO0G@4D5QnFxkX%7gbz7C-XC zyyE(MzxR884FQ+@Uv{-DZJdMnEB1eh_i)9mM?R_TyZ@x;sXr6pewFKlhijPxAl?T~ zCocVe`O9DKW`OE_>W=>&4*vi0FaPrB^{;>ZsZal%DEPK-`?gd2_wX@~k~jD5R{~sZ z2!YPRv)%%&9?yC;&lLPeEU>xJaSm<(cnGf(aru!e0UW$L3BVHAymQ3t;uR+egvaqX z5ukI^ab=cM#|4ZnC~a1{FwS`9>j176;4=55UjoPXnoe-=mvET>@q54bd;c|0=RVb$ z;B;CcQBOV{E;r#xqah*=Tj$@!c{T+2H145GYQqf-LWIe&8go)Yb;)Ok1O2DtkhW%F zw^8&)o;E;fg!oaa;WP5EyKtg}QG|(K#7bu2+1Qq*=k>%UR2xqhSNh2p=_!8+G`)?i zF_DCG8}m#UKv+TMkWb-lTshJKOan9>N~MuR1RuFn!fP8qI~tQ0a-C4vG{##eF&&n4 zTBaj~{Of6q4Syu2Ayq%}Z0VR2a#k)I{lS^1)$*K$Tcr`sVhNW+dut`T%-dLH?5?L9|v+9~$-D)_*(NVvh3`p5^K%oS9g;!CS? zUqu@b;IQBfx@uGDJoI;;%F}$Q=Z|_Dd9b@n$8YBSekTDO=$jYX=_1SjFJJWYm2@N> z=y6>5{Ds|9Pd>G~@RYmxKaK8Jb~iED_Wgf1_;b@g%Y_4c;g#Qw{5rA2UN|BI;IZW@59<`;lIYUy*S_{uyI20xSJ1J} z6Y@!l&XW)7WwBe?QkYf$uP&D|Sc7YHQ@?4{g_90(Jit}5hQTK>_B0l_t-NFNTvvvc z^TF}F;FVw2p<%prH1$-TH$bm+13y2?=ONr-P;X_3td^2hrl3obI$9@-pB~MMgpfAtz&^M9SO=A6WNLivX1$%DJf&yd zCKkRk@DbO#0MppUNvn}j7}G@1pLj-!&@x`S;)`og_mQ3INrg#t;=~m`2hsHd^~(_{ zI%guXNUJoB+$%D#_(%hKb>PZic_6fzCk1ho!w?y{oqZvOp69V!C%if^6j@Bu)v?)K z`idluw2@$&+yS=CNE6jln*^1m{DNpyb;)gE>t}>B z#9yX7?O~BFIt!0Hv5_m|4(%tp=|kVN!?LCzeo+A+<6UAC{3)a2eW9TKwyVKGN9lTW zGK1a_*WtU_{%SfSqq0P{@>klhGp_XZc;-g5cSx$~PIB1XaiKFBG3N$W$ z=tCd+41H*sb3DV zIy37c(uE6Q9AeeZ=f!Jgu(Ge#5Oi@cPY-1)PV%6Ti(!;kbn{W32-f^ikB z_|~21S%B%7CJ#z~$-nqnwhc4c@g#%w2On_xf8}-%o~8J)TL+3R@xPHt0BvhHW(mJb z@Zp{f`_A3yQhg>C=to`TeSSaXXE{B`z5wUg(ce08-qi!(Mkdmo`~^I z@p<+WIOa2gKJ9m-Kniur+C?T5E-<;^{sMks0N<5Y7)&=bGh%s}B+kfn72XbTUi6|b z-hIWFeOYv&1X>s-&n^1JTfZp_$TwvI*}3%IJS?pDSTp)0cF|a79(rQsy70YrqSRoV zw6V#^kbznf4}P@S938BIM+dq2ES=Jl9vg6miRH@saxAgjz&yJ-d0wW#X3scX$9M(XxYG07AVg?HI>KYp@8a3ws5YU zAUbS-EyE$HjB#U*Su9_q7vKC^83j$R_jcUGAv%N2m6moXNW{Y`yu3)gccNzy7PXDG|j9 zPKDoY_xyy@9utsa=@A(tziID({~y2O&2N75&+^Lb<2(pEW}rSx{jHFB`Y#;qTM7iM58d2k+ZDK%-9zTiJMWCnKJ}09g8*gL6#%&n=zLv^}uE4El8hIs_eq$((nr1PG*#$iw%G z{4#*A1ib21uex&o{rCG>zQCAV*w2yh0>A^R?@r^&kmjd2l=K@z zAQ@#wdw*{Oq8}H}U}wfIsHC+=o#Qz7HWI?=Xp;_o#j)c!%jr!wG7T;bbMBU-^(4>I zO;T*0d)TO-vUs+UUyUPx^08exl)dtuJNJ_-kgOS+F+JYei zc-p7`oLyZISslpe2Y}~)*{wRyFKVc&`=;#v*?;vFY_fV|?&YHyv;=ku*x1UmwlY$^ zwYldYQV+fEebeV&U*xsLY2vutu9K#*Jr?YwD}&|C;4<&QFHQ@n<+VrQ2Dd&jsO7)a z^;NJ*k`6@S${)I`AHLs?YkZ&B#^t~h*Uyv>XqyhE8!Y$hsdI{xv6{@}d2K7Ol88K8 z-BOg$<5w$$r!@DplPSO$$AqXCE1jEMM<3;-ESdNEFza&bVQCG$An>D3+AqE*k*Sa2 zD{SwOU%DLnS$)TVmR<&KiHss7PVvzumT%#tHrFMf8Im7Ubz>(d%b=i%z_Z>-8XinI zSjMH{VGvYR^$(q-Zap12^aET|j9Na8S0>-Pk4#(>m6cwDqwN~@lf-0V#&F^+nPX#d z5{I3YTH4-Aq7xpar2R(bm0cv%rdE#O9c_qMJcw@F8(CGBFoVhBL_buAR&5d>I}YLm zUSGeiOJBPc&$eqzD|qBYkNQl@MkYvr4>fuk&6=V7zNevh?4-~;h2v8_>cd1$Fif`^J;)glN|W# zu$(BcQ+LG;PKfs%r#$%wHBM>qbf(h{Ph1HQM`$`}c`aZ$M|rs~z@;Dj!5{q9U;p)A z|95

r>Fq(<5b3ZVv-+ad6}F_02#8wlE#ow0#<9UdJw^;)&uXy>hplzCur%w&>VI zq=BO&+s0(M(KMR)*ABSs=!Mk$YI(n3Z~h2pytV#@g9al+Fnn*X_n3DBo1HWdmRG>-bsSQ9nchaCI;-}j(o$<^9%q) z%YF1ekjb)aMx=zd%d@gkF+y|bwjOmtZQ{@+nXYW4w?DdM3;}))<%wNn15B<1TRTC+ z4i(4o?(xT-U=rZbW;o)xgkT(*pj@s>E@fWoZk%r zpT6+<-IJetGJ60xICnLGb>l`p8+hxjw?&3azVDCH$Lt@F2|{$iy+9)yWJOk$yp9P4 z;nY>JaZtNwc=zA^1)jdpR|_%#0#=PQjd&>&%c!0jO9H{y4qp4(SMOf>k{9J3t85)& zd8iwZLo(6YvN1X5o`^a+0kGeykCO%;WeYBFfuRf?!r93--n^dW|L`X& z+9hq|@NE1X;&{y&m!}VExtFHLwIME9+pGf1Kn*6)TXdjxdL4VISyv3D-E`?soag<0 zqVvaphxa;0f7-9sA2)vO(CIY@08uABo;+&0+M zr&&@5UzpP2BKnh#KBQAX^K?<2h+H-Xto{NTq|ampY9+*$p@U8WUTYUZs$qE-ZYG;;Lp)MY_?1rWQM-z)pO_#&%g~ZP zb|Sq*0UG@_xs`!G&DBXFSJv(G!m<(^@s0t+4TO`C}D#q!>pHs?c|$aCaNbHlx~1DkSMA-GQ&1a{eP z6VCqH>ff#W56@^Oc@+;m<&Px<8=excE9-gDeJeqY)v!MzAws$I`R{bH8sB(!ec9p@S>11DOdnJl@$@3Zs~nv}P`C2SvS?zd?Quc7*kM zKhr#o;NW*cV>-E&GbE6-4YqgkU1^-OVeyTxP1+#4e9u3utAV`=ptzBJ8M1?ODVKl1 zX^0efc*PFuUP!~_pV!(~y6ec`Fx~c{vEc2jN%Mp!zYyTM0~g~bKczP^rt<}YHlZvf zNqmoin~pY*tkO76yf8~f`ePPJ@LXQJf;+X5&?sZH6;Ljpo-~uJASrY$+=~_N>UqZ3>6bE4oL+6%A^Jbp5HjVrszMWs| z2efmK9P2C`cw2e*UVbazQV6^@&etM5+qqonf+xs(;EX7*_|d>-5>)v(q~S4sbMD6n zEv6*{wswMI^4v(DoQg9t%(eGcMeipVr!4v+>P1Lf7s%JjwQ!1Ser4zSq>WDDBVkgH zT>*gP*e@`8|70`iE%*4A!tUjZ0FzhEQ)Tc7RS4^oM4Nb$sw29F@dji2)4FY5AJ(dr1oz7Ph)Me~bcws5EVF*v^zceRUb`0kEb>#mV&_ZVMh%CczYyi16;V^XO z>?bK5Oo{K*!RYI16XY7YT4L#zPolBUNWUUtTcCeS8!Qj@{fQm1ADV`q@*8(J_?EvJ zHoA{I=CN|bj%ffXC@Cw_fF^P&tA4nlwpWG;rhAOtLTi~&=qX3t)NlGK1rYDrkTw!4 z8E-uu7xRMA zAFXAP0W|Q4Z~I+)RD0r(B|dr8?cpgOC)>zJi9k5ChTx_iI0|N;bL%AfMBARjiTpi)qR(+p)0E%;n|0D(h>r^mk9}Pt%W1-wlL0JNVz{6$(|~=(EH>J3R+2V7)jC zXBN-`n}hhNpZckIQeO{naIX_F{UaawNL~dH*ri6k3V?Gu<@=-AfW%o#oKlu8`53MV zod5tp07*naR7wEv@#hNx?g=11gLvCx9baZU>2&)VK<;sTlFj}AI7hGL>GG&qDs=@X zcbRXQKJ=Ae`IY~g^E-6b`h3r6C^_ro+UVGra~(~t^>b}>gd>Qa8FX<&i^$TU@vR&I z^wMDA^cT>3MxGZ%fe0=c_xl# zD>6o@b*&}SP%ZgN00?>(9l#HLnoT-b!>>H51v(#aZAu0`$tLtqvxMG)J78V{mU3y% zfPE$9RFxMLH`-MD8pb)H(H2JmO4|GcbUHc32(le8gPq6K*O5k$%^!J;jnXekRuPn$A9CKjvVf^jGQ;|1pho6^Yv*AYbY5MxWm88 z{%^REZ=thH+4ugL6yzO!KF`MzebZbWaL4V>qbwd}0Iyk%H$R+2aNngXyh?C01Aku= zNPfcGCI6N;_abnm0h5=zr?a`>=d$!)-0dlIbRvJQ)i-qlyZc9ez3_!E*nRoy?y)l& zT@yd~ygHsH9G0Eji@)HubncU%;DlP?GGVU!=!VmtUwF&EZEe@qj`Lw@?F1WuM!S0X5<&_0cG`SZX6zWGqgU+@>b z%0A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 NFx=s(K!I5EQHhp9{gGMgn1W$(vIOFBz3QY(3 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 literal 0 HcmV?d00001 diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/CodeEditTextView-Icon-512.png b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/CodeEditTextView-Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..e35cfe804abb492b504f463dddc97fc0755db591 GIT binary patch literal 299865 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⋘GiZw4c8MK@m(o-B;`8Z(;_iSTG|0C+ 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

9UjP^{X90yb?gSa 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

!o>m= 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%0Dwp$RNaLnfmZQfNR_U2{hmp{ilku6zBFje zGu^9RF0!hq{4pPWQwUcx6_H~qPA<|JaKTOVwJM(X;szRv17-Gw&aKPjF~e4 z3l$!@>YD5R)m7JC``g#PYD;hB%2oQf&vaU8zU!dh zpZVRXiLsB1FWLUd2|Y^Sd+n2&P)uktF{#6LZ2eDj@}J97WDMHRpu(4wwOAVzA35Q& zz9}zY39B4CHggIlo`g*tnV#|I>nH8`;0I{{)1{O7-Lx*A%+GRXqSa0BhAB6QV-P>I z6DIi}j_kUIvx~PIPJEe`{VU`0Jr%{A9dX?I~-lMYV+!~+tREeO3GcBEDMaUe!rjh`fs}FCSRqhgOfAb`mcuHQm=oi1gZqil?3Vp;9N<*(mj_FXirzegkA^i z>A8Q8uO({bzGUIzg+IDz@#2LG7A*8uKL%g-1?Ujqq;~>N>Iz_P{hK^J{y9C{->)rv z?(yeVzx>#bFZ;GcC61Zs5Vy^e~H|591$NVuN!R$S8>e#)4 z=gWBQM}G8b-<0t2%%6JzX0-M1AFumi{CQ7XuXnX4($BddDg#vlRRR~R1nLgJ1>5u& zZpAV5dX1~O>#n=J{m(%_()8=en2(=6IeKuPuJ--rLl614TOa@712R1KKOz6rDXsn| zCqAXG`Rv8`YbCFz0}~j0{3%`JGo?ofo&;!jVOqw2`fYD}n^*gs`WHOHudDwHw+q&q zR|%XK5~w=>=S4GACSGg_@cuuy?mhbGqrR?~#{hZ_kQew*_r}LR(~M7S?KdY!xbBzV zv183#`%{ux82%(S7xOZsQ{lR5ZL7Ar38|TPD6>*G?WU%gmt3>5iITiv$_G-Gj;@uF znFW?PWTfb*=l%VhGv|HY=b1V0Jg;5R_BHoJ zzevEtlRdVS)!W!w9jNFMYNZE)&MGrYWK#LtPNM~ zdH8q7c5KatFNSjL$D`xH+ePY=$*fMsLH?YO+QcmhQ5fdU3~)>28ABtUjmxp`Ji`H} ztEo#<{I<4(GMG^&=CxYJVTG(AiC?8c%&Ht;i>rUOCl@@k7P-^BTv+WV@_3+a3Gs7J zgt}ihZpR_RlZO-WO}Ff`y<7Y<`9+0g?#n}J%#@U9NvA!MuZ%-bQ%BVTE0AWP;ANTc z)!859XjR5!q56KrLd*=^NCkbu%q#H&C?;ra##yvUUa>v7J7gUr94zAfApmtWYO``; zJ6SXC^2=n4t+(6PdELc^V!q8eJZZwFPylp$u#Xi z+mlOl`6Lz7tmw1M!I)4S5K}W=0C#1tg#5s56E<}nijVPH&xk87qmx&E2Vf?o!w=J? zXPmD|M9ocXv0|`+4@q6m2G1Zo^>@z=+&pn_`$smduOJq9rjUasv-!k|U zQs_s^0~Y=e-E1(pLXO&U9)^C^0pyR<-sWu9cgeqT;RulSnXZrdtjZ6Q1up1qW2gw5 zNSg5i%3J>64Q2ok@tj@$x3+?5T)5bjG>KyB$sF!tLv#14B}VF=D~D0cQa+HT_t1rV z!CXAnUl#to%bEM_=lrzM4=m-~?mb*NVSR%?PnE&joKtN^O6kpn96h3wwKeO_OvU z!qGZBiM0O)DNvcvic9L~@~fwM>_7>LMU!JFJ@Eo!1)KuQc&chW`m+#D}~I<60L%!+cj%Ty0Vr}&1Qwe-% zbq@lmX?x8Gx0{cfX(neJnQzv$oShEBPR{gz?!Mo4ldWMik0_|#M^YF^TL|LH*}!xd z#7_ht0q+OY$(J(p*0t2$>L?24R?x?)5tPC!2aqza$fD#vH3XFD`jINVgO>idl{)!V=sSA{<WWPYt-GRxhuWesH#m zk6!Xl+jTTf=iBVPssX`14APFN+Bhc2YXx;DLnq$+##&cZ=&}|1P<{IA_KPxGazQaX z6FpStK3CT=w$DUIp=IGj*d0MzBApN(@gDlf y6vzExaZE62qvTmtDB_1AX|wnL3C?pXiCV{C`QJf{CWCoEvwVF54pi)q%J>f@3Kl{D literal 0 HcmV?d00001 diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/CodeEditTextView-Icon-64.png b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/CodeEditTextView-Icon-64.png new file mode 100644 index 0000000000000000000000000000000000000000..e4cc199bae4a92b85c2f86c68e24b4d4771468a5 GIT binary patch literal 7442 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 QF8}}l07*qoM6N<$f&r&=#Q*>R literal 0 HcmV?d00001 diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/Contents.json index 230588010..6d0b8c531 100644 --- a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,35 +1,68 @@ { "images" : [ { - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" + "size" : "16x16", + "idiom" : "mac", + "filename" : "CodeEditTextView-Icon-16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "CodeEditTextView-Icon-32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "CodeEditTextView-Icon-32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "CodeEditTextView-Icon-64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "CodeEditTextView-Icon-128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "CodeEditTextView-Icon-256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "CodeEditTextView-Icon-256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "CodeEditTextView-Icon-512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "CodeEditTextView-Icon-512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "CodeEditTextView-Icon-1024.png", + "scale" : "2x" } ], "info" : { - "author" : "xcode", - "version" : 1 + "version" : 1, + "author" : "xcode" } -} +} \ No newline at end of file diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/ContentView.swift b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/ContentView.swift index 1a64d8b54..9cd2a6021 100644 --- a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/ContentView.swift +++ b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/ContentView.swift @@ -11,18 +11,28 @@ struct ContentView: View { @Binding var document: CodeEditTextViewExampleDocument @AppStorage("wraplines") private var wrapLines: Bool = true @AppStorage("edgeinsets") private var enableEdgeInsets: Bool = false + @AppStorage("usesystemcursor") private var useSystemCursor: Bool = false + @AppStorage("isselectable") private var isSelectable: Bool = true + @AppStorage("iseditable") private var isEditable: Bool = true var body: some View { - VStack(spacing: 0) { - HStack { - Toggle("Wrap Lines", isOn: $wrapLines) - Toggle("Inset Edges", isOn: $enableEdgeInsets) - } - Divider() - SwiftUITextView( + SwiftUITextView( + text: document.text, + wrapLines: $wrapLines, + enableEdgeInsets: $enableEdgeInsets, + useSystemCursor: $useSystemCursor, + isSelectable: $isSelectable, + isEditable: $isEditable + ) + .padding(.bottom, 28) + .overlay(alignment: .bottom) { + StatusBar( text: document.text, wrapLines: $wrapLines, - enableEdgeInsets: $enableEdgeInsets + enableEdgeInsets: $enableEdgeInsets, + useSystemCursor: $useSystemCursor, + isSelectable: $isSelectable, + isEditable: $isEditable ) } } diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/StatusBar.swift b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/StatusBar.swift new file mode 100644 index 000000000..211254072 --- /dev/null +++ b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/StatusBar.swift @@ -0,0 +1,63 @@ +// +// StatusBar.swift +// CodeEditTextViewExample +// +// Created by Austin Condiff on 6/3/25. +// + +import SwiftUI + +struct StatusBar: View { + @Environment(\.colorScheme) + var colorScheme + + var text: NSTextStorage + + @Binding var wrapLines: Bool + @Binding var enableEdgeInsets: Bool + @Binding var useSystemCursor: Bool + @Binding var isSelectable: Bool + @Binding var isEditable: Bool + + var body: some View { + HStack { + Menu { + Toggle("Wrap Lines", isOn: $wrapLines) + Toggle("Inset Edges", isOn: $enableEdgeInsets) + Toggle("Use System Cursor", isOn: $useSystemCursor) + Toggle("Selectable", isOn: $isSelectable) + Toggle("Editable", isOn: $isEditable) + } label: {} + .background { + Image(systemName: "switch.2") + .foregroundStyle(.secondary) + .font(.system(size: 13.5, weight: .regular)) + } + .menuStyle(.borderlessButton) + .menuIndicator(.hidden) + .frame(maxWidth: 18, alignment: .center) + Spacer() + Group { + Text("\(text.length) characters") + } + .foregroundStyle(.secondary) + } + .font(.subheadline) + .fontWeight(.medium) + .controlSize(.small) + .padding(.horizontal, 8) + .frame(height: 28) + .background(.bar) + .overlay(alignment: .top) { + VStack { + Divider() + .overlay { + if colorScheme == .dark { + Color.black + } + } + } + } + .zIndex(2) + } +} diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/SwiftUITextView.swift b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/SwiftUITextView.swift index 1bb836239..693826a39 100644 --- a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/SwiftUITextView.swift +++ b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/SwiftUITextView.swift @@ -13,17 +13,26 @@ struct SwiftUITextView: NSViewControllerRepresentable { var text: NSTextStorage @Binding var wrapLines: Bool @Binding var enableEdgeInsets: Bool + @Binding var useSystemCursor: Bool + @Binding var isSelectable: Bool + @Binding var isEditable: Bool func makeNSViewController(context: Context) -> TextViewController { let controller = TextViewController(string: "") controller.textView.setTextStorage(text) controller.wrapLines = wrapLines controller.enableEdgeInsets = enableEdgeInsets + controller.useSystemCursor = useSystemCursor + controller.isSelectable = isSelectable + controller.isEditable = isEditable return controller } func updateNSViewController(_ nsViewController: TextViewController, context: Context) { nsViewController.wrapLines = wrapLines nsViewController.enableEdgeInsets = enableEdgeInsets + nsViewController.useSystemCursor = useSystemCursor + nsViewController.isSelectable = isSelectable + nsViewController.isEditable = isEditable } } diff --git a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/TextViewController.swift b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/TextViewController.swift index a880d9731..a37704c8c 100644 --- a/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/TextViewController.swift +++ b/Example/CodeEditTextViewExample/CodeEditTextViewExample/Views/TextViewController.swift @@ -27,6 +27,25 @@ class TextViewController: NSViewController { textView.wrapLines = wrapLines } } + var useSystemCursor: Bool = false { + didSet { + textView.useSystemCursor = useSystemCursor + // Force cursor update by temporarily removing and re-adding the selection + if let range = textView.selectionManager.textSelections.first?.range { + textView.selectionManager.setSelectedRange(NSRange(location: range.location, length: 0)) + } + } + } + var isSelectable: Bool = true { + didSet { + textView.isSelectable = isSelectable + } + } + var isEditable: Bool = true { + didSet { + textView.isEditable = isEditable + } + } init(string: String) { textView = TextView(string: string) From e399f8c4a2e8c85645bf168942e6626a8e0c1d56 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Wed, 11 Jun 2025 13:57:34 -0500 Subject: [PATCH 25/42] Increase Git's HTTP Post Buffer Size (fix Docs CI) --- .github/workflows/build-documentation.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-documentation.yml b/.github/workflows/build-documentation.yml index 63756f779..fdcd1c077 100644 --- a/.github/workflows/build-documentation.yml +++ b/.github/workflows/build-documentation.yml @@ -14,6 +14,7 @@ jobs: run: | cd docs git init + git config http.postBuffer 524288000 git add -A git config --local user.email "action@github.com" git config --local user.name "GitHub Action" From 9eb70fcd14eed804120834cf50ae75fcbe8b0e2f Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Wed, 11 Jun 2025 13:58:02 -0500 Subject: [PATCH 26/42] Fix Broken Tests Badge --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 3c8ee6009..8e3a36d94 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,7 @@ A text editor specialized for displaying and editing code documents. Features include basic text editing, extremely fast initial layout, support for handling large documents, customization options for code documents. ![GitHub release](https://img.shields.io/github/v/release/CodeEditApp/CodeEditTextView?color=orange&label=latest%20release&sort=semver&style=flat-square) -![Github Tests](https://img.shields.io/github/actions/workflow/status/CodeEditApp/CodeEditTextView/tests.yml?branch=main&label=tests&style=flat-square) -![Documentation](https://img.shields.io/github/actions/workflow/status/CodeEditApp/CodeEditTextView/build-documentation.yml?branch=main&label=docs&style=flat-square) +![Github Tests](https://img.shields.io/github/actions/workflow/status/CodeEditApp/CodeEditTextView/CI-push.yml?branch=main&label=tests&style=flat-square) ![GitHub Repo stars](https://img.shields.io/github/stars/CodeEditApp/CodeEditTextView?style=flat-square) ![GitHub forks](https://img.shields.io/github/forks/CodeEditApp/CodeEditTextView?style=flat-square) [![Discord Badge](https://img.shields.io/discord/951544472238444645?color=5865F2&label=Discord&logo=discord&logoColor=white&style=flat-square)](https://discord.gg/vChUXVf9Em) From c045ffcf4d8b2904e7bd138cdeccda99cba3ab3c Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Fri, 13 Jun 2025 11:00:59 -0500 Subject: [PATCH 27/42] Draw Invisible Characters From Configuration (#103) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Description Adds the ability for developers to pass in an object to determine invisible character drawing. This is intentionally not doing the character matching and replacement styling in this package. To achieve the flexibility we want, I've raised that to the level of the source editor which can for instance determine if we want to draw a dot with larger emphasis because it's on a tab stop. #### Detailed changes: - Moved all line fragment drawing to a new object `LineFragmentRenderer`. Line fragments were increasingly requiring more and more objects to be passed to them. This object centralizes those dependencies into one object. - Adds a new `InvisibleCharactersDelegate` protocol for API consumers to conform to. Consumers can provide a set of characters to match on, and a method to provide a 'style' to draw them with. - Makes a slight adjustment to how cursors and line fragment views are added to the view hierarchy. - Cursors are now placed at the top of the subview stack, ensuring they're always on top of the content. - Line fragments are now placed on the bottom of the subview stack, ensuring they're always drawn under cursors. ### Related Issues * #22 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots Fleshed out example with CESE replacing tabs with arrows, spaces with dots, emphasizing a zero-width space (​), and replacing newlines with the (¬) character. ![Screenshot 2025-06-10 at 10 55 04 AM](https://github.com/user-attachments/assets/409e0cd0-5eb5-4f1d-8755-5a1a222d0169) --- .../InvisibleCharactersDelegate.swift | 20 ++ .../TextLayoutManager+Layout.swift | 4 +- .../TextLayoutManager/TextLayoutManager.swift | 18 +- .../TextLine/LineFragment.swift | 49 +-- .../TextLine/LineFragmentRenderer.swift | 290 ++++++++++++++++++ .../TextLine/LineFragmentView.swift | 6 +- .../TextLine/Typesetter/TypesetContext.swift | 1 + .../TextLine/Typesetter/Typesetter.swift | 1 + .../TextSelectionManager.swift | 2 +- .../TextView/DraggingTextRenderer.swift | 6 +- 10 files changed, 344 insertions(+), 53 deletions(-) create mode 100644 Sources/CodeEditTextView/InvisibleCharacters/InvisibleCharactersDelegate.swift create mode 100644 Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift diff --git a/Sources/CodeEditTextView/InvisibleCharacters/InvisibleCharactersDelegate.swift b/Sources/CodeEditTextView/InvisibleCharacters/InvisibleCharactersDelegate.swift new file mode 100644 index 000000000..9b7fa9d75 --- /dev/null +++ b/Sources/CodeEditTextView/InvisibleCharacters/InvisibleCharactersDelegate.swift @@ -0,0 +1,20 @@ +// +// InvisibleCharactersConfig.swift +// CodeEditTextView +// +// Created by Khan Winter on 6/9/25. +// + +import Foundation +import AppKit + +public enum InvisibleCharacterStyle: Hashable { + case replace(replacementCharacter: String, color: NSColor, font: NSFont) + case emphasize(color: NSColor) +} + +public protocol InvisibleCharactersDelegate: AnyObject { + var triggerCharacters: Set { get } + func invisibleStyleShouldClearCache() -> Bool + func invisibleStyle(for character: UInt16, at range: NSRange, lineRange: NSRange) -> InvisibleCharacterStyle? +} diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift index 042622830..d7732e37c 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift @@ -251,9 +251,9 @@ extension TextLayoutManager { renderDelegate?.lineFragmentView(for: lineFragment.data) ?? LineFragmentView() } view.translatesAutoresizingMaskIntoConstraints = false - view.setLineFragment(lineFragment.data) + view.setLineFragment(lineFragment.data, renderer: lineFragmentRenderer) view.frame.origin = CGPoint(x: edgeInsets.left, y: yPos) - layoutView?.addSubview(view) + layoutView?.addSubview(view, positioned: .below, relativeTo: nil) view.needsDisplay = true } } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift index 84195b00c..0985f53d7 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift @@ -66,12 +66,21 @@ public class TextLayoutManager: NSObject { public let attachments: TextAttachmentManager = TextAttachmentManager() + public weak var invisibleCharacterDelegate: InvisibleCharactersDelegate? { + didSet { + lineFragmentRenderer.invisibleCharacterDelegate = invisibleCharacterDelegate + layoutView?.needsDisplay = true + } + } + // MARK: - Internal weak var textStorage: NSTextStorage? var lineStorage: TextLineStorage = TextLineStorage() var markedTextManager: MarkedTextManager = MarkedTextManager() let viewReuseQueue: ViewReuseQueue = ViewReuseQueue() + let lineFragmentRenderer: LineFragmentRenderer + package var visibleLineIds: Set = [] /// Used to force a complete re-layout using `setNeedsLayout` package var needsLayout: Bool = false @@ -122,7 +131,8 @@ public class TextLayoutManager: NSObject { wrapLines: Bool, textView: NSView, delegate: TextLayoutManagerDelegate?, - renderDelegate: TextLayoutManagerRenderDelegate? = nil + renderDelegate: TextLayoutManagerRenderDelegate? = nil, + invisibleCharacterDelegate: InvisibleCharactersDelegate? = nil ) { self.textStorage = textStorage self.lineHeightMultiplier = lineHeightMultiplier @@ -130,6 +140,11 @@ public class TextLayoutManager: NSObject { self.layoutView = textView self.delegate = delegate self.renderDelegate = renderDelegate + self.lineFragmentRenderer = LineFragmentRenderer( + textStorage: textStorage, + invisibleCharacterDelegate: invisibleCharacterDelegate + ) + self.invisibleCharacterDelegate = invisibleCharacterDelegate super.init() prepareTextLines() attachments.layoutManager = self @@ -166,6 +181,7 @@ public class TextLayoutManager: NSObject { viewReuseQueue.usedViews.removeAll() maxLineWidth = 0 markedTextManager.removeAll() + lineFragmentRenderer.textStorage = textStorage prepareTextLines() setNeedsLayout() } diff --git a/Sources/CodeEditTextView/TextLine/LineFragment.swift b/Sources/CodeEditTextView/TextLine/LineFragment.swift index 1c777bcf5..6671fb8ef 100644 --- a/Sources/CodeEditTextView/TextLine/LineFragment.swift +++ b/Sources/CodeEditTextView/TextLine/LineFragment.swift @@ -47,6 +47,7 @@ public final class LineFragment: Identifiable, Equatable { } public let id = UUID() + public let lineRange: NSRange public let documentRange: NSRange public var contents: [FragmentContent] public var width: CGFloat @@ -60,6 +61,7 @@ public final class LineFragment: Identifiable, Equatable { } init( + lineRange: NSRange, documentRange: NSRange, contents: [FragmentContent], width: CGFloat, @@ -67,6 +69,7 @@ public final class LineFragment: Identifiable, Equatable { descent: CGFloat, lineHeightMultiplier: CGFloat ) { + self.lineRange = lineRange self.documentRange = documentRange self.contents = contents self.width = width @@ -102,52 +105,6 @@ public final class LineFragment: Identifiable, Equatable { } } - public func draw(in context: CGContext, yPos: CGFloat) { - context.saveGState() - - // Removes jagged edges - context.setAllowsAntialiasing(true) - context.setShouldAntialias(true) - - // Effectively increases the screen resolution by drawing text in each LED color pixel (R, G, or B), rather than - // the triplet of pixels (RGB) for a regular pixel. This can increase text clarity, but loses effectiveness - // in low-contrast settings. - context.setAllowsFontSubpixelPositioning(true) - context.setShouldSubpixelPositionFonts(true) - - // Quantizes the position of each glyph, resulting in slightly less accurate positioning, and gaining higher - // quality bitmaps and performance. - context.setAllowsFontSubpixelQuantization(true) - context.setShouldSubpixelQuantizeFonts(true) - - ContextSetHiddenSmoothingStyle(context, 16) - - context.textMatrix = .init(scaleX: 1, y: -1) - - var currentPosition: CGFloat = 0.0 - var currentLocation = 0 - for content in contents { - context.saveGState() - switch content.data { - case .text(let ctLine): - context.textPosition = CGPoint( - x: currentPosition, - y: yPos + height - descent + (heightDifference/2) - ).pixelAligned - CTLineDraw(ctLine, context) - case .attachment(let attachment): - attachment.attachment.draw( - in: context, - rect: NSRect(x: currentPosition, y: yPos, width: attachment.width, height: scaledHeight) - ) - } - context.restoreGState() - currentPosition += content.width - currentLocation += content.length - } - context.restoreGState() - } - package func findContent(at location: Int) -> (content: FragmentContent, position: ContentPosition)? { var position = ContentPosition(xPos: 0, offset: 0) diff --git a/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift b/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift new file mode 100644 index 000000000..5225123d8 --- /dev/null +++ b/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift @@ -0,0 +1,290 @@ +// +// LineFragmentRenderer.swift +// CodeEditTextView +// +// Created by Khan Winter on 6/10/25. +// + +import AppKit +import CodeEditTextViewObjC + +/// Manages drawing line fragments into a drawing context. +public final class LineFragmentRenderer { + private struct CacheKey: Hashable { + let string: String + let font: NSFont + let color: NSColor + } + + private struct InvisibleDrawingContext { + let lineFragment: LineFragment + let ctLine: CTLine + let contentOffset: Int + let position: CGPoint + let context: CGContext + } + + weak var textStorage: NSTextStorage? + weak var invisibleCharacterDelegate: InvisibleCharactersDelegate? + private var attributedStringCache: [CacheKey: CTLine] = [:] + + /// Create a fragment renderer. + /// - Parameters: + /// - textStorage: The text storage backing the fragments being drawn. + /// - invisibleCharacterDelegate: A delegate object to interrogate for invisible character drawing. + public init(textStorage: NSTextStorage?, invisibleCharacterDelegate: InvisibleCharactersDelegate?) { + self.textStorage = textStorage + self.invisibleCharacterDelegate = invisibleCharacterDelegate + } + + /// Draw the given line fragment into a drawing context, using the invisible character configuration determined + /// from the ``invisibleCharacterDelegate``, and line fragment information from the passed ``LineFragment`` object. + /// - Parameters: + /// - lineFragment: The line fragment to drawn + /// - context: The drawing context to draw into. + /// - yPos: In the drawing context, what `y` position to start drawing at. + public func draw(lineFragment: LineFragment, in context: CGContext, yPos: CGFloat) { + if invisibleCharacterDelegate?.invisibleStyleShouldClearCache() == true { + attributedStringCache.removeAll(keepingCapacity: true) + } + + context.saveGState() + // Removes jagged edges + context.setAllowsAntialiasing(true) + context.setShouldAntialias(true) + + // Effectively increases the screen resolution by drawing text in each LED color pixel (R, G, or B), rather than + // the triplet of pixels (RGB) for a regular pixel. This can increase text clarity, but loses effectiveness + // in low-contrast settings. + context.setAllowsFontSubpixelPositioning(true) + context.setShouldSubpixelPositionFonts(true) + + // Quantizes the position of each glyph, resulting in slightly less accurate positioning, and gaining higher + // quality bitmaps and performance. + context.setAllowsFontSubpixelQuantization(true) + context.setShouldSubpixelQuantizeFonts(true) + + ContextSetHiddenSmoothingStyle(context, 16) + + context.textMatrix = .init(scaleX: 1, y: -1) + + var currentPosition: CGFloat = 0.0 + var currentLocation = 0 + for content in lineFragment.contents { + context.saveGState() + switch content.data { + case .text(let ctLine): + context.textPosition = CGPoint( + x: currentPosition, + y: yPos + lineFragment.height - lineFragment.descent + (lineFragment.heightDifference/2) + ).pixelAligned + CTLineDraw(ctLine, context) + + drawInvisibles( + lineFragment: lineFragment, + for: ctLine, + contentOffset: currentLocation, + position: CGPoint(x: currentPosition, y: yPos), + in: context + ) + case .attachment(let attachment): + attachment.attachment.draw( + in: context, + rect: NSRect( + x: currentPosition, + y: yPos, + width: attachment.width, + height: lineFragment.scaledHeight + ) + ) + } + context.restoreGState() + currentPosition += content.width + currentLocation += content.length + } + context.restoreGState() + } + + private func drawInvisibles( + lineFragment: LineFragment, + for ctLine: CTLine, + contentOffset: Int, + position: CGPoint, + in context: CGContext + ) { + guard let textStorage, let invisibleCharacterDelegate else { return } + + let drawingContext = InvisibleDrawingContext( + lineFragment: lineFragment, + ctLine: ctLine, + contentOffset: contentOffset, + position: position, + context: context + ) + + let range = createTextRange(for: drawingContext) + let string = (textStorage.string as NSString).substring(with: range) + + processInvisibleCharacters( + in: string, + range: range, + delegate: invisibleCharacterDelegate, + drawingContext: drawingContext + ) + } + + private func createTextRange(for drawingContext: InvisibleDrawingContext) -> NSRange { + return NSRange( + start: drawingContext.lineFragment.documentRange.location + drawingContext.contentOffset, + end: drawingContext.lineFragment.documentRange.max + ) + } + + private func processInvisibleCharacters( + in string: String, + range: NSRange, + delegate: InvisibleCharactersDelegate, + drawingContext: InvisibleDrawingContext + ) { + drawingContext.context.saveGState() + defer { drawingContext.context.restoreGState() } + + lazy var offset = CTLineGetStringRange(drawingContext.ctLine).location + + for (idx, character) in string.utf16.enumerated() + where delegate.triggerCharacters.contains(character) { + processInvisibleCharacter( + character: character, + at: idx, + in: range, + offset: offset, + delegate: delegate, + drawingContext: drawingContext + ) + } + } + + // Disabling the next lint warning because I *cannot* figure out how to split this up further. + + private func processInvisibleCharacter( // swiftlint:disable:this function_parameter_count + character: UInt16, + at index: Int, + in range: NSRange, + offset: Int, + delegate: InvisibleCharactersDelegate, + drawingContext: InvisibleDrawingContext + ) { + guard let style = delegate.invisibleStyle( + for: character, + at: NSRange(start: range.location + index, end: range.max), + lineRange: drawingContext.lineFragment.lineRange + ) else { + return + } + + let xOffset = CTLineGetOffsetForStringIndex(drawingContext.ctLine, offset + index, nil) + + switch style { + case let .replace(replacementCharacter, color, font): + drawReplacementCharacter( + replacementCharacter, + color: color, + font: font, + at: calculateReplacementPosition( + basePosition: drawingContext.position, + xOffset: xOffset, + lineFragment: drawingContext.lineFragment + ), + in: drawingContext.context + ) + case let .emphasize(color): + let emphasizeRect = calculateEmphasisRect( + basePosition: drawingContext.position, + xOffset: xOffset, + characterIndex: index, + offset: offset, + drawingContext: drawingContext + ) + + drawEmphasis( + color: color, + forRect: emphasizeRect, + in: drawingContext.context + ) + } + } + + private func calculateReplacementPosition( + basePosition: CGPoint, + xOffset: CGFloat, + lineFragment: LineFragment + ) -> CGPoint { + return CGPoint( + x: basePosition.x + xOffset, + y: basePosition.y + lineFragment.height - lineFragment.descent + (lineFragment.heightDifference/2) + ) + } + + private func calculateEmphasisRect( + basePosition: CGPoint, + xOffset: CGFloat, + characterIndex: Int, + offset: Int, + drawingContext: InvisibleDrawingContext + ) -> NSRect { + let xEndOffset = if offset + characterIndex + 1 == drawingContext.lineFragment.documentRange.length { + drawingContext.lineFragment.width + } else { + CTLineGetOffsetForStringIndex(drawingContext.ctLine, offset + characterIndex + 1, nil) + } + + return NSRect( + x: basePosition.x + xOffset, + y: basePosition.y, + width: xEndOffset - xOffset, + height: drawingContext.lineFragment.scaledHeight + ) + } + + private func drawReplacementCharacter( + _ replacementCharacter: String, + color: NSColor, + font: NSFont, + at position: CGPoint, + in context: CGContext + ) { + let cacheKey = CacheKey(string: replacementCharacter, font: font, color: color) + let ctLine: CTLine + if let cachedValue = attributedStringCache[cacheKey] { + ctLine = cachedValue + } else { + let attrString = NSAttributedString(string: replacementCharacter, attributes: [ + .font: font, + .foregroundColor: color + ]) + ctLine = CTLineCreateWithAttributedString(attrString) + attributedStringCache[cacheKey] = ctLine + } + context.textPosition = position + CTLineDraw(ctLine, context) + } + + private func drawEmphasis( + color: NSColor, + forRect: NSRect, + in context: CGContext + ) { + context.setFillColor(color.cgColor) + + let rect: CGRect + + if forRect.width == 0 { + // Zero-width character, add padding + rect = CGRect(x: forRect.origin.x - 2, y: forRect.origin.y, width: 4, height: forRect.height) + } else { + rect = forRect + } + + context.fill(rect) + } +} diff --git a/Sources/CodeEditTextView/TextLine/LineFragmentView.swift b/Sources/CodeEditTextView/TextLine/LineFragmentView.swift index 89b9141dc..58a793306 100644 --- a/Sources/CodeEditTextView/TextLine/LineFragmentView.swift +++ b/Sources/CodeEditTextView/TextLine/LineFragmentView.swift @@ -10,6 +10,7 @@ import AppKit /// Displays a line fragment. open class LineFragmentView: NSView { public weak var lineFragment: LineFragment? + public weak var renderer: LineFragmentRenderer? open override var isFlipped: Bool { true @@ -29,8 +30,9 @@ open class LineFragmentView: NSView { /// Set a new line fragment for this view, updating view size. /// - Parameter newFragment: The new fragment to use. - open func setLineFragment(_ newFragment: LineFragment) { + open func setLineFragment(_ newFragment: LineFragment, renderer: LineFragmentRenderer) { self.lineFragment = newFragment + self.renderer = renderer self.frame.size = CGSize(width: newFragment.width, height: newFragment.scaledHeight) } @@ -40,6 +42,6 @@ open class LineFragmentView: NSView { return } - lineFragment.draw(in: context, yPos: 0.0) + renderer?.draw(lineFragment: lineFragment, in: context, yPos: 0.0) } } diff --git a/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift b/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift index 9f0f713d9..e74af78a9 100644 --- a/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift +++ b/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift @@ -61,6 +61,7 @@ struct TypesetContext { /// Pop the current fragment state into a new line fragment, and reset the fragment state. mutating func popCurrentData() { let fragment = LineFragment( + lineRange: documentRange, documentRange: NSRange( location: fragmentContext.start + documentRange.location, length: currentPosition - fragmentContext.start diff --git a/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift b/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift index 10c6d244e..2bebfb69d 100644 --- a/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift +++ b/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift @@ -230,6 +230,7 @@ final public class Typesetter { // Insert an empty fragment let ctLine = CTTypesetterCreateLine(typesetter, CFRangeMake(0, 0)) let fragment = LineFragment( + lineRange: documentRange ?? .zero, documentRange: NSRange(location: (documentRange ?? .notFound).location, length: 0), contents: [.init(data: .text(line: ctLine), width: 0.0)], width: 0, diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift index 28e8801a2..deff69375 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift @@ -179,7 +179,7 @@ public class TextSelectionManager: NSObject { cursorTimer.register(internalCursorView) } - textView?.addSubview(cursorView) + textView?.addSubview(cursorView, positioned: .above, relativeTo: nil) } cursorView.frame.origin = cursorRect.origin diff --git a/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift b/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift index b8680f443..966b83b8d 100644 --- a/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift +++ b/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift @@ -70,13 +70,17 @@ class DraggingTextRenderer: NSView { yOffset: CGFloat, context: CGContext ) { + let renderer = LineFragmentRenderer( + textStorage: layoutManager.textStorage, + invisibleCharacterDelegate: layoutManager.invisibleCharacterDelegate + ) for fragment in line.data.lineFragments { guard let fragmentRange = fragment.range.shifted(by: line.range.location), fragmentRange.intersection(selectedRange) != nil else { continue } let fragmentYPos = line.yPos + fragment.yPos - yOffset - fragment.data.draw(in: context, yPos: fragmentYPos) + renderer.draw(lineFragment: fragment.data, in: context, yPos: fragmentYPos) // Clear text that's not selected if fragmentRange.contains(selectedRange.lowerBound) { From 2508635e9aa554e246d2185ea2d065d4a54af597 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Wed, 18 Jun 2025 10:38:14 -0500 Subject: [PATCH 28/42] Merge Trailing Line on Attachments, Select Attachments (#98) ### Description Fixes a bug with text attachments that ended on the newline character in a line. Eg: ``` A B ``` Text attachment added for range (0..<2) should result in: ``` [Attachment]B ``` Right now it results in the following visible lines. ``` [Attachment]B ``` Also introduces the ability for text attachments to respond to being selected and draw their contents differently. ### Related Issues * https://github.com/CodeEditApp/CodeEditSourceEditor/issues/43 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots With new behavior: https://github.com/user-attachments/assets/3cf665ab-1a9a-4de0-a835-9248d955ab5a --- .../TextAttachments/TextAttachment.swift | 5 +- .../TextAttachmentManager.swift | 61 ++++++++++++++++++- .../TextLayoutManager+Iterator.swift | 10 ++- .../TextLayoutManager+Layout.swift | 2 +- .../TextLayoutManager+Public.swift | 2 +- .../TextLayoutManager/TextLayoutManager.swift | 2 +- .../TextSelectionManager+FillRects.swift | 9 ++- .../CodeEditTextView/TextView/TextView.swift | 2 + .../TextLayoutManagerAttachmentsTests.swift | 10 +++ .../TypesetterTests.swift | 1 + 10 files changed, 93 insertions(+), 11 deletions(-) diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift index 61ca777f2..f3bc01209 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift @@ -10,6 +10,7 @@ import AppKit /// Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view. public protocol TextAttachment: AnyObject { var width: CGFloat { get } + var isSelected: Bool { get set } func draw(in context: CGContext, rect: NSRect) } @@ -18,8 +19,8 @@ public protocol TextAttachment: AnyObject { /// This type cannot be initialized outside of `CodeEditTextView`, but will be received when interrogating /// the ``TextAttachmentManager``. public struct AnyTextAttachment: Equatable { - var range: NSRange - let attachment: any TextAttachment + package(set) public var range: NSRange + public let attachment: any TextAttachment var width: CGFloat { attachment.width diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift index 5bad2de1e..dfa561d84 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift @@ -15,6 +15,7 @@ import Foundation public final class TextAttachmentManager { private var orderedAttachments: [AnyTextAttachment] = [] weak var layoutManager: TextLayoutManager? + private var selectionObserver: (any NSObjectProtocol)? /// Adds a new attachment, keeping `orderedAttachments` sorted by range.location. /// If two attachments overlap, the layout phase will later ignore the one with the higher start. @@ -23,11 +24,28 @@ public final class TextAttachmentManager { let attachment = AnyTextAttachment(range: range, attachment: attachment) let insertIndex = findInsertionIndex(for: range.location) orderedAttachments.insert(attachment, at: insertIndex) + + // This is ugly, but if our attachment meets the end of the next line, we need to merge that line with this + // one. + var getNextOne = false layoutManager?.lineStorage.linesInRange(range).dropFirst().forEach { if $0.height != 0 { layoutManager?.lineStorage.update(atOffset: $0.range.location, delta: 0, deltaHeight: -$0.height) } + + // Only do this if it's not the end of the document + if range.max == $0.range.max && range.max != layoutManager?.lineStorage.length { + getNextOne = true + } + } + + if getNextOne, + let trailingLine = layoutManager?.lineStorage.getLine(atOffset: range.max), + trailingLine.height != 0 { + // Update the one trailing line. + layoutManager?.lineStorage.update(atOffset: range.max, delta: 0, deltaHeight: -trailingLine.height) } + layoutManager?.setNeedsLayout() } @@ -77,7 +95,7 @@ public final class TextAttachmentManager { /// - Returns: An array of `AnyTextAttachment` instances whose ranges intersect `query`. public func getAttachmentsOverlapping(_ range: NSRange) -> [AnyTextAttachment] { // Find the first attachment whose end is beyond the start of the query. - guard let startIdx = firstIndex(where: { $0.range.upperBound > range.location }) else { + guard let startIdx = firstIndex(where: { $0.range.upperBound >= range.location }) else { return [] } @@ -90,8 +108,8 @@ public final class TextAttachmentManager { if attachment.range.location >= range.upperBound { break } - if attachment.range.intersection(range)?.length ?? 0 > 0, - results.last?.range != attachment.range { + if (attachment.range.intersection(range)?.length ?? 0 > 0 || attachment.range.max == range.location) + && results.last?.range != attachment.range { results.append(attachment) } idx += 1 @@ -114,6 +132,43 @@ public final class TextAttachmentManager { } } } + + /// Set up the attachment manager to listen to selection updates, giving text attachments a chance to respond to + /// selection state. + /// + /// This is specifically not in the initializer to prevent a bit of a chicken-and-the-egg situation where the + /// layout manager and selection manager need each other to init. + /// + /// - Parameter selectionManager: The selection manager to listen to. + func setUpSelectionListener(for selectionManager: TextSelectionManager) { + if let selectionObserver { + NotificationCenter.default.removeObserver(selectionObserver) + } + + selectionObserver = NotificationCenter.default.addObserver( + forName: TextSelectionManager.selectionChangedNotification, + object: selectionManager, + queue: .main + ) { [weak self] notification in + guard let selectionManager = notification.object as? TextSelectionManager else { + return + } + let selectedSet = IndexSet(ranges: selectionManager.textSelections.map({ $0.range })) + for attachment in self?.orderedAttachments ?? [] { + let isSelected = selectedSet.contains(integersIn: attachment.range) + if attachment.attachment.isSelected != isSelected { + self?.layoutManager?.invalidateLayoutForRange(attachment.range) + } + attachment.attachment.isSelected = isSelected + } + } + } + + deinit { + if let selectionObserver { + NotificationCenter.default.removeObserver(selectionObserver) + } + } } private extension TextAttachmentManager { diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift index 4e5efede5..ba0a997ed 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift @@ -196,7 +196,7 @@ public extension TextLayoutManager { } if lastAttachment.range.max > originalPosition.position.range.max, - let extendedLinePosition = lineStorage.getLine(atOffset: lastAttachment.range.max) { + var extendedLinePosition = lineStorage.getLine(atOffset: lastAttachment.range.max) { newPosition = TextLineStorage.TextLinePosition( data: newPosition.data, range: NSRange(start: newPosition.range.location, end: extendedLinePosition.range.max), @@ -207,6 +207,14 @@ public extension TextLayoutManager { maxIndex = max(maxIndex, extendedLinePosition.index) } + if firstAttachment.range.location == newPosition.range.location { + minIndex = max(minIndex, 0) + } + + if lastAttachment.range.max == newPosition.range.max { + maxIndex = min(maxIndex, lineStorage.count - 1) + } + // Base case, we haven't updated anything if minIndex...maxIndex == originalPosition.indexRange { return (newPosition, minIndex...maxIndex) diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift index d7732e37c..074d8fcef 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift @@ -250,7 +250,7 @@ extension TextLayoutManager { let view = viewReuseQueue.getOrCreateView(forKey: lineFragment.data.id) { renderDelegate?.lineFragmentView(for: lineFragment.data) ?? LineFragmentView() } - view.translatesAutoresizingMaskIntoConstraints = false + view.translatesAutoresizingMaskIntoConstraints = true // Small optimization for lots of subviews view.setLineFragment(lineFragment.data, renderer: lineFragmentRenderer) view.frame.origin = CGPoint(x: edgeInsets.left, y: yPos) layoutView?.addSubview(view, positioned: .below, relativeTo: nil) diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift index 6a1a4df61..bca881d05 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift @@ -203,7 +203,7 @@ extension TextLayoutManager { /// - line: The line to calculate rects for. /// - Returns: Multiple bounding rects. Will return one rect for each line fragment that overlaps the given range. public func rectsFor(range: NSRange) -> [CGRect] { - return lineStorage.linesInRange(range).flatMap { self.rectsFor(range: range, in: $0) } + return linesInRange(range).flatMap { self.rectsFor(range: range, in: $0) } } /// Calculates all text bounding rects that intersect with a given range, with a given line position. diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift index 0985f53d7..503c334c7 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift @@ -76,7 +76,7 @@ public class TextLayoutManager: NSObject { // MARK: - Internal weak var textStorage: NSTextStorage? - var lineStorage: TextLineStorage = TextLineStorage() + public var lineStorage: TextLineStorage = TextLineStorage() var markedTextManager: MarkedTextManager = MarkedTextManager() let viewReuseQueue: ViewReuseQueue = ViewReuseQueue() let lineFragmentRenderer: LineFragmentRenderer diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift index da5165f32..f3160bf3e 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift @@ -72,10 +72,15 @@ extension TextSelectionManager { } let maxRect: CGRect + let endOfLine = fragmentRange.max <= range.max || range.contains(fragmentRange.max) + let endOfDocument = intersectionRange.max == layoutManager.lineStorage.length + let emptyLine = linePosition.range.isEmpty + // If the selection is at the end of the line, or contains the end of the fragment, and is not the end // of the document, we select the entire line to the right of the selection point. - if (fragmentRange.max <= range.max || range.contains(fragmentRange.max)) - && intersectionRange.max != layoutManager.lineStorage.length { + // true, !true = false, false + // true, !true = false, true + if endOfLine && !(endOfDocument && !emptyLine) { maxRect = CGRect( x: rect.maxX, y: fragmentPosition.yPos + linePosition.yPos, diff --git a/Sources/CodeEditTextView/TextView/TextView.swift b/Sources/CodeEditTextView/TextView/TextView.swift index 4c9cf7c31..873694591 100644 --- a/Sources/CodeEditTextView/TextView/TextView.swift +++ b/Sources/CodeEditTextView/TextView/TextView.swift @@ -346,6 +346,8 @@ public class TextView: NSView, NSTextContent { selectionManager = setUpSelectionManager() selectionManager.useSystemCursor = useSystemCursor + layoutManager.attachments.setUpSelectionListener(for: selectionManager) + _undoManager = CEUndoManager(textView: self) layoutManager.layoutLines() diff --git a/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerAttachmentsTests.swift b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerAttachmentsTests.swift index a3510c608..1841cc5ed 100644 --- a/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerAttachmentsTests.swift +++ b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerAttachmentsTests.swift @@ -108,4 +108,14 @@ struct TextLayoutManagerAttachmentsTests { // Line "5" is from the trailing newline. That shows up as an empty line in the view. #expect(lines.map { $0.index } == [0, 4]) } + + @Test + func addingAttachmentThatMeetsEndOfLineMergesNextLine() throws { + let height = try #require(layoutManager.textLineForOffset(0)).height + layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 0, end: 3)) + + // With bug: the line for offset 3 would be the 2nd line (index 1). They should be merged + #expect(layoutManager.textLineForOffset(0)?.index == 0) + #expect(layoutManager.textLineForOffset(3)?.index == 0) + } } diff --git a/Tests/CodeEditTextViewTests/TypesetterTests.swift b/Tests/CodeEditTextViewTests/TypesetterTests.swift index e065cb69c..d671ea6ff 100644 --- a/Tests/CodeEditTextViewTests/TypesetterTests.swift +++ b/Tests/CodeEditTextViewTests/TypesetterTests.swift @@ -3,6 +3,7 @@ import XCTest final class DemoTextAttachment: TextAttachment { var width: CGFloat + var isSelected: Bool = false init(width: CGFloat = 100) { self.width = width From c127b47ccf4224e261c09a03271f4013ddaf3896 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Wed, 18 Jun 2025 10:38:41 -0500 Subject: [PATCH 29/42] NSBeep On Empty Undo, Remove Unnecessary Redirection (#102) ### Description - When the undo or redo stack is empty, and the user tries to undo or redo, plays the beep sound. - Removes the (now) unnecessary `DelegatedUndoManager` type that sent messages to the `CEUndoManager` type. This was a holdover from when we did not have a custom text view. - Made `CEUndoManager` a subclass of `UndoManager` - Added more overrides to more correctly conform to the `UndoManager` class. ### Related Issues * closes #89 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots --- .../TextView/TextView+UndoRedo.swift | 2 +- .../Utils/CEUndoManager.swift | 110 +++++++----------- .../CodeEditTextViewTests/TextViewTests.swift | 14 +++ 3 files changed, 59 insertions(+), 67 deletions(-) diff --git a/Sources/CodeEditTextView/TextView/TextView+UndoRedo.swift b/Sources/CodeEditTextView/TextView/TextView+UndoRedo.swift index a12f1d830..14d803fba 100644 --- a/Sources/CodeEditTextView/TextView/TextView+UndoRedo.swift +++ b/Sources/CodeEditTextView/TextView/TextView+UndoRedo.swift @@ -14,7 +14,7 @@ extension TextView { } override public var undoManager: UndoManager? { - _undoManager?.manager + _undoManager } @objc func undo(_ sender: AnyObject?) { diff --git a/Sources/CodeEditTextView/Utils/CEUndoManager.swift b/Sources/CodeEditTextView/Utils/CEUndoManager.swift index fd800fcf1..bdf859166 100644 --- a/Sources/CodeEditTextView/Utils/CEUndoManager.swift +++ b/Sources/CodeEditTextView/Utils/CEUndoManager.swift @@ -15,45 +15,7 @@ import TextStory /// - Grouping pasted text /// /// If needed, the automatic undo grouping can be overridden using the `beginGrouping()` and `endGrouping()` methods. -public class CEUndoManager { - /// An `UndoManager` subclass that forwards relevant actions to a `CEUndoManager`. - /// Allows for objects like `TextView` to use the `UndoManager` API - /// while CETV manages the undo/redo actions. - public class DelegatedUndoManager: UndoManager { - weak var parent: CEUndoManager? - - public override var isUndoing: Bool { parent?.isUndoing ?? false } - public override var isRedoing: Bool { parent?.isRedoing ?? false } - public override var canUndo: Bool { parent?.canUndo ?? false } - public override var canRedo: Bool { parent?.canRedo ?? false } - - public func registerMutation(_ mutation: TextMutation) { - parent?.registerMutation(mutation) - removeAllActions() - } - - public override func undo() { - parent?.undo() - } - - public override func redo() { - parent?.redo() - } - - public override func beginUndoGrouping() { - parent?.beginUndoGrouping() - } - - public override func endUndoGrouping() { - parent?.endUndoGrouping() - } - - public override func registerUndo(withTarget target: Any, selector: Selector, object anObject: Any?) { - // no-op, but just in case to save resources: - removeAllActions() - } - } - +public class CEUndoManager: UndoManager { /// Represents a group of mutations that should be treated as one mutation when undoing/redoing. private struct UndoGroup { var mutations: [Mutation] @@ -65,16 +27,17 @@ public class CEUndoManager { var inverse: TextMutation } - public let manager: DelegatedUndoManager - private(set) public var isUndoing: Bool = false - private(set) public var isRedoing: Bool = false + private var _isUndoing: Bool = false + private var _isRedoing: Bool = false - public var canUndo: Bool { - !undoStack.isEmpty - } - public var canRedo: Bool { - !redoStack.isEmpty - } + override public var isUndoing: Bool { _isUndoing } + override public var isRedoing: Bool { _isRedoing } + + override public var undoCount: Int { undoStack.count } + override public var redoCount: Int { redoStack.count } + + override public var canUndo: Bool { !undoStack.isEmpty } + override public var canRedo: Bool { !redoStack.isEmpty } /// A stack of operations that can be undone. private var undoStack: [UndoGroup] = [] @@ -93,10 +56,7 @@ public class CEUndoManager { // MARK: - Init - public init() { - self.manager = DelegatedUndoManager() - manager.parent = self - } + override public init() { } convenience init(textView: TextView) { self.init() @@ -106,37 +66,49 @@ public class CEUndoManager { // MARK: - Undo/Redo /// Performs an undo operation if there is one available. - public func undo() { - guard !isDisabled, let item = undoStack.popLast(), let textView else { + override public func undo() { + guard !isDisabled, let textView else { + return + } + + guard let item = undoStack.popLast() else { + NSSound.beep() return } - isUndoing = true - NotificationCenter.default.post(name: .NSUndoManagerWillUndoChange, object: self.manager) + + _isUndoing = true + NotificationCenter.default.post(name: .NSUndoManagerWillUndoChange, object: self) textView.textStorage.beginEditing() for mutation in item.mutations.reversed() { textView.replaceCharacters(in: mutation.inverse.range, with: mutation.inverse.string) } textView.textStorage.endEditing() - NotificationCenter.default.post(name: .NSUndoManagerDidUndoChange, object: self.manager) + NotificationCenter.default.post(name: .NSUndoManagerDidUndoChange, object: self) redoStack.append(item) - isUndoing = false + _isUndoing = false } /// Performs a redo operation if there is one available. - public func redo() { - guard !isDisabled, let item = redoStack.popLast(), let textView else { + override public func redo() { + guard !isDisabled, let textView else { + return + } + + guard let item = redoStack.popLast() else { + NSSound.beep() return } - isRedoing = true - NotificationCenter.default.post(name: .NSUndoManagerWillRedoChange, object: self.manager) + + _isRedoing = true + NotificationCenter.default.post(name: .NSUndoManagerWillRedoChange, object: self) textView.textStorage.beginEditing() for mutation in item.mutations { textView.replaceCharacters(in: mutation.mutation.range, with: mutation.mutation.string) } textView.textStorage.endEditing() - NotificationCenter.default.post(name: .NSUndoManagerDidRedoChange, object: self.manager) + NotificationCenter.default.post(name: .NSUndoManagerDidRedoChange, object: self) undoStack.append(item) - isRedoing = false + _isRedoing = false } /// Clears the undo/redo stacks. @@ -147,11 +119,17 @@ public class CEUndoManager { // MARK: - Mutations + public override func registerUndo(withTarget target: Any, selector: Selector, object anObject: Any?) { + // no-op, but just in case to save resources: + removeAllActions() + } + /// Registers a mutation into the undo stack. /// /// Calling this method while the manager is in an undo/redo operation will result in a no-op. /// - Parameter mutation: The mutation to register for undo/redo public func registerMutation(_ mutation: TextMutation) { + removeAllActions() guard let textView, let textStorage = textView.textStorage, !isUndoing, @@ -178,7 +156,7 @@ public class CEUndoManager { // MARK: - Grouping /// Groups all incoming mutations. - public func beginUndoGrouping() { + override public func beginUndoGrouping() { guard !isGrouping else { return } isGrouping = true // This is a new undo group, break for it. @@ -186,7 +164,7 @@ public class CEUndoManager { } /// Stops grouping all incoming mutations. - public func endUndoGrouping() { + override public func endUndoGrouping() { guard isGrouping else { return } isGrouping = false // We just ended a group, do not allow the next mutation to be added to the group we just made. diff --git a/Tests/CodeEditTextViewTests/TextViewTests.swift b/Tests/CodeEditTextViewTests/TextViewTests.swift index d8ac192b1..7b6ba44bb 100644 --- a/Tests/CodeEditTextViewTests/TextViewTests.swift +++ b/Tests/CodeEditTextViewTests/TextViewTests.swift @@ -64,4 +64,18 @@ struct TextViewTests { #expect(textView1.layoutManager.lineCount == 3) #expect(textView2.layoutManager.lineCount == 3) } + + @Test("Custom UndoManager class receives events") + func customUndoManagerReceivesEvents() { + let textView = TextView(string: "") + + textView.replaceCharacters(in: .zero, with: "Hello World") + textView.undo(nil) + + #expect(textView.string == "") + + textView.redo(nil) + + #expect(textView.string == "Hello World") + } } From a8a0e9c7bc0eb2278d83491973c9e479d99b0a2a Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Wed, 18 Jun 2025 10:50:55 -0500 Subject: [PATCH 30/42] Correctly Group Drag-and-drop for Undo (#104) ### Description Moves the `endUndoGrouping` call to the end of the actual editing operation when dropping text. Makes it so only one undo command is needed to undo a drag-and-drop operation. ### Related Issues * closes #99 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots https://github.com/user-attachments/assets/35952874-6d4d-4702-b149-f06b9ffb5226 --- Sources/CodeEditTextView/TextView/TextView+Drag.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/CodeEditTextView/TextView/TextView+Drag.swift b/Sources/CodeEditTextView/TextView/TextView+Drag.swift index 186d25dbd..dbd878a3c 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Drag.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Drag.swift @@ -255,10 +255,10 @@ extension TextView: NSDraggingSource { insertText("") // Replace the selected ranges with nothing } - undoManager?.endUndoGrouping() - replaceCharacters(in: [NSRange(location: insertionOffset, length: 0)], with: insertionString) + undoManager?.endUndoGrouping() + selectionManager.setSelectedRange( NSRange(location: insertionOffset, length: NSString(string: insertionString).length) ) From 7d63a64feab6e3fd4d0ece3e5eda19cb68791a82 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Wed, 18 Jun 2025 15:38:04 -0500 Subject: [PATCH 31/42] Select Undone/Redone Text (#105) ### Description Updates the undo manager to update the text selection when undoing/redoing. Two cases: - Replaced/Inserted text - selects the inserted text - Deleted text - Places cursor at the start of the deleted text, as if the user had just deleted it. ### Related Issues * closes #95 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots https://github.com/user-attachments/assets/55309316-9106-4ce2-ac25-952e2addbbfe --- .../TextView/TextView+ScrollToVisible.swift | 7 ++--- .../Utils/CEUndoManager.swift | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/Sources/CodeEditTextView/TextView/TextView+ScrollToVisible.swift b/Sources/CodeEditTextView/TextView/TextView+ScrollToVisible.swift index 00475ef9f..c4cf1fa6c 100644 --- a/Sources/CodeEditTextView/TextView/TextView+ScrollToVisible.swift +++ b/Sources/CodeEditTextView/TextView/TextView+ScrollToVisible.swift @@ -14,19 +14,17 @@ extension TextView { /// Scrolls the upmost selection to the visible rect if `scrollView` is not `nil`. public func scrollSelectionToVisible() { - guard let scrollView, let selection = getSelection() else { + guard let scrollView else { return } - let offsetToScrollTo = offsetNotPivot(selection) - // There's a bit of a chicken-and-the-egg issue going on here. We need to know the rect to scroll to, but we // can't know the exact rect to make visible without laying out the text. Then, once text is laid out the // selection rect may be different again. To solve this, we loop until the frame doesn't change after a layout // pass and scroll to that rect. var lastFrame: CGRect = .zero - while let boundingRect = layoutManager.rectForOffset(offsetToScrollTo), lastFrame != boundingRect { + while let boundingRect = getSelection()?.boundingRect, lastFrame != boundingRect { lastFrame = boundingRect layoutManager.layoutLines() selectionManager.updateSelectionViews() @@ -34,6 +32,7 @@ extension TextView { } if lastFrame != .zero { scrollView.contentView.scrollToVisible(lastFrame) + scrollView.reflectScrolledClipView(scrollView.contentView) } } diff --git a/Sources/CodeEditTextView/Utils/CEUndoManager.swift b/Sources/CodeEditTextView/Utils/CEUndoManager.swift index bdf859166..722b188ed 100644 --- a/Sources/CodeEditTextView/Utils/CEUndoManager.swift +++ b/Sources/CodeEditTextView/Utils/CEUndoManager.swift @@ -83,6 +83,10 @@ public class CEUndoManager: UndoManager { textView.replaceCharacters(in: mutation.inverse.range, with: mutation.inverse.string) } textView.textStorage.endEditing() + + updateSelectionsForMutations(mutations: item.mutations.map { $0.mutation }) + textView.scrollSelectionToVisible() + NotificationCenter.default.post(name: .NSUndoManagerDidUndoChange, object: self) redoStack.append(item) _isUndoing = false @@ -101,16 +105,41 @@ public class CEUndoManager: UndoManager { _isRedoing = true NotificationCenter.default.post(name: .NSUndoManagerWillRedoChange, object: self) + textView.selectionManager.removeCursors() textView.textStorage.beginEditing() for mutation in item.mutations { textView.replaceCharacters(in: mutation.mutation.range, with: mutation.mutation.string) } textView.textStorage.endEditing() + + updateSelectionsForMutations(mutations: item.mutations.map { $0.inverse }) + textView.scrollSelectionToVisible() + NotificationCenter.default.post(name: .NSUndoManagerDidRedoChange, object: self) undoStack.append(item) _isRedoing = false } + /// We often undo/redo a group of mutations that contain updated ranges that are next to each other but for a user + /// should be one continuous range. This merges those ranges into a set of disjoint ranges before updating the + /// selection manager. + private func updateSelectionsForMutations(mutations: [TextMutation]) { + if mutations.reduce(0, { $0 + $1.range.length }) == 0 { + if let minimumMutation = mutations.min(by: { $0.range.location < $1.range.location }) { + // If the mutations are only deleting text (no replacement), we just place the cursor at the last range, + // since all the ranges are the same but the other method will return no ranges (empty range). + textView?.selectionManager.setSelectedRange( + NSRange(location: minimumMutation.range.location, length: 0) + ) + } + } else { + let mergedRanges = mutations.reduce(into: IndexSet(), { set, mutation in + set.insert(range: mutation.range) + }) + textView?.selectionManager.setSelectedRanges(mergedRanges.rangeView.map { NSRange($0) }) + } + } + /// Clears the undo/redo stacks. public func clearStack() { undoStack.removeAll() From 48cef38070f2f6573a5990346fc4490afb88bc5e Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Thu, 19 Jun 2025 13:54:52 -0500 Subject: [PATCH 32/42] Fix Cursor Lagging - Update Cursors in `TextView.layout` (#109) ### Description Addresses an issue described by @nkleemann in the linked issue. The issue was a bug where cursors would lag behind an edit. This is due to the edited line's layout information being invalidated by the edit, meaning the selection manager cannot get valid layout information to position cursors. This change puts a selection position update in the text view's `layout` call, after the layout manager has done it's layout pass. This ensures the selection manage is using valid layout information, fixing the lagging issue. ### Related Issues * https://github.com/CodeEditApp/CodeEditSourceEditor/issues/317 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots On v0.11.2: https://github.com/user-attachments/assets/f4f23e02-58e5-410b-ba1a-0ea5e449dce4 With this change: https://github.com/user-attachments/assets/663fdecb-c1dd-43ec-9990-5f8c7da07205 --- .../TextSelectionManager.swift | 108 ++++++++++-------- .../TextView/TextView+Layout.swift | 1 + 2 files changed, 59 insertions(+), 50 deletions(-) diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift index deff69375..c1c3e0212 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift @@ -136,72 +136,80 @@ public class TextSelectionManager: NSObject { // MARK: - Selection Views - /// Update all selection cursors. Placing them in the correct position for each text selection and reseting the - /// blink timer. - func updateSelectionViews(force: Bool = false) { + /// Update all selection cursors. Placing them in the correct position for each text selection and + /// optionally reseting the blink timer. + func updateSelectionViews(force: Bool = false, skipTimerReset: Bool = false) { guard textView?.isFirstResponder ?? false else { return } var didUpdate: Bool = false for textSelection in textSelections { if textSelection.range.isEmpty { - guard let cursorRect = layoutManager?.rectForOffset(textSelection.range.location) else { - continue - } - - var doesViewNeedReposition: Bool - - // If using the system cursor, macOS will change the origin and height by about 0.5, so we do an - // approximate equals in that case to avoid extra updates. - if useSystemCursor, #available(macOS 14.0, *) { - doesViewNeedReposition = !textSelection.boundingRect.origin.approxEqual(cursorRect.origin) - || !textSelection.boundingRect.height.approxEqual(layoutManager?.estimateLineHeight() ?? 0) - } else { - doesViewNeedReposition = textSelection.boundingRect.origin != cursorRect.origin - || textSelection.boundingRect.height != layoutManager?.estimateLineHeight() ?? 0 - } - - if textSelection.view == nil || doesViewNeedReposition { - let cursorView: NSView + didUpdate = didUpdate || repositionCursorSelection(textSelection: textSelection) + } else if !textSelection.range.isEmpty && textSelection.view != nil { + textSelection.view?.removeFromSuperview() + textSelection.view = nil + didUpdate = true + } + } - if let existingCursorView = textSelection.view { - cursorView = existingCursorView - } else { - textSelection.view?.removeFromSuperview() - textSelection.view = nil + if didUpdate || force { + delegate?.setNeedsDisplay() + if !skipTimerReset { + cursorTimer.resetTimer() + resetSystemCursorTimers() + } + } + } - if useSystemCursor, #available(macOS 14.0, *) { - let systemCursorView = NSTextInsertionIndicator(frame: .zero) - cursorView = systemCursorView - systemCursorView.displayMode = .automatic - } else { - let internalCursorView = CursorView(color: insertionPointColor) - cursorView = internalCursorView - cursorTimer.register(internalCursorView) - } + private func repositionCursorSelection(textSelection: TextSelection) -> Bool { + guard let cursorRect = layoutManager?.rectForOffset(textSelection.range.location) else { + return false + } - textView?.addSubview(cursorView, positioned: .above, relativeTo: nil) - } + var doesViewNeedReposition: Bool - cursorView.frame.origin = cursorRect.origin - cursorView.frame.size.height = cursorRect.height + // If using the system cursor, macOS will change the origin and height by about 0.5, so we do an + // approximate equals in that case to avoid extra updates. + if useSystemCursor, #available(macOS 14.0, *) { + doesViewNeedReposition = !textSelection.boundingRect.origin.approxEqual(cursorRect.origin) + || !textSelection.boundingRect.height.approxEqual(layoutManager?.estimateLineHeight() ?? 0) + } else { + doesViewNeedReposition = textSelection.boundingRect.origin != cursorRect.origin + || textSelection.boundingRect.height != layoutManager?.estimateLineHeight() ?? 0 + } - textSelection.view = cursorView - textSelection.boundingRect = cursorView.frame + if textSelection.view == nil || doesViewNeedReposition { + let cursorView: NSView - didUpdate = true - } - } else if !textSelection.range.isEmpty && textSelection.view != nil { + if let existingCursorView = textSelection.view { + cursorView = existingCursorView + } else { textSelection.view?.removeFromSuperview() textSelection.view = nil - didUpdate = true + + if useSystemCursor, #available(macOS 14.0, *) { + let systemCursorView = NSTextInsertionIndicator(frame: .zero) + cursorView = systemCursorView + systemCursorView.displayMode = .automatic + } else { + let internalCursorView = CursorView(color: insertionPointColor) + cursorView = internalCursorView + cursorTimer.register(internalCursorView) + } + + textView?.addSubview(cursorView, positioned: .above, relativeTo: nil) } - } - if didUpdate || force { - delegate?.setNeedsDisplay() - cursorTimer.resetTimer() - resetSystemCursorTimers() + cursorView.frame.origin = cursorRect.origin + cursorView.frame.size.height = cursorRect.height + + textSelection.view = cursorView + textSelection.boundingRect = cursorView.frame + + return true } + + return false } private func resetSystemCursorTimers() { diff --git a/Sources/CodeEditTextView/TextView/TextView+Layout.swift b/Sources/CodeEditTextView/TextView/TextView+Layout.swift index 5a4162252..2fef2aa1b 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Layout.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Layout.swift @@ -11,6 +11,7 @@ extension TextView { override public func layout() { super.layout() layoutManager.layoutLines() + selectionManager.updateSelectionViews(skipTimerReset: true) } open override class var isCompatibleWithResponsiveScrolling: Bool { From 3f96de5714898f2f753271b48d70f98edb81502a Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Mon, 23 Jun 2025 08:49:24 -0500 Subject: [PATCH 33/42] Column Selection (#107) ### Description Adds column selection when pressing option and dragging to select. ### Related Issues * #46 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots Demo, ignore the multiple undos at the end a fix for that is on it's way. https://github.com/user-attachments/assets/409aa49c-eed2-465f-a964-162920c8877d --- .../TextLayoutManager+Public.swift | 22 +++-- .../TextSelectionManager.swift | 2 + .../TextView/TextView+ColumnSelection.swift | 50 ++++++++++ .../TextView/TextView+FirstResponder.swift | 5 +- .../TextView/TextView+KeyDown.swift | 12 +++ .../TextView/TextView+Mouse.swift | 92 +++++++++++-------- .../CodeEditTextView/TextView/TextView.swift | 2 + 7 files changed, 141 insertions(+), 44 deletions(-) create mode 100644 Sources/CodeEditTextView/TextView/TextView+ColumnSelection.swift diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift index bca881d05..19f67793a 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift @@ -75,14 +75,22 @@ extension TextLayoutManager { ) else { return nil } - let fragment = fragmentPosition.data + return textOffsetAtPoint(point, fragmentPosition: fragmentPosition, linePosition: linePosition) + } + + func textOffsetAtPoint( + _ point: CGPoint, + fragmentPosition: TextLineStorage.TextLinePosition, + linePosition: TextLineStorage.TextLinePosition + ) -> Int? { + let fragment = fragmentPosition.data if fragment.width == 0 { return linePosition.range.location + fragmentPosition.range.location } else if fragment.width <= point.x - edgeInsets.left { return findOffsetAfterEndOf(fragmentPosition: fragmentPosition, in: linePosition) } else { - return findOffsetAtPoint(inFragment: fragment, point: point, inLine: linePosition) + return findOffsetAtPoint(inFragment: fragment, xPos: point.x, inLine: linePosition) } } @@ -125,23 +133,23 @@ extension TextLayoutManager { /// Finds a document offset for a point that lies in a line fragment. /// - Parameters: /// - fragment: The fragment the point lies in. - /// - point: The point being queried, relative to the text view. + /// - xPos: The point being queried, relative to the text view. /// - linePosition: The position that contains the `fragment`. /// - Returns: The offset (relative to the document) that's closest to the given point, or `nil` if it could not be /// found. - private func findOffsetAtPoint( + func findOffsetAtPoint( inFragment fragment: LineFragment, - point: CGPoint, + xPos: CGFloat, inLine linePosition: TextLineStorage.TextLinePosition ) -> Int? { - guard let (content, contentPosition) = fragment.findContent(atX: point.x - edgeInsets.left) else { + guard let (content, contentPosition) = fragment.findContent(atX: xPos - edgeInsets.left) else { return nil } switch content.data { case .text(let ctLine): let fragmentIndex = CTLineGetStringIndexForPosition( ctLine, - CGPoint(x: point.x - edgeInsets.left - contentPosition.xPos, y: fragment.height/2) + CGPoint(x: xPos - edgeInsets.left - contentPosition.xPos, y: fragment.height/2) ) return fragmentIndex + contentPosition.offset + linePosition.range.location case .attachment: diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift index c1c3e0212..2bc3d1d4c 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift @@ -95,6 +95,7 @@ public class TextSelectionManager: NSObject { (0...(textStorage?.length ?? 0)).contains($0.location) && (0...(textStorage?.length ?? 0)).contains($0.max) } + .sorted(by: { $0.location < $1.location }) .map { let selection = TextSelection(range: $0) selection.suggestedXPos = layoutManager?.rectForOffset($0.location)?.minX @@ -127,6 +128,7 @@ public class TextSelectionManager: NSObject { } if !didHandle { textSelections.append(newTextSelection) + textSelections.sort(by: { $0.range.location < $1.range.location }) } updateSelectionViews() diff --git a/Sources/CodeEditTextView/TextView/TextView+ColumnSelection.swift b/Sources/CodeEditTextView/TextView/TextView+ColumnSelection.swift new file mode 100644 index 000000000..ad2e63102 --- /dev/null +++ b/Sources/CodeEditTextView/TextView/TextView+ColumnSelection.swift @@ -0,0 +1,50 @@ +// +// TextView+ColumnSelection.swift +// CodeEditTextView +// +// Created by Khan Winter on 6/19/25. +// + +import AppKit + +extension TextView { + /// Set the user's selection to a square region in the editor. + /// + /// This method will automatically determine a valid region from the provided two points. + /// - Parameters: + /// - pointA: The first point. + /// - pointB: The second point. + public func selectColumns(betweenPointA pointA: CGPoint, pointB: CGPoint) { + let start = CGPoint(x: min(pointA.x, pointB.x), y: min(pointA.y, pointB.y)) + let end = CGPoint(x: max(pointA.x, pointB.x), y: max(pointA.y, pointB.y)) + + // Collect all overlapping text ranges + var selectedRanges: [NSRange] = layoutManager.linesStartingAt(start.y, until: end.y).flatMap { textLine in + // Collect fragment ranges + return textLine.data.lineFragments.compactMap { lineFragment -> NSRange? in + let startOffset = self.layoutManager.textOffsetAtPoint( + start, + fragmentPosition: lineFragment, + linePosition: textLine + ) + let endOffset = self.layoutManager.textOffsetAtPoint( + end, + fragmentPosition: lineFragment, + linePosition: textLine + ) + guard let startOffset, let endOffset else { return nil } + + return NSRange(start: startOffset, end: endOffset) + } + } + + // If we have some non-cursor selections, filter out any cursor selections + if selectedRanges.contains(where: { !$0.isEmpty }) { + selectedRanges = selectedRanges.filter({ + !$0.isEmpty || (layoutManager.rectForOffset($0.location)?.origin.x.approxEqual(start.x) ?? false) + }) + } + + selectionManager.setSelectedRanges(selectedRanges) + } +} diff --git a/Sources/CodeEditTextView/TextView/TextView+FirstResponder.swift b/Sources/CodeEditTextView/TextView/TextView+FirstResponder.swift index 39588a262..968c1ede3 100644 --- a/Sources/CodeEditTextView/TextView/TextView+FirstResponder.swift +++ b/Sources/CodeEditTextView/TextView/TextView+FirstResponder.swift @@ -51,7 +51,10 @@ extension TextView { open override func resetCursorRects() { super.resetCursorRects() if isSelectable { - addCursorRect(visibleRect, cursor: .iBeam) + addCursorRect( + visibleRect, + cursor: isOptionPressed ? .crosshair : .iBeam + ) } } } diff --git a/Sources/CodeEditTextView/TextView/TextView+KeyDown.swift b/Sources/CodeEditTextView/TextView/TextView+KeyDown.swift index 1ef36d4f5..e11187851 100644 --- a/Sources/CodeEditTextView/TextView/TextView+KeyDown.swift +++ b/Sources/CodeEditTextView/TextView/TextView+KeyDown.swift @@ -47,4 +47,16 @@ extension TextView { return false } + + override public func flagsChanged(with event: NSEvent) { + super.flagsChanged(with: event) + + let modifierFlags = event.modifierFlags.intersection(.deviceIndependentFlagsMask) + let modifierFlagsIsOption = modifierFlags == [.option] + + if modifierFlagsIsOption != isOptionPressed { + isOptionPressed = modifierFlagsIsOption + resetCursorRects() + } + } } diff --git a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift b/Sources/CodeEditTextView/TextView/TextView+Mouse.swift index db1a96d1b..a6e447999 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Mouse.swift @@ -41,10 +41,11 @@ extension TextView { super.mouseDown(with: event) return } - if event.modifierFlags.intersection(.deviceIndependentFlagsMask).isSuperset(of: [.control, .shift]) { + let eventFlags = event.modifierFlags.intersection(.deviceIndependentFlagsMask) + if eventFlags == [.control, .shift] { unmarkText() selectionManager.addSelectedRange(NSRange(location: offset, length: 0)) - } else if event.modifierFlags.intersection(.deviceIndependentFlagsMask).contains(.shift) { + } else if eventFlags.contains(.shift) { unmarkText() shiftClickExtendSelection(to: offset) } else { @@ -96,40 +97,11 @@ extension TextView { return } - switch cursorSelectionMode { - case .character: - selectionManager.setSelectedRange( - NSRange( - location: min(startPosition, endPosition), - length: max(startPosition, endPosition) - min(startPosition, endPosition) - ) - ) - - case .word: - let startWordRange = findWordBoundary(at: startPosition) - let endWordRange = findWordBoundary(at: endPosition) - - selectionManager.setSelectedRange( - NSRange( - location: min(startWordRange.location, endWordRange.location), - length: max(startWordRange.location + startWordRange.length, - endWordRange.location + endWordRange.length) - - min(startWordRange.location, endWordRange.location) - ) - ) - - case .line: - let startLineRange = findLineBoundary(at: startPosition) - let endLineRange = findLineBoundary(at: endPosition) - - selectionManager.setSelectedRange( - NSRange( - location: min(startLineRange.location, endLineRange.location), - length: max(startLineRange.location + startLineRange.length, - endLineRange.location + endLineRange.length) - - min(startLineRange.location, endLineRange.location) - ) - ) + let modifierFlags = event.modifierFlags.intersection(.deviceIndependentFlagsMask) + if modifierFlags.contains(.option) { + dragColumnSelection(mouseDragAnchor: mouseDragAnchor, event: event) + } else { + dragSelection(startPosition: startPosition, endPosition: endPosition, mouseDragAnchor: mouseDragAnchor) } setNeedsDisplay() @@ -164,6 +136,8 @@ extension TextView { setNeedsDisplay() } + // MARK: - Mouse Autoscroll + /// Sets up a timer that fires at a predetermined period to autoscroll the text view. /// Ensure the timer is disabled using ``disableMouseAutoscrollTimer``. func setUpMouseAutoscrollTimer() { @@ -182,4 +156,50 @@ extension TextView { mouseDragTimer?.invalidate() mouseDragTimer = nil } + + // MARK: - Drag Selection + + private func dragSelection(startPosition: Int, endPosition: Int, mouseDragAnchor: CGPoint) { + switch cursorSelectionMode { + case .character: + selectionManager.setSelectedRange( + NSRange( + location: min(startPosition, endPosition), + length: max(startPosition, endPosition) - min(startPosition, endPosition) + ) + ) + + case .word: + let startWordRange = findWordBoundary(at: startPosition) + let endWordRange = findWordBoundary(at: endPosition) + + selectionManager.setSelectedRange( + NSRange( + location: min(startWordRange.location, endWordRange.location), + length: max(startWordRange.location + startWordRange.length, + endWordRange.location + endWordRange.length) - + min(startWordRange.location, endWordRange.location) + ) + ) + + case .line: + let startLineRange = findLineBoundary(at: startPosition) + let endLineRange = findLineBoundary(at: endPosition) + + selectionManager.setSelectedRange( + NSRange( + location: min(startLineRange.location, endLineRange.location), + length: max(startLineRange.location + startLineRange.length, + endLineRange.location + endLineRange.length) - + min(startLineRange.location, endLineRange.location) + ) + ) + } + } + + private func dragColumnSelection(mouseDragAnchor: CGPoint, event: NSEvent) { + // Drag the selection and select in columns + let eventLocation = convert(event.locationInWindow, from: nil) + selectColumns(betweenPointA: eventLocation, pointB: mouseDragAnchor) + } } diff --git a/Sources/CodeEditTextView/TextView/TextView.swift b/Sources/CodeEditTextView/TextView/TextView.swift index 873694591..f7537fb99 100644 --- a/Sources/CodeEditTextView/TextView/TextView.swift +++ b/Sources/CodeEditTextView/TextView/TextView.swift @@ -269,6 +269,8 @@ public class TextView: NSView, NSTextContent { var draggingCursorView: NSView? var isDragging: Bool = false + var isOptionPressed: Bool = false + private var fontCharWidth: CGFloat { (" " as NSString).size(withAttributes: [.font: font]).width } From df485cb63e163c9bdc68ec0617c113d301368da6 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Mon, 23 Jun 2025 10:34:22 -0500 Subject: [PATCH 34/42] Track Mouse Drag Outside View (#108) ### Description Fixes a bug that didn't allow the view to track drags outside it's bounds. Users can now drag selections over other views and outside the window. ### Related Issues * closes #100 * closes https://github.com/CodeEditApp/CodeEditSourceEditor/issues/316 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots https://github.com/user-attachments/assets/ffbad5bf-5a56-4ef8-91f7-c5a9bb725208 --- .../TextView/TextView+Mouse.swift | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift b/Sources/CodeEditTextView/TextView/TextView+Mouse.swift index a6e447999..636ea472a 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Mouse.swift @@ -87,19 +87,27 @@ extension TextView { return } + // We receive global events because our view received the drag event, but we need to clamp the potentially + // out-of-bounds positions to a position our layout manager can deal with. + let locationInWindow = convert(event.locationInWindow, from: nil) + let locationInView = CGPoint( + x: max(0.0, min(locationInWindow.x, frame.width)), + y: max(0.0, min(locationInWindow.y, frame.height)) + ) + if mouseDragAnchor == nil { - mouseDragAnchor = convert(event.locationInWindow, from: nil) + mouseDragAnchor = locationInView super.mouseDragged(with: event) } else { guard let mouseDragAnchor, let startPosition = layoutManager.textOffsetAtPoint(mouseDragAnchor), - let endPosition = layoutManager.textOffsetAtPoint(convert(event.locationInWindow, from: nil)) else { + let endPosition = layoutManager.textOffsetAtPoint(locationInView) else { return } let modifierFlags = event.modifierFlags.intersection(.deviceIndependentFlagsMask) if modifierFlags.contains(.option) { - dragColumnSelection(mouseDragAnchor: mouseDragAnchor, event: event) + dragColumnSelection(mouseDragAnchor: mouseDragAnchor, locationInView: locationInView) } else { dragSelection(startPosition: startPosition, endPosition: endPosition, mouseDragAnchor: mouseDragAnchor) } @@ -197,9 +205,7 @@ extension TextView { } } - private func dragColumnSelection(mouseDragAnchor: CGPoint, event: NSEvent) { - // Drag the selection and select in columns - let eventLocation = convert(event.locationInWindow, from: nil) - selectColumns(betweenPointA: eventLocation, pointB: mouseDragAnchor) + private func dragColumnSelection(mouseDragAnchor: CGPoint, locationInView: CGPoint) { + selectColumns(betweenPointA: mouseDragAnchor, pointB: locationInView) } } From c1fed3445ebd9de60ba6bb722ab74c280a41ef74 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Wed, 25 Jun 2025 13:18:50 -0500 Subject: [PATCH 35/42] Add Text Attachments Delegate (#110) ### Description Adds an API for receiving events from the text attachments manager. ### Related Issues N/A ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots N/A --- .../TextAttachments/TextAttachmentManager.swift | 7 +++++++ .../TextAttachmentManagerDelegate.swift | 13 +++++++++++++ .../TextLine/LineFragmentRenderer.swift | 4 ++-- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManagerDelegate.swift diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift index dfa561d84..9eb1cde24 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift @@ -17,6 +17,8 @@ public final class TextAttachmentManager { weak var layoutManager: TextLayoutManager? private var selectionObserver: (any NSObjectProtocol)? + public weak var delegate: TextAttachmentManagerDelegate? + /// Adds a new attachment, keeping `orderedAttachments` sorted by range.location. /// If two attachments overlap, the layout phase will later ignore the one with the higher start. /// - Complexity: `O(n log(n))` due to array insertion. Could be improved with a binary tree. @@ -47,6 +49,8 @@ public final class TextAttachmentManager { } layoutManager?.setNeedsLayout() + + delegate?.textAttachmentDidAdd(attachment.attachment, for: range) } /// Removes an attachment and invalidates layout for the removed range. @@ -62,6 +66,9 @@ public final class TextAttachmentManager { let attachment = orderedAttachments.remove(at: index) layoutManager?.invalidateLayoutForRange(attachment.range) + + delegate?.textAttachmentDidRemove(attachment.attachment, for: attachment.range) + return attachment } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManagerDelegate.swift b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManagerDelegate.swift new file mode 100644 index 000000000..c5b363b00 --- /dev/null +++ b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManagerDelegate.swift @@ -0,0 +1,13 @@ +// +// TextAttachmentManagerDelegate.swift +// CodeEditTextView +// +// Created by Khan Winter on 6/25/25. +// + +import Foundation + +public protocol TextAttachmentManagerDelegate: AnyObject { + func textAttachmentDidAdd(_ attachment: any TextAttachment, for range: NSRange) + func textAttachmentDidRemove(_ attachment: any TextAttachment, for range: NSRange) +} diff --git a/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift b/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift index 5225123d8..4824e010b 100644 --- a/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift +++ b/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift @@ -92,9 +92,9 @@ public final class LineFragmentRenderer { in: context, rect: NSRect( x: currentPosition, - y: yPos, + y: yPos + (lineFragment.heightDifference/2), width: attachment.width, - height: lineFragment.scaledHeight + height: lineFragment.height ) ) } From 8f02a6b206091ee4aaee9006e2ef1ddc68e754c8 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Wed, 25 Jun 2025 15:20:13 -0500 Subject: [PATCH 36/42] Add Text Attachment Actions (#111) ### Description Adds actions to text attachments. Actions are performed in either of the following: - A selection's range exactly matches that of the attachment, and the enter key is pressed. - For multiple cursors, if any selections match, the action is taken on all matching selections and other behaviors are ignored. - An attachment is double-clicked. Attachments can return an action enum to indicate what the textview should do when the action is invoked. This allows for attachments to let the textview handle some common cases like discarding the attachment or replacing it with text, and allows attachments to perform their own logic at the same time. ### Related Issues * https://github.com/CodeEditApp/CodeEditSourceEditor/issues/43 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots Example in CodeEdit's folding attachments. https://github.com/user-attachments/assets/1bd670b4-08ed-463e-8f06-8b2fff7e0cbb --- .../TextAttachments/TextAttachment.swift | 18 +++++++++++ .../TextAttachmentManager.swift | 2 +- .../TextLayoutManager+Public.swift | 8 +++++ .../TextSelectionManager.swift | 1 - .../TextView/TextView+Insert.swift | 15 +++++++++ .../TextView/TextView+Mouse.swift | 32 ++++++++++++++++++- 6 files changed, 73 insertions(+), 3 deletions(-) diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift index f3bc01209..e1f4363d0 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift @@ -7,11 +7,29 @@ import AppKit +public enum TextAttachmentAction { + /// Perform no action. + case none + /// Replace the attachment range with the given string. + case replace(text: String) + /// Discard the attachment and perform no other action, this is the default action. + case discard +} + /// Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view. public protocol TextAttachment: AnyObject { var width: CGFloat { get } var isSelected: Bool { get set } + func draw(in context: CGContext, rect: NSRect) + + /// The action that should be performed when this attachment is invoked (double-click, enter pressed). + /// This method is optional, by default the attachment is discarded. + func attachmentAction() -> TextAttachmentAction +} + +public extension TextAttachment { + func attachmentAction() -> TextAttachmentAction { .discard } } /// Type-erasing type for ``TextAttachment`` that also contains range information about the attachment. diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift index 9eb1cde24..7b4d0c0e5 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift @@ -102,7 +102,7 @@ public final class TextAttachmentManager { /// - Returns: An array of `AnyTextAttachment` instances whose ranges intersect `query`. public func getAttachmentsOverlapping(_ range: NSRange) -> [AnyTextAttachment] { // Find the first attachment whose end is beyond the start of the query. - guard let startIdx = firstIndex(where: { $0.range.upperBound >= range.location }) else { + guard let startIdx = orderedAttachments.firstIndex(where: { $0.range.upperBound >= range.location }) else { return [] } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift index 19f67793a..ef61dd6ed 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift @@ -339,4 +339,12 @@ extension TextLayoutManager { height: lineFragment.scaledHeight ).pixelAligned } + + func contentRun(at offset: Int) -> LineFragment.FragmentContent? { + guard let textLine = textLineForOffset(offset), + let fragment = textLine.data.lineFragments.getLine(atOffset: offset - textLine.range.location) else { + return nil + } + return fragment.data.findContent(at: offset - textLine.range.location - fragment.range.location)?.content + } } diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift index 2bc3d1d4c..f05168629 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift @@ -80,7 +80,6 @@ public class TextSelectionManager: NSObject { textSelections = [selection] updateSelectionViews() NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self)) - delegate?.setNeedsDisplay() } /// Set the selected ranges to new ranges. Overrides any existing selections. diff --git a/Sources/CodeEditTextView/TextView/TextView+Insert.swift b/Sources/CodeEditTextView/TextView/TextView+Insert.swift index 8c4fc408e..05bd092a7 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Insert.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Insert.swift @@ -9,6 +9,21 @@ import AppKit extension TextView { override public func insertNewline(_ sender: Any?) { + var attachments: [AnyTextAttachment] = selectionManager.textSelections.compactMap({ selection in + let content = layoutManager.contentRun(at: selection.range.location) + if case let .attachment(attachment) = content?.data, attachment.range == selection.range { + return attachment + } + return nil + }) + + if !attachments.isEmpty { + for attachment in attachments.sorted(by: { $0.range.location > $1.range.location }) { + performAttachmentAction(attachment: attachment) + } + return + } + insertText(layoutManager.detectedLineEnding.rawValue) } diff --git a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift b/Sources/CodeEditTextView/TextView/TextView+Mouse.swift index 636ea472a..7ab49d799 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Mouse.swift @@ -12,11 +12,17 @@ extension TextView { // Set cursor guard isSelectable, event.type == .leftMouseDown, - let offset = layoutManager.textOffsetAtPoint(self.convert(event.locationInWindow, from: nil)) else { + let offset = layoutManager.textOffsetAtPoint(self.convert(event.locationInWindow, from: nil)), + let content = layoutManager.contentRun(at: offset) else { super.mouseDown(with: event) return } + if case let .attachment(attachment) = content.data, event.clickCount < 3 { + handleAttachmentClick(event: event, offset: offset, attachment: attachment) + return + } + switch event.clickCount { case 1: handleSingleClick(event: event, offset: offset) @@ -76,6 +82,30 @@ extension TextView { selectLine(nil) } + fileprivate func handleAttachmentClick(event: NSEvent, offset: Int, attachment: AnyTextAttachment) { + switch event.clickCount { + case 1: + selectionManager.setSelectedRange(attachment.range) + case 2: + performAttachmentAction(attachment: attachment) + default: + break + } + } + + func performAttachmentAction(attachment: AnyTextAttachment) { + let action = attachment.attachment.attachmentAction() + switch action { + case .none: + return + case .discard: + layoutManager.attachments.remove(atOffset: attachment.range.location) + selectionManager.setSelectedRange(NSRange(location: attachment.range.location, length: 0)) + case let .replace(text): + replaceCharacters(in: attachment.range, with: text) + } + } + override public func mouseUp(with event: NSEvent) { mouseDragAnchor = nil disableMouseAutoscrollTimer() From 80fb8842a232cdb04a9b9487da8f266f62066e75 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Thu, 26 Jun 2025 13:14:47 -0500 Subject: [PATCH 37/42] Fix End of Doc Bugs (#112) ### Description Fixes a few end-of-document bugs: - `rectForOffset` had an incorrect `!=` instead of a `<` check for the end of the document. - `mouseDown` needed to be looser on finding content runs for the end of documents. Adds test cases that would have caught both these bugs. ### Related Issues N/A ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots N/A --- .../TextLayoutManager+Public.swift | 2 +- .../TextView/TextView+Mouse.swift | 6 ++--- .../TextLayoutManagerTests.swift | 22 +++++++++++++++++++ .../TextSelectionManagerTests.swift | 6 +++++ 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift index ef61dd6ed..e05c01c20 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift @@ -166,7 +166,7 @@ extension TextLayoutManager { /// - Parameter offset: The offset to create the rect for. /// - Returns: The found rect for the given offset. public func rectForOffset(_ offset: Int) -> CGRect? { - guard offset != lineStorage.length else { + guard offset < lineStorage.length else { return rectForEndOffset() } guard let linePosition = determineVisiblePosition(for: lineStorage.getLine(atOffset: offset))?.position else { diff --git a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift b/Sources/CodeEditTextView/TextView/TextView+Mouse.swift index 7ab49d799..0609665f0 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Mouse.swift @@ -12,13 +12,13 @@ extension TextView { // Set cursor guard isSelectable, event.type == .leftMouseDown, - let offset = layoutManager.textOffsetAtPoint(self.convert(event.locationInWindow, from: nil)), - let content = layoutManager.contentRun(at: offset) else { + let offset = layoutManager.textOffsetAtPoint(self.convert(event.locationInWindow, from: nil)) else { super.mouseDown(with: event) return } - if case let .attachment(attachment) = content.data, event.clickCount < 3 { + if let content = layoutManager.contentRun(at: offset), + case let .attachment(attachment) = content.data, event.clickCount < 3 { handleAttachmentClick(event: event, offset: offset, attachment: attachment) return } diff --git a/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift index 7306e62dd..3baab6c3a 100644 --- a/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift +++ b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift @@ -228,4 +228,26 @@ struct TextLayoutManagerTests { let invalidatedLineIds = layoutManager.layoutLines() #expect(Set(expectedLineIds) == invalidatedLineIds) } + + @Test + func rectForOffsetReturnsValueAfterEndOfDoc() throws { + layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000)) + + for idx in 0..<10 { + // This should return something even after the end of the document. + #expect(layoutManager.rectForOffset(idx) != nil, "Failed to find rect for offset: \(idx)") + } + } + + @Test + func textOffsetForPointReturnsValuesEverywhere() throws { + layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000)) + + // textOffsetAtPoint is valid *everywhere*. It should always return something. + for xPos in 0..<1000 { + for yPos in 0..<1000 { + #expect(layoutManager.textOffsetAtPoint(CGPoint(x: xPos, y: yPos)) != nil) + } + } + } } diff --git a/Tests/CodeEditTextViewTests/TextSelectionManagerTests.swift b/Tests/CodeEditTextViewTests/TextSelectionManagerTests.swift index 38ea3983d..ecfa6ab84 100644 --- a/Tests/CodeEditTextViewTests/TextSelectionManagerTests.swift +++ b/Tests/CodeEditTextViewTests/TextSelectionManagerTests.swift @@ -217,4 +217,10 @@ final class TextSelectionManagerTests: XCTestCase { ) } } + + func test_selectionEndOfDocumentHasXPos() { + let selectionManager = selectionManager("1\n2\n3\n") + selectionManager.setSelectedRange(NSRange(location: 6, length: 0)) // Beyond text.length, end of doc + XCTAssertNotNil(selectionManager.textSelections.first?.suggestedXPos) + } } From d65c2a4b23a52f69d0b3a113124d7434c7af07fa Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Thu, 26 Jun 2025 13:45:21 -0500 Subject: [PATCH 38/42] Skip Selection Update in Undo/Redo (#113) ### Description Skips updating the selection when performing undo/redo. ### Related Issues N/A ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots N/A --- Sources/CodeEditTextView/Utils/CEUndoManager.swift | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Sources/CodeEditTextView/Utils/CEUndoManager.swift b/Sources/CodeEditTextView/Utils/CEUndoManager.swift index 722b188ed..2af68d9e0 100644 --- a/Sources/CodeEditTextView/Utils/CEUndoManager.swift +++ b/Sources/CodeEditTextView/Utils/CEUndoManager.swift @@ -80,7 +80,11 @@ public class CEUndoManager: UndoManager { NotificationCenter.default.post(name: .NSUndoManagerWillUndoChange, object: self) textView.textStorage.beginEditing() for mutation in item.mutations.reversed() { - textView.replaceCharacters(in: mutation.inverse.range, with: mutation.inverse.string) + textView.replaceCharacters( + in: mutation.inverse.range, + with: mutation.inverse.string, + skipUpdateSelection: true + ) } textView.textStorage.endEditing() @@ -108,7 +112,11 @@ public class CEUndoManager: UndoManager { textView.selectionManager.removeCursors() textView.textStorage.beginEditing() for mutation in item.mutations { - textView.replaceCharacters(in: mutation.mutation.range, with: mutation.mutation.string) + textView.replaceCharacters( + in: mutation.mutation.range, + with: mutation.mutation.string, + skipUpdateSelection: true + ) } textView.textStorage.endEditing() From f576370ba16fa03995fffd27d8eefb6b691e6f43 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Thu, 17 Jul 2025 10:03:33 -0500 Subject: [PATCH 39/42] Implement Missing Accessibility APIs (#116) ### Description Fills out the last few missing accessibility methods for the text view. Adds unit tests for all implemented accessibility methods. ### Related Issues * closes #115 * closes #114 ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots N/A --- .../Extensions/CGRectArray+BoundingRect.swift | 23 ++ .../TextLayoutManager+Iterator.swift | 2 +- .../TextSelectionManager+Draw.swift | 8 +- .../TextView/TextView+Accessibility.swift | 73 ++++- .../AccessibilityTests.swift | 299 ++++++++++++++++++ 5 files changed, 381 insertions(+), 24 deletions(-) create mode 100644 Sources/CodeEditTextView/Extensions/CGRectArray+BoundingRect.swift create mode 100644 Tests/CodeEditTextViewTests/AccessibilityTests.swift diff --git a/Sources/CodeEditTextView/Extensions/CGRectArray+BoundingRect.swift b/Sources/CodeEditTextView/Extensions/CGRectArray+BoundingRect.swift new file mode 100644 index 000000000..5f94249fa --- /dev/null +++ b/Sources/CodeEditTextView/Extensions/CGRectArray+BoundingRect.swift @@ -0,0 +1,23 @@ +// +// File.swift +// CodeEditTextView +// +// Created by Khan Winter on 7/17/25. +// + +import AppKit + +extension Array where Element == CGRect { + /// Returns a rect object that contains all of the rects in this array. + /// Returns `.zero` if the array is empty. + /// - Returns: The minimum rectangle that contains all rectangles in this array. + func boundingRect() -> CGRect { + guard !self.isEmpty else { return .zero } + let minX = self.min(by: { $0.origin.x < $1.origin.x })?.origin.x ?? 0 + let minY = self.min(by: { $0.origin.y < $1.origin.y })?.origin.y ?? 0 + let max = self.max(by: { $0.maxY < $1.maxY }) ?? .zero + let origin = CGPoint(x: minX, y: minY) + let size = CGSize(width: max.maxX - minX, height: max.maxY - minY) + return CGRect(origin: origin, size: size) + } +} diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift index ba0a997ed..f6a5e1ab8 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift @@ -196,7 +196,7 @@ public extension TextLayoutManager { } if lastAttachment.range.max > originalPosition.position.range.max, - var extendedLinePosition = lineStorage.getLine(atOffset: lastAttachment.range.max) { + let extendedLinePosition = lineStorage.getLine(atOffset: lastAttachment.range.max) { newPosition = TextLineStorage.TextLinePosition( data: newPosition.data, range: NSRange(start: newPosition.range.location, end: extendedLinePosition.range.max), diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift index 60b0c7e60..b24dab062 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift @@ -82,13 +82,7 @@ extension TextSelectionManager { context.setFillColor(fillColor) let fillRects = getFillRects(in: rect, for: textSelection) - - let minX = fillRects.min(by: { $0.origin.x < $1.origin.x })?.origin.x ?? 0 - let minY = fillRects.min(by: { $0.origin.y < $1.origin.y })?.origin.y ?? 0 - let max = fillRects.max(by: { $0.maxY < $1.maxY }) ?? .zero - let origin = CGPoint(x: minX, y: minY) - let size = CGSize(width: max.maxX - minX, height: max.maxY - minY) - textSelection.boundingRect = CGRect(origin: origin, size: size) + textSelection.boundingRect = fillRects.boundingRect() context.fill(fillRects) context.restoreGState() diff --git a/Sources/CodeEditTextView/TextView/TextView+Accessibility.swift b/Sources/CodeEditTextView/TextView/TextView+Accessibility.swift index db8454d52..87ebe2f0a 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Accessibility.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Accessibility.swift @@ -9,11 +9,16 @@ import AppKit /// # Notes /// -/// This implementation considers the entire document as one element, ignoring all subviews and lines. +/// ~~This implementation considers the entire document as one element, ignoring all subviews and lines. /// Another idea would be to make each line fragment an accessibility element, with options for navigating through /// lines from there. The text view would then only handle text input, and lines would handle reading out useful data /// to the user. -/// More research needs to be done for the best option here. +/// More research needs to be done for the best option here.~~ +/// +/// Consider that the system has access to the ``TextView/accessibilityVisibleCharacterRange`` and +/// ``TextView/accessibilityString(for:)`` methods. These can combine to allow an accessibility system to efficiently +/// query the text view's contents. Adding accessibility elements to line fragments would require hit testing them, +/// which will cause performance degradation. extension TextView { override open func isAccessibilityElement() -> Bool { true @@ -27,6 +32,11 @@ extension TextView { isFirstResponder } + override open func setAccessibilityFocused(_ accessibilityFocused: Bool) { + guard !isFirstResponder else { return } + window?.makeFirstResponder(self) + } + override open func accessibilityLabel() -> String? { "Text Editor" } @@ -48,7 +58,11 @@ extension TextView { } override open func accessibilityString(for range: NSRange) -> String? { - textStorage.substring( + guard documentRange.intersection(range) == range else { + return nil + } + + return textStorage.substring( from: textStorage.mutableString.rangeOfComposedCharacterSequences(for: range) ) } @@ -56,13 +70,14 @@ extension TextView { // MARK: Selections override open func accessibilitySelectedText() -> String? { - guard let selection = selectionManager - .textSelections - .sorted(by: { $0.range.lowerBound < $1.range.lowerBound }) - .first else { + let selectedRange = accessibilitySelectedTextRange() + guard selectedRange != .notFound else { return nil } - let range = (textStorage.string as NSString).rangeOfComposedCharacterSequences(for: selection.range) + if selectedRange.isEmpty { + return "" + } + let range = (textStorage.string as NSString).rangeOfComposedCharacterSequences(for: selectedRange) return textStorage.substring(from: range) } @@ -71,7 +86,10 @@ extension TextView { .textSelections .sorted(by: { $0.range.lowerBound < $1.range.lowerBound }) .first else { - return .zero + return .notFound + } + if selection.range.isEmpty { + return selection.range } return textStorage.mutableString.rangeOfComposedCharacterSequences(for: selection.range) } @@ -83,12 +101,10 @@ extension TextView { } override open func accessibilityInsertionPointLineNumber() -> Int { - guard let selection = selectionManager - .textSelections - .sorted(by: { $0.range.lowerBound < $1.range.lowerBound }) - .first, - let linePosition = layoutManager.textLineForOffset(selection.range.location) else { - return 0 + let selectedRange = accessibilitySelectedTextRange() + guard selectedRange != .notFound, + let linePosition = layoutManager.textLineForOffset(selectedRange.location) else { + return -1 } return linePosition.index } @@ -122,6 +138,31 @@ extension TextView { } override open func accessibilityRange(for index: Int) -> NSRange { - textStorage.mutableString.rangeOfComposedCharacterSequence(at: index) + guard index < documentRange.length else { return .notFound } + return textStorage.mutableString.rangeOfComposedCharacterSequence(at: index) + } + + override open func accessibilityVisibleCharacterRange() -> NSRange { + visibleTextRange ?? .notFound + } + + /// The line index for a given character offset. + override open func accessibilityLine(for index: Int) -> Int { + guard index <= textStorage.length, + let textLine = layoutManager.textLineForOffset(index) else { + return -1 + } + return textLine.index + } + + override open func accessibilityFrame(for range: NSRange) -> NSRect { + guard documentRange.intersection(range) == range else { + return .zero + } + if range.isEmpty { + return .zero + } + let rects = layoutManager.rectsFor(range: range) + return rects.boundingRect() } } diff --git a/Tests/CodeEditTextViewTests/AccessibilityTests.swift b/Tests/CodeEditTextViewTests/AccessibilityTests.swift new file mode 100644 index 000000000..ed526054b --- /dev/null +++ b/Tests/CodeEditTextViewTests/AccessibilityTests.swift @@ -0,0 +1,299 @@ +// +// AccessibilityTests.swift +// CodeEditTextView +// +// Created by Khan Winter on 7/17/25. +// + +import Testing +import AppKit +@testable import CodeEditTextView + +@MainActor +@Suite +struct AccessibilityTests { + let textView: TextView + let sampleText = "Line 1\nLine 2\nLine 3" + + init() { + textView = TextView(string: sampleText) + textView.frame = NSRect(x: 0, y: 0, width: 1000, height: 1000) + textView.updateFrameIfNeeded() + } + + // MARK: - Basic Accessibility Properties + + @Test + func isAccessibilityElement() { + #expect(textView.isAccessibilityElement()) + } + + @Test + func isAccessibilityEnabled() { + #expect(textView.isAccessibilityEnabled()) + } + + @Test + func accessibilityLabel() { + #expect(textView.accessibilityLabel() == "Text Editor") + } + + @Test + func accessibilityRole() { + #expect(textView.accessibilityRole() == .textArea) + } + + @Test + func accessibilityValue() { + #expect(textView.accessibilityValue() as? String == sampleText) + } + + @Test + func setAccessibilityValue() { + let newValue = "New content" + textView.setAccessibilityValue(newValue) + #expect(textView.string == newValue) + } + + @Test + func setAccessibilityValueInvalidType() { + let originalString = textView.string + textView.setAccessibilityValue(42) + #expect(textView.string == originalString) + } + + // MARK: - Character and String Access + + @Test + func accessibilityNumberOfCharacters() { + #expect(textView.accessibilityNumberOfCharacters() == sampleText.count) + } + + @Test + func accessibilityStringForRange() { + let range = NSRange(location: 0, length: 6) + let result = textView.accessibilityString(for: range) + #expect(result == "Line 1") + } + + @Test + func accessibilityStringForInvalidRange() { + let range = NSRange(location: 100, length: 5) + let result = textView.accessibilityString(for: range) + #expect(result == nil) + } + + @Test + func accessibilityRangeForCharacterIndex() { + let range = textView.accessibilityRange(for: 0) + #expect(range.location == 0) + #expect(range.length == 1) + } + + @Test + func accessibilityRangeForInvalidIndex() { + let range = textView.accessibilityRange(for: 1000) + #expect(range == .notFound) + } + + // MARK: - Selection Tests + + @Test + func accessibilitySelectedTextNoSelections() { + textView.selectionManager.setSelectedRanges([]) + #expect(textView.accessibilitySelectedText() == nil) + } + + @Test + func accessibilitySelectedTextEmpty() { + textView.selectionManager.setSelectedRange(.zero) + #expect(textView.accessibilitySelectedText() == "") + } + + @Test + func accessibilitySelectedText() { + let range = NSRange(location: 0, length: 6) + textView.selectionManager.setSelectedRange(range) + #expect(textView.accessibilitySelectedText() == "Line 1") + } + + @Test + func accessibilitySelectedTextRange() { + let range = NSRange(location: 2, length: 4) + textView.selectionManager.setSelectedRange(range) + let selectedRange = textView.accessibilitySelectedTextRange() + #expect(selectedRange.location == 2) + #expect(selectedRange.length == 4) + } + + @Test + func accessibilitySelectedTextRangeEmpty() { + textView.selectionManager.setSelectedRange(.zero) + let selectedRange = textView.accessibilitySelectedTextRange() + #expect(selectedRange == .zero) + } + + @Test + func setAccessibilitySelectedTextRange() { + let range = NSRange(location: 7, length: 6) + textView.setAccessibilitySelectedTextRange(range) + #expect(textView.accessibilitySelectedTextRange() == range) + } + + @Test + func accessibilitySelectedTextRanges() { + let ranges = [ + NSRange(location: 0, length: 4), + NSRange(location: 7, length: 6) + ] + textView.selectionManager.setSelectedRanges(ranges) + let selectedRanges = textView.accessibilitySelectedTextRanges()?.compactMap { $0 as? NSRange } + #expect(selectedRanges?.count == 2) + #expect(selectedRanges?.contains(ranges[0]) == true) + #expect(selectedRanges?.contains(ranges[1]) == true) + } + + @Test + func setAccessibilitySelectedTextRanges() { + let ranges = [ + NSRange(location: 0, length: 4) as NSValue, + NSRange(location: 7, length: 6) as NSValue + ] + textView.setAccessibilitySelectedTextRanges(ranges) + let selectedRanges = textView.accessibilitySelectedTextRanges() + #expect(selectedRanges?.count == 2) + } + + @Test + func setAccessibilitySelectedTextRangesNil() { + textView.setAccessibilitySelectedTextRanges(nil) + let selectedRanges = textView.accessibilitySelectedTextRanges() + #expect(selectedRanges?.isEmpty == true) + } + + // MARK: - Line Navigation Tests + + @Test + func accessibilityLineForIndex() { + let lineIndex = textView.accessibilityLine(for: 0) + #expect(lineIndex == 0) + } + + @Test + func accessibilityLineForIndexSecondLine() { + let lineIndex = textView.accessibilityLine(for: 7) + #expect(lineIndex == 1) + } + + @Test + func accessibilityLineForEndOfDocument() { + let lineIndex = textView.accessibilityLine(for: textView.documentRange.max) + #expect(lineIndex == 2) + } + + @Test + func accessibilityLineForInvalidIndex() { + let lineIndex = textView.accessibilityLine(for: 1000) + #expect(lineIndex == -1) + } + + @Test + func accessibilityRangeForLine() { + let range = textView.accessibilityRange(forLine: 0) + #expect(range.location == 0) + #expect(range.length == 7) + } + + @Test + func accessibilityRangeForLineSecondLine() { + let range = textView.accessibilityRange(forLine: 1) + #expect(range.location == 7) + #expect(range.length == 7) + } + + @Test + func accessibilityRangeForInvalidLine() { + let range = textView.accessibilityRange(forLine: 100) + #expect(range == .zero) + } + + @Test + func accessibilityRangeForNegativeLine() { + let range = textView.accessibilityRange(forLine: -1) + #expect(range == .zero) + } + + @Test + func accessibilityInsertionPointLineNumber() { + textView.selectionManager.setSelectedRange(NSRange(location: 7, length: 0)) + let lineNumber = textView.accessibilityInsertionPointLineNumber() + #expect(lineNumber == 1) + } + + @Test + func accessibilityInsertionPointLineNumberEmptySelection() { + textView.selectionManager.setSelectedRange(.zero) + let lineNumber = textView.accessibilityInsertionPointLineNumber() + #expect(lineNumber == 0) + } + + @Test + func accessibilityInsertionPointLineNumberNoSelection() { + textView.selectionManager.setSelectedRanges([]) + let lineNumber = textView.accessibilityInsertionPointLineNumber() + #expect(lineNumber == -1) + } + + // MARK: - Visible Range Tests + + @Test + func accessibilityVisibleCharacterRange() { + let visibleRange = textView.accessibilityVisibleCharacterRange() + #expect(visibleRange != .notFound) + } + + @Test + func accessibilityVisibleCharacterRangeNoVisibleText() { + let emptyTextView = TextView(string: "") + let visibleRange = emptyTextView.accessibilityVisibleCharacterRange() + #expect(visibleRange == .zero) + } + + // MARK: - Point and Frame Tests + + @Test + func accessibilityRangeForPoint() { + let point = NSPoint(x: 10, y: 10) + let range = textView.accessibilityRange(for: point) + #expect(range.length == 0) + } + + @Test + func accessibilityRangeForInvalidPoint() { + let point = NSPoint(x: -100, y: -100) + let range = textView.accessibilityRange(for: point) + #expect(range == .zero) + } + + @Test + func accessibilityFrameForRange() { + let range = NSRange(location: 0, length: 6) + let frame = textView.accessibilityFrame(for: range) + #expect(frame.size.width > 0) + #expect(frame.size.height > 0) + } + + @Test + func accessibilityFrameForEmptyRange() { + let range = NSRange(location: 0, length: 0) + let frame = textView.accessibilityFrame(for: range) + #expect(frame.size.width >= 0) + #expect(frame.size.height >= 0) + } + + @Test + func isAccessibilityFocusedWhenNotFirstResponder() { + textView.window?.makeFirstResponder(nil) + #expect(!textView.isAccessibilityFocused()) + } +} From fbb038caa8a2779153a94f6e01caa5016ffb973d Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Fri, 18 Jul 2025 14:58:35 -0500 Subject: [PATCH 40/42] Log Layout Time Less Religiously (#117) --- .../TextLayoutManager/TextLayoutManager.swift | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift index 503c334c7..0a8b57ffd 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift @@ -168,8 +168,13 @@ public class TextLayoutManager: NSObject { let end = mach_absolute_time() let elapsed = end - start let nanos = elapsed * UInt64(info.numer) / UInt64(info.denom) - let msec = TimeInterval(nanos) / TimeInterval(NSEC_PER_MSEC) - logger.info("TextLayoutManager built in: \(msec, privacy: .public)ms") + let sec = TimeInterval(nanos) / TimeInterval(NSEC_PER_SEC) + // This used to be logged every time. However we're now confident enough in the performance of this method + // that it's not useful to log it anymore unless it's an odd number. Taking ~500ms for a >500k loc file + // is normal. More than 1s for any document is not normal. + if sec >= 1 { + logger.warning("TextLayoutManager built in: \(sec, privacy: .public)s") + } #endif } From e7f1580a8075af84c349fb8c66fbd2776ff5cb1d Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Wed, 23 Jul 2025 12:21:35 -0500 Subject: [PATCH 41/42] Layout Invalidation Performance (#118) ### Description Made the layout manager *move* lines that weren't invalidated instead of re-typesetting them. Also made the reuse queue just make views tiny and hide them instead of removing them from the view hierarchy, and queue more views. After these changes, layout in the source editor goes from taking up *36% of the CPU* time while editing, to taking up **5% of main thread CPU time**. - Added a new debug mode for visualizing line fragment invalidation. - Adjusted the layout pass to avoid typesetting lines that don't need layout. - Made a distinction between 'forced layout' via `setNeedsLayout` and 'continued' layout where a line previously scanned in the layout pass was updated. - Due to that, I was able to check if a line fragment actually needed typesetting or just potentially needed to have it's position adjusted. - Added a new method to update a line's view's positions during layout. - Removed the unnecessary `lineRange` variable on the `LineFragment` class. - Adjusted the use of `documentRange` on the `LineFragment` class. It's now updated during layout, simplifying various methods. ### Related Issues * N/A ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots Before: https://github.com/user-attachments/assets/05027712-5690-4970-b1ab-e0b4fe9553ec After: https://github.com/user-attachments/assets/36350ea1-66d8-43d0-a676-1bb770a733d7 --- .../NSRange+/NSRange+translate.swift | 14 +++ .../TextLayoutManager+Invalidation.swift | 6 + .../TextLayoutManager+Layout.swift | 110 +++++++++++++----- .../TextLayoutManager+Public.swift | 11 +- .../TextLine/LineFragment.swift | 7 +- .../TextLine/LineFragmentRenderer.swift | 4 +- .../TextLine/LineFragmentView.swift | 47 +++++++- .../CodeEditTextView/TextLine/TextLine.swift | 6 +- .../TextLine/Typesetter/TypesetContext.swift | 5 - .../TextLine/Typesetter/Typesetter.swift | 2 - .../TextView/TextView+ScrollToVisible.swift | 9 +- .../Utils/ViewReuseQueue.swift | 12 +- .../TextLayoutManagerTests.swift | 25 +++- .../TypesetterTests.swift | 3 - 14 files changed, 197 insertions(+), 64 deletions(-) create mode 100644 Sources/CodeEditTextView/Extensions/NSRange+/NSRange+translate.swift diff --git a/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+translate.swift b/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+translate.swift new file mode 100644 index 000000000..40f6251cc --- /dev/null +++ b/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+translate.swift @@ -0,0 +1,14 @@ +// +// NSRange+translate.swift +// CodeEditTextView +// +// Created by Khan Winter on 7/21/25. +// + +import Foundation + +extension NSRange { + func translate(location: Int) -> NSRange { + NSRange(location: self.location + location, length: length) + } +} diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Invalidation.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Invalidation.swift index 24fec8074..6b13819c6 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Invalidation.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Invalidation.swift @@ -25,6 +25,12 @@ extension TextLayoutManager { linePosition.data.setNeedsLayout() } + // Special case where we've deleted from the very end, `linesInRange` correctly does not return any lines + // So we need to invalidate the last line specifically. + if range.location == textStorage?.length, !lineStorage.isEmpty { + lineStorage.last?.data.setNeedsLayout() + } + layoutView?.needsLayout = true } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift index 074d8fcef..acf0ea0ae 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift @@ -79,7 +79,8 @@ extension TextLayoutManager { let maxY = max(visibleRect.maxY + verticalLayoutPadding, 0) let originalHeight = lineStorage.height var usedFragmentIDs = Set() - var forceLayout: Bool = needsLayout + let forceLayout: Bool = needsLayout + var didLayoutChange = false var newVisibleLines: Set = [] var yContentAdjustment: CGFloat = 0 var maxFoundLineWidth = maxLineWidth @@ -95,29 +96,17 @@ extension TextLayoutManager { let wasNotVisible = !visibleLineIds.contains(linePosition.data.id) let lineNotEntirelyLaidOut = linePosition.height != linePosition.data.lineFragments.height - if forceLayout || linePositionNeedsLayout || wasNotVisible || lineNotEntirelyLaidOut { - let lineSize = layoutLine( + defer { newVisibleLines.insert(linePosition.data.id) } + + func fullLineLayout() { + let (yAdjustment, wasLineHeightChanged) = layoutLine( linePosition, + usedFragmentIDs: &usedFragmentIDs, textStorage: textStorage, - layoutData: LineLayoutData(minY: minY, maxY: maxY, maxWidth: maxLineLayoutWidth), - laidOutFragmentIDs: &usedFragmentIDs + yRange: minY.. 0 { + // Layout happened and this line needs to be moved but not necessarily re-added + let needsFullLayout = updateLineViewPositions(linePosition) + if needsFullLayout { + fullLineLayout() + continue + } + } + // Make sure the used fragment views aren't dequeued. usedFragmentIDs.formUnion(linePosition.data.lineFragments.map(\.data.id)) } - newVisibleLines.insert(linePosition.data.id) } // Enqueue any lines not used in this layout pass. @@ -171,6 +172,42 @@ extension TextLayoutManager { // MARK: - Layout Single Line + private func layoutLine( + _ linePosition: TextLineStorage.TextLinePosition, + usedFragmentIDs: inout Set, + textStorage: NSTextStorage, + yRange: Range, + maxFoundLineWidth: inout CGFloat + ) -> (CGFloat, wasLineHeightChanged: Bool) { + let lineSize = layoutLineViews( + linePosition, + textStorage: textStorage, + layoutData: LineLayoutData(minY: yRange.lowerBound, maxY: yRange.upperBound, maxWidth: maxLineLayoutWidth), + laidOutFragmentIDs: &usedFragmentIDs + ) + let wasLineHeightChanged = lineSize.height != linePosition.height + var yContentAdjustment: CGFloat = 0.0 + var maxFoundLineWidth = maxFoundLineWidth + + if wasLineHeightChanged { + lineStorage.update( + atOffset: linePosition.range.location, + delta: 0, + deltaHeight: lineSize.height - linePosition.height + ) + + if linePosition.yPos < yRange.lowerBound { + // Adjust the scroll position by the difference between the new height and old. + yContentAdjustment += lineSize.height - linePosition.height + } + } + if maxFoundLineWidth < lineSize.width { + maxFoundLineWidth = lineSize.width + } + + return (yContentAdjustment, wasLineHeightChanged) + } + /// Lays out a single text line. /// - Parameters: /// - position: The line position from storage to use for layout. @@ -178,7 +215,7 @@ extension TextLayoutManager { /// - layoutData: The information required to perform layout for the given line. /// - laidOutFragmentIDs: Updated by this method as line fragments are laid out. /// - Returns: A `CGSize` representing the max width and total height of the laid out portion of the line. - private func layoutLine( + private func layoutLineViews( _ position: TextLineStorage.TextLinePosition, textStorage: NSTextStorage, layoutData: LineLayoutData, @@ -226,8 +263,13 @@ extension TextLayoutManager { // ) { for lineFragmentPosition in line.lineFragments { let lineFragment = lineFragmentPosition.data + lineFragment.documentRange = lineFragmentPosition.range.translate(location: position.range.location) - layoutFragmentView(for: lineFragmentPosition, at: position.yPos + lineFragmentPosition.yPos) + layoutFragmentView( + inLine: position, + for: lineFragmentPosition, + at: position.yPos + lineFragmentPosition.yPos + ) width = max(width, lineFragment.width) height += lineFragment.scaledHeight @@ -244,16 +286,32 @@ extension TextLayoutManager { /// - lineFragment: The line fragment position to lay out a view for. /// - yPos: The y value at which the line should begin. private func layoutFragmentView( + inLine line: TextLineStorage.TextLinePosition, for lineFragment: TextLineStorage.TextLinePosition, at yPos: CGFloat ) { + let fragmentRange = lineFragment.range.translate(location: line.range.location) let view = viewReuseQueue.getOrCreateView(forKey: lineFragment.data.id) { renderDelegate?.lineFragmentView(for: lineFragment.data) ?? LineFragmentView() } view.translatesAutoresizingMaskIntoConstraints = true // Small optimization for lots of subviews - view.setLineFragment(lineFragment.data, renderer: lineFragmentRenderer) + view.setLineFragment(lineFragment.data, fragmentRange: fragmentRange, renderer: lineFragmentRenderer) view.frame.origin = CGPoint(x: edgeInsets.left, y: yPos) layoutView?.addSubview(view, positioned: .below, relativeTo: nil) view.needsDisplay = true } + + private func updateLineViewPositions(_ position: TextLineStorage.TextLinePosition) -> Bool { + let line = position.data + for lineFragmentPosition in line.lineFragments { + guard let view = viewReuseQueue.getView(forKey: lineFragmentPosition.data.id) else { + return true + } + lineFragmentPosition.data.documentRange = lineFragmentPosition.range.translate( + location: position.range.location + ) + view.frame.origin = CGPoint(x: edgeInsets.left, y: position.yPos + lineFragmentPosition.yPos) + } + return false + } } diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift index e05c01c20..b73c17177 100644 --- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift +++ b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift @@ -112,12 +112,13 @@ extension TextLayoutManager { fragmentPosition: TextLineStorage.TextLinePosition, in linePosition: TextLineStorage.TextLinePosition ) -> Int? { - let endPosition = fragmentPosition.data.documentRange.max + let fragmentRange = fragmentPosition.range.translate(location: linePosition.range.location) + let endPosition = fragmentRange.max // If the endPosition is at the end of the line, and the line ends with a line ending character // return the index before the eol. if fragmentPosition.index == linePosition.data.lineFragments.count - 1, - let lineEnding = LineEnding(line: textStorage?.substring(from: fragmentPosition.data.documentRange) ?? "") { + let lineEnding = LineEnding(line: textStorage?.substring(from: fragmentRange) ?? "") { return endPosition - lineEnding.length } else if fragmentPosition.index != linePosition.data.lineFragments.count - 1 { // If this isn't the last fragment, we want to place the cursor at the offset right before the break @@ -175,7 +176,7 @@ extension TextLayoutManager { guard let fragmentPosition = linePosition.data.typesetter.lineFragments.getLine( atOffset: offset - linePosition.range.location ) else { - return nil + return CGRect(x: edgeInsets.left, y: linePosition.yPos, width: 0, height: linePosition.height) } // Get the *real* length of the character at the offset. If this is a surrogate pair it'll return the correct @@ -190,11 +191,11 @@ extension TextLayoutManager { let minXPos = characterXPosition( in: fragmentPosition.data, - for: realRange.location - fragmentPosition.data.documentRange.location + for: realRange.location - linePosition.range.location - fragmentPosition.range.location ) let maxXPos = characterXPosition( in: fragmentPosition.data, - for: realRange.max - fragmentPosition.data.documentRange.location + for: realRange.max - linePosition.range.location - fragmentPosition.range.location ) return CGRect( diff --git a/Sources/CodeEditTextView/TextLine/LineFragment.swift b/Sources/CodeEditTextView/TextLine/LineFragment.swift index 6671fb8ef..646bf76ba 100644 --- a/Sources/CodeEditTextView/TextLine/LineFragment.swift +++ b/Sources/CodeEditTextView/TextLine/LineFragment.swift @@ -47,8 +47,7 @@ public final class LineFragment: Identifiable, Equatable { } public let id = UUID() - public let lineRange: NSRange - public let documentRange: NSRange + public var documentRange: NSRange = .notFound public var contents: [FragmentContent] public var width: CGFloat public var height: CGFloat @@ -61,16 +60,12 @@ public final class LineFragment: Identifiable, Equatable { } init( - lineRange: NSRange, - documentRange: NSRange, contents: [FragmentContent], width: CGFloat, height: CGFloat, descent: CGFloat, lineHeightMultiplier: CGFloat ) { - self.lineRange = lineRange - self.documentRange = documentRange self.contents = contents self.width = width self.height = height diff --git a/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift b/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift index 4824e010b..6330d0ee0 100644 --- a/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift +++ b/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift @@ -122,7 +122,7 @@ public final class LineFragmentRenderer { context: context ) - let range = createTextRange(for: drawingContext) + let range = createTextRange(for: drawingContext).clamped(to: (textStorage.string as NSString).length) let string = (textStorage.string as NSString).substring(with: range) processInvisibleCharacters( @@ -177,7 +177,7 @@ public final class LineFragmentRenderer { guard let style = delegate.invisibleStyle( for: character, at: NSRange(start: range.location + index, end: range.max), - lineRange: drawingContext.lineFragment.lineRange + lineRange: drawingContext.lineFragment.documentRange ) else { return } diff --git a/Sources/CodeEditTextView/TextLine/LineFragmentView.swift b/Sources/CodeEditTextView/TextLine/LineFragmentView.swift index 58a793306..66af42872 100644 --- a/Sources/CodeEditTextView/TextLine/LineFragmentView.swift +++ b/Sources/CodeEditTextView/TextLine/LineFragmentView.swift @@ -11,6 +11,9 @@ import AppKit open class LineFragmentView: NSView { public weak var lineFragment: LineFragment? public weak var renderer: LineFragmentRenderer? +#if DEBUG_LINE_INVALIDATION + private var backgroundAnimation: CABasicAnimation? +#endif open override var isFlipped: Bool { true @@ -22,15 +25,55 @@ open class LineFragmentView: NSView { open override func hitTest(_ point: NSPoint) -> NSView? { nil } - /// Prepare the view for reuse, clears the line fragment reference. + public override init(frame frameRect: NSRect) { + super.init(frame: frameRect) + } + + required public init?(coder: NSCoder) { + super.init(coder: coder) + } + +#if DEBUG_LINE_INVALIDATION + /// Setup background animation from random color to clear when this fragment is invalidated. + private func setupBackgroundAnimation() { + self.wantsLayer = true + + let randomColor = NSColor( + red: CGFloat.random(in: 0...1), + green: CGFloat.random(in: 0...1), + blue: CGFloat.random(in: 0...1), + alpha: 0.3 + ) + + self.layer?.backgroundColor = randomColor.cgColor + + let animation = CABasicAnimation(keyPath: "backgroundColor") + animation.fromValue = randomColor.cgColor + animation.toValue = NSColor.clear.cgColor + animation.duration = 1.0 + animation.timingFunction = CAMediaTimingFunction(name: .easeOut) + animation.fillMode = .forwards + animation.isRemovedOnCompletion = false + self.layer?.add(animation, forKey: "backgroundColorAnimation") + + DispatchQueue.main.asyncAfter(deadline: .now() + animation.duration) { + self.layer?.backgroundColor = NSColor.clear.cgColor + } + } +#endif + open override func prepareForReuse() { super.prepareForReuse() lineFragment = nil + +#if DEBUG_LINE_INVALIDATION + setupBackgroundAnimation() +#endif } /// Set a new line fragment for this view, updating view size. /// - Parameter newFragment: The new fragment to use. - open func setLineFragment(_ newFragment: LineFragment, renderer: LineFragmentRenderer) { + open func setLineFragment(_ newFragment: LineFragment, fragmentRange: NSRange, renderer: LineFragmentRenderer) { self.lineFragment = newFragment self.renderer = renderer self.frame.size = CGSize(width: newFragment.width, height: newFragment.scaledHeight) diff --git a/Sources/CodeEditTextView/TextLine/TextLine.swift b/Sources/CodeEditTextView/TextLine/TextLine.swift index 2eee6f375..b9038a6f3 100644 --- a/Sources/CodeEditTextView/TextLine/TextLine.swift +++ b/Sources/CodeEditTextView/TextLine/TextLine.swift @@ -36,8 +36,6 @@ public final class TextLine: Identifiable, Equatable { // Both max widths we're comparing are finite maxWidth.isFinite && (self.maxWidth ?? 0.0).isFinite - // We can't use `<` here because we want to calculate layout again if this was previously constrained to a - // small layout size and needs to grow. && maxWidth != (self.maxWidth ?? 0.0) ) } @@ -57,14 +55,14 @@ public final class TextLine: Identifiable, Equatable { attachments: [AnyTextAttachment] ) { let string = stringRef.attributedSubstring(from: range) - self.maxWidth = displayData.maxWidth - typesetter.typeset( + let maxWidth = typesetter.typeset( string, documentRange: range, displayData: displayData, markedRanges: markedRanges, attachments: attachments ) + self.maxWidth = displayData.maxWidth needsLayout = false } diff --git a/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift b/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift index e74af78a9..f5b6ab6df 100644 --- a/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift +++ b/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift @@ -61,11 +61,6 @@ struct TypesetContext { /// Pop the current fragment state into a new line fragment, and reset the fragment state. mutating func popCurrentData() { let fragment = LineFragment( - lineRange: documentRange, - documentRange: NSRange( - location: fragmentContext.start + documentRange.location, - length: currentPosition - fragmentContext.start - ), contents: fragmentContext.contents, width: fragmentContext.width, height: fragmentContext.height, diff --git a/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift b/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift index 2bebfb69d..b5edb8594 100644 --- a/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift +++ b/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift @@ -230,8 +230,6 @@ final public class Typesetter { // Insert an empty fragment let ctLine = CTTypesetterCreateLine(typesetter, CFRangeMake(0, 0)) let fragment = LineFragment( - lineRange: documentRange ?? .zero, - documentRange: NSRange(location: (documentRange ?? .notFound).location, length: 0), contents: [.init(data: .text(line: ctLine), width: 0.0)], width: 0, height: displayData.estimatedLineHeight / displayData.lineHeightMultiplier, diff --git a/Sources/CodeEditTextView/TextView/TextView+ScrollToVisible.swift b/Sources/CodeEditTextView/TextView/TextView+ScrollToVisible.swift index c4cf1fa6c..bc5274ed3 100644 --- a/Sources/CodeEditTextView/TextView/TextView+ScrollToVisible.swift +++ b/Sources/CodeEditTextView/TextView/TextView+ScrollToVisible.swift @@ -29,10 +29,11 @@ extension TextView { layoutManager.layoutLines() selectionManager.updateSelectionViews() selectionManager.drawSelections(in: visibleRect) - } - if lastFrame != .zero { - scrollView.contentView.scrollToVisible(lastFrame) - scrollView.reflectScrolledClipView(scrollView.contentView) + + if lastFrame != .zero { + scrollView.contentView.scrollToVisible(lastFrame) + scrollView.reflectScrolledClipView(scrollView.contentView) + } } } diff --git a/Sources/CodeEditTextView/Utils/ViewReuseQueue.swift b/Sources/CodeEditTextView/Utils/ViewReuseQueue.swift index 15a65d014..3b85c6aeb 100644 --- a/Sources/CodeEditTextView/Utils/ViewReuseQueue.swift +++ b/Sources/CodeEditTextView/Utils/ViewReuseQueue.swift @@ -35,20 +35,28 @@ public class ViewReuseQueue { } else { view = queuedViews.popFirst() ?? createView() view.prepareForReuse() + view.isHidden = false usedViews[key] = view } return view } + public func getView(forKey key: Key) -> View? { + usedViews[key] + } + /// Removes a view for the given key and enqueues it for reuse. /// - Parameter key: The key for the view to reuse. public func enqueueView(forKey key: Key) { guard let view = usedViews[key] else { return } - if queuedViews.count < usedViews.count / 4 { + if queuedViews.count < usedViews.count { queuedViews.append(view) + view.frame = .zero + view.isHidden = true + } else { + view.removeFromSuperviewWithoutNeedingDisplay() } usedViews.removeValue(forKey: key) - view.removeFromSuperviewWithoutNeedingDisplay() } /// Enqueues all views not in the given set. diff --git a/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift index 3baab6c3a..f40c1b878 100644 --- a/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift +++ b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift @@ -212,15 +212,18 @@ struct TextLayoutManagerTests { ) } - /// Inserting a new line should cause layout going down the rest of the screen, because the following lines - /// should have moved their position to accomodate the new line. + /// ~~Inserting a new line should cause layout going down the rest of the screen, because the following lines + /// should have moved their position to accomodate the new line.~~ + /// This is slightly changed now. The layout manager checks if a line actually needs to be typeset again and only + /// invalidates it if it does. Otherwise it moves lines. This test now just checks that the invalidated lines + /// equal the expected invalidated lines. @Test func editsWithNewlinesForceLayoutGoingDownScreen() { layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000)) textStorage.replaceCharacters(in: NSRange(start: 4, end: 4), with: "Z\n") let expectedLineIds = Array( - layoutManager.lineStorage.linesInRange(NSRange(location: 4, length: 9)) + layoutManager.lineStorage.linesInRange(NSRange(location: 4, length: 4)) ).map { $0.data.id } #expect(layoutManager.needsLayout == false) // No forced layout for entire view @@ -250,4 +253,20 @@ struct TextLayoutManagerTests { } } } + + @Test + func editingEndOfDocumentInvalidatesLastLine() throws { + // Setup a slightly longer final line + textStorage.replaceCharacters(in: NSRange(location: 7, length: 0), with: "EFGH") + layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000)) + + textStorage.replaceCharacters(in: NSRange(location: 10, length: 1), with: "") + let invalidatedLineIds = layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000)) + + let expectedLineIds = Array( + layoutManager.lineStorage.linesInRange(NSRange(location: 6, length: 0)) + ).map { $0.data.id } + + #expect(invalidatedLineIds.isSuperset(of: Set(expectedLineIds))) + } } diff --git a/Tests/CodeEditTextViewTests/TypesetterTests.swift b/Tests/CodeEditTextViewTests/TypesetterTests.swift index d671ea6ff..92826c365 100644 --- a/Tests/CodeEditTextViewTests/TypesetterTests.swift +++ b/Tests/CodeEditTextViewTests/TypesetterTests.swift @@ -254,17 +254,14 @@ class TypesetterTests: XCTestCase { XCTAssertEqual(typesetter.lineFragments.count, 3) var fragment = try XCTUnwrap(typesetter.lineFragments.first?.data) - XCTAssertEqual(fragment.documentRange, NSRange(location: 0, length: 1)) XCTAssertEqual(fragment.contents.count, 1) XCTAssertTrue(fragment.contents[0].isText) fragment = try XCTUnwrap(typesetter.lineFragments.getLine(atIndex: 1)?.data) - XCTAssertEqual(fragment.documentRange, NSRange(location: 1, length: 1)) XCTAssertEqual(fragment.contents.count, 1) XCTAssertFalse(fragment.contents[0].isText) fragment = try XCTUnwrap(typesetter.lineFragments.getLine(atIndex: 2)?.data) - XCTAssertEqual(fragment.documentRange, NSRange(location: 2, length: 4)) XCTAssertEqual(fragment.contents.count, 1) XCTAssertTrue(fragment.contents[0].isText) } From d7ac3f11f22ec2e820187acce8f3a3fb7aa8ddec Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Wed, 30 Jul 2025 12:58:03 -0500 Subject: [PATCH 42/42] Add `fill` Emphasis Style Option (#120) ### Description Adds an option to fill in the color emphasis style. ### Related Issues * N/A ### Checklist - [x] I read and understood the [contributing guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md) as well as the [code of conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md) - [x] The issues this PR addresses are related to each other - [x] My changes generate no new warnings - [x] My code builds and runs on my machine - [x] My changes are all related to the related issue above - [x] I documented my code ### Screenshots N/A --- .../CodeEditTextView/EmphasisManager/EmphasisManager.swift | 4 ++-- .../CodeEditTextView/EmphasisManager/EmphasisStyle.swift | 6 +++--- Sources/CodeEditTextView/TextView/TextView.swift | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift b/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift index 833996be6..076bea2e2 100644 --- a/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift +++ b/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift @@ -233,11 +233,11 @@ public final class EmphasisManager { layer.fillColor = nil layer.opacity = emphasis.flash ? 0.0 : 1.0 layer.zPosition = 1 - case .outline(let color): + case let .outline(color, shouldFill): layer.cornerRadius = 2.5 layer.borderColor = color.cgColor layer.borderWidth = 0.5 - layer.fillColor = nil + layer.fillColor = shouldFill ? color.cgColor : nil layer.opacity = emphasis.flash ? 0.0 : 1.0 layer.zPosition = 1 } diff --git a/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift b/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift index 53fe1f29c..66b32a862 100644 --- a/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift +++ b/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift @@ -14,7 +14,7 @@ public enum EmphasisStyle: Equatable { /// Underline emphasis with a line color case underline(color: NSColor) /// Outline emphasis with a border color - case outline(color: NSColor) + case outline(color: NSColor, fill: Bool = false) public static func == (lhs: EmphasisStyle, rhs: EmphasisStyle) -> Bool { switch (lhs, rhs) { @@ -22,8 +22,8 @@ public enum EmphasisStyle: Equatable { return true case (.underline(let lhsColor), .underline(let rhsColor)): return lhsColor == rhsColor - case (.outline(let lhsColor), .outline(let rhsColor)): - return lhsColor == rhsColor + case let (.outline(lhsColor, lhsFill), .outline(rhsColor, rhsFill)): + return lhsColor == rhsColor && lhsFill == rhsFill default: return false } diff --git a/Sources/CodeEditTextView/TextView/TextView.swift b/Sources/CodeEditTextView/TextView/TextView.swift index f7537fb99..14ed3914e 100644 --- a/Sources/CodeEditTextView/TextView/TextView.swift +++ b/Sources/CodeEditTextView/TextView/TextView.swift @@ -33,7 +33,7 @@ import TextStory /// [`NSTextInputClient`](https://developer.apple.com/documentation/appkit/nstextinputclient) to work well with system /// text interactions such as inserting text and marked text. /// -public class TextView: NSView, NSTextContent { +open class TextView: NSView, NSTextContent { // MARK: - Statics /// The default typing attributes: @@ -356,7 +356,7 @@ public class TextView: NSView, NSTextContent { setUpDragGesture() } - required init?(coder: NSCoder) { + required public init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") }