From 79013c24c4d6d61ae9de9636d3e9fd8539335b18 Mon Sep 17 00:00:00 2001 From: a dinosaur Date: Fri, 13 Sep 2024 18:59:14 +1000 Subject: [PATCH] initial sprite batch implementation & testbed --- Sources/Voxelotl/CMakeLists.txt | 29 +- Sources/Voxelotl/GameDelegate.swift | 6 + Sources/Voxelotl/Program.swift | 2 +- Sources/Voxelotl/Renderer/Mesh.swift | 6 + .../Renderer/Metal/RendererDynamicMesh.swift | 70 ++++ .../Renderer/Metal/RendererTexture2D.swift | 20 ++ Sources/Voxelotl/Renderer/Renderer.swift | 136 ++++++-- Sources/Voxelotl/Renderer/Sprite.swift | 22 ++ Sources/Voxelotl/Renderer/SpriteBatch.swift | 324 ++++++++++++++++++ Sources/Voxelotl/SpriteTestGame.swift | 106 ++++++ Sources/Voxelotl/shader2D.metal | 28 ++ Sources/Voxelotl/shadertypes.h | 12 + Sources/Voxelotl/wireshark.png | Bin 0 -> 126640 bytes 13 files changed, 732 insertions(+), 29 deletions(-) create mode 100644 Sources/Voxelotl/Renderer/Metal/RendererDynamicMesh.swift create mode 100644 Sources/Voxelotl/Renderer/Metal/RendererTexture2D.swift create mode 100644 Sources/Voxelotl/Renderer/Sprite.swift create mode 100644 Sources/Voxelotl/Renderer/SpriteBatch.swift create mode 100644 Sources/Voxelotl/SpriteTestGame.swift create mode 100644 Sources/Voxelotl/shader2D.metal create mode 100644 Sources/Voxelotl/wireshark.png diff --git a/Sources/Voxelotl/CMakeLists.txt b/Sources/Voxelotl/CMakeLists.txt index 8dfaf8f..a641177 100644 --- a/Sources/Voxelotl/CMakeLists.txt +++ b/Sources/Voxelotl/CMakeLists.txt @@ -1,11 +1,13 @@ -add_executable(Voxelotl MACOSX_BUNDLE +set(SOURCES # Resources Assets.xcassets test.png + wireshark.png # Shaders shadertypes.h shader.metal + shader2D.metal # Common utility library Common/ConcurrentDictionary.swift @@ -48,6 +50,8 @@ add_executable(Voxelotl MACOSX_BUNDLE Renderer/ModelBatch.swift Renderer/BlendMode.swift Renderer/BlendFunc.swift + Renderer/Sprite.swift + Renderer/SpriteBatch.swift Renderer/ChunkRenderer.swift Renderer/Metal/BlendFuncExtension.swift Renderer/Metal/ColorExtension.swift @@ -55,6 +59,8 @@ add_executable(Voxelotl MACOSX_BUNDLE Renderer/Metal/PipelineOptions.swift Renderer/Metal/Shader.swift Renderer/Metal/RendererMesh.swift + Renderer/Metal/RendererDynamicMesh.swift + Renderer/Metal/RendererTexture2D.swift Renderer/RendererError.swift Renderer/Renderer.swift @@ -80,6 +86,7 @@ add_executable(Voxelotl MACOSX_BUNDLE Camera.swift Player.swift Game.swift + SpriteTestGame.swift # Core application classes GameDelegate.swift @@ -90,12 +97,16 @@ add_executable(Voxelotl MACOSX_BUNDLE main.m ) -set_source_files_properties( - shader.metal PROPERTIES - LANGUAGE METAL - COMPILE_OPTIONS "-I${PROJECT_SOURCE_DIR}" -) +foreach (SOURCE IN LISTS SOURCES) + if (SOURCE MATCHES "\\.metal$") + set_source_files_properties( + "${SOURCE}" PROPERTIES + LANGUAGE METAL + COMPILE_OPTIONS "-I${PROJECT_SOURCE_DIR}") + endif() +endforeach() +add_executable(Voxelotl MACOSX_BUNDLE ${SOURCES}) target_include_directories(Voxelotl PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}") target_link_libraries(Voxelotl PRIVATE SDLSwift) target_compile_definitions(Voxelotl PRIVATE $<$:DEBUG>) @@ -140,7 +151,11 @@ endif() set_source_files_properties(Assets.xcassets PROPERTIES MACOSX_PACKAGE_LOCATION Resources) set_source_files_properties(module.modulemap PROPERTIES MACOSX_PACKAGE_LOCATION Modules) -set_source_files_properties(test.png PROPERTIES MACOSX_PACKAGE_LOCATION Resources) +foreach (RESOURCE IN LISTS SOURCES) + if (RESOURCE MATCHES "\\.png$") + set_source_files_properties("${RESOURCE}" PROPERTIES MACOSX_PACKAGE_LOCATION Resources) + endif() +endforeach() #TODO: should use TREE mode as documented in https://cmake.org/cmake/help/latest/command/source_group.html source_group("Resources" FILES Assets.xcassets test.png) diff --git a/Sources/Voxelotl/GameDelegate.swift b/Sources/Voxelotl/GameDelegate.swift index 61fdcf2..69197f9 100644 --- a/Sources/Voxelotl/GameDelegate.swift +++ b/Sources/Voxelotl/GameDelegate.swift @@ -22,3 +22,9 @@ extension Duration { Double(components.seconds) + Double(components.attoseconds) * 1e-18 } } + +extension Float { + public init(_ value: Duration) { + self = Float(value.asFloat) + } +} diff --git a/Sources/Voxelotl/Program.swift b/Sources/Voxelotl/Program.swift index 576e156..c0dc6b8 100644 --- a/Sources/Voxelotl/Program.swift +++ b/Sources/Voxelotl/Program.swift @@ -5,7 +5,7 @@ import Foundation Thread.current.qualityOfService = .userInteractive let app = Application( - delegate: Game(), + delegate: SpriteTestGame(), configuration: ApplicationConfiguration( frame: Size(1280, 720), title: "Voxelotl Demo", diff --git a/Sources/Voxelotl/Renderer/Mesh.swift b/Sources/Voxelotl/Renderer/Mesh.swift index 0964d28..0ceff9c 100644 --- a/Sources/Voxelotl/Renderer/Mesh.swift +++ b/Sources/Voxelotl/Renderer/Mesh.swift @@ -21,3 +21,9 @@ public struct VertexPositionNormalColorTexcoord: Vertex { var color: SIMD4 var texCoord: SIMD2 } + +public struct VertexPosition2DTexcoordColor: Vertex { + var position: SIMD2 + var texCoord: SIMD2 + var color: SIMD4 +} diff --git a/Sources/Voxelotl/Renderer/Metal/RendererDynamicMesh.swift b/Sources/Voxelotl/Renderer/Metal/RendererDynamicMesh.swift new file mode 100644 index 0000000..ac8ee42 --- /dev/null +++ b/Sources/Voxelotl/Renderer/Metal/RendererDynamicMesh.swift @@ -0,0 +1,70 @@ +import Metal + +public struct RendererDynamicMesh { + private weak var _renderer: Renderer! + internal let _vertBufs: [MTLBuffer], _idxBufs: [MTLBuffer] + private var _numVertices: Int = 0, _numIndices: Int = 0 + + public let vertexCapacity: Int, indexCapacity: Int + public var vertexCount: Int { self._numVertices } + public var indexCount: Int { self._numIndices } + + init(renderer: Renderer, _ vertBufs: [MTLBuffer], _ idxBufs: [MTLBuffer]) { + self._renderer = renderer + self._vertBufs = vertBufs + self._idxBufs = idxBufs + self.vertexCapacity = self._vertBufs.map { $0.length }.min()! / MemoryLayout.stride + self.indexCapacity = self._idxBufs.map { $0.length }.min()! / MemoryLayout.stride + } + + public mutating func clear() { + self._numVertices = 0 + self._numIndices = 0 + } + + + public mutating func insert(vertices: [VertexType]) { + self.insert(vertices: vertices[...]) + } + + public mutating func insert(vertices: ArraySlice) { + assert(self._numVertices + vertices.count < self.vertexCapacity) + + let vertexBuffer: MTLBuffer = self._vertBufs[self._renderer.currentFrame] + vertexBuffer.contents().withMemoryRebound(to: VertexType.self, capacity: self.vertexCapacity) { vertexData in + for i in 0...stride + vertexBuffer.didModifyRange(stride * self._numVertices...stride + indexBuffer.didModifyRange(stride * self._numIndices.. + + internal init(metalTexture: MTLTexture, size: Size) { + self._textureBuffer = metalTexture + self.size = size + } + + public static func == (lhs: Self, rhs: Self) -> Bool { + lhs._textureBuffer.gpuResourceID._impl == rhs._textureBuffer.gpuResourceID._impl && lhs.size == rhs.size + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(self._textureBuffer.hash) + } +} + diff --git a/Sources/Voxelotl/Renderer/Renderer.swift b/Sources/Voxelotl/Renderer/Renderer.swift index 28782a5..cd4dc08 100644 --- a/Sources/Voxelotl/Renderer/Renderer.swift +++ b/Sources/Voxelotl/Renderer/Renderer.swift @@ -19,7 +19,7 @@ public class Renderer { private var _defaultShader: Shader, _shader2D: Shader private let passDescription = MTLRenderPassDescriptor() private var _psos: [PipelineOptions: MTLRenderPipelineState] - private var depthStencilState: MTLDepthStencilState + private var _depthStencilEnabled: MTLDepthStencilState, _depthStencilDisabled: MTLDepthStencilState private let _defaultStorageMode: MTLResourceOptions private var depthTextures: [MTLTexture] @@ -28,11 +28,14 @@ public class Renderer { private var _encoder: MTLRenderCommandEncoder! = nil - private var defaultTexture: MTLTexture - private var cubeTexture: MTLTexture? = nil + private var defaultTexture: RendererTexture2D + private var cubeTexture: RendererTexture2D? = nil private let inFlightSemaphore = DispatchSemaphore(value: numFramesInFlight) - private var currentFrame = 0 + private var _currentFrame = 0 + + internal var currentFrame: Int { self._currentFrame } + internal var isManagedStorage: Bool { self._defaultStorageMode == .storageModeManaged } var frame: Rect { .init(origin: .zero, size: self.backBufferSize) } var aspectRatio: Float { self._aspectRatio } @@ -101,15 +104,16 @@ public class Renderer { return depthStencilTexture } - //self._instances = [MTLBuffer?](repeating: nil, count: numFramesInFlight) - let stencilDepthDescription = MTLDepthStencilDescriptor() stencilDepthDescription.depthCompareFunction = .less // OpenGL default stencilDepthDescription.isDepthWriteEnabled = true - guard let depthStencilState = device.makeDepthStencilState(descriptor: stencilDepthDescription) else { + guard let depthStencilEnabled = device.makeDepthStencilState(descriptor: stencilDepthDescription), + let depthStencilDisabled = device.makeDepthStencilState(descriptor: MTLDepthStencilDescriptor()) + else { throw RendererError.initFailure("Failed to create depth stencil state") } - self.depthStencilState = depthStencilState + self._depthStencilEnabled = depthStencilEnabled + self._depthStencilDisabled = depthStencilDisabled // Create shader library & grab functions do { @@ -226,9 +230,51 @@ public class Renderer { } } + internal func createDynamicMesh( + vertexCapacity: Int, indexCapacity: Int + ) -> RendererDynamicMesh? { + let vertexBuffers: [MTLBuffer], indexBuffers: [MTLBuffer] + do { + let byteCapacity = MemoryLayout.stride * vertexCapacity + vertexBuffers = try Self.createDynamicBuffer(self.device, capacity: byteCapacity, self._defaultStorageMode) + } catch { + printErr("Failed to create vertex buffer") + return nil + } + do { + let byteCapacity = MemoryLayout.stride * indexCapacity + indexBuffers = try Self.createDynamicBuffer(self.device, capacity: byteCapacity, self._defaultStorageMode) + } catch { + printErr("Failed to create index buffer") + return nil + } + return .init(renderer: self, vertexBuffers, indexBuffers) + } + + private static func createDynamicBuffer(_ device: MTLDevice, capacity: Int, _ transitoryOpt: MTLResourceOptions + ) throws -> [MTLBuffer] { + try autoreleasepool { + try (0.. RendererTexture2D? { + do { + return try Self.loadTexture(self.device, self.queue, resourcePath: path, self._defaultStorageMode) + } catch { + printErr(error) + return nil + } + } + static func loadTexture(_ device: MTLDevice, _ queue: MTLCommandQueue, resourcePath path: String, _ transitoryOpt: MTLResourceOptions - ) throws -> MTLTexture { + ) throws -> RendererTexture2D { do { return try loadTexture(device, queue, url: Bundle.main.getResource(path), transitoryOpt) } catch ContentError.resourceNotFound(let message) { @@ -238,7 +284,7 @@ public class Renderer { static func loadTexture(_ device: MTLDevice, _ queue: MTLCommandQueue, url imageUrl: URL, _ transitoryOpt: MTLResourceOptions - ) throws -> MTLTexture { + ) throws -> RendererTexture2D { do { return try loadTexture(device, queue, image2D: try NSImageLoader.open(url: imageUrl), transitoryOpt) } catch ImageLoaderError.openFailed(let message) { @@ -248,7 +294,7 @@ public class Renderer { static func loadTexture(_ device: MTLDevice, _ queue: MTLCommandQueue, image2D image: Image2D, _ transitoryOpt: MTLResourceOptions - ) throws -> MTLTexture { + ) throws -> RendererTexture2D { try autoreleasepool { let texDesc = MTLTextureDescriptor() texDesc.width = image.width @@ -292,7 +338,7 @@ public class Renderer { } cmdBuffer.commit() - return newTexture + return .init(metalTexture: newTexture, size: .init(image.width, image.height)) } } @@ -348,7 +394,7 @@ public class Renderer { passDescription.colorAttachments[0].clearColor = MTLClearColor(self._clearColor) passDescription.colorAttachments[0].texture = rt.texture - passDescription.depthAttachment.texture = self.depthTextures[self.currentFrame] + passDescription.depthAttachment.texture = self.depthTextures[self._currentFrame] // Lock the semaphore here if too many frames are "in flight" _ = inFlightSemaphore.wait(timeout: .distantFuture) @@ -366,8 +412,7 @@ public class Renderer { encoder.setFrontFacing(.counterClockwise) // OpenGL default encoder.setViewport(Self.makeViewport(rect: self.frame)) - encoder.setDepthStencilState(depthStencilState) - encoder.setFragmentTexture(cubeTexture ?? defaultTexture, index: 0) + encoder.setFragmentTexture(cubeTexture?._textureBuffer ?? defaultTexture._textureBuffer, index: 0) self._encoder = encoder frameFunc(self) @@ -377,9 +422,9 @@ public class Renderer { commandBuf.present(rt) commandBuf.commit() - self.currentFrame &+= 1 - if self.currentFrame == numFramesInFlight { - self.currentFrame = 0 + self._currentFrame &+= 1 + if self._currentFrame == numFramesInFlight { + self._currentFrame = 0 } } } @@ -388,6 +433,10 @@ public class Renderer { return ModelBatch(self) } + func createSpriteBatch() -> SpriteBatch { + return SpriteBatch(self) + } + internal func setupBatch(environment: Environment, camera: Camera) { assert(self._encoder != nil, "setupBatch can't be called outside of a frame being rendered") @@ -404,6 +453,7 @@ public class Renderer { self._cameraPos = camera.position self._directionalDir = simd_normalize(environment.lightDirection) + self._encoder.setDepthStencilState(self._depthStencilEnabled) self._encoder.setCullMode(.init(environment.cullFace)) // Ideal as long as our uniforms total 4 KB or less @@ -412,6 +462,50 @@ public class Renderer { index: VertexShaderInputIdx.uniforms.rawValue) } + internal func setupBatch(blendMode: BlendMode, frame: Rect) { + assert(self._encoder != nil, "setupBatch can't be called outside of a frame being rendered") + + do { + try self.usePipeline(options: PipelineOptions( + colorFormat: self._layer.pixelFormat, depthFormat: depthFormat, + shader: self._shader2D, blendFunc: blendMode.function)) + } catch { + printErr(error) + } + + self._encoder.setDepthStencilState(self._depthStencilDisabled) + self._encoder.setCullMode(.none) + + var uniforms = Shader2DUniforms(projection: .orthographic( + left: frame.left, right: frame.right, + bottom: frame.down, top: frame.up, + near: 1, far: -1)) + + // Ideal as long as our uniforms total 4 KB or less + self._encoder.setVertexBytes(&uniforms, + length: MemoryLayout.stride, + index: VertexShaderInputIdx.uniforms.rawValue) + } + + internal func submit( + mesh: RendererDynamicMesh, + texture: RendererTexture2D?, + offset: Int, count: Int + ) { + assert(self._encoder != nil, "submit can't be called outside of a frame being rendered") + + self._encoder.setFragmentTexture(texture?._textureBuffer ?? defaultTexture._textureBuffer, index: 0) + self._encoder.setVertexBuffer(mesh._vertBufs[self._currentFrame], + offset: 0, + index: VertexShaderInputIdx.vertices.rawValue) + self._encoder.drawIndexedPrimitives( + type: .triangle, + indexCount: count, + indexType: .uint16, // Careful! + indexBuffer: mesh._idxBufs[self._currentFrame], + indexBufferOffset: MemoryLayout.stride * offset) + } + internal func submit(mesh: RendererMesh, instance: ModelBatch.Instance, material: Material) { assert(self._encoder != nil, "submit can't be called outside of a frame being rendered") var instanceData = VertexShaderInstance( @@ -452,16 +546,16 @@ public class Renderer { let instancesBytes = numInstances * MemoryLayout.stride // (Re)create instance buffer if needed - if self._instances[self.currentFrame] == nil || instancesBytes > self._instances[self.currentFrame]!.length { + if self._instances[self._currentFrame] == nil || instancesBytes > self._instances[self._currentFrame]!.length { guard let instanceBuffer = self.device.makeBuffer( length: instancesBytes, options: self._defaultStorageMode) else { fatalError("Failed to (re)create instance buffer") } - self._instances[self.currentFrame] = instanceBuffer + self._instances[self._currentFrame] = instanceBuffer } - let instanceBuffer = self._instances[self.currentFrame]! + let instanceBuffer = self._instances[self._currentFrame]! // Convert & upload instance data to the GPU //FIXME: currently will misbehave if batch is called more than once diff --git a/Sources/Voxelotl/Renderer/Sprite.swift b/Sources/Voxelotl/Renderer/Sprite.swift new file mode 100644 index 0000000..d3a5653 --- /dev/null +++ b/Sources/Voxelotl/Renderer/Sprite.swift @@ -0,0 +1,22 @@ +public struct Sprite { + public struct Flip: OptionSet { + public let rawValue: UInt16 + public init(rawValue: UInt16) { + self.rawValue = rawValue + } + + public static let none: Self = Self(rawValue: 0) + public static let x: Self = Self(rawValue: 1 << 0) + public static let y: Self = Self(rawValue: 1 << 1) + } + + var texture: RendererTexture2D + var position: SIMD2 + var scale: SIMD2 + var origin: SIMD2 + var shear: SIMD2 = .zero + var angle: Float + var depth: Int + var flip: Flip + var color: Color +} diff --git a/Sources/Voxelotl/Renderer/SpriteBatch.swift b/Sources/Voxelotl/Renderer/SpriteBatch.swift new file mode 100644 index 0000000..ef22ea4 --- /dev/null +++ b/Sources/Voxelotl/Renderer/SpriteBatch.swift @@ -0,0 +1,324 @@ +import simd + +public typealias Affine2D = simd_float2x2 + +public struct SpriteBatch { + public typealias VertexType = VertexPosition2DTexcoordColor + public typealias IndexType = UInt16 + + private weak var _renderer: Renderer! + private var _active = ActiveState.inactive + private var _blendMode = BlendMode.none + + private var _mesh: RendererDynamicMesh + private var _instances = [SpriteInstance]() + + public var viewport: Rect? = nil + + internal init(_ renderer: Renderer) { + self._renderer = renderer + self._mesh = renderer.createDynamicMesh(vertexCapacity: 4096, indexCapacity: 4096)! + } + + //MARK: - Public API + + //TODO: Sort + //FIXME: currently will misbehave if begin is called more than once per frame + public mutating func begin(blendMode: BlendMode = .normal) { + assert(self._active == .inactive, "call to SpriteBatch.begin without first calling end") + self._blendMode = blendMode + self._active = .begin + self._mesh.clear() + } + + public mutating func end() { + assert(self._active != .inactive, "call to SpriteBatch.end without first calling begin") + if !self._instances.isEmpty { + self.flush() + } + self._active = .inactive + } + + public mutating func draw(_ sprite: Sprite) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + fatalError("TODO") + } + + public mutating func draw(_ texture: RendererTexture2D, position: SIMD2) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + self.drawQuad(texture, position: position, size: Size(texture.size)) + } + + public mutating func draw(_ texture: RendererTexture2D, position: SIMD2, + scale: SIMD2, + angle: Float = 0.0, origin: SIMD2 = .zero, + flip: Sprite.Flip = .none, + color: Color = .white + //depth: Int = 0 + ) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let size = Size(texture.size) + let color = color.linear + if angle != 0 { + let bias = SIMD2(origin) / SIMD2(size) + self.drawQuad(texture, position: position, angle: angle, size: size * scale, offset: bias, color: color) + } else { + self.drawQuad(texture, position: position - origin, size: size * scale, color: color) + } + } + + public mutating func draw(_ texture: RendererTexture2D, position: SIMD2, + scale: Float = 1.0, + angle: Float = 0.0, origin: SIMD2 = .zero, + flip: Sprite.Flip = .none, + color: Color = .white + //depth: Int = 0 + ) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let size = Size(texture.size) + let color = color.linear + if angle != 0 { + let bias = SIMD2(origin) / SIMD2(size) + self.drawQuad(texture, position: position, angle: angle, size: size * Size(scalar: scale), offset: bias, color: color) + } else { + self.drawQuad(texture, position: position - origin, size: size * scale, color: color) + } + } + + public mutating func draw(_ texture: RendererTexture2D, destination: Rect?) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let rect = destination ?? self.viewport ?? Rect(self._renderer.frame) + self.drawQuad(texture, + p00: SIMD2(rect.left, rect.up), p10: SIMD2(rect.right, rect.up), + p01: SIMD2(rect.left, rect.down), p11: SIMD2(rect.right, rect.down)) + } + + public mutating func draw(_ texture: RendererTexture2D, transform: simd_float3x3) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let w = Float(texture.size.w), h = Float(texture.size.h) + self.drawQuad(texture, + p00: (transform * .init(0, 0, 1)).xy, + p10: (transform * .init(w, 0, 1)).xy, + p01: (transform * .init(0, h, 1)).xy, + p11: (transform * .init(w, h, 1)).xy) + } + + public mutating func draw(_ texture: RendererTexture2D, transform: simd_float3x3, + flip: Sprite.Flip = .none, + color: Color = .white + ) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let w = Float(texture.size.w), h = Float(texture.size.h) + self.drawQuad(texture, + p00: (transform * .init(0, 0, 1)).xy, + p10: (transform * .init(w, 0, 1)).xy, + p01: (transform * .init(0, h, 1)).xy, + p11: (transform * .init(w, h, 1)).xy, + flip: flip, color: color.linear) + } + + public mutating func draw(_ texture: RendererTexture2D, source: Rect, position: SIMD2) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let size = source.size + self.drawQuad(texture, source, + p00: .init(position.x, position.y), + p10: .init(position.x + size.w, position.y), + p01: .init(position.x, position.y + size.h), + p11: position + SIMD2(size)) + } + + public mutating func draw(_ texture: RendererTexture2D, source: Rect, position: SIMD2, + scale: SIMD2, color: Color = .white + ) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let size = source.size * scale + self.drawQuad(texture, source, + p00: .init(position.x, position.y), + p10: .init(position.x + size.w, position.y), + p01: .init(position.x, position.y + size.h), + p11: position + SIMD2(size), + color: color.linear) + } + public mutating func draw(_ texture: RendererTexture2D, source: Rect, position: SIMD2, + scale: Float = 1.0, color: Color = .white + ) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let size = source.size * scale + self.drawQuad(texture, source, + p00: .init(position.x, position.y), + p10: .init(position.x + size.w, position.y), + p01: .init(position.x, position.y + size.h), + p11: position + SIMD2(size), + color: color.linear) + } + + //TODO: Everything + //public mutating func draw(_ texture: RendererTexture2D, source: Rect, position: SIMD2, scale: SIMD2, angle: Float = 0.0, origin: Point = .zero, flip: Sprite.Flip = .none, color: Color = .white, depth: Int = 0) { + //public mutating func draw(_ texture: RendererTexture2D, source: Rect, position: SIMD2, scale: Float = 1.0, angle: Float = 0.0, origin: Point = .zero, flip: Sprite.Flip = .none, color: Color = .white, depth: Int = 0) { + + public mutating func draw(_ texture: RendererTexture2D, source: Rect, destination: Rect?) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let dst = destination ?? self.viewport ?? Rect(self._renderer.frame) + self.drawQuad(texture, source, + p00: SIMD2(dst.left, dst.up), p10: SIMD2(dst.right, dst.up), + p01: SIMD2(dst.left, dst.down), p11: SIMD2(dst.right, dst.down)) + } + + public mutating func draw(_ texture: RendererTexture2D, source: Rect, destination: Rect?, + color: Color = .white + ) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let dst = destination ?? self.viewport ?? Rect(self._renderer.frame) + self.drawQuad(texture, source, + p00: SIMD2(dst.left, dst.up), p10: SIMD2(dst.right, dst.up), + p01: SIMD2(dst.left, dst.down), p11: SIMD2(dst.right, dst.down), + color: color.linear) + } + + //TODO: Destination with rotation + + public mutating func draw(_ texture: RendererTexture2D, source: Rect, transform: simd_float3x3) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let w = source.size.w, h = source.size.h + self.drawQuad(texture, source, + p00: (transform * .init(0, 0, 1)).xy, + p10: (transform * .init(w, 0, 1)).xy, + p01: (transform * .init(0, h, 1)).xy, + p11: (transform * .init(w, h, 1)).xy) + } + + public mutating func draw(_ texture: RendererTexture2D, source: Rect, transform: simd_float3x3, + flip: Sprite.Flip = .none, color: Color = .white + ) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let w = source.size.w, h = source.size.h + self.drawQuad(texture, source, + p00: (transform * .init(0, 0, 1)).xy, + p10: (transform * .init(w, 0, 1)).xy, + p01: (transform * .init(0, h, 1)).xy, + p11: (transform * .init(w, h, 1)).xy, + color: color.linear) + } + + public mutating func draw(_ texture: RendererTexture2D, vertices: [VertexType]) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let base = self._mesh.vertexCount + self._mesh.insert(vertices: vertices) + self._mesh.insert(indices: (0..) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let base = self._mesh.vertexCount + self._mesh.insert(vertices: vertices) + self._mesh.insert(indices: (0..) { + assert(self._active != .inactive, "call to SpriteBatch.draw without calling begin") + let base = self._mesh.vertexCount + self._mesh.insert(vertices: mesh.vertices) + self._mesh.insert(indices: mesh.indices, baseVertex: base) + self._instances.append(.init(texture: texture, size: UInt16(mesh.indices.count))) + } + + //MARK: - Private implementation + + private mutating func flush() { + assert(self._instances.count > 0) + + if self._active == .begin { + self._renderer.setupBatch(blendMode: self._blendMode, frame: self.viewport ?? .init(self._renderer.frame)) + self._active = .active + } + + var base = 0, offset = 0 + var prevTexture: RendererTexture2D! = nil + for instance in self._instances { + if prevTexture != nil && prevTexture != instance.texture { + self._renderer.submit(mesh: self._mesh, texture: prevTexture, offset: base, count: offset - base) + base = offset + } + offset += Int(instance.size) + prevTexture = instance.texture + } + self._renderer.submit(mesh: self._mesh, texture: prevTexture, offset: base, count: offset - base) + + self._instances.removeAll(keepingCapacity: true) + } + + private mutating func drawQuad(_ texture: RendererTexture2D, + position: SIMD2, size: Size, color: Color = .white + ) { + self.drawQuad(texture, + p00: position, + p10: .init(position.x + size.w, position.y), + p01: .init(position.x, position.y + size.h), + p11: .init(position.x + size.w, position.y + size.h), color: color) + } + + private mutating func drawQuad(_ texture: RendererTexture2D, + position: SIMD2, angle: Float, size: Size, offset bias: SIMD2, color: Color = .white + ) { + let (tc, ts) = (cos(angle), sin(angle)) + let rotate = matrix_float2x2( + .init( tc, ts), + .init(-ts, tc)) + let right = SIMD2(size.w, 0) * rotate + let down = SIMD2(0, size.h) * rotate + self.drawQuad(texture, + p00: position - right * bias.x - down * bias.y, + p10: position + right * (1 - bias.x) - down * bias.y, + p01: position - right * bias.x + down * (1 - bias.y), + p11: position + right * (1 - bias.x) + down * (1 - bias.y), color: color) + } + + private mutating func drawQuad(_ texture: RendererTexture2D, + p00: SIMD2, p10: SIMD2, p01: SIMD2, p11: SIMD2, + flip: Sprite.Flip, color: Color = .white + ) { + let flipX = flip.contains(.x), flipY = flip.contains(.y) + self.drawQuad(texture, p00: p00, p10: p10, p01: p01, p11: p11, + t00: .init(flipX ? 1 : 0, flipY ? 0 : 1), + t10: .init(flipX ? 0 : 1, flipY ? 0 : 1), + t01: .init(flipX ? 1 : 0, flipY ? 1 : 0), + t11: .init(flipX ? 0 : 1, flipY ? 1 : 0), + color: color) + } + + private mutating func drawQuad(_ texture: RendererTexture2D, _ source: Rect, + p00: SIMD2, p10: SIMD2, p01: SIMD2, p11: SIMD2, + color: Color = .white + ) { + let invSize = 1 / Size(texture.size) + let st = Extent(source) * invSize + self.drawQuad(texture, p00: p00, p10: p10, p01: p01, p11: p11, + t00: SIMD2(st.left, st.top), t10: SIMD2(st.right, st.top), + t01: SIMD2(st.left, st.bottom), t11: SIMD2(st.right, st.bottom), color: color) + } + + private mutating func drawQuad(_ texture: RendererTexture2D, + p00: SIMD2, p10: SIMD2, p01: SIMD2, p11: SIMD2, + t00: SIMD2 = SIMD2(0, 1), t10: SIMD2 = SIMD2(1, 1), + t01: SIMD2 = SIMD2(0, 0), t11: SIMD2 = SIMD2(1, 0), + color: Color = .white + ) { + let color = SIMD4(color) + let base = self._mesh.vertexCount + self._mesh.insert(vertices: zip([ p00, p01, p10, p11 ], [ t00, t01, t10, t11 ]) + .map { .init(position: $0, texCoord: $1, color: color) }) + self._mesh.insert(indices: [ 0, 1, 2, 2, 1, 3 ], baseVertex: base) + self._instances.append(.init(texture: texture, size: 6)) + } + + internal struct SpriteInstance { + let texture: RendererTexture2D + let size: IndexType + } + + internal enum ActiveState { + case inactive, begin, active + } +} diff --git a/Sources/Voxelotl/SpriteTestGame.swift b/Sources/Voxelotl/SpriteTestGame.swift new file mode 100644 index 0000000..d1c5f17 --- /dev/null +++ b/Sources/Voxelotl/SpriteTestGame.swift @@ -0,0 +1,106 @@ +import Foundation +import simd + +internal class SpriteTestGame: GameDelegate { + private var spriteBatch: SpriteBatch! + private var player = TestPlayer(position: .one * 10) + private var texture: RendererTexture2D! + private var wireShark: RendererTexture2D! + + private static let levelWidth = 40, levelHeight = 23 + private var level: [UInt8] + + init() { + self.level = .init(repeating: 0, count: Self.levelWidth * Self.levelHeight) + for i in 0..(renderer.frame.size)) * 0.01), + destination: nil, + color: .init(renderer.clearColor).setAlpha(0.7)) + + // Draw level + let scale: Float = 64 + for y in 0..(renderer.frame.size)) + mpos *= SIMD2(self.spriteBatch.viewport!.size) + } + let inter = 0.5 + sin(player.rotate * 10) * 0.5 + let color = Color.green.mix(.white, 0.3) + let mesh = Mesh.init(vertices: [ + .init(position: mpos, texCoord: .zero, color: .one), + .init(position: mpos + .init(50, 0) + .init(-50, 50) * inter, texCoord: .zero, color: SIMD4(color)), + .init(position: mpos + .init(0, 50) + .init( 50, -50) * inter, texCoord: .zero, color: SIMD4(color)), + .init(position: mpos + .init(80, 80), texCoord: .zero, color: .zero) + ], indices: [ 0, 1, 2, 1, 2, 3 ]) + if Mouse.down(.left) { + self.spriteBatch.draw(self.texture, mesh: mesh) + } else { + self.spriteBatch.draw(self.texture, vertices: mesh.vertices[..<3]) + } + self.spriteBatch.end() + } +} + +fileprivate struct TestPlayer { + var position: SIMD2 + var rotate: Float = 0 +} + +fileprivate extension Color { + func setAlpha(_ newAlpha: T) -> Self { + return .init(r: r, g: g, b: b, a: newAlpha) + } +} diff --git a/Sources/Voxelotl/shader2D.metal b/Sources/Voxelotl/shader2D.metal new file mode 100644 index 0000000..7220617 --- /dev/null +++ b/Sources/Voxelotl/shader2D.metal @@ -0,0 +1,28 @@ +#include "shadertypes.h" +#include + + +struct FragmentInput { + float4 position [[position]]; + float2 texCoord; + half4 color; +}; + +vertex FragmentInput vertex2DMain(uint vertexID [[vertex_id]], + device const Vertex2D* vtx [[buffer(VertexShaderInputIdxVertices)]], + constant Shader2DUniforms& u [[buffer(VertexShaderInputIdxUniforms)]] +) { + FragmentInput out; + out.position = u.projection * float4(vtx[vertexID].position, 0.0, 1.0); + out.texCoord = vtx[vertexID].texCoord; + out.color = half4(vtx[vertexID].color); + return out; +} + +fragment half4 fragment2DMain(FragmentInput in [[stage_in]], + metal::texture2d texture [[texture(0)]] +) { + constexpr metal::sampler sampler(metal::address::repeat, metal::filter::linear); + half4 texel = texture.sample(sampler, in.texCoord); + return texel * in.color; +} diff --git a/Sources/Voxelotl/shadertypes.h b/Sources/Voxelotl/shadertypes.h index c6041d4..9541dab 100644 --- a/Sources/Voxelotl/shadertypes.h +++ b/Sources/Voxelotl/shadertypes.h @@ -45,4 +45,16 @@ typedef struct { float specularIntensity; } FragmentShaderUniforms; +#pragma mark - UI & 2D Shader + +typedef struct { + vector_float2 position; + vector_float2 texCoord; + vector_float4 color; +} Vertex2D; + +typedef struct { + matrix_float4x4 projection; +} Shader2DUniforms; + #endif//SHADERTYPES_H diff --git a/Sources/Voxelotl/wireshark.png b/Sources/Voxelotl/wireshark.png new file mode 100644 index 0000000000000000000000000000000000000000..f22f50c95d8683fc47a3110a36319eb01a1489f4 GIT binary patch literal 126640 zcmV*gKu^DkP)YbT^?~l)&drzYPKhK>z_q2o%Lavc#&z}7`#<>6O z+qa7^U%vcTME+xB`5}ZYe*G%b0Du>_P3Tdw*jiQB^}bE)M@E(hfaVtf zP_oIp9YRGppaSq=c2UjRVKo^{)?(q2>5%82uLnY*e|EA-yeH*emwjVvAjEf)YF zIXyk?*LA(8s*O+M_UY63WudnurQN>qU~_Zxg^|SrpydJpBu&#ix}40{Q;D})Dt2x( z-EOz(yAbyj`}Xa>8Cfg< zS}p)UVujsY-eQk7gp0?{#S1-^xnHLz+wBc;&y6e=04)~)AW_v?CdAfVS?1E|bbmJ- z4*zasaR6w!007Cfq$xdw;Lv+H4?;jdj3;CvQ>EfAi@lI0^xch(jYA^<=1(Ur0>G_Xx1M^Li%9&rq^oi|FO#Np zFZ1ngw|ig&!2AV2lp%x=doO!bRacAn)GcLkm*@UAI6qGh!tKjKLI}|qqX0lD|BZS6 z!k8)Y$=o++dGP-I`-esV%$H7D1OO}MXlfIUT*XsD@BoZo7{|KY=jzZwBBKUyvTK+`l^A%q<(<2@_&%2H0{#dRw2 zD($A09)$Ck&pa^#V19xh2qC2S?%PXz#|*rb&BO`ZQWU)ZJWbP@m%0Dln#?tX5Vc4S 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

wc?LzAS%y|0cEvXyd+2sW-N} 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 z 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

_0sW8uc&xwh7_a~ z?eWgK+<;S(GWh=Ye}F&wqd&rTe;^}Ky}(-+!w+!#-L`-mW>Kn=JAxJOo1Bi zvbgehar79>Lp@Oba7oWC{yscv>?E9jAD88P&!0aB{sL#5ELevy^p5F`eaWNVxPFCT z{)KqAJ5tAv>5SeTwDS{svZ8M=#T1wbn6|>aR<`<3o|~QDXGk)@Gpv8{SD#VHMA98p z*UKqs|^q!)hp=n+cRG6JztBY3G-6vQWF|UPxW}m;W7nOGYDK1~2+>z&}I6 zxp|G@wIRrww7Om!g=JTgHm{TU02bLV>6s;U;Ta1)1*z%Pnd1SaB zT3Hiyy3g4H^VYTNjM5}!+NYju=4!ID0SApX2|G)D>o0Nq@KNz>kKvFK>{K?D;rLk} z@tMr%p-%*y?g|((_nW4=e0zWdOHVFK*KqP*C|D#_4N`V``d{#^0dx5> z_%;k7F+38__-KDo61>PFPs~Rb!`SX5<9Kg`i!!$kr{NmCK%2%RDH)ES=-r%kAk%v7 zne|zfry%c{^oEp%NsZ=%<OThd0 ze(!gCgMgv?%;-e4GPr=C>1qpv!A4?;oeQdQdQ6!NGHtQ8MY8T}<_@wPX3Q<$%8q|u z?Cfq+h{Ssm4DsFXe2*niPh?&usC>?FcuxJ|qd8b)%e|xP&nXsQ;=zS$Z+$pSlt%JeHUBixS_;EsJI5o4uWl``-LZ)YSYP8F^?rBjH!61DkP@alw`gK_wO<) z0i3|F3H;q3J$@wTd#jI>Fi-x=Uwuk)B1`oGWmhdCM$SmBlvbx!jDYEjyfNdr_Ojre zR)#Ru#ADa^=s1o1Ik)#g+10KF#=7VHvXK{;h8`Hu7dijdw;x*1Z941~S=6zC3a>G_ z)`VMfR-#xJB*cD(A={%Tjx+4eGPL2aENQcFc1-=G$IJAT0lA9CBwaUBdCyxf0>^FQ zLg6cMTA6j|yfp9&5?z@$=YIKk(J0A*BxbImvo7Mc+)H0v{QRGVZ_#Mv3*p-^p4_{A zTAFXnHV$o&?QNRCF2gZIT|^Nf)An=esg}Vj?a0-Eq0$h^Oed?oSfoo!)qBryyBN4E zAxhIuLZVL?{-ZGvB76$w9C)7z+)Ydb^x>ezbTCBIk_pNS)}>@ES!Gz6TIv#OBd=V& zjI-y?h)~L_{Cx51q$KMVA;LYNr!>7hWvCHwXo9NA6|$c>SxqsUnY<_U)E|BLF+EN> zH`Yq`!X6YBQQ{Od@?qKcdZAAdQSUu(EPMlC-IkowIgXcty<5WUtslrmxVYV)vV4o) z?A|_N8)>0$$=~FuI$F{E&!WlFOE-*rp+SWWC$SfhU z?8&SPTj_yPoBXPPv`dLz>?`Mc;hQ6R4KmV!E2;zjr9{)VYl-V)upB-^VLcwrG*4y-UK zL;qf-K;0tn%DTKOs2e=-@fxr6Z)V3XfLXaN+*yQ~iC4LKy49$(`Io?S0pvN?$)bbs z=ki?phO_*Q)Gzf_)d`;g9f@96n%tYyCr=T`UwQRaoKfPNTzjlDZw5nFUGTRmfm6$N zJ9@e1k(=sc(iwAt8TKAFBB~mGBjiOC6sZ(eE zN8c(imoJ2G!;tUMetG@I|3n&Z{L@dK8tWQH6bExK3Ol^e=q*}92zciT@ldC^West5 z9YQNJc!VaylU=MZqYWxZ2GJWjgkEsLp>Ymz+Tw}ipVO@41@B`-FcE|Rf_dmekv*6X zNg^7xeW<-)fcj8I0GOZk4MV8{=66I2^D-`+yU>F<8y~do5xF@};@x-OK}vnTaF?Y( z{f*{B0}`uPUzzwlW~oKY9U2UA?(8|d|H1os{f#&1l?zx(R#<6S>2auMQsh5#jLh>-c~1M}MD%1b5*c$Ae#DMM z6Rr>#g>1*Fi7vIp54DKztIsX1RZh#xsOI{%z2V6(hAl~5TnGB=kcQ1;@$l|Q3PXsh zB)y6LItgzBCTd6U+FP6>+2T7#i@vO0;DmQoN5EVF`7#Guc^fV$Kq-%<9tkM=+Anvb zOAuKO=!+ELuw0vci9ifTE*0K<+4u&*Io=0{WNkWr^tgE9XK>-dD|q$%D=bHo4s`5D zC~K0I<&r~E+y<)9X3bN~E2p<^X`4coFtb8~+XaaOubS+c+c~2EaGhniUni?%ai-L=X-d1}epBEP3`+9t}x|J97LeNjZI1l>C$xyn>dD%A3c0P{b?$<#g^q}R-Y=f?()TadiLgqFLy#J z5V!rgZ!8|I^OqG+@dcbb=LzeL?-p7DAgHGpi#+ObsZA@1a;a>4Y73XKh3n%~LCVVW zWT=0--%&MndS zXnxhuh&m#IJ=?Ms&2-kd@9pi-sO4>tT-l|~!onGj+qs5G`FPoDz{cXdb^S74r(G(< zN9MnWa|uXWsJ;T~Wd=ZHw3g?-M4Ns2YqDt+7-5kqG8Y_%gAt8&iNw)>e?5Xpn=M*!$CoPlOc{fsQZZFMrerXXHoXfiop1@d_@7aqH=F)xhYawZF? zFK9An#J73B3a`f-(t7#ZIGS(S7n6GCD<4VT=ab{dPY5Wj@j_w9+GhmU5O|PX5z6J% zI!tE-67?$)vO}8^96j`ata{pwmSzOLumCg#BJVwkBYj!N{*he^bKOopPG;ZnHj^UZV0*gZV9ta1?;9 zEh>tRZHt#x^Wbe$dXtNj=rx#>Kv@j_{WPzadIh%$-{G49e<$tWRG!OnK+k#ZxfQ#G z>X|L>bw;p~$W@~eEZdW)fdJpmF3DSxFDHSo@eM=nGdA>@RjqRq{^mwDsgFp{C(5;U zoAvN(E33#kaRC(-Hj9=et)bVo-6CdrZYg#)kNhiCh0RUn6ikA-qt-KDFe*H*K-swk z#?WHooI7A;n|^*>G|K(LRDz?^FrbRtVR3j)3V@$IcTPO>vp9b8v=HBp(g6`5C!c|% zSSMpn*8HUF7-Cl^Ct3H$RFKl@zHO-c{@1Nxa^0jDwfdV**cQdLW8VAXzz8FZ$4{Je z-%2o-FNSZ^kni)0OBXMHIvS4O?-vtFDR-R-9k32rK|6W7xsjX&j*DweBdD4inz$C( zJL@<^K^ZOA;4zUbtg5xnQr;on)%3Vwz>dsFkk0UdV1wi{J@GsoS@R7?2QbkyQ!Qch z{8+==4A2J8Fs0;EC69WYpLP7$aSWS2)IX&9+3M<8JnVf6wKRjk8qodegpDZJxeN|R zr3~de-}w$cc>jILm7k#!RNGGb@H~~nOlupN9pAEkhaTK(AK4e%WX~;*nb*(Pg*17= z`&?e4#ZiVH$#zZl=wQ&Ww5&smR4s%C-iF5YwnPIvf8{b%i>)iY$=W;5^Xh~RV0J0~ zvJZ|K_}toP6Y< zJio_xUZibaJ-Zb23-))I!wv}C9*m4>Fj`=t$0fw2MlBH&)~cv1JfEaaFMKz`s8OgDZN2mmygc4F0^N)GiU+^w9IO)s&u%NY8~ou35;!T&ns+b5iUE zUQ;n$OAns2?$fTOTLt75=YB!tBrikl62P6#4EE%fMmIF>S}ir)db*?MaxnMb&LbCw zf@9?iz1Vghq0P7xwV(P-!%~GDnR`Z3)uZbzl;}abHexVL@P0r*KeTyR!tKX#M7;FX z)m4PS2re{$DNq(7zbPw_16|721uZ3j(-`IzXRZFrWjk+6Wm;<`eN0c8b91V z>!1_!si;t%IeYevZ!MV1m&3Ph$amU)eD@Ld_a_uXU{^AVg+%5b%P>uCA!_KR@YFNB zddVHzrFO_9)oG&gW94p(J?)?TTvQWh&EOVN@aZLglsAq32^%e={a-&YbpoS5Tmn=?Q2Tr`i$cmZf?{?YvCx z@d2$CD9famRu;o8A^LSx=X)LpL3#;&t_E`RW{Y%#Li$1$_u}6zExVjbK=+Pmi;azq zKFmz6$o~Ew$)2A|+1zv%`MR+Dcr|CEpal~25K_dj@mTGn5&)xIvs8&HFF$p=K1JxYtvCtB z{TQf3Cl#;sae0J>fExj;v48IdL3}!$QQ*I8NgRQf*~A7Umt}w=Cw-e#nSFVfZ)Xg@ zCw>+!Z_cqkpJEc0@D9t!wjLkB%F2j6hu06S(4)Tl;I7nDkMPK4mevghUMAlwmiY$t zmk08?SvM5`-+}k*n6@o;W&gp0`+W|VhQarL>wEaaKl}%ltotTgXjcO(_RheKFS+K(bMoT^a4T(81Fj^G`lum%F?79uTCwt11(p@%Q#dP2`r`fph2ke(#$s8NDr4C|kRG`uc+= z2{ff=mc7^1T*+B+272tJ=siv%0F&f=G!zSAw`brxc6%MnW!tyt?ONw3fqkLga5tPSJ0D@B9Dd zZ#9_97sR)8{1b0pyRow>-2q1Izw4;BHG#trT6z{7qVoiy1ctn9Q7;*(x#;l43&lBY z-PccD^1Y`Q?IANT8z?hd6B7Yw*4}PPUTQj-vPPMov8SyAS@!1D5>3?p?s|#E*}7fL z49SBYwE=$Py_H}+mU1hqHm!~*k-56ID*Iz8+dGNrbixueVM)`I_JPM>%fsLu4T*+n zff4*5V6yX681PR7theQ6UqeqQ{OF^P@z&dK@z)c%Sn4=CcUeO1yR?D}Yu>hQZs^k$ zPgIol<%{=nAYat`IhTH<^?ByDlw9Q_x{u;LwVuB(9%D0$N}(*Pct+IxV;O2s)j9eC z#21I!zq(BL*9q#5b8%m7KL@N_IStCI_s?kxbWnh|2uW4k&?-Q<>5THFZ@&4afcYOV zY9@UDU<^GBx^t z_4()jYkbQ`BVQ8V*74}x!#`bH-}sBZWu;$ZVFnUwtXoVRF!EGnvm3-Y&N47)a<3>f z%w3G=wAR(YJOq%OroGOybtvMFJj8rB#;Ys5vHBE1N><{<8QK4rARs{9f!fj?32-)% zL8D<1LT_!;V|L!Nc3jHSC{3EthnA)|a^eU@WKN$x#jZ%+J6y$8D#Pjd_3vYInEkzd z-kc%$UI2ulb>UM`lU;s4VYfE~ z61bczAgwwaIwMWxg@CSF{00qy`yRms8a4#;z`s8qGs2`IZB6pas_$=4Te)I_v+!o3 zSWu^(qcX#i+-iv5_!V_6Z7uC$6ZQUA1oF&z@b@mQeO~@}m5Rv+HZS-WU3^)UpHoY) zvuDDX<)dp9nHp}4@UHMd{#d#Yijhlc-kYLYmt3mEOqO2COyxP3(4-_@@Of!i^!xa` zfA8;#7kol$obOS78DHUdcg3C=5@oNboNdh+jEB5OPf9rbH7P@W zp70hzfsaKfTS>00C6AGlEcTSlD_1#v3x$_DdudJ*A=PbD?KM`zZa|)tJ&&Tk9LN=+ zunxV$dabwGC*n&f%@t?lpZKi@^WNk7whsAje|hcd^?$d3=)eC&6I8$4ffu3HjmMnO zXc#qDS|R1d?Hsp7hqH{9o;htxxWRxPZWlZTS$lrFqV=G6ylGZ?k6X@Tc4WqLa9O2i zV+J}0rxYi7ExldI`7;N^DIklSm?sa7M-x0H84(CCn9e3_9?<0u({6@IJ3&61*eZ5) z^&Ej(E^w9(^||p@TbA}=sBQK_-^J>59YCg<*ZoKLr8MoSl&!swH{W=RU6gircWI@s zudnt>QLH7F^W=?go~|lTCI0^)t)ohSTq8KTgS8t10qKUS=f;=A> z%$L6}FE95xNPYB@y6L>6sO;crg>2J?l3|A|2Xzj8%8KoBf9JPftok}S95g{-t#+vQl`<>q$R=j6;FyW z|B8shye?6QS6_RLKrZ_0j1&fj5eoN3_X*@(r`^w@hSu3INA{xuxpgfwQd&_fZWh%1 zG*Mksj#8#o!91h(%u67z80_V1l%pg9F?|n)e-U1S(a0CYw|x8uzPR|sRv0w@DPe8$ z4;>g{9&kUZ%qq*tJTO;O(A75+v{tqUbSQI`0Dva+7k;3J4xL$Z+-#naA)#-%(dmKn zisoX!zdtQXF+KBF1oUR0`SSs$vP~&kj?6c*)fTNj^x)1mrUKOanBKa@T3@LpXUP7P zr~q$3kiT(#`2Gia%m(tCpe4}EdVr=NNi!NEBC}t*b~od9m(n#7>m<+5eE-VIDuG>; zqxyV1>(rl030sD(dS5-(Tg$&1V_22uIl;NWJg}biP1BI&FU);vfwQC#^ju^rcn9sl z&HaGJ6WHMZK4v7NqBh!>Wm>xRx=maFI|cK8+i7DRjk4%s#m;!zkizN0D6cUOKBWT8 zW0Y;ZxGe&|<$2gtN^91TT2hP_dGhsVETK2LuPZmd+z_$;13Bihn$Qftz;NtbJnVvUNSOMZq0B+RYSSv*`NHBXidEF+8cQD?KknxTM}A7 zf4&c`Q+ApjY<32ic5LMaX*CU0jZ(J+_EL=v3b__m&sDqCTmv~uvRuV2DJKlvOQ5#* zEm~)^;S10I^3^MUwQ=;wf9s_HbNQlp3C4f=#+Nt$*(Xn)`ThPP9t^clcnEgk#+0=2 zgY`tWT&OaWWmY7mL=PXG_iT|mpf{z8ao$B*nj#m^ zx;Cc(tW+w1+3V7R-=D`$u}CnJyogkIT4mW;m!p-(CFBEZ%((+R|CPi4MKZet6!U7m zOl>&g;p}f91}b|KoIZ7is(}*$N9VmoQ&Js`Fb|dXJ%Rhex%2q={MLJ@wyL8<()ZmRyZzi<82A8zxMj;I8PuyO5=sCqKjylE1ZUXp(5oykJY#gC<$*Z1F>jSknDzuR;TX$5F>d`ymE#Gd02f;J#y~Lb214|+Q&V! zwsPz778jB6%9!d-l4{^W!_SKe-R+1i0sWMA_}SChjAc40WiCqZz55=!D2)e0%F;@% zoS&iPTb$aD%{(H8`<5=qeAGOH8rn_6-2Oj558Jqgig%;IsE-g(?QYOCRCrq*t@H~Q zpC^0YtJkgP9jMf&^1Mzae_R530pj|X_e)@iK#;UPHrb+>3BcUvV+8n^ObAH8ozEw} zNB5HgJi(l=S4rVcz4=GU*8`RQ8H0VUT(C^_(1Am1 z>;3sNNB)iwR^NR6O$Bm^qOG!=bzY6WF~QXV z9(e`W89e?1ATNyiW!>qRD*4r?zubNO!?zy1G+-`Y7B9(YKmF`i|H_Y=@Ly_}a}MaY zE*I8e+kv1lVhG+!mI&@fW}8<9El!4fvl^P~ty%GAlGH+}c+U3#s;?B@-B{Ma$R zXP-@2cCo#?&GV&X>*JPEqQY<`!R@SgC>v{skO3YmC9NY*Nj>vWGT5zOxshO&Wk@Ta zF`<=W#dKEg1`A_@Kt90c`Z`N~gjB>5pkDl9I2>?)MfS(^%-Q*geYYF$)%!Q^hCuFg z{~*I61-9rUaLW)my>4WJbT*LYQ?K27Y&z6Z#*yT zy%i%hw(U72RAJ3jHnyO)z}{p=0h@L@qfBlAHT0;ctd|q_6^s|3NzLy6YXZ8rtd>Sp zTy@N98vzwY+T(RS($>kt;Ye8SnLLwMUcJz_(512S8)>9n7nyRAtX;=TG#dHBcv*&g*Z=apd-wnI>xVW%@3G|q$eq?mqhH)+ z8D0r%bukS~nkuPL9)l_LBwNqLSv^)OUrVmY@AAeQV2}Zkokd*f1duimwW)vB?mlF) z=dAhghVRKKBLs%v(Fkaf3^y3ae#4p==V0Eu&yFEm3G1u2(rzkaAtt#wmSvwfD0(I6Ux zK;Ts%R_*&uh}s`PTT%fs*?*afvappIYL~_mWd1Xpu3op#sGFi#t#auREY3~qd6sQC zH3v?vyiYPMFOJ+Kz19kFjLO(m;O-Jb>1No;G(GI9QxqRtI&|@`M=JB?>Y0}-q&2h1 zDD#$ZDvd1B8+L8m-QT04pm^(y-1w#ewb=Le$kh&!Ym=#h&o z@^|suzx`WyTYywJ8YGZOi6=>?H@>{VZhf;fS7zZEbmfhF%WFC3q>(N3jCGltG7n4D ziG{vDWcT5s+s`6s`dm*!>fLOcaPq|>dG3B!Q9yq z(PzGJe#ZB0Z9VPt=PXn6K2SkUL~E#LEa7^B`X~0kO%AEQMJ!3h<3KE_U$#vybXrc6$SM*RXI)hUJZu=+^XkZ zfOp6LBU<@Svd@pm&VC%ukZ2BRM(6>5ybOf8OmqR%I{rz=;eN;CGYeem+6el!}Z|M`nnkBC&c(T zCt&_Ye=cO_A3l7Tto5d8Y&~-+!+~nJLn^)M!!}5i(L+-Of~_A$%g0Ub}8% z;m;dqh+8`!`|>5JPQCWUF+S(?^&Gfz^{RA#JoCXz2W;}C@e&Sq{ra_h?C23%;Ci8G z9#d5Z}ETbe%={76CI(^LbAUqV1%40zDMM*DY=ky{K zfED=S&9xFc^KqCeP{Lkl$h?N<)cmf3Z4b!2$x;%*m`8k{bD1EwCV+iTNHP+Br!4C| zsVU#t-htl?*kF^ERW8;|7{Dv(Eh;ev@I00uG&EwGz`n=a@4;V&c7j`B?oqr2S>)d1 z&3Q@sa{u|C|0T9%kxMDklTI<2#(GAftfs&7pfC54FyRsLK90%)b?nG7dga0epx52! z#7TG?4CxWcqRGdCH&0vv+}KJA#FY|=Q(wKTyRFG!$;!tRtdjw_9Z$FQNHJS2t%A78 z;M&5_p72x}R!-!S+jaLOE+G*cNXhu*=F<};4 z0^w>q#w z7rDQTx70X?l%G0v%MZX$)|gh34hm$TUn(R z3KhEGdqbA@Rj1@xxXkN*_0Sqli2?EETW<-Fzd@lIsW_3(Tw&UchEt`@kcxV4^UOPL z>0FqRS?0>M-E-*`Gg?`bSr)V~HN%w0Eu&RMS*PQ!dh3hLx>Q66HN3#J>1RLr=^x=G z9F2T&yo^IY;eR4cLjLJ}cx@a6ES1oeoqC2bA-ZT~7QulfW@T8`a+j$N5~5O))Au<& zmhQ_Spf^K@G0J?Bf;kg`Sv-R&FYri(WZqy5xzp0-EISi1=Oq@Oj7Q}koQZQ{I$ zX8hjo{w}`%{U1oZ`g^@v9P3{{`}8yMbZ%ohYnj?WsrhAzL(U$o3F5Cvee5C0-*2w1 zi$~6$%Us;3VLucgXINcjaFw~PtaNzu#0i9TQ?yDD#+4!Ws+=ZsLPOw4C5t`jep*D* zDM8yjU0!Qy9PmiRYjP=idJtJx>oB#XJWUz(a0{DiDwwwd#vMx&Bbn2{N`LOFtGXbw z!yh~GH9hEb4cauO=0U6V%6rp&dhu;buhhhj`Up*{h!tz^dwB^QJ?;yV7yjMf{T=-M zzyF8KRZrU~u3Wx~O^Mw6Y@n8 z{CObxv|;VGa5YFM6{DBHDI_yW#KJj71%y~CApWoyb7KF5;jky6(tzP}UFv_&X#D_C zH|5Jk{d&>3$Z7NdIrr%>=IO;LBjN75-}x@p8l~p~Q%);vXG*S3NoF*0s+5v}xEX87 zz*|pbv7kV5C2yeYc8H4WK?B%GbjcpCdkWUvPG^x&4;^!I@gX$0ediwjFaOv7^Z#Vy z@aF&Hr37>N;&>TH1pXOfxo00d!)Yu>;)O{-*G@yK)9svk)vn5aXQb>(rll=M8Y)Io zaIgn8nHRugDr?=#c7T<Vo5u zz~73wx;MmAd0*<=-+TW(>R>;S{Nt@#cZ6Vc65~skF`4b7oplVyC#Sz!2EdRw7_vPq z;rTNsg`Io;Rp!Rm$79*95ab)y;WG`<=f>4AVSXQ$da#l=nWoydKt^DWB3s!=qXgn? zi(`MzC74^zxf%sf>we0yI##*R6+oT}LZQdfkrSS2aB)>2%PyB-4z;ONHL?GFTdEIs zZ7d8NI}WcC>Bc8>sG;c@I?(80sC_gWVKSbu*+`o@Rq0|zo!8k+J?3a$_hL!gT-1xp zX9|#B5M%KJmV<3<9_DAr^*|uKbMG#d*N_30RgMDW!w4=CEnsRXb{&PEm>Tkd1|oSP zu_K91#8)ViG$aYtv(>QFam%D(DP>@1gfM!7DW#k40JIuYDN{vAuBJK zuTL~&9m_(?_WGDp#gTGifBUFylI6UZE)!W+i6FcuQHc*E0`?~FX)zpRYHtVU%SaL@ zc%5051n>P;)e2$k{*t*~G2ct2oQn67^t@9A{1qN!5!Zv27u>OOI&sWI z>FtL64)6an@RE*3zC2#m@t6P4KNE6$_(ZI4=5)F6)0eUtIpJ}m6TSzW=ZBG~)OfekJ z0C*E-pfz7fk&FjpF_KQ;tv7o%?FAv-9b+zYt!-riI!t0wPuh7ZEa4V21dI{rp_uF{ z!FofCicH4Y3xm=}Jl6BFxTCe}TV$8>6KtQb8PC zi7lq%Ax3hY?(Gk-Ki%i?dq5w@4x@HR;GND!8gg$DLI>wS<7?8*2q-M^Oc`wg;sVLp zg0x6E*0Umx@``jnJ1r$ytdI7NAp4FG(IlltY1Z4fZ<%tR=lAM*Atcr#x3i?&oO1h5=W6mCJ3jT=?%;E#`{s8qprJ%vG94hA9$bb?U5j8WuQ)@e@zp3Z|zS; ze4M}WG!pPp=FH2IH}5qi6X9b7y>ZEjzw!F(lxO|;qwn&&o|eZPkKt6P%A0&}39ebm zbSBr@a$9I1WZPExY;K(axj8EZSrV3tDvjSx&mkuRb1PjdqhjS)TngdLVD1f&+w%9l zcOxn=s&1?X6L#S_uf0Kv60A_ibaN=rHug^2MjUB3KBmP!SVf5Rch;RHlLILlal4i z=Z=E3=d@(4_pT@V(>`p-5af6;!sd}9wBi{epG@g(uZ&lEf|<;5uTDo#LvDD>pL%88 z=V-OY^v1`HyuRC)eBvQSJj4TMXtSM884>VJBf0LwecMS&OwJ|~X|wuRI~`@th*sN) z4q5Xn$05PUIS{ea*7j}^7jWlmc` zx2!KO`wlkBL)KSD{+M-a{ZjNEy;6k+R|H} z+o(ki)DB=Cek|AP`XP!VF<&nEaDu6LuhJmsBc_4=KY#XT^w1?b#c#X4y+eZBj^0aHTHd4hCgo`N@5^Uw({KTJlcULw z91&S-$SrZs(SX?(FTE^JgH>_>Y~18X+oTetMAR51_|A7f#z!A~gx3VjMVv+qio@t; zQ%0*)LDCrHvelW3dh)iPG&UHWDemXeaMiI;lGV*CGb^rJMgVFc=kp~}Tgbln|NMqF z8drzUU_@iGw=X=L%d(Cg{@|qsbNK=AG7tIwKf3hA#s83mZ~q;qPMo5}>zklJ=v1YP zHRB36MGs-?z~zd13=j7Hb;iJir)OS)toAXdH)vEhELU>yl4C%p*nt@D`+e~rJdzn;#qqnYJI>DaL@wZ05)u}+P;pB4g zwQ2~}qaeT;m_v3-51n(7xJAv5uS4scsd%giwWnVPpzG%>YTuI8b00Jj!zN%VGj-7j zcCM@u?h@M6lf?p<>S!B!W3#^WO8|E?8_IRiM^yxDgXc9pPQ1U+<=zu#%{zf@cQQp7 zOwg!Eje3bCpwMj(0IxqO?Ig%iYg|LGGI z3=PH*?6>ua#8j4x_4jtdgs(x(R&eStumMsa;qd73<0ATWmOASnefS|2-Xt2qst&0* zQ4(*^BW3*^N&~SZGq#-kdlGP?%v5U&80Z>tjyvVmV#H0P;(bMk-2feSy|{(M&1cef zP{m0xL@3B}>GO;KWW3~~kskrS8TfZzyL#=PB4M`osny)9SeQ`(9kH|5nkO8*tNQOc zGQ~Ag%12s61y~1bF{nyoO>ovvJMw9-1i1zc62=(wZ5>n*Og-`49nZysxh?aMcqCiu z7SVP!<|>;959u*$ewjDAl&aB#IJ7}Q7IbS#YSQ<(0Jbr~^>w$i3A?e0 zN5F9TEY5hdi8oKy?rS1karp2ij~UwzE@vKdQw$~%wxE~6`s&;YP_HnuA(Oez6UQig zfp=uFdPRW$@Y)7z-U-N@y13{*!|elx->qCvfgG*?aeDIlO9g$d8umLBr1lE@6mVlI zbLPlZ-n>|RmWJ(1@K#|NtM|^;d(+q0sGKlN#-vg0%F;YL4+7&L(nyLaT8%mzha?4n zkl<3}HHyG+b^m_m$7g-cy&YgU9bhsXkVK|pHT-+YG3cT0_1?RHWe{L&hC`-z#E9i{ zITdW{oDt}$Hqwpkm?*6sBN(G#MLX|!?ne$w2>q=A-nsIQgxqgPxcx4I1BZC;1OxG= zd9JI&ReE}TRmWXnoNoyz6U+gEWnN<`C2Q?t*TTUQ#0B&T(CzxHH z#&JcMJn4Q3ex6)KBX2?1nsfbiKD zpX0(Cul+AydN7wC0UW;>A4pg%A34gB6Dym^S$mj!60_`vNhRllpQl;!=Cga+;k!&$zosF^mv=AMzvNX?y!Ak0JH@0_3mY z?5WcvtkKggo3J>5xq5l78F;(B8{fbWdO6JvoEA^%{Mqva{liiZzai&9MLcB*Ig?Li z4wT`~!JwZ63J}B<%weFti z=i0+L*b->vYs+6(d**dbe6l=h$mAmMafXN0v-52S3f?e{q1RzUjRPLrrw&0?3VUO2 zKsCb=kJF4t;#F>9+I7@9cr4)Ah)3(#mQx!E&E&mZ%M!ZmCLlm`5e*4M4_2M%&#MNE4;n$@Zz{(fA`KO&yyI`) zrlkL;C=7cfd>}-(?|%2YB2M!iM!3ZJAc#8W`$?XOf~i&=IGL3~C4s!`6HtPANxoc+ zt;JPrKu)kOuN^)f)!6;(N0gM4q3H^)9ppDm_omXg=9Z8j&pG^NpphQ}FZ=j^{O|vd z=cR1w#>rRDkZJ0iv;3KsZ}19^1oQ-Bm}X}{KtNV@WhB7B$}{+=O9p5JnCQVgyUPTX z#**hs0>2 zx1;AA8qfON&BGf6aZ#_Lp0wo4>CLaoYm=77wKAd}*ZH-NJSbIvlg zP)08JyQYBXBf6*n%us6LdxAXIrUp&y5Mm&xlMH!iT>$AQOR4%i_X7dJTO!QjCD$AQ z=F?kM!viBJ8VZhl9L|GY>4o#>#rTsHne0o7h|wdY1g}PH)ZbG|$(Z&zDj@jy@e|Q2 zI6@6`={>*@eb=^fU2jRpv^#yyn_iz7wI*(&ItT<{hY^oY@3~{%7Ejz0HYwVE`jp}P z>5M!RHB^IorclF~?TdN+&)SaHeM*sl)y|T2Vhau;Ky#Wp4Ig~?AsOqhzy3N|>?@-& zuWzJIRV@~u53 z0i@`rmNK=-3vb=ZYWSE1;*+wRS)!5vm3+-UBWQTNDL{`UGOpokhB+HZa1^1?J-@7cj4if4>QjRA@eUOsEoFS=~IdQ2vBp&M&d zxY}Ibz)U=)=|06i=$&za1;HHFHO-aUVkk<}%&{;Jy(Dpym^f!58_28IlUQZo&Fk@e z%yC;tndD~xb8o=85ZpNpU=PwyEI%6o4$1b5dVf=?^RbiZ849=SSdrX%#rL4EhN>rT z#1?Uer>o_K$$aU2<+QGR5whEN@bQNqGxc<`CzTFHMMTG#Fq)+Ptva#45 z0nF=4n6x~N|6K;?IyrncqtTwLROmR|vw^u=1nMPV>-Vp9JCYioOeK*$oV9^VCP=!O zcAN8_z~FtyT)9&{Z!a?`;mc+HbwM&$ub05OZ0WO4p_R3+lg9_N6{c-VVp!Yugt&;P z*EE06K|(w1(9Bu_t#br)vde>W^sZ&{I&+$u>Qe0AOWlL_-g$?wyK?OqjZX1+$plBv z*w%=X7zB*`@MQEmJ9rC$J8;k-2=EAw;dOfFF($B5rMO+a5i4z<&j-)|C7{nnkrgAb zz5@d)+Py1X3%@5qFyH;&_o*-^Bs_i|0l7=YyLGikOOF^bc`X${9uZT9MOrE@M$U`F z>a64_h!`TFZ`oL%2I#05!i9(o?k1!~tI3wLTavQj`H8IWhYq0E9cI59vq zk%g#UI%C_27zA*%G3iB}joGfDUJ~NmQ1@jvO+Oh@rgcwolqRtGMe1fC1bN5fSl?z? zuW|Jti(bsu^BM$HBhX|vT_Fib!lL|)j7(D7`EzIRSb%<47O=)c!jwJ8vt&#>hZ78y zOTL_;v8Ev)sz=b85XtJ=3cU|fcRc9nGk-a3=#d|hFenWpu2zX2njcUC7h&Hc1&^S) z_TUIC+=2^&0+a%=f;pdeRwHKm&!(FnoV|swFAbwo)S^)!=YnIk@dO+Yz_NLD9 z&0L_@p@x^uTVGTQzpyP-DQ7Kp)P_V&(4OrLniQ$W z&XP0@PZRu=`h-C6Coe?^T`cFyiO0i8yyN31j$wDQ&m8(*FX*DW=*k{1D-Q71J8$5( ze*3raj!2lMwxwKgH=Xfs7~vSLf~oG&3++|Ws1SEZfW0qAeN~w5VhFIA%Ht=G*i=X~ z+ci|*!9`ea-{m`YX*NCTKo(hoiso!eZq)Xs6+caw2j##qh zeIKV@tt1l{lkxVu5v%{Ia!-b(V+bB|tr2Si?LNUXwngrEHQ$NwQQrvA&Y z@te`~*5%7I^3L`jyz%zCe{n%>4$1dY{fr>ty?La26E--pFrlv&zDy5S_ZezaD-u8` zE?V_}jc}zNmbNFgy2)ap4#)wjb?)F%D8|W_3~kK~k4L8PgrKcZd-02zfNxG6ft;V2 zW1(zkUEC@H7Dv?!PMdJ#j`i)2A3oyEv>|!$b@7%VfIU-1xPf;)tr)-%tLwcY)|z%K z3rM*?XZ5C4X-YpyJ^poqexw3b4+1T6O3bNmY#!1^E(Cu*@1cr$eV8+m-423zcHAe( z*(W$-`g?-2(-x>app_bC0&=N*#@E{Wth%|Bo7J$ZH%XVI911RV+H8VM@nv4L8B^u) zHA{E=tl26MT?3V*M&cZgU`mdSM7tqusII-{#%bkjP=TBN?{xjz^*+_`@5FCLInea^ zmzQOnI<%fopE*YmcUry_WD5;_=WIITJ-{o7@Iuy0*DcFgYIqe^j;3LD4apM$tW{%# z=FFoqrgg&8D_7>ZdXj2vFoZW8u>bN{W*_Eem~lA7Ljm@kz*=y4?X9hN1>s$H#&_K>>P0B|^LKxj*m+on;*zvIHed?#fx z2Mq~uB8f?G-kWxayE_8nBN_-HIOZ`a*&3+f%~H5QGf*~s!^PTz-n@D|)<~i(E8{j; zsNETdfaJzf=h+Of;uvm8uS)%tpm}pv$!mSDGqBAEBK>6V=-ox#mYvr$T2p%H#VO?q z;FkirMHIN_>>Xvgh4(_{e-cu3a4O5mb8*^TFfdYuhO)s8@2CEs51xx~n<9@ZkuU-4 zqkV{-%54cS!4j9iV~$tHG#ZchQK8*!8rQqieU^Z&_o{9Z8vm0&`XdRGzd=EvL1;)? zOR=M8OT!{Yo=?y}<}4+K!I3jlIH&stL#wNd7CjQO+v5ih#5-q*9W(i?+(!5ePObMs z01BRfd5?UMo%x0&U9z%c)@EK`3jKVo(})qW*1>o5j`@BXuZJ0_AUpr1ZOEMWRXIGb?kv$8S7nyk~2U@rGs9MRD0(c8gWq2uEb&t zin;Hqyt@sHh?Ti^lL#{7pi_MaU`MWn%U3Qf$h!Y#Gzk$e!x+hxEgHrW{@r9fveiN+ zdJUX_dewHpS9-*CG|NJW9G1JH46AwNw%BU;m9Matt69laZBf5zi#DG!4@|YsZAIbt zU~R38q>newVXxT%m>cVuKg`9=%Y1SDo%C!=tg=sbnI5sQa~am(m~8g-v;^2y0p7`E z%tdrE%^J!FKeKJ82rA&>HMHsgu*G8FhZ3w;*Tp!Ht$1MSVUQe0Z(V@g^3*9YOvp5Y z^Ny-v)Tn2O)~ftUqond+Ig38&g~X+*xxqmV7^fk3ukY9Ng!7A+5&pg&7JYGS)I+!B zAS0>XzjFyqVzoo5rEMyAGOLh#<}ACu6=vBI+Pg&$49MY>=BCPqjn}&JKu;Y$dy2iN zj<>D!>S^+Q4SJAwh)7C=1Xk91BIO1-5RMMB0-iI_W0_XpGvZ{56f}AydF;W~NTf;HW!81~oGo%^>W#QsDhP+-`cQ6+LT0`G$qBMrdy@hbTr>#HmD=C}GX zGy!rcC1WXOCyzm;SH0dXE|=s<-NK@BMKsGZ@*o};vaJMc z!(5H{=?($8vJ4VI#8ljPejSwe8XTV|xI?969UtK555&7!cb?}*aS8QW6Nx~xe!*gB zI~HOa+0{8yXFz9RX~4=)QjGML{jSH}_71^ZT8}cvxi(v~I^=#j=eUR@m3#GlO=$2Y zU(1MxE;!yhut7?nj|bDKJhrgnDUr#)OqUo%NjdO6o$r)%MU88qWBAe*x((E_a6CM;)%ch#+!IeLh6Uues~S6tdZAP4}i*2HGo#}o|uxQ zI->qRrdUY^*Imm@XsSrIlmMIyK(}a}0=Aw*Rdu27o4eK|I18maZcX~w?n{>=?7np1 z-{z(?QMq#Yi+{941i!@G@te`~;nHvGIP8Z1ir@L&-~BJGtgNwY1rCS`GO96d7h>73 zx9kVa_vA#-4mrryT9k4@lC8b22oTu=WymQS4_a|ECkuCHbb5mZB%jL#x0Eea0ts{h z2J>is?6K(s7eoSNzfjJm3>WV2H4M885sf)+0rdlvHgTv(M@KcTzP7y?vAYyj#Cy&g z>jdxFY)UZ-5RA&&V9(sD@4btp_1Wl*WJux@MMOe>-VCEkSsGR9Iu+~iegy+Z?;O)M zlUUR!prfBLmB4KauH#f9VWA4<46riHlR&ZtI;Yp1ZRIrc`=Th2M1`khJzIu!<4b3&36&^{_P)o`AKun$CM{k)LF?%lm7 zV7!ej0b{DP?e8&~(^pyynn2(ZPn)6X5ZKs+A%0N^wcp-)nhf;CuGHlOk|esQtP8DfwOUe3(;A*x z-ktF`nl-ciVrG0X(?8f}GxMvN?MJiy2h5Di%rK;p8g5l)IrDtyd=X0Tz%q5|3srSp zs#{ezPe#Ov6Dj8a#zUK|63A~rZuV}?|3CZeGsulAx@f%R@n#C~ z+;8n?|M>Rc;9uM2^2T6ZPmujME;W<(cdB^FZ@+!(b`9;JEg=96z>N|IpUJAu(nCcS z!JOLP1t6PJYQ~$q08}J0LlPA_K8*^?CN|{&?!@Q001TeXauF>#Q{GWE(kXFP%N&{O z!((q7{H`=&nk@*+O}q0tz-{5Zo=MrQ+B{7798FtdzPzu^9!X*u$5CV*km1^Urg1>~ z$8{RvrC&L}V#9C_f=!)CQh7ZM{HcZ*OERwUO^o<^?3jInU%1h!_?DY7vXyG9`@b^@6ZVEn%xUQaEa>#QJ%(gXoR<~y<(sL;uq}p<9FVQ@OBC2^(5Jk+j8Z#)0duj z@~NA*Z=W=FHFCXDVgfm&xc8WwX{Or)d0R8IjXWX1+-I8DUabJ0gR8g3_WV|g$ZOaW zO2LFQY`01#sDfP+K{l#~186XjATeqjyu>VxAQYtm-mqO%uY9AjwI-9=Iw_rmJIaizV%b^v1; zIFm7;gUw!>Tp&N*$b2VvPEhAxJr~t{M~1pD;?rtTj<;iU$JZLY@lq`t%!tC1VHWYFQOfJ#DA~)`=dJ z+e$_r9fZu&2dD6;@w!1Re$QGt8;>IZ@0_u&Q7RmR+LM;ujPEt7w*tamAw;3qdj~=% z3u?Uhrp#2_=z2#+(y2<)!Gl^D4lzPv0uQ2!0R2)W}1K; z&I!F_)q4B+mbC+ikF7~v)MP+_NdhYj8#0QvDe zBmIWbz}G4d;=>>Quzlpe{m*Om*2^WB|Ih#QU+u?bdG8~4K2$Y}|IEp|@7Q{~g?d>F zxm{c!T+6(Xxkt{mEt*w!oq&uBg%R*v<ZQaUIR*Q|)JeMMtZq}4a_;JvKkv|;> zX@x-U<9$Ki+*n#BqR1K^4+jj6vKjyp!c6;EZ_ihDh8ZrDrqH}(9Pi^;&h5-*LzDu? z5E27|!x-{~X-1ys0&$Bp-p2&u%6{{>N8~GWwI=j|c9-*+;heYQLVbJ#{}tHiDh;cX z4Jdczr=Nz$wOXYnw+TjXBHMhxcku9a>h#o|ildM%q9z``74w^{-HVx#5}ngzygufN zVPiFdIfuSZS?`TQ2(GjTbUFSkM;6hL* z9HWL`Q@6r>X>ju0Pzd`3xH1rE2-un=I9Zd&m6+cj6V|aOdqHc|W@xJ`K@+8()W#N~ zL5E`k5U$ctK^Pu2G!^QA4?YN*_>jmrk?S(V;}{Geu~a+f{Q&*;JR@+nh6enKV5dum zuqDzSAjhOnnQ83*3}U7Gyh+7kU8&Qcw)L_gpK+oA!?G-xSgIarF} zV9vDV`Dm0KIH1f+c0^#^F(LpYz$tuOC}yF79K@=4HZO&rb|`+N=XT{zh|TMPrC zX6cbyQ^-nok9}~>b{u#sSDVmjYMLg5_(iZ$>C~ zNCI)GEC{*pqmc!|tq!7;rCh}BiVWO^LN`)U*LC#8%W6vI^{i`*>qF_u0P_Y=1P>QCkq$h-r~nQA`&qi&MFH@v!dHs zwOzGIW0B5n=vEf@Ap)X0_aHV?bSNJxo(_S2uSkACzcmnCT5DwyA|U9o=Dm%XpQ`d8oio_GJ6I?Kfm16|5kV_B+2 z7H1|CH=DejD7fHWjq*Vz#iIapGbCPfwaI3bpR~|zYF;yy$UKKwEV5o>=@bT8_bZoy zgC_G~=zZEI3NwjHqkxP|`h@4D=n+{Yxr#KF<*Eiet9Fz#DMPz2Uu;t3fF-c~Y zKYp0uszI1VabvCri`UR6O4W*hU5aLS4j_zP(`c^kn%K=Q$F6q-LLrhP|TXS(EdTP23 zF&B?obB6Q*Vhcenf;p=ICh{|khBOy**#hr*ZZ@L?a+fo%4Z7fs=zs@6m~#Q!yoJ@( zOa)rqCBsIg$ABOL4RyJTUzd@lY7tD7l38NuXSFi6;22{VDoxQj8hoN{3Ery!x2_l5 z<44!8qZa=7R`tkl-v(2C@9I@la2OO7;UMq;)xc-*35lErwkB>MzMFXd#AJ7NI*&m> zE*rY2W0+DdgGUo$-MTmpG=X*;3j=6t!M5)IzT7R2J?@PczNny+-Rrgc+($nAe=mXj z+X3@-GyJG7_doKP=U#a6`Tza+&w7srQZxcthLL$VzrmG5Dod_5h$Ip{H!TWPbvG@; ziUeMeO>D+`UZc;rfD}KJL=Rp0*zEaqR}HHxd6BAXm5%#t^f01+vOWU??8;?k32dn2 zHfb9tgIB&8$mkwv&MvQEcd&rxX@`RWs8a`-<^nbx+*F!^D93~WSso_da~MYq#MmA( zKzgbJ@Y(9DeKrPYV{hog7EWhFxq<;|vegI=oe>HOyHH7N#Ceh+0la|NT?zqhQ+(Kvy1gh$l-T&%dtt1F?VkrkV|b# zm!{}D5@^z(Hn{@s!L<&6y=p-#fB+w!Qm%_8hE7Zx)Ln0(ho4MJcSX5zoo|_=I^G8n zG3RH1lvewLBNc=aMu0g0s;Ru;aVQ>+NXa0|1cKMRt6+YPiQ#ksAjiEiz={+2IPr6h za&0@~U&?9nUiBS2L{cAo2;vmrEnerLc27UCnUK`x@F9>MzEOevsoHn^(Z?TeUMId+ z5g&ucUCfVH+W|;Ln$>y2T9L*epXwg8z?<*a1Fq@#6>ampINnng54>vr7}n~VrfsZa zZl5+dYrUt$h2H;5vr<5)J+EW;CqMr28nHXN1oCeO%#cIsVYXUATR!~=OPDEof)me=03Y2b5!R4<2Tcv1-NMGj1{gea8_9eh zVvth#cjhuxBW=FOW8e>c)n3K=@RGGvg?W*XTz-XL$dJdLXAJ9rkvvhgF*Z;JXRL6t2{cH6}03yJJ2> zB{>0&F{l#sGWHierh5b5(>;pd!O{YHGv6F9YZpqF7c6j(F(DD)>KfY|oK-f5Wq^rD z#);wx@KID^)YC$E8xuy@5^|>kC`}BN`z`uR+9Fb*TwN!Fs+5mx^lA-+Q4YDQ>lsc1 zDjjf7=8|#!ODT|R15uB9v%S@)AM=Nee7iDobTalNj#(nJ}PklK_8Ab#@boeJv5$eZVuqC&6o zOpZcNx(yS37zVF){=97|&Ts5{A5#KaM3_sONOcRxKzxblf&1FD?V?(Kyk3g0&depwdKXfpZ(Oc?|UD55O1&S6SR>d zM&0b9JRsNQ4Oo?Z0fn9ySex48+xk1U9Gn+B-(7HE6rpSlKp*8zhuP_%wE&(syZ|CI zmu^-N!dIR9Dp9Zlxv~+BCpIf+wPWxZrBo)OleE~=s!67Dom>7I6P~?#?zSiyYp*wW z>1Ce0B!(ewZ1W$+G5y_z*~A`39#5)jRuCE-&J$j7##F>+Tp?$;PO0Y1w>H(#^7XY1Ip4i-jR*JlMT+iKl0w|qb zAped2%}y`w4`MK3#I8-cuZoz?t(#Tkm@tlw8y6bX&d z5~a?B_8Hf`>P+1D4QBR#>~i_m!MvV4`%zkc>Jv{bPd@PkWLXV_EhV#H{{?MJt-!o721rCyC2^(Fqz|SA;Lb?gy*bQff25fp&&xxDr`80;-OK`0h&QU ztDt^$u$-#RiRC;SXUMOdNF%sasS`A`N3)XJd75loK}Z8&iKs#;1_6!J2LRNv6os+@ zs>!&x>?w~+9($Ormm&#F3>3qZ!Jgj{H9(4M6N`jWH8j6CsK+v<1*Ju({hcO!_uLxc z%xejaL|IKt3i5W(mD*w$TX{RQo1NMwK|IQ%E&&{sBhQR542G}Dy5XYGx6z{;BEd)7 z!8_>(XdGLoDi%tEmQI;YO*sgWxDF}@ixW<@ip+RT0dUPr0>F)O@HIG7JV#I`GM(#g zbDQ4M41=N=%+=KJO6lz8 z(KU2}JJ`QkOJWaDm7!)x8NiHj$@v)!Y4;wr80bnB7Bc-kj2_^h`>2EN0xwI~+LWMM zG;y;owC?wDnArKGLgl-e-h7`6Pxwo(^Cf=X5TaTZ8SHH{XPm2NpL+U_nAsn-Z+W>~ z#$Wi$ewp1ky8c6NU-|F)ZK?0S{f{@HZvY&}z z=tRbQf;XWM;fA@%BqB^W16f4>NV4;ACeLIjXmgSwwj--t-jo1+96gEv#xe$+R)K&} zD*IBm=R>X%1gL46U^{wf0GK3JHFV&qAq@}$m|V z?fCXKw%5S=@X!uxtKY*Lb&R@w6QT5*w~kvm6~MhVPXW-kb5(loj;=|RJyl5;fgGiK zm<)yU?}qp2nd~LV^eQ)A0++n6{i?-6U|qiQAI&>s)wwR#>F&-ZJe&K-{fD_5Pv z0hDTd)>05{yH?NJ=RfnAKTt)a{z5gow6|~LJF7(E5Bou$f8mS2^Tiim{4b9^_82-Y z)j>7Ro|QZFHhg$cgdqWPR}JZy8gqv7%&{YLuoCzO6ELeu1W9#T{Jl&Ao)qEu+NiZG zu#X{GeQrOn;7fNkoCI+an-I>H_=_0Y3PbByVDN4c%@_ez@P1Pa&&3dI0C4UTp;t$) zEgy8W*BRX0$MZ3ofOQ-Mo(;4qtI5w4NWjZ$MlWy90vO4*y4VXU8o-X8kdFn4%JRb< z)k4pA>n1=Z@1}sOu-Vw;>7_uFV=h|X@xc~^~{el2K z1qL=4=t~iRkU*Km$PPq0)Li5B4<4KX@Gk)N8u*pc33c#`(n3BdlYO&AzzxHW67E@n zBY~XiWasmYUi#Y_Lci7&+-iB*wd0!r@S~eIDzG0xq^k8LU&A9`v66(>IC!ewq{K%i z5lgeWoy`RD90gqbdrO)%i%${5=hzmIyHjHNPMzANU|3_5%){&o;maG+Y6zuf)-&B5 z$em`#5xYVhv#(@>Ao8NZbCks{rofJGU#4->6~rYPW8pr@&qdt8cfsPZ0SU0pvywql2PhJ9_3Y zmCgddB?gmmEqoF$;Eu2N{I`4FadK_mf8TTK!Sp;u4&39H7w;CwK23Y|pnKzfOp5e{ z^&kU@5!<*XD>GX|i(=E-+P?RTpZ&~7=8KE}Q_U{zt!;ez>8F2a4{kM0zw?C`Uif?M z7>|#S(LNEXM;YzG6s`<6oQIq=gX~q^;k0=Ap8FP|-l;tpg))yK4C_)t?18Bj5cB`id5$EtYyf=>*#(@{d)FY*TJiVDeE{v|8{U-+U>)*-i9i z`lmYSqU%d$dIRdKM~79t?Zi$Vf7EW@xdR}-di^?pe7m=Y=Y{X2J^>18lZn2>k~C}! z#0w2Ft(vqtAkzGJgSXzv$__n{%MIup9p_49{-$S!^JU#wMhPNs2OJyDL@-xbt^c7q z5(s0#2;^8ND>e>j5`}lzjAJD@AN;11laoJO%`WY&ZTxk=@i+cZ9@xh0iy!#F2Y&mV zJ9ogomi%L$GIK==;phezIAARxhgl4=JJ@S^YcPLXOaIIW>H-QfV3&uFG5Y-a{FwKS z-gcKxch)JuJ6O><;kLkj@b}i>pj>_Q_Ar25*@KpJ0?}~6`ImwkfGFyq_Z*`rIup|j z%I^wDILN_sJUc@T@-#^dM6CEYX!E!|Kd8Usq>b$BqQ*Mjl67$1>4Xc?9Xmct?@@3p zRYee>vO}0!5}8Gws>qEFj$L1HKPr0A>be&v3e1Ds=#6_ym~=@6&7xOsp(p<|3qac% zz>e*i+j$0%=Y?%CS!DpPnGp;UugEtbBYoO+ttS_zYp2yVKs__0P_Y$>MNiLwz1E;-=C8}yQ>(8pzF-~s7$D> zNPrV}Aw(CKFrGyQe3X2pc{p7b`=>jA$F!ihG+Mhq60Z?;;pvTAGY}awLhCRaU?89_ zZQC&6{_+>U_=hge&i-&UyRs{|UeB_ZwKq5i-kRc~c^b~&7 zjg1+t545pFqVvwf#_-(*^M2_8J<&VG;K4GS7`{~g$rO5|C+k2S+{oCu$-Pu3cX``G zhRZas78qb12QA{J~<>j|pWB)STEg;M^e`zBA;NF==(Z?Gi~%@q6ev+4T)xa0ZZzUm!ro`^j@I1ap8T zA5-WT-;2_!AgRR(0FOZgO7tS&d6*}7<0#LZ&ZV?LUa5+rBc_G0nea^aIU^Lf&Y|;}KwPSB0%%#E&sON&729H%-2r_u&vVDu zMj~kT?Ql+(0Mva-QE3uxhA|~6y;sO};eBW`$M2E>e&>p$A zs{K&i|0k;1rMS5WuI27v?h6PDdBmVNu8@=CP3!&^}Y~`Bx_rNf$bjp2b3lkk@<@X(?lJaUAWVGE?{tJXqA-k)9!rbk8ZnCim zd%}?Kh6gqo^2p~4y!En&l9=FKxbIF^E?1ib?NfI!ruN8UpEyR!=bdf{=*0C8PIz_19K)Creb zp_fQycx;ISe+SZ{UFZctphOWSUsA8S=YJ=%srh?bae}g5Z{a+ww=E)dU)_L$`t%pg>~VX;<#HKcxO*2D<_B#TXS;v>&Ue1^&$Qh5;o)Hg zlsyQVv@mZeA_A$F(qL$SMbZ$6Ba|`}gWcP7NC}B#A?*u^%^0TA4@HlCr;EO$#+x!{ z0D?kKSgD~x$Ul2Hm0-{Z75smdrfHt6TrxwbBu9yKHQ@PTMSHu?STZ++^EDVi>)^^h z2J@vDfWq{hLaB=6F-`lrBH#GqcPBo2?R>p6U>1v;z5L26_R=?A zvX@@^hP_m`@7=oxz5qySMvsMMP2MI{9u7?4?P&?7qU4Da$OQ-@$tid4X@Uj&0P?%t zg@MGzFgd^(9+di&quCEa>ri;B>wGb(+Q93hG26!dP4Yfoi?yz|mjMpZb9RP%G}FrW zX@cbGje%=2|M~th6UTzlls0MF+q+W9wMTa2Mh&OmJVrkJ*6l|sTm2a2XH}RA-nxx0 zp^Wh*mUSsTqx&EeC>d7AB#I!1dqaR)Jb$ffE$ds3#_=nTDQa6PRX?33?(^!Bp1?*x zkB^xv|7k7rh^5Auu1vs>72jDCJoRO$(JlPF;NG3F77nIE~x`N0T9QpaI^?W0)HQ^;Qi9@ z++DSauM=@;E_0`p#?+8Al>vbFU%$@~{zWUlLTI`z+szi9K6UVMd{fr(WnaSt-0qz# z#H|{03q-;KD=?P~KsXeWn29yt4XCrODK04h++x=_0C@%R`C=y^f0($)ALmd61J0dD z0)_w)64Z}izC??%q4HK^H#XOU&>AN2QU85JRI2yAsUUuEaA?;niS7FFakZOOjOu0u z_2cH1!y6wr8%y>1#zsY6y`boy)-*&Hn1`1PE3RL)iED9t0-)!f=Ysds_{KW*`293i z>APxwj55k=5BYMfb3C8%H9hh7O-R7{P~Af%dupn-sI7K}?Rnavxeo3}Rw>ENlJf%K z<}?I<>!=dC=Yd<2EPe0`U--gD>izkDs@bJIY^&BA_y@UMzkdARKJbC(?jAG+rK^Wf zC2JsYv6~D7E(G}!YVcV))IwN$dC#Uz zw)Kc`e;}qM|NeDT+U~g+uF-xCMIP4y@0FLTSNYYi+VqXD+vzz(KM*2D%Amv=^dQI~ zKrUR5%fp@7B5T11@i5rqI%)uq@kL&%Y&)9?X2{jqw&niG1Ru?im$mg^g^FZTUF&#a z8DNZjOw|&-efSX01<(YH_4?51wl!_Fu$De03}mSPt~OJj3v3kE@4JBAmrkI@1i zhWDI~0ETVPpKD@5ASWooTs5ek+`G`6O2p2Z5fc2?*DvpU%`Ffws>q0H+>m6&V;5UadLolKOqK~>%99Udd7Yyb^2>U|L{evbFn|RChf!E z>X#G9yaM=mE_7bwxpDL9e0+~Str5XHh(-n80c%>K67-nZB+{X@Ug2o8- z3W;lSP=cf=L66|(X^z5r^+6?Yx+chnSN-&ASFl|H9VKOZ4Zt^BOu`bH_N=_s@SuoY zS3#k1sHnptfL!Fl5Msw#e``{uh3}<(f#lh90=ON^%PfF(8M^$ro?nba;fG%yc8~yCUGpoaP_7*%*Sx809_6DWx=VfAi@z4{moWGa(05jA z%><9GTHS`8dCquY-EE8VNji?jfm~6B6dGPQ(jPYtIrNZxJ@-bzZH z=P_a%$GvKKXnw}QLBTX(4ba*m_xSqj_w0g=Gv;}Rx@S1B_sxs{aB`$bN z{=EiyZV3Qw1Ama2kIl-BvN!ocag#yUC^k2ccg}SnF!K1q?^L;3^OS&qP!kb>RunwR z`fa4dQ2Gk@@|6}&hc~_fh&M3bt3bZDw+Aq9`Pfx65Dr)TY|lAk4Uai^qiWnEkj8QP zBs_FBbNl}l=D6_vtmgzcza)Zq^oFfhTI(uu3ic^V(JRk|{5W11iRyjCL>pR#3FHLH zSr8wQ8?OfGWaP+ayaW@Xq!gMeM`i%}lCmwUmEK$A-+tgEA#M%4pmOEkx&-rwm+@Eq z%3oE>E{?x%_Svs}{TILI-S7J^k3I1?$R?HKh8eU)U>iHa817ZIx51 zL}zz?0oJ$l%E9)|g`f*>(!doN)CEffI)1j!ht{Rg@SSu#0uLRp*DcGKm+ZcASM0~V zh^mZcEUC0YQf2!-1af`PB?$cJybYa{eFO^qq3;qW9jd!t0!dN#LDu)<*g$Rx9D>zm z4X{4gKY*CawWA|Dtak0_TB{j{Zu-^M*^HoGL+$|oVO%l21TPWWOSRIB&O!;{{#n}T zFxHEc_%~-?&j5J8eo+^_uCy=ax8t@0xfuUC4hPvdA$R@t*rQxp@G%Xco4#kMpC&3 zld(^H^5Z}I!GrsMubMr$G#lUf>^r`1ANJK(@BP&mU%dO5Pwt!`-n-U!lru$0 zYIhE?lzM(1SmQ5LA{0Ei5o9xlUU5_R^|Vs)vi@_soO5gdVh^*b1wLXu>w72yw&#WY zJ(M$c(9n12fxH(W@nhgRc=!SpftbWVqSvo_Yg})pAS$>M^h(F-$FRlgkg7$29RUEg zVX86Lb#%`>at^Y3lk+60R8G%{>Rh4My4c3-C0_tqymkaKc;xMGT{}fO`r7ay4x>f) zmztQw^EfN_PcT#!Ld=QhMY;VEz^oRe*K6AD=ti|lY`b>t2q0dq-Jg_P-J^E8!s?L- ztBF6zvlg9)Y2k5|jPoGSp16h~O0pQtC1SPK67~rs1Aul(rebl-i<7eWoWUES=>7P* z>~-sX7~dJ~L8;PYIu<{6zvp(Xo82kKt*S7HJo((p(6Z7;xVM$f1PEhX5hq~KL^0v9 zk>h8I!>xMLyN;y1auDJcvv+;=v!DMTRo(F;)$AwTRes%8Ql!QruI$eb&(r+1>N)(v%Ivp0w;zEP{d!mvIB+ELn%_vQ zk}V-UwmAg0s^s{s$YPdey855W$#{`hZ=Ssj zUgvYaneJ)H(rCJ)GBYw_z&34l=oTW?%xWpCKV0Z10gyM^rYa{1I*F4h9$;%!a$E-8 zxYk$1K3fk6f-NnOF}=clem#REUSC})mEuazeIHoN^ElOwv6#|DXxrG+Iq}H%uWg$p zPxd*inBnMtvX&+#pG}Wl7d-Y}YDG{aapC9Mk|btgrP+!t*}ZF*96x&ak9r4hMXUQ} z$TJ<&bBjNB`u5YGzW=~M86Fzy-F#xA7)3+(G3#R+kkd3$pE)LH(UP-$0QvO-J;4%q z1x!kwS2mEa&zWZhq7VY*3a#IpINR&Wp+>yg-qtMq+_|$qaAkJphqGReATDe6*rZOa z3JK$r;}TQuV+(Hw{IHin@`wietRax#7X|$*WK9Y(Drh0H)oV?p+&@p!vOaeUQlbql z7At2z8?0a18X8ic=N&soWNd6yCdVgabA4Ub*H>kIWjQZe6x3~OQZp; z`DWE4Vxf0lg-CN6Sa^m?G#V@rNqS28h9_8jTBgbji&X<5=}cb+m>1Vd@Q!v^LQqez z_cH|pbtR&#L3S+`#zDRiW7Pz;sx9=zGjJvy<=WWX?n&Pc z<-T_-XVsa!rX_T-(bWvr*%opg z!a!RW8Jr>KVuS=)eO?#f>0hr=0r6;AX5;0EohR`!`C(GhG<=TxM0tGx=w0w-Ml9VQ z?fp@*eBDXxy!^eEsM?7;Ne(mbmiIZpk=fsH@AkxmZj3C6g?7c2oq1OTOP$(NEpRttAKK;Q0nK2|ZbB2&J0=;>xt*q!xRspHi z%2}tbU>gxFqi?Bq^QNpUFU!)>(yz_W&V7%F+$YjM_D=2o)tB7;l6!7HeOgAxMit;B zHJZVq9E%&2_}(v6m5Pc(SyGO;neZ>5nd3mL^d_jJq1J$bP|Vq-0xGm-svwkMY8Coz>)$mgVNI&B^TSH5E!(Ut8B3gWe2SA~$dAmXeeJ>gC_4teRlM zKHCC3W;YwKY!zJlge^ANo30B2RzC^b2H?S;!@wk9_TEa1l_{a2W#jb9i@%=btX6HZ z%nV@Ug22cu)j4DdeosFcU?Y0k;(@n1 z=b-g_=@?~ZnJa)#OiXCCYHVymM!SyzzWl9LZtvu|asAv@Ei-aKmPwmY3g@tuV}Dy@ z=WsoYQY-0Jz>%<-aTum}In<^UdLgijf6fSaB!7k#9}NkMI7~{f7_SGdVt~y2csEt+d7)jGB&+z2!w8bS_iSGfxWUT)9KCwFGh+k3iVY%=@_d0m^Gq`8ca=U>-;g#Btil3PFN^&7cxjAixKLx(Duli(L>JlL4^P zOxMTg*OV@+Oo_xdjAeFA+E@Mc2lVfqOXmvWSd1A zAH>QUqiq4BSxJw1{eQC0p)#qP`8}9Wm4Z2c=9&tHzCBo!viY3vWAT^@rAQv;Vt@&V z{}N7f*y{)`@cBEJBY#qWx#MnN)1+i$EmzhyG&#}hb6YcUTM#9E?iX;CB^wp)3kJg4 zI>SOCHTu|!s_>>@K4=xV3ZsR3uJC&0$ZbAu0yTMou`bio7v+(M9(@lH`KK2xn1A4V zKK)=mGBx>QciwsD=VuVFssSBYiZRl~$~p3AiQT}wZrBsYMbuVd0qqqM$jdS)zAp3y z-x8D&1<9&(UlJ}lfR<&T-)OAM<&_m#URsoe#ia~R|I%H>{zG>)`|nTX12#E0{0+yC zAOF_FhmXkq{rhBOWH@K5%=FNnV5yg7(4rlT^CAdO$ua615y*A6m_f34jja_8)HU1G z*Qy9MD!ry#QNNc0dK7B6Co>f3C=pEUPIcjv)zEUro^49=!Wc4@?+iv$LV#?fJjWRS$tinG3yHK zo9lT_50qez{=4`fxzW9!QNN*c!Yfu5g?I^oqOhqg$X0F!OtVO1aMTY%9{1-BBkd93MskE3Iv>%DvOuQWb`=VZp#+D0b2 zDO){3RZ!nAQ#mvvBoZC@M^->roeZijw(Oe20;CGPjD2We5MYjT2{aKXra@mhq73QeOewFLH^>^AK7usqfZqUR3SoP48ww=HO-=kslREi?M_*w%Uv+*em+d3i}zmU|id zrjB!MDtV3-i0ftM2nBCj-B)HMYQKy3)b6W9#the&LkY5u#HJ4h=8+{zveTg+$FjaI zB=RFb9Sbd=tQnvt!H5$@Q*bjTXtU%lcs(@)d48_pNX`AG$kIdX#|Z==vZSt$RF_jw zbe6Rs(*NeZYL`szQfX(Md{N<@s&enImDqKQl04WIs)3$u zk~oE6_YTX_RdUtT+pNvkNs%NryFZmc&P8&-qRs;)7hGkf&#Sm$@_?_ini9B3N9B;` zaQOh>FBe~UO{fY9gBSF*sRyrY{f?f$X)QsO^@S#bS?St1rS`k=#ROd=yCF-D!5a-( zRf;T)$`-got;})g-AgJvry^OA)h)L8+#)}V7;VY=+M3MGFUX6P5Es7oE51sej`;7F z|KF(-Cr-Zlz<~ohCntCHdRJARIc{0cP_@>L(9;;{MP>W|=$zF}je)t%mk0eYmt`j^ zK=tjH+XWqNq_JL%Btir;8n~R^t*0R1cxd=0$@rBaYuE8gEB|4uVt^ zspzv#gHV?X@E<*CNv`ubaRNp3ISzkk0> zOiaq)&@kM4EGw_DiZ;+r(s3$psK!BDK}+neSCxY3CPDW->5B#-eR|zI#L{8(5|VW7 zVec_-27bx1MjOS@=NmbL%#Z8q=Pu7&{j_JhN3(Be=l7qv{q`?Aar}hr-m}|gxtWzV zvA2nhdGrVKG9wEFcsq_8c@UGu)O{Lm5YSt_x%jH$Xqjg1u?OHy(#ICQ#!uciejeLo zRjq`#t>b!I8N_v#b!~M`R@Ya1BW>2ZOErDaw~S?*k1JRP06ELa6?($9KpDi(ZGb@8 z0Y1O}oFa7p^`Xef*&_$Mu}nzd3=QQ?%V+?{fiu8R@Jc@GO6-jXyIvUm!92K1fY(ls z4Mz5O4$9D~Y-i?3`IuMZW0r2cQmx($=wd#$Dr+f-65gVOoPlc(d~(+=8Q(Rbn*Z8D z8XC-HbnSx&l+A^ud}hVCC*ZR#eioXbMV7yPz1Ii8a{xQW%2b7r9uNlRR8uSNIaVp~ ztpZolE`F{;?8W<%ll@Q0Cn`S@#F2^fb$qS6uQAH8TDFYzIb>)x3*S^JR?Tu%%~55R zt4duH>qOHYUc+3Fph|#tRtNxhRtoerm#yPmWa9&|B`s9`qS+|ZM2cW8xaVP|&9eUk z4?Z9-d&MipMP%hg1?KPgj_)W>C3fxF^|8l}9sBKWMxJ|HCe3OYqpfU%mBhrxxL{eD zf+@KX%=2ps<^*})Lvs7YC|YBWu@9Ix4f{9PN1*rI=>OZZ#nfX}RHd$k#d(>ZU&zes z-+TScrOy?SS$U3QbVc^O{oB9wwL7|wcjM#ZQklq%SQgquW-LiWAK6zgvU2)Lb8%yj z2+n=-Vzg2`w6Ber*8}lE-46!h`v2&2-73zMqsME2z_bPOq-|JicJkjM-)I!rl~J2j z)Jz9jNje+dZF56GT`y`d(HrQ5<9jn(==J+Ce@p;lS+7qfUS`hdVwk=(K2w1=BI16Z z#Z(FAWq1i!DuQ`n0I+ie2tN-!@c8@L~Y9{H?%c_&6hHBtBIX<3~gX|puSOR)UoD+gMwd(tn*8S81fvyi> z(PVMaZ|+#nyRB^XO<6U8FI6b4Yger+CPZ8WS8DKJ4)STlb%gfx($8$qSgcfXBtR|p2?n%y8{N10t;E6eAYapo*$Us8xhBxsv32f-(AdShz0 zGjm#jJOjqs+KSB0&nqZp@R+@J?Hix3GmK+0_^Y?ye(IiMM~`LMO3i3QLA?j&5>Wn) zdQ2n~U{1s+vhqTPmU{2e6H(Cn^?mi&E58rg^GZRyL1vB;JVwTt33Fv{e1`-jFqGEy zadUH9+3=g~Ed}uH4a+1p*R{8vZ$h3?jnci!op#_eU5n(6CM}-1&F8|`OH3?@g|XuM zAgxGJVBq**=m+Nd$k&S?U|ko?6XlPPs02#mCfcH! z0H%ko^1j)?WOzh|he!2M7y0?MsOKn=ZOF)MRo<*0o}*(*dL3&YcwP3!S1kg2)LeXU z`T!;%sdiGa05c)Wn`3?e^VkFN{Ad|@UC2$dyzT)!@VNVAC1Lx)GyMarirDu+&cwwx zOxOb_FM*E+xJ6Rq&QH!=uiozHeJ?agt6E#@8<~u%*N|3U$UA}-1s8i9_oQ|OtQDjxs@=Z8jggHZNRZ?sD zj2U{qXj4<=bGR}`A2|jmYGc{4G}20yisn?7O|*vEvOUrTg6*~p4MXF+EhBjhFpsn; zVW)#Ws~+33ng7&LQwTl3M*mkCx`_+I()YctdBb$zk3ip1l2#m)I}lTpIwq}_gpi7U zI2M@%ay_LaqlLnjGD>lyw@4tpk)+9TFTbJ;_HGMcu(G;mfd|!$Ctj$FPo$1!P&cK^wQAwuQX({;>>>g?u2G@n`j;SNcdoTdG0O zqmx|uclEZsbV2h6S)UIwr)ClHNe8 z;@wN0-CP_4=p+RzMvWV&yOl-jq3MipqhnY4oM0|85VV)Bvb+OLlnBCHCEb0N?x+uq z@yF*l(s}ixNik8I(#@I#?j{n_$i;OUd?#Op~Cb z(WlH_3L}x=CKSX0```MQLpj?vQIGtdS_xf^E`|W)!#leB!@1?76(VGzA?7NWI_jyB zNe8ZRuuE-(TJmM(p_rR)D5K1ymer!I!Z9{<-^k2qGSw z3FsuD+Twuy?h+pRW!=|mXGtEphq#kE8LI>1?1;_cADr`-N% zC`W-+N~=KzgizcuwYgLkDP(nIR$7*k%QgenufH~v$H%7S;>8O$72|Ped+q&B-*MMp z9Xoka_8mT?*;4|$J#yZe{=}5&VOxR~4G%uP-yU4)!#}Ug!V~l4RqmZze{De3pHO;d zKdn`nK#h&IsZ=9WsC)$zMdak&!h8m1GP!jJ;O^AanqJws)-pRX_YBkq=-o}hT@|go zfk`IXsi4i4xt!&5UB;^CU=tdbcosV!1^X_S^QCv(7$x%SLnwtj3I#8LAG-cL%vb&S z4a(P=k!@^k`OO)EOXZ{_LebZHpBY#Cd+^gO(?PTfPKplN@axut2_k&t>!`Fk$obkMo zNLgupES33!E4BOQ%%Z&s6#uV6)1n_c9+iW_5Jf^?LLHqFQIRy>3Fg5eJ&Vt}ewK~c zTPrVR%UVy#m2LcDksyvmC$nyHkL;-HbGwp1q<{Ij^ksHvEf}%Z9$B?}!!{T;jJ%=; zAN4+@dhgq21T#A~E9cI>{^v#HGj4h?|A>$IczL{Wb^82RSCQ;;2J+k^&m$zQ+$WEb zWt`r{W8fWa_OjB)ymf-Eth$ddB?unO&0Z?X;|JrV#n&*6Em&n*liiB5CzzeRWONv!TT1rj{bL2ag^;9@`yXo<^=! zWHW+bFPo)DDC+UOWS_7U%_!8rgycc*NnKF}vjV`FQAVyB4DTH7S%D7c68M1iu?H30 zvn?ouJ6bLEWLKch=Xh&aE)YdQ9Rfnea5CzXrukrm)BclSPL??gHCTc0{b8I-pka@k z9theGCgZ&TN|vk(KYWqkTTgcHvSfp{$_BKBv!XAj1fd^0`|S7`ik>(}#n#J!`^-_52k6wt5DW2{hDh>7nSDD^w)Aw&1b3UsjIXADMPGotcVqsyv zmxX0w)XG{tJ2UgSehz$iY*KF4xG*z+a{D!}dgbwxr{65MP`bT;38uFU`%h8!E_>oW z`p>79Br(js@{#>x>6x%No5~anNb*Gn@8S@&$KGms=VHZP#k>*FW22zL6+QSBwomnq zUT-(_0F~f}n~42BtwGJyd)oSgZT*~JOo#Z&MMHb4tz~*Jb68r8L@d;jm z4MGR0;l5aQ=E~r-2j%!5GGH=@BdQeel`oZLDX7A0s3aO1VJ)jN4#}`)=ITMOnRf>B z%1Y^IHPFAl!uLWp$@ibL>GZ=6-b&P!uTj?5Y#P9a&k4W`yV@*=b+3EU!q?(1%PFh6pyn}@e|%Jx=U%aaP~+gk?Wy6N)(FsENV zs{_=;C)gHR2NJ2eR~of|EQT_rQ~{+-o&(?WNEJF(>AfOeFsHFfd*7Lb9;!-@Nd=40 zNc%}QlGHy8*!2e>Xd{zNAitXADM_x5RHh63Kp+;((kE*vP_2z)sn$28c!{0kfl$aM zhn@tod}NkLAV|~&fa`_@MoDJlyUHGUnL#Jv3w7zZXy4OU8&WB9Lk#X++yoUNgNVe zBvQ5X;;+qZDaB}VtmejJtJ{ztu@!`lei6jY_geXcBTGq=_JC?FA1$sdt0wQl(xS}I z&Hc;&oxT6Pd&IR{asJ}$XVjgI|4Vh}XSO$wNS4hVvvAsd=92TsOG*5*B%lRK1(Fjk$IAt0rgbbWMsG@I@4B>}L&yU9H{BDW{1M z7-WYSurp8W7|rORf^}mfeMz=P?u)HVxa-JZyQ4nYb*<${1@exugE1cu&@RP_q$w8* zr5hgso0++S4NLBgwJ!usSlWvE3X?Cf8)UMY z7zp6j;^V$<9(-9YXRn_pkdVgzr$}nN9IR)wVVW8K`sSKkx_nutr>DP2M1C}%|B}5& zg>frZYWdj*?!9lO+iv)yt&MfrJ+((h$H%q*nL(0DS&eR{gvJ|9C^0SoD0`2(ANu&I z1JE0`T5vOS<-o=?^*dT-PYT+toMpre=E%%@;NHqT@rv$A;(N+e&niam_&JN#%M7hv zPYy`i(f+v=LYeK5paxT!lnG(A_LGCnSSJ%x(ahX=hzBoLR0QUv9qhmO;6 zJQO?<59m_JUxw0-)kf$bbOSdrIEe{@rEmZ96Zjb1Z@dmVfL@^}FMQ~~kP>BwQ==?v z>wR0FI{BG;_RRI5yJOh*3wFHWJa=g@WXAxYtRNr=zQMf?z^8yr|766Mz^T_x^*JXb z(*#@x1&g8>DGQC~T-ZL(OpXqxpTmwVEC6#rjKAxon~K70Z>!&dD!Q$&%G~U{EH2Fd zeBIuDcw%zmi>G!?9UL7Ukw$G}ecxR_gCy!*7X?F!@Bn7?*9$;*z)T-BdY1b(4VoNi zK{2t=;N2wnzASwb?3&rJV?+)gJu3I#ckiEw$cNsXe&(O}iPA4-XJ_ByRF-Hxa6rdR zhIIUFNcD3S%uN^BKClM3R_1AJJ~P-2BSy>8P-4%oCnLD&6-#aKLc}B_$u3)3MqgT9 zlFOGa<(~Kh3rh<>{P^_HZ^ic7wXu`OPXFt{LxiV=wQ> zHmfSAV>cWtJr?Cw9>a0MesHtYRFrGb!^OE!crqX(fVXbk$KVNaI0H1!ZH3V@x z&KJ1&B9QC*M?#S|<-rU$z7C9Xf7~;fbM$u>?31Ot-gQU6hOT3EqJT@gw)6592-++! zms%45MPzl9BcqePGMN~zyM=GFGgY`33`tD6V!(^aPj z1>cdp_=+ORf!N$ot5OwFicQGsiFz#ieJ?LA$ zSB@KyXp*5eX2zAZwzF(J2*L^>AiehHAEwGgsm2C=(Ve8L$Hj$3xpw7BW?t4?8(aU^ zRVI2_NX=Gzqy5_T?WKQz@;#4Rv2T3zr4ze$eerGk54>5nRPAyg)H7N$CTWx~qRi%M zKx%lltGG{}Q5^2~H3{K*n+j2$+(o7<+bU53y@8bK8*0Eu%^WBb8PPW;ss#3^$+Bi2 znwF=rg5EqOE(>X3KgV5yEvra~LQ$_!9%Q%{LCIdb9+#+O#N!dc7rfFIe`k`@Kv0Ao zF=wg^aUid|P5|=y;e2#}WNu?Mz#MYT06`r)?U+JarvaE3%yXL8cttyuWtoL>!Bk8O zaEuJutOFi`ZDHO}&Ucr+au4Kut<3&8y5>~rbSvan`RLf|tllJ4C*0>UfivXnN_8qk zlbw~NWm%Y=?}GZOtS_x*0AIUy_3Gz|$gezZ%jL1*9~+w({e;oc@u|^~VFgCCY&4p} zM8_{6U6rX4Oj1;?JfBQf8;fj~`nAm#ut*obAmwwqRYDe4H@Z6l&?^EvZxE{RIX62a zuRs6#o6=b=eCFqVo**81?Ebs&xcw#f-f_pBGPP$)+3M}u`hxaG*5X;JSc#hsvaYn* z80^=t(z0gIeI;OQWli9<_58t;x!F0nGJW|O9wE3DorSqmXYRV|(NnkIo|TfcbPSK^ zn8iU_gY-Pc%sKwvioDzc%fnPK!>bOYag(jM!lo2t<762D{3Js%JFj%}y*@B`oz!C_ zm|OqMlg!{>9$-BRvROmsbIIUkHq2l~!gE4V0*u7k5;Th4AlHjfSg@801eCVQ@HauB z=!%VSrgFa93zw9B;10|Spr=GCN6qTqVjX_qjk9g7ZG@1ebFs2J0Iez1@0z}fYaZAO zXE2`P>4`+^@eSmGAmET*Cz2_-#9apLQ|d30ru=qQwRv3O@KK@%P`8D zOY3SEJU=@tS1w(VYnQM7>Ei6{w}{9qp0wx2=)lKLOz!%e?)c)n4i69O^n;paN#(D5 zew+#BoX!XYVt<`e4%%JEMHcR|ZS3oH%SAlzF%?1HY*XossMS1sPuscWu(l?%^Rsf_ z{rCS`R?xhu!2BaW?h^ztJUnp!?Pt#1bzuL2EWxPd^acc#Ae_52Fc;mY&`VqUUXA?` z(JvQ_0%>1tZGAmUJ?1S-sj33og^TCsMP#?!if1*}re{9v&O6Wi(Wx_Mda|6u!+FzD zB{0=JYrHmKsF95eUyJ>WJCMH=7dnVqxWM%sLWzPiG{b3oNDx;OmsZPwnRij&OOFM( z29)Q_N1XoRaQ2h3M6DZV!HZ!3nms)wr}0bx{F9B)cwD+(m7w9{bwa^boIW?DO1!TUQaV_ZD5Hd2ClXv9xxaA6Ms_ZhkF z6U_BdgrE%`Nzm#c%kKnnKI(}&uBS?OD=SNK?%X+f=)TvUzL_e$t%aE@Js=++|I8C7 z@4Rb#Y`o`emO2vA8%3F}G5b=mD7kXgH(rfCtPj!?KO1u*lpI*uNT`bfpBT#~JluGTf<8%PN~bl3SrR7@BZH<~ zEfv)OAIJ`i>>I3df_cvDp|;0O&&OCIM#9jC=RCRnEF_3wj+`ZK{5<@v`yrqM4v;VH z_bL483yT&X+)E`-!K=5q)3N6l7hESaQu;*@qRS{nWB6Qp(wy8N_ulsADFA7Fu${ei1H$npB!&qTLhJTGyIoZ3JnW9tHRBmD=kY4RrY0Q9}(uf`NJg!xv zTE#WiGl;LP$0> z%f7kS+t+>G1hE_Nl9$<~JSofUJ}dV#M!H{?wN z?1LBbsyqkb`6bN2%damNT~1pb0!Bfg$6$XGn-|Y&g>~KY6PWI1;}@r=W%laKvnE$M zw7&U;Cr+LIk({MVj0WaTk~mbT;1roTIqSC1j5}|r;zd-|DANi>ME1&qUB~oA$AaBE zI7Tl(RfX&`ph@a>#-_DZnYnsJ9(nW;T?E|}nRy;tXjRoeA3l6WjS`|+gNCFU+4(hT zJN9POH_2o^3gBxiYjWl4%&q?Svk()j%Xcp?&p!NAX6&zu zyyWVmuaSv^XMXOD-uR6_{n&{UGCHzTXRNog^rPKyP0$Q0aRzU48W9a=SB|WlikZ)F zYJ#@4aaeY*#Uoe`_@jYANJ+nE$1Z-9*~QJ7_v%YE0XI|*$hrBlUn?f@An!ALM8OZx z@}vHqm9I!Jo+yevPwIV}3e|7ipPzWoc2SUw2*}d*qQfdX@#Uestv0^g9h6KmO5! z*$pr1XtICfOgu?TRSXKN_qP$|2e;SGYp|$P0WrO{lUCKphNuPRQ4qut`x;Y%3{fyy z5-2XD;GUWLdz;&`SHVZiO%mbV-}l|`eyg{9yL*ouIjr-?5Rz#01~s6)?Tt>ScRREU zeXHHc#5L8WUR+&~h57jm+|upWe8vcDy?I=)4cM!0wQuv_n1S~tb7XOOC9h|&XOApBMwcZ7_U74h=LpPo zGIM3z^XvKrD--?q%P2%TZVcvxCV+Xqb^+wZLZ!s1f;Wj>#RwFpR5;788^95zb%Idh z_d~mc{df{)X?((+ zPD!xD4r7#L&Si}PWlITMjY_hvE-uN;wX1UJ;)O1VKm2j*jXyWBdvxMY_T9GcLnbFD zB^hJjyoq%PHB+Ub>n#RnT@1B+Lepfx*1s zuBFjYRCVxE(Xq4VUUyTl+ry`P+NaIE_1nJ9)XuS;PKHqO3eXgpf^4?iy_YD{gdo$8Jd{_E)I#K9;*$IN1^^oFppxh2ah z%a^({`QP$n=kZf(?5~fUI{vx$XqMUSzoq zHx294>dC5X1%TFl^)SZxnlPfxoc0595xcM@vIGwx=lF|d>%!7spP$=D$=;2{>^lMg zgN&WurrgJqCv7Q7RXmu*m{3b8i5f^iBiW4AlKyP=KI2u~*efrIbLuPJeW&jTclGf$TX=| z5Z8=!yDe+0t8(@7v`k;PAQvA!$87vLj)7L|-H#nV`j2B1 zV~q$9IHrn9AHf{$wjjKI3DUMeFRwi-wYMseV^L<;a|c_MEkbKu-0JgATUJ(A<^BgA zc)3)f$4jm8lz!b{X*Uh7VwmeF4ln;g#S{(-cPD z_bzQhvXB8iZxEbxryHCeCA*!yH`g-<>-~E7dpp0dhV@wpj~9!9;(57W1{0Sj7Md)l z+7sXK9AHxRrVACae!?+L`MN)cmZKuf^pS0cKwtR2a=@VkaeodoZ=B%!+D?HFQTE28 zdp}`@!f47-!0Ui{QxZG<_bPko{T4v@KDO_`yf*1o+p_ZI>e7<-cVGYLV?Qn;Um(xJ z7#|+|>w^alzHe3v4Na5pLHT~9&SfJ(8K3Mm)`%DZ~0btS-&d-fcCr>msezN zZvIts^Yh=bxU%x^+NgP6mCtX*(Zff-uq#pcBO@cj>W~zpDx85BmM@~*6H)~|v5~=i z-tzMDzs%1q{8X1O@vnQZ~<(hJeYRjbybOXWGq;vT#;WigR_3ixKan=9dG-g0`G1_YQja8zq2z7R=J} z@ABe;bhb9+;`s~mcdz~5!RPz^_su8wzWwP_XZ~|1QL&0z zvB09z0AANcx4HLGVGh?V0GxanXj4SA;FQn8#gzNrnb|HgSFg$g4?M^P(+kee{G&fs zYUzA?72|}&u%lC_rS8h`;icu(e|Ub+;N6O;k&%x*e*E}vXJ7dY(l+Z%i$F1=n3JmP zw3D>k9oQq*^Ye?}{X|HLbFuYvr*A*?>4y#-k?f$CK|Q-~I>LoY44-wusz1FMP?2Ldx+8^ zxU**t`Bzr{xCl25hNYEdIe+2&3%1-IzTiv0R9={ID;~b@zPpbeJ^Jd2iODKw;Q*JE zTnWj*NnbN*O@%$d>Fv`WrR>>>;!WHtIza(36;

  • `9s8@h2m$RMV7INJm+Tfe@z%MBUlv1G+V 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 VP5