From 985d3ea2be4f7fdd1e61cf91c03146018ca58464 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Tue, 27 Aug 2019 19:39:12 +0300 Subject: [PATCH 01/27] Added outline blur pilot --- .../Runtime/Scripts/OutlineBehaviour.cs | 55 +++++++++----- .../Runtime/Scripts/OutlineLayer.cs | 10 +-- .../Runtime/Scripts/OutlineRenderer.cs | 25 ++++--- .../Runtime/Scripts/OutlineResourceCache.cs | 70 ++++++++++++++---- .../Runtime/Scripts/OutlineResources.cs | 14 ++-- .../Runtime/Scripts/OutlineResources.cs.meta | 5 +- .../Runtime/Shaders/OutlinePass1.shader | 71 +++++++++++++++++++ ...s.shader.meta => OutlinePass1.shader.meta} | 0 ...PostProcess.shader => OutlinePass2.shader} | 32 +++------ .../Runtime/Shaders/OutlinePass2.shader.meta | 8 +++ 10 files changed, 217 insertions(+), 73 deletions(-) create mode 100644 Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader rename Assets/Plugins/UnityFx.Outline/Runtime/Shaders/{OutlinePostProcess.shader.meta => OutlinePass1.shader.meta} (100%) rename Assets/Plugins/UnityFx.Outline/Runtime/Shaders/{OutlinePostProcess.shader => OutlinePass2.shader} (65%) create mode 100644 Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader.meta diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs index ecb0ec5..248cafb 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs @@ -31,7 +31,8 @@ public sealed class OutlineBehaviour : MonoBehaviour #pragma warning restore 0649 private Material _renderMaterial; - private Material _postProcessMaterial; + private Material _hPassMaterial; + private Material _vPassMaterial; private Renderer[] _renderers; private CommandBuffer _commandBuffer; @@ -69,9 +70,14 @@ public OutlineResources OutlineResources _renderMaterial.shader = value.RenderShader; } - if (_postProcessMaterial) + if (_hPassMaterial) { - _postProcessMaterial.shader = value.PostProcessShader; + _hPassMaterial.shader = value.HPassShader; + } + + if (_vPassMaterial) + { + _vPassMaterial.shader = value.VPassBlendShader; } } } @@ -94,9 +100,9 @@ public Color OutlineColor _outlineColor = value; _changed = true; - if (_postProcessMaterial) + if (_vPassMaterial) { - _postProcessMaterial.SetColor(OutlineRenderer.ColorParamName, value); + _vPassMaterial.SetColor(OutlineRenderer.ColorParamName, value); } } } @@ -121,9 +127,14 @@ public int OutlineWidth _outlineWidth = value; _changed = true; - if (_postProcessMaterial) + if (_hPassMaterial) { - _postProcessMaterial.SetInt(OutlineRenderer.WidthParamName, value); + _hPassMaterial.SetInt(OutlineRenderer.WidthParamName, value); + } + + if (_vPassMaterial) + { + _vPassMaterial.SetInt(OutlineRenderer.WidthParamName, value); } } } @@ -197,10 +208,16 @@ private void OnValidate() _changed = true; } - if (_postProcessMaterial) + if (_hPassMaterial) { - _postProcessMaterial.SetInt(OutlineRenderer.WidthParamName, _outlineWidth); - _postProcessMaterial.SetColor(OutlineRenderer.ColorParamName, _outlineColor); + _hPassMaterial.SetInt(OutlineRenderer.WidthParamName, _outlineWidth); + _changed = true; + } + + if (_vPassMaterial) + { + _vPassMaterial.SetInt(OutlineRenderer.WidthParamName, _outlineWidth); + _vPassMaterial.SetColor(OutlineRenderer.ColorParamName, _outlineColor); _changed = true; } } @@ -279,18 +296,24 @@ private void UpdateCommandBuffer() _renderMaterial = new Material(_outlineResources.RenderShader); } - if (_postProcessMaterial == null && _outlineResources.PostProcessShader) + if (_hPassMaterial == null && _outlineResources.HPassShader) + { + _hPassMaterial = new Material(_outlineResources.HPassShader); + _hPassMaterial.SetInt(OutlineRenderer.WidthParamName, _outlineWidth); + } + + if (_vPassMaterial == null && _outlineResources.VPassBlendShader) { - _postProcessMaterial = new Material(_outlineResources.PostProcessShader); - _postProcessMaterial.SetColor(OutlineRenderer.ColorParamName, _outlineColor); - _postProcessMaterial.SetInt(OutlineRenderer.WidthParamName, _outlineWidth); + _vPassMaterial = new Material(_outlineResources.VPassBlendShader); + _vPassMaterial.SetInt(OutlineRenderer.WidthParamName, _outlineWidth); + _vPassMaterial.SetColor(OutlineRenderer.ColorParamName, _outlineColor); } - if (_renderMaterial && _postProcessMaterial) + if (_renderMaterial && _hPassMaterial && _vPassMaterial) { using (var renderer = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget)) { - renderer.RenderSingleObject(_renderers, _renderMaterial, _postProcessMaterial); + renderer.RenderSingleObject(_renderers, _renderMaterial, _hPassMaterial, _vPassMaterial); } _changed = false; diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs index fb9a68a..8e09af9 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs @@ -143,16 +143,18 @@ public void Add(GameObject go, int ignoreLayerMask) internal void Render(OutlineRenderer renderer, OutlineResourceCache resources) { var renderMaterial = resources.GetRenderMaterial(this); - var postProcessMaterial = resources.GetPostProcessMaterial(this); + var hPassMaterial = resources.GetHPassMaterial(this); + var vPassMaterial = resources.GetVPassMaterial(this); - postProcessMaterial.SetColor(_colorNameId, _outlineColor); - postProcessMaterial.SetInt(_widthNameId, _outlineWidth); + hPassMaterial.SetInt(_widthNameId, _outlineWidth); + vPassMaterial.SetInt(_widthNameId, _outlineWidth); + vPassMaterial.SetColor(_colorNameId, _outlineColor); foreach (var kvp in _outlineObjects) { if (kvp.Key) { - renderer.RenderSingleObject(kvp.Value, renderMaterial, postProcessMaterial); + renderer.RenderSingleObject(kvp.Value, renderMaterial, hPassMaterial, vPassMaterial); } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index 8164666..9189a18 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -26,7 +26,8 @@ public struct OutlineRenderer : IDisposable { #region data - private readonly int _renderTextureId; + private readonly int _maskRtId; + private readonly int _postProcessRtId; private readonly RenderTargetIdentifier _renderTarget; private readonly CommandBuffer _commandBuffer; @@ -79,27 +80,28 @@ public OutlineRenderer(CommandBuffer commandBuffer, RenderTargetIdentifier dst) { Debug.Assert(commandBuffer != null); - _renderTextureId = Shader.PropertyToID("_MainTex"); + _maskRtId = Shader.PropertyToID("_MaskTex"); + _postProcessRtId = Shader.PropertyToID("_PostProcessTex"); _renderTarget = dst; _commandBuffer = commandBuffer; _commandBuffer.Clear(); _commandBuffer.BeginSample(EffectName); - _commandBuffer.GetTemporaryRT(_renderTextureId, -1, -1, 0, FilterMode.Bilinear, RenderTextureFormat.R8); + _commandBuffer.GetTemporaryRT(_maskRtId, -1, -1, 0, FilterMode.Bilinear, RenderTextureFormat.R8); + _commandBuffer.GetTemporaryRT(_postProcessRtId, -1, -1, 0, FilterMode.Bilinear, RenderTextureFormat.R8); } /// /// Adds commands for rendering single outline object. /// - public void RenderSingleObject(Renderer[] renderers, Material renderMaterial, Material postProcessMaterial) + public void RenderSingleObject(Renderer[] renderers, Material renderMaterial, Material hPassMaterial, Material vPassMaterial) { Debug.Assert(renderers != null); Debug.Assert(renderMaterial != null); - Debug.Assert(postProcessMaterial != null); + Debug.Assert(hPassMaterial != null); + Debug.Assert(vPassMaterial != null); - var rt = new RenderTargetIdentifier(_renderTextureId); - - _commandBuffer.SetRenderTarget(rt); + _commandBuffer.SetRenderTarget(_maskRtId); _commandBuffer.ClearRenderTarget(false, true, Color.black); foreach (var renderer in renderers) @@ -113,7 +115,9 @@ public void RenderSingleObject(Renderer[] renderers, Material renderMaterial, Ma } } - _commandBuffer.Blit(rt, _renderTarget, postProcessMaterial); + _commandBuffer.SetGlobalTexture(_maskRtId, _maskRtId); + _commandBuffer.Blit(_maskRtId, _postProcessRtId, hPassMaterial); + _commandBuffer.Blit(_postProcessRtId, _renderTarget, vPassMaterial); } #endregion @@ -123,7 +127,8 @@ public void RenderSingleObject(Renderer[] renderers, Material renderMaterial, Ma /// public void Dispose() { - _commandBuffer.ReleaseTemporaryRT(_renderTextureId); + _commandBuffer.ReleaseTemporaryRT(_postProcessRtId); + _commandBuffer.ReleaseTemporaryRT(_maskRtId); _commandBuffer.EndSample(EffectName); } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs index cf6e76a..d441663 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs @@ -11,7 +11,8 @@ internal class OutlineResourceCache { private OutlineResources _outlineResources; private Material _renderMaterial; - private Dictionary _postProcessMaterials; + private Dictionary _hPassMeterials; + private Dictionary _vPassMeterials; public OutlineResources OutlineResources { @@ -42,22 +43,43 @@ public Material GetRenderMaterial(object obj) return _renderMaterial; } - public Material GetPostProcessMaterial(object obj) + public Material GetHPassMaterial(object obj) { Debug.Assert(obj != null); Debug.Assert(_outlineResources != null); Material mat; - if (_postProcessMaterials == null) + if (_hPassMeterials == null) { - _postProcessMaterials = new Dictionary(); + _hPassMeterials = new Dictionary(); } - if (!_postProcessMaterials.TryGetValue(obj, out mat)) + if (!_hPassMeterials.TryGetValue(obj, out mat)) { - mat = new Material(_outlineResources.PostProcessShader); - _postProcessMaterials.Add(obj, mat); + mat = new Material(_outlineResources.HPassShader); + _hPassMeterials.Add(obj, mat); + } + + return mat; + } + + public Material GetVPassMaterial(object obj) + { + Debug.Assert(obj != null); + Debug.Assert(_outlineResources != null); + + Material mat; + + if (_vPassMeterials == null) + { + _vPassMeterials = new Dictionary(); + } + + if (!_vPassMeterials.TryGetValue(obj, out mat)) + { + mat = new Material(_outlineResources.VPassBlendShader); + _vPassMeterials.Add(obj, mat); } return mat; @@ -79,18 +101,33 @@ public void UpdateResources() } } - if (_postProcessMaterials != null) + if (_hPassMeterials != null) + { + if (_outlineResources.HPassShader) + { + foreach (var m in _hPassMeterials.Values) + { + m.shader = _outlineResources.HPassShader; + } + } + else + { + _hPassMeterials.Clear(); + } + } + + if (_vPassMeterials != null) { - if (_outlineResources.PostProcessShader) + if (_outlineResources.VPassBlendShader) { - foreach (var m in _postProcessMaterials.Values) + foreach (var m in _vPassMeterials.Values) { - m.shader = _outlineResources.PostProcessShader; + m.shader = _outlineResources.VPassBlendShader; } } else { - _postProcessMaterials.Clear(); + _vPassMeterials.Clear(); } } } @@ -102,9 +139,14 @@ public void UpdateResources() public void Clear() { - if (_postProcessMaterials != null) + if (_hPassMeterials != null) + { + _hPassMeterials.Clear(); + } + + if (_vPassMeterials != null) { - _postProcessMaterials.Clear(); + _vPassMeterials.Clear(); } _renderMaterial = null; diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResources.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResources.cs index 928cd32..3be19fb 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResources.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResources.cs @@ -18,9 +18,14 @@ public class OutlineResources : ScriptableObject public Shader RenderShader; /// - /// Gets or sets a that renders outline around the mask, that was generated with . + /// Gets or sets a that renders outline around the mask, that was generated with (pass 1). /// - public Shader PostProcessShader; + public Shader HPassShader; + + /// + /// Gets or sets a that renders outline around the mask, that was generated with (pass 2). + /// + public Shader VPassBlendShader; /// /// Gets a value indicating whether the instance is in valid state. @@ -29,7 +34,7 @@ public bool IsValid { get { - return RenderShader && PostProcessShader; + return RenderShader && HPassShader && VPassBlendShader; } } @@ -39,7 +44,8 @@ public bool IsValid public void ResetToDefaults() { RenderShader = Shader.Find("UnityFx/Outline/RenderColor"); - PostProcessShader = Shader.Find("UnityFx/Outline/PostProcess"); + HPassShader = Shader.Find("UnityFx/Outline/HPass"); + VPassBlendShader = Shader.Find("UnityFx/Outline/VPassBlend"); } } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResources.cs.meta b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResources.cs.meta index fefba00..0f1aca3 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResources.cs.meta +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResources.cs.meta @@ -1,13 +1,12 @@ fileFormatVersion: 2 guid: b503341e0a514e3489c4851727e68257 -timeCreated: 1566149564 -licenseType: Free MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: - RenderShader: {fileID: 4800000, guid: ac20fbf75bafe454aba5ef3c098349df, type: 3} - - PostProcessShader: {fileID: 4800000, guid: 41c9acbf41c8245498ac9beab378de12, type: 3} + - HPassShader: {fileID: 4800000, guid: 41c9acbf41c8245498ac9beab378de12, type: 3} + - VPassBlendShader: {fileID: 4800000, guid: 1df0cb1700e142f4ca3b28297d3957da, type: 3} executionOrder: 0 icon: {instanceID: 0} userData: diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader new file mode 100644 index 0000000..e431a05 --- /dev/null +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader @@ -0,0 +1,71 @@ +// Copyright (C) 2019 Alexander Bogarsukov. All rights reserved. +// See the LICENSE.md file in the project root for more information. + +// Renders outline based on a texture produces by 'UnityF/Outline/RenderColor' output. +// Modified version of 'Custom/Post Outline' shader taken from https://willweissman.wordpress.com/tutorials/shaders/unity-shaderlab-object-outlines/. +Shader "UnityFx/Outline/HPass" +{ + Properties + { + _Width("Outline Thickness", Range(1, 32)) = 5 + _MainTex("Mask Texture", 2D) = "white"{} + } + + SubShader + { + ZWrite Off + ZTest Always + Lighting Off + + Pass + { + CGPROGRAM + + #pragma vertex vert + #pragma fragment frag + #include "UnityCG.cginc" + + sampler2D _MainTex; + + // _TexelSize is a float2 that says how much screen space a texel occupies. + float2 _MainTex_TexelSize; + int _Width; + + struct v2f + { + float4 pos : POSITION; + float2 uvs : TEXCOORD0; + }; + + v2f vert(appdata_base v) + { + v2f o; + + // Despite the fact that we are only drawing a quad to the screen, Unity requires us to multiply vertices by our MVP matrix, presumably to keep things working when inexperienced people try copying code from other shaders. + o.pos = UnityObjectToClipPos(v.vertex); + + // Also, we need to fix the UVs to match our screen space coordinates. + o.uvs = ComputeScreenPos(o.pos); + + return o; + } + + half frag(v2f i) : COLOR + { + float TX_x = _MainTex_TexelSize.x; + float colorIntensityInRadius; + int n = _Width; + float n2 = (float)n / 2; + + for (int k = 0; k < n; k += 1) + { + colorIntensityInRadius += tex2D(_MainTex, i.uvs.xy + float2((k - n2) * TX_x, 0)).r / n; + } + + return colorIntensityInRadius; + } + + ENDCG + } + } +} diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePostProcess.shader.meta b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader.meta similarity index 100% rename from Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePostProcess.shader.meta rename to Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader.meta diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePostProcess.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader similarity index 65% rename from Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePostProcess.shader rename to Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader index e5679d5..7e014f5 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePostProcess.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader @@ -3,15 +3,12 @@ // Renders outline based on a texture produces by 'UnityF/Outline/RenderColor' output. // Modified version of 'Custom/Post Outline' shader taken from https://willweissman.wordpress.com/tutorials/shaders/unity-shaderlab-object-outlines/. - -// TODO: Blur the outline. -Shader "UnityFx/Outline/PostProcess" +Shader "UnityFx/Outline/VPassBlend" { Properties { _Color("Outline Color", Color) = (1, 0, 0, 1) - _Width("Outline Thickness", Range(1, 30)) = 5 - _MainTex("Main Texture", 2D) = "white"{} + _Width("Outline Thickness", Range(1, 32)) = 5 } SubShader @@ -26,10 +23,12 @@ Shader "UnityFx/Outline/PostProcess" #pragma fragment frag #include "UnityCG.cginc" - sampler2D _MainTex; + sampler2D _MaskTex; + sampler2D _PostProcessTex; // _TexelSize is a float2 that says how much screen space a texel occupies. - float2 _MainTex_TexelSize; + float2 _MaskTex_TexelSize; + float2 _PostProcessTex_TexelSize; float4 _Color; int _Width; @@ -55,33 +54,22 @@ Shader "UnityFx/Outline/PostProcess" half4 frag(v2f i) : COLOR { // If something already exists underneath the fragment, discard the fragment. - if (tex2D(_MainTex, i.uvs.xy).r > 0) + if (tex2D(_MaskTex, i.uvs.xy).r > 0) { discard; } - // Split texel size into smaller words. - float TX_x = _MainTex_TexelSize.x; - float TX_y = _MainTex_TexelSize.y; - - // And a final intensity that increments based on surrounding intensities. + float TX_y = _PostProcessTex_TexelSize.y; float colorIntensityInRadius; - int n = _Width; float n2 = (float)n / 2; - // For every iteration we need to do horizontally. for (int k = 0; k < n; k += 1) { - // For every iteration we need to do vertically. - for (int j = 0; j < n; j += 1) - { - // Increase our output color by the pixels in the area. - colorIntensityInRadius += tex2D(_MainTex, i.uvs.xy + float2((k - n2) * TX_x, (j - n2) * TX_y)).r; - } + colorIntensityInRadius += tex2D(_PostProcessTex, i.uvs.xy + float2(0, (k - n2) * TX_y)).r / n; } - return colorIntensityInRadius * _Color; + return half4(_Color.rgb, _Color.a * colorIntensityInRadius * 2); } ENDCG diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader.meta b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader.meta new file mode 100644 index 0000000..5852e4b --- /dev/null +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1df0cb1700e142f4ca3b28297d3957da +ShaderImporter: + externalObjects: {} + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: From 2338a10b6fa5dcfb1b056878aa04eeef85bf668a Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Wed, 28 Aug 2019 12:38:11 +0300 Subject: [PATCH 02/27] Added support for outline modes --- Assets/Examples/Prefabs/OutlineLayers.asset | 4 +- .../Runtime/Prefabs/OutlineResources.asset | 3 +- .../Runtime/Scripts/IOutlineSettings.cs | 37 +++++ .../Runtime/Scripts/IOutlineSettings.cs.meta | 11 ++ .../Runtime/Scripts/OutlineBehaviour.cs | 142 +++++++++++------- .../Runtime/Scripts/OutlineLayer.cs | 109 ++++++++------ .../Runtime/Scripts/OutlineMode.cs | 23 +++ .../Runtime/Scripts/OutlineMode.cs.meta | 11 ++ .../Runtime/Scripts/OutlineRenderer.cs | 47 +++++- .../Runtime/Scripts/OutlineResourceCache.cs | 6 +- .../Runtime/Shaders/OutlinePass1.shader | 27 ++-- .../Runtime/Shaders/OutlinePass2.shader | 33 ++-- 12 files changed, 311 insertions(+), 142 deletions(-) create mode 100644 Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs create mode 100644 Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs.meta create mode 100644 Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMode.cs create mode 100644 Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMode.cs.meta diff --git a/Assets/Examples/Prefabs/OutlineLayers.asset b/Assets/Examples/Prefabs/OutlineLayers.asset index 851e3cf..7f4daae 100644 --- a/Assets/Examples/Prefabs/OutlineLayers.asset +++ b/Assets/Examples/Prefabs/OutlineLayers.asset @@ -13,6 +13,8 @@ MonoBehaviour: m_EditorClassIdentifier: _layers: - _outlineColor: {r: 1, g: 0, b: 0, a: 1} - _outlineWidth: 6 + _outlineWidth: 21 + _outlineMode: 0 - _outlineColor: {r: 0.8382353, g: 0.75, b: 0, a: 1} _outlineWidth: 3 + _outlineMode: 0 diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Prefabs/OutlineResources.asset b/Assets/Plugins/UnityFx.Outline/Runtime/Prefabs/OutlineResources.asset index e91fa30..5b0a0c7 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Prefabs/OutlineResources.asset +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Prefabs/OutlineResources.asset @@ -12,4 +12,5 @@ MonoBehaviour: m_Name: OutlineResources m_EditorClassIdentifier: RenderShader: {fileID: 4800000, guid: ac20fbf75bafe454aba5ef3c098349df, type: 3} - PostProcessShader: {fileID: 4800000, guid: 41c9acbf41c8245498ac9beab378de12, type: 3} + HPassShader: {fileID: 4800000, guid: 41c9acbf41c8245498ac9beab378de12, type: 3} + VPassBlendShader: {fileID: 4800000, guid: 1df0cb1700e142f4ca3b28297d3957da, type: 3} diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs new file mode 100644 index 0000000..dac4dbf --- /dev/null +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs @@ -0,0 +1,37 @@ +// Copyright (C) 2019 Alexander Bogarsukov. All rights reserved. +// See the LICENSE.md file in the project root for more information. + +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; + +namespace UnityFx.Outline +{ + /// + /// Defines outline settings. + /// + public interface IOutlineSettings + { + /// + /// Gets or sets outline color. + /// + /// + /// + Color OutlineColor { get; set; } + + /// + /// Gets or sets outline width in pixels. Allowed range is [, ]. + /// + /// + /// + int OutlineWidth { get; set; } + + /// + /// Gets or sets outline mode. + /// + /// + /// + OutlineMode OutlineMode { get; set; } + } +} diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs.meta b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs.meta new file mode 100644 index 0000000..688fd30 --- /dev/null +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: efc18f75d5206f14a80e9306650c858a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs index 248cafb..85a974e 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs @@ -14,7 +14,7 @@ namespace UnityFx.Outline /// [ExecuteInEditMode] [DisallowMultipleComponent] - public sealed class OutlineBehaviour : MonoBehaviour + public sealed class OutlineBehaviour : MonoBehaviour, IOutlineSettings { #region data @@ -27,6 +27,8 @@ public sealed class OutlineBehaviour : MonoBehaviour [SerializeField] [Range(OutlineRenderer.MinWidth, OutlineRenderer.MaxWidth)] private int _outlineWidth = 5; + [SerializeField] + private OutlineMode _outlineMode; #pragma warning restore 0649 @@ -83,63 +85,6 @@ public OutlineResources OutlineResources } } - /// - /// Gets or sets outline color for the layer. - /// - /// - public Color OutlineColor - { - get - { - return _outlineColor; - } - set - { - if (_outlineColor != value) - { - _outlineColor = value; - _changed = true; - - if (_vPassMaterial) - { - _vPassMaterial.SetColor(OutlineRenderer.ColorParamName, value); - } - } - } - } - - /// - /// Gets or sets outline width in pixels. Only positive values are allowed. - /// - /// - public int OutlineWidth - { - get - { - return _outlineWidth; - } - set - { - value = Mathf.Clamp(value, OutlineRenderer.MinWidth, OutlineRenderer.MaxWidth); - - if (_outlineWidth != value) - { - _outlineWidth = value; - _changed = true; - - if (_hPassMaterial) - { - _hPassMaterial.SetInt(OutlineRenderer.WidthParamName, value); - } - - if (_vPassMaterial) - { - _vPassMaterial.SetInt(OutlineRenderer.WidthParamName, value); - } - } - } - } - /// /// Gets all cameras outline data is rendered to. /// @@ -220,6 +165,9 @@ private void OnValidate() _vPassMaterial.SetColor(OutlineRenderer.ColorParamName, _outlineColor); _changed = true; } + + OutlineRenderer.SetupMeterialKeywords(_hPassMaterial, _outlineMode); + OutlineRenderer.SetupMeterialKeywords(_vPassMaterial, _outlineMode); } private void Update() @@ -257,6 +205,81 @@ private void OnWillRenderObject() #endregion + #region IOutlineSettings + + /// + public Color OutlineColor + { + get + { + return _outlineColor; + } + set + { + if (_outlineColor != value) + { + _outlineColor = value; + _changed = true; + + if (_vPassMaterial) + { + _vPassMaterial.SetColor(OutlineRenderer.ColorParamName, value); + } + } + } + } + + /// + public int OutlineWidth + { + get + { + return _outlineWidth; + } + set + { + value = Mathf.Clamp(value, OutlineRenderer.MinWidth, OutlineRenderer.MaxWidth); + + if (_outlineWidth != value) + { + _outlineWidth = value; + _changed = true; + + if (_hPassMaterial) + { + _hPassMaterial.SetInt(OutlineRenderer.WidthParamName, value); + } + + if (_vPassMaterial) + { + _vPassMaterial.SetInt(OutlineRenderer.WidthParamName, value); + } + } + } + } + + /// + public OutlineMode OutlineMode + { + get + { + return _outlineMode; + } + set + { + if (_outlineMode != value) + { + _outlineMode = value; + _changed = true; + + OutlineRenderer.SetupMeterialKeywords(_hPassMaterial, value); + OutlineRenderer.SetupMeterialKeywords(_vPassMaterial, value); + } + } + } + + #endregion + #region implementation private void RemoveDestroyedCameras() @@ -309,6 +332,9 @@ private void UpdateCommandBuffer() _vPassMaterial.SetColor(OutlineRenderer.ColorParamName, _outlineColor); } + OutlineRenderer.SetupMeterialKeywords(_hPassMaterial, _outlineMode); + OutlineRenderer.SetupMeterialKeywords(_vPassMaterial, _outlineMode); + if (_renderMaterial && _hPassMaterial && _vPassMaterial) { using (var renderer = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget)) diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs index 8e09af9..21a95fa 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs @@ -13,7 +13,7 @@ namespace UnityFx.Outline /// /// [Serializable] - public sealed class OutlineLayer : ICollection, ISerializationCallbackReceiver + public sealed class OutlineLayer : ICollection, IOutlineSettings, ISerializationCallbackReceiver { #region data @@ -29,6 +29,8 @@ public sealed class OutlineLayer : ICollection, ISerializationCallba [SerializeField] [Range(OutlineRenderer.MinWidth, OutlineRenderer.MaxWidth)] private int _outlineWidth = 4; + [SerializeField] + private OutlineMode _outlineMode; private bool _changed; @@ -36,48 +38,6 @@ public sealed class OutlineLayer : ICollection, ISerializationCallba #region interface - /// - /// Gets or sets outline color for the layer. - /// - /// - public Color OutlineColor - { - get - { - return _outlineColor; - } - set - { - if (_outlineColor != value) - { - _outlineColor = value; - _changed = true; - } - } - } - - /// - /// Gets or sets outline width in pixels. Only positive values are allowed. - /// - /// - public int OutlineWidth - { - get - { - return _outlineWidth; - } - set - { - value = Mathf.Clamp(value, OutlineRenderer.MinWidth, OutlineRenderer.MaxWidth); - - if (_outlineWidth != value) - { - _outlineWidth = value; - _changed = true; - } - } - } - /// /// Gets a value indicating whether the layer contains unapplied changes. /// @@ -137,9 +97,6 @@ public void Add(GameObject go, int ignoreLayerMask) } } - /// - /// Renders the layer with the passed. - /// internal void Render(OutlineRenderer renderer, OutlineResourceCache resources) { var renderMaterial = resources.GetRenderMaterial(this); @@ -150,6 +107,9 @@ internal void Render(OutlineRenderer renderer, OutlineResourceCache resources) vPassMaterial.SetInt(_widthNameId, _outlineWidth); vPassMaterial.SetColor(_colorNameId, _outlineColor); + OutlineRenderer.SetupMeterialKeywords(hPassMaterial, _outlineMode); + OutlineRenderer.SetupMeterialKeywords(vPassMaterial, _outlineMode); + foreach (var kvp in _outlineObjects) { if (kvp.Key) @@ -163,6 +123,63 @@ internal void Render(OutlineRenderer renderer, OutlineResourceCache resources) #endregion + #region IOutlineSettings + + /// + public Color OutlineColor + { + get + { + return _outlineColor; + } + set + { + if (_outlineColor != value) + { + _outlineColor = value; + _changed = true; + } + } + } + + /// + public int OutlineWidth + { + get + { + return _outlineWidth; + } + set + { + value = Mathf.Clamp(value, OutlineRenderer.MinWidth, OutlineRenderer.MaxWidth); + + if (_outlineWidth != value) + { + _outlineWidth = value; + _changed = true; + } + } + } + + /// + public OutlineMode OutlineMode + { + get + { + return _outlineMode; + } + set + { + if (_outlineMode != value) + { + _outlineMode = value; + _changed = true; + } + } + } + + #endregion + #region ISerializationCallbackReceiver void ISerializationCallbackReceiver.OnAfterDeserialize() diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMode.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMode.cs new file mode 100644 index 0000000..76c7c69 --- /dev/null +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMode.cs @@ -0,0 +1,23 @@ +// Copyright (C) 2019 Alexander Bogarsukov. All rights reserved. +// See the LICENSE.md file in the project root for more information. + +using System; + +namespace UnityFx.Outline +{ + /// + /// Enumerates outline modes. + /// + public enum OutlineMode + { + /// + /// Outline frame is a solid line. + /// + Solid, + + /// + /// Outline frame is blurred. + /// + Blurred + } +} diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMode.cs.meta b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMode.cs.meta new file mode 100644 index 0000000..8c8d06c --- /dev/null +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 836bd13bd33c59246b1cebab92f8e62a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index 9189a18..3b54f6d 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -27,7 +27,7 @@ public struct OutlineRenderer : IDisposable #region data private readonly int _maskRtId; - private readonly int _postProcessRtId; + private readonly int _hPassRtId; private readonly RenderTargetIdentifier _renderTarget; private readonly CommandBuffer _commandBuffer; @@ -55,6 +55,21 @@ public struct OutlineRenderer : IDisposable /// public const string WidthParamName = "_Width"; + /// + /// Name of the outline mode shader parameter. + /// + public const string ModeParamName = "_Mode"; + + /// + /// Name of the outline mode shader parameter. + /// + public const string ModeBlurredKeyword = "_MODE_BLURRED"; + + /// + /// Name of the outline mode shader parameter. + /// + public const string ModeSolidKeyword = "_MODE_SOLID"; + /// /// Minimum value of outline width parameter. /// @@ -81,14 +96,14 @@ public OutlineRenderer(CommandBuffer commandBuffer, RenderTargetIdentifier dst) Debug.Assert(commandBuffer != null); _maskRtId = Shader.PropertyToID("_MaskTex"); - _postProcessRtId = Shader.PropertyToID("_PostProcessTex"); + _hPassRtId = Shader.PropertyToID("_HPassTex"); _renderTarget = dst; _commandBuffer = commandBuffer; _commandBuffer.Clear(); _commandBuffer.BeginSample(EffectName); _commandBuffer.GetTemporaryRT(_maskRtId, -1, -1, 0, FilterMode.Bilinear, RenderTextureFormat.R8); - _commandBuffer.GetTemporaryRT(_postProcessRtId, -1, -1, 0, FilterMode.Bilinear, RenderTextureFormat.R8); + _commandBuffer.GetTemporaryRT(_hPassRtId, -1, -1, 0, FilterMode.Bilinear, RenderTextureFormat.R8); } /// @@ -116,8 +131,28 @@ public void RenderSingleObject(Renderer[] renderers, Material renderMaterial, Ma } _commandBuffer.SetGlobalTexture(_maskRtId, _maskRtId); - _commandBuffer.Blit(_maskRtId, _postProcessRtId, hPassMaterial); - _commandBuffer.Blit(_postProcessRtId, _renderTarget, vPassMaterial); + _commandBuffer.Blit(_maskRtId, _hPassRtId, hPassMaterial); + _commandBuffer.Blit(_hPassRtId, _renderTarget, vPassMaterial); + } + + /// + /// Setups the meterial keywords for the passed. + /// + public static void SetupMeterialKeywords(Material m, OutlineMode mode) + { + if (m) + { + if (mode == OutlineMode.Solid) + { + m.EnableKeyword(ModeSolidKeyword); + m.DisableKeyword(ModeBlurredKeyword); + } + else + { + m.EnableKeyword(ModeBlurredKeyword); + m.DisableKeyword(ModeSolidKeyword); + } + } } #endregion @@ -127,7 +162,7 @@ public void RenderSingleObject(Renderer[] renderers, Material renderMaterial, Ma /// public void Dispose() { - _commandBuffer.ReleaseTemporaryRT(_postProcessRtId); + _commandBuffer.ReleaseTemporaryRT(_hPassRtId); _commandBuffer.ReleaseTemporaryRT(_maskRtId); _commandBuffer.EndSample(EffectName); } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs index d441663..1931529 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs @@ -30,7 +30,7 @@ public OutlineResources OutlineResources } } - public Material GetRenderMaterial(object obj) + public Material GetRenderMaterial(IOutlineSettings obj) { Debug.Assert(obj != null); Debug.Assert(_outlineResources != null); @@ -43,7 +43,7 @@ public Material GetRenderMaterial(object obj) return _renderMaterial; } - public Material GetHPassMaterial(object obj) + public Material GetHPassMaterial(IOutlineSettings obj) { Debug.Assert(obj != null); Debug.Assert(_outlineResources != null); @@ -64,7 +64,7 @@ public Material GetHPassMaterial(object obj) return mat; } - public Material GetVPassMaterial(object obj) + public Material GetVPassMaterial(IOutlineSettings obj) { Debug.Assert(obj != null); Debug.Assert(_outlineResources != null); diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader index e431a05..c210a5b 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader @@ -7,8 +7,8 @@ Shader "UnityFx/Outline/HPass" { Properties { - _Width("Outline Thickness", Range(1, 32)) = 5 - _MainTex("Mask Texture", 2D) = "white"{} + _Width("Outline thickness (in pixels)", Range(1, 32)) = 5 + [KeywordEnum(Solid, Blurred)] _Mode("Outline rendering mode", Float) = 0 } SubShader @@ -21,14 +21,13 @@ Shader "UnityFx/Outline/HPass" { CGPROGRAM + #pragma multi_compile _MODE_SOLID _MODE_BLURRED #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" - sampler2D _MainTex; - - // _TexelSize is a float2 that says how much screen space a texel occupies. - float2 _MainTex_TexelSize; + sampler2D _MaskTex; + float2 _MaskTex_TexelSize; int _Width; struct v2f @@ -41,10 +40,7 @@ Shader "UnityFx/Outline/HPass" { v2f o; - // Despite the fact that we are only drawing a quad to the screen, Unity requires us to multiply vertices by our MVP matrix, presumably to keep things working when inexperienced people try copying code from other shaders. o.pos = UnityObjectToClipPos(v.vertex); - - // Also, we need to fix the UVs to match our screen space coordinates. o.uvs = ComputeScreenPos(o.pos); return o; @@ -52,17 +48,22 @@ Shader "UnityFx/Outline/HPass" half frag(v2f i) : COLOR { - float TX_x = _MainTex_TexelSize.x; - float colorIntensityInRadius; int n = _Width; + + float TX_x = _MaskTex_TexelSize.x; + float intensity; float n2 = (float)n / 2; for (int k = 0; k < n; k += 1) { - colorIntensityInRadius += tex2D(_MainTex, i.uvs.xy + float2((k - n2) * TX_x, 0)).r / n; +#if _MODE_BLURRED + intensity += tex2D(_MaskTex, i.uvs.xy + float2((k - n2) * TX_x, 0)).r / n; +#else + intensity += tex2D(_MaskTex, i.uvs.xy + float2((k - n2) * TX_x, 0)).r; +#endif } - return colorIntensityInRadius; + return intensity; } ENDCG diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader index 7e014f5..cabb838 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader @@ -7,8 +7,9 @@ Shader "UnityFx/Outline/VPassBlend" { Properties { - _Color("Outline Color", Color) = (1, 0, 0, 1) - _Width("Outline Thickness", Range(1, 32)) = 5 + _Color("Outline color", Color) = (1, 0, 0, 1) + _Width("Outline thickness (in pixels)", Range(1, 32)) = 5 + [KeywordEnum(Solid, Blurred)] _Mode("Outline rendering mode", Float) = 0 } SubShader @@ -19,16 +20,15 @@ Shader "UnityFx/Outline/VPassBlend" { CGPROGRAM + #pragma multi_compile _MODE_SOLID _MODE_BLURRED #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _MaskTex; - sampler2D _PostProcessTex; - - // _TexelSize is a float2 that says how much screen space a texel occupies. float2 _MaskTex_TexelSize; - float2 _PostProcessTex_TexelSize; + sampler2D _HPassTex; + float2 _HPassTex_TexelSize; float4 _Color; int _Width; @@ -42,10 +42,7 @@ Shader "UnityFx/Outline/VPassBlend" { v2f o; - // Despite the fact that we are only drawing a quad to the screen, Unity requires us to multiply vertices by our MVP matrix, presumably to keep things working when inexperienced people try copying code from other shaders. o.pos = UnityObjectToClipPos(v.vertex); - - // Also, we need to fix the UVs to match our screen space coordinates. o.uvs = ComputeScreenPos(o.pos); return o; @@ -53,23 +50,31 @@ Shader "UnityFx/Outline/VPassBlend" half4 frag(v2f i) : COLOR { - // If something already exists underneath the fragment, discard the fragment. if (tex2D(_MaskTex, i.uvs.xy).r > 0) { discard; } - float TX_y = _PostProcessTex_TexelSize.y; - float colorIntensityInRadius; int n = _Width; + + float TX_y = _HPassTex_TexelSize.y; + float intensity; float n2 = (float)n / 2; for (int k = 0; k < n; k += 1) { - colorIntensityInRadius += tex2D(_PostProcessTex, i.uvs.xy + float2(0, (k - n2) * TX_y)).r / n; +#if _MODE_BLURRED + intensity += tex2D(_HPassTex, i.uvs.xy + float2(0, (k - n2) * TX_y)).r / n; +#else + intensity += tex2D(_HPassTex, i.uvs.xy + float2(0, (k - n2) * TX_y)).r; +#endif } - return half4(_Color.rgb, _Color.a * colorIntensityInRadius * 2); +#if _MODE_BLURRED + return half4(_Color.rgb, _Color.a * intensity * 2); +#else + return _Color * intensity; +#endif } ENDCG From c0822e4324104cd1a983185ab7fe92e0a3298beb Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Wed, 28 Aug 2019 15:33:29 +0300 Subject: [PATCH 03/27] Added OutlineMaterialSet helper --- .../Runtime/Scripts/OutlineBehaviour.cs | 89 ++++--------- .../Runtime/Scripts/OutlineLayer.cs | 18 +-- .../Runtime/Scripts/OutlineMaterialSet.cs | 123 ++++++++++++++++++ .../Scripts/OutlineMaterialSet.cs.meta | 11 ++ .../Runtime/Scripts/OutlineRenderer.cs | 28 ++-- .../Runtime/Scripts/OutlineResourceCache.cs | 119 +++-------------- .../Runtime/Shaders/OutlinePass1.shader | 1 - .../Runtime/Shaders/OutlinePass2.shader | 14 +- 8 files changed, 211 insertions(+), 192 deletions(-) create mode 100644 Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs create mode 100644 Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs.meta diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs index 85a974e..2f9701d 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs @@ -32,10 +32,8 @@ public sealed class OutlineBehaviour : MonoBehaviour, IOutlineSettings #pragma warning restore 0649 - private Material _renderMaterial; - private Material _hPassMaterial; - private Material _vPassMaterial; private Renderer[] _renderers; + private OutlineMaterialSet _materials; private CommandBuffer _commandBuffer; private Dictionary _cameraMap = new Dictionary(); @@ -65,22 +63,8 @@ public OutlineResources OutlineResources if (_outlineResources != value) { _outlineResources = value; + _materials = new OutlineMaterialSet(value); _changed = true; - - if (_renderMaterial) - { - _renderMaterial.shader = value.RenderShader; - } - - if (_hPassMaterial) - { - _hPassMaterial.shader = value.HPassShader; - } - - if (_vPassMaterial) - { - _vPassMaterial.shader = value.VPassBlendShader; - } } } } @@ -144,30 +128,26 @@ private void OnValidate() { _commandBuffer = new CommandBuffer(); _commandBuffer.name = OutlineRenderer.EffectName; - _changed = true; } if (_renderers == null) { _renderers = GetComponentsInChildren(); - _changed = true; } - if (_hPassMaterial) + if (_outlineResources && (_materials == null || _materials.OutlineResources != _outlineResources)) { - _hPassMaterial.SetInt(OutlineRenderer.WidthParamName, _outlineWidth); - _changed = true; + _materials = new OutlineMaterialSet(_outlineResources); } - if (_vPassMaterial) + if (_materials != null) { - _vPassMaterial.SetInt(OutlineRenderer.WidthParamName, _outlineWidth); - _vPassMaterial.SetColor(OutlineRenderer.ColorParamName, _outlineColor); - _changed = true; + _materials.SetColor(_outlineColor); + _materials.SetWidth(_outlineWidth); + _materials.SetMode(_outlineMode); } - OutlineRenderer.SetupMeterialKeywords(_hPassMaterial, _outlineMode); - OutlineRenderer.SetupMeterialKeywords(_vPassMaterial, _outlineMode); + _changed = true; } private void Update() @@ -221,9 +201,9 @@ public Color OutlineColor _outlineColor = value; _changed = true; - if (_vPassMaterial) + if (_materials != null) { - _vPassMaterial.SetColor(OutlineRenderer.ColorParamName, value); + _materials.SetColor(value); } } } @@ -245,14 +225,9 @@ public int OutlineWidth _outlineWidth = value; _changed = true; - if (_hPassMaterial) + if (_materials != null) { - _hPassMaterial.SetInt(OutlineRenderer.WidthParamName, value); - } - - if (_vPassMaterial) - { - _vPassMaterial.SetInt(OutlineRenderer.WidthParamName, value); + _materials.SetWidth(value); } } } @@ -272,8 +247,10 @@ public OutlineMode OutlineMode _outlineMode = value; _changed = true; - OutlineRenderer.SetupMeterialKeywords(_hPassMaterial, value); - OutlineRenderer.SetupMeterialKeywords(_vPassMaterial, value); + if (_materials != null) + { + _materials.SetMode(value); + } } } } @@ -314,36 +291,20 @@ private void UpdateCommandBuffer() { if (_outlineResources != null && _renderers != null) { - if (_renderMaterial == null && _outlineResources.RenderShader) - { - _renderMaterial = new Material(_outlineResources.RenderShader); - } - - if (_hPassMaterial == null && _outlineResources.HPassShader) + if (_materials == null) { - _hPassMaterial = new Material(_outlineResources.HPassShader); - _hPassMaterial.SetInt(OutlineRenderer.WidthParamName, _outlineWidth); + _materials = new OutlineMaterialSet(_outlineResources); + _materials.SetColor(_outlineColor); + _materials.SetWidth(_outlineWidth); + _materials.SetMode(_outlineMode); } - if (_vPassMaterial == null && _outlineResources.VPassBlendShader) + using (var renderer = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget)) { - _vPassMaterial = new Material(_outlineResources.VPassBlendShader); - _vPassMaterial.SetInt(OutlineRenderer.WidthParamName, _outlineWidth); - _vPassMaterial.SetColor(OutlineRenderer.ColorParamName, _outlineColor); + renderer.RenderSingleObject(_renderers, _materials); } - OutlineRenderer.SetupMeterialKeywords(_hPassMaterial, _outlineMode); - OutlineRenderer.SetupMeterialKeywords(_vPassMaterial, _outlineMode); - - if (_renderMaterial && _hPassMaterial && _vPassMaterial) - { - using (var renderer = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget)) - { - renderer.RenderSingleObject(_renderers, _renderMaterial, _hPassMaterial, _vPassMaterial); - } - - _changed = false; - } + _changed = false; } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs index 21a95fa..6f7e085 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs @@ -17,9 +17,6 @@ public sealed class OutlineLayer : ICollection, IOutlineSettings, IS { #region data - private readonly int _colorNameId = Shader.PropertyToID(OutlineRenderer.ColorParamName); - private readonly int _widthNameId = Shader.PropertyToID(OutlineRenderer.WidthParamName); - private Dictionary _outlineObjects = new Dictionary(); private Dictionary _renderMaterials; private Dictionary _postProcessMaterials; @@ -99,22 +96,17 @@ public void Add(GameObject go, int ignoreLayerMask) internal void Render(OutlineRenderer renderer, OutlineResourceCache resources) { - var renderMaterial = resources.GetRenderMaterial(this); - var hPassMaterial = resources.GetHPassMaterial(this); - var vPassMaterial = resources.GetVPassMaterial(this); - - hPassMaterial.SetInt(_widthNameId, _outlineWidth); - vPassMaterial.SetInt(_widthNameId, _outlineWidth); - vPassMaterial.SetColor(_colorNameId, _outlineColor); + var materials = resources.GetMaterials(this); - OutlineRenderer.SetupMeterialKeywords(hPassMaterial, _outlineMode); - OutlineRenderer.SetupMeterialKeywords(vPassMaterial, _outlineMode); + materials.SetWidth(_outlineWidth); + materials.SetColor(_outlineColor); + materials.SetMode(_outlineMode); foreach (var kvp in _outlineObjects) { if (kvp.Key) { - renderer.RenderSingleObject(kvp.Value, renderMaterial, hPassMaterial, vPassMaterial); + renderer.RenderSingleObject(kvp.Value, materials); } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs new file mode 100644 index 0000000..7993251 --- /dev/null +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs @@ -0,0 +1,123 @@ +// Copyright (C) 2019 Alexander Bogarsukov. All rights reserved. +// See the LICENSE.md file in the project root for more information. + +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityFx.Outline +{ + /// + /// A set of materials needed to render outline. + /// + public class OutlineMaterialSet + { + #region data + + private readonly int _colorNameId = Shader.PropertyToID(OutlineRenderer.ColorParamName); + private readonly int _widthNameId = Shader.PropertyToID(OutlineRenderer.WidthParamName); + + private readonly OutlineResources _outlineResources; + private readonly Material _renderMaterial; + private readonly Material _hPassMaterial; + private readonly Material _vPassMaterial; + + #endregion + + #region interface + + /// + /// Gets resources used by the effect implementation. + /// + public OutlineResources OutlineResources + { + get + { + return _outlineResources; + } + } + + /// + /// Gets material for . + /// + public Material RenderMaterial + { + get + { + return _renderMaterial; + } + } + + /// + /// Gets material for . + /// + public Material HPassMaterial + { + get + { + return _hPassMaterial; + } + } + + /// + /// Gets material for . + /// + public Material VPassBlendMaterial + { + get + { + return _vPassMaterial; + } + } + + /// + /// Initializes a new instance of the class. + /// + public OutlineMaterialSet(OutlineResources resources) + { + _outlineResources = resources; + _renderMaterial = new Material(resources.RenderShader); + _hPassMaterial = new Material(resources.HPassShader); + _vPassMaterial = new Material(resources.VPassBlendShader); + } + + /// + /// Initializes a new instance of the class. + /// + public OutlineMaterialSet(OutlineResources resources, Material renderMaterial) + { + _outlineResources = resources; + _renderMaterial = renderMaterial; + _hPassMaterial = new Material(resources.HPassShader); + _vPassMaterial = new Material(resources.VPassBlendShader); + } + + /// + /// Sets outline color value. + /// + public void SetColor(Color color) + { + _vPassMaterial.SetColor(_colorNameId, color); + } + + /// + /// Sets outline width value. + /// + public void SetWidth(int width) + { + _hPassMaterial.SetInt(_widthNameId, width); + _vPassMaterial.SetInt(_widthNameId, width); + } + + /// + /// Sets outline mode value. + /// + public void SetMode(OutlineMode mode) + { + OutlineRenderer.SetupMeterialKeywords(_hPassMaterial, mode); + OutlineRenderer.SetupMeterialKeywords(_vPassMaterial, mode); + } + + #endregion + } +} diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs.meta b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs.meta new file mode 100644 index 0000000..60b81e5 --- /dev/null +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4199c3138c5f4d45ac4e1663e30ee7d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index 3b54f6d..0d04580 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -56,9 +56,9 @@ public struct OutlineRenderer : IDisposable public const string WidthParamName = "_Width"; /// - /// Name of the outline mode shader parameter. + /// Name of the outline gauss kernel table parameter. /// - public const string ModeParamName = "_Mode"; + public const string GaussKernelParamName = "_GaussKernel"; /// /// Name of the outline mode shader parameter. @@ -109,12 +109,10 @@ public OutlineRenderer(CommandBuffer commandBuffer, RenderTargetIdentifier dst) /// /// Adds commands for rendering single outline object. /// - public void RenderSingleObject(Renderer[] renderers, Material renderMaterial, Material hPassMaterial, Material vPassMaterial) + public void RenderSingleObject(Renderer[] renderers, OutlineMaterialSet materials) { Debug.Assert(renderers != null); - Debug.Assert(renderMaterial != null); - Debug.Assert(hPassMaterial != null); - Debug.Assert(vPassMaterial != null); + Debug.Assert(materials != null); _commandBuffer.SetRenderTarget(_maskRtId); _commandBuffer.ClearRenderTarget(false, true, Color.black); @@ -125,14 +123,14 @@ public void RenderSingleObject(Renderer[] renderers, Material renderMaterial, Ma { for (var i = 0; i < renderer.sharedMaterials.Length; ++i) { - _commandBuffer.DrawRenderer(renderer, renderMaterial, i); + _commandBuffer.DrawRenderer(renderer, materials.RenderMaterial, i); } } } _commandBuffer.SetGlobalTexture(_maskRtId, _maskRtId); - _commandBuffer.Blit(_maskRtId, _hPassRtId, hPassMaterial); - _commandBuffer.Blit(_hPassRtId, _renderTarget, vPassMaterial); + _commandBuffer.Blit(_maskRtId, _hPassRtId, materials.HPassMaterial); + _commandBuffer.Blit(_hPassRtId, _renderTarget, materials.VPassBlendMaterial); } /// @@ -155,6 +153,18 @@ public static void SetupMeterialKeywords(Material m, OutlineMode mode) } } + /// + /// Calculates value of Gauss function for the specified and values. + /// + public static float Gauss(float x, float stdDev) + { + var stdDev2 = stdDev * stdDev * 2; + var a = 1 / Mathf.Sqrt((float)Math.PI * stdDev2); + var gauss = a * Mathf.Pow((float)Math.E, -x * x / stdDev2); + + return gauss; + } + #endregion #region IDisposable diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs index 1931529..2df2a6b 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs @@ -11,8 +11,7 @@ internal class OutlineResourceCache { private OutlineResources _outlineResources; private Material _renderMaterial; - private Dictionary _hPassMeterials; - private Dictionary _vPassMeterials; + private Dictionary _materialsMap; public OutlineResources OutlineResources { @@ -22,131 +21,47 @@ public OutlineResources OutlineResources } set { + Debug.Assert(value != null); + if (_outlineResources != value) { _outlineResources = value; - UpdateResources(); + Clear(); } } } - public Material GetRenderMaterial(IOutlineSettings obj) - { - Debug.Assert(obj != null); - Debug.Assert(_outlineResources != null); - - if (_renderMaterial == null) - { - _renderMaterial = new Material(_outlineResources.RenderShader); - } - - return _renderMaterial; - } - - public Material GetHPassMaterial(IOutlineSettings obj) - { - Debug.Assert(obj != null); - Debug.Assert(_outlineResources != null); - - Material mat; - - if (_hPassMeterials == null) - { - _hPassMeterials = new Dictionary(); - } - - if (!_hPassMeterials.TryGetValue(obj, out mat)) - { - mat = new Material(_outlineResources.HPassShader); - _hPassMeterials.Add(obj, mat); - } - - return mat; - } - - public Material GetVPassMaterial(IOutlineSettings obj) + public OutlineMaterialSet GetMaterials(IOutlineSettings obj) { Debug.Assert(obj != null); Debug.Assert(_outlineResources != null); - Material mat; - - if (_vPassMeterials == null) - { - _vPassMeterials = new Dictionary(); - } + OutlineMaterialSet result; - if (!_vPassMeterials.TryGetValue(obj, out mat)) + if (_materialsMap == null) { - mat = new Material(_outlineResources.VPassBlendShader); - _vPassMeterials.Add(obj, mat); + _materialsMap = new Dictionary(); } - return mat; - } - - public void UpdateResources() - { - if (_outlineResources) + if (!_materialsMap.TryGetValue(obj, out result)) { - if (_renderMaterial != null) - { - if (_outlineResources.RenderShader) - { - _renderMaterial.shader = _outlineResources.RenderShader; - } - else - { - _renderMaterial = null; - } - } - - if (_hPassMeterials != null) + if (_renderMaterial == null) { - if (_outlineResources.HPassShader) - { - foreach (var m in _hPassMeterials.Values) - { - m.shader = _outlineResources.HPassShader; - } - } - else - { - _hPassMeterials.Clear(); - } + _renderMaterial = new Material(_outlineResources.RenderShader); } - if (_vPassMeterials != null) - { - if (_outlineResources.VPassBlendShader) - { - foreach (var m in _vPassMeterials.Values) - { - m.shader = _outlineResources.VPassBlendShader; - } - } - else - { - _vPassMeterials.Clear(); - } - } - } - else - { - Clear(); + result = new OutlineMaterialSet(_outlineResources, _renderMaterial); + _materialsMap.Add(obj, result); } + + return result; } public void Clear() { - if (_hPassMeterials != null) - { - _hPassMeterials.Clear(); - } - - if (_vPassMeterials != null) + if (_materialsMap != null) { - _vPassMeterials.Clear(); + _materialsMap.Clear(); } _renderMaterial = null; diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader index c210a5b..3052772 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader @@ -8,7 +8,6 @@ Shader "UnityFx/Outline/HPass" Properties { _Width("Outline thickness (in pixels)", Range(1, 32)) = 5 - [KeywordEnum(Solid, Blurred)] _Mode("Outline rendering mode", Float) = 0 } SubShader diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader index cabb838..1988367 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader @@ -7,9 +7,8 @@ Shader "UnityFx/Outline/VPassBlend" { Properties { - _Color("Outline color", Color) = (1, 0, 0, 1) _Width("Outline thickness (in pixels)", Range(1, 32)) = 5 - [KeywordEnum(Solid, Blurred)] _Mode("Outline rendering mode", Float) = 0 + _Color("Outline color", Color) = (1, 0, 0, 1) } SubShader @@ -71,9 +70,18 @@ Shader "UnityFx/Outline/VPassBlend" } #if _MODE_BLURRED + return half4(_Color.rgb, _Color.a * intensity * 2); + #else - return _Color * intensity; + if (intensity > 0) + { + return _Color; + } + else + { + return 0; + } #endif } From 7362bc6b61c40c0d001c447c762bbc72423fece5 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Wed, 28 Aug 2019 15:38:00 +0300 Subject: [PATCH 04/27] Removed OutlineResourceCache --- .../Runtime/Scripts/OutlineBehaviour.cs | 6 +- .../Runtime/Scripts/OutlineEffect.cs | 22 +----- .../Runtime/Scripts/OutlineLayer.cs | 18 ++--- .../Runtime/Scripts/OutlineResourceCache.cs | 70 ------------------- .../Scripts/OutlineResourceCache.cs.meta | 13 ---- 5 files changed, 16 insertions(+), 113 deletions(-) delete mode 100644 Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs delete mode 100644 Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs.meta diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs index 2f9701d..b95bdd1 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs @@ -63,8 +63,12 @@ public OutlineResources OutlineResources if (_outlineResources != value) { _outlineResources = value; - _materials = new OutlineMaterialSet(value); _changed = true; + + _materials = new OutlineMaterialSet(value); + _materials.SetColor(_outlineColor); + _materials.SetWidth(_outlineWidth); + _materials.SetMode(_outlineMode); } } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineEffect.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineEffect.cs index 7a97d39..13962a9 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineEffect.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineEffect.cs @@ -26,7 +26,6 @@ public sealed class OutlineEffect : MonoBehaviour private OutlineLayerCollection _outlineLayers; private IList _layers; - private OutlineResourceCache _resourceCache; private CommandBuffer _commandBuffer; private bool _changed; @@ -54,11 +53,6 @@ public OutlineResources OutlineResources { _outlineResources = value; _changed = true; - - if (_resourceCache != null) - { - _resourceCache.OutlineResources = _outlineResources; - } } } } @@ -108,12 +102,6 @@ public void ShareLayersWith(OutlineEffect other) private void Awake() { - if (_resourceCache == null) - { - _resourceCache = new OutlineResourceCache(); - _resourceCache.OutlineResources = _outlineResources; - } - if (_outlineLayers) { _layers = _outlineLayers.Layers; @@ -122,11 +110,6 @@ private void Awake() private void OnValidate() { - if (_resourceCache != null) - { - _resourceCache.OutlineResources = _outlineResources; - } - if (_outlineLayers) { _layers = _outlineLayers.Layers; @@ -174,8 +157,6 @@ private void OnDisable() _commandBuffer.Dispose(); _commandBuffer = null; } - - _resourceCache.Clear(); } private void Update() @@ -221,7 +202,7 @@ private void FillCommandBuffer() { if (_layers[i] != null) { - _layers[i].Render(renderer, _resourceCache); + _layers[i].Render(renderer, _outlineResources); } } } @@ -231,7 +212,6 @@ private void FillCommandBuffer() else { _commandBuffer.Clear(); - _resourceCache.Clear(); } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs index 6f7e085..4582b6c 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs @@ -18,8 +18,7 @@ public sealed class OutlineLayer : ICollection, IOutlineSettings, IS #region data private Dictionary _outlineObjects = new Dictionary(); - private Dictionary _renderMaterials; - private Dictionary _postProcessMaterials; + private OutlineMaterialSet _materials; [SerializeField] private Color _outlineColor = Color.red; @@ -94,19 +93,22 @@ public void Add(GameObject go, int ignoreLayerMask) } } - internal void Render(OutlineRenderer renderer, OutlineResourceCache resources) + internal void Render(OutlineRenderer renderer, OutlineResources resources) { - var materials = resources.GetMaterials(this); + if (_materials == null || _materials.OutlineResources != resources) + { + _materials = new OutlineMaterialSet(resources); + } - materials.SetWidth(_outlineWidth); - materials.SetColor(_outlineColor); - materials.SetMode(_outlineMode); + _materials.SetWidth(_outlineWidth); + _materials.SetColor(_outlineColor); + _materials.SetMode(_outlineMode); foreach (var kvp in _outlineObjects) { if (kvp.Key) { - renderer.RenderSingleObject(kvp.Value, materials); + renderer.RenderSingleObject(kvp.Value, _materials); } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs deleted file mode 100644 index 2df2a6b..0000000 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (C) 2019 Alexander Bogarsukov. All rights reserved. -// See the LICENSE.md file in the project root for more information. - -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace UnityFx.Outline -{ - internal class OutlineResourceCache - { - private OutlineResources _outlineResources; - private Material _renderMaterial; - private Dictionary _materialsMap; - - public OutlineResources OutlineResources - { - get - { - return _outlineResources; - } - set - { - Debug.Assert(value != null); - - if (_outlineResources != value) - { - _outlineResources = value; - Clear(); - } - } - } - - public OutlineMaterialSet GetMaterials(IOutlineSettings obj) - { - Debug.Assert(obj != null); - Debug.Assert(_outlineResources != null); - - OutlineMaterialSet result; - - if (_materialsMap == null) - { - _materialsMap = new Dictionary(); - } - - if (!_materialsMap.TryGetValue(obj, out result)) - { - if (_renderMaterial == null) - { - _renderMaterial = new Material(_outlineResources.RenderShader); - } - - result = new OutlineMaterialSet(_outlineResources, _renderMaterial); - _materialsMap.Add(obj, result); - } - - return result; - } - - public void Clear() - { - if (_materialsMap != null) - { - _materialsMap.Clear(); - } - - _renderMaterial = null; - } - } -} diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs.meta b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs.meta deleted file mode 100644 index 341390e..0000000 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResourceCache.cs.meta +++ /dev/null @@ -1,13 +0,0 @@ -fileFormatVersion: 2 -guid: a7490b4a64c461c4d8591e1a9151aa71 -timeCreated: 1566300317 -licenseType: Pro -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: From 88b25137893a6ad3f35b471c533e3b3deea8759f Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Wed, 28 Aug 2019 15:54:35 +0300 Subject: [PATCH 05/27] Minor changes --- .../Runtime/Scripts/OutlineLayer.cs | 34 ++++++++++++++++--- .../Runtime/Scripts/OutlineLayerCollection.cs | 15 ++++++++ 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs index 4582b6c..c28f336 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs @@ -93,17 +93,28 @@ public void Add(GameObject go, int ignoreLayerMask) } } + internal void Invalidate() + { + if (_materials != null) + { + _materials.SetWidth(_outlineWidth); + _materials.SetColor(_outlineColor); + _materials.SetMode(_outlineMode); + } + + _changed = true; + } + internal void Render(OutlineRenderer renderer, OutlineResources resources) { if (_materials == null || _materials.OutlineResources != resources) { _materials = new OutlineMaterialSet(resources); + _materials.SetWidth(_outlineWidth); + _materials.SetColor(_outlineColor); + _materials.SetMode(_outlineMode); } - _materials.SetWidth(_outlineWidth); - _materials.SetColor(_outlineColor); - _materials.SetMode(_outlineMode); - foreach (var kvp in _outlineObjects) { if (kvp.Key) @@ -132,6 +143,11 @@ public Color OutlineColor { _outlineColor = value; _changed = true; + + if (_materials != null) + { + _materials.SetColor(value); + } } } } @@ -151,6 +167,11 @@ public int OutlineWidth { _outlineWidth = value; _changed = true; + + if (_materials != null) + { + _materials.SetWidth(value); + } } } } @@ -168,6 +189,11 @@ public OutlineMode OutlineMode { _outlineMode = value; _changed = true; + + if (_materials != null) + { + _materials.SetMode(value); + } } } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayerCollection.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayerCollection.cs index ba464d6..3f07c49 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayerCollection.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayerCollection.cs @@ -40,6 +40,21 @@ internal IList Layers #endregion + #region ScriptableObject + + private void OnValidate() + { + if (_layers != null) + { + foreach (var layer in _layers) + { + layer.Invalidate(); + } + } + } + + #endregion + #region IList public OutlineLayer this[int index] From 2d0c62856dfa900f2779c20b003db688c92e5061 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Wed, 28 Aug 2019 19:12:18 +0300 Subject: [PATCH 06/27] Added Gauss blur pilot --- Assets/Examples/Prefabs/OutlineLayers.asset | 8 ++--- Assets/Examples/Scenes/Outline.unity | 4 ++- .../Runtime/Scripts/OutlineBehaviour.cs | 19 +++++++---- .../Runtime/Scripts/OutlineLayer.cs | 11 ++++--- .../Runtime/Scripts/OutlineMaterialSet.cs | 32 ++++++++++++++++--- .../Runtime/Scripts/OutlineRenderer.cs | 21 ++++++++++-- .../Runtime/Scripts/OutlineResources.cs | 15 +++++++++ .../Runtime/Shaders/OutlinePass1.shader | 14 +++++--- .../Runtime/Shaders/OutlinePass2.shader | 16 ++++++---- 9 files changed, 106 insertions(+), 34 deletions(-) diff --git a/Assets/Examples/Prefabs/OutlineLayers.asset b/Assets/Examples/Prefabs/OutlineLayers.asset index 7f4daae..ed6eb0e 100644 --- a/Assets/Examples/Prefabs/OutlineLayers.asset +++ b/Assets/Examples/Prefabs/OutlineLayers.asset @@ -13,8 +13,8 @@ MonoBehaviour: m_EditorClassIdentifier: _layers: - _outlineColor: {r: 1, g: 0, b: 0, a: 1} - _outlineWidth: 21 - _outlineMode: 0 - - _outlineColor: {r: 0.8382353, g: 0.75, b: 0, a: 1} - _outlineWidth: 3 + _outlineWidth: 8 + _outlineMode: 1 + - _outlineColor: {r: 0.22794117, g: 0.8455882, b: 0, a: 1} + _outlineWidth: 8 _outlineMode: 0 diff --git a/Assets/Examples/Scenes/Outline.unity b/Assets/Examples/Scenes/Outline.unity index 5120e2b..77a9891 100644 --- a/Assets/Examples/Scenes/Outline.unity +++ b/Assets/Examples/Scenes/Outline.unity @@ -243,6 +243,7 @@ Camera: m_TargetEye: 3 m_HDR: 1 m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 m_ForceIntoRT: 0 m_OcclusionCulling: 1 m_StereoConvergence: 10 @@ -503,7 +504,8 @@ MonoBehaviour: m_EditorClassIdentifier: _outlineResources: {fileID: 11400000, guid: d28e70f030b1a634db9a6a6d5478ef19, type: 2} _outlineColor: {r: 0, g: 1, b: 0, a: 1} - _outlineWidth: 8 + _outlineWidth: 6 + _outlineMode: 1 --- !u!23 &1789341923 MeshRenderer: m_ObjectHideFlags: 0 diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs index b95bdd1..0282061 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs @@ -35,6 +35,7 @@ public sealed class OutlineBehaviour : MonoBehaviour, IOutlineSettings private Renderer[] _renderers; private OutlineMaterialSet _materials; private CommandBuffer _commandBuffer; + private float[] _gaussSamples; private Dictionary _cameraMap = new Dictionary(); private float _cameraMapUpdateTimer; @@ -65,9 +66,9 @@ public OutlineResources OutlineResources _outlineResources = value; _changed = true; - _materials = new OutlineMaterialSet(value); + _materials = _outlineResources.CreateMaterialSet(); _materials.SetColor(_outlineColor); - _materials.SetWidth(_outlineWidth); + _materials.SetWidth(_outlineWidth, _gaussSamples); _materials.SetMode(_outlineMode); } } @@ -95,6 +96,8 @@ private void Awake() _renderers = GetComponentsInChildren(); _changed = true; } + + _gaussSamples = OutlineRenderer.GetGaussSamples(_outlineWidth); } private void OnEnable() @@ -141,16 +144,17 @@ private void OnValidate() if (_outlineResources && (_materials == null || _materials.OutlineResources != _outlineResources)) { - _materials = new OutlineMaterialSet(_outlineResources); + _materials = _outlineResources.CreateMaterialSet(); } if (_materials != null) { _materials.SetColor(_outlineColor); - _materials.SetWidth(_outlineWidth); + _materials.SetWidth(_outlineWidth, _gaussSamples); _materials.SetMode(_outlineMode); } + _gaussSamples = OutlineRenderer.GetGaussSamples(_outlineWidth); _changed = true; } @@ -227,11 +231,12 @@ public int OutlineWidth if (_outlineWidth != value) { _outlineWidth = value; + _gaussSamples = OutlineRenderer.GetGaussSamples(value); _changed = true; if (_materials != null) { - _materials.SetWidth(value); + _materials.SetWidth(value, _gaussSamples); } } } @@ -297,9 +302,9 @@ private void UpdateCommandBuffer() { if (_materials == null) { - _materials = new OutlineMaterialSet(_outlineResources); + _materials = _outlineResources.CreateMaterialSet(); _materials.SetColor(_outlineColor); - _materials.SetWidth(_outlineWidth); + _materials.SetWidth(_outlineWidth, _gaussSamples); _materials.SetMode(_outlineMode); } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs index c28f336..668b9e0 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs @@ -28,6 +28,7 @@ public sealed class OutlineLayer : ICollection, IOutlineSettings, IS [SerializeField] private OutlineMode _outlineMode; + private float[] _gaussSamples; private bool _changed; #endregion @@ -97,7 +98,7 @@ internal void Invalidate() { if (_materials != null) { - _materials.SetWidth(_outlineWidth); + _materials.SetWidth(_outlineWidth, _gaussSamples); _materials.SetColor(_outlineColor); _materials.SetMode(_outlineMode); } @@ -109,8 +110,8 @@ internal void Render(OutlineRenderer renderer, OutlineResources resources) { if (_materials == null || _materials.OutlineResources != resources) { - _materials = new OutlineMaterialSet(resources); - _materials.SetWidth(_outlineWidth); + _materials = resources.CreateMaterialSet(); + _materials.SetWidth(_outlineWidth, _gaussSamples); _materials.SetColor(_outlineColor); _materials.SetMode(_outlineMode); } @@ -166,11 +167,12 @@ public int OutlineWidth if (_outlineWidth != value) { _outlineWidth = value; + _gaussSamples = OutlineRenderer.GetGaussSamples(value); _changed = true; if (_materials != null) { - _materials.SetWidth(value); + _materials.SetWidth(value, _gaussSamples); } } } @@ -205,6 +207,7 @@ public OutlineMode OutlineMode void ISerializationCallbackReceiver.OnAfterDeserialize() { _outlineWidth = Mathf.Clamp(_outlineWidth, OutlineRenderer.MinWidth, OutlineRenderer.MaxWidth); + _gaussSamples = OutlineRenderer.GetGaussSamples(_outlineWidth); if (_outlineColor == Color.clear) { diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs index 7993251..dc9164c 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs @@ -8,7 +8,7 @@ namespace UnityFx.Outline { /// - /// A set of materials needed to render outline. + /// A set of materials needed to render outlines. /// public class OutlineMaterialSet { @@ -16,6 +16,7 @@ public class OutlineMaterialSet private readonly int _colorNameId = Shader.PropertyToID(OutlineRenderer.ColorParamName); private readonly int _widthNameId = Shader.PropertyToID(OutlineRenderer.WidthParamName); + private readonly int _gaussSmaplesId = Shader.PropertyToID(OutlineRenderer.GaussSamplesParamName); private readonly OutlineResources _outlineResources; private readonly Material _renderMaterial; @@ -40,6 +41,8 @@ public OutlineResources OutlineResources /// /// Gets material for . /// + /// + /// public Material RenderMaterial { get @@ -51,6 +54,8 @@ public Material RenderMaterial /// /// Gets material for . /// + /// + /// public Material HPassMaterial { get @@ -62,6 +67,8 @@ public Material HPassMaterial /// /// Gets material for . /// + /// + /// public Material VPassBlendMaterial { get @@ -73,6 +80,9 @@ public Material VPassBlendMaterial /// /// Initializes a new instance of the class. /// + /// + /// The preferred way of creating instances of is calling method. + /// public OutlineMaterialSet(OutlineResources resources) { _outlineResources = resources; @@ -84,7 +94,7 @@ public OutlineMaterialSet(OutlineResources resources) /// /// Initializes a new instance of the class. /// - public OutlineMaterialSet(OutlineResources resources, Material renderMaterial) + internal OutlineMaterialSet(OutlineResources resources, Material renderMaterial) { _outlineResources = resources; _renderMaterial = renderMaterial; @@ -95,6 +105,8 @@ public OutlineMaterialSet(OutlineResources resources, Material renderMaterial) /// /// Sets outline color value. /// + /// + /// public void SetColor(Color color) { _vPassMaterial.SetColor(_colorNameId, color); @@ -103,19 +115,29 @@ public void SetColor(Color color) /// /// Sets outline width value. /// - public void SetWidth(int width) + /// + /// + public void SetWidth(int width, float[] gaussSamples) { _hPassMaterial.SetInt(_widthNameId, width); _vPassMaterial.SetInt(_widthNameId, width); + + if (gaussSamples != null) + { + _hPassMaterial.SetFloatArray(_gaussSmaplesId, gaussSamples); + _hPassMaterial.SetFloatArray(_gaussSmaplesId, gaussSamples); + } } /// /// Sets outline mode value. /// + /// + /// public void SetMode(OutlineMode mode) { - OutlineRenderer.SetupMeterialKeywords(_hPassMaterial, mode); - OutlineRenderer.SetupMeterialKeywords(_vPassMaterial, mode); + OutlineRenderer.SetupMaterialKeywords(_hPassMaterial, mode); + OutlineRenderer.SetupMaterialKeywords(_vPassMaterial, mode); } #endregion diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index 0d04580..f4ab5da 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -58,7 +58,7 @@ public struct OutlineRenderer : IDisposable /// /// Name of the outline gauss kernel table parameter. /// - public const string GaussKernelParamName = "_GaussKernel"; + public const string GaussSamplesParamName = "_GaussSamples"; /// /// Name of the outline mode shader parameter. @@ -136,7 +136,7 @@ public void RenderSingleObject(Renderer[] renderers, OutlineMaterialSet material /// /// Setups the meterial keywords for the passed. /// - public static void SetupMeterialKeywords(Material m, OutlineMode mode) + public static void SetupMaterialKeywords(Material m, OutlineMode mode) { if (m) { @@ -156,6 +156,7 @@ public static void SetupMeterialKeywords(Material m, OutlineMode mode) /// /// Calculates value of Gauss function for the specified and values. /// + /// public static float Gauss(float x, float stdDev) { var stdDev2 = stdDev * stdDev * 2; @@ -165,6 +166,22 @@ public static float Gauss(float x, float stdDev) return gauss; } + /// + /// Samples Gauss function for the specified . + /// + public static float[] GetGaussSamples(int width) + { + var result = new float[MaxWidth]; + var stdDev = width / 2f; + + for (var i = 0; i < width; i++) + { + result[i] = Gauss(i, stdDev); + } + + return result; + } + #endregion #region IDisposable diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResources.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResources.cs index 3be19fb..b732118 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResources.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineResources.cs @@ -12,6 +12,8 @@ namespace UnityFx.Outline [CreateAssetMenu(fileName = "OutlineResources", menuName = "UnityFx/Outline Resources")] public class OutlineResources : ScriptableObject { + private Material _renderMaterial; + /// /// Gets or sets a that renders objects outlined with a solid while color. /// @@ -47,5 +49,18 @@ public void ResetToDefaults() HPassShader = Shader.Find("UnityFx/Outline/HPass"); VPassBlendShader = Shader.Find("UnityFx/Outline/VPassBlend"); } + + /// + /// Gets a new instance for the resources. + /// + public OutlineMaterialSet CreateMaterialSet() + { + if (_renderMaterial == null) + { + _renderMaterial = new Material(RenderShader); + } + + return new OutlineMaterialSet(this, _renderMaterial); + } } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader index 3052772..86bb5a5 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader @@ -29,6 +29,10 @@ Shader "UnityFx/Outline/HPass" float2 _MaskTex_TexelSize; int _Width; +#if _MODE_BLURRED + float _GaussSamples[32]; +#endif + struct v2f { float4 pos : POSITION; @@ -47,18 +51,18 @@ Shader "UnityFx/Outline/HPass" half frag(v2f i) : COLOR { - int n = _Width; + int n = _Width * 2 - 1; float TX_x = _MaskTex_TexelSize.x; float intensity; - float n2 = (float)n / 2; + float n2 = _Width; - for (int k = 0; k < n; k += 1) + for (int k = -n2; k <= n2; k += 1) { #if _MODE_BLURRED - intensity += tex2D(_MaskTex, i.uvs.xy + float2((k - n2) * TX_x, 0)).r / n; + intensity += tex2D(_MaskTex, i.uvs.xy + float2(k * TX_x, 0)).r * _GaussSamples[abs(k)]; #else - intensity += tex2D(_MaskTex, i.uvs.xy + float2((k - n2) * TX_x, 0)).r; + intensity += tex2D(_MaskTex, i.uvs.xy + float2(k * TX_x, 0)).r; #endif } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader index 1988367..c876ac2 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader @@ -31,6 +31,10 @@ Shader "UnityFx/Outline/VPassBlend" float4 _Color; int _Width; +#if _MODE_BLURRED + float _GaussSamples[32]; +#endif + struct v2f { float4 pos : POSITION; @@ -54,18 +58,18 @@ Shader "UnityFx/Outline/VPassBlend" discard; } - int n = _Width; + int n = _Width * 2 - 1; - float TX_y = _HPassTex_TexelSize.y; + float TX_y = _MaskTex_TexelSize.y; float intensity; - float n2 = (float)n / 2; + float n2 = _Width; - for (int k = 0; k < n; k += 1) + for (int k = -n2; k <= n2; k += 1) { #if _MODE_BLURRED - intensity += tex2D(_HPassTex, i.uvs.xy + float2(0, (k - n2) * TX_y)).r / n; + intensity += tex2D(_HPassTex, i.uvs.xy + float2(0, k * TX_y)).r * _GaussSamples[abs(k)]; #else - intensity += tex2D(_HPassTex, i.uvs.xy + float2(0, (k - n2) * TX_y)).r; + intensity += tex2D(_HPassTex, i.uvs.xy + float2(0, k * TX_y)).r; #endif } From 2b3d7a74d8ffb40712d236dc47175a0ce95ee66e Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Wed, 28 Aug 2019 19:26:19 +0300 Subject: [PATCH 07/27] Minor shader fixes --- .../Runtime/Shaders/OutlinePass1.shader | 18 +++++++++++------ .../Runtime/Shaders/OutlinePass2.shader | 20 +++++++++++++------ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader index 86bb5a5..12dc859 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader @@ -30,7 +30,9 @@ Shader "UnityFx/Outline/HPass" int _Width; #if _MODE_BLURRED + float _GaussSamples[32]; + #endif struct v2f @@ -51,18 +53,22 @@ Shader "UnityFx/Outline/HPass" half frag(v2f i) : COLOR { - int n = _Width * 2 - 1; - float TX_x = _MaskTex_TexelSize.x; float intensity; - float n2 = _Width; + int n = _Width; - for (int k = -n2; k <= n2; k += 1) + for (int k = -n; k <= n; k += 1) { + half pixelIntensity = tex2D(_MaskTex, i.uvs.xy + float2(k * TX_x, 0)).r; + #if _MODE_BLURRED - intensity += tex2D(_MaskTex, i.uvs.xy + float2(k * TX_x, 0)).r * _GaussSamples[abs(k)]; + + intensity += pixelIntensity * _GaussSamples[abs(k)]; + #else - intensity += tex2D(_MaskTex, i.uvs.xy + float2(k * TX_x, 0)).r; + + intensity += pixelIntensity; + #endif } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader index c876ac2..b4f9c20 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader @@ -32,7 +32,9 @@ Shader "UnityFx/Outline/VPassBlend" int _Width; #if _MODE_BLURRED + float _GaussSamples[32]; + #endif struct v2f @@ -58,18 +60,22 @@ Shader "UnityFx/Outline/VPassBlend" discard; } - int n = _Width * 2 - 1; - float TX_y = _MaskTex_TexelSize.y; float intensity; - float n2 = _Width; + int n = _Width; - for (int k = -n2; k <= n2; k += 1) + for (int k = -n; k <= _Width; k += 1) { + half pixelIntensity = tex2D(_HPassTex, i.uvs.xy + float2(0, k * TX_y)).r; + #if _MODE_BLURRED - intensity += tex2D(_HPassTex, i.uvs.xy + float2(0, k * TX_y)).r * _GaussSamples[abs(k)]; + + intensity += pixelIntensity * _GaussSamples[abs(k)]; + #else - intensity += tex2D(_HPassTex, i.uvs.xy + float2(0, k * TX_y)).r; + + intensity += pixelIntensity; + #endif } @@ -78,6 +84,7 @@ Shader "UnityFx/Outline/VPassBlend" return half4(_Color.rgb, _Color.a * intensity * 2); #else + if (intensity > 0) { return _Color; @@ -86,6 +93,7 @@ Shader "UnityFx/Outline/VPassBlend" { return 0; } + #endif } From 04431bb48aca31c3ab53551ee0b5fae39e0e8014 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Thu, 29 Aug 2019 12:36:01 +0300 Subject: [PATCH 08/27] Minor changes --- .../Runtime/Scripts/OutlineBehaviour.cs | 19 ++----- .../Runtime/Scripts/OutlineLayer.cs | 13 ++--- .../Runtime/Scripts/OutlineMaterialSet.cs | 53 ++++++++++++++++--- .../Runtime/Scripts/OutlineRenderer.cs | 32 +++-------- .../Runtime/Shaders/OutlinePass2.shader | 9 +--- 5 files changed, 61 insertions(+), 65 deletions(-) diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs index 0282061..a395e72 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs @@ -35,7 +35,6 @@ public sealed class OutlineBehaviour : MonoBehaviour, IOutlineSettings private Renderer[] _renderers; private OutlineMaterialSet _materials; private CommandBuffer _commandBuffer; - private float[] _gaussSamples; private Dictionary _cameraMap = new Dictionary(); private float _cameraMapUpdateTimer; @@ -67,9 +66,7 @@ public OutlineResources OutlineResources _changed = true; _materials = _outlineResources.CreateMaterialSet(); - _materials.SetColor(_outlineColor); - _materials.SetWidth(_outlineWidth, _gaussSamples); - _materials.SetMode(_outlineMode); + _materials.Reset(this); } } } @@ -96,8 +93,6 @@ private void Awake() _renderers = GetComponentsInChildren(); _changed = true; } - - _gaussSamples = OutlineRenderer.GetGaussSamples(_outlineWidth); } private void OnEnable() @@ -149,12 +144,9 @@ private void OnValidate() if (_materials != null) { - _materials.SetColor(_outlineColor); - _materials.SetWidth(_outlineWidth, _gaussSamples); - _materials.SetMode(_outlineMode); + _materials.Reset(this); } - _gaussSamples = OutlineRenderer.GetGaussSamples(_outlineWidth); _changed = true; } @@ -231,12 +223,11 @@ public int OutlineWidth if (_outlineWidth != value) { _outlineWidth = value; - _gaussSamples = OutlineRenderer.GetGaussSamples(value); _changed = true; if (_materials != null) { - _materials.SetWidth(value, _gaussSamples); + _materials.SetWidth(value); } } } @@ -303,9 +294,7 @@ private void UpdateCommandBuffer() if (_materials == null) { _materials = _outlineResources.CreateMaterialSet(); - _materials.SetColor(_outlineColor); - _materials.SetWidth(_outlineWidth, _gaussSamples); - _materials.SetMode(_outlineMode); + _materials.Reset(this); } using (var renderer = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget)) diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs index 668b9e0..5e81a1c 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs @@ -28,7 +28,6 @@ public sealed class OutlineLayer : ICollection, IOutlineSettings, IS [SerializeField] private OutlineMode _outlineMode; - private float[] _gaussSamples; private bool _changed; #endregion @@ -98,9 +97,7 @@ internal void Invalidate() { if (_materials != null) { - _materials.SetWidth(_outlineWidth, _gaussSamples); - _materials.SetColor(_outlineColor); - _materials.SetMode(_outlineMode); + _materials.Reset(this); } _changed = true; @@ -111,9 +108,7 @@ internal void Render(OutlineRenderer renderer, OutlineResources resources) if (_materials == null || _materials.OutlineResources != resources) { _materials = resources.CreateMaterialSet(); - _materials.SetWidth(_outlineWidth, _gaussSamples); - _materials.SetColor(_outlineColor); - _materials.SetMode(_outlineMode); + _materials.Reset(this); } foreach (var kvp in _outlineObjects) @@ -167,12 +162,11 @@ public int OutlineWidth if (_outlineWidth != value) { _outlineWidth = value; - _gaussSamples = OutlineRenderer.GetGaussSamples(value); _changed = true; if (_materials != null) { - _materials.SetWidth(value, _gaussSamples); + _materials.SetWidth(value); } } } @@ -207,7 +201,6 @@ public OutlineMode OutlineMode void ISerializationCallbackReceiver.OnAfterDeserialize() { _outlineWidth = Mathf.Clamp(_outlineWidth, OutlineRenderer.MinWidth, OutlineRenderer.MaxWidth); - _gaussSamples = OutlineRenderer.GetGaussSamples(_outlineWidth); if (_outlineColor == Color.clear) { diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs index dc9164c..cb40be1 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs @@ -23,6 +23,9 @@ public class OutlineMaterialSet private readonly Material _hPassMaterial; private readonly Material _vPassMaterial; + private int _width; + private float[] _gaussSamples; + #endregion #region interface @@ -102,6 +105,19 @@ internal OutlineMaterialSet(OutlineResources resources, Material renderMaterial) _vPassMaterial = new Material(resources.VPassBlendShader); } + /// + /// Resets materials state. + /// + /// + /// + /// + public void Reset(IOutlineSettings settings) + { + SetColor(settings.OutlineColor); + SetWidth(settings.OutlineWidth); + SetMode(settings.OutlineMode); + } + /// /// Sets outline color value. /// @@ -117,16 +133,23 @@ public void SetColor(Color color) /// /// /// - public void SetWidth(int width, float[] gaussSamples) + public void SetWidth(int width) { - _hPassMaterial.SetInt(_widthNameId, width); - _vPassMaterial.SetInt(_widthNameId, width); + Debug.Assert(width >= OutlineRenderer.MinWidth); + Debug.Assert(width <= OutlineRenderer.MaxWidth); - if (gaussSamples != null) + if (width != _width) { - _hPassMaterial.SetFloatArray(_gaussSmaplesId, gaussSamples); - _hPassMaterial.SetFloatArray(_gaussSmaplesId, gaussSamples); + _width = width; + _gaussSamples = OutlineRenderer.GetGaussSamples(width, _gaussSamples); + + _hPassMaterial.SetInt(_widthNameId, width); + _vPassMaterial.SetInt(_widthNameId, width); + + _hPassMaterial.SetFloatArray(_gaussSmaplesId, _gaussSamples); + _vPassMaterial.SetFloatArray(_gaussSmaplesId, _gaussSamples); } + } /// @@ -136,8 +159,22 @@ public void SetWidth(int width, float[] gaussSamples) /// public void SetMode(OutlineMode mode) { - OutlineRenderer.SetupMaterialKeywords(_hPassMaterial, mode); - OutlineRenderer.SetupMaterialKeywords(_vPassMaterial, mode); + if (mode == OutlineMode.Solid) + { + _hPassMaterial.EnableKeyword(OutlineRenderer.ModeSolidKeyword); + _vPassMaterial.EnableKeyword(OutlineRenderer.ModeSolidKeyword); + + _hPassMaterial.DisableKeyword(OutlineRenderer.ModeBlurredKeyword); + _vPassMaterial.DisableKeyword(OutlineRenderer.ModeBlurredKeyword); + } + else + { + _hPassMaterial.EnableKeyword(OutlineRenderer.ModeBlurredKeyword); + _vPassMaterial.EnableKeyword(OutlineRenderer.ModeBlurredKeyword); + + _hPassMaterial.DisableKeyword(OutlineRenderer.ModeSolidKeyword); + _vPassMaterial.DisableKeyword(OutlineRenderer.ModeSolidKeyword); + } } #endregion diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index f4ab5da..78ffb99 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -133,26 +133,6 @@ public void RenderSingleObject(Renderer[] renderers, OutlineMaterialSet material _commandBuffer.Blit(_hPassRtId, _renderTarget, materials.VPassBlendMaterial); } - /// - /// Setups the meterial keywords for the passed. - /// - public static void SetupMaterialKeywords(Material m, OutlineMode mode) - { - if (m) - { - if (mode == OutlineMode.Solid) - { - m.EnableKeyword(ModeSolidKeyword); - m.DisableKeyword(ModeBlurredKeyword); - } - else - { - m.EnableKeyword(ModeBlurredKeyword); - m.DisableKeyword(ModeSolidKeyword); - } - } - } - /// /// Calculates value of Gauss function for the specified and values. /// @@ -169,17 +149,21 @@ public static float Gauss(float x, float stdDev) /// /// Samples Gauss function for the specified . /// - public static float[] GetGaussSamples(int width) + public static float[] GetGaussSamples(int width, float[] samples) { - var result = new float[MaxWidth]; var stdDev = width / 2f; + if (samples == null) + { + samples = new float[MaxWidth]; + } + for (var i = 0; i < width; i++) { - result[i] = Gauss(i, stdDev); + samples[i] = Gauss(i, stdDev); } - return result; + return samples; } #endregion diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader index b4f9c20..985b116 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader @@ -85,14 +85,7 @@ Shader "UnityFx/Outline/VPassBlend" #else - if (intensity > 0) - { - return _Color; - } - else - { - return 0; - } + return _Color * step(0.01, intensity); #endif } From c4c1a723d020db29d5c7dc9374421060ef67899c Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Thu, 29 Aug 2019 16:22:54 +0300 Subject: [PATCH 09/27] Misc changed --- .../Runtime/Scripts/IOutlineSettings.cs | 5 ++ .../Runtime/Scripts/OutlineBehaviour.cs | 79 ++++++++++++++----- .../Runtime/Scripts/OutlineLayer.cs | 21 ++--- .../Runtime/Scripts/OutlineRenderer.cs | 2 +- 4 files changed, 75 insertions(+), 32 deletions(-) diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs index dac4dbf..278ee22 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs @@ -33,5 +33,10 @@ public interface IOutlineSettings /// /// OutlineMode OutlineMode { get; set; } + + /// + /// Forces the settings to be re-applied and the outline to be re-rendered. + /// + void Invalidate(); } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs index a395e72..655c129 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs @@ -71,6 +71,30 @@ public OutlineResources OutlineResources } } + /// + /// Gets or sets outline renderers. By default all child components are used for outlining. + /// + public Renderer[] OutlineRenderers + { + get + { + return _renderers; + } + set + { + if (value == null) + { + throw new ArgumentNullException("OutlineRenderers"); + } + + if (_renderers != value) + { + _renderers = value; + _changed = true; + } + } + } + /// /// Gets all cameras outline data is rendered to. /// @@ -88,21 +112,12 @@ public IEnumerable Cameras private void Awake() { - if (_renderers == null) - { - _renderers = GetComponentsInChildren(); - _changed = true; - } + SetRenderersIfNeeded(); } private void OnEnable() { - if (_commandBuffer == null) - { - _commandBuffer = new CommandBuffer(); - _commandBuffer.name = OutlineRenderer.EffectName; - _changed = true; - } + CreateCommandBufferIfNeeded(); } private void OnDisable() @@ -126,16 +141,8 @@ private void OnDisable() private void OnValidate() { - if (_commandBuffer == null) - { - _commandBuffer = new CommandBuffer(); - _commandBuffer.name = OutlineRenderer.EffectName; - } - - if (_renderers == null) - { - _renderers = GetComponentsInChildren(); - } + CreateCommandBufferIfNeeded(); + SetRenderersIfNeeded(); if (_outlineResources && (_materials == null || _materials.OutlineResources != _outlineResources)) { @@ -255,6 +262,17 @@ public OutlineMode OutlineMode } } + /// + public void Invalidate() + { + if (_materials != null) + { + _materials.Reset(this); + } + + _changed = true; + } + #endregion #region implementation @@ -287,6 +305,16 @@ private void RemoveDestroyedCameras() } } + private void CreateCommandBufferIfNeeded() + { + if (_commandBuffer == null) + { + _commandBuffer = new CommandBuffer(); + _commandBuffer.name = string.Format("{0} - {1}", OutlineRenderer.EffectName, name); + _changed = true; + } + } + private void UpdateCommandBuffer() { if (_outlineResources != null && _renderers != null) @@ -306,6 +334,15 @@ private void UpdateCommandBuffer() } } + private void SetRenderersIfNeeded() + { + if (_renderers == null) + { + _renderers = GetComponentsInChildren(); + _changed = true; + } + } + #endregion } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs index 5e81a1c..5037e12 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs @@ -93,16 +93,6 @@ public void Add(GameObject go, int ignoreLayerMask) } } - internal void Invalidate() - { - if (_materials != null) - { - _materials.Reset(this); - } - - _changed = true; - } - internal void Render(OutlineRenderer renderer, OutlineResources resources) { if (_materials == null || _materials.OutlineResources != resources) @@ -194,6 +184,17 @@ public OutlineMode OutlineMode } } + /// + public void Invalidate() + { + if (_materials != null) + { + _materials.Reset(this); + } + + _changed = true; + } + #endregion #region ISerializationCallbackReceiver diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index 78ffb99..80d6b4a 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -119,7 +119,7 @@ public void RenderSingleObject(Renderer[] renderers, OutlineMaterialSet material foreach (var renderer in renderers) { - if (renderer) + if (renderer && renderer.isVisible) { for (var i = 0; i < renderer.sharedMaterials.Length; ++i) { From 2d1928dfde63ff48eeafcfe49b39ca9c00a53f19 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Thu, 29 Aug 2019 20:09:55 +0300 Subject: [PATCH 10/27] Minor code updated --- .../Runtime/Scripts/OutlineBehaviour.cs | 2 +- .../Runtime/Scripts/OutlineEffect.cs | 2 +- .../Runtime/Scripts/OutlineMaterialSet.cs | 38 +++++++++++-------- .../Runtime/Scripts/OutlineRenderer.cs | 2 +- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs index 655c129..d794cee 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs @@ -141,8 +141,8 @@ private void OnDisable() private void OnValidate() { - CreateCommandBufferIfNeeded(); SetRenderersIfNeeded(); + CreateCommandBufferIfNeeded(); if (_outlineResources && (_materials == null || _materials.OutlineResources != _outlineResources)) { diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineEffect.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineEffect.cs index 13962a9..feb2123 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineEffect.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineEffect.cs @@ -136,7 +136,7 @@ private void OnEnable() if (camera) { _commandBuffer = new CommandBuffer(); - _commandBuffer.name = OutlineRenderer.EffectName; + _commandBuffer.name = string.Format("{0} - {1}", OutlineRenderer.EffectName, name); _changed = true; camera.AddCommandBuffer(OutlineRenderer.RenderEvent, _commandBuffer); diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs index cb40be1..034483c 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs @@ -16,7 +16,7 @@ public class OutlineMaterialSet private readonly int _colorNameId = Shader.PropertyToID(OutlineRenderer.ColorParamName); private readonly int _widthNameId = Shader.PropertyToID(OutlineRenderer.WidthParamName); - private readonly int _gaussSmaplesId = Shader.PropertyToID(OutlineRenderer.GaussSamplesParamName); + private readonly int _gaussSamplesId = Shader.PropertyToID(OutlineRenderer.GaussSamplesParamName); private readonly OutlineResources _outlineResources; private readonly Material _renderMaterial; @@ -114,8 +114,8 @@ internal OutlineMaterialSet(OutlineResources resources, Material renderMaterial) public void Reset(IOutlineSettings settings) { SetColor(settings.OutlineColor); - SetWidth(settings.OutlineWidth); SetMode(settings.OutlineMode); + SetWidthInternal(settings.OutlineWidth); } /// @@ -135,21 +135,10 @@ public void SetColor(Color color) /// public void SetWidth(int width) { - Debug.Assert(width >= OutlineRenderer.MinWidth); - Debug.Assert(width <= OutlineRenderer.MaxWidth); - - if (width != _width) + if (_width != width) { - _width = width; - _gaussSamples = OutlineRenderer.GetGaussSamples(width, _gaussSamples); - - _hPassMaterial.SetInt(_widthNameId, width); - _vPassMaterial.SetInt(_widthNameId, width); - - _hPassMaterial.SetFloatArray(_gaussSmaplesId, _gaussSamples); - _vPassMaterial.SetFloatArray(_gaussSmaplesId, _gaussSamples); + SetWidthInternal(width); } - } /// @@ -178,5 +167,24 @@ public void SetMode(OutlineMode mode) } #endregion + + #region implementation + + private void SetWidthInternal(int width) + { + Debug.Assert(width >= OutlineRenderer.MinWidth); + Debug.Assert(width <= OutlineRenderer.MaxWidth); + + _width = width; + _gaussSamples = OutlineRenderer.GetGaussSamples(width, _gaussSamples); + + _hPassMaterial.SetInt(_widthNameId, width); + _vPassMaterial.SetInt(_widthNameId, width); + + _hPassMaterial.SetFloatArray(_gaussSamplesId, _gaussSamples); + _vPassMaterial.SetFloatArray(_gaussSamplesId, _gaussSamples); + } + + #endregion } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index 80d6b4a..9230364 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -119,7 +119,7 @@ public void RenderSingleObject(Renderer[] renderers, OutlineMaterialSet material foreach (var renderer in renderers) { - if (renderer && renderer.isVisible) + if (renderer && renderer.gameObject.activeInHierarchy && renderer.enabled) { for (var i = 0; i < renderer.sharedMaterials.Length; ++i) { From d099c1c0f5ffcbca88c15f46664013cfab28d41d Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 12:24:35 +0300 Subject: [PATCH 11/27] Changed Gauss samples to be passed as global shader param (instead of meterial params) --- .../Runtime/Scripts/OutlineBehaviour.cs | 8 +- .../Runtime/Scripts/OutlineEffect.cs | 2 +- .../Runtime/Scripts/OutlineLayer.cs | 6 +- .../Runtime/Scripts/OutlineMaterialSet.cs | 172 +++++++++++++----- .../Runtime/Scripts/OutlineRenderer.cs | 26 +-- 5 files changed, 133 insertions(+), 81 deletions(-) diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs index d794cee..84020ce 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs @@ -210,7 +210,7 @@ public Color OutlineColor if (_materials != null) { - _materials.SetColor(value); + _materials.OutlineColor = value; } } } @@ -234,7 +234,7 @@ public int OutlineWidth if (_materials != null) { - _materials.SetWidth(value); + _materials.OutlineWidth = value; } } } @@ -256,7 +256,7 @@ public OutlineMode OutlineMode if (_materials != null) { - _materials.SetMode(value); + _materials.OutlineMode = value; } } } @@ -310,7 +310,7 @@ private void CreateCommandBufferIfNeeded() if (_commandBuffer == null) { _commandBuffer = new CommandBuffer(); - _commandBuffer.name = string.Format("{0} - {1}", OutlineRenderer.EffectName, name); + _commandBuffer.name = string.Format("{0} - {1}", GetType().Name, name); _changed = true; } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineEffect.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineEffect.cs index feb2123..c1e5587 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineEffect.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineEffect.cs @@ -136,7 +136,7 @@ private void OnEnable() if (camera) { _commandBuffer = new CommandBuffer(); - _commandBuffer.name = string.Format("{0} - {1}", OutlineRenderer.EffectName, name); + _commandBuffer.name = string.Format("{0} - {1}", GetType().Name, name); _changed = true; camera.AddCommandBuffer(OutlineRenderer.RenderEvent, _commandBuffer); diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs index 5037e12..1db6960 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs @@ -132,7 +132,7 @@ public Color OutlineColor if (_materials != null) { - _materials.SetColor(value); + _materials.OutlineColor = value; } } } @@ -156,7 +156,7 @@ public int OutlineWidth if (_materials != null) { - _materials.SetWidth(value); + _materials.OutlineWidth = value; } } } @@ -178,7 +178,7 @@ public OutlineMode OutlineMode if (_materials != null) { - _materials.SetMode(value); + _materials.OutlineMode = value; } } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs index 034483c..3863400 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs @@ -10,26 +10,49 @@ namespace UnityFx.Outline /// /// A set of materials needed to render outlines. /// - public class OutlineMaterialSet + public class OutlineMaterialSet : IOutlineSettings { #region data - private readonly int _colorNameId = Shader.PropertyToID(OutlineRenderer.ColorParamName); - private readonly int _widthNameId = Shader.PropertyToID(OutlineRenderer.WidthParamName); - private readonly int _gaussSamplesId = Shader.PropertyToID(OutlineRenderer.GaussSamplesParamName); - private readonly OutlineResources _outlineResources; private readonly Material _renderMaterial; private readonly Material _hPassMaterial; private readonly Material _vPassMaterial; + private readonly float[] _gaussSamples = new float[OutlineRenderer.MaxWidth]; + private Color _color; private int _width; - private float[] _gaussSamples; + private OutlineMode _mode; #endregion #region interface + /// + /// Name of the outline mode shader parameter. + /// + public const string ModeBlurredKeyword = "_MODE_BLURRED"; + + /// + /// Name of the outline mode shader parameter. + /// + public const string ModeSolidKeyword = "_MODE_SOLID"; + + /// + /// NameID of the outline color shader parameter. + /// + public readonly int ColorNameId = Shader.PropertyToID("_Color"); + + /// + /// NameID of the outline width shader parameter. + /// + public readonly int WidthNameId = Shader.PropertyToID("_Width"); + + /// + /// NameID of the outline width shader parameter. + /// + public readonly int GaussSamplesNameId = Shader.PropertyToID("_GaussSamples"); + /// /// Gets resources used by the effect implementation. /// @@ -80,6 +103,17 @@ public Material VPassBlendMaterial } } + /// + /// Gets Gauss samples for blur calculations. + /// + public float[] GaussSamples + { + get + { + return _gaussSamples; + } + } + /// /// Initializes a new instance of the class. /// @@ -115,74 +149,116 @@ public void Reset(IOutlineSettings settings) { SetColor(settings.OutlineColor); SetMode(settings.OutlineMode); - SetWidthInternal(settings.OutlineWidth); + SetWidth(settings.OutlineWidth); + UpdateGaussSamples(); } - /// - /// Sets outline color value. - /// - /// - /// - public void SetColor(Color color) + #endregion + + #region IOutlineSettings + + /// + public Color OutlineColor { - _vPassMaterial.SetColor(_colorNameId, color); + get + { + return _color; + } + set + { + SetColor(value); + } } - /// - /// Sets outline width value. - /// - /// - /// - public void SetWidth(int width) + /// + public int OutlineWidth { - if (_width != width) + get + { + return _width; + } + set { - SetWidthInternal(width); + Debug.Assert(value >= OutlineRenderer.MinWidth); + Debug.Assert(value <= OutlineRenderer.MaxWidth); + + if (_width != value) + { + SetWidth(value); + UpdateGaussSamples(); + } } } - /// - /// Sets outline mode value. - /// - /// - /// - public void SetMode(OutlineMode mode) + /// + public OutlineMode OutlineMode { - if (mode == OutlineMode.Solid) + get { - _hPassMaterial.EnableKeyword(OutlineRenderer.ModeSolidKeyword); - _vPassMaterial.EnableKeyword(OutlineRenderer.ModeSolidKeyword); - - _hPassMaterial.DisableKeyword(OutlineRenderer.ModeBlurredKeyword); - _vPassMaterial.DisableKeyword(OutlineRenderer.ModeBlurredKeyword); + return _mode; } - else + set { - _hPassMaterial.EnableKeyword(OutlineRenderer.ModeBlurredKeyword); - _vPassMaterial.EnableKeyword(OutlineRenderer.ModeBlurredKeyword); - - _hPassMaterial.DisableKeyword(OutlineRenderer.ModeSolidKeyword); - _vPassMaterial.DisableKeyword(OutlineRenderer.ModeSolidKeyword); + if (_mode != value) + { + SetMode(value); + UpdateGaussSamples(); + } } } + /// + public void Invalidate() + { + Reset(this); + } + #endregion #region implementation - private void SetWidthInternal(int width) + private void SetColor(Color color) { - Debug.Assert(width >= OutlineRenderer.MinWidth); - Debug.Assert(width <= OutlineRenderer.MaxWidth); + _color = color; + _vPassMaterial.SetColor(ColorNameId, color); + } + private void SetWidth(int width) + { _width = width; - _gaussSamples = OutlineRenderer.GetGaussSamples(width, _gaussSamples); - _hPassMaterial.SetInt(_widthNameId, width); - _vPassMaterial.SetInt(_widthNameId, width); + _hPassMaterial.SetInt(WidthNameId, width); + _vPassMaterial.SetInt(WidthNameId, width); + } + + private void SetMode(OutlineMode mode) + { + _mode = mode; + + if (mode == OutlineMode.Solid) + { + _hPassMaterial.EnableKeyword(ModeSolidKeyword); + _vPassMaterial.EnableKeyword(ModeSolidKeyword); + + _hPassMaterial.DisableKeyword(ModeBlurredKeyword); + _vPassMaterial.DisableKeyword(ModeBlurredKeyword); + } + else + { + _hPassMaterial.EnableKeyword(ModeBlurredKeyword); + _vPassMaterial.EnableKeyword(ModeBlurredKeyword); - _hPassMaterial.SetFloatArray(_gaussSamplesId, _gaussSamples); - _vPassMaterial.SetFloatArray(_gaussSamplesId, _gaussSamples); + _hPassMaterial.DisableKeyword(ModeSolidKeyword); + _vPassMaterial.DisableKeyword(ModeSolidKeyword); + } + } + + private void UpdateGaussSamples() + { + if (_mode == OutlineMode.Blurred) + { + OutlineRenderer.GetGaussSamples(_width, _gaussSamples); + } } #endregion diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index 9230364..51419b3 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -45,31 +45,6 @@ public struct OutlineRenderer : IDisposable /// public const string EffectName = "Outline"; - /// - /// Name of the outline color shader parameter. - /// - public const string ColorParamName = "_Color"; - - /// - /// Name of the outline width shader parameter. - /// - public const string WidthParamName = "_Width"; - - /// - /// Name of the outline gauss kernel table parameter. - /// - public const string GaussSamplesParamName = "_GaussSamples"; - - /// - /// Name of the outline mode shader parameter. - /// - public const string ModeBlurredKeyword = "_MODE_BLURRED"; - - /// - /// Name of the outline mode shader parameter. - /// - public const string ModeSolidKeyword = "_MODE_SOLID"; - /// /// Minimum value of outline width parameter. /// @@ -128,6 +103,7 @@ public void RenderSingleObject(Renderer[] renderers, OutlineMaterialSet material } } + _commandBuffer.SetGlobalFloatArray(materials.GaussSamplesNameId, materials.GaussSamples); _commandBuffer.SetGlobalTexture(_maskRtId, _maskRtId); _commandBuffer.Blit(_maskRtId, _hPassRtId, materials.HPassMaterial); _commandBuffer.Blit(_hPassRtId, _renderTarget, materials.VPassBlendMaterial); From a0e6d57f7dd0d32f9000fd5a93d3e6dc00269b4d Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 12:48:46 +0300 Subject: [PATCH 12/27] Added Gauss sampling comments --- .../UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index 51419b3..1c116a7 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -113,6 +113,7 @@ public void RenderSingleObject(Renderer[] renderers, OutlineMaterialSet material /// Calculates value of Gauss function for the specified and values. /// /// + /// public static float Gauss(float x, float stdDev) { var stdDev2 = stdDev * stdDev * 2; @@ -125,9 +126,12 @@ public static float Gauss(float x, float stdDev) /// /// Samples Gauss function for the specified . /// + /// public static float[] GetGaussSamples(int width, float[] samples) { - var stdDev = width / 2f; + // NOTE: According to '3 sigma' rule there is no reason to have StdDev less then width / 3. + // In practice blur looks best when StdDev is within range [width / 3, width / 2]. + var stdDev = width * 0.5f; if (samples == null) { From 93adccf6eaaedcedda0ce207b681d496799e7e90 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 12:54:53 +0300 Subject: [PATCH 13/27] OutlineBehaviour editor fixes --- .../Editor/Scripts/OutlineBehaviourEditor.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Assets/Plugins/UnityFx.Outline/Editor/Scripts/OutlineBehaviourEditor.cs b/Assets/Plugins/UnityFx.Outline/Editor/Scripts/OutlineBehaviourEditor.cs index 85ad3c6..57a290a 100644 --- a/Assets/Plugins/UnityFx.Outline/Editor/Scripts/OutlineBehaviourEditor.cs +++ b/Assets/Plugins/UnityFx.Outline/Editor/Scripts/OutlineBehaviourEditor.cs @@ -13,6 +13,7 @@ namespace UnityFx.Outline public class OutlineBehaviourEditor : Editor { private OutlineBehaviour _effect; + private bool _renderersOpened; private bool _camerasOpened; private void OnEnable() @@ -24,6 +25,25 @@ public override void OnInspectorGUI() { base.OnInspectorGUI(); + _renderersOpened = EditorGUILayout.Foldout(_renderersOpened, "Renderers", true); + + if (_renderersOpened) + { + EditorGUI.BeginDisabledGroup(true); + EditorGUI.indentLevel += 1; + + var rendererNumber = 1; + + foreach (var renderer in _effect.OutlineRenderers) + { + EditorGUILayout.ObjectField("#" + rendererNumber.ToString(), renderer, typeof(Renderer), true); + rendererNumber++; + } + + EditorGUI.indentLevel -= 1; + EditorGUI.EndDisabledGroup(); + } + _camerasOpened = EditorGUILayout.Foldout(_camerasOpened, "Cameras", true); if (_camerasOpened) @@ -36,6 +56,7 @@ public override void OnInspectorGUI() foreach (var camera in _effect.Cameras) { EditorGUILayout.ObjectField("#" + cameraNumber.ToString(), camera, typeof(Camera), true); + cameraNumber++; } EditorGUI.indentLevel -= 1; From 2dbbb1fce1ec9164d6ac5f73a02b301936d350b9 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 13:21:25 +0300 Subject: [PATCH 14/27] Added outline intensity settings --- Assets/Examples/Prefabs/OutlineLayers.asset | 4 ++- Assets/Examples/Scenes/Outline.unity | 3 +- .../Runtime/Scripts/IOutlineSettings.cs | 5 +++ .../Runtime/Scripts/OutlineBehaviour.cs | 27 +++++++++++++++ .../Runtime/Scripts/OutlineLayer.cs | 27 +++++++++++++++ .../Runtime/Scripts/OutlineMaterialSet.cs | 34 ++++++++++++++++++- .../Runtime/Scripts/OutlineRenderer.cs | 10 ++++++ .../Runtime/Shaders/OutlinePass1.shader | 4 +-- .../Runtime/Shaders/OutlinePass2.shader | 15 ++++++-- 9 files changed, 121 insertions(+), 8 deletions(-) diff --git a/Assets/Examples/Prefabs/OutlineLayers.asset b/Assets/Examples/Prefabs/OutlineLayers.asset index ed6eb0e..5def13d 100644 --- a/Assets/Examples/Prefabs/OutlineLayers.asset +++ b/Assets/Examples/Prefabs/OutlineLayers.asset @@ -13,8 +13,10 @@ MonoBehaviour: m_EditorClassIdentifier: _layers: - _outlineColor: {r: 1, g: 0, b: 0, a: 1} - _outlineWidth: 8 + _outlineWidth: 7 + _outlineIntensity: 2 _outlineMode: 1 - _outlineColor: {r: 0.22794117, g: 0.8455882, b: 0, a: 1} _outlineWidth: 8 + _outlineIntensity: 2 _outlineMode: 0 diff --git a/Assets/Examples/Scenes/Outline.unity b/Assets/Examples/Scenes/Outline.unity index 77a9891..fd0fc34 100644 --- a/Assets/Examples/Scenes/Outline.unity +++ b/Assets/Examples/Scenes/Outline.unity @@ -504,7 +504,8 @@ MonoBehaviour: m_EditorClassIdentifier: _outlineResources: {fileID: 11400000, guid: d28e70f030b1a634db9a6a6d5478ef19, type: 2} _outlineColor: {r: 0, g: 1, b: 0, a: 1} - _outlineWidth: 6 + _outlineWidth: 5 + _outlineIntensity: 8 _outlineMode: 1 --- !u!23 &1789341923 MeshRenderer: diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs index 278ee22..8dbf8c6 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/IOutlineSettings.cs @@ -27,6 +27,11 @@ public interface IOutlineSettings /// int OutlineWidth { get; set; } + /// + /// Gets or sets outline intensity value. Allowed range is [, ]. + /// + float OutlineIntensity { get; set; } + /// /// Gets or sets outline mode. /// diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs index 84020ce..ba4edd2 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs @@ -28,6 +28,9 @@ public sealed class OutlineBehaviour : MonoBehaviour, IOutlineSettings [Range(OutlineRenderer.MinWidth, OutlineRenderer.MaxWidth)] private int _outlineWidth = 5; [SerializeField] + [Range(OutlineRenderer.MinIntensity, OutlineRenderer.MaxIntensity)] + private float _outlineIntensity = 2; + [SerializeField] private OutlineMode _outlineMode; #pragma warning restore 0649 @@ -240,6 +243,30 @@ public int OutlineWidth } } + /// + public float OutlineIntensity + { + get + { + return _outlineIntensity; + } + set + { + value = Mathf.Clamp(value, OutlineRenderer.MinIntensity, OutlineRenderer.MaxIntensity); + + if (_outlineIntensity != value) + { + _outlineIntensity = value; + _changed = true; + + if (_materials != null) + { + _materials.OutlineIntensity = value; + } + } + } + } + /// public OutlineMode OutlineMode { diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs index 1db6960..241ec71 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs @@ -26,6 +26,9 @@ public sealed class OutlineLayer : ICollection, IOutlineSettings, IS [Range(OutlineRenderer.MinWidth, OutlineRenderer.MaxWidth)] private int _outlineWidth = 4; [SerializeField] + [Range(OutlineRenderer.MinIntensity, OutlineRenderer.MaxIntensity)] + private float _outlineIntensity = 2; + [SerializeField] private OutlineMode _outlineMode; private bool _changed; @@ -162,6 +165,30 @@ public int OutlineWidth } } + /// + public float OutlineIntensity + { + get + { + return _outlineIntensity; + } + set + { + value = Mathf.Clamp(value, OutlineRenderer.MinIntensity, OutlineRenderer.MaxIntensity); + + if (_outlineIntensity != value) + { + _outlineIntensity = value; + _changed = true; + + if (_materials != null) + { + _materials.OutlineIntensity = value; + } + } + } + } + /// public OutlineMode OutlineMode { diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs index 3863400..639e4e0 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs @@ -22,6 +22,7 @@ public class OutlineMaterialSet : IOutlineSettings private Color _color; private int _width; + private float _intensity; private OutlineMode _mode; #endregion @@ -48,6 +49,11 @@ public class OutlineMaterialSet : IOutlineSettings /// public readonly int WidthNameId = Shader.PropertyToID("_Width"); + /// + /// NameID of the outline intensity shader parameter. + /// + public readonly int IntensityNameId = Shader.PropertyToID("_Intensity"); + /// /// NameID of the outline width shader parameter. /// @@ -148,8 +154,9 @@ internal OutlineMaterialSet(OutlineResources resources, Material renderMaterial) public void Reset(IOutlineSettings settings) { SetColor(settings.OutlineColor); - SetMode(settings.OutlineMode); + SetIntensity(settings.OutlineIntensity); SetWidth(settings.OutlineWidth); + SetMode(settings.OutlineMode); UpdateGaussSamples(); } @@ -190,6 +197,25 @@ public int OutlineWidth } } + /// + public float OutlineIntensity + { + get + { + return _intensity; + } + set + { + Debug.Assert(value >= OutlineRenderer.MinIntensity); + Debug.Assert(value <= OutlineRenderer.MaxIntensity); + + if (_intensity != value) + { + SetIntensity(value); + } + } + } + /// public OutlineMode OutlineMode { @@ -231,6 +257,12 @@ private void SetWidth(int width) _vPassMaterial.SetInt(WidthNameId, width); } + private void SetIntensity(float intensity) + { + _intensity = intensity; + _vPassMaterial.SetFloat(IntensityNameId, intensity); + } + private void SetMode(OutlineMode mode) { _mode = mode; diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index 1c116a7..7a67e99 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -55,6 +55,16 @@ public struct OutlineRenderer : IDisposable /// public const int MaxWidth = 32; + /// + /// Minimum value of outline intensity parameter. + /// + public const int MinIntensity = 1; + + /// + /// Maximum value of outline intensity parameter. + /// + public const int MaxIntensity = 8; + /// /// Initializes a new instance of the struct. /// diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader index 12dc859..75fdf3b 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader @@ -51,7 +51,7 @@ Shader "UnityFx/Outline/HPass" return o; } - half frag(v2f i) : COLOR + float frag(v2f i) : COLOR { float TX_x = _MaskTex_TexelSize.x; float intensity; @@ -59,7 +59,7 @@ Shader "UnityFx/Outline/HPass" for (int k = -n; k <= n; k += 1) { - half pixelIntensity = tex2D(_MaskTex, i.uvs.xy + float2(k * TX_x, 0)).r; + float pixelIntensity = tex2D(_MaskTex, i.uvs.xy + float2(k * TX_x, 0)).r; #if _MODE_BLURRED diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader index 985b116..979a9b6 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader @@ -8,6 +8,7 @@ Shader "UnityFx/Outline/VPassBlend" Properties { _Width("Outline thickness (in pixels)", Range(1, 32)) = 5 + _Intensity("Outline intensity", Range(0.1, 100)) = 2 _Color("Outline color", Color) = (1, 0, 0, 1) } @@ -29,6 +30,7 @@ Shader "UnityFx/Outline/VPassBlend" sampler2D _HPassTex; float2 _HPassTex_TexelSize; float4 _Color; + float _Intensity; int _Width; #if _MODE_BLURRED @@ -53,7 +55,7 @@ Shader "UnityFx/Outline/VPassBlend" return o; } - half4 frag(v2f i) : COLOR + float4 frag(v2f i) : COLOR { if (tex2D(_MaskTex, i.uvs.xy).r > 0) { @@ -66,7 +68,7 @@ Shader "UnityFx/Outline/VPassBlend" for (int k = -n; k <= _Width; k += 1) { - half pixelIntensity = tex2D(_HPassTex, i.uvs.xy + float2(0, k * TX_y)).r; + float pixelIntensity = tex2D(_HPassTex, i.uvs.xy + float2(0, k * TX_y)).r; #if _MODE_BLURRED @@ -81,7 +83,14 @@ Shader "UnityFx/Outline/VPassBlend" #if _MODE_BLURRED - return half4(_Color.rgb, _Color.a * intensity * 2); + if (_Intensity > 99) + { + return _Color * step(0.01, intensity); + } + else + { + return float4(_Color.rgb, clamp(_Color.a * intensity * _Intensity, 0, 1)); + } #else From 861d58ca87d5a49c980babfc5c70303d179ad2c7 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 14:26:07 +0300 Subject: [PATCH 15/27] Minor shader logic improvements --- .../UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader index 979a9b6..9051e43 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader @@ -85,18 +85,20 @@ Shader "UnityFx/Outline/VPassBlend" if (_Intensity > 99) { - return _Color * step(0.01, intensity); + intensity = step(0.01, intensity); } else { - return float4(_Color.rgb, clamp(_Color.a * intensity * _Intensity, 0, 1)); + intensity = intensity * _Intensity; } #else - return _Color * step(0.01, intensity); + intensity = step(0.01, intensity); #endif + + return float4(_Color.rgb, saturate(_Color.a * intensity)); } ENDCG From ceae4b16a1782cc0ad62fe2b14511d9003aaca30 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 14:58:22 +0300 Subject: [PATCH 16/27] Changed Solid outline mode to use Gauss sampling for smoother results --- .../Runtime/Scripts/OutlineMaterialSet.cs | 23 ++---------- .../Runtime/Scripts/OutlineRenderer.cs | 7 +++- .../Runtime/Shaders/OutlinePass1.shader | 18 +--------- .../Runtime/Shaders/OutlinePass2.shader | 36 ++----------------- 4 files changed, 11 insertions(+), 73 deletions(-) diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs index 639e4e0..cc63833 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs @@ -29,16 +29,6 @@ public class OutlineMaterialSet : IOutlineSettings #region interface - /// - /// Name of the outline mode shader parameter. - /// - public const string ModeBlurredKeyword = "_MODE_BLURRED"; - - /// - /// Name of the outline mode shader parameter. - /// - public const string ModeSolidKeyword = "_MODE_SOLID"; - /// /// NameID of the outline color shader parameter. /// @@ -228,7 +218,6 @@ public OutlineMode OutlineMode if (_mode != value) { SetMode(value); - UpdateGaussSamples(); } } } @@ -269,19 +258,11 @@ private void SetMode(OutlineMode mode) if (mode == OutlineMode.Solid) { - _hPassMaterial.EnableKeyword(ModeSolidKeyword); - _vPassMaterial.EnableKeyword(ModeSolidKeyword); - - _hPassMaterial.DisableKeyword(ModeBlurredKeyword); - _vPassMaterial.DisableKeyword(ModeBlurredKeyword); + _vPassMaterial.SetFloat(IntensityNameId, OutlineRenderer.SolidIntensity); } else { - _hPassMaterial.EnableKeyword(ModeBlurredKeyword); - _vPassMaterial.EnableKeyword(ModeBlurredKeyword); - - _hPassMaterial.DisableKeyword(ModeSolidKeyword); - _vPassMaterial.DisableKeyword(ModeSolidKeyword); + _vPassMaterial.SetFloat(IntensityNameId, _intensity); } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index 7a67e99..e6edebe 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -63,7 +63,12 @@ public struct OutlineRenderer : IDisposable /// /// Maximum value of outline intensity parameter. /// - public const int MaxIntensity = 8; + public const int MaxIntensity = 64; + + /// + /// Value of outline intensity parameter that is treated as solid fill. + /// + public const int SolidIntensity = 100; /// /// Initializes a new instance of the struct. diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader index 75fdf3b..e617203 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass1.shader @@ -20,7 +20,6 @@ Shader "UnityFx/Outline/HPass" { CGPROGRAM - #pragma multi_compile _MODE_SOLID _MODE_BLURRED #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" @@ -28,13 +27,8 @@ Shader "UnityFx/Outline/HPass" sampler2D _MaskTex; float2 _MaskTex_TexelSize; int _Width; - -#if _MODE_BLURRED - float _GaussSamples[32]; -#endif - struct v2f { float4 pos : POSITION; @@ -59,17 +53,7 @@ Shader "UnityFx/Outline/HPass" for (int k = -n; k <= n; k += 1) { - float pixelIntensity = tex2D(_MaskTex, i.uvs.xy + float2(k * TX_x, 0)).r; - -#if _MODE_BLURRED - - intensity += pixelIntensity * _GaussSamples[abs(k)]; - -#else - - intensity += pixelIntensity; - -#endif + intensity += tex2D(_MaskTex, i.uvs.xy + float2(k * TX_x, 0)).r * _GaussSamples[abs(k)]; } return intensity; diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader index 9051e43..3221d7a 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Shaders/OutlinePass2.shader @@ -20,7 +20,6 @@ Shader "UnityFx/Outline/VPassBlend" { CGPROGRAM - #pragma multi_compile _MODE_SOLID _MODE_BLURRED #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" @@ -32,13 +31,8 @@ Shader "UnityFx/Outline/VPassBlend" float4 _Color; float _Intensity; int _Width; - -#if _MODE_BLURRED - float _GaussSamples[32]; -#endif - struct v2f { float4 pos : POSITION; @@ -68,36 +62,10 @@ Shader "UnityFx/Outline/VPassBlend" for (int k = -n; k <= _Width; k += 1) { - float pixelIntensity = tex2D(_HPassTex, i.uvs.xy + float2(0, k * TX_y)).r; - -#if _MODE_BLURRED - - intensity += pixelIntensity * _GaussSamples[abs(k)]; - -#else - - intensity += pixelIntensity; - -#endif + intensity += tex2D(_HPassTex, i.uvs.xy + float2(0, k * TX_y)).r * _GaussSamples[abs(k)]; } -#if _MODE_BLURRED - - if (_Intensity > 99) - { - intensity = step(0.01, intensity); - } - else - { - intensity = intensity * _Intensity; - } - -#else - - intensity = step(0.01, intensity); - -#endif - + intensity = _Intensity > 99 ? step(0.01, intensity) : intensity * _Intensity; return float4(_Color.rgb, saturate(_Color.a * intensity)); } From 68991b49191183850e21d267f29ef21b50d7e0d2 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 15:07:17 +0300 Subject: [PATCH 17/27] CHANGELOG update --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 800ef5b..3d8c18f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/); this project adheres to [Semantic Versioning](http://semver.org/). +## [0.4.0] - unreleased + +### Added +- Added Gauss blurring to outlines. +- Added outline mode parameter (possible values are `Solid` and `Blurred`). +- Added outline intensity parameter (for blurred outlines only). +- Added `IOutlineSettings` interface to make outline settings the same for `OutlineBehaviour` and `OutlineLayer`. +- Added `OutlineMaterialSet` helper. + +### Changed +- Changed solid outline to use Gauss sampling (to achieve smoother outlines). +- Changed outline implementation to use different passed for horizontal and vertical sampling (to make algorithm complexity linear instead of quadric). + +### Removed +- Removed `OutlineResourceCache` class. + ## [0.3.0] - 2019.08.27 ### Added From 34c06121329836b29139c5b33348c3cd621eec54 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 15:23:10 +0300 Subject: [PATCH 18/27] README update --- README.md | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 587d56f..bf15514 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Npm | [![Npm release](https://img.shields.io/npm/v/com.unityfx.outline.svg)](htt ## Synopsis ![Outline demo](OutlineDemo.png "Outline demo") -*UnityFx.Outline* defines tools that can be used to render configurable object outlines for specific cameras. The outlines configuration can be easily customized either through scripts or with Unity editor. +*UnityFx.Outline* implements configurable per-object and per-camera outlines. Both solid and blurred outline modes are supported (Gauss blur). The outlines can be easily customized either through scripts or with Unity editor (both in edit-time or runtime). Implementation is based on Unity [command buffers](https://docs.unity3d.com/ScriptReference/Rendering.CommandBuffer.html), does not require putting objects into layers and has no dependencies. @@ -43,7 +43,7 @@ Npm package is available at [npmjs.com](https://www.npmjs.com/package/com.unityf } ], "dependencies": { - "com.unityfx.outline": "0.3.0" + "com.unityfx.outline": "0.4.0" } } ``` @@ -62,6 +62,7 @@ var layer = new OutlineLayer(); layer.OutlineColor = Color.red; layer.OutlineWidth = 7; +layer.OutlineMode = OutlineMode.Blurred; layer.Add(myGo); outlineEffect.OutlineLayers.Add(layer); @@ -90,11 +91,31 @@ outlineBehaviour.OutlineResources = myResources; outlineBehaviour.OutlineColor = Color.green; outlineBehaviour.OutlineWidth = 2; +outlineBehaviour.OutlineIntensity = 10; ``` -### TODO -- Make different `OutlineEffect` instances share layers. -- Blur outline frames. +### Extensibility +There are a number of helper classes that can be used for writing highly customized outline implementations (if neither `OutlineBehaviour` nor `OutlineEffect` does not suit your needs). +All outline implementations use following helpers: +- `OutlineRenderer` is basically a wrapper around `CommandBuffer` for low-level outline rendering. +- `OutlineMaterialSet` is a set of materials used by `OutlineRenderer` for rendering. + +Using these helpers is quite easy to create new outline tools. For instance, the following code renders a blue outline around object the script is attached to in `myCamera`: + +```csharp +var commandBuffer = new CommandBuffer(); +var renderers = GetComponentsInChildren(); +var materials = outlineResources.CreateMaterialSet(); + +materials.OutlineColor = Color.blue; + +using (var renderer = new OutlineRenderer(commandBuffer, BuiltinRenderTextureType.CameraTarget)) +{ + renderer.RenderSingleObject(renderers, _materials); +} + +myCamera.AddCommandBuffer(OutlineRenderer.RenderEvent, commandBuffer); +``` ## Motivation The project was initially created to help author with his [Unity3d](https://unity3d.com) projects. There are not many reusable open-source examples of it, so here it is. Hope it will be useful for someone. From c3a18de10d39152ec90ee1c130a6e7ca90899c15 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 16:14:56 +0300 Subject: [PATCH 19/27] Minor code change --- .../Runtime/Scripts/OutlineBehaviour.cs | 13 ++++--- .../Runtime/Scripts/OutlineRenderer.cs | 36 ++++++++++++++++--- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs index ba4edd2..b8a4cdc 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs @@ -115,7 +115,12 @@ public IEnumerable Cameras private void Awake() { - SetRenderersIfNeeded(); + SetRenderers(); + } + + private void Reset() + { + SetRenderers(true); } private void OnEnable() @@ -144,7 +149,7 @@ private void OnDisable() private void OnValidate() { - SetRenderersIfNeeded(); + SetRenderers(); CreateCommandBufferIfNeeded(); if (_outlineResources && (_materials == null || _materials.OutlineResources != _outlineResources)) @@ -361,9 +366,9 @@ private void UpdateCommandBuffer() } } - private void SetRenderersIfNeeded() + private void SetRenderers(bool reset = false) { - if (_renderers == null) + if (_renderers == null || reset) { _renderers = GetComponentsInChildren(); _changed = true; diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index e6edebe..9c16043 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -2,6 +2,7 @@ // See the LICENSE.md file in the project root for more information. using System; +using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering; @@ -99,7 +100,7 @@ public OutlineRenderer(CommandBuffer commandBuffer, RenderTargetIdentifier dst) /// /// Adds commands for rendering single outline object. /// - public void RenderSingleObject(Renderer[] renderers, OutlineMaterialSet materials) + public void RenderSingleObject(IList renderers, OutlineMaterialSet materials) { Debug.Assert(renderers != null); Debug.Assert(materials != null); @@ -107,13 +108,15 @@ public void RenderSingleObject(Renderer[] renderers, OutlineMaterialSet material _commandBuffer.SetRenderTarget(_maskRtId); _commandBuffer.ClearRenderTarget(false, true, Color.black); - foreach (var renderer in renderers) + for (var i = 0; i < renderers.Count; ++i) { + var renderer = renderers[i]; + if (renderer && renderer.gameObject.activeInHierarchy && renderer.enabled) { - for (var i = 0; i < renderer.sharedMaterials.Length; ++i) + for (var j = 0; j < renderer.sharedMaterials.Length; ++j) { - _commandBuffer.DrawRenderer(renderer, materials.RenderMaterial, i); + _commandBuffer.DrawRenderer(renderer, materials.RenderMaterial, j); } } } @@ -124,6 +127,31 @@ public void RenderSingleObject(Renderer[] renderers, OutlineMaterialSet material _commandBuffer.Blit(_hPassRtId, _renderTarget, materials.VPassBlendMaterial); } + /// + /// Adds commands for rendering single outline object. + /// + public void RenderSingleObject(Renderer renderer, OutlineMaterialSet materials) + { + Debug.Assert(renderer != null); + Debug.Assert(materials != null); + + _commandBuffer.SetRenderTarget(_maskRtId); + _commandBuffer.ClearRenderTarget(false, true, Color.black); + + if (renderer && renderer.gameObject.activeInHierarchy && renderer.enabled) + { + for (var i = 0; i < renderer.sharedMaterials.Length; ++i) + { + _commandBuffer.DrawRenderer(renderer, materials.RenderMaterial, i); + } + } + + _commandBuffer.SetGlobalFloatArray(materials.GaussSamplesNameId, materials.GaussSamples); + _commandBuffer.SetGlobalTexture(_maskRtId, _maskRtId); + _commandBuffer.Blit(_maskRtId, _hPassRtId, materials.HPassMaterial); + _commandBuffer.Blit(_hPassRtId, _renderTarget, materials.VPassBlendMaterial); + } + /// /// Calculates value of Gauss function for the specified and values. /// From 6f88ce39a4b3629cb2a2b9305090e0c1c31b8539 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 16:55:28 +0300 Subject: [PATCH 20/27] Fixed material set to correctly update samples --- Assets/Examples/Scenes/Outline.unity | 4 ++-- .../Runtime/Scripts/OutlineLayerCollection.cs | 2 +- .../UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs | 8 +++----- .../UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs | 3 +-- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/Assets/Examples/Scenes/Outline.unity b/Assets/Examples/Scenes/Outline.unity index fd0fc34..d142b7e 100644 --- a/Assets/Examples/Scenes/Outline.unity +++ b/Assets/Examples/Scenes/Outline.unity @@ -504,8 +504,8 @@ MonoBehaviour: m_EditorClassIdentifier: _outlineResources: {fileID: 11400000, guid: d28e70f030b1a634db9a6a6d5478ef19, type: 2} _outlineColor: {r: 0, g: 1, b: 0, a: 1} - _outlineWidth: 5 - _outlineIntensity: 8 + _outlineWidth: 13 + _outlineIntensity: 2 _outlineMode: 1 --- !u!23 &1789341923 MeshRenderer: diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayerCollection.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayerCollection.cs index 3f07c49..0354cca 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayerCollection.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayerCollection.cs @@ -14,7 +14,7 @@ namespace UnityFx.Outline /// /// [CreateAssetMenu(fileName = "OutlineLayerCollection", menuName = "UnityFx/Outline Layer Collection")] - public class OutlineLayerCollection : ScriptableObject, IList + public sealed class OutlineLayerCollection : ScriptableObject, IList { #region data diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs index cc63833..2447bb7 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineMaterialSet.cs @@ -10,7 +10,8 @@ namespace UnityFx.Outline /// /// A set of materials needed to render outlines. /// - public class OutlineMaterialSet : IOutlineSettings + /// + public sealed class OutlineMaterialSet : IOutlineSettings { #region data @@ -268,10 +269,7 @@ private void SetMode(OutlineMode mode) private void UpdateGaussSamples() { - if (_mode == OutlineMode.Blurred) - { - OutlineRenderer.GetGaussSamples(_width, _gaussSamples); - } + OutlineRenderer.GetGaussSamples(_width, _gaussSamples); } #endregion diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index 9c16043..8d4c938 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -21,8 +21,7 @@ namespace UnityFx.Outline /// renderer.RenderSingleObject(outlineRenderers, renderMaterial, postProcessMaterial); /// } /// - /// - /// + /// public struct OutlineRenderer : IDisposable { #region data From 82d8d55ddbbeaf96f200ce06a14ec04ccc3c2d5b Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 17:13:37 +0300 Subject: [PATCH 21/27] Changed OutlineBehaviour to render outlines even if it is not attached to a Renderer --- .../Runtime/Scripts/OutlineBehaviour.cs | 67 ++++++++++++++++--- .../Runtime/Scripts/OutlineBehaviourRt.cs | 27 ++++++++ .../Scripts/OutlineBehaviourRt.cs.meta | 11 +++ 3 files changed, 94 insertions(+), 11 deletions(-) create mode 100644 Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviourRt.cs create mode 100644 Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviourRt.cs.meta diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs index b8a4cdc..97060ea 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs @@ -92,8 +92,7 @@ public Renderer[] OutlineRenderers if (_renderers != value) { - _renderers = value; - _changed = true; + SetRenderers(value); } } } @@ -109,6 +108,11 @@ public IEnumerable Cameras } } + internal void OnWillRenderObjectRt() + { + OnWillRenderObject(); + } + #endregion #region MonoBehaviour @@ -116,6 +120,7 @@ public IEnumerable Cameras private void Awake() { SetRenderers(); + CreateMaterialsIfNeeded(); } private void Reset() @@ -347,16 +352,19 @@ private void CreateCommandBufferIfNeeded() } } - private void UpdateCommandBuffer() + private void CreateMaterialsIfNeeded() { - if (_outlineResources != null && _renderers != null) + if (_materials == null && _outlineResources != null) { - if (_materials == null) - { - _materials = _outlineResources.CreateMaterialSet(); - _materials.Reset(this); - } + _materials = _outlineResources.CreateMaterialSet(); + _materials.Reset(this); + } + } + private void UpdateCommandBuffer() + { + if (_outlineResources != null && _renderers != null && _materials != null) + { using (var renderer = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget)) { renderer.RenderSingleObject(_renderers, _materials); @@ -366,12 +374,49 @@ private void UpdateCommandBuffer() } } + private void SetRenderers(Renderer[] renderers) + { + if (_renderers != null) + { + foreach (var renderer in _renderers) + { + if (renderer) + { + var c = renderer.GetComponent(); + + if (c != null) + { + c.Parent = null; + } + } + } + } + + _renderers = renderers; + _changed = true; + + // Have to attach a specific behaviour to each renderer to call + foreach (var renderer in _renderers) + { + if (renderer && renderer.gameObject != gameObject) + { + var c = renderer.GetComponent(); + + if (c == null) + { + c = renderer.gameObject.AddComponent(); + } + + c.Parent = this; + } + } + } + private void SetRenderers(bool reset = false) { if (_renderers == null || reset) { - _renderers = GetComponentsInChildren(); - _changed = true; + SetRenderers(GetComponentsInChildren()); } } diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviourRt.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviourRt.cs new file mode 100644 index 0000000..7301e6b --- /dev/null +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviourRt.cs @@ -0,0 +1,27 @@ +// Copyright (C) 2019 Alexander Bogarsukov. All rights reserved. +// See the LICENSE.md file in the project root for more information. + +using System; +using UnityEngine; + +namespace UnityFx.Outline +{ + /// + /// This should be attached to each for to work as expected. + /// + /// + [ExecuteInEditMode] + [DisallowMultipleComponent] + internal class OutlineBehaviourRt : MonoBehaviour + { + public OutlineBehaviour Parent; + + private void OnWillRenderObject() + { + if (isActiveAndEnabled && Parent) + { + Parent.OnWillRenderObjectRt(); + } + } + } +} diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviourRt.cs.meta b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviourRt.cs.meta new file mode 100644 index 0000000..753c16f --- /dev/null +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviourRt.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c6ee32bc28cb44c48ae754d73c9d4595 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From a2acbd320535baf342b6f792ff00e65d342f0992 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 17:22:28 +0300 Subject: [PATCH 22/27] README update --- MotusOutline.png | Bin 0 -> 247213 bytes OutlineDemo.png | Bin 44559 -> 0 bytes OutlineSamples.png | Bin 0 -> 173166 bytes README.md | 15 +++++++++++++-- 4 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 MotusOutline.png delete mode 100644 OutlineDemo.png create mode 100644 OutlineSamples.png diff --git a/MotusOutline.png b/MotusOutline.png new file mode 100644 index 0000000000000000000000000000000000000000..962b7f4e9eadf78919d88c52d41aacbe5a3ac08f GIT binary patch literal 247213 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 YL|;dph@Vj3E5JulR#m20%E<5k0Br$7e*gdg literal 0 HcmV?d00001 diff --git a/OutlineDemo.png b/OutlineDemo.png deleted file mode 100644 index a1572240361e3d355f790cc22f14e4402ece0a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44559 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 diff --git a/OutlineSamples.png b/OutlineSamples.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc19f67986b106c5b44be7a9fda710a278b16bf GIT binary patch literal 173166 zcmY(q2|Uw}A3y%yW}7yK8bj_z4&5Dm#xlv)4p51MJvQuP@$1Ag4E*;8RVO_GY|ASjvGC`%YVpi|yey;zM%x zN&^#L80{UdD-|r@RVcGqtSsQTemsDX<7&ds4ZQu18zS);mSsqZwfbeMry8h8rI3zf zk_x1*9>WjeciLRcN-P%8W!o;M6A!wzcib-S@N`VPD3E!KdfP&W-%BixA{J~sQDGvQL>H&O&7*hcx!p2M znNYzeR@=^m-&t+pH2C#g7LUH5uqVW1?}H;#>C_D0jcv?al{PY4oMchvx~Q*_d_c*&c`fi?c=X8vl0-LBUx64(Cy2#@w(WrpRoyaTV$590%*$jRtQR)a zScYLD%J>x9t~lv)OBUi|Ji*PAtl}hpGA8rbl}a4H9phN%NdK^T)yQP{kxq&HdRo)7 zA!F?MKVspFg$81teg_uc?X1mxea4tm?ejKo*7D~S<0arp8BmP ze5|^L?cmBi>6eMeG^qP=he13Ic8$Mk{fIPI%Sdo$7N*RqG?Q%fOKkI>7-A^ z{|vhHyMtVcU#hyHh=+Lvp(nFCB^IAne)ahodrSPE#tmqZ)?3Q*6>O62qpt9xf7{18 z&-l&2AAJ7H$T-Lsnm|z+F7B@_o8Vdrg#`aTQV0pRcuNm*rkYK1(8UykLJQt_+p}2z zQQ4Gs&|h&BqOBSBx=n|3AsO^fm|rz9(~9b-jz3EOcyv4)6>bzTN$-~5K{yBjnFleg z^mV8r8Ovu=fWEl8sIoM&D1CcmO}RViW`>to)M0k8O#(hK%VGGJe0b!GIKoig+wsl! zV}}EjvDbGZtW9k9aMaPEis&dsdU=kj@VgwI)a%7>JE<&yRNkv6Ln2MxsH6q^~{ zPmdCZoY_$|Sc!14ZWkv{IbB_E_V2zUnEbF?Eqxz8^=aRBRr1=>D`9V!oguY}Lu`dQ zND?K`tyt(*G1VZ&)eOd-f6~Sutj?iMc%qqHqUGKmM>?H--BJ zv|7@r45x!fpMI1d-@iXRE^xB2TfW%|Pg9ED`G*!|Az7@ zD^%<%d16uH@}h}_^1x6kL$SMxC{gk;V6x^N_|b+0Qp6&hAyGxDV9*3q3;lS)Ai;ac zBha>k5O14l8K&b$Gi#_}iV-t)QrVMekHHTSxSN2N75Lez8?MaMJhObJNfzyu?NnO@ zJc&F(OJ$7YDO?u25fniVt9*lN`y;-oWn27YWKnT*{r5T7at)mCe-;T`UOcQ(JY1^~ z_gEZaSM@0HqE-2K1-wjpT&XYjq|m#k{SYDogwe$jY?rXB=-ksPt&!mE$#nIy)+PgrSKyj$ci8)?!611%gBkZ0dm* z6?kSGfxnE3u(=nq~mH1n;CG z1OA@|ytO4@Yoyv*V}pz*XG<j^+?P9l9jv*sg zJZaY@*2N=j8piC`cJB|ZhIA%>FDMuonRM%jQt8#jyiouBsiUj%(>Lwp*uGS#lIOyv zY_T|-{V4GC-lhfbv5B0R6NnapT~>p$a^SWw3CjbW{Sq!=-y6;;ol@j6I=+7 zic)%~M1va^X+5<5%Y0(winAIGG(twnvv1Qugsq-jUOIUtsnpkMtk@76RXTH)C)iKH zMOBLDH30h% z3M&Z{!qAA9PM2H;fnu-S3HTeoOz=@eFDM&#jvbs=sc$D5UTRxEGAV_o>HjnDq+}|0 z0WZ#wLFkHnV)(IDJUV*qJ>T_GnWg$v-#Iryk*HF(YT-1{CVzg97FQF{c-D-&>oUTS z_y0LXK3yzFjqghUU5=o$M{OCvxW;gojNj6W+--W zw}zDOkM!H!GRiI3cu{P<>{8B$yViF_4*pm?!FF_XO}J*uuX8-R1g#w{#8HpcwJe!A zypT3PSem%6#jW=F=p20O@=;l?Rhd|`N#P-CgErhb@OixGDaQiBdLGxy%jtZvK^CWS zEj3lShKqTO%Fj|~Nq(86t=@y4N`z9&s~`4BzxKWQqVh?(gzK7~v)E11q|+v!@9+OH zvRqI=J>v+In`PsNCw?@as{IHJvYmH&{?~T~&LA0ptp?4=Y4PWgkzAO_P(m~%OZ8km z!#z|<*olR%n#Y;JICCJr|6dH_kZ#76n*(+kf2BOE{>1y?D>wy-Aeg2j`&eEmB3}BQC`S^|z#@Nn$jc&JP#+FQc?q!>`I6Tos+Zm`D%; z{lgJm_|?|=n9o;{)sy;NDYQguEB3u;oUQkNwyY=6)BaaWsQ=;x`lfsM!vh=c6)QDt zSOGEjZ7xoe-Xm#X7Z~99NPy%xieH_0JKi&JU+l)T&kv28QXgnaL31jvt-BRgx3lfo zGsP}E2b2nK>kZ=^*ncTnn;I%)>=nPZU&?a&qrcaVs$eQ#3VwnK!Wx%gk6S(#q$m#0 zB^c`z@T=l#j`DaNAC-Lv`QEV`t~o^fajZE@_NU<~>57a~LR{M)u?eA2Y<@~r6dBr_HGkg8N_>(y5Y4>D0INYVQ=(MgFrdfP?Gd-zJB z#qrw7MI*}R^YiPQA;v_@K!eUI>T{c}YFElzf%KM%7shqI8180MJ_cJf0{{ zo4gHYU*>HS#`D0Pt4~TJ9q$u1%?y>IaD*@ zx8{(#Y-jFUoM51!otaG~$-(3t`**TvLsNt+Z7U-yn7#JMl&xi#j_(^dL0L9aa(eDZ zmrZF|%iyy9h`0{e71$5`t-b?xJQ?54JnomU9}_1H3T+Ba>>|(afwb^r{kPz74hhJ8 zdt??q1@fNZ*tVrzv*^Mps~NJ7yi-A>WK^Z-E&O!te?02izdY(% ze!iosQ#^Wpt@BQX`cAVAcUQ3l8>q%Z+{rG5w7skvG;@#u%;SOiy=Re41a1vXW9@Wx zAeO(h?f(B#?3bLh6YhC3zK1Ij!<`L7{rVAMDAelY$#vx;k5spIYBK@i;+GGy>R-J* zIJi>*eq-Xz_)xW?2==ec^X6)yD_1`hevW=tT)CNT#oj!1Lyschs_G$EKH!?VjR{E6 z8~56)Lumss^<=Bi;T_v+ne!QEcXF)uGSm4MfQmwhJ=w*~^tEP^~aOWW&YnS$qT8qUIh@xR@! z{EM)Y$8}3KrA?Vus%hkijZOzqZl9y@l!Y#Ssl(i)SMD`2RoHIo)UBAO1yhxsgg|yM zMYD3o|K(EaBk|~Ke?S)=+=;T-%b%gNK&`+-EXkAj?xT_%b*bBeJo=Uyg9b`)ZjiV3 zA{*2lE?zKXC@W$NbQmw-3C)Dnyo?CjLWtYP8?nri4Am7VOWmo|){h$jPm{d~S~RLT zNW}x~phf!~?JwpFDN@c>l0t3?tJ=Olyt@ABGCNeLeCvpNrz6rv%*$_bQSCD1(q{&S zzXU5KsF7Ns2py0onc*z?YAjVC*A-DMbQh{wKG+Us@QPQ(3u;YlAIGXfQ6TW@u$19E z3Lpm>q1i4Q=HgB{-Uq6^NaR8-)gi){ViBer^1g)v#xR;_a~Ho*)fIMOl>`x%O>VCJ zO*-?6mPl%5UMZ@3BebF95K=iFSznCQN@+Q1am!H2drL1*k*>IZ6mp3SeGxmsZ?cai zsDbt}UZ&zMmSjF-XWTs$UhsyVf#iPW7GsELcq(Y{0F%IQ1VBOnjw)8}_#yeWG#8aK zB>rQXAje*}K&h5k3YyJ!v|7$nHH3UEQwXRgpz0ubX=4#zpVuLBa3Qo&}GA30(2oEkh_Q_iV`!_lN%JPgpdMx+_ymM?sw%C6=>g7N_#vq z(O8f%abI$3BtR<;>>h6%<2CCxMfbLSE`>nCAx;?xKX$ z&>VjPHa-gu=F|EGLlvURAs#J66VPy9wP$|A+;Uk z|6XM1m#WluGuYd^C!I4b7N7^*urcIaqioV%T|8V#s?BZ~@%h=N9NtqoV{?+cOWvAz zcnKy+It)cGz{Xn4*8pOh4$Z5&F{yY?c|?91<}hU2q#Jmy5Xq>kbANfSMVd& zP?CLj*dD~?Bu8s1uuA{7Vpz$0&C=B|FYypNKN+*`;v8?xE;z>91{gVi^AW!cX1k@-5Vb|unR^68 zXC}I$Bmg^%N#Y8$IRO#APpb}-Kg2&z__4%oU4mt11cH&{&#=ITcn08fMM%=Z8p&<+ z2=x1mxr2!}X?Xp%fj8dz{_Nm;7pPW24<^eMieT?!C#Yx?o+fH$DTmRDW>^hT%Lsm@ za5z!+U7M9eD4jN3kK&-;BMniF2OUn}pGply)S8$pUodo1*1>u)9J#?#Y@q{94^*dw zSD@^panh=td9yTgEgp?zgJ^L6J^*?wnV7+MIS_|*dPHDX{m)jbI@kxAp^B+Bepmi_m z;KvAsoHK^yE#1mjDh&J}I?c5{5C73o>G^e21_Fe%$C2XNj*9$%PZU? zmPmDcHfRXuA4&sb$XnRGKS7iPBI^IMRt6mEPzFLU8$HCVC(&krz!~6rO4{R5a}3j6bW5yiWcn(-f@iJ~2JaT4V&_iPnry`dtFd+Ia9 z!*8<7WS^6e2F~xJyw$-kAYtQ0H)ZTSWgu*c-up|9s^BGdMRDiRJ6WoNBIe~8h+Qbx zqlAtlGw_IxJyJ9~z5LY4UNkd#e~j&LIymq(5(^!;@K1r2;16f_G*Me=UbfuK$_N(C zHVW(&s3tu3JV>5@7};w;0R`7PF{NYBrABIXtskp^SD2Q~=l?g6gvqPuRzS7XI!k{x zFUE7XyO?7me)eu{LUn3^K#DEx!o9~KDV_>uKV+0 zf0G0!8?)jG2R05cY5RaKXKu!2G8z@51M)aUjA6ivCB3fEP-2F;4*e~A{1{|^Ic7gSw(`a@j zQAA0FV16&a35_bNI_doQ+@2;B9;^dp)N(Ayhp?xl&Px14~q6LV~OuUvQV^l zXE}np46VPLp~JFP9-6R}tbpB}m}<8OgjL-=LC*+`0rjY(+!~UcyIcUM*ga&ZT4DWx z4G`Qjr|+9}`3gN^WmG3G$E?-$=qz`+c# z74lo}*fab7KypKAdu)}6RbqW(9)1P+z`it{)q}ome44%XxfELOKdQA+ifc6gx=2;)jyH)qS_Y# zuM{VMTcV6~cWg+nmZFE+E$M^Hc%E&@sXu!+MP%McjMw+H-{0=HLE3ATo%!@DG=7sb zM>)cJVW@Y;g=hk{4NX*~x}ZR?v$MC6O_Pz=M;}Dm%xyzvYJ0gk?#)Y%%SmU{fBMw% zp@Oo{-UoVllK!)+;0$@h9vt3QWK$-XsS_$^{xd2^;tRx=4Bb^oE6f?^$H=}KpDGG_ z35hv9`Gi{n4ZYlzPinl55I=Cjm2Pf7ymbbseIZJtpNj2lLKLBM$3;1V@6B$E-?Y13MQun6%Mu=# zuuQH$U6Ef{>?Yy+OgoDN6Ru$)}!3 zi7OL=cpAe-mXar#jz2*;66^=YKs$V2l*Foa!L9F#?hY%V|Mm z9?o$ksnfeNHPVznoQvy~|h^PxGgt|FY$EB@h9nGIOXpJDk?6Itvk^ z@VEF^9_wudfq$h*LB|kc)=Z*<+EAF{n zlVq@u15Q}a;nK{q=X)y9DXj`6gyFV4>LB-1ukp9mg5PmM9dwX+m|^2Z6X^PwmNOQK zxqKnUUa#?r$lR0Q*U?UrCOKmU+h+8zmas%{!yuMKrI-;ZW@7Q+I>bzQOFmtNM}w|t zj19JVb0pIpr^tVRNS+KSaRY3GAU3_P>PdNT&3<(3MD(S9SNMhR+502sfTctQ3ps`_ zmtiL}0`6#jc>>dkYdAuYm|`1B&9vJQMl#ZmwHCP=n}qJGF1oj8Jac;N$+>;Lj^DI# zZT&NsCo2vT&D8L3CT+RbmzSh&)Z^L~2fK}&jH!}yKLt@l#B01?ZRMP#znB;Km)bGg zG6WE$h$4btRU9cri)GTlCXrumZt+m)*kP>YgS}qZNU~QostkBmS_KS0Dz?L)yb-HlG3?qN)%h@K zQ3RzE4a9^uTML97pS79EN{5tJkUk_e+$~EHV!!poOr0U(xaw4E(-~K87R7x!*wE2x z+NU;pSZ5S>c+|1xTmq-s){LzyAhqI89_irX67oOd(Y6Q#4qoL+h3zyda;*xZS3duR z5D?7ek0t!7&*kPC|MA93R9sA~KYG?eC$*~fNX2DARxm#kEiVgla|0C&gN_HsRRf*W z<}()X1X~f58dcgrI)ULSj{c$SPA}9iP3{||9xwau8e_%%7V2g`N zPlg+%Oq838fX&iH#aJvL6emvOx%5YvffFJM$ztjnU1@9D?@pTZ9f|i8yAb+j(Mo!C zeW>bFTw8ye==5~lm`Axe>)~5Gn{7Xp0_U6+TIdlX@dXJjjP9}AGlv>fk(@OYK%N$O z`RYmI4b98W9`nz<&_|2(ycKjuC2KGj*c>(MbSb~1638Lr3)uR=94>CJeZOn-ln+Un z!4M7d2vZ@hP8jtNI%bk1M$~(`mkSyxdt?g|98))<5MxR4OOs7zm1MjURRy7(%)J2y zm%y`UX=2#ktdK;_J^2Awpq&K9_rc_ls-0Lp{|b`j;GsHHeA6fz8{wJ9p@|~xHA;9$ zh^jDNCMY(5-?_fAZK9dt>QsD^-8^Kx(*Cj?Iwnu5w4#cmX%TA^l9!nQ{d~*HGUmjb zK*~dy9$zqq!?X1E3TgD`-)kLZw}ciBc?q#m_Xv`6J@L9Fzey}yu&HeseDo!oQynUYL4W^E6cwc{J#b7C$*733({|= z0>T$B3stPh+c_;j#fxF{h_K)#BK5)C80(SyH>&?fT}-rN*Jd!gC1Hw^QW-8S$vGMR zm#%rT`cBeY`2{whyVh7K!$}KIwSk0=)p!MvrxJ)gCC29R6}C z1HN#x-t^ZL;)B6Q18#kHjy?O_XhW$szchZ%^O|X`r0Bw_BlHh_B-aKJVs7RH|0_)` zJX@7lcnBMJNcU})3v3EVpoe6fdX z$9gHLDxPqDAcs-06!s!I6ewMpI**P5jrOD=CYU@tYGRy;n#78Lo$>@pibohpN7rjQ!HPV#dwwm25ENTu*ED zq|y=GL0Kp+FRGLKJwtv#o&UN3=(!W$urd37j}j4Jkwts!b!I{;p3!TXpVVQnVWYx{Q03Torx+4#7ri1P*wxB-N*_NmGoqea+lK{mq z{KLZ*UJm^5ykL4>FiYlqFW;3a-B(Ukx*}@ZSuVBW<#)fnjg)&=cf0=qM=eASYq}n) z(eYhOSE8^ik2w{~d@6k1fH2s>;=#ohPF_!tGD{WXhEhfOM=mGR81DeqB^>o0mWqKk zoafq6htuD+J;_XI@gqL5TlC|Jw9R0`3YWN9#aJU-iS#xV5WpllD39=5^8_#F#MWhCVX%8EGGLSAo!lzb=T73*bWgf(9;Rq0Zyj0uRT{ zBUy*^IFqIm{43w!+f@~$rtAemu-A`MV(nk=F>K}D9D0~zU1+N4^C8~wcBaOdr(c$@ z&g>rE8k@5%HG}sKjh-Jpb(s30n>0CyP9{d2R8!^R)}U6T7#r+nZR=+Y;;S6Oy*G0e z)%uV~H}p-U5r>Qg2-k{Wj3VAcaSS;W5gCJ^-lOXG!kup4Bmt{K_FI2M`BolYU9VfO zh7IS%@YTMTXBCBNDN3@vhA8?}T z4X+RJ8&>lkUevKE5MDXXS9Z!qdF5@$U%ITNa-_|m5t)a?XcVbv#xY%k3u0C@vpn8RlSA%x2bFvdF};Bei#THSg!u$4>Mr?{0nmL(ZAN!1pD?MHhg@9nf4 z_A8Y2itsH%Kq5-b`NJUI#s`2Yh_`1R{|cxmijs2QLWHrT+>=LUcc;#4W+BcXrJki> zk&cf*C5rgMmhg0hcHx@yNUV{$2&d{syNWTWdV_@pXUVOuE1P$!j&Vh=6FxTjPS8C|aY+Of8Jbj@gS@Ym9f zcXj=@)dAX}Eqlg?L ze3khLNbW~4uD&1v0vdQ!1YGAIc}Jo{Sn5cs!*gwbeGI-10~*c;aohpIyN)LidV)TT zh>JQzJrCP@|Dp4{Tjz@gRNps}FnBV7xm^9+g^PMK%-7-zSyy#0;Cf>YhD`>l%X z$%T-Z-YAzsQhe^)?^bdwWtfnZV3VX_M;-K zpMSj$vHHFh7k{U3}v&ZfJRuoJTuXm{2$&h2~+CrMaOM=ZM3o}V=stwCn{Mt?9eB@vF7ir_(6 z(RbY=AJ*Op7{R|!c4OliEORH{n{lnr?Rk!0Q=KJN{DDgO9_J@WazC1p@m;X@beFC$ zg2Vurg#M?Jp~7;}&0%B+}N5O3o38zx-kO2y83W zcZIZP1YHbIlm?G$#Ha=xr$Eo+EWx&q4)H7&;JI=WTmYylGL#QUy=E{acinFlP2if! zI|&GvnI_B*z~N`e^IpD;92;~S6>)a3lvSMdkb>$U;i8(hppwN1+*;K#clq2 zCF-GGXQmEGM7>E@=E=q;0Mblemtfxn5_Z zfj$V}t^=_DR~}qDZi+A^@;Zhjs?`ZgOG3ohpVbjL8=U1U_~2P2>wq53o-8ApJ=P$R0#3)o8-O( z2^9HW;ifu-U(b6BN=uxMJ**NeJ(K4K!=ZrMbf%y!7hIV>O13T)7u8}fCA+8&+Dlo} zJ>*=3DzFZLUxj=5^mLr~n9K5p{oU{ju3iyAu{h*3BzTgH#YTpV#_V|EXLI3lH{|k2?Rn*+28O!Qzv_Z~Gr@My-WW{hH!B z!ar#d8_&1*NB?L|JmLfTE&y{_@CgR=1py zu%AnEgBcJcF|g&kJn%2WNX#vL!p!7b{D3WQPWTBFB$NUc4kW-Bx*A)|%fpui2Ihpc zM<*HFDOZ6!9@KXJFThw8*)l4yNy@WTw-~CDQvQHtvMW>4DN_p*Ll6S_*6Zx5gj_JD z(_ziIIC|!Oj0UybyvR=&o8WZ+eWk}KY2m}kM$uw{ICoOoi0_%K$Z(}Pk=aVHto~Fn zH8HaaPJAg=>^fF99W1WG|65?KIWZFcxzDY<*s4ab6*u`6A!w-bidzFSJ0B7j0BH)P z=E(T$oCWxpb}Sj6Tv{VZc}b|DO9Aj{#~}k8F$09uARRd zuzze``{$b9z@`~Hv`&0&aaF0dr4V@6t1NT}GI0`@xF4GU6XSnz0SxAqm{tu8LXrz1 zX^SO`SBDOMtgNrTb1k2s3f58-fF;%Ns<;C!XN=G7Z@?FMT8fi z(^@?HR{B{!$tn7ba;iSPpVc4xBvUeyaZ$+cX{Ei#bUL4}u>yDw1~dr?AG+o8-;m0^ za>}644*)gpT`?oIxzOTmZbHLL3s|BpH%0@~R0|2K`_5n3EtUxRj~7tD1q{zC8a%1g zzG9YSAS`q$PaoB)n16#OS-PYEU3DagC*c{S&pPS^wQfuNw^UvBl}uLXfhKM~i0Gtbuh zX?kB!7;RqG^BEZ33|Kxldg@xz*m#bAH)h7YRxm{U^!41328fJPZNZJUhGT*Th5OpV zKk?n&q_&!KYwv4?Lal(9?ij{Nkh#_NWJ7HMdxFUqWdNAzPY+tgQqeqsP9I{&4HB&u zxPjd21$Lh4tp7UByPiEa;gd{jd6%ru;1gMY7{SQ~*q+j}lTL%wJTH=}Wf_G?9Vb(j z@sb;PT(b^6s!u^;&_Q=VfqUTu(Nj_i$5Bm$jl7F!VM}VWv#7a*JGP(lvknjPj1aRA1=%) zUC*uIX4>)0Dj`-fYMFMZS)~JAb_?fz+p`|-$>G&y8O8*Uiw66R<#@&$|EbcZFL4U zWc7YsmvUS96khXlD&onnRor5G;HLKbKVK-L=dZU@W}3$urVA zmb%C@X2Xz@sukcLWf_%k1 zmrkU}5)ab5j{+~u#UjbjrM(kr;Of1w8=ge9|Dif$==ShKroYuZD=VW)uqF~|_UENeqR-D0QvC@MX=~O8 z=rc0spBuub%C4um!_M~~8Jtf*g#1F_Vrp99V{fBKqmToL;Duvvq3rA3`QAxGz(eTV zsGK$AI`wwzBcv9qkV@e5QT~E5gEhW5&K&;fw13dzOYX3De^>e!=lP$8RvxEvWb|y< z9tk~96k1XgZnMHYeuQg{Z_4*Jowt(oUzqub{Q6!4`S{8AFEEUd9$uc`$4pEfwFbmD z(4pvpyCyT zb@s|`F*>j&eEbBW)nZyij_m*~Mbz>88r+<0o^@$hi?PraGhkojtWke9Ae*RZ`p+(f z7WaAxB$|mmI^ezfS2DZf9kS&NBorsc11_Ba`vE*+_YN$X7!3}$NGEHsOn3Eh$Dv|v zjg>0jk<1w7YN|eOS_!t((V9px1TXu*MY5HW@b100!bBSM4tTF7mOufM0JfBe;8-Ld z_<#oYQK+_xWa}RBl+Yjnnd;BShF@?u(ZyyzYe`=GHaHdA@6>-yhB*_{zs*)_!Zt(3 zvA76E&cg*rc-Ws4ux1hEb!>RGBD?pYk8-O|g(lxf_M(eV>scb-$g+`75lrvf@LC8A zB&M2gAFUN!c#pH64#fP&&Z$ zAztev71iXKbB$YcwFd#uJ(6YO2vS7=0q0`{SYWDh?sr2fx^EwM-uP45StfDMQT&rc zpmwgFOr~I%wX%*4JM&pm$n%K5I}MRK=la%|i!)QBNsf~{1U==<$>Wr$vx_w{1JHbf zyd)!JVshIrY=WCh;XOmXI4Vn-=zCbIw*4V@hLrDx=sFyCqtCWeUGz6IDPLiLU@t+L zMzXj^>&vy7_9%Gba{JO}q@S#^MChkwob+glJ;jw3ouN1BvZ<0FW z!svXEUk$SM>o3;1To3SSllsU&}7t&WdKS1?4gjyHmJL(vrYYp zd%hT~9q{Dm%$LvMWeaznc+NB~U}ly7e*W7q_1tpfUv!YfKU0Ox<-YlC`}TQU%aZ{8 zD8G}7gWCz4f4c|yvNm7n$01K{i$q7ZwSV9D<9F>|)yBCSNHFq!*Uh9u4oHOz=6K6; zH%2yS?uoEj7#lsm@R>kd`051njfb%E6$GiS(>JFlr{5*sTw1Amx70J>IS_V)Q^UP( z$GxS*TK|RG3RGLaa(7`+eCyA}EmQawwPj3s2gNahubXnMzqICjwY}k@@C&^8v;el` zJC1l{ej8#MIu7m9sJAyWuBI^@x$g{U6RlETE3`jJ&L{um)&*|3QQ_cZ5z$>(v=No^D z@_QmhXDm{WZ}S{QMksF_B8YH6I9`E7AR_O@9EXo%;p1nVz@$(|N2n=sdZD{yYkK8t z?_)l;-1?cyPhod-J}+0)T)+D{Z|wxE!kw-u#N6*nU%P>9vN+JIMZv64j^Ka~WzlOd zkSoXVD~eOslu2XPzET_KlXcM{L=q$`+JYVc5iK~Y{ zi389zJMPhMM&92(+j)P@{c7Ntrc={A1^C`WGyar!#a(%3i^^l?%5Ao`}? zHTTR8>aLqACWynWzi^k%HU$9Mra1=n4+QUNM%k5)QBX3qkP-_)4^Cnm7G%jil{cYDd>pW~CJeJhJaZ;h8$ zjv}M4VWVk^TfG;ylzN0D-?I zx=b#}@$dO@6kL`8b?g}K6$^9{)!{#VHFY|Ua(502mOgmlEg-BwKR+p4imk|S$0iwE zGZsH(+ceX9ND7hb^>*QcX*E-`*?P~$Xus620#mMyH01HP=69%O4Tc2sIV;;M#-|?M z{7`7!4Hglg%jpefXi9>#E*sA7RUa8#E?tQzd7fb!RPm{+V&>eRVIJfPCGfTP3)pJo z%^b-vJ4f|BYw5)}a%w*Kc?j|gE(UoKOMO1`R6O8taHk{^+$idmn;s6T z|1*#%&M>Ds?3o)a5=#Rq`-*VSUuk#x(~tmQrnR><3s$}u5t1G;b720=-__19g3o*+ zBkCf4?VJDf%qOaN`~BR}zdwAG@A+UiE+;?wdemlo(r!JcZ>`0?xvXw&UZ?g+*prr$ z@9yh4G5JUm@&<-S96RTFF}XE-dZ1c@OESap$#sE{vjQWwFSJVUF;@GqzE93U9Ds$0 zK7gYPW9;}ZzBTawmzcZ6s<)c{u5n=cgGK&S<+CG8Z%};E7oPqxM@OS)jFa|mDcyTf zy}#gV>GVLP+r1Ulb=cN3tqZ$Nf8(s*cg@c+n{s>?{X^x}lV=A_hSr7-HO#89j4n8=n8G%ml>_V4W)b3e58|gfdbYY% z6UWL%a(a>LLOpk0qan>C)bZf@noGrXZ4>vp57pgk`i)u5qBf;7#^jxRUeTIfwNLE? zGR8Kfsbfw=A3C}z3c~yapZcTTHCRSWOUY+sQzgND~_v`u6$MJs`o0m3CN~2^P|F)l>dV<=neX0LtyKC)V8Om{TGEPoQB7-Y@mI@sLS6qj6I=*7U8m0i9~frj*;r;f>-IQ=YdlD5T}^jbU%&jT zQ4B+k?|u0>t$PfGRDC%s@sDy+KuF9Sgi8-yZ&2&ISm)kUR7}&S|OXFIZ z+Mn#XI7xpNazz@W9xdjcp2u%;m(MK}w=arZ{G{kRoX?1N*42V9QBFlWf0r3x!*&5< z_dc%U=7d>^4Cd9AA2%0*mFB8)j_CNx*IG$xFS{cpmYEu>;w_dG^x2TSY@pIjWz70= zy;lB0)s3ctFG-QRcFtD!Y~NCCIJ$1?D^KTR4T|j&M0Or1BOIsp(|tslnhqbVxE$T# z-lS|{i^PY ziDLlflQ=bpGStr3w0}*T8Swgw{0cU7eoEBmt`%|Y9%hM$BLU|~9AT*K137}e4j&65 z=H@^19mD_I*Zo=GG4^p^C->JUqOQM!q-Z`=qc0!wllYaJ zS`a_yYis7GBJ{U+4vk7SIsVxB-aNPcadQDMZ=E$H#}pFORWD-YxdUB75+3r;UFU2{ z+WSaMN;ZY7@rRVyFJ;h(YI`Dx$~yCBA%avZiE!H&$Me1tzrv{65Vm{``=?yZ{M>M76vV+B#%`km#@;<*t}}J}>)9v>vcV(;^xdNt016eFRSXVqO-p&eF;CrT)$jG%=9+Gk#nM_~=Jyk|@Nn zky?W%gLEQJ^~~qo4{Z(VS8EalHMZlWR1!SD=)FM8Cj6-n|0Vb_ASeD%}QjXVygXfQ( zyWg34Thq!a;`+2lKqar<%v`R^a@2WixcoEYAO<@I%zsmKCL}k`AaV=ag))e|B{;A# zf)fbI-dgF^>0LY*eLM4e@W!tTx8DmMezb?~4QX1S=fFnb{r499e=UspZ=QR+({wP{ z=cmfrHPM57SAm^jxgCm1>$n>4g@WDz5k&O7P_M@NFG92cr{+X`&!5*3UoPk~d^T)< z&VTQZ1IPBLdxDY5TRb}ey#oKh%SLW^VC8PPWw|0jI>^Wqu(Jl=vnU=ON&~^@kSh2> zvTbVxHbD*qDDI7JCogaY3G?FzkDGZEkiuUQV0WC92UoSpBL%%A=@{oQF=)icx4DRs zj$SeMo(qb7Mwaj4KkRaB#Yre7E8%EqUb<0Ws0o}ax?{I)&4RyZ9ddU zumV14ek6^n(?Q{A7kbXpeT0~rUmq|1AD-R>918Y(1D?f}wMCW)X;YR_vSb@ATBuO3 zEqjF!lfAKwK~iKXA=wqmzGbq`AXx?@LfK}lW1q3kVDLSD|L^;*%hmhV>*{sQ^E~I= z=RWtjk0@Q4BqvZ9lj{_QcJ&PmyndqfF%*M%K>@857C^s3rT;UA5-ar3-WoNyy30XiyvAJsP@#Lh#IQ5Yq4MaMP2g@9d<3%#_}c4o61k7fjIGrIDks zWXr0HKyao41{G?*^pXCQK(0k)A@sEOJEAo&Y`^vi@Yl((g|;6Gf2ep+bf&DM;Y5qo zAeI0T_t@{bMS{-gwOIDQrI4B*&A;|XmvGVt^Eq{+CJ=Yqx?8c{7udMUusA(;x-r5h z-J>n=j`+eRd_VHYG4I}A%WT7@M{3uJ*I~{iS!Ws|9@yxRc{5Pc+_R6m2Phc^xdEQR z^=O{Xc!729*VU(sTn{jF+8;#4O|`+8zdlAf3Fi3ETPs^EE)A(&UmCe|YiU%IU~7#C*14BW{kxlBctJn)PJc*i4LRk=v=pt#V{%rglM$>5uXTwe$R>?e z5mpTrYu}8dV*{dQ=5~|4U!K--otqNP_@luNKpD=Q% zZ{4n3OWmmK;`OivWQ}d_(6aU@$h2C zs9-molFAPuX-nbNcV45dExi{+tEOAaJ$4$RJtlU?`$-x&JQr&{&OeapFV6HYa|+R{ z3n;5_`*_ARv5ReY`qsAYYW74(7)Ox9oNDeNrUjG*#VA4XqAp(;UNHPQkjZXdkp%J* zqpzDM4T;qt7O_n)K&mR@!GPS~#w>zK_!MaG1jTzD|_-bGD%=s#bV)z+! zjbKe#2YJum1frfc!Nv(`etY~NW~>Bd1RpiJt#l5U-2jW7jw zs^G@#MX{OW@;{a%h6t}rs^)hKMVmA$H2{s}T@yMkQFY^kQB!7|0WOgG@BGZA7U`io z3>A&uIsgXcd~FXE4bcVtaex1U7WZ+l65sWAl^%UYwzR*!3TqOGtF(ns?U~t2G@sC5 zfG8q^gF|cQiSMYcq)UXFKTrv*(Z^9yN|nV0;&W{&Y9P(RuqhS-{@b^mUUsI#C!Xb+O`6z zo*|NYe0Zci4FA4hC=K71bY{0V=<;h7E*6n7m5wD8?~Wbb+@htNqu`Krmi61Eu;)-eZZth;}4WMFRe;j9HXGZ@9l221txP6;bJ!L!Uv*a zZw|bL?f!xV9SO#t>&dZGr>p7@%BRU57m|nU3f-n|>IVb(rQ%rSl|FJx%b^gq+YbqH z;RAIO06l%dWS$5ABP+Z3UkJMRusvMw&sSES6sgb`xYoJP zmizy<3^`3_$4e>`WneK;)O55cX;3aEEr>6Cr}?wKQ{;yJ>DI zF#6s1XHD+Jw(v1;B=b0m&d>M7ZLeaTJxJP{`zH)Rn+ zjBq^*qxj}<;p@zs1i}DOjnHCU;?R!T`FFM7b-R~FbCuuu6{IFIKu+G}=YuS7dskvd zrH~vOL0gq>d$pz*^v0FV_1T+K?MJHD%lYU7)^3{Jx^70SMNAikCQ-iVS)%#FPK2&{ zU&2D^VVc?Hduh&}PLVEETWBYCC2T}eZ?}Z;WcP-g?y(=eIIE5`swSC3ndp5C!$DC! z4iZo!Dvt*bfMzYEJmSS?+dO;z{xUf>j1g?yOvh5F56+7i{C0wnr~#%M5MMjo_i593 zphnF?+!Gz^j(k)i7hNp}`XIpy#7|26%C-nq@%^!;fSE|i?u0WDgs<)gZ$wG|mTb2B zBT}aDK~8QEiu&I2c;g>35xMF}FV{fN$d1#hZhvCOxAC+54BRP>pA8WAen0*-cX4gD z>dxsI3$8VJ*p?9Kok~Q#eQ#%#p@Dq5oWU`AloIv!Y(iCdf3#NvBLZG8ufVLtKgsb| zcmM6`tGYPvmZLZzx$s12s#-qg5h;1D&ON5w`v{MJ>XKlF>BY{Po;xA+>&Z57bfS5j zrWkrdkc4bl#hRvoZV7n%f!5Z^HCEQ?xNFlYiwS61Mk~wM-@ak4uIzcIw)qbqyxc=y z9id{Rp(I_y7>eNtG8&_%Q623HAb61n$h~ygwrbZPZv0BhcD4xXH_}ESk;T`#H>n55 zr0!a+bSS-gk zUs3ycAlUo{G|9eG=p*)icEHy>k(#JuraI(PomBy~SIAHJW|Fg@fe%za$_i|Js_Y8b zHG>8!ncl{k-<@_2^Xt1h(w-w+HlrpvV^Pv=`OmQU`Cp&5XHMl_IUx7BB`KU(Mk!F{M>W&1H3-igHb8XbQ|HL+cgvl5B(U^akMS|Z0Y|aHR+cnn&nik zhG-bw+!kM`o4U6?TGuBx=Uw*T<4mAOe6V%fB^qO&;TX%+88s-lofcUe#Idr=-r6hw zX>UW>(Ld)NkPm4Hzc}fDil5cTwZF9=dg9RJlhpUa%0YE0_A=48J>_VPf*ezng{E%@ zspdWbgSg=M8_7i>OmYiwI(! z1!p@v`BnQhu~)>;E;flRrZMrkpU$)^5p(sDIeh1EPtv?BD-6}=|DfvO_$ALzSiEtM zix5TCvv4h`bToAf5TSF8s0e@_FGbmYvxfDE4EOXq|IK=E|5&#pXKh$>sj#X}G<$2d zJV28XwWq!lVo%0`-?oL>8h(dLw`2m}p_Ge2m<9MQ!W8dM=Lto8Oc?~?5`2xXBvPye z{Au$WnBu)`Gcb4e_K2>XnK)YbzOE(A$y)Gv-`k12qGUFf=o+RSy@RRtEv{EQ> zGR8KO)m?oELRPGjjHLSGcwx*fcmM)?2{z!!a2rmgk(w zb>~LOJH@27d?j4#WSE$Jd)D2H-pdY2l}{q?49rPjXbBA{M;_L2@n*T)-vDdO(@ME_@*7LrZ^j!da83#N1@? zVyAjjzL9&XdhAN??Fhj!#4q!;H)gd5f^7^4#fg0QSuFXIFy?_3^X|7pE7$@}N`eXu zWZVGbmJkA{EZX(+kal4%MP_cLPZ^1UFI z4UQkg<_qzA!lfZ*`ci(-7w-CD*MxL!|ELM>81bHYBYnY5{86VYRWs@EC1*iTVcTh{ zcQ=)7?d}GQl_Rrd$ppvq{fa=K-{xkTQa>ax-)c=cJ_{8r5U3wq|4MY_&cr3ObMq6= zsiqdws5pQ>62b@SrtfU3)IaKq?{W3?b*0JrE(934l{fg7aMkBS>SZC?b(ID=znsqa3vF;es3T!cle-I(@q1MozgMr2Qm1FxO?QoOF1szrqi4`T z44d>g(-IL$Ro}w5>9~7mIxG-JsHoW6JSvt$&XE+?~6* zXPGHZ@m;9Hw=OgG&L{58@^9XT2B~j)c5Ny#HU1d6jgqb0hI(%<{ajs7bKU7oAcd>& zC*JI@Q-~=Rl{F|#ks%d)JnwqUv9+A&pdWr3Anh#O9(2R~S#>;=ZgE0uy5K`vxv74! zIhK5ffO^G_chY6neW5EcR~zKyAm8dKl}hD@2?#xi4G+Iko_5YF<5ZEs{nG@~`ci;T ziab1S_?aFlc+>imf~B~#G9i=W4|_Az>>O6XSz&kl!@0xYuuLK*6x{@0tqbW|6rQiU zm}YfKb89a}tftO+G9U;r4!EOZs?8zf{|KnT8yNy%yqwu-#<^DL{TtVAnN%{La#Y9W zvsW6v!?HGOqEVNBE5U5WLc1@6_9kA3JO{$(ppnDHEUNC&+<=`9b|p9RPA#~}i8EPS zui#c4{nakfuz(h5eVjpiu>tZ-Vrt-Dxu5IO;??oJDdmjO&MuXEE@ioYx3_2t%73@p zB@q`)eONs<7%7{zYc%pvzoouQ!L=u_OJ7B0?bkYtFFN!)i)#2sy-hCPXnaY&Ab^of zAfOD2=#jqm27Bq}&UrFV2xHD7nU3Za>+)3_0s@dAUm{{TrI$)JKAV={5>pu`Cg77` zv9T_bLZd$04A7MrRcuV!D%{Ay^k%y@$vNS@K#;68R7Y4!TM5a5GfmC?9Laf{g}%(DOOOIFNV47s?C(~Qu2kxVIEGAeAl8t=kR;_ zv7GSC>1&{IT>lAbbW%pnr}a7*(s>EynIOD88AOrS!HTur&&^!HEAzdwZ)(%p+}3Eb z0{IR`%ikUjxAlBIUUCZ384W9{`q_|RkGRt>&YV3xk)A#dz*d&PU4X#>^2(%JxF{ft z6EkVr{@GseEidB316x9f=iRuDt2Vu-(2x4q(7ZEB78(OFv79RWaoZ{a@BAzI2w7Fd z|1ReC97XaRoN0mM5S z7<0mC;$Feu?fQT*6j|AH@K0fK_K`YLTSnXblb?TXh+cNBs#OULtJVJeEqcsXlY=!X z(@3-RU?wf59io_SoLG|hDj4{Qy=)qWe;~P&pR&1ze9{)pn4Bgf&n2e%-%>!X|F8_K z{caibb7fhTwd?Dg6$I~P!he|- z171AIX-$9J+BC}x@8WQmXOf?F`T9NU6e(w4%H-1_=a^2`%ZGMu{Lt{NxBR#=^5uc{ zNI&{ZT~+L___Jv$kqeD4N$lxv)IXk#`n})YD)d$H z^c@6xRbUV4G`w2M;wH7o-qSiaAnqcoD!z0|J+(fN?JyRIizSYh)6}G3L)NiMJDJCut#A**ZqPpJ-NJE9Mg+yjl`y3v4LU; zhJ~;nQKR$x>(Tu;1I7a@4cUNHYQ`AMwF9Y?dPIX>{G$sp+|>?8!Yy6zYwCVw zv)DBCi5B>_=7PnaBcyZUzbUYC0K};O{Y=Y~g6p?@c@=RZ)AZyYS7)nf)njY3Y@eIP z!=~HAND9gDwayQYCU*e&nfbatN=H(tnc;REP`svVb*FH44FSaZGzSllov~<-LbrL% zWnQ6vgO8qh81(KHEN!&$B`sWXcqW8)ep85GnzFR>6NJ2GJca~tMx2)Cl>|h4#swaG z`d{6PPgv5T>UQo2Sg&j#bfV)p3dlEXpsOWU2u%CWV4H0 zO+1MI<@q2zci^}yLRDfx8n-lm+IInSW$E8<@J`gtBnB@H13J)5>0X+(^6iJJcjFwz z9B*&iuYQ?$ABH6#CKO+(CYdq|FAZt=lQ>uog^5%L7)HsGd6yIPMd|)%XKp4`|MsI9 zJ#x_>dpQ2Jee8hu|;5`d6;|djOOjezmZaHYD zIgt$hFPxPgnt`(%ij;)YyCZ>zl}vS~#R;omZ7qXuy^W`*YqK}>r^VK06Ds?4$i1>> ziE;U7TPIvv+E1E6=5-O=Gef@(mWJ1}{tcp6cO@Lg0!H5PJA`;lwdJO|rcxz56b4r| ztRQ4p2Ytr_ObjP|XUwtRi>A?a*?;=6P`%8Kb-L`%&CWRJXR0Fyep!Mw-SU#`!GYKM zO~Jh(pe$S|j`Tz>%#x1*&y#f?1MFzL5{DQ4OiSXZA!72wTgKW~)oCRLh$wXiY;go<}h*p<}9i zGY^>1d%%b-LM+_0&_y|*P4rv^lNaki4Yg3_CS?9HN;HO$*+amb=M4fFJ0F%N?7NbQ zwb&ZY#?Am_03kfzKb510!jFYnXQ{EW{`YQ(BH<5Z4jz~*D`0zFCHglK zg-C4u4`cSozSoUCk)a5p8h0oxEhMYk`4u$qQ!x3zyJO+|PX=Iv=VPj#THQGQ84LJY z;rk^|D1MU|T+cCE`}|xtt~CYsg^Kv@n!>(zmvbveusiobOyd_+a%jDV4?NKSXyC}y zt81y9e^Y`4i-d5NIm@=JGb~qbIXgJ~f*HvdV5cej*LWut%dO#UGFd zrr8K6caJ~SOl?z+g7r#GNVgUJntnaU7Mlm!;agSk8Om_XAxgt2(WJRZf5 zZ~TLhW|eK-;@k_8&DW!A2r%oW8fm#NtgW}E1H1mvCVOA(?&AR<1JGC=2H^~D5#HXE ze53X8{LQvFmtVx*{4@H=N0q)T1+ z7EhICB=#DDzh2Fqsrv?uNhl`5ff31Ffz*wo?ZOcXu+MBW*`d+|USwaeAU+G?1 zVXl2G&FPc#8S$9nzJaDm`#f0GU|Knmy~#=ty87Y~*c8MS>Wf_YJ5VNzAP= zRaJ3}!<=JNaf1Nf>Z0$Inx%3fM5Ce~QO1W3c2i1d`>yI07l) zODHEkPKb4Ho8sG_v}F%P!VB(Da&Zs*YJA!#;X{1EJVKrVfbn7!;?Sa{ZJ;EGIgOF}*GG=oaTk zgj6^Ps0W8YIwBIe@lM_xny@m>xtkFJ`(ds`Oi+{#S6Bpl=p+b|Oky8=!s0(QZ* zMhW5=P!;Zzp@jxb7;|1|ws`oLA*r z*g8)Spb!Ny{XbD1&xC^{SRI!!^8h&2K0h+DG}~a1iz#2z1W!wSJvo#!eou6vyO>W0wAq1dxt%3@7j>3-aj_ ztoH%0YoH07NXgx~;}|51exqvADs^iFf!EG|fTUXDlli@yS8HO1zi*$e^4-=!KPSqr za79DQM?5>PJJor7(yV!uP=Wf$$&~+~5P6*GZ3AI;aVS z3yFB>a><)4g^ zwOby{(+AABBO3FPE*Xze$5EdeQ5xNj4FZw(Qq^bHG8rk}I^<)s7f|tD>Eu&Z!V0Pu zf7Ip8<&GyPK(?l#f#qMkd%en27u%GNVCyfK(d#+Z>drGzV$zI-1zJ{dOlbYdhB#$zeJ29#h?=J$FbQPqQW63#P(t4m0c2MVaLwdC-%W2*rx)AeDk~ zT8e4PR#*e-RT9fp-jbqwHmE!i9wfw?E*^C$8^ejnf2ZI&Qn&t5H__=-$0kzpRy={U zEr%RgGRLNCtZQUZH{%<@UnU!zuDa}r^RK4M-q|hqW^)J=kL+oXlC_=7&3Vd2O86V2JJrGFU`uK5#~=(IAx4KS11x| zOin`ZCA_?K&cW9Tr*)n+*!4JvUn>*`hXlTYjK+bR7-!~jN`fg=r$hJ+=r%X%BH+*7FckXwGawJ<@#?4wT;%vd-tRT!ac(Ko2tk?5ERIOV%a9a$#1$3U)^ zjd2UGk{Hw!pAkFHSP+4%)v>K}In>v$`7Ewr$-cN`YL2}ROGzCmTee2mWr z3;vDRp=C?FzbUdRXd47sV*bkCS4Jy8tKC;R=Fas9wdiSxD;e-e%6;I5x|+AxeGFQte<8}W%lta@i~t}e1N%y$0KLy|btG6`M5;?~vN&)}P@-n3kFouJD?ZG7mx_>atnmVq&} ze==*l(0|I5D)BD=o|gQ;@!rL>k;%%Py5-s+^QEB+wV0AGu{H%)a=Ti=`9qg}f?kV#WXI1e#YGD(-84&$D-r|p zY01_~kt5rc0xAz;G&bs`a1t}@Yu?H{k5k_Y{`N&33QUIu;&;9We+rS;XYz@c>u^L_ zJ*Aj_+(OgKb1@P4Z&Ca#nOzex*3lyRY#PncW>R+*#rWg71C%wnnBB#+<{0ni3M*N3 z&q{y4BS^u4z!ZY+arsgf;q_2PqsR)FEDh z#$FSen-j&5StIr@>aFFGyA+|#O%2~<>dH|^kd>`ER(HCz5bbpuoUNfl)(saf+?OCL za?q1cxth$PG2D1`kCP|`$40lPu=JB-V@<;`t8&cF^Nq!*H2TSsJhvCeZ|*$)4~GA0 z)vfl2Tde?kFdyL981@eK{X9yMm*aV1{(vHYOScBD>Sf-p*ah8p=BAVDXTet^eh5(^V&YKw5?Cr_+U{v3=}| z;5xQ_7Q5MY&EgetXDGZ~%WQ45ih8=rHAqs4y=vF&X4Ui)F}c`uMXK&jV|YC($mbjM zVH#ZwD89eCF~BTW72T6gy|W`2bTUU>7!csImxGGuo2@OGXbbH~VZU>A)znL0W|Zi% zNzBVsW)f-DGdFNl#URXPOdRQ(oV)Xmf7Eevwt}RAFXqL7|KMp%0{*pidASY zJK@y66BXAh-QfLx?4iH*=BX6J2{6*oZOS9%@cMeOna3LWId3Jk(nU51^#S>6Dji`J${+|MCx+u|lwO^0Kp5IwfEGCp|l_00|fO{mT z->q5Psk|q3qcGX_%(0kf66XZm#Lj?SH>Z3TXJv7;pf0%(?+XEoZycxEdkxx(yO7fO z7xUViv;Mwn)HP^eXmIJ3$HMkJ_yIX4xWyoX*5o#j-!~>0pyn8P-eCq|>7MZhoS3f5 zLCrjMf)uJNqhgGz(Na7aIy@rl-?iFA`m}MGUXDXoOHwIA)1n73_URL*qL{G4G@~;B zuNJdm6n1%8dx|NTuFc$$)@5%awXJ1_0K9OGZ_5f0R6S zO8GrjGu^t-n40bO9Ssg*6S#j8o>*a!SWA^@RC5V!2OnE>^0=T-^ zh??ey<1yUGhzp2X{_MAnviV$;_x*FqI>5^HnyRhBUG$hCAd~x_xj1Q24!+J83Dd=2A_#g$V6Oh8qTcemTZW0=gt3FKsx)Dvprhsl+j;~un&9H)dCk*))mjCL za{mk|5NxqckpaFrU;@RWQ;R2RC-_p-MB%4p-M9lk@~B&nf@j!3sQgCvzdaVtKFw1O z1<_nmC@m0>601is`Cn?1Hk9=oO{^Nn93|{D(yZF zFzXV+cgg>Xo7P`_H}xLlB8^e&BJ~|!p_Z7oY?PK1(x0KQxg4%al#M%P-}*9J95lOU zDY-Ai72CtoK}pd_y0c?AW{GT0XGf;8E(`m)R|fdeK_&`&lkT?uQ+j0AEc_y~s#lwO z@_2z$I_7l^YLH4GRh1AAr*1$or-gl%DOBsf*)K3Q(R8Ks31P^73Y26mkX9o3fHS4% zm?PQx_Gt={A7it*YLK#+mTox@&hsY5d)IDNSZvD@Kl|LYDlka0%0I?4jeO0*M!BUW zZoY-6A-At&Zgs8ZQlb>4Rgds3mK30-=5ZHf*$`K0hgS|KEhQLKwj=Mq6ot6D2 z%jmO6$4OzQb)i@xK~Af*Wp)esi}d6%f`M>6q7%k)@TU)*B6aqkWPR9O8Y(4q4`wDZVy5NJfuPa;(p#bkW#8vM6|wLMnHmK-9feYu0J zM;+5+iK79nDM!}h1l;0Hb5*7|0ah_U5kqa-d<;56(s5JeFN)H6kQv1gxR?jxV5?E{`h+pJ46I zB9QMOQ@oY4_tO4--7>d_hl08XSv73?=Fv_;8Bl((Zr5r`oZYPo2qy~$}B!{ zs&Rf*;qvKmbhd(8PPP1UgFuVTWtNX9)97V(+f`GQvGu;FV0jazP?vRe3Ux|KQAP^E ze()SO4>+F1M-6t1IpKXjGdX71**kRKoK%#<%DV{$x}OK$qQJ}xc&SF$|L7AwC_26J z8k|YD{*jDCsGu_cH4Tcq-v0N&en*EW%0)EDxUcp3|CZA0HYtzb5$3poh_0DFNC{{E z5=_1WuyE;LkZ;}IYjY#zbo}MnSVDzA8@;N$%&YIHE6XMD6NPWp#FuAx&WSnM# z+>4O9>5Ez&$HE^Thb)hS&gEnndpDSoi)AkXOC5k!H7MjluNWQNnxN=ER688_kyxEK zZa4wjW*{*Ex8|9i58S}t7Swt=Yd4L|&VdnWwO^keh)3~0`yPS#a0hE*Cho9lUw>8z z{b`&;Kml?^jNT+&4#96?$*?f8v)nBxK0C@RLm~cN6cB?&Y_2TinfLg0UPAkgfPUG8 zS^3w%=i7=^r~#=emtu`Yjh?$j$k8iB+I&7Hi=I18kHD|$K zs+SXl^*rDxC48bQm^>}ba#;KTvZ!8(5TEO=Ojp)*NP;QcX`B1IU*Kl)eTi7Az*peZ znRz^R!1DQ5E3BFq_7(&n@`q;PzUFMhx(7-CD9Aic0IM4SfDqaGEcL&E*vagulfT2O zH1pUG%7SG%pAq*UR%TeM!NULuN-OG#zlzUNymKV%G1!?gcbYSr*A*OCtDZ-u$?KgY zwsocd2~f>zy1S%V(=g1cAZ9+B(fGZ`^AH91<#zQWyTK~EZ%Kv~s85k$^LNk=iy&$> zv7w)>K1IKn=R(`I7*;tlAXT1wkzExuGvTU@$#Rb=^VAKkXI-INZJfBa53d4G)5RVh zVQzMT*hCVb%MMM?TKx&L?ktC~ypqpSawSK#TT;lT{K&l)wQio8AEs+}YWh|mh1ysj z!6R5i-wrf}yfsohxt$KUR)xLsRR5^~s^q(T1LWh~#)*U`t;y&e5>d;4EBW!nA@P$E zticy_i&98SJP-afRx(-@zJCX6J6GNdV0PR)wqhK)fjhoYU;gXwt(|$6`9{D!Ogzj7 zYkd{SX8-q3sr!OL<1>*D6@fVmUM8MmSR>;8bX;+*1=v_;C^!?qkRkBUk#`jgwsSxD zKj-prpyVHP4!PFJ{>T{jaS-ZZG!7uZL1AT{z}s0&{lmb;N{!3qP}mc*PPVtzPnXBB zF45qFXJm|+8Nx9COa5d_f*dZbipvAW=jx~jqjo<1L0>aApDrO703 zpwy09-M+|~7MC33)iRDdDb!FnwXzyR%tj%lkb$&&o4;?W z#y6ro^q5ZCYhew=C4Iejwx2PVUDMXG6zXH#KUUa2riWS8u5NSFJrN6sVfZouH=K5R z<}QUX^pWnl>^N~J)4mCDewRC_p0!ci{yR4wOwMkrdv0TxJC$5`(%w97|A<&Sh$(-3 z)u83q87ghmbvI-pPsxDjeReSUF@;~8hp{kwR$u`PfT6@r#GsCyG$>AgJ;6!0m}(Sg zF;*3~VQ0!$P{JRt*o!A~V9K%D;X(y&v}ZiW~MSh_v)AOI2F*Up*ujL3@`T@FJhZioxA@NoIA7skRbGm+_=vn`Ku0 zxQYSwvv^93JA~!%LfHFFNv9H^d9QzDvb(O!rA+vq|7T*rfDik|3Op~?W*xq>bGV^c z&~LZ4SP3Ty!;^M~R40i+JDHxriKL>7L78Kgl&KS*+WFcH@BH%J)30~!U&HZZD@+Fh z3JyY2?g$9LrB16tu- zP?)pwAkfF`yX{$J?^E%0>g>|GnZi1W6}8X58god4a;MJ=e8Q||ovdF#f+(eM8*827 z0nNH`WhMr$s3#b<>+vho#8avZ&aVtn2$F-L<6%p{Zwwp?SU;xdtSh$#u(OZgJ0EeM zzSmblf-g*14l}MQ_$qrke2bg@VD0qKTpIajNVK`nod+eG@C0Y8LvGvX^3Ma#UcDCg561$oJQJxC z!#=G0<}=u1>f)yM2V4DRD(qTe5%#O-sWcUL!qo9@u# z($$E-`4#`TwNTu-0(f|$Fx8yiG+sV1u59+U=z|+KehO>TEA51LE~>CndXQ$0)J+?{ zWGykIt|u{g!E%YL^;hmW3du|v4yZ`B3@WR$^xhENTo;RJM~qe(U{=OlS3(Vn_1W=i zrWvv%IxC=PH`cz(wBa6OWz>5i&CXgt4zjMuX z@^3Ozxq`_-dojgHJhcIf2FN%XYlC}p?5t|50ok``0Xr~ETEID&jO~Kk{ zjFG2V&rTmwyE0e+XZ1rcvQ*(Q+_SK?4WLW<&`6s?gR&cduA>MiuBo zU#1RG7%Bv+KzBY^e(?XDgK9rlPiX}UR*$9^}ZZ7R$ z$!-KxI2@nL+HX%NSJN%Z9;U5=)L=9=;Jd^xjPZX$SolGg4YXRhIX10ZVm!}b@%>o& zimNDm;h#Hi8Ke$a1j$8T5i0q=RPmH^2Kd250bJzG_wzJ>z7@v85x_?nVzp1D!3KM7 zoDli*=Bl8-Q#B#@sp=DLN)Fh|atIH--_p1U!IdezD<5p#p4P{G=u~^rDzk>6qi*<#`|06gxhMnZEa=XkoJtX(PQ4 zwK^|tzZY;*BKeMt77V4J)JM(TG=_NqSFuD^x+O7sfa%K4Qh{RTq4@7u@_A0oh%0mK zuYUsp6$!_qHNGIDd!e2i6mR{p78}GTp3zHU&vPytX&AN!+ki1jODq?Kz4<~b=-NW8 z&BR~sV(T=6xw@O9vbtT8el44Rt973_8hxDu=R5`b9sZM*$u(@uodGroWg;`=Bf(xl zT`33t=C@#)L1eIx>-DwZYsGUqhrkX!Y|A*9Y-~b}X573k@hxmve#3W#T8#&N>FcPx19sIhA@5q`!}R`seU_>rc)b zv!BuL!hPSya{2)I-o|>|kie`8X~|=!jlWBUq$>H&rq;i>>MM~Eu~fHPo;}AQEf!0aBy3-v@F98`qwi@?Vbv zMp^ct{l4}7y8Bbp$ESo!Zh-}+AR_(G8*LF%q4`;=<9xK9P_uOc)ami1W4*_y0eTBAbt zkY*iEO~Lz8Y`U*q;_~Ww0?LVQLb^_mEa@v}iQ^~fL%L((yevyrb4Yq5Qo!_#WRIXl z7^|c_f*rYo*(A_td#m~@n?c(N!DQ9F=SjioyX-C5wDT+pIO`!X>MR6*Qh~Jr!_+|V zuAr(&RS^rITevl#+Wa^%Jh)pnNY?Zu94|epRyJ2^^4PTQWH2<~Sh%gB0$Am^U=^Ul zwz0w{ts|@&akbb%QHwWEFoM^uj~n=|x^G@R1ghE%`SMDYZ`fX2NLK_Zx*bwE{55dcMUL6#7PX^lESdDdA|=)r(}b6 zO5u1?5dgwp=ryJaK}YBs`Sf`<=K9alWoe3P2?U?Z$I8*G@h<<;>r6mR9p=PD-R)@! z1%n3|o=ScEriMMX5w&Cu!^2PW^>e+StE}RrV-n>EG%G1mx&Rhz4=nh=Lja?1eQeSI z;)Ch77oboB_x&*BU1&G|Uwz2+h^rbI3U?cBO@1YQmKGEp%{xRF7E(+U5QJ9!fTG=r z$6r6>6$dS{+j+2qi|yF`ZRYmkuk4K$P9Mn77b6HON9$_n6i5&cM(zTKbT%-q8JmBv zxj8NB>Nc6v7%;i-cc!c8O|aGGFm0xCL1Ty@-37)nk$=D8GJSh!U1=&Q>cQljLXd-x zgB)CA^Uj~a7pqbFqi*V{K-JijvsK3;t*uydYu9l29f0_f7N6Vf5Kn_bI<4=g!DD*U z0DD96LPXkz3W>l|b3Hg61C)%QmE|}?Wj1TI(5}y1#*_jfFwmFWRA<{)C+M>wqfW$3 zvCw<2Ny9Yi2au1K@bynA3vIRdzUgE59obg<*(4RIda@%09j1_c*JK!x$( z?Oi6(aQxkso~%M$X6MjJxO**sJ9_&`7FTd-*zX~y?6{XgKAy*ComK;`cUjZV^ zzMw271@nyu8Wfi4#A?&oV)L*l?lh4e^26`7S^`u8*PkfyoA~Yg3~;J5$lu zNJROTYT|mXdaE%t?VU~C`fC=e&VN71JQ8XqvnCLo(p9?@;pcXV9h8B$UCWU$Bux`9 zLYGaUQpeiAD3-_O{5}8Xe;@3&53o9T{8_=1xwEZGPuYEkb_=4F=TDt|Q6vn|O9mTe z8-gDZVyVFP6Q?rImwfOODzFlY5{04oL_U_!Ej&9AicCY0wjHvFFZQFFJQ()~f$LFH zfO#h9RRKbwWB~TF9o*yz$lJqVb|?7pYJFmdUEsP{P?T92iU-HTM&D1v!Lr4rve%#` zp|*DOccM&m6-(VAPeL#dn3|U)N<3vI4ITx~zgH6dv8fydQ=%=I$8CkqhE&U( zV{tr!f(CAost4$ga)@EH_CpAk+@1}DfSL#BVkcu3#Lo#VfYyWf%voP?%sn^lQNYxV zfVRWl2Tu%{)3+@~yXtoR_E7%he9%@{z$Oa$flv7**;bOZ)~FCn@0IoAAQ&K<5X&Y8 zVwmc_@?%uyq5(hBGtEYX6+qqW<75dwHx40_S@fEl3PHpW@&y9T@G@)AEyd&|Iq!5& zQ>aZSV0QRfTk^vvcA)s+RVW_49WuuGtk$p9At zRWck{Qap_L5;N?T1vrD8RLjj@aUTCP1lkRdwGS}NS-zFyT6h`>8Hd;*GA^^g&S83_ zUt0RE1~+~=o9?NwPmmbh#}+FNJm!6ddbF!PPHKpsr4-Wa2#5lBaHN9jYrPxZm)H5e<+#Y~oj7@~xd z72xOG`3Lycnx8gKzLVnEns zdR&vv7+8pHg_uUQzxz5RpbJ5`>FlrH+Qoum63k#!7=Qk7Yi*pXK(O1ySSA7XTR~E$ zx;5XPVC(e+=JZ|RjNp#@LiT~@JUrNZhtQIzJTJ+Ic`!sMK4+>2Y>L7O(JhcS2cM;I zFz^0^`CJkzYbwn!X4c8!jxWlqrY*<~q`AtP)^7e_t&D6>y^nEAlw?i&ZEnyIs#Hec zm<`@SlD-=FD&13;#33qr2$S?|-E!7#{l7Kc;W<%;C+q5%FS9W?Jy7f(FXmw-u(~-x zulXf_2bD_Nedc#EggN%ZgMzd4D>QSWFklqM;pnDBVH6O%8;;>jIe=tt+WyDR;lJDw zO&!sX3(j}?g6qk-wxGt=q{neR>Y8G~FfQpn#H9VItr@}kJGOQIdj9{|_@xdogRaBY z4##p)rb4dU7M{5^sZ%jQ&=<2!ykv`z1B+>&>WhJiz_a>UKZxo8A_Hxmj)fsGF987{ zQA<#nQUI1untQW1Ulk8=pI}Cc#R{E<)#w404)mKv%ND|rxtIWA5GK-!X*c$-rc@lW z*iTAOF)Puo^Ul(I#a<9h-o0Y>xBex&8=}0sZrV~zE2VzxvvnMd$^z%7j(Z@wE@GwBs=vrw4! z9VOL)nJySs1crX-13) z)s!_QBwGy1SE1}NmQ+NNN~qT$*-3>~L`q4PLS=aeiSm^w$x<_8Nt+BQZ+X*y&-b7I zKc~~_RHx2)-e$>jiG7(8!L;eqVf=wAhSZg7#D{@-&tE*&+@Vv9LMR||{DuhS! z97Mhyw$`ZHYri(%oql>jSZ=*sAuUR<*^2gFhNTL=Y|#vr&TY5xU6UNVtr zTSF|dBVKUjcd=0`8Yrf^?bbCV|9^UfCOqSf&Q9T#dL>tPfFu;PbEDL zeRf+%w$!n0s0=-?2dcK+#;n0G0={9#xtmpoPKHh}qW5=~ALcH^AEr_3>I33q+dgHn zSqFao7|ISHo~XRYJ~34vn0--YKJPpiEI`43eRAx>bc@jOw^j`|o%!6>b{ zZ=E^rWCZQ0)?z{Mg+cK!-pWXy+(_zzszoM9`JJzHntAsU4V3~RQ z>b4)@8xJLMT|PbRP5AGcWn$7KoHBY`)$lLDcb-t%kK;dmmx-XaW?qBht^W%f=1-?MRu6Xqss2s+rdem7hhX9Nr2W{0+OVeO z!r0z>>I+W_^>X$9ewTgz=D{w2x7|-$R62pewPo~#;Jd}M<>JWFE2H-OeHJfT%sRRU zK0jnkn<8>|KVMYApIJWsQ)Tp{!HE~Ok%H^#aw=w;thKKB=kkr3*xf_UGbi6fQv z7hytmOZW7vZo&8PA4hokeI2G(GNsV4rET5szg?6T+A37e43&xE%`6hyLC3Dv@uK|B zY^teOL{txLT8dRTV-*D4?dkU}RjjEoG=0{)#^<;G`*BYAHBn1~_IB3}PY#=_VuZ#(&?N9AA^fZIFH1ZP6$xXmD=+KCewg3%h84$75%>e<$3# zc*b|uD4?Pi*r$EiT1+=v2EFcW9+|-U&$v7yq>T$7YJ z?BuGMPj)U0jrJ$TIH!r)0u|%UR1bj(=se5CMq;VgJYX>TvMdro!a}la_0=T0%v@7O z^uD-&;>pH=rX$YLcIuaHKZz?iwR8#vt)v#E77LnD;CBOzRX|5;dnF`ua!t z0I^kgXf`P#<$y;CrFI7uc=fg7sF*bVyGvC9J@;<>(Y?vB+s1`wyWXF4LVosKooV9^ z6EL6Utog2PF#Y-M^Q+_UuiQ(Va6ct{>x*ek!R6e=$Z~IUNl=u<+%WIZFHGeoQP5}6 z^*PE&xFSEQTP}&~M?(Uy*S3bIw}x*gB25I;!dl?nC?*)vx1p}V<+pz&lx_+%(4KPm zO{E?%iZJKUO66f+o>~C=r($5%)o1Pf_q$UdSu635A+$ZGbl?)Wy_T7gZA*hv9?B;0 zBo}Ru_$Ufw{a5C#M-C#N6J}cUw=1S7xBH&m8oxhZU-9I}bQMm%RGO8yFKl|ImYY~Q z{bcZn!F}@Jh;2`P&^Q|s674dJ&oBw@>4f!}Z54yWm|W7w;te8_EiFQ-@i4#saS|)B zHN1q3=0baNTyR-q$2S80^MSxj1XGQL3V&eRU9;63>bD4ntNKX@Z zKiul;QSIv+GOTq{rH+J{?ctn#CxcTx1?1uyy>%BvgW`3|y|$4)dw@#efOUZ9Q`o6e z6xX<&wluag2|H^o2ho=th$g;9;kin@P50WP9^*;K=uOJ7tvpe+KVE+un{~v16dFw< zrW^xV7x`-=;ek$8uik@$Ui?74PpcxY{1jN5lQsxU4XQk6otZQ(~fiV>{)SiE*Nc%d??2XYHf zmWm+t8wIg2^&v|_vcEy%h&`vWyfs{xSN~{{zR!&~zDyFE zjwutExlr5P+~kgozblsuF$!+8cX<FGL|=jyEOsb54J-PMW5RCl2zw$1Y(e_{DO2yVSQ^f zA)qkH3QVO6ul`j6MA}U~kVL;rpsU96r?l~dV))&2;eUFBxChq~@6Run zvOF*XexN1tJMax%M|k?ZrpU(WNIvbiDe}gxdkM%u4`;C$c-FY2rC6NBo{NyVlh~bp zZO8YxlX53rlesq~(D~h1ZO-Lx1|DN3FjJC3mmN^K9;JlmeLV_eIPq%jo=yZ8-2kWZ z;T{1s7t*Zisan)xgZm|n*$(T@M@47K;C2-K*uF?muBJsg<{T;Kam&N%wK%Db{9z49 z>u*J_gu7B$)12}TN@UWGd5VeG+?IK~nVy(C0&>sAwDXdUpGB{aFA?>3D&=))q_tLE zl7y9dt>E=Eha*nmo2#0^M;! zFfW}f#6=Mq$h<84&fSXoPJh^Yva)Q+Hyd?)fki`D*9G&XvPcxH;u`$45@uc-d*}WD z@jou0JNK?injrRIUr2OyaAITQiF>nQP^p8{+6Y+>ml^$$5vW}rka)+%qAJL>{Hcm% z-cycuDFZvJ7)-))M?k7I0$-8V8w;n5##iWO{jzbBqtbge8x#7)AaTv61=_bLNij=~g^7q(u@ zKdP9#o>J!}is#TV)w~uD2W8CPKbR+W9WEOutU^mLM8d-6TBcH3E3+lhIz9YbzN5v% z=keS^WCd%QH-}!5#n0}*ae?I9&$lM9Pi{MC$kP|oNs>%Po z#WIud90Qegn<`&>TiuyVC=s4j6#-2es_o(3Qj}crluNP+{=(NAsIF)QVa@L6!PKH` z&MAid$c{))X0j{1ew~4IDUh}ns4mW5FSD8Im$xCUX??Cuk6IGz5<|Y$ci$*NFu9%XyLa`k!6wom27V7 zA?%vr*MZeQmTPlAo1Sk8-+BUD{d?sL?wS1~`5)+Lt6O*24^hk5hJ8l-iNAwhoGI_P zI^G=r?6ee$9r>U2wsUlJG}F#Jt~#(iRTN`Xhz$T;GAYsa5moYL6RzlJoV z%aPw-0%V~mWn=Y$b25eO3Y8DtI-r9hYy@=g}>b zSla=1Ux`>?OJEC1V%H>(kIW%UaXsxs?okmWdq6OBLvY!h%~In`{pthY4z5w^r}`5B z<$|DNg_sYf+Hyd(!__x}J+NdgwY>dPh*8k1Rju=osi7m$sB_x}dIq-h))cs_3>a`@ zm7Ecd2EplEtK?RjQwCL?CqyW#du-DRxs_Aq$=I`EbFrP3$1*G0Dv8Z*a;Z5*WzLF} z_ISv@EU}B&-_er40r(?zy*ZP`0OG8WP5}_7tNh<<`-Og}GOcCKc&UuT_hNQAQt4N{ zK~b`Exrf6>!H^h$63v-r1hir%;ML0LgMD6~Dg@qQn6O(WBi{S`dnB+)z1FGsB}Bpe z>jX7w#}5)3x(exeF@1T`vZMPn>nVt3=%}<@U5v)>2pMNy6k|E=q$hC9KxZn;_3&nZ z<75T9^?@~@A^TuwjlBDB;flrTQfb96?+UklKFgd1LGV1BH=!I*72VS-AuwBMQ_ZH=U{zASF;*0Rf72rW`dKpW z>&tHmzdGxCZ&29Ei(s|Jg3Hj~=iASD3(S69A*04V*vb7M)fhQ0C~xdr_beJY$$DjJ zxr4HYhz=~n-@s|DgQ2xmh+H>JA;#pj>bJXfI|$|(8*zz=Uu&^zPFOI~_^W!KyEoP} z*$UiQy)1&xwN+LOldyNNvQCo7&g*S;p1lu6ka7ZAJ1#f?FjKxe0rhv388!MQ-f_W_ zR2p-@_L{@ZuxcK0mBACZx! zH~RS#ipT*1>I!vlMQ>b^EaE6@D)2t6SQ$)r>C3RzX&fEb-9qEdt>)2;XsNYq4S}1H zRtRmAqUnE+LM{<1Gh6*MTL{<;>DyfVB)-h^t)qff=QZ)yrB9P>Do^BKdzVYJFrZy1 zb$}Mc<5ou1e*5bE`I^+pv_pHUx-|WIB#XX}yaf?Fjj9fvZHkV1MV|Be!3gy?Ya}|a zJAcjH`@iyPLrx`8a9~&yQ26F;Lt`sAQ_-BtZZA%FlO(DuDTNP`kR4ObSknj2)CDr? z{o;`zwjYjan^An>)A+)H&!(qa!a*YIrpPniSQ3dR@NasXPe$UcmM^UN`9Ru+^7dKu zF4x0{Cktp|_&4JY&e8DI_@hUHFRNtLmaWMi5)8>;VORCv850o|0(!K3Oq4Sf#Hr*y zt1$FymsxuMM7>n-+f_CZCzLT=^O4r6Yj;7OJaNfQ84Hl~nqOL0Lvo zXR+UUh$-cI?rh$Fzv!cEXBRb_03PA&Pi9L@B{;+6VGoY?$s-9r*HE{$Rk2TqN9thUGH2gLFp`*YjlRwv? zfm`h0MGe@`b-6AV#O|Fs9(@eF%S!cdH!||&89zCY$u|xiSRTEky_7Z0MN{)l z$Y37VA-FJay=w_Dq`wo2?XKn5Nh+t&Pg%q5o+~HZW0e^>Wl1(UiTc40mpf}GY8d3Z zill-@JR*$^bD}K|R-A&^LR)1qR^F1L{q{NeOc_N_`pGSk{z}v$+6tM+TZzFx+(?@~ zEU_=4vGaly*`-V2D}DHHPi;~s=TC{^$F^{Dhlr>y1?jHvPGklvP;auiZb@8vaKiy* zo^eY&m+xK$CIWMAi}B&|n1Jft3Rq7n>!sTc!)ZsT_=yN(mX03xHrIx^qgc!o19Qci zYe6%k&$G?r`c84Vt^7HCI?}I=zgUeIoSV;@=Nr3jJXoj;=*TjF@uaosScNF=)*yiC z?I?o4>?=pML$}Sv{P7{`pv#-oPC2Z-LNx7|VoY#3RWVTA8BB^?B;fW*vL2Uir=KYk zwaE$8k8s^wOlJD&b&<|oSW2yxZ~*IF0~bOe<=>zs$;FhH1HX#$eI_KvCGBO}YZ!zQ z%9yKWkwMH&o013RAy&H~&+c=S;o-LG{U8TCrkMWB#$)#~jz*+D^>Rbi$KkB@398O! z8(w`BiCSIhzg7}cjp9eWNaUXLz%6*KQ;&L6)u>%6Z9K6HuChpTD)%)5AS06weF^+d zMM17*hyF&q&TT1}-weDoBzjlhL|$0Vqc`+;a|Li_iD-j_078W=F)um94BWUV_=dY@ zCi*M$fVFHcH+KB%I<&{{)%K;00kT=o|IA2a?ST1&N*R3nsSSp~79M@E6*t2FWWL>Y zujFM{v6r>;f%sxOXr4l>ogGu)n%e9}foD^`7S;;jO9l;y$s(*SH9>zH5so3|s7NS- z4AfDBJ;dV+ga(}wCn2YKT|?1xpe3iM%7s%%OZNA$^70X5gmAoSN1UW29Jze*V+w|6Q-! zg84%3`ASObl&2VSv+&$J5w*{PTq_tn8zKQ6Er}YH3cNpY!ap7sLn=4W^Y|vd_5=jZ z+s?{|M5K^-BH}ig;kG1QPq93WSyXjtVl^ou7X|^nrL-W=!tPdx)0iM#g;|_Omajd` zIQ+3xFPsrVxN4c!Y)d?)Y(O)TX<-mgz#^@WfZz9VvY0LXa$>+RjcMKgcq=k zNQ#MOJLTt`gisM?rL> zh?FXzTXJ}`pAj+(k@%V&_~CeN51^Ev#gPpki$A=RN#v?n3+5dc{s39+XG!4{-+`{t$#Np(8gR&A@;8#@0_!liH7fGO0ni`~j^ z1xP9yNuXN9h%LoRQtIY_2Ao`)3v9f#8c?Kl<)29f|w3 z1jC<$RU@x!^ZFyZ z3_snwwZ->sm7OmM|6MVlL3Ru8sD2>XG3HCZEVf7K{}0>gpO>ztUzeVDU>AcqUhS5ByO6G$DVKb@f?T0eP+Oo$lx39wEee(GJB8CYkayNsRt*o zT6pp@0r8Gj!!5}8!XZ^^`*RhtK^m!HKnnzr5{Z zC?bdrN&*FZrv0JeW#@9FJ0iYDiW~L&&b5AVx#IO)1X}~b=LUHOK(y9Ahn!x6isDW) zbTeO9$cVpYKVZN_y!6NKqz@xctUF1whm$o9<(nxIH$E3@{2J50r|N>Fl8@Gh(@cVa z4nZHrZWh=LCct`ZJ;gNpFHmyUK1YaejHqYqT))XHr966HiP*nPpntbmd6_E`vo%$= zKTUa};PKD0e1GjMzldmu(|3lm+dnMR*%-AItsNRG{h?B=S zG{nRr*?8GezWeZJk8|RjnaN##6??y7SI<+v2D5#7;VL(T6->GVKPx8W-WF9fN?@in z+|f=BX!Z~hFPCmt@^}qC>BlS-mzk_}`nGYDGezM{eV!{c zOy}+uL(imw&B_9dCi7^=vS9r6KA*N>+H7R#b2Og7E^NtLv|lp5&`lLHtv@G$OqmH9 zqy-K08D!L+h^``{8|GIz#BwU3hTF!kueB~13T+G5&T3HwIWzs-{Gm`UA$Kh{yDQE5 z*0;7Vy=6+ZmjKkSpr`s0SgHYQ%@`pf&@cMBX{Zcmt)j${qLj6nVHkuW;A$nbYA~~FNZ(X1y&zS}!Z7cHFtdtuRW zm7dZ*Dd{mrLZ*%jVi%|L%m7n#J0`H9#~vGK*#YEVu-edPQ`6A$n+05&!SrRojv6EJ zG;i})t+LDnZigOj5y77e-o~4-S4%Ezeg6E>ACu_%TwR>vA-K$#ocpJvdOfYr=Xl_W$nPc1hm6V7%4XYD^PcV)75^(oaM{UJYJ zaJzIA4$-LWd@UKKusKpp^@39Ep^bA%XV>lD@le)_kUXtGM+JNzemenxN3zagdJOTH z4o@$A^EC(sUh&kr*ryJvf1T73{euM7SvFc^qG;r&mwv)ztjRS+!{Fdr;USk=qp4;0 z+*FB(7U`29^Wp~vNr z@L2*r2##DQ_h8bu4Dr+L@vJ-9kvzd=8~y~8YA-rW&$o788BI0;cZx-*Y~*RRnrhch z*@rV4E!|D#^Rc$i8!BD{F>v))*J3hy4#3w2!4UjUIil!MlMfq4-h!#rGvNW@Oetk~ zCb6)e_A2|1Np1giWTVgVuo@Lrm-2xIL_ZCEQ0v!oOZa5?oezm`cVT?UW=f_Uv+{ve zT1X&$O%SSeI31*~#ZR1}?Fl4CfzK23If?b?y|FVR#u@)_YY+J46d8nYSevX!Fv2K) zI@gps$xy7-pn_Aboi0&6vDiUJ^?0)2E83@u zzpvs&{lhm-<5c#`?aTp-fJxXDwG1D4#)+86Z9nje;X2;Qo*8$l6 zDt1#5p%Fx9gTyF*Vsvnt2oo0F#MJ4IxE+`cM5x#F#`lPEt`ie;r^Wvr&k=3!eXnQB z&%YrKJ^NaZwN^XGA7?TWa+tvJ(NkR0i+j@JD~>hEU`-S(Gj!wXHuq)c+}%}k0C8Dv z)me13A&B!^wKr;XZ}cKTEYhX?Ng6xKeQ5jWYk|J%&*$gs*xa3LZlDCZGZ9`BB5y8L z6h#++psM^KhQ3v>tm#|#!W5w+EfZL7_>Vhr&`RCo*+X-#jg1>mzcM_<9iU0!%glbR z$-3xla%|;RF-~RIw`h|aRQ}tL$7|~(ItDk=BUK{4hJh?GjHZjs0ST5lb6y``b}{Yf!(Q3kRY)>bxjf zUX&RxN|P7$Tx^G#U|yFuXD^H7zm^d)Qp*?dX~!dIyI2#L4<>jua}^6-%bTlYb6L9B z$r%EK(jL;e-?p|#wd0ATi5&$>?P9^@Q-S*_@!S}CB$yagz&ZYWCc`7z*7v~1tkIvR zGQ1!R*<|tgN9%gpzA!xkLw1!vge+x4pwCG?T+u8h#J>m~VTzxCf}g?!7<=n-sBwPw zKDqX>y*hs-?G$Xo0Y5pAnV$hezU7i2?x~{H+d9n_FTV3yY=txZcZre|BxJKT8XN}q zE{Mv$&~;CKee=$g&HCp|7AL~+g{1Hv@N|<)w}x1O)WEgf48zGwqRZkp*E?&!c=l!6 z&GFjYn|mJL9yL7i!+B}lhci;57L-b^CfWGw`R2=^n9-IwAP$x#adm=Y52Z<>a$wLs zu=C)F{&;RB=pdj>mWbzeuHjUo;Ug2t-12Jv#L(y98_046^!fz00*p02`*2w6*etm? zYMlfzT#iS(B56GLGxQ}>cNyLcSWEW8an*wF^_M3slDH8xL@W%`&9fNF?~?R(f7*4q z-x0Dkgb&I)J$ia<#6Qc<@XKXJl|W)}q&G>8vxL0&n3U5|@14ghK79LCa;k2qTxhd% zD!15bHlL6|C6(+t6(A0yau1x}RWS@aVZ-L~ma*KF=lvu6#n zE#o*o!zPQH2oKAC3G(k4lS`a{lny90nfYAueaYy9^fzTIleiZTW5i{EA`uaNGNK>q zlinVDZuV{ME||Pfo$Efk?~lN2?yMv#qlYhB!`^vmDGQpVy*JtrMf)Rq#b*Dij}UF7s%i8*bMLW7z-T%4iI$){(+eZX#J zl%5v;eJ3?)vC^Ggi^M(Yz|_l63fUdfE5$7PgoaJzvGp>IIwY7>ZKx8~oF9Srcl6TG zp)j456q5r685*OuJ#MlQIx(3CH?AsiE6C}0znUjkz69ym^LDU}%_Zt=oO{Lr3gtt^ z%uL?4nO0Dl*_+}878~uBi2?j;ZbCq!sJuC&ByQXjHuu5@k|mQh7>WP1+a%PEc~(T? zHOXp^ig?(zorRa&RWC89nTKYf$sU){kU2v!II&G4~2Yc2x^+;-uI+H^#yOv zo5@`F{$-r$Xb-!)7HcZWNQqmF!0gNG^NrQdD{{wcFV)ZOkf#%%S#wR>Y!D*X;;E2kKBF_C{cE`Mgf*xMjkd+27YV3UIJu+Lc?DZ43MWv2fyg9_eapKlsV zWTwg|`8L{B?!vAb2~-~bK9%7SDV6?j+l<7^wR_rpm)?)a2iD{_l~?Z)^Ob`C)O%cf zv~E)@7?!#%v*dH8d{q#&!`Mk{{#+c`VL6a2CF2xhk1gUEhebne`0=rRVkC~c|HwF$ z#oFs_p52jLn21V>B3|pUPmzOgDRl9o6nIg|@!WI(oItO#et=Us^!`_GFo)6*r^He<2I zR!(V^gzaQonzIt6_PtuNUoS&x^0vs60QMCc(|1ruy@uU5dq`w#4xkPws5eFL8S)@Gb#Brt+?tiws(Ed8~c%%h+`ryb_lyTx)ySBQvZ5qR)kNoD<;9hq_@tMJ}`?eqANEN;#w zelm%l9C~O8i6=kWopd?Y`{$&+t|2bieM2xmYfT59{{0LO#?hyiaw=7M{kI6{3TXUz z9xzv-Bv66++8f<*y3#CV^m|HU-3O(t{&R*gxve|uO%Lx`ks5#dTibzr3iiiyEBR+J zWlXf)8hnncy!>?hoJZlAft56w?cY>gmaEy54pggRn%6o`ao(~F3&P4p;u%?X9PmVL zDKbndrZJ1%P6e#=`-d&$!u%`xO@7zhp=VlMp^5rZn`lb*th2ip+b#MSC@h_h1mE*h zdOx&YqGf#$;Ynlh@eCCvtLDj_joHjG&!x4$rKq{9g2o0%J@%}@WuCpvoZs{E#=G9Q zt_?bN#xT!o4`bCERWD?=f7uoN;ex18VB)KX7vyv;LC`L7qy&@@>!wwl>-z4k{_WPi zYXTF6Ub+tkTsc!s9|bnfJa-N&GMSr9NB%moxht5UWRlr5w*=WS>T!r4wZM#462yXd zJQSKlvIHs$DE8Fu<@#YP%|CSq&lA1tI(cwE+DRe@pbT=uu0A=?vXnQm`-fNVj?r~x zeF=Z!@@fcHapP7nK*N;oluR$Fa$)-|X<<}&)xPc(bvK~LKh*iYy!vg&$~0i4t%`xx zhm)VfjCUY^UT>xMmtaa2Wt}xy91M&k31rP8r*l^;wxy-CS1~9GqIX1t{O@jPTKdq? z#0w;r789KC3Q6>b{hqfJF(i?Q64@*?>~b{&AP11Q@8BET52}Jiz~iSmGlGlDJ%*dV zwpIqN#us);So-Jy9I&WJn(+EI*>c|q(9i9utY29tMe8 zN~e?)@qhbQBykJx=CeRavZtl;=I~8{85z1rxD^D7bentE=bJ@)4`jDiK8@#YkVVYK zb2DSd`lRQB9{;v6vB-Y*^A*if_l15j|?weSvY?U z(6FDVK}~yvqpnXz(zc~tH#4nvFB7#|%QAq&%%EtBehh}+NDAo5+N{5A>QxO>lL#HO zm422DOeuBgXywgq_f$N2QIrtE@irRSKTGPZxh)m9W#-zUA1WTU1?PGWya;fP-fDN( zjEJd%P$(FcdM|~Ay@M&tj+khqe~pfd3IsE@X&j?d?^VK-l{*DZt`>*+^7<}KPWL6O zPaM(Q8TuoGgzi_HSbQj}@FJFUbu>BP;E&<61SB>L`*j2H7ijY;l?C?>b~OKCT? zq39nkWH$wsIeaso>nMuVQt&|tr;-$Srv*w1hN|6ulM!`bQhKr8t!*i7jXZP0Aj$-oo~w6618TY~!rJ4xp(hRH{Za+)=l7*RmwP zD>??-13SA66W}oZS0gJV`#Z6(S{CWevmb1A#-Pm3$)#uL{jL#LmwKW}aIYX$DN)7z zh6xY15+nPjDqb?=HTUxBKQxljqc^J_Y+A0lfu8G5%oO$|m**Y`hFnf@-&1tlXj>){ zBZW|WmbV~wH0a^?FdCw^gg-ZG`A{%luiPTbDhwR~IPjIMP{b5?Wpv^n{A|H!l*^l4 zZ0-}Om56IHD-_RtpLKHHIbGUvQ+>Li;T31~HwXnQbrF1ml)Jc>Uf75pEJUToH--#haT1 zn{wAvEIXJ3WV1d!&Tb1oF&v3Y;b*Uof>-G}(8XB`%y#f63bC+#0-GLw@+NFRZRC9h zZ(s9W5hN~E1f5dG-tjn7#_%5Kw@&5UV{=z0aXsi}JFj=O4D<&6-7JPQxQ{52@w)J{ z)}SlYZP@enLzCf&Q6gums)v|ss-Hn+0qDi);x?c8fIwjXs zIo?vg?o8ON(!8_ndWa1$XZ7bbda@Grw-Aa{ooK7FTC3O%RfI;JVgspk4bTk&><3Q< zl*9`z?qQ5PQHC(4&SYVPGR9o=pbM?-!D9^t0ol-Z z-~=b0Tc_%gaS$jBGWBM8wL{qBfF)2X^e1tT1A6yDrhTL?oQU+FeEmoS;cgQ_#T6_c zw@kQ7V@%7A>>W4>##@2*;mIEACL%WvpJtV2A1QOk{s7bA4wo17&3{C(%<~)AtYpod zrCrNqkuE9x_qW}vU_NC?2MdE}6bXS!(}GA=|0~0TlS}Cx!1)^A9(=s9!VvGZeR)BW z?nAHH+TxLBSGQldDmAGA`bP^%8QY<|6;X^K9<`1j*ug*wfO_&E!0KdX5)5M0@@ykO zW3#-Ro)nQru}^5+9V2`E2x$E^t%LwHIC?Fx?>CkhNR`twot5i<>gs55&#VPqC9usD zsEF3;Y>*A?iMBd@@Lf8S!K-ge-~vnLBZc2^{GuR%f_1|;eNN@MctZ$vBnLkSznC7%6~!%545lNeX*499nN&#WG$Las-<{@8Ir5|W zhnj#v+{%w43CupXPH{GWx)*-2u}m-|icP-F2t0VXvF2!gBgj(-xbM($Te~n5xIC}6 zPTk31c}rMQivMjpz%+joGJOr*ay(AgHX`5Mv?ND&mv_jm(yyax)h*!0SeQq74TY}N z8Bw9LfYJ)U-#NZ#<*j?N0u0Jrv_L`PshHwrir19Uv!sqji!y518{^h9U5;E zxR=>nGbzLv^2T0?8cl=WAE*MsiDB>2tU|Nta(VpizF*@M)C1FQl2$qDY{<%2MB+KTQNG;+XXNyMiIz%7X)|G&iV$k?y~z z&zbmkcVb8PMf_9P@nuo6lkTNmZ5kZ?upi_O>TK<6m&qEUQYH6-6g5(G^yVg>p4oa5 z#6ZpzKaSWh_OktXg5Q0MHK_@pH%j)UpLQ6HXjInS6LP>T$xhsZmxY9B*bH1_elL_^*ebvWJ;@Bh^KSn}^q;Ovm{P$PyZ}4C@ z!j#}fY3ynwFDf7Oew?YmB(A0mzVMYZ^~JPB|LZ0cS;U+3S^;AqQb?({dCApL+FuZc zpHkZ@0tYKX_7wN>27EEcJ;BnlQG$3Fyb-JmsWPbSGhWm~{5k*N8b$|qulaOSFa)Blp@U0huuKu$R}8Zc2c4xaKWh8RJ3FzaEthvy z2nL;HYrPI*g{AjV*U)NOlJA?KY`Z#!@WkDIl`+Y=qT23zi7srJp6qBN&(>ILo}n2R z>4)4p^D(>iC2KWgu_@ZEwqevTl#EFcgQr8r{MHJkfW+8fGC|wbRmbf%Nom!cSnns5 z^}PD&BM^)s8!-KF2W9GQDma1E!(7$Ec<*+jmbMm(fb%cI5EgIox&v`u8w@uA7Qmj0$3Z&mQRg zsl|&5y%f)?OiUkp_(yuC*OwDM7ehvuo7Ht0Byrv7YTk+nkQ54rdq=m>EBEbb{T*r2 z%;kKMPIfXkHcj@@H6?wG&RuS>g`R$_FEQ}f{Ty9e;qm%x9629u^IPYBDBnYd385KU zCzbWt+3o(2IOBLOsa0UH!I`j9cO}5M22z=U`tt;nH>Vp%tnMiBZh}cT7}s1(XTEQU zcOF~OnaF)09q#8GO-=85HS_y}f=B4GT3&q@Xm!4A^SE;ND2RnQm7_4~d%ZOrY85gS zzx(&WHX>r_jQKl_`Sjf6#3QlT{pvd+}(O zemznW%xe_9Dit(1-o4L@iXz~TR97bnnSz%ubfM)YAoCGA%g#D;7A|aCwdd=TorXvo zF!o;(K}6ztu3XvRbpQE~HzBJz`Pb#)(TU$O;xW6X$hqXLWR|Xla8(939Oww|y7W}o zzd1;)QC(&V)2SkMpI#jyvaN&CY~93RJ;XD-B^Z?UoHAm>0%NxKr}h3{gx+M%ed4KO zM#RADY+HyZB8>fx+S7WvzUl&O)m!2ye@NzO)#Q9o=L;Xh{r$&2)px{mBgNeOswFVh zi{ZR}DtvA!Ueq!{Y80HR=d zUK~+2aF>T{+}*r| zSb|W!3n{0cf0`Qx3?b1FBfN;seJni@p@YWvt66;^g>OCOrEC6Mf3umqkxbjx+!klZ zmsAlec|yIa3zyN!^#>-V*cNf)j0~^!CWjTD=qfKWmC+QHiUDOp;oftSw(nQ1lxWsT z6K7J}{n`ne^x1lq3^-ocid4A22R-7 zg_*9dBrefBA@ss&Y7Db3n=8{=r`7_fKtc-dw~X|Qp>cD(x$zI? z(}AD?Lax{-;jJ&G$qO1F&Kqe>W@+L4?tT(-{9t~|lmd)7i6OGheYB2FC%Sg!(|b3c zjJ|cop69+#rgnW7Q;rB-jc@4m0|mzmRVEf@u2lj-!PS>{JbNJQ;%JBp^dZ%|R-e9k zJE{NjoddN}U?VG9LSqIv(Ubk#lQg~e*S&Ue{Lvo@=nExn!6hKaHOoE=eI1m^q_RB* zZ_?v}HJt93@ElbIH;IwK;I+kmP$iC?om-xn03p0!AxJ5IHNTxr7e)pVn#8va3hw?h zjMe?~cJ@Zb&oPYj|3lM5bW7Rl{k8Dp=C{Ta8@Nh@isJf6ie!M9F#Kq@2O_-!Khl%j&= z`W9JBXy=@JfwKdAkR&9UUp(#}_~u#D_X?6*o(Rn1*0xRA{VJ72RiyBZxtyts>na-r zm-XIdQ~CWgfl85Js0s3`vziPK&l96he({HSb0QjPvbTE_JE>5)BAg`>@pYiq>)2OT zX@LEt3F(|&Pnokir5#kn)C=h zl_x)ojQxVWsLK8*`kE;OY1F&b4&|RzyU0+~W&$K3^CV<_kOE->CVK7J{_lyWMcD^M z@C~bR5a_??daJuHX!gy{nT=L!M++dBrA*};@%r(Lc?>qNpab&>vIFl?$`4n&E(zeQveowYvjzVQ&Sw2HjOS%=5Boj|GuIBRBO*iDU7f1-Pzww+ z*`Ee+Klx`^%gB)?@B`fP8zx0`&%9W*mx!DjyBJwgEfnfG(;o6))j?@+ync7FV4jx5 z?bc`sKh(4Xe+KSIt@;b5;0dwry(#j-t$QYwrGcsbY?<;1+fyK1)dGG1x^=u|}KZDI#6cIOW^BltAF%6*}JgMu&9}mqKwq5VQM9m?@-D zZOR%jK7=STQY1_0*Ar?z;NqxjRQTcB0%#T2FxPtA z;`T6>8G(jlYjx*VII)k@oW<>)k^)KrjR*Xn1F$^D#98S^s$b8i(Z|jvrz!AH9_jni z_K$YQHA}y{Y1@eS%5cPfWfX{fCwHx~rxCp;1XsO&L2mV<|I0>1sTZ$c>=0)vEh4#ga#|dZfjQs8SW zt#lwDNfpLY(%KxL+#tpb{D|;ekpgpd8tLS3HzKk7bL+mj{ah1 z7%`+`=sy&_v|%(O<9+mIU+&RecHb*_Yay;Ww)0S?_Y3)BI$sqtEsA8YI02+2$0WOyZ76kK$Vfti#^c@8; zUidpOFUhd4+0;Fku}=19(>vpa3F*d*!B+}`_ulz@_x87dj{$q{KD%>$>x(;kp7`yx zo8yV^+q;)yx^5li&(Aq@@5+nUwGAF_YSk z$)Qu+9bJo1c`}myLCu&S6(1MqKJ7x`=NBXxyR4gb+bZ*ZiykLt0Wn^A-hbz2(Yhz@ zfhzoZ^DMzD^^XTbCnUV1F7eXsLvO|MBZ=hP3SQu=_`NYmvyja zHNI*||15UDxr(%-w^e^+qla1j(3AQ7ZO!N1-X#3Fwaw(rAUiSmsL6TX#J1sEW@nvG zmt0(7QsCM-6QN;7TNPOov1V15&Z~d1sdEDZpEn+U7kDwLF|2y+~lw_8D%>O&d{i)Y2?`L4iysaTK#@-TmT&w?izX}3RA$f*p_M)tQ(9gwEr z7L$);)h4lO8osc9wot%bwFn*HXd?Q_Z0@=Ps)(;9(&ITgVbu4X%iA}WY#zH%UmI?G zMI(u;Ho)(%Nao6h31Z7Ws{hRsM;q52U)hnslK0)VV+CF#j_wvkrSU%px9YU*l|-g% zSK`XzYTglOL511Q%@3HGDkS&bkPM5@$Ea7YGv7{TrAX#2JL$G?{Ly9j5?Ahfq#uhZ zs@Utr6MZIa`BW|Trw-<95b9mXOaKy;utY>PVXOM{3+G;ne`{N@=4pIYV zdgU$`CfpNEHE~zU{+{H1=-NklJt~V+IuiL{_X%pgBX|VgeS7xrhP3e?FK&PF)!A5i zPn`&Z<0`8jItH}MBn!PWJ>UL}{QDRyS^046(za;UB0k%x^o+}Oo? zx2sjZVsZG534Y(d|1@67Jx!}om=686L=^3iFc-{UF`iHA)-Xgk zpTAKs>7|1CqDAPA1~_=zcmq!^_war7D#(sYg4lRLtm&&$EHCQ&?a$jA4q~~1 zkpZH0D|Q8%@#{64ebb9r9dE9#zIv+Rtiz>4H$|_#3Kh>-FS|_I>hm%AtJjm@`?BHt zo)CUt?^g+W!}p!MGiR;5Gw(l;bUh_7E8KfzORXJ0#7*m5UYG%yWab)}Q* z9Nc}BdITpV|Gud1!DSwqtz?(MBehT;oRvN*}u| z-##(E*l+1$AHx^4c7>z);&qV^yp$6k)SPoDGf8{=%*NsFVDkCf<_;C_Q)e$tc9y++ zwn6jWL4_f_n`uoJ%_A>w_ZOQ~Xy;o;SQv#kO-Pg?@}!KVjz#mkv-HuFM@C>GqKfZbgl>^U)YkFmq)*%j zSg-^iI!@uIQp7P!o38Js~?{plMmg# zrX%n1*49eOkb(|oLqB&8h;J1*FE=~=RD_m&S|+Ov-I)Pe_2<|y>4h$*4&YZXGDn~C6}9* zTpzzlR&#VBcKWfH+Nt{ac_xfKruIQ?iMC^2>zDJD-^t5pof;=i8xd7We&sBm*h7}x zW9+5!N3^bvas-dY*xwSdh>;I!N|3oLv3<_F3}lE5;NDu0cx@hZ{_^NCU9EuD)YHdG ztx2stN+!Q|85nHs)xB3SCM&_`p17yw7o234t_8ALM%9pdyE?-6R% zYfIuuuC@1wnHK>!b6_g{ezaj(3^J<&L+ANqer~T)x;5PpTo9jaYOP>ErSV(lQJn*Ya8&8-rwVUI4UhW*Bh)OkDtkxGpN#BGXz?Pvc9+v-m z@5dye(`;r`_+?;KiFk001BHCPA4k9&fG1x;HbE&)@EdXRAteg)_|jZmvO?Yv@;M{IMM|S(8BGC-1&)DTPOg7k} z=58aoGDI=>gD}{O$ z6D?sX*d;U>M|65UdMWc;B3q6-aLM!E6%#0qkv8bMNc#CI*);lFN~B zt-sqW_U|GyKv5@EMy>KD>x)Ps2GoZD>N?)BDe4e$vs5Td9eAh#e+YJw^P zn}0_Tx{7qY!w=P<)hhgckNJ*ICk0GR$GlMh8ryZN#xXsHPC^;LT z-=NEOc`{I!n5hqL9W>u+qOhgMuD|4l9@pMu&3|<%#^b=w+yT_CQAxNvlbZKmFqpA> zz3wvJ?j4y)=k_rgqHtFnz9W<6qQT?g0qThm7j@7GNcIz7&M(*D)04_r7H5vo{B6nt zPnz?7F5c(MujZYXl;I9bVoSaXMT zA5QO4Y=y0~tHdL!@-C;9)vr2t6T2i`PPn{}u6$ip60Ulh$(xfb^=3K$I`8|K_mK3* z9~sdDZ?_jsV#UNMSc{c7qM|x(=uj2^2-Yn#TfhnqB}TxN(WKTn@0yLv)>7*CHwjIn z9sxd5{+BpVmklT0*~C|s)lK{y?@nPreGAM6Ld3Fxei3Lp9cYar1l=|b)#==f+&+mR z_(KnfRxn$rnkIJ{oWT$e@^d{&LNvF5V^tL>Q56U|@$d31g}INA)BiiHaz4 z(xO8O`fQosQf)SKi4*mFpwrk_g|Hr{KO=h%Oo4#{?f*&-zIKvm<&4AlFp?T*vC`K_ zR&3FW+p?r@9|Nher6l6L!%)4PABXL-`;-SZ=Ea4JapS9e{ol^VW_x@W_ zfJmE--_sNd;O>5&F{Q{b#kB`4)us0swcLZ*bh5ZpKg8s6c{gkazjwf7A57{k`LPAN zQyDR)K2e(0GLkV`uwV<(zG?eDnz8$D#&su*DEH-2-B;EP98D>k1*LnJL|3k9ZVJLF zfmWakEm5l$MJmI7>z)>3bHZx8JvsAQ9Xl(Com#)U5%Mxk!$dMoPtX=W5kE@jXhvwD z??e~2!qbDg)`X970k2G@3M1p$tUQE)(ASY2!%fss)7#ni!dGip;^lc?c5w5XuL>|z zZCJSpzf?cS`hHc6DcYIjv*5B-ngZk6i7KNWn;%{^US-70p{Se~!v09`^Lt_t_^07o zA=9dS(w31WIVm$`+(#bpvA>=xm(YbtWCB(1`!lhcul1@@U~MQ-1U9fvEfQZ#NJ|Si zr4m}%>)1@=f=-VB;V-p}2NblC3ie`;_FK$5=}NkHq92Q3T`B4B_}pHYba zA!OlpOJ-Kokg;~ufVJV-Cu+OKpibjN7N}D8skz%(?#5$XA3FH@<+OGdcOq(8~~B>T22j4AQgLw+_NHZ~`;vG5Q0vxf}a%pHz+6Exawf7yv~=VjZAhq6f$`@c9s zdS96~@HH9onHa2D_}@-E%0=T8LB$toD2h8~;c0zMgkIcsIBp>OESuZG?Q&4^_Jf6M z{kwx3gK33+L^miGrTJa0pt$s(LZxo-y6i;@0gZ=~)`~@Y4;`%)jbLmSBEvPw(fswtj-3e zGW5Zs3&0d^yxs7^!UMEL0rB8zDm@l@+?q!WAUA&3EeWbV@FqJjXM}FdhA<0)Cl#>% zni7k>4;;hP#TB@VXnq5zaB+cs=Eevx_Tx$!BByI5rz7W96uMQH5t=_45kmDSW0!FF zl&b+0D)LCc`f#QvB!u+IgXc07#|(yjr@_kA-Tnt}HF1NZ3Erfjk}N@milu? z&Ifk}2Th7a=cevcpp3%~bJCwEnCp6}3=u1zPM6#at$zY^svmB((sRbVt|!$y+=?4*28Qjoj& zzXuz(QTuFnfQm?}w6F1SN+b5)=m@x7@?oN)cNx0U&FRxyag#Pv-;B-5`$FGn$t(K? zp<5~0rXxoTSCj=Ml2MDHar*h|{jEVY_+66c1of&IJY>j0tHzQ*Oz?V@3K2T?e5&X)HLU#zIO%WR!;f)|f z`~~QR7>axhr2eqtQnfXu4X*oNAN92u122HSU2;-X5W|Kr#CfVf=POYyzeA1Az`KVw z@EEPsvv(Nl)WOZ7xSB^aL5T{rCk~a@pMx)1cwHu0J%{&(K>aaD3j2P&PCn}kfhzK} ztMc1luC<-d9;QQVG(5jo*7Iv#c}?H7W8-2Za>p)9(Cc;m#=`|B3QN+=X#J!tJ(ZPxH~MD>`fO$Qw3&J{U`KbBeCKCd~+!W}#DDeXkS){X48&hF$+ zkHby&NVv_@EYdB|BF6rp(OBFIDT*yrm7$4#lDB!+pLO-$!Jo)Sx7=^Oo=P^Gc2PDn zd0C^a-Dr}o{rjRw{`T$rZfPPFjyw!De>H=Se~*KVIQytjq~rW+5# zpONp`-)&dY$TOhN82tGz(zBp=l}FMog!gd3Q?$k-K5K&)DO(t^b<^r?;l zhelU~Z|cG?tHkBiOQRY-L-gtyegHq3uI*XzHXn1jO@fNdWofP3HgCNBg^$Y%mlUR|Di2e$RL z@NfWBbo9KxgZ(y^gUO0ial+?vN59tMRHppIMZR=V6R$L5gdVOXYk9-|d{6@|8}3yV zTN{z2AoJ5wB^+jKWadBqqek@cp?tLPzGYlD$X0ZYana}(muoDK1N>D~-YGp#0)2V6 zcuEuUN|WfAd(6E%q7~OHqg?EoYXB~BXXPMmkn+x+H?>6mFG;m?o zenen3ncSjFv_a|^6(&;%UVMjV8?f?jmlXIyJ^f`s>f6hYy!`zh9j`07mB?71yujUz zVDWzUS3t+7&EgkpN)O$WMwm}CV#zOcL-LX`|KT=vxz~O^>rPD$e%@bc3QWDXOWeDq z9VjKo<2j!VNQpxFvgc4=7*MPhFa~m&5f8-<#-LaAsIkT`PTm5?H~uOuQDSdJ5HoG!yWWcsKq4CdFKuEPFF@VaL0ZRNe8%x0o{pAFoz?+MyC*GPS%PcR% zAi3&GEFW3vtNL@GLei;GG9p8FTnyh;dLqwPwU{U}R_vI%xRc*+7+zG6Y2SEE^=G9M zuM{3LQ&yV*Kipp)x~GA*E;c`J8Ac-npy|viHk4&Ewqa^?3vvwW&hz|hQY*S^c~0Ye zqecdIjM0#$DKA|XcLKR`)-e9)f!vqzJ8SHr|2IK)(j~ovXZW^2e`m~Yh}{H%oMwmxJtxyEFkx{XknN`3lO-0S&1eneq>EYh?5_3v}zJKx=Gj1@NTIE}hc zcQAf)aZQ+}em!#)2?Hx}4XP1=FBopOvA?&8^^0;=0mfK<}ANAUb9 z8q^*zf@>mjVQ8=8uP4MTKlgk8xOe}1r+O_6-F zxRC+M1#9~qFqCqN^bI}%hDAM!{)5klbM8eh*Ld`9K-S+?vhR2PXd_DWEfJ{YpjdLO zfhRcQLMDh8x+Vq`2zW2eywXqVxVsbSR9$=ZMY?9Lans3k{Yd|26`#bmGQAp4=XlKf z0^TT0GO=Idq4xF8fOkX{Ex=tfsCTDyvyIjL4zjmnKK`oW*>R&_kzdHS6T#M$Yg?0a zg`?^<}wwjCWCghj@2LQkNLi;PQtXCgDLT5FZX#* z7JGr|)+oo6+jIkuUSw6ee9SsSpMMVuzlJQF4((w|<{p`cFc~Xb#C3}E#$-=L>+=%G zDuu~b>Ai396nqrFW0a`@J@GG#UgQ6I! z;OMC%<^SY{qw`bB`WBK^95V$Ldf001fWy3puY@O*a6v}I%>O}ZgfP@Tx?Mny{nY_4 z)5C2dK9ivYcMrRaNqBlF5D70U^e8VON9g{Kchw=iU-kk80agc@D}Pb!~>l5D+1qo8F-?$_}Y$U`HKK10lr|5d^8jmoO6) zMQE`Ons{YVN^G#`#PF&N(P7OgQ6XmkYq%|>F179x{*BpHeu$ncZ)+iPks8wJ+MiL} zZ>WLa{noJu?Iym#LExcNa%S23;ltv#(1pp)rw^Y_XP)>RkNai1alEn?vQqIw{Ff29 z|Gvn)b%hL?FO-9zlCU^R1oP=vSMOUDM#l#YSvivDU*3+|qKb4b`bJ2+o_AhahNdf3 zxK?!SqoTvx@!sCSu1zds3Bw=n=4$FM+I}~!?i&FMBA>6v5><==0gXrs0wY7HfEcpp z_Xxu2=~jUE>bo7^k@?s>*OHsGQsfZDse7(;uI$!jvhCT(zaOPw@ zEJ+#nTwGUfOfmAnB;i)sIqwHC#CFdKZ(70aSf^%wGWUMsKPUS#5|GnI&Bd3c( z{ea!7@bz=KyD_S$-8M77Xk?ORq$#UQg0&}kNM%z@hsujE9bKwBwb82zi$ty^y1 z+*kz?MXvA{Lb6g)7h`80!Vs=UFSd<} z2k~aG*~rPjWL(o-(bS%q^FfQ#Z*LgSUahcdoA^sN|4=~vRAhs7XLIVC_;vx^RfP_?Br_Tc$xfx zA=!;{5i(Q`DyfeH&PDpTGT-{9lcsz=?RBW2sHoiZu6nKRy!JWv^Y(TqnBaO!fj#-) zK9RYM+mMb#iupH^tWr}buu->LE#A9#U@o%bGwg7fX+S0Bc!drdH$Vf~P@{}VzB#P3 zZ(;~oHq<840z90PlLlvs6;Z#44ZLoUB_B#!8uSb5#D|QeO>9S@=b7a_f6@a#H`pN8 zP?C~!G$BC=Qk&8Mn_yzdWrk+j_EE>?m+iv9@?C{o3!o*@iqQaEcI*P$H{R6QM$j<2fh$LR&A96#B>1bHpwY+RReZusJ`(3B&g)cg|; zE2Nd(M%?>F<&77a)|smwB`rTs6j?`FchqG9^D%C{cGVcYo@O;l6!-obI>bSej)?;$ z4eND`$d2alF5=vN>>*NjE?zr-r9jRkSon|FKb*&_DSn3&C^wkC-6IMka1F{hXzsolH||#**bo zwPt%es3CrylWw1*t1Jrqxe@ zzft-he_+JOY)4Ej7l;{pj^3@WTeH%ZyXj9TV5$0o|#bu)@%Z< zfgX#o0agz$oEDv_1fH>xl#cYEJ}Qz@TMuzjaW+8ohnZ^1@U0kZk6iNbEvgvgAOq2= zgqSG|^s`bSCIem_Sm4sAW06IIs0~xB4cZjpgl7zYjWf3U7h<=$zEra@eB9mzdnZRa zJzoK<$J}azGC+$EQUtD~(Cu~t*c?TWgQ;dqb`+QH){6@yD<2j)E_x^(c#2Z~`>P)p z_c8SOby7nPFx3~9Vs{}187#J6tmqh?mF&MPQd=F}0x1-;S&#YgZ@r(Y)dVLeu zWJC=0=8;B%))&OW{{m*ih~eAA>TRUO6odrO^3g6$%HSa2LX{C$%Ao?UWiVCT8&;M( z+GKx*DF+jYNeY@*z3#OB65hn3iK~~uX0PJX6rx*q?DY*{3r^8|W#%$Jp4T%k=(OGW zOlD3vZD_(1PG6=ux{_G`k5s%@`b_bK9EXLLxs>CR_+0hRUk|vi1bcktlgw9~pvfr8xZs+ONW^GNCgu*@P zsK#^>)DI_(2F}QjdJs|nA~y@mcj!55Ta$jqo!l)~i?86)gL~?v8to@H%}gp%YlB6{ zwIM&^Gb0{y$&$aX%)GQjM6b5eHI4qDO(Ye^=F7m+_)7mZysJDhb2ug^renX=^?4tr zqnHARxhmwz1LNoAz#;{Dd?vC-o@=p{c(4N--{eRY>oLeo0Tl8&=|DpcJk0&2(V0fp z0{iCGE<%-s!Jo&1AWrE04m;MB8e75MX?za6CIOg%@LZE2y!~d)qhFf2^zEfx_{MOF z|4^5)PR$v-&&G`pQky*C;6ND@ZDsItv@rzy3O)AEdJF+|`!g|s2A`4Jd+(domW>F> z>Q!n06{_iQ;-gti)#Q_jT#J`>)A)%T>-e@9Li_GhYHYO2=a#}gN$TVb@W; z2G;c8i@_yRgT7fTdTxqmgNkAH4TGVoM?qxVLCx!do&;9=!SAdv(V;X}@S4Rxf4c)O z6n@42Y1j+}I%6{np#nQ{ZbhRrHa2~Wa%2U~a=tFccRDOPp0|w2`$SuiLEn*~#Yv-| zq;4z07&jp-7GT*SFslC|$Yz@mg^9bEL zv4+%sp-&UcEWr5pcZEpzV=7F+BKMCLkG#rN<(9Z1BbUjsb3e@cTXRjRF;;`_=6xym zEZW9R4Vf$tX4IM4B}ez~H6$Qj9=MU@=*VnC$)AZmZWi{)U*2ol^K@*NatcP@TIn=hY-_Cg7-8TuoEbG#o67kDY7s$<>~f z(>3ZEyhpWPcDrPePRU93&!PIYkF{(}QnPYe@n4(0u2xVU*GyF_l~9LpLMtM`lq=4& zjUKC{&jhv!0~HFygS!Kc(?~gB%Bcg-#efQb6pcLN<=gVTIr@fLxx8f4-1x#eBivv` zm*uWdZL|Ys65g=Mf*%PgP7s|x_R9%FKSGICj-6>U9$=GP4HAF1LB`kz*&H~PKs+F) z#vX8>&YW zTvSj=--v?%=LMZ1oA0R&8Aac06ozNl{O40(dYjTd4?eZpSfg{aW+4gb*^7nS1M=HK zdr3^F@{cs@gk^nYyW1OYB0DoU`CqA#J=E*YSCxT86PKj;XK&DYH*{?@x|yj;D_tOXVWuIW zaaD5p!3|qY@0Qx7&sufF&*m!+v_6b9CHQDox4OL~yGYTJX<9}W$ZSF7P)9-Z!x@tW zc6AdBIl>!iK{KER;9-dPN9UkRM)pH8FIIhnr!2Y)SXsH7zbm(*6_bUwsQ#CE#z<3g zO7DJ$pl*0jDCyr8TNy`rx9nDYVHke z_A+A7mCrCiZXL#uHo^e;OMxe)3+|!uz_HEoFc><12Q=Tr1CF!+JNWMn!hsNd&J>$67<-dNsEbrutZhsy$SSW3}p0UyZEK!{w}^?(d&?^n6<5-Qg&iKZl*q>vrO86^2BNGb7a^`6Ek; z18oY!^J~aTw{OuUb4Rd{0!G&~HPZGy$6TECd+zxEX^^~g&0#REpq^bU%Gg5TXIvmb zODN#xqeSYk^_$4Cn0s8K2^Ck=@4GWx=X+#I{G)Bs2G@>|-}0xJ_gQCR)2(}0SB-O$ z)M~iW)c55V_x0&jJMB!T3MMHS?1oxfL`OfiIF%V@>AoCM!;n1~6QMt4BC}+R$e?n# zME;-%2pC`tuVV;TN>J-07~=39=qMqxLevfDGI)&|QA~9Hr*z~@Q9Vo{yjl#bk-d$^ zeSfW~>v5qlVmCjF#zu~J1X`oGgpKYyL}=kBoPST8$)7UWYueW&pXO+4T2RPlE)pN= zU2sZr^={6)Ah9z=-y!?m)P_2|*XQ`XUvnzkasn7o(!uUIaeK+!NUhR zDmdyHtWvS^MI3+G{VOJy&qWyxX~FCXsB8O)w)yVBNR&QtD(dg&j zwtYIoRr@p0Lb6W3Ml$_j4VADM*}Vs4I6^B9*`x(oywK}Lci_8`ew&ITlAzr|6cVl& zGV2D!pRJ&YyhkkME$Df?tJrnERFSfO*FT#-CTY6R|Kc8>HE^s^z7+p4YmRCw z;9*XA7x^jwr732%d}m|UP80TUBT)#qd>3wthF?ZE2~41M!3B2I^dZ68B*{HCW8%Jf z9P_u>z=m#E{tdIVMda8LS0mD3vzRzk&kMMPOhzCZIyM&tVa+;G$rFdUOUz`q0}t~& zEl9B9(u@`{N0f~u2B<5I4j_Fd&^=?fP0B_sGmG2X$2TuRH;Fg>wge5 zi4Dw@C>aJ6b{V$9@E?h)O`o}kCIZKyUcJhAl1nlEg z`<4Zh)5MQn0KSyJ&mXp!0ZAhJmg(d=1;27>LZ#dcY{b;&UO&i=-Hns_?xvdj^;f{)@3X7Tz3nkCo3Pyjwr4Heg3Z%JvAiq6k?E;! z3?YXx_Vzo{+gZi0E3)n{O#Wza&DDwQX67n?nt;7Pi8APfgUGtKl^#oN&K91*fV#(k z8dWvu+~gh91?i6zfE`UVE7S_d75>Q+5}x;P=fVjigZc*wS4v?_`54&`thl|^LCxqT zZ1&b9R(*Vl$Aoaq7JkE1q-2@wzN?(@=j+To{fXZ7pJ=X4d#f5kInu(X+Y3-~6c#03 z0?@sCDB%?h-RjfIhnFg^O2naD1>(3UFcm{fht+kX$GYM$*J>P>EEr#r9VU7rjnu8ADmlr{>) zh7kWxkDmNWOa5Oz?1=UJew&%pzhC}LSKWJNuQ?(Lt-*lTMf{?G)BT1wiwXjz8}Dj? znjuX$8F9ISeSCC@_Mi2;jCIcz)9Rmb(V@~c(NSoJUzDnh0qy9DwKMlHkJQsXawHR# z4Ir;`Dh)K1pyJ4}Nv09V=aZkTu3agRHBkeSD!ttYDL)A&Mv5Kj>(I4}M0t`q_cwdz zs$9;z!pCN17dPK*@c4$EdZZg-aQ8|UZFuBqpRtqwGS=-&z7%GP3@Jl0Hv+gC_UI~js!y(QsrC80Ee3r0`&T8m}8+;Io5+-&zcCTq5 z4bkM-X4G=r%l7Pl&*0w^2A#PW!VQ2$YV`{z^5bMIGgsm0$rDm7Jyq;?QXjzEWPUU% z^ql2*wt|gEBxN4@5~6F59$Yjpn!O(+@+-q!?A<1_GsBcuBKT(5|NFAar@2F_TvZve zu0FolR8fkm+mgE}jYlU@d5?5&!o9M{E?#8*z;}hM02Ib7x9{RZ66TU~LBb za#5%pZj6QlD^KYJpHD}JWK*Ly&jYIvSGzhG*1Wk0CPWc3VF~aBAp07rfs+ZPE6{fUNE|grB>kkGM2h&6mF2H@9;HW$q^xhZL`zm)1zJ$KGy~;w4 zDE`e&hq`|gc(YD*cSe^uvfdRdgdRQ{X2HS=m$#1_xadH^mW1rP8$W9D(e2uO5Mcdznl!JCA{=`)6 z-_70cp4|LA*+LZ{PF8qfu;HA+ivRY%A)~I83>{@ryi=(r=~~=U(q(}sVpIgS&T(VFkL08+_1WB8qNMnI*?XD%3OWX)Tvv-QzyeW;r3BvrI>T~>#D>n3q)$AvWr26 z`#Uqa6pnD6AchDIhH&bEbZRX8*30vP0~}#7=)5$G!w$?CGeQFnFPccSCP7B&h!dp9 z!!xUKgn0lTmduDdv1sP-b}~-L+Kp^|7}0b_^*2_TLGo-EDmiO9u79zPaCo)?kK)2I z5z)>jOMeo7#+j{rue7?d?Ui47&iNiMo7p^W8D~UM9Z$CQh@yjBe9^a7B2(KkFhXIF zXFWlyP%Xe_cTzcPJX$Qs?q(%%Jnn?LYQpwehi5!J*04zX0rFjZLq9Ao%LPK3Er|gm ze5iGCC>Z4edw7IU*d}pOKq%K37>gK{hjzeNwZ?nD*|B+mywR*j2mZmL1R(!wQ~Fp` z5VV%?PGf+C(@oe|;Oni9VN;{`NVFVXY6- zsdk#mGJj*%1TN)s*NK@k?3TTjs;b{TtX9))GV@b9YD%abYKNVMa$joDF8c!?i@Qc< z-f@StyS(;m*!2XH{FT8R9>AKqJ2#pt{3+aweh`ajfX|!umxN}G{G<7Ah&EEx>s0-b zG$<7HH-$Z<@Occ857*>VfGJ?iykhHB*UbB}F7~dQfsV)O<+uJGI$>uVOZ>+)J&UKj zN*<>|HV?ot&F&F4gC{c$CKL5B)8d_f74ntzrVWMP{O+$5cvM)g^QwqiA3|R%afe*@KNY%f1L9+<091*zYPn8F@*k9 z{o$;Olmre7jN=g;5vam&wP8fOCwVKQAK81ppJ2(E>cktu47i5Oe>Cq_x*Epx&7JSn z=nJO4I`4#vpWlkMuYZ)PvMO1>X*Qxqwof$AkHo&ArZo7q{Osalz-~Wlyk#(%j*I|M zF!80;p1*IihXfh%OF!#^n{n|qSy3pl;!70_mEyj_?>i&Ls(5yx{N`<>FT3%0&NbqA zEf4nDWSme76$%5wm*jM$VU*%!qX-!euvn%zxZF&c zDjHcui~4yPs`NcP?80;jp?+s#5@u6(49H2jl8g!~$C zEFlBgcc;Np)~7hkU<6@UQ3439qeXdU!n&-BfYcQn3pG|BZV~ojY|iU_vw>Qd4qJFD zN>BiYlXPAXK;Egk=g~$}@rmn6)U}TZty9$cGc38oFJ3kC4LjkLWXd<{$H-1E%8Xe` zg*R3yC_!{;@XQCXUkRB?lz3m&IS7@{b54OKNzP}}EC?}`)0G*Zg;NHERg0u~TCI>^ zX_zk32{Dau0($7$P1W8x7I>2JTxs?$E9df7th-w-rLH`fxu_ib^|RqK{yci`Nd!j->S7+cnpLXy7-SzS!$AAy# z>fV3D(392BtHV)*j>YzP^FiWmM5|d!ga$IGgcfBnlca^FMP2{nY_O$3lvr|m%X!2E zQfs2A+i&!B3m*7EUwT{f7N=@oYoaqec8%pvhLtHw;c)UQ2{-z6Mh`={j-0RYrbF$5 zlif&tJO0@Up9I8dTjmYn`cH;AEn5m_zvdsNmM~DGd^~jLpwx=jw6A%mwG|)nRv@)< zRh6La5bw9}ox9)gA&}p(VcIcBZ&m**poN34^|c#s7w2*krCUXSiqtL`J7MUsy?m*& zA{;0L%sK0VVO`AFkZIs}3icB=?8)+NF*fz!DX|$0&~JYk zdQXoyd(%je1*z}V=l5-*cFWvvMiP=?|3w{9=`OejU;mmXbeqBU33mAFQG=})SlLl& z<3hOMItpw}VAIOEzoqcs$$tw-^>x+HI;}}x>Dti5Ve)8b!IoR^2{BzkRX5XDVfw?r zphP}-_d#>v0?lSj*Vv_&g!a)y;bfL8RnG%Qw3iN}?l(lk2&!OXtaf6!hg*xl$?ZR*mkV}^qwRokZt>RTNe^G3K zr&NSfX>FkNc%(7!qB|T(jvq1SJHGu8eE8XiJxuZLXF2t!z7*Sb5+;Lff& zwU%8(Z3IyD@>SVVGzHSXtCnYfsN$unrd*Zld*-Hl7~aQszQ2;}G0+1_h`pSUj^TfL zVK+|DFz+`r_OcShv>QaU(f}>|W%7Qg{%M%kK~p0r!<1To_nz=jhKe6WMd4FhO@7y8 z?RVySa-TjYTXVG6JyRh69$&&jCN_-dQU&{e&Ti%hJTy84$bKmQ)iK&(|1^r!2=!x; zwE{fbE7_f2V&BhtP*i8aC9seFWPv{|@{O;0u}O}-+h63Y{K)~aFq+`owTXw-^~NlugGz3c+7crjHcToCea4IRh2>l=<&po%s^g(C zFzDCZ;9CvL*j(=OSvNs}@}x<^N@;2-tY1Dfhs} ze8#S*BB4+vgWI*@wbEb9bS3BqWd}YQTm7XZb;TvrBWGd;oQ}x#7Vrf7Oc9qDQP&>y#|86;XMkR>tmoqIDS+ac55OW&7 zVmLc@cX5HDgGsN`lg^s^bVcXY9f&##orftM6+$ft_%ej`JQE^0r|yr!JaFEoGA|uM z=7E$ z1TAL6-DW9}X>td$up~wiF|`8MF4^7e!YcWpdPOPliPg3_RPUwkrNJ5b;)=5AMEqQA z4AN1Fg{N-L#FTG;N7ctukJ3M5%t6=sQvKUZ2QzK*zg0hbvPWGQP;z5-IQhM6flHm$clH+0a~|gt0ay>MRZ+aoB0BGAcju3{4wC z1FQu(@LcW8J#4D`XAD;dd7>32_2_~OXjhuMWzJQ)91+xc&E&?#BPFiuGUAtngjcc^ zvK{88|DGRIin%wc+IW9BE~Z)elLDt`#W!`B^~ruF(9Rk?EYvky2mHcIn5iWF!IYV* zU6{Ei22zDw=8C?1SxDU{2zy0)v_!2~pX;Ps$PDDWN>VD-Ibi~sr-(|4x0RqCxPlpg z8I8p+)xyCGg<*`P^|0%Npg6*Tih{9_?@}>e*oLVZV;C=R=!oyO$@Ju&{-mBM&lsc( zT9>W5l1UCDss<5i28w&bFenO}v?Xo^I;<2vyU-ess2G1`4E2?%oO_9tio$M-`?;n~ zqziU)9&kkX= z-}OsP>p5E~{pzN#Y^xPtx420MuI{((MWI~xgw8jHy?|H0+VrL<^oJh%%W7+2!x^}Q z+eFeDfGMbN%vb{Y62wh~!Y)u^3)Q+o(~Da>9eDXsc_ok+ zdofZdi3WP01w85`Evn88Uxq%C(x!ed1RxB2RqL2(f#WcE!sgKVAFmz8MpzStl~-}Cene^`mI)*unV4+FfuYX0y7pK>AKMSXS{vn3A;heeye?sZ>i9N7_`rdyS>3&jnD{ZMq_AJZKXQjW zx{^@?#=6lTd_G3LUB*>gj4X)oT|Js@O`P2DP808pyxdNxN8YAW+yOb#oC2G^)UoL_ zkjzfv(X;p3O}zS+4x8~Q_LCMEOSqU#-0$)F;(9)_BE-AS^0!smNRQ~_2JwQ@E_LM8 zch&P*hjeg_C>tddo)=sxC(^_5j^200$G zVtw&bCRl?lPwb^a!G)e(2{uq18b*>zevcdNPQo7zr8>v1^jKw_@$V9y)8HFvXtFr`#}e9ah1R}u?4&8MX(PbdICV(*=AL6M%L!-3 zOgDN}_&V=P?4O4ZtIEw6eQzVjA|ITdI_cAllp%hVzB$48`yh^tY+cxvq%VA9`g?hH zRm)o_mFIx?jGkmQlo}mcHDfiFpt?{uVPPNZ4(o+1L~fWb64$d{v|46HWUk1~P4+y% zZ8q|u5N^mcAvP4@+<&-c<6AH62b}3HA>09W4E7YpKszRS#EdzfNE2~>dmAzHw20NWEZop@-Thry!Ni2R{|Vq|+}dw<*@VZd74>tRC^MmMf;GT* z#B!Pe9N*u(;{l!|11(rTMnR9iu@Zc&bCXAJ0`-Viz85?#E;)uhft|6@RSSm`df>Vx zP|*|Vgu|4w!*%UZ3}Fi%I;;O4-gC>6gOn56r?~P1TO!M*I(@UqvEg0l#GB1i!_j!b z!51pq(KfX^aUX|Ub)a-g1h|1DSb+fwH}jGOjL$P(3Q7=$Fg~L;b zN!`O*qF4v#zn`X!f+6BR%+-)JpEolF{OhA;jn6>?Q$TNnI*N~IF=C3aod?iag#0%6 z-%^SzK~RkYc)Epg6QZ&fWT$=KPH?td%De2VbEQ z;6=Dfo(7Z*Kd#l801ECy4+$2Q=>4jvx1eJQk}U&3~N$l zJsP;ptKmGli8fxX)yxtMQ{MN9R=))JkX5=n;Q;YkD_WXI^=YmUsuC zE^&m@K*6va`2rxXd$I=f)6-zN;ndTsPmhIl#nS;<&PpVS!mzf#g<(C-?R;7U!|+`f zokNO9V@D(66XRlsm9KWXw0BDAYGrFY<`nndfP78#fMdm*_ITfJ<4(fw+GJ=Z>BmOH zt4(En=+e3H!$z9{?BtIdvlza`gyWhgJ{!G`e)_MTNi4qG{n1TW5q~urQ2dyzME}V9 zYb{Uj4`uJ#O3L_tTkpJ9`r|7r)h%Cnrz-Tn)HT!bx%q4vxzpHVjA4w@{t|E#fgZx< zrs`EiO4Laju_l@VyEzyANE}M=gcbJMThbRcUdf2{J*f-{k=0lk+B($S%>|LypAuF zifQeu6G}(*8S9^2^1MCP3+zNAW6V^;26@h*#6j79U5>EM=KH(?pj}zE@AMN4orYZu zL4TVpoo+V;WW=~cd8SYC^^P_>cJHJpf632SlG06;N?B65v+Ew^Hm^~zIp=7&S-C{J zZNu~0UOsg`QG^vt3}Hi#3^e~#wxCbP3CV9cCm&q^?_D~*4XhqS64(ZnlBZ1ov%;_# zWD7as!@p&?J-fRLk9qpF2#N)p&3s|5i6wQ#c-pXiQ#BP(x^yys-1*Y5?7)#bx~0Z$ zoF|5x;tu)mRD=@Qz^YWtHmcGuyem{?zJWq<&g^9P%)V;=*43LQrnO8n#!y>DDv&jJ z5tI@=U3rQ1e^|OCLPqQL`5_>&7{%}Re!9o3QZ~x-3B7*d@P{FdkNN+cp^fmg)7xt-zyXo+)b7LeYe+r5-p+G`URb z4Xb|yseY7n?d=oArEO|EGqjw^)XUbaa(_y$79%SZaBQ&Y7=b~z%qU~v>v`7Cb#J+S zjpl?VXWk12l5`BTDn7{vJYj}=6hKJw$k~+a~R+p!~_+w zg$sgvB4TvVHXRnC;buc!A9w?-3PX>xoO%AsLG>=VJG*sc-de^G@1tRpxc zTlbmwll6^HkIV0TgGD877k{&;t3VfH)zoA&)_wfKR=4`Xrp8XTM0e1q2X2>W_b$9Y zy0~?~cBNTK1iQ|;m8lP9hS)QHtgzmi-2=zcXbKb%Ez!hle?Fs_bF+ z4JL(u0f(sON>+&? zV+$$LxPJsNRYp7zgV!a9Kx&KskEQF5r~3QUdoQxb`)0lIrr+`T{{HE&9v%Mar58uiC23y?uDC%7Jb54aA;Vv6i)h3oS>R3x|-wH1a~zK z?C#$*NWC`RKomk>*DLgLk#yxyc2*L=$)e%oG9bjpPc$RQBS&(N$hw&k^sZ}K^SeC@ zF+x>!>2A2(xkqVdggIHyV0Hry|Bb*aOmF>y-fSHmE-Tue_)5`~9zt$-lAMpL#~S{d zwC`3%j?gMZHVcJ6sNR#ztqVh(Tkb7=u*;vbFpSp5D>fSZer++WrwH!;PXcOKN$G=dTHQ39NZ;r-Bg772MJpQIKof0rohBz~Sg~J881*#M-k~Hp6wpc< z6jWHz&yA1qpE1z0t+egvL~)Lkfd&QVrJHlXPW2BnS%B?dOe@x?%`=}5L{!+_oQx* z1DOKu>_4&pou=bYPF7p@WXO-O=JsEVDR-EP)ei7Rm@oiIE&6_j$P6Vlh7q{{$6zi2 zTYgOhFeELOLpR2ZFZdk*irh>xDZ)n@6~5g6%~_!ufkZx(KFuvzm76f*e8$`Q5W8m4 z`;Trs4J*o9*`%MLqzfogSN%#A~6zGJ#Br8O=7RlK!s_q4a zD~xHzbJHv$Du)DZsN8dhckATMx%opfo>4dii-pqmy}1&1{-x&)Eo;SRzn{W^ox_P-1tOfDM#`pUz%#cMyI!Wtfq#%_Em zq-^wu8VaB~icSs7N(cuB6tjE_sUpnzsem8R${T!W5MfH5Ya7Y-U_CiL4LD9_s3l%I zt*LWG0wWBidqMsn=3$M435VH5i|v6q@j^Mcd?FZ0_d?0oah?OH&Lk5F4DEPD>ITRe z%4Wk2N}wPAu-Y9&?aC+?NqWe=+tyy`^rY{n7K(DN!kUusapwlM-4WA7Pm1RS+1nSZ z`Pw(~yVkx;TPKZjAg>NP()-Fv$~-<}#&O2FT3jo8w!7TQ@6LjEHq*#O$!ANiR&zL1 z>*|Zltv>13)B_5gi8wdAK&KGj)QJtUc(e~<93oj~1F6Zr6FMV-pJp6&^1;26{q_Cb zknS4GFt_C4v@^GRSzn|CJRcakw3_(-t&)g9tzmR}QkUkM+$DvbH{MZXyL4x^-0K<9 z3X1hU5tN!#S&DO0rcGN!ySbnIc;|U)Q9Y=vqa|JLyVck!ytYzLAP^An?`C6BI-KB` z{*GdAyi!WBm*_j(=YT)CYDwXLz8PkEQ1wKcm43h?vLWgN$xF4so-jIRqgCooPKAsDpC?4k(tKweEzA_E_*b|YMjtjG~1Lp zcgQAR^wyoq%PLE`r$#16UgV|K_X!r;XGXj&@BoEt-*ubeO~2}oEV6mk?q90K4V|pq zbF%ohot=wo3K=x#jXsqf!eTHbu(#PMJGZK*Nmgv6)1hQt^s|Q$)D0Gby0~R_lo|VV zI*JLxUH&f!=2`vnGAjw!7+l`uHa)tJR04p-l}PeZLNiei${mAC2w>BvCtWtvw&28N zh2oPpAbJ=~kI>}0|?e*8Tnsd-ADv_H(?fE8cRabu1)nXt=}Td68h;VmMrKI|8a@0=sk z^;p}U!yoQWiu*g3;2`YJp`Czh>>DQ|i<8^0$mP%aoZc5zCPmL*rI`I{e@MM;k~jC_ zy6bV8{oVS`db}8II+7THV26`iLcqw<1-@ zDcQc{eyM`+Rw+e^&z|b~@-=%RcUT?kHAIPCSbo9_U!poN9F*dRUqz5aon<__k0mV2+IxdG&#d^xoTW zKNK%!_b9Ek#3dU(*Q%@apmAB2fdsiBJ0ZH z9z>2JzXy=t6d?zoqWx&^j(pv0Bsfy-#eaL0QS8S}IZh?AK%q3iH}gP4i;ka14P1aj za%z`3n94zV7XV&E4ycG?$3$}R&392qchr6=l+sBlYl#WRiwz8N?8OKME}WwJgut3M zmQfi3v1(Vwo+bb>ou%w;M1tS?*vzcb{Eo^GW>Tuo&9e6LzoBD`=lA$A?UtpxW0zyR zt-k0VZ*(ZgZncr-yV`9MQ`Y~@9{B582*mBC&Ss**R#@y_B$`mrF47x|*s4&IE-U8j z)OcB4ZGR!sJuNNSWyxXZM}Jj_ekR}VbgPT0)RU7J9YxMrIm>WYRaM*etM-bEVFxYA>2d=(DwDjHQzNMRhswLeb-R0I^s? z*h=&ig^!mtfj5kl&q}c{0VFRJIehpuK0=Cie7KR6s=$PY$7EHlI-#2hTVH!Ly zjaGY8>m(YBmbn6p{`m#EoTvC;b<__w&O6#zH}^;^|D!pqY2F>q4;$?;J$9@o znO)N z^3xn!L!9uvGD@JilJiyD=O@r&BlVx*L>55cD&mkt;P~WML;;@jnGVidw3Xg^b(!qe zK$yY&l~^n>r7g%jXL#3{+%wBeJYy=kP{}5sI+3(i#)fBgqI1CRBy3-&E1e(^jKGnH ze#B{Q+D$4SF!$c~z0XturP17b9sUH(q;r_JtM0mS{tUb-&Q$)<=lD~Njzcvnm|SC( z^G@!$W)U_8n8rjab^K)ILs34j-EaMi`-$0BXn`7ie)re8E2%{iE$TY5cbxnmMrx8} zfq1amTrAh^QIng`oulQd0yjN8PLH`kwNQ* zH=Y6K8GwQKp~5@9xqmqARH+pprX^36Qc+Vbyq$O4{ZqB5;m5g$`JdT9JgONg()!Xz zvfPGZxcZXM#V6=*&^gd2_Jv-rBc02~Suq=k-2gWRHuO~0amfpSx`A5MFTtzj6_tbN0^)bvrFBG<(1$JjYCUOV+BZq-as_>q%(Jpwc+Az=0y_IiN_$>HK zY}sBkx9?JQ9%05=-_BnBqCfu?CEt*5e%z0h@C}V+XP&#vgu zFNue%;w^Lq3H1pq!}zI#kXi)W{IW6{}y70_UkFMm*7E|mmtvnF>L|7mFE4s)pY?%>MH-p)~3TB^AvNTzl%88%XN5U-z{=5*{ z$4LKtV?ttQL z5%PQ}c`!<1C5*hi4=RZVr8LJHmuJ|s{Xe?{v&W@1PEJx6*t-nS$(-~G4(RY0-2REu zD*2eWp@Eb8w!jC}0tLK5FBZLB5f!zNJ;g_`#6Na0gg3gux7-jfSCG$P-k`u-q>67I zHm0#dKsJ=-#l(y{9dpmA203iL0#u9H#@X-Q&DT7sC#XJ!UxcRHx5WE4(v2J33Q9$h z|BeeGuPj}4a__h}7z!7xtpb=(u}svlUa+7sf~eTviw)Mz_IIL8?*-^6!GkyJi;ii) zMvm6p5{HECjD||1SARC&@|AP4I&*RUM7L_hYWbn}1Wn#Fl_PU)dj0hmlnHfUZNuKY zKdXRxPb~^;(9L=!L>~vE=NE6AZ{B=9fhKpAsSgaKI1JT8WsPeUh zaF9Jx2M@EszGgln;oqS*Hij?ejWp=KuNyK2pAg3=JBY%g?;(uEipej)bG**+ zVU7_`OSBYk5pPgW=8&RIzIcP54z_ausPSn!w&W-L45Y~WVy^kEyIIE;9Lp(5kJk#X zed!k@SPTOKwb%D498lUCj{k>2b}1al7JLVhq;BNWu;X|cHqz|%NFv)8nBwz|4}I_L zE=1Y`a@14i+DfIM>c=%NBOo3m8=abTE`BreTzLPN9Z<->kWz)6R? z=1l)}8>XtRIRe){I~uv%FbG(+4;$Cf_uIBwmjF9o$J1FZ-qc>8=$r9p|JWh)v`W@3 z>$9i52ZU~#+A4DQ?T1uU)U4!S=N6E?Sj<3rDv??=(-iS{SM&ME@{p6Q&c++_3@!45 z`kJ)=B#Ke}qsgjEdYNB`oD8H3zOKHGk$&%_vOnJvoAD9@{kSnP4I=2@%+3CnRq^nq z5M%I#>u2{CuFP^ghfPZ9f|}exuZS~ueC0m-jV&v8t48L>NxUzLpJ_ML|EI4U_rPGI zFX;6Rgbt)4ZZ3WsZqFeaXm$H2R)|lRSU;(`&s29KOyP8`M6u&qGqydaf?A~8(AfxV zJ}Z$#pj~;#M2cgjsO}eo#FcV9n>ufhEewIE*w4-o44jjKHsw-&-dAshWl89rKhtk| zgRL}wHcfEru2uG#pF)9xtG;FeZiSzBtv}zn>?+%K`UJ=#`WHx(g*_$+nCl2Xa)AN& z1hf7ayL`^6BD0D345b;(Df3iMMv~iBV)dQ);q-`S15O{5YrrKW z4f_aK;5sI?UYJ3)TrV+CUr0oD8{M4aZ;;)TgddFx%lF4p^hS9*`ZuIrY1Y__YCQb> zj;mEP<>7~1dY0t8PZd>Sn%3;aWhyL~p{q1+YX-Z;$`GM_&?u0`YWu!*Q-TKmWwAgR z-XOLO&|8+U5gzn^{t<(s7_cMv2;?i;36JYL13qSlVL3GVm5RUBgUsGsk4=4coHOn? z9r~bGTYE3Sl^2pg)gy_edcd%tSFpmtMPgDwcHW6Y{LEl~~d3&FSQ zXxT^MOF)+!C=2j99F9NC%@4IYiMqe97Rk=DQ8Vk0D@hzxvv6!Ix?L~ZctX^%p(4z4 z5mM<4v$??Tpnzz*`NLjRwMRs*eg0{Po|=qx)lqq(aE<=aK6(6nks(pfp^P<(CZ4 z^CEn@14BB_rEbr8_j|VW8HsQ0b7xT3O_T1L_{nfT>aBRlXSv^56w}yUw%s4yq%%lK z(FTXwoGhi}RPl6*VDJ}Hze|CvXm)V=`M)-z={uakafFQOV4kPdg_79?yt4&d=UwMy zb|a%n51UnaA+Fy0AgNqWVT(;!{2bjye_<=WU@yQRaI}+ zOC$)MF0Ba+r1c5k-vTkJ0_grvRY$poF(t({?|1{|jod#K?l*LD2C+8-r4&yu%x%`$ zlIsj4I~z*Ccm3N6{xt2s@^aGXz}0xVYyXYS>0{2D8J!n7N{0DDOJDUcx@PiO=EXDb z2{#Con7iOm6T!rT1ECXL)1ml-s6GaoO&iqq3ZF~HTd6Sv!y5eR?0x!E1wl{bc!QL_ zEr=c7s#NMSi|MI5(Z`vlH;-V1Q+G~J743wQJ8Eiww5UtJ{A(-+Zkz*KqHJH7BWjg$ z%hVFCws*$f?v-x9r-czQ!3?;mP;9#tc)^^~h%vBp3>|cquc2swnPd=3eojv^4<)() zN+MIreNF)3yT)+B`Dym0+Lu=<&w#C~H6_PaiIiVtNmt4%%o^gfYHG0SOLqE+rA|iy zP3+yr#6}_)0F0Q5H4uT0ORzglh)6s7 z&GopURUXIDpF!szi0bQ2>`T!LoG5+hdZCq8-Yw4{ZC8M8z1O&WwdrJsDksI}4)(Sv z8!5{>^&lE|T6O#;2X)XY)E3OmazdElUf9Ht!EPCNrSl{hA)a-&79e0a%K+lRGmE!r zvrn+&O=kF}ZD8q1dgI5TDp9Fq=-_%XzIPx zx)M%4&OjPy_pJa?uO`T!BM1;HaQ9!Qp0|~Y8x(~#rQp1!diBQT!0QU~e|ILY{;B`y zrTD|MV$D>-+1K{jTd#Tm*->upi+kILf{=@7p%+ktxSPS|uGFH2< zJVO$tPFMY4#<`&YFU)Piz7rbIz~NVaQ|vJ`qe3dSdhfCkNmKphW$1Sc=&$P%vmW2| zZ{43FyOs5PR3-Y$(&+;m0vS#)d$K`AhW(uGCHdV1vPn&C{*<5eORi(9X+IwrJn)wa zwJ7@JBa_LTo#5POcvR;4DOeUbp6%<48n{SC>dip7sxn%l!hmq`LXY_x-RwAUcY?@r zrEd&Z`T%4|SZAxhdmzrD_kE{c8XZCP3hn+vjs=#WK2aP7^dLnLLvf7I2|Dy@pyWfJEQ(sibm+fTDYt|e0OSG}5nnmaYa-B=#87s#tK^JGa z;1h+%Md{72-pXOE(tP8}(&;#Ma?9(P!p)B|ZZAhWSfw{wHB%+rx}Uo3?>2c{?G8d3 zAchT?I^6=Ceqdo{1HxpH!-Fu7?FwK>e-vVFB~b!%w8$Cq4!tu4qOGn|F*T$$N2pG|}7Hcdbz*4)cqzAIFGY=DPzFr={ zucj+v2Xpevf}BbTbo|k5-}l*v9imU67+<;@+8HL{Hl8FNDoFR3O5kaq4^g1c4t&J; z_w`~16sDRDCrr+t(r{=cvtl1>wRrnclBeTJ!9#l6Vci4u(}_(E-8nLAa>mtARYiK(rZj6Q{Z?wY-_)PJQ6` zl{O$FCWCTU9xKi+5Y`-8`IIXqzU(bC9xES;=S-g!Ko-BAWwdrD)VsZgF`x=cN)Fv6 zMpF%&0ZMx+w4xd=iA9*g$$#o$4*~*m(=_{gA$Or770B;hw*N6C(TVD#E{yhhnleHc zeAv*itQv9a>xeOs4e4W0XuuR%b3I8JEW;{zrq<^PqE`IHnc&_rLIiFF-#N++p4~Ms zHC-gF&_(}}9J$>|<6&JSxPO`s*CpA=Ou3peI#+w?XY8}dVXdq=jQ9NyX>RQ*!ZV}! z$os5nMq%maOP>Cv`bu?{=ad>!*A#y+G<81KQQhqUN@y0)QUd2uQ}Pv1PejQOeSjF{ z#&V;dtKEjGsTTLu-kjttnm^S0{_5v|Q8vh@@F*S|c`oIk}8@(z~WklJXC67=jdmB?PsAr5+)x_;w;!Zfqq zsxGzN%i{LTXu$d~_D%F@`{dt$wJTO@hCA2$Z8&E}^KoOL&E1N@L!)2G&hyb4MR%{R zlxnno$bKV`=-?J{nNuWGn5_JyGV7s@qv+SnDP0=}0EheY_V$FD705F}g;rt@q|hOw zPZ?4?DVn{-b;sGcmB27Oz4u(5MhcK`=`SK`ZqB;4exb^4-23|Pv|EiNVhjloMP*Tg<*%xd zY$RRqP=Y9ip)mZm<(E-!CJZa7Ku+Y>@6?!DV?p%e!~A#LvhykK)rA6J#TqiPIf%*+ z@Ioq#l~=VtICfo0TJ~*DNo4k-mKMG)nsHW<(+iSX3d`J+8*=NC3PD)5YF*c8VRS~> zOK{snyNQC^M$6U};R~b|&{kUTZ*$X=t^qo?nds8Im!H3M2$4LxPdM$v*AIz;&jx*K z4&UWhQ`esOw!El&Az0;Oa4NvM%~T8!&L_0G z5tl@GA(_7mGb@eQqC2g4+_I5GOdz&;`nhyxaq%YM@AT%8xk&GKrK%E}wwd3YeE5PH zo5^Zdt+H6_MNVVPFH~Pz)mNp@HEmA6+ltp)kseQJeOLx&U6IDGujo^y(A(CU4~PCV zvRUxQmGVK0iNB1H#f5LJg8Y!1H@>C4w%E6PIR^lCEEN>H#$`h(g>maUrj^u<_}QWf zti6u&V=`7VlB{$kihQeaIl4&&%45MTUeT`2^7p6soJv)Jx^)YO?m6zPNz=s6( zb<;gR_y;)Q1ZB3zmi&Ver@0kYU!=&27Wz>(EFgG00z_mn69HIOK~Gp)kVd&FUpx4H ze}?UilZW?Mo+(K&hht6gEly&frYb8P&YQ2Vs+PCOSv2nkCTBcl`rsXZb5#;w6=%*<1n`hy6!E%WS^=5+;A;w*@Athb*hfFs*x00F8G!RF|;&8vqBXCu?hF2p#zk0QUD6(XWlgQBp zTJ4|$7Hy-yTiKZS!uZo(F%-#-d?`dlK}v;8;8zk}DN3MvoMK0^4V&kn_-q z$<3^qLSTicn^9Ws9f_1e1_$zWGk!B>IJB-$tYg!f+ z4i>rXkJza_g2~tYdH$4D%f>sODZWc`J0;|fs@e}9uh@K>Ke#1&X;ma6uyvw+H0`D= zzjPx3sNyXg>lO4Vt@&2~L#knOaPL&1bPBagUQh!!e05}jgXGxg#(X{PG_oeYB|dUk z3~Afa8C5pb1qX>!I)wil69aJ>#}WKUv#K@%_giM!$_2mFD!Mk&WJb`X6ZJx9+C3lp zWi@vv#X?X0Nf63yEeMdeG(Hi?Yn#CH?v}66_ib>w)f`YybNS|gJ!dt%@2YL@1Hq$! z`A>h+0FN(bJU2TiQ+DZ4C>%4*GjnnNq8HB0PzNoa+S+dZ z8cGX|9c}Z?+c;&n81vOb29=N)dWz?Ta1udmfWN3aMWfsGx=7goJqdzrq(7Q0r0EPM zoS_udytkx3Zs-JAL;s?Qej!P3;XHUR#rr1g3=#{OcfU~WDZsz;nj7MqF!d29GBgq1 z3_k=BGIa|)BrK?3@tC}Vx}T?PXizKo2pdbyMf)IIS(<+<*r-0z<1A#n%cgDx8!2+1 zPNF)Pahb59qA7g6l*XzplhmT+#>{FRn?faukcFn0xy2}-eT5W`SK|Ut)6Ih8DF@dB zC-SyI8_U~rPfcHw-bPbNCup?ytU@aCzEYI$g7Z=Bar6D;bLM$;dxD5vp!$EdHA_jl zb?@xnHy}6tR@|0tS%ZSyMYw%2s!k`MqVZx(%VnlBcPOq0D}3I}r0DDZW4*{cd|BNl zITm3gFymkoGS<8>Y${uIJCCUWfA@ zHo3K7p?xNmFn=_y-OhP?pKF*-XsQ{~ws-<A?O=2A~^R zNC4gEbAJT4(g{%M!v-Ze)JtFi@7H}6IJ`6ZYmzzkw^AfYL4JSJD3Jq_$$H6gj>JEo_`mTL8ow67kFt#BVGV&mh7CInIF8KEQp6w0aztV%O6Ezy7q zP`bZH1+7lmT+mi-`f22Fkpy~mvrhB?2+13RIsQp6oksiBLx=|ix3nr_WYAqK2gDIh z7Ne@3ML@eHe>nLy3$($CZUIqzHM4)85r)1Lsk{BKRi{ zwo<=*F`AE5x;0a;;6^vb7i7}&{)#>)GYD18Pg&4d_KBZK(WBkOevfjxqL~~v(55|; z5+vN)-e5}R#h;EYu`IBg(G;|Z%djxI-uj{PY6OWt45u<@;o3;pe72Rg$6)NvgB;_4 zt)?R2L|Bc)0}U~V=H-L>!|_~Ti2l_})yku>d}* z1?mpmn)UW$fQhBCTpd15?}OuAmSZgAm;1~jN930#y*c@U6XpUF99=vfKum3mYnfJ# zhlGzXMmJpaHkNABN3JwKbdjp;IUOFe7^FrXi})4iox0@EK#-L~Q(-EpRaWZkx-$qgmc zIPi2Cpn$wAJp<6u0Cv>L1h66N9aN-0Lr2--oc@|!m1!?d4raXsJytzpY zgS6-MMQ%drv+B`F)tfdYO+|A20XCazT~=Xd7osx;c6%m>A~sJS&Rf37cr=pF`= zql+-z%3tOjbw!kKyD)u?apT|hwZkt~@ za_-3J?5b~!fy}S>Zxm33mQNPNaiI)Ug&%yN77|201sb4VsIA)9_N=FWpJ>Z&>MD*z zH^4Q2l0p=V{>juthJ~sh;EH?inInE(O5Z^Y7t=ATdh#=De1eP^lf)n8O(wIcd|mN$ z(l(L4PJOM1e-m1F{IG$AQ8a0PqbY3h5kNi!HncAXf0%0VCz2?-)}Eu16>xvkbYnG= z$nm5Z|DrPoZxzz3aU%or3!L~~B)gYsGRES26qL4?du)O@6;;ZhENpGi3%=L!DH7n- zlHQN7jhHjwstTBJ4KGzjd&7t$*&`KF2rbeMo?sqO zIB@z=S`I%wjI646F~Z5)qC+xvx{F;$U#?BReVfgvZj0J_$4NaV5m(pM%WpdCjQ8Y= zF(@uv63Z(6d9ccb{fP^Iv@^D$fBle+({k%(oGTMaDXoAVGOTfO|719?% zz?j2mBvF;3`iak!74_#C|FdM~n=vmo;A8i7D(>!rLp#8U+?|=?DtMuvT;X_*j?>^| z*;ayBYZ}eQMOYd1Tg~XJG%lTf$=lCLx>%>4?=7&OeALxm@SNA)d&Zz}Exf(RY|Izr zR*-}@0LZ|DU%PEXj<{t3c7q=&S>hb zidWe@@XUOT95)A;p^xMkCV214P>@MPj8>j)wRxJ3YJi#Od9OATL^a+x(I-a9Ox2tc zSnQS9d&T^@-YwiDV&J zvj-J;!(8O?&em@XZ*440=-rFX#Qddh<72@ps>Q11q%nS}1<|z>7*H3|Z%CW!x>BrJ2@<4%gJhh0CyJ zcYjF6C^Ndg4#dfystE8r>FFR#2Q{K$0+bQP{i3MSK7^6&vq9ZVN(A`({`>S4Ub(5j zi%Mc?y~b-=BzB-3YfuGp!Vrw;4}^1vWdqO1e_*Gni<2>CnBzA3ff z8&!4x0Vr5|Ljf^lA{B|i7!nUz5{1qoqnfMCkYnSrWhlP$=$GGK>2Qo0Jp4O7qSj?o zZDxF1km?f#Yxeg|C9F{?Ezc(Yk@_E5?l< z=eRSQZkPUNY38VLm$ZV?dNN$fB(qWtq^od+p{vo>7j%5BZ^i9FQ-1Jt`dltNtuzjF zo)Db31{!%9J0nRB4Mpy(b^`gzVG1uw-B;%Xi+s{%tk2N8)V>>PTvjp<%X+dhlkCTl z5p!y2!y3{YH>U|msiiD7woO`z#i(}sWbTV%t7}S%VZ}-9g>6inM$;}GDQW0@jNA4! z6-OnLmqc2?nZXemzZ^lp0pftxrNEUPS$G^_3p|0az1(Naa6}Vj5brm8d%wYycY0s& zqtRh@65E|*z`Gpm;0aQ#GP~cmkfgeMw-zg2z`fcd&ttVBmhj3Im5H3LYuOIs@@lfb ztn)moaZF~?d&TFsO6ZA3trCw=xsRu=HK)rBMpuZvW=ZutSOO1yMI)>9a+ z=}`}fNz+yv><@h{ziaEIN&)WioNTdee~#h|1rF;iGg@K28!TogrV)qd!X8A+C!ogV z><0fx|TNKj4{p*BlF-{bfwbb-U5c zoj)C5;9J~OfyU*6rIlY@0#R~lZNK{CBZ3y0)cVYyW)!lgJ}79K9WZDvFC7mw(v(;6 zp+5598Bb>BB`ZgVx7?DZ?MQ0Gj_9{-ERI%-)>$H7Re5ateI)Ci6zt2~<18Gn2)Um7 zUStG{i@gJH*%fUd;W?*D!^&lqXp4Owz@0m+>Wn|jTuWfZbL0A2{&26@4Bo937KRLOdRR&I5cs%&Xx^tP6gD&B6hLqcP{#H1LS^B2kbgulqR$Q}7wy%K8Db@^^MZ~3 zxiR{ukDC{&o8L<;RU|Qf5jI?Z$@t|*6=C7`&B7HWlUesBE?j8*!8R_O-uL7sb%O`S zytZ|4iNVf3SBA>-RB-)pKwmy%QC~*C{GGtd(4KfZgcwjtnBk`j=<;cDn2FTr4(ff* z6^tq+3|q1U#52}@12AH1e%33Uko4K8Zmn{b>u1~M#1b}ZZJWtQXsVC%0j&ju0e9Je z@kC8}?PO`vfMQHvoZ|;x=tsykeUcz35H7W-1l8(Kqg11R4f4x4Do4 zY;+UG`@iRESrkqQWXGrYN5k7})D7dn`YyWD7HPfrXoMK28(OP?kje6uXzEbFJ`ljT(w*z10PY{QVLKk3xslXm%J|DKkN zqx!t$HORI{YSFt{$SRx9$mf*y*!y_gRO)0TmZQ9-lMAQ18<^#P4E3W-HvmzqC(IEj zj{|&OmFmY$u-138rW!7QpVM-gFL0@n-|mO@zZdaGuRU9Td;bfAae_scN)3HR47sT% zmb@}dUr~MaREUzuPqkM!{uq!CF)Vj|)iZzlmr}%QD6spKm2_KW&ZjXBH=KjNba8Jc zV!{2JO*an5D^Ul>c}TY#i^5^Ed9?bu33`t=_)TIhJ9KI;$?PmZ8#mv;B?Fs@AHAT2 zWX3PwG)PQf^tmzZW4st%8W(wE+R!F;zgj4mL@cKHxO^5EF(|FV<8IJ-x?%B$xW` zknT7vY0jm-@RFLotaBs$y^hdd|0wVPM=UJ)jk~pFf6Xb~e~|fDtp~Sbn$r1qISJJ* z&%0E@@@yYh_Kn7@jE3V)Q|L){p?IeC4L0<1u~!I;dDfJ2cAC}$vuP}VTG1{E{G$vYN|kQuJof(e=+0Oy-r_ToPz0JQZ*^KZ0nxck2xT|(Z^ z?+Q!m&6;F`n4uMxJ+pHsC=_Qx^p*R2S%TMd)4Rj)iat(FPbnO#a)M2Q5vBf5b`0cUtmfF@7v7zs;ENjfaem9npIU5sA6Y0TYtKt9_wmsIU`+k`c!SKqh z2~Qt)1L!z%ui(bP&3`W(uin8MtO!zG*{PsvcGGwx9}L;7Bm+jMDjY9CO)^FJg25!d zpO$n9&3x&}yEjyMVkw#38*~cmUXYT`Jo;=l9S8u_M@w9OD2gi8Q&`O<|}(9VU^1rp>pQ|k9Yc7oq+KR@eA~ z`M(|dR#KBBdCW+E(h|S~`Aq+!wev2$YM8$2KgfA?v&nc))bRGkk@0GlhXBp&>Wu(z z+3c7>>P%i!d>y;kj6zFc=z|BC^G(bOhprH_Q>og~_QvgQCJbE0x zodcrp@-drn52cxtUWzwa^JE9f4W@YHI#U$U4^(dvz4l^=l;CL~Vh%nYioc7L95OMx zMs1z`%tRvbAwT&bC47^;0J_xba{`I|^29JwbplLY5ur`Kwf~g&WNI7DcLIElt$Y5V z9Hjb`mT#$sQGdF)Om3Q zt~{T!I9{iyej(<&z=u5=1v~a$;L2aS4(x58Q+0GTxX9?6)xEQPLKk-5a;U1Jeb-E< z4cAuRb{;#0M2OPbAAn}ii!#xc9fS@!CbXW~^UwC%* zK4C_+dbM{9ck*Y`lSHrpdl7VeCq0(z#IRY)E`yM3Eg9w6OwLBDhe1 zyGR%Y{lnb2O%Mmc7sL)RZ&_{HT%Ezxxt=AfB<4q~-le;2@DG4jU={o>>sBaHv!pKj z6aP<&vtx(VB_ZXqs=vsev-gfHEuVqNM;-+Ltn6_4LV}F}g{hq-tihVoQqA|rLb5D+ zKfVR~=urhd2}wU>GdtV#bxb~W-lgeHolNQhWX<9jvMBMbp$#yKd$gk`@ibYf|C(d?kblKVfk|2dv6O322}ST~Y(% zyx--lv+45NE~qsZvh#!s!tx`=|9J5!U$EpfUoo6`06j?JC+vqvqC<~`n1S42xOLjZ zjlp~M!)-TEZg@TVPTC)}Zp(<*asH``4lNPhLh=Pz+ zN)>o6Xnb##xuV@2vDLP}^8W2^)qm_VNu&@=#V!fb95YvZBd7N2^1b&(&wm}S-(B(h z$atScVUh|aBEx-qS!`4_n(W^8XO{u#W(C;&IDqu?LtNoR^|@)4(S$u?{L?3-{o_TY z0IcdW*|;{3F7#@<%%gYvikh9PWod(o1#gzBW&r*qw#I+Z67c>x0HPG!-RGo%TGI6$ z#;=Iaf-CKHX@;r6wr8(al&_Q}+5TM-fu}_X`dj;p3iRE|0Cnp;gO7PqH+6_H&~=qd zSmoEF3DW`QzkVl>1jbsJ@!u@bN7Z#F;F$s>Xxpps))AHd80m3E<5yTCw9CB>@{|vk z=YMB=h2=iX7;Vxs-n~;L5n*mQy7Fx%UEjY``KrIn^AV-U@UcTSi;GQ}b*`z)&W4wQ z`AyaaCuYtZ=H`BRbK@p=IZx)D33shAiK>t!L(}o9;>W(XQ{j{w1fpqO*s`g1Y*D9H zcxNY=?I~gOBoLIfyIr=IvM2i#R_YQGM+(-jb>4JFdooH|6ok=Jo^W1qLy@Z&wH4ii z)&1cTJQ;9$phRmErwFb`?cMuSJWLzy(AEHB_@FFr*-m@=hZ!u`Y(mqafZXptvc#6t|@gIVuUN7CJi>XV-6$Rk>d53q$GkuhSTi> zWeIW)=^c90Bf5H&TR&`riDZ+C{;ClZG1J1Y?~Z4xxfkECdKUBXX%(8fBOM$ z-4_fzv1ekp#HDsm?ByGTUkyfnX9c9o?#lB93q1jnHv4M(jDS7`o%$T&rHxXGkZ<+$ z!N2oSm(QR~+69j_s;5sl{doLE7~FBJVt4vX>F&mEdHwat6L=AB{)0_|>-cyEWdc>f(zfz*IgRi6!Cy2p@2oVh95pS(o7f zqepWbdl%f$nTeYUb7vF+ZT=!&o!XA~HP@g9HIwpM9BcRet8%Q5iIR8lzEl=fuP zjSm7KRRyrcMRG&319YhQ$#HgOM&~z1(u1Xi`CZqvDKGiUOUjzLTB$OU z?TwjhPG{)(pkS-!n_pJJw#+UC#@kFdWlik@k21;NDI9aHcf zZmRuc1S!T(?Go5fftqC;NE6a$)Bi*t+P(dRRFZo=oVW}GKfwbzAQb|T>i=0M%N(-; zy!oN29Q^ay^z@8?qzuS38AOqJePpn@^wV!9Nmf{3vawIr;Bw z3{IE89a25%+|bopV?JD-(dh${lXO&uS~1L+MUbDDzqs;jz3rL>V~`*!dQ^=u$cVl5 z1)8rVf;fMgAPg`4xkI(30S#wG;DoATH7qAdb5V}PpILKY`yQ!rSy?SEEL4Beqh@nw z@cr`#t%47a{HCA%a@eP8#P8=)ilJce%&bB#kLYBrr-Gl3m8kd2#fknx5BBg}XEHnjLLcuCq zlL?;5<(dqbqqfB@kpf^S5l#rq-EX)lttSvgJYaMk_o9*xi-LhpNEEP&d(mXTCmsje zlhSqYh@aaqNWul0^X-#5C*2y|rVK&uRw^9u91aNd5%DcakbZ7d*rVI6w7*?ohmdPjW$EC(E3WPodOLj@Rpz84@4Aw^`?;C+qHb z3MJdebgKt5KaNqjIkhGGkmFwrnY-fU*r~_-N4=a%O%1lz)7qQt-n%XTe$cO@v}b(3 z+t(R_t+|BS78AAv_#vQ$2Q}DPlxfw`1Tdt5q|$?EG)Ze*frv<)9@Ivc+i&@Sg8#75ayr5j*%{16Kf%4ftx+#E1X-@191a}wcIA4kf zYOJETvsbyE0Yd-1kj`_j%>oi|%fZ;QG)f@0?E?=}B>#d@p(m=i1ww_aYsE%m-L z8}m@<)b(>Ukqb^GY>1Sah@Tz3!F|jy`HF_J9xC_t`OJyQb!m0Odktqk73!-(xX`~5 zcO`-))X@feo*$BTZnDoZPMjAJ(;cVKjWY+h`{nRYM_TbJ^@Suf^{bs~Bvr+0Er|ZC ze^q=A6wJ1mQX`(6^>unAE0I1F5|EAm$^-7Fcz9bn6nzJTc7=xgpw<*51e`ZO$Hw&0 zh;Z`PlY@vOMF`V2EB041jGP$_%9eT>uuxB02=T*N;$(pKKVXR@xl950cV`GYVaf!> zU|U$2AP;=&G!xXzL)m5^u{FA(a$1VzOr0PE?rB3ygV8UY=g}as1cX&MV98Pb$KA8C znWz0l9~RdLSX2-5k^5sm6zWLxLyl=p-)6-0?@z0J){r@?TpanLwT7JywF&enc8Zm* z`$b+VRpWZTC#~^Da&a@mA`Sn?(sf5u{r`V^kBl;|nboq%re#z{l2kSsi6kNG-fXfe zDI_-(vL$3*TUM83lyUDx_IO_-Z@k@pFQ4zvapd^JIXTbsd_A9!=VOrVdPQ#rI07in zH2G^PFCCf$^0nji2#424)-Rp%#2dg^L;4G*#>=3?#0zun|sI3{@Gkwd|U7~ z{oITvtBr5^!tJr-!9R>(izqwruP$-=Y@`12TGRnwJR6`3w`7fZzK&{i6+v81BLcbT zcI;?@JvGV72tIle1~nu}c?ot1wnI#=-F^U^ud%92VB;z?$B8ipp4`&>7XRQUUcEKn z?Wftu9y2AuT(9MM!ZU#An$nyoJBg)+x{B(^GEY-hm|oEZ9sB#?DKX`%$?dBPyrF*w zb=TCsl4KS(jmdy=4A_+h=ViA7n`LC0cD^U+-Cpln-E4ZIyxq8v74ZYv#R$$hIxY#lg ztF3KAC@4OC6l(irPqOyqoQdBAmR>rf9XD{8E^00-pa0vs?!^dg0wh5iK@5;vz+SMT zoa81l0YH=+!pNxuQa-TnqCxA66Z4^(E0FV)dOTa`kEOQtN;tCF`>!D!-R!-@JaG}$ zx!dCXSl&)RBfKWYx%}P&w?CV-6P^n5?;ucp#6H0yG&Odyq-A%?z-H-Q$8Z*hjY0*6ya`b{~yUFpUFkKyu(56*Pt76 zo-oIhxN`>$?7SsjgKJWAiR3)Qiuq}#Ha#DKE2fe_pWUh@yP0nH`I)%?d+_cUWb8nfVk~>*v|bys zqBvNiCCwUqBmFGm;)vq}b%E1XU6O&o0Z9Pf6yDy97QM=;0?tZhz%A`BxDOy=@;cv+ zQxL<0yN4UXB}A16BinAjtlk4poRFa)hYZqRT;zm3`m~LE(`I=VOHlp@LJl=3mws4D zb%HEycjVQ|o716yLXv8LX0~m z6dz|zd_U&HZ+hoOVJUs_b6hNvO+U-tFCOeJnBJCRgc8x;fW){Bf_(fw@bDSl@pn;kUW1AsKQ3b`%Fy-fG(g1+BMBhKQojEm8}<%z zj1m|JS%d79Mot`vTpzhlG+Zc=Ly`;y(A8Xe`S+18hTDCLc|m}9^v55Vc`@kiYvP_l z&LSW`70>Bb!;TImwRrEYlLKgQ^t5REBXGa=Q&A>F+P+m@W~wt~#+r7&jg^;OO%APjiiT?W9df+pPJCm)6k6=}a0eE*g65h$+<>J|EVJ zUMXds-OyJu9G?}uN23u!ZNEBFwJD{MQ5D5Qn0R1ySZ^PByG1`YYSEnwj_e8+mn~SU zgIm|oVYtdg5abO`g(~=F3!T&23&7W3Z4VFyBXsHYqQHGTJOTdG{V?KC2~oG1#L&Bw znQfk|_2U@-AK%(y^aC!F%|>_Y6X)^M0y#wbz9~4eVc=e`dwS4{l`JAGM&ZZ;2j53Wk>Zosrd%`w0?)lQLcrd6vfaKg^k>;`ouz;{TvspB z7-+J?7Wka+rYRD|zpc!%kt49JoD3}rY`>L4=9u_fK=X4WnmK&P3;9hpym1mC&wF=a z?`#^Tbr0$eFJRf99-}EaGkbZ&Wn}vd)V=DWl|7J;TAgW%57Rxy2Bx)@h5H*93E^S7 zQQ8{+vIQ!NKU29+GKkRZNmD$dvwYt-7=ef5d&l8RlHZaCN)4e8O9Wuz|ONP;%0Mhx2bKLUR& z5r<3ew#&Dwq7^%Dm|@_>5m*4))GTys-~={SK?ZDkGm>lIjS9WA({x@8PKP(cv7tY~ z0rWrL!dbS^>$f0h;N^I+Z9N)f^GZT*|3!xr)W8dBMw~j?>iy#>fz^4R7nxEe)uce< zYOliDB6igkuZ1hqhLkOqb#ydI+bsHuHy!fU3Y$eNQ_OY2*S@0F> zwP$Y=Oxx`rbI&q7uw}GQ@($2cDE&`*v)hJ;+eX4y{0$yYtS*ZCskt^amr+wKiO*}7 zae+L`5NJLbMDCiB=MP6V+-Y%ASEKDA{o?Wb(Znkg=A$ix_ddVt+`aup?n|z(BI=-* zQ2~7*erAeIyMOcU9Ucx_S*zU8dgsp-@nhqD(zNxamCB3lq9hqEp#Ki706rFg=1#=Z z;%ESgFkXT(9jDj2{)!&xWezzzp9~Iok?^FwMb3>Jg9AXmm!T-d;+k_ob{s%%u1w|v zPDq{WwIMH(nZbcJ%)?ttR(n89Ue6UlxU6a9tLBpVQzA;327Vrvng>h4Q49}ALp;?2 zV7c)VScmH|P1IA~Vq4wLUj{}UFJj%ExxM!b4cA5gV+mz|*|xeL-(n3`x^ODLtvtg@ z0OnD6q;(NVPb626ef%NC<*fK0t% zECo{<$Chiiot~5jwafe4FiG>LAojcXzgD& zJ;jJ26m4GQY{_xtLMho-X*xhIK^1M)ru#KsaC-=(^;*vu9)bV`3GlEWRB1Xb!U9NS zm$0pbcj4I099G6;R(C)44fL#3vjBz2Nb|?wNz`4R@ zR>_}zvsR&xuzyY0l;gFS>wA`Y1`nT4I037DTcd^LOONb1e*`f;AJmF0o-&`^N&=b) z?p>WBU6Xsg^(7|U*qR!@cOe>f@r%v;mk(PXU}nEs;`=w|?RE*YKApU^&e^CeQRaND zbdLX=pbZXkl!k|%g1)B>LSiiz08k$d6dHY>vUXP|W`>bTO_P8t`~efYuR&Sb`b^yZ z+s~K$==MyjiHf{wj@Kuy$=*2rx@vk0wWj3d8nlJo!WUtaLd(O#^aYll(wZFPdo$zBkiElh3&-ODNxSR{cPSTr1eSuUUrpRpm}`4gY9_DOX6z6_!nLL4;# z=ZN8Udv>zbRb-e8v)yjr1_G56a`L!%c`#D#_Mbv~+`4!RHS^6&AUEvBJ!09fXx!Q3 z$HgeI@-1oa`veaxfZ))motef`dWDy%A8(0d*qAZu`fZsW`)-6){XGxzf11vQck_i# zE$=0~&>-pQS34p1Y=qX8#kil3l+TN0_;CdPZKXm@e9R^qO{c(?^^SNiYAKU{VoxPh`4t`_1jKl<`{&xJ3aQ0+LZmx^vV%} zb@W$zg|TqB<*X$8V{yOtd;$j%-&RBoO#kt3?8!VQs719l37i%7p&xvsF zFkSWnzJHw3cM=N@9M#+Ctdm#~q&uU=0p{^!ZkTO8rL+f9@uV%z$lrvQI^m4Yv#h9yhy5o<)1>EeXskInzc@yC~YD4v@Gn9cpMVPxwJsIoWXPjE8yWtN`u= z4yYkyJ~lM4C8O@YSHyt34_GM8>%I@*(D86WU+J4xC8lAQkHUgezWv=QF~`3=^Z)i;=N;gplS+xX)0 zdzOxpTp@#(sp>zEY;Sy2zoxSu_TT;A5tQVU?CJRM9!lUV3GKDcEszm2!}?DUKs_M0 znx@rEc`5(D+$8xcz>7(%wx$4(O)}PgD%#m{X01(pNIHImcDUzvDL!X2h%uNSx0{ubCbpTtgqGyH=l*y28= zGggnLHwh;qOy$LNBmKRF*cTVuQl$#Fl9`lGADVJQ{K1qr03egySlz(BY``GF^B>;K z^jK*_M7Ee;`Uz0IvbcK!*_QoOg?{w>jUxrXC@DXF^y{_5RoEPFA1%$fltJzB*u8Y~ zX>YD!ghJD~Y9OP*muH?T*Q#(WHAU^3ZXo-|OCEzig;?@kpR1{c6@TLTV8(vjrH+qz zX!Wb+WH{^4c5M2mc5?a!p$q^d-KMN^q1V565Vr$CXtbPX=S7eqeGJ>N^ID|E>L}9W z+`PWm1@SdOGlU8h+Ir+a)C9Pz;&0%e&y!hw3-jfX%mi4UPS5!rmg9fpoc$}}eCU;! zdR8>X6h5FO?Z|_N_&BKsm~D0WnoXm5(0F4Ww8cJoZq~;$Lp?@#h5_M7bRo67i+@je zO+uJ{3arFeu}8h!XRy~u8=q#mR@j^*HqWthP7mQ z<|_Hhk1!wE|LG!w|03o!FJULrjt@PTNPu(DxygQV2PTo~TFjv|vZC@Zb(;u+B=`me zLE|}`=7w7ELgdrWxRJ;Ck<40a3!0Z%d&R0I#WWunXYU&*?|Dl*Zp|6=P3;|fK-BAv z&#VsRyIQU+%{czG@@wkC_?0a$oh)NS%27*iO})h!VMY+LTOuf)`8XV_#@WM^-rdOm z2k5xa9g+4=0VXF}e-5!_`!WJnj?v61@!BzcxC#gmtIctyt!1pY!L|cbq$?J>?*QUq z{z$LWd&`V!A&bUCd?4~YD&nRzR9w9LwW4c$+z>tkEe^;KH{Y9yhCX`6LL0)c zw=$%)x=@)Hu$N2Yl_}jlzL^1&vg$vwmX#a zEnP%^u21Z`ThI&jp|G#%H*GRY3|Bm*O#6Hi!s8_EGXSdIx`)Cz7=s##+1Quudz>8+{P(_KOLxCv9@K(IgHaLoV)w#ik zX9ixhc{5@4DIuQ^7bh=|&=Jxxu~0C}4!$X&%XLZ$P(4#W(LTBV40iUaWml6qn$zy1w6! zTBy?qpL#pYU*|{7Q)AbHl$dSOuMxWAGwm1qXU0NHsm9G*xP!x+?s{sx{_s2K%pi~e z#NqC$QT(x{VAE#8JzkNZG#DOy_DO@aoJfG`JfuULxF-dWVYi5+z3z1jbn;)?Miuce z`0AEMkJ~xK(vJtN6KM}59ER{V51KX->(=Auv&lqKd-h{Q@l{lu-p&^@4Px)}%%$_+ zH{DDRz8L(I_B>n>5>C)vktUvD^H471VG2G5HzZAT^X^S7@2)H;H;+1nn~7j9Eo{WnsHwF7{dvnwH?H~UjzDdSF=8!uvn3!KEZ2Py3&4t^V5r3n&Rq#9SeI79QAruLd zcN^^@q8GmuW!1(NrY{$y-8NY4(|+dWYObIhH<7M*x1U2iw3_pBrEo0PtK(xWL*~1p z*6!NlK$r5jKi{bfvGlwZ+wqo_ZhYEKyUGZbZH&XRBCka|M$f>u|Bg?2xBRyNBsUF* z5f&AQ0pcnMP1bjDeQh^lz=7d?*}UJw86g3|0oH=L)}{-EEck z`hZH8IQS+YVlV|UvBbz+Q&EYU&K7vZ(QnYm9n3NCWS<8XEI|=_p*vR?yHfvSk8lJx z?K-deckuD;7{+iNzptZ{H6_7ibzdM1WR%X6Px~tTmPv;;1;F|K@Fk3Q!QTS6dzDG^ zFsqC;US(i6KTQli3Wd|qjRq>#O8IV)00^6tygDjAY!^@K|m27_mZ{cnB-9)Lk z&cDB#$PnGv(1Z%QDGk%5vmDy+vxd%{urG3bg+GT45oLhGbMgFtiq5uJ{fW}q4cv9L zR{quDwbfT75wdX=*sbIIZhhU=O|Zw%9rPLw)TYIcL~*F}n`JwS6v#wdDGLj>mH7WX zR_Ioi`{=J=k1O9bC9Rm&Ungh#6UBocFbVjE8f7hCYRzPQGmm=spot}aF5c&{F5f=i z^$K5c4iuj=d1TtB;S#LV_=TR62fcGfF9u++rIQi(J5W7Y5s@P8=y_`)e@mIrMRlDZ zxDlWl^Hk_FIjZQTR~)7!8TxSSaw9wLtSCH*cp=HCNP=JM`fo#s^aoE;zDj7fI)({f zmpg*qj3i8)ege*+ro=<39JcxOr%mt%2&eJFE;B#rFaa}&PU7hF(k)u3>x{zG<5PZ5x{Clv#^BRA8ST{Bs>tjm9@tvJB35dq0(s z9|jkJjWH`sPjxAuIC=rDIxckt$gB>2hS`0w(9Mm)-KQJz^MiO*X--hxusGLG+iWB~ z!b>N`-P-ef@3gug zA2D^GS7u_Q(2)1{P>#>qF^{jV zIwt6Y&KAt)d*5`8#PXgn<9Y;iNgPfpM^AKBNz=0MF+y%OH zp!)6l8UghFh354!76XK)%{zZo5O_8Cq+{N%*O*1@v(405fH0SPJK^KY26Qb$y zcJ0}`C;6?^&OacIu#;Wj#>~T$XA?;L6mbkV)dUr+VDBH-9SI6jXnZq`Y7?Y>5BjMf zklo1lnd_L{ zd&`q+k`JZ3tY}6&4~8!mq&1-13HN}A_i&0QYqZZN0{o!>yBmBHXGM$gX}516f``eHyWOP6uv zvGYI=hn6Vua;I0{`017IZ#kY;)$%*e6WH|=Sj8%fygWhTeWjLBchNrpCKUSC!5W$( zy(jItpqwqEC;tYSDDLYuMs8c^0#yX!le4dheVH-8ux*VCTSO5$pzZzzThnu0k92IV zO1R&-1pj*a)q^YY@6zp6#N_808^b@X$9wqZ%s(q6hDZ6#%CSk@&ldf}YHM`Iy=}O| zz~)wQXL<*>kbPfU%SV+JyJu~4A1j{(r-RGXx7Wa-FL+f0fqpx~d)vWK?J}Xm&^v_d z-wCK*fEr<{R^`N%1E8Wgc@YTHNI*3Eiv>-&k9dM~Cs2~ffh}b{47d#72x@qcaKN|R zXi0l$+yw)!!V0v^MvLYS^Y0?5@dFhVi56ETcR)w5=7n_ zN68#$DW+X>iBe4crI!Fg?bdOL=yor z-9uJUJ3-@+L9P*LFPFrH=_)&dwqgc-ZC+y_J_iRpwnW~9gBB>dY%b0!vZ)IQn|J)7~6JxHF7@c!1=Sksln*aJ-xMo z0@bH4FT58HcV+Pr8Q66VoeT}ld++8{=Jj);i3Z3!g+uySLuf2%L)Z@(;H7;wsCy@O zAV1GP`hqA%jwRH2ikO16UM|=*ms5tUK0#`|`**H029lDy*LP1&w*QOz_13<1AyI7* zbHH6!YMC7xNF{rzf%f%55OD_;Ab?D5XDkJt1vdmo<86>I4vgOoku50Rp-`rNpE&B$HgzZ5 z9+L*`p8yNQCOrBFkmdkc6CH z2piQ{CCMz?>~jk~@8&-O@sf{+PCJK)As6jxN| zFxi(&b=V|7_SAkE%YKOv9bsjO;uP@G3;{TQW-HW0J=~& zLWEh)E&+&Nl#%mewp59>?+;X z*C#UWES)ZU^>xQ*e$RBT^urIwKF`}{{;lobv<$Ec7`-6->vM^l9$__3_UhI9mh!`0 zmXkW;33@&p1<@E`%+MS2US`Z`6@>iS%tMakodxv6g#^bl9C0`c8q9qgSfcs)bsJdg z60GcX@Zrg}8O^{Q>Kj)7X4_ARNj;o9*WcpsB<`pVd(gf>5KAz3$i^}~gQ%Vn0F?UnAJz;4w?Rw+UnZi-0yW1>mpX{D$hua7BKam_xIAtbWrw%+F&S4&A=lnc8M1>pR3%EV< z1hUR+@z$pUn8Rk<`crnj18qG%W{`$Z1t%?_I>jAKB2?||i#f6;G%B`Zu zE&qy@mv4E$@#0(ES*~3=oVXRA16_;vM5=1qC7_T`w~OfA(ze%(je3*h&@B~&#~H0} z^Wh!)J6LaF$Sh}VzCJVI>#5kipwDm1DMZ4*<%)Ie;!kvpY<}qBlQk9IwmRXJb}yXo zp7cai4_nc=0=aYei;~2mX%gCff`+c{CbHs-2(sXst#vwP2~j}tr@dfdH1_cLSxDJd z=+w2TB1Sb=WZRUavS4^ZE{ARONQ}qCRovC&@oSX!VI$$QoDo-CosNWgUmLvP!9wyr zb-m!{%TGqmi1}GcG#6z>7TW@KS?fwsqK{CbxhYqeF^`75>08XacDIP$XGqC-9v66* zZ0H=`Nrjsmd2Q!5>@DNUO>td>t!IedO`I4u;F`Lh2?cN$F+D9>^}@O_VcaI+${O^Z z)jvt9URA0)*5{;X1RTF#dCzeEG_|_$<26Zs9Zbygt~k8R=O$AHi0nN3r2bUdoek&t z_4Bl%E@60FPZyp(HyO*v8nUHL_SGl*R{P8A1km7-U~UZRZ?7!2VKQZX(aOgty6!&%i#5yXVZ_onHKv8f5a2rjT4Rx8h~28O|>+*gG*dEY#kYF`0I!lHEmhS)tICK6>QLIds4A-6IIYFgN1C zI#_a+c9jV&I?9DC{U+(NqPNXRoGfTU96iFj(9l7L7Ox31sGfGy>?#ujsl!1;nVO&s zV$F}HLbny7jMae+!~<8N^BAJBXnEWqH)KhQu6b7M%&>*JuN2_zAAG~V(m z+=z#YR^m;MMhv77)rdjNFPYI1y)rq(-^Of>22gz+uZz{F(~ne>G_(t&t8I4Rk3SK& z9`BxbZKoS{^v%M-!4Hk%#>dnsIop=b_|fv+X+O`}TZ83H(Q8bY8cBmQ`eX5V$M_ax zzbY!VkZ<12AnIo@`;+cQ{`7i-vNe%Xe!e!lz}RKN@Sa`oN-G{?X%?reOfgF`I4<7wwm0@ACSPF2`{+zQH{~g(Bp(fcx$&E9WTLGf1rps~*VdJh&J* zV|D!FV~&^4@+3YzJjHO#G}~T=haxSJPL+0DTS|q(i##&qp>!UhbaGR+WU=Cq+Dl07 zlo-YR%qPsb=QH|AtSC%m2>Ey2%>zk_D`T@Lc75J<*Lu2@;L|EVcZQ{O<=m<9frp7$??(OJZ&DDNG-DzZVOAjY9nsPCW>OHw*E2qJ{kslP)?T zK?fDWc562@O`bSy`)4yeIeY$#YjVh1`)2-4v)$bp)a+(0TFY$YY1UZ+{H3r{-ee#-N zUFC&>>q~X)ie=zo+%v{A@Z{HSDEBSOd*f3dfxeJ_R!) z9W3bS`Lo$(L|{+OX7$%*?)RF29HP!#&Cr6sAnJCIwdZT~qPdI`1E+%!*Di80FrHN_ zWJX)s4nz}2Yn22VPcfm7(&3hKnb0ZMuIci8q{F=!eeH-;Ri%aaDZAQyoImIhIrH_= zk@zy9j?bsJL@?=7Z{@IEb-i0n{<|z^ZR?_C-;_Epf9z2xR4{~CUvb5C@?+U!2Sy<# zG~c4^*OPZ!ozEzlK*#$d>mDjQFZuTc@!Z!;4|}XO%W%ipB^N)n^yxd9H5Le4ZQxBR zh1b?PYG@G@OzwDZY{l7>9ys`oJfj)!yoIjjwo;%QC7<*lU)-||nuvbX`&uG!!BdiZ zkDE2`T8d)11NX~<^K{L3Y2HWZF`w(SmnO-_L-T|U4Zht-Ks&J)Cz%m8PLgUOi8ZgJ zZ5WXLTP8fE!z#a6p6aPSkRH61?%7Ou3>@(G`fpVXMc{O(p@8R*41U)a3U~zt7*Bhn zNZwjAW+jw+)_MZUH0mQu*s;2AV%Mo=K|MZoqJM5K6(&_-DF;a%kG*|jW>_5+K@*uu z^H52RLw4fVFHEvtj4|47SGBmzEj0ALpV?D0vD6BWuw+pja|m#63n{hKMaw;g6u02o z&zc_()TFZXDD??*y()u6+%`eCRP$Fu#L(OixS znF+CMYBbqXx*nWW^?w=se~vg|p{Qyi<+z3;-?)g&vy$3-%P@8Yu>=+cs`Y?4fM5W`b!U{O9WNGh7&a)7L7 zq6r~tNM1WHI+z_AC&185wc%?Nddc^}n_XSqEAV6)aVLbmt&CmQ0k+&ufr|PJE_59E za3kTu-|fpM8cdPnkGzy!?Q-XlC6O}?K}=UmMLHgZ6ADjnq5b}7kJxAL ztev*1*nOl?ZCBb{-J3dScw);CYvI!FbW!3=4^xR^afeh8Ym;p~zd;_e-G}sZe3xB~ zCOf%wXUmpw-j1&PlkBxGM)+?-zTe54Z6MUi2HMOyq;H)@a~wX$(D-Ae|9_76QX^3H z%3s4a)s5HPuKFCMFKFH`Xj5A>Tkt{kh}83TUvw20$0(`BWyD_c5R)RSb;sZyx7r&- zKyD>_vbmQ>A7wlYgw!mi!Q1OCL@M*-_&DR;Vt~R}gpUdHAaK+`JEN#5xkkiZCos8}?-6Y;tG^e$xc$Q!f|N@JU>Yc^`4UGo!E7 zTKyizEL3Dyqa;A)98|#N%7G+L3dA z%f>dhD=>8`r8KLht_U={)TvD-v~}q#=kZh)Pu%sRIahq?aMuJX7M_s=jZFtjr`xVR@ zVrh1}m^k04aN~?pw&IWPT$^%4sz$7APTV7oQ)GrEvi=?qXm||Cw-e5HC@Y8sOCx0P^bG>zLimR$23s)>ba(mH8P%Jbxg$%en+ahGO-ZYu%Jh?(}l z#!SHDt+19fBvXwp9L8DFoulTj2sWG*)YQHw7<@ zDP^Vm{%A$#s-SX$d1+GTLk+tQ{SQOx*u<2vFz2sJb%}91c5k>0?VH2{9Rr{LHUkgv zWI;y~YIy9*t;xqTEF+U&pAK)kl^0Xgj}g=p0_kw+YW@z_4;T{aD_Gi?(H&~8j!aVK2g-M($D;o^n8ooakw5?ffU(%dZWI3pRV#{i=hpF@7 zao!Axf=&hDG}$Mtly{l`tsCF;Q@Bh6E*QW*4>DE#U5`wf)RIO9CZM642=Cqn5@>Ip z$i0P>KoZ~goA}kSkiv;469yTJ)7R7_c=)%!=VnNE?Jpd7ikQ4oz83Z7A?-h7%!TCf zA(o6;x5PV=-`AJ1%G6|y8GYJET@qne`cTOqXu#d9)&3bHMj#Sr+-iSQ3?Uba&Uj}E zfCAO4{gVQz4Yv?Zv=ZEfF?4!*loOnkJSECXDsGh2U@yM3bz!jSB^qTDc9BbMbGckP2 z)YXMQi@=*}Z2LbXAe?7U%9>nwq0S z=5^6b^++f4nLM20zfN6hT({c70T|?`JDtJ_o_9~f>|f0jveZ7Sz<$pm+7?bay}f_9 z=5_Mqd+4;+1qkKR2Igyx?;$>Ko?GjDSKJ zJA#a5;Qrbs*3Gi@w&~@q1{=L3%Re#|)ySE%uZH&RG#dHr>!ZC!OP#x_uBy*RJO7i}^4%eeiwKllu~0CEITFVliHp;uy#6tJmE@ffg-fNuI5T0KnK3i2 zzLZowax%RE;xz=-v_;@1w-uG~T>0nh9kwb!OGgAAC^v@v?gQ zQ~qUs4CBd8g2+!UibwgoB)sh7#}CBdl8)QOVoh>Vuxzt#-*G|H7K4N?j|54M*8_@~ zw5^;>SHxg()^`d=us<-3F&t0mxzU{T5d@;58YlX)V>4d23&11pc(QMs{DKA`Qy-&` z5p{_sEI}m0bwf>r4yabD2m<(unKX0*N3jM9C8awQbLPZ0%nPDH~~+O zP^5`FPu_*wd!a&Z3?22lzn6<@Df9M|W4Otwuh}ABcBR$(u2f6eBYJ5b#Px<}N9Hrz zTh}T$ubz@bZrbZb`HkWoXZ(Uh8%)=0|NI%VvkQCoCw0uyPWU$61z*d~5O=m?*#n}a zFVq4)_X_Cky>?B%tF*+c@DK%GvR(~%WUzIcjLO-;{ds%$j8gbQX&m}nyTdlHx)nk+ z7A!#jf;MOHU;0xjYl7+^!?DVZQUDUcLbzKk>&Jl?(Q$cx)NiR*Gc5jt`@h&SoTLYD zZ2Ig?{yRT7^Y@0fi>#7CACJ|>irN#QJ=esK_FXx89jEDOA9aEeEeuk70jYt&&c5uS z=lU?p819uu{v4q^V#WlrU?{TK5Whx!73$3y@5n^lQ3E8k|8_jt02#dHL-H;He8{I9 zlqbQdNw`LpXg@^wefRKrHA;91rS@jI5LJ)YbGCDF=L}xi(7#$7`%KlTapaZP(OPqU z1&aEMec#xh9=Q=ZUVdge(x$qmtRZwd^tyo@SQ>2AN97~1=j?61VB&oLJ$fAs4Q4t} z%fx>Dc(rI*`ydrGqi7Rlc+ay7Je!y9{*JWR`nMfy-FcjcJGcMNt~0WFQHNB_L0OyR<9N+j9^~A3|NgrCcT4*EC>-x35F@Kenu&Y>*@F z$N;Bqa!eklUfVPKyVg3BP|7^4&xm_J58p0AzsQ=YDQ9lQ2ZX&jr}ij-gnKm8LO0h_5I&yRukgxrrl1<<@4 zzDu-aXe_Qj{G%IWr+TR(`3hqI%A8OB9+E7 zT`HiG-k<%}Kh7#sVz5_UJAEaK4X2x)JNRZg{`^)xv&4-2d7`%v!(1vCr4vPdqo{Hn zk$p%idsVh|xfU|qCD;6JA=tDM8k$dIw55d*@`tNkq6F<l1{ZC_OLOrx$3%3*>v(h%E>*=`Hlm` zeQF++f73GZZPCKjnGo$4_h?Or{-r;-=TwJtxu`6zc%xyd3!ah1?lYrj;Uc&&A z*wU{W9x9)9YfFCC@eCWKH*^#40Qq8P@>`NUQ~<7V+gInl$Z<^G9f+sqaXB%+IymFO zbd$=;+pjT|lPQXZ=agIV;hC>V>*KY$BfHvRq<~+vI8iQSjSC8XZ`V?`7TRD7>dO@# z{%g4N`^J_8%wFgSC!R-d^Rks>MVJrAn|DG*zn`XCjw_UTs2#hx*7dnZ;@0iU_VpVo zXK!S6&0S%}2_GG;sLbK6KV4X!pCjGC6fp<u`LE$cRgOjfqACo#$pr_V45_Qe-e4(fK_Eg|sMWGxNA^0+~ zXsuJz0b=F?Tk_&Bsk%ywE!k%O!?2Gp9(b~tDDDs4*rWzfM_)9Hbm^r#i$aofX56Pk zLzN6Ha+xr>yc7fHbAS0;MX432C_k7miz?!*3Ao#lxL=VtjYwQ=q~6qD4MMUW{W(UA z3bO=~n9&q2?RZ)-8dCF@c4@`>HDNh1kG9Q-$xcW=FPt0qCQ%QK`RI&Mok{LeqJB>1 zbKk~S9azwG(ukEgkUieeHm9h3dU5Se(UGr7JWL<>pVEYJhbPDnQZru&J8w#xo%%HU z^$vdZN${s0Hk~Wyy$^JEze>Vqz6h4Pm8>bk?JQVSNbkMRGT8x<(pf<<9Ukr1w{g49 zbQGrk`#YIO=XYNuhR*yf6xDq4NX^hny!(NO(5w0r@&FH0QdD&t17 zq~QbG=Jjl88r(F4=V8|I^BpoPA9^no(YDs9di&LS9;61VeGeBs%8!0jpU;V&J}_*- zYvR}QTJX3@<>T-#z}wB2(j7rGE|n(N=vqZW^#IL{3t~t6*$z&H+sn3;Rr98+I$yhX z5h_ZL7^K6Ihfgb31<|@%dbc4?0TSp_31Jvw?BR> zg~jbzJsvA1#i}=El8AgJ=yTjmja-Oe2Aw4J0P4K_#GM-hsImXAwDJxmi3Ct-Y4Or( z8#ITNb}Yj5fQlu*8OjYgd=PzG@KwVWB``3Lvs?8g@`V)1w5)r265TWn)o<*`up+ITKx&C( z!<2FXZRQy-t1u`Z{G{vO#sjZ|i3>amO~rMYA^q>;_-F_8cBf|u)bDQ{DAPdCsoqae zx?{};vYELr8i+loE;#b7$ca1b)j2VJ9^tTaNzbLkPAEJva2jAB-DZr;JeRG;{+Put z=q#kZUF)}SdF4~r1+w!@*NGNBx?q}+EgfH#mK0*{e1t`cDYcHOz|pwwPqgPMHVhr+ zRY;blVKP=E)?!w=!WN7SbAl)kN< z?abt44m8dIo&+JcEOvz$(e)#U?x*Ew4nJ~i(N+C_zqKWKkk1}n@5}v9U13H$d%SkI z(0|3a=vVA7)$#JD#G0>rR5x#kb}V`9)eXCqSL|t5-?Z(lE-V_ev<#cHOdYefOboTG zYLQ@KD3x~5)eZvRBwrIW7(XEw{+Q$(LNd?AAfn9Rd@{8wMVbU?q16t0KK_A)q$d_J_M+uz-_f`UbE8$ivR#P-a z+Wn-;d1vI~Q2Ut(Y1c=OI^Wn}4N{aDF@ce|5DCi94+&HYM102cPn!=4%!i&R%@NH? zk#0b|W(W2^dTGe(>M&zQ^SfzKKC!LrJ?eovn zC%7bTR<&Q@GxL{>ZI3c>50~IFYUW}>Y>fRS>CCu4t4F_2jXJN!B*n7LdxZU0`AjiB z`^Sqedwh6Sh|q>2d1j_-ajHkaK})7pW!@p*J{|)OIv{KtG%iD8yHzpg4(F$}m>71{Aq3j4*&OtVG z_S9a1)TOrFu|$FQJ6d~_6}O%_(&1?K>~GVcFAnhiT6lKeJ(swX!H#pIL(m_IJHzA0 z(AnR~x%0=1eUal~gy{ij({4iQ6kJR2JsyGmXNP{#Y(_M@h>aBe*mCBYI640yeR17d z10xdzAG{#$5EEsDfrS+U2DXmTKjI&gNNP8my>G4BBz%&Bhf7-@hZ8b0R&U*^WW4IZ z;o#D*So~>MXc^3uh4K#8+ebaiq+v@d2Q$B;;6m(x@q3qlM<(3<%P!Ytu`kErj^lAg zH19=PDwcsBoJuFtDR-7oE5jy35=XMmcO2>)`w9f;sQLYzjo%tj_-mUu@dXZ2( zxbV&tx+V0@6|1@{q4N?x*t<9SE{)Syau2p@Nk)F-dUELF8*4f1PFgMA z%At(QfKkbezPf0}cLZ_$v2H33C*~3a0K)#^pK2Pvx=~Bn+i*e*3mQ*k*A@aUw!lsB z5b zh&x9^gbCZt>)og_qDwfTe%ovCC2_PuS43xN=!iWYLPfXuIh)^5JKDB9=j1ubZ7d1* z7feRhR*hE__{+Z@5os^{?R?8Rm>cEs-O0C~-m|PWTv&CqygrXR_2 zJ7ky?JxDSiiOITKGA06#;M~ z9ycE5ShpvDyN4^377ERo=0v-EiAD8hW!QjmANb9uZ4%A{y!=cC^bKC9lfCQwez0w238tRAbd)ShJjg3gN_z4x0X|tTMt>0!>y(>6$cG;cUe2JSuk9P^^0=lq z5b|)X1Dx+OC0bB`VSZGtTHdQ0GtWMQPimi&ZmITk>c>}5RCy8bP0-;c?IV(Fz+;kE znUaK@vXELKOFN^KF(Gxg{bE5iJGu{o>c&bx8|#`CDdTDRjhR#mz0;2C92j*R|JaWU z`TY6tpz!gNOg-X=%~M1A#|58~*R>7sEK%&2mIc|I1dC%C5*RzyGWO1@SX6KtD%fm} zbWb5I=p<5HFUN=3Q;?mg|H+X(zAvQ(6Ew`aWJwrAW8LtKvaGZwLDi1sd_#S^UF>ZB zb630c*<0Fd=T3Mh51)Yi7a%%IjHE)SYL9zh`S9=S!L|Hxeu82Ziqd{su+7W1Q-(aU%?I%Bdnr)(YtHPrYV7R zQG>uC0|boGD!zHx1P)NW66F;I<^-JvXm96K)cU-jmrk#(J@`*2FhqY=U(8Cs5t)HL z(fV(4|EeXyjngBv{*fv1w*#}Ko!QBGQ*nj#eT%}=4(o)jMIg6Yzy(KtsWU8ZDTmGw zboIjbRhaE+vl@)7jlev`bzEKwV&w}l4d6rmT+rDsRxTe)J*h{v+C6QSZl z-K8E7pjP79#=BC1#t?eFflo9*erKi(TlAroTBeNq(QND7_w45nN;Hl^pT7xMMghqXsRs=-d^qcNav4Bt&q&a!dJ(GUt{m>w9-e;WT(mG!c>- zhF2B91%8(TRJ>{MUMqY%M4jI3IwT0b&GmQX2w}m=s-A%}y=)UCLCV&NElaz1;Jj~n z)vb8FK8io11S*qR>W6k}+B;9o9J7yLYZ}@Vl$8 znPZ#B{v*M`bfN*0qP6^+jUX8mwV=%WeQUo>V$L70Kz|ltt|Ckssfu^Skk?K4_l7RL zKsTm+GXzos7heBRGa7l7xpz&_1RqA2xcKSxo_Ow3n}nxAScxP);aMNg;=!*JxG$G@ zJbcS~%Mv$M@8bB|;YNy}`_l=B8;OGMO*hSc$>@$JySz6R6Lf>MeGR3$aCtAM3mHj+ zyM3=c>&=w$6;IF2Ck1A*EQNsNs2uCWJ~=?%<_l5V1~fX45O5{~ye5D~OXzb!SAUk6 zrE`t6NGZk4OKAziVnOFWZdv)+QeMn4%2Kzk)Bf~S{BRpnP1MfUs{MvghP31Q*9+BE z-Hykb?q=5J%2ZN{A9@`PI9Ki0dL>$^rAEiA*CB;ZRgUnuuY$Gs6P!OsNpI-G{|ZSl zp|EzTA$=-f;91Q*>6i+h4N=5dkO3(&Y`Zk4hg0c&FpXtHG6V7v47m(LJ~e$dpB+D# zom_XF;5N)(78h!QSE2(CeHBpQ4=V}|x;)LisBxqJ?xmufL3PWvAPEe9U~I6?^(NI^ z#U3Pc;Od1ZTv@u913X_Q8v=jvzCGg+${*F++sx&gdauwR)oT7DSM=5S5Rhdu);X!r0Vn1nej0^WS zK53a+Uhl#q+UdyBeQ7*CGa_NoL_Fo&gUeg^+xMSJM`R|tK}J7W?9bSdR2 z%@{>QB1vS+OhZ<>uGP+L!u^0(1$;|y+eGZpbiC+@v&@{SXMLu6<9x4dhtl6a;$N6V8D5oUPq#A_3 z8DGPYGew}XGVT?fYOgoD9+j33?lS{YA(y#F0DCtb(@U@DNjC|1!|Ms+_1=-PL3|V- zJ}?kL(qfIqAxxNh+ryFk_Z5X!xJytdX%Ap>}8R*4 z*0-*`lrelnPKb1i9h7}PERf25Skb|<^eS*Gt|!@K>wVg&bH$<5+3`EF=8d0o`dS-| zXH+41>uz>vvNKgideU_|;!=ARK|6sS8y+1g^3d#Pir8JXYwzTxM+uW$(iB=Ujzbu@ z=uWNpa4H&Fii>UMCk6j-^WY`ixrbN62JPVr2x9H3GvUouietDg`CbyhPnxkGGtrTa{9Z~+u06!iG7|;VX9hD*I)p-LT!{6w+P8n_QWC~d5)60=Zi@J6= zL40KOrkJDMVSo@hQ27Y3kbr>ICIHBTEmFow1UB@LB>#sxug_5bPIeiMf&tHn(gM>+ z4G+zy+dj0;cShP#FVpe~Z%YuVa36k~b4$tGSYBCw;99u&HsK*k|6TcM>shNynFs%qKzbQICM zs&r1r8}F)q*LC~Tb5v|Sdn3BR_lB07$u3I)nb8oc-{zOv5kbL2wDz82nZG1|N3yYCzzjw}?rR@bSeA z;!Q3g+>f}dO%g<)CkeuGq_v)F$t`mfDM#EVd*`{43|YKv=7T3P|(&h|Dg$^2&j_DbJil{&v2G36@mb5lD>gKCqvFQar;kqIBMjstI( zBp^Sb*VPMMyEFVz4OoRAdCcjv_hdYGk~RKN78UPM=qaAok7P-*PLd!daH9Vq2853H zpUVX((fR-4$GgP-NfGo=_RYkI-VOFtcV5mA3}Czo;oKAd8_;i&2B9C4;D^LZUsaaz?yO##>g45(!l4GS0dtmqF!Q1=hx5{W3)tLL^0dYJahV^qhG%7FTlTa zk)*jZuw;|1;!a?of}zRN$UvhhOOy1sfhIK-yS#FfZyA{0m_7<-|FuPB=X-87P_-Ci z7MLg5RN(W#faG&w%F8gQ{<-OgKUsEak(^Us1Hb#f2}9w-G@!}}pMyOu4Mv#eZ` zL7M+^TmM>RrXpmgnIBum4s5=-{;A;EJ0lsX?{1JDlN+7mU+S`rnn({sgKZwHa*9?BMxg*#5F^l(j=7;`LFWz~QxrgooFxy2G=e6>XeV0b$k7 zx3hBxXYGGXn>(I173~E_y5NlF8mY53zc1^~`$SkZU(<4@VjiybHSzy7BjE+JOj4Nu zsk$|?`bmq9H@W^(hW@PX?)o-HgS285@3bQZy#^|Hn8(YRW`Bc^BHiqGvYU{-&yGt? zo$8a#k&r;9My$9+>{I2WEk`B#)V-p*M;#3GiOyKt;C>{lcYil~L&V#!PV$^QurcQ% z@cU=SD}@e|ZG#A(UoJU^o*Qc}ODKAUcw&d{js(uwfc~rzm{p0y6yF5tN7`fcj^Q5@ z{yS)y9`JRxC?gHDh%8>S)FTPGmF>M-fF?;Giw(hg8W`OV{RRM{~!a>dcMv<@^+SU}rFVh+XLF)da8V(c%%&g_GxuNN3!H4(^BH z0o4L8F7mM+rffIO%SijL`Rn)({k$JcsI;uQLnuCHC%j-dkla19(`{`fld1G>o7=B2 zHEgB7|Leq7(YO&VMRshd0QgxGE|Q6Z{%QU+qrmW>Vh#JETtX zZ5z9GNz^+pogBfC7i)x56$2!BYaJo<_yadAkpw8!? ztpjCY{0BVgO<^`+K^I1R7zqyRX5AWX-4LgYUGzN+SIHzJjnepAjG2TF#vy6RqOKTo z(*Land;Z|DCT`65@{};{-QYM`!Wqn&8RcCu2V#Y=_mygBOG1&F@cTQ@h5`rJj@8?Uy?q$=%d zvdgJHXQ$))v37KMkB#^R>%cKoTihTh^!Kk!>jKz;L$*-2vf`Syw80xTCInq%J9-_- z>T?gL;g??6DF3NN-RCieepaPZp;uyt0luXS-Z1pNdY~J>3Z?z~ixwI_XwJbbx1egJ zBg^HnHKU*h#T_S?woxdBce~WFKj#W5Un6Aw=e<0*X@Ipg()w1hnO6ClV6;@4of=pPkH#>v zJW#0pN0h1hoD99!@2EaJK~y(3yLzwrH@}5 zf#F5;rmB9gT!4-J6S9>3%~7pVSLmg=j#Ubqg z?^Ry0 zR4RJ5tTR~q=?9i@*&+8Ary^5dJbicCGYpI%#F@!95THWK6xy3Xz-#7iT_v6D0eQ z5@{1B@T4qCgB7^1Kps6qhN>o|i|Hhd;S(G*0W8#TwLs%Nh))fSTUMXjM;P*)=DIN? z>pt)h8a>XhS!7B`5wF&-&MiRmiH_u(RHJq$%1MT(={3={T)R(As1nFf|KZ8El}X>$ z<9vo8`A7xVe#zBn zaZaIcxtGFcqGfxzDlir33$HIM)t;%??C37?Z1&+a7tilrBX_R8;MMbz_zqz+MPig4O&4>zPo(>!g_T~MUZHZJw^~%@K|mng*Q&JJ{dGL|t`Fa-+P@jlstS0D zgrS}$ABPn0(<@sa30^!nSJq45>Q<4BY9DqZMFcMPX0Z_>U@B*IXbc-|r$7D^_-ONh zpg!K@h<$b(T?$$PSP@?MY0R>+>A@Od;p+|iA4wT$P=xZEP~C&6R;{+Z2U2T=Rbltp z3Ai5D_c}AEY)su#tJ>NKC|}{Li@45l%YK77H`Ug}ImzCwxMG+G7*Bu)YOX%8W7ip-iM z?D{0%0EL&ekVZqOA&*bFI;xR{F2+$t0NO25q>j1^wncvdsL=4TF<7CGn0(wxqx0j6 z)VO7z^5GPi1Jo4UKNECJD-nHGw4(7#mC{*CjjHo&W3(DtoQM(1WDev^Au`tFRB_tE z4j1ipCls6^R*g-Q8@it)Ek44Tiq6MSE3<}6 zh_xU4|EpOYm^S}y{G)a~)l>C8{d8?;D$g{?;7k|wguR7K5ymAMM}n$y zBDhGS_Pt5F)I}3LOtI9Z#Y7$*f?;Q5EsQ##q%aVl!ADTJ%Covj<6zB^)*(v&Ak2|S z)3P8Do0VnP|IsKr)Kz88VlI`CDcAg&SKcq}DN|+s?<+Pla6Elq-Zktym|G zI+ST>B6q1dd7`N9IJ4EdJ|hc)NGyfru78s=ueNQkagCRRvfx3`ELw@dZn@YejX5uv z#N@x_J`u-h_@)<j6t5^;ZQKJgP=84hmatR6h<~%I>;W#}p1(F^Y#UB*o=dt8 z=qq~O@&}rSZ*<3`Ec@Vfc!x|{(!YH7W)m8-SjaxT_c3V#$bA-{U`_SC$A5YWxlHFb z$|ptrbQ1_&ZVCz>;qqQkp^#kiPhu zsPi9ilpuBSiIxgTxe2^+0l<68_E+8W6@aox<%Z3Gls~&CkIxJ*sN;-rB#T)lgl5qK z4A6C$dQlweF-I)f(=nD<=u^5lx~E@rQg2hn)q2plU0;Dw%qxuNb&`s?nIWqj&zgtU z|GW_5dV04YB0|Zgbj&`uy3|(5UuL|~_@hY| zT_IFke9cr~5NUnEOroBUfoz)o+xN>E{^{LmrTTWApXp75lLZ?~sqI%co|*>bjs!c& zGv-gHH#s-hteJ(04^{MZ`TvqU#;a4n;pBJ3bu|{cr5&u;V?NxE{~Hx58D^oa*;{r# zviU^5#pHs;s`-Ma;G_M&(SB#_kf`f1IML>c4yaPrDCAKE)5p8?srfG+sZKLNzJ z0mk&(L=eeG5FbebpJy-|a6fMtr)-1PKo#Nv1tS7f0AU*otSyHux)$uSY3pl08PxiT zxMkg>8`PlBUzSBvL3?STzpg=hMPd4eB(KV%MJ2Vr(PfgxW-`D^r)Vs0@O+X~&~vag zjCnqC^UjLR2(`K>;T;vWB+7e{;**nfZDX97Y6bBoS3~BD#>~aiI#23qFkn+yxx_cbb1xAbqcm(c%9?QOfEcT0b=P$9ieDBW(5RDE%sxH><5 zP(Ucy9^J>09qdQ$R5b9-i}jS<`5pPb8)Bl zw>W-rh@Z5VntWfHFZ0A~)=^`0Pu)X4EV<(A_V;j>6F+d;f#vA+A_+lEic48(to4Ix ze|*RMRW?H7gumY_QG`DMs5yaQX3;TR!<6I06Fw-W6~SFP1l0xT8cgw-7(SFL*+wou zUBse95jVj%|MJ_~*`?`c%h1 zjsEtH{DC&`Bx|deaE8$X|M;0`F0R)0IHX;NbyCNoA;lp&qdyaPRd%(zQvtQt zfLhXMDCm0*?G)rGqzCd-)hVO9*$JMr@&XD3cNn1ee>vG^t8o(;^7?djH8Bg*C{Pz) zgK8Pr!o;~j9xG9%-HAW@Iq0u_H_DZ>ecHx@T~zSo9dHkVq5q0hRMbkFm9ey;zL++9&mRgxvXV_=|x-XQ&{dZ)K@`rSR{td!RE zvC$oM-Wludv^QBw%Wp+1F#QuJ*uy##Eas>bla-u^neB&z5Kz)(<*9h<;}Zs5^XYq- zu@Mkl?@G4*1|mr0aFMoT>o!ny0`fTbiP;df?_(C%B+=^wtIUYq1N;DH%;X%DKvbT^ zQ^Un!sK+H4QjV8zKcP=VA#kgC#J43Ds7UK(^h2~?HCzd-2=_Y49yZhWVN<(EU zIZTOsdmRd|@(X#5M|%s*xs4}E3oO%EoF{E}a|Z1uBC#8mb_@k3%b`Yy`Oo%tuM14J zjwb#!i-gP5?injRWvqxxgw%#!qo(krbRH&-KuRkuc;J`FouGO8j ziF+u2h0UgC^tO({8u6uaFs@_9*_t(7IbaGVYTR}BVFuuGhM9rYCkQBP*AjVNqH&-|Niyt(8=d-K@(e+eC^!=9Id?sYE0b@8u6 zsZyBA%g%U`>$e{NAwC|bP;LOZbZs3gQ z@n3cs%4RcY@C8j5tX9p(F{bBhMm|=Q8O^Wa5KOht18M*krUaf7yy>;Vyi{9fXPbfP z(`+9n(vp0$q>a)^yP*xe>?k);#|2GRfgAsu_;-{3h-7I$4k|{MyyK?UXQGF+dF;dX~AyDz6R>mN85s@Sk4B z;#ai5LAya`Ay*_F;`XSsV{9Q)BpKpBepi~a;YEGKFlSWr{EdUU=27$3@LPX&tyA?9 zg={91DA*NeiI^(q6ThEbX85YBgiaGVywRtpuet!^tO(%ost`D3q$O#j<(XqL{{<1B zmzo?}f>?!kjqYNfBckXvE2Keni? z2=*?nsH-Th=rt4_Au2(pr+6<#^|UDfWtPz%rb`$0$E}1=nbbUVm+xb%3CpGT)-XR1 zx|(5f?qrIY4eeLZ4Bh_!mt4?khV7n|R|MBot;si!VK1@iX8M$q-L}|BbE&9Br-5lC zMCOG46ZObRlnqM{mqlDn;+kz2+Kf5OL4+**_mrxp{Uy$j|80@|x&u*IK5LwQ>A!b_ z)4Mo~MR-dn+P)!}=is-YZk1Hqr2abcGG3zzdI7TdGjF1G%(XQ+CAFjpbO zLp_gDUAiT7u3Y@$NA2FJAdER>JRJC<^U8kaic8@{7~iHTJ-1TOAVPv!1eScpRi|7s zA+mWUb(asZ!O9WmuF94dB33`nT20TrLYv5EtT)qknTX%-#Z&MX4Bt6xdiPTiRAM*_ zzCRqenX0P7P@hZG4~D@3(>k0IR3gWkk_HalgXATuk1Vr8(4PG znIW_Ep{XY=n$gQ?4x}2L(kvA)Ag1Yor^T;T&e~q>JlJE7 zg!;VMHSY)Gp5!x2p61ndlf31#^0c#5&giy2Dh2;j+Q*X@iM|h2T>HWtDD%Vxty-3P zPga)6>kirf#up}lm71jbV3FeNhi*Kw{qGA94l=p?|JEpI2-3xg-nJ8j7?xj9c5_2* zq#=^=SFLj}6VMd`mmp~}kOrcQeo7iW-2(jtWP==#6(G3?BJLer1U_G3MW&E^9gxpV z&shTu?-T)7g-d!xMfx)U>%zbg2tpMB;JQB&-_}hR1C71U4<&>-QW0folZa4|k@$gc zx;zO7v;Ifx9S?5J=Q#EY{@rg?AETXB3bff(G;^q0R*#cQ6}LJRQsGUTy$yjjxEr&+ zBmcXCTXrxuQuU#!5(};IJuMr|t|2A%f1*6{76|egcc#+gZ;?dYlDFR-qRjr`uHv-K zyS-bo?n|8(qmm-&B$4(xvexi>6l*fI?%mzntjmdinH3(Ub`>lB^;c$?H{gHY*|*>l z_=S7{e!yY{KjE=bxD@0>;*>dC@XQwhM+p2EPz(8>dl)nL#d|r06~FYfqe_wlR3ekJ zAs&F6&>dX-)TVIdwre41>oh1oI|XxV%5k6p91mcM@t9dg9{hC)FyP$|f<)oS0fpBa z!vqXu2sT|z*=x-5goo9{+Qber3odNjY~8vqzR-FotlBh1>M3z}ck+N>v$4Rri7S>H0HF}2M=UV8}s;?>4jCsALwN!ce)I|Gvpv!xE)p2xoNY) z@oZ3oYb}|;RLkU1@}lY7&xVY_#mqZHr=^R7EnJ9$2Wqz(izsd-TOG# z^9m+q^jHv^y_@+b+Ecng3csc?h1X-NcGyxcpHrk|J8`x@sS(HF@sAp6yc><)BcC1Ji}O|4pR-z5i;%0lM*T_oieymZcF~)r<6x59GW% z=5DY_I{ykAnEOsN)9$oH!~r{->cylrzyvBL@fwe5E`E#9!-Cu6=o z++5hiuOkN-?f@0mjG*4|_p9q~F$;ZvLXHmqg@7lfL$>k$xY=$kY_I4EI%{&box1As z+TtfXBiJ_`sqvaUMBp)6FvaY6haKAC{hkeRXTo^+I!b;#wosw>zv#JPKHUZh~SEE6*#AL1jjS4b#ohkI*_JI^xhzVH=j-#g>-@jfL8`MXIUvfqC{WaIa( zkb@;5+}{Y|h#+yQx5I~8!()AaqeRI2gvein+A;eXq~0FIk}?N*C~0!MefpJ;TnhV> zPFJOcPKJv9f@(DUCr`&>yQgV{5Ahq$skBw%W4l!d)aH4`e9XSr$??JG9Uonb1En{G>oh;`bv}z_g zkRRxMd4s+t$V9xJE4A~*m;}o2lsYxjtBFz6tTqs+rN=z_ zyS1rq{hi|yAzyQr70(H4D}c3G!P*wIL630L*(CfUfc+fLtOn?UI}-kZ85NL88ZAuG zWOtC7CL;fm-|6(aIbKf*_qPRS&-E&Z;g z)muNf(*wQlS{*GjAaj1z|K>k_{$K581DE4i7+q0AY;OCs| zHR0xz=Z*5j=f|adyEeQ^9GfX}THlw8!N+$f$pE|G7mV57Fv0$9a`w55*TN*;kLs4F zykLZ1zf6i=j7lIx@`A7E;d}%x3G~#NVQY=g)xE&vT+xHh;fQpQ(Dv;fPT&eOZy&DR z1XnHv_)-g!>B}>8@ORB}s{@ha3=u@Sb=D>4iPb+g&X#?Jg2qFrRSSl3LE(~CRbiH@ zVmRPV@1scCU}@4wgAev7tnvpAw%F}rz6U-I>l=q&K*i^HI$1kg|&ZSc&gR^zTeGcS8nOg6Ex^wqqU-Uh;UGblRJRrZ6cb!?R zl-^DZKJL#u9xDrqcgu2dZQP-NkHI8bxl@y7f2!a+;&Se?tx2I!01Y%`5pgu ziH?c_@k3CG9s?fvXd1b4d=|znrZTXlft%K#X;bohF7|?wDw02BQNKFfpJeMHj8%aLVm$#Gm(C_cr~CsoGXdsD7>(Afnf*c^~)j9`5L{efYMu2{rEfA^P`S z%Z;eu;*1T>!lXusSsb!G4(V~onf+81*47GZLkOS7!J#&}T+!M@S8EsH#ZAD8(T_rH z8nq+^jaGz4FW&^xCjkZ8c(NEMn9S!xrgIItDuTL6u}Tv2ku0XuZ$#7imN8Xl;oFLP+)Igc*4X?9?&HowMYI)PsrNk<~<;w0^R8#NEn=Ch~ zFt58Dye0X;Q?#duBlOu~PSQei=4ha|veNcmyfJYz>S<>ox}unC`6InIdLvU}`Gt%D zy463bcTeJi1&+kCMO@B+7)0`APn2<__O0HG^o=~ytE3Lf3{VC>vu=)k1Y%m<63qBd zHcY`RGXC-F>_{8TY_xD3_`ufVQ1YVuS0h9K{uCvIWuimKfiY|uDP)MXj5;zx}(Taj)HPrb;+Ls8a-L<27?#k6N@GZ*9 zamKw$;AAClIGA+G*#Alq&+?8*tmE~$JN?g8q#8EwvA&MSX}o0f8T}&(UUOwS z1~pQ6JP!P?E)lo9lIMB$zx+5(XPwDJ?B&|-`dOMd=`sGdAXc?E^vW(b`JKcIyrv(wJI5V&ZkBthoPfm-!zEDn6Rpprf=ggfB zfWmiG{B&6qVH{Gu!weXrIPHyc+gs`T;B6l!&6y=C#WCN%gz zDM?kXx_-(||JOb@HkBc#N|e@Hf;BZ}Nsl^h<<4sfkP;OCIO)Xl1MzF!c6(ou`A2L| zfByz^y&G9Vc?q^5h<$%DP4oB+{c{QoKk`?ltEbRh^mP4OW6!O$vzbyKzBJ-zt<@4- zExVwAhgc~b6BQ_9c`p!~r1;f=r?~mkaBS^;WY0pp?dktWqhq&^FdkZVrR3E`En*b$LO&sb$}wPM7`F5 zoa=)4+t#ROQ>ufrpAxsh9?@K4zfx(&+~BV&xXq3C6vBI2$FR&A+yAMr%We)NSo55Z zJ2jWLN583vnPn~aiOcJ>~(ds#+=(A z4fazbmjD@fyK-}5diQgED67diXl&xRiX4GPEmRbM)Cfp`=~=b(T+J78r{veq(C=8i zWrxR=?H&F3T)n3B^5Gnhm|olN_Cv*HnKK5%ReN3xbKMQ?&PvU67mqq*|G=2m8$IyQ z_aG30j0s&*zoCkwJ?6*r;~YLiBi@GJ!tQ~c+aDuja`_*o`@f=+K$CtK8=&x9=Qku< z>1o&jbY&Z#?(*f*BVwBO-&}e&h;9)2uAPiB{0iM4E^7$cGiylQAk3Bo=jR=ft zjP?`vb=psN{>SU_iWJ=M(izN{U!~Q4eb5-K_EVU7KdRa1lTbUOE7k7!x>0p4*VEXy znXTPMJxoa7^*N>oC~uJad7OKF*z!lOf}kR2?f*>1Yf>tKzB$ax7d75WUcBzg>$i;c zdcWy#oD79SkP<(8B(f8I$=B?*)x!pv2D^T0$Vf&=r44rgwX%-44ncOF~0)Ygis&dgKoZM!F#P`4zmQz4UkGgJ~2Rih}P zRL|w{$8%iRu@q#-NhO}fTJ(~r)zG!wd)E^Jzf?pxa)LgPC9U|-^uixYTBpOzJ zGJwcaZ}SfKKnr1*NWly&Sqel+#_C~45+lNzu579$?Ucy`kpj0kBi}`0Bso?7Q4}bi zf0;VQA1A%BW4q~{xaK+9qLSO7eGs%UuA=dC&N8{>ZSjL|_R0xfg{kP-65GQ+)65O= z={q;brCbl_bmzaZkI7eb4WzkChA%4(OgC~K$a&mskTPBKPg9&{t<)8#&GDdD9&75+ z7xZ>DlY69JOEK9IRo`v`5|Dr%|5E7QZSW4X znaph}`nKy_(Gm8}gB{FeIVDbKc~Y5z^d(MlUSYVjw~8$EYpLCb-Gru%N)Y#k`i_Op zjOC?OkjkC3z~bV6GE0*Z)N0Y-bw-4m3@u(~qI;R#(JA$qV?APo*I{5yd)89&<-n8k zl$2p^yd&Mk*X;>ptKE?Sv5hJb4M0y4ox}*p2mr*iKqm1ciZ*s48{yv`!0#2aa%j2_ zaBuo*YVLId#OMJE5MHZmhb73Xk+Elz|`or$bM zEL-DM_{7jfB=qg;3t5&DzwY0CPX=Epnp?eHxgoVZYpc6D(IH@0w*F0n&Glh;+y7O_ zS2J>>>vpp=hZaPJBP+q))In)MI7|X{LRdCh>ufi^&BCnctdubPHuiT@rj)}4?3x5~ zVr;zq^9C1wA_-xQwcm6f#6{J9C$o1|^{W-i3O_T?iXLJ+d%v@`iwkfUil{E8T$nkh zwOTllD^SEqbKb&Ja4K9}zX;ez;MWHBu$c$QwqS`%!1~8=AYQ9GN)rO-h)e_EXJ??* z$*o&rL=o|#V>mFq5DY^(WQTi}mC_>66*xUI0)$LQEZ3#33EaFm0h}wN3)`&YFw3dg zncBFV%K=LQw21(^cQ!lpmW;Ri+Rk9hU{1rWgZlM`^vG1|jBgrccPvNHYTf~}^1zRi z4>oO;ViYqu8Q*pUelEyCPtALaLJmMqT$zPWPQUkWT0p*6b_#ZjG-`{{e*gQ&?D`-= zr*g~q9Cu@4c<@w+xa2yVTESE^V=Bjjo-)6?$1}MhA7>=emyClea8ng!cG3jY`X|UbiFm_5XFMsIma~!pWoXi)6nknS) zFzI=XgAg5JD?$|U!ux3DD)1@?JiL45Q$fiicBQWhny*B6B6rFAt4Cv5--Tcko0Gio zrlu}u#^{))?NWZkz>}BHR<~yDW((GRHn$DZGTptH^`?l&?z$Q7x*Qsa(#l&qj^O%%pRk;y=nMIy$^Bg!ZmlSvYts+QYE4%2@DJT8m* z_&@6FSCru9$L)CMd9K2*m?9=H1KWR&`EVuHcI0LoVKQ8ErRS|hPJpq9MvI@YO{uZW zgq%s#e!;W-AZD1B)lpt+HqfA>n_MdP#FIUfJ;RK%Svet8>>zusX3&1_=JDW0@9SHW zSZ5_wmELNFO1<9Zt#dWGh|Oyhd2*y5#{}(ured!bNKwVt_HaiX-&+}ANpJU0pGjw;oV!e7J5^f7uz2FvuZ0Q zF6=nh;_Bf7k1Qiq1E~=ayX&~2?!9GE6BdNE3pW@EokEC@&0oI4Ck{msRyZ)v>j?CL zT2DN(#)1-1G6>SO9n}zv)|&QLJu?$Wtd$j3*tQ!iRq5JsNmlu@P+z; z*{o2ugJFsDCm!w>zov=1<(wCG2WATv74SR@@F~_CC&B8?KU79SgW-pBIdO>DF)1H+ zs)zO0xc$crS3KC0Vkzw(v>=pqCP$^3gOoHYc<>d1_=+ddq-BhD`=Gnv>r0@~t|?O7 zyLxW@WV6YW_U6<3A53&BNuT%K3v$1!X@4qKVy-t+5r5vMOTB;_%qtKZBOMnBd|Bu3 zCs)|QQREo&L@<~2%g2lVT!82sZ)nrKg1pM-Q*mj-|J?m6Nu1m5TFj7g%JLYfV?ts0 z#Bk%17U8X45O#(j2dU0H@bSnA|G9F3E37Udol8R0U;ggnHShe-zSl?Dz!siH$s*6% z*+X4S8pK&L!10Xm*Dag#KUu!GDV0yxh#1%#)srRJgSi-XC>E?XC<@IS!*$c zOyPZBt@QCymK*lXNB4_|U+d$3f$jRei8|xe2x1Dbzp^JVth_jdWZwnY?*iA#K;!}( zGvd|c0WI$P6;LX1R!5+SG{%t=rcaWl#sn*Mqse!=;}gQ-eA_4Ce~^q<)N!@*+~b!G zZMHt#nlIUc_uc=t)pBOmy*4U$_-+4Y*5c?;^qmfvb-Os_`v1`N=Fw2F|NsBk_kCZ- zk}cViEMY>nY?Y$yQlW)}>|@`u45`RAwy12WY=tqlN%n-wG6pr4FvDOl_+5H`KELns z`Tfqh)w$2P|G3Y%=DJ?X^Z9sMF#4TQxY01J#jh=1nTWtj_b4OW#rt&26Vsr|Jx!wP zEZu~UBf=a#g)3;o`J97*Zog&moL5$_u+ADw@)DNO{lC$3D+u3ABHW7X@kyJEF- zOfiJceJCa(5enGa2SO;_T}Mh%6lIkK+i71D&UOUX;{;eL1{i%ILwH>*cu$uST$8E` zd;BSPg6$}G5_K`4HJrken{oCaQpK=~Fexksnn7baSTZVU79%8yF=m2^M7np>0#w5x zTV2|&r$D4kgT~P=35?-3F~qJqJaH;>g76EyLtHzwArfb{$@lFw1Exkq{3f}FJuR5& z?|(J?*5g!Gtzt6%>&ilnP<+go$EEjosV~}F_Yn9-RqyUvraGTxn13;jkV$1pu z|3uhi9NyB|wJ998d3UzV`pY)*b*p>;%fLTjPN##1vHYhS&F+sYulObnXmj;<^s;{P zdgNg<6phuK?^F1NpJza_Lms84Yf_ zP-)AwhtFZUQwa=JZe6OpX~Hq?w|@$1YH+Cw1av&9_jTJjM9qDBt|B7$(`lq>_e^hY zRM)B8*ROb!!`6wdWOBzTehN8Xj|s*Q0j$BZ{>G8x^)^7V)`9%B*GuMcglRywWgy%B zRH`-*Rmo~dGHrV_ZTkr^p!Qby$sPSh+eib#Zj@kH1OdAfQH5hCt3NLo-C<5b(v9>n zKu~rH{Bwoz)MLp@h7Zjkj4$qTik2G<$D+AhK&QBO*-OT6k-mgh^3_qJ3Jc;e;KvQ~ zsb*9|R6$cyT6opQP0i(S)72JJyqzF(WEK;AG~4Z4i$+fCqinxZk96%q`ZxY-{&5EJ zKzx49&sWF95U+O_j;VM|*&v?U6vfZ%P>*;~e=%D?2t~K3b!Mv9@cx`nkh&MH_Dzmg zD)5TJo*kqp&7?%Zr`dfsLF#- zo}v2@Oo-KRVUE>ZhQmj*zD@WqNJ0t^s)xhoh!(4JBu1Hd4j6!k($wVM&3$1p_*Jr_ zo)K7~EX*kvRu@Kty7~-Rs4?_Pxj!YBow9Ar0i!vTighgmVAG@56r1qpv!L{d48>)W z2Y$k4XKZ)o(L6`(9;Sue9}->Aiu+jfWSBlW@$;{et!-s5R6WBdpEX3GNY=1#gfRCw zyUE6KcvPR{yIs9}9p$?ZL+ z(LwX?hdfoSayLbC6*rOntNPkg|2oED;d6!~17A|>$}>VsTO6hTQ(*Hm!dvDV?I?Fk zZO}ta%bukwtjDE@@|qM5U$y-bOnfvSE$bdvBh5yMPacsHf<@*|<|z{G=4!5={c+9j z0uZH+Oejhe-QqsQt?FmudFuKe``HKk=d244)BTP2*3Vb4Lmo{HX4g$%fIbba2C_#R}v;~MRka8Y~Iy~?rV`J*=aM+75<0VbPM2xsxm z|0uKnsQC!*AGTng_UjCWV~}_| zN^B3yic7a`ULi($vap@zvv^PI{#vIm#{m`W+_oZRb^$@a;@i?xTo0KKt0`Cyb{Nl| z*5PJ36|8wK8%h#I?OyH}ibzLBVe|87Q5x<5=>}8;(I_MK!`w3zYuW@?I`sOl31Wc- zRsdgjxJOziRt&9oV$=0vB1PfCHqc-umDLCq-?cr?bzk4K7mnxVK3Gi;hZsS-s>P!8 zE3-x-uYJ;rJbU{F)#(@Ch^Vrw`L2EVpBuXk;WMl6LbBAtXRfB^T0rvEc|88~cQpNs zJMZfsqcKs_pNA1%vpk#mQswOJ+Z!1#PG`-_$9~Xd_jj}!@7OYS<`^aoT&nS%AzirK zCKuG;RW)-;Z-?o-okx|WoU@3{@b(!G*@LQLs1{p4!-qUBs>M6E66|fwTis{UxVkz9 zQk%S3j_EB!=PTjp!;{MJpb+b&65XKY znMcOncG_Go@{C;Xsk+Ou8F$X9-3=G$&)L+stBDY0U_W9V8#|iR8u|0coBH`vO<|&U z_hOz?)C`S36KKb|_Gl^J?}GM(DolrbLGL!u&IW#oIX}z02A%IR%ZD=Kgoxz8v(R0(rqE9vLFGH4`VJA zU6cUfJSRkAsH4x)R(NrKSM`d$Bzt}_w%D>gLw!#5y6lf$*r>Z)mg{76LBB)q_bh=n z9C>K0l~X9PWm(g^t?4cPyRk@`N5;I`*Z)4w#+~#@{}w1set#J*o-14+-qu=k!o1pV z;tN6CTg}1mKqkVdpI-0a5CNGns*%3GtQ~Zm<6RWt7wl(@O7n#!^5|M z@9_;5$ALMD*+)>s5TfDSHfv#2Dr=!MwZ4%Y>ptEJgNYAX+thWcmJ|lFR-2_R=WFJ@ zJ7Jq|n)fLqy^pS2P`8%1+22$ma!{UkKs-hALyyOzCG{*T^=ztwpmv0CTJ%!FogeX$ zYHuI{>2sF+b?P@vUbW0OW=vQ-!`ObiE*|vqzKPGg1KIs{=(}etB4_lto^8hoA!ofq zNm8#(maVqVYPd;j4fRgU@O=E|Ml1enXCiSowV!bJ?HkQ+pA`&myz5W8XXf6HU~W66 zwDh`=HGudu&Q-z6%?d1AUfp7|yPf=W>-5%XXST0|7dT}-8uOZOvDtTgE`^@F!XW4V z5Dt6Bx}HkRf_24o54laIV{si|(l0mZg!|EKrYM>ims-4tAy`O}WpZZmMK&EnQEi3h zRP(UL<5f2oWPWrc3-aS0hzy6Edez%P z?ZydwXUw$e+me@#ryP3{S}w6g3Fu6A`oty)uZ|+>VwQMYrZ_tvQTClV)l19|bwpRc zW3=AcBC!eih5q^;vy9Q>0|X55VsV`7&;H*zZMQ1@SRd({gj8+h{I2Ws$ibXOc#BV# ztNH5chihZ_q4(P6ZD42hFg5#46H<}#R_NJORlZqhz$=@L?Q#6SkbM}Pq z8+Za@%w`VF#xbwrc$k1)r|`h**EPvZRJ)%sD1>kRp=?_)v5!1ad2}ZVs|u3mah(W1 zJi5^3)T{t;Ra6SBuYo!^CbHY6!`ECIZR7G25QM8AA6_2gK(!joR#fjT0smx_>pZYk zFu?R(pEs&R?so(cOVwfBDzGCZc;sIf%GPi!dA|)qB(HgPht!52Dk2&B@SX5a<*{0@ zhS80g#kLdTt^6Dpj_BT)<(OhfQ=(=4y{0|DQr$24<)s>H$f!xl!(}gCD;bEjLg#QV z&n2A@sVWwuW@X6j+bx{D_%^|-1Qx>^FYg;FG?Mi^-XktsGnes9T$r~y^ zrzI+=V(FVLzFBa0JFbMdbCzuZBj_?2j0u z{0`(fAYu28wZ$MZj3J5%INQ#PMG3LCOXcRMLsIA|gU8 z|02o%(#aCc&4MBMh7S%1$Fk`|Ly&P=wU>rW%ghpRqx^j?U%ozehF)8|^#7`$M{_1V zr1N3b7IfO=1E+fDhyCw|raKTZgM@VFr?$8qtGcID_za+XUN%`S{X2< zp4PCg-&+QaF)oWvyou>D)5A3%)%8VYsFX}26A+k&j(r~ep2;jM=AQaYm&FIyZuL#q z_IZoKo=(NX==}-(q%h4xKGfuP80F?rEul0Ph7L-P5O9TUv4s;U*#s5)BXE#E_QYYW zjs>^bVrzCoe&bJ&F|O^^g|who@}wo?dB$LS-r+o_zZnevT=e`v-d$}U3c5Y?8W=M1 ziO>o1BnS^UCoE3+dPH*+xLY|#xu%bJKIHj((_xolr$6+3C@A9bO5Yr1LUSC2*s+Uz zg0OEe&bwVO0{0XBbn0(x(=KsQPmbxp^Ocm}9oeVl945=(b<1oNF8o>GzGWl)WGcBc z6Xs6KjNyUw^$Z8&Qp%pkH??Oy#~Iq><8Rtn`vfIDGqtoP<|Ul|VVY|e#Qod<+1jbE zcvaYS$EKp+p%RA-D~CO-*p_WtA*AI*mU3;wwGvO)mwnB-1ukluJ(D>_|BijEy>0S4 z4@xWj9h0%u{H>la24hv0=S=>YT?CIsremQ1_4FW`19cux?&X6Wz5OQ`l?BNafGksD z-mnDP$2KC($GL(%Oew-SGUy;bbY}%$Q|sdT*(HLsci}1$uBRqZCvs(UvbboGCRH(v zibY@=F&);1`1-YdQqMoZ#`w{i8OcWJ0@i>Q1ptR_d`18wJ))@^thZ20+4)40g=|Yg zwgVwQVj(}WAo9maI{TcEf-x9fJ1@Ok4Sjn!T{|^hd&exK?Ax(4IS`2BnQ8ft6P@U& z>45ZOla_jG?0hnM7LaE?O3F7R?D?Nx985EWvD3UN9UCn}tr{0)+ zeDHU~wH?2|qS%^wm$FtlR>3HJCX!!rKo!T|#KPFUBGX6E0GrkL8gIQ}?b35Pw*!s$ z^R2z|Ca9`eCQELc-wVIK$222CR=@H7oq8v&gf|1UF zu*0S`7s{Q!b;5@NR6ED^0V7stLo9rCvvwXfbRc*5`zvbpPlrk>9|+ySET#ZkG0pM3 znhj+(2yD8ZEln1&IMZ$je6N)vl>i)OR$TD0x$tZHzR!nT572L*I6MX}GkEX!rX%#n z7Nhv|;fcZ-AojR^B<$h{m<%_FT>96?nUTtO5e=K4i{_`q7j^Q|TZIC2t)(ee=EfZh z0Vk|PQ=c(un<@60_B0u?iUW$8I&E`lqNMNlhrFp$v6IQu3i9Vz1R6ciYh? zeqn`Qt|5k*?r^@+?hSr^6WKT=zUfdMzu7zO`XlYssHVYB>_;3^9r8?PRwZor*YkRc z{a1D8VvBOu?!E{a)u7`=`R>E9@6vzIoKY|G*{RZ;J$Itx#%sZcLh9`{|KFo0i2r`S3NLZ5!973qCCc@&x|=v>eD*xi+m+ z>N&)ogz!yECGDu*`jV2Pvn5&OxZ|I%y}90Fu8GMi{}`ht*pA<2`)cYN14V{m1a9J# zUbg7q+kG=)kg;upva|6?M}U|UJ5I!mf{y3hqkd^xr$N%Ml$I;N3Z-d{q?MDpP&W-U6j;b4N> zOL{a>{txN7!8Inlu{)CW^V{q@&oZ;E=?Q35@jm4kqKz?F^_sWB5wKX9x zZNyfvGBi2?&A(JujiBYYR+ZMQ_FKbA3bbfveOul05q>PL|oO`9t(@9 z5||6!y09~&=cS7&zK8Nz{Du)0G!mPsb6Q|YnlY-AB}1c1FxJ8%!}cPhsKav2cjrPe_shQ5ixN^c zs#)nXLk4a>PP0_c_#-vXm!#LgoPLerwNeNA#ipATmQ$w9do;^1S#B`I(Anl=@W!O-6kC~kljU5IZYMS!m=XAQ80{QZxxMH% zW?ft0yx(B=U^;@o-M7Q8{(sUCxY5{6_W zLwQx4%?4O^09kgMi2|06^s3ahf>F)%5Pr7|`gUHb_M2tPjQyE_?aFwno=e`I%8Id! zmfBP@`vU;jsk)xObn}wo@y{^YEpz4}lM$7nNCG=M9V453s*YhEyS3s>`N@XLCnv7# zI+^UZm;i@~9Mkzaz&;XzF?f_K6?+7H@cZkhdp0C>E) z^^NlM9}K^BRs1MA%njwB2twJxc%q^W5p;S6o%hpsuAVYMxI*j;ZX<>0>MeWg>aY3f zo?hb8RXw1h1P;0q6T2h3eC;XxsOvi{6t6x6VcHqnt;rG2a}@X&MSyx9(j0{^A$_?h z%ru=UU!Fig$Qpozx{$5X*F*u3M&*Y#+yK{j`V58t0tYOl5PCqVk90AmMjfa{Vcn12 z@N*>!;biCcI1IiLzBHFjOdCB)TQ49-YazGn_ajqae?JLCPVYg)f05+H9rt+)Z|qXL zIPD3$xRTgs3XiDta}E?72E9_w+A>9EeJH0i(A6?UK+uIg>$&<8a?9j6K(;8rOsUdEutXWyOum2rhT47T&@V6LlAf(GAO=nQ^1MbqTF;p(@Z3d0rdqB?6|P?%xPTecLpc@Dzr zDz;~0Cqm3se?x|{zZ8jqIaB1AP+a2VS5qg+8VjNzVF951HSSk>dXdvoXyJhPUK&m) z)g`b5tDpkI*0{;qitwY*EmvYUi)+V(O#}~Cds~k}p0y$NwW50T&K)MfKwdmY)zLX| z=PlYor|naPuB6j0FL&r?at@Sd3J$sSbH6botxr&%2cF+oi$h)Zn=`x^ZXnb4?h5kh z1(Kq5M^wkH6Z~cFZg8D614Fkpx3WK+)c)kJ=$RO2g&z;Q-6o#L+!m7ZX3y-EE@`)C zef*vxt+cS6c{=Nlyuekq!_&ndC)?VtR>~*RZwnfE%rJNp|7o zX^`8(7!f^Nfg3V$Wdv{Hrq9+h0{El9$h-xV@Mq>}-@n=F#hg()U=-62gZeqo7#gCo zGqSd{deRPAUMTG{rHiovuvnZyZ00p7`-45UuRJ?rD;g5E?Z8@B>BkLkF&;H=^#l=7 zi`~6C2`@nv6R{Sp4CgmFT`zRfQhL;gOXQSD@C58e}}91ma0X#b;^x+MG06$7vV zv~F)`i_Xugf}Rx(5GTz4#)y3MbhLc*OfkDs@dk7q)aQVqOEuv9V!XqTH$!-%0(#qf zD{r5-48#|HTE|@i*wif#GMm^rp3?GD+?ZzXem`B=koy~gzw5qwyukd|CNs^Wm1+D* z#-4)SpBL5oU2+ff+c6})aI>g`qWN>dwd&EeD|x|{n3dqtiOS$=6)T5%*LD{3p}FQ~ z6~ur)Ji)q&!}erOap679DcFVz+5abS5-6ZLeeWDGqplOwDZ#rO#MVG;cckxuY}+Ti zBKcdf${g1EQ1Ng*{^*_y5ioJ#q<9XL*$@$=O^OPHcB?F`irx`w2pv@K^u3ZpP%oUX z0Qq7}l;E`su(0l--+=41_8T7!Ad>8;Sn=b0`&d^9#XBmc!OWhr%|$t`_vc_kkzB6l zb_2ur7lVkMG_anbpd)V7^j_H1XF$k|9H0pf-YpFdC)x(zIou5P+g1z?)Dg4K!ghx7 z=yMBP+zS9|*ZZ`%+K((cY)k3N-Fm~V?=(Xfc8u0rf=L7BMf0~L<{0E8CDrMYh299} zWSYRB`HEC|wUGO-YN+qGaI1Q@aliA|a2w)_wsI*xHJTLuCzF3es5ka1)LM@|>#VIp zZ9M`0EotO8`o#h551Z6|rYxKCVKU)21X6az{DQ$%Trz*QM}rHmlHU!_Q1t8QnJe0% z25d5q6yA{h6XE1Ds?hwkIL6Z>e-cNgb3@gAzjDn|cQ<{2Yy3_?9v%B?w3uM?ApQ;> z*VgW+r$O=tZs2_&Q$MbB)U8OlH(Lz9)od{=Ud$TM*K;-gRpfceVMF510GX}9cc1>G z;vu$&Nh=%nNasrRHB^}>wcQJ?iFEs!Q{+HCf=H4wb3{SwqDR*oogOyEr%+I~vI`t{ zqWj#CeJ)7IzMKrO$SgttlR(vi#_jB}iRL_2yYAjkNkD)$>%G=)xF;k7{sSOO(KD4& zmA02uwUNyD$_=_w(JBK~M^MYCnjRN4Qo}5O{->wPTNy_$cvdx8duw-W;(fy#o!)B} z2l*y)f$QMi5ow#I!}Fcs#|(A})(p{zv!9Um200Hgol! zvDsGVx-%WB@dRbg#g-7pq_RJ|BQLISg&?wJPYIzQ8R0u-WTpEO6h?0lz!}{TdXY@D z8%mn3u%qNxhFWvb!1uJ_EK)y~&Eo^pU3m$P;wx&Kkh>C_hi>8BAG0|Q^%d9@b;W%@}^Cmntu zFEIVsr=#iUi&AEBY?Cw6y^$bySr=U>aK1%;{8dhYg}R7J{NT^*us?kU`~SQziRI^H zI#SGzuzTway{yHbHMYuUo=Jb9ODXm|5Eh0@+8sCnpNcI3RM}_#xeV%Jp*Dtj@CRNS zKVQfe7I=01{4gmZXqMGS$&YmFXbP*l+s)zkRQ3spO~}IRMJ3$)=9r58)TM%<+Ic?B z9)a2pwVo4{1!iYYmT>9_n!o)3)_E9C(fIUjV%fy?!#OHdYl!MgahoU9MX~MrOiRby zK6u=D`l5Pfc}Pw_q(4(J${no7RRiC}xt*td^8CCa52y^p7}+NzUcXmc>}4=g{xo!ZDP9fX?1z2LpkSZ%X(7GrIhOgLfIFMVDoz= zLE*58=i$3|rw=R1j|Q)WH^XbVZ!sP2rF;>~M@wx#@U~3nGGAFdBvNY#S`G+mNPmov zR}pB}CC^dMDRO@L&Vvhm)Rpx|H+e3Z&*uGpGDrB&fFqgQ*6fRobA7s-zYC9-CLi1b zG>waxo(mZa^nMqKuuX{uhe?6~&K=5qjDI^%kS4szAJYd@XF#q}pjeII@Eyo>eML5~ z9>fM7^9vont`<(~w8kH{x|-ZswiUF_>J9OSCr^KFd-ChoQMRAdAYW>3^v9M=!3>9} zHuIlzB_~@3uCyZve4Ox94JD?g;DEp44>mRl_#LWClJ6KK-+3PKlCCfY0C+fspJ76m1u&rvgt%jRUvkHwft=aP<00c|4c0q;XX!08SlRvEhfO5$@x@=0 zI^R7q8Z`GY=DXo&Tffkpa(Dma?ShHL6TWa{^;$$usogCR4ki~hnBNLjuHqgFdUgU$( zSCQNTr{-7$BIesQyW>;IF(%>e(rxV{P=O<^$bx-)U9EWo-P605buVwz77A^$x(EU& ztRY!3oW>VFLOh$3-rA2Km^)a6gG%thQ+=b!3)Hhw?2DXOrh>gdgX}ivCH#$`fEB*P zCKtVriXlimA|asu~cRXuM`^e5dWGw3XvGAx-I?PQ+=s{ z|Ha({;ILL1q*bM9ThLq&F=VwV3Vu{C=iH@|uszr1r>C3k#GidLebcGrhKw?{Kl{;| zH7s&5@e<8u@uH7+;9~!xw{`i<-@LoR+b!`lFwMOxsW@o#P~%($dZ_gm-T-;BKz8xC z+p*+nEq4&fjoPql9$dv5)UMTfT;A}1lw8K zgQt(WB1q(~xh-Q)N4g0fapq(h#+<;l;!?!$xCCK$ljfnsr^(8w*b|WMlM;Y$` zX4p{T_$LAhFt{;3w0}<0{!yU)!$MpBkUAPzoQ%!pX=ziut1g36G}|M=#|Si+KD^9= z%%b!(C51vM(ccUzB3<_Ljg|DXFP9ZedO0s$?O_y+|9i8oR}bw=KEW!cDbgF~H7YnC z%(`)XL9N%rpEK>>^VfaWM!2)QZu(gkVV_e8RzJG~!VLFa$Xlt@@NI24R;_*gh?Bw& zU|4exm|@^iy9G)H@{&C;#Ig8R;#a9rG?KGH@|K|5s*qI9Er|gI9XL9B8<{F8EP@eX zn8t3pGds;9?(hbc&&(9`?j^7Jb zT(xS+qp<4>nn5g!=If3y1c zqubd&bBF)5-L!6F#)yy1{HOR-m;4cVDqrc+X45}S@`7dqjDdNUvI9Vw!1P^?on4iu zLl>Jvud>fX)V;BxZ&xTczA2R?VA5(`g03w@&8BXK;QNZ;>&YXJK5P%mgM<6)~ZE=7~%UaKz^M*6$l^r#M zw1I)@WrGY~u$o}Bl!lz99=luQ#6&u;Di8cZ>Q$#0?*dG>*K^-jZj01Xc$1q(?+r|m zt_YP|9tC}ZS}TQ#;0!yo*FIdh%38tH;COpg7r{K{8H~m@L_0kv%_Xqg_d%LGOY|e>-WS*DF|WLQnf*k0{iC3_j9J?-zCWTMt^u3NSM|; zJdJaqJm`-g@4sUpBAzA^ZynAD-yzrrOCH>4dA33AB0@erBS;XQSpzDK1AhHQqO$&9 zYs{?)j;`mA9Rn$})#n;6R=Ha7eV5a>ee|-OZ9c#a($O5o)blm^N zo-;mHUHy_@I3xJ$Jov-pDRo%^B#*}0e!0b1uK8x~`vr; zG7;uuMvgE|jR5NEBgPI4EmR~tl~C7#VTGP+xjTsAt}WTTs{{3Dsm?vBi%00W1mYh| zP!MX+`VbCiBiu%`GQ1yt5mN&{m3QcF>eSU6EF#$U+QC8yJ8nKb(`$}8Ncoufqp(~IbCWiJn+_7HLfnal|$l8moBz!`&QC-9+|?H7lRRX;Wi)f zbR(|s?4TnoW+AYie-Q%85Dol=9JSjfHvXr#Xo}wOa~@wQD|(Ay=Eey7`g8dW0jT?( z6yd^@mdc2<=DCTBmKS`Hzrr_)9k#**rq7|GL1klTvYaKTPlETCCNI>8xf%s-9g(cQ zRzLCHC{(sP*!cd|RVS3QBsegwxO?`|Y{jtLEM8)O$`$sR-QXKc`6?ywKI95Jgy#XI zXX`oRGl-=uP~UCWad}nKIvkIY6$AiUxc$CJ^v!dxuYF2K>$1h}QmM&Hyp9F~Gy(RM zOv#No)vJSNZ9Q7pu0`laguPYNd0ge_NPAK*kpMsiCny^UR)z{zO;#RH=G8DB2#m!4 zStU=LDbEYnp?F={RkKodCajd8Yll*};WS9}2Td0Ew%rhA5ob!ou8Q-J)3(qm({w0v zNqYdX$`cWU->s~Gr(?f($D!PS*`mYO?;~M;RNk;1@q`^Ne8{`)BMk5uQnA>`J)9}# zd@v!bCmJetPlrOjehVCxuY||0oPC-A*N>9B#g;{JMM&wTzKRc7ffXuB+o&BEQ zQ~%H?6;|B8)y>Lb7Wppo{NFqO;wCwCfsFVL5W*jSqZ18mt0W21e}(K17{kzjT47HC z?GE`~0m+IFj?KAr;p@ETX<}`&y27}T$T8A9h>*pA>c6U)ia(KJun`5;X zYW8GqC2iu#pbGsoUY{KYElt5q+-OJGFWeIQoQIapoUrdpgDH+;HOkw>BO{mqF>;zI z+ApH&TKfs=SqUoe?+VP(Z^(fcx)D2?Jd>zIk10#hn7tecCzpkeS9HhBD0a*y~Ms}FXwG2X-1$upplMr?R zWEmYU;<5w5M%971!t=*&Csr5 zn{LWag{fiUle#_9F;Fohc1qz+XDx_rYdML%iVITzkol(QX9vk3=*qvH=DSfR0;9%u zt-~G48M)Enu?vqnkCXRa%g^F}Ex#GYce;A`Zhgm!`o;!V=3n2sx23Ps5Wz6*J*QxI zaAn~w_U}tnNBRR-%+|_LpOyihp4GB~skMGNTV^nO-ha`l5^h2ci5|BDX(HS@h2Bi@lIgO2lbWYa4x4 zjgy@!uj?XSKmPvMRBex3=dFx5^Iz*2Mc@MM39wzar9yF>A-AS*EbVV}t^@c+VVU`g z2Q!=lV32%f2MPP$&j^a%x5#|P|5$3C*g=DH7~lJhAnFUqWY0V5d8$(EfFpb+0sBiH z*J#z@YYZV@P6Ji|SbW>{PL*~{d;)d}T-1H^?dw)_sGu|C-s(bD*hI{=xR>F6pC6Cn zJVOmd)Q_J$r`O)f?-?})$SEg|S%YYt07Z7qhonH(*s3l}NOrNU-NFpMb;UpSE%j`i zP*pwDUbqc=@?LG{=I%Er?h6jc*p}=u@|75||djmR*|=hGjqn@lj?{vj|}tCn$$gWjOqO5Ro82nNyYqzFp0SJAf`Rsps2a zXLB&8e6zBm4YVOPFc8v&?YiFXD>D%G-Ra9-voI(8sz=8V0@mT!L}p=z#iR0QVJ>=j zkBc4a;1_B?K)5G%j;zsb*~47HUvBewzf0v7;UDJaHITQX;=Cf4sL|DT3wrDu3a0?H(89{ga-O0K-}T{ovI9 zd^7%!m*qJj<;*DY(dPa$@h}T0WyX#WX4FypnH`1qdb)R}@D;v;6$P8!ktILaHOX=! z0^*VZ(6F(gyn#;!5Imx)3k`6ZNSvt}h5t0=bsjY=9wq>+GP^Hv6*wDr6;)8MDtr-Q z*-*ow*PS|X_Fo8LT^ul-p8MoLzs_~(p>F3Blw3pEzNx8>IOGxJa^20-m=stbiFPGnm}kg(nzP+1Z5J|ye}!8B{+arKOm zTyEU<;+`<~J`8a`*DJla_qSB;r8VsS?e7yu9P@DneIjSM6k-#T_OV-h_`O$2Ddnp9 zU@Gf}MvTZ1$Ld64E&n7q_}<8d+=yKJy00DM8Q~laR25h4>zD;=IknD9sv1bVW020^ zW-JR;qot7?PLPmkh(ArQAQF3(lT|jyNzRfSK6r{y$VyTfXmX6^^sEOax{qx^d;PK#fWN~;RfSVxQvNt>7 zl89Agr|gBzX0Ik-TdCowZr?i^eq=Ug&to-CTY(WU-qpo`-w2e?ta4&C7{~_Jq(}i{Tbe!typ0bw zstuQ%t*G7h3zuX$mco=L&phDjM97vR>%*a|-crBnJM$JNH)YC(<32RaN?N`Q<^XlN zvULHgUs&Q(Kfz}=E)?~iAeSXS$ZWaN<8{+4a0yM2c4`Kjrj$pLgK@11WsyF_dR9i> z%BYBL4^|E^1keM0TkLtU7#(^AmKYb-Uy~PPz=|hA;=2^1j$(Xtw4h(h^6Np1XWFib z9|m2|cutcFiP?$KOLS(v;!mcEdD1+3p8S7(^q}eQQ47x_En(vH6QB_=XyYG?9)?&f zivcbO#KXb7P7}bkg;fAPXlJvo4M*d$=i`yM$Lt%TC{>&%a^AC=thCwbJFb)f{T+{l z^X&A*L-7m+m9h*dxd))4sv*?%OjaHc!t7(AW2~^x=Xl`1##xU)ZqZ?59w=$Nc06+B zXn$=m9;PQ9nwzzoIWB0vXim5RG7;wOYz85)jzZupWJA5t0k=~w4qvNbW%m2U(9UqC zY>A(csM`xz5ehGi$k*pyf5rh35v%I`XPsrI$K}6O9H_jEwlDV#^1uKGs}cww@mE$o_;a zZg*wJsc^)ePRVrEW$%<#R!tX5$M7PQ#6AA^r=e_W&YYm0Iz6cX26n_`HdGKHItrV| z46junxAOABIZW74+FTt72?4M-;6u?P=PMe*Odh9W`x)&h{K7c=)L^mNY@-Z4A&bny z2;P8%j-gZ-Z1HaZY5D@0xa|od`%D>74OFugKZ{1xf0iYG4<@MVaWzW(`wdiSnD{VG zS8L3xd?P0&9b)Tj5?w8Q@SI*_Do)2$fWTpw-OwF!{hpb1Rrg!hm7w8Q;A9)~3>z>F zNx=5qpQY_ezfe9@V;|*k+`B`=Z{vmQ+unQ(Ya3>ArHxm~=uo_sD#HYNn+wP|WGwjd z$bRoWy|O}Uqc6Lw1>jP&yZi3|;o;w9BQ@;879g?M<9v zVIZEOD=V|Nc7jYidzyoybCE-khp*1b|GQn>KHu2Q4A8t4S5(MiFrZE3 z5LlT=kSQ{yi*Y?q5dz_MBtSXeZ3sO{`S~wwVRil{1MJ?T(0wof*a0ytp1!4y6%!-1 z6DejQq!SmJq3z$zQJs7BSoF)$qx<>oj(lnPsUP!;XR9Mqsb}`SKyLD?J^R$9a9)8N z_zj1raj?08Pq=_g+>BUr6XN_b;_D;9s8g z?xF^r#W%?7N@vcieGOK88v!qo3pvNq{NUPsS3bw%{AGYTX_w7(s-Fxc`3-i@b#^8$FcC^&1`Qfi0j}7jKU>TJr}v0w3U9xF@b2 zXcbKeMGA)Ty>x1j$ODXeRpjPb;IhUqIT~!UlZe+w04QCePsBrHxs(0sSZoMg+BZ{_$5hS z5gMB7k52$D61L+i*BNY~q!;5`=PC#jtf=<-a?nkS|EdpVDEQSDU+C;=3{c}4&ku8c zBxnY0tGtVtobX%yb#&Hxp?bpt6YD!W;0O_7Vif^4=GXTS@I|TNg?LvLfXReWJI0~~ z43tUngC?NpJR^N6v8c-}KLITcK4M{2AR!JA*B2chcTL9-c#q^?U97xMkv&EXZ8Hgk652ve}~-qyS-K& z6#Okdo$EJZu(sUrC3kRzh>5}hBGTe1VTIp_+}s!%YDek#wXCrI8_@N5N@I}mC;~vy zkIXhsalq=v{IA6kCcn!QKCJ)7#~}R+u~%4tmLHHM0U~*u^bwJwM1jx7K%pYai^}1~P5b4%b%Rk$=QPrDn-&5nYc6-R_Lm?b~APMGIK$pd87rS;nLLU@F*AA~xo7=b}4j?=={;t)`2C$N43KN79n& z3fKE>$w!ebht1Mvx-}4Rxj(CnZh5M}xfoN_QN-49xF}8?M;&{Xv4EC!Yft;~tRov;L1$|En^h zye?E^TOk6*PMKk1N6j$9lcQ&YYFXg0M%>N=I@A#}D=M`o5gAfh;k3oV1T%4s@~3?B zXq^+Fr{qs+(>f4GagDO!WTg>Y;}{+4XEDeLii7g;Q(_+MocI9%FuyRt`ZaYp%#qeN zRdTDMa@Pqk(s+kv46>7r-IXT4JlrVwmz2R?;xj?X_#~!&Q{|FANX6X*WCeoE{A9g&wPL+Q+Unxxpis7h(AKE$WpbCV5Fq826fwJ6inz7t zk>-5a%ti4?Of3$K}3p_pzie) zX|jdm%H8A%ca1J#+@Q$@R2^-?jQc+&{?Ew&lpAE@{2Hh`t$j!|~GX4gVXC zS6hj@x#I_HLV#O_aSWZ$df#O=`5^@(;dd#)&+rasPDm@qdDTcM= zC4yrG+Slkjd4Q1yz9HU2`k-M57988D%y4l^GrHn-^dN)2-j>>1pqCZn0nY94AB5SR z+!$=$&3z5u&O0E3J%;yHCl!9 zu%A%sv}g-1e#PVekx#@4-r1ccB?SE4o8b4;;MOPnlv^*+v$8zb7)GP_xh;mO<+u7O z6pZ$2b2JX@f3y%$ez;@#+}~>Y6Xg=>sH;;qqlQf9`D7AUXetzO7&J1@RSrB^N!?uA z`Tajq&ax#u+h0k@Vu+gQ+VP0aK-n-E?nXFDJd);($xqWCB&bp0z&8S0Pv5cb?pJuK6ETzr zp5b{J2Dn%rPQZGAz#^@lvsO0Mbaz=OTEJW%GQGMxf>|PnKu5IUR6q;_N)iDI?_M}q z8}Hg3fKo^5*!rwf=(BT*QvYC=UFTy6i}Np3y34eS$rZ}zm)>yNQq!rFU4M9j*d!|9 zo_#EGT>$3BsfUr7dz%?Pc%!zh#i1)oVwREOO;}lOuPr^#XE1bJ_e@KhCAtLk)>pNDx2);@Lsd<6VLL2^oyh6kW)wrE( zDBrf`b%cea$hrQ`^8Hho>G09E6nHX-wvzVEObJI0* z6yNWMzPmMoc;~yGecAQ^mc|oN8RI^mnR^Y=wgqv`D3kM*S$HlJ&1RU^x;$Z9y=P7i z3_#a@F5q}9*7=3BLw%zQc=thO;5U2rSh>M!5~Y#6|17Rz z54+uP^_Z`~H0K1H`PA1KFk9JJ&h?kY$f-Xb!-(Mf|2f0CJ%1jEMYvMKNqX?_Ph_*H z;l6XNk6BR@Cn${Qvy{CXgs}YC9WMy^pxl74!lgzzL5S%<9M*VOdfvj582RP%9KLawyyAo0+qZd6#VNms^=v_C+vT75UOcNpL3d&OKLX3JO zwDq#zWf+nzu8>y{YkI+BPb3TpEBzo^Cu{M;w-L|IT8~Eh9;Ebz@d@T!q4<2E1PAH{ zSxCY~ni54G{@ZhN+J*VB2?GT+FJ#JVJG$=2SJ)!LXYNqiS<7zmOTfN&J9*tF2;%BG zJQ6VM2uX2^|E|v4ri0z2QB2o$a;3MGkA#btM zp{Uqmk&)fCC%)JXaVe8~C$-N|Q>r#8hK2K{-p6S`PM{pmC*U-#+I{`+<4kWf1~lyw zSU@(8GJuz$j;;{)8$gouth_wsn-W>?Hn=P*eqVds_U?>Mt~l#+76;389*rtilN|2Pjw1)kD^L73@(6- z*htUG3G&&|2@MDlB1RM%nQV9nUI~DeTkk1>r&Bo{dJr^U=Bo1fAuatYd=aX{RYl-1 z^xXeL*_+2h^}he(6N-|33o&*{l7wU#Ew+TDNS3KoDoLdXIg%x7LM6l~Tbrg5lI28$ zC|hDe497B-m^qdl9Q^L-{r-M`>*tT(>(Q(Fqlf#P>sMw&oFGCrr65&hKEPQHuT<@R&2XNtQ6b;Rm?eNQ`K{P2~V{h zp81+>U8iC_J1m~4U)338tba3}eSARYi|5^X;Y3w=N8^(Juwh;@aRK{8p*nUbvo+D9Krivxo^a`$-8yQ8WKi9>A=}lXORG zCePKdJalnU2|VcT9fpw%jxnEhtuM7#+i#w=2Flm=UpmK`3`f*$GJh2LpS5(Y=Cbew zSGZ3#k{6DmE|#@fYRpEig?p~mCaTvNsCxvyL)Dw-gT;V}j`G-LXq#(&!KpiElSN9a zbUPF|H~VE?+;-$#H{t$CBjyUcq&`60eX6^`o8X(!?l{vmE@qUYvJb2U~EQW3vsCM<1G>CuqxB| zDwSE;`*$Mtrdc&@J+Vm(iyfV{G?)6MVf|1(124*@BWbLaNd$*A)}to|H( z6ZS-Qwf59nU3?vH7~@tHV_ud(D(eQJxG0zb1E#MI)Kk>KqE%hI(YVx)j~6<12@LlF zg6(s%mxH1-5H8Scdh0EjDwv?hd7fVH-vSWlEO&KU24YHE_u1#Crn#kdPRT z)mTB82^GXaYheR%ysxw0k|nm0^kr>^QgeTNkJcT^f>63!zLY}zKYlnoudFVHv1xAg zo~`NUS|#q}DcYuxr!8RKg0JZE{asI6_)U#CL*_Sg==()L3q`z-ncI8a8b>870@_N3 zdrm*=d#LuJvK)>MTc%j}*C}suSd{vnj@n%M&1UTOTcjiqS~WNAk-Xrt*2)U;Te*&l z>~_QAl)Z|?ZjxDXBMdP+?+{7!c+<6{ zpq0Q0AA>u)bEuZAoA0#f`^cxS<$qK-viAaeGIMj{T6wYm*JTh5Im%u4;_7#Ucbg!} zDBFAZGb>X8;wgs#-zkrO%;$m?G@)-w;Y9N81|GnHh?1`~@WP3wdEmOnp)8B7 zC2ZXg-O}A0GT^t_g{cv*z0I@1ZD)DhbEV&2SI?tj=KlA{{Ssi<2Uj(yJp!<+hPmSz)V@FQGg#=P_$ZkgM@k&}@*^EL!4b!T9`O+nJ#U**9qi2EAX_d)}_+ zN?b25Yix1zHT&_vyD$H6>5FwaEd3X%Ar$Bz8sFMCHM^njFgsXP30wZn4O2C-5Jf)x z;95?3tiA{qBLTNLJQ-wySV5%O5R%8nn3%2L+m50JFf>hjH&C)?QADsj8kpcCqj8&| zy-xVEC`O!O|NPYC8o2JeXR&0R(5LW!i-H91jilQ_t>(!heo5yD?U~6%h~?0--{7W)Bry=(?!*xyn{Ihj% zfdnqEjG63X2Y=;;g8}iewhydK@E3HvKNwD#=X7`&{~J^X)_I;lfnv{sdimY#oSJZA z>9;5bzOJSvAd9$0TV;jsvOpa<=L^f=GA6MDU$J8cKj@#o`HMa1`i2h+IaE$@@6 zHpyu^bFb&Anh>cyMb4U&YE5fvb8BzrH<@9{>PY$E`EOR|eLTLDaJDtrMv^$1M7#{XxBH|S}~gzq)RSs z5DMiMO}_8GLp=OQQLDD8bw9P>9{k1wzwuDy!M0i8X|6I~Rlaur(8jzXrLnk;Obask-DKxJ@~zVwlH1>p>B&Sz(9R5cKd+}6 z!hem|-Q320-2blHGvfamQ}0aBn|WMO>21xJP@gpkJ;W%FU}Rv~0$*5qYvEJ@cJMQY ze!9^)wx5(C9(5Pg?C{|G$iG#2@LR4XQZ`sj#>XXR{Pi*L0o3@g!jAsZs+j6T;6s&u z_sWClh6qfvg-A7(vJSp1iF@RDCJoG=6UOw;ox6J=xnb|S?dO2W;BGq`v@_@5>NbNd z>E+9Q`&%PRkB@}?oa_V!Uy(ZCY9h-IYyMqAvtlyMhD>TYSxZV$WZ*{j@qV3Z&+z{hVyi6niFh{d?z}uv!CJdh4DS=-fjwFd zVj}5l@gKXehokJJVt$B`APfnR>Ra3|IpK$Z;>ML9;;Zav=Yg|9aTJ^X9m3i6WgAZM z&!T{uF$FBGBv^Fn&X+``k9wP+-?otq1`mF-d>463jB{I{Y%w>S%JrG$b9Jr9dQ#)b zhq!z{T)1MHpbV6Sm@OG*g;~JYjrYf~k7mq2AG%u#@ZkhN#7P@m^wJX$Ml`Fby zoeHqsWVz4?u^Mvf8^M)5>+u^`*_L0g4chN(c_4l3-Pdq4EvbEz^`lJ@Bzt{-TP)|& ztf33j`r4kwPyQ1cSv^w`Rl9xi5=(ohBLjZCpH3pF%udSeh7uNvN9a$;!BUIoFYO); zwuzSuGyU@GQ%cdm{5xJ~_V>qu`CGzRuRVJyP8QOYhDi6gp#7Kk;EPcwzyNrD=$Jjw zNZ#G`)HQ6twsypFsHf}LL(tl;%UxsNtT)us$?h+G{;pqYa0Zu=fRr~up#oz6IM(g` z_4B{3_gnUsu;W6&G$!J2jekwG_51t+{B@$Td5@Ob2;$$FSS=5yUgM0CR_K6F~dfiH>K)t_Fb>L1sea2h6ZT@vsm4WeS zx$MCFy)_Wcu#UWXx+vKnO70(adkNfcW3v20ghmiul4)CK-WFfihSY^jXn4tGX zJ09P0e(JJ!mR#jk%M4y8+sgZzkOsM!xbrS+rc*hJT>#N*2oeVNWLH|^M%cA4k% z8y>SdvX=X-c`kpduAGgnCO+Qpm04@z77 z6DMq2)SptF$wAN(|CxE>{fOM5jc0}>bIuI$40`9(Q&r)7ynEXFJ5>)J!MhD|TEISt z9&@Ss+`O@s=|rRSf8b43r_m2f`{{{P{U7 z##4pUT*J2!wwH!jyZ*~B#N8g5Y6erT3Ag3l^oIA`7}SdDi_TpPp-EA?#}H?EJ-08N~rDBPx%^1sCL*QpjRm zj+A1ar9GF;W~vi9PCRAtg{-ct6s_pq^~_M)-QX>-ZN z50_?NT$*(NLZWSWAr(>)+vs{>;Z`HGESB{6LF~`?OJ|rudR3BrpqY}MOm>8P7W78w z>101>GNX;zBE$)~JtWw{-}vDwNql85JNOqjOzMN!{7hs!n2-G458vo&62i_Hz6%B* ze{?koCwCNG1s+SCDcsr8>HZjisbCV2Um?Hr`K)~D7EFY(rqVyef4JU7`o6&%6^oVG2S{+(PFedE5&usD2kf}t(%Vi;*< z*Cgyrm~1Z~1&OW%&5lM+MZlLU7D0@ehSIGOYEC39D7SWHGePw4YraeGYRS6|`7X6| zC4S4;2P#ZtKWxWdu$-&y3CFV&vxFi|`{a8PTI*lsRb1>&0e?OZSyGLj(MWMDy8qBM z;@J;?s6NZW{Q@Zi1|3 z@addLMwr?=gxNQ42-dh_F@;%R$YZ|2k66b0b+0iWK0(sK8W3J8;2$Ql2ENz>Z%35S z!v)iHq^xZT(5+!NFoVp6nOEQ{r~PZVkX%6NV3-;CZfaZk(u~!gRq^*fs!e2Dn$^;s~cw50T!=q=HZ_>*-zeD6w( zDl632&OKwswbEZvkDDZ@9}qfdUBKK$T)V%f{Gxh2Rr>!S-6l>n)HFK7{G6!v(4m@D z{dHhIu>B7Cqb78!y2Z3!J6!@UdlyOU5brN-y+iT0xm$Oe9PYeaa#aQ|0atteX8*i! zHB00U!*d;0$yaqZp9uM0U=Mmeb`!q5&i?oBL)&9*bwB}37-MLob{1!ocb_%n*R*!r zt_Bc1V2)vMMuBXoApRTUk1!?TJc}FubKgM>r(Rt8=8>%ew0X};H?*j>rzB9oeLYv@ zCzC{;bXvYpkhpo^e9oosEFIrw`*#-x4Xz>>JW!XgS|7d9F)(s}QdU}c?p}>iMkpa@ zZaiE*p7d_fvQ-hk0e+ps%Lu<5xb7>|Vny#iGn?Y~y!5$!h$yQ-T%6@OC^zf!>LJ&g z4Ix}b$P&T=Y}@gXcN$OvR*cZ& z$wrXCLh%s&0onC`yKU{oL!Kk&@`#$H??I6=1_1azMiUss>&M}})xnZU(1lZ1n8oi& zAO(sAtcPzHtbxkqFzKmb;B<<6bqV<8M*o&6lCdcZY?n_u;{!4}y{^lnDfTh}BaRMF91P0scMG6pMO1N$w@TD=AV zPyI$@z$^VyUjjPRSwogh|6P*T;KQ5#%m1mhk9~S;-8{7J1ve4Ys&a4A!|jnf3b*e4 zs$M2<44x=BW(Vo~_))auO25MFgp~c;vB=#uMC!_oiALAWa$roH=z~2s9$;b@u!+__ zAyR?=`;tk%n@^Q~t^J(6;O81Rpq`T0w2w%-%o`$l3$N6{KDEwY46}chNa6Jm7(UkK zQMvStsAzcgwC>?ZtY=tc!-^_n2PD~m9A&!e?ff*fnAj7&ArnC3TMlmwD zAfhWWIt^L+QTSI zn_)9BRtIdJ`|E1rdG(n6pbAwd7#=$}K<&6IvvNXgrMvRZ$7b!=S0-xhXC7(u?7Z}q zq7zu-`}TU9(7TWcdQBCBa%>e^PRew>{ovxwQKaAP#hPhtGb{)fpo^Tf}|v2RH94@%gt zG3B}<6eJIBiPqsK_a7f83DWXsBGViL8&P}yGRe^jkGh?v&Fn}u+if6LpFpcAhkuqdE0 zir68HjlBZ1IMObU3CrPI#AYkfc7TixCbwP)tj|`yLtg)dwL)MAck+>{O7pql(y_>#a$QLD@d*aqti$;*S*ghXtMzwBPr2PI{=wYdz-tS+~;6wSyy#H&} z8g%O1Ii3FXQNoJJ$ah@2vvA?j$0KI~7gl#FsT{twLU!_(Pfl^vIcdhVI6F2$cx&Vt zefa0YD?e+wPO2vnvdyyBnni-KTY^0LCPc2vv0p{iUX6?RxObPvAD6Cv@QjJ&MRzVq zg`KD?BoITWSFZ|Uo2t3_zBFiDK*}`Y`;ATSk+~r)OmE4>qoCesomJ0 zB76Qw%KjA36hCqCBn7J@w9V)0c6dE$F=YA`OwAa37rrcZGC5X!u^@mIu)2alv?*x* z&52`kQ**uc>3j6bPma`f#Y=m6wddQWM)&_ru`dzbw4q-|<+i2k8smc^pC5k_;#Yku zsD5)8&Y{PgX{o3ZtK_<8HLY_s;)j%}p}*#>%^hdTOu`~qxnlOB1H;ksmL#w5yVc9D zjHq^vv*N|Stg`MJM8;wX=j)`Tw7SD$V;C|7X*PgBKBC;z@csRt_T zTrs;HqE=it|L8d7UR!^rZ70|9E02ZavIkmkCyx$?7T~Wd-mIENNE|j@r+&*axTgL` z<8+Ymda`1$8# zDwmc>`gYxZlie=$ae)v~(xi&oI-eZ+qnk5=W~HOa&b%SVe~MVUYF|O>X^8V1)YEEq zb1Wu37DuD1brdmbn1>B+DtvAr4vw$5jWgd_{?YOz*ik;&_)n$voK5{P(%G?Mf{woI zdPUuqvW$O;d=D=#t>!cy6x$XimBf=3y0W&bOU0ty`o0}$a@WF4irty@#+_FEZI;q& zjAPGE@Ky6|^1ErLc+rB7TfCZo)fSx@nX8z;KR+~I()w=m{+fVo>xo1nKVyA8(Z2rH zvjh5`U4wo@em^?1*L%2nczSqy_&I;8r{AHjC(BBAn9&>a{G;Y>-LF#NLXCEa!XfXq ze=G{##jb`+szZ^p#iFF3OofhiP<%yWB}*dpgPSkXw4bB=N{~=0jcVHAC`J;Sn>c_^ z*@}~tLj@3LnX!Hv%iSGEk_4$+ko9bp9`&bEhLgY-mnotgVSg%RZU2(TYXx} znrzrD6-!nOeTwy_I9gG}NRxqo^v2f-Jvga@jW{Q$SoJa#dC%VcQ8$038@py{MOqA~ zHthNO{B{PFu_Ysz)!kKOU-+PMp)R?L8mbri7ha*S7B<>!IJ^Fdh3L(T+r!j9T4g^p z`;ug6$G2Z+Tkej#wcAsTc$YV(tX7B^&vcJeVj(WG5uW#&@2PhgC7ofN(G1@9`qp>d zbKe!ZjL6M-j$NKNwE}GeeF75#3j>=1Cl_Qe2h;XqztFOCw`lG}64@Z+%O3*Q+z#RX;d`ogrRtEpRcU%cJn?xq-~ zp2CxLy#`fruTR=2uemw&k4_h=;#n^@$fNaOUve(W_f9HGiawZ-MZ^%ik-OO z5XEqeC%M>7*aeAK*f7gb-!U72``Voz^}@Us^sr(~Z=ra>1gp%?y!t7+FRi`6i}@s^ zBzmki_4|>;GOY@yigOkI6;TzBD)K8zD(WgaD@H2*-V(r0u=R9`Z(V&L^n?CrzY@B% zHI7*58;thk-bD<`Nr*wE5&Ft*?vEQDD?=h7^XIMcLo`;yd#snP5A3UN4WJQ_73dkJ z^NDR3<%)OOi@}5Y&_OQ;T4Gkyar~!PQa0f3J6nTIqxnFni zABdDXm^)eF*V5FiDl+)BC%&lpd$W?Eamvt@Ju%(V1$VFA+{*86J#HtFbmr-qcTcX4 zq|Ki2iusLt&jh>Otd8vZo+i~0Y;S@dnESOSj2=agrpMCb>G$aO>B;m5^hfl^^mMwh zZ{I#TR}I~$5x8JRt?!C_EJZCyrwlum8}xS<;+!^qfku6f+StzBs(3IS_{Bs6$gm}v zk_1oHwtS^*hkP{<=Z#l=Md2giQpL@Q3JdKK+Fs9TzH2oh?^$~sXQtr_W=lnq@yWXd z-(ivbFSM?2=sri)ddbdH5;7u8w&lH%9px^F#1|0fpTK3=P|@}wYV_X=Ej`(MraWfO z=ecff@riXYy_YZW?$v4rG;Y_mprVoLUh!}jap1f}%j4iM)7e1$vn7eVW9b`Zm3#~e zN=W&Vl1Q=}VsnX>&bSD+7-pQgY~e4sUTM|9Ms8JZRaVkk`G)#)YM1v-t(&$teQqY) zEL5qn^se{*>fPXd;wL((?A`1wG%#VJ1d-cmzGQp+Z+6r9JD58o0sK!yjS7iKfK5G; zYKccDW9Bci!mz*>Sx>RFJ#b$P5KfE~EL3+K_jjiGhKi7;DqJ<7$^%yuOK8nG!4AHo zIas9n(@fBvq*Q9w!!8~c3A!RM+y7T);Vi*S?-T6?e+afK`lKQ>e6(d&1`Iv>z`S(- zJgjNvdR%4ShBZSXYk0fX?QmNyrTk3KyfT}mq~VoSl4Hf+@~HfgesyV6mqKuVRq=bT zEH{m%0ij0?eZgKjY3B2#@Qu#(*B=b{jrcM3`iuMZ28svtkYYq{@V{nF4@{D3IFV7O z#oM5_B|_VxJS#h9A1*k40@qhYmp1!cHu&hBc@bTDp#~Y`$C1A|2p&V6?dB@-VG(#Y z#~u?T*p&}_56!J1uX64<&}V$bE_z^(q^rkKK9>uZsB*J!2eQ@ zCv3DEm6<*OM&X-ae#ljj!~_FhXZt z@W0X_=)~IexIjGf?_I-g{(GCc^Ql@-vAGS4s`q2@8iK-s)Q=u*C3P(#HWXmq%hI>Z z+A56dJ>(XHWU*PRXu0XWu8i{xj>kmgiq< z`Hgwpfr@Y}TLj10U7UJf{xZL!{z*Hp?>-PFL;($v}1%QV1)+k@Xj%tO{g*+bJq z*TcwTzlRMUqyM}rq{58Ee0sRiV3IiOcUK1q@VxPoIUI|LG>O1vK?#h)Q+}yiQNL+s zuDt|MfupGIG(8P#^YV_x^aQRt8wGdf1v^4-TeUYl9A!;vi|@!9MLJCa-j2GU{NDI$?8UU@GiC$jud%I4_c_5? zDKbI&(F4}zYuPW>;D4d6w!2fx0@ikW{OA9CNbyhV0xP|S5dQo#MPuBnQQlTu%uVZW z;Yr7eq_SL1gXbRR6$PAcXU8Q zkG3cvQh7o7(d4r)3)G>~02Sy>v$i{a#|5&(FL||`Lml@7i@wA}ZaBb~fr#Q5z9#6B zCe7FCHl`}v`0KgIL9WLY=chXbo?^8kq>QN-*2JeKmSPDdN!;Os8S!6ZL?j%!Z=U?? z-fg^eA=|B}u2;jJ6v(_(Cv9|w+44)RoOZB(Zd;gv@BLnzjI;7**|RB{UfPu(-TrpJ zvN_9YwOC*hx2rgOAT5uDTB(0u#aCD2ww_v!V5BfI62lTB6Jrt+{*wYUklo}9OyWhB+n`iI(1;%N4(k=o3p$udHcz0) zpheSk6(~Xkz?^U~c%(TiGluN45|8OMkmnflWL$qN3=0uKm}^iQGpT&*y0{Gsl)Kl~ zM9JDBd!E|iNHpc|?~VN3>jXCnrSm{N*4aO~r@SrpZMGJ@`Dd!@#fPUOBI~^D8QaVI zpJ<;+bpuW=(lhN7+TC)tv=1bguLdxBy}g8*+#S<%-`+A=nvFeTIls)(((K)7$TdGQ zVH5lO>iBRlYr7iqw|eQj(j)WX7L0{4*#AG}B;J+s$wa=M&?T#X9qrM!#hdkz(i?X$ zt(+K!-xozFgo-NfLo<4|L4}ScCaB+77Em1eRvPt}<$}P^YiLoX$&wm$$k_oF5rad! zDOpX2ajdIj^Qp~YnCju=+^b4b)yH>?uLy4BPXAt99ZeCbx|YDPt%1^#9};9YU5@9G zX=_utZz*{tv*+E1YEv-EfBHe|Si#ieOcS4_ct_PT>Bcg zr@2mjffGSpy#cRnu9ev7&-WF-=Vg%{m980!FSp%w5(}IeAPvHUp%XlNTuzdAwWj>BQ4m;`-q2&~=}A(&f?(XiuXU zEZ|LJrR-OQpqE|%5*OA{_oJ^~p+(Aa=@;?XXo@yu0hB{};guvzJU1VQn?L3many)_I9KONkt}+|OZG}UyBeWN z9dGeo`*wg(#i*1wGF+bditlI?;2m4A!5r(|CD-v*`5x#OQ+p~~q;OuPXN zm3!2ljQ>1p@64nJpux()zZ%I7PL5iTQs@iB^12#ycA>qtc{#9yA-kvu;fL5o)edM@ zG|{9;80G?q>*b%@JIe@812)#Zj4&v>!ClS{-=q$8&**GBFRQmB5F4p>ia)^Rvx_~! zo4!s*#o=!9p{w=Zl;LkLo(9_-usy?m+*|bGgNWDq!9AaJ^QTl!`;S~Oip~W(RQ~75 zSWnUipNvc!+3Ro0{ztvAQAx}RbSto|S90H7IBKnKw`b(qQC8fzVfcWOILsZS4Yl0I zDu2Gf-22J^9x)pKU~?3;v71w=iDo?U2Lp(j+z;ThrW@}u4aB=z=I!)!U#HXGFkQmu07{l@?b z`oKJWyjB1FNn?$M0lJbQuGXOF^Rw*H)bsuGNorf`UG@&meiO6)eY|h?LG{+q84Aik z;epU^q%Wjz)M{!iRoY6fQa$(bwbL|Kc8nN2;Z1AF3v`MmyG(x|#nBQybWJ*DqTbM` zI|2U6Qt*dp@)pRe zNonDg7^%39mF4sz%enWjRV9`*dqIQ*M3fj!F2dTF-m>V-xdp&@et#RoNbHVflt>_@ zQZ#LmXd>ZcZma$o0-@CxFjx__zN>3u7>xPjxY9z=4`)%5YKPx=nM$ZNLKjEN_rE~n zYFR7qv8D@(kcJ5CgjhbHu{z$=+7D^(#Xn8`Y1rZbGgF3r5n7@V5`~nCnRxotQaAL< zscCvDLh&VGJcM|`MeR!j!lsQH0LGDPS$job$7^W$K@r$Slh%@IdN-wN1Nu!FaxRgC zM~=2^KwlN2-qNV|YczPfV#mzzVO(WgibFe&*J?i=rURhn0DF08eIxsXOXX{#o{JjL zt6kBI&Ja=fa%-mNW9hwUyJVHLkMerLCg=lGdY1oD=2k{~ z>c!yRV`xvC6x@{=!#H#gb04+Dqa5+(KMEXd+4T@hyWX+~)pa0gf=d`KPI`6_ukxkY z4^a=|2Ueoo@II;(Da)nn1U{N}P!gujyW*eBXP&I=T!R#3-dt_de?YiBU>}XOc z1Ap5i0WW3LvPw!sV6T@Mo^7!PXUCX(Uo9uyfK8e8gozaY_EX+rB>_=uaG4W(t1wxk>B`s^KDR--h5q4}o zFRQh;=kXfC=i6hiFq7^`Eb~P)V=P=8o+y_j#b6@tF$}rMTB;R?v2X9Mm4cnc(Itlf z#Ov-yQuTF3@J+J*)E*yFw$AVg*UMM`rdV4olbh-D{_Ivz2}piwuY6Nkaad5wvTA@j=zQNR7a zjYQ$|(dA+Q196mSq6pLRskM*81l(}J+n9zKP9Sja?Xd#Fe17GtbD)@X9HXiU2^hH< z!$?cLj~9!>ajtO`+qv0V>eh~w=c4dS8Itagrxti_wM`~g=@CsSoS8U|SGYi*u*hjI znTpYAb)+6d$nol-7ilbKVOa6(wpt*xe8TO%9G`3;w4b9CtgvqjG;cgXW33Z~ClE>i zQh`Dl2I!zmx-fjM&It%8WdmVUpu288fnf1)zu;wM$VkWve{+;$h4zV5Y<+?O8wvtj zz#kVqlmP}iPne_xI8awWjphbj1Q$?@#>#7^QBOygZ-?@msg6Kquf*Z^_^}xB(sRa^ z7{*>H&_sMRHufS*E}ATk+K7;>=PoHjDj}kC zMTq(h5IGO)K`n7ugYf)aGEn#nY|$7>Zg74qaqkcHX=jeM+u?tN=PkgA;aDWdbKNrJ zMm4$7qVuxH31%|gYT%{R#DF35cf#}I6R?LD@gp?qgK-yiC}JxVLI15PMM?rMcPN1z z{O`j{!sj0Wj!bRbSrT5n-f|eU z5O~_*7{(hA&KITA63^HHnT^x5^*V~SL8aFZ4>IG3BIfu3{BofbP~{dWxT3Bl5d(a( z1j%~-1Lrkuk@@kH97}ZqPksiKVa4}hGyHK0GG8i*lzP0!P+jL}hN&>TP5}})FY5s& zw)-ga5D0_&axghlX^>HQQ%enbSrD`Mkj9GIe#FG*lh?1`!(-z|Th5?Md&%Ikw!|>L zRZ7B#SAsI9T(lwBUKqCDi?8FOQTKmH&>`g9E9qK8Ab^z1XB}bKWs=6KkwMEp5E19h zaTirc4FS?H?kM6#3`&o1=rcf?nc;in5K~cPK6N|Ix9B})dkk1^dwjGDSQiDFHWy+b zj752yE!+n`m+<+@j-5!V4Os}p2IZNUhzg|3h1vicCh?DjqEN;IgP)A2NuoAlaB8p; zhJj| zg_H0se&}B!^$pz*ya)0FX|BfS`u-NETK~>;>)lL24)e{--w(e z2hHb^(&6Krp9Rcmx}ym*=tY*0Bq!qOjwWAAAhtQ-Q&SmO+H

  • i7&wKn=Ly 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 CAmqRR literal 0 HcmV?d00001 diff --git a/README.md b/README.md index bf15514..02107e6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # UnityFx.Outline -Channel | UnityFx.Outline | +Channel | UnityFx.Outline | ---------|---------------| Github | [![GitHub release](https://img.shields.io/github/release/Arvtesh/UnityFx.Outline.svg?logo=github)](https://github.com/Arvtesh/UnityFx.Outline/releases) Npm | [![Npm release](https://img.shields.io/npm/v/com.unityfx.outline.svg)](https://www.npmjs.com/package/com.unityfx.outline) ![npm](https://img.shields.io/npm/dt/com.unityfx.outline) @@ -8,12 +8,23 @@ Npm | [![Npm release](https://img.shields.io/npm/v/com.unityfx.outline.svg)](htt **Requires Unity 2017 or higher.** ## Synopsis -![Outline demo](OutlineDemo.png "Outline demo") +![Outline demo](OutlineSamples.png "Outline demo") +![Outline demo](MotusOutline.png "Outline demo") *UnityFx.Outline* implements configurable per-object and per-camera outlines. Both solid and blurred outline modes are supported (Gauss blur). The outlines can be easily customized either through scripts or with Unity editor (both in edit-time or runtime). Implementation is based on Unity [command buffers](https://docs.unity3d.com/ScriptReference/Rendering.CommandBuffer.html), does not require putting objects into layers and has no dependencies. +Supported outline parameters are: +- Color; +- Width (in pixels); +- Type (solid or blurred); +- Intensity (for blurred outlines). + +Supported platforms: +- Windows standalone; +- More platforms to test. + Please see [CHANGELOG](CHANGELOG.md) for information on recent changes. ## Getting Started From 664eab7115186d4b0c0c77e48aca45f5d0c3413d Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 18:46:47 +0300 Subject: [PATCH 23/27] CHANGELOG update --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d8c18f..a0a354c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/); this proj - Changed solid outline to use Gauss sampling (to achieve smoother outlines). - Changed outline implementation to use different passed for horizontal and vertical sampling (to make algorithm complexity linear instead of quadric). +### Fixed +- Fixed an issue with `OutlineBehaviour` not rendering outlines if attached to a `GameObject` with no renderers. + ### Removed - Removed `OutlineResourceCache` class. From cbd5ef1b5f82abd658a158a44140e03102473ca7 Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Fri, 30 Aug 2019 18:50:48 +0300 Subject: [PATCH 24/27] Added CHANGELOG.md.meta to .gitignore --- .gitignore | 1 + Assets/Plugins/UnityFx.Outline/CHANGELOG.md.meta | 9 --------- 2 files changed, 1 insertion(+), 9 deletions(-) delete mode 100644 Assets/Plugins/UnityFx.Outline/CHANGELOG.md.meta diff --git a/.gitignore b/.gitignore index 48eab10..058c8c8 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ [Uu]nity[Pp]ackage[Mm]anager/ Assets/Plugins/UnityFx.Outline/CHANGELOG.md +Assets/Plugins/UnityFx.Outline/CHANGELOG.md.meta Assets/AssetStoreTools* # Visual Studio cache directory diff --git a/Assets/Plugins/UnityFx.Outline/CHANGELOG.md.meta b/Assets/Plugins/UnityFx.Outline/CHANGELOG.md.meta deleted file mode 100644 index bf7de34..0000000 --- a/Assets/Plugins/UnityFx.Outline/CHANGELOG.md.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 877997965301b1c48a31725c287be877 -timeCreated: 1566291525 -licenseType: Pro -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: From 41d7ab478210505f5bd9bc0011f524fcd850038a Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Sat, 31 Aug 2019 15:29:54 +0300 Subject: [PATCH 25/27] Renderer list improvements for OutlineBehaviour --- .../Runtime/Scripts/OutlineBehaviour.cs | 311 +++++++++++++----- Assets/Plugins/UnityFx.Outline/package.json | 4 +- 2 files changed, 227 insertions(+), 88 deletions(-) diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs index 97060ea..6a2d934 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineBehaviour.cs @@ -2,6 +2,7 @@ // See the LICENSE.md file in the project root for more information. using System; +using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering; @@ -35,8 +36,8 @@ public sealed class OutlineBehaviour : MonoBehaviour, IOutlineSettings #pragma warning restore 0649 - private Renderer[] _renderers; private OutlineMaterialSet _materials; + private RendererCollection _renderers; private CommandBuffer _commandBuffer; private Dictionary _cameraMap = new Dictionary(); @@ -75,32 +76,20 @@ public OutlineResources OutlineResources } /// - /// Gets or sets outline renderers. By default all child components are used for outlining. + /// Gets outline renderers. By default all child components are used for outlining. /// - public Renderer[] OutlineRenderers + public ICollection OutlineRenderers { get { return _renderers; } - set - { - if (value == null) - { - throw new ArgumentNullException("OutlineRenderers"); - } - - if (_renderers != value) - { - SetRenderers(value); - } - } } /// /// Gets all cameras outline data is rendered to. /// - public IEnumerable Cameras + public ICollection Cameras { get { @@ -119,18 +108,22 @@ internal void OnWillRenderObjectRt() private void Awake() { - SetRenderers(); + CreateRenderersIfNeeded(); CreateMaterialsIfNeeded(); + CreateCommandBufferIfNeeded(); } - private void Reset() + private void OnDestroy() { - SetRenderers(true); + if (_commandBuffer != null) + { + _commandBuffer.Dispose(); + _commandBuffer = null; + } } private void OnEnable() { - CreateCommandBufferIfNeeded(); } private void OnDisable() @@ -143,33 +136,9 @@ private void OnDisable() } } - if (_commandBuffer != null) - { - _commandBuffer.Dispose(); - _commandBuffer = null; - } - _cameraMap.Clear(); } - private void OnValidate() - { - SetRenderers(); - CreateCommandBufferIfNeeded(); - - if (_outlineResources && (_materials == null || _materials.OutlineResources != _outlineResources)) - { - _materials = _outlineResources.CreateMaterialSet(); - } - - if (_materials != null) - { - _materials.Reset(this); - } - - _changed = true; - } - private void Update() { _cameraMapUpdateTimer += Time.deltaTime; @@ -203,6 +172,24 @@ private void OnWillRenderObject() } } +#if UNITY_EDITOR + + private void OnValidate() + { + CreateRenderersIfNeeded(); + CreateMaterialsIfNeeded(); + CreateCommandBufferIfNeeded(); + + _changed = true; + } + + private void Reset() + { + _renderers.Reset(); + } + +#endif + #endregion #region IOutlineSettings @@ -314,6 +301,191 @@ public void Invalidate() #region implementation + private sealed class RendererCollection : IList + { + private readonly List _renderers = new List(); + private readonly OutlineBehaviour _parent; + private readonly GameObject _go; + + public int Count + { + get + { + return _renderers.Count; + } + } + + public bool IsReadOnly + { + get + { + return false; + } + } + + public Renderer this[int index] + { + get + { + return _renderers[index]; + } + set + { + if (index < 0 || index >= _renderers.Count) + { + throw new ArgumentOutOfRangeException("index"); + } + + Validate(value); + Release(_renderers[index]); + Init(value); + + _renderers[index] = value; + } + } + + public RendererCollection(OutlineBehaviour parent) + { + Debug.Assert(parent); + + _parent = parent; + _go = parent.gameObject; + } + + public void Reset() + { + foreach (var r in _renderers) + { + Release(r); + } + + _renderers.Clear(); + _parent.GetComponentsInChildren(true, _renderers); + + foreach (var r in _renderers) + { + Init(r); + } + } + + public void Add(Renderer renderer) + { + Validate(renderer); + Init(renderer); + + _renderers.Add(renderer); + } + + public bool Remove(Renderer renderer) + { + if (_renderers.Remove(renderer)) + { + Release(renderer); + return true; + } + + return false; + } + + public void Clear() + { + foreach (var r in _renderers) + { + Release(r); + } + + _renderers.Clear(); + } + + public bool Contains(Renderer renderer) + { + return _renderers.Contains(renderer); + } + + public int IndexOf(Renderer renderer) + { + return _renderers.IndexOf(renderer); + } + + public void Insert(int index, Renderer renderer) + { + if (index < 0 || index >= _renderers.Count) + { + throw new ArgumentOutOfRangeException("index"); + } + + Validate(renderer); + Init(renderer); + + _renderers.Insert(index, renderer); + } + + public void RemoveAt(int index) + { + if (index >= 0 && index < _renderers.Count) + { + Release(_renderers[index]); + _renderers.RemoveAt(index); + } + } + + public void CopyTo(Renderer[] array, int arrayIndex) + { + _renderers.CopyTo(array, arrayIndex); + } + + public IEnumerator GetEnumerator() + { + return _renderers.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return _renderers.GetEnumerator(); + } + + private void Validate(Renderer renderer) + { + if (renderer == null) + { + throw new ArgumentNullException("renderer"); + } + + if (!renderer.transform.IsChildOf(_go.transform)) + { + throw new ArgumentException(string.Format("Only children of the {0} are allowed.", _go.name), "renderer"); + } + } + + private void Init(Renderer r) + { + if (r && r.gameObject != _go) + { + var c = r.GetComponent(); + + if (c == null) + { + c = r.gameObject.AddComponent(); + } + + c.Parent = _parent; + } + } + + private void Release(Renderer r) + { + if (r) + { + var c = r.GetComponent(); + + if (c) + { + Destroy(c); + } + } + } + } + private void RemoveDestroyedCameras() { List camerasToRemove = null; @@ -354,9 +526,13 @@ private void CreateCommandBufferIfNeeded() private void CreateMaterialsIfNeeded() { - if (_materials == null && _outlineResources != null) + if (_outlineResources && (_materials == null || _materials.OutlineResources != _outlineResources)) { _materials = _outlineResources.CreateMaterialSet(); + } + + if (_materials != null) + { _materials.Reset(this); } } @@ -374,49 +550,12 @@ private void UpdateCommandBuffer() } } - private void SetRenderers(Renderer[] renderers) - { - if (_renderers != null) - { - foreach (var renderer in _renderers) - { - if (renderer) - { - var c = renderer.GetComponent(); - - if (c != null) - { - c.Parent = null; - } - } - } - } - - _renderers = renderers; - _changed = true; - - // Have to attach a specific behaviour to each renderer to call - foreach (var renderer in _renderers) - { - if (renderer && renderer.gameObject != gameObject) - { - var c = renderer.GetComponent(); - - if (c == null) - { - c = renderer.gameObject.AddComponent(); - } - - c.Parent = this; - } - } - } - - private void SetRenderers(bool reset = false) + private void CreateRenderersIfNeeded() { - if (_renderers == null || reset) + if (_renderers == null) { - SetRenderers(GetComponentsInChildren()); + _renderers = new RendererCollection(this); + _renderers.Reset(); } } diff --git a/Assets/Plugins/UnityFx.Outline/package.json b/Assets/Plugins/UnityFx.Outline/package.json index 1485b03..50ce798 100644 --- a/Assets/Plugins/UnityFx.Outline/package.json +++ b/Assets/Plugins/UnityFx.Outline/package.json @@ -1,8 +1,8 @@ { "name": "com.unityfx.outline", - "version": "0.3.0", + "version": "0.4.0", "displayName": "Screen-space outline for Unity", - "description": "Tools for rendering configurable per-object and per-camera outlines. The outlines configuration can be easily customized either through scripts or with Unity editor. Implementation is based on Unity command buffers and has no dependencies.", + "description": "Configurable per-object and per-camera outlines. Both solid and blurred outline modes are supported (Gauss blur). The outlines can be easily customized either through scripts or with Unity editor (both in edit-time or runtime).", "unity": "2017.2", "keywords": [ "UnityFx", From 6f501ab28815d025776ff69644368d06806b377e Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Sat, 31 Aug 2019 15:33:42 +0300 Subject: [PATCH 26/27] Misc changes --- Assets/Examples/Scenes/Outline.unity | 2 +- .../UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs | 10 +++------- .../UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/Assets/Examples/Scenes/Outline.unity b/Assets/Examples/Scenes/Outline.unity index d142b7e..3ac0f6a 100644 --- a/Assets/Examples/Scenes/Outline.unity +++ b/Assets/Examples/Scenes/Outline.unity @@ -504,7 +504,7 @@ MonoBehaviour: m_EditorClassIdentifier: _outlineResources: {fileID: 11400000, guid: d28e70f030b1a634db9a6a6d5478ef19, type: 2} _outlineColor: {r: 0, g: 1, b: 0, a: 1} - _outlineWidth: 13 + _outlineWidth: 12 _outlineIntensity: 2 _outlineMode: 1 --- !u!23 &1789341923 diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs index 241ec71..522c0df 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineLayer.cs @@ -17,9 +17,6 @@ public sealed class OutlineLayer : ICollection, IOutlineSettings, IS { #region data - private Dictionary _outlineObjects = new Dictionary(); - private OutlineMaterialSet _materials; - [SerializeField] private Color _outlineColor = Color.red; [SerializeField] @@ -31,16 +28,15 @@ public sealed class OutlineLayer : ICollection, IOutlineSettings, IS [SerializeField] private OutlineMode _outlineMode; + private Dictionary _outlineObjects = new Dictionary(); + private OutlineMaterialSet _materials; private bool _changed; #endregion #region interface - /// - /// Gets a value indicating whether the layer contains unapplied changes. - /// - public bool IsChanged + internal bool IsChanged { get { diff --git a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs index 8d4c938..9a34ac3 100644 --- a/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs +++ b/Assets/Plugins/UnityFx.Outline/Runtime/Scripts/OutlineRenderer.cs @@ -13,7 +13,7 @@ namespace UnityFx.Outline ///
  • /// /// This class is used by higher level outline implementations ( and ). - /// It implements to be used with C# inside block as shown in the code sample. + /// It implements to be used inside block as shown in the code sample. /// /// /// using (var renderer = new OutlineRenderer(commandBuffer, BuiltinRenderTextureType.CameraTarget)) From d5457c581be9478c4e83619083771fbcfc984e5c Mon Sep 17 00:00:00 2001 From: Alexander Bogarsukov Date: Sat, 31 Aug 2019 15:34:45 +0300 Subject: [PATCH 27/27] CHANGELOG update --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0a354c..2eab22f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/); this project adheres to [Semantic Versioning](http://semver.org/). -## [0.4.0] - unreleased +## [0.4.0] - 2019.08.31 ### Added - Added Gauss blurring to outlines.