From a63ad0fec4b6c4130b449f3baa608f26f86a276d Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 14 May 2017 18:30:21 +0200 Subject: [PATCH] Remove OculusSDK library Just waiting for a better future alternative (multiplatform)... OpenXR ? --- .../LibOVR/Include/Extras/OVR_CAPI_Util.h | 196 - .../LibOVR/Include/Extras/OVR_Math.h | 3804 ----------------- .../Include/Extras/OVR_StereoProjection.h | 70 - .../OculusSDK/LibOVR/Include/OVR_CAPI.h | 2234 ---------- .../OculusSDK/LibOVR/Include/OVR_CAPI_Audio.h | 84 - .../OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h | 158 - .../OculusSDK/LibOVR/Include/OVR_CAPI_GL.h | 102 - .../OculusSDK/LibOVR/Include/OVR_CAPI_Keys.h | 53 - .../OculusSDK/LibOVR/Include/OVR_ErrorCode.h | 156 - .../OculusSDK/LibOVR/Include/OVR_Version.h | 60 - .../OculusSDK/LibOVR/LibOVRRT32_1.dll | Bin 1044944 -> 0 bytes 11 files changed, 6917 deletions(-) delete mode 100644 src/external/OculusSDK/LibOVR/Include/Extras/OVR_CAPI_Util.h delete mode 100644 src/external/OculusSDK/LibOVR/Include/Extras/OVR_Math.h delete mode 100644 src/external/OculusSDK/LibOVR/Include/Extras/OVR_StereoProjection.h delete mode 100644 src/external/OculusSDK/LibOVR/Include/OVR_CAPI.h delete mode 100644 src/external/OculusSDK/LibOVR/Include/OVR_CAPI_Audio.h delete mode 100644 src/external/OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h delete mode 100644 src/external/OculusSDK/LibOVR/Include/OVR_CAPI_GL.h delete mode 100644 src/external/OculusSDK/LibOVR/Include/OVR_CAPI_Keys.h delete mode 100644 src/external/OculusSDK/LibOVR/Include/OVR_ErrorCode.h delete mode 100644 src/external/OculusSDK/LibOVR/Include/OVR_Version.h delete mode 100644 src/external/OculusSDK/LibOVR/LibOVRRT32_1.dll diff --git a/src/external/OculusSDK/LibOVR/Include/Extras/OVR_CAPI_Util.h b/src/external/OculusSDK/LibOVR/Include/Extras/OVR_CAPI_Util.h deleted file mode 100644 index 552f3b125..000000000 --- a/src/external/OculusSDK/LibOVR/Include/Extras/OVR_CAPI_Util.h +++ /dev/null @@ -1,196 +0,0 @@ -/********************************************************************************//** -\file OVR_CAPI_Util.h -\brief This header provides LibOVR utility function declarations -\copyright Copyright 2015-2016 Oculus VR, LLC All Rights reserved. -*************************************************************************************/ - -#ifndef OVR_CAPI_Util_h -#define OVR_CAPI_Util_h - - -#include "../OVR_CAPI.h" - - -#ifdef __cplusplus -extern "C" { -#endif - - -/// Enumerates modifications to the projection matrix based on the application's needs. -/// -/// \see ovrMatrix4f_Projection -/// -typedef enum ovrProjectionModifier_ -{ - /// Use for generating a default projection matrix that is: - /// * Right-handed. - /// * Near depth values stored in the depth buffer are smaller than far depth values. - /// * Both near and far are explicitly defined. - /// * With a clipping range that is (0 to w). - ovrProjection_None = 0x00, - - /// Enable if using left-handed transformations in your application. - ovrProjection_LeftHanded = 0x01, - - /// After the projection transform is applied, far values stored in the depth buffer will be less than closer depth values. - /// NOTE: Enable only if the application is using a floating-point depth buffer for proper precision. - ovrProjection_FarLessThanNear = 0x02, - - /// When this flag is used, the zfar value pushed into ovrMatrix4f_Projection() will be ignored - /// NOTE: Enable only if ovrProjection_FarLessThanNear is also enabled where the far clipping plane will be pushed to infinity. - ovrProjection_FarClipAtInfinity = 0x04, - - /// Enable if the application is rendering with OpenGL and expects a projection matrix with a clipping range of (-w to w). - /// Ignore this flag if your application already handles the conversion from D3D range (0 to w) to OpenGL. - ovrProjection_ClipRangeOpenGL = 0x08, -} ovrProjectionModifier; - - -/// Return values for ovr_Detect. -/// -/// \see ovr_Detect -/// -typedef struct OVR_ALIGNAS(8) ovrDetectResult_ -{ - /// Is ovrFalse when the Oculus Service is not running. - /// This means that the Oculus Service is either uninstalled or stopped. - /// IsOculusHMDConnected will be ovrFalse in this case. - /// Is ovrTrue when the Oculus Service is running. - /// This means that the Oculus Service is installed and running. - /// IsOculusHMDConnected will reflect the state of the HMD. - ovrBool IsOculusServiceRunning; - - /// Is ovrFalse when an Oculus HMD is not detected. - /// If the Oculus Service is not running, this will be ovrFalse. - /// Is ovrTrue when an Oculus HMD is detected. - /// This implies that the Oculus Service is also installed and running. - ovrBool IsOculusHMDConnected; - - OVR_UNUSED_STRUCT_PAD(pad0, 6) ///< \internal struct padding - -} ovrDetectResult; - -OVR_STATIC_ASSERT(sizeof(ovrDetectResult) == 8, "ovrDetectResult size mismatch"); - - -/// Detects Oculus Runtime and Device Status -/// -/// Checks for Oculus Runtime and Oculus HMD device status without loading the LibOVRRT -/// shared library. This may be called before ovr_Initialize() to help decide whether or -/// not to initialize LibOVR. -/// -/// \param[in] timeoutMilliseconds Specifies a timeout to wait for HMD to be attached or 0 to poll. -/// -/// \return Returns an ovrDetectResult object indicating the result of detection. -/// -/// \see ovrDetectResult -/// -OVR_PUBLIC_FUNCTION(ovrDetectResult) ovr_Detect(int timeoutMilliseconds); - -// On the Windows platform, -#ifdef _WIN32 - /// This is the Windows Named Event name that is used to check for HMD connected state. - #define OVR_HMD_CONNECTED_EVENT_NAME L"OculusHMDConnected" -#endif // _WIN32 - - -/// Used to generate projection from ovrEyeDesc::Fov. -/// -/// \param[in] fov Specifies the ovrFovPort to use. -/// \param[in] znear Distance to near Z limit. -/// \param[in] zfar Distance to far Z limit. -/// \param[in] projectionModFlags A combination of the ovrProjectionModifier flags. -/// -/// \return Returns the calculated projection matrix. -/// -/// \see ovrProjectionModifier -/// -OVR_PUBLIC_FUNCTION(ovrMatrix4f) ovrMatrix4f_Projection(ovrFovPort fov, float znear, float zfar, unsigned int projectionModFlags); - - -/// Extracts the required data from the result of ovrMatrix4f_Projection. -/// -/// \param[in] projection Specifies the project matrix from which to extract ovrTimewarpProjectionDesc. -/// \param[in] projectionModFlags A combination of the ovrProjectionModifier flags. -/// \return Returns the extracted ovrTimewarpProjectionDesc. -/// \see ovrTimewarpProjectionDesc -/// -OVR_PUBLIC_FUNCTION(ovrTimewarpProjectionDesc) ovrTimewarpProjectionDesc_FromProjection(ovrMatrix4f projection, unsigned int projectionModFlags); - - -/// Generates an orthographic sub-projection. -/// -/// Used for 2D rendering, Y is down. -/// -/// \param[in] projection The perspective matrix that the orthographic matrix is derived from. -/// \param[in] orthoScale Equal to 1.0f / pixelsPerTanAngleAtCenter. -/// \param[in] orthoDistance Equal to the distance from the camera in meters, such as 0.8m. -/// \param[in] HmdToEyeOffsetX Specifies the offset of the eye from the center. -/// -/// \return Returns the calculated projection matrix. -/// -OVR_PUBLIC_FUNCTION(ovrMatrix4f) ovrMatrix4f_OrthoSubProjection(ovrMatrix4f projection, ovrVector2f orthoScale, - float orthoDistance, float HmdToEyeOffsetX); - - - -/// Computes offset eye poses based on headPose returned by ovrTrackingState. -/// -/// \param[in] headPose Indicates the HMD position and orientation to use for the calculation. -/// \param[in] hmdToEyeOffset Can be ovrEyeRenderDesc.HmdToEyeOffset returned from -/// ovr_GetRenderDesc. For monoscopic rendering, use a vector that is the average -/// of the two vectors for both eyes. -/// \param[out] outEyePoses If outEyePoses are used for rendering, they should be passed to -/// ovr_SubmitFrame in ovrLayerEyeFov::RenderPose or ovrLayerEyeFovDepth::RenderPose. -/// -OVR_PUBLIC_FUNCTION(void) ovr_CalcEyePoses(ovrPosef headPose, - const ovrVector3f hmdToEyeOffset[2], - ovrPosef outEyePoses[2]); - - -/// Returns the predicted head pose in outHmdTrackingState and offset eye poses in outEyePoses. -/// -/// This is a thread-safe function where caller should increment frameIndex with every frame -/// and pass that index where applicable to functions called on the rendering thread. -/// Assuming outEyePoses are used for rendering, it should be passed as a part of ovrLayerEyeFov. -/// The caller does not need to worry about applying HmdToEyeOffset to the returned outEyePoses variables. -/// -/// \param[in] hmd Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] frameIndex Specifies the targeted frame index, or 0 to refer to one frame after -/// the last time ovr_SubmitFrame was called. -/// \param[in] latencyMarker Specifies that this call is the point in time where -/// the "App-to-Mid-Photon" latency timer starts from. If a given ovrLayer -/// provides "SensorSampleTimestamp", that will override the value stored here. -/// \param[in] hmdToEyeOffset Can be ovrEyeRenderDesc.HmdToEyeOffset returned from -/// ovr_GetRenderDesc. For monoscopic rendering, use a vector that is the average -/// of the two vectors for both eyes. -/// \param[out] outEyePoses The predicted eye poses. -/// \param[out] outSensorSampleTime The time when this function was called. May be NULL, in which case it is ignored. -/// -OVR_PUBLIC_FUNCTION(void) ovr_GetEyePoses(ovrSession session, long long frameIndex, ovrBool latencyMarker, - const ovrVector3f hmdToEyeOffset[2], - ovrPosef outEyePoses[2], - double* outSensorSampleTime); - - - -/// Tracking poses provided by the SDK come in a right-handed coordinate system. If an application -/// is passing in ovrProjection_LeftHanded into ovrMatrix4f_Projection, then it should also use -/// this function to flip the HMD tracking poses to be left-handed. -/// -/// While this utility function is intended to convert a left-handed ovrPosef into a right-handed -/// coordinate system, it will also work for converting right-handed to left-handed since the -/// flip operation is the same for both cases. -/// -/// \param[in] inPose that is right-handed -/// \param[out] outPose that is requested to be left-handed (can be the same pointer to inPose) -/// -OVR_PUBLIC_FUNCTION(void) ovrPosef_FlipHandedness(const ovrPosef* inPose, ovrPosef* outPose); - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - - -#endif // Header include guard diff --git a/src/external/OculusSDK/LibOVR/Include/Extras/OVR_Math.h b/src/external/OculusSDK/LibOVR/Include/Extras/OVR_Math.h deleted file mode 100644 index 89293ff8f..000000000 --- a/src/external/OculusSDK/LibOVR/Include/Extras/OVR_Math.h +++ /dev/null @@ -1,3804 +0,0 @@ -/********************************************************************************//** -\file OVR_Math.h -\brief Implementation of 3D primitives such as vectors, matrices. -\copyright Copyright 2014-2016 Oculus VR, LLC All Rights reserved. -*************************************************************************************/ - -#ifndef OVR_Math_h -#define OVR_Math_h - - -// This file is intended to be independent of the rest of LibOVR and LibOVRKernel and thus -// has no #include dependencies on either. - -#include -#include -#include -#include -#include -#include -#include "../OVR_CAPI.h" // Currently required due to a dependence on the ovrFovPort_ declaration. - -#if defined(_MSC_VER) - #pragma warning(push) - #pragma warning(disable: 4127) // conditional expression is constant -#endif - - -#if defined(_MSC_VER) - #define OVRMath_sprintf sprintf_s -#else - #define OVRMath_sprintf snprintf -#endif - - -//------------------------------------------------------------------------------------- -// ***** OVR_MATH_ASSERT -// -// Independent debug break implementation for OVR_Math.h. - -#if !defined(OVR_MATH_DEBUG_BREAK) - #if defined(_DEBUG) - #if defined(_MSC_VER) - #define OVR_MATH_DEBUG_BREAK __debugbreak() - #else - #define OVR_MATH_DEBUG_BREAK __builtin_trap() - #endif - #else - #define OVR_MATH_DEBUG_BREAK ((void)0) - #endif -#endif - - -//------------------------------------------------------------------------------------- -// ***** OVR_MATH_ASSERT -// -// Independent OVR_MATH_ASSERT implementation for OVR_Math.h. - -#if !defined(OVR_MATH_ASSERT) - #if defined(_DEBUG) - #define OVR_MATH_ASSERT(p) if (!(p)) { OVR_MATH_DEBUG_BREAK; } - #else - #define OVR_MATH_ASSERT(p) ((void)0) - #endif -#endif - - -//------------------------------------------------------------------------------------- -// ***** OVR_MATH_STATIC_ASSERT -// -// Independent OVR_MATH_ASSERT implementation for OVR_Math.h. - -#if !defined(OVR_MATH_STATIC_ASSERT) - #if defined(__cplusplus) && ((defined(_MSC_VER) && (defined(_MSC_VER) >= 1600)) || defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L)) - #define OVR_MATH_STATIC_ASSERT static_assert - #else - #if !defined(OVR_SA_UNUSED) - #if defined(__GNUC__) || defined(__clang__) - #define OVR_SA_UNUSED __attribute__((unused)) - #else - #define OVR_SA_UNUSED - #endif - #define OVR_SA_PASTE(a,b) a##b - #define OVR_SA_HELP(a,b) OVR_SA_PASTE(a,b) - #endif - - #define OVR_MATH_STATIC_ASSERT(expression, msg) typedef char OVR_SA_HELP(compileTimeAssert, __LINE__) [((expression) != 0) ? 1 : -1] OVR_SA_UNUSED - #endif -#endif - - - -namespace OVR { - -template -const T OVRMath_Min(const T a, const T b) -{ return (a < b) ? a : b; } - -template -const T OVRMath_Max(const T a, const T b) -{ return (b < a) ? a : b; } - -template -void OVRMath_Swap(T& a, T& b) -{ T temp(a); a = b; b = temp; } - - -//------------------------------------------------------------------------------------- -// ***** Constants for 3D world/axis definitions. - -// Definitions of axes for coordinate and rotation conversions. -enum Axis -{ - Axis_X = 0, Axis_Y = 1, Axis_Z = 2 -}; - -// RotateDirection describes the rotation direction around an axis, interpreted as follows: -// CW - Clockwise while looking "down" from positive axis towards the origin. -// CCW - Counter-clockwise while looking from the positive axis towards the origin, -// which is in the negative axis direction. -// CCW is the default for the RHS coordinate system. Oculus standard RHS coordinate -// system defines Y up, X right, and Z back (pointing out from the screen). In this -// system Rotate_CCW around Z will specifies counter-clockwise rotation in XY plane. -enum RotateDirection -{ - Rotate_CCW = 1, - Rotate_CW = -1 -}; - -// Constants for right handed and left handed coordinate systems -enum HandedSystem -{ - Handed_R = 1, Handed_L = -1 -}; - -// AxisDirection describes which way the coordinate axis points. Used by WorldAxes. -enum AxisDirection -{ - Axis_Up = 2, - Axis_Down = -2, - Axis_Right = 1, - Axis_Left = -1, - Axis_In = 3, - Axis_Out = -3 -}; - -struct WorldAxes -{ - AxisDirection XAxis, YAxis, ZAxis; - - WorldAxes(AxisDirection x, AxisDirection y, AxisDirection z) - : XAxis(x), YAxis(y), ZAxis(z) - { OVR_MATH_ASSERT(abs(x) != abs(y) && abs(y) != abs(z) && abs(z) != abs(x));} -}; - -} // namespace OVR - - -//------------------------------------------------------------------------------------// -// ***** C Compatibility Types - -// These declarations are used to support conversion between C types used in -// LibOVR C interfaces and their C++ versions. As an example, they allow passing -// Vector3f into a function that expects ovrVector3f. - -typedef struct ovrQuatf_ ovrQuatf; -typedef struct ovrQuatd_ ovrQuatd; -typedef struct ovrSizei_ ovrSizei; -typedef struct ovrSizef_ ovrSizef; -typedef struct ovrSized_ ovrSized; -typedef struct ovrRecti_ ovrRecti; -typedef struct ovrVector2i_ ovrVector2i; -typedef struct ovrVector2f_ ovrVector2f; -typedef struct ovrVector2d_ ovrVector2d; -typedef struct ovrVector3f_ ovrVector3f; -typedef struct ovrVector3d_ ovrVector3d; -typedef struct ovrVector4f_ ovrVector4f; -typedef struct ovrVector4d_ ovrVector4d; -typedef struct ovrMatrix2f_ ovrMatrix2f; -typedef struct ovrMatrix2d_ ovrMatrix2d; -typedef struct ovrMatrix3f_ ovrMatrix3f; -typedef struct ovrMatrix3d_ ovrMatrix3d; -typedef struct ovrMatrix4f_ ovrMatrix4f; -typedef struct ovrMatrix4d_ ovrMatrix4d; -typedef struct ovrPosef_ ovrPosef; -typedef struct ovrPosed_ ovrPosed; -typedef struct ovrPoseStatef_ ovrPoseStatef; -typedef struct ovrPoseStated_ ovrPoseStated; - -namespace OVR { - -// Forward-declare our templates. -template class Quat; -template class Size; -template class Rect; -template class Vector2; -template class Vector3; -template class Vector4; -template class Matrix2; -template class Matrix3; -template class Matrix4; -template class Pose; -template class PoseState; - -// CompatibleTypes::Type is used to lookup a compatible C-version of a C++ class. -template -struct CompatibleTypes -{ - // Declaration here seems necessary for MSVC; specializations are - // used instead. - typedef struct {} Type; -}; - -// Specializations providing CompatibleTypes::Type value. -template<> struct CompatibleTypes > { typedef ovrQuatf Type; }; -template<> struct CompatibleTypes > { typedef ovrQuatd Type; }; -template<> struct CompatibleTypes > { typedef ovrMatrix2f Type; }; -template<> struct CompatibleTypes > { typedef ovrMatrix2d Type; }; -template<> struct CompatibleTypes > { typedef ovrMatrix3f Type; }; -template<> struct CompatibleTypes > { typedef ovrMatrix3d Type; }; -template<> struct CompatibleTypes > { typedef ovrMatrix4f Type; }; -template<> struct CompatibleTypes > { typedef ovrMatrix4d Type; }; -template<> struct CompatibleTypes > { typedef ovrSizei Type; }; -template<> struct CompatibleTypes > { typedef ovrSizef Type; }; -template<> struct CompatibleTypes > { typedef ovrSized Type; }; -template<> struct CompatibleTypes > { typedef ovrRecti Type; }; -template<> struct CompatibleTypes > { typedef ovrVector2i Type; }; -template<> struct CompatibleTypes > { typedef ovrVector2f Type; }; -template<> struct CompatibleTypes > { typedef ovrVector2d Type; }; -template<> struct CompatibleTypes > { typedef ovrVector3f Type; }; -template<> struct CompatibleTypes > { typedef ovrVector3d Type; }; -template<> struct CompatibleTypes > { typedef ovrVector4f Type; }; -template<> struct CompatibleTypes > { typedef ovrVector4d Type; }; -template<> struct CompatibleTypes > { typedef ovrPosef Type; }; -template<> struct CompatibleTypes > { typedef ovrPosed Type; }; - -//------------------------------------------------------------------------------------// -// ***** Math -// -// Math class contains constants and functions. This class is a template specialized -// per type, with Math and Math being distinct. -template -class Math -{ -public: - // By default, support explicit conversion to float. This allows Vector2 to - // compile, for example. - typedef float OtherFloatType; - - static int Tolerance() { return 0; } // Default value so integer types compile -}; - - -//------------------------------------------------------------------------------------// -// ***** double constants -#define MATH_DOUBLE_PI 3.14159265358979323846 -#define MATH_DOUBLE_TWOPI (2*MATH_DOUBLE_PI) -#define MATH_DOUBLE_PIOVER2 (0.5*MATH_DOUBLE_PI) -#define MATH_DOUBLE_PIOVER4 (0.25*MATH_DOUBLE_PI) -#define MATH_FLOAT_MAXVALUE (FLT_MAX) - -#define MATH_DOUBLE_RADTODEGREEFACTOR (360.0 / MATH_DOUBLE_TWOPI) -#define MATH_DOUBLE_DEGREETORADFACTOR (MATH_DOUBLE_TWOPI / 360.0) - -#define MATH_DOUBLE_E 2.71828182845904523536 -#define MATH_DOUBLE_LOG2E 1.44269504088896340736 -#define MATH_DOUBLE_LOG10E 0.434294481903251827651 -#define MATH_DOUBLE_LN2 0.693147180559945309417 -#define MATH_DOUBLE_LN10 2.30258509299404568402 - -#define MATH_DOUBLE_SQRT2 1.41421356237309504880 -#define MATH_DOUBLE_SQRT1_2 0.707106781186547524401 - -#define MATH_DOUBLE_TOLERANCE 1e-12 // a default number for value equality tolerance: about 4500*Epsilon; -#define MATH_DOUBLE_SINGULARITYRADIUS 1e-12 // about 1-cos(.0001 degree), for gimbal lock numerical problems - -//------------------------------------------------------------------------------------// -// ***** float constants -#define MATH_FLOAT_PI float(MATH_DOUBLE_PI) -#define MATH_FLOAT_TWOPI float(MATH_DOUBLE_TWOPI) -#define MATH_FLOAT_PIOVER2 float(MATH_DOUBLE_PIOVER2) -#define MATH_FLOAT_PIOVER4 float(MATH_DOUBLE_PIOVER4) - -#define MATH_FLOAT_RADTODEGREEFACTOR float(MATH_DOUBLE_RADTODEGREEFACTOR) -#define MATH_FLOAT_DEGREETORADFACTOR float(MATH_DOUBLE_DEGREETORADFACTOR) - -#define MATH_FLOAT_E float(MATH_DOUBLE_E) -#define MATH_FLOAT_LOG2E float(MATH_DOUBLE_LOG2E) -#define MATH_FLOAT_LOG10E float(MATH_DOUBLE_LOG10E) -#define MATH_FLOAT_LN2 float(MATH_DOUBLE_LN2) -#define MATH_FLOAT_LN10 float(MATH_DOUBLE_LN10) - -#define MATH_FLOAT_SQRT2 float(MATH_DOUBLE_SQRT2) -#define MATH_FLOAT_SQRT1_2 float(MATH_DOUBLE_SQRT1_2) - -#define MATH_FLOAT_TOLERANCE 1e-5f // a default number for value equality tolerance: 1e-5, about 84*EPSILON; -#define MATH_FLOAT_SINGULARITYRADIUS 1e-7f // about 1-cos(.025 degree), for gimbal lock numerical problems - - - -// Single-precision Math constants class. -template<> -class Math -{ -public: - typedef double OtherFloatType; - - static inline float Tolerance() { return MATH_FLOAT_TOLERANCE; }; // a default number for value equality tolerance - static inline float SingularityRadius() { return MATH_FLOAT_SINGULARITYRADIUS; }; // for gimbal lock numerical problems -}; - -// Double-precision Math constants class -template<> -class Math -{ -public: - typedef float OtherFloatType; - - static inline double Tolerance() { return MATH_DOUBLE_TOLERANCE; }; // a default number for value equality tolerance - static inline double SingularityRadius() { return MATH_DOUBLE_SINGULARITYRADIUS; }; // for gimbal lock numerical problems -}; - -typedef Math Mathf; -typedef Math Mathd; - -// Conversion functions between degrees and radians -// (non-templated to ensure passing int arguments causes warning) -inline float RadToDegree(float rad) { return rad * MATH_FLOAT_RADTODEGREEFACTOR; } -inline double RadToDegree(double rad) { return rad * MATH_DOUBLE_RADTODEGREEFACTOR; } - -inline float DegreeToRad(float deg) { return deg * MATH_FLOAT_DEGREETORADFACTOR; } -inline double DegreeToRad(double deg) { return deg * MATH_DOUBLE_DEGREETORADFACTOR; } - -// Square function -template -inline T Sqr(T x) { return x*x; } - -// Sign: returns 0 if x == 0, -1 if x < 0, and 1 if x > 0 -template -inline T Sign(T x) { return (x != T(0)) ? (x < T(0) ? T(-1) : T(1)) : T(0); } - -// Numerically stable acos function -inline float Acos(float x) { return (x > 1.0f) ? 0.0f : (x < -1.0f) ? MATH_FLOAT_PI : acosf(x); } -inline double Acos(double x) { return (x > 1.0) ? 0.0 : (x < -1.0) ? MATH_DOUBLE_PI : acos(x); } - -// Numerically stable asin function -inline float Asin(float x) { return (x > 1.0f) ? MATH_FLOAT_PIOVER2 : (x < -1.0f) ? -MATH_FLOAT_PIOVER2 : asinf(x); } -inline double Asin(double x) { return (x > 1.0) ? MATH_DOUBLE_PIOVER2 : (x < -1.0) ? -MATH_DOUBLE_PIOVER2 : asin(x); } - -#if defined(_MSC_VER) - inline int isnan(double x) { return ::_isnan(x); } -#elif !defined(isnan) // Some libraries #define isnan. - inline int isnan(double x) { return ::isnan(x); } -#endif - -template -class Quat; - - -//------------------------------------------------------------------------------------- -// ***** Vector2<> - -// Vector2f (Vector2d) represents a 2-dimensional vector or point in space, -// consisting of coordinates x and y - -template -class Vector2 -{ -public: - typedef T ElementType; - static const size_t ElementCount = 2; - - T x, y; - - Vector2() : x(0), y(0) { } - Vector2(T x_, T y_) : x(x_), y(y_) { } - explicit Vector2(T s) : x(s), y(s) { } - explicit Vector2(const Vector2::OtherFloatType> &src) - : x((T)src.x), y((T)src.y) { } - - static Vector2 Zero() { return Vector2(0, 0); } - - // C-interop support. - typedef typename CompatibleTypes >::Type CompatibleType; - - Vector2(const CompatibleType& s) : x(s.x), y(s.y) { } - - operator const CompatibleType& () const - { - OVR_MATH_STATIC_ASSERT(sizeof(Vector2) == sizeof(CompatibleType), "sizeof(Vector2) failure"); - return reinterpret_cast(*this); - } - - - bool operator== (const Vector2& b) const { return x == b.x && y == b.y; } - bool operator!= (const Vector2& b) const { return x != b.x || y != b.y; } - - Vector2 operator+ (const Vector2& b) const { return Vector2(x + b.x, y + b.y); } - Vector2& operator+= (const Vector2& b) { x += b.x; y += b.y; return *this; } - Vector2 operator- (const Vector2& b) const { return Vector2(x - b.x, y - b.y); } - Vector2& operator-= (const Vector2& b) { x -= b.x; y -= b.y; return *this; } - Vector2 operator- () const { return Vector2(-x, -y); } - - // Scalar multiplication/division scales vector. - Vector2 operator* (T s) const { return Vector2(x*s, y*s); } - Vector2& operator*= (T s) { x *= s; y *= s; return *this; } - - Vector2 operator/ (T s) const { T rcp = T(1)/s; - return Vector2(x*rcp, y*rcp); } - Vector2& operator/= (T s) { T rcp = T(1)/s; - x *= rcp; y *= rcp; - return *this; } - - static Vector2 Min(const Vector2& a, const Vector2& b) { return Vector2((a.x < b.x) ? a.x : b.x, - (a.y < b.y) ? a.y : b.y); } - static Vector2 Max(const Vector2& a, const Vector2& b) { return Vector2((a.x > b.x) ? a.x : b.x, - (a.y > b.y) ? a.y : b.y); } - - Vector2 Clamped(T maxMag) const - { - T magSquared = LengthSq(); - if (magSquared <= Sqr(maxMag)) - return *this; - else - return *this * (maxMag / sqrt(magSquared)); - } - - // Compare two vectors for equality with tolerance. Returns true if vectors match withing tolerance. - bool IsEqual(const Vector2& b, T tolerance =Math::Tolerance()) const - { - return (fabs(b.x-x) <= tolerance) && - (fabs(b.y-y) <= tolerance); - } - bool Compare(const Vector2& b, T tolerance = Math::Tolerance()) const - { - return IsEqual(b, tolerance); - } - - // Access element by index - T& operator[] (int idx) - { - OVR_MATH_ASSERT(0 <= idx && idx < 2); - return *(&x + idx); - } - const T& operator[] (int idx) const - { - OVR_MATH_ASSERT(0 <= idx && idx < 2); - return *(&x + idx); - } - - // Entry-wise product of two vectors - Vector2 EntrywiseMultiply(const Vector2& b) const { return Vector2(x * b.x, y * b.y);} - - - // Multiply and divide operators do entry-wise math. Used Dot() for dot product. - Vector2 operator* (const Vector2& b) const { return Vector2(x * b.x, y * b.y); } - Vector2 operator/ (const Vector2& b) const { return Vector2(x / b.x, y / b.y); } - - // Dot product - // Used to calculate angle q between two vectors among other things, - // as (A dot B) = |a||b|cos(q). - T Dot(const Vector2& b) const { return x*b.x + y*b.y; } - - // Returns the angle from this vector to b, in radians. - T Angle(const Vector2& b) const - { - T div = LengthSq()*b.LengthSq(); - OVR_MATH_ASSERT(div != T(0)); - T result = Acos((this->Dot(b))/sqrt(div)); - return result; - } - - // Return Length of the vector squared. - T LengthSq() const { return (x * x + y * y); } - - // Return vector length. - T Length() const { return sqrt(LengthSq()); } - - // Returns squared distance between two points represented by vectors. - T DistanceSq(const Vector2& b) const { return (*this - b).LengthSq(); } - - // Returns distance between two points represented by vectors. - T Distance(const Vector2& b) const { return (*this - b).Length(); } - - // Determine if this a unit vector. - bool IsNormalized() const { return fabs(LengthSq() - T(1)) < Math::Tolerance(); } - - // Normalize, convention vector length to 1. - void Normalize() - { - T s = Length(); - if (s != T(0)) - s = T(1) / s; - *this *= s; - } - - // Returns normalized (unit) version of the vector without modifying itself. - Vector2 Normalized() const - { - T s = Length(); - if (s != T(0)) - s = T(1) / s; - return *this * s; - } - - // Linearly interpolates from this vector to another. - // Factor should be between 0.0 and 1.0, with 0 giving full value to this. - Vector2 Lerp(const Vector2& b, T f) const { return *this*(T(1) - f) + b*f; } - - // Projects this vector onto the argument; in other words, - // A.Project(B) returns projection of vector A onto B. - Vector2 ProjectTo(const Vector2& b) const - { - T l2 = b.LengthSq(); - OVR_MATH_ASSERT(l2 != T(0)); - return b * ( Dot(b) / l2 ); - } - - // returns true if vector b is clockwise from this vector - bool IsClockwise(const Vector2& b) const - { - return (x * b.y - y * b.x) < 0; - } -}; - - -typedef Vector2 Vector2f; -typedef Vector2 Vector2d; -typedef Vector2 Vector2i; - -typedef Vector2 Point2f; -typedef Vector2 Point2d; -typedef Vector2 Point2i; - -//------------------------------------------------------------------------------------- -// ***** Vector3<> - 3D vector of {x, y, z} - -// -// Vector3f (Vector3d) represents a 3-dimensional vector or point in space, -// consisting of coordinates x, y and z. - -template -class Vector3 -{ -public: - typedef T ElementType; - static const size_t ElementCount = 3; - - T x, y, z; - - // FIXME: default initialization of a vector class can be very expensive in a full-blown - // application. A few hundred thousand vector constructions is not unlikely and can add - // up to milliseconds of time on processors like the PS3 PPU. - Vector3() : x(0), y(0), z(0) { } - Vector3(T x_, T y_, T z_ = 0) : x(x_), y(y_), z(z_) { } - explicit Vector3(T s) : x(s), y(s), z(s) { } - explicit Vector3(const Vector3::OtherFloatType> &src) - : x((T)src.x), y((T)src.y), z((T)src.z) { } - - static Vector3 Zero() { return Vector3(0, 0, 0); } - - // C-interop support. - typedef typename CompatibleTypes >::Type CompatibleType; - - Vector3(const CompatibleType& s) : x(s.x), y(s.y), z(s.z) { } - - operator const CompatibleType& () const - { - OVR_MATH_STATIC_ASSERT(sizeof(Vector3) == sizeof(CompatibleType), "sizeof(Vector3) failure"); - return reinterpret_cast(*this); - } - - bool operator== (const Vector3& b) const { return x == b.x && y == b.y && z == b.z; } - bool operator!= (const Vector3& b) const { return x != b.x || y != b.y || z != b.z; } - - Vector3 operator+ (const Vector3& b) const { return Vector3(x + b.x, y + b.y, z + b.z); } - Vector3& operator+= (const Vector3& b) { x += b.x; y += b.y; z += b.z; return *this; } - Vector3 operator- (const Vector3& b) const { return Vector3(x - b.x, y - b.y, z - b.z); } - Vector3& operator-= (const Vector3& b) { x -= b.x; y -= b.y; z -= b.z; return *this; } - Vector3 operator- () const { return Vector3(-x, -y, -z); } - - // Scalar multiplication/division scales vector. - Vector3 operator* (T s) const { return Vector3(x*s, y*s, z*s); } - Vector3& operator*= (T s) { x *= s; y *= s; z *= s; return *this; } - - Vector3 operator/ (T s) const { T rcp = T(1)/s; - return Vector3(x*rcp, y*rcp, z*rcp); } - Vector3& operator/= (T s) { T rcp = T(1)/s; - x *= rcp; y *= rcp; z *= rcp; - return *this; } - - static Vector3 Min(const Vector3& a, const Vector3& b) - { - return Vector3((a.x < b.x) ? a.x : b.x, - (a.y < b.y) ? a.y : b.y, - (a.z < b.z) ? a.z : b.z); - } - static Vector3 Max(const Vector3& a, const Vector3& b) - { - return Vector3((a.x > b.x) ? a.x : b.x, - (a.y > b.y) ? a.y : b.y, - (a.z > b.z) ? a.z : b.z); - } - - Vector3 Clamped(T maxMag) const - { - T magSquared = LengthSq(); - if (magSquared <= Sqr(maxMag)) - return *this; - else - return *this * (maxMag / sqrt(magSquared)); - } - - // Compare two vectors for equality with tolerance. Returns true if vectors match withing tolerance. - bool IsEqual(const Vector3& b, T tolerance = Math::Tolerance()) const - { - return (fabs(b.x-x) <= tolerance) && - (fabs(b.y-y) <= tolerance) && - (fabs(b.z-z) <= tolerance); - } - bool Compare(const Vector3& b, T tolerance = Math::Tolerance()) const - { - return IsEqual(b, tolerance); - } - - T& operator[] (int idx) - { - OVR_MATH_ASSERT(0 <= idx && idx < 3); - return *(&x + idx); - } - - const T& operator[] (int idx) const - { - OVR_MATH_ASSERT(0 <= idx && idx < 3); - return *(&x + idx); - } - - // Entrywise product of two vectors - Vector3 EntrywiseMultiply(const Vector3& b) const { return Vector3(x * b.x, - y * b.y, - z * b.z);} - - // Multiply and divide operators do entry-wise math - Vector3 operator* (const Vector3& b) const { return Vector3(x * b.x, - y * b.y, - z * b.z); } - - Vector3 operator/ (const Vector3& b) const { return Vector3(x / b.x, - y / b.y, - z / b.z); } - - - // Dot product - // Used to calculate angle q between two vectors among other things, - // as (A dot B) = |a||b|cos(q). - T Dot(const Vector3& b) const { return x*b.x + y*b.y + z*b.z; } - - // Compute cross product, which generates a normal vector. - // Direction vector can be determined by right-hand rule: Pointing index finder in - // direction a and middle finger in direction b, thumb will point in a.Cross(b). - Vector3 Cross(const Vector3& b) const { return Vector3(y*b.z - z*b.y, - z*b.x - x*b.z, - x*b.y - y*b.x); } - - // Returns the angle from this vector to b, in radians. - T Angle(const Vector3& b) const - { - T div = LengthSq()*b.LengthSq(); - OVR_MATH_ASSERT(div != T(0)); - T result = Acos((this->Dot(b))/sqrt(div)); - return result; - } - - // Return Length of the vector squared. - T LengthSq() const { return (x * x + y * y + z * z); } - - // Return vector length. - T Length() const { return (T)sqrt(LengthSq()); } - - // Returns squared distance between two points represented by vectors. - T DistanceSq(Vector3 const& b) const { return (*this - b).LengthSq(); } - - // Returns distance between two points represented by vectors. - T Distance(Vector3 const& b) const { return (*this - b).Length(); } - - bool IsNormalized() const { return fabs(LengthSq() - T(1)) < Math::Tolerance(); } - - // Normalize, convention vector length to 1. - void Normalize() - { - T s = Length(); - if (s != T(0)) - s = T(1) / s; - *this *= s; - } - - // Returns normalized (unit) version of the vector without modifying itself. - Vector3 Normalized() const - { - T s = Length(); - if (s != T(0)) - s = T(1) / s; - return *this * s; - } - - // Linearly interpolates from this vector to another. - // Factor should be between 0.0 and 1.0, with 0 giving full value to this. - Vector3 Lerp(const Vector3& b, T f) const { return *this*(T(1) - f) + b*f; } - - // Projects this vector onto the argument; in other words, - // A.Project(B) returns projection of vector A onto B. - Vector3 ProjectTo(const Vector3& b) const - { - T l2 = b.LengthSq(); - OVR_MATH_ASSERT(l2 != T(0)); - return b * ( Dot(b) / l2 ); - } - - // Projects this vector onto a plane defined by a normal vector - Vector3 ProjectToPlane(const Vector3& normal) const { return *this - this->ProjectTo(normal); } -}; - -typedef Vector3 Vector3f; -typedef Vector3 Vector3d; -typedef Vector3 Vector3i; - -OVR_MATH_STATIC_ASSERT((sizeof(Vector3f) == 3*sizeof(float)), "sizeof(Vector3f) failure"); -OVR_MATH_STATIC_ASSERT((sizeof(Vector3d) == 3*sizeof(double)), "sizeof(Vector3d) failure"); -OVR_MATH_STATIC_ASSERT((sizeof(Vector3i) == 3*sizeof(int32_t)), "sizeof(Vector3i) failure"); - -typedef Vector3 Point3f; -typedef Vector3 Point3d; -typedef Vector3 Point3i; - - -//------------------------------------------------------------------------------------- -// ***** Vector4<> - 4D vector of {x, y, z, w} - -// -// Vector4f (Vector4d) represents a 3-dimensional vector or point in space, -// consisting of coordinates x, y, z and w. - -template -class Vector4 -{ -public: - typedef T ElementType; - static const size_t ElementCount = 4; - - T x, y, z, w; - - // FIXME: default initialization of a vector class can be very expensive in a full-blown - // application. A few hundred thousand vector constructions is not unlikely and can add - // up to milliseconds of time on processors like the PS3 PPU. - Vector4() : x(0), y(0), z(0), w(0) { } - Vector4(T x_, T y_, T z_, T w_) : x(x_), y(y_), z(z_), w(w_) { } - explicit Vector4(T s) : x(s), y(s), z(s), w(s) { } - explicit Vector4(const Vector3& v, const T w_=T(1)) : x(v.x), y(v.y), z(v.z), w(w_) { } - explicit Vector4(const Vector4::OtherFloatType> &src) - : x((T)src.x), y((T)src.y), z((T)src.z), w((T)src.w) { } - - static Vector4 Zero() { return Vector4(0, 0, 0, 0); } - - // C-interop support. - typedef typename CompatibleTypes< Vector4 >::Type CompatibleType; - - Vector4(const CompatibleType& s) : x(s.x), y(s.y), z(s.z), w(s.w) { } - - operator const CompatibleType& () const - { - OVR_MATH_STATIC_ASSERT(sizeof(Vector4) == sizeof(CompatibleType), "sizeof(Vector4) failure"); - return reinterpret_cast(*this); - } - - Vector4& operator= (const Vector3& other) { x=other.x; y=other.y; z=other.z; w=1; return *this; } - bool operator== (const Vector4& b) const { return x == b.x && y == b.y && z == b.z && w == b.w; } - bool operator!= (const Vector4& b) const { return x != b.x || y != b.y || z != b.z || w != b.w; } - - Vector4 operator+ (const Vector4& b) const { return Vector4(x + b.x, y + b.y, z + b.z, w + b.w); } - Vector4& operator+= (const Vector4& b) { x += b.x; y += b.y; z += b.z; w += b.w; return *this; } - Vector4 operator- (const Vector4& b) const { return Vector4(x - b.x, y - b.y, z - b.z, w - b.w); } - Vector4& operator-= (const Vector4& b) { x -= b.x; y -= b.y; z -= b.z; w -= b.w; return *this; } - Vector4 operator- () const { return Vector4(-x, -y, -z, -w); } - - // Scalar multiplication/division scales vector. - Vector4 operator* (T s) const { return Vector4(x*s, y*s, z*s, w*s); } - Vector4& operator*= (T s) { x *= s; y *= s; z *= s; w *= s;return *this; } - - Vector4 operator/ (T s) const { T rcp = T(1)/s; - return Vector4(x*rcp, y*rcp, z*rcp, w*rcp); } - Vector4& operator/= (T s) { T rcp = T(1)/s; - x *= rcp; y *= rcp; z *= rcp; w *= rcp; - return *this; } - - static Vector4 Min(const Vector4& a, const Vector4& b) - { - return Vector4((a.x < b.x) ? a.x : b.x, - (a.y < b.y) ? a.y : b.y, - (a.z < b.z) ? a.z : b.z, - (a.w < b.w) ? a.w : b.w); - } - static Vector4 Max(const Vector4& a, const Vector4& b) - { - return Vector4((a.x > b.x) ? a.x : b.x, - (a.y > b.y) ? a.y : b.y, - (a.z > b.z) ? a.z : b.z, - (a.w > b.w) ? a.w : b.w); - } - - Vector4 Clamped(T maxMag) const - { - T magSquared = LengthSq(); - if (magSquared <= Sqr(maxMag)) - return *this; - else - return *this * (maxMag / sqrt(magSquared)); - } - - // Compare two vectors for equality with tolerance. Returns true if vectors match withing tolerance. - bool IsEqual(const Vector4& b, T tolerance = Math::Tolerance()) const - { - return (fabs(b.x-x) <= tolerance) && - (fabs(b.y-y) <= tolerance) && - (fabs(b.z-z) <= tolerance) && - (fabs(b.w-w) <= tolerance); - } - bool Compare(const Vector4& b, T tolerance = Math::Tolerance()) const - { - return IsEqual(b, tolerance); - } - - T& operator[] (int idx) - { - OVR_MATH_ASSERT(0 <= idx && idx < 4); - return *(&x + idx); - } - - const T& operator[] (int idx) const - { - OVR_MATH_ASSERT(0 <= idx && idx < 4); - return *(&x + idx); - } - - // Entry wise product of two vectors - Vector4 EntrywiseMultiply(const Vector4& b) const { return Vector4(x * b.x, - y * b.y, - z * b.z, - w * b.w);} - - // Multiply and divide operators do entry-wise math - Vector4 operator* (const Vector4& b) const { return Vector4(x * b.x, - y * b.y, - z * b.z, - w * b.w); } - - Vector4 operator/ (const Vector4& b) const { return Vector4(x / b.x, - y / b.y, - z / b.z, - w / b.w); } - - - // Dot product - T Dot(const Vector4& b) const { return x*b.x + y*b.y + z*b.z + w*b.w; } - - // Return Length of the vector squared. - T LengthSq() const { return (x * x + y * y + z * z + w * w); } - - // Return vector length. - T Length() const { return sqrt(LengthSq()); } - - bool IsNormalized() const { return fabs(LengthSq() - T(1)) < Math::Tolerance(); } - - // Normalize, convention vector length to 1. - void Normalize() - { - T s = Length(); - if (s != T(0)) - s = T(1) / s; - *this *= s; - } - - // Returns normalized (unit) version of the vector without modifying itself. - Vector4 Normalized() const - { - T s = Length(); - if (s != T(0)) - s = T(1) / s; - return *this * s; - } - - // Linearly interpolates from this vector to another. - // Factor should be between 0.0 and 1.0, with 0 giving full value to this. - Vector4 Lerp(const Vector4& b, T f) const { return *this*(T(1) - f) + b*f; } -}; - -typedef Vector4 Vector4f; -typedef Vector4 Vector4d; -typedef Vector4 Vector4i; - - -//------------------------------------------------------------------------------------- -// ***** Bounds3 - -// Bounds class used to describe a 3D axis aligned bounding box. - -template -class Bounds3 -{ -public: - Vector3 b[2]; - - Bounds3() - { - } - - Bounds3( const Vector3 & mins, const Vector3 & maxs ) -{ - b[0] = mins; - b[1] = maxs; - } - - void Clear() - { - b[0].x = b[0].y = b[0].z = Math::MaxValue; - b[1].x = b[1].y = b[1].z = -Math::MaxValue; - } - - void AddPoint( const Vector3 & v ) - { - b[0].x = (b[0].x < v.x ? b[0].x : v.x); - b[0].y = (b[0].y < v.y ? b[0].y : v.y); - b[0].z = (b[0].z < v.z ? b[0].z : v.z); - b[1].x = (v.x < b[1].x ? b[1].x : v.x); - b[1].y = (v.y < b[1].y ? b[1].y : v.y); - b[1].z = (v.z < b[1].z ? b[1].z : v.z); - } - - const Vector3 & GetMins() const { return b[0]; } - const Vector3 & GetMaxs() const { return b[1]; } - - Vector3 & GetMins() { return b[0]; } - Vector3 & GetMaxs() { return b[1]; } -}; - -typedef Bounds3 Bounds3f; -typedef Bounds3 Bounds3d; - - -//------------------------------------------------------------------------------------- -// ***** Size - -// Size class represents 2D size with Width, Height components. -// Used to describe distentions of render targets, etc. - -template -class Size -{ -public: - T w, h; - - Size() : w(0), h(0) { } - Size(T w_, T h_) : w(w_), h(h_) { } - explicit Size(T s) : w(s), h(s) { } - explicit Size(const Size::OtherFloatType> &src) - : w((T)src.w), h((T)src.h) { } - - // C-interop support. - typedef typename CompatibleTypes >::Type CompatibleType; - - Size(const CompatibleType& s) : w(s.w), h(s.h) { } - - operator const CompatibleType& () const - { - OVR_MATH_STATIC_ASSERT(sizeof(Size) == sizeof(CompatibleType), "sizeof(Size) failure"); - return reinterpret_cast(*this); - } - - bool operator== (const Size& b) const { return w == b.w && h == b.h; } - bool operator!= (const Size& b) const { return w != b.w || h != b.h; } - - Size operator+ (const Size& b) const { return Size(w + b.w, h + b.h); } - Size& operator+= (const Size& b) { w += b.w; h += b.h; return *this; } - Size operator- (const Size& b) const { return Size(w - b.w, h - b.h); } - Size& operator-= (const Size& b) { w -= b.w; h -= b.h; return *this; } - Size operator- () const { return Size(-w, -h); } - Size operator* (const Size& b) const { return Size(w * b.w, h * b.h); } - Size& operator*= (const Size& b) { w *= b.w; h *= b.h; return *this; } - Size operator/ (const Size& b) const { return Size(w / b.w, h / b.h); } - Size& operator/= (const Size& b) { w /= b.w; h /= b.h; return *this; } - - // Scalar multiplication/division scales both components. - Size operator* (T s) const { return Size(w*s, h*s); } - Size& operator*= (T s) { w *= s; h *= s; return *this; } - Size operator/ (T s) const { return Size(w/s, h/s); } - Size& operator/= (T s) { w /= s; h /= s; return *this; } - - static Size Min(const Size& a, const Size& b) { return Size((a.w < b.w) ? a.w : b.w, - (a.h < b.h) ? a.h : b.h); } - static Size Max(const Size& a, const Size& b) { return Size((a.w > b.w) ? a.w : b.w, - (a.h > b.h) ? a.h : b.h); } - - T Area() const { return w * h; } - - inline Vector2 ToVector() const { return Vector2(w, h); } -}; - - -typedef Size Sizei; -typedef Size Sizeu; -typedef Size Sizef; -typedef Size Sized; - - - -//----------------------------------------------------------------------------------- -// ***** Rect - -// Rect describes a rectangular area for rendering, that includes position and size. -template -class Rect -{ -public: - T x, y; - T w, h; - - Rect() { } - Rect(T x1, T y1, T w1, T h1) : x(x1), y(y1), w(w1), h(h1) { } - Rect(const Vector2& pos, const Size& sz) : x(pos.x), y(pos.y), w(sz.w), h(sz.h) { } - Rect(const Size& sz) : x(0), y(0), w(sz.w), h(sz.h) { } - - // C-interop support. - typedef typename CompatibleTypes >::Type CompatibleType; - - Rect(const CompatibleType& s) : x(s.Pos.x), y(s.Pos.y), w(s.Size.w), h(s.Size.h) { } - - operator const CompatibleType& () const - { - OVR_MATH_STATIC_ASSERT(sizeof(Rect) == sizeof(CompatibleType), "sizeof(Rect) failure"); - return reinterpret_cast(*this); - } - - Vector2 GetPos() const { return Vector2(x, y); } - Size GetSize() const { return Size(w, h); } - void SetPos(const Vector2& pos) { x = pos.x; y = pos.y; } - void SetSize(const Size& sz) { w = sz.w; h = sz.h; } - - bool operator == (const Rect& vp) const - { return (x == vp.x) && (y == vp.y) && (w == vp.w) && (h == vp.h); } - bool operator != (const Rect& vp) const - { return !operator == (vp); } -}; - -typedef Rect Recti; - - -//-------------------------------------------------------------------------------------// -// ***** Quat -// -// Quatf represents a quaternion class used for rotations. -// -// Quaternion multiplications are done in right-to-left order, to match the -// behavior of matrices. - - -template -class Quat -{ -public: - typedef T ElementType; - static const size_t ElementCount = 4; - - // x,y,z = axis*sin(angle), w = cos(angle) - T x, y, z, w; - - Quat() : x(0), y(0), z(0), w(1) { } - Quat(T x_, T y_, T z_, T w_) : x(x_), y(y_), z(z_), w(w_) { } - explicit Quat(const Quat::OtherFloatType> &src) - : x((T)src.x), y((T)src.y), z((T)src.z), w((T)src.w) - { - // NOTE: Converting a normalized Quat to Quat - // will generally result in an un-normalized quaternion. - // But we don't normalize here in case the quaternion - // being converted is not a normalized rotation quaternion. - } - - typedef typename CompatibleTypes >::Type CompatibleType; - - // C-interop support. - Quat(const CompatibleType& s) : x(s.x), y(s.y), z(s.z), w(s.w) { } - - operator CompatibleType () const - { - CompatibleType result; - result.x = x; - result.y = y; - result.z = z; - result.w = w; - return result; - } - - // Constructs quaternion for rotation around the axis by an angle. - Quat(const Vector3& axis, T angle) - { - // Make sure we don't divide by zero. - if (axis.LengthSq() == T(0)) - { - // Assert if the axis is zero, but the angle isn't - OVR_MATH_ASSERT(angle == T(0)); - x = y = z = T(0); w = T(1); - return; - } - - Vector3 unitAxis = axis.Normalized(); - T sinHalfAngle = sin(angle * T(0.5)); - - w = cos(angle * T(0.5)); - x = unitAxis.x * sinHalfAngle; - y = unitAxis.y * sinHalfAngle; - z = unitAxis.z * sinHalfAngle; - } - - // Constructs quaternion for rotation around one of the coordinate axis by an angle. - Quat(Axis A, T angle, RotateDirection d = Rotate_CCW, HandedSystem s = Handed_R) - { - T sinHalfAngle = s * d *sin(angle * T(0.5)); - T v[3]; - v[0] = v[1] = v[2] = T(0); - v[A] = sinHalfAngle; - - w = cos(angle * T(0.5)); - x = v[0]; - y = v[1]; - z = v[2]; - } - - Quat operator-() { return Quat(-x, -y, -z, -w); } // unary minus - - static Quat Identity() { return Quat(0, 0, 0, 1); } - - // Compute axis and angle from quaternion - void GetAxisAngle(Vector3* axis, T* angle) const - { - if ( x*x + y*y + z*z > Math::Tolerance() * Math::Tolerance() ) { - *axis = Vector3(x, y, z).Normalized(); - *angle = 2 * Acos(w); - if (*angle > ((T)MATH_DOUBLE_PI)) // Reduce the magnitude of the angle, if necessary - { - *angle = ((T)MATH_DOUBLE_TWOPI) - *angle; - *axis = *axis * (-1); - } - } - else - { - *axis = Vector3(1, 0, 0); - *angle= T(0); - } - } - - // Convert a quaternion to a rotation vector, also known as - // Rodrigues vector, AxisAngle vector, SORA vector, exponential map. - // A rotation vector describes a rotation about an axis: - // the axis of rotation is the vector normalized, - // the angle of rotation is the magnitude of the vector. - Vector3 ToRotationVector() const - { - OVR_MATH_ASSERT(IsNormalized() || LengthSq() == 0); - T s = T(0); - T sinHalfAngle = sqrt(x*x + y*y + z*z); - if (sinHalfAngle > T(0)) - { - T cosHalfAngle = w; - T halfAngle = atan2(sinHalfAngle, cosHalfAngle); - - // Ensure minimum rotation magnitude - if (cosHalfAngle < 0) - halfAngle -= T(MATH_DOUBLE_PI); - - s = T(2) * halfAngle / sinHalfAngle; - } - return Vector3(x*s, y*s, z*s); - } - - // Faster version of the above, optimized for use with small rotations, where rotation angle ~= sin(angle) - inline OVR::Vector3 FastToRotationVector() const - { - OVR_MATH_ASSERT(IsNormalized()); - T s; - T sinHalfSquared = x*x + y*y + z*z; - if (sinHalfSquared < T(.0037)) // =~ sin(7/2 degrees)^2 - { - // Max rotation magnitude error is about .062% at 7 degrees rotation, or about .0043 degrees - s = T(2) * Sign(w); - } - else - { - T sinHalfAngle = sqrt(sinHalfSquared); - T cosHalfAngle = w; - T halfAngle = atan2(sinHalfAngle, cosHalfAngle); - - // Ensure minimum rotation magnitude - if (cosHalfAngle < 0) - halfAngle -= T(MATH_DOUBLE_PI); - - s = T(2) * halfAngle / sinHalfAngle; - } - return Vector3(x*s, y*s, z*s); - } - - // Given a rotation vector of form unitRotationAxis * angle, - // returns the equivalent quaternion (unitRotationAxis * sin(angle), cos(Angle)). - static Quat FromRotationVector(const Vector3& v) - { - T angleSquared = v.LengthSq(); - T s = T(0); - T c = T(1); - if (angleSquared > T(0)) - { - T angle = sqrt(angleSquared); - s = sin(angle * T(0.5)) / angle; // normalize - c = cos(angle * T(0.5)); - } - return Quat(s*v.x, s*v.y, s*v.z, c); - } - - // Faster version of above, optimized for use with small rotation magnitudes, where rotation angle =~ sin(angle). - // If normalize is false, small-angle quaternions are returned un-normalized. - inline static Quat FastFromRotationVector(const OVR::Vector3& v, bool normalize = true) - { - T s, c; - T angleSquared = v.LengthSq(); - if (angleSquared < T(0.0076)) // =~ (5 degrees*pi/180)^2 - { - s = T(0.5); - c = T(1.0); - // Max rotation magnitude error (after normalization) is about .064% at 5 degrees rotation, or .0032 degrees - if (normalize && angleSquared > 0) - { - // sin(angle/2)^2 ~= (angle/2)^2 and cos(angle/2)^2 ~= 1 - T invLen = T(1) / sqrt(angleSquared * T(0.25) + T(1)); // normalize - s = s * invLen; - c = c * invLen; - } - } - else - { - T angle = sqrt(angleSquared); - s = sin(angle * T(0.5)) / angle; - c = cos(angle * T(0.5)); - } - return Quat(s*v.x, s*v.y, s*v.z, c); - } - - // Constructs the quaternion from a rotation matrix - explicit Quat(const Matrix4& m) - { - T trace = m.M[0][0] + m.M[1][1] + m.M[2][2]; - - // In almost all cases, the first part is executed. - // However, if the trace is not positive, the other - // cases arise. - if (trace > T(0)) - { - T s = sqrt(trace + T(1)) * T(2); // s=4*qw - w = T(0.25) * s; - x = (m.M[2][1] - m.M[1][2]) / s; - y = (m.M[0][2] - m.M[2][0]) / s; - z = (m.M[1][0] - m.M[0][1]) / s; - } - else if ((m.M[0][0] > m.M[1][1])&&(m.M[0][0] > m.M[2][2])) - { - T s = sqrt(T(1) + m.M[0][0] - m.M[1][1] - m.M[2][2]) * T(2); - w = (m.M[2][1] - m.M[1][2]) / s; - x = T(0.25) * s; - y = (m.M[0][1] + m.M[1][0]) / s; - z = (m.M[2][0] + m.M[0][2]) / s; - } - else if (m.M[1][1] > m.M[2][2]) - { - T s = sqrt(T(1) + m.M[1][1] - m.M[0][0] - m.M[2][2]) * T(2); // S=4*qy - w = (m.M[0][2] - m.M[2][0]) / s; - x = (m.M[0][1] + m.M[1][0]) / s; - y = T(0.25) * s; - z = (m.M[1][2] + m.M[2][1]) / s; - } - else - { - T s = sqrt(T(1) + m.M[2][2] - m.M[0][0] - m.M[1][1]) * T(2); // S=4*qz - w = (m.M[1][0] - m.M[0][1]) / s; - x = (m.M[0][2] + m.M[2][0]) / s; - y = (m.M[1][2] + m.M[2][1]) / s; - z = T(0.25) * s; - } - OVR_MATH_ASSERT(IsNormalized()); // Ensure input matrix is orthogonal - } - - // Constructs the quaternion from a rotation matrix - explicit Quat(const Matrix3& m) - { - T trace = m.M[0][0] + m.M[1][1] + m.M[2][2]; - - // In almost all cases, the first part is executed. - // However, if the trace is not positive, the other - // cases arise. - if (trace > T(0)) - { - T s = sqrt(trace + T(1)) * T(2); // s=4*qw - w = T(0.25) * s; - x = (m.M[2][1] - m.M[1][2]) / s; - y = (m.M[0][2] - m.M[2][0]) / s; - z = (m.M[1][0] - m.M[0][1]) / s; - } - else if ((m.M[0][0] > m.M[1][1])&&(m.M[0][0] > m.M[2][2])) - { - T s = sqrt(T(1) + m.M[0][0] - m.M[1][1] - m.M[2][2]) * T(2); - w = (m.M[2][1] - m.M[1][2]) / s; - x = T(0.25) * s; - y = (m.M[0][1] + m.M[1][0]) / s; - z = (m.M[2][0] + m.M[0][2]) / s; - } - else if (m.M[1][1] > m.M[2][2]) - { - T s = sqrt(T(1) + m.M[1][1] - m.M[0][0] - m.M[2][2]) * T(2); // S=4*qy - w = (m.M[0][2] - m.M[2][0]) / s; - x = (m.M[0][1] + m.M[1][0]) / s; - y = T(0.25) * s; - z = (m.M[1][2] + m.M[2][1]) / s; - } - else - { - T s = sqrt(T(1) + m.M[2][2] - m.M[0][0] - m.M[1][1]) * T(2); // S=4*qz - w = (m.M[1][0] - m.M[0][1]) / s; - x = (m.M[0][2] + m.M[2][0]) / s; - y = (m.M[1][2] + m.M[2][1]) / s; - z = T(0.25) * s; - } - OVR_MATH_ASSERT(IsNormalized()); // Ensure input matrix is orthogonal - } - - bool operator== (const Quat& b) const { return x == b.x && y == b.y && z == b.z && w == b.w; } - bool operator!= (const Quat& b) const { return x != b.x || y != b.y || z != b.z || w != b.w; } - - Quat operator+ (const Quat& b) const { return Quat(x + b.x, y + b.y, z + b.z, w + b.w); } - Quat& operator+= (const Quat& b) { w += b.w; x += b.x; y += b.y; z += b.z; return *this; } - Quat operator- (const Quat& b) const { return Quat(x - b.x, y - b.y, z - b.z, w - b.w); } - Quat& operator-= (const Quat& b) { w -= b.w; x -= b.x; y -= b.y; z -= b.z; return *this; } - - Quat operator* (T s) const { return Quat(x * s, y * s, z * s, w * s); } - Quat& operator*= (T s) { w *= s; x *= s; y *= s; z *= s; return *this; } - Quat operator/ (T s) const { T rcp = T(1)/s; return Quat(x * rcp, y * rcp, z * rcp, w *rcp); } - Quat& operator/= (T s) { T rcp = T(1)/s; w *= rcp; x *= rcp; y *= rcp; z *= rcp; return *this; } - - // Compare two quats for equality within tolerance. Returns true if quats match withing tolerance. - bool IsEqual(const Quat& b, T tolerance = Math::Tolerance()) const - { - return Abs(Dot(b)) >= T(1) - tolerance; - } - - static T Abs(const T v) { return (v >= 0) ? v : -v; } - - // Get Imaginary part vector - Vector3 Imag() const { return Vector3(x,y,z); } - - // Get quaternion length. - T Length() const { return sqrt(LengthSq()); } - - // Get quaternion length squared. - T LengthSq() const { return (x * x + y * y + z * z + w * w); } - - // Simple Euclidean distance in R^4 (not SLERP distance, but at least respects Haar measure) - T Distance(const Quat& q) const - { - T d1 = (*this - q).Length(); - T d2 = (*this + q).Length(); // Antipodal point check - return (d1 < d2) ? d1 : d2; - } - - T DistanceSq(const Quat& q) const - { - T d1 = (*this - q).LengthSq(); - T d2 = (*this + q).LengthSq(); // Antipodal point check - return (d1 < d2) ? d1 : d2; - } - - T Dot(const Quat& q) const - { - return x * q.x + y * q.y + z * q.z + w * q.w; - } - - // Angle between two quaternions in radians - T Angle(const Quat& q) const - { - return T(2) * Acos(Abs(Dot(q))); - } - - // Angle of quaternion - T Angle() const - { - return T(2) * Acos(Abs(w)); - } - - // Normalize - bool IsNormalized() const { return fabs(LengthSq() - T(1)) < Math::Tolerance(); } - - void Normalize() - { - T s = Length(); - if (s != T(0)) - s = T(1) / s; - *this *= s; - } - - Quat Normalized() const - { - T s = Length(); - if (s != T(0)) - s = T(1) / s; - return *this * s; - } - - inline void EnsureSameHemisphere(const Quat& o) - { - if (Dot(o) < T(0)) - { - x = -x; - y = -y; - z = -z; - w = -w; - } - } - - // Returns conjugate of the quaternion. Produces inverse rotation if quaternion is normalized. - Quat Conj() const { return Quat(-x, -y, -z, w); } - - // Quaternion multiplication. Combines quaternion rotations, performing the one on the - // right hand side first. - Quat operator* (const Quat& b) const { return Quat(w * b.x + x * b.w + y * b.z - z * b.y, - w * b.y - x * b.z + y * b.w + z * b.x, - w * b.z + x * b.y - y * b.x + z * b.w, - w * b.w - x * b.x - y * b.y - z * b.z); } - const Quat& operator*= (const Quat& b) { *this = *this * b; return *this; } - - // - // this^p normalized; same as rotating by this p times. - Quat PowNormalized(T p) const - { - Vector3 v; - T a; - GetAxisAngle(&v, &a); - return Quat(v, a * p); - } - - // Compute quaternion that rotates v into alignTo: alignTo = Quat::Align(alignTo, v).Rotate(v). - // NOTE: alignTo and v must be normalized. - static Quat Align(const Vector3& alignTo, const Vector3& v) - { - OVR_MATH_ASSERT(alignTo.IsNormalized() && v.IsNormalized()); - Vector3 bisector = (v + alignTo); - bisector.Normalize(); - T cosHalfAngle = v.Dot(bisector); // 0..1 - if (cosHalfAngle > T(0)) - { - Vector3 imag = v.Cross(bisector); - return Quat(imag.x, imag.y, imag.z, cosHalfAngle); - } - else - { - // cosHalfAngle == 0: a 180 degree rotation. - // sinHalfAngle == 1, rotation axis is any axis perpendicular - // to alignTo. Choose axis to include largest magnitude components - if (fabs(v.x) > fabs(v.y)) - { - // x or z is max magnitude component - // = Cross(v, (0,1,0)).Normalized(); - T invLen = sqrt(v.x*v.x + v.z*v.z); - if (invLen > T(0)) - invLen = T(1) / invLen; - return Quat(-v.z*invLen, 0, v.x*invLen, 0); - } - else - { - // y or z is max magnitude component - // = Cross(v, (1,0,0)).Normalized(); - T invLen = sqrt(v.y*v.y + v.z*v.z); - if (invLen > T(0)) - invLen = T(1) / invLen; - return Quat(0, v.z*invLen, -v.y*invLen, 0); - } - } - } - - // Decompose a quat into quat = swing * twist, where twist is a rotation about axis, - // and swing is a rotation perpendicular to axis. - Quat GetSwingTwist(const Vector3& axis, Quat* twist) const - { - OVR_MATH_ASSERT(twist); - OVR_MATH_ASSERT(axis.IsNormalized()); - - // Create a normalized quaternion from projection of (x,y,z) onto axis - T d = axis.Dot(Vector3(x, y, z)); - *twist = Quat(axis.x*d, axis.y*d, axis.z*d, w); - T len = twist->Length(); - if (len == 0) - twist->w = T(1); // identity - else - *twist /= len; // normalize - - return *this * twist->Inverted(); - } - - // Normalized linear interpolation of quaternions - // NOTE: This function is a bad approximation of Slerp() - // when the angle between the *this and b is large. - // Use FastSlerp() or Slerp() instead. - Quat Lerp(const Quat& b, T s) const - { - return (*this * (T(1) - s) + b * (Dot(b) < 0 ? -s : s)).Normalized(); - } - - // Spherical linear interpolation between rotations - Quat Slerp(const Quat& b, T s) const - { - Vector3 delta = (b * this->Inverted()).ToRotationVector(); - return (FromRotationVector(delta * s) * *this).Normalized(); // normalize so errors don't accumulate - } - - // Spherical linear interpolation: much faster for small rotations, accurate for large rotations. See FastTo/FromRotationVector - Quat FastSlerp(const Quat& b, T s) const - { - Vector3 delta = (b * this->Inverted()).FastToRotationVector(); - return (FastFromRotationVector(delta * s, false) * *this).Normalized(); - } - - // Rotate transforms vector in a manner that matches Matrix rotations (counter-clockwise, - // assuming negative direction of the axis). Standard formula: q(t) * V * q(t)^-1. - Vector3 Rotate(const Vector3& v) const - { - OVR_MATH_ASSERT(isnan(w) || IsNormalized()); - - // rv = q * (v,0) * q' - // Same as rv = v + real * cross(imag,v)*2 + cross(imag, cross(imag,v)*2); - - // uv = 2 * Imag().Cross(v); - T uvx = T(2) * (y*v.z - z*v.y); - T uvy = T(2) * (z*v.x - x*v.z); - T uvz = T(2) * (x*v.y - y*v.x); - - // return v + Real()*uv + Imag().Cross(uv); - return Vector3(v.x + w*uvx + y*uvz - z*uvy, - v.y + w*uvy + z*uvx - x*uvz, - v.z + w*uvz + x*uvy - y*uvx); - } - - // Rotation by inverse of *this - Vector3 InverseRotate(const Vector3& v) const - { - OVR_MATH_ASSERT(IsNormalized()); - - // rv = q' * (v,0) * q - // Same as rv = v + real * cross(-imag,v)*2 + cross(-imag, cross(-imag,v)*2); - // or rv = v - real * cross(imag,v)*2 + cross(imag, cross(imag,v)*2); - - // uv = 2 * Imag().Cross(v); - T uvx = T(2) * (y*v.z - z*v.y); - T uvy = T(2) * (z*v.x - x*v.z); - T uvz = T(2) * (x*v.y - y*v.x); - - // return v - Real()*uv + Imag().Cross(uv); - return Vector3(v.x - w*uvx + y*uvz - z*uvy, - v.y - w*uvy + z*uvx - x*uvz, - v.z - w*uvz + x*uvy - y*uvx); - } - - // Inversed quaternion rotates in the opposite direction. - Quat Inverted() const - { - return Quat(-x, -y, -z, w); - } - - Quat Inverse() const - { - return Quat(-x, -y, -z, w); - } - - // Sets this quaternion to the one rotates in the opposite direction. - void Invert() - { - *this = Quat(-x, -y, -z, w); - } - - // Time integration of constant angular velocity over dt - Quat TimeIntegrate(Vector3 angularVelocity, T dt) const - { - // solution is: this * exp( omega*dt/2 ); FromRotationVector(v) gives exp(v*.5). - return (*this * FastFromRotationVector(angularVelocity * dt, false)).Normalized(); - } - - // Time integration of constant angular acceleration and velocity over dt - // These are the first two terms of the "Magnus expansion" of the solution - // - // o = o * exp( W=(W1 + W2 + W3+...) * 0.5 ); - // - // omega1 = (omega + omegaDot*dt) - // W1 = (omega + omega1)*dt/2 - // W2 = cross(omega, omega1)/12*dt^2 % (= -cross(omega_dot, omega)/12*dt^3) - // Terms 3 and beyond are vanishingly small: - // W3 = cross(omega_dot, cross(omega_dot, omega))/240*dt^5 - // - Quat TimeIntegrate(Vector3 angularVelocity, Vector3 angularAcceleration, T dt) const - { - const Vector3& omega = angularVelocity; - const Vector3& omegaDot = angularAcceleration; - - Vector3 omega1 = (omega + omegaDot * dt); - Vector3 W = ( (omega + omega1) + omega.Cross(omega1) * (dt/T(6)) ) * (dt/T(2)); - - // FromRotationVector(v) is exp(v*.5) - return (*this * FastFromRotationVector(W, false)).Normalized(); - } - - // Decompose rotation into three rotations: - // roll radians about Z axis, then pitch radians about X axis, then yaw radians about Y axis. - // Call with nullptr if a return value is not needed. - void GetYawPitchRoll(T* yaw, T* pitch, T* roll) const - { - return GetEulerAngles(yaw, pitch, roll); - } - - // GetEulerAngles extracts Euler angles from the quaternion, in the specified order of - // axis rotations and the specified coordinate system. Right-handed coordinate system - // is the default, with CCW rotations while looking in the negative axis direction. - // Here a,b,c, are the Yaw/Pitch/Roll angles to be returned. - // Rotation order is c, b, a: - // rotation c around axis A3 - // is followed by rotation b around axis A2 - // is followed by rotation a around axis A1 - // rotations are CCW or CW (D) in LH or RH coordinate system (S) - // - template - void GetEulerAngles(T *a, T *b, T *c) const - { - OVR_MATH_ASSERT(IsNormalized()); - OVR_MATH_STATIC_ASSERT((A1 != A2) && (A2 != A3) && (A1 != A3), "(A1 != A2) && (A2 != A3) && (A1 != A3)"); - - T Q[3] = { x, y, z }; //Quaternion components x,y,z - - T ww = w*w; - T Q11 = Q[A1]*Q[A1]; - T Q22 = Q[A2]*Q[A2]; - T Q33 = Q[A3]*Q[A3]; - - T psign = T(-1); - // Determine whether even permutation - if (((A1 + 1) % 3 == A2) && ((A2 + 1) % 3 == A3)) - psign = T(1); - - T s2 = psign * T(2) * (psign*w*Q[A2] + Q[A1]*Q[A3]); - - T singularityRadius = Math::SingularityRadius(); - if (s2 < T(-1) + singularityRadius) - { // South pole singularity - if (a) *a = T(0); - if (b) *b = -S*D*((T)MATH_DOUBLE_PIOVER2); - if (c) *c = S*D*atan2(T(2)*(psign*Q[A1] * Q[A2] + w*Q[A3]), ww + Q22 - Q11 - Q33 ); - } - else if (s2 > T(1) - singularityRadius) - { // North pole singularity - if (a) *a = T(0); - if (b) *b = S*D*((T)MATH_DOUBLE_PIOVER2); - if (c) *c = S*D*atan2(T(2)*(psign*Q[A1] * Q[A2] + w*Q[A3]), ww + Q22 - Q11 - Q33); - } - else - { - if (a) *a = -S*D*atan2(T(-2)*(w*Q[A1] - psign*Q[A2] * Q[A3]), ww + Q33 - Q11 - Q22); - if (b) *b = S*D*asin(s2); - if (c) *c = S*D*atan2(T(2)*(w*Q[A3] - psign*Q[A1] * Q[A2]), ww + Q11 - Q22 - Q33); - } - } - - template - void GetEulerAngles(T *a, T *b, T *c) const - { GetEulerAngles(a, b, c); } - - template - void GetEulerAngles(T *a, T *b, T *c) const - { GetEulerAngles(a, b, c); } - - // GetEulerAnglesABA extracts Euler angles from the quaternion, in the specified order of - // axis rotations and the specified coordinate system. Right-handed coordinate system - // is the default, with CCW rotations while looking in the negative axis direction. - // Here a,b,c, are the Yaw/Pitch/Roll angles to be returned. - // rotation a around axis A1 - // is followed by rotation b around axis A2 - // is followed by rotation c around axis A1 - // Rotations are CCW or CW (D) in LH or RH coordinate system (S) - template - void GetEulerAnglesABA(T *a, T *b, T *c) const - { - OVR_MATH_ASSERT(IsNormalized()); - OVR_MATH_STATIC_ASSERT(A1 != A2, "A1 != A2"); - - T Q[3] = {x, y, z}; // Quaternion components - - // Determine the missing axis that was not supplied - int m = 3 - A1 - A2; - - T ww = w*w; - T Q11 = Q[A1]*Q[A1]; - T Q22 = Q[A2]*Q[A2]; - T Qmm = Q[m]*Q[m]; - - T psign = T(-1); - if ((A1 + 1) % 3 == A2) // Determine whether even permutation - { - psign = T(1); - } - - T c2 = ww + Q11 - Q22 - Qmm; - T singularityRadius = Math::SingularityRadius(); - if (c2 < T(-1) + singularityRadius) - { // South pole singularity - if (a) *a = T(0); - if (b) *b = S*D*((T)MATH_DOUBLE_PI); - if (c) *c = S*D*atan2(T(2)*(w*Q[A1] - psign*Q[A2] * Q[m]), - ww + Q22 - Q11 - Qmm); - } - else if (c2 > T(1) - singularityRadius) - { // North pole singularity - if (a) *a = T(0); - if (b) *b = T(0); - if (c) *c = S*D*atan2(T(2)*(w*Q[A1] - psign*Q[A2] * Q[m]), - ww + Q22 - Q11 - Qmm); - } - else - { - if (a) *a = S*D*atan2(psign*w*Q[m] + Q[A1] * Q[A2], - w*Q[A2] -psign*Q[A1]*Q[m]); - if (b) *b = S*D*acos(c2); - if (c) *c = S*D*atan2(-psign*w*Q[m] + Q[A1] * Q[A2], - w*Q[A2] + psign*Q[A1]*Q[m]); - } - } -}; - -typedef Quat Quatf; -typedef Quat Quatd; - -OVR_MATH_STATIC_ASSERT((sizeof(Quatf) == 4*sizeof(float)), "sizeof(Quatf) failure"); -OVR_MATH_STATIC_ASSERT((sizeof(Quatd) == 4*sizeof(double)), "sizeof(Quatd) failure"); - -//------------------------------------------------------------------------------------- -// ***** Pose -// -// Position and orientation combined. -// -// This structure needs to be the same size and layout on 32-bit and 64-bit arch. -// Update OVR_PadCheck.cpp when updating this object. -template -class Pose -{ -public: - typedef typename CompatibleTypes >::Type CompatibleType; - - Pose() { } - Pose(const Quat& orientation, const Vector3& pos) - : Rotation(orientation), Translation(pos) { } - Pose(const Pose& s) - : Rotation(s.Rotation), Translation(s.Translation) { } - Pose(const Matrix3& R, const Vector3& t) - : Rotation((Quat)R), Translation(t) { } - Pose(const CompatibleType& s) - : Rotation(s.Orientation), Translation(s.Position) { } - - explicit Pose(const Pose::OtherFloatType> &s) - : Rotation(s.Rotation), Translation(s.Translation) - { - // Ensure normalized rotation if converting from float to double - if (sizeof(T) > sizeof(typename Math::OtherFloatType)) - Rotation.Normalize(); - } - - static Pose Identity() { return Pose(Quat(0, 0, 0, 1), Vector3(0, 0, 0)); } - - void SetIdentity() { Rotation = Quat(0, 0, 0, 1); Translation = Vector3(0, 0, 0); } - - // used to make things obviously broken if someone tries to use the value - void SetInvalid() { Rotation = Quat(NAN, NAN, NAN, NAN); Translation = Vector3(NAN, NAN, NAN); } - - bool IsEqual(const Pose&b, T tolerance = Math::Tolerance()) const - { - return Translation.IsEqual(b.Translation, tolerance) && Rotation.IsEqual(b.Rotation, tolerance); - } - - operator typename CompatibleTypes >::Type () const - { - typename CompatibleTypes >::Type result; - result.Orientation = Rotation; - result.Position = Translation; - return result; - } - - Quat Rotation; - Vector3 Translation; - - OVR_MATH_STATIC_ASSERT((sizeof(T) == sizeof(double) || sizeof(T) == sizeof(float)), "(sizeof(T) == sizeof(double) || sizeof(T) == sizeof(float))"); - - void ToArray(T* arr) const - { - T temp[7] = { Rotation.x, Rotation.y, Rotation.z, Rotation.w, Translation.x, Translation.y, Translation.z }; - for (int i = 0; i < 7; i++) arr[i] = temp[i]; - } - - static Pose FromArray(const T* v) - { - Quat rotation(v[0], v[1], v[2], v[3]); - Vector3 translation(v[4], v[5], v[6]); - // Ensure rotation is normalized, in case it was originally a float, stored in a .json file, etc. - return Pose(rotation.Normalized(), translation); - } - - Vector3 Rotate(const Vector3& v) const - { - return Rotation.Rotate(v); - } - - Vector3 InverseRotate(const Vector3& v) const - { - return Rotation.InverseRotate(v); - } - - Vector3 Translate(const Vector3& v) const - { - return v + Translation; - } - - Vector3 Transform(const Vector3& v) const - { - return Rotate(v) + Translation; - } - - Vector3 InverseTransform(const Vector3& v) const - { - return InverseRotate(v - Translation); - } - - - Vector3 Apply(const Vector3& v) const - { - return Transform(v); - } - - Pose operator*(const Pose& other) const - { - return Pose(Rotation * other.Rotation, Apply(other.Translation)); - } - - Pose Inverted() const - { - Quat inv = Rotation.Inverted(); - return Pose(inv, inv.Rotate(-Translation)); - } - - // Interpolation between two poses: translation is interpolated with Lerp(), - // and rotations are interpolated with Slerp(). - Pose Lerp(const Pose& b, T s) - { - return Pose(Rotation.Slerp(b.Rotation, s), Translation.Lerp(b.Translation, s)); - } - - // Similar to Lerp above, except faster in case of small rotation differences. See Quat::FastSlerp. - Pose FastLerp(const Pose& b, T s) - { - return Pose(Rotation.FastSlerp(b.Rotation, s), Translation.Lerp(b.Translation, s)); - } - - Pose TimeIntegrate(const Vector3& linearVelocity, const Vector3& angularVelocity, T dt) const - { - return Pose( - (Rotation * Quat::FastFromRotationVector(angularVelocity * dt, false)).Normalized(), - Translation + linearVelocity * dt); - } - - Pose TimeIntegrate(const Vector3& linearVelocity, const Vector3& linearAcceleration, - const Vector3& angularVelocity, const Vector3& angularAcceleration, - T dt) const - { - return Pose(Rotation.TimeIntegrate(angularVelocity, angularAcceleration, dt), - Translation + linearVelocity*dt + linearAcceleration*dt*dt * T(0.5)); - } -}; - -typedef Pose Posef; -typedef Pose Posed; - -OVR_MATH_STATIC_ASSERT((sizeof(Posed) == sizeof(Quatd) + sizeof(Vector3d)), "sizeof(Posed) failure"); -OVR_MATH_STATIC_ASSERT((sizeof(Posef) == sizeof(Quatf) + sizeof(Vector3f)), "sizeof(Posef) failure"); - - -//------------------------------------------------------------------------------------- -// ***** Matrix4 -// -// Matrix4 is a 4x4 matrix used for 3d transformations and projections. -// Translation stored in the last column. -// The matrix is stored in row-major order in memory, meaning that values -// of the first row are stored before the next one. -// -// The arrangement of the matrix is chosen to be in Right-Handed -// coordinate system and counterclockwise rotations when looking down -// the axis -// -// Transformation Order: -// - Transformations are applied from right to left, so the expression -// M1 * M2 * M3 * V means that the vector V is transformed by M3 first, -// followed by M2 and M1. -// -// Coordinate system: Right Handed -// -// Rotations: Counterclockwise when looking down the axis. All angles are in radians. -// -// | sx 01 02 tx | // First column (sx, 10, 20): Axis X basis vector. -// | 10 sy 12 ty | // Second column (01, sy, 21): Axis Y basis vector. -// | 20 21 sz tz | // Third columnt (02, 12, sz): Axis Z basis vector. -// | 30 31 32 33 | -// -// The basis vectors are first three columns. - -template -class Matrix4 -{ -public: - typedef T ElementType; - static const size_t Dimension = 4; - - T M[4][4]; - - enum NoInitType { NoInit }; - - // Construct with no memory initialization. - Matrix4(NoInitType) { } - - // By default, we construct identity matrix. - Matrix4() - { - M[0][0] = M[1][1] = M[2][2] = M[3][3] = T(1); - M[0][1] = M[1][0] = M[2][3] = M[3][1] = T(0); - M[0][2] = M[1][2] = M[2][0] = M[3][2] = T(0); - M[0][3] = M[1][3] = M[2][1] = M[3][0] = T(0); - } - - Matrix4(T m11, T m12, T m13, T m14, - T m21, T m22, T m23, T m24, - T m31, T m32, T m33, T m34, - T m41, T m42, T m43, T m44) - { - M[0][0] = m11; M[0][1] = m12; M[0][2] = m13; M[0][3] = m14; - M[1][0] = m21; M[1][1] = m22; M[1][2] = m23; M[1][3] = m24; - M[2][0] = m31; M[2][1] = m32; M[2][2] = m33; M[2][3] = m34; - M[3][0] = m41; M[3][1] = m42; M[3][2] = m43; M[3][3] = m44; - } - - Matrix4(T m11, T m12, T m13, - T m21, T m22, T m23, - T m31, T m32, T m33) - { - M[0][0] = m11; M[0][1] = m12; M[0][2] = m13; M[0][3] = T(0); - M[1][0] = m21; M[1][1] = m22; M[1][2] = m23; M[1][3] = T(0); - M[2][0] = m31; M[2][1] = m32; M[2][2] = m33; M[2][3] = T(0); - M[3][0] = T(0); M[3][1] = T(0); M[3][2] = T(0); M[3][3] = T(1); - } - - explicit Matrix4(const Matrix3& m) - { - M[0][0] = m.M[0][0]; M[0][1] = m.M[0][1]; M[0][2] = m.M[0][2]; M[0][3] = T(0); - M[1][0] = m.M[1][0]; M[1][1] = m.M[1][1]; M[1][2] = m.M[1][2]; M[1][3] = T(0); - M[2][0] = m.M[2][0]; M[2][1] = m.M[2][1]; M[2][2] = m.M[2][2]; M[2][3] = T(0); - M[3][0] = T(0); M[3][1] = T(0); M[3][2] = T(0); M[3][3] = T(1); - } - - explicit Matrix4(const Quat& q) - { - OVR_MATH_ASSERT(q.IsNormalized()); - T ww = q.w*q.w; - T xx = q.x*q.x; - T yy = q.y*q.y; - T zz = q.z*q.z; - - M[0][0] = ww + xx - yy - zz; M[0][1] = 2 * (q.x*q.y - q.w*q.z); M[0][2] = 2 * (q.x*q.z + q.w*q.y); M[0][3] = T(0); - M[1][0] = 2 * (q.x*q.y + q.w*q.z); M[1][1] = ww - xx + yy - zz; M[1][2] = 2 * (q.y*q.z - q.w*q.x); M[1][3] = T(0); - M[2][0] = 2 * (q.x*q.z - q.w*q.y); M[2][1] = 2 * (q.y*q.z + q.w*q.x); M[2][2] = ww - xx - yy + zz; M[2][3] = T(0); - M[3][0] = T(0); M[3][1] = T(0); M[3][2] = T(0); M[3][3] = T(1); - } - - explicit Matrix4(const Pose& p) - { - Matrix4 result(p.Rotation); - result.SetTranslation(p.Translation); - *this = result; - } - - - // C-interop support - explicit Matrix4(const Matrix4::OtherFloatType> &src) - { - for (int i = 0; i < 4; i++) - for (int j = 0; j < 4; j++) - M[i][j] = (T)src.M[i][j]; - } - - // C-interop support. - Matrix4(const typename CompatibleTypes >::Type& s) - { - OVR_MATH_STATIC_ASSERT(sizeof(s) == sizeof(Matrix4), "sizeof(s) == sizeof(Matrix4)"); - memcpy(M, s.M, sizeof(M)); - } - - operator typename CompatibleTypes >::Type () const - { - typename CompatibleTypes >::Type result; - OVR_MATH_STATIC_ASSERT(sizeof(result) == sizeof(Matrix4), "sizeof(result) == sizeof(Matrix4)"); - memcpy(result.M, M, sizeof(M)); - return result; - } - - void ToString(char* dest, size_t destsize) const - { - size_t pos = 0; - for (int r=0; r<4; r++) - { - for (int c=0; c<4; c++) - { - pos += OVRMath_sprintf(dest+pos, destsize-pos, "%g ", M[r][c]); - } - } - } - - static Matrix4 FromString(const char* src) - { - Matrix4 result; - if (src) - { - for (int r = 0; r < 4; r++) - { - for (int c = 0; c < 4; c++) - { - result.M[r][c] = (T)atof(src); - while (*src && *src != ' ') - { - src++; - } - while (*src && *src == ' ') - { - src++; - } - } - } - } - return result; - } - - static Matrix4 Identity() { return Matrix4(); } - - void SetIdentity() - { - M[0][0] = M[1][1] = M[2][2] = M[3][3] = T(1); - M[0][1] = M[1][0] = M[2][3] = M[3][1] = T(0); - M[0][2] = M[1][2] = M[2][0] = M[3][2] = T(0); - M[0][3] = M[1][3] = M[2][1] = M[3][0] = T(0); - } - - void SetXBasis(const Vector3& v) - { - M[0][0] = v.x; - M[1][0] = v.y; - M[2][0] = v.z; - } - Vector3 GetXBasis() const - { - return Vector3(M[0][0], M[1][0], M[2][0]); - } - - void SetYBasis(const Vector3 & v) - { - M[0][1] = v.x; - M[1][1] = v.y; - M[2][1] = v.z; - } - Vector3 GetYBasis() const - { - return Vector3(M[0][1], M[1][1], M[2][1]); - } - - void SetZBasis(const Vector3 & v) - { - M[0][2] = v.x; - M[1][2] = v.y; - M[2][2] = v.z; - } - Vector3 GetZBasis() const - { - return Vector3(M[0][2], M[1][2], M[2][2]); - } - - bool operator== (const Matrix4& b) const - { - bool isEqual = true; - for (int i = 0; i < 4; i++) - for (int j = 0; j < 4; j++) - isEqual &= (M[i][j] == b.M[i][j]); - - return isEqual; - } - - Matrix4 operator+ (const Matrix4& b) const - { - Matrix4 result(*this); - result += b; - return result; - } - - Matrix4& operator+= (const Matrix4& b) - { - for (int i = 0; i < 4; i++) - for (int j = 0; j < 4; j++) - M[i][j] += b.M[i][j]; - return *this; - } - - Matrix4 operator- (const Matrix4& b) const - { - Matrix4 result(*this); - result -= b; - return result; - } - - Matrix4& operator-= (const Matrix4& b) - { - for (int i = 0; i < 4; i++) - for (int j = 0; j < 4; j++) - M[i][j] -= b.M[i][j]; - return *this; - } - - // Multiplies two matrices into destination with minimum copying. - static Matrix4& Multiply(Matrix4* d, const Matrix4& a, const Matrix4& b) - { - OVR_MATH_ASSERT((d != &a) && (d != &b)); - int i = 0; - do { - d->M[i][0] = a.M[i][0] * b.M[0][0] + a.M[i][1] * b.M[1][0] + a.M[i][2] * b.M[2][0] + a.M[i][3] * b.M[3][0]; - d->M[i][1] = a.M[i][0] * b.M[0][1] + a.M[i][1] * b.M[1][1] + a.M[i][2] * b.M[2][1] + a.M[i][3] * b.M[3][1]; - d->M[i][2] = a.M[i][0] * b.M[0][2] + a.M[i][1] * b.M[1][2] + a.M[i][2] * b.M[2][2] + a.M[i][3] * b.M[3][2]; - d->M[i][3] = a.M[i][0] * b.M[0][3] + a.M[i][1] * b.M[1][3] + a.M[i][2] * b.M[2][3] + a.M[i][3] * b.M[3][3]; - } while((++i) < 4); - - return *d; - } - - Matrix4 operator* (const Matrix4& b) const - { - Matrix4 result(Matrix4::NoInit); - Multiply(&result, *this, b); - return result; - } - - Matrix4& operator*= (const Matrix4& b) - { - return Multiply(this, Matrix4(*this), b); - } - - Matrix4 operator* (T s) const - { - Matrix4 result(*this); - result *= s; - return result; - } - - Matrix4& operator*= (T s) - { - for (int i = 0; i < 4; i++) - for (int j = 0; j < 4; j++) - M[i][j] *= s; - return *this; - } - - - Matrix4 operator/ (T s) const - { - Matrix4 result(*this); - result /= s; - return result; - } - - Matrix4& operator/= (T s) - { - for (int i = 0; i < 4; i++) - for (int j = 0; j < 4; j++) - M[i][j] /= s; - return *this; - } - - Vector3 Transform(const Vector3& v) const - { - const T rcpW = T(1) / (M[3][0] * v.x + M[3][1] * v.y + M[3][2] * v.z + M[3][3]); - return Vector3((M[0][0] * v.x + M[0][1] * v.y + M[0][2] * v.z + M[0][3]) * rcpW, - (M[1][0] * v.x + M[1][1] * v.y + M[1][2] * v.z + M[1][3]) * rcpW, - (M[2][0] * v.x + M[2][1] * v.y + M[2][2] * v.z + M[2][3]) * rcpW); - } - - Vector4 Transform(const Vector4& v) const - { - return Vector4(M[0][0] * v.x + M[0][1] * v.y + M[0][2] * v.z + M[0][3] * v.w, - M[1][0] * v.x + M[1][1] * v.y + M[1][2] * v.z + M[1][3] * v.w, - M[2][0] * v.x + M[2][1] * v.y + M[2][2] * v.z + M[2][3] * v.w, - M[3][0] * v.x + M[3][1] * v.y + M[3][2] * v.z + M[3][3] * v.w); - } - - Matrix4 Transposed() const - { - return Matrix4(M[0][0], M[1][0], M[2][0], M[3][0], - M[0][1], M[1][1], M[2][1], M[3][1], - M[0][2], M[1][2], M[2][2], M[3][2], - M[0][3], M[1][3], M[2][3], M[3][3]); - } - - void Transpose() - { - *this = Transposed(); - } - - - T SubDet (const size_t* rows, const size_t* cols) const - { - return M[rows[0]][cols[0]] * (M[rows[1]][cols[1]] * M[rows[2]][cols[2]] - M[rows[1]][cols[2]] * M[rows[2]][cols[1]]) - - M[rows[0]][cols[1]] * (M[rows[1]][cols[0]] * M[rows[2]][cols[2]] - M[rows[1]][cols[2]] * M[rows[2]][cols[0]]) - + M[rows[0]][cols[2]] * (M[rows[1]][cols[0]] * M[rows[2]][cols[1]] - M[rows[1]][cols[1]] * M[rows[2]][cols[0]]); - } - - T Cofactor(size_t I, size_t J) const - { - const size_t indices[4][3] = {{1,2,3},{0,2,3},{0,1,3},{0,1,2}}; - return ((I+J)&1) ? -SubDet(indices[I],indices[J]) : SubDet(indices[I],indices[J]); - } - - T Determinant() const - { - return M[0][0] * Cofactor(0,0) + M[0][1] * Cofactor(0,1) + M[0][2] * Cofactor(0,2) + M[0][3] * Cofactor(0,3); - } - - Matrix4 Adjugated() const - { - return Matrix4(Cofactor(0,0), Cofactor(1,0), Cofactor(2,0), Cofactor(3,0), - Cofactor(0,1), Cofactor(1,1), Cofactor(2,1), Cofactor(3,1), - Cofactor(0,2), Cofactor(1,2), Cofactor(2,2), Cofactor(3,2), - Cofactor(0,3), Cofactor(1,3), Cofactor(2,3), Cofactor(3,3)); - } - - Matrix4 Inverted() const - { - T det = Determinant(); - OVR_MATH_ASSERT(det != 0); - return Adjugated() * (T(1)/det); - } - - void Invert() - { - *this = Inverted(); - } - - // This is more efficient than general inverse, but ONLY works - // correctly if it is a homogeneous transform matrix (rot + trans) - Matrix4 InvertedHomogeneousTransform() const - { - // Make the inverse rotation matrix - Matrix4 rinv = this->Transposed(); - rinv.M[3][0] = rinv.M[3][1] = rinv.M[3][2] = T(0); - // Make the inverse translation matrix - Vector3 tvinv(-M[0][3],-M[1][3],-M[2][3]); - Matrix4 tinv = Matrix4::Translation(tvinv); - return rinv * tinv; // "untranslate", then "unrotate" - } - - // This is more efficient than general inverse, but ONLY works - // correctly if it is a homogeneous transform matrix (rot + trans) - void InvertHomogeneousTransform() - { - *this = InvertedHomogeneousTransform(); - } - - // Matrix to Euler Angles conversion - // a,b,c, are the YawPitchRoll angles to be returned - // rotation a around axis A1 - // is followed by rotation b around axis A2 - // is followed by rotation c around axis A3 - // rotations are CCW or CW (D) in LH or RH coordinate system (S) - template - void ToEulerAngles(T *a, T *b, T *c) const - { - OVR_MATH_STATIC_ASSERT((A1 != A2) && (A2 != A3) && (A1 != A3), "(A1 != A2) && (A2 != A3) && (A1 != A3)"); - - T psign = T(-1); - if (((A1 + 1) % 3 == A2) && ((A2 + 1) % 3 == A3)) // Determine whether even permutation - psign = T(1); - - T pm = psign*M[A1][A3]; - T singularityRadius = Math::SingularityRadius(); - if (pm < T(-1) + singularityRadius) - { // South pole singularity - *a = T(0); - *b = -S*D*((T)MATH_DOUBLE_PIOVER2); - *c = S*D*atan2( psign*M[A2][A1], M[A2][A2] ); - } - else if (pm > T(1) - singularityRadius) - { // North pole singularity - *a = T(0); - *b = S*D*((T)MATH_DOUBLE_PIOVER2); - *c = S*D*atan2( psign*M[A2][A1], M[A2][A2] ); - } - else - { // Normal case (nonsingular) - *a = S*D*atan2( -psign*M[A2][A3], M[A3][A3] ); - *b = S*D*asin(pm); - *c = S*D*atan2( -psign*M[A1][A2], M[A1][A1] ); - } - } - - // Matrix to Euler Angles conversion - // a,b,c, are the YawPitchRoll angles to be returned - // rotation a around axis A1 - // is followed by rotation b around axis A2 - // is followed by rotation c around axis A1 - // rotations are CCW or CW (D) in LH or RH coordinate system (S) - template - void ToEulerAnglesABA(T *a, T *b, T *c) const - { - OVR_MATH_STATIC_ASSERT(A1 != A2, "A1 != A2"); - - // Determine the axis that was not supplied - int m = 3 - A1 - A2; - - T psign = T(-1); - if ((A1 + 1) % 3 == A2) // Determine whether even permutation - psign = T(1); - - T c2 = M[A1][A1]; - T singularityRadius = Math::SingularityRadius(); - if (c2 < T(-1) + singularityRadius) - { // South pole singularity - *a = T(0); - *b = S*D*((T)MATH_DOUBLE_PI); - *c = S*D*atan2( -psign*M[A2][m],M[A2][A2]); - } - else if (c2 > T(1) - singularityRadius) - { // North pole singularity - *a = T(0); - *b = T(0); - *c = S*D*atan2( -psign*M[A2][m],M[A2][A2]); - } - else - { // Normal case (nonsingular) - *a = S*D*atan2( M[A2][A1],-psign*M[m][A1]); - *b = S*D*acos(c2); - *c = S*D*atan2( M[A1][A2],psign*M[A1][m]); - } - } - - // Creates a matrix that converts the vertices from one coordinate system - // to another. - static Matrix4 AxisConversion(const WorldAxes& to, const WorldAxes& from) - { - // Holds axis values from the 'to' structure - int toArray[3] = { to.XAxis, to.YAxis, to.ZAxis }; - - // The inverse of the toArray - int inv[4]; - inv[0] = inv[abs(to.XAxis)] = 0; - inv[abs(to.YAxis)] = 1; - inv[abs(to.ZAxis)] = 2; - - Matrix4 m(0, 0, 0, - 0, 0, 0, - 0, 0, 0); - - // Only three values in the matrix need to be changed to 1 or -1. - m.M[inv[abs(from.XAxis)]][0] = T(from.XAxis/toArray[inv[abs(from.XAxis)]]); - m.M[inv[abs(from.YAxis)]][1] = T(from.YAxis/toArray[inv[abs(from.YAxis)]]); - m.M[inv[abs(from.ZAxis)]][2] = T(from.ZAxis/toArray[inv[abs(from.ZAxis)]]); - return m; - } - - - // Creates a matrix for translation by vector - static Matrix4 Translation(const Vector3& v) - { - Matrix4 t; - t.M[0][3] = v.x; - t.M[1][3] = v.y; - t.M[2][3] = v.z; - return t; - } - - // Creates a matrix for translation by vector - static Matrix4 Translation(T x, T y, T z = T(0)) - { - Matrix4 t; - t.M[0][3] = x; - t.M[1][3] = y; - t.M[2][3] = z; - return t; - } - - // Sets the translation part - void SetTranslation(const Vector3& v) - { - M[0][3] = v.x; - M[1][3] = v.y; - M[2][3] = v.z; - } - - Vector3 GetTranslation() const - { - return Vector3( M[0][3], M[1][3], M[2][3] ); - } - - // Creates a matrix for scaling by vector - static Matrix4 Scaling(const Vector3& v) - { - Matrix4 t; - t.M[0][0] = v.x; - t.M[1][1] = v.y; - t.M[2][2] = v.z; - return t; - } - - // Creates a matrix for scaling by vector - static Matrix4 Scaling(T x, T y, T z) - { - Matrix4 t; - t.M[0][0] = x; - t.M[1][1] = y; - t.M[2][2] = z; - return t; - } - - // Creates a matrix for scaling by constant - static Matrix4 Scaling(T s) - { - Matrix4 t; - t.M[0][0] = s; - t.M[1][1] = s; - t.M[2][2] = s; - return t; - } - - // Simple L1 distance in R^12 - T Distance(const Matrix4& m2) const - { - T d = fabs(M[0][0] - m2.M[0][0]) + fabs(M[0][1] - m2.M[0][1]); - d += fabs(M[0][2] - m2.M[0][2]) + fabs(M[0][3] - m2.M[0][3]); - d += fabs(M[1][0] - m2.M[1][0]) + fabs(M[1][1] - m2.M[1][1]); - d += fabs(M[1][2] - m2.M[1][2]) + fabs(M[1][3] - m2.M[1][3]); - d += fabs(M[2][0] - m2.M[2][0]) + fabs(M[2][1] - m2.M[2][1]); - d += fabs(M[2][2] - m2.M[2][2]) + fabs(M[2][3] - m2.M[2][3]); - d += fabs(M[3][0] - m2.M[3][0]) + fabs(M[3][1] - m2.M[3][1]); - d += fabs(M[3][2] - m2.M[3][2]) + fabs(M[3][3] - m2.M[3][3]); - return d; - } - - // Creates a rotation matrix rotating around the X axis by 'angle' radians. - // Just for quick testing. Not for final API. Need to remove case. - static Matrix4 RotationAxis(Axis A, T angle, RotateDirection d, HandedSystem s) - { - T sina = s * d *sin(angle); - T cosa = cos(angle); - - switch(A) - { - case Axis_X: - return Matrix4(1, 0, 0, - 0, cosa, -sina, - 0, sina, cosa); - case Axis_Y: - return Matrix4(cosa, 0, sina, - 0, 1, 0, - -sina, 0, cosa); - case Axis_Z: - return Matrix4(cosa, -sina, 0, - sina, cosa, 0, - 0, 0, 1); - default: - return Matrix4(); - } - } - - - // Creates a rotation matrix rotating around the X axis by 'angle' radians. - // Rotation direction is depends on the coordinate system: - // RHS (Oculus default): Positive angle values rotate Counter-clockwise (CCW), - // while looking in the negative axis direction. This is the - // same as looking down from positive axis values towards origin. - // LHS: Positive angle values rotate clock-wise (CW), while looking in the - // negative axis direction. - static Matrix4 RotationX(T angle) - { - T sina = sin(angle); - T cosa = cos(angle); - return Matrix4(1, 0, 0, - 0, cosa, -sina, - 0, sina, cosa); - } - - // Creates a rotation matrix rotating around the Y axis by 'angle' radians. - // Rotation direction is depends on the coordinate system: - // RHS (Oculus default): Positive angle values rotate Counter-clockwise (CCW), - // while looking in the negative axis direction. This is the - // same as looking down from positive axis values towards origin. - // LHS: Positive angle values rotate clock-wise (CW), while looking in the - // negative axis direction. - static Matrix4 RotationY(T angle) - { - T sina = (T)sin(angle); - T cosa = (T)cos(angle); - return Matrix4(cosa, 0, sina, - 0, 1, 0, - -sina, 0, cosa); - } - - // Creates a rotation matrix rotating around the Z axis by 'angle' radians. - // Rotation direction is depends on the coordinate system: - // RHS (Oculus default): Positive angle values rotate Counter-clockwise (CCW), - // while looking in the negative axis direction. This is the - // same as looking down from positive axis values towards origin. - // LHS: Positive angle values rotate clock-wise (CW), while looking in the - // negative axis direction. - static Matrix4 RotationZ(T angle) - { - T sina = sin(angle); - T cosa = cos(angle); - return Matrix4(cosa, -sina, 0, - sina, cosa, 0, - 0, 0, 1); - } - - // LookAtRH creates a View transformation matrix for right-handed coordinate system. - // The resulting matrix points camera from 'eye' towards 'at' direction, with 'up' - // specifying the up vector. The resulting matrix should be used with PerspectiveRH - // projection. - static Matrix4 LookAtRH(const Vector3& eye, const Vector3& at, const Vector3& up) - { - Vector3 z = (eye - at).Normalized(); // Forward - Vector3 x = up.Cross(z).Normalized(); // Right - Vector3 y = z.Cross(x); - - Matrix4 m(x.x, x.y, x.z, -(x.Dot(eye)), - y.x, y.y, y.z, -(y.Dot(eye)), - z.x, z.y, z.z, -(z.Dot(eye)), - 0, 0, 0, 1 ); - return m; - } - - // LookAtLH creates a View transformation matrix for left-handed coordinate system. - // The resulting matrix points camera from 'eye' towards 'at' direction, with 'up' - // specifying the up vector. - static Matrix4 LookAtLH(const Vector3& eye, const Vector3& at, const Vector3& up) - { - Vector3 z = (at - eye).Normalized(); // Forward - Vector3 x = up.Cross(z).Normalized(); // Right - Vector3 y = z.Cross(x); - - Matrix4 m(x.x, x.y, x.z, -(x.Dot(eye)), - y.x, y.y, y.z, -(y.Dot(eye)), - z.x, z.y, z.z, -(z.Dot(eye)), - 0, 0, 0, 1 ); - return m; - } - - // PerspectiveRH creates a right-handed perspective projection matrix that can be - // used with the Oculus sample renderer. - // yfov - Specifies vertical field of view in radians. - // aspect - Screen aspect ration, which is usually width/height for square pixels. - // Note that xfov = yfov * aspect. - // znear - Absolute value of near Z clipping clipping range. - // zfar - Absolute value of far Z clipping clipping range (larger then near). - // Even though RHS usually looks in the direction of negative Z, positive values - // are expected for znear and zfar. - static Matrix4 PerspectiveRH(T yfov, T aspect, T znear, T zfar) - { - Matrix4 m; - T tanHalfFov = tan(yfov * T(0.5)); - - m.M[0][0] = T(1) / (aspect * tanHalfFov); - m.M[1][1] = T(1) / tanHalfFov; - m.M[2][2] = zfar / (znear - zfar); - m.M[3][2] = T(-1); - m.M[2][3] = (zfar * znear) / (znear - zfar); - m.M[3][3] = T(0); - - // Note: Post-projection matrix result assumes Left-Handed coordinate system, - // with Y up, X right and Z forward. This supports positive z-buffer values. - // This is the case even for RHS coordinate input. - return m; - } - - // PerspectiveLH creates a left-handed perspective projection matrix that can be - // used with the Oculus sample renderer. - // yfov - Specifies vertical field of view in radians. - // aspect - Screen aspect ration, which is usually width/height for square pixels. - // Note that xfov = yfov * aspect. - // znear - Absolute value of near Z clipping clipping range. - // zfar - Absolute value of far Z clipping clipping range (larger then near). - static Matrix4 PerspectiveLH(T yfov, T aspect, T znear, T zfar) - { - Matrix4 m; - T tanHalfFov = tan(yfov * T(0.5)); - - m.M[0][0] = T(1) / (aspect * tanHalfFov); - m.M[1][1] = T(1) / tanHalfFov; - //m.M[2][2] = zfar / (znear - zfar); - m.M[2][2] = zfar / (zfar - znear); - m.M[3][2] = T(-1); - m.M[2][3] = (zfar * znear) / (znear - zfar); - m.M[3][3] = T(0); - - // Note: Post-projection matrix result assumes Left-Handed coordinate system, - // with Y up, X right and Z forward. This supports positive z-buffer values. - // This is the case even for RHS coordinate input. - return m; - } - - static Matrix4 Ortho2D(T w, T h) - { - Matrix4 m; - m.M[0][0] = T(2.0)/w; - m.M[1][1] = T(-2.0)/h; - m.M[0][3] = T(-1.0); - m.M[1][3] = T(1.0); - m.M[2][2] = T(0); - return m; - } -}; - -typedef Matrix4 Matrix4f; -typedef Matrix4 Matrix4d; - -//------------------------------------------------------------------------------------- -// ***** Matrix3 -// -// Matrix3 is a 3x3 matrix used for representing a rotation matrix. -// The matrix is stored in row-major order in memory, meaning that values -// of the first row are stored before the next one. -// -// The arrangement of the matrix is chosen to be in Right-Handed -// coordinate system and counterclockwise rotations when looking down -// the axis -// -// Transformation Order: -// - Transformations are applied from right to left, so the expression -// M1 * M2 * M3 * V means that the vector V is transformed by M3 first, -// followed by M2 and M1. -// -// Coordinate system: Right Handed -// -// Rotations: Counterclockwise when looking down the axis. All angles are in radians. - -template -class Matrix3 -{ -public: - typedef T ElementType; - static const size_t Dimension = 3; - - T M[3][3]; - - enum NoInitType { NoInit }; - - // Construct with no memory initialization. - Matrix3(NoInitType) { } - - // By default, we construct identity matrix. - Matrix3() - { - M[0][0] = M[1][1] = M[2][2] = T(1); - M[0][1] = M[1][0] = M[2][0] = T(0); - M[0][2] = M[1][2] = M[2][1] = T(0); - } - - Matrix3(T m11, T m12, T m13, - T m21, T m22, T m23, - T m31, T m32, T m33) - { - M[0][0] = m11; M[0][1] = m12; M[0][2] = m13; - M[1][0] = m21; M[1][1] = m22; M[1][2] = m23; - M[2][0] = m31; M[2][1] = m32; M[2][2] = m33; - } - - // Construction from X, Y, Z basis vectors - Matrix3(const Vector3& xBasis, const Vector3& yBasis, const Vector3& zBasis) - { - M[0][0] = xBasis.x; M[0][1] = yBasis.x; M[0][2] = zBasis.x; - M[1][0] = xBasis.y; M[1][1] = yBasis.y; M[1][2] = zBasis.y; - M[2][0] = xBasis.z; M[2][1] = yBasis.z; M[2][2] = zBasis.z; - } - - explicit Matrix3(const Quat& q) - { - OVR_MATH_ASSERT(q.IsNormalized()); - const T tx = q.x+q.x, ty = q.y+q.y, tz = q.z+q.z; - const T twx = q.w*tx, twy = q.w*ty, twz = q.w*tz; - const T txx = q.x*tx, txy = q.x*ty, txz = q.x*tz; - const T tyy = q.y*ty, tyz = q.y*tz, tzz = q.z*tz; - M[0][0] = T(1) - (tyy + tzz); M[0][1] = txy - twz; M[0][2] = txz + twy; - M[1][0] = txy + twz; M[1][1] = T(1) - (txx + tzz); M[1][2] = tyz - twx; - M[2][0] = txz - twy; M[2][1] = tyz + twx; M[2][2] = T(1) - (txx + tyy); - } - - inline explicit Matrix3(T s) - { - M[0][0] = M[1][1] = M[2][2] = s; - M[0][1] = M[0][2] = M[1][0] = M[1][2] = M[2][0] = M[2][1] = T(0); - } - - Matrix3(T m11, T m22, T m33) - { - M[0][0] = m11; M[0][1] = T(0); M[0][2] = T(0); - M[1][0] = T(0); M[1][1] = m22; M[1][2] = T(0); - M[2][0] = T(0); M[2][1] = T(0); M[2][2] = m33; - } - - explicit Matrix3(const Matrix3::OtherFloatType> &src) - { - for (int i = 0; i < 3; i++) - for (int j = 0; j < 3; j++) - M[i][j] = (T)src.M[i][j]; - } - - // C-interop support. - Matrix3(const typename CompatibleTypes >::Type& s) - { - OVR_MATH_STATIC_ASSERT(sizeof(s) == sizeof(Matrix3), "sizeof(s) == sizeof(Matrix3)"); - memcpy(M, s.M, sizeof(M)); - } - - operator const typename CompatibleTypes >::Type () const - { - typename CompatibleTypes >::Type result; - OVR_MATH_STATIC_ASSERT(sizeof(result) == sizeof(Matrix3), "sizeof(result) == sizeof(Matrix3)"); - memcpy(result.M, M, sizeof(M)); - return result; - } - - T operator()(int i, int j) const { return M[i][j]; } - T& operator()(int i, int j) { return M[i][j]; } - - void ToString(char* dest, size_t destsize) const - { - size_t pos = 0; - for (int r=0; r<3; r++) - { - for (int c=0; c<3; c++) - pos += OVRMath_sprintf(dest+pos, destsize-pos, "%g ", M[r][c]); - } - } - - static Matrix3 FromString(const char* src) - { - Matrix3 result; - if (src) - { - for (int r=0; r<3; r++) - { - for (int c=0; c<3; c++) - { - result.M[r][c] = (T)atof(src); - while (*src && *src != ' ') - src++; - while (*src && *src == ' ') - src++; - } - } - } - return result; - } - - static Matrix3 Identity() { return Matrix3(); } - - void SetIdentity() - { - M[0][0] = M[1][1] = M[2][2] = T(1); - M[0][1] = M[1][0] = M[2][0] = T(0); - M[0][2] = M[1][2] = M[2][1] = T(0); - } - - static Matrix3 Diagonal(T m00, T m11, T m22) - { - return Matrix3(m00, 0, 0, - 0, m11, 0, - 0, 0, m22); - } - static Matrix3 Diagonal(const Vector3& v) { return Diagonal(v.x, v.y, v.z); } - - T Trace() const { return M[0][0] + M[1][1] + M[2][2]; } - - bool operator== (const Matrix3& b) const - { - bool isEqual = true; - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - isEqual &= (M[i][j] == b.M[i][j]); - } - - return isEqual; - } - - Matrix3 operator+ (const Matrix3& b) const - { - Matrix3 result(*this); - result += b; - return result; - } - - Matrix3& operator+= (const Matrix3& b) - { - for (int i = 0; i < 3; i++) - for (int j = 0; j < 3; j++) - M[i][j] += b.M[i][j]; - return *this; - } - - void operator= (const Matrix3& b) - { - for (int i = 0; i < 3; i++) - for (int j = 0; j < 3; j++) - M[i][j] = b.M[i][j]; - } - - Matrix3 operator- (const Matrix3& b) const - { - Matrix3 result(*this); - result -= b; - return result; - } - - Matrix3& operator-= (const Matrix3& b) - { - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - M[i][j] -= b.M[i][j]; - } - - return *this; - } - - // Multiplies two matrices into destination with minimum copying. - static Matrix3& Multiply(Matrix3* d, const Matrix3& a, const Matrix3& b) - { - OVR_MATH_ASSERT((d != &a) && (d != &b)); - int i = 0; - do { - d->M[i][0] = a.M[i][0] * b.M[0][0] + a.M[i][1] * b.M[1][0] + a.M[i][2] * b.M[2][0]; - d->M[i][1] = a.M[i][0] * b.M[0][1] + a.M[i][1] * b.M[1][1] + a.M[i][2] * b.M[2][1]; - d->M[i][2] = a.M[i][0] * b.M[0][2] + a.M[i][1] * b.M[1][2] + a.M[i][2] * b.M[2][2]; - } while((++i) < 3); - - return *d; - } - - Matrix3 operator* (const Matrix3& b) const - { - Matrix3 result(Matrix3::NoInit); - Multiply(&result, *this, b); - return result; - } - - Matrix3& operator*= (const Matrix3& b) - { - return Multiply(this, Matrix3(*this), b); - } - - Matrix3 operator* (T s) const - { - Matrix3 result(*this); - result *= s; - return result; - } - - Matrix3& operator*= (T s) - { - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - M[i][j] *= s; - } - - return *this; - } - - Vector3 operator* (const Vector3 &b) const - { - Vector3 result; - result.x = M[0][0]*b.x + M[0][1]*b.y + M[0][2]*b.z; - result.y = M[1][0]*b.x + M[1][1]*b.y + M[1][2]*b.z; - result.z = M[2][0]*b.x + M[2][1]*b.y + M[2][2]*b.z; - - return result; - } - - Matrix3 operator/ (T s) const - { - Matrix3 result(*this); - result /= s; - return result; - } - - Matrix3& operator/= (T s) - { - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - M[i][j] /= s; - } - - return *this; - } - - Vector2 Transform(const Vector2& v) const - { - const T rcpZ = T(1) / (M[2][0] * v.x + M[2][1] * v.y + M[2][2]); - return Vector2((M[0][0] * v.x + M[0][1] * v.y + M[0][2]) * rcpZ, - (M[1][0] * v.x + M[1][1] * v.y + M[1][2]) * rcpZ); - } - - Vector3 Transform(const Vector3& v) const - { - return Vector3(M[0][0] * v.x + M[0][1] * v.y + M[0][2] * v.z, - M[1][0] * v.x + M[1][1] * v.y + M[1][2] * v.z, - M[2][0] * v.x + M[2][1] * v.y + M[2][2] * v.z); - } - - Matrix3 Transposed() const - { - return Matrix3(M[0][0], M[1][0], M[2][0], - M[0][1], M[1][1], M[2][1], - M[0][2], M[1][2], M[2][2]); - } - - void Transpose() - { - *this = Transposed(); - } - - - T SubDet (const size_t* rows, const size_t* cols) const - { - return M[rows[0]][cols[0]] * (M[rows[1]][cols[1]] * M[rows[2]][cols[2]] - M[rows[1]][cols[2]] * M[rows[2]][cols[1]]) - - M[rows[0]][cols[1]] * (M[rows[1]][cols[0]] * M[rows[2]][cols[2]] - M[rows[1]][cols[2]] * M[rows[2]][cols[0]]) - + M[rows[0]][cols[2]] * (M[rows[1]][cols[0]] * M[rows[2]][cols[1]] - M[rows[1]][cols[1]] * M[rows[2]][cols[0]]); - } - - - // M += a*b.t() - inline void Rank1Add(const Vector3 &a, const Vector3 &b) - { - M[0][0] += a.x*b.x; M[0][1] += a.x*b.y; M[0][2] += a.x*b.z; - M[1][0] += a.y*b.x; M[1][1] += a.y*b.y; M[1][2] += a.y*b.z; - M[2][0] += a.z*b.x; M[2][1] += a.z*b.y; M[2][2] += a.z*b.z; - } - - // M -= a*b.t() - inline void Rank1Sub(const Vector3 &a, const Vector3 &b) - { - M[0][0] -= a.x*b.x; M[0][1] -= a.x*b.y; M[0][2] -= a.x*b.z; - M[1][0] -= a.y*b.x; M[1][1] -= a.y*b.y; M[1][2] -= a.y*b.z; - M[2][0] -= a.z*b.x; M[2][1] -= a.z*b.y; M[2][2] -= a.z*b.z; - } - - inline Vector3 Col(int c) const - { - return Vector3(M[0][c], M[1][c], M[2][c]); - } - - inline Vector3 Row(int r) const - { - return Vector3(M[r][0], M[r][1], M[r][2]); - } - - inline Vector3 GetColumn(int c) const - { - return Vector3(M[0][c], M[1][c], M[2][c]); - } - - inline Vector3 GetRow(int r) const - { - return Vector3(M[r][0], M[r][1], M[r][2]); - } - - inline void SetColumn(int c, const Vector3& v) - { - M[0][c] = v.x; - M[1][c] = v.y; - M[2][c] = v.z; - } - - inline void SetRow(int r, const Vector3& v) - { - M[r][0] = v.x; - M[r][1] = v.y; - M[r][2] = v.z; - } - - inline T Determinant() const - { - const Matrix3& m = *this; - T d; - - d = m.M[0][0] * (m.M[1][1]*m.M[2][2] - m.M[1][2] * m.M[2][1]); - d -= m.M[0][1] * (m.M[1][0]*m.M[2][2] - m.M[1][2] * m.M[2][0]); - d += m.M[0][2] * (m.M[1][0]*m.M[2][1] - m.M[1][1] * m.M[2][0]); - - return d; - } - - inline Matrix3 Inverse() const - { - Matrix3 a; - const Matrix3& m = *this; - T d = Determinant(); - - OVR_MATH_ASSERT(d != 0); - T s = T(1)/d; - - a.M[0][0] = s * (m.M[1][1] * m.M[2][2] - m.M[1][2] * m.M[2][1]); - a.M[1][0] = s * (m.M[1][2] * m.M[2][0] - m.M[1][0] * m.M[2][2]); - a.M[2][0] = s * (m.M[1][0] * m.M[2][1] - m.M[1][1] * m.M[2][0]); - - a.M[0][1] = s * (m.M[0][2] * m.M[2][1] - m.M[0][1] * m.M[2][2]); - a.M[1][1] = s * (m.M[0][0] * m.M[2][2] - m.M[0][2] * m.M[2][0]); - a.M[2][1] = s * (m.M[0][1] * m.M[2][0] - m.M[0][0] * m.M[2][1]); - - a.M[0][2] = s * (m.M[0][1] * m.M[1][2] - m.M[0][2] * m.M[1][1]); - a.M[1][2] = s * (m.M[0][2] * m.M[1][0] - m.M[0][0] * m.M[1][2]); - a.M[2][2] = s * (m.M[0][0] * m.M[1][1] - m.M[0][1] * m.M[1][0]); - - return a; - } - - // Outer Product of two column vectors: a * b.Transpose() - static Matrix3 OuterProduct(const Vector3& a, const Vector3& b) - { - return Matrix3(a.x*b.x, a.x*b.y, a.x*b.z, - a.y*b.x, a.y*b.y, a.y*b.z, - a.z*b.x, a.z*b.y, a.z*b.z); - } - - // Vector cross product as a premultiply matrix: - // L.Cross(R) = LeftCrossAsMatrix(L) * R - static Matrix3 LeftCrossAsMatrix(const Vector3& L) - { - return Matrix3( - T(0), -L.z, +L.y, - +L.z, T(0), -L.x, - -L.y, +L.x, T(0)); - } - - // Vector cross product as a premultiply matrix: - // L.Cross(R) = RightCrossAsMatrix(R) * L - static Matrix3 RightCrossAsMatrix(const Vector3& R) - { - return Matrix3( - T(0), +R.z, -R.y, - -R.z, T(0), +R.x, - +R.y, -R.x, T(0)); - } - - // Angle in radians of a rotation matrix - // Uses identity trace(a) = 2*cos(theta) + 1 - T Angle() const - { - return Acos((Trace() - T(1)) * T(0.5)); - } - - // Angle in radians between two rotation matrices - T Angle(const Matrix3& b) const - { - // Compute trace of (this->Transposed() * b) - // This works out to sum of products of elements. - T trace = T(0); - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - { - trace += M[i][j] * b.M[i][j]; - } - } - return Acos((trace - T(1)) * T(0.5)); - } -}; - -typedef Matrix3 Matrix3f; -typedef Matrix3 Matrix3d; - -//------------------------------------------------------------------------------------- -// ***** Matrix2 - -template -class Matrix2 -{ -public: - typedef T ElementType; - static const size_t Dimension = 2; - - T M[2][2]; - - enum NoInitType { NoInit }; - - // Construct with no memory initialization. - Matrix2(NoInitType) { } - - // By default, we construct identity matrix. - Matrix2() - { - M[0][0] = M[1][1] = T(1); - M[0][1] = M[1][0] = T(0); - } - - Matrix2(T m11, T m12, - T m21, T m22) - { - M[0][0] = m11; M[0][1] = m12; - M[1][0] = m21; M[1][1] = m22; - } - - // Construction from X, Y basis vectors - Matrix2(const Vector2& xBasis, const Vector2& yBasis) - { - M[0][0] = xBasis.x; M[0][1] = yBasis.x; - M[1][0] = xBasis.y; M[1][1] = yBasis.y; - } - - explicit Matrix2(T s) - { - M[0][0] = M[1][1] = s; - M[0][1] = M[1][0] = T(0); - } - - Matrix2(T m11, T m22) - { - M[0][0] = m11; M[0][1] = T(0); - M[1][0] = T(0); M[1][1] = m22; - } - - explicit Matrix2(const Matrix2::OtherFloatType> &src) - { - M[0][0] = T(src.M[0][0]); M[0][1] = T(src.M[0][1]); - M[1][0] = T(src.M[1][0]); M[1][1] = T(src.M[1][1]); - } - - // C-interop support - Matrix2(const typename CompatibleTypes >::Type& s) - { - OVR_MATH_STATIC_ASSERT(sizeof(s) == sizeof(Matrix2), "sizeof(s) == sizeof(Matrix2)"); - memcpy(M, s.M, sizeof(M)); - } - - operator const typename CompatibleTypes >::Type() const - { - typename CompatibleTypes >::Type result; - OVR_MATH_STATIC_ASSERT(sizeof(result) == sizeof(Matrix2), "sizeof(result) == sizeof(Matrix2)"); - memcpy(result.M, M, sizeof(M)); - return result; - } - - T operator()(int i, int j) const { return M[i][j]; } - T& operator()(int i, int j) { return M[i][j]; } - const T* operator[](int i) const { return M[i]; } - T* operator[](int i) { return M[i]; } - - static Matrix2 Identity() { return Matrix2(); } - - void SetIdentity() - { - M[0][0] = M[1][1] = T(1); - M[0][1] = M[1][0] = T(0); - } - - static Matrix2 Diagonal(T m00, T m11) - { - return Matrix2(m00, m11); - } - static Matrix2 Diagonal(const Vector2& v) { return Matrix2(v.x, v.y); } - - T Trace() const { return M[0][0] + M[1][1]; } - - bool operator== (const Matrix2& b) const - { - return M[0][0] == b.M[0][0] && M[0][1] == b.M[0][1] && - M[1][0] == b.M[1][0] && M[1][1] == b.M[1][1]; - } - - Matrix2 operator+ (const Matrix2& b) const - { - return Matrix2(M[0][0] + b.M[0][0], M[0][1] + b.M[0][1], - M[1][0] + b.M[1][0], M[1][1] + b.M[1][1]); - } - - Matrix2& operator+= (const Matrix2& b) - { - M[0][0] += b.M[0][0]; M[0][1] += b.M[0][1]; - M[1][0] += b.M[1][0]; M[1][1] += b.M[1][1]; - return *this; - } - - void operator= (const Matrix2& b) - { - M[0][0] = b.M[0][0]; M[0][1] = b.M[0][1]; - M[1][0] = b.M[1][0]; M[1][1] = b.M[1][1]; - } - - Matrix2 operator- (const Matrix2& b) const - { - return Matrix2(M[0][0] - b.M[0][0], M[0][1] - b.M[0][1], - M[1][0] - b.M[1][0], M[1][1] - b.M[1][1]); - } - - Matrix2& operator-= (const Matrix2& b) - { - M[0][0] -= b.M[0][0]; M[0][1] -= b.M[0][1]; - M[1][0] -= b.M[1][0]; M[1][1] -= b.M[1][1]; - return *this; - } - - Matrix2 operator* (const Matrix2& b) const - { - return Matrix2(M[0][0] * b.M[0][0] + M[0][1] * b.M[1][0], M[0][0] * b.M[0][1] + M[0][1] * b.M[1][1], - M[1][0] * b.M[0][0] + M[1][1] * b.M[1][0], M[1][0] * b.M[0][1] + M[1][1] * b.M[1][1]); - } - - Matrix2& operator*= (const Matrix2& b) - { - *this = *this * b; - return *this; - } - - Matrix2 operator* (T s) const - { - return Matrix2(M[0][0] * s, M[0][1] * s, - M[1][0] * s, M[1][1] * s); - } - - Matrix2& operator*= (T s) - { - M[0][0] *= s; M[0][1] *= s; - M[1][0] *= s; M[1][1] *= s; - return *this; - } - - Matrix2 operator/ (T s) const - { - return *this * (T(1) / s); - } - - Matrix2& operator/= (T s) - { - return *this *= (T(1) / s); - } - - Vector2 operator* (const Vector2 &b) const - { - return Vector2(M[0][0] * b.x + M[0][1] * b.y, - M[1][0] * b.x + M[1][1] * b.y); - } - - Vector2 Transform(const Vector2& v) const - { - return Vector2(M[0][0] * v.x + M[0][1] * v.y, - M[1][0] * v.x + M[1][1] * v.y); - } - - Matrix2 Transposed() const - { - return Matrix2(M[0][0], M[1][0], - M[0][1], M[1][1]); - } - - void Transpose() - { - OVRMath_Swap(M[1][0], M[0][1]); - } - - Vector2 GetColumn(int c) const - { - return Vector2(M[0][c], M[1][c]); - } - - Vector2 GetRow(int r) const - { - return Vector2(M[r][0], M[r][1]); - } - - void SetColumn(int c, const Vector2& v) - { - M[0][c] = v.x; - M[1][c] = v.y; - } - - void SetRow(int r, const Vector2& v) - { - M[r][0] = v.x; - M[r][1] = v.y; - } - - T Determinant() const - { - return M[0][0] * M[1][1] - M[0][1] * M[1][0]; - } - - Matrix2 Inverse() const - { - T rcpDet = T(1) / Determinant(); - return Matrix2( M[1][1] * rcpDet, -M[0][1] * rcpDet, - -M[1][0] * rcpDet, M[0][0] * rcpDet); - } - - // Outer Product of two column vectors: a * b.Transpose() - static Matrix2 OuterProduct(const Vector2& a, const Vector2& b) - { - return Matrix2(a.x*b.x, a.x*b.y, - a.y*b.x, a.y*b.y); - } - - // Angle in radians between two rotation matrices - T Angle(const Matrix2& b) const - { - const Matrix2& a = *this; - return Acos(a(0, 0)*b(0, 0) + a(1, 0)*b(1, 0)); - } -}; - -typedef Matrix2 Matrix2f; -typedef Matrix2 Matrix2d; - -//------------------------------------------------------------------------------------- - -template -class SymMat3 -{ -private: - typedef SymMat3 this_type; - -public: - typedef T Value_t; - // Upper symmetric - T v[6]; // _00 _01 _02 _11 _12 _22 - - inline SymMat3() {} - - inline explicit SymMat3(T s) - { - v[0] = v[3] = v[5] = s; - v[1] = v[2] = v[4] = T(0); - } - - inline explicit SymMat3(T a00, T a01, T a02, T a11, T a12, T a22) - { - v[0] = a00; v[1] = a01; v[2] = a02; - v[3] = a11; v[4] = a12; - v[5] = a22; - } - - // Cast to symmetric Matrix3 - operator Matrix3() const - { - return Matrix3(v[0], v[1], v[2], - v[1], v[3], v[4], - v[2], v[4], v[5]); - } - - static inline int Index(unsigned int i, unsigned int j) - { - return (i <= j) ? (3*i - i*(i+1)/2 + j) : (3*j - j*(j+1)/2 + i); - } - - inline T operator()(int i, int j) const { return v[Index(i,j)]; } - - inline T &operator()(int i, int j) { return v[Index(i,j)]; } - - inline this_type& operator+=(const this_type& b) - { - v[0]+=b.v[0]; - v[1]+=b.v[1]; - v[2]+=b.v[2]; - v[3]+=b.v[3]; - v[4]+=b.v[4]; - v[5]+=b.v[5]; - return *this; - } - - inline this_type& operator-=(const this_type& b) - { - v[0]-=b.v[0]; - v[1]-=b.v[1]; - v[2]-=b.v[2]; - v[3]-=b.v[3]; - v[4]-=b.v[4]; - v[5]-=b.v[5]; - - return *this; - } - - inline this_type& operator*=(T s) - { - v[0]*=s; - v[1]*=s; - v[2]*=s; - v[3]*=s; - v[4]*=s; - v[5]*=s; - - return *this; - } - - inline SymMat3 operator*(T s) const - { - SymMat3 d; - d.v[0] = v[0]*s; - d.v[1] = v[1]*s; - d.v[2] = v[2]*s; - d.v[3] = v[3]*s; - d.v[4] = v[4]*s; - d.v[5] = v[5]*s; - - return d; - } - - // Multiplies two matrices into destination with minimum copying. - static SymMat3& Multiply(SymMat3* d, const SymMat3& a, const SymMat3& b) - { - // _00 _01 _02 _11 _12 _22 - - d->v[0] = a.v[0] * b.v[0]; - d->v[1] = a.v[0] * b.v[1] + a.v[1] * b.v[3]; - d->v[2] = a.v[0] * b.v[2] + a.v[1] * b.v[4]; - - d->v[3] = a.v[3] * b.v[3]; - d->v[4] = a.v[3] * b.v[4] + a.v[4] * b.v[5]; - - d->v[5] = a.v[5] * b.v[5]; - - return *d; - } - - inline T Determinant() const - { - const this_type& m = *this; - T d; - - d = m(0,0) * (m(1,1)*m(2,2) - m(1,2) * m(2,1)); - d -= m(0,1) * (m(1,0)*m(2,2) - m(1,2) * m(2,0)); - d += m(0,2) * (m(1,0)*m(2,1) - m(1,1) * m(2,0)); - - return d; - } - - inline this_type Inverse() const - { - this_type a; - const this_type& m = *this; - T d = Determinant(); - - OVR_MATH_ASSERT(d != 0); - T s = T(1)/d; - - a(0,0) = s * (m(1,1) * m(2,2) - m(1,2) * m(2,1)); - - a(0,1) = s * (m(0,2) * m(2,1) - m(0,1) * m(2,2)); - a(1,1) = s * (m(0,0) * m(2,2) - m(0,2) * m(2,0)); - - a(0,2) = s * (m(0,1) * m(1,2) - m(0,2) * m(1,1)); - a(1,2) = s * (m(0,2) * m(1,0) - m(0,0) * m(1,2)); - a(2,2) = s * (m(0,0) * m(1,1) - m(0,1) * m(1,0)); - - return a; - } - - inline T Trace() const { return v[0] + v[3] + v[5]; } - - // M = a*a.t() - inline void Rank1(const Vector3 &a) - { - v[0] = a.x*a.x; v[1] = a.x*a.y; v[2] = a.x*a.z; - v[3] = a.y*a.y; v[4] = a.y*a.z; - v[5] = a.z*a.z; - } - - // M += a*a.t() - inline void Rank1Add(const Vector3 &a) - { - v[0] += a.x*a.x; v[1] += a.x*a.y; v[2] += a.x*a.z; - v[3] += a.y*a.y; v[4] += a.y*a.z; - v[5] += a.z*a.z; - } - - // M -= a*a.t() - inline void Rank1Sub(const Vector3 &a) - { - v[0] -= a.x*a.x; v[1] -= a.x*a.y; v[2] -= a.x*a.z; - v[3] -= a.y*a.y; v[4] -= a.y*a.z; - v[5] -= a.z*a.z; - } -}; - -typedef SymMat3 SymMat3f; -typedef SymMat3 SymMat3d; - -template -inline Matrix3 operator*(const SymMat3& a, const SymMat3& b) -{ - #define AJB_ARBC(r,c) (a(r,0)*b(0,c)+a(r,1)*b(1,c)+a(r,2)*b(2,c)) - return Matrix3( - AJB_ARBC(0,0), AJB_ARBC(0,1), AJB_ARBC(0,2), - AJB_ARBC(1,0), AJB_ARBC(1,1), AJB_ARBC(1,2), - AJB_ARBC(2,0), AJB_ARBC(2,1), AJB_ARBC(2,2)); - #undef AJB_ARBC -} - -template -inline Matrix3 operator*(const Matrix3& a, const SymMat3& b) -{ - #define AJB_ARBC(r,c) (a(r,0)*b(0,c)+a(r,1)*b(1,c)+a(r,2)*b(2,c)) - return Matrix3( - AJB_ARBC(0,0), AJB_ARBC(0,1), AJB_ARBC(0,2), - AJB_ARBC(1,0), AJB_ARBC(1,1), AJB_ARBC(1,2), - AJB_ARBC(2,0), AJB_ARBC(2,1), AJB_ARBC(2,2)); - #undef AJB_ARBC -} - -//------------------------------------------------------------------------------------- -// ***** Angle - -// Cleanly representing the algebra of 2D rotations. -// The operations maintain the angle between -Pi and Pi, the same range as atan2. - -template -class Angle -{ -public: - enum AngularUnits - { - Radians = 0, - Degrees = 1 - }; - - Angle() : a(0) {} - - // Fix the range to be between -Pi and Pi - Angle(T a_, AngularUnits u = Radians) : a((u == Radians) ? a_ : a_*((T)MATH_DOUBLE_DEGREETORADFACTOR)) { FixRange(); } - - T Get(AngularUnits u = Radians) const { return (u == Radians) ? a : a*((T)MATH_DOUBLE_RADTODEGREEFACTOR); } - void Set(const T& x, AngularUnits u = Radians) { a = (u == Radians) ? x : x*((T)MATH_DOUBLE_DEGREETORADFACTOR); FixRange(); } - int Sign() const { if (a == 0) return 0; else return (a > 0) ? 1 : -1; } - T Abs() const { return (a >= 0) ? a : -a; } - - bool operator== (const Angle& b) const { return a == b.a; } - bool operator!= (const Angle& b) const { return a != b.a; } -// bool operator< (const Angle& b) const { return a < a.b; } -// bool operator> (const Angle& b) const { return a > a.b; } -// bool operator<= (const Angle& b) const { return a <= a.b; } -// bool operator>= (const Angle& b) const { return a >= a.b; } -// bool operator= (const T& x) { a = x; FixRange(); } - - // These operations assume a is already between -Pi and Pi. - Angle& operator+= (const Angle& b) { a = a + b.a; FastFixRange(); return *this; } - Angle& operator+= (const T& x) { a = a + x; FixRange(); return *this; } - Angle operator+ (const Angle& b) const { Angle res = *this; res += b; return res; } - Angle operator+ (const T& x) const { Angle res = *this; res += x; return res; } - Angle& operator-= (const Angle& b) { a = a - b.a; FastFixRange(); return *this; } - Angle& operator-= (const T& x) { a = a - x; FixRange(); return *this; } - Angle operator- (const Angle& b) const { Angle res = *this; res -= b; return res; } - Angle operator- (const T& x) const { Angle res = *this; res -= x; return res; } - - T Distance(const Angle& b) { T c = fabs(a - b.a); return (c <= ((T)MATH_DOUBLE_PI)) ? c : ((T)MATH_DOUBLE_TWOPI) - c; } - -private: - - // The stored angle, which should be maintained between -Pi and Pi - T a; - - // Fixes the angle range to [-Pi,Pi], but assumes no more than 2Pi away on either side - inline void FastFixRange() - { - if (a < -((T)MATH_DOUBLE_PI)) - a += ((T)MATH_DOUBLE_TWOPI); - else if (a > ((T)MATH_DOUBLE_PI)) - a -= ((T)MATH_DOUBLE_TWOPI); - } - - // Fixes the angle range to [-Pi,Pi] for any given range, but slower then the fast method - inline void FixRange() - { - // do nothing if the value is already in the correct range, since fmod call is expensive - if (a >= -((T)MATH_DOUBLE_PI) && a <= ((T)MATH_DOUBLE_PI)) - return; - a = fmod(a,((T)MATH_DOUBLE_TWOPI)); - if (a < -((T)MATH_DOUBLE_PI)) - a += ((T)MATH_DOUBLE_TWOPI); - else if (a > ((T)MATH_DOUBLE_PI)) - a -= ((T)MATH_DOUBLE_TWOPI); - } -}; - - -typedef Angle Anglef; -typedef Angle Angled; - - -//------------------------------------------------------------------------------------- -// ***** Plane - -// Consists of a normal vector and distance from the origin where the plane is located. - -template -class Plane -{ -public: - Vector3 N; - T D; - - Plane() : D(0) {} - - // Normals must already be normalized - Plane(const Vector3& n, T d) : N(n), D(d) {} - Plane(T x, T y, T z, T d) : N(x,y,z), D(d) {} - - // construct from a point on the plane and the normal - Plane(const Vector3& p, const Vector3& n) : N(n), D(-(p * n)) {} - - // Find the point to plane distance. The sign indicates what side of the plane the point is on (0 = point on plane). - T TestSide(const Vector3& p) const - { - return (N.Dot(p)) + D; - } - - Plane Flipped() const - { - return Plane(-N, -D); - } - - void Flip() - { - N = -N; - D = -D; - } - - bool operator==(const Plane& rhs) const - { - return (this->D == rhs.D && this->N == rhs.N); - } -}; - -typedef Plane Planef; -typedef Plane Planed; - - - - -//----------------------------------------------------------------------------------- -// ***** ScaleAndOffset2D - -struct ScaleAndOffset2D -{ - Vector2f Scale; - Vector2f Offset; - - ScaleAndOffset2D(float sx = 0.0f, float sy = 0.0f, float ox = 0.0f, float oy = 0.0f) - : Scale(sx, sy), Offset(ox, oy) - { } -}; - - -//----------------------------------------------------------------------------------- -// ***** FovPort - -// FovPort describes Field Of View (FOV) of a viewport. -// This class has values for up, down, left and right, stored in -// tangent of the angle units to simplify calculations. -// -// As an example, for a standard 90 degree vertical FOV, we would -// have: { UpTan = tan(90 degrees / 2), DownTan = tan(90 degrees / 2) }. -// -// CreateFromRadians/Degrees helper functions can be used to -// access FOV in different units. - - -// ***** FovPort - -struct FovPort -{ - float UpTan; - float DownTan; - float LeftTan; - float RightTan; - - FovPort ( float sideTan = 0.0f ) : - UpTan(sideTan), DownTan(sideTan), LeftTan(sideTan), RightTan(sideTan) { } - FovPort ( float u, float d, float l, float r ) : - UpTan(u), DownTan(d), LeftTan(l), RightTan(r) { } - - // C-interop support: FovPort <-> ovrFovPort (implementation in OVR_CAPI.cpp). - FovPort(const ovrFovPort &src) - : UpTan(src.UpTan), DownTan(src.DownTan), LeftTan(src.LeftTan), RightTan(src.RightTan) - { } - - operator ovrFovPort () const - { - ovrFovPort result; - result.LeftTan = LeftTan; - result.RightTan = RightTan; - result.UpTan = UpTan; - result.DownTan = DownTan; - return result; - } - - static FovPort CreateFromRadians(float horizontalFov, float verticalFov) - { - FovPort result; - result.UpTan = tanf ( verticalFov * 0.5f ); - result.DownTan = tanf ( verticalFov * 0.5f ); - result.LeftTan = tanf ( horizontalFov * 0.5f ); - result.RightTan = tanf ( horizontalFov * 0.5f ); - return result; - } - - static FovPort CreateFromDegrees(float horizontalFovDegrees, - float verticalFovDegrees) - { - return CreateFromRadians(DegreeToRad(horizontalFovDegrees), - DegreeToRad(verticalFovDegrees)); - } - - // Get Horizontal/Vertical components of Fov in radians. - float GetVerticalFovRadians() const { return atanf(UpTan) + atanf(DownTan); } - float GetHorizontalFovRadians() const { return atanf(LeftTan) + atanf(RightTan); } - // Get Horizontal/Vertical components of Fov in degrees. - float GetVerticalFovDegrees() const { return RadToDegree(GetVerticalFovRadians()); } - float GetHorizontalFovDegrees() const { return RadToDegree(GetHorizontalFovRadians()); } - - // Compute maximum tangent value among all four sides. - float GetMaxSideTan() const - { - return OVRMath_Max(OVRMath_Max(UpTan, DownTan), OVRMath_Max(LeftTan, RightTan)); - } - - static ScaleAndOffset2D CreateNDCScaleAndOffsetFromFov ( FovPort tanHalfFov ) - { - float projXScale = 2.0f / ( tanHalfFov.LeftTan + tanHalfFov.RightTan ); - float projXOffset = ( tanHalfFov.LeftTan - tanHalfFov.RightTan ) * projXScale * 0.5f; - float projYScale = 2.0f / ( tanHalfFov.UpTan + tanHalfFov.DownTan ); - float projYOffset = ( tanHalfFov.UpTan - tanHalfFov.DownTan ) * projYScale * 0.5f; - - ScaleAndOffset2D result; - result.Scale = Vector2f(projXScale, projYScale); - result.Offset = Vector2f(projXOffset, projYOffset); - // Hey - why is that Y.Offset negated? - // It's because a projection matrix transforms from world coords with Y=up, - // whereas this is from NDC which is Y=down. - - return result; - } - - // Converts Fov Tan angle units to [-1,1] render target NDC space - Vector2f TanAngleToRendertargetNDC(Vector2f const &tanEyeAngle) - { - ScaleAndOffset2D eyeToSourceNDC = CreateNDCScaleAndOffsetFromFov(*this); - return tanEyeAngle * eyeToSourceNDC.Scale + eyeToSourceNDC.Offset; - } - - // Compute per-channel minimum and maximum of Fov. - static FovPort Min(const FovPort& a, const FovPort& b) - { - FovPort fov( OVRMath_Min( a.UpTan , b.UpTan ), - OVRMath_Min( a.DownTan , b.DownTan ), - OVRMath_Min( a.LeftTan , b.LeftTan ), - OVRMath_Min( a.RightTan, b.RightTan ) ); - return fov; - } - - static FovPort Max(const FovPort& a, const FovPort& b) - { - FovPort fov( OVRMath_Max( a.UpTan , b.UpTan ), - OVRMath_Max( a.DownTan , b.DownTan ), - OVRMath_Max( a.LeftTan , b.LeftTan ), - OVRMath_Max( a.RightTan, b.RightTan ) ); - return fov; - } -}; - - -} // Namespace OVR - - -#if defined(_MSC_VER) - #pragma warning(pop) -#endif - - -#endif diff --git a/src/external/OculusSDK/LibOVR/Include/Extras/OVR_StereoProjection.h b/src/external/OculusSDK/LibOVR/Include/Extras/OVR_StereoProjection.h deleted file mode 100644 index b4bc3bc77..000000000 --- a/src/external/OculusSDK/LibOVR/Include/Extras/OVR_StereoProjection.h +++ /dev/null @@ -1,70 +0,0 @@ -/************************************************************************************ - -Filename : OVR_StereoProjection.h -Content : Stereo projection functions -Created : November 30, 2013 -Authors : Tom Fosyth - -Copyright : Copyright 2014-2016 Oculus VR, LLC All Rights reserved. - -Licensed under the Oculus VR Rift SDK License Version 3.3 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, -which is provided at the time of installation or download, or which -otherwise accompanies this software in either electronic or hard copy form. - -You may obtain a copy of the License at - -http://www.oculusvr.com/licenses/LICENSE-3.3 - -Unless required by applicable law or agreed to in writing, the Oculus VR SDK -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -*************************************************************************************/ - -#ifndef OVR_StereoProjection_h -#define OVR_StereoProjection_h - - -#include "Extras/OVR_Math.h" - - -namespace OVR { - - -//----------------------------------------------------------------------------------- -// ***** Stereo Enumerations - -// StereoEye specifies which eye we are rendering for; it is used to -// retrieve StereoEyeParams. -enum StereoEye -{ - StereoEye_Left, - StereoEye_Right, - StereoEye_Center -}; - - - -//----------------------------------------------------------------------------------- -// ***** Propjection functions - -Matrix4f CreateProjection ( bool rightHanded, bool isOpenGL, FovPort fov, StereoEye eye, - float zNear = 0.01f, float zFar = 10000.0f, - bool flipZ = false, bool farAtInfinity = false); - -Matrix4f CreateOrthoSubProjection ( bool rightHanded, StereoEye eyeType, - float tanHalfFovX, float tanHalfFovY, - float unitsX, float unitsY, float distanceFromCamera, - float interpupillaryDistance, Matrix4f const &projection, - float zNear = 0.0f, float zFar = 0.0f, - bool flipZ = false, bool farAtInfinity = false); - -ScaleAndOffset2D CreateNDCScaleAndOffsetFromFov ( FovPort fov ); - - -} //namespace OVR - -#endif // OVR_StereoProjection_h diff --git a/src/external/OculusSDK/LibOVR/Include/OVR_CAPI.h b/src/external/OculusSDK/LibOVR/Include/OVR_CAPI.h deleted file mode 100644 index eaabcf592..000000000 --- a/src/external/OculusSDK/LibOVR/Include/OVR_CAPI.h +++ /dev/null @@ -1,2234 +0,0 @@ -/********************************************************************************//** -\file OVR_CAPI.h -\brief C Interface to the Oculus PC SDK tracking and rendering library. -\copyright Copyright 2014 Oculus VR, LLC All Rights reserved. -************************************************************************************/ - -#ifndef OVR_CAPI_h // We don't use version numbers within this name, as all versioned variations of this file are currently mutually exclusive. -#define OVR_CAPI_h ///< Header include guard - - -#include "OVR_CAPI_Keys.h" -#include "OVR_Version.h" -#include "OVR_ErrorCode.h" - - -#include - -#if defined(_MSC_VER) - #pragma warning(push) - #pragma warning(disable: 4324) // structure was padded due to __declspec(align()) - #pragma warning(disable: 4359) // The alignment specified for a type is less than the alignment of the type of one of its data members -#endif - - - -//----------------------------------------------------------------------------------- -// ***** OVR_OS -// -#if !defined(OVR_OS_WIN32) && defined(_WIN32) - #define OVR_OS_WIN32 -#endif - -#if !defined(OVR_OS_MAC) && defined(__APPLE__) - #define OVR_OS_MAC -#endif - -#if !defined(OVR_OS_LINUX) && defined(__linux__) - #define OVR_OS_LINUX -#endif - - - -//----------------------------------------------------------------------------------- -// ***** OVR_CPP -// -#if !defined(OVR_CPP) - #if defined(__cplusplus) - #define OVR_CPP(x) x - #else - #define OVR_CPP(x) /* Not C++ */ - #endif -#endif - - - -//----------------------------------------------------------------------------------- -// ***** OVR_CDECL -// -/// LibOVR calling convention for 32-bit Windows builds. -// -#if !defined(OVR_CDECL) - #if defined(_WIN32) - #define OVR_CDECL __cdecl - #else - #define OVR_CDECL - #endif -#endif - - - -//----------------------------------------------------------------------------------- -// ***** OVR_EXTERN_C -// -/// Defined as extern "C" when built from C++ code. -// -#if !defined(OVR_EXTERN_C) - #ifdef __cplusplus - #define OVR_EXTERN_C extern "C" - #else - #define OVR_EXTERN_C - #endif -#endif - - - -//----------------------------------------------------------------------------------- -// ***** OVR_PUBLIC_FUNCTION / OVR_PRIVATE_FUNCTION -// -// OVR_PUBLIC_FUNCTION - Functions that externally visible from a shared library. Corresponds to Microsoft __dllexport. -// OVR_PUBLIC_CLASS - C++ structs and classes that are externally visible from a shared library. Corresponds to Microsoft __dllexport. -// OVR_PRIVATE_FUNCTION - Functions that are not visible outside of a shared library. They are private to the shared library. -// OVR_PRIVATE_CLASS - C++ structs and classes that are not visible outside of a shared library. They are private to the shared library. -// -// OVR_DLL_BUILD - Used to indicate that the current compilation unit is of a shared library. -// OVR_DLL_IMPORT - Used to indicate that the current compilation unit is a user of the corresponding shared library. -// OVR_STATIC_BUILD - used to indicate that the current compilation unit is not a shared library but rather statically linked code. -// -#if !defined(OVR_PUBLIC_FUNCTION) - #if defined(OVR_DLL_BUILD) - #if defined(_WIN32) - #define OVR_PUBLIC_FUNCTION(rval) OVR_EXTERN_C __declspec(dllexport) rval OVR_CDECL - #define OVR_PUBLIC_CLASS __declspec(dllexport) - #define OVR_PRIVATE_FUNCTION(rval) rval OVR_CDECL - #define OVR_PRIVATE_CLASS - #else - #define OVR_PUBLIC_FUNCTION(rval) OVR_EXTERN_C __attribute__((visibility("default"))) rval OVR_CDECL /* Requires GCC 4.0+ */ - #define OVR_PUBLIC_CLASS __attribute__((visibility("default"))) /* Requires GCC 4.0+ */ - #define OVR_PRIVATE_FUNCTION(rval) __attribute__((visibility("hidden"))) rval OVR_CDECL - #define OVR_PRIVATE_CLASS __attribute__((visibility("hidden"))) - #endif - #elif defined(OVR_DLL_IMPORT) - #if defined(_WIN32) - #define OVR_PUBLIC_FUNCTION(rval) OVR_EXTERN_C __declspec(dllimport) rval OVR_CDECL - #define OVR_PUBLIC_CLASS __declspec(dllimport) - #else - #define OVR_PUBLIC_FUNCTION(rval) OVR_EXTERN_C rval OVR_CDECL - #define OVR_PUBLIC_CLASS - #endif - #define OVR_PRIVATE_FUNCTION(rval) rval OVR_CDECL - #define OVR_PRIVATE_CLASS - #else // OVR_STATIC_BUILD - #define OVR_PUBLIC_FUNCTION(rval) OVR_EXTERN_C rval OVR_CDECL - #define OVR_PUBLIC_CLASS - #define OVR_PRIVATE_FUNCTION(rval) rval OVR_CDECL - #define OVR_PRIVATE_CLASS - #endif -#endif - - -//----------------------------------------------------------------------------------- -// ***** OVR_EXPORT -// -/// Provided for backward compatibility with older versions of this library. -// -#if !defined(OVR_EXPORT) - #ifdef OVR_OS_WIN32 - #define OVR_EXPORT __declspec(dllexport) - #else - #define OVR_EXPORT - #endif -#endif - - - -//----------------------------------------------------------------------------------- -// ***** OVR_ALIGNAS -// -#if !defined(OVR_ALIGNAS) - #if defined(__GNUC__) || defined(__clang__) - #define OVR_ALIGNAS(n) __attribute__((aligned(n))) - #elif defined(_MSC_VER) || defined(__INTEL_COMPILER) - #define OVR_ALIGNAS(n) __declspec(align(n)) - #elif defined(__CC_ARM) - #define OVR_ALIGNAS(n) __align(n) - #else - #error Need to define OVR_ALIGNAS - #endif -#endif - - -//----------------------------------------------------------------------------------- -// ***** OVR_CC_HAS_FEATURE -// -// This is a portable way to use compile-time feature identification available -// with some compilers in a clean way. Direct usage of __has_feature in preprocessing -// statements of non-supporting compilers results in a preprocessing error. -// -// Example usage: -// #if OVR_CC_HAS_FEATURE(is_pod) -// if(__is_pod(T)) // If the type is plain data then we can safely memcpy it. -// memcpy(&destObject, &srcObject, sizeof(object)); -// #endif -// -#if !defined(OVR_CC_HAS_FEATURE) - #if defined(__clang__) // http://clang.llvm.org/docs/LanguageExtensions.html#id2 - #define OVR_CC_HAS_FEATURE(x) __has_feature(x) - #else - #define OVR_CC_HAS_FEATURE(x) 0 - #endif -#endif - - -// ------------------------------------------------------------------------ -// ***** OVR_STATIC_ASSERT -// -// Portable support for C++11 static_assert(). -// Acts as if the following were declared: -// void OVR_STATIC_ASSERT(bool const_expression, const char* msg); -// -// Example usage: -// OVR_STATIC_ASSERT(sizeof(int32_t) == 4, "int32_t expected to be 4 bytes."); - -#if !defined(OVR_STATIC_ASSERT) - #if !(defined(__cplusplus) && (__cplusplus >= 201103L)) /* Other */ && \ - !(defined(__GXX_EXPERIMENTAL_CXX0X__)) /* GCC */ && \ - !(defined(__clang__) && defined(__cplusplus) && OVR_CC_HAS_FEATURE(cxx_static_assert)) /* clang */ && \ - !(defined(_MSC_VER) && (_MSC_VER >= 1600) && defined(__cplusplus)) /* VS2010+ */ - - #if !defined(OVR_SA_UNUSED) - #if defined(OVR_CC_GNU) || defined(OVR_CC_CLANG) - #define OVR_SA_UNUSED __attribute__((unused)) - #else - #define OVR_SA_UNUSED - #endif - #define OVR_SA_PASTE(a,b) a##b - #define OVR_SA_HELP(a,b) OVR_SA_PASTE(a,b) - #endif - - #if defined(__COUNTER__) - #define OVR_STATIC_ASSERT(expression, msg) typedef char OVR_SA_HELP(compileTimeAssert, __COUNTER__) [((expression) != 0) ? 1 : -1] OVR_SA_UNUSED - #else - #define OVR_STATIC_ASSERT(expression, msg) typedef char OVR_SA_HELP(compileTimeAssert, __LINE__) [((expression) != 0) ? 1 : -1] OVR_SA_UNUSED - #endif - - #else - #define OVR_STATIC_ASSERT(expression, msg) static_assert(expression, msg) - #endif -#endif - - -//----------------------------------------------------------------------------------- -// ***** Padding -// -/// Defines explicitly unused space for a struct. -/// When used correcly, usage of this macro should not change the size of the struct. -/// Compile-time and runtime behavior with and without this defined should be identical. -/// -#if !defined(OVR_UNUSED_STRUCT_PAD) - #define OVR_UNUSED_STRUCT_PAD(padName, size) char padName[size]; -#endif - - -//----------------------------------------------------------------------------------- -// ***** Word Size -// -/// Specifies the size of a pointer on the given platform. -/// -#if !defined(OVR_PTR_SIZE) - #if defined(__WORDSIZE) - #define OVR_PTR_SIZE ((__WORDSIZE) / 8) - #elif defined(_WIN64) || defined(__LP64__) || defined(_LP64) || defined(_M_IA64) || defined(__ia64__) || defined(__arch64__) || defined(__64BIT__) || defined(__Ptr_Is_64) - #define OVR_PTR_SIZE 8 - #elif defined(__CC_ARM) && (__sizeof_ptr == 8) - #define OVR_PTR_SIZE 8 - #else - #define OVR_PTR_SIZE 4 - #endif -#endif - - -//----------------------------------------------------------------------------------- -// ***** OVR_ON32 / OVR_ON64 -// -#if OVR_PTR_SIZE == 8 - #define OVR_ON32(x) - #define OVR_ON64(x) x -#else - #define OVR_ON32(x) x - #define OVR_ON64(x) -#endif - - -//----------------------------------------------------------------------------------- -// ***** ovrBool - -typedef char ovrBool; ///< Boolean type -#define ovrFalse 0 ///< ovrBool value of false. -#define ovrTrue 1 ///< ovrBool value of true. - - -//----------------------------------------------------------------------------------- -// ***** Simple Math Structures - -/// A RGBA color with normalized float components. -typedef struct OVR_ALIGNAS(4) ovrColorf_ -{ - float r, g, b, a; -} ovrColorf; - -/// A 2D vector with integer components. -typedef struct OVR_ALIGNAS(4) ovrVector2i_ -{ - int x, y; -} ovrVector2i; - -/// A 2D size with integer components. -typedef struct OVR_ALIGNAS(4) ovrSizei_ -{ - int w, h; -} ovrSizei; - -/// A 2D rectangle with a position and size. -/// All components are integers. -typedef struct OVR_ALIGNAS(4) ovrRecti_ -{ - ovrVector2i Pos; - ovrSizei Size; -} ovrRecti; - -/// A quaternion rotation. -typedef struct OVR_ALIGNAS(4) ovrQuatf_ -{ - float x, y, z, w; -} ovrQuatf; - -/// A 2D vector with float components. -typedef struct OVR_ALIGNAS(4) ovrVector2f_ -{ - float x, y; -} ovrVector2f; - -/// A 3D vector with float components. -typedef struct OVR_ALIGNAS(4) ovrVector3f_ -{ - float x, y, z; -} ovrVector3f; - -/// A 4x4 matrix with float elements. -typedef struct OVR_ALIGNAS(4) ovrMatrix4f_ -{ - float M[4][4]; -} ovrMatrix4f; - - -/// Position and orientation together. -typedef struct OVR_ALIGNAS(4) ovrPosef_ -{ - ovrQuatf Orientation; - ovrVector3f Position; -} ovrPosef; - -/// A full pose (rigid body) configuration with first and second derivatives. -/// -/// Body refers to any object for which ovrPoseStatef is providing data. -/// It can be the HMD, Touch controller, sensor or something else. The context -/// depends on the usage of the struct. -typedef struct OVR_ALIGNAS(8) ovrPoseStatef_ -{ - ovrPosef ThePose; ///< Position and orientation. - ovrVector3f AngularVelocity; ///< Angular velocity in radians per second. - ovrVector3f LinearVelocity; ///< Velocity in meters per second. - ovrVector3f AngularAcceleration; ///< Angular acceleration in radians per second per second. - ovrVector3f LinearAcceleration; ///< Acceleration in meters per second per second. - OVR_UNUSED_STRUCT_PAD(pad0, 4) ///< \internal struct pad. - double TimeInSeconds; ///< Absolute time that this pose refers to. \see ovr_GetTimeInSeconds -} ovrPoseStatef; - -/// Describes the up, down, left, and right angles of the field of view. -/// -/// Field Of View (FOV) tangent of the angle units. -/// \note For a standard 90 degree vertical FOV, we would -/// have: { UpTan = tan(90 degrees / 2), DownTan = tan(90 degrees / 2) }. -typedef struct OVR_ALIGNAS(4) ovrFovPort_ -{ - float UpTan; ///< The tangent of the angle between the viewing vector and the top edge of the field of view. - float DownTan; ///< The tangent of the angle between the viewing vector and the bottom edge of the field of view. - float LeftTan; ///< The tangent of the angle between the viewing vector and the left edge of the field of view. - float RightTan; ///< The tangent of the angle between the viewing vector and the right edge of the field of view. -} ovrFovPort; - - -//----------------------------------------------------------------------------------- -// ***** HMD Types - -/// Enumerates all HMD types that we support. -/// -/// The currently released developer kits are ovrHmd_DK1 and ovrHmd_DK2. The other enumerations are for internal use only. -typedef enum ovrHmdType_ -{ - ovrHmd_None = 0, - ovrHmd_DK1 = 3, - ovrHmd_DKHD = 4, - ovrHmd_DK2 = 6, - ovrHmd_CB = 8, - ovrHmd_Other = 9, - ovrHmd_E3_2015 = 10, - ovrHmd_ES06 = 11, - ovrHmd_ES09 = 12, - ovrHmd_ES11 = 13, - ovrHmd_CV1 = 14, - - ovrHmd_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrHmdType; - - -/// HMD capability bits reported by device. -/// -typedef enum ovrHmdCaps_ -{ - // Read-only flags - ovrHmdCap_DebugDevice = 0x0010, ///< (read only) Specifies that the HMD is a virtual debug device. - - - ovrHmdCap_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrHmdCaps; - - -/// Tracking capability bits reported by the device. -/// Used with ovr_GetTrackingCaps. -typedef enum ovrTrackingCaps_ -{ - ovrTrackingCap_Orientation = 0x0010, ///< Supports orientation tracking (IMU). - ovrTrackingCap_MagYawCorrection = 0x0020, ///< Supports yaw drift correction via a magnetometer or other means. - ovrTrackingCap_Position = 0x0040, ///< Supports positional tracking. - ovrTrackingCap_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrTrackingCaps; - - -/// Specifies which eye is being used for rendering. -/// This type explicitly does not include a third "NoStereo" monoscopic option, as such is -/// not required for an HMD-centered API. -typedef enum ovrEyeType_ -{ - ovrEye_Left = 0, ///< The left eye, from the viewer's perspective. - ovrEye_Right = 1, ///< The right eye, from the viewer's perspective. - ovrEye_Count = 2, ///< \internal Count of enumerated elements. - ovrEye_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrEyeType; - -/// Specifies the coordinate system ovrTrackingState returns tracking poses in. -/// Used with ovr_SetTrackingOriginType() -typedef enum ovrTrackingOrigin_ -{ - /// \brief Tracking system origin reported at eye (HMD) height - /// \details Prefer using this origin when your application requires - /// matching user's current physical head pose to a virtual head pose - /// without any regards to a the height of the floor. Cockpit-based, - /// or 3rd-person experiences are ideal candidates. - /// When used, all poses in ovrTrackingState are reported as an offset - /// transform from the profile calibrated or recentered HMD pose. - /// It is recommended that apps using this origin type call ovr_RecenterTrackingOrigin - /// prior to starting the VR experience, but notify the user before doing so - /// to make sure the user is in a comfortable pose, facing a comfortable - /// direction. - ovrTrackingOrigin_EyeLevel = 0, - /// \brief Tracking system origin reported at floor height - /// \details Prefer using this origin when your application requires the - /// physical floor height to match the virtual floor height, such as - /// standing experiences. - /// When used, all poses in ovrTrackingState are reported as an offset - /// transform from the profile calibrated floor pose. Calling ovr_RecenterTrackingOrigin - /// will recenter the X & Z axes as well as yaw, but the Y-axis (i.e. height) will continue - /// to be reported using the floor height as the origin for all poses. - ovrTrackingOrigin_FloorLevel = 1, - ovrTrackingOrigin_Count = 2, ///< \internal Count of enumerated elements. - ovrTrackingOrigin_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrTrackingOrigin; - -/// Identifies a graphics device in a platform-specific way. -/// For Windows this is a LUID type. -typedef struct OVR_ALIGNAS(OVR_PTR_SIZE) ovrGraphicsLuid_ -{ - // Public definition reserves space for graphics API-specific implementation - char Reserved[8]; -} ovrGraphicsLuid; - - -/// This is a complete descriptor of the HMD. -typedef struct OVR_ALIGNAS(OVR_PTR_SIZE) ovrHmdDesc_ -{ - ovrHmdType Type; ///< The type of HMD. - OVR_ON64(OVR_UNUSED_STRUCT_PAD(pad0, 4)) ///< \internal struct paddding. - char ProductName[64]; ///< UTF8-encoded product identification string (e.g. "Oculus Rift DK1"). - char Manufacturer[64]; ///< UTF8-encoded HMD manufacturer identification string. - short VendorId; ///< HID (USB) vendor identifier of the device. - short ProductId; ///< HID (USB) product identifier of the device. - char SerialNumber[24]; ///< HMD serial number. - short FirmwareMajor; ///< HMD firmware major version. - short FirmwareMinor; ///< HMD firmware minor version. - unsigned int AvailableHmdCaps; ///< Capability bits described by ovrHmdCaps which the HMD currently supports. - unsigned int DefaultHmdCaps; ///< Capability bits described by ovrHmdCaps which are default for the current Hmd. - unsigned int AvailableTrackingCaps; ///< Capability bits described by ovrTrackingCaps which the system currently supports. - unsigned int DefaultTrackingCaps; ///< Capability bits described by ovrTrackingCaps which are default for the current system. - ovrFovPort DefaultEyeFov[ovrEye_Count]; ///< Defines the recommended FOVs for the HMD. - ovrFovPort MaxEyeFov[ovrEye_Count]; ///< Defines the maximum FOVs for the HMD. - ovrSizei Resolution; ///< Resolution of the full HMD screen (both eyes) in pixels. - float DisplayRefreshRate; ///< Nominal refresh rate of the display in cycles per second at the time of HMD creation. - OVR_ON64(OVR_UNUSED_STRUCT_PAD(pad1, 4)) ///< \internal struct paddding. -} ovrHmdDesc; - - -/// Used as an opaque pointer to an OVR session. -typedef struct ovrHmdStruct* ovrSession; - - - -/// Bit flags describing the current status of sensor tracking. -/// The values must be the same as in enum StatusBits -/// -/// \see ovrTrackingState -/// -typedef enum ovrStatusBits_ -{ - ovrStatus_OrientationTracked = 0x0001, ///< Orientation is currently tracked (connected and in use). - ovrStatus_PositionTracked = 0x0002, ///< Position is currently tracked (false if out of range). - ovrStatus_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrStatusBits; - - -/// Specifies the description of a single sensor. -/// -/// \see ovr_GetTrackerDesc -/// -typedef struct OVR_ALIGNAS(OVR_PTR_SIZE) ovrTrackerDesc_ -{ - float FrustumHFovInRadians; ///< Sensor frustum horizontal field-of-view (if present). - float FrustumVFovInRadians; ///< Sensor frustum vertical field-of-view (if present). - float FrustumNearZInMeters; ///< Sensor frustum near Z (if present). - float FrustumFarZInMeters; ///< Sensor frustum far Z (if present). -} ovrTrackerDesc; - - -/// Specifies sensor flags. -/// -/// /see ovrTrackerPose -/// -typedef enum ovrTrackerFlags_ -{ - ovrTracker_Connected = 0x0020, ///< The sensor is present, else the sensor is absent or offline. - ovrTracker_PoseTracked = 0x0004 ///< The sensor has a valid pose, else the pose is unavailable. This will only be set if ovrTracker_Connected is set. -} ovrTrackerFlags; - - -/// Specifies the pose for a single sensor. -/// -typedef struct OVR_ALIGNAS(8) _ovrTrackerPose -{ - unsigned int TrackerFlags; ///< ovrTrackerFlags. - ovrPosef Pose; ///< The sensor's pose. This pose includes sensor tilt (roll and pitch). For a leveled coordinate system use LeveledPose. - ovrPosef LeveledPose; ///< The sensor's leveled pose, aligned with gravity. This value includes position and yaw of the sensor, but not roll and pitch. It can be used as a reference point to render real-world objects in the correct location. - OVR_UNUSED_STRUCT_PAD(pad0, 4) ///< \internal struct pad. -} ovrTrackerPose; - - -/// Tracking state at a given absolute time (describes predicted HMD pose, etc.). -/// Returned by ovr_GetTrackingState. -/// -/// \see ovr_GetTrackingState -/// -typedef struct OVR_ALIGNAS(8) ovrTrackingState_ -{ - /// Predicted head pose (and derivatives) at the requested absolute time. - ovrPoseStatef HeadPose; - - /// HeadPose tracking status described by ovrStatusBits. - unsigned int StatusFlags; - - /// The most recent calculated pose for each hand when hand controller tracking is present. - /// HandPoses[ovrHand_Left] refers to the left hand and HandPoses[ovrHand_Right] to the right hand. - /// These values can be combined with ovrInputState for complete hand controller information. - ovrPoseStatef HandPoses[2]; - - /// HandPoses status flags described by ovrStatusBits. - /// Only ovrStatus_OrientationTracked and ovrStatus_PositionTracked are reported. - unsigned int HandStatusFlags[2]; - - /// The pose of the origin captured during calibration. - /// Like all other poses here, this is expressed in the space set by ovr_RecenterTrackingOrigin, - /// and so will change every time that is called. This pose can be used to calculate - /// where the calibrated origin lands in the new recentered space. - /// If an application never calls ovr_RecenterTrackingOrigin, expect this value to be the identity - /// pose and as such will point respective origin based on ovrTrackingOrigin requested when - /// calling ovr_GetTrackingState. - ovrPosef CalibratedOrigin; - -} ovrTrackingState; - - -/// Rendering information for each eye. Computed by ovr_GetRenderDesc() based on the -/// specified FOV. Note that the rendering viewport is not included -/// here as it can be specified separately and modified per frame by -/// passing different Viewport values in the layer structure. -/// -/// \see ovr_GetRenderDesc -/// -typedef struct OVR_ALIGNAS(4) ovrEyeRenderDesc_ -{ - ovrEyeType Eye; ///< The eye index to which this instance corresponds. - ovrFovPort Fov; ///< The field of view. - ovrRecti DistortedViewport; ///< Distortion viewport. - ovrVector2f PixelsPerTanAngleAtCenter; ///< How many display pixels will fit in tan(angle) = 1. - ovrVector3f HmdToEyeOffset; ///< Translation of each eye, in meters. -} ovrEyeRenderDesc; - - -/// Projection information for ovrLayerEyeFovDepth. -/// -/// Use the utility function ovrTimewarpProjectionDesc_FromProjection to -/// generate this structure from the application's projection matrix. -/// -/// \see ovrLayerEyeFovDepth, ovrTimewarpProjectionDesc_FromProjection -/// -typedef struct OVR_ALIGNAS(4) ovrTimewarpProjectionDesc_ -{ - float Projection22; ///< Projection matrix element [2][2]. - float Projection23; ///< Projection matrix element [2][3]. - float Projection32; ///< Projection matrix element [3][2]. -} ovrTimewarpProjectionDesc; - - -/// Contains the data necessary to properly calculate position info for various layer types. -/// - HmdToEyeOffset is the same value pair provided in ovrEyeRenderDesc. -/// - HmdSpaceToWorldScaleInMeters is used to scale player motion into in-application units. -/// In other words, it is how big an in-application unit is in the player's physical meters. -/// For example, if the application uses inches as its units then HmdSpaceToWorldScaleInMeters would be 0.0254. -/// Note that if you are scaling the player in size, this must also scale. So if your application -/// units are inches, but you're shrinking the player to half their normal size, then -/// HmdSpaceToWorldScaleInMeters would be 0.0254*2.0. -/// -/// \see ovrEyeRenderDesc, ovr_SubmitFrame -/// -typedef struct OVR_ALIGNAS(4) ovrViewScaleDesc_ -{ - ovrVector3f HmdToEyeOffset[ovrEye_Count]; ///< Translation of each eye. - float HmdSpaceToWorldScaleInMeters; ///< Ratio of viewer units to meter units. -} ovrViewScaleDesc; - - -//----------------------------------------------------------------------------------- -// ***** Platform-independent Rendering Configuration - -/// The type of texture resource. -/// -/// \see ovrTextureSwapChainDesc -/// -typedef enum ovrTextureType_ -{ - ovrTexture_2D, ///< 2D textures. - ovrTexture_2D_External, ///< External 2D texture. Not used on PC - ovrTexture_Cube, ///< Cube maps. Not currently supported on PC. - ovrTexture_Count, - ovrTexture_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrTextureType; - -/// The bindings required for texture swap chain. -/// -/// All texture swap chains are automatically bindable as shader -/// input resources since the Oculus runtime needs this to read them. -/// -/// \see ovrTextureSwapChainDesc -/// -typedef enum ovrTextureBindFlags_ -{ - ovrTextureBind_None, - ovrTextureBind_DX_RenderTarget = 0x0001, ///< The application can write into the chain with pixel shader - ovrTextureBind_DX_UnorderedAccess = 0x0002, ///< The application can write to the chain with compute shader - ovrTextureBind_DX_DepthStencil = 0x0004, ///< The chain buffers can be bound as depth and/or stencil buffers - - ovrTextureBind_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrTextureBindFlags; - -/// The format of a texture. -/// -/// \see ovrTextureSwapChainDesc -/// -typedef enum ovrTextureFormat_ -{ - OVR_FORMAT_UNKNOWN, - OVR_FORMAT_B5G6R5_UNORM, ///< Not currently supported on PC. Would require a DirectX 11.1 device. - OVR_FORMAT_B5G5R5A1_UNORM, ///< Not currently supported on PC. Would require a DirectX 11.1 device. - OVR_FORMAT_B4G4R4A4_UNORM, ///< Not currently supported on PC. Would require a DirectX 11.1 device. - OVR_FORMAT_R8G8B8A8_UNORM, - OVR_FORMAT_R8G8B8A8_UNORM_SRGB, - OVR_FORMAT_B8G8R8A8_UNORM, - OVR_FORMAT_B8G8R8A8_UNORM_SRGB, ///< Not supported for OpenGL applications - OVR_FORMAT_B8G8R8X8_UNORM, ///< Not supported for OpenGL applications - OVR_FORMAT_B8G8R8X8_UNORM_SRGB, ///< Not supported for OpenGL applications - OVR_FORMAT_R16G16B16A16_FLOAT, - OVR_FORMAT_D16_UNORM, - OVR_FORMAT_D24_UNORM_S8_UINT, - OVR_FORMAT_D32_FLOAT, - OVR_FORMAT_D32_FLOAT_S8X24_UINT, - - // Added in 1.5 compressed formats can be used for static layers - OVR_FORMAT_BC1_UNORM, - OVR_FORMAT_BC1_UNORM_SRGB, - OVR_FORMAT_BC2_UNORM, - OVR_FORMAT_BC2_UNORM_SRGB, - OVR_FORMAT_BC3_UNORM, - OVR_FORMAT_BC3_UNORM_SRGB, - OVR_FORMAT_BC6H_UF16, - OVR_FORMAT_BC6H_SF16, - OVR_FORMAT_BC7_UNORM, - OVR_FORMAT_BC7_UNORM_SRGB, - - OVR_FORMAT_ENUMSIZE = 0x7fffffff ///< \internal Force type int32_t. -} ovrTextureFormat; - -/// Misc flags overriding particular -/// behaviors of a texture swap chain -/// -/// \see ovrTextureSwapChainDesc -/// -typedef enum ovrTextureMiscFlags_ -{ - ovrTextureMisc_None, - - /// DX only: The underlying texture is created with a TYPELESS equivalent of the - /// format specified in the texture desc. The SDK will still access the - /// texture using the format specified in the texture desc, but the app can - /// create views with different formats if this is specified. - ovrTextureMisc_DX_Typeless = 0x0001, - - /// DX only: Allow generation of the mip chain on the GPU via the GenerateMips - /// call. This flag requires that RenderTarget binding also be specified. - ovrTextureMisc_AllowGenerateMips = 0x0002, - - /// Texture swap chain contains protected content, and requires - /// HDCP connection in order to display to HMD. Also prevents - /// mirroring or other redirection of any frame containing this contents - ovrTextureMisc_ProtectedContent = 0x0004, - - ovrTextureMisc_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrTextureFlags; - -/// Description used to create a texture swap chain. -/// -/// \see ovr_CreateTextureSwapChainDX -/// \see ovr_CreateTextureSwapChainGL -/// -typedef struct ovrTextureSwapChainDesc_ -{ - ovrTextureType Type; - ovrTextureFormat Format; - int ArraySize; ///< Only supported with ovrTexture_2D. Not supported on PC at this time. - int Width; - int Height; - int MipLevels; - int SampleCount; ///< Current only supported on depth textures - ovrBool StaticImage; ///< Not buffered in a chain. For images that don't change - unsigned int MiscFlags; ///< ovrTextureFlags - unsigned int BindFlags; ///< ovrTextureBindFlags. Not used for GL. -} ovrTextureSwapChainDesc; - -/// Description used to create a mirror texture. -/// -/// \see ovr_CreateMirrorTextureDX -/// \see ovr_CreateMirrorTextureGL -/// -typedef struct ovrMirrorTextureDesc_ -{ - ovrTextureFormat Format; - int Width; - int Height; - unsigned int MiscFlags; ///< ovrTextureFlags -} ovrMirrorTextureDesc; - -typedef struct ovrTextureSwapChainData* ovrTextureSwapChain; -typedef struct ovrMirrorTextureData* ovrMirrorTexture; - -//----------------------------------------------------------------------------------- - -/// Describes button input types. -/// Button inputs are combined; that is they will be reported as pressed if they are -/// pressed on either one of the two devices. -/// The ovrButton_Up/Down/Left/Right map to both XBox D-Pad and directional buttons. -/// The ovrButton_Enter and ovrButton_Return map to Start and Back controller buttons, respectively. -typedef enum ovrButton_ -{ - ovrButton_A = 0x00000001, - ovrButton_B = 0x00000002, - ovrButton_RThumb = 0x00000004, - ovrButton_RShoulder = 0x00000008, - - ovrButton_X = 0x00000100, - ovrButton_Y = 0x00000200, - ovrButton_LThumb = 0x00000400, - ovrButton_LShoulder = 0x00000800, - - // Navigation through DPad. - ovrButton_Up = 0x00010000, - ovrButton_Down = 0x00020000, - ovrButton_Left = 0x00040000, - ovrButton_Right = 0x00080000, - ovrButton_Enter = 0x00100000, // Start on XBox controller. - ovrButton_Back = 0x00200000, // Back on Xbox controller. - ovrButton_VolUp = 0x00400000, // only supported by Remote. - ovrButton_VolDown = 0x00800000, // only supported by Remote. - ovrButton_Home = 0x01000000, - ovrButton_Private = ovrButton_VolUp | ovrButton_VolDown | ovrButton_Home, - - // Bit mask of all buttons on the right Touch controller - ovrButton_RMask = ovrButton_A | ovrButton_B | ovrButton_RThumb | ovrButton_RShoulder, - - // Bit mask of all buttons on the left Touch controller - ovrButton_LMask = ovrButton_X | ovrButton_Y | ovrButton_LThumb | ovrButton_LShoulder | - ovrButton_Enter, - - - ovrButton_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrButton; - -/// Describes touch input types. -/// These values map to capacitive touch values reported ovrInputState::Touch. -/// Some of these values are mapped to button bits for consistency. -typedef enum ovrTouch_ -{ - ovrTouch_A = ovrButton_A, - ovrTouch_B = ovrButton_B, - ovrTouch_RThumb = ovrButton_RThumb, - ovrTouch_RThumbRest = 0x00000008, - ovrTouch_RIndexTrigger = 0x00000010, - - // Bit mask of all the button touches on the right controller - ovrTouch_RButtonMask = ovrTouch_A | ovrTouch_B | ovrTouch_RThumb | ovrTouch_RThumbRest | ovrTouch_RIndexTrigger, - - ovrTouch_X = ovrButton_X, - ovrTouch_Y = ovrButton_Y, - ovrTouch_LThumb = ovrButton_LThumb, - ovrTouch_LThumbRest = 0x00000800, - ovrTouch_LIndexTrigger = 0x00001000, - - // Bit mask of all the button touches on the left controller - ovrTouch_LButtonMask = ovrTouch_X | ovrTouch_Y | ovrTouch_LThumb | ovrTouch_LThumbRest | ovrTouch_LIndexTrigger, - - // Finger pose state - // Derived internally based on distance, proximity to sensors and filtering. - ovrTouch_RIndexPointing = 0x00000020, - ovrTouch_RThumbUp = 0x00000040, - - // Bit mask of all right controller poses - ovrTouch_RPoseMask = ovrTouch_RIndexPointing | ovrTouch_RThumbUp, - - ovrTouch_LIndexPointing = 0x00002000, - ovrTouch_LThumbUp = 0x00004000, - - // Bit mask of all left controller poses - ovrTouch_LPoseMask = ovrTouch_LIndexPointing | ovrTouch_LThumbUp, - - ovrTouch_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrTouch; - -/// Describes the Touch Haptics engine. -/// Currently, those values will NOT change during a session. -typedef struct OVR_ALIGNAS(OVR_PTR_SIZE) ovrTouchHapticsDesc_ -{ - // Haptics engine frequency/sample-rate, sample time in seconds equals 1.0/sampleRateHz - int SampleRateHz; - // Size of each Haptics sample, sample value range is [0, 2^(Bytes*8)-1] - int SampleSizeInBytes; - - // Queue size that would guarantee Haptics engine would not starve for data - // Make sure size doesn't drop below it for best results - int QueueMinSizeToAvoidStarvation; - - // Minimum, Maximum and Optimal number of samples that can be sent to Haptics through ovr_SubmitControllerVibration - int SubmitMinSamples; - int SubmitMaxSamples; - int SubmitOptimalSamples; -} ovrTouchHapticsDesc; - -/// Specifies which controller is connected; multiple can be connected at once. -typedef enum ovrControllerType_ -{ - ovrControllerType_None = 0x00, - ovrControllerType_LTouch = 0x01, - ovrControllerType_RTouch = 0x02, - ovrControllerType_Touch = 0x03, - ovrControllerType_Remote = 0x04, - ovrControllerType_XBox = 0x10, - - ovrControllerType_Active = 0xff, ///< Operate on or query whichever controller is active. - - ovrControllerType_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrControllerType; - -/// Haptics buffer submit mode -typedef enum ovrHapticsBufferSubmitMode_ -{ - // Enqueue buffer for later playback - ovrHapticsBufferSubmit_Enqueue -} ovrHapticsBufferSubmitMode; - -/// Haptics buffer descriptor, contains amplitude samples used for Touch vibration -typedef struct ovrHapticsBuffer_ -{ - const void* Samples; - int SamplesCount; - ovrHapticsBufferSubmitMode SubmitMode; -} ovrHapticsBuffer; - -/// State of the Haptics playback for Touch vibration -typedef struct ovrHapticsPlaybackState_ -{ - // Remaining space available to queue more samples - int RemainingQueueSpace; - - // Number of samples currently queued - int SamplesQueued; -} ovrHapticsPlaybackState; - -/// Position tracked devices -typedef enum ovrTrackedDeviceType_ -{ - ovrTrackedDevice_HMD = 0x0001, - ovrTrackedDevice_LTouch = 0x0002, - ovrTrackedDevice_RTouch = 0x0004, - ovrTrackedDevice_Touch = 0x0006, - ovrTrackedDevice_All = 0xFFFF, -} ovrTrackedDeviceType; - -/// Provides names for the left and right hand array indexes. -/// -/// \see ovrInputState, ovrTrackingState -/// -typedef enum ovrHandType_ -{ - ovrHand_Left = 0, - ovrHand_Right = 1, - ovrHand_Count = 2, - ovrHand_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrHandType; - - - -/// ovrInputState describes the complete controller input state, including Oculus Touch, -/// and XBox gamepad. If multiple inputs are connected and used at the same time, -/// their inputs are combined. -typedef struct ovrInputState_ -{ - /// System type when the controller state was last updated. - double TimeInSeconds; - - /// Values for buttons described by ovrButton. - unsigned int Buttons; - - /// Touch values for buttons and sensors as described by ovrTouch. - unsigned int Touches; - - /// Left and right finger trigger values (ovrHand_Left and ovrHand_Right), in the range 0.0 to 1.0f. - /// Returns 0 if the value would otherwise be less than 0.1176, for ovrControllerType_XBox - float IndexTrigger[ovrHand_Count]; - - /// Left and right hand trigger values (ovrHand_Left and ovrHand_Right), in the range 0.0 to 1.0f. - float HandTrigger[ovrHand_Count]; - - /// Horizontal and vertical thumbstick axis values (ovrHand_Left and ovrHand_Right), in the range -1.0f to 1.0f. - /// Returns a deadzone (value 0) per each axis if the value on that axis would otherwise have been between -.2746 to +.2746, for ovrControllerType_XBox - ovrVector2f Thumbstick[ovrHand_Count]; - - /// The type of the controller this state is for. - ovrControllerType ControllerType; - - /// Left and right finger trigger values (ovrHand_Left and ovrHand_Right), in the range 0.0 to 1.0f. - /// Does not apply a deadzone - /// Added in 1.7 - float IndexTriggerNoDeadzone[ovrHand_Count]; - - /// Left and right hand trigger values (ovrHand_Left and ovrHand_Right), in the range 0.0 to 1.0f. - /// Does not apply a deadzone - /// Added in 1.7 - float HandTriggerNoDeadzone[ovrHand_Count]; - - /// Horizontal and vertical thumbstick axis values (ovrHand_Left and ovrHand_Right), in the range -1.0f to 1.0f - /// Does not apply a deadzone - /// Added in 1.7 - ovrVector2f ThumbstickNoDeadzone[ovrHand_Count]; -} ovrInputState; - - - -//----------------------------------------------------------------------------------- -// ***** Initialize structures - -/// Initialization flags. -/// -/// \see ovrInitParams, ovr_Initialize -/// -typedef enum ovrInitFlags_ -{ - /// When a debug library is requested, a slower debugging version of the library will - /// run which can be used to help solve problems in the library and debug application code. - ovrInit_Debug = 0x00000001, - - /// When a version is requested, the LibOVR runtime respects the RequestedMinorVersion - /// field and verifies that the RequestedMinorVersion is supported. - ovrInit_RequestVersion = 0x00000004, - - // These bits are writable by user code. - ovrinit_WritableBits = 0x00ffffff, - - ovrInit_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrInitFlags; - - -/// Logging levels -/// -/// \see ovrInitParams, ovrLogCallback -/// -typedef enum ovrLogLevel_ -{ - ovrLogLevel_Debug = 0, ///< Debug-level log event. - ovrLogLevel_Info = 1, ///< Info-level log event. - ovrLogLevel_Error = 2, ///< Error-level log event. - - ovrLogLevel_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrLogLevel; - - -/// Signature of the logging callback function pointer type. -/// -/// \param[in] userData is an arbitrary value specified by the user of ovrInitParams. -/// \param[in] level is one of the ovrLogLevel constants. -/// \param[in] message is a UTF8-encoded null-terminated string. -/// \see ovrInitParams, ovrLogLevel, ovr_Initialize -/// -typedef void (OVR_CDECL* ovrLogCallback)(uintptr_t userData, int level, const char* message); - - -/// Parameters for ovr_Initialize. -/// -/// \see ovr_Initialize -/// -typedef struct OVR_ALIGNAS(8) ovrInitParams_ -{ - /// Flags from ovrInitFlags to override default behavior. - /// Use 0 for the defaults. - uint32_t Flags; - - /// Requests a specific minimum minor version of the LibOVR runtime. - /// Flags must include ovrInit_RequestVersion or this will be ignored - /// and OVR_MINOR_VERSION will be used. - uint32_t RequestedMinorVersion; - - /// User-supplied log callback function, which may be called at any time - /// asynchronously from multiple threads until ovr_Shutdown completes. - /// Use NULL to specify no log callback. - ovrLogCallback LogCallback; - - /// User-supplied data which is passed as-is to LogCallback. Typically this - /// is used to store an application-specific pointer which is read in the - /// callback function. - uintptr_t UserData; - - /// Relative number of milliseconds to wait for a connection to the server - /// before failing. Use 0 for the default timeout. - uint32_t ConnectionTimeoutMS; - - OVR_ON64(OVR_UNUSED_STRUCT_PAD(pad0, 4)) ///< \internal - -} ovrInitParams; - - -#ifdef __cplusplus -extern "C" { -#endif - -#if !defined(OVR_EXPORTING_CAPI) - -// ----------------------------------------------------------------------------------- -// ***** API Interfaces - -/// Initializes LibOVR -/// -/// Initialize LibOVR for application usage. This includes finding and loading the LibOVRRT -/// shared library. No LibOVR API functions, other than ovr_GetLastErrorInfo and ovr_Detect, can -/// be called unless ovr_Initialize succeeds. A successful call to ovr_Initialize must be eventually -/// followed by a call to ovr_Shutdown. ovr_Initialize calls are idempotent. -/// Calling ovr_Initialize twice does not require two matching calls to ovr_Shutdown. -/// If already initialized, the return value is ovr_Success. -/// -/// LibOVRRT shared library search order: -/// -# Current working directory (often the same as the application directory). -/// -# Module directory (usually the same as the application directory, -/// but not if the module is a separate shared library). -/// -# Application directory -/// -# Development directory (only if OVR_ENABLE_DEVELOPER_SEARCH is enabled, -/// which is off by default). -/// -# Standard OS shared library search location(s) (OS-specific). -/// -/// \param params Specifies custom initialization options. May be NULL to indicate default options. -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. Example failed results include: -/// - ovrError_Initialize: Generic initialization error. -/// - ovrError_LibLoad: Couldn't load LibOVRRT. -/// - ovrError_LibVersion: LibOVRRT version incompatibility. -/// - ovrError_ServiceConnection: Couldn't connect to the OVR Service. -/// - ovrError_ServiceVersion: OVR Service version incompatibility. -/// - ovrError_IncompatibleOS: The operating system version is incompatible. -/// - ovrError_DisplayInit: Unable to initialize the HMD display. -/// - ovrError_ServerStart: Unable to start the server. Is it already running? -/// - ovrError_Reinitialization: Attempted to re-initialize with a different version. -/// -/// Example code -/// \code{.cpp} -/// ovrResult result = ovr_Initialize(NULL); -/// if(OVR_FAILURE(result)) { -/// ovrErrorInfo errorInfo; -/// ovr_GetLastErrorInfo(&errorInfo); -/// DebugLog("ovr_Initialize failed: %s", errorInfo.ErrorString); -/// return false; -/// } -/// [...] -/// \endcode -/// -/// \see ovr_Shutdown -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_Initialize(const ovrInitParams* params); - - -/// Shuts down LibOVR -/// -/// A successful call to ovr_Initialize must be eventually matched by a call to ovr_Shutdown. -/// After calling ovr_Shutdown, no LibOVR functions can be called except ovr_GetLastErrorInfo -/// or another ovr_Initialize. ovr_Shutdown invalidates all pointers, references, and created objects -/// previously returned by LibOVR functions. The LibOVRRT shared library can be unloaded by -/// ovr_Shutdown. -/// -/// \see ovr_Initialize -/// -OVR_PUBLIC_FUNCTION(void) ovr_Shutdown(); - -/// Returns information about the most recent failed return value by the -/// current thread for this library. -/// -/// This function itself can never generate an error. -/// The last error is never cleared by LibOVR, but will be overwritten by new errors. -/// Do not use this call to determine if there was an error in the last API -/// call as successful API calls don't clear the last ovrErrorInfo. -/// To avoid any inconsistency, ovr_GetLastErrorInfo should be called immediately -/// after an API function that returned a failed ovrResult, with no other API -/// functions called in the interim. -/// -/// \param[out] errorInfo The last ovrErrorInfo for the current thread. -/// -/// \see ovrErrorInfo -/// -OVR_PUBLIC_FUNCTION(void) ovr_GetLastErrorInfo(ovrErrorInfo* errorInfo); - - -/// Returns the version string representing the LibOVRRT version. -/// -/// The returned string pointer is valid until the next call to ovr_Shutdown. -/// -/// Note that the returned version string doesn't necessarily match the current -/// OVR_MAJOR_VERSION, etc., as the returned string refers to the LibOVRRT shared -/// library version and not the locally compiled interface version. -/// -/// The format of this string is subject to change in future versions and its contents -/// should not be interpreted. -/// -/// \return Returns a UTF8-encoded null-terminated version string. -/// -OVR_PUBLIC_FUNCTION(const char*) ovr_GetVersionString(); - - -/// Writes a message string to the LibOVR tracing mechanism (if enabled). -/// -/// This message will be passed back to the application via the ovrLogCallback if -/// it was registered. -/// -/// \param[in] level One of the ovrLogLevel constants. -/// \param[in] message A UTF8-encoded null-terminated string. -/// \return returns the strlen of the message or a negative value if the message is too large. -/// -/// \see ovrLogLevel, ovrLogCallback -/// -OVR_PUBLIC_FUNCTION(int) ovr_TraceMessage(int level, const char* message); - - -/// Identify client application info. -/// -/// The string is one or more newline-delimited lines of optional info -/// indicating engine name, engine version, engine plugin name, engine plugin -/// version, engine editor. The order of the lines is not relevant. Individual -/// lines are optional. A newline is not necessary at the end of the last line. -/// Call after ovr_Initialize and before the first call to ovr_Create. -/// Each value is limited to 20 characters. Key names such as 'EngineName:' -/// 'EngineVersion:' do not count towards this limit. -/// -/// \param[in] identity Specifies one or more newline-delimited lines of optional info: -/// EngineName: %s\n -/// EngineVersion: %s\n -/// EnginePluginName: %s\n -/// EnginePluginVersion: %s\n -/// EngineEditor: ('true' or 'false')\n -/// -/// Example code -/// \code{.cpp} -/// ovr_IdentifyClient("EngineName: Unity\n" -/// "EngineVersion: 5.3.3\n" -/// "EnginePluginName: OVRPlugin\n" -/// "EnginePluginVersion: 1.2.0\n" -/// "EngineEditor: true"); -/// \endcode -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_IdentifyClient(const char* identity); - - -//------------------------------------------------------------------------------------- -/// @name HMD Management -/// -/// Handles the enumeration, creation, destruction, and properties of an HMD (head-mounted display). -///@{ - - -/// Returns information about the current HMD. -/// -/// ovr_Initialize must have first been called in order for this to succeed, otherwise ovrHmdDesc::Type -/// will be reported as ovrHmd_None. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create, else NULL in which -/// case this function detects whether an HMD is present and returns its info if so. -/// -/// \return Returns an ovrHmdDesc. If the hmd is NULL and ovrHmdDesc::Type is ovrHmd_None then -/// no HMD is present. -/// -OVR_PUBLIC_FUNCTION(ovrHmdDesc) ovr_GetHmdDesc(ovrSession session); - - -/// Returns the number of sensors. -/// -/// The number of sensors may change at any time, so this function should be called before use -/// as opposed to once on startup. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// -/// \return Returns unsigned int count. -/// -OVR_PUBLIC_FUNCTION(unsigned int) ovr_GetTrackerCount(ovrSession session); - - -/// Returns a given sensor description. -/// -/// It's possible that sensor desc [0] may indicate a unconnnected or non-pose tracked sensor, but -/// sensor desc [1] may be connected. -/// -/// ovr_Initialize must have first been called in order for this to succeed, otherwise the returned -/// trackerDescArray will be zero-initialized. The data returned by this function can change at runtime. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// -/// \param[in] trackerDescIndex Specifies a sensor index. The valid indexes are in the range of 0 to -/// the sensor count returned by ovr_GetTrackerCount. -/// -/// \return Returns ovrTrackerDesc. An empty ovrTrackerDesc will be returned if trackerDescIndex is out of range. -/// -/// \see ovrTrackerDesc, ovr_GetTrackerCount -/// -OVR_PUBLIC_FUNCTION(ovrTrackerDesc) ovr_GetTrackerDesc(ovrSession session, unsigned int trackerDescIndex); - - -/// Creates a handle to a VR session. -/// -/// Upon success the returned ovrSession must be eventually freed with ovr_Destroy when it is no longer needed. -/// A second call to ovr_Create will result in an error return value if the previous session has not been destroyed. -/// -/// \param[out] pSession Provides a pointer to an ovrSession which will be written to upon success. -/// \param[out] luid Provides a system specific graphics adapter identifier that locates which -/// graphics adapter has the HMD attached. This must match the adapter used by the application -/// or no rendering output will be possible. This is important for stability on multi-adapter systems. An -/// application that simply chooses the default adapter will not run reliably on multi-adapter systems. -/// \return Returns an ovrResult indicating success or failure. Upon failure -/// the returned ovrSession will be NULL. -/// -/// Example code -/// \code{.cpp} -/// ovrSession session; -/// ovrGraphicsLuid luid; -/// ovrResult result = ovr_Create(&session, &luid); -/// if(OVR_FAILURE(result)) -/// ... -/// \endcode -/// -/// \see ovr_Destroy -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_Create(ovrSession* pSession, ovrGraphicsLuid* pLuid); - - -/// Destroys the session. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \see ovr_Create -/// -OVR_PUBLIC_FUNCTION(void) ovr_Destroy(ovrSession session); - -#endif // !defined(OVR_EXPORTING_CAPI) - -/// Specifies status information for the current session. -/// -/// \see ovr_GetSessionStatus -/// -typedef struct ovrSessionStatus_ -{ - ovrBool IsVisible; ///< True if the process has VR focus and thus is visible in the HMD. - ovrBool HmdPresent; ///< True if an HMD is present. - ovrBool HmdMounted; ///< True if the HMD is on the user's head. - ovrBool DisplayLost; ///< True if the session is in a display-lost state. See ovr_SubmitFrame. - ovrBool ShouldQuit; ///< True if the application should initiate shutdown. - ovrBool ShouldRecenter; ///< True if UX has requested re-centering. Must call ovr_ClearShouldRecenterFlag or ovr_RecenterTrackingOrigin. -}ovrSessionStatus; - -#if !defined(OVR_EXPORTING_CAPI) - -/// Returns status information for the application. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[out] sessionStatus Provides an ovrSessionStatus that is filled in. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of -/// failure, use ovr_GetLastErrorInfo to get more information. -// Return values include but aren't limited to: -/// - ovrSuccess: Completed successfully. -/// - ovrError_ServiceConnection: The service connection was lost and the application -// must destroy the session. -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetSessionStatus(ovrSession session, ovrSessionStatus* sessionStatus); - - -//@} - - - -//------------------------------------------------------------------------------------- -/// @name Tracking -/// -/// Tracking functions handle the position, orientation, and movement of the HMD in space. -/// -/// All tracking interface functions are thread-safe, allowing tracking state to be sampled -/// from different threads. -/// -///@{ - - - -/// Sets the tracking origin type -/// -/// When the tracking origin is changed, all of the calls that either provide -/// or accept ovrPosef will use the new tracking origin provided. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] origin Specifies an ovrTrackingOrigin to be used for all ovrPosef -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -/// \see ovrTrackingOrigin, ovr_GetTrackingOriginType -OVR_PUBLIC_FUNCTION(ovrResult) ovr_SetTrackingOriginType(ovrSession session, ovrTrackingOrigin origin); - - -/// Gets the tracking origin state -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// -/// \return Returns the ovrTrackingOrigin that was either set by default, or previous set by the application. -/// -/// \see ovrTrackingOrigin, ovr_SetTrackingOriginType -OVR_PUBLIC_FUNCTION(ovrTrackingOrigin) ovr_GetTrackingOriginType(ovrSession session); - - -/// Re-centers the sensor position and orientation. -/// -/// This resets the (x,y,z) positional components and the yaw orientation component. -/// The Roll and pitch orientation components are always determined by gravity and cannot -/// be redefined. All future tracking will report values relative to this new reference position. -/// If you are using ovrTrackerPoses then you will need to call ovr_GetTrackerPose after -/// this, because the sensor position(s) will change as a result of this. -/// -/// The headset cannot be facing vertically upward or downward but rather must be roughly -/// level otherwise this function will fail with ovrError_InvalidHeadsetOrientation. -/// -/// For more info, see the notes on each ovrTrackingOrigin enumeration to understand how -/// recenter will vary slightly in its behavior based on the current ovrTrackingOrigin setting. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. Return values include but aren't limited to: -/// - ovrSuccess: Completed successfully. -/// - ovrError_InvalidHeadsetOrientation: The headset was facing an invalid direction when -/// attempting recentering, such as facing vertically. -/// -/// \see ovrTrackingOrigin, ovr_GetTrackerPose -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_RecenterTrackingOrigin(ovrSession session); - - -/// Clears the ShouldRecenter status bit in ovrSessionStatus. -/// -/// Clears the ShouldRecenter status bit in ovrSessionStatus, allowing further recenter -/// requests to be detected. Since this is automatically done by ovr_RecenterTrackingOrigin, -/// this is only needs to be called when application is doing its own re-centering. -OVR_PUBLIC_FUNCTION(void) ovr_ClearShouldRecenterFlag(ovrSession session); - - -/// Returns tracking state reading based on the specified absolute system time. -/// -/// Pass an absTime value of 0.0 to request the most recent sensor reading. In this case -/// both PredictedPose and SamplePose will have the same value. -/// -/// This may also be used for more refined timing of front buffer rendering logic, and so on. -/// This may be called by multiple threads. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] absTime Specifies the absolute future time to predict the return -/// ovrTrackingState value. Use 0 to request the most recent tracking state. -/// \param[in] latencyMarker Specifies that this call is the point in time where -/// the "App-to-Mid-Photon" latency timer starts from. If a given ovrLayer -/// provides "SensorSampleTime", that will override the value stored here. -/// \return Returns the ovrTrackingState that is predicted for the given absTime. -/// -/// \see ovrTrackingState, ovr_GetEyePoses, ovr_GetTimeInSeconds -/// -OVR_PUBLIC_FUNCTION(ovrTrackingState) ovr_GetTrackingState(ovrSession session, double absTime, ovrBool latencyMarker); - - - -/// Returns the ovrTrackerPose for the given sensor. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] trackerPoseIndex Index of the sensor being requested. -/// -/// \return Returns the requested ovrTrackerPose. An empty ovrTrackerPose will be returned if trackerPoseIndex is out of range. -/// -/// \see ovr_GetTrackerCount -/// -OVR_PUBLIC_FUNCTION(ovrTrackerPose) ovr_GetTrackerPose(ovrSession session, unsigned int trackerPoseIndex); - - - -/// Returns the most recent input state for controllers, without positional tracking info. -/// -/// \param[out] inputState Input state that will be filled in. -/// \param[in] ovrControllerType Specifies which controller the input will be returned for. -/// \return Returns ovrSuccess if the new state was successfully obtained. -/// -/// \see ovrControllerType -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetInputState(ovrSession session, ovrControllerType controllerType, ovrInputState* inputState); - - -/// Returns controller types connected to the system OR'ed together. -/// -/// \return A bitmask of ovrControllerTypes connected to the system. -/// -/// \see ovrControllerType -/// -OVR_PUBLIC_FUNCTION(unsigned int) ovr_GetConnectedControllerTypes(ovrSession session); - -/// Gets information about Haptics engine for the specified Touch controller. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] controllerType The controller to retrieve the information from. -/// -/// \return Returns an ovrTouchHapticsDesc. -/// -OVR_PUBLIC_FUNCTION(ovrTouchHapticsDesc) ovr_GetTouchHapticsDesc(ovrSession session, ovrControllerType controllerType); - -/// Sets constant vibration (with specified frequency and amplitude) to a controller. -/// Note: ovr_SetControllerVibration cannot be used interchangeably with ovr_SubmitControllerVibration. -/// -/// This method should be called periodically, vibration lasts for a maximum of 2.5 seconds. -/// It's recommended to call this method once a second, calls will be rejected if called too frequently (over 30hz). -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] controllerType The controller to set the vibration to. -/// \param[in] frequency Vibration frequency. Supported values are: 0.0 (disabled), 0.5 and 1.0. Non valid values will be clamped. -/// \param[in] amplitude Vibration amplitude in the [0.0, 1.0] range. -/// \return Returns ovrSuccess upon success. -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_SetControllerVibration(ovrSession session, ovrControllerType controllerType, float frequency, float amplitude); - -/// Submits a Haptics buffer (used for vibration) to Touch (only) controllers. -/// Note: ovr_SubmitControllerVibration cannot be used interchangeably with ovr_SetControllerVibration. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] controllerType Controller where the Haptics buffer will be played. -/// \param[in] buffer Haptics buffer containing amplitude samples to be played. -/// \return Returns ovrSuccess upon success. -/// \see ovrHapticsBuffer -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_SubmitControllerVibration(ovrSession session, ovrControllerType controllerType, const ovrHapticsBuffer* buffer); - -/// Gets the Haptics engine playback state of a specific Touch controller. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] controllerType Controller where the Haptics buffer wil be played. -/// \param[in] outState State of the haptics engine. -/// \return Returns ovrSuccess upon success. -/// \see ovrHapticsPlaybackState -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetControllerVibrationState(ovrSession session, ovrControllerType controllerType, ovrHapticsPlaybackState* outState); - - -#endif // !defined(OVR_EXPORTING_CAPI) - -//------------------------------------------------------------------------------------- -// @name Layers -// -///@{ - - -/// Specifies the maximum number of layers supported by ovr_SubmitFrame. -/// -/// /see ovr_SubmitFrame -/// -enum { - ovrMaxLayerCount = 16 -}; - -/// Describes layer types that can be passed to ovr_SubmitFrame. -/// Each layer type has an associated struct, such as ovrLayerEyeFov. -/// -/// \see ovrLayerHeader -/// -typedef enum ovrLayerType_ -{ - ovrLayerType_Disabled = 0, ///< Layer is disabled. - ovrLayerType_EyeFov = 1, ///< Described by ovrLayerEyeFov. - ovrLayerType_Quad = 3, ///< Described by ovrLayerQuad. Previously called ovrLayerType_QuadInWorld. - /// enum 4 used to be ovrLayerType_QuadHeadLocked. Instead, use ovrLayerType_Quad with ovrLayerFlag_HeadLocked. - ovrLayerType_EyeMatrix = 5, ///< Described by ovrLayerEyeMatrix. - ovrLayerType_EnumSize = 0x7fffffff ///< Force type int32_t. -} ovrLayerType; - - -/// Identifies flags used by ovrLayerHeader and which are passed to ovr_SubmitFrame. -/// -/// \see ovrLayerHeader -/// -typedef enum ovrLayerFlags_ -{ - /// ovrLayerFlag_HighQuality enables 4x anisotropic sampling during the composition of the layer. - /// The benefits are mostly visible at the periphery for high-frequency & high-contrast visuals. - /// For best results consider combining this flag with an ovrTextureSwapChain that has mipmaps and - /// instead of using arbitrary sized textures, prefer texture sizes that are powers-of-two. - /// Actual rendered viewport and doesn't necessarily have to fill the whole texture. - ovrLayerFlag_HighQuality = 0x01, - - /// ovrLayerFlag_TextureOriginAtBottomLeft: the opposite is TopLeft. - /// Generally this is false for D3D, true for OpenGL. - ovrLayerFlag_TextureOriginAtBottomLeft = 0x02, - - /// Mark this surface as "headlocked", which means it is specified - /// relative to the HMD and moves with it, rather than being specified - /// relative to sensor/torso space and remaining still while the head moves. - /// What used to be ovrLayerType_QuadHeadLocked is now ovrLayerType_Quad plus this flag. - /// However the flag can be applied to any layer type to achieve a similar effect. - ovrLayerFlag_HeadLocked = 0x04 - -} ovrLayerFlags; - - -/// Defines properties shared by all ovrLayer structs, such as ovrLayerEyeFov. -/// -/// ovrLayerHeader is used as a base member in these larger structs. -/// This struct cannot be used by itself except for the case that Type is ovrLayerType_Disabled. -/// -/// \see ovrLayerType, ovrLayerFlags -/// -typedef struct OVR_ALIGNAS(OVR_PTR_SIZE) ovrLayerHeader_ -{ - ovrLayerType Type; ///< Described by ovrLayerType. - unsigned Flags; ///< Described by ovrLayerFlags. -} ovrLayerHeader; - - -/// Describes a layer that specifies a monoscopic or stereoscopic view. -/// This is the kind of layer that's typically used as layer 0 to ovr_SubmitFrame, -/// as it is the kind of layer used to render a 3D stereoscopic view. -/// -/// Three options exist with respect to mono/stereo texture usage: -/// - ColorTexture[0] and ColorTexture[1] contain the left and right stereo renderings, respectively. -/// Viewport[0] and Viewport[1] refer to ColorTexture[0] and ColorTexture[1], respectively. -/// - ColorTexture[0] contains both the left and right renderings, ColorTexture[1] is NULL, -/// and Viewport[0] and Viewport[1] refer to sub-rects with ColorTexture[0]. -/// - ColorTexture[0] contains a single monoscopic rendering, and Viewport[0] and -/// Viewport[1] both refer to that rendering. -/// -/// \see ovrTextureSwapChain, ovr_SubmitFrame -/// -typedef struct OVR_ALIGNAS(OVR_PTR_SIZE) ovrLayerEyeFov_ -{ - /// Header.Type must be ovrLayerType_EyeFov. - ovrLayerHeader Header; - - /// ovrTextureSwapChains for the left and right eye respectively. - /// The second one of which can be NULL for cases described above. - ovrTextureSwapChain ColorTexture[ovrEye_Count]; - - /// Specifies the ColorTexture sub-rect UV coordinates. - /// Both Viewport[0] and Viewport[1] must be valid. - ovrRecti Viewport[ovrEye_Count]; - - /// The viewport field of view. - ovrFovPort Fov[ovrEye_Count]; - - /// Specifies the position and orientation of each eye view, with the position specified in meters. - /// RenderPose will typically be the value returned from ovr_CalcEyePoses, - /// but can be different in special cases if a different head pose is used for rendering. - ovrPosef RenderPose[ovrEye_Count]; - - /// Specifies the timestamp when the source ovrPosef (used in calculating RenderPose) - /// was sampled from the SDK. Typically retrieved by calling ovr_GetTimeInSeconds - /// around the instant the application calls ovr_GetTrackingState - /// The main purpose for this is to accurately track app tracking latency. - double SensorSampleTime; - -} ovrLayerEyeFov; - - - - -/// Describes a layer that specifies a monoscopic or stereoscopic view. -/// This uses a direct 3x4 matrix to map from view space to the UV coordinates. -/// It is essentially the same thing as ovrLayerEyeFov but using a much -/// lower level. This is mainly to provide compatibility with specific apps. -/// Unless the application really requires this flexibility, it is usually better -/// to use ovrLayerEyeFov. -/// -/// Three options exist with respect to mono/stereo texture usage: -/// - ColorTexture[0] and ColorTexture[1] contain the left and right stereo renderings, respectively. -/// Viewport[0] and Viewport[1] refer to ColorTexture[0] and ColorTexture[1], respectively. -/// - ColorTexture[0] contains both the left and right renderings, ColorTexture[1] is NULL, -/// and Viewport[0] and Viewport[1] refer to sub-rects with ColorTexture[0]. -/// - ColorTexture[0] contains a single monoscopic rendering, and Viewport[0] and -/// Viewport[1] both refer to that rendering. -/// -/// \see ovrTextureSwapChain, ovr_SubmitFrame -/// -typedef struct OVR_ALIGNAS(OVR_PTR_SIZE) ovrLayerEyeMatrix_ -{ - /// Header.Type must be ovrLayerType_EyeMatrix. - ovrLayerHeader Header; - - /// ovrTextureSwapChains for the left and right eye respectively. - /// The second one of which can be NULL for cases described above. - ovrTextureSwapChain ColorTexture[ovrEye_Count]; - - /// Specifies the ColorTexture sub-rect UV coordinates. - /// Both Viewport[0] and Viewport[1] must be valid. - ovrRecti Viewport[ovrEye_Count]; - - /// Specifies the position and orientation of each eye view, with the position specified in meters. - /// RenderPose will typically be the value returned from ovr_CalcEyePoses, - /// but can be different in special cases if a different head pose is used for rendering. - ovrPosef RenderPose[ovrEye_Count]; - - /// Specifies the mapping from a view-space vector - /// to a UV coordinate on the textures given above. - /// P = (x,y,z,1)*Matrix - /// TexU = P.x/P.z - /// TexV = P.y/P.z - ovrMatrix4f Matrix[ovrEye_Count]; - - /// Specifies the timestamp when the source ovrPosef (used in calculating RenderPose) - /// was sampled from the SDK. Typically retrieved by calling ovr_GetTimeInSeconds - /// around the instant the application calls ovr_GetTrackingState - /// The main purpose for this is to accurately track app tracking latency. - double SensorSampleTime; - -} ovrLayerEyeMatrix; - - - - - -/// Describes a layer of Quad type, which is a single quad in world or viewer space. -/// It is used for ovrLayerType_Quad. This type of layer represents a single -/// object placed in the world and not a stereo view of the world itself. -/// -/// A typical use of ovrLayerType_Quad is to draw a television screen in a room -/// that for some reason is more convenient to draw as a layer than as part of the main -/// view in layer 0. For example, it could implement a 3D popup GUI that is drawn at a -/// higher resolution than layer 0 to improve fidelity of the GUI. -/// -/// Quad layers are visible from both sides; they are not back-face culled. -/// -/// \see ovrTextureSwapChain, ovr_SubmitFrame -/// -typedef struct OVR_ALIGNAS(OVR_PTR_SIZE) ovrLayerQuad_ -{ - /// Header.Type must be ovrLayerType_Quad. - ovrLayerHeader Header; - - /// Contains a single image, never with any stereo view. - ovrTextureSwapChain ColorTexture; - - /// Specifies the ColorTexture sub-rect UV coordinates. - ovrRecti Viewport; - - /// Specifies the orientation and position of the center point of a Quad layer type. - /// The supplied direction is the vector perpendicular to the quad. - /// The position is in real-world meters (not the application's virtual world, - /// the physical world the user is in) and is relative to the "zero" position - /// set by ovr_RecenterTrackingOrigin unless the ovrLayerFlag_HeadLocked flag is used. - ovrPosef QuadPoseCenter; - - /// Width and height (respectively) of the quad in meters. - ovrVector2f QuadSize; - -} ovrLayerQuad; - - - - -/// Union that combines ovrLayer types in a way that allows them -/// to be used in a polymorphic way. -typedef union ovrLayer_Union_ -{ - ovrLayerHeader Header; - ovrLayerEyeFov EyeFov; - ovrLayerQuad Quad; -} ovrLayer_Union; - - -//@} - -#if !defined(OVR_EXPORTING_CAPI) - -/// @name SDK Distortion Rendering -/// -/// All of rendering functions including the configure and frame functions -/// are not thread safe. It is OK to use ConfigureRendering on one thread and handle -/// frames on another thread, but explicit synchronization must be done since -/// functions that depend on configured state are not reentrant. -/// -/// These functions support rendering of distortion by the SDK. -/// -//@{ - -/// TextureSwapChain creation is rendering API-specific. -/// ovr_CreateTextureSwapChainDX and ovr_CreateTextureSwapChainGL can be found in the -/// rendering API-specific headers, such as OVR_CAPI_D3D.h and OVR_CAPI_GL.h - -/// Gets the number of buffers in an ovrTextureSwapChain. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] chain Specifies the ovrTextureSwapChain for which the length should be retrieved. -/// \param[out] out_Length Returns the number of buffers in the specified chain. -/// -/// \return Returns an ovrResult for which OVR_SUCCESS(result) is false upon error. -/// -/// \see ovr_CreateTextureSwapChainDX, ovr_CreateTextureSwapChainGL -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainLength(ovrSession session, ovrTextureSwapChain chain, int* out_Length); - -/// Gets the current index in an ovrTextureSwapChain. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] chain Specifies the ovrTextureSwapChain for which the index should be retrieved. -/// \param[out] out_Index Returns the current (free) index in specified chain. -/// -/// \return Returns an ovrResult for which OVR_SUCCESS(result) is false upon error. -/// -/// \see ovr_CreateTextureSwapChainDX, ovr_CreateTextureSwapChainGL -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainCurrentIndex(ovrSession session, ovrTextureSwapChain chain, int* out_Index); - -/// Gets the description of the buffers in an ovrTextureSwapChain -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] chain Specifies the ovrTextureSwapChain for which the description should be retrieved. -/// \param[out] out_Desc Returns the description of the specified chain. -/// -/// \return Returns an ovrResult for which OVR_SUCCESS(result) is false upon error. -/// -/// \see ovr_CreateTextureSwapChainDX, ovr_CreateTextureSwapChainGL -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainDesc(ovrSession session, ovrTextureSwapChain chain, ovrTextureSwapChainDesc* out_Desc); - -/// Commits any pending changes to an ovrTextureSwapChain, and advances its current index -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] chain Specifies the ovrTextureSwapChain to commit. -/// -/// \note When Commit is called, the texture at the current index is considered ready for use by the -/// runtime, and further writes to it should be avoided. The swap chain's current index is advanced, -/// providing there's room in the chain. The next time the SDK dereferences this texture swap chain, -/// it will synchronize with the app's graphics context and pick up the submitted index, opening up -/// room in the swap chain for further commits. -/// -/// \return Returns an ovrResult for which OVR_SUCCESS(result) is false upon error. -/// Failures include but aren't limited to: -/// - ovrError_TextureSwapChainFull: ovr_CommitTextureSwapChain was called too many times on a texture swapchain without calling submit to use the chain. -/// -/// \see ovr_CreateTextureSwapChainDX, ovr_CreateTextureSwapChainGL -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_CommitTextureSwapChain(ovrSession session, ovrTextureSwapChain chain); - -/// Destroys an ovrTextureSwapChain and frees all the resources associated with it. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] chain Specifies the ovrTextureSwapChain to destroy. If it is NULL then this function has no effect. -/// -/// \see ovr_CreateTextureSwapChainDX, ovr_CreateTextureSwapChainGL -/// -OVR_PUBLIC_FUNCTION(void) ovr_DestroyTextureSwapChain(ovrSession session, ovrTextureSwapChain chain); - - -/// MirrorTexture creation is rendering API-specific. -/// ovr_CreateMirrorTextureDX and ovr_CreateMirrorTextureGL can be found in the -/// rendering API-specific headers, such as OVR_CAPI_D3D.h and OVR_CAPI_GL.h - -/// Destroys a mirror texture previously created by one of the mirror texture creation functions. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] mirrorTexture Specifies the ovrTexture to destroy. If it is NULL then this function has no effect. -/// -/// \see ovr_CreateMirrorTextureDX, ovr_CreateMirrorTextureGL -/// -OVR_PUBLIC_FUNCTION(void) ovr_DestroyMirrorTexture(ovrSession session, ovrMirrorTexture mirrorTexture); - - -/// Calculates the recommended viewport size for rendering a given eye within the HMD -/// with a given FOV cone. -/// -/// Higher FOV will generally require larger textures to maintain quality. -/// Apps packing multiple eye views together on the same texture should ensure there are -/// at least 8 pixels of padding between them to prevent texture filtering and chromatic -/// aberration causing images to leak between the two eye views. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] eye Specifies which eye (left or right) to calculate for. -/// \param[in] fov Specifies the ovrFovPort to use. -/// \param[in] pixelsPerDisplayPixel Specifies the ratio of the number of render target pixels -/// to display pixels at the center of distortion. 1.0 is the default value. Lower -/// values can improve performance, higher values give improved quality. -/// -/// Example code -/// \code{.cpp} -/// ovrHmdDesc hmdDesc = ovr_GetHmdDesc(session); -/// ovrSizei eyeSizeLeft = ovr_GetFovTextureSize(session, ovrEye_Left, hmdDesc.DefaultEyeFov[ovrEye_Left], 1.0f); -/// ovrSizei eyeSizeRight = ovr_GetFovTextureSize(session, ovrEye_Right, hmdDesc.DefaultEyeFov[ovrEye_Right], 1.0f); -/// \endcode -/// -/// \return Returns the texture width and height size. -/// -OVR_PUBLIC_FUNCTION(ovrSizei) ovr_GetFovTextureSize(ovrSession session, ovrEyeType eye, ovrFovPort fov, - float pixelsPerDisplayPixel); - -/// Computes the distortion viewport, view adjust, and other rendering parameters for -/// the specified eye. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] eyeType Specifies which eye (left or right) for which to perform calculations. -/// \param[in] fov Specifies the ovrFovPort to use. -/// -/// \return Returns the computed ovrEyeRenderDesc for the given eyeType and field of view. -/// -/// \see ovrEyeRenderDesc -/// -OVR_PUBLIC_FUNCTION(ovrEyeRenderDesc) ovr_GetRenderDesc(ovrSession session, - ovrEyeType eyeType, ovrFovPort fov); - -/// Submits layers for distortion and display. -/// -/// ovr_SubmitFrame triggers distortion and processing which might happen asynchronously. -/// The function will return when there is room in the submission queue and surfaces -/// are available. Distortion might or might not have completed. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// -/// \param[in] frameIndex Specifies the targeted application frame index, or 0 to refer to one frame -/// after the last time ovr_SubmitFrame was called. -/// -/// \param[in] viewScaleDesc Provides additional information needed only if layerPtrList contains -/// an ovrLayerType_Quad. If NULL, a default version is used based on the current configuration and a 1.0 world scale. -/// -/// \param[in] layerPtrList Specifies a list of ovrLayer pointers, which can include NULL entries to -/// indicate that any previously shown layer at that index is to not be displayed. -/// Each layer header must be a part of a layer structure such as ovrLayerEyeFov or ovrLayerQuad, -/// with Header.Type identifying its type. A NULL layerPtrList entry in the array indicates the -// absence of the given layer. -/// -/// \param[in] layerCount Indicates the number of valid elements in layerPtrList. The maximum -/// supported layerCount is not currently specified, but may be specified in a future version. -/// -/// - Layers are drawn in the order they are specified in the array, regardless of the layer type. -/// -/// - Layers are not remembered between successive calls to ovr_SubmitFrame. A layer must be -/// specified in every call to ovr_SubmitFrame or it won't be displayed. -/// -/// - If a layerPtrList entry that was specified in a previous call to ovr_SubmitFrame is -/// passed as NULL or is of type ovrLayerType_Disabled, that layer is no longer displayed. -/// -/// - A layerPtrList entry can be of any layer type and multiple entries of the same layer type -/// are allowed. No layerPtrList entry may be duplicated (i.e. the same pointer as an earlier entry). -/// -/// Example code -/// \code{.cpp} -/// ovrLayerEyeFov layer0; -/// ovrLayerQuad layer1; -/// ... -/// ovrLayerHeader* layers[2] = { &layer0.Header, &layer1.Header }; -/// ovrResult result = ovr_SubmitFrame(session, frameIndex, nullptr, layers, 2); -/// \endcode -/// -/// \return Returns an ovrResult for which OVR_SUCCESS(result) is false upon error and true -/// upon success. Return values include but aren't limited to: -/// - ovrSuccess: rendering completed successfully. -/// - ovrSuccess_NotVisible: rendering completed successfully but was not displayed on the HMD, -/// usually because another application currently has ownership of the HMD. Applications receiving -/// this result should stop rendering new content, but continue to call ovr_SubmitFrame periodically -/// until it returns a value other than ovrSuccess_NotVisible. -/// - ovrError_DisplayLost: The session has become invalid (such as due to a device removal) -/// and the shared resources need to be released (ovr_DestroyTextureSwapChain), the session needs to -/// destroyed (ovr_Destroy) and recreated (ovr_Create), and new resources need to be created -/// (ovr_CreateTextureSwapChainXXX). The application's existing private graphics resources do not -/// need to be recreated unless the new ovr_Create call returns a different GraphicsLuid. -/// - ovrError_TextureSwapChainInvalid: The ovrTextureSwapChain is in an incomplete or inconsistent state. -/// Ensure ovr_CommitTextureSwapChain was called at least once first. -/// -/// \see ovr_GetPredictedDisplayTime, ovrViewScaleDesc, ovrLayerHeader -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_SubmitFrame(ovrSession session, long long frameIndex, - const ovrViewScaleDesc* viewScaleDesc, - ovrLayerHeader const * const * layerPtrList, unsigned int layerCount); -///@} - -#endif // !defined(OVR_EXPORTING_CAPI) - -//------------------------------------------------------------------------------------- -/// @name Frame Timing -/// -//@{ - - -#if !defined(OVR_EXPORTING_CAPI) - -/// Gets the time of the specified frame midpoint. -/// -/// Predicts the time at which the given frame will be displayed. The predicted time -/// is the middle of the time period during which the corresponding eye images will -/// be displayed. -/// -/// The application should increment frameIndex for each successively targeted frame, -/// and pass that index to any relevant OVR functions that need to apply to the frame -/// identified by that index. -/// -/// This function is thread-safe and allows for multiple application threads to target -/// their processing to the same displayed frame. -/// -/// In the even that prediction fails due to various reasons (e.g. the display being off -/// or app has yet to present any frames), the return value will be current CPU time. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] frameIndex Identifies the frame the caller wishes to target. -/// A value of zero returns the next frame index. -/// \return Returns the absolute frame midpoint time for the given frameIndex. -/// \see ovr_GetTimeInSeconds -/// -OVR_PUBLIC_FUNCTION(double) ovr_GetPredictedDisplayTime(ovrSession session, long long frameIndex); - - -/// Returns global, absolute high-resolution time in seconds. -/// -/// The time frame of reference for this function is not specified and should not be -/// depended upon. -/// -/// \return Returns seconds as a floating point value. -/// \see ovrPoseStatef, ovrFrameTiming -/// -OVR_PUBLIC_FUNCTION(double) ovr_GetTimeInSeconds(); - -#endif // !defined(OVR_EXPORTING_CAPI) - -/// Performance HUD enables the HMD user to see information critical to -/// the real-time operation of the VR application such as latency timing, -/// and CPU & GPU performance metrics -/// -/// App can toggle performance HUD modes as such: -/// \code{.cpp} -/// ovrPerfHudMode PerfHudMode = ovrPerfHud_LatencyTiming; -/// ovr_SetInt(session, OVR_PERF_HUD_MODE, (int)PerfHudMode); -/// \endcode -/// -typedef enum ovrPerfHudMode_ -{ - ovrPerfHud_Off = 0, ///< Turns off the performance HUD - ovrPerfHud_PerfSummary = 1, ///< Shows performance summary and headroom - ovrPerfHud_LatencyTiming = 2, ///< Shows latency related timing info - ovrPerfHud_AppRenderTiming = 3, ///< Shows render timing info for application - ovrPerfHud_CompRenderTiming = 4, ///< Shows render timing info for OVR compositor - ovrPerfHud_VersionInfo = 5, ///< Shows SDK & HMD version Info - ovrPerfHud_Count = 6, ///< \internal Count of enumerated elements. - ovrPerfHud_EnumSize = 0x7fffffff ///< \internal Force type int32_t. -} ovrPerfHudMode; - -/// Layer HUD enables the HMD user to see information about a layer -/// -/// App can toggle layer HUD modes as such: -/// \code{.cpp} -/// ovrLayerHudMode LayerHudMode = ovrLayerHud_Info; -/// ovr_SetInt(session, OVR_LAYER_HUD_MODE, (int)LayerHudMode); -/// \endcode -/// -typedef enum ovrLayerHudMode_ -{ - ovrLayerHud_Off = 0, ///< Turns off the layer HUD - ovrLayerHud_Info = 1, ///< Shows info about a specific layer - ovrLayerHud_EnumSize = 0x7fffffff -} ovrLayerHudMode; - -///@} - -/// Debug HUD is provided to help developers gauge and debug the fidelity of their app's -/// stereo rendering characteristics. Using the provided quad and crosshair guides, -/// the developer can verify various aspects such as VR tracking units (e.g. meters), -/// stereo camera-parallax properties (e.g. making sure objects at infinity are rendered -/// with the proper separation), measuring VR geometry sizes and distances and more. -/// -/// App can toggle the debug HUD modes as such: -/// \code{.cpp} -/// ovrDebugHudStereoMode DebugHudMode = ovrDebugHudStereo_QuadWithCrosshair; -/// ovr_SetInt(session, OVR_DEBUG_HUD_STEREO_MODE, (int)DebugHudMode); -/// \endcode -/// -/// The app can modify the visual properties of the stereo guide (i.e. quad, crosshair) -/// using the ovr_SetFloatArray function. For a list of tweakable properties, -/// see the OVR_DEBUG_HUD_STEREO_GUIDE_* keys in the OVR_CAPI_Keys.h header file. -typedef enum ovrDebugHudStereoMode_ -{ - ovrDebugHudStereo_Off = 0, ///< Turns off the Stereo Debug HUD - ovrDebugHudStereo_Quad = 1, ///< Renders Quad in world for Stereo Debugging - ovrDebugHudStereo_QuadWithCrosshair = 2, ///< Renders Quad+crosshair in world for Stereo Debugging - ovrDebugHudStereo_CrosshairAtInfinity = 3, ///< Renders screen-space crosshair at infinity for Stereo Debugging - ovrDebugHudStereo_Count, ///< \internal Count of enumerated elements - - ovrDebugHudStereo_EnumSize = 0x7fffffff ///< \internal Force type int32_t -} ovrDebugHudStereoMode; - - -#if !defined(OVR_EXPORTING_CAPI) - -// ----------------------------------------------------------------------------------- -/// @name Property Access -/// -/// These functions read and write OVR properties. Supported properties -/// are defined in OVR_CAPI_Keys.h -/// -//@{ - -/// Reads a boolean property. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] propertyName The name of the property, which needs to be valid for only the call. -/// \param[in] defaultVal specifes the value to return if the property couldn't be read. -/// \return Returns the property interpreted as a boolean value. Returns defaultVal if -/// the property doesn't exist. -OVR_PUBLIC_FUNCTION(ovrBool) ovr_GetBool(ovrSession session, const char* propertyName, ovrBool defaultVal); - -/// Writes or creates a boolean property. -/// If the property wasn't previously a boolean property, it is changed to a boolean property. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] propertyName The name of the property, which needs to be valid only for the call. -/// \param[in] value The value to write. -/// \return Returns true if successful, otherwise false. A false result should only occur if the property -/// name is empty or if the property is read-only. -OVR_PUBLIC_FUNCTION(ovrBool) ovr_SetBool(ovrSession session, const char* propertyName, ovrBool value); - - -/// Reads an integer property. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] propertyName The name of the property, which needs to be valid only for the call. -/// \param[in] defaultVal Specifes the value to return if the property couldn't be read. -/// \return Returns the property interpreted as an integer value. Returns defaultVal if -/// the property doesn't exist. -OVR_PUBLIC_FUNCTION(int) ovr_GetInt(ovrSession session, const char* propertyName, int defaultVal); - -/// Writes or creates an integer property. -/// -/// If the property wasn't previously a boolean property, it is changed to an integer property. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] propertyName The name of the property, which needs to be valid only for the call. -/// \param[in] value The value to write. -/// \return Returns true if successful, otherwise false. A false result should only occur if the property -/// name is empty or if the property is read-only. -OVR_PUBLIC_FUNCTION(ovrBool) ovr_SetInt(ovrSession session, const char* propertyName, int value); - - -/// Reads a float property. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] propertyName The name of the property, which needs to be valid only for the call. -/// \param[in] defaultVal specifes the value to return if the property couldn't be read. -/// \return Returns the property interpreted as an float value. Returns defaultVal if -/// the property doesn't exist. -OVR_PUBLIC_FUNCTION(float) ovr_GetFloat(ovrSession session, const char* propertyName, float defaultVal); - -/// Writes or creates a float property. -/// If the property wasn't previously a float property, it's changed to a float property. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] propertyName The name of the property, which needs to be valid only for the call. -/// \param[in] value The value to write. -/// \return Returns true if successful, otherwise false. A false result should only occur if the property -/// name is empty or if the property is read-only. -OVR_PUBLIC_FUNCTION(ovrBool) ovr_SetFloat(ovrSession session, const char* propertyName, float value); - - -/// Reads a float array property. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] propertyName The name of the property, which needs to be valid only for the call. -/// \param[in] values An array of float to write to. -/// \param[in] valuesCapacity Specifies the maximum number of elements to write to the values array. -/// \return Returns the number of elements read, or 0 if property doesn't exist or is empty. -OVR_PUBLIC_FUNCTION(unsigned int) ovr_GetFloatArray(ovrSession session, const char* propertyName, - float values[], unsigned int valuesCapacity); - -/// Writes or creates a float array property. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] propertyName The name of the property, which needs to be valid only for the call. -/// \param[in] values An array of float to write from. -/// \param[in] valuesSize Specifies the number of elements to write. -/// \return Returns true if successful, otherwise false. A false result should only occur if the property -/// name is empty or if the property is read-only. -OVR_PUBLIC_FUNCTION(ovrBool) ovr_SetFloatArray(ovrSession session, const char* propertyName, - const float values[], unsigned int valuesSize); - - -/// Reads a string property. -/// Strings are UTF8-encoded and null-terminated. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] propertyName The name of the property, which needs to be valid only for the call. -/// \param[in] defaultVal Specifes the value to return if the property couldn't be read. -/// \return Returns the string property if it exists. Otherwise returns defaultVal, which can be specified as NULL. -/// The return memory is guaranteed to be valid until next call to ovr_GetString or -/// until the session is destroyed, whichever occurs first. -OVR_PUBLIC_FUNCTION(const char*) ovr_GetString(ovrSession session, const char* propertyName, - const char* defaultVal); - -/// Writes or creates a string property. -/// Strings are UTF8-encoded and null-terminated. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] propertyName The name of the property, which needs to be valid only for the call. -/// \param[in] value The string property, which only needs to be valid for the duration of the call. -/// \return Returns true if successful, otherwise false. A false result should only occur if the property -/// name is empty or if the property is read-only. -OVR_PUBLIC_FUNCTION(ovrBool) ovr_SetString(ovrSession session, const char* propertyName, - const char* value); - -///@} - -#endif // !defined(OVR_EXPORTING_CAPI) - -#ifdef __cplusplus -} // extern "C" -#endif - - -#if defined(_MSC_VER) - #pragma warning(pop) -#endif - -/// @cond DoxygenIgnore -//----------------------------------------------------------------------------- -// ***** Compiler packing validation -// -// These checks ensure that the compiler settings being used will be compatible -// with with pre-built dynamic library provided with the runtime. - -OVR_STATIC_ASSERT(sizeof(ovrBool) == 1, "ovrBool size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrVector2i) == 4 * 2, "ovrVector2i size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrSizei) == 4 * 2, "ovrSizei size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrRecti) == sizeof(ovrVector2i) + sizeof(ovrSizei), "ovrRecti size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrQuatf) == 4 * 4, "ovrQuatf size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrVector2f) == 4 * 2, "ovrVector2f size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrVector3f) == 4 * 3, "ovrVector3f size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrMatrix4f) == 4 * 16, "ovrMatrix4f size mismatch"); - -OVR_STATIC_ASSERT(sizeof(ovrPosef) == (7 * 4), "ovrPosef size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrPoseStatef) == (22 * 4), "ovrPoseStatef size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrFovPort) == (4 * 4), "ovrFovPort size mismatch"); - -OVR_STATIC_ASSERT(sizeof(ovrHmdCaps) == 4, "ovrHmdCaps size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrTrackingCaps) == 4, "ovrTrackingCaps size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrEyeType) == 4, "ovrEyeType size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrHmdType) == 4, "ovrHmdType size mismatch"); - -OVR_STATIC_ASSERT(sizeof(ovrTrackerDesc) == 4 + 4 + 4 + 4, "ovrTrackerDesc size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrTrackerPose) == 4 + 4 + sizeof(ovrPosef) + sizeof(ovrPosef), "ovrTrackerPose size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrTrackingState) == sizeof(ovrPoseStatef) + 4 + 4 + (sizeof(ovrPoseStatef) * 2) + (sizeof(unsigned int) * 2) + sizeof(ovrPosef) + 4, "ovrTrackingState size mismatch"); - - -//OVR_STATIC_ASSERT(sizeof(ovrTextureHeader) == sizeof(ovrRenderAPIType) + sizeof(ovrSizei), -// "ovrTextureHeader size mismatch"); -//OVR_STATIC_ASSERT(sizeof(ovrTexture) == sizeof(ovrTextureHeader) OVR_ON64(+4) + sizeof(uintptr_t) * 8, -// "ovrTexture size mismatch"); -// -OVR_STATIC_ASSERT(sizeof(ovrStatusBits) == 4, "ovrStatusBits size mismatch"); - -OVR_STATIC_ASSERT(sizeof(ovrSessionStatus) == 6, "ovrSessionStatus size mismatch"); - -OVR_STATIC_ASSERT(sizeof(ovrEyeRenderDesc) == sizeof(ovrEyeType) + sizeof(ovrFovPort) + sizeof(ovrRecti) + - sizeof(ovrVector2f) + sizeof(ovrVector3f), - "ovrEyeRenderDesc size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrTimewarpProjectionDesc) == 4 * 3, "ovrTimewarpProjectionDesc size mismatch"); - -OVR_STATIC_ASSERT(sizeof(ovrInitFlags) == 4, "ovrInitFlags size mismatch"); -OVR_STATIC_ASSERT(sizeof(ovrLogLevel) == 4, "ovrLogLevel size mismatch"); - -OVR_STATIC_ASSERT(sizeof(ovrInitParams) == 4 + 4 + sizeof(ovrLogCallback) + sizeof(uintptr_t) + 4 + 4, - "ovrInitParams size mismatch"); - -OVR_STATIC_ASSERT(sizeof(ovrHmdDesc) == - + sizeof(ovrHmdType) // Type - OVR_ON64(+ 4) // pad0 - + 64 // ProductName - + 64 // Manufacturer - + 2 // VendorId - + 2 // ProductId - + 24 // SerialNumber - + 2 // FirmwareMajor - + 2 // FirmwareMinor - + 4 * 4 // AvailableHmdCaps - DefaultTrackingCaps - + sizeof(ovrFovPort) * 2 // DefaultEyeFov - + sizeof(ovrFovPort) * 2 // MaxEyeFov - + sizeof(ovrSizei) // Resolution - + 4 // DisplayRefreshRate - OVR_ON64(+ 4) // pad1 - , "ovrHmdDesc size mismatch"); - - -// ----------------------------------------------------------------------------------- -// ***** Backward compatibility #includes -// -// This is at the bottom of this file because the following is dependent on the -// declarations above. - -#if !defined(OVR_CAPI_NO_UTILS) - #include "Extras/OVR_CAPI_Util.h" -#endif - -/// @endcond - -#endif // OVR_CAPI_h diff --git a/src/external/OculusSDK/LibOVR/Include/OVR_CAPI_Audio.h b/src/external/OculusSDK/LibOVR/Include/OVR_CAPI_Audio.h deleted file mode 100644 index dc61e19e6..000000000 --- a/src/external/OculusSDK/LibOVR/Include/OVR_CAPI_Audio.h +++ /dev/null @@ -1,84 +0,0 @@ -/********************************************************************************//** -\file OVR_CAPI_Audio.h -\brief CAPI audio functions. -\copyright Copyright 2015 Oculus VR, LLC. All Rights reserved. -************************************************************************************/ - - -#ifndef OVR_CAPI_Audio_h -#define OVR_CAPI_Audio_h - -#ifdef _WIN32 -// Prevents from defining min() and max() macro symbols. -#ifndef NOMINMAX -#define NOMINMAX -#endif -#include -#include "OVR_CAPI.h" -#define OVR_AUDIO_MAX_DEVICE_STR_SIZE 128 - -#if !defined(OVR_EXPORTING_CAPI) - -/// Gets the ID of the preferred VR audio output device. -/// -/// \param[out] deviceOutId The ID of the user's preferred VR audio device to use, which will be valid upon a successful return value, else it will be WAVE_MAPPER. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetAudioDeviceOutWaveId(UINT* deviceOutId); - -/// Gets the ID of the preferred VR audio input device. -/// -/// \param[out] deviceInId The ID of the user's preferred VR audio device to use, which will be valid upon a successful return value, else it will be WAVE_MAPPER. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetAudioDeviceInWaveId(UINT* deviceInId); - - -/// Gets the GUID of the preferred VR audio device as a string. -/// -/// \param[out] deviceOutStrBuffer A buffer where the GUID string for the device will copied to. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetAudioDeviceOutGuidStr(WCHAR deviceOutStrBuffer[OVR_AUDIO_MAX_DEVICE_STR_SIZE]); - - -/// Gets the GUID of the preferred VR audio device. -/// -/// \param[out] deviceOutGuid The GUID of the user's preferred VR audio device to use, which will be valid upon a successful return value, else it will be NULL. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetAudioDeviceOutGuid(GUID* deviceOutGuid); - - -/// Gets the GUID of the preferred VR microphone device as a string. -/// -/// \param[out] deviceInStrBuffer A buffer where the GUID string for the device will copied to. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetAudioDeviceInGuidStr(WCHAR deviceInStrBuffer[OVR_AUDIO_MAX_DEVICE_STR_SIZE]); - - -/// Gets the GUID of the preferred VR microphone device. -/// -/// \param[out] deviceInGuid The GUID of the user's preferred VR audio device to use, which will be valid upon a successful return value, else it will be NULL. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetAudioDeviceInGuid(GUID* deviceInGuid); - -#endif // !defined(OVR_EXPORTING_CAPI) - -#endif //OVR_OS_MS - -#endif // OVR_CAPI_Audio_h diff --git a/src/external/OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h b/src/external/OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h deleted file mode 100644 index 374dab84f..000000000 --- a/src/external/OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h +++ /dev/null @@ -1,158 +0,0 @@ -/********************************************************************************//** -\file OVR_CAPI_D3D.h -\brief D3D specific structures used by the CAPI interface. -\copyright Copyright 2014-2016 Oculus VR, LLC All Rights reserved. -************************************************************************************/ - -#ifndef OVR_CAPI_D3D_h -#define OVR_CAPI_D3D_h - -#include "OVR_CAPI.h" -#include "OVR_Version.h" - - -#if defined (_WIN32) -#include - -#if !defined(OVR_EXPORTING_CAPI) - -//----------------------------------------------------------------------------------- -// ***** Direct3D Specific - -/// Create Texture Swap Chain suitable for use with Direct3D 11 and 12. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] d3dPtr Specifies the application's D3D11Device to create resources with or the D3D12CommandQueue -/// which must be the same one the application renders to the eye textures with. -/// \param[in] desc Specifies requested texture properties. See notes for more info about texture format. -/// \param[in] bindFlags Specifies what ovrTextureBindFlags the application requires for this texture chain. -/// \param[out] out_TextureSwapChain Returns the created ovrTextureSwapChain, which will be valid upon a successful return value, else it will be NULL. -/// This texture chain must be eventually destroyed via ovr_DestroyTextureSwapChain before destroying the session with ovr_Destroy. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -/// \note The texture format provided in \a desc should be thought of as the format the distortion-compositor will use for the -/// ShaderResourceView when reading the contents of the texture. To that end, it is highly recommended that the application -/// requests texture swapchain formats that are in sRGB-space (e.g. OVR_FORMAT_R8G8B8A8_UNORM_SRGB) as the compositor -/// does sRGB-correct rendering. As such, the compositor relies on the GPU's hardware sampler to do the sRGB-to-linear -/// conversion. If the application still prefers to render to a linear format (e.g. OVR_FORMAT_R8G8B8A8_UNORM) while handling the -/// linear-to-gamma conversion via HLSL code, then the application must still request the corresponding sRGB format and also use -/// the \a ovrTextureMisc_DX_Typeless flag in the ovrTextureSwapChainDesc's Flag field. This will allow the application to create -/// a RenderTargetView that is the desired linear format while the compositor continues to treat it as sRGB. Failure to do so -/// will cause the compositor to apply unexpected gamma conversions leading to gamma-curve artifacts. The \a ovrTextureMisc_DX_Typeless -/// flag for depth buffer formats (e.g. OVR_FORMAT_D32_FLOAT) is ignored as they are always converted to be typeless. -/// -/// \see ovr_GetTextureSwapChainLength -/// \see ovr_GetTextureSwapChainCurrentIndex -/// \see ovr_GetTextureSwapChainDesc -/// \see ovr_GetTextureSwapChainBufferDX -/// \see ovr_DestroyTextureSwapChain -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_CreateTextureSwapChainDX(ovrSession session, - IUnknown* d3dPtr, - const ovrTextureSwapChainDesc* desc, - ovrTextureSwapChain* out_TextureSwapChain); - - -/// Get a specific buffer within the chain as any compatible COM interface (similar to QueryInterface) -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] chain Specifies an ovrTextureSwapChain previously returned by ovr_CreateTextureSwapChainDX -/// \param[in] index Specifies the index within the chain to retrieve. Must be between 0 and length (see ovr_GetTextureSwapChainLength), -/// or may pass -1 to get the buffer at the CurrentIndex location. (Saving a call to GetTextureSwapChainCurrentIndex) -/// \param[in] iid Specifies the interface ID of the interface pointer to query the buffer for. -/// \param[out] out_Buffer Returns the COM interface pointer retrieved. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -/// Example code -/// \code{.cpp} -/// ovr_GetTextureSwapChainBufferDX(session, chain, 0, IID_ID3D11Texture2D, &d3d11Texture); -/// ovr_GetTextureSwapChainBufferDX(session, chain, 1, IID_PPV_ARGS(&dxgiResource)); -/// \endcode -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainBufferDX(ovrSession session, - ovrTextureSwapChain chain, - int index, - IID iid, - void** out_Buffer); - - -/// Create Mirror Texture which is auto-refreshed to mirror Rift contents produced by this application. -/// -/// A second call to ovr_CreateMirrorTextureDX for a given ovrSession before destroying the first one -/// is not supported and will result in an error return. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] d3dPtr Specifies the application's D3D11Device to create resources with or the D3D12CommandQueue -/// which must be the same one the application renders to the textures with. -/// \param[in] desc Specifies requested texture properties. See notes for more info about texture format. -/// \param[out] out_MirrorTexture Returns the created ovrMirrorTexture, which will be valid upon a successful return value, else it will be NULL. -/// This texture must be eventually destroyed via ovr_DestroyMirrorTexture before destroying the session with ovr_Destroy. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -/// \note The texture format provided in \a desc should be thought of as the format the compositor will use for the RenderTargetView when -/// writing into mirror texture. To that end, it is highly recommended that the application requests a mirror texture format that is -/// in sRGB-space (e.g. OVR_FORMAT_R8G8B8A8_UNORM_SRGB) as the compositor does sRGB-correct rendering. If however the application wants -/// to still read the mirror texture as a linear format (e.g. OVR_FORMAT_R8G8B8A8_UNORM) and handle the sRGB-to-linear conversion in -/// HLSL code, then it is recommended the application still requests an sRGB format and also use the \a ovrTextureMisc_DX_Typeless flag in the -/// ovrMirrorTextureDesc's Flags field. This will allow the application to bind a ShaderResourceView that is a linear format while the -/// compositor continues to treat is as sRGB. Failure to do so will cause the compositor to apply unexpected gamma conversions leading to -/// gamma-curve artifacts. -/// -/// -/// Example code -/// \code{.cpp} -/// ovrMirrorTexture mirrorTexture = nullptr; -/// ovrMirrorTextureDesc mirrorDesc = {}; -/// mirrorDesc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; -/// mirrorDesc.Width = mirrorWindowWidth; -/// mirrorDesc.Height = mirrorWindowHeight; -/// ovrResult result = ovr_CreateMirrorTextureDX(session, d3d11Device, &mirrorDesc, &mirrorTexture); -/// [...] -/// // Destroy the texture when done with it. -/// ovr_DestroyMirrorTexture(session, mirrorTexture); -/// mirrorTexture = nullptr; -/// \endcode -/// -/// \see ovr_GetMirrorTextureBufferDX -/// \see ovr_DestroyMirrorTexture -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_CreateMirrorTextureDX(ovrSession session, - IUnknown* d3dPtr, - const ovrMirrorTextureDesc* desc, - ovrMirrorTexture* out_MirrorTexture); - -/// Get a the underlying buffer as any compatible COM interface (similar to QueryInterface) -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] mirrorTexture Specifies an ovrMirrorTexture previously returned by ovr_CreateMirrorTextureDX -/// \param[in] iid Specifies the interface ID of the interface pointer to query the buffer for. -/// \param[out] out_Buffer Returns the COM interface pointer retrieved. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -/// Example code -/// \code{.cpp} -/// ID3D11Texture2D* d3d11Texture = nullptr; -/// ovr_GetMirrorTextureBufferDX(session, mirrorTexture, IID_PPV_ARGS(&d3d11Texture)); -/// d3d11DeviceContext->CopyResource(d3d11TextureBackBuffer, d3d11Texture); -/// d3d11Texture->Release(); -/// dxgiSwapChain->Present(0, 0); -/// \endcode -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetMirrorTextureBufferDX(ovrSession session, - ovrMirrorTexture mirrorTexture, - IID iid, - void** out_Buffer); - -#endif // !defined(OVR_EXPORTING_CAPI) - -#endif // _WIN32 - -#endif // OVR_CAPI_D3D_h diff --git a/src/external/OculusSDK/LibOVR/Include/OVR_CAPI_GL.h b/src/external/OculusSDK/LibOVR/Include/OVR_CAPI_GL.h deleted file mode 100644 index 1c073f467..000000000 --- a/src/external/OculusSDK/LibOVR/Include/OVR_CAPI_GL.h +++ /dev/null @@ -1,102 +0,0 @@ -/********************************************************************************//** -\file OVR_CAPI_GL.h -\brief OpenGL-specific structures used by the CAPI interface. -\copyright Copyright 2015 Oculus VR, LLC. All Rights reserved. -************************************************************************************/ - -#ifndef OVR_CAPI_GL_h -#define OVR_CAPI_GL_h - -#include "OVR_CAPI.h" - -#if !defined(OVR_EXPORTING_CAPI) - -/// Creates a TextureSwapChain suitable for use with OpenGL. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] desc Specifies the requested texture properties. See notes for more info about texture format. -/// \param[out] out_TextureSwapChain Returns the created ovrTextureSwapChain, which will be valid upon -/// a successful return value, else it will be NULL. This texture swap chain must be eventually -/// destroyed via ovr_DestroyTextureSwapChain before destroying the session with ovr_Destroy. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -/// \note The \a format provided should be thought of as the format the distortion compositor will use when reading -/// the contents of the texture. To that end, it is highly recommended that the application requests texture swap chain -/// formats that are in sRGB-space (e.g. OVR_FORMAT_R8G8B8A8_UNORM_SRGB) as the distortion compositor does sRGB-correct -/// rendering. Furthermore, the app should then make sure "glEnable(GL_FRAMEBUFFER_SRGB);" is called before rendering -/// into these textures. Even though it is not recommended, if the application would like to treat the texture as a linear -/// format and do linear-to-gamma conversion in GLSL, then the application can avoid calling "glEnable(GL_FRAMEBUFFER_SRGB);", -/// but should still pass in an sRGB variant for the \a format. Failure to do so will cause the distortion compositor -/// to apply incorrect gamma conversions leading to gamma-curve artifacts. -/// -/// \see ovr_GetTextureSwapChainLength -/// \see ovr_GetTextureSwapChainCurrentIndex -/// \see ovr_GetTextureSwapChainDesc -/// \see ovr_GetTextureSwapChainBufferGL -/// \see ovr_DestroyTextureSwapChain -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_CreateTextureSwapChainGL(ovrSession session, - const ovrTextureSwapChainDesc* desc, - ovrTextureSwapChain* out_TextureSwapChain); - -/// Get a specific buffer within the chain as a GL texture name -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] chain Specifies an ovrTextureSwapChain previously returned by ovr_CreateTextureSwapChainGL -/// \param[in] index Specifies the index within the chain to retrieve. Must be between 0 and length (see ovr_GetTextureSwapChainLength) -/// or may pass -1 to get the buffer at the CurrentIndex location. (Saving a call to GetTextureSwapChainCurrentIndex) -/// \param[out] out_TexId Returns the GL texture object name associated with the specific index requested -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainBufferGL(ovrSession session, - ovrTextureSwapChain chain, - int index, - unsigned int* out_TexId); - - -/// Creates a Mirror Texture which is auto-refreshed to mirror Rift contents produced by this application. -/// -/// A second call to ovr_CreateMirrorTextureGL for a given ovrSession before destroying the first one -/// is not supported and will result in an error return. -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] desc Specifies the requested mirror texture description. -/// \param[out] out_MirrorTexture Specifies the created ovrMirrorTexture, which will be valid upon a successful return value, else it will be NULL. -/// This texture must be eventually destroyed via ovr_DestroyMirrorTexture before destroying the session with ovr_Destroy. -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -/// \note The \a format provided should be thought of as the format the distortion compositor will use when writing into the mirror -/// texture. It is highly recommended that mirror textures are requested as sRGB formats because the distortion compositor -/// does sRGB-correct rendering. If the application requests a non-sRGB format (e.g. R8G8B8A8_UNORM) as the mirror texture, -/// then the application might have to apply a manual linear-to-gamma conversion when reading from the mirror texture. -/// Failure to do so can result in incorrect gamma conversions leading to gamma-curve artifacts and color banding. -/// -/// \see ovr_GetMirrorTextureBufferGL -/// \see ovr_DestroyMirrorTexture -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_CreateMirrorTextureGL(ovrSession session, - const ovrMirrorTextureDesc* desc, - ovrMirrorTexture* out_MirrorTexture); - -/// Get a the underlying buffer as a GL texture name -/// -/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. -/// \param[in] mirrorTexture Specifies an ovrMirrorTexture previously returned by ovr_CreateMirrorTextureGL -/// \param[out] out_TexId Specifies the GL texture object name associated with the mirror texture -/// -/// \return Returns an ovrResult indicating success or failure. In the case of failure, use -/// ovr_GetLastErrorInfo to get more information. -/// -OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetMirrorTextureBufferGL(ovrSession session, - ovrMirrorTexture mirrorTexture, - unsigned int* out_TexId); - -#endif // !defined(OVR_EXPORTING_CAPI) - -#endif // OVR_CAPI_GL_h diff --git a/src/external/OculusSDK/LibOVR/Include/OVR_CAPI_Keys.h b/src/external/OculusSDK/LibOVR/Include/OVR_CAPI_Keys.h deleted file mode 100644 index e3e9d689c..000000000 --- a/src/external/OculusSDK/LibOVR/Include/OVR_CAPI_Keys.h +++ /dev/null @@ -1,53 +0,0 @@ -/********************************************************************************//** -\file OVR_CAPI.h -\brief Keys for CAPI proprty function calls -\copyright Copyright 2015 Oculus VR, LLC All Rights reserved. -************************************************************************************/ - -#ifndef OVR_CAPI_Keys_h -#define OVR_CAPI_Keys_h - -#include "OVR_Version.h" - - - -#define OVR_KEY_USER "User" // string - -#define OVR_KEY_NAME "Name" // string - -#define OVR_KEY_GENDER "Gender" // string "Male", "Female", or "Unknown" -#define OVR_DEFAULT_GENDER "Unknown" - -#define OVR_KEY_PLAYER_HEIGHT "PlayerHeight" // float meters -#define OVR_DEFAULT_PLAYER_HEIGHT 1.778f - -#define OVR_KEY_EYE_HEIGHT "EyeHeight" // float meters -#define OVR_DEFAULT_EYE_HEIGHT 1.675f - -#define OVR_KEY_NECK_TO_EYE_DISTANCE "NeckEyeDistance" // float[2] meters -#define OVR_DEFAULT_NECK_TO_EYE_HORIZONTAL 0.0805f -#define OVR_DEFAULT_NECK_TO_EYE_VERTICAL 0.075f - - -#define OVR_KEY_EYE_TO_NOSE_DISTANCE "EyeToNoseDist" // float[2] meters - - - - - -#define OVR_PERF_HUD_MODE "PerfHudMode" // int, allowed values are defined in enum ovrPerfHudMode - -#define OVR_LAYER_HUD_MODE "LayerHudMode" // int, allowed values are defined in enum ovrLayerHudMode -#define OVR_LAYER_HUD_CURRENT_LAYER "LayerHudCurrentLayer" // int, The layer to show -#define OVR_LAYER_HUD_SHOW_ALL_LAYERS "LayerHudShowAll" // bool, Hide other layers when the hud is enabled - -#define OVR_DEBUG_HUD_STEREO_MODE "DebugHudStereoMode" // int, allowed values are defined in enum ovrDebugHudStereoMode -#define OVR_DEBUG_HUD_STEREO_GUIDE_INFO_ENABLE "DebugHudStereoGuideInfoEnable" // bool -#define OVR_DEBUG_HUD_STEREO_GUIDE_SIZE "DebugHudStereoGuideSize2f" // float[2] -#define OVR_DEBUG_HUD_STEREO_GUIDE_POSITION "DebugHudStereoGuidePosition3f" // float[3] -#define OVR_DEBUG_HUD_STEREO_GUIDE_YAWPITCHROLL "DebugHudStereoGuideYawPitchRoll3f" // float[3] -#define OVR_DEBUG_HUD_STEREO_GUIDE_COLOR "DebugHudStereoGuideColor4f" // float[4] - - - -#endif // OVR_CAPI_Keys_h diff --git a/src/external/OculusSDK/LibOVR/Include/OVR_ErrorCode.h b/src/external/OculusSDK/LibOVR/Include/OVR_ErrorCode.h deleted file mode 100644 index a8b810ead..000000000 --- a/src/external/OculusSDK/LibOVR/Include/OVR_ErrorCode.h +++ /dev/null @@ -1,156 +0,0 @@ -/********************************************************************************//** -\file OVR_ErrorCode.h -\brief This header provides LibOVR error code declarations. -\copyright Copyright 2015-2016 Oculus VR, LLC All Rights reserved. -*************************************************************************************/ - -#ifndef OVR_ErrorCode_h -#define OVR_ErrorCode_h - - -#include "OVR_Version.h" -#include - - - - -#ifndef OVR_RESULT_DEFINED -#define OVR_RESULT_DEFINED ///< Allows ovrResult to be independently defined. -/// API call results are represented at the highest level by a single ovrResult. -typedef int32_t ovrResult; -#endif - - -/// \brief Indicates if an ovrResult indicates success. -/// -/// Some functions return additional successful values other than ovrSucces and -/// require usage of this macro to indicate successs. -/// -#if !defined(OVR_SUCCESS) - #define OVR_SUCCESS(result) (result >= 0) -#endif - - -/// \brief Indicates if an ovrResult indicates an unqualified success. -/// -/// This is useful for indicating that the code intentionally wants to -/// check for result == ovrSuccess as opposed to OVR_SUCCESS(), which -/// checks for result >= ovrSuccess. -/// -#if !defined(OVR_UNQUALIFIED_SUCCESS) - #define OVR_UNQUALIFIED_SUCCESS(result) (result == ovrSuccess) -#endif - - -/// \brief Indicates if an ovrResult indicates failure. -/// -#if !defined(OVR_FAILURE) - #define OVR_FAILURE(result) (!OVR_SUCCESS(result)) -#endif - - -// Success is a value greater or equal to 0, while all error types are negative values. -#ifndef OVR_SUCCESS_DEFINED -#define OVR_SUCCESS_DEFINED ///< Allows ovrResult to be independently defined. -typedef enum ovrSuccessType_ -{ - /// This is a general success result. Use OVR_SUCCESS to test for success. - ovrSuccess = 0, -} ovrSuccessType; -#endif - -// Public success types -// Success is a value greater or equal to 0, while all error types are negative values. -typedef enum ovrSuccessTypes_ -{ - /// Returned from a call to SubmitFrame. The call succeeded, but what the app - /// rendered will not be visible on the HMD. Ideally the app should continue - /// calling SubmitFrame, but not do any rendering. When the result becomes - /// ovrSuccess, rendering should continue as usual. - ovrSuccess_NotVisible = 1000, - -} ovrSuccessTypes; - -// Public error types -typedef enum ovrErrorType_ -{ - /* General errors */ - ovrError_MemoryAllocationFailure = -1000, ///< Failure to allocate memory. - ovrError_InvalidSession = -1002, ///< Invalid ovrSession parameter provided. - ovrError_Timeout = -1003, ///< The operation timed out. - ovrError_NotInitialized = -1004, ///< The system or component has not been initialized. - ovrError_InvalidParameter = -1005, ///< Invalid parameter provided. See error info or log for details. - ovrError_ServiceError = -1006, ///< Generic service error. See error info or log for details. - ovrError_NoHmd = -1007, ///< The given HMD doesn't exist. - ovrError_Unsupported = -1009, ///< Function call is not supported on this hardware/software - ovrError_DeviceUnavailable = -1010, ///< Specified device type isn't available. - ovrError_InvalidHeadsetOrientation = -1011, ///< The headset was in an invalid orientation for the requested operation (e.g. vertically oriented during ovr_RecenterPose). - ovrError_ClientSkippedDestroy = -1012, ///< The client failed to call ovr_Destroy on an active session before calling ovr_Shutdown. Or the client crashed. - ovrError_ClientSkippedShutdown = -1013, ///< The client failed to call ovr_Shutdown or the client crashed. - ovrError_ServiceDeadlockDetected = -1014, ///< The service watchdog discovered a deadlock. - ovrError_InvalidOperation = -1015, ///< Function call is invalid for object's current state - - /* Audio error range, reserved for Audio errors. */ - ovrError_AudioDeviceNotFound = -2001, ///< Failure to find the specified audio device. - ovrError_AudioComError = -2002, ///< Generic COM error. - - /* Initialization errors. */ - ovrError_Initialize = -3000, ///< Generic initialization error. - ovrError_LibLoad = -3001, ///< Couldn't load LibOVRRT. - ovrError_LibVersion = -3002, ///< LibOVRRT version incompatibility. - ovrError_ServiceConnection = -3003, ///< Couldn't connect to the OVR Service. - ovrError_ServiceVersion = -3004, ///< OVR Service version incompatibility. - ovrError_IncompatibleOS = -3005, ///< The operating system version is incompatible. - ovrError_DisplayInit = -3006, ///< Unable to initialize the HMD display. - ovrError_ServerStart = -3007, ///< Unable to start the server. Is it already running? - ovrError_Reinitialization = -3008, ///< Attempting to re-initialize with a different version. - ovrError_MismatchedAdapters = -3009, ///< Chosen rendering adapters between client and service do not match - ovrError_LeakingResources = -3010, ///< Calling application has leaked resources - ovrError_ClientVersion = -3011, ///< Client version too old to connect to service - ovrError_OutOfDateOS = -3012, ///< The operating system is out of date. - ovrError_OutOfDateGfxDriver = -3013, ///< The graphics driver is out of date. - ovrError_IncompatibleGPU = -3014, ///< The graphics hardware is not supported - ovrError_NoValidVRDisplaySystem = -3015, ///< No valid VR display system found. - ovrError_Obsolete = -3016, ///< Feature or API is obsolete and no longer supported. - ovrError_DisabledOrDefaultAdapter = -3017, ///< No supported VR display system found, but disabled or driverless adapter found. - ovrError_HybridGraphicsNotSupported = -3018, ///< The system is using hybrid graphics (Optimus, etc...), which is not support. - ovrError_DisplayManagerInit = -3019, ///< Initialization of the DisplayManager failed. - ovrError_TrackerDriverInit = -3020, ///< Failed to get the interface for an attached tracker - ovrError_LibSignCheck = -3021, ///< LibOVRRT signature check failure. - ovrError_LibPath = -3022, ///< LibOVRRT path failure. - ovrError_LibSymbols = -3023, ///< LibOVRRT symbol resolution failure. - - /* Rendering errors */ - ovrError_DisplayLost = -6000, ///< In the event of a system-wide graphics reset or cable unplug this is returned to the app. - ovrError_TextureSwapChainFull = -6001, ///< ovr_CommitTextureSwapChain was called too many times on a texture swapchain without calling submit to use the chain. - ovrError_TextureSwapChainInvalid = -6002, ///< The ovrTextureSwapChain is in an incomplete or inconsistent state. Ensure ovr_CommitTextureSwapChain was called at least once first. - ovrError_GraphicsDeviceReset = -6003, ///< Graphics device has been reset (TDR, etc...) - ovrError_DisplayRemoved = -6004, ///< HMD removed from the display adapter - ovrError_ContentProtectionNotAvailable = -6005,///;f=-%Gnew9+a7!0kRwF9EJc_1_mESc81oS2f|@u z4;Yvfxf%Hw7}_`)7%Vu!!a?)d7#IW?7#J3S`2t`z69WSqSQbGu2nd4%S0GG)fr-I^ z5v&QM52OK1gGCq^Ht{f&a4|5H?BQWJ0W!ltfWg6-3B-cnTl@?c#2FYE3WOL0rZF%$ zY~^MsfXJYbJlnV#Bp4VNHf-f)K#9WzoD3YGh(=M3;OLd4R+KO>Fj%#6LL3D0D=1MQ zlrShTFeK;|r6iUlGBCW-V}|(MfSG}z3mgV;l@1IH4tfw}40lYJ85l0`FfjNrFfi=m zfvW*A92gi5=#}IYgV=^3LO_6l0pw*4UJwtC!Rpe}GE<5f7!p8!P!IrzDFYXVItRU? z;-X{*21wW$2rw|1FflOjVN;iylb_504ogs&GR$CLU~uAx+X-SgFfcfQ=;4erUNAE- zWc)bKFYsS9W&x)_#)Ao*0xxtr*cc)YpE+~pOlbF;z`$PDKgV7FfPx|5g>*6lLx#ab zPJtKf9c&EEM_9U_#)4IXRG&Gsu;4tuz+#EpJOamAK}><$JOW74Q2B;CF!_o**yIi1 z`ZciXFM;dN!Kyz4E}wu^UIlKx3|8}3z~vWUmFI!WvtX6yfZNZ2)qWkgyb4zNCvfxc zU^RaNT)qRVyaL>O39RM^z~w!#%E!RvL$Jzkf!n_ZtNk``c@wPiB5?D0u$tcj*I$EG z{~x&g7p(FYaPtkYntuSUe+O3mbKvq*u*z4!!1bqK)&Bu5{{pN04Y>RTH2Ki(H(CEP+&DP}QWk;>jD;!}c?67) z2K2gqNm&dM*(q^>U*N?PZ3c!c_6!wnZUL~saaNrR`~slz_c*J@1%7bNc#IXKl;K5% z3IoGVgA4ou&_d|Na*$@`3>}bWusEv=T(bjQGf0Nvg*8aC#|3_YW3GP~U*v*xa%C8R zbbjcR#yg07Rz_7Cd zqLcZ>Pb~(9ERGBhkWP@`an>HV&JMUvkPO3%UXacS5S=V9_Cs`rfOLWckFzd;>s$cW z36f!W5e(9~0-}@kMJq&S0!SxF@Hp!pxXvALogf*87m^^I2Ov7xUU+LUFdS#S0#|(j zsyd4!BL`#}SRpHjWO#93iGd*_U?L|dV*daC|Nq68Mo5+5`z56lT<1oj)(+tMBA;KOm)#c93S~j2j@$ zU~yKKi?GDSa1oZcKr#$3q(PcFE<)3XFGwd>#vPDOkl=Av8MsafxK5A^!;6QC3=BIJ zAUc^|2!nKTXS@LE1PLBzHG%6ifa?UwFuYg}(rE$F$^7D`1~`3u0qFz@9%uD|>-2!@ z1j#VG$OY*Pfaqj-F(0CnftOogCrI!(YYJRv0$e9ZhT(-VNM{B_C+mw;h)y1mPLSYn z)*86Z3b;;?48x0`3JeT88z4H_UTAB8(#I6I>IqQQSsWP>Ak)AKSwSSji~R}=3>gJT z>ElX0ap|K>5KsD;agkr(#S(RJ`cMH`2@*KYx(4o~6;LM~V+F}Dys!XyV8ca3`H>FN z%$%VE(hL@7Jp$K!0InG%!|>v_JOjhd6A<4szR(5f!QLXT1a0c>}H!B*XCH zAV}u}h)$*#pVb%`vbZyBKsrH!$63F?b$)>B1j#VGXb0*10ny3)Vkbx^M}`MTCrI!( zE6*iZYUa2EOU)n|h8MmdodTD@shQzo1C36f!Wu@Izl0YoR$i_0qD^l<~E6C`+?bqieQ2Dna;48x0bkj@3Z z`~m3%2_9!X1J`*1t`j7~@In`)^8!RC%Zqr3&JQ4+Ai?9TPvANqz;%LT7+!pqVPM$# z0-}@kg(^g+h#0p3SnxROAGppRaGfCK3@>(qbTV89r%ARKua!aRL*z0n1q)n;q~I)$ z3=WWKV1=w8lHoP0i^UXrJ7Lsc=@`9i2>3T0h0?$K>d*g;Pw!RIRm{t1QJ}V za1YcU0Wl@+q4h^Vf{S;+^>4tcUj(k72djP#xI6<^`89C!mtZyD<}S>ACU>#9Zwg$0 z4_5sv;QAL})qe&qe*~+11zf%WtNa|e{1mM6DsXujtnw0Yc>%2Q2jKEMu*!dc%fG-X z{|7Gr1*^OVT;2hz{1JHg?!g+qTj2WFVAan9muJB$KLIY^fmQwnT>b)9`4G6g4_0{t zxV#2dc?P)r53K%s0r&p{tnwG&@+Yv$-+{|t!785sw?6`_`<}q%?_ibx0yqB+R`Xln z`fIT2&wKld2`~ojTXZ3+=_JC^!$uPXg25Am}l%|X?=7Mx`Wvl_|1PLBz zO@Zr7fa?UwFuX7X>CAxWWO|Vd(#f510;Cfpc$~H7GOSFlfa?UwFueFK25JF9bTYrt z1nK0+*aOnp0P+Rv6u8a_aGf9-h8KH5I%hz1vb=aN3vTH?0O(lyS3o*Jg2!2pz;zyg>jcR#yzm6+JOR5mz>x6)slHJuB~;%)(#JD5Jn6&YD!;&sFEZftQ4z{5uoEP3oYm(l zEVw1&DAQ^@iCj}W8b}oSEWP9;j z0+hbCz*TR6s?OrbFaVhbR>%q>8D8`YGB9K~Af>M*1)v1M(v5pOW#^7-`~okQ?PO)h zC;%m`q5^o*0=Iu5>E~H8p7b-}F2BHw5D9Sl`BBa-uoEP3oOQ`vSo&FT7nXiNG7K+X z2rw}0TyYnXe#AkVnKNF1G=s%i_rNvpfNKWHFuYg|(tO}9H2vHaXJE+U%6J3P2@*Wc zdIhfY0$e9ZhT%maNaqcRPNo-&K{~lJBq~4yL?E}YzJcp}0oMsq&hWw!QLXO)5Llz{65 z$uPV)4AQ9p(aHMas~EUs;{oXe2_9!Pf$KDY>jcR#yyyh!w1DVjd$C&#lzx2Rsy(2p zLFor%8dxDKh-7%-&(FY+(SVeGQt}9;pNtHUAv5mr3%vN)$;yzi0hEYz^WcdnBc%Z} zxCD~F2$DYllIKOpL(Ts-OP0Z8)~QE>XY0x}IGaGdoE+)E#zUOL7Kl3{q!!ND8YCv={y>JHUl3{ppofk9$0@2C*f)k{Z zBjX21r^9`If#a+paGe2gogf*87jr>6BOp3iUYr*JrxKP%(4YlaXAWFv23#jdIm3%& zkj?^#PSzJwAvzy`>;wrOXKjJ&Y=G+o$uPXo1nKO6=wy2lEdokkbKt6HKvjd`}_hgCbqLOWPAXnpR?JB^d$n4UjULX1j#c@ z<`j6b79kH!U-@{_m%#&mffrMR!RhM>$TX0^aaNZHuq5K}0G32RG7K*?co-OVdOSd+ zuW*oN<_wl5ZUKlmYYbd-1Y9#n2g8fk+zbpm6COa*mn=vpR|W@2CrI!(YYALu0bD0Y zhT+9Vkj@H-PNo-+g~0XS8<2xRg2!2V;5s|tIzciFFUmnWCqQ&EzgP*<$&v8`q!T1~ zoOKCY=K{D+kPO2MTaeBb5S=V9@*z4EK&}M|9%tPH*SQ0(6C}g%f*GXq07NJ23sZfNx-lb)V>0xpWIA%`U>rS)BNNIzXor^Vr~Kc@JsyR zxB0^l@C)*KJmeRE2@8rwfO(=9K#BxeEgtdaoCvKD|T-UcuwIsq!V;32;N z`s~J;GZ_vb2fWFEIUvJgDW|~B1+u&XFDABtDru1PS-A9>odR;a0xy;cvN2>dfTT7d zq`>v}&V)QZffsEc`3)fXNoev}j4y7gvod5H07;f+fP#wyx&4?S@s(3xXTpAdffs@x z`!`JC6nNo_FeIZwjZ0vs#sN_I-wZMbB(DpW-}wL}YV5+sknsv6Dh?LS_yS^cL)ia7 z?EmQ?&t@@ZF=SL6;uqMdafn~w#g(^A3>h3#IR#!k08593XEDC`na9o$xgVsc`$PBn z7Y~XU8L}9{y3ZeH1&J~EaS6OA4`gG=5CZ920n!&AcX+4bA%20EIsR-6I~71CFLGvM z$dCc4XalJ@oS_C{SAp3(6%O+Yyl4QaFaU|BfJMOp2_-_i--LCS@`QK)YW-Hq7H@nY zF7|Ni$x_J|bC0kw9A^+?U|@K$^DrAj{0xJ!GSNdXMn<( z$M`^Wd|d3|@GOSF7dPgCg<5ZyO1%g}7*lkZjUgItj`hFdPcJOMvPvLJLLjmrb{x_I z3W)nSTECS9G{0jh66|KQW-1kEKFHF1h^6@*OY!^We}76$yBMvQO4XbH{Vmbza%8k} zVl0(v{`ap$w#$*p%899zxB1`y5`iv9W-BM=5)SDD%_kV+Vh@A;3Mo(9esSQOpKU(z zzuT9`_|o@M0qYZGtS@#SVq@T6?<>&w6SQQhNUz(KV}*PP>x;#Q*ciG!{#c(VVtq0F z5F3N`!R8+<#jG#753w;c|4=UDc+m(_;mZ-2#R!|Y)l+2!FBv)Uf<=jy0b8>clwaR) zfC4=%y!&H!wLt6t3d;sNh7#rO<1;&5fAqTk2RVR}bf4#U_ZDcb77-|7>XvRjS)v@+?aR@9J^00zzyJR?AK}=* z7!R{NJh1!pi?gf@4DoRr7@?M)In(@;t=#axO79$F27w(4EZhQzcj$o005CZNOdbG} z609Iu4=~vPB6Exx1d5Cq1S*Uf1nP_#1X_$41iFkF1SS|W2tboFXnjuB|BQWz_-uZ| z5r#46-uX@4Y!;23L3=CPU85>x+1$zA?UMyr`VCX)ElnCN5i&Loo-XQ!J7LLVt zy>$}MB-ZUN()>f9h|eL5G2p-X3tn(E@f>%Dc(z_d;J7Q^ zYPlKsryl5VcL3=r5e)0~cX=@{2doPco^=8Y@%&Q`fD+sx7T6pYxW4!p4$8(wOx=9l zbpkv17#J9=f9zVo$}Pa}bUfh2%AcUr%+h**zjZPL14HwFKK`aI1_lQH_7(;P21_@M zl6p|C?)8)Ctpt^GoZa?2SRrQYfSHjBGov)P`9EusU%5|rD2HX3L8(i(n~Ak6PpM6F zodt8LS!10IXlZ7tZbO{|Ly3H^pUaC`Ss*`@NH^AbfTe_*EtyMsEyH|DIpQ}k#>E~I zV2C$50Hz`94M8OsD1C)>|9sK=_y7Nv1Er7v04FG;?sm``4FL?k;TwoKrUH^1~O+Zr($+s{vwEGRXGV1==db=dN+fStV zrvR*=w7yZ~3gL>qX6nAy?Iyr{$og=ZAxKQ@e<@ElTlYEb8^K{OzB4i~#6`y*;$Q%Y z9)pTLgo}oE*YY&~|5sjXStn8~`M*p6l(B@E85mmsmn49rR=b<+wPx%8(oY~>XPrP1 zUpHGks3bZDF}M3zd|dP~1_qEF-N#!0mvDy%2fV272RBS$dicB9jK(r7chxK-voezv1l#Y?TXI@j2r=D8XSXK1I=sPf%h$j9Pkvg+Nw= zF(iF=`*J`FV`yDu@2z6&VsdIZQ2JB* zdOTR(3?UCT6+wh{ziFuDU@e|47=S#K$S!Ai{0PA zo{NUM2c#YpA3Tt-jgJEb>@gNQ1_%pOe?ikvw=Yk4x3hrtLH?$f3=9n2wF24)t$*;l z|FHgC>fXy@Y3U}w-*gj{qTK{QrWQ$div?yebe}uM!o={Rg^7Uy8dE$B-PaHj*~k*j z|Nrr~&j;n|I+0=(XhJ#(vdx#L^?yk=tR(|BU%OijoTgrZcpyKZq$wUqIsvCCkd3YX zOZdWjS-1m&UTE}!g9N4xHCci5AtfswhKvAEvMM%XgR(L~EO1h@H$zEk;79?bH^%>^ zJpW5MUIcsv2Q?@}!Ezu1B>z9d0FfS>-|z%uX%lp&egHLk-hi5RKbp_;H~;@v#?t-c zwR(4)$d1*kR;~K}y!-UUmlt1IpDGjH@$dit|GhSn+6S#~l(Fsy^W0&LR!~E686yKj z_le`Ke?WEkYXgv>zHd5RIUG7uKLi|e{loO4g%MN~z1R_I%OG&LyYx+WEeBM2x9^MY zSe{Pb7p=ETq(NZ@D?VCpmv9FM1irZ04GvDUOceYD?0KYQ22J`f?V#N6`l6GqvrYtL zYG)j%?EY|!MGmzo0&a4DAL*dFz2v z7Eobe3+}Qg_j)K>pD5D~d~xp&6GQij<|8bvCrcE29hI9OJm~cJ15z3A;?N%^P~W8W zK*%)3N*viK6V)s_K;gI?%totLV$|zw6*IFzL-EKS$b%G4xy%mi7Ep1GT!e1Po46gP}K~g1r-EJ(*ZafWk3?=f%7#KmV3qO`_SB?^;E`|;l%l{h~JL`Br zB?b#ag9T&BeQ>V^YJ8WE<^K*2Bo&}+0LQTQ*vIhhUm)X^y4jIiEWHdMSCq=Z3W2*z5W~y!%%G$V8b2dr%YR{|it{w&g&n60%vx zT>mq?c<~QZNtZltsQnLa!XTU1eGt@YggX~h9%2c<<^vp{aDoOQGz1$bf!tnV1Cl`w zLA7HH9Nl3o-M$>m*Fg?c?`G_D`qAyk(&_XEDVQ28I7)87+zN`~Zl@oejNMLuIvrV% zlp&l3W`WX=uR!a`66tPN9{%kYx(^+EBoN+R%fWr<;>*vgg-@n^ULD`<$^q-LL&Cq? zm4iS0Kv?%jP*XLG1+>&SsMqz!aW)l4E`fkF{%cGxIBP)3nxp#|sD49lzww73=yhWW zfT&O7zsAt*%F%p)CE&$n@Pa3hE|3q-oH^6&$+DxOnOmUsB)=;tXd(Hr*Np|DH{b;e z*dCT|t{jXd+*v$fFG|B;7K4mHjSbj(TmtnwlJQHy4ni_s3}!r9M-J*mNO>KAD6cVk zZ@rEz#~H!l^uhyTIFd=wR0)n6Fu@;wp!;AN|20RJ4z+a7tMxjpe`V|kK+d3?R3nIgW88->rqbc2(dnks;RdP+j=BC}YduhE-|PC|xa%FTM|xdf9Cv*&qZu^fc;J}p8%9tP zaDDKCwF(>+$6fCvIC2T}y57lX*}x+Z@S>%WjUgcH#Ycp$RDFj;WG9(Vl%>R)ubu|Q-^A+p`)jzi+$ zg^K}7e;SlyVCfd(e`3=sfA|4V&@;fYQ%eQN{~X8JK;e%yoI|_cfU-_l_s8RGJ&s%g zCEQsoVJ{4W!TP`z8ocWTiw{tF*=)y9s*=Uf>-*=0zCIfRh|9Zh#X)`nhs7YWlMN)3 ztIx*J&4%ooGiN^hcVvP24P;>RiT@w?4?41d`Zx^yE}$$95{BdBj38GbbU?xbU;gU$ z1l4we-HiVOI9d;saC8fFpU7hTFN8gpbvv@O9w=qov7(t<;BdExMC-{C=I(=sn-9o9 z>;#pMo-CmLzjYx`F;BN6M>orc)&r%AubGSwG*pT(l!(8OFkoY_F5oHV?sfplf}7=_ z!ADR!hPYP)k$#)sIN->i-L5>HZYw)Uj) z?atT_-KC&`*>p>}(&Q|c7ZblQF?9cEKEl#j%h4J8r}ck{O}8%(IJisM!2$T1tJ_hc z^*||eucJ&rukW50aliln&td>o54%BwW&z#jJ7Yh9>rYVdb+Uas%viz!QYiZ8|NkA} z?1z~8hm15rq5+;BLc8DeI&uX3FXegh&k!6AX|1jt{8JBrT1Sxj93n3OZB+jOs}hJk z!~^m^s6Gw`4TyK&4DYTLu>M{m&A*+k`*gQ(!2eQ?ZYP2N7g`RKvNs=Nvi@HB6x8a9 zhUtVj0n|Sxq`w5eeu(=xUNnMT#sR9OAZCL|kon!QJjRzmNlyEo^TpTU#{aELdHCIL zwcZA`;W#>7c>?&ivjx0xG-P8)>tu89cI9b4!U1yfZ@81eaSb&OX5V5+aZ9#+$;QOl z*ZhX33*0{FaOLQAlmP97O5?xg`XwNXvDcL&px56wPHU|FfzJHpJh_oKq_5VKu z1HZ?qwC;nDacz*pp%~oW5C8>+@g-27Rr?>bj0cCwuh#!1Va*36g1ch{I(>ie%QJMb z@rNJiaOLTB{SXMYkOySmP@-PVax+zCYYLUH@1g zFWnIhihGc2Ajt;m8gToe`Hcv)QU{I2I7)yD-Cox>AbZ|`QcH4A~g?xB2ok z9}(c+7W$?62P41h#ctm}#%H?@y|D3MV*r`W!2n8+&2MB7<^^}hia;VC=3CGxGK2fY z_izvUH6N7d^nH`YFYm&@z`q^j;lN(sCm{Qu1cE|4;6)U~c7fh#MzHNi1e$*^cDsH6 zyWx#PNAUmVV@#c{AFPj;?(6pb1L|uSpN)R8#2w-;0dQ6U`x#PREJKtR*a|Oblr+}~ zFhI(z67K(HJTH8~%ez?qmx;V^f-oU<45-2>;m&didvVeSoP{yVDtM)XTtCJ5g6k)a zuon|y`oLu^*r8AYw12nTk>$T3xcdrf=z#LI!2ci)P$w2VYXVgXp+M!kD@S)IPp3eq z2Me?ifk=T#kUV2==nv2!-TzXKp#K3p-K9L;9xR|1xhIRY7fUIBH-j}>Ddz@8P)&D; zgTV+gWC_WFApMTu`lCCH#oCFbl&_l&G=9hq9ts32MzItU-k%WR-TX!ao;u!yfua|( zt+2b4>M4FvLMF**kRFBN&w1ThIMZhhYvpM7ED3QlLBq8;L2wZHK8UGp0i zxPLz&`}bpK>6PwKf#x?7-Di$Fg6B7&^9jwBBA_u!#@9^U2SJ_;0!`%y7`V904zufJVelG#^m`D`x8Egtzhe!w+=&UH~_ndR;FB9CN+G_`)Y2oGu~lCTRF} zyS@R36lhrNf9Z`EiynhR3N$}`#( zA#loq5D@{PU1h9`80`El68_f1$hQiA%}S$d&6RN%Pl z3-J7x>l0AoI_7$Xp}~rwl*RbuYrgJNy_JkzjE>-;#`A$ey}nmooPPQLf3NEmXdrjozfX=hk)f%0?M|56^P z`7fSmvN3d*a&%v4KEi^UKtV&KRt%*g#wP=Vy3f5ZehD5Tg%q>hr^0(H8TsWM7~rmt z2dm;mRt1WY9UDLmK@baqLH2jM!mJ0?L(M-JOEt1Yp_YRh@!(0Vj6KcV0-zzJT`!O< z4hVZ;^&g23D(|!YXDmXF4_N+2iV9bb<_F@Pjy&C-0?H@&TRhpfQ1i|}$M;^W{0oZNGZ16XfQ@~<94W~|f*cZj zQ2!o7_!mq4;b;IZ%>IDVTek;GryonV;Qt^NtVtS@p1&c?YknhuWjM6^BPgWcGqjLN zNcem(BNJ$vR|0f)$#FMG_s$J6`{)Mg3PR?7q20z89-zXLA&Vo6@kJ~vY(jtY4;F^* zAFcmORrtdX9Cv+T;K(JA@nIv6K(FfyP*waU;JE9Xl1^@c7t@N^7!XSWJ}R>@bh@*E zn$dLzNTCLqScQg{!asOS!@i)*+Ion^AV12 zH=a&+o^CgRPIrOsB>MINJ_iE`b*}R6s>8tPHjYd%@%a65zm=U_tdiqkc&tUjc=|nFfbrhk;p~(&(7LC4OR@t zUBTVyzzYUL28QN09H90@Z?6JqKm0yE z28LY+K#M6{|1d$tybKu_c3olR7J%}t3>g@DLk~cCZ;Tlj!lCR1ybKJzy#*kHwt|?g zASS3K5^x;M1P6Y!GAOJ;Lyj!nu2-6Wa1`-7WHAN&FFo)=;10N6F+OnI^$I%!s7M62 zkJ36_55R_CeBU6|L^odCyA9USeH=A$fUE53HsCr4)JOrx1cV?Wz4R7>rcgfffE)l0 zNm#mBpagb0l3kz{BdP@u^VcBaJ1`i_0+64*@iNfDzni)BK#9x$(htG^i&+9*+_7R{ z==SCSP5EePbANxCC2{Z~RFXWjI1^hRD@#fb5|HnZiSq#lbWR5$7My(i*J44Dx z=i4qnjFd_?59J7i6V zJ9te;ufM~K8Q^*myo{&Y-J;vHXCbFR>wyxkfdAKyyF=ENKx)8lchFcML>y90Kt}=H zCE)78YgodML)yUqMGF>iqBUrq#v;cs#Q$>t;pKZEHvfO@Ed9{>t%N=7zi7Y$@bXYl zUhVZW*}&Mw2p+O3VGsB(>I1UOO`_Wt>I3}@0d)q3fd8UP7IF&MGBGkRlyYbB{V$XF zFFIi%r$DzG)Y;dMyMdkE?Pk;b<3Gsb*P-i{AfumL0spVVD@M@F2}2mPweVjw0c0mq zoTDXSP+jU0ZnF#N-X3Q2+LyV{*mFpAi&VM*9R;*2OQ7*Q(Ma+ z2>|4j)&t;>1O;GkFK7i9td%qQ=Kuc>18{Qv)-@px+hSPuik@zxMHD+0~}Spf18 z%xsW4kcl9%4A3!Sy}cjz{r}&+7i3Y( z0sfZ7ObiSSd%;%mw@zaM?FIw2)v_4=i_QQg(hr?mCI0>Yf6Vm{YwNdCj@}B^m-dXH z5R?JCKnG+60|P@qZ)?IoP;`I<0>GXL|GyRF9B{yc^v3<(Sz)%_n&P-vD%+z|IM6DNWMgYu^j)j~8 zS^uH(`#~}Iayn?i9|Oc;0cgq_z=^Mv9jx+oLHAUU3tKOhvi4Rny-w`y1vS=Ryenm3 z2ns*u`iJMm;qU+d_x4u&`~UyN3eb|XR*-^Yu77v~prVIvgJvQ5TR|D@SgQai9`=JW z8dQ4ob&!6LrWYql!BHs&Em1&e9TKa@T>psw-wKNDEXEg2zgR%?!QCfbM0{rfjSWb2 z_k!ZA^<;@iH#i|{AIxG52z;^f3b;l%=K4pn^;?NZcP}UnW-)4?3k-YF3z36Hy#Dq7 z|FPDs)~1lUwfPMP#JT^sg0m<%H@}d$1@>8sE~w`;)c`~u>h3l9|NlSt!4j?JUyP+Z zttU%4daIaU^8f$;zxfw4e=BIRw)G@`>(77x|Mylgz5Mp?|NpL5&_V|*aQ5MExeuAO zRe)vEJ^%jy4|w4djGWyL{QLjk`2WkD|Nj4nWHE!X7pOKo z5b$4g0Vs?8X#W4d)cXHr+vlK^uL{)zPVXRX0slo^AUR~?K9JL1o(3(W`@vfJvA2Nn zlI|Kp(ED?{@U9_S?EaW`-y4!v;+sZVVfIB~9jhqbbJ zpPc6hEd(%G_~tynfcC+IKbW#u0s>#`x&RKAM_Zvjn{OuFt^G z?GJ6_@}sr?{+qvGzwrP6aZnEc+{kqYB{hcQ?&#qY4{`>?enR2T2AR06nG9~gLxLX3 zKS=Ev;>-iBOyVfw%VGjAzm7N$31K%8kei$9L^z;hu0`VAY{nF~-9w_~) zeg5K4$S9dPLNTa)_rH{*`5)k#0y~Qb=uJBVzmaE9DDt@9CzQ6(84Y7;-m-zLwEU$8Kug%gN*zw-5|EROgBTPiwbCoLuKpjn%sJp)^A1W-R?Zy z9Nq2~+6OQGm}z~hKCFht`a^kuwvP%=x4X{8pUmeveN=cfIlBF2x?NOwm=7>Aesfh} z;%@;h)#`Rv=;mlW$=?DRi|BTj=@#gAH|S>Q<#FtGSI|Cn@nCJ3uJKX$rAh4+cgisj=6>In3G_~9ELc?0NF7LFvq;+=)Tbn_BLcuQ+%gE zX9P>!aR+d5aohpCf+LOpnu7qSCwoW%F*OEGF`)bq+mnw zXz-=mS*F{dv-D5vH~y9zps;imY5u`fD&FnQ)9q{lnoz10&}O{&Vcq5>cM(laEz;K`$}{>Ln7Q)0^~7;ZdVDA$6iZ-EIHO)E5Locgatp4tmPHn2vX)Muk{xftt z$}}_l1Icl8JIZu3q;(1ypXA?uD9!qMJip69@EmGd_i?nA3CK2Zc?g>N?Ecv8X0w8+ zga_h7NMRqG)*Z{S6XcLI>(ixN(Z-O8PZoyo6&xkX-E|7x{H-TTq`Jc_tWOmSce@#M zGjxiB^0u1+IB#=wyMfbIiC%Y@LAO;eOQrRRV!2-b|7qQaJGr{U6ym#$di|I>xzal2 zqCs`+Ar^+#lcg-i|6dD$OtS!OaQm-q!Tj^$|L*e_UpD_#C}!UY8pwam(R#8(95mmv z_XJhCN{nLDer}clSYqy&~x9^Y6IEzk+ZZ`!GVbBR0YyakE!vf;Tln5OM zwTT$I-E=Pg?v!{r3AD&vqT5a9I4I9CylevH2{(&wKLPDS7k~7!ICr{PfP#Vn%oTC& zX4H251Cd|^iTnOwKB;}GQ-Jw&x0}JmpPd{an@Yq%!}}85ZZa2t!>#L-c&!1_A<*q6 z)6D=eg~z$ujYs=p^C6~-zrfA|Iaa4r;G3HbV+mgtQ~3YVKQFEx12;js-3*%jY#8IC z|8sQvDa3UP_Bt_jGNyIAa-?-KK_VTJEZ}6f;}1}k<-+j;T){d1=myo~KRR8wzJQ0l z(B~J74}gUc`VSsLSz!T6-=Uzzr3*ndQ8zEBcE`ssMAG7qV+&c7^s{o39!CV&r`!<{jZp<`+H}MibU(T z63K2K6_H*Rvw&__j(~1Qh5rUG_Qil2E2hw1I>mfO7xmtR0J4zfm;(kDk9AxDm)C$$Nx89{?8c7 z(R!P|Kl=aw|1}`zw+4cG)*&i9-7YEuppMSd*h4%FF#o^>;86u;5DK5i$l-Gh#K8z3 zUX<{O0EbTymhh1P`4JpGjxzrZKy%9Tqwxoi4k&nJ7zMgrIbNHBbb}TF%J6SL0nYGg z)(1<>kV40m11WGojcgwk5#~dkuHaA#g@=+iNuddCe;@{2$%?4nXLD`@HHa=i{35k0KERU3lApMJFi1i^@=2Htzjx$1=%39FoG``ld zizX;kG5Q!F*MQ6atp6F$5ba^;UPW`oxc@nwK+FbI3mrU9}K>)ad22N3%R^hZ8I?SV9|Uqo;)Fm%_M z9A^Uu;(us=!yi|FBm4yu#0_9~f!8&CRL67_xSxR(lOWf@!WVyhUhH=I(OU#5X9XbT zEL%6UDh_@HOyDrG<^Wj@o16>?dy$I8Ezrso(m%-hpCQHwA0NQh+4+bZ8t^2A zCqO=`fgHgB4G@d47Y`r;Xk#l_Y7|I(;SUd3biwA;JlH|D!MyAd_M!-jZBQ?R@+aD8 z%FX>aM^oYsgVtk)g?Il1E%S-z=sw(C&Z2$H`e3nsw|Ms zVvTM$4()?kEC+uu1q8lO!R=_I&LGIs$fXH!>Fwi-WjqWFS)hR&P&+1z@xR%NE&Cu1 z1jNh_#B7NB!w~5w5Tk$qEk=LCaoqL8jr05h-3*IC)NxkO&=AP<RqI4j6B28IUv7eX8i3_CzPB>#gF7`!VC&Twe^A9X;ZEk$aO{f~UT zEcOAxVJ|E~LFtJHv;~sMAt3n0j=f;NgSJ4z256w$2SI}~JQbjZGY11`OopWn!UkIf zCP3+@JC-91yr0$syq}f>wv5jDMv+wby#RGdA=_U;YeO6V|NH;Hp1-|=fq?;eAMGn{@IKmXu+Q|n`CjWn_tA2I94!DE zQHlrEcFYjcb#j0fA9SAs?Rx}=L*NU85O6qv3<7Bt1Zhp{4uJE74d=`5+4V4G7E$8f%vpeHgG2fQl3HgpHi@Y z88j>o325Z~%NH47yPCVh1iBA(`|^ChV11Ck4O9<>_u6oQ#xa^1KpW2g@wbCUH$br> z6%^im?uFU0|DZ!gTK|`%f=BXUTTwrC)*)>n1RW0nu@)S{;H{_}4BgjSPnHODy9op` z9|{h5F*^trDFUEKLEVfB+I$GxE{GH%$9}UiK%!>PZ$#9frB9^&x(7h*wlD$hgWbLY z)+hMgPjnypexcJBw3oMS9q8~2h-W9jJi7#%1eL&^^*jpltU&Akk|ON;Z?Srs2YvtT z$r90SS03iWfdSx+<^eAj2IBEKNIR0xVcT%u{DS%X5S+E+7g89Yq)&ljQE2*<2Bppf zBd~=8QYUDM4JcA!sgt{#Ej|t$cPtF?$JiKPDH9yrXTrKaf;(QOpl%vR>&X%>P)`;# z;`N%h+fApN1Ke}#Mb3)7w8BBwDw4>l;vsdE6B=2*!}s8G7Tz>tEoRD{#>d8K4I3IRh`D>^_&) z$=2(7BjClc-~a!Ern%O=`2YXqQU(Ula>r7~ZYLSgXkm#(x04QJkkE;TkaaZ>>pKOf*zyaV26W;TcHb&z~lF&2VP9y4v8Jq z!(G7hMu8G+;HCbs1?`~ztt&?>Y`-pObfVmv`2fnsU4y_Ess|Apch%4~?s6W4ZQR}S zn*YUy@2m_jR)YwpDmI1}e=Ffl3vhz#c2sD#U?^elb~NZ_n0eUvz)aK>02&*D$m?L0 zht%&EkkbbTw*5lj{pX-QTJ~XZFoEK?`v+)_j8FSwP+)jx?VA?@`rzG%pk=DfM|isV zy5m^1Z?>K+5k$;v`EG-Rq$>yW@lH36UKZ<4Hk`s zE&=<|$qSn43V^6nVh0`U_TfCg060mremT!C02+`0wJ~6^3&~GR(5*)eTfv?I)vMsR z01?pgrtu%B@-C0IEEFjg{$D5%_QIG2w1^@Ox|0dK+E>2$A4joNx1)gd2Y#nx0a=VM z?7sj1-}()vsP$W^P;;dSM`s~uD?F$1f!1$nos9fbL5GWQKnwiSUy%wsl==~=yoYq! zkRH7rACeR}p1VK%cUKa0wpcj+8!KE`yH+t&? zq8+Jq0;>{keqn{4%y1sW0-wyV^b0JMAnE-Za(c%){{vcI%#pH#9BJ}e&}ZG zHt1yNX6$qT?W6`3Pu7MdrW3mBc)CGnpNMv!f01zg|No2%CI*J^7X}ib#Kn;%ki{7G zV#h|1&p&|5tk2dGrDrfoBcvh~t$bg#Y86+xeJ_i{!3WIfWxV5V+-1D#Zde(=<2C<_ zGap$QUK|GzawTjGFC-eTOR+cyM(WoMLHlb=*4Dt zPz-=NVW2g>u&Hw04d5abT3ds(!kS&s!`#3%b~oaj5Dw@$A>iIw97fC?LYx$Wn2$fP z9+xFd-DbuI0s_)H*lE<- zZ>k10)QvBJ`Y<9Mp!%WpQi&JHH?XcD_?!?A@Hrs@%m)H`S%L$CUt9o>W&H6IZGSIq~1Gqr*ie<6=MtXT&Rn_hPZaP>SNTs_0cD z=jaY+(LU5|u6^&|52k~^nVNqH@Hc}dm$k3${Qv*IJ!pOMLG42z;id_U3=GYO1Uf^1 zbcb_jUjs=Uy7)r-1oNRz-#^ADEkpnCJD=!w{b7BA-}ztwXwD`FG|B19vkTOK)aL(R z%5(516Q~L|0d>F_dU@Eud(obO#^ggm+hqTj@_>BX&Hv&NKWNVzz>DJ`DSl8el(T4mJopb14DLw7FH6^gg8{U6GW16;%fwE1j$TKHUX~4=?kwF0 zJNbKgW^}u9baFsLMu4IF5UkKB(==bMOa~_JtQJd<+cD?koRP>vaHR zd|=RvUm(Aq0=dhTNBczcONYP!?TbM#npHt(4)B0>@%08eybyt!qyRA~J}$bG1Jtq+ zfDTzTzl9_swDJuUf#o&_A26X8ZYkSv7j7QgV1?W6*ZeQuzhPx~@d`vZ=Cd)pu*nDK zD{$csNv~P|Gv*-5H)!W10Diw>%0kfL4&A&Pj`It2^K>jsIL|L&-3U59u+Ad`#Cf65 z2P#Tfnr%V6|D{II;iU`*(9IXDDd+hGCirp*9B0iq&o2O4b^AhAh>ZcFbt^AOE5{Cy zBBa6tv~mdILh$^5SocTc1L4p@30fe57U;zCbRX`n<<62&aW zfES;?f)+WJh(dESEaQX9FP;j}u*11v(8OF1544E|iVPmu`kFh4@MwOcg0;p=1x-P@ z-s!&C8T%rw*@EG?D`?>XXa~s2*OJ{QdIOpGLHmc1*ZZ8h__Le2)Avoc150;}gi3db zghK288u5C*)^8<(t^aFy>shQnma%JpY`)L%nvXyHKpMZW>xJ&xE8V3Rx_u-pI%6-i zo-APnO}fBV2X!-dJFqm@NboR}3U>QQ*tDK3;j}(o!uq0xoq?g7x!Z%Kxki$Qfq%+@ z4%aKtHbcvSQm&n#Zq~~vM)1N_rfwHW5!C~rvf+nANnz{%npE(lQ9Rgmkj?ztLnItJ zLmxnUJBr}mPV0d>iS9rHk4~m;PX*{yX1D8uv`(hiY~75YoxJ?p55VVXpjOTVjcFYF z-+cZ5>*>ZP`CB_dLm|vr4F5|(!ScWK4#>K0#%>3d{}-%X-;|zgy;OR%^?ywg*hMka zbP>Dp$>x(Rueq8b&Y5L=5^VZ$7YWc5H^Xrk3GimM*9M>yw-~zvSh`)fc$hCXpI~XO zvS27>Za%@1#Td|i>P5%#|NnRV>j2flu`jwoy>iIj2j=bq7Us|3vwy;PxG#2}>ple1 zTxY?M#lY`+DBy+vad2M_6c;a|-?K7wmx516=sx$Nl?@y-tley&#NuOM0gHIh5IJIu z7*hNpHIJa}H5q24_9m|M+ZlSJ`)6nEi*9z~+ucC|ov}|kL*IaQUb|STbeC8vv>vDt z0f#zYr|T8#Pi5?#u2-}_y=F50*6m|y(OHX`7(uJ6nrkc|iO~X*7|)lmzW5G0nH99$ zs=3AzOJdv&3V@e>@Wg0|NQ_CX-%6sutG2p*EG+o9hgdjthTb6}8Q#H_48fLl#y)v% z>i2q4>+Mp#?$8^}Rp5S;P&Yd)AqIi0LrR8;t(Qt;LF*l;?H<|NoBqZcqZOebF8J1e(#I3*cIBmq>O8@^D{{{^1E;Zk^Jtw zK~8>bEI5-N>Q*k$nl0qy2Tgw-$mvf4Tlon(+vdfK;1{f*-5;RdLbvUagZu*BvN`AZ z1v+CtwEi#E5AXGT^TOZ-D}yCiu2cZ&1f0bn)gbwd7px3Wy}lgXo-Edt&|_pwcC>yg zEe9o6@G&w1FD|}hWw5T`DdqwlBLkL=Y`tB=(*5~$;QvyNUe^x+FYI=KnjIX?KVaKV z?|=@2%J{GWwC(f`Xxr(7fa9(YK<7lgkhcKsl>X3tuG19c=5De7K`db}>|TO5u=e`C zcyaDIE9!Z~n7I|)o(l`_{$+eX`={}@=Htu<-!oaC;&=bi`oBc5JCtKWH&d@Ci(9AT zAM5X>pW~5F_J-GwS^qN#%x@v@#RqT12Td7)jsrUaI$P)n$8k20H&G@JL9U)KMO3PgIrx?k&O zXD#TkoKAC$@(^ATf(pv!8Usk#V*n|8&Xusfs0LLqa7j=_=+1(^XW}Vn>JT|R@t%Lg ziPu+%rVH3WNce3*_z%?o$7o}L7Bzq?asvy7lBzIJx_%7WjRRTi+EDv}p~M*Obx{3p z0!pF^-E3J5-5xB==eh%VnoqGbS6VReyMmcPFFqdtXKv6a#*6ldwAlxCCnP3JzquHQFqPMNsqnCu6BNyxjKXNb7bLNb6+r0xhwD3%hcJ_u4qMo-7gTb`^jf zzK4A99!NDfn&1RzJ~6Bt)ZqkALP2Jr&V%M;WWW*o_&N$G#6h{$1 zXsQiuwh%s92+{%?31kU;tqwK@+6NEswF&4(oF<6uA&@dqj~v!@jes4-3+=kX`H<-< z-iNU18|H`b{zumTjBkke#)A^u+l;=1b zc=pCl;J6!jr!MHE_cx%E-rqDIgC6z{8m;bidt-gPbSqK^06Y|R7~Vf2;GSRB=SzZn z3q|+!upqVHK)rpeIqqg>?3?ad9`K|QIC%Nx8LYpT_^0vjW9vT6zx@DcNL%~w|Nm~U zU%<|5MU28Y&4WY{WReJ!aG*V_BBW6mD??B(7HNbKlpm2-6oT_hc=yfjU)sNo4>TWV zHvR^x!fx@q|LAt*X#HOztbL>PKnZI%4|6AnTk`=H>+hxS5a7_3``6RHF4d391B5Pp;}Lt z@CW|C0A@p7&{+q%3Ia3_8TkJKbSn{P0krcqj%Q}`qk85; z(FcF9ce;sy?t%cFW*!YY&KyRA(g_UHFT9X41Gr{@xPX54L*vUJ?8RqB{P6|4??X0X z0jB`y6mAaC(rTXW4)6|$FqLl5h`)mM#aedlQ@xJ=U$bi;YCT!X=+Ox}(z4#J+mEG- zz2!iuR<}FoFiGXC|DeGx*B@C70a;9)zCZq7?&5DbS;`IG{9OW4vM4^z2zDn3%1s^c z@CgHrHhg@M^dB@JQOXKF(YrfLr`u1Z+fCr$BlhM40?n@k4nAaOK5@)Vf)SKDJXksd zIF2ze9(RD8W#J&eP{Q4MsgC`agCN5(Mh58NR*>=$JRaEnF}&MNrqlI@gYoT7H<`}Z zKalgwK?L20j7hUwsM zc4v^&Tz_GN`u1Z+zTi0 z{!#u`umAu5Lt4s*I1qQAz*ZT7%NvkqYdN~zRJ!8?K>j!&aLi4Df%&ktJ4*@ZT*B}d zp!2vur3`5Nxt^yx4C47+V9(2T9|CEDd!85SdFBfTf3Z7t`>B9@eY#T+6rPSO|J`Ju zmuz%a@-TuD5J4}-ce-h8V1%qRAu4}lG5#;pInMS2w02GGKd1x20X-XsDkUBEoQp`G z-5+0omg7P*m_yi$N&moZ0FR_2re47sApSu)9|-Gt>D?c@T{$4jBaS8ISpww#vPQ5nWz8u!>Jp4^_LA?eyonvk$ z44sVK?mV5~gz&PBfq|j*5`Qb`z$oj}<-*;*9KG%WNGe{ZTlyIkJ9YXQK&z$yWja}m zFWUCN<}YJ*vM^+US}CA*&;K%mEXEg^aLN7aSwNdt5rt^YZ4^#tlG#}wP z=4Qg!8D|4>jhjU`JENNdXpKvli1ncw&U%64kQ0`gEgAS*rbA9^Xa*m9gB1Jmap3Bk zg#omMAK#Hm&YG}>2_(J=^#7oKg&e?(R?Q+=k5p}d(-MdX>;7nTpp6Zpl{?_SXw5=S zfenmtpqsF=7(kbRL60r)W9k0Uda{Hs5LUs16IEv&OY8r5(3Cu=u?Q&-v;Jq`>%RqJ z93q0;WrO&aK!3U$v|p7s0CHFdbV(grzZT>-5Dx8r176+=+F%RU0cwSUPFZXHR>BEA zf~3=Y|~b@bU~Oub8e`$SKh4 zqQaBK1X?H(@c$YNiDsZG2W72Z7ZsU+EQVee6@>th@+_7tw*Mt68vjK#z=}&aAZEWV z?sicT>2y)C>2*;N2>4&3BGc=lqH)|sMT3DsfFU4@@wkhM38+**?xF&@pvXnV1H}I? zDuZg0W){Q$5)~07+f@FGs-UW21qBWxXy+o*u_fIuDl*-s1>n8$CCmZ;uYtC6v>pI6 zyIfSbQByT&z5;aEGo^ge zKm|<-==2^pa8Up&gkX7-aNdCC&#eC$>yZ5`fNi|8`(t-4M`s;J>;HN&qXS3*2rW~2 z7&0Q*L1$1rdGYfvC``h$7_wN90wwGJf6)@q**-tur3b==op!DNODsXbn8ConAn?Bw z+=}@x3d&Rg|DidkMDBkX2S`m8+kdnFq7@4`1v)_;n^G=FARFC&&9oVG%Lr(_9XzPJ z4r6mH$m?JX8c%TrEuZcL^`Gh?cTjLJghRSIGQF-G$6Z0IuoyrGM1+9TW+@-UK1g?j zg8{35;7$#PxU~BRxTr3LW^8Do4Vpv;I|ELD-6Igz{VBZrXY&u%a=vbs){0hc0TA2t zH7occssAdiGZrxjbct^k&;e*?eOp;Gbq9iVI<7ke04xa4IA^iIa?MGOMSxM>lC z00=|#E9l+_rEXV_E`|QHX4BH$(`c7h*39==zdU-EMcN*Oeh& zm+58)d0n*m2XnnZb3F$`2^aKYkV7osE4n~au8>fJM?Yx(pz#gps1?u%OL+Isu+G{q zFRp{T2BjR}QK3UD48g{?E#>+9K%MXA;{tG}|C!n8`lQ$ONkC`lix-b)qXyZUfEO1a zLU52&`C(F_T)JH4)V0y;w~y^X zItduG{x%z;5FTW60$xNwgdlp^x?SgVx{JUyOU&$aJ=5!YCZIF)!V5i!O1S1J0WYK> zLU7GfI^8AUnssJ&x*q9uJrd9vdg8^$S*Skl33zc2A_Ujm)9J1Q*K9De({&H%_?XVn z1248fRKjg;33#y(A_Ujm0>4C0w%grhW~b{G(2@C_p*vobLsY7QlbC!j# z)gB=8L1(Xuz|99$vHwdS{J-`ZbXG5D6$hC2zf_{TQ~-1$F=!wd)Tap!KkoVf)C_oW z@C_&qO47T*Cy69<*D7?!%7A$VgblAdtnJ70~PE06H`-;DzxARt7Yw zHUr44I7`3_QIPBdkj4$G!5V#f+Y~@Y#ku}r4S4bWJu5>7nk)-5c&djj;KfbQ;sRHW zPB(?_W5?TGfTEazf#G=D8#wC&oFxN_YOw4VW(Ee3@bR`EAPOu7zNH1sVt}h-fwMT^ zEFL&Z0L~I&VE|Q)49D9fSQr>UD~Ou=K(dU-+dxvFM1vHupmy~k^y&drKV<#S*iAS- zLD9*;aNG@YO)7M#7=A)A$S&w1jmO<&Kyh;1jpIcNx4z=>xHy2i{}aOf*pef{^Z-a_^|%`cWW*cX7lUT^Za2`W znxIxNxFHGk8}wvN@J%@gIZ)pM`PfiU;DXyA-4}bkIF5sMvojob0*BQLO;GeYf$w?k zJ_J?-aXOf6KFIM><1K8o{>+)cz6MY%&F-H@I z<0v=Lf}H{>PxaW~`5D{%)JIS=iuJ_=4hBe`$YRd&>1_jLhkzH)UqdqrL=cpN0$yAK z34$^uI6s0jUBHXID1vSd0WVg+Ml4rwvuHg~0t#SA7X*A-5NOL}x0?z4yimwFpO69o z7B2>nlTEL~$_MC)r*5Ddl_2Ut%k4lTM4*6$#4$u1+(SpoAmG*zI8eYb10g`;4WN^1 zzLhv;v4Rf|=4a^jQ|S%mf3Xm910eXQML(Vmm?xdKfeHa=&v(HBPJuYk>;uGDI0-f% z9KMjQ0t@(TDi4;%pP;N=^SbdTxY_%-o1^(BW6hoBpUm~wn=3dNN-lopuVd)-16>#5 zCerP|(dj1h;{RK44YBRN=nPP2rVUi|v>qr~7M{fr*1Hc>{B*i=WPI4eAaL9roPz(0 zE&(fqIJA@l(gk5*=;ocWfKvd}EQ}MWGw@SVqHIup)2?*?OQv6(%GKGCsQXKqt7w1dlg?mJC2@N9gE#pP%O0 zoo+1u%Q>2&4jbz{64j^+b9K;|+34D9y(5e~Y_CphedJ5;kf~#y4PNLCyskD-Kn^8>Bw;i*vW@pXNgWVADC8U4Qs6|Ae^TI!=VY2Yg>aEYD~D zIyaFt{%g#jX$EJG|DvEXbvvCoHZVrVryXZwgmfxl(;mqA4|I46sCU$TGwem~ACTuu zxe#+u$DA1%y4^TBomslw3R(}8Jni*`b>Ra8{)&i5cU^S79S6jWOnALw-bVd*Tw-zUJtz|h+b8qRAz z7SZYZr?;DfnSr6x_e)w@8tnYd&Y7UrS7#%r&hB=50kY^V==56O57723!jt?hXF(GP zZcjjpPJk7?IqnLIIR<1!D;OCVKzG>qehL3y_N4J3=%DrgWiMVZJ%Tv14`hh%mu}Y| z%(Wbyk$*ZFK?5HAEoC@O1WjsmyZr%K8wgf}&25Ir*8XWe$nxLpMgK#HmC|4<|3Iyr z$pe}kZWI8eS+^Y^Q-6bIGkmdm<~C?7)@=(&5$JH3UaY~gjRET8KjHt&wlp3DH*3pw zybyp|KL=!pFU)$dkKHbSj0Ekz?!{tnNqV>2nbrd(Y1r&5@dAe~$gVRWZpwst@wX+C+59rL@__$-tj2jrC^A?a)i!|d3 z+V9&9t2Y!u69xhQMJFua6!^alRGIu2?EwuCf)#+8eBjw2@PX8zqrIE!6c|bb|BJSO z+G~Caoo*W4jQ;~z;*eXN(D5PAy`mq4 z%hvg_82)bqRfzvZJ3t-**Wz)|YP(c-?HvEhd7!hq?i!u$2GE)U+G&EEi4JNf zfeto@HMt=t;r}la$zptwwGcKp<}iGbC~#?Elu9kTAg9eRhxN%$Qa?t;Cp|GUozyl`#@<>6BCW9|Zso7rA_foP=l z4_&VRZ5T^sLEh~4{n2<3)c9sT*y*lgbO1VH&cd*nts|D(hPjll*OeP&WWlTd|GQ$j zK_(Fs0N_gk;3>-;JY5wZ*L4_LR)C`i+TS9uo(MC!6PFTB46$$x!_ z{!8YoIma<~1;*}kFQma4gTLh*69WUkJVV-X*CU_>y(d7$ zCoEK4pLF}a=ycuD>AUBc>lTLNuAsdmpqXp#){}MY;M-PQkM_EXZ)OeX_1*G9q7|G} z*p9g#VSLTp6)WEGn+cL`kGalaJnp&xVm9cM3x?yaD?q%oSQp$}@Q}s-(i2&XFaFJe zDZDb1h2iA|P(AC;(rw;&ECWd+2IdRUy+56yJZZ;W?||G59s%ohjoouneH8i67klPb;8G7?=l=?U}&g4 z!%)h0%=HfAYsFsI&&OOpGY0hfo_Vpo`Tu|ZZN7I}4uB^?_+3tP_}*!`&EMJus>#`V zL(iauTsOo23tcx_ZkObN3@mZ)b^QeO0m!stuAi7+q+*x|Qrh8rr$n~b^+Zf!wx!QJPbPF?)nEbBL#_39k@QG87vIF|G9^ngvv+mJ9qZ_ki@iuw@)b@d7Gex_xKjR@Zyo5{|k4 zVZt2Bx_->97JUx`q=N|cKFI%J-5+15g3b^DT@lWg0a|Dm_QL-b_9aA+@ZeyFkKbS` z{JL-U7JD3L208b*GYiNM(C7zU*3wKF3=F-_ppkCSz$a)l z9I?CuQhhBs24#+AL!~2XwvU?eRIt952&OS?>_P3!yBkKL8o-wy8-rSXXz7Ycz~<} z#VW+S)&nIz(0b%EL$8NQZ|LV26CS}TlBow;4wUG0`@Y%0*nE%&;|d(tH{A`O7ACY& z393u77{CFX#rR^?bXd-1=msrcf?n8m!vJw%+YQjpnL7c;UGIP|YZLEa=@-t^Z4y!~b6cwe!#; z6RE)uNuPbl@riZ)H8_cOmcBs>Y-lugSA&*4yCDMG9~{`q4^aYJt=Avh5L`Q2F!y@b z8Xaf@P3nXE3bhR6J&Ym=njk~F-~2BX0QIvKikU;CLF7>+Awh46mxrBjg z(YV9SFIiri{DF+=Li|r){RODZK`xVCTm!X3+&G{i03EbOtS5B322Pt8t3D3F);p1E zUm7<1kb(r>+=AxMBgpZY09{Pq>G}cXJ`vC~(2DL@j$Yq2-L5>rov~9oU1uC~ea`@H zi!d-8bKSu3B8HU#w9|?En6m)m2Bw#w#)|Q6pCZ(*HhueM9@JvzAL(2=U6+cln6B+@agqk5b)v@==_%2CEc+LpqU+XD-|e;TW^E% zIzK3Hma=SSel6I|+5TuSQ@R~kKvg)j1Z(|YqS$=yfA_f${0IG6N=3WbyU+g@ z_`rX#oWrk_9n1@0!B__ZK0Zn4JS+J4B=|TJB>p8h;N^4kn;0D7)#w;d_6`&vs=yhEZ(Ce@8!hjWY;=mGXca>6wUe^_YovuqjQi0$I@K<0ZW>EQz^kXrwj$af$9z<9DSJ1F7l3?lE2t&`$3o9pcr1X{H+RPh zfL6c!W-R4A?#=?5n|aM`e89q;gMZ2a&^ZIXJRtwGgD!0gBN(FY5}oBD0WXe#_c-tz zbFq_Pi0h2!Iqoj-!I42AJ{mN}kIsix?(p?x1o}^~WZ(yC2x)e^iGa^y0N-wMC;R_@ z=&CdDT`J&73}`36*N^4J8x{tJtPp733|a@x@?vE+xTM6IouT_3d#3L5-*5Js^g-rdvJa>-Gc_M#X@1XG`Z>P!Tb%&^ zHm=?v#_R*Ce#{43ztw+;gVtOSH-pDhID#SL+u_~kKr?w6-OQb?9LOs)*eXEH`ci(- z3Js*uK+s`Bt{luitm`=H_(A7F_Hltq>yjIwO5cx#*^j5Qj;G{YK(90C;+>5Q;6etp z%?8{V1}*RU5%6MFImqmiCEc|@n*ZCCF94Y%20HWeK*^MFkk(G?fET3@y~kYSSs0KE z0Iy$!oMwB>-5C_SHu!U>XjovcJ4>f|zzb!ViFPauaoxw`L2(JCARz-GA@NC|zI-u_ z5t^$&DII*iY)A(7Oa&T`1Pzvjfn0t1h3>!q|CQY(y2E+8>sh)@4ly6-=4o>1^yTSg zY3g+SlQzNnd?`!!@z*Tf4BZUYA4*Jvd;K_GTxS9Wb17H1SvRO``t$lGsQYp{;Ke?$ zM7Jvkzsq;fwGZHM<^W9@c3MDFEWGA{`wz6A1$^U2El0Pr2=jk!XV4if*2jwl8$sPV z`*OSRUT>ZkpFo{=XO>=Xo=(?4-OfCn&H}xze*(h)7xRD@xm^NHFZgoA$8~zk^g90U zbd~_y4m%@QXa#t~BX~TqlqbCVC&(jue<9xY=jjzW3JN>sQ16CKf^_ifc zd*PP`KWXc?wM6MAq%sx~9nk&Q+Ys)B<8--iWP}shh9c4HOvv{o(tu z>jJ>d5<-O-$a$ci7}$C1Q$fxH?RDt(rpwn1uX?i*o+QNlH@kg#!nzNJ zcN=SiE?YVHgQ?T?2k6d(a&Wfb=niJlK6LO0ll5`_X3)X9sE0vWALnmM0gZUESb;lQ z0=UnD5`dirCGa9)`~Ux-h`+9F3_1wvANU|Bo(A(FCjwA;72f?b@PDa5 zw>wK2_l2F697S^~BQ6 z5YT*pBOvSrsDT4IRvOg&%P;_KJYxjA5K=xpK;-}CH(1xhgLeFbjy{5wM!q~RK7RlI zzuQ})H<(5FL}%!eZfBl@55dPB*)UpLm9lgjy=Ln!VPxqxv;JNp51Y^JE(3*puNz0e zi;0lAY#;0Ir7yc{1v+bay4kHilqh!lg9=^`mQKTNKbB5QP`fD%)LH_Gd$4qZPV0KZ z?9J0HXdTQ_8ro?Iy0XakO=k@w%j+yqF!?^|b>#_oq4XPExO5sEb6`PU3I#1%co@2U zU-Y{2{4W&<==EfI@%a~I@#PEiFRTpK*GgGBEniD_JF;{$bULzFA1~qW_66JO$kOcq zD*C!lLwjQ{EJ3N$m7~+*m;(!zm5MwJp#6?uy8>R+{)F0c@iRPqK12GSn^jVpk**sy_AmT+hBguQrp6gt2FEs-51GGQ)dCy;YG@=p0|YUjQ2h#8U{#8Bp9y%qRqKJe$K59` zzT`duN()R7iUmS(Kqvw36TOj)t+(rT1;4P!U}EV0(R_rZ^?%7~&|aW2mhcywzk-4c zG{gxC8i-f!H^aQLwSk49vyNp0V`rU6XB=pXKBbcvq%abiT_CHS!0p{I(01H99_CsO zP`g_!`~_%*M$3Uxo_J96+!%CPE(=4q8w;}=sQC@q<_3$NGdtYA{QnOReXx1WPkw+! z!95H}c;Va6*Ui{`>VNZtKfN9-ANUUn_ImwqJy|LQI{H8W?wx1#C|MqCGQ^xXaN z#n(M7umb@&!d^@|3L()eZy z0|Nt=Ri2;tw;gQ$!OGtr4O$7J()!{Wg8=AMq!lkD%s^d{70^@$n#N$WVqxg@UGXxX zk%1vYrj1)5L#K^f0MxC8;a=Aj8LnSIH||Ecfg({Op!*!OSN-CIB}6x9$w`I*F5NjvHX`eG_bcP~iEi&^F@s8b-| z!9}~P3<61483YzwWe~V`l|ew}8iPRiH3k95_zg$*#jxIDmTu-wre-^aQvSH(P9Xm< zbRPoWQWD-<#j-Pifq~)k((Yy#Mh1q?CJ@=(>;qp_W#rTfGS{ThsH3o-u=B7Zf%@xYR~KK8o8ZaNJ(&UT@dTj0eb(3r9B znir=`Ss1#{y{qaq>V{>(#@b(8s)IRWMKzWb0J>}jbp2@9i=W`G zHI5sSAns-0f|m!)Z+x)3cLl_q0WU1U4qfp=5#rFO9VmeSPJOV@2bY&w|1&}m<~P34 zU}RvxF=X3)v!R-Up}Ur&yOakys$Iet{zCmXsG-gB5)|E87QL=JvKRth1bt&==ylxz z+82MK({;s*O{+l}Y7ewjda-yl3j@CftHEM!0q8U>zo6@ZW3E>~OP4_%m|ou<-E5t% zH$Xi@*E`+LJghq03=9D;q}H%7bQkmV`tE5wCc(qN5cYy&4GY6(egQX@Uf&I$L8gE> z93a*a5Q_)IIssw{fLLchM|iki;NRvZ(cyZf%T=Jm^+mUKoq~2YYaA#1(aG{H=rd~{?_FT44_TOFP7E7(n?Jw3&Ts$#U0(Q8@j!D znjidWKEQFznS(K)w-vO`uJIr!g9f|+ZD0<7SaQtu599ecs1?`S1VtEk`=HmfQPuR1Cbw^-vnUG zZw+-E4A8}(r3&4p9APh%et57ydpj6785myh$$@7SdR<{NA9ByzcfDv>~0;nYbZUTh82)6@;uEt9*Mg|7s+t9Tg;FT#144ttLx?Kf~PeL09 z#{WBApLDs3fHM(Kr>{u20qDfh3)2En#bo_~-~D=LDCp3uM9}${-E1>ET?M*b z?{tRp^j0uh|0w3}K7H|}_0M9d@Yg)nzl+4Wj~{%&#C$vebiYWSA_GHr>;q8e!1YFF z?VVnhAI%4TlyG;43Ums9I=cZZj?KqdI(icO1j$>bYK;@0eQXx6po;pXlW^06##7pBX?cEIR+A+MAU!XjI9Ss zz_w(nnIwdIpiyj)Xc$v2xa{QW>9Ce*LOu=Z^s5u z0LOyv0{7+UbzK49d;CfZ6t*i~Owz-ej4{V=v;Jq0;$CY|YF+?J%}21O=1yx+ENEb6 zOaUaXq{M@~BGT)-;(sY<^L$`$2L~4e!;3Y7&>V{JkR;SY2X(P}2(<_#H~g=B#u5H3 zNRD0~2TJ9jz)t|V^?)RXTXQubfiH^Ptt|Vur@5>7U=B<&1-++7xaC=FUbFiU(jFR6ThIl z1izra0*Ge-xf}z!_Y2ys{$C91OdfZA18M-gNRVM*=yv1b7nm@Eg@J)zV8#kC)v$vF z+`8;I0pbdZ^9#lc@C&*tr14+#H|X}`>2CbO!obkG5!49nbPwrn{K3M&(CHr0-S`L0 zi0N)*UAV^~7iXI+t?} zpfxTxK7j;1KJg2>K7bAfLEQ+N&_Cw-hv5^yfa`;9XK;8H@C&#e=ycEE7j&=q#4q41 z^NC*&eBB&~qXOc98WJxoKZ2V_&Jx|nyS+s|^9#0v7EIoq54sl(d<`>b)WzN6Gk=|< zKpOuwcaLsQiBA6jr1}P2QFcF$KBNK~KhGlSzR~VRP#S=hQAdkG;Q=ZMXBVK*Gh42eFW$+8SW$+6)RqzYCRqzWm zbufTBGi_i>pa~Qt{DR;c<6Ztz??|NjGe`*(oK83|7CIziBI zPV-&^kc(>-AS$}g1-$sB!otwo3sV1Lz6Pk)dwB{ppxFxYcJEeD+ml}aZ1%DCgP^gq zouHkf{DKYwy%iDs0$>+^UfR5)08|9<3pyz93$#L(Jr;={swiz2|@?f&t3sqr_F#O(Gfs4OO#w6Rba#P@H%*TR)?h!a7qKE3{VV~T4Yp!QraBsDb2?On$qIqx_$o`pM9aQ8tm6Y0t^`-*Y~z|`~wX^ z2fRpn0UGq;ISv*8O~>{2f~1bO_Wb+*9~3#q!SM*PGwpcm6i~8Z2tU?34a9iC3feB{ zD)5cfA8T zi5A)vKIVFYq1zQyU4i`7V8zhs3ThO0x;`moF+TZPr2ABFB_m}0LKmYWc(Ky?z@T2= z6EAE7K$8d(ouDqKOsDG`u>ZhbdmIL;%TIv(l>zeCVbCsW=%!!aJIy}@iukh_9RvTD zo_KM>1JpL)L21x{qUVG0*%yr~Apsx(?Q}ufAHZKi~E$)Ii7W3De4dV4+oBTll` zRRs6PnY!6P`_Yzz<~l*MW&AC3Ks{sEBLV-*SYF&X4O+p$-`WKg>-7_Pu>`yjyp;Qx z>lM(tJRe$)K2am*{le((NwO>AIuaU7^!; zPq({Dr|W@U*EyhGdO)x5kr%Vw|NjS_g92jbhl1F9z~afF|Nl4CUSTNV09gq+n+ddR ztlM=1D3bWWCncB8d9m9KoESiBUt4aMvTtO13ECdi4Vtt%67XU!)GPZL7#P4V?e(35 z>evp~IWM03|Nq~O!>ypv1#~;zA$Imo1qCh0W{~59ZZb1~mhM&k2YF%&*c0lX>9dAtmGmp1sfN2JXN>EJuke2K<+Quf+}hX5uMi!jtc8mP&AZI z=xznapN9Zwe?`Fmi=Z3(T0u5-pAL8tB*Vh+S{#zDKw>W%pZ)(I(0%%ar3@%pfrakL zgP0)yyQ$I)e5aE;H))JR@!lJYY3Fcwm^lBx9)(mK+Q@>as#zsK&BoCH#i|I zP@4?IItFf|G4%F=!W-K2dGT8sn%vkyC8jfIp#Y@Bv;gh42D>fbe>uyG#m7ML!r!Wl z5bpICd69DiBn(P!8$g+61Jg?;CI*K8TS1=f?REJ3|NjflFaQ7df(?QciV)GouRyV1 zYIF?jF-CCF*ZSh`|NpQqMNvAaWdiC_c%(p_xRL24s6+>sSSU)};YwvwK%<_ZMkJ`% zg0%JmUX(-Ko(`HxLv~u;XK=5M4dT3j*4w4}{NV>6`H^1`oRs(lTR9-DYY7MiYWad1 z*%tr)|9{QYefmY@eXvhBp+0%dw1KhZKq-sS?bp8D;J9u*P^toMx(D>OUH~Qa7h?Cp zZ7GPgy}e+;*POk*AcqHbpLkIQF_PQpHr&w7pdjMtM)9|Q8Z3xZlOaLWI~5eS(24@o zsfU>PV(Mj(8~Iyy{sYAYsJ$HkmAUN)ia`FB`4}<>p)#$YbPGPzE>yg8cfT_wfJ!Xzd*6i1UmE zkcJNGa0{rto%KIMn-{6Q0X_{5+U7&_!$7T#9pF^&dW4aRtqo9zAC`CaOF%*$(%JwY zCk)9u??9z2w6&3S7#zT@cc5aRLfY&qNDSWEI0))Mx$^Y-9sxBWTm`^Qh&=%>?0rGX zN`f0|k1+K59x34kH=22lyMk9CgIBG{fR&W;ff^CLQ$dc~$n?4f);y>?3@Up;qAdqX zQ$V$N&qYu|DCL5y4FDMflDXsqw(J>5oFpeP5adQmC`slVqQM6bU=P0K@wNQTtk*~szRgMEJd<8jw5koeuf zc-$3q?*?e2DM$p`z)u6m`f*p}7Upr+E8ubxav2-+Br<5*@|f!#hTh%`q}JqpG359K zEtBhp#P2b1T!KypVR_MY5EO3wtsuwry6y-7#c$YUkQgX_Pk?G*(4}S#wL2JkeRqK3 zkf+o21$11k*Y!ofiwJM9YK~*BCm1&}y)NkXy#X@l#esvM*aJBTT64zq`tEpf>O3e0 zORj;mg7{Kk-6h9hd@cxoTes^0Yu6*C>oDUDWMaSzBT-1af!bXlkr#>gq46dm3W_(d z*j`Ys_1*E}>3*#723~KO^*`e(a(saXS+KXaj=O^Q@E&vB!+6{kbjdvfG^)Tc#Q@q& zdxjnF8Bi<9bq~1Z zbYnj#y!l%}O&!qrhM*W*auFm3im@}G7@H4Pz5=@27_|2iwBH!yHt^nI(5)Ka&1wJ3 zS^k^92VWp`f@?0<6|fp^LISM# zPK$*&dn40Jb;yBkY~2WT8E|!Wv7nV7Aj6rueeVRkm+kZor{TU=@ddO;hn z|FF0IFV$$M-NOJ%bl^>ct{{crR@{rn9$*ivfZSzt`?VZc9ZNU+>+7IK-isq(>5_+_ zV-?xKbq^}4PT)rj-;_}|9pxM!u+odcUnO^7g`tEt5bQa`s{uT{z-{4IENGuO* zDt`-T9us5@NGu8}2D;*++x3XG>k0nWFQ5trqr3sx5b&Z(2$60po)4)$0Tm^|*yaR}yVANs$rFNvCZs}XK_uTwaC(Gv zUnTc~VvfHR)SBsaJpwLpo}L4Vfs!w{`wChi0$NSmYw`d8{}&dZ;d0j_(AF1N$n_>O z1E_`63s%u`pi}@71?Fff28guuF9JOFKY z2^9b(_0~(JKA^~4+s(od*c%E;p{$@v#g-j>A9dG_W3GSLz?0;A;B&aprC3U!rC6=8 zumlwy#lrBKFA$`e0j3$^N|1YB%y|eZ6G3$fBCQ>HvF#KjtvP_x8l;2GPY0daG`h=mkHwUSH`_GS@+*X2GA&~lQ9=Lux04^<8?E;5cE2tXobv*!1 zZe?dcVx=6%TrV(gV0vBB?fU>E^@49VD0VltkA4Uh=|FRJ(;and^##P2%sV&x5JoFwpp;shl6f)!L0 z_#SwnyAvZ$PzU@W?G60v2Vv#)gD6-c-4>2(l7k5ITtOERfoFF6;RdGSG7w_k3PgIr zdH)?~7a9Y@ad*%hHA83ZhvV*`QxHJc2poqTHvhj2bcWPwP!G?Ir_-IM%T1ueT>x#p z2WsfR((4U`{h-yy*!GBh>@5Az9m^5iS^DNhdK(Kv^D)>~kKSsQ&QcE0HYxu$76#CP z8NMGn-B>`USi5n6s!cbZZg&CDMMv%;oo*uh+uS8O+$6f46*?Uix}8-z9aXxWH98$N zx}9}89d-D(IU9618gx6GbUK=JA4D0g2WK~=$sEXf;BHsYezA|?-4!g>bu7g^-EJHg zUs(Sr77c&RYh4Gr8XUSJ;RR?IyW5q+_%`?~@)8B({}Z|yy7`!o2QZ(1;RH%%t{l#d z$3Z(Itm9aU9)lLhgBR>U2L~Ybf#$dQ;q?ig@Iu{i2tEEEbWR#1zPckoi^*L%T5p&5 zfEP)9=(Uls{(=aWCLpeokGO;q8l##(2IqkldZFk19=HB*gfF= zSFPVlqPyK$f;(M#dSwi(Zxr)%yMrR~MzLt{YhLSkjw0Uf!=R-lhXY=ifyNs_r-^ij za&*SCMEA0sX#G|q!!Hjy8iA{utCOSKi>1?prTGv?^8t?LcZ{XaL6&lW?{@~TSBCh% z1kL|paQ_G6^nWHeeZalH8m{MKG#2moz@;B~V(~txzY9M9{bP9dFVJ2`S+o<_W$Zzv zXes<$>>mLyI3YstgRFmay0d_C-@>iT44}iPOCSrcjSj?tCTBtCTY+e35{8sF1n!Ff zrwDdp?>8ZQUjwv&>h|LRt;Bh;q942hvk^ogR=a>*3kr{{{~11r^RltmoZ!{hF!Lfn z27y*PgQ~_CS|FY)#|p+0hZQWPhR~iv>$eiauq?(Ge?nkUd?^q#xrtQ1fE;j$g#omm zK+PUBD34=FCp07>6eK(e%+K`t3A{+22_6ClWgVEi7xaO{p%O%)hXcfPaQPe<2HxNF z5gLjwJRwIA=z+G8lyYP&K%e;Y`11dM*o$BZkViG3cZG0(&V&SAS^~Pi%MCPS8TP{P zBFK}l%SE8$pg8Bp%@9RiaPyl2tW`ueXahKZ%VKcrVnx7<^PrWibpreXpvA-<3jBhu z4g3NQ0-#M^ZW`d_C29Pk2lxeDFQoD3o%qcE?Bpl@$P*w5&=Dy-;r~TJOFKUC3;4e1 z_U8G-FW_d-?ac9sKjI*$>TuKObOf!EU<656fJ8s>3p#?NT_1p00{jB57eEXNXvnqx zFJTXdoFTM<@ii0Lf#KaxW3fyCL*nCM zZ1<3J68r)T{DPnbBmxcsAcnzb{yGQH(ifL=4*cNPZx>6;`neHzy858)=&I` zVIIwO0SqNdAVmpaMdBbu1)umMAc{CX@e57^jgdC*12w@JN;E$43(NzJUVv3gec~5r z11&E>)d1=OHtz!uUO+T}1}hL6K<#c+4WKS}^FGiyvrrpA+cyy!Bp4YOP&I(oXE*Ny z9qbO(-~e7_uYbA->?F`?epC&hRs7BSKqr(zHGq~FAZ!3F-AB~`T3XP&Zvkj>8{!Ah zf(nEN(3%QV4WOkJuuSp|e0~XNy%JiY126Q)UOsd?bA*L=f8>{E0By&$>ps=|kn!L{ zPJRIwLk@mH1`sU)S|S2kDP^buTJxb`{i{T$`~3HdcvW`uLDZfvT@GKvgqq|a`4eyZ zo)cW@76?&H1!b3%p&X*Z0bcn{vzyy{@3EDnOMfXvQxbG^++V-U~bi zaRq%00^A#8^aa(3pb4kzo+xPnG-L!`1<%p}nUg?DVxaxjPkuDMiD8CK0v_pXQHfw? zUI}8Sb8UejzaHrXX))x0p;>;H;(2v9G&hQpv%16 zdAi*MI^6|8n;6_hy4)nfJKQB+9Ft>a=)T?F(y)%WiiZ{&-?;Spw%Cr`D2_E zASOkg>TFQ~jZl2%k2~_2U(iQI1azI-XMVvJ6;L?}(gNBX2hyU_*`fj(#rVu0ceML= zZ;6UU<8cK}28NxWBc;JQKJaWznoxPXGh0Td)2 zSc3%Q+};uu2Y!vi-M>LTYCQgc6SOoHDR?AMf=A*rKg7?SEh?ZA9~?w7h#->b>`?(V zO`)!ag;U&VutEuthe2yMK^~6ic2NNt2MQxdXhXwD2JBl%un9DQ2Gl{yV?fu?b+$kw zAnqtw5jen>cK;54vGfotLpS(B;pQXIO($6n0iZipUUV&BVd!pWVFV4-AxpUgyvPSj zi9n=2^9!(kS;#HW*$#^2?sibc)!7d5Wn4SxV9Biipv9*k|M72cmtkXINb76|P0sOe zZ&!fuK=)(vZ*NzD@IYSW-`=hP;Vl9s>UJJB1_sEcn1EjJTGuRzfESjpK^<3t}FeocX^v(w*k4_gA4SoR^6^USeL53H1lt4OpdVN5G3}GO3A|P22e!=!5 zphK|0?q@31c;TcDQpo~U2{sX~5|oKwD5^6vyjFXmr9nU)rv@_vzW@VhF~s%-T%a8u zy=ppoEx<3>4$3W{{Tczr2fEL<-sYcrAfUHJ1(Zz!UPLf3FgW*?S%BN3ZYMxZ za(+R#8~g$epk=u)KrK>(ZWk4W<^!Ph#BM)2LG0g5HJiJ8R8p837~|NjpX22BXQ24%K3&_c@3{DN>9 z&~nVr{4ocQw}M8=K{mBs+Gzu-S@;E8UBKGwz>2%UJkV-tolbWXaDB<|a^g5x4y3J{ z#jq3X+HMy^mQJwZ5>C({4%p!CR*;AI1;8ABL3fevjvJf|44wWe-5qy8b4kZL{WZFM z|A3b~_BVpV5!CnKVK}qn0J8wn_IFT!xcSMC|D`-x4F5|xf&yRM1_c$z{{oiglT3jx zeuHl6J^8=+h)nANevgAl9erpA60#l}bW#Oq%JzS$z>8J?LES!%$XIZD4s=lH!8HDB zjx5I=SwN>V9%lp{+z6Hf83Ab@6(HBwKG-JzjBj_wegK~X$KL{Kb6d)n)?`V%*sICJ z(EXwL2xx?`GxksGw~|oMiW$%-bSe9e70uiNuerJ%C0Y-ZGWR;l1oZl@dC_I?|3CPa zYUqKdov|N!;j8Hbj*3hjOay5xa>n=41a3mvd29H3KOKz;>b$o^d(<4d5rUHe|R@qg=59)9;* zt+z|$dL21BU3midx3LAh_?XVh(81;ox}D+(hnw~9(ihOdLU_*%WE!}ChOqB>Cdk!f z*|#Q>X#2Wck!%2+UlYpF?aQNmDliBX{kylag4Vt^AK{4w&0K_bzX7X~-XU=M@m2DEoWe zSdO!)IC2RDyjZ#de5Ef_*0m1@Zl>uUX;umZNHFu6TuK;mD{gGx+D+Rh0%Y z1%=ZGsKoJh(4M>oc90loJ057s!SQy`emsaXKpXNvA#}W*g_Qxc(&PWJb`J149M#z@ z3>g7e7z8pVw6Y3hF=eszZWmw$Z{uYSd*M*e3R*$g6E z57g;*pX+S~OO2O8XL5gc0cb9U+^9!_rl5KA{ zC<*fmHiI~z_BwdOXEP|JcDI4jVP`Xl>}~_4#Li|A+1&<8i=E9NvbPPaU7!sV%K`j? z%^>V+Hahh<}~@kz0PJ3+1&<8e4Wi8vbPOn zUBC;EOcsXTHc+At=#sARG*K$eRj4KAHIbLKcG*D&BXqUt#4 zgev$MRmUB{SDX-kh2n8X6Hs-Cl7vCyS#M;zF9wH&_eQaFhW_b3{h|W2f~Lr(``n8> z(BcuN5>QU*-398D9(MxQn!WBk$DP0xCx7^X<4vGi1El776TF@TkNrTz;PoVUJ0?U7 zR!<&p0;Nfa7$_}5SfJzsVr4mGfiKZ?eQ}%}RK7wNI~;e16t3=&!qpv8xWWeuUaZ&% zE?nK=g{ynWizypH&D=jA6OT85286)oHGsy-K{g$4=wW04osY(F9K5d(B6bBF84L`^ z8#F+rIRgU&>jXy7nI&!z(?Er{Lly(SU<2rW4pz{BZ@>#Jkeu(I<|Cl$6}0dZGkm+uO92x3$3bJV49A^8z(4{oX0Hb)2Im}5WP!HQI>)?dU(X6UV5SXZ zZ?8AUXa0ybP}npdk${H!XZ}c5=!huu3r-GZhWNPd!{C)4p#1XWNAnwnuy9Ch^=<^+ z`I2_rk&}U;x6OjRB4}x;XaTgWP z&RK@zE-H{L?VB;kX+(=^b|iH`PlU!SgPNA_R1tu^-Eer=UHkZJfKIS{qTj_-sBp=;+s zXjf{e=Y?pGg{aj41s!N@3HT~>(0B`AOVB@=Jg)|FZjUnB@en?e{{O@z%2t!bwR6DsC}R# z32Q+CQX=2Y4!TIx^#}YwlapXqm&$?s^jZRB{fli7AxMz0f=p+JyO9M=dly74PB&(O z<)Ln5L3bmhKeP_fA8LNXgKa#m`(|hC2k^*57DMohW2-=21)kn+P=D*iickOlXMpO= z-e%C`7&P!eXLikls@n{jlIlJOTC4Xv9)2igZ#QVP^|%{Lz7VtRaW@VK1u1zTw?~66 zoqKWf`~UwLppnzw&7e{8EQYWbZV+?9o$T&&FWea!7#fd(Dg#ir5hIy~To zEJR`VVJt&$pyU8*KWF{Vc!BUgwuK}=!5s#0U!fh;o(gzjSOmX$8FZ*rJE-A>?OZ8Y zL(rHFXpZl*F8B-}P`TTEt-Br6lEgYI_}T!b19Tn?^w5s(Yu)ZFSe5UAE1v|h091M7 zIJjy8Tx}ZY_!h(xAEYuhtotLVjRNmd65FBNvI1Pqxxw2!ZXqugtYBq04sP6oid|6c z25#MhIG}6a;ni~+sFDYX9)}F(fa@53v}~zEOcNI5U_3p^}XwyGeDdd{5hc1%hGHM;{7kx%@9y$VA$!x0-8w&*D^1* zWwJ12Y?#O?@Pes;l>wq_RyIf%#}1G>q|}5q#EpGDLe~F`c44@agB#y~mRLYt-sy^R zo=5l3&b^>}&pY@20c}cf=IHeo>1+jcVY{7qPzN45_k#8U8b+017e5j~y?sz~8?=Gs z#Y-?3R11R^)xWp}=7J{aK=+`%I1T24F3COS`iJAi9uRjss9NpZ3i7~lH_%KU19ai$ zaW;u|ZqNdLu3kR@aIiz~;&|bb0Y1_OddEFzzvBz=_D45^-tC~}Bgb6-aDz2;pMx0u zLMVfUAp^8@q}NRXRMr?R1H})|@%92x762{z+FruU02-3x7i0sS;UWM%dEhvtYyllW zP{h*B_L`~t*fG#JLJw5m@%9OD))Y8v1~X(FA&vi9`y6JF`Xz9=1lsv^(| z@_%o8f&c?U2E%;@feeK_M$m8t=n6lf0MKDP0iff8+atg&GzNwjt$C~r-Qcuv%=M4( zvGxi91_s9C?KM#O)&nKN%?CKFKa}u*HtvH?DRU6`|NsA1P}1t{cVJ^+c(ERIYDOz4 z^>yzD33T)BVHOZ*e*UL>gAX?YL-VsgttU%)UvykzV(3264OaMngAZs1^%zI2MST}>Jqm!7KZNgo%>|AZW$j!j?Nc0>&ph-8fpm^}2B! zcjEyGbYI|ix!BDMVs-|yEC$iXT>pqb^?_GM9YZRWK*x80PLes43ZKk_%&0)hPrT#f z-5+1DF*1P0=vOe7I78R0f;`dst;7VhX4OLrRz=ByPO(9@7c^iFI*GJF0CbRMz6f|~ z59`1_xHLa==H+Y$l=B>4p3Z|@`~{UK%DvFyuKDEu?lw?M15{H&&Ub7+_#bk>;}lJp zo3qqd7<&6a`Srzr&v1w;~N5Ck3ZvL>*% z!va)r2%h=>A2eZEd7l|lWMnaA@$|NVN|1mT4VmBu3#gO=ElFwvopcHcCh+N&(4A4> zRY}#eZ9nT2M9l;tPoBSMuTwm=1aI1WcQ}xC5p| zUR<$7Ilu95t zI=KaUdqG9vi*5WY3>jB8@(A>{g7^V19!+Lt=xn|7@Bja>?i0}L^kTwu@Dv%SFWmhD zDH19YSQv~CbnXMCNb4UvK@Q?~LERYxImOi_5nTEp=P6Ks2(*3;)VzZP0%-jjXly5} z*F}Y+`(wb1&UcVy6QJRt&-@Xr4GXyix_eYWI^vAaeCCf}c=0*`W-!D&aGn6IlmpnYYZ_ysynh=3No3b1M{;uZic*!=`r{KZkumBz2n>#&GhpiHO1 zb_cV707I#0^FC08##h60j1?rp_@b*Cte4kd5jW_RJRcR%v4m})%J&n0%t8JT)&+~f zhO(Ym$SqK&&#!T?H$+9?6MrP@0f-J46@eG5wO~VBR5&&;e&QDdYX=uM&|MLb!UnQl zx$zAs@j(LTXs7ERu;;?SKI44B1NK=-dH1;&jQ>GB@sgbGbG>c?-*2K+SOK64Yr!Ta z_~DM6FD~(b!lcBu``nA;;B(sqz^>?R1*ru&w*Yj~Vjrjt5&*flK@fZzmdCr2;Q>c$h(Vae^XG z1+>Hwbe>%6fl~Gt!eHljS96rOcAtB}itGchn_)f(hq~Qe0JNSO5>1h;Aiu#RL|(98 z0~H-6JPZska{m7R-~2|R`^;zlr~}6x!37a?n7g@B1Qg+}CyH3Q8DBGXAIuWSVBq5x zIL5&6;wTH~>X|patsW4E#GVM~?Q39WV0a-N!~i-Y3UngghnvixVLo>a@PT8W`32ln z5UYb+pJ42y1eNZ+uCVL}IvB+F3aF*$dg8@Z3-CHX*EhYc2l%571oZk|0WF|E@L~^C z;z_UT10;zDFBV%cFn~RV=_$B>1T#dS{`txbI%MfeKyNDp=)jQPz8fIFe9h8lAnh7ylnmaib!Y9H(E1-0Fp53u!$9Dfm?3~rNwMEC_=JNN}!K`l&v zLDw1l0<8+*Awbs^p!S%-|NsAA&H^n*`^Q)s&`__#P~z1aZqVBcIvntY1lX8fPy?7> z0DP_tzo74mG=9;OpZFtqK?j0DO}_ySd_mt0AS*!Tf_g%)U3J_UQ^d{ zphT?O_X5P0fUw?9aM8W}dCrd=SUGHcg%;GrsgE=7Z zg~0EB|C^8Spf>v;yGEd+PvG@F#P5gVYdu+_(e1{8uww16fBzvv=HS~BK_l_7z8sRZ z;F1hdghA@NrHIVm_+|zhY^n0mPFK|W?q|0tID>yHWq)A=8j}Ce+q>cC|Nk#SAArt{ z0WqPKQ9y5N!cWkVk$s>Ux))PDz+EcF=Dis||Nm#GP3>)61D5Uusd~|N8@kIzVM z47$RzvlYa9;aLgR%M5A(?g3S=AQy&1JP7J%gO=i-1@*W-fcod%=U!a+4mypflCSk!2?yx*v@FK| z0>j6-Z7_3f2NSg{O=3`l*F^*`etB0fO3l|kzk#F&Zk{}+qj z{r}&6qciqH>+KTuV8~7HnWLoERJSx~R91ns9qZY)6D4?0X3 zG~bbNqX=|(X$Av>07Ivbip(+4Y{h@k3kx^}x<9mjD^bm22>UO(WFe>jD04 zCwGC`yZkPv!a99a1pbTmfaJhOl(zmaWq)yi6?8sncPYm)HU`j5-3|M}2Z)w(HtatH znhz;qKE}ofnycvcQ4#2HV{AE4V)Cu=1uFxCKndG1Hzvl{n$0^w^(A*Lge%qhzl6K1 z{jdlFLx&sFYi^?hAd2Of8xzQUp|18LU>TOK_M>11Yj-E84b^(GM5vpw+rj4lg_Z*) z?4YI146m7t4|KROxBlmEnFea>wNDUXVCZtF1)Yf33KH0!BFez;1}1zbe69w_B}@sJtZ z;F0U~QDF(}^-MTG@v3=dL%Ns7YT>&%*DHxzLzc~VXJ3QDK7+$=#1vjEWfdF1b+I^xk_QMO+Ys?JYA6|2G z$9~u+^5_45=vvVgFZNtyM!Vewlqn8DI`5GDko7;q1KE8km`ff%^9yuN;RchwEpA=cY4( zLz2Dw#EUa_%nS{+pBYMoj1QpK02u*%+yWULe4t#K1-}EJ*L6Y$?;p@zJ^}YYwVno| zgCP$p(|jj%e|T~90=l=Mae}jbS%CJop{ZICo9aMJii9`Or;_C`hs^t#>vx6EF=s9py;aH538_`qw& zj0vCs=)oBP{&&#=K<)~t2M-E>Bj>RM0CWvDD4oMF_V8$Ya{>8Kz&~N##T?y!2t0@Dpw^1ORIpGh=&ZZ|$l&A)vn|XF4b?mhC2B9Cr?P+!1@8qb>Ie0- z@6I&%Y8aRqx*NcSlSgg$)DM6E|2IC+auQ-=7{AMfPO#Vu z7bYf#ZeQ53y4u0uiVEaEc*=(O5WD}H-$aCkgD+BD0ZF(4FNC)-GjvyTbbkO%SA@SX znZU{by0Qh-9^(7VU*{*%?Iy!7==!9SpI^ZBNw=Q`Xwg1sX&~rWcM*^Z&{^qEI^AWu zkAqaePkit6w*Z%K5XV8vm&P|I;Nc7EuO49n?XZF#6TsgR#>~Kw6#<%2iV2 zzy@9T67!!47CxZDyHpxnWX8vJ_o#pjF+TG`J_sBZhd4lGlE91ESO5QiacwdSsMHm> z8w2ibhNy5rA}ZiT&n8fEE0x{>nukU<=0+gQm{0ryEh?a*v)dK4<&@3#KLZ0psaki7 z3TP6o^+2ig4!%GC|08Rj4cFZKL!dOTVUG%EISNC`HIPxDTZQ-q*+5Lt3Kh_54-gx) z>;ZIYI*6^n1UlasbZ&Z!iUEWTI#Iht#eoTYVUt@xr<(z|-hg{s1IbEe{?=;@3=CZ@ zDt(L$3|&1c{frEt!48g=ll(3IpbZ97RF;5-B=@K+U}Ru8?q&cQXlgl7;_?|}JLop3 z?&GSUO(>jh9NmXh8R{7rINf-1U9O!3sg!PCMNcx?5ECfG(jEtV^T2Mdb*Xr2~?ZX-wnz|KI)}s`oqt zVA0Y1gR!)_VGr1A4E!yivsk-Z!2ST6335Ex>78yI-7R2mg5BQD%yBnRgrnH)i)1%TsZGNkm0oZ=tfd8XLt~2yXwj1@D9Dbx8Gx$m zPB#wJz~g}%(A}eQhKYe;2j~`r_&DP;FFyLg`~@j5VEI!7G+3Z=kw?H7ls^SPJW$U9 zGHk;7;_7eIZ0MHp0#sB#ffUsYpu1{7xYtF+0DNanz>CG#!DV%?kBYzx^;66Y#s@%o z7G$vTnHSj*R~+v3QHgl*^5XyhFH|Ogb8G}sj_m{0umLY_tpjP^2^u@KXi>QiI$z)Q zV8b4jYoIVGVQxOb*sw?CDvZO@utx>F>?sg-0EoQ=!cG9OK_}hv z3%V76{qF9pIYGv$o}AX>f)CKes?e3O~3xgGeH-OQ0#F@hUilAeu7)XF#?2lI{;L zz8%L>n;&8UZJFxrDBxjW;McgpuW|9kK79rT{%r@o-;h3_3TjHDwWtoUK<~#mj%e&O zz5x~O*v8TjUFqjPK)al}`w*V-%E$nDW)8Y%z&pjD{@Hj1%|8vNL0wMJHni>!FO-in zGrT+pn!s`e4U;pVo|@iW%LDD*flmGUU;3n*zuTRK`5^S*#DKtFU)T|p(5CZ?O?9C5 z=?lkmE%?zyP zk%F@~IA8z##>9Y}a2+xhfa3ZJMqGnVDul-M(MxD?J>?`Qu0bkZJNEj%3H)Em(c7WG z%fRqrmIgSCm%I=>1P)D5N!47thM|V9+m{D)Tq9$*>xWK9mR{c_FZ@8J_=0l4mm}D6 z0Qme)aDUzhylB1g8G{J}LwN5_(Cm8WM$l|~=SI*>X*YlOK~<2P^|4ac=AZvdO%eX( z{Kmu(9@gulA`#fz0UBI-QEmk8&El#p6S7nL@9p0CWi1 z@dZfi28;(fBE;pd&UIM-qJO+zLATeBlj#Zh_u7kxth&-KWzQ-r?sKNb7Xn0J=7- z7kmN6G1u1&0mofefTqZfxo%?UoC`WJ{zYHi|Nq@!1=h|irE0ydD*`*gT!^lKz+Ui) z@u1_)7gsYdbc1=#2Lg__g4Sqn=mAYAfmoeeYySWLAJFML=Y@1RyuaJ+I|n>wDcB2E zZheA(>H+?32Lk>F2|y<~d;LrnzTgLK*{@@Lz|Sqv>AEFt;TwqScVN06boc{kTz1Vd z*If)RF4n>w?`Bb|j?3`@y?!Pyo>pPF{zW$y*T+J3g@MvI5w33qo$JUi!1{roTOa@u zWXD>gLDx5eEIkgE1}(qf7X+>E{C}(!bT%Zz3kej5YxRQFVGVeYF)uVR-7eCF#qA40 zo6=nWfEpSkxSd6SB)7-ZAO|`@x93)3gu4y4aDQ3?PBoxrJrQpAGg+u007*3x0^n4G znN~ov>(I2agW<)}YGh~QPb)hsFx>p79ZPr{Lfj0gU5H5O3k;xc))3$p=y2VF>1NQe zCQvtTWq9$iig-7(V!Am2TR7JigTom-t4>VrOj~Fo04__`EHDGRdL5>#L6LUMbv?ri z2NE0{QjQVGCLLG;`AiYm!Ju*rPr}F&?*->DXt9!E0ZP=+tO&`5;-IO0|4Q&et7EOk zpgao6cfEcl(5xHqqP`M2#0e(u31t|5c!8}*jcn>b(cbLJb(`8!4nVA@b8TaSx_UuEzo_MUw}0SoNo4D zrW--5U3HG`k zz|wN)KD}@Sv^ZS=sRGg#t^voB>y8EMK#}LV3p2@qE>(gSu)7&vOejV68Q#{<(jsJU zfkT=BTQ-q}cmQ-(6(qz(u!VS*6lzxA07^C}sYD8t)fbdNvpVQ_Q3goB_r{fUpYEIs zy4wdDM*%NRlpy;9R}6u!&H=^etwNAjKs-15icnd!V!QNI<9WlNWtC3=E)j#g@guknu!-TL5%s{mUX)&h6X^ z%D(}Dy{;=jhHWqbok;{*tp6;Afg$4yRQ*nD>U-ybmW6>1`>KNLa)<@3)fI%;(u_?P z$QCcS`UN2M5>WNQxYSF*)icB~Fl4Ae)hpvt|H>HViv*B*3#j_fg*be@3$FeENWBMC z{b5|{yWr{-;u#n+BB1Ig<5C|5SKk0qp958&j7@z&Zy$I$o*G=w9gv;|h@NAu&7d2I zUT748*6e^T1%@o-3wZI(2E9{uf~Jb3kt&cp=~+xSkG>o;46XFguPE z{QuwG3+g2Gx~^z`!x8Xe5?uWYkoqI2>ZgF!gZg3+^}U`Z0Wad=T1*oe7&7jlYDolZ z0o8jDEdej|;p$sK>OY{WHw3E(<$Rd>|AsJcUj?aW5dtSYm=_qq>XDq(2~M&vPQrD` zCowQ&$e`*voe%OjvM$hSw15|r;kq(Gx=c`YP0fczNjLa1u7KW7&?wQ1Sh%juAYDGF zy5ixwAn_jXLKm){IhlbWBLP*tK9YLS3eJERe+^(E5DZdZ0#XmYCK471fASy>1K%PE ziTQvR$Kkr>CNnS~4Z4BG3&1DubylSfT)$FL-7f0foF8H@tmZal3Ay8Sr#T@H5k zf({~t*w=cp)VTZni(?1=|Nn2^y%l76#swkp3>SRC4*1IXuosJVfu{&wg3f~KZ3o@+ zV0@{wH3ZZN_6z832krOmoC<23cY@cs_O^rODLTPxV0+yiI>C+l=Hm&yZU&vbpe5$r zTR}IgcD91%7}DVPQ}YWjc2AiKa$uGNzaV=S1N_=}fo?~MPIrlJC!20Bht4+8ctkhY z(9S;4U~_jb$RK_J#|Qj^4iET2cg{0(gPq48ejtti8hB=_GvEj0_RE2m==PRz@C$%NyL-X@tC#5p`wVn;DcHRNPR(Ge1)9M&u<#2qK>W@R z*{28Hat2y{4BB$WF96;q#xLk#06CRnD~2sg7$fWqay5u zZqfh$;OlB(D`glBz=cWoLFoY!4*UWPy=5G|^)mc|?oU7` zeF}gMx%|@YAkpdmhhKoH8?5&~nB*5^k7O`H_?1sxUm1)L1Jr$COk6m&Fz zB^J=}6OhCLjknG|P>-~`7nEN41)vF~8SHV8c@H`Ret=G%1Un3rct8oV`H(|5_<+q$ zw;$c$!!r#G#NlVavbC{hHh{!;1}fV2K%x3fK2m22Z$e=_kxlt6U6iUJ)Hml z|9{C1+TAMPCeZE1(mNG&^<8Hx=prG=-JIQS9Q=adj&mn?@i=JN66mmIaJRY}bmo$4 zN2lure$f2`ZJ<+A!a?6Pr3+-+-30Lk?|n-2pqa$@K)kfLji~pz9To zNDXK(Mxf-khvM&|9mqE}$fL{RIPe3aqnh!WMuLb1^Mo38Ux2l5D$aB!vP~>vl z1e~`(;Rh|p|LsDGm<8A~{jDvKh*|Ob|9?oaZF~}9P49G2sSYZvdqHEHkfOQQJpocx zG#&>P=)G2K;y;x3>g@} zu@AY?L!jG1f?u!|bYn5U0E7Z>{q_^+bd!LTB>aL3kk}1)!I*)FR73>;s-$|$WT0h( zV>7tq5dcRs$f+#+$i5~rav{Op{F8~l=gq(W|6lU``u{)Ui7>Z7#u>EC)cp}!`>Je) z#M-By|Nk#fVifq1z$h>$g;BsJl~G`32BW~~Bu0S)X|VI_6~)ok3*b7!<4w0KM|Y_} z^8?0S7Kh#j3D6;gJk8yXESm65%!wbx)5|<)iKaDN5=wQ z{I>%2mN_~LS&aX;e&cTuWdyAT?{pRDmSnyGI+WA8TVzM;CH|IPP=}JK`3EC^PZKCl z|6r@H4F)X`IQtD;(m-2-pk)O7JmP;}HA|QoK*rXDwEi#AJl0$R+6Dhwp*!|XZ|IWn zAeia@0~C(C{sGNgffcLw`YwSsMqgMh0UZq`;Lh5@%D~X+Dq#Ju*r3~&<0WXW7i3}9 z3efTr&>9B;kV@p;&!FLhr=VkOoBs(EJAlh4h=mZJgavgoLM#T&8TNu3FwJ{GsfwXS z17`j1#mo$D&Hn_7j-o8Eh8z9j)pD4JyFa|>U5vKO0J9fX=f>N(PVqA9p=t06NUV^-REj(Ut|A0s;R;FD&8&U4|XqU3#PSTd8n& z>6O-Rr9A&d&n$v&g>kgp4l=UDvJ*^q^Mckwww^3ye{lwKcEhp8gEIsf7-n|=>i!TO z_F@?q14D1@S{CE~GL{#XhaoG|upUeRaZdwsey+f>Kc)NQG1nc` zyQUiIKF~dE{4K(umDnCEtta_gKm((otD`~A{^a)mf7gwc+x)GdA$*W1=$_*}5#Sy; zH|VbE%}g(Eg2xtJIeJ|i0zlVq_4@AM7jTu}7j&J#FW{=dFX+19Gk=|{1*l!R;f206 zXo+A)0O;CjWiWdJm@N)w&j7Qz!R!TKHmH6APx|@pc=6c^q;~^Y{J9kaLqqKe27d4y z6YRR{i%oC%w0pyTP3+VN~pz-9a{}~&Q&%AQ6$~Yxx?MSXeOG{bZmw5Av3TVL+eVPOk~^R>`bn?rlYm~|6`-v%PhR9$ zf>!dE9P0MH(0Z~&soV8L^Ffa013UqsczUr<4Rmk=_;kjW1EnmR8DF!(f^x+RaQt8f zCDPyvyncIt9G*6q`=LM~NvrGty1W<~prE6UKnWj|9UeP_f}}J7#0LfC=1?#neChfI zrq>=w_p@`L-Os+`EGQY4ih}aYKA}ILAo>8JUV>Ks!cwm={-#jmToU3q$acYv=n0NwtcwekP|-p~&%2TH61K`D0D8BlS<(sH0g z1C|fW!44>qfbrEKd=AJJ?Bk{CBkj2B2GCSB zXr77zoG(B;P?z;T{ML8yp`g%vjE}h<0j&xKb(A3m8t7O{Xbk=Z-+R3PoFx>UKrzPO z$_Et##p2swkQnIR>kXi5+dqTaxwSmKz8At@2_f6CUn@^ zXHbB?xOo~Jy{5-pH!y-0EQ7NKe+%fYnr_z{(1p(?dqJ_nbKDgi^N={r0XyVEK(FtE z7fZB3C-mF_jljA-0PQ9Y==ELjLT){%3Q(26GK`$Qf0UHQ9 z!V7F+i6FwV<8V2~mfNL*D3*Q)dC~Vkuj_(<7xNuKzAsUQr8&^19i%jOl7WE%oaSEc z2hEoB`d)bPR|^&>y{;EP=Y@eC|6B`HF#X}|_I&_eT5f=L%1*;sRWS=>==o8azo?4v};hyoj+!OS;eo zHaPLZ%by11^lO8qJparu82jckzhLMGY7|AsT<@S3>Y$?!p(%JPxcJ@yPQmf^pyU9m zk{3cnL1|bs5EP4`G<w;JtEHFfK;7#K%-93`2lDs9CLkuT3le% zpnJf9{mB*<*pM1@5BTQtJ^tXp<~Zhhh7nYQg6qybovv>{-DOaKz6p47;y5^nA9VZP z>2=)`@WR3lVp6F!BvkjjSO!tC55}Jc;jim>IgEcT=X&2PO z9R%SCx}Fu9c)=r1u8{Ct1adsMMFJX00tE~x@#gq}!m~ua*LROa?4A;?ZdZ<(ovv>> zLqGJoz6p3ydkhqmpo`+c!R-qR(x*_vKtcK@px1ZLi(s(Il3O5cAigt%e+n9;hj0X` zk2TgHMN6Nr5$Ut>4QP`)wk8R<+5#1XTNn|w79{Axkz6Tc( zTfnK7%@-sFDk6@6syUEl4YgYsdVRN)sDcwNxRD3VATKzMf&*RRnClV7jZ81W^9Zg_ z0$zML0unD#hH2&Pb_K2XgK7hpE@#0?K=B3A`nsUo_e!tpmVg(g*8l(af`=4a4wSHT zop>G7>$~NJy(eh%Ysoc`RuI1*th?kGj9(AoZ|ip5W9@pNbR9|@cKdSlg2!hAUM%lp zW_T^Jfwk)d#Euu&BL4pe-ADDJw+}S90veKeVKfOe&a>r3l;!{bpiwi_?ilEqCxkYeYv4v_BLSu%MQyrzI$I`CH|ni2#(XM7=>` z@CavS1a+7o5zY&VaO7AMKMaaki0X|@FRz1}2#|=Yff{}gBvvcX>$?SXrMZRcmJ(j@ zjio4c%lSiKb5uYH$LPRoIZ#3=Vd-XneH|2|FE)UsOCEN+KIvrNzzB&eP(NWK)9V~i z{Oh}e(gS}BXjB=b10+@r*2LceibI%KI#dia#12Ut{NU+9TxKjj0fE1gOsn?$ms)I9$-%&;3h1nvxU*K1ClH|Wa08?QI>`;Kz>c}zVdw>)O#~|t>UxmV2dET)76{+KnIF<>&@>071^!mhm3^?@ z%U2JO7%0Y1fC>aqOApo&>4GW;H9WdOZQ&h|7~cVnag?_2-2<=~Kfwrz@f{4X7=ID) zVjox<6yq--F%Fv1g2s3Ps3&3T3X1VkmW@oWy+Dm=kXR=~(;FDS62iX&>8+Gr!Hi{) zsR1t*b|GRJB=X`y2sD=4yFjrF7SjP02);XBgqUKFW#qaPQ6B6;j_*CJ$mbsghlL}~ z-Rb_>UCPlN%X7T7=huJGHhqR;trLFz|Ic{5bqZAAcC+5=@BYuy53_4Zo)0=38ffcir(V!NOTgdKDOn>3;T z0iDUx3wB$;|8kZWtfrv!z~A~Clx`rxz5XIE&bfhvOZkq0-3Ll3w?O4UFUTEG-7lh` zT0wPO>+MqG-rfVh{{MfGJPlOhgP5Q`QEx9O7+(Cd0!0K=kg4m&3*ROG|G(z%z6_PW zXT{9Wb)$DG$O|pE!O5ZoDkba;Pbty8tqs3GXGcK{job%HgC);UMV%p{7rMdWZQTkA z>(WEr?x2BIw($QKK-XKgg6!!&7w{sjgPGyAIHUpriM^N_^#4C-#hPyi$iZNtPu(CU z*c;-;SUM5lb%sg;;Nex!N*qw?0k7A|`k&D#g;bw_4nD-%CH~nR%hO%T(HYxv+!b`N z4yc(5Dg}6q&phTdM#d?Tn!`@*3EoH&@f!HMG%Xy-R%7!Wj5+Uwc@P8qL_KuLhVbt@BS z{H-GZlq|M`$0|Uj#|%)Kn8n1v5De-ao|j@^$odcJuJ*bLWPx__?l|sx2D~oP72N7M z=DLI7#mw#h{`b1>fc73cUhG^4ioeoO(0S9{u4kHm2o&*y4-_rk@#61VP>+xY)0AVb zpzbDU3`zvt?>+c~Ig2A8@WmO322h%NITw_eT_OEz6DhFskGcNg0(V)rIDk4kpoYo} zMsNcg)OF{EbZ|tvK^<6_iB)hDdC*-K50S#^I$lVJ7u9uo5Dg&LwcIW>-N@8C6%-pU z)B+&M?OrP=je&)lJ3-Y^$BWelpi^K4UMO$<_y1)XCxBQ22v-?*ibUkdy?qVg3kX^L*_ZaQGi{{Ud_z`6P%GR?mxK^SmKM z1H{XqAn5h&cwu7?%GUfXAOC?4EPN0E66@FnN)Y@lcag+OpkgOMi)&mbSi4T)Z`})G zqh)B&sP4Id7gJl98D4Js_y7L}R)~FFCte)%g9LJA3p|kJK-t^3Wf!CkZ4`h z1d3L$kb4^_?`(OIuM5gMJTIPa{P+JQJ2>w^TD8mcKt6=z9sFKrV;MzKv3b~yX8ft4pL%P00%xKG4s4ww*nl7*b=i0xOoem z&rtZsA&>$ZV`2!v+VknI<*@!<;@^#SK!X1Y+y^AEcd~W6vvj(#bh~qOx^Wx_?Ve;n zT)+j&4`|Lpx^)Fomx4&}d@E0IcPvL(_s8zj;hm*_y6af9?Ha5ZN|d{g&+K&l((C#q zpfmKx3&(AskT2DVk2~fpzzEK;Jm2URQ3=Wi+6zLF>1GOe{Im?fR#iqsx`MgN4t{`g_gYhH3$Z_&EM4FoVDv zWg+VYT>o^R?q*;<7Vx4FqPq{IuUqDIYt~F@b_)C2AfdKFrJbc^&WEKcR`YUSE@b*VD=(Zf_d^K{zwX^m^ zZ#fGjT0lqVbe6t>925$@f%1iuB?Chz8??-VUX=;m?f|_l6SS(M`+OESZX4`hOa!?b z^+3pO&=tubXTfo3_nXEypvEZFNu92Lx?MT47y_~wUu-xHS~COMzs0s6d|(}4x9=b0 zvoH3tfg4$ep(kK}0IeL_vW1xedIC0xAMoOV1uG~;L*|3|!w*1j&;rd2gEqY~9Czda zU0w%08~C^*cm|ieEAT)!=vjag@Nq}bUEd7H9UUM%7YGHu7~&JZpkn}d|4G*Wj2s4d zd|=C8KfB#$bUUydcd?k^(!(tP;svnuI?d>Gv6=#nfL{L%$K5y7fbIy<6k%ZKE`M^| zeZv7?E`io>CFnn3n6aMQUnf=xe!|-x*@iB zu=F}U=yb81((S$i;(!$%ep~_|9!Tm(r;Fthgsu#z+dxt;z`77)D&RizVOafGkDUGl zuzI<(_6_tTnd9s;dbvR-$Is{lQ5g6uZJCX1s!3=@M427sPPN#=ybD# zoXf%v4led?50=i-7rl-%I$bRPbf0^nF3P}goDCFM-N%o+L88hH992jYyI>b18t%{( z3d)b5``JK6jzm~@sR(l^Pq=WbK=;q?aD{FrP{>-kTNE>Qx?3z<P@5 zVX^*DZr|;$qwS+2zi`I3R6i{x4Qz|gj|qu0^RNgAk7NQJ}Ls*r#eCW zPL9`s-LfEuymkh==i5Q167yy&h7zOJ+ci(YmflCT^a9w@Q{CO(`=%RwoppStL1zR@+;Im;_Hh7h>SX|3!XW@IK0%Ek$oxrQaQDry@a|w(@Hm5l z$JwIWSK`}2M*bGil7Vh#nQnv5(m$XDN8qssSCQr)Or@gT-aOsT7Tu*h-L(SRj5C=( z2>*I*20Cy}^4meCQVEdsF;rQJ)&nJcP-ohL{ms^0E6`oa)B2ykhl`Pcp`N4l8$b9& z(r#x^SUZEm`WJuyTLuP(8V>6Z{OylHeOhN7ZQnm&&pU&IT!M+e1vDSl?FT8wiAE^CsaFO^qHMRbfwr#%#226_lmHofth-i#`*;ZtawtKfw6lUGzS96_ zl!`E%ITO}hDAO(0da0DP`NaRY!{ObPI^FEdhpaCYv+-|ZijO<|&C!OXRHxffp&PX2 zP1*WTIjd!$MVXYPBPiM(ExH{owAnh@yB%fXkOx}9XY4O+jI zICMMlSR0gCcKdQP|NLLVZRPjBgzcM?4O6LFx0B9)hHfXB|6m!uZYPsguJ9Ec zCCc4y3f%&&mrA6%>nyCV7Yld0f#TXtf%%m7`A&;&H-kHDYke~D0dVDJkYGgi>KoS@?>|Cic!y9soM{^*Re=#&863M>I~J!mV*H#Zv= zkdRCXFLbrLn@*?1>k^Qd&T-K3y$r9@yANw0WOTCtd$#+qw(B45i`{+#%$FG%yH9t! zDQKT!_WjW*05XyTWL}9VXh}Qh4q{{@6(QQ)WV$)J-FQG*?6mg9P6;Q_RmB{jdx-_U zx!Ew5@MSTE|1bUXf_EOIf$C<^>}SImAN`-B+fN~`Td>!Ov6Hdem7{|R5_$0W?RI|f$zeWRYIhQ<0{FxF@Bp1i2M-VMqyyA2czAG;79QP>GXD)gOJ9|Y@rQ>F zC_H2s4PI-5ybfwN$$$bvzuT9igV7NZ629<|0I7k7M%MrT{~@6P>i2b%5*ncL^!p4Q?M22j9pAT^ahr#;Pm~W`HcZ+_uYoYpet1b5;Z>Y3ltjghlAD- z2P*J~gN{(+pZFue(zibGM}p;JKznU-R5w<9jq{Ga#*z&CDu;*UGUuW|7czd#%ZSd&1S1SAaI1iC@q2bm8F z_D5;_BB%KU`P2ACj_?b*3-AlLs0e@#R|Xx62f7K`-2mKjhNcHde+$&h0u81y9Cw7Y z7V&hppct17&OhlzySP24Ww9{@6#TJ&-=ciydqX4Bd4m$JxM{=s&c-P-Piy$P`&T>GNguZ?1VLfDH?BJ3Aq#M{6Ah#Y(HA`njmKKu>#Gc*t^!d_f} z2oR1yNO(L$^!K6T97sbijJ<&hkfsQv4de6x92pNfT?FrRJAHsieSkDzK7ge_@${zK z3DWWrcmQd@Ky-nE@D5rKzPJr?JquC+ju?j_&V3vZM?l&@$gLVpDJq9Ae%V3o^o&BfPtgqx*Pw7-ZYM^}%9uZL#3p|NsA&KlqEe`>^&Q>w`sF z+IGwr5B_I1KG}Wz;tTB?%*U~RvHM)m3x5^{hUj>34$6>e;TCuidj)*} z4H7;JkjF1Lunq2arhe%D*jf6fJC*}w*bI6*V0Sf(w)MgP%-G~w|ChKmg68bx%eWxU zxOSO^A^gQbcF=$uXv7pY>ekEh19Yx;HA^?M_K$A4@PObKHQcNWy)5$0M|eOAv20#q zVd(aK^P=_N|No#-y%#4{!NX#Z$bghDS^qQg_~H2lbn6E;Jt=J(|zGefr@ zsN2K(;s=P$4jL4OTqx7+3lV<+5_bcQUa2%zaDXhSk#4TwVJH#Zz=)KXAq6J~gAwut z7BE3b{NXQ;KE7yUf$rJ>4cKKd{x^HkG7-`dL5ygDDviU?@$myxNe|c(Ly2+tix+eM z{qJN0#U~r{acHoi$9oGWQSpBE!aqp7UsQ&~dsz2JaED7D)Gq@CGbgB5D!_d4HCMNr zPPd;-w*a$Xw;SlN69(-IK>;tSCqM$ijR)4PlYudGU9S+hRJ<@U!a&P;@lc@-UPr9cRk{jRv|2WOQ%~9CuRy4GKbo209$r&6dRg z>ijsc9A{wz7m4sn#qduz8#E(A_wICiurQx{(a+4l&>JSu8Oqbm1S;WJn82kh6TFc9 z)6E7JX9IUGA?7{kbTRycQt*RP25jIE;y(jq|KTn#K;4qtpu2}5mxgx#=niA)=F`3y z6d2xF`{u<0cJLjaprQeEhzMVI9EUF&j5=X8ay)4H&-8gz#?svMe zblRb067VP;3quyi|5A?srEgv=f@lJl3Y!%nsRP_U%le=34N-qKzv00)Ui&eNA&Vo6 z5z+>F!3N%w3>vAAS=4y77QkXt;@Vf;Rig^twrOx+(O!sdT#O^tx$u zx*0$lnr`Sxt{YE6MJ*n|l^|ljnspsVQ3+_N6KHj1i3n%{LLap0>&*}&={a~gNx(niae z89LcO3c%9P5*doxUHs8M_TS8M+xe9ax}K8`g#;ZWFrgdgB71f!gg2 zI+{_mThRJ6(n-zEpskGzSru7~VbI-@FQ)hW``_*Q0hGwTTU(Uw#z;4aHhQlkOQ$1G zZy-mnqey3Hw429V5w(%rB5U(}yw zVR%smA};!}GQ2qB3(LAN`?CILL?D+x3fS5!Sq#0tPhJ?G1z+HgXBHVvM@mP`f_x8vRGI0 zfVZ4?o9t-)R$Bg=$@p7Cr3gcbz>AINSQxA;c#65Y9XKGek*&8&Sh_#I2AyaGiozG~ zGC|wPIY5IUkn-ck3?ESWv4ID4Llda{xD#;P^-fPSx4?`4GOP^UrEj{=b((_Q+%5J$ zh$ZZW+&OTpfIPSE3=8VjTafXn!{Bg&5s>sY2RXcCu!R?>eFs|q09r)J&|tw(%3^%- zHDC9M-atn95pLbF9G$)|x|zEjSh{N@RJuzf6k7k+h}VNI02FNfU&C9^V*Rm-u1b-PH4s2%{H zD&$a--TJ>K9z2K`33h6ikAy>q?|YB~x*ZjoEf`7^x&sYBQ(JZ79-U0xo(j<6*Dlxh z9ZdY&4!q{#-{$(hTM#-_2(t`ytzGl6|IOF`zn*J+lD`$S52c$qi{XDMsHgY8lm}$P zi#6g54A!nMN>8_5Dm~6G&(Qk6CJyYF2(V*7YPv!s96Cbzp^j1Rb~NZ_XgyFT)g5Sn z<{o~CdpP;G9YQ#V-S}klNtV}KP`Au8J_$DYxQhg6q@Cfoiv+j;d<{ATpqsHffTi1o zi--AQ^9h#bDhq~E=H?SDS&RYQr(Osy`}coG=_*En!`-nQ-M&wti*CD_y9-#DKewJN zk?s!T;l9{?uKN&3bDaf476ZTQp@0`Rmj3$>y&(I=6HxXjz0q=@l)d}h3%;k|)g-Ll zeBGWb-9CmE;P?g=M%{<87rK!8si97Qp@iM&0Jx^;cH?P2z|l}A$PnIJ!N~9O!@7>6 zjw}2HqXu|UizP^=gsvj*{E)$J_)Mp_Y8&7jUrz4Yo0CV1%oJ^cTXqKVrIv1!OC#dkWRT?lA?)AiGEY z7y}E!JxbjSpjlcZTN*4_O70`OrQ65yPbUYG3RvcaxF_p>#v>VcebM;l0sLw&(EX%{ zj&`$c!G6%WQtg?H3=IE`dRsx4n`JccatmZIFflL$yf8=wl|BN!9{(GE{sSG5&~6V} zH@}DV{onupxk^PEe}dHUH#>o{RSPdjI|JNM(D{`w`h-~+Rxt6mg4P->EZNU5(A%p3 zI(X*|M`x?VU(gC(nZN)4gEHxh#}EGhKh}ET@BjY{y{({&*q}K+qhde5K)?$YLk0$j z3j-k10WSimqTR|rCJA>5*{ND<) z_WxFp6aI^C*vBu>d_)AaMy$IPq#m?HNC><>Yb(g;7ac9&=45Yg2iVCVCH$a^Vp?B- zT+6_~a13lL!wdcUpz~P4svw7N1RQS#@xTK|MW?|fF;cRITx$CN2@3Gi_kEeiv* zKSe_PG4Z#jGcqt_9N^^^fCLaU_KK20vByJ3>@o4TgJbW4AThBAI;!Y}>V3Si=cbPl zdy{{HoQD>B_avwvd#9R+jJ?9Ucw%qMN$j!b_!t^{MX$j_C6M})wD>D#1RpWN1c|=p zH=tYXSX44zAadfeL{MOfP!N|a0z}7UdLgLhq%YO|-#^uu6 zc;fQKaqMwf`VbnI%U*)x5>%{`9G{H*sO6~!=pHsuIT`TcK|Caw$S+Ur_=t%`aCtiU zHr`m=qKy%YjNr42&|=X?l=`t~QBPzn-oJ?_7L|@+kHz)(p|SYjIlMd-lZDrZ&2LPg zL(ZM9Z_xItxN?LacRdo&%Pr8&(CK=j*YybKo`DxH)WPFBJ-#5l*U#LKwf;@=4?kVRbFMLYwQX_osV5FbtJmk6O$sKCA=Lkmlgp=u>5URN62S)fD z=O!bil$@Kqq3j99>kstWUw4a9(`vZ{TpN&laU!%bPCcTLG zC)0i&O6=d#3AewWl}!I%rNI9_Nbygm{XCS|UxF0>EM)rs3Yz~(>#u^&Y5HHp0_m>) zH_8wJo%9On;`|K)b#W-^s75mq)5QS~I&3(Hw~KR84x@`B_Y&khv@T922lcx+p+!V? zasHga)5WphiM@++<`Ovm4!`(&3*J!$bynfye+1_Dp+jrkez5tlb4c@HZs6fyq+u%1 zbS`|709s!l=0gLq%~rqoyPXAe_z`(9>G51^gm=HU71ZXW}<`S6JY(8P6fjR9ohzyLCFaIS>)#cn1B z2Cy!$BxvHmodvx!_Y^em1aT60ed3S*r2^fI|4Vtm^Xn@AFLZ-X#RaMO1YJ)Ex=%(> zup4x~YoNdL&F%bx6G249o&;p#^b{H?9FuU@_2gJ`m@4BluJeu-Fce0GI{ZR1e}DZv>q~0AYdl z-+)-3_ys3|wx1tw1g*9Pi5zbP9f1R3fe+dM9b+jt5p?VhNHJ*L!6$yf&L0qA(0X`~ zFld|F@kR;Ia03Ga10;z+(nkbxf7<}j-$p+iB3z}rl*9UZiBPwjiuJJ)?oM}=&M=ji zOrUd@Pj>pgXuVVtXnnoZv74#a_efy(ss8~i-6uMIU%(P@yh`is5~*%s>-*hEQ@Y*0 zFOIvbfPLfo=l}ozpsfa{pdz3NsW6q+OC=uG*GjFrnYvGf{|{j4bXS4RX5h&aut`zh z7q7WG!&Qz$a!TvT5=-!4K&e(YV;IOVH;`eV5(?5em+lq>%OmpGYvxWr6=RSGp@%d> z=3voOA!R|(OdWVc;nF#9&PVj%A>lm*IlMWr0k~WNxxeBCTRC(_w?rPi*r}AQ`$YGJ*Ua6aJe?f9phFl+ zm^uYPm&Uw!qmMqn+x!N!84Yd!>%srbShm30Rf9IHV%q|%0+GS71=bU^1-6iZfdRae zHLBP33xD{5fbP?vJ=$MhWIP2=?40O!{R7&-{iU1X6TcwK2hhIOtLXb$!3IczHq4&x zX6R-45b#0^qPq*E{5iUE(0o8xcPU4B_s?#3mhKDM;s<{*TVE^V)Be=U@}bk61u|V# zY~FoL`%u7(ch~>_?+$0_KGuCooB!ZXX6=IqA20`GF$BH%!pX|e?atDCgh!kG;16c) z4+ozyGnPZOg9aSJ;c&7P;v*CsGtNTwHmr)OYR?JJTEM~`)44i1a@Z$>^Asc#uE18nJ5E8 z_l2E`N=i)K?i|`Dntw7DX*zVD?{w$r3}fkbVgXeS0-z9N2xvaQ5fJu5g^7V7zWZ2Q z>>&Y$3iLd-DYsXp@U82dD~x_%G{!#yjNjw}6+QA5g|CFLry`beD2Kk5U3{2u$gA zf^0jB?)I{PORLxa``_z(CYLIUSSxOT?8`LaX|CfY!JLz#n44Ry@*0BF1ubeuiZjZhah*NF%ev2?S& zX6in6jDey1T(9eafEPd3fqey<^6z%N0-DX^hiv#i@M3QUxLt;_TrEBhG7(pH60K|n z#TX<#D9FLvAI)zBaOH=aow4wm$(QFv;J<(WyS*iPgISbMbcR0ZcIG+wkh#9l+;-R;QI&Cuz{Vtu@XA8M;3OSc0{rz1=E>En>Q+FwNS zLoBj5=D>owP8GZakB0%Y7Qz=~SHO$2{7_pAe}Qr%to;}88-D%*G&3Nku^VbR7>+aA zv~vrT@Pd}$1-`hE28m=ufdb83XU?4Ib!34wR6vn?=FFKLH(v4xAc=tTCusRiw=V~@ zk@3P45>U-Yzq~P&C z%RijkHGLhc*0nKwP6vrK(Ff$P-~(4TmYzL^5aF_eDE!AtP>z| z0if$81zmr3F;Liicc$UaPbdXb&AxF21h1Z z_<=^&(cQZv|IuI3nsYqD2K`ZE9k&-+nhVB#H#~Kg*U}s>M85Hm$Xc>B50htK5kL@@EXyydN zKSywsA3Vnyz!N{{?rXuQpPCP{#J=3p{r^9TeLTk*z!O>M`j@=M@E=J3k}gdB;E6eO z{WjmR>YvhysUJMih^~JMX867l=yqg*lvAJ^b!TvcE>973{R84m;Rc;c_klm0^}u3o z0nkC*KR{hAP;vI*#rj$Q|AS8B{?qIF0d`xipzDVh)1l%&(8TL!VMGx;et3>EfG29v z-Ma)ezk|kmz~R-7>0j`~GrE2O29)v(q#v}un*-!uP%rLWw>t~SqoCVTVYmK*_pl5;W^F_ zg3W&#?})L_1!5mR4ROt8g&2x@x?N0m{|j<1jE1iwCanOh@xHFq)V!H3MRxf*|hb`BRaF`o<%>^}YC+WUY1yQ^6&?Mvjk>si9O zi&?r)cbkQQhADboe+0a^_U`|G>+hw{jXE)(vMgjNm9;c16$G7z$k^@A1EO67Szd##j_q`0dCg&ISjyhb*2&mi z$^)uId;M9$UWhWlhVL-@gFBE`-EaSog={uAtczhQQ9! zKQBOc(16;<$3T5Af6$IExO$Ls&}w{DMvb`~r>&{DMvj`~r>!{DMvf-Hr~OP7dA2 zjyvUml3rZwArbI;drAk*0!;Y!iv z1HlT^5DLJth9Ds0NioRdk$CoJ8UF|E!K!`I9U#!n+!+cw)2Z7ClC<@z^6CHo-MF`2?PpI(S^MO*zTfK=t^Z3kx_x$j3Hup2;96z;ZSZ9dQPn#1q)YOrg-rjowXYI(uG|2yvAhwikhMcQfQ!NPpH z^?!+EcOVbx+swhYq4YwoI0s)X-s>vR>DtokD$?mXrPo!W({)L&t4^oumR?tr zPS+#7t~Q;nS9)DtI$fXif(;DF;?9uh<`(#GdWBg);J@hw&|wd)pc|Ay1<3JM(AmSF z!V_|5H$*G~db2#_Qh10g=o~DFEa;>#2rK9R|No$zaU6UDIz$X~&j*ABx;q*y3p@B8 zbe}B4an~M*AZVok1N_wNIS@hc!hz$ipxS}qxa%5-Ab6Dk;`$x1dtAXw0>GDTfYuM4 zfe3}* zpI>Xih;$>wpU$Z_{(*)e1?QfC&{Hq`11)+1k)5q~z-*9AXDjIPXiyxr{s9TPN_4jJ zfN!c)=xhbu#NF$v(b)<*7aA06;Ari2HRuG#0w@N-H(5h2zlL5m?`qN63JOVZ%=YxU zI&`|u0mtu}URRG!*FC+iKF3=h{Da&~alG}(zyJTiK5PYDXAX%7(BZid))%obj>}fi@z@YqP_l=x zT;RzFkt{*iz(8a};IfEhiAao~D`X%hBa&qS+*KuTz3^lSON=dGU9QkH2~CVsAcD}7 z+@Xna2}BT@CZUOO3q%mSSOsx~8AK4YE`_1f^$hg>vR>DKF zOhA@UMnyX;YeJJPG>5uEQ|%LwK6v5I@9MegUB4*I!&-&CGDT4SY!k=-P)q zP%MECq<;~migtrDN-GEAo_`4UU~4~r>;)V5;=MXELvJ1I)G>Sw=3c*m7Z&X(fZpOg>0iby{@M0N1576%47r$09!zO#X-CVkDdlrH(gXRkOe;wv)SJ2=W zL${kl>wyx8I5=!j7R*3v5r}_Wlr29j+ zEI8UvmT(3BzYIN2J&PfW38bvET;#v#4p8OeFVPJ;z5=2K9Jrn360P4#`7>BVxCJso zgt-M?{$^rec#-y+nc;5ii%eKq z02=}F7t~LFEMV1qFx76LXl3X=+!@CLI!M`piGiWHo`az`oTH>5px0O6Man7$P#kpM zfQ}e;bAvO-Slb4|LxVlR@GNyoBIRV9$0T~`&{{Ihq@yP&`DnWS+6n5RdJfK@VKpWD# z1q1&FalAAEWz$lQj2e&;6tm|l;rj9&-?=Hz3v*H`QzMKvKTtsZ!m%)?s)qh zP{suaTnwvr_ZGbM<5Man~0O_&;>EgeiLYYn#gh2Hz2>X9w=cC_%G@May8h4 z(A<2WL^;Etlz}1OzvvQBc!1?v50vl*{J(r0%mL}{c83;>uzcTJo^jmu1E`ANmuCPU zMkE&SUvvY=bhg$5C7dAL;M~{k#sVo)FGKHWfE}o|d1zcn9p+Ap+BbOzbs4yy7QP|7~&%@C06 z1ueq6L2(JaE8@j0SsYOc9tQ-qKb{kNaq0*ommVSpo_c1UW8)mm=DTLz1zWLGbqb=w$2m<>_Yo1RALM#4pGIVS;wOJAjUPb(H941N9O=^9wo%yjcB|nW3AFKm6p~ z7?ljrDI6eD&_Uuezd$=Ee|58c1|16P@`+!-0dhWU26(zG;WNL0g8;w&LH@R144?@{ z0dQvi%rDRn%HAMtu?_+tD&_=O>1X~()*TB$bB^(#19=@J_@h8a$a+hB;*SS)WgR5C zJ@_?F zfpmW62iY0nqv8VTCA+A2fOPOj9RfQY%z4oR(e5npnLmd8W(?RG9~BRN{exw^U~Lf~ zrwBSrbhGvPs3bsEfq;X6MJ2G;N2Me%;KeyEh|eKD=8uAS40IaqCw@T(1#rMSD1g`+ z{NV?>-Obf1=ZXEFA5~UB@sN+gDL<>`F{hs{b&R44Shge&;PNz zmIHjJFKAQ&yt4eo+lR~y-EE*U;BM>=(BkMF&^iK?<}AABfn=HwXMitg@il2Z37YNe z4LuR`U!c?VO>nR8i5IKS|Njp@n#K1`>&X&9&|3Nv$fff!*FOxPW==^G#GY;sj~DJs zK$qF^w}Ng2&iDf=wtiqMw!&Y`(*PHA&{g=|AQ$kr`~#&0!(LYbkTtOV{V&0T)?qxY zmrC5A7IFPAa0&V!=+JtAzjF}-14D+0D7Qd{fGBdM8vrgJ!(W)fEdn)OUN(cQ2m{@! zkOMU=mM4oLxZA_0n<+5pe}F~nflA#B1CV(-Sj~H?4t6-GrO0*W|Nqy%P-6mo{uj7p zF?4eU2mKFJX+2QMli>m~#X*!?;Ps9yhVJt(w8X*9LvRZXH6lF>tj&%cU=IQik<HViaNLbO@QGg_^uUXG??G9cBl8}petdD@ z9y6%IaIv=F4?oGTfAH=N{x($>28I{Q?=dqp)INquYFzltFX##?B1A7N;ue6I=6ir& zVCfl9%{Tuuzo739(CO=%{80zNr`kuj9)OkZFIK$- zFY*ED`SO`R<^xzCsOSJGaj|yz%rBt-nLjR{C5=Do2dId*PWZ$h<6`Z=uW|h|e{Ag@ z&{XGVe!j6_-Fpelb`ux&wS>O1O-{daZon^RI`GD4`hk!9#F8{0JTg&{f5u{ zF|IdYia{(va0`TA<0zyL5r2?hj2FvztKK>={* zz5jfeqsDOhV60MOS2e_!1fYd?aAAAKu3@9NAgn&}0po@wDC8Fb@;>l$#YM*@^6L7@h|+d%-7PXt|5I9^P70nTWy zYnqRM*ZR)rEw5ny+*!H;Tuy?DTWI;(yvKSAsLN0i-P;Np81C%{SN6=OUpRtpuf4Ky7R^q?tiUphkFVFq@|G$K@`QLy3*2BO4|2IZGry5$@ zyqFHIZIFs`aET7;554gS4hw%V=_aVP!gDwD&fVBIpizW3tp`e2KJg23bjNZuS35B9 zw_IibAFSmn@`*p@;3xhV)&~o@1=9HSSwZ(dfC_HVSgz|8{i^05pb@#n9{e=D6ztP+vdb zf3bt`uj8&qdPKPeI%_}t7u~XeQy>ErQ2&b^{)4-{tp`eYY(YC5OIcrluBd-;@&+@* zozy#bQm@>N1>L~mdIjXf7Yn%s%0xf$N3tFOEz%CX0&?$_7kfa%S<`QTyeSfSy=pm&Z`G?+<60#ht5FfsY4D12CIV+ z5ci?%Prrk5o?#ebCkW*1K^Fe@BG7?&38H8R;w6fJDqG|O@w~7eXXpo-szy1^kcGcp zo{@oJAE@p2V%H&N@R^3Zj0_Ab7$FB5?f{J^@wJKeAoe9Yhr&Ix$8scSs| zO@@IEPlTUrSiTD6QnYRAhfabU!c;xkaGf!DWp^*ZlMO@rK#l~RWe9C6BcE(IqY881 z8~FBbl_`)s{33J?ECrAipLO8cLIC}MycwXDE#%yRRv}P`A)h-yR@~k@Kw{kL_Ti0N zzk8ryLy6njD?lzqi`!?%sUNqO42g`}${vs-am4MO3LJ6kF$o&Cm9t=R3(B*g^7+Y+ z|D_WDOGW;d3P6|YOao1Y7O?y`cyW)Pm7)3M|K=m0!DJ8g)vnuu`p!WguVD=4~k!0_s)Rg0)!#% zi9&=I*8bT~s0+INK?f&5M=7CQuWo-(zZ@Y3>cVyV8z3qLXo=A6uY)26DlEJGHBiJr z-7v^BA;LV+&~0})N9(r|t?qc9*4rig-REAUax*YAA9HAa%~<;Je>q1MAad%>Tx%-%9klt65tAmxw^_D?az)CKtpl??G-c z&SHF_0e8y30Bmjmg*yy)HC{k0Ha&CZ%*{p#lnqTc8+p+9K1|3Po*?7v2`T5jQ@A^}>C#T*V<@N(Qm1)T7q6WT5+ zCZISy?xF%t`Nv&Uz_YH$T~u74;^4_>=v23licNf+@tGG2eUNej8X(O-CHUK?GcYjx zSLsb)WfIr{TB&$=M;Pb;i5fs$A ze;wZ84i*8q=I{CIJgpCILHECIJ^#CIK&2CIM*BfGKeJ z%!Pzc2OE>X4h1o8fx|mez@!J5oB<|lz~lumxdlw}h=Wvq0JD9-Y#lJ!11598%Yx5*w3%1{;%r9vhQ@ z2^*7u6&sU)0~?co8yk~=4;zy}5F3*~1RIk;92=8B3LBF^78{d50UIQontw`^3-WJk zlwoHQ_^;9`!p8~cKtN#Hn}DFXw;2FAF<$Js#H0KyW6i>bp|(r{K3oD~CSxxrbU za8@Fm6$fW=LRmXmKz`X$4!WWl?F*V6t`lJ3Z*c}quKFo}ZcjG)=BC0}s*{l+ z$t{p^MG|?mGm9ZZ_|O0U!7to|L4~zO_u)8jq5REFg}p?)+l{69z{lnvoaHIy@V0lGZaEL z7X1GIzq^*B(_Nt3jib|@=eWB9Xg&_)UeF0MP}|GckGm^?N{er9DoiEpjs6OtNwaTm zDl8=|&Hf4wpj%tnyWIpj-C4TbL^|C$j=O7siqvmz3QTCmXn>mi-`o^fK*ne=fcA;I zNd$Mgi-1S!85myJod(s>EZv8pPW)dc5RjpRJy5MiXM8}^U!c=Y zu&v4Y1-ovm8+0uLXtbIEx*q8`$dwF`3y7fg+;LY>z%casa)7%2-RyxGDgE36;r|6% z4^+C_GC43blsIIxNO22fG@yh%Y%V@c5FGU2ae46W3&box$g-E9(}cR&dwo9yW*q2) z8SDZv*fwJc$lwK74d#U#%mUe#fiM`r~u4?Y#`;x%MjQZ7#Logb#iz6@_=qm2W2s6aC9=h=sgLJuw$-&K>b&g zwks-;=BTEhw(Jm@i3HV{1@$5#3}IN)HP;?-U$=f7#Kj? zDY}_J*KPg30GdOG-pvG_-4J@Q=o&M_|1ysMX59@_*ccf8UuZtY(rm|2!Wovu_+PYV z5oj^y7uX>V@HJgw-5+0MfNcQpzjNaVK(hf=Ga0;42DEVTfA_KDZlL9v|Bt(Y>S~7LZlF?-;kX;9mIW=M zG2j<;b4cUA<`w{VAEbS{<{yVZ%0f_71YkYi>tk~r3qy&$@qf!Yjykb!H4fiI@1{DXO-`G^RrKYIOmUap!Iy9b}z_DAYY?~Zid4jMuCimGA4m6rYx3THyKbq1MPz47j)x!QQOVJ06lsN z6yTtejN!N&sD@%V?gm;m`v16_2`I|az&DK@cLOax{eRpIwDJ_$(U2&BxR=m+KTv}0 zt>YT>6s7Q3XsEBmBBYH(FDBY%RALwP*?ud|N=|=8s zb-Sp@^!jsjx*KFM9Crt=d4n#Gd%>8^z>vk&>(BAxdlmyjx4S~~3r7Byz03>@V8#;& zqr^F*MTT1-1AfuU4az?n-N)kNx_iLEWqjsEXcM?8e@KF%xn75X zzonU(fdT9|{+0?5ld*S-${Yp;hM>Uz0Uq7{I=$f*-7PAhkmnCS5R}G$%|*om)@$et zQBmj(QL)G{nZPY@+(pF(lvp}lR9rv`K&|+0#-PCe6F|nb9;md=XprU>$f%J$r(b7`RX5N+c-yWIEV4cP9GJC;|`$kV>s>rKAEqZ>9|7(D03Zm zhyZ!7o9TE1$SP1iI^F_&_1i0GjOw9qR-V z6=7lkHJBKVH%KrsFbG0T0J&5MtTuv)fdSOm?lxln*zK>=S)wA+&Da~J5|rW44@w0Y z3@i)`ogpd~y&)Isveyih`gK`#{K2 zMdSaV^<*w8D%~DBz3%M2ENubZAf8|b1K5WD23ZXMw}2OF1pW^)0O#+LeKP+`c8YZS zs3>%^WikCX4EsL;6mHG`8B0~VeN;3+N9JWQ{5J%t$YT0m2vTYQRR{{!Znm)h0V>@k zDkAR9|CwqUz-2;>ic0fA2T4D1 z<4eKaH^CzWVd34*A`ag_cK@=jmf&wm1-0{?6*{X$4nAjNuI2!j9H85KK#Rw;LA+K_ zPVIJ==?(qU>H4SJ*&qmXI~2$NK#jEH?iP#;(3WnqJp+I1G*GNMtMrEc2tV%n1C;t; zH3dgd!2iI6fQ-dV3=A1tWVi)hJU$J|#XKzs_*+2B_q)ASdfiz9j=TN!pIWzKdb=NTlG8)z2%^auwDRkha2x%W`;0CMfl?H87Ln#9rXXgi??T( z88S5b7#Kj!wis4Wvkk>OQ2Ra*G@jF4E^_c08*@2FL!AW!e@i#Wjqaclyd(n@^bXB0 z7)y)0-4vj~?v4odW;X-I<}ee6|79lK?gszM4E~qtfY;nwfExgekj6>3yT<=A4sf0* z0I|&=Ok^c59N>;E6XPjr@pTp-`=dqvy#On2xF>Cg)=+PYa7KJmx7-T|#2`OGiqE(1;$*5xAn ztq=bG|KIKVBR_?91NXqJQ)h$W!=G@TWkLP|IaVzCcrP~rob=g2JVi0;umxa zcyV6L@E3<5LXF2ZfV5j=F@(KXzm0{VyA@<%^AWhQ#~MJ3F&JJ< zf~bdRZbfjyUQ|Fhu(EG1$bjR_M?md_X4qo!W6hw&7YxUnL5sja75?$&KcFT6s4i>< z&2d4*SU{yASd0VC;(@aS;4Dz>3ef?oT|ung%?3;i49AO1zgMq&T@dWzyr!)bslgrA2=%j%Ie)60y+R4)KXzM?hY0_4q1VH zyg31sl>h(#f4n(`722+9&H%M^7#JARjyLCkna7&*K=kqEGoW@4L1PzkatmbS$b#CLpm8NoqY<>s zV?~DDm;e6*UZnqHVrV|1(d)b7#hVXI44{#OX&^HLyZb zkRAU^KLmF7f$Vva3|0eTHiOiFWV@$<(l|s7DBZuX2de=wd-s8oI#?x0O>;d9LmBsX zcaDGm|Nk!&e9Z>hJXFpJUfbUr5~Uf0%B%hcOS@<7w^(R4g)daMs@drN(k`g zqK0B-hF;ed$J;<6pfV$%``nA{L!k3tSG-{Uzyuqu=xdLpG zSuuExDX2K=ZUf~X_zn>8UJtMk$O2d&zYUbzU^_v;9H=ZPQ+M})vM1QwdqrS#L7BFj zz4bte5a?FwnHI3*ly3@_2IWYIhg(mUc!6UF6lj4j-ls7zKqR``K!u3*!Gk}Tvp50* zUn~{+_y2esC}2PqgT{Q?Kw3bY<6xy=mg^r-Sp$hcxY3}P3w$vJY&0l3yW2pe7s6;S zu+bnHkQrd3L0UkZ<6xy=mg^r-Ckv8(;6{Vf)C)_n(V&FY-3BT)5k|ik1i2a{12O|_ zG)N1Ga~!M`#Omz>75pzg9|M&uf506$M3nayGBb4V1JxU?|4Yof<3(C;mk4#Aeqs9h z|Nkt3;1@s2LG>aihC#i(Zhl0hXGw&=xCNI5_W=7qH4#F^ao0bf&R};RsH#E{2KNm6 zKy?|4FsPH*-3O}dP=vuf#y(JOh!E~=1#M$K?)nEb$rI3h?l{|pR&Ie8dAmVnElBD` z@LMK^?sG4C3h>X+LduUb$mNF$a(m+gN_(TzcTKk|Pj{#UXt!f6M|Z49KriI1fzk~D zouLbkL-s_!V6%ZQfp6Xm-k4o03{lv9KHvq%OD2Ywpm7<<$UJxgK{MkHsLZ*6R_1_* zv%_C}`w1>^UUo1uF!cKFd65^8ubLqktFt?*0GYUAm|F2zaX+ zsMvz-Kji3i-2z&j1>Jbo?Yae8#do@Kbi3|puHaxOP0J9F;}*zBkV7u_Ae)0AV=dt? zav=@@4M=vE9%%i>-|`i-b@BB7?!zDW54y4Nw>|}(WyIEf?!UkX{)2HG-u$hXVIl!6 zFF{wKHy_|R?m7olVsyIpEZhP*Q^9otsB?SV6;yPC&NTo@wjL;DePP=PYQpve_WG^} z>^||rua%jh({&4IgL5}Wcj+E*p|CTL8FZO1n7tRocHPp=(CNl<%=HgTx9APIaC9?wda(4m9tn8S1y;48cd7*F?1Emyb46Yv7&z0ms2d8i2h1BJBxi#fwZpZ!c)4|1sA;tS^dR zGcojnO#@BYyeN6a#DFDft$oJC@G=V2A1d9`?dO8XFx|dupu49*v3^z~a8}J0xI!gBoV8pmn1R$6Wug^@i@~cHI+{p)!G6 zpxeO()D;qJJy5BWu?J+-53EM1L5w=)`iK4Hd{A%4bw_XL5=b`+)I-zEcmUEYBafUC zVeWYO4eSok9L?+0ZsTs(4aeO;MGQl?hd{RjPp2DCr=I{Qo;+N7-9!R1R)BV|b_@O& z>JHu0?YgAfcTK00L$B+efZk3}f&Ze?kAb1vcL7M`#oC4c{v$GK{8J{77dg9KceKK% zkU;rQY!RrO0maRW*DshDu9U};Bp0&Mw)9EFw|;y`*QTU&Iow1^$8P0ukVZ(u^`vDq7I6KreF{8FhDon zKqm!zL0cI9Fa`WC6@aV@?mqp$l;{6uaH@Fm?AQPQ0lmI6KpE}D&ljMS7x4c-cpuJ- zU(cBsK$i3OfOgzw3B2$W1z+CK>H47cK#6>JH>iiv$#EP~$sKn9)oTpL9Y9q9!)qqv z1KqK2x{EzJojqE=l?Zj8dvWRssHzEj(OU?vYPy|0nh&r9fabI&fabJ{J-Vx1y6?SM zyqlRJi!tLNFQ_Za(p~zbyP<=Pfg$|=HjsV)FLc+w>2&7kcJ}}mW#Qev0^Mx?4I!(U z1G~@t53qo+Usye7V#xRdN?tZ7$?L!943K@X9FTMt{G#y-IGr7L1^4ejrOE5K?hh}d zb~7{dcED%T7*XcyKrz!T4w`~>;sCQDNz#d@(@UV+-2-$qx|2wEEI87-Prvy02-K*8 zna|o?`=RxJiDL7)|J}zv@E>$%DHZKz?>-MMO3OL?O4+-`yU+g*Vgbc;@iQg{ESIDo z;z3^B09!9dXn#&E$8k{02G)z}o(Req-JPH&koCoqU{IZBWXV>-*?fq@`eNzl*N&ho z70!Xy9e?=mz|vjL(&^69$$#7xlzJFizm+I9!)t_6(Qc&Lpp+fV3t+*>GEYIbd%)a# z8aaP}=CZNn4|qy`@xPQO;Dr#Vxb>X_b;OI}N8r56)Lr|c^*{gA1E7J$X3(foJqJUn zQ+F&!hJrk|K!y)W8pvV*Z#EBp(fSD-_q`zVz+Lng%uhj4^#|0sd$|s@85qisOga zdfXLkWv}m?7rjrIK&@^z&=Fetpm7MMEQSowz@vvJOSOVJRnvp=!lts7f1L00~Hu^K!x&)6Cjg%K@u;{K4xM7*~1C32h?tO?UvC2 za^D@aknaT__5*J41iWB{xHO>G7i1*Yi&C(Wpuh$h@uKW869YIG%?ao}{bI*`P~kTR z>a7=%kHKLEZj#o%Au2;*%Se!8`yl1DsTxvw4Vsg}mL9u*qNT`&KmY&t`YwQ_$cOi# zDYEoM>o;(UEQ#)J2j#Ku>7e{(eSyEFmw|!7(ujY`!IqPy?4aCsq4b0Gg_6o+t~?CA zUL5~Rd4jqxyl{_XVCbF>(%F0jB-ZQoBk+Y#6az!^5sqfCi9cSuWo!Y3@(+wq2Au>1 z4dwao!RaBO*LMN9r00JOD(OKAz@aSg2vpLqV5rgRZ3PK}+OB)-7#N`HSzg?Kgrfez zLnemqT8{7+?khn3b{4ST!AbeW(TCtT0e9R=-w-Gv#JbP@55iGGK;mN$a(sYVB3R?& zW@jwy9HEBY;BlQ2ThK=K2cUovQ9y26WHDq+cmdk_-t!I|Bv{sV91;LsRMG3&67WLZ z0I3@8fmOpT0Wb9Kf>L73i)#;Ci|3=F-!ASEv}K&}PVNiCqhbzZjL4(B%FIKyQ zx*QK)EOrNXIoMu$fLfQePr6GVX#YF-pQ(8_D2AC!IlF6bXxCmj_@AlU^^Nh#U7((O zX9Y+1@$ZlLCmj5Kllw&A3wd5fhHl?CosKNMEPFvd3g~uylg04AfaOKVLQw5505eVB z_;&06x~Q}X-L6-9c|hwS8M;LnyItRO8+ALdFdq!aFzDwN2>LJPY<<7x_G>+`a&6Fj zp6eU9dc$r9mTn^?#oeV3!0Nk8A9VYk0R>>=K~V4cMVSkz2`BFo256ZdcGw8-@R+Hv(Qf^#vU_f2G^^j`oRzKbf*v0s~$oGJ#S(52y%i{Z^vz zzw}Aii@jiV54wF{AkEB@(Oe&2YkW?^$MYn zouykE_JOlTx2r&REl0O6Pp9jeZqNyNa}cN6m1t)C0p%GNY#9I5{ur@D=&nuf!7t9bo0HKeg(9w&;#89(AvfD7hO;b-hg)A`d3%=Hg1N|*1L>mNRJhw!62MBwFm(78{D2HKKYkS&>Lvs88M3R7=~Fa z2DVt`nCl-wbc==1Efz+%SmdP{XoSUeOY;s$Q7qlv0O}9-hVFqZmiS+~0W={DzGf2a zBG7?V$6WtNqS)2#x(1Yzx;b7%Tma3`Z3*ahT>@_6flf3Gcrj@;sEG$|)*W;GBlY6Z zEl?c;k^^ab@%ScaKmwf2`FlZYexL=x`G6M^*T4-QX>^~+p!-DjCFp8d@JPV_Kn2jb z3Ss~M|Ie@i#n=q2F?RPEEXG7pJOi4ILAOpE-8zYve;F7UvLs%#vq5{X8(I&Ph(YRR z{_q3Pg*5zv4lLk~tM7_{7dG|`4BeqCx_#GlGl7pAc3|mt-O}9v3i;Lpbp_2onCiHi ze=wJ(b-V6)&D`yJ;J;Bf2e`Hh_zxNv@y;j#d1nh&@9@FBBZuyKd34t+ymkURWKQeJ z5|(bJPDVt4FTVl~a7A=8l+evkhVIw}C5T>d)V`3ufia!|IsPF$1~Qz1QQriD`r4pH z$B?4_=l@dXZV#2P){_-()*c+Sj@=F{ko{oYEFIwTpu3c#^+2U~#tu+Gyg&_z*VN6L;yKb8g!^Ls3L@7(0bPHMo`rPoqi2# zJy5CxY6V^anaHAqlovtef7pvI6w?G4tX+9Z3_u#*fHX)bAr~BQCxoJD>SloKe*@(^ zL5P2KGB}jD1u{%f41g2>VJ}3{^oPA*o{Jm^@IVLq$5#L}!T>o5vKcA7H9+C5-0cw2 zUCI&G&2j>CHJqzRC&!Czb5IQfc}E818Xpwbz`fJ<7&%1YmP5|d2t*Ih64P!Ek=BzX zdflZQpwQyU2mqPAK#5!6wK}L>;mH!#$??Jv#SxG*r7S=SGq5{?5ycVEaScfO#!LgL zeFHkQ5NrGYXJ_pJkoBcJ(3%pGvzzNw7)tmvazIuuQQ{VO8OhAR@Xbwuv4lTk1xQds znOoqc3#eA{V`=`$&flU7S~~fYlfOj;%;4Z}k!EIKXxI;KIF%@57$|cKWaucPr3_Gq z;w2w5Xgr`7d`K;*+4DvjR98ZB%3e@gh@sXHG>8XQ5b)yd1yG?1I#>9`q$@c35IhW^ z`&*ekKn8)9lz~p`1vRFjZ4kt{z7Rq18HS+l9lrouw;v0?pz9QV0ni!<*Cn6%>)aGT zi)FUFSaJr`Iw}!3?z#iiazE}0TG`9+n*F%z4p2*{*Y!mA`G8*68{lq7uj`b6-d50& zw*fD_jX)j3UXYW)^}y*XARmC_Kz6=3a~V`EKs=fR(E|#GQUg%$1ElK3s>@6aNFnh0 zJgEC|;)Ss_sNZqpg*KRe^I~xiXvh_0&5H_<4(x-R;J!z9>>Y6Tqr3Em_Pv9@nK~ml zx(|PU)ERpO-V>S1far;Udl!hF$f+qT48{kVj|gySP2RhNE$wiQ(mpfB*ky_<$0w z2TH<)4ugUYg9EP!eo=KFTo!=5CEpF23qJ8;x+NrT`oZ*@7wjN$a1wZN=OPosYmFDC zCqXUjH`p>ZsBC(n3NaL0HyfJK5#@K*|BNfh`5n|x#?hZS*y*|hR2!9Ybl389`mX8i z1&v!|F$8v>=qz1v+!eGCjNwIw0x0W1^B`!lkO9;&0jcah7w{tMEEB`a%b?uvx`P!| zadf(FX|`Y}(ab0Sg;owqXk{^EfVw4NFGB8tL+Rx#u*Nl@86rq&1D+Eq18tV(Z$85F z&7Fr4+OvjsQ6Qa@(vzU z&Vj2}a@_R|sPobdnq)Zunmr22V(5l;4~{_l29UWIP{%+g;{nK@cTgMvtEX}y_Jf9p zUM^x{0JZm-dqLAGpyhU;wR#MYc_0o*W5+hbL4{i&!$t+UXoQ)i2seuby`jST(iPmK z-2-k5f)?_EW`%4sR6wSk!D`y&JK&Ik^iWW{EbK48gT^dCQ$IVhKzFzGwu1Jf2fWz7 z0NkVn#XP9j{(>J|`hw)ZWtYHtP}v1ZAR5piuyX+~JWqpLSDfgM=6X4S5!{@#_yZb= zW9f7y(45>7@ZzlrD06P%7hvzM-O|knYHEU-jOO45Be?OtuX!eKNRtbIkP*Ke`41lqN5vJa}P# zmWcta=z+9xivuBTTtpcJX>agp!rL2I_b1izz=nRyc{)pZpsnfv&=IAs0?>wMx4#N# zaI}--g$BgA&~ag?V$jiMXv6NHyU`FXffR@k_qdSl9++d?Rjl20N)14>1wTMh;-iY3 zMY9+(`d@%XTWW8DQy0{!ua!F8HH=R>Si5uZ`yT9c2Ycv6&#`0Uf=BDBn@mUv&R$*biPO3A)x~?h5dlx+S1xa|{d&rP>)bs-Wcy=spnv zZ%N&J1MHLT!!J$2=N^F<#n^59|Gztw$N0AKw_a~X(D~1nQ_K@s7#R4c9I%{Xo&sWR zJHYR9&~l1-29)D^!g7jv4w!RrC#Y@2?{cu^K#5W}dvCA6zyJS(1G~@v4^V(`UYt3_ z#Lyke16J64Ou)JE9|I!;L(z=h?MK)c71K^GWLAH z3#Hlr{&&Xyv7DRm@BjZ=jqYAh@Ij;lUX&gKwc0>RUr2$BXaz~W7i2hCtn~eByYA^A*Ie9)0JSe(96JF@P9Q1pL1M>`Lz?)mD*|3{9|5)RSG?E^ z5<_XkLu~{X3vdDwo^KH0iEID!#m>+V4ZENr3Ys!zfOPYFKq1x~Y zTmo($@azQb`|2(g$h-ksDa$+yG}78z&C<#Id1<$=fblm_`Ea~tvkPbuJ!rC-rLB9< zMg!2Pkb9ayg+}ZDlJH)4(4psC0sloorGKwGPq)7YXjIr=2U_w%PN)W-WZCWe<~ZcW zfYy^09@hRGwa(q_-Ju^kdp3jiSAjMnLTr02+x(BQRHC~XWOZjVcm}2!q@=SMwEfDh z`5#lQNw+J{%Q#T$zmy|m0m##H&^_G;p5X%Zx0;V=yj;(~z+n6hG?37;*$3*S?mZhp zcenJiv~})j0u^`!y#y)%ad{~X?_a-u?_Aekky^d0U*g{kdn@3&^|hl zm-u_)A>Ijl@vR$N#h@fm$VQ_>ka2_$AP>L6?%|!6z_I-LASh9R#!rH~VduSsHS7kb zm{LPf=5tU3wN=&7Dndw7DS;T$eGGh}!66QY?oyuc%zxm70$zsR>(BDS{`$ZFo#wr6 zZp`0~gO3XZE!So~aJ(JlNf7&Z%V$uig7VLC7SLV}hU4v^*aXY9g8~7}YWWPRdBCb# zK7*Sf7_G0@5a0=)?_VNuUXxs)8=h_)ZKze-C zu|{|^T+a?p28QnKpn9i!Kd6eZ{$3K2#xLIjay3J@Sm#vGeL%flJe|FuD}q{2mIwzz za(_2ipc^dT?WED^1S$i-8RldOdm!XA+va1SBN!O0zn5+`KG4|;x^4(^$5A&pl%S2O z?tV}u?AiR2k-vQ@0|Ns@N$*t9Zu{;2Nx|Q$%?vtb$M~D^|IV$TiGzBO?PtZyitT{}T3aXj<{p=Av>YgfuK4=!I@0=LNoY4X zetNw)j)CvWV)(xmbY)gh_w^TB&A@G_-tr&a*CC-5*nRFry*XI4b1TSLNSO74@74-< z!J@&y&<%DpXtoW!Amqe<@Dk!uaqto`fo2Gw1F>Wb9FX1MfCPnxWAgzPNU%bJxcMgw ze-CJPOE)+%K^$xSy~Gn#Z^QE|8$|Jo;K|Gk-BUqP16|DL1PvM^aM18}gKazRzyrz~ zpqA|S(!&s+L5;r-^5I-i2N|5fn~!jGgQMK3`G5eVOn@YT?thSE-TX^{zvt~=@G45a z)^8>1P}8n~%n1dV15Wqa#~^zW!d?hI`uo56hzO)00A-_I@UEeN7cW}Cl>oTA3%+f{ zqxlD8IX|Qz0L`#W+ykmkw}UbrfB4DPZzTdCI~~=TrU%?SJ_`0kldMbk@W%*FORQ zkTWnl_e%Wz|NlicsB`;9qx(!}FDP*whn%H%%=M2@Z!1Uv#MjMlcmiH9SbztRgu7c$ z{QdtQREU7KbDUy>ZRc3P%*+6>xwlo}A2{Fy0($$wJ-3vFpcSgUplwvgT>pr?2-yc} zal%x+2;B=Bx&e)GGVu3`fe!R+2MyLULV~b+FQ}3MjYHS&WMV)RfyZ3`h<3Z)fVsp0 z?h-L((80JM%U=B610MYm>)r~wq^|W_2^)Azx4<#iKjLs6Xu||(libTJP;Ld=meHZk zEs)WIQWj@1WPsXa;V;Bafh#B!m#{<9S?jkFZAh4PPX%QoP)w?WMvc%?%j5gt)B+mE z>fQ>fM&OPCIgJy}133+}m*eGm&y5vl1Y>;DpQXuCCpS&!b}YmW}tH_GIoH{^%k^r4UI&Ivob(U=#X&Nlu?cV^1*z?F9H}WA9|zgc*l!E& zv3Ea?2CbEbw3j)!;f>ekH$K=p>)m|ET|pC#3=Ngw^~0qc86AC~S-&=L>k)q67i1aX zG4QF6j4$ktfxV2D^g z1Eq!;AsXBQ87U~%K^9{NfE)vv_iBP#E6c_Jv#%Yrm9h0esbxSwKmf=#5FgDpkPyT+ z5DR>rR|d#722E~(*AtregZ45q@V9_^56$~Q8zvb_s{?wcgM>lTx;ZwWCKF5d2Us+L z`em#yu39oPboYalgIm$pKwP%Yc8~ycY_=PGKML!M-Im}zkf44f%zWvL4Imc?Xrc!1 zOHkVwT$CSo1#c_{m*m~g8L=*7zXR=xw0gs+`|1YUPBbnisi3)jPt zID5dt0J^mgwr2fCK-mB7p!h&v6=m67&5Dx|9t{^G|Wuwlm`*FG-nS;#36 z_Wwfn@t2@`NV|)9dZ&YSd+!8|-W+EFdAzrZr8D%+=cUb6EDWXoyl4rdz5tER&^Mg{pyobn z>&X(3EO-*Y^+|W=8_*0}>m~kl1fOrd~wMJa_P<{P(cjJ(xBL^(Lzmg;OlV0UZ@>}#VBZZ(8~>= zrbsbIh7VW^S~3MUk-}blJ^<4Kij0@FAT9mSeaKG#w}Ubp_?Qfb)&rGBpj>RA#VwF= z1I2#GZ9HKwmcz{gZHIkn2s$O^1v3K!#2EN7{iYcWATxeI%zzj1z2N>K_^Pyk7cmf{ zdV4{c>BYTGObjo6R)9|DztMgEGrvHzz|5e4Fv#3tz}@*T*ccdIbawv(?WE#r-U}Ka zWvEH+h89dEk>HyGpx5KI9w_n5xC3&4jy5H6XmzaUgL!u0{@z>f!@i)A)|STF9nzPRhU6u$d0$v>1TE_R1KNW8zw{2c zF!_I>+nM9F6)4d(fKuQS^b`oWaFi3Cx3f`;~kU+e*OgpO#uyvM`95d30Y8Mx>8@&XTN?6(taK<8G_G?MZE&eA`f zdqLAppb`Am1N<$UL6>6mf<(G61j47K{(w4pX{$l)QP9X0Q*SRw#BwhSXjaMRh0Ycx z2GA~oBWpk*4w8Ctay_^S$J`B`%tExzpyhctcp3|2p%o7U19%vTzNq3 z!LI8DJFFWVHm%=Ec#b!L#=}69XRoDN|HJs8y;-lhAabBydv_N|6@U1F=AX=<-U_HY zc)S&qFF-{-|C9qAO`sLpps|GJmyG-^ph+e$1H9hrB_n@pE~xJB0@cl+tI1x(8-d0Q zKoNAj2_y(I24sCVd-(qV7Krn@yP&(^dBDXH2UPTY=PrT*!^8-Hd^qQxAY* z8+5a3rB8+dN)!fUIDPs5KlsHjQ0M3fXl*cWH`wur5IpAkhp+X22^-jcP{$6mRsQ8m zE(V6>BRC_@3{sI4I1b#wd&&))_756oyiP+6JL19D&o zRtGNJ1uIBo+sP(jOuMKu1Bp%-{qEy9^dn1-e^7$%hrRHvf1lcl%&^r}0 ztJ>SU1yp)yXoK6h$6Wt#c7rFHQBna%^WHsw|NjSXRstypZC1Lr98{WscrU6~gG&=G zEH39paXDzi@yomHV8=nmXjmYD-`xQUedMqPMM?L$&J7@OR?ujAKw!7v|4E?LV#r!p zK}S;rWXyo=Cx>_kRD8U6x{8V6r9J5QvmMv?1zsGR&CJkppj12q%sVj~+_~Bb=Dem3+vKmS#gHAzzSq>^D z=YrhbE&bwGEi*%KcS8&KjNycb+gZP$jUv0hNg(g~L8?f_MXtta{WN?8~fntw9YIW_-e=5I|0 zjd|?_#Zzyq%HRM0|8ED?RR6bwYAR4k69}2U33#z##sB}ky&xqozAk5Cc=;MM$_!aY zI2BZ@24ze^o`cFr0LAqJtVv9DD=3M9qSzQqh?$^-80Z-Omm;8(zM$)0z=e@n?^JMt z16PTV)r&H%2P#uDT0pjL!D{RJEihZnyTN9m#Ipq!msp~>#0nI5UCay&8K5&_dRx!@ z`~M%b{cL&$=v+9Eb9$$O#F~%rKsH)|RxPGxECIRb0-B3JgABnhWZ^Ed#^NFyEH1J| zagiO!MW7=xyTK9I?fL=~WB<2<3Nc8u{ofAC5uL4|>b=|b&HwG7L;$Jbdt2{-2YYWU z1H~(d{X%vbI2qexaSSVXr~o`hkbWKO7{OLh8an3s$GP=eX;j7ykgscWk#ait{&DCA zdzH0rMF^tQTyJFQU#;O>=2^Ijj& zI-}YMhy0b!SuOMYFOqN16rhCFSrh8#=hc^~?_<(}k{pM~zE}WvX73V+ zGyUMs^vB}N04&Z71UYlTm;e9a>UqFzYZeH<8`gJ*H#k5!xU(J9qYgd>zCw}lMST{y zyU^PU^1us5s9S>IZV85%g_4Uxu($;NT-D=1k3viuWP_Va9nr3(iv zhC8ApekTT`%AEsa4?p+{vW4p4(cVL_g%XhdSTb^dYz6}Z1GXXGUe_hiGgAUylxBiM z0y-$y+y?5N{pW902F>HPg4f)i3wZIN;2-D^ge9O3)QiK5L6HcOI_CO^;l+_fpe@*I z82EeMgSu5DGpMldMmq)TcpE5hLu5d06U1>p z$J;=Bkj$|*@M;I7NrRcH%nXP#-Y|~mY6F$~Af4Ul=Xte((mP0|c^_zjFVY#0C9*G= z%a|D;XR&lQRDkRL<85G7py43UDK$$1UhvNY4P-BQv3()Vfow?pnCm0;mqE+Qp`+NH zu4w(`o1L)>AX|Ju7k{|+fOjr0>2{UK(&==a0NEYfSvuo5_=F{p(_g$!VqxfYJ<@$G zpck_H{nso|eG6L$)4bOOwo@6jHy$)c7&(`T;Uy2KiR0P>+C#&@FX&(Z*+S#s0NX<2 z5CFQbL~c50J?WE!uh<$MF?PDPfbM7D&uGx)7RdOc%PsJ74QRh}9S3Nq(Fu^CfgZQO z%juxjinS{E&sO455Bzc&A1F1P!y(z>LWN#MBa6;NyKwd8TvE1>HFUV}tHl`CkM z&lS*F+uvNDD3lmv%mJAsqR%bx@(*Yabmnx>hJ+h>$W2A)K`Admo1~$admeWMbtxH+ zyMpEwKpO)X!8?Z<>SP#7*}B0eV+Qp4uIO~#^5Qusc=(}o3TTwGVK=B82OTHRz`%g0 zW0)^u)-eISzEfW8>II!~Hl_7jsb2<%J}9L0xdp;N$25k8LB^pWWl8vp18ZPq3FI6w z{uVb-Q^$3K_Q5QcgFl!80$;2>1e!JFd8y07z|iRX2DEqjf9aNP-z6`C*%%mLrx9?2 z#U{M4X9KNQ>2%#=>AHo#&l}YIiCxj{yX4>lCeX$cPUaJxz8&3yt(QtTp^bOn4$z5H zp$j05_HKsmNuV6d?7AZWbV)a8Z%EMpK#|r1{2gZCP1NAKR=Zu7^oAbj_T2$Gbs(r4 zx}}1J5!7!N1gTvP8vJx!0N?R^fWM^)l+8GLL+7CHc;@d|3v#FHjx5;DWah)5jmdM+ zhT!>IK$nqryDot3BG%}h04fQ(T_<#Nbu)mR3_f}Nf9af{|KP2}AeVrqG5(j%fz$}E zML=5%1ei|;2K)~KZQtzx9Rm;UUnB1s?{?ke0E+ld*FDy*Tljl+gBB=*vhj@W)7=gV z2VXF$Fm|}k=yvV-Z_w+y;(zIk|D`Pf;V&F>z!kehE95S4&@=#O6Z1>Zr2qfYJsCIj zky9uv5$s+CO9X-_TLD1h5~wB#x8CM&Q2__-2JOR;6cYTR`v4?`a5FJ5fNW_&u?3nB z!e4~It>Htrh9A`$0gyF&!Eu6QjSAEn&{9;8H49LzfqCZLN|)xSJ%muOqd?GrsEuZ#*{qnjrLjqI^G+?!4?+RFev7)-1t@U<^bvLqki=gJI zzNnZ4D)3Cu3p~((YWRz6h>6h3VGs`OeiPRHF&uRCh8v6Zk7AQeEEEQ9Rd&HA6AfPCK$v~ESr5O;qB zU$9~ZIyp6rCGf=#K?a6yzHT=T#05E}d;k7F4w{Hz0G&DtDpna7pa)7KO}T@{!ckU_ zo&lYApY=aOj1gYHW1A&51YHKq*!r!+yt_`M^?!*__xTr#r-6=%3xAQO3_2(VG}sBM z&cP0aE?do#2z%iHkwtO?ctHLT+WF#y>_@d)18VhaC45$&g~*~?jp={Ttux`>KfA+O zw8anpVzRzg#;1KP=!Fmq0|O*Fi%q(ZX&(xBF#)uA$e*SA+W%6H?t|Lw2Y)aHYF~K4 z3A$&@ou&B*2Utk^!@*}vjO8p4y^!`3f%~VrLDw%E|1V<+cp<}%h+Al#ICD25Zh64x zf#Zo=XvKCA=FQOVH{GrrVcmwEp!frw@Aqm7DB{9itW^Yu9yq~56C*r5<{;X8&7j-p z!m*{vFqZCG4(nh1&7f<&yXCC!^S7S_6+M0&+P^`$C18Ph4u~RgT^PVV>$SpPgtMgcfQzt zF6f0bC@aOWbhCj9A1Oxoj#0>&t;a#q3=G{qKUlh1esubNfUE*w`S9P7rQ4gO)0d<5 zWQjua`TyO=Kky%PWGNNtX8bSE?aT3j|6nDDe<^D>BWT9J^+TsKOSkKrm)k)eiQ}-o zTUGLA*%?{d};Q9e{h6Jf@e*<>=hfd~ZHx?`>PC~LAxO^++0Ht?#mhKCP6#uE0 zWkaVsG}RWHLsGmS$id+(-N(95Y4aca$)tVo-~*P1Iatk@^Ts?e*|JX>Y&s2188CM{ccx|gAbUrZ*+gQzF%SwTK5X=u_Bj~ z&Bs`v+fJ;%m)`Go{m>b~f>LUM4-92t=#0cFjO;pCd42%lK5WkG{@Crx0jVya0^gUy5gZl{D#Jg%_^b8*e|H#5_m4o(sKEcy zKY`tR;V+i+GB9+9u{0kM=;rIbrG4|@Z|2sMCG!7EIRal;gJ!!>E8ibmK`kGVZdZ<8 zmgAjn9K9^}JKb11?Vx)?AQ=yAJ2-yAx~Z048Npcs)Z~DqSKDvc)2o01ynb(fBY-VQ zbf$jj{`kL?<3%+GeED1VkM1y*z+O>8yPL4x7_F;G!3_5C;@Kek|QLyVEi}iyL-+X?o)f?+5R~pdc9(K=J9Auo5pVsWST(Hs^b62oZ=J;~kX=eF z4A#XQMZB;JAzqwkU|>L!1lb7jp8;}wfl@0*{R@w;(`=~m1u9yD0>e9N-@IVZ0pH{Y zi7K9MzV0{{P+DecJy{|GX+1*Y$9yx%@$=>d6GRg@euUkS;s;#h*K%0baTFD|{x4Mr zw{Ap0OUdiOdwxL|O@v-$V(7Gshc;2cZIEuh=HtxG&;N8EKlp&H^<;@$KwuW*3m>?a zNq3nTI_o&%JK4a>vlu`o>cXX)Pct!evVjzUr9oi{!jSNMBm++`jc@KSA?=0w5Qb=H zH`^BM=NDk%Z_i@{ADs8$@BjZ9pmDo^7h5NS#v6HhJ^nZT{Kv?^z~Al#I>u}d>-)d| z|8td!H2wss<8Sr@Eh%o{1?gmf8z;}mz_1T=ipvW=2WEy9O#H39j0_Ab7$NKQcYu~j z@VkCkShAmAp!p3)CwN(Y=T;feOjs=M|NqBYFMy`IdRqRsC;l)aBkR!pWT*2q{1{`k%@pkxf3A}jo9XuC{R1(BNw*FTLg8OTS zU#ygbr7c8!W+LYg32cMKouwbL7_uUu**}XBI&%Et4|r=WC)tw^<7^@Q+yb4o;Dc(Q_2%Nv|NlFSS-KB*S|fP|Qe`2$ z18whc8p88W^BW0lMK1WdV~~erFg(-=-qi~V^827Y#wS`&LOp~h&<{DXF!ToU9CrlY z9d+Ch?33e+ANsgKGwhPx?43-hKn`=j;u5>?{bYiRWcQrLmgYwO7pcJL0b01mKB^Ff}M8SUV!|3K1bK>UslR6fW< zV97JE^yGvHe{6yOvAfO#+AZg42lej4Uz`^P_wJyP(T#ld05p|!yK%H0DB%l$j1@vl zV(6mcZt$1|>x+Lppc6$zet4A#@w!`&!bC-77n+pPnWp#RA<4CAnZjVDe7gy zUKrw2pY=b3z<%lDY*+fYVKYSCZJ?7*VH+o8z}tjDh0UikObiXR9H8UcL6Lf#ZACw~ zK#4%c3D6lljA1XFR)Om;q!0oPk0C~;K)yY5rq>aYZy~%hXLf91;}t*(L{R(ie=u=SR9HtqbpDPjhx%mwTmip^pcPU3F2*Gd_Ih!2hQ4{x9R2SE`rgryU7l6WcWi<{Ztb|)w_I!j-4mOcS(oCyQ3PKCI=GxR|> zV<%IuBS%257srbeQUCsTma8De1SDS_5@7(_kj41F^v#P&E5PvuZf`EOhP4SoyWd!! zDlrDN&-vwD!1K@I-He@Vpt~d8SRlFZxFfixXg49(>z?=yX&KWRg3WT!) z%$WhM7wOc^r;h`MORV;r> zWx;Ke+9uYhJ&OF25Xf-a#t4qovF%F{2(|Nj4< z#rWcZFSsuRx)}wO#j_Z)6tWm!c%1}InSpAw1$&_V0mY03o!kPw;0@g`qBb!xWLyFD zT)>9_1iWZ71Fe1oTLEpAu| zyA|vWkOX9Eho##O!Qp^PGjzIfy!;88HE#tStpM^EM5cEth!1Uw1!cH^?xg~+c?X@0 z;hbSV69#R%J6aeoiU>l)B(06A#@v@?1RXjob>@P81;%ZVT+*uvhape5)*y;DJ} z-j0Kpb%Toipl*(gmDQbTThnSLDoF99;oBs-+q9Xfq}gtV+P2|6DU@~ zW{}r(!@LL@26)}G5R}C_c|qw8l;s5(Av?Sr1$x0NM+37QvJ?XTiynd8E)x#14Ae=i zhz{{`>#G7reR>5==n>{DR=cKbf^!u(svx?u82*Fz9%L!}HwA?zB(yRx1Em?9AsI>yGR}ZP z=L<^cz|#a*7c7QAx23#%4$7+vFP{7a4G6Jxwt~XA^+1VW7HE(_4|MnxSO~Nx7$gPq z9(b^y^~J{jObn150r6KSA2_eUvJ_Zbw+C{@0(&2-g#mJKV=E|;cRKPIpM<11%U+Q8 z%hI~-y30k}tjk3}7tl(8FQAnJUqCBSBnBIA?DZFT(F0mH1u@rMpf~J)XSqnP$b?qV z3K?j*$J7ljo*W_OTZ7FnTF|{0RD>OO{R5h0hQtwKnIW_y3x9FX5gaP$2MvN({w@E{ z%z)Ar2NkEF@r5o|4p={*5nNC?LJBHJ&|Q)Y#~mS;96N%}Z(!(fl<7Wr+!5T@2e+&t z4!SWBMbs?CEwBfOQkTg7?FM3f0pG!28cYi}+DXwR2Eky}0=oygF_LV~GRw z@?22i(E6>!5OjI&YPd;_2ha|sgZ3w~6vAFyUHkVx=tL6at!Yqca4^6Lh=0_K;r?lS z1G?}8I{w?~ihAERqJjaXg6>$3HtG`|pE z1Fu3r{D2qE1}qGnTR~<*gARI$H~i=u#^Y=SpmLlMbV+RYi5ExzFfl+RyBRy(IG}Y2 zYF%^8O#)#kI0$d^w;Tn{7BF^#YnUzvnU(`365Z!I<3wH*|6yY2G>6vcFIR&)Z3(@t zInWi}TS1LxuqM#jZU>%Duna^#;CO4vzyJS1g<0oZ&=uqVMM15T)&r&L(3Sb;I^B36 zn}Isr1VEOt!7Kx5dhM7|Vgjm@Oi=2i-c}XR5zU~zhXF6Xwt@?V-d>Q{i}DI42Iz%t zu75zKMEAKDhks*RiSowy?2CDSkTL=!z6tbqU!;LT$&~{s34)>+mIO7xyLUl}`QKg~ zNl+&2MbK(uk|4xAVuhz`-+hB2WW{H zJb$3ANB#M~T;#uK%|cFr?sASUHyKdd>MQ8J%vKrDVs!A*Ux|P4VRg_2%ey{9$I7RI zlyoy7?V{-Z0O}ca_kwhQ26?){Z4l7RVe7X_iwqG^s`-PGYQlP3K|}1|t%CtC_BTUQ z4M^;TV;K{J(e2lM-C(!;FBbt^l59Hv?3XK#uMK?UE=o2TkGgG#}yVY}NSp|G)9cx&zu%BP;DFYf z2Uh`0ej=rONRbDbzXz?i0?ikdqRtojgLn9X61M7YobyG{tE)hX5Ikcf1=o~t7|V>& zZ}0|OkePuSvCJ4{luY0j0B`$#q1eI1kkJF;f-a(cAq3)X0CC0s{Qv)g8N@vS;);T} zU)q@%GVXx5pu<&OJOy#TfViMlYA>#VxB?To1;G35UmOQ zt`CSSFo|0rL;uJB|1WHzRvUms^gtroAO#*EE@(&03mFhM2E=v$^8fz}UJ$nc#B~F4 z|FtnOWVC>|t|0Dv5O)EH>jL6F0C9JKxXvK%MG*G_hzr_C`{Ga=#MduCB90&h8$b#e zCUXmb&v1XS5X6-MaqU5}lR#Vx5Epdm`-^4}Hw47B1<96xxH%xM4Tzfx;S8iTmELEH`y*9gQt1Fkq6GUk9p3_&8hKnga1xD#Id|Nmk& zhlNKO!cA{#O0aFEs)U*Qd|e(>VUXCAZ|X0>jL6-gSZJGZVrgs z1>y!mt?mJdbb>_eK?)XtxE&y_0f>79#9i^^|Nj??AnpSY_r{(7|6d4!xIaML>mV*O zh|4pLTOi{ai2J35i6KJ+#AOj+V0iHq#PtAiSwY-uEs(g*0f}&cM2>(IOaXC0%jaHf z1#x$PxCtNr|9`Oz#JvOJ#)G)iLEJAOZXAf)0pbcw=N8C_1#v4uTmuj{2E@$*aRWfy zXb?9VYIO-nBnl+r2~scx#Ek@Ttw7ujAZ`SRs}15_0dd1YTp1Ae2Z$R6;_`yH5;M33 zGD1Pzf6Yt`85SUJ2#EV0#Ek%PgF)N};1b#)qXZ-p1QIz1QqTk927%Z>xE!;%1u}kuxEvs^ z4v6~$#QoXC#E=mH;(iBlUo}DEx&S2d4J2{{q+kk&`xV4J3F7Vmac6+IyFlC(s3P_~l&Hw)|VnGTj zK-_W=*AK+)0dWf!{QLjH9>iS%;^u?61|aSU5H}CRRRnRLfVjCJt`La(2gJ<*ahX9} zkvZG~8QCE2mqv)MO+X@9AdyFnpke{U%>;2TgSa^$ZU%^Z1jOwCannKEtsw3O5H}6P zT?XP_0dZ47-02|h2M{*}#O(laMdoq~WF&*Ql@P0UNL=O@I1FhYtwXeru#IPS|LXqu zLa2y|p_9G)T(9egfET7k;9d}@RoTtZ{NPXX0S?H@hhBG<U}HkQZhA z2?MQ9{1nI^ezJ4xhQFZQSfInlI`_^2t%>ODVq{3;&-3O1jTl6qJl=W)y5OMs2n)Z) zh0pvkCqDBFPF?dCbUL2k)D;lAcgf%X|3TUW_@hrk)$}d^opboVRJ7O4;CSnqzyJRq zU;*v^2OWR-TDbXG21M`zNN_7iu-loV^?xaU^8uFQt)SiSpaa)l^EMx_fp9@L(f0OQ z{0D6e-T`u|Tx0ky0xpakI}I2Z7(j9gkaHwI^T!=cxEH7FhCW3V}A7N?U3r>{$ z8V5h~$Fzd%1Vuf>8*wK-^T*xz%rC$SiNP4z3W)O$e&&w^r$Ug^A!-G|M{$;d;(0DK zLAQbubYS;&$o1*`8mC`Wv@mMxV3unlu`ykjC3 zV+?rF$N?_JkUA!yZYA1;FU0&8$mJ)rZ;4nZ*8Q=w^h3sk;|u~B2N;+IvX~%i4|>}` zCwFFX1V9H%pi3&!zD6dcY#@h1 zf(hcjMJDj^q2@OZPzRz-K6HQVV(YHuXgSd9x<8;qtihgvf2!;L7u_@d{%<)@s&vdv zfbq4=G1vVJFDf8HY+xbIhT8oM{8JBfuy?U_pM&ZaZ>VR4X!n7rRR*h-1#7p22tl-S z!L++GLiCr&cDu98>~!7I>$)YNGjzububE&6$b(Ig1c|;dhX_GTVC#0>(&^69#ny75 zBmumj;R-*f$Lwl^HxR?YHxwLmy}{7ydILJ>1k$^= z>+k>O+BX8dzBjV|^E>8?Vy+qu2dM z_ql)cn=&3Uul7tSt4kMI07X zp@T2vnGbckcJ#V-1iWyW`uBggYe%PR4`_Z(l97SI_%>)gMHhR^ffD&{v+ncEpTl0* zwg3I!>m~u(^=;h#_kVY3%gcx0vH-nEfaY(^0Lua$?Z@2fdLxS=px1Z8an~h~{0=%x zh~b#)1cn!@`v3k1t77SOJpfj<;<)P`h$_%DEWt96iA<^mj zqu2FE0JLm;abPlP@$ne`1}7qI0N!eIRL83(DGk!cPvkM>+KSU?plu4|0R}T-KHhy`2||Pl}M&d z2>)Nk^1_?}RC9xtD++d(akPFbeHj9_F>=zIwrOMDt^4X%KuU0Zj8MuvTtz(Q(UEch4}#%^Bl)!`>g*lcXZABZgIY(##6R-T{#|MLsB z@_>(7ZVeMInjioFw|*;e>23wNlNs#KH2yqSk;@|X9Vc1e4t(MlWCy7N>4R_?URwSKb-V?@D&0QwN3?=2IO_%{1E><1 zj&5*DfC|231l=wKHW?D@pZEo2e}Fn18izme3vhhmkL8sBdn^9nCw@T&h~`iH0t}z{ zV_BgxH$L$TN_^rM;0LKz0IL>|6-6qY;y7w?B5Iak3FoO78`a_*YnAX|AL z20{8yS^qQi&EWMl_WgFC9!z&ENAQa|7nvA(ok1HAL1RAwy?!h&Ixj*CyKCLf9KD;* zFfcIe1g)m)bmHjU1>$u(^K?4#@NaV#=x`F~b{6S$66to9=ya0kc9!XMlIeC<=yX!( zc2?CW9!D$wwF%7(gb2=+8^L zoAm~u2Y!L(51@Ms1=~PWcQXU%6uLehRtAR7HW0hJnFY)S zk^I}5IanDOI@&;FZ!<_yz>E9mK_jnM7z8o`T37|Ln6g-Un*~_G$FVU7^tOSR0WVyi zGc)jSYnA}(29e#(GGJptWOuUym<=Mkn^nMU5ZT?V0cL|pEQ?bSH8`Yx2tcH_<~J75 z_93Ff46PGNM9^y{P`AF@m1EZo7SLfHJgoJR?o)xf4`VR}yz=_YU+2ox z?JCmk%K@_JMyKn8Qa@<@)cl6$GrxfAjqW3#`2|6PNFYZEIys?TfL_-d0WZ8F85z27wB9b|gzPyM=)Te23%W1n z`#tGzy^bH0KQ!;#z|6qF$ltmYv~TY?i%R3v$MzWqEV%^&U(C77z;JUeNI9s|0nyDz zctAsja~5(7G{50F-YNq+UkX&=f?3^X_`^@~i=0T~zs3n#adqy+t5#53qYacqdtK-7 z3+!9L!oU!~FR%`DF?(+>=*-y9{B`qAfYPlX_$YFILGYoU{DONyhc)vHu08S(+-#T& zT2S+1l?P~eRG<~)mR|5O#n1eatOpi?7IcEHs0!!>uVv#8KN$dW=Y)ma0-$S7KvEzY zbVob5j*4UzSPYf|U+eWk*^7aJUjVGNw>1T{hED)|20Cb2UJq!kUN30v45$$Ux|xb! z5X|Kl+zVPD13HWubj0urJ`V-hH&G-A3_WaFV1fL_dl@Lbx!x`fQ%28+yXD=*fTN&LL3y3amA8b z;3eo}Bpd;MfM4W58viv$NWd4iAOaqIkqF2uCSb3CNPdAfP)zU(g3lS`7ia^;2ftuz z2;^3rHc*6sJeKkgG{5Bz-q8uVpDiH6#EM&>`}7M&dq#%fEXH2fC!j+MK}n52f{~&1 ze+dUDp=B}t2ep%#L1#v61*Q4!K=P9MJClD?#Tq1%? zPIzHo>JKg15oeu=w=gnvH%t&=VCeFwH9oKlw78+=B)`icq^btmMT2+0l3)J+zk_)X zj`({T3vI-mfW#VVf&Tm>B-X&%L9vFw5dXL#`$q$R=M@w;u{_p_*>_KN;X%H zeS+X&6Hqgb0laQ=gAE%4LzY0V>zRxv<=g@RFOp$yU|?Wq{>N6L-29KdM6UTCXAS>n zegR&F#oPirK=)L=76NfQ7IF)K$NPC(KrM6u*E8L|Z}5KpWcNp#^6j}?gh1SjwkkA5ahlEcVa`*(`4yivm9t(IeHwJEt637;iD4vjf_w@h&9Toct zh2#QkAzAbeWEBrYJ3PZd(i58nQuz@>C_SwKZTBmMr6=%xl1!l6D?jkJSb(HzMOy!t zI%RO!a0_Ix*l-JkgA!MGczCbtj116-Rltj7(IB^I^!m2h!u>+(G(??)6 zrNJ2`Aj1o6;AazqO@;(bH^O8Ah{?=gT_tQFCkArh2&?WsP$;#YEDg?B0Wy4v4RWHM z0lvyA;DsK-@XbD8XM;|ELUJ}}F(0P0kGnnq^_GvjJ^@j^p$|Z(eg}pBFBJeeJm7_S z{Qv*paX+>fYXU&Sd^5T~ya@6Eu^zn0Vg(4iJT zfZ~UtyAzrgoHATMCbrljrv+Hiql7SVImkrp*(KnADNnEKl7JV76QOa;_~L{gC}x** ze|VASg?%75;|M4XI@qFTRaoV+EFA6|ZIIod(IU)b2XAY9fAIhRj{GBpqO!vl9F?d8 zM%6DtR`Ecz!^X$+NQyrujQE=l8ZL*#A86XAJCvvOQi*-D6+?*?B=CcJLze_~GyV@S z>Gg%2$2{2=7HF29I0EerD6(E)2{cH_P#6aC2{;LS^T3$|GIoGW*@DFsP#_1q&_D^*_J@T*@)NIOYwD%p7+dk(mOrc7+{g4uC}Fk`TDnnjot| zqL|T;!2>d-1&b-5XbX4|hcM-_8=fK&+7MfR_y7ML+m929%r)2|)A$+4!8{P{(8z?x z=N;tuj3Cs0$OJVKP|8El5kuhk{0fTdT7lO8{4Jo9XuC^!TEFr4&17U?Xs(rD;BV;% zO`M+WKDGhSrEAaRrV|VP6)^BxE z-KVvGcVFvf;qUci0bM@i_y=@g#ry7Bf&Zl;6?y*cj*i8c^lC4BHdU@MIo19f8ak@$Kj8-0{bu)s|7$- z^PpIr#Q?G!l%@k->A)X;DUDzMP?=F0zy66bolpERygL?wR>tWcER*}hAAbleEAoFE z_}aWa&;i^08W&!qTK@ar+ne$0|Nj@OZi0@#0x?02>j2Qgy%RtG|9@dL1-w_Xw-?Ma zaRQC4f}QSZ&jcD*ZUu!=@6?=M;O$6EkOpla_y+KxZpPlJAZwgA;^@ZRyeBh7)FW(DzG3gX?aDmqW2E3>}#ms%3za4R@((H9T6YyU& z2echM^g_4qnHLwXGJ`IfudMPq#6wZ#9@1CSvip=Vkj5&n&DK=Xlwqac){JC=vP^)RByI_`?O3JJMi2(5BK zIkCYCwqo&AZy|ie;<>;e(2B*E8Grx(7nNAZDbVfvLfiL2r|S*ywHbH7YpK4!?DiEv zte>(zSS;80Gc+`mwG4WEvgaaZhQMCm2QLZ@L8}G?jK5ibB7`y}%Tj#ioMphw1JG-(i}52}ee24fy~6 ze*iSEO$`ApaOedIy)XsqfMhqwTngw)d(c%UttU(QUrfto1m)aTkN{|r(SgQ;F9bld zP8t_pM2Ucwi-Cq5cwhACf%6kzH+1P4bmicSw0LkB8y^4_m_Gku1?K)s|Nrk;ehFWe zVmyGHrCcCcN&uz6w7d<;QecB1?ExPaczXcbcHv$>1!&3j;*Ku3%7^SR6#>OQAK1}m zFE+)2-F)0l1eBPX>qG>g+sBJUyV;I`k~aK27jRK}j19ANh4p9ctl;ixenVh9qBITa zHb^|Qf);m)<$y}B|D_z@^<4{u7#IRxI4S&t4C*kxxNZk(FoHV#wN}`>JMgZ$&&B`$ zcSv2q5#;b`fhCZDM(wI!xCsepuy$w{0}|c|2>&&{kw89w<_*e{Or%*3yNoFgpeaVs z_7kXwU&!ac_x*!}173K4U}pHg6?6swqzvx6@c;jg8@OB#u3<0ig(Mgh_bo$qUj-ur z1EDU^OYj94upy!5Hxk`vI#XX9cLb+}TK>fm3nqq^+a*33JdWG~861x2 z4NFj7h4wr+-9XWx(c23Wd(myd#IOT91EIXhB`LJ73x@!*o%AS zI33&V%3yn+#nKM+S&I5~sDP@}gOB=+KnDKurgmVvaoCO~3o&YA!JcbvL`BbLB9 z{@zYVj)$&Fa{|W~>MWHQ_zYVfh(VBuf|8KI;n`NH~E5sVof? zNdHSY8V?@eW?*>1CW^KY2s+&aFNTkv2K9e$;_w!{82$lCe5juB1fO5avtuDhJH-8V z$nGapzm#ISe_JZV{UV?SGKcX23s(XDDF+%4O7Ji+1c0Lbg^CcUw1NzkW>~^g|NrmkyhX^L6_7|nt!@%8gAxc2L_0LPp#7mV68y{G3R+Uv?F!nSiI`3=b!6fs7MQ zXhk-BrZ&<6L0dN0+?D-Uj3XaLKVm4`<1-5WENEKq=>o_wkIN)ik_WjJ+KT z*cljJ$jv0M^uzY(|NlEQ9}o(k36StXEo=^+1-Xs~q8&AS!l)EJ2SDMo2WR;Fw*t8U z96l|&M1;@zIB57VLBr?YbOPZcd*uKB9i9&fg^!F2I3uEl&%!ex*YQBKqlQl#3E@*B zj=oA6T4Nw8Gw70`))SDmL>XT|!4~6!D_Nbe1UU>GY`!`;gALwRkv#nW{|?_rOag~r z7X1g^Kmj`SH36HC*PjL%%(LSND8R5azG400!wCO3zL|jae%0vSCR zUReVjWdCacvQeY^1hh@_;*3713|Z6t;YE=)S{VZFr8n0KFx7--oB$bn1l?HhI#sC2 zi;+wQjSjph0-4+kTFKh|;e{wx!%@5pwhmVQBK%8u{U4V0rC1E800p-%KL|1~yify8 zvmq~ZgeD1ioTVQ8|9=PL6N2g16-&B(2|nPJ2cjL)eo(VTD(}c>ABRQ5-R}WfmfJRk zK)zdg;Q#*}2MN0W3$|3K33WeMJH-8I2=_zM8@BdO_s8y9j$^Gk|NsAIJPsdfgbY7| zT0qAk1Bsx08OK{|z$1~zUBQEZ$6Z19oH87D?EvkVgl;uG?h2ZiU^wmy+8YAi+6mnh z3c7!WzXg0NrUwgXX8ajwwF21Q0MPEjl^6d0@4C@)o4*xwA5SktqSsI4MZqKR{z$%K zVA~ltGre2~+A|`+-s?IifM3vcPH!*B@%#er0{numYxo7+L3PSd_m7G%(u@ z9;mejhZ28l9B6P6e844J*#8U7M_7z*zh>IZ3N?-O{NMjwn3I)=eH^IeGS-$jgi6Y+7^Es$6PZ>~M= z3ch0ZnCl)Ul<3+Bs>31CwG0$pt~0=K_4gbst|mc6K@oNQ0Vu3WIgYumVBE~~x~ide z21CiG@Lt~|FJxpHK-Wuy8>OJ-b$5<{wo@JfO~rNHcwzVY|NoZTC8s~}3xIB?o)FOM zJL40-pzDMeDu=;~7&mtN9%wyTqSWoW19W`+0UpQ#ud)rGP1|6Xw;U*C+06Kw4I13O zGhTFpViY~BA?M$%0{5JeLmiS|ej$f zUAKV5pkWHSqMPBk>j6kWgSIp=9Ctkf&Q!2t6i$FHMgSGGknE8I>VQDPI}tPu>$(IS z-o0mG;q40*1%-F`eQ^*FP-X zzAu`83Ka1>W-$i-FTL`j5TX+lwJo>#TarN;!uJTcHysA|259XsF1L2LUU@Mm5Zsz( zgE|YknfuBM5s2Zvu5Uo*2Y{9VH->?H!Qb-h-~azmC%(vqiaq-W+Vi@`+I0he>n#u) zOV0FN@*?jvTDFAU69&tU(E7~L4qhKLz5&G}w(|57zhLYV@D&B!u{?+Z^%%IAU__Lr zu)-9SUckj^8n`???h2m1ftRKeAc+TBs3K?XW3Dq8dcj+8pjr0CGzIXw2`13>2mCFd zVYO~ga8b(#N;O~y1pF^&d0}@N9AvFOL75jK-0Ls$g8eQ?xRm>tYYXEBNW}9CF!#Ey z0hO|AdV9eWQUcDPQg#o&fHSC+Jp@of zct1EpYjpcg>4n(*!r}Da|GiT|`*2zgl;%Sezwo}v$k1}2lnWxUk?C~=!lV~{As~mA zJVp|#h6r8g23Hc+t_`I}yWK(O46}uUi{W1IMxX9;0WTKHF)_Rr-@pnnx$DG>3oriu z2OTofAqVOhgWT~#R|&)f`S(T8$-k%G7&@xR1=$azH4NK^aCg#zIYJ?Hc0T8>lw!0 zsUWv)WO@lIEx{UGg?oMX1eAz3)Cz!(v=M$$833!|T@@7+VgMD0TbZ z>2=)`@Iw3~D4~E1YB^Av((AkDh3a)!DglXZWO^L{vKb_k4Ys`G8H^td;a}@^J!0*8 zqVyc(5Nc>04Z0Ww-0}%{(JaHn@LB?tIzT3Nop`b78E8h5Bj81*3@A;2L|^bJfLhyo zUYH#Rot}Yw$t$S!dx(btT3&3BfR`7|Z!ECXC!nf?iYWjZ_mHXtR9|;Ps*>5Dd=8Cr zr{l1yq#Y^>igccvpujIt>UHG?MT%o`=ntU;J*>Xo^Wx=EJcTf%em;YoziN<=szYrO zb>Hlq3py(RvrSZJm4(Q zIRzjc$G|)07$AoLK%?%(WhrR3Wd>zi&;mqg9DW96Td>;#{ui^ns6Gk`Wd7EB2;p9D zkryu4LBgec$H49b<=?%aoZky_2lQ~@7Z;#f7lX9+f_&ThztqeEY<7t-LHZd=Si0F?pN6S>?+0>3$&GHXzD{;fF6M6m z4X<^B48$V-qsAz%>0YBTR>F?f6H1>a}yjz$Z8;yqMcwhrJx3NK{q(|kkv%| z1D#KiicsUz4UX8>1Et2jy%nHS04pS!7<#9In4ks^MDvTsmlzo!@}Oo>*NqoOpaOuu z`vO${@FhkDP_Lv!w0A1#um-5`noHnqMxxp)#L*!JdDHDtZSZdZ8Pfn5clK}})MybfyssJe);0~-Lk+lvj<$@n2q1Z{IJd9lD2 z+!O{Sn%BPIx(ia-sUTN&zrDc*aDZwraGAz<%=HgDx>2DBqgrm4nr>w3oeJ{&3*QHj zsAUxc#V1&36)3g(?s;+Pz~BG9zC16yT>t)m$qot9^iA(1}DVx6qv?K>sg3EzD$KL{4!U7ZHf{KAo%Y>Bd{NUZe zXss@gUqGo@Ta=06rQ-kp|3OtNNU-a~3sCq;=wMf0L2LeDX^W2LdF;M!x04mexA*XNf8Ce0nzANBu$`uSRVq8G!dj)7iQ~+pk zTa7i?0BHI~T?ux;3Y-i;3E*{LL+t^EUf0jPz6SzIBpYf~Ky9G!9AM z+73wNH=gwEssTDz!gU9HaEKPAILO1`R4yQdoXQPAyDA{5T$Kql2($;B%6IPp2Y0J5 zR1B2L+s}c-K&c$u^Z0?B%C|sE@dd|SK?_A0j=3&icv0pEO63cnseI3iX%=7ups9Qd zxY&RUXe@Yf%N(2#KuG|1DQ@ZpHUOg(M>VP+VH7BZL(CfWi)Tl9D4I=*-g7XTbmZ;td4(?WYs2C{!xPymvK=}t;ORz9O z#sk3(1FVInnH?zqAZm#)Q;?yh(ENj1kj^pz2PruJ;HV|GJA$_<0@jdV&=@=w0{Q~Ek1>m}99XKHQTR_8?y{-_kSx~V{ zp#0+ssf&(**x2*ZZf+)qm%CB(((|j3u$|8h4_g<0PB~Y&d zlAk^y@)M5p&bs|rx??%4Z}K;TMvl7KtPhvhYTtmYuzw9&UVrQ0YkB5d)_xqN9D&{E zUQ7W+a~(^sO!UFWEX;D9wH%$bAE2!?&~Ch4p!MU}Ar~3BgBPnd*NX@ohe#BG zI;TwC$3czc;O_Is7#LpIT7y#nOfTw*s5aob|ug zU!vDp0=j-AivhZVHsBZ|!;4*@W|A9=0mgC|@U#S|!vi`42zqBO=stnwCqKGfIY0+; z2?Pr83nVIh;uk110NutX7$Cqen4s{9U$DTS8*-^?aQDryZsXQ(CH~>v)hyQEOZd9a zy=Vue!(#^4-%CGr8-v5V+nYoC-1nDR2B4saoD3Tf_F}yOIL42I&NpB{DZMLOdDdy_jln3e=+X>?Um^Mb@07B z^Dph=%|956thKqpMtpy1e9|3c|EGiRc^ZqaW)9Lyn zu$w#JMHmYMLw7X`*xGL6?(^E`nvV#4e+jZ2;`vV3Kds+N%%I^F4odk%gjc;jIJ~++ zcar~zkLzV|IQW2t`Cz9rN4M)A1dpYY8+24CIDSFr!#?@Z9m><~3fkkw^oc)$5p>Go zCw>7Zj!*m%jvSvrXPAMw0w6Bv>?sEUP~<|!ok91fx^lE0C}ja%zh?^yvvPZgRkjQQ z3=Boey&lTeC&~;0UmUamoqpPUgr)UliCV9ta`S@+ogRNc+5%oIwE*u=Z9P!B<2C;a zpL}M97w#Zp-bZGJ7c)P?gZE5WIOwtp>+dBZY2f>vyU)F_H2nL&84^12;5*|%5I3eaJVn7@;}(#nWKWx(1f+6Il#d0x!%#o0vbeek)bs4?l3+^?`vSmq5k` z&=sq$4?t55PXdm+J}K$s7I-0b5WLJ6apF5@M(sG8!(46w&>eHtEJR&B-&xE8Y9||G z%aU0vpkweErhret1z#Aw>;NKo&SbItFXVaga57l>FnGNO`hD&KVJ{9s&lX9h0aLA}*pe}!&0iB5NkZZ{dw z(ZFsB0Wai1x#c*DuR$pd>AGm>cu@kveURJ+osveJVgZY(H2K8EdpM|GB7Z-94JwOri1QqP}b!D&144tH|yqq5ewRBeMF$sjRjjZ z#KHi&%$xH!_@YII7rgtCA_f}7i2Kd3xv2GjDM!4~fjCg6X#5Y(Omg8bX8ig8zmu)g zjir~R9+aWkI^8%nFvf#bK?ueTc?vY z0d%G;XhyU9+;Mlvu0MD1uD{@8Yz!~#3&HgXQ?Ii`um79l?4YjDad&VZ4qTPU7lNiC zK$qe%G#@r-K4#E-+`#%q>1r%t1-fn>C89wk5+uE5{m(dwa6g{-y#-!u&{+#xDG53+ z-1;+r3+Rli&e|6sZ?yg|$sncT41-k5%Z&ems!UKX5?W{WhDksxO_XgX|Fal^Knc4P zRHGd?02T9{wH(dI3|z>3+M*r z?h`L~elvh>Y$qJjn5v*nc1v2<3%?}_)eP{Up|9^dnNpAs1 zhKnn=K-i0Uo5A%&>wyyH-U9XpJBAYRE;bv55^nx|2fEJ(yx^;6VsLA)V<>$Iy|4jK z64~Sf^Kl3002hp6{4i4bUWf2c;~No1r1JtkgdxiCEQTzLEXEg+aD&&|quo~f1ay{T zrYU^a8i*h8V(Lz2hEDKh*I5kRplf?Uq4HwVX9j5Oq9qyd+=OI1cy0pJzRmid@e$d5 zJb32!TzR@rfKD-p73gdQoum1}r;&-F`}7OfM)38UEuhsBy{#|){{J5q@WR0v)X3rJ z-TML5UHY)o0dz6a(q8a_t?ttSFA}PlKxbouPWJ3R6Y#>Y0@OQt0rKLvzu*F-dn?F} z?sM=H`|nkPGcPD|K{3+`QjDH|r2?`TUx<3cBImU`6T@pZs7Y+i5B@+?g5J;_=49977n2EV4xSfK;f#%nYrEC5hW--2ygDd{x3Mvdf zbV^{WbU_Y>;vE7k0s@e%3KoIHFW&OJw-7XU;tbwk4sHvC9cSC&%O&taAq!NxARqe( zD*BKNhxC`S{%15H(ht`5=0{L>y_UoJXK`#doAvSXaP1%9R^9ja2Y)d^J9D58G-noL z_qi88xEUC_*?M{EyTe#ILpeapKv-Z4lv^*AgoB!+$DP2v^X^l}oxq*;V@wPIuPqQ} zYyp|!$I|J`(FqP>P!?-FSt1SAi?R*%7$ZaYi&E{s|C`-dP(v5J?FtIe(C#;Z|4TWV z55kUEf3a%&zyF{f8>GJs3GW;Rc>2Lw*mt{c=yqT^?qacF%Uo^&5HEnG*J(qii`5!v z66*Eea@>7OO*d$N&V+yeyUSl3ci(crmrJ1aTZuZTWz_8l>W2w-GyV?%U8KR$Ezo@; zi}Alu7Dw2NMeU%7;{cfpvBkrW3v7!AORwXPP8Z8HD5(hflvjxR&m-cq`HcWpFCf)d z>~~tY1&+H1IQVgaZchT0*1hE{-RxNmVaHv;H5bUUEbL%cuy?~8@uwTaWl5Td0QgE<u)eso@!$V$wr&p==5x)JJfKUWI$R$>>vGUF)u7XsKu2f1 zkhK5%KLAwBy|9-8RVXaopyiLu-M%+kPnHOF3;qv6iO~O`r80k5z(#ku7&u`PX zzw|{nbKo)8GYtO=EqZ;={4YHd*nRqcfJ#H{83xe7$qf9iKVBPj`@ZRB><(b*cH!b- zzSw+%rMb$2p_IA#1WOiUK=-K^^KAeA-|<3-S>SLtsH^n^>Rhm0%;#GFmq>O8@^D}8 zJ_OQQX~B@i!0&n};6=JExEsg@Iyj~{l^L|Yj=lTbiv=~{?gcwIh>*h$wSfd(_XcU^ zLE?u%`LyB1(m((I_qxIA&4A+!-~y^X6_n0dKpo@~z6{Vh@vs-mT0ml`HiC*RP+<=# zubQ9yXnx}ZX@VW;bW!o>c9jY4j^zmJE)@w6$Y_|$Ezs+tBGLU5bo0`gH~;TDd$1XVhMJO)=LwAn~XlY*a5rgi-@o~|{XI@OHgVe1^3nU=^3qekQi1T4S zgoPtoOP#()K*fl!NT=(8PTv#8m-d6YXP~qg`k*890xW7AMY;OfI~z=3roG zu6-iVTYCYtj#Gx;x%NWy8;)+*6Wyf`KJg2(sQfQI^S?l(*Y!n~Pr(1uBQH)0gK~vH zKv?(-zt{i%gEjkJ=q^3L@9cXaAn<>w#Q)M0keCPqtLF!)w}7^AyM3R4R}p71ItKnP zz3@U?2Gq^qL1{C>u55c!1BovgLfG18}aeQ0FEz7AyD{(<7?haBH~Mu z52PMfd{s-~jxUpHZ1Dxo&moBX901D9y)G({4E?`Uq5J3mQknl{A{i}nxdj5kUvTh( z93TMB)}TE8;sxmBE)fu41~r@KaWXJ;`>513A5nni@eNfdZh(xxHoqat{tk%!9XzP^ zXW+E|9S4T}1|-`r)BO|V`5uVn+z87RK%Rg798$pPp!&Q7WOI)S==4vd0&a69#Pf&( zjtKul?VkX#zndHGd9eN2*zNzq4lZEP>^H_{f7btuMabo=3nVEV?Q}(5%-QL?p}SV3 z%T=N~mZQUU%XfDX1_uU)QYrpzt}@+%0sl+4fKL4VU&<5wKS<@J2Y4mT4p1*T!~E}m zSk?1lH@I|S=?3+JK#j_7-#u8XZOp6d8fs-2AU9cp=0m#A1(dMAxXa4G@S63-H&*bz z>KiZa@`H{EIPhYr{NMlG?ke5o3f;ahS`XBS)U&jHE8**O-DCZ+jJ?x!kM_scOvc~3 z-9=PE*MT(ua469Z`(L`H*L4S^WDNLUy5YrsR?sm!FPe`?7=P;)=nUlnoe1eF@R|*@ zo;8#QbP;B!>z-cM8~o0$Hv$9xm+t9x-4O)V`h}H&0c2n|N2f1HTR>p&|I!Vet^&v1 z6~OH-cNGxzB8C+dod(BUp-Ze#FU?#h2Fc8aQQBwG-Qb>RS~+@Rg4ECODIxHscflO+ zNg<|g$mELk@#5HSX6+B1u8^_e@9%c3TD6J`)RlnLP1*;oj~6*I{{;6jKvPq`9H7Y| zkOJu35J-JD*0~{R$lMTU1Q#+kyE6k@eC^r#zw`x2 zsIyL>h_{<99&}XGvAEbn91PvZ;^U4nFo2j{t~}l6Iv8I|gH#r=bo0Gt>ORN6&y^=U zAn?VDO`s+i4@e4R2wykbF%}E3ZjjdQV<28Uc@{b{J%`# zg&nA{s}m6bIl~O$jA)QMTK|_`>#P$1xw424?oY53$fMCvpCX(KmV&r~3C&9w+HnIws`Jko%>@X_4?$<@ujn#Z^WEE%5bUE^(42X0&@}TfR z;|1M<|KXwcKM0hE5hDwj@)Dq4z*A891BwGseg^eRx@%=x|Ce|Lcg0Gyek-x)c2j7! zU?`F8_A>wtMAeCSbTW4PDRc|=Ix%)Kc1ZDWJN%lvTdeyW|F**c|ATnCOGTQ0{4ZrW z<|@G0{GPFNcQoks7hi$+&H|QBjyUMxE~NYo>n@cE@2(YT{Zw!9Pk4~m;f0(6RuJRpB{M!z^=I$2f-*&M3JlNh^guTwq?-)xr zK`rjAV2MYu801-q{aODrJY13b>(H(mMt$C0s{-;wsYJK0LZ|DB&eAoVzI$5#mk4$- z+Gv-s*yxtB?*`S-ubGT*ce{zGGVn1l*fMZ1FqF#nIx|@xFBfaDku)e3=<<6OpA8wDj>0$k1-zE#PV&efR}BqX4>Jnj!o+ z#%+HwM+Y(EbXj67CM&0jhxmdRh3pg#rS*eRup1l7TwowH{=&fcb?ZXh`b= z=o0u+(3(9KTu$h9JpdYA2z)!*et8DaRmgQZ{QFLHAJ;x?eWFbe1Dpc=@)6CjJa89~N4vOrBKWchChHf72m&5g944M73HFIN2d z{~v63=?YMD3Zx|h!>i6kc#k3fmc_f7n6O?!Ir3 zy1h4Em_XE{b$g*LuQ$2imKUg?01r_f+;m6oid)*kn9aJb`ImV#v@a-T6h@tGz zT`SNf-tfz(gr!5^HFw%^22Zo*15C#lOu8>NJ_2Q`#$OC93=F0G8}mCn7>_xChT7xf zVh=a|0%f)mfi8bW6!8NOnZI3Zc&N~DG6F>$TmnG)-z$*wKeTIwng2_{`QKNfyH=so zbwQ`^j?UT@t=~!nyVx=FzoQ6v%)}Nna8km)Ysy@1f!9jC&P=;z%;graJ_afayjOMpo0rKUAMgGf5Xhs&Ctcr;kpHM+kN;83y^^Cj^-l*-9JE^ zTwj=LBNZLD8lXkT9@r3$?*@3$(S4%zWC>e0Bj|QAR=~>?Z5FI$$_{XuvINoxLM~G_K+2R2#FQy(kjj+JKS1|;KnoOKtQ)E2lJtT7f+Xh8q_=> zd1ydDDM5cQjQYaZa0+Ubd%Y^fe&rHf_g2`7I+a$H`{Bb?qi@1={e9^mPlVv z8yu;}4Q-BtT>!Bk?|6InN9Y{X|1yr_Y%IQ90xve7VrBsKr&fb$kr#_kfxQRmLV)@c zCEQsOVK20DLBcr4-a!rs>;Cw^jN?TT*dT!yQD9o+MG(ZmIMDokAZmMA1id}n9m)|5 z?GIX?;%~YHs{LYlAYDWLwzHtk$e`{af6ICX1_p5F_b{~cs|@ZY-W2%zzdMuzwCcAP zq!$v-dfj}TzC5qBTK|{6#o8_80ry}b-9jFQ&Qc!Gt`KO?x7$rX`%sBQK({Lo^PzxV z7D4920WSjUm>If5Ihv2~{4W*gJ{KJHVm+v-0_~3SqjX0>hQqqW(V$e55di8J$GXA# znZ|IIrWrXpVn^J2QhNSgurH;fjO&0uGBor=mCXA{d8uA?$Qt4=Q>S6ZtfQQAH)*&Vx9*m z$+3Vurw4M`F{E@485IGwazH5$f=LUnW;dkpssV==3tD(3xPih8B!?PaAQ4b_&2R&S z7l_wQAiNko2!|IaMH3lb{?p*$1#&Yqyz<=P;q}iIbo~QS;l<#Fl)fymr7z>#ov|Of zYdKo~my}t`mlkD7yqE~O-xJbb;pmJ74S9Kkic-)Pu2S|LE1J0lUUPLjO0*s*W$ty9 z0q^~Z6aM=j+-HL>^z4lN5De`nfmY2x3Zs_{3=E)T)@lCjFk=Y^Xs;=o$lw3qSx*AK z0hi}l|1N|0T(m@}==v94`(c`d?80SakdHfDcB&<)1zwRR0`jyW+zo zfaZ8lVLXn9q}Kps_oiSAf6#i_o1L*QUVMDW%+UP-G^^KH`sRg*H#oYXi|!k0c^Hm6 zgV#$OcZO_oa0RdUC}H0Rjt}PUGLBx?2>~zecri0{|7$+N((BLI#qQp6p!BEqPxmaw z@E4y!ci3NOKEly@sg(6ak|Q%i_o>$ZCE~F2{MmXv89N;R_m+Xj89wX>%|>GOeDe!vmF1Fq>#ts+5|DaKdPoM#8hR$FCknReQ?ot%pPaHtD zH@*Z(A?!!e5Atwlut2_oRGkCG9d-1~lCv;`- z=Si?K7!p5ai1@)4Io-9O%O;?;s`c*@-|kWYsCz-z5`mX!lL+ZdZ=xA1vke|5aLN z7&C*eqcT1a@V}7b|E1<5Jh6ua82*=v>;Mg|UyKX7AMiPx={(>~S#rnR1Q=gSfMi~@K!n)9Lag1c zKRQ9nDZ9^=$acH4%!KOi4E^&W8lq4htWXlH*8?I1(aQ$X>(0{a&H)-k^8NSce?y%B zLkR~+J%|<0Kji>YgAD9mo-oLeefW#N+<*T!*fDgUD^cin=YU!ZO*k(eaD$zVZ1q`) z5VF-A4R#E@uH2ycCGm!O9?-sP?iZuwofmkow z?Jj`q?G%Vb$aV)pgdhe$ye$CNEP||A9ikFhvj{{8S+fXSvjno{R}gn1YrYNAKvSuB)W&>o+H4v4^nlm9n$eIlxnzg#! zO^`L)LsY7PQW+?%^G`VdTWAT+DDq(Wk_X@{VggcumK$L8^CA0pVfB$!}b)RcF0LrQyGdm%pGM%A2UTok%4aF@1FXlpo;C|WC>CS=B4LWrSJf;KE zT?A1I4~Z=SFXACW$hvu;x)r+J1)x?#k571E2vLn}fE+{!*#H5E0llvK14_gj>P0~L zb^nX4Y+$Fu^Xq6Ctpmn%BIOd4Ee*F30e1r#-8u+IiK&g5m^Tc+M z;E@H$0xocQ$pJ4f&$7YFORa8qP~?Nlc~CjM84_IZw1||_z-e(ZSRR@dIY71}sQ}d^ z5Dc21>1})>0y;wt+*IoJ2q4UCLp6GV6a}S|>;M`LGw(PJjO!UxHR4kd35nppB#; z-9gYTF#&0vf-i)e{{H6|a5LyW&M)YWx|n_nCPDWGGy83M2^4*l3$2S4`S zU8MO3M-iVx7E{1~^A~f!fg}64y9mgBWY;rw+Z!K9>tu%wl7f2W97TLtOb!A6&0eHJ z^|?Xx)roLG+et+d-E77uL4HMU0)bYvf=pvWO-@f^LE{U}Z+O6GTV^r7*e4B2nV@Yk zBK%CCqrX`|I{87H1iv6{68r+{iGrFBKfs#=zjnY{f3Wf@;5R%xpoJA;UElvwjx5F( zA#j_tB$ybGoCUHFo_fIMb^B_7PPGMZJq_jQKGghzfxqQ4sOR^Bu|%l(7ZZQ$LD0&} z#6N%k#~xB)=yDb4aMb8_73p*o=ysLpbQI}!mFaYp=yp};bd)hZ5N`bcxT6XvL#J6g zYC$$k2Zur1pWTiIU4a_iCO^7kez0^qnplXim$9^5D%I#d#(lWNvO7?q+fhXMn(|@p z3ne1mjuOhpx(j8LKU+IWl(JeE%9MzAJL+^_KlqBZ*JMKX^=`K2NAmoeFT57TBE0%S zC!0I}c1JDiA4MH;(eWU+gSf{X!AnVwIcmW6H6M3`bWR*4K&8@gM;Q>6)_S1ijK|F8 zNAk>v4*p>6WoZR1{0+!r_+O~=qI43dpTh$(5-BjxoH?`b0<(YsH|rH<0f7=$;{%5{ z7&1U285;L^1TqS2m<2M9ba4y(7Zq5*DF9kD+|3J;?mpNp3ev)TsFd+=P~d-2kp-Lr z{NV@E_=QyX2s{z&s15ojjubo~?F{j>E_iCFiku--yO(EKN~ zemv(G_nLJlXjfh9CFmlJ9V+v<1v-7d@Vg#5?)n4dl1|8BmRXG9kobVa1JrKcKgMU{ zUo^rjh9=99XkvW1RpD!#xLx8;<)Pth>76iL_tC~j=Mg9r~>acg`Qe<-1P%EUR=L` zyoMAmFR}s=@$rq7fki-ou_U-Vl;i&<3pNG@{_RbVSQ!}pZ!%#6k#E54C!jTQ{M(xz zfau<)6CjFzd($x}eFU`DZIT0s*ZhX#MGAN-Rc8YuVrc_727e(*36SO+{FEcQr@%#|#V5VL=SxFO>VhB}%VrNB6ma7pgrB4847z1ETo_82AO* z`2`#V_yyes_yrsk_yye+_yrscK-DI{fP(|Spu59o{yK+%?lw>&ZGOO<#(&K{pwm5~ z*R>(3c5aN1_`@9>1+q>_X9N&+ChFuAuII#i+iX>9jn z(8&tm&^~kKrT0W8#Oi8r{nq$K0C`8=pWfCFe?doFf=Ez03CLh@V;0C_`7inal!w8x ztp`f1GFU)MGJC)L{r^8O;J@gT1)QM6f0Waj_kx5NN+f%yf*3C(yFsfS{}`Wr!Qu}| zWiO8Pz=S^fL4=^r1C<9^|1;td?XSi+pumFXPLw73DGPN#4LRNo$N2?7V>%`s-EAO| z)&ubL85ufVCv=|&t^ISI(hDwz0$zMS%Ltz)5NLk%2iop$KEwe(CHMvdXxSHw z@yXYi_jCH*c=7b}pZ}ok%FU<#cY_VZx);t~2-f@(C#MJA01Jr?l^&VWO2E3S+ z!NdT*qNVu=PwRnF))$_?z#%;sfCk$$=lKN~O0v2^ z=WOt|#Ik@2I9`U^JfMXj)+hK|yjd6+0<#zcvKTXdgrZ$K0=_ad!{H0)P||>_j10|3 zOnQ4k*NDEjbexf42S@_N`QW|iy}ms!E+1iJXnq6QC(iid`?vr9J6+$j9w_1H4Sn;X zqnm*NR_MxPF=T))=5Bt&v1>^fx4_O9pkpwe?E$S>5a@R0*q0E>Ezo*^-}OTmn+jut z?OBjtI$U2sZc2GkTfxN8ed0w}2@^xF8&5!Q7)P(~ofqGGz^e_qe{}PMwt8IYOnuYI z)$PvG>BMpz)b3|E?hdLK7(glHg%#Kc(2AuO^@ZS6z|wsBe|PPJ*8e5)-G@K$A9QCa z73*g2KL1|;!sRGs2Xg~hKqIHGIbM7(XJTkR{XdKG#an)8iuzyr;)Mba6T=JZ{Y;?! zNvtnE?PFs2#>P?-+U>^D{DZyBH;Ww-<{shbVg3hn%bpuJ%Kf<^LGQNbN8@vT%urt`;X0X8;P=ncC zd_D#;7^DDf@Ry^E3@<^a*n*tQme%dY@|txADC{7&bfql@r62I!c~+pU>?hKWH(mfY zn!DL9zEEN8VSkYVb`D4a?3~o2j0~Vuwe}?F1|a@Ub4Ji{-7gsUTXh*37{0MF@wb9{7$7BG zCm9*Kf3*Iu2*@}Q&MlDPf)TtbpiuAtheGWoQ1HS+f#bznkUhO11z>C69f4SD1~wCP zHFXZCaR1QFhm@||!08G!&%gkkHah0|hwH_oQc%)7=K6>8#rJA(y5jCGz0vxuL=K#a z+*nFQyV<(W{TKMae=v^2yA-r-?c9GzntH*y7nEvBctIYDyurxuqGT%*N}kyanz?+# zv5O;uTVSU_54XUJO*_GP=EbhhptJ3IUKkx=#ClLf^Baww51g3=x{n-p0C#*^PnHNA zXZQg+|G|L;B-81j@*?CWIAD&kf(j2teF3hO`KKOkwgsg?2L6`&kmmS8P661RoZTN_^&_}u)B$&Fp!H&i3QxC> z3df5l5jg5Z7Zm~6&77_r{2Htdi@625LsUe%eN;ewEQM}Y9!MVx#M1$_pIuZ8Kn-XY z6%$auxI{$))@|yDQ33V2EcgXoRBVpBsQB0_u`s;I0^1C&TS5B(!C48kIVdEcw^M_U zfq`G+#*30128LcAm4FxChZq^aw>&`lgy8xj>puj7)-vAy2U>q40c(bWrA5%p!}wxX1vv9Ccb7f^O;$CZ|KEN51OGvk{8Pu_kDPxPy1`-Ada{JO@!$(q z28I`=xeN@=Z#3X({zb_(aQc2RXD2wLvAz)A#KZtD;EuC`6Aoy#9k`Igtls{YzJOeA zx<4Fr|Fth@`zmr34z2?s=~yEIoQ_#h(y>PZBpo+_bVAcHjDo~Z9&-HPx}UDQl%w@q zi7GUjO7t=qKu0LLu^eYx@#O!1u#EvP?!<%b!t_K2_*6xPuot@;!Obyive znag<=9Q57SKt(L*;*%MHpb~4zi-!G-$RktmqT>xDv;)Kb|KB0%k0-QuKtdb!8q!;F z;1Jm1?#C=}_zd>`SJwZGX^0>X3~qb_x?BR@2!Db+?hl&jF6QZNy#T63Kr4u|7y>#= zue>N~0Egpoumq?d0S!_9)^`~Bhri_(0|P_rw-SlQV+O1Y4840nra=$%c)1TW)@FMG z)Y2*8+PC2mzrah-^+j0>2(w?LOkiL*_<{qp8awn3XnS`jXx)+PjR5c#Z#7VkJi^g> zprW+f^-Al364u^=51?uP#$%u!DvEUhFDgJ=E|0Lh_Uw**^S|^0B(xug{QtkBIRF&e zv2R}Mb;rJer05BdFh;#9uPhc4#+#w)d$)r8)9uUw_EPtc&r4AfV7KoRR?x@_S_UeCw3xtcCBApy z29N85fL_--0lm=Z`d=*YVv8yx12h7l_gg0g|Np;(B?uz|9$<@ruhEbQFoCM)7jV7O z?aaY1h?=1wy8~W3GRg0w9;fys+5=YPN#ZfJ&1Ww!1-Gkfkr0_QROnA6}^L2Cdk9d6|iUp#jo| z05t{*7I6!dfQ~I>-LQyT;1ho&>j5yWb0FXab1%3LVZ&HroRI)>Sq#Kw3=nr^F+g1g zy1G5!g(=)+%r6uF|Nr0c2c&NfNZ$;AYa_-Y)` z`3k7Vw}Y0^_PQQ{)NcV0Cj|6%cCauoyeLcuZQ=yqodY_u|AitrETBQd_CjeFBSZ6E zP`96uHy0Fc99%-;#(f@9~&UQo;WNcV>q zS>RC>uwea8a4hM9`!n6=UgSUf`~UwoPzBz7?nTp=zyGrsvI<^EKL7h4)WENl0{H@T zArLezIDoVte+epXVa=0(|Jxt~dTrnVy=|ZYz3yqCGVuR4@UY%C=&)WJWLU2aI;__Q z9oB0D4eNo@Bl*hW5_Y5prQ_pA>}J^>u|Az1N96=V%=^WpnaN%RuE{3$>C#e9LVJlSPbk61OagmzVaSgxRlC4N_X*I zj}M?83uw>6aaK?afa==+0!S4Masdx9zYI~BHNU~to`PD$-wK}j0^PU)Zt}JsDB(E{ zvV$S*xC3}g0!Qn~l4Q`0<8iGAN}VziqPPVzHbij?1b}iyKmh2%b?7Cea-czwBjB4_ z7jI)^*a5nS9Lb^37EZv6YY#yiY%v;A5+IXXqR>i2_{HQ04ucC1P!q}(WI8AtVww)W zQ&iCR|NkAK5rn#49Z}$9hg!i;4TU5-uy#c3ojJ4PP89ljtE~SS_~O&}fCaceSHh3v zR#22dE{Em@1uR>4;}mAlkSRP!Kng(iLgI57a(oiH&s4VC6}I=X^*{+fB>iywFXefm z{{dUD!vpMr_y7Mp+9E+24Uw>+aRzA&@kC<@tIQBcSS5mVLfm@|*}Xj2mgse+elR}S z>H7xSwh=*T+d%C^@rMbhm81V+4=ClFKnh8yT6iBt8srJ@D6l8qptOUaDj`03f-TnP zgHN&L*#XuL3VrbSdDj07HZOSNfQbAAYMP?BT?yoNS;#>FFT6lLzzkoDXl{WFlW1IN z|HuJ&+V|Yd$gqPz+86cu|9?kdG@-O#fh|5~20`KztQ``cW+eIl8mM|jPJ{W7G?>xt z%G3OVv0N(PMeF^)|FK1R#sW|XpqI*Utj3<|NoAoao~~%UXG&_Iz8CD zpau290+3GJ{gYz|F9ilSzL|kMrH9@>>2~J%#4q41(Am1+-~azz&Jy5R){fTY|Nj5) zZC&vXw5l3Be>DMgSmw$CW`>=9pk~`vkW}y92++2fBRtUd!RMu5$>XglfB*kyU}&)K z-3n6ByBDPR^U@M-2><0*P%7#LSqSa_fELw&y8Y1G-jz@Ax10vuI=L6*4A9k-b3xYg zPd&iD?La_pE6C7*7iaGM{SR%-LTmtA-u>b8QvMdu?x9co0DF8}}Us7e4u z8cMf61zS|rgAb|Y*|7?$z84%|pl&}X_;7Ul-y0&gOmX(VKOo{axcLoi4JKk3Aj_fG zbwd_Iz>8mb;Bgmd?39>*y1fFf8$kC72)G{L7jzKd7jV76FX*7aFW~xsU(f-0Z5gyf z-0jTMdZ0uFlFeoR7Yp>dZU}f`a1XR1je%dlLx5i(K!IN%!r-+4zd-B*eu2;n`~toQ z_yt@yfUFZ_;1~1|;1>)~;1`U*Vmv4#LNO#iig_c|p9whH15h9Fw_XROB;@*|0OHWh zv}Rk-Gz@zYtS;rdhpl|-b)6CbYVLfv3z8M+zQ8ZwI;Gq72)`gBzkur!enCf25N+WX zbX4ecH0VBr*_z1M62mQ!p%RO$gfrU-FX48tCS1a`JN^H^<9-sM67CPSG{+4-iIxYV z9aew1A%`b{_I+tIYWW5UOYs*)4?v-VQBdi`atmZ=;Pko84!F+`t^#%MFarw%I=P*qUU?JdxKu=xR_^}&)r5QEA3V2MY@3{Wr`#GxmU z253h}bUQehx=(;dX`ZhIb^aS(^si)O09ghaJ!5z|1GGp)gEe3=w*YAT1AHFr1JIn} z>#__VknvM6Vxa*#^ssFk*!b70K&4qJbO24!;s5^~uBjMB8AlvAh*3w0w|GE;xD=|M zU%>SY$Z3M0^)2A7fDXuAOz^UDQ0E$wpLZbwyZKE4q5Lcjx(Nv>Kl8V2U}RuuKJbCR zWjSccODs?K;pPX-Hq4~~8582T1u`Nq!nFk&u6wtFJq``m{xzU*ZR!5-!gK{_Bn2}q zBCjAh?)n6@DD$}M3()GhZk~>X4J-lz){UUWdv&21AkK>=x}d_9rP&t5`(J7g8hU&2 zBbSNcZtNYWshfhhO5C zXK4P%#NP}$aKANX>l1jD2D(%13ctp|Uf(mH_+wbUf^6UqzYV&P{7f3Z{$bGF%~$x{ z4u0YnV1NzVrSa>tu2{q^@R?u0Ris>=U+)ljc8`x=k7aAZJstrtk7GaIpa1{eUUz)v z7YG&L*SHbPpbQFqcZDQguy$y{0Hq-5^B;2hBv3x` zx2Av+AxirE37U}rrBBdlQQf{gpnMN103tyQPyrB-VGz$Pkf9TgUH~kCCRCBl;LreN z|Lzkno~;BW)Fs^?Ui2)*o>048L5r(GKPxVV11l z1ha(s^~`|47xmx@52Hw50WxI?PN!zVO<{T&02+Lb0Y!8VMno@x7Cx2`^`K#xeM<;O zbeHx2|2ytv5{hV@1aL&7&K&Z&Kq4Bf9UQ}u_%-uEYEKZ1UnPwA-42W2b)cpO*7%)~ zz%7t50TT3#@X>jA(3@<81wCW;i5F}uVDY)yxn`5w0)5 zS1Yl7<`?L(kl+U`-i$o`nLqLbNWl}3f(M`ZBY1Z#1Qnw?AHm8%gT0^mVani==vzUd z19Xt|xDDCA1k)qvQk-sA5m-0rK&em01W>a0k%%o>oLUD<7NC?iXDKYDIW5GI(n5J4 z!?&%MN;NZXfDBeh;uZ)34b}z)1%c+JA!8|paD$m%FYPWBX#G~Ilko?n-X#fX$^)L{ z9pUPkUlxHX3185_Z~$oh(!0B}fSG}z^<=3|hDQ=8<0Nql1cGb~3=9O>2$|3NzZT{d z)|UpL`@_RP&Ix$&ecwOO>P5Df(xBo;1!O=<61dPq$$5|jz6)*$%gfiG``SyP^W}=> zp!QE5!K9o7PRbl8HOf+ZNK$qMX@@3dFa?QUF<(;38!YiV1LUVEN!a4|)f!l!fZ})0 zVp#kp%_k;)kAMt5fHi(6!VN}>-xnbDPq4;sB3wP*_%%reOw=@O+p-L(SUp(^}>u6Oub6~Qfd$Q;V0Qu~YmkUzI1BWJw{(AL4X zRWLt-;{3!yP@GTb{_rAiE-21lf+jkX1RQm& zFG1J3X6yhN^aCU6CO}&T@^FKgU#fsE*(kjM8D(iR{{Mf+gF+lp=ljO^?28i$;9-)( zkm311kVs@l$)pT6kVpg@gc5(}NRB^H?bBV#(;cb+i9A`f$kRyyb%Rr|MV{qKRac2$x|KBmQ7+=Kk%OgkJjTCV1 zLyb6hD@eqF4T44-l!D|xJwH;)SI`uAw=eAKi`J8+J{dbe{!>Xs4kK72xobHrltFnd zW*#WIKrL~mS)k~`>@s$T@<1-}1lOMosoVk?9;wLb0A{cu++a}o3R-Ml5(pYG@af(F z%6Q=F)CZ(}N-A>fFM;N|Ps?ELVtJVis!rJggL-|J1a?Cg#j?Ki1=WTcAQLiDxj~D| zu+)ZY;HEIYlm*8ev^Eqr`2T-La4C+Mdm0PPXgR4^;%mAEB)-7fp%De8An{d4X?)EA z`DzB%_`0@V2d&nQ%ID7wL{|yL_y+9&Y!~akRzR2AcG|xTYOb5f(0umzIA`Pz{>DB0wgDq~nULIdD_Z z@)xuA|NlFZs|ZEbj&v;ftKAq9Szzs;SVCY(e8rIzU!Z+}X!X|&kgpgru*KJ@1+Z`d z#n+tau=sMCOiX+|02!>3fi1oY;ReIw3o`lH?ZnZ^h;_)GC4*ZaBOn7;;LF2JWCo8U z!Dj;6G(qjZYC?gpkpT{T)G;6~BS_#s0BMKrA6!RLcw=cVM1VXJf;GIO<|Bu<&NNtf zUz$ivc-MdouD}}JjBtbD;f;|$j)1fu$iP;f9hwJo7iRuY0T*WA_QC>?33G5pQ4QP_ zwEXc{9kl+rmQWNiWP+mzwSAXv0Ewbzkak4g0I?wX;~h!y1=`<*mOmbVeC3geEq|<< z3kw%e{-~J(i!Y@KIO7Z4veU=}t=iATmNUZPMl!u#4Oxa~1gd#-`30N|j1Pe45uF@B z^N64M>zo48_^&xCU^XN(d_XqL$i$UfKF)zTocW~_a=j9v_W%D5zIsAYQ2>bw)ZB7M z4-yq%?eO&`W&ud`3Bmc-2+-^d=;%7gVRfYe84Ex@nS-wmPMce*?pj9GefCv#tV>jPq0`A>96jX4G*~2{R=_M zcv}yYcyu?Uh%zvAy1s#I#IJZ!{wVX!7I^L=du$_!GZC=$%g27rm}80(v_w z1VCFy-+<=)Uf3BkFm(5UoY5OP<$ozpP&ecM01eRHzb}haJG;Fi1B_9_}!v zm!H8yQ_!ioHWg6$*FY#nb+W*jiw&jM%cTp6(FY*y(DE-0IX(%DHQaZ=6{vD zLwQ;+mB_&QnI%Hqj6uDjOM?Cfh=9h9pY-5e>#|k(|Nk8u8$ol8m`m9}lNT8*5Wk=< ztF+UB_@xJ=6I47v{WFc0{*eIrM+Coro+|zSzoW4UkAF(A`6o{s;-46hP9*;vL-tPz z!SN*USdvJ0tptDTPQ>1s){`Zvh!KIPZqV5@+^zzpoZS;61VAYrG-7M^nZK@)M}UE$ zxAa1Hqlf?l187qF0!Y*atmsB}qYqT{PN(Y=@P_gR`~Rgf;bB29`kw#&|JpAjB#T=h zV@(!%K?R#__Lu?AZ@s<^FV1#BrxadG{4YHN8QfW^`2YWoz0EihH+XR8H6QXA!3AtV zsjLMFO0YrTpac_;`r{jNcoInO{H>tjZ(a-L9Y=?cz9=CBw2psrU}i#x2YO zJ>Z325{_ky8$cn*lZ_sNuqiXP>Cg~d@}j#F8iJVS!<$Rt3jhD_;BUndqVT@EK{mL! zK+R&eH6Y;#)()GGQ42&W{|Sa4?)8A{KwA+oGrT}Hs4B(jdyZ*v-}iP9_I;%M|NlF9 z+X(r71~%W{RfqTAB)r-X;nnyCbbbx)A`GSR8cToGoaIkAYvHH{<{R|NH_|K|6Ck^Vh|8@C&+5 z;1~2=z%LlOA&vi9>;e8(ex%XZZ~QHw3Z>WW!}ojA-;_V_w|oRm+MavSxC(TZ-i?4@ zh}{9beV~0VFLt&6{of7V3=KY^#dQMYcox?Mkh57_H-L^{F#wg42U`D^xOVRcH5!5&e#VpqIAGl+w%*6 ze8Ipk;JN_125$ps4c=$|I@bef{MQ@|UI+Xyy#gsQ%Vqxm-|@Z!6m3T#(RKh5ZKzpU zKot^g+dwM2T{%EY{GjXZ()h2TEW86PGXlM&NfBl`1 z4RYNK%@6*7t|fSAy>fMc#*gq zy#1%ww*h({3%KqCW#1bNFGQIB{qF^x^zsLEW>vs(*9Pznxv}p+QHFelH|*}y7wo7J z1C5}-=1LBRTFw_C|Nj3sIuLny17jrec139WNGAwhemA~xVMK~QTvJqCvEUPPN_jfw z#(?r$>jUI0RmyI3;3eo>mDc|y`Q7Jx-9LQ4DScA;L`hOuZ!hSamlq|rfBz#%^tOUT z1A1FQ(?HD!Ljqnf+x`6y(sy6_zw(c6u(-8*M2TXzM@j3+Qq~t&pD{6jt})^Gf1&Gy z@qw0;{8JCS1kH>#*cF$mH`FnvmMS*XF%^|cH`Fngm5Mghv80yrH`K8fm2x)Jv03%H zv6nD)9}DR9UGd_%&ENm971^vWc5Y^1=-n|vn1P|!bw&62fZkTns+E8jg&-$`+1BnX zrE0ydD*`*gr4O`x2<&Zj0FASs4|ws-lYyZd%xkFdVJN9+x!v0f8iNnypL!sm`He(J zD~Q*9rgN#!|NsBPUa+nE1Dc>_>_(jBVZ0fba?sigts6l5tRXY>=ldWPXD>+X zMPMT%!)uxUTRr~67BA~d{Qtkhyq8(va2Gh1yAGoj?cgFIj}?;gASI1J4!F^Px{_m= z0w~$?K+J-sOb7+34{DIpUk5Si4|H5pDNk3dK&d&j1Ze$M>Xp%xgEX|!3Od#W+J$`5 z3-YQ;Z!bvfMOp(RgAwZ4q|x1A&n#qtc&7D#Nexo^EXju@+}&2#6E3KFYCH%!7%kw1 zyERJM1xZ=AgGS{_G`c-XT5j`CZB6+9|35e#^F9HkE6? zp!5q;W_ROW3;)zbr&9GE3gI{x3;EPIBR}BT320AlNM+RRxdbH z1O%g`tT!t#QkLX8NXi1`WN67)z{tSxf-xN_Wr0e@gzunK1XA{*w1$zP8*Dzd5^N0v zB-4jwY`{ocpo9rcTMIg&X$vIwdi8&#gvBcS|NoA}NuU=_2 z&;m$k3-L3*Ah^{8qCrJ5f9oyef{(xDG$R8;>;IA>s3hY3aVv6ofl9od&(Y^&_Fy$ zE!)EYT1F}W4zlJq3j9$AVD;=L(7{#`VW5K{O+X!?3yU!l;olXILT`0NXp-;l!P|5niIOh}b{n)mKAt2@F9^~{n0Xco*>c60+Pf!_v+LDyWLoP|bAUr&)8RTJ= z-d>Q{3z;%pC29CCh-X17jN3pX3P|0cN?2){Yk-!zL2Wq&j&6hC_z zD8&n46s^G^pP(15ppqZauC#&nj&9h1Qap$UN%75~$rmA^(=@}2jc@)UdPbmvHsL)eaf4JE-+obC0xoESzy&Qx4AQcUfe2fJ z3)(jr2|Wc7?~58i@vhO^3lam3LHtK<0I+cX|Gy(?7O0?o3vXHG;C=U4HoQmT@e83$_Dgyf==^( zQLYD*gLG=G8$k={OY%Fnf>Ku}xX0KDZViF=qdx|ZD`_e*$0xr5|PKjy;)F{cE^es ze*>jU@O>%PpNlm<^9!(SfHW`oqYm`8g1idet`1_ns5<}mf48fE+v_XcVB0~PMOr|+ z*9$+iek-XBhYnzE*82M&lFS02jmO?T6HqtAOZ)GCNLRzU4RrW;i5JAGz~0_B|3K#& zdjz~-69t!9kb0QA`^1Z_um1lxy8W7IGb2RRizE4-;g-*9@&EORT#;_J%P+?}zAOa|7QO z^QrlteI5Hgd(ho`EUn)v#KHo5UDtG$t_XNxsRi1j$aBoabPeR7X7DM^ix)63^lm7C zmiy=6qhiroAn$_Gw6z<2JOR`I=mj?eKrJ0mn*wy``U5jixeww&%Kbi2Q3NUXLG7~e z7yoBrWH6ltpo|0=7X(FOKyT|3aD(OsGbn4{eFQG^S-_)Vpn%MIi3muL!WY$f;4xrU zNM38bR3Z*3<+M*_aUA@~92oTC=0tE->N@;7B0Pg5A2t8g=A7tX@SV3^$?S>k2INof@HOfDQH=?w^amTr4HCimEK;E*o$?!j0~?g{0A4i zkj&Y`0y_V70Vs1qJDv|9nG<#Yi7GE7bC!Tq!ZRm4e||^KpP_V9o$g63lW*7->D&ENQ2K*!30YNM5?4I=&)P=ylK z+Y3q@FCx^@8bu({fZkS}|Ns9t9~23A@mw9HMFbMJc9$p#@Acgi*y|DSVtUj+P)mTZ z*L6>G?F9j_`}mz*_XI%PC;@RJ=%Pv98Gruo06836VL0^zB!);Gi|YkVJ-wKuhTLpQ znG0$*1%NsV;2R;peFadXKj4KV$h+XV3{YP|vllEM*x3qdBlm(yP$mLReSo?Pvq4Kp zT0uNWCIVfd5ezy>`Ox$~|9f4pfNLS>5DI9IMDUB1)BpT$ej@=ooEuc3fliMLdog7? zIIFQB)ny0gK(gAIe~=DqK;uEseB=vHRd8X&3eIDoaTShdpc)OP?1f}DBSUlT3xQtO zE3lBh0uAYPT;SBu>wD$pL~sks0wa61Akw-+1vGns#9kcAVq|!k0PfF%PJf3a_qmM! z|L-`t7}U&i1!)BLXFKx2%`DXF$QWYv4&gvm64LqEf5achZY_l-rM>FWKe%B9><`k&)25NhCpYC;rPM+|$fEvo-y}h8)^@Xv@-~ULG(9#ytZfiUUy8j{I z#eR^Qtq%YH{|6azTl%*04eQOI`yWcoAjABibkj8zoDvwj{U8%7HD|%iw$Lk}UIR$M z%PD{UZ(w|B2Wq{8n|j37Lhhhi=y*V{?}Qhv%E*}^d=>*k?~D(i%-}kq`!uvSAMk=7 z z_a;DMklq9zL>M&e9G0pGZhnL7d^BjvKJNMkv^cOtwE4t; zv{Dds8EGl}z>04rcQY7R7#PA{aO_}a=>E}sgro64NTBv;w<|~U3x<;P<`+yQ#?a$+ z_*-Uy>vxXsYda&_xdmPX&Hx>e!_kdp?>|HfM@cs582D>DGeF9f2q|YNv4JS>09|qL zc{)zh;b*tS|NZxW2m1=pDy-T!*xUhW-rj+fC#aLYBZ-X9A$7sE1zY_C51r!EYweu|~WN;6qj8PJH4Q z; z>kVY=Vualy7zWDm-}}MY1bI4g$uv+l0j+G@0Xh-6@!$jj28I{+>>yP|x9bbU$(E&8 zUbJ<9n^eXJK+CueK+^Q1-~ayaXjzG4*$sH|P30w|FoZ;d1th(r&LqaLK%xO`5WM}u z6^2xvgSrWXqo9_9zts&f4vAC`?wktpD(H}(7w7uH{$m8)NauT{*Y`@man~21TN|KZ z`9k*epZ~qSQ$UsOi;WZh|L+cc(t4?+vb*#}ukV%a*elKdII>vyolj@z6mSc?sMiLa zfy>c)pd|JNp_mzvvx!e1f_<;Mf7jr@JUxeD2f{9>@!J`cUFE(|9(-L!Yg$PFxQ#V6E zhDafLUgH2Q>IUVTfEUTR(6|AKy?7cA@7`DS{Qqx!px5_GS|{6!y_^61hi5cUry3G5 z%f9{lzvI9=KGz!otI|3OaRffxj>!XWYUpPKPgIRP9@u2TYD?CT;NKevt| z;wP^gPyG0=hsV#fP1xdx0b(&Uew@0{<7WrH_&E&f#T?P-?FGk=YaBd&ZgnBWkL)I_ z@x%7@-~Sy68}P-C$0OwUQ7FQaaT@+Y;s~zr1Ux@9zp)7pgJy?-Ue_-vi$R0FpZEnspLBmb=DLFs zaqT5Y0($&^+HuztpdsZm5U~po>I$e$cH9*-x5jYX^#MrmnCl%T*cHZXpsAJBpph#N z7SO0L=nltT*Bt@>%UE8pF#Y}Cb))4re=BJI79`s1C-UN)F!H;`c^+q-=qw4N+c>UO=+e2}C008aqOwinHhLHB%v-Q04Zlw~vHYc}wJ zGHb8zju+FIK|{z$y*uy?N1z+HA>p|}94S0~@P+3JM#SBspzt~F3L0u)NCRJzjuF(5 z@C034$#C2i9LUF9&!C1UC=k0L;W-sF%I>-X9G+VkVBrZ`bq1c2@)LPcCj<(DQVvkO zZf1I&*-*Oz6rQdey}m2>1sFg*6VSaOFP1g`|KD<;1bn0(G!R!n0`bikkO?J+x_vJ| z0`UYq5LX1euzLgwM6g5A198QRKu{DP#ukXM#0>9`TtqHEK&P!>JHilj`ref8pWUS# z-LX8!!E;-n5IqK73d?xB6|{~WByb#jZ6t&RI)nqnN;}?K@*i|u?s4#FAxP*r_+CaZ z%e4U#@Stf62E?tgAh~0%9So2a%+OT*qACR3Ol0cj2c>Cs&^((bIC;x}E|LH{Cg6WL z%L}FdfBv@|;BRF|2>1Gnym&1D3eZx%V_*j{ZeV)(477GzfVtOo4rrbJ9LRhL=(u2h zLDx0>0?wclQTFf)I2-T_x}M<|aCQJyHlO+HoIx8MUEjPoSr3jpS5OX^0_uiAOaR5- zlovXmLDrRMbo;hIXJ1}O{{Qp8cPePvc*}v(B8cJ_D!hygEeA@uAQBsyUPmKLdXe4% z@=D2LB%u(9(1mVrU|Y9>0=o22w>#+6Jht%v7n+Z-^tOWR08M0+2Qf0d7T>@MF}&-< zi)Au@{|9uRdl44|DpWzrUNDD&nBXZ&jlX~XcOOGaIH1+^Ph&yXQ$y<;?g)7PYkUK` zmls!h*?>qdHQ@LM4N^5QqFx9Jjq$YOt`k6I9H}hJY6ee?busa&XIm(qz!~F+FZrtb;^1GQIYP8t|f|4dlv_ zXE1&WgnzBuwZq!Ar}P|JOoOz8V!Af~7SkY+t`jfzNI_z{Bmfk>Ai)=sA)x)J4KEyj z~r{k?SuDEafez>e|D2+!Ztc&j78nz*QClsHi;yidJwbb=(!SMug$G>kUY> zg31~O=->o=JHZ3c<*%TPL)~nx2TE$drEN)Ruj?LgN$d6d54h$kO$CX7YAp#~P&k81 z*)yP8%eUM24oK?72AE1~P=y7WK9Oq$hw3dDpAW)6)$Mx3+Vw=~p>8*D{s{x;A6Rv? z=Y{yMKmSqIl7p)w@V*2{_(US-2hio~&wDJS_<4EIOckUp|=;*Q-@`R5PxV^UNPDEU5!77mDd@bvOjkgr;9m$GbRdL7^EyWqtyc5t2n@jXFD za)HF$nn5lrc?08{LHKvNT~}DUt|`5OmRmqZf^ti|FC@2go#+Ky^P*22l3Uz-LAeE_ z?8R$P#_?V7Lih)k+ycIx`3g#7c^@JnoN7);0sO@EZyKV5e>R9 z0g@&HKv#8v?FA=`7vDjl$=_;?5C)};jhwKQ(E~~uvdjz&S^u*bdRw5%RAb~Q_ix1TxmmE3f`iBSR65e7^VROv&4=(!8;P=SVH zK(Fr|^w{{IKHwm^biCtg?xLn7{j z2Pn2cf-k1}fSBNj+XcC*oVD9k0V(bBy!ez4^|1mdtsZxkVPF6?o_Ii&Bj~c>ZdVJi z`Yc9=fd8c`FAhP}V{5pXFrd}vJCVyLP<@57eCm!>fw#Iq)da&a*CUM3n*F#dsAz-r zl+wU?0Nxvg*6a@;g%fBDhyj|wj=O?Rk!CpN`T|;Kf$N3E9^k@>8B#b&f>umH3MW3$ zt)`$EqjHuPexJdS(fS8mi5&q~SW>L8V(AK~Sb7M$JPuqe@jz1+da=Y=0m|lUKr7Wi zCBO^Ke2}4~A)qVj(9>vc9yk&}#V4eS*vRxEQxFoJiteB|1XmKrKv~lF$cuL$L79)| zMOxXP|1al4wl=e)n<)t~v)2_=(lB@XJ_&fi2KHA87sQUP6R&4MvM0}R*Cn9X2hB+z zcLleBkGW1@c;QwK&Qct$w@W=bV|R4M?&*v@05OmY)B%5Sl;Pk1mII(B(G^B;JBATl zJo@fvJz1jP?Rr4_;K3ivSsVd@FS>KVK71_+x>oRXz>98dI(fQXmw*!+q!ga;A{3$v z5iTva`CA@WAX$ay z#q=DopRr{X1w>W>=NU-*PCE*zK3~GXz;Jk4FT$9Uv0Ec=j zXlrY)>j7|ndBq6JFBd@hWh*?t2po6a0!?fS!0k^^akGHo#my2>egU=XSOa=}54`x9 z4KlP;5t3iFAf<~1FKn~HAqz?uuN^@>A`Q@BPp|I*P>*QG3%MsCyZNWOeg@r8+3kv| znE|4?q4qQAno#Ca)846|DTR$pFTU|YqIsP&D4IcnFM>h2&-cKK>UW?lC-CBP(Vzb> zAt&`c0D1MrruQIcg7Oqdeb>4^&JLv|7dW zgthA#{#I5H8#NDrya37rYn>PwUjBmS0gzzVi5E9{Ab~T{2_86RZlFAH;6>b9q&%Pk zjwwhU5O^^;6YP3yc|Zdx4?xntcr;S_N8K-v-oJ6R=`Q8y1dsS4Em(%NZ9(gj8IOYp zX+YH(wn3w`2UN z37kiu4c-rk2JcgF%NFDqa5nk=1{^W17ZAdr2JeA?AYsr@5vZvE$}H=V+q_sy<~4=T zh7-Kad*Hb16;QSUXLnGRI>7Lvtq_!@4nW(yAa}f2oB_5B+UC6ijw?uMd*H?MbZ}f@ z8U!xX(Te6>5XGQo&r8tFL6B5G;kfG_kSjoI=b;_SW3DS0Ui>Klxnu>j%?oykB*Z21 zkXG*=B$ups5eqTg==N(_NIMr*+72SUnGs|*)EcP8kd`j0zxW}_vHD8@y~=r%1`Y&} zzd+66-l?Ey-pKUg7AGY6PqGIke~{n{b8s;M_DswxQ1QU?;z}NfR(WwI@6Z32aiG?P zZv%84^ox$ypr8kp6d>Iwjbp4~b|N1d$AYlNF}65f1XCs4>$(EmIGzBl&5>*JntX7n zBi0ShF|7wm?P0xY*B2e&6E=>y{*esm1uyM>QJ41Te;4Rj2Px>`4Dyg9a^uC3RB-6L z=7T8>hAEZq_FdBaQ=o|7F^e(qf9Zr5Ga*Vb9dpd}k4(2KY82(b6r-o%W3GQ>yIoPE z-yWhE6h)Be0hNf6pc)_IeET1eLeT*v1l}M3b8RcQ$H(8Ih9Q#;l>u!B>;{i9TZ4x@ z`CEVe{r?}WV-JcyP%+tN%gFHZ{a;8c939L*NIJ=~g{KpKM-UU7PE1~a;{l@; zo|6I&*W<24w!&>7>M@E{@JPXzBao2-3q%1M+Wn^a4Nq8jcP&S+D@S-h_s17ILF00+ z9H8at;(@)c9G$fs0fD`)UqBx715FDW&;v+_{1;Z7SQQr(|xGZ%i|Njpi=e_#Y33U!b>F0d&_N=l~aqzyJRqZG6zWMwAzd#nl|E(aC z`JKU{0spsxto^?g+g$7yiS;EM`@ZSiM-ZPGbaSLRC za$3NP`*x6ULgYxYV$|X-i80!~3vZ0B;KGQ}uU8;01?LP{j5>UwevInG5gDVGci@Rp zv86a-bkRO&j9xwliBU*=u0)it&2J>Ic2;k7|Lm;&kj0QC0qv+}F+w|Iq?G%LvIn!aVHkg z#LaOh(B**)$C*UtaSOD5D-i~*jNs^IKF+phF1J9Z8%w7jM`t)o_wi11jA=&jv+w~fO;jJZYi0;>JM9_e=EX+Fr4#qeJM%mvL4 zd~@Ys4D0@QoNZ4lw?GMZmPFW#!b70=<>)>Z7mHS5hIYRR?vCZLz8n_b{k!`kztgYQ z|0S~Bz8ui~acSLbY1WLTvdzbsnh!EHzh^9cYkZ*fK&hPdtunFrxaJf8qhk;AZwD!o zKG6K&pTp}%(g(iZh>weo1v@CT`%PGQ_s_upr2^gVEP>qy|I1jyUTgz(l`iZwGB#%J zcIVJO(fpIKNYkPFe5X4{XBbPj6AP%12hz~Z5CA%-EbIknbUhyIegTFIgBEUq7mRa2 zDH0NY0lzr}QWk=ODgZh&hNvYPYB?B=Gv1lYEl|Rn#gWAr_~J(tIL{yjXZKTBxa{cR z;)Mn!EPZsl^6+nC2>4&h(e20rnz`eEOjRS~LCcSMjx+q2%Pr9D$Dt-FMg zrQ6K~=8B4b>Pp=zCz>B|MKwXVeZ|m=+FS~06I%|2l*{wg6D0cg^bTW2(uyh)B z`>}Ldc6+dNhp}|}v4F%qSU_3Do2NVU1@ozHM$lH1xK7J%XP(X)CYINw-Jt?m0a=Ve z-Ciu+Or4C~T-{DAosKO3y*Xa2kNoo=wAJAVPp82#2NnjT5QR?Z^DuxS-uKN5P-Og9b`fOhc3|lQQKyf){sA|PtU(im zt{j~f#~fG~v0K2??fa(Jl_%iEeFg>wuqDQCKxqRMLE!c;M{xJeZfA~eZ<#dyyaS*4 zpB*^(LjDtf1k2G0i@6254<39WpT-|`B8@-qAV?A}1KEHbcYlQE zSL4tB|NqMuGclhG59~hu;u|Qcs#z@UOXRxiS;D%DS-MYmn}va*q}TOFz>9Bx|NpoC zUiv&P9(=VU$YD?n${*dO9H0;m>keb-X6t0?7VCCn>2zZG@5%APHv*hg5!n`$UqP*T zp6;8y{v0oK-~IWo>@3mk&C@G#6qNp%Pgz#7l*(FKmI`(|gW}wq2SmFFvb+Z6r%p$f z*Bq9XrR?48os8YJJl*ar-R2<6I}N(|yWLsBp)q?k92T?jod$8yhy)LE@BdPs|D_x+ z96>Sjp*M`9^-_s`x35SyC%*tAzaSI8fTIAvppyWfTIDwpp!wjqeG{Y zL-(;`PA&{_v4=#!ofJ_14S3;}2->W|(t4moz8iGQSt(ohiS7%pnY%-IIyrhlNjfa8>gg9*__R=rjz4&-{WM{KroI z{|q{21S}*2X0rS*Q8D<;FX+MZA}@}Cq1%_E`G^Mi>`O+-(U+j>jvW+0*Byfvl6D{D z7j!fLogoBrGAKPh`Oy3ZT23A5bW!p7=IX=2FAxg47oA_gm4{y-)`nl>6u%&g3crA> z4F9oHtN4#y`pHg=tez$jl-Y$BMyQ^q4JTe zAc@cXf(+e0Dn7<%UR>G+sn0=90b^|L0UdoQ;Hm@C!Y>dCs;NLJ%lHh)c7@{(;3|n< zz}4osg8)e4Grs`ufyLYcAZdf+4iX?SevLz)`6FF@_yuA?fyMv|(1_3cajqf!;RiqS zM;_uoc4^gT{+L6c;O61iILv?Sa41Me0N9)1H$lFT0jm{s5IOFk05bHrg9?NK-5|?w z+(8GzGk{Pg5Xu5V*??|NfAM%Lns-62lH3n29bDExEy1zb70Lshz66}o*jI$cyE zKt6E*og^xe#(&L4C7|^Zf6GGXc@Z<2z{k-Pv3%wisN&$)IQE%8(nZCCU*rB~{>T^= z7k-U%pZNuZKJ!QVs5tOzJo?NZnWEzHnLp;nXMTYk6(4?$<6s>QpZOzhf98*Q00}A= z6_?Nak*`1V$DH`gFBqf3^O;`&EEWN}Hu2SGet{5>-dmsfBTjzikG%7lKl0#b{)l^@ z`6DlW=8t#*R_^hcKk~?D{)p?J`C||wE+E4qK-RmcI6(9X_^5&-@V=zz%i+o9yzLKLT`-BiJl~7?3%FF)9L|`C~48<`>KXp-eR zdTUe!xi4GyH;#pZV)tR9rxJGk_xW#pFN#|96)v zG#^oE{Z_*MLgfo1!(BP>wbtNvA-M2?tPcg3-#lR%H^7UvGZ+{I7}AcrsE9By{1?5j zfK#9wbk2n4|5A=)E-E~XVgE&!EaVj6-{zyj*?M3Xs5ijxaw@FDM}_ylXwO1Uf$k6$ zo^BTv4oDL@wEInWC`Y$1C_jNqsn4JxA5a-2$Ovi3fNo!L1QqX2JdpCn5v0~h0Ll^Q zb`t4y6zO)7=ya5bJ>11;#Z)TUa-c-0%aPH_iLsOy)GR*4)N-KoiSdEM(g&JPFd};p zWWOuNN(P4i|4TGLyZrx`@E?33!N0BHgc_GX^8tz2!v|jo@NYW+7ZHd(yprKR14D_> z!519J5*)FI5nM>?8r;6@X6z2-fE?(XHld5dimOz)u{6n;F z8{dGMdXUofXs0XEcv}`jmO&Qd3oY*!Ap_iFQp{M;$t?ig8EzBD$dGXb)B^6Td;{)Ji1Zr=A zRzzR>eoOjNuN#N*1?xb8Qg-75;3i?W8&4cu3n*40_1l5wH#Ynl2g5+yfj@$?@{1|p zKo%|xhXf!5n4Jl)O` zoo*7{&N7{DGFi+S7a$H=$Hu_W>88+qK8vZ>^~!PAEBber*al=g06D?+#;ln$ZC`kE zfNT?PuX!5MoXMh8QMSd0(6 zW(A#9!w}fvrqg}C*DWI;L!pFQ;DsR}tVK!0p!V_q zjO{V-@rlMapsp}H!qC=#-t4aB=q}}1xQAIl0DMf%A8`hTukz&8Po&yUTQ+1|4V~!196rAQ$uLQlWq>#utmgn|(p$P(?1-o1m(s+g$>r z(gUPYvez4QBr#ZVDO|BPL@}su+U?HMdY}X>9}1V(&Shi(^~@%#{r}&6{)NvfZ1=jr zizje?eS_E`|0g)CyOgKX_e8fZM`!7g@YZjoqDBY6LHoz}>h!&0SfNy?(!l12b)SAw!NI`L>&9WtUc%E|#?$(( zgthtDkJ6{zu@|~a?{wEb=ypBh+!=ep`bJG-cjyf_kIvFNovvrBKk@g)fmSxeUTL{q zBJjWTNVo5aj47a;#?A@OX_r3)IdJIqFMr62VnS>1Djtt7`j|}uqcJp*IEBF$oBsX^n{Dze{BYaZn*!MN$@{- zuP`Xebu+;Jm-xi5^*1xv7y^g16oetEFO?`M9&&==hwu}1Pt(3OoiBe`0O zOivbpx95U9>5&fhqzq_MS_3pjh~ZHd2GD@V3oPPT{KtW{O2qEBy`bw6ar$k(CbHjH ziI2c(nXm+$lZKRM`CIxyh5xx1W=c#9-L(SN$N7DJG#?YNEMqCr==Ni=K36JXe5v~o zl0QLJ)zjERJfMU2Sep<2c+F&d()d#A$r7XPSRQ_P2J7p!8qJjw%%w`7_yrs_dL21H z0SG$fa(TM19MCr|6i5|GZ)E7%Q2DevIcp{Aev$mvG_OZtKChsBzHBB$cZB-R?p zVN60MF#>Nl2Bja4RB-x{0H+_Mu!EI;pmmK;u!w{FNMZV^or2GA@#@HaBO(2SrNh#X zP6|r;>4v1AZ}LnG`$6Z#P?Calx?_1JSYNMI0jD21So#6=Z!V*!og3t&9ccJM$0NEw zf`_8{TR^+@x*a8&e=wKIb~}P{eV_)Ueg^fXZnH9gdsBy4Ks}XGBe1hjN`96NjIWuD z4g_>N%5`OQ}+~BdpFxQRd5lq>Q!H?1hdL6GNwq3QMmaPp^v#OTde0 z(8;P`0gmPaGMz3e93b&d7Zs2^N5G5SYH$;v{>%EGArl90@8CEOs~gml05vE<)05q$ zJgwjOTmCXIFogH|emL$5ItPK_g#q~DN!WQUbCJLm(J zc92pkEY18#gr}K?T5g6g&?Ep)ucyL`_n<3x(XT%{#KG`lnG9$=f~C`yr`JO!{KfIf zpj6Eh(Cf|f!dnIGNRAhiCW1``HPk_ioLt}ZdUN!;^1!y2FIEMuiUu!J0bh9p8bQIV z*=ti^jtox3(vXMraX{e;!;t(LgB-phSj+dH-LV{?L+wDfWd!&7zJawZZ%+U%t%bF{ z0(;##dVSw?x;_c)KJj9|GDgV0!4k43l3|XXm%zvX3ew}Qe?YCw5)J-st~{VQux{56 zkeMz)2jprRTAXq){4eEs;Rrqfp9K_P9x}l%k|r@Sbe9W&dSS&p-R>e6Us!)AmI!;z zYh5l$AgUflG4cw8u*Wd`v4jt zknzv|r5ya>2R`#h9pcxx@InK$JQF(O3yH5e$nk}JJ;P6M7vKf7#xVZ&!l)kV2L9YxCeg4focP241p@i7SM?e-M(*{D_~3>Gk5U_7Er$?G6In zR?6CZ2vmVza%;U*dh9i$8(8yY1_p+gphFX1EC3ypSIPm3IS-i^PN0PA&(mGW;@;`Y zV_nHo%+u}2aq)%qk79}N*Syx197O`%$3dy&c)*LTi~jxZ_T}kj?5t$z_5a_?(*a2& zZ#qFoUG(~Lytv#8iq{9duAut>A<5)Puj?CdVtEqq;)x<^GQpmG_a(rR$&^@dX#mOv zU_W>JzTuBL@#5^8|NlYWs(FP}-$K(652(ihNgsER(}x1K{0wSPTmkR6?Dc&T2Hjcl zg0B~pMqWTWijZ{j1e#7h$%8WUdss1f`hU0YlkUTaq{4g{(qH@)5A(x?7*KA04;zvJ zH50Cs$aK5D_{5Jj8?!LLM)F@w6$2HR9H7wikO_M+4Rld3QF)nXA-25y0v=5|;Co(C zqUlPn>kIJZeOCfr*ebxI3A9iE)_Fo6T9JbL??W^w%F(kjwBv`!&!GA%9;yBkz!o3f zko*cOR*k>CXzB*V#RqtPg%zqi#E`OkdXZPp&6QAl@R$=9GYK2=X*7S@+;^@Zpe5@^FMa}UM^UEn2g5vG~e+y^}d~d;z&QkFG z+T5V^!l3dtV@nCQK=-*9ETT*d-8Y)6L8gK4%RT+#p$KRWgU9*=f9qBT1_tB*owa{j zPxAMH_J4uqtX$t{ALx^N zH)nwozHT?rxF&mV!H?E&rIWjB|A0=q%KgIF8Ty02wHP$SR{Ejam&f{NNp1JJUN;WN zU54GRPpmmgL?N2_;6c#}+D#N4Z+rke<quU+Y((UHtmuDc#eciQxxAoR z2Cyz@)8<7bSTjckSUGq`55$68)C&!B*t|t>K$b-oy!*O>|*n;*VGWGf! z9CO!Uc=5LtR4$u<_BX!x2x7Z_0PS|kVhDHN-KXKdgk^#N-u zd4D)a3uwq;Y6z(5zyY$0rG&lv{EHBFCM;-X- zE!M|MIgJlM!x}VoeVh$CZ_N|-qH;PYy&|uBg|z25*x}^?*2crf-a3KfY@mp0{a?Z! z4oRckej1=g>Wi5Z7#WVcL88u02hoK`9EFm_budZYJ2Kp47u&@$xqaT+@Nt zx7}_A@JK{%AN>l2DZT(v%nS-_s9Sg^Ffw$Xf3a=WpZ~|%u!jjGJTNLv@a*!LGp#2} z*t!|B7?IWwXZ_F6N`QwCuJM7Nz2yR(r7u8>JHjC01C90OdJP81S=YU;Z?YHzUd+4( z@&GL1GQBw23{JSrpzv{hgDrg6;a3@3$QXQ<`y{adVvdc zw}=o(pkpDoz-!Qw6V{f6;3;I+8{Ox+U2l8_9oEJ#;Ci6b^+&Jk1JL164>Hb_fRxm^ zUP$A==KA4<^}GN7)A;jTKXjk_%>V2{216;gz>BcYpo>(%Teva=Kmw{C|Nrmy{bPJK z?#2B+a9IW&ssQ^(pqnx5e}F*uhl~#;+yWUtAl2x@xBvfVn3Qr0WZ0B~+bkDA0xBQ@ z9f-jGxBvfxX5uRrf#fqHKsL?(01?Z8h-HAp+M#0L8T)e?E+Dbu4-h9Fcl`pI+7HO^ z0GoN-^#_Riq68rgnS-AKlLpVihkgK^j=`~05Og%qffDZK10PD*x;uQ>7#IS>UW9`- z^&bN@Ffa-*NPeG&oSw1w7jAZ&f^LlOtrqC4ebV~BggN~GHE4?NtbG9$0NuFK?F}gg zCiO5f9CwBk1I{|2l9dUm4CnN9m1bJFa`3lggZe9GcmDqe9lAbY5jW_1@$L_urEfsvswyvH zI3OkHxqyrkP&DSSGBLbZe&_%HfQ%k+484c~iA)8HJb{RKure`##tRu485mxE1s#Lt z1{$I$5$N_{u|8442`WW<9YG@t2RdCjc76cqa)7p2iE0mmT7sKFrJySZVy^VXzg%X9 z<|8c4KN$I2K}RQorjkKJmM=j&xO>4);BTn`X#+c>wDn|3VXxzlPFK+K{q$}JnVnlo z;e7<+n$4vKpp7T+>Dm|7FefmTigllR5f5sWL6b{z7b8PwvBojiKZ2lQr~BNCz%Fnc z3E`>0|M|lr^okF-)Di}z|Nr1B32Ui^BmMtCPX7_`(hPO+NT=@|P;(dDJuMOF1`Q>Z zaJF75fsF!nTXdiLezVt!19Wq__4yK>?jqRa{A(uTZ%ADMuq3z>!P;8^is%2Jb!8_)m`s0M{4KuE%a+%LeDJ;BR>d5(BOE;BUDGIxME*M`!H? zP~Y+dSVCqeM;R>L5ZmA4Z><5DpzO z#x2n6C-Z{m2I$Z;{+4+lEp-arzIU3R|7kwX5gy)Id*cP@_Ak(>5HcWH-#f=$=eU%C z>YfEYW!wUtwM)7gLB;-$&e|RSOK)_a2Q`s1bjr8|UOascsxL0^haU(7RYFHV#EBR6 zH~;_dbiDyO;SDr`*nJ~yLUXkQTS;g}4#+v)GB0YcgPc<${E1({89WsV(s<_z?|G(@6WlLunkar&Z0msS}h+98&maggb763JfJALZ z_PrC<>AIrVbx9Ue0O&N%7w6eP=Oz4Mfo8}9kQOylx9^2sXAWyeffC_vut7Y{hkta& z-r#Tj2dZddx4`Sb^BEza&~twXIxzSo$nRJ9^$(VXW(oAVJ^(F5O94sGxcmSAt~sF4 z@O|)N_tpRZTMv|Sf!YB};O&4F;C4VH>lVlww=D_r|O&!$Y=rCWAG9biFbNkmxO0ALVWm^73@P+P|ehR{>8mkaFN5%U3;NB z^ng=m=mG1{GyFZ=pq=iuce>9XcfB$NoM6rz0OcrlP-+3i!2i+>-RD5(v1FV8S+xD> z|NmiGjJ>XBK-V_8UI}>73bBVB8j@wL;L-}TQvjMDQ(8eIL?~l>;KgE&ZIIRptk(*u zuk{iMwm(6erFxwOI$dA19w=cCKxu-4tLRekEXMBBFMfaj{~y9EaM3%tCW6t(e#gzp|?%|v|K3>yj-a?(DHL@0|Ns9t{^tDB7&L-%1!7wosNg(M64dRX&|9F;UCYx9wzT^=vE^BbczE}@ z7xop546oUOUzmf!*7eOX2OY-EjK?9J?QVEPfhsPP(=MUo?MUkd;}G$WFtUL7|YeO^59Twg;E|3zX^;?N%hC?~1U+|*iCa8!jk!-MFC=m(h^*4B- z2HNLaZvd&PUNag0KkoVm)&c82_rkpqW55fvPY%>&frRf*tBYeC@FA1sq#GW2+cE)}Hm!A)Cm7gNu@^kkmaLEWd z3wtp$14G6PP?(wh1BKZWP?+_Bw(^z=be{n2CXD6iz8n_*qWs1G|J^4*og2_*KK|Bv z1_p)~m(GJ46E9w5T>#Nr)s)oJz z_XAXNz6pPE^amqDbFKhmZ!}Bkxfku{K}GPJ?${UIA2ODJ65Z*}QjQlFelRkGWwe0# zFAjsXJ_&x&1!A1*b`>$c)EUZS86d#lwi|RJw>8|H#{a?b`eEdi0mhMoVZr=~b9CaAGoh6!o zu<*Bj0!<${D}by5w|1JJ{Rwz+={F=#`EoQL;|K_Q!31)5C{MSmh!bcra43&;fB=6J z=&rlXj4!1?4LoNFYj+9$R?tnx%|BTATS3!D-REC){$XV3KHdG{MZ+IP2I~){yTH*5 z?SU1rSbr$tgs!OtRSLcS0-e5ZKn<%&-IXlXKTEn>|Ch8kAOBI()Ez1?0n~6W1Kl%O zC&5yh-tDK*8>avo!GHJ%)UO1cw@-A{BoN%|ukhkD=+0l)51_iCJ5&I)bJvZ-nyEw& zQdOxpAN%oI z03<$N#{2{Ko4rvT%irw+aut$;UmAnm!c;2viC@QA0~GPkKo?U_b$#-`^vR3s-x(QR zGJusZmx7Z8Xa|;nvqtl?Kak$gRZ#jr!twGRXxaS_)>5JFV$h=YXMbKue`92LdHnDH z|HmA47+#+H3%c(0xGVHnLRj9$RpkmWK+4w~R7&Scz8cE&-nk8swI?f0hMLrCgZvjmvcDu9m7BE_W z0IhuC0Iz%z1+RSJDB^{!e0lM(@!$V$_Rew^zxZCB4RNg}OV~l90}P#v;GH>;0vfb` zJG}d6vpqve7-%dpgH@D)p_{GyLh~bVjyk~6E!6l3G|vG#72&ywc zt=G8L0~In32OqF7A1)E;_64t&1Z|pUjNiZr-lrXJbO21l?aTU~F-;#{9|U3>@b2{e z(9PI-proifg2niobGK!4jXB4^5@+ZD7%1Fb%t6zqm@A~B?O_3L2x@wPR)>Mt8Xb2r z=Kx(++I&o)`88wdn*WAbj4$-yidjI4T|ab6U_=X2;|fxr1%vjxb98@%1QmNX1NOjj zDq&>kzR}GF8P759_Fz#y9SCZbf)3(uJy4n4H zI^9@6JKR|qfKTc=ui~nXX!ZR5ey4_g189LoT zBcw0EgBw*W-S^TaI4j@pKFoZex#keZztT_LhkL8QQSqa*_62C%;aF*GXYCW{1W)V# z67_Dz?$Q^X?9InGx*b_M-C24oIl{Zob(X$)@hJnGz`A`ufR1m0IR@g4|7I@^XQ8;E zQ{pA)Hrs;_Seg%TFdyo4ePU@)BAhm%n*kZ|r&sI(q?>Jji_!jb>~`L~?_Z(ee2KEiVO*>P8pBt!QxXhC-H0ZSGG=s+3J{x2(7!SzEI)SBh! z_4^N6nE^TgkE7EAG$qt{d5xCmhF z3RaLh%wm-V?z&rMpf)h5N5*j6#Ts0ucE`SHJ}%JwlCjhGLuvDW<1EG(S1e(^Sp`z> z3fivJ$qe=X3$_nv-C1Y=g6C7S{%1HR!|MlJ{nw8#7(tC1w(eRUH-rmXT7dG~i_TJbe#31w8>ZFJRS%%v_KUDii5HjCknATWr-5=CIDVSn zfHwUrLC>2w^O;|uh=pGRbYepk&u9La=6926VK+3Gm?xARU6fKfni7#GHnxIQE%8<_LrdG7rSO06xJW26Vo~1@O@# zU&fw{xg3h$T!a*2R(q4 z2{3`qB7uq@=hyfL3S5rQ{E<~05Ocr^KJbTwj}GA1xb~S}kn=Nt#8rNc)1UbTqF6rj zN8W%3Tg1`N`~taOKJ!O_j^qG^VdxLgnI?ZghiQPrEdms4sUJS`N8JC+F93=u(0MHp z_dwRNfIS@X{WE_A7sOi;r7s{yeMCUwA_C;vQjlqvKl6j5Aj0*Anht|4hBuRfyO$x!0W38UH`mh1&vPsfv5wW%KhQ4 z>xa8CDlZ;YFoSkQ@m>MVF&^Q#8~XvYfb|1p`;R~_D2_$HfQP|jPk;@JKlqtn=LF~| zlkS6{+qCnVUvQSVHNRji(fG_SP|^oVGd6wv8qYrS$E5Uu^!xO2eCCe$Xa0!qubn^h3zUIOsZ)XIPg4MgK9XJqkP;StjbESn z1^hT5s?INx@IA_K-gz~ z0ox4F48q6H{DQu3_%+Uf51ZV>=G8l>mVei6`dBH*MMbC5sk0DlPU zg2mhdY5Y;3M4kHwydSvRjRO*Cry#``=xiC^4-ijZ1jm^mI1hwA0sH0wXvrqXH>)9x z(g+maoB~B2C;`HK13C${8O=9OP<`{{GrxfE6NqnMt_LUASWp?``UVoFr$6(@90aL+ zfp8pu)B(^&#U}`#f%vWuz)o$0xRAdk5W*-;0!;~lq7M=JnC{K_^Z!3Z?hOS+j_aGx z{E??%E`GqT{}Ltq5Ae6~GJ=mi0HvJA{2DL8iRUxFVD6unY7iMW32^9xl5T{X2((BA zox=bT;Q^(Um!M7hp!_2NJy*vMr111-{s=z-m=C zI={>ZGAR!_kIDno;r-d|4yqvgL5qPwMP5B9kGB3}U|;|@Z+qi2AnU_F^9!_t)THs} zo#T%N9SwB?R3Cljj|1mg{-}d5B#*K%eBzHf(0!g?15`D-s0h4R`WqCEaV{zXZoSc< zgT$Qw9CuFvotf4AkGp17d|Y(5kBW!!nHLMQATu8P8V8Sq&*T9mi%8ZD3%Lc1zd=qU z0#^=^tQWv#cO-AXBGB9==y;;f{DM9zpn}TBL zkV+Gk=3^|){{(8z^}4929CuMs0XZk2*FU8$OE$DxFgu-#~ppZ zyhc!Xf>@n_A)SE{oq;i(feFVQ1J0iDu|?_2fb4|yXDX4~&sf)oeuAzr2D<^a*NZ;} zv5eFVOvf1(f6j`#{$SbvJ|NZ93gbx|>0f)ah2y-3*G~PPdxw zW{`r;HqfYkcQa`Gv$G9!-)DF81_lO(&Ni^!0?nYqQ}_kjKorOopt~j0_^-8rXwY#` zZJ-SkpcA3m8bFOyP=Ou@`jXMRDj5ukHU_~k*4Wnk!@3JUes+xtOg^Sk_D z{ukKW3mWwQ%rC(I!j6G~q4_vR?^ck=PAvuo2IuA@EMU7oFYN|LRr7DAnq8n}_QxQH zT|7vGWMEKYg~WIB8-w65evO;_;ZMSizZw7M*Sphwv$qT6f$m9rSQr>OWAAi^KH=9m z18S~U@pS*}^nK9%vD5d(YZtH9OLZRIpkNW;*S}Sy@|jP+fKdCpcpxLoSEyovQ3sl7DK>sXVB;a18DulljF`D zpuvaZ&OYEAU6#GLSr##O&d?Ia|)>QBIq0fHspoiVkS@n)y=2*2>FF8&vs+{(<%qKu5HJN`Kabh1>%C`bR+(;+HbeCOX|2;L=YJ)cO}N1+_4G{XvGP zf|_W(VW3kbvwgrPKtQ@B0-PWtJ6%Ej15kYkIvEa{ZUnt~nhy(rmYaa~kEHSE-QbVD z4XzCYK|O~!&?$GI7X4jN8}1FbDNzV(!&yKWrMaK^jr+W{0*A4(L# z?J(5V4!BM80o>XV1Z@(9`Ud0$0kCgCq4EaSQ~}j|e;{o%uuH5V4&ZNLhcHS5VC~3m zP+JD!mL;FzZsCWuBHy681Z0Wt8?Z|RKv4j<-t_}Ga3fux^oH?tgThcC_lv`4euz^+ zEgNvaf;)JyK;>>e%+maWo4;o@XcVLN&Ti0P0>8#pevNy_-N7jaQlF;r=bh${J_!!* zI8f&p-NKs&;~O#o195#4Hj4Uj8Au7xzw z-4V9)Yn*^=4aIQ8O;8_R!1qV<5tf&rqo_ag3%E=0Yg~ag<=jCnD^Q=r9n`V{F&IDd z$6WxmXFt6B`xn%F5C{h~!!Cd3j|c}T1~Wj4K@35N!aER!pr#n82MRIOj)Jn+XZ{GVV?oVCuw%gtaC`B!-e-ORe~E6;(rQq9 zH^Lv}P*5|GquUkaQ!o>}6q^@fRHW~h?(?7d1;Guk7jfVI{|6m71S+%yVqs;0fIp~X z=@!x*d#4*TtO5#nke#5$l{ZMrKLXUAjew>IxD-g#KL#WfgDwRU^-lmvC7?@zMEwIm zQUM^Tcu>I+2N|6Z^bPQsfB2KI?vLT!zm9{}UN9VY1DBe| z-N0j{$KAk9j@JMDt

k480wo+PM27sDKC6iJ$oeIzTl9e>f{-#6Uo_1Y8J$dJ#^b zj$S4QD3|;x=K!ZhL0?dZT#8=<)aAVlN(@gv^T&azQP9YYVCW8hjmw|;W3GZ^9>8SY zfOvZ#GB@CZCW5gyKJ&+c8jhiNpekKKEpJ!QV2ZN4 z_J9lJSdhHy3&<{K*9$K!cd#(|0yIPcO7p%i zULpXvflCjzlgKy7MJ=KTOY#S>%_=$KWQDG{I`h`afjKOQ_>^WZZ-NLCQ!e~_qP z=njzXH!yk7$PB1S5c=jbKSX{HNd5;zUJ&X*kPtX%K>7I#Bsk(honmN^@C&%^==I(4 zznFtxknKes_|v z2gE(YFW`EDUyu#fbLs5>HO;y&HvebjZ-r*?4p4IilvY5^Ch#mZC^4QngLC`>bl9sd zD9afi2H6b1=!g(dQy5fJA9shOOLuU(gtd=8^9w|S&O`ME)vn1BpZQ~M ze&&x!7D(gIyTBiP3DOrAT>yzj&;ZS&&-@WLKl4WegRdiUmz7jDk$@SgXgs;DCbM?Yk;bJ(22j` z;uFjO6}4ansHnT~8r0E>0~L%Q-^PK;IWPmH3d{fnm^%kJb47-J09TulcN{uhfADLZ zf(~$g=8r$fuW=gA69o4`-9ckPpd2&?^zw`xUE+#BI__zb4oPr!YecS<@9y)73yjTFK4P3wU`W|RL0y@mw^$o-Z`~RhH z{+GT83lDx#4OR4^*LOqn5fSkD4GsH2>G}miQ5Zte1Gpl4G)0D>RkEP01WJFP8b#0n z)J1na^O;}J0TjBf8$g*0)P{6@5(g4wK`))5O01A&A|4Y9h2MM@`*s%Y9 z>4#3&AD}P*

6>A@O1+Xh;a;Gq70@o%X%HC;pdy`Cs}06b9wUD(oRD_Jc|ZxQb9L zD(riGUm(md{sXS^T|wdVnLpn3K)36Uc(5vNG6T!f@E4jP|CgV znLiR-KL3G?LV$WE&=NWVBp%8E&at5RHc-ng8k}Q6T~Bxu3Ut79yps>O(n1^QWB{$? zLyQfkfQnoW)JzNVJLvp(me+2d`30On*$-6RJAtwvm;uUuUhQKl1)( z{)nTW`D3y{99hs{_h|eVhp(CWH6Fe20FMYp-hp0P@|i#K z4R~Y)+;6u8O*VjnNfy*@IPM4aaZ}nK`oO&jh0I#%>3b?X52Z*`RZ|?2_;XR z*Pz4Cok7_>TcG7q2?xK%S^n_TAWwq^+0K9)H=qO1<4%Ef3wlCL0yPSce&&w@6`GDZ z#~r~Z)OQ~|?g&1k{xiQ|qQ!AX8&H<+ei{oaDIpamSiHd=q*wzq26fy~1WYl4Nr(Z* z9d$r@pc-X8;X!Es2?!owR}kb)8w#A+}J8P7U^ST6+H?+hIq zLRxtJvD=TM^<;^0*b8lzKmWV^I2tS&N=1%23NRwA=K-hLUe`DL;RgcJ_=R2Hy!glb z=Rdjvu(fakV*fJy`;CvYZJ7sJM-3iK>vod>-B`vCzIe2Z<%QJO-~U0|G2J9Ux0E&4 zNq|lh1_ezK=w6Lupp!u1D+$0ZJm!XSa|u`s**#(1A77;Y|NkGfxwwQoOD61vQZ#4) z0eM?7vU<>cd!3)}jy*qT{m;-(fltW? zgW>?onFSv^OWz!K181n?Zjez#HxW=1s<}>t11eF((#`gosr#7m$+S+;Vi-`j_qdx5 zNL8nwMsuAGM-gkco5XA8UN;G_n!t=b^FXV(K}*G7_?i9rpTz(c>GhL%VQ=>5Kj>KK zWBh_{21xOURO3U+bI=HOEl2mw;O_G;W-%}@^g4r%WqtuVO|Ze9q5FJ^LbtO4c$4do z0O-<;7mpahSJ%iNa~EI)-4^{L;Kg}}5F1#Ct=siSr?Ww?vkB;Ag%)3ssb(N%r7r`6 z@weu~7NBvoUKV4JSSZ6E(78SwMeiHx1sLMv_@^8I)y2?7UGUg~*2f&6`Zz4S`(t;t zKC>2%{MIR&y#$GRGH%(lC?Ky$SSM-fxE zbnD3yg}~tOpcf%#ph;GN4UC{sdGL1m@SyI~FE*L{`5zy*ff2jEU|xjery4|JYJMYv zxrHD7^k0B*uNWRCJAFET5 z^P>Q^Gep4ok{$Rh>KvAVLCaK* zxk)e_cZ1Z2Zs3yqm|Hr-aW`ug2T{k} zKpR~dj)8~68IHFd00}ZMFdPSubc40FodAg)Zv*w}AuLcoAH+J=20D<4;dt8>5D&Ce zsSR>_cpK>G5RlmMHW^0Hl?MO+A8S(pMc?r@6%YlsK?BM<)&^Ry%5c05bXpEb*ReJO zkks+E0uTjO3%=k-%QhOXc01sjvYda2+Y5`GT*K~kb$Ja47>Q z>sVVkh;_Wp1Vn+&1r53~9B%{NumQ0Ww6zlw#0?-t$J<&!6xfCiDC=0;c@XP(TMvi= z8#4jKI^K2xM1j>_fxG4gNbGpq9S{YUdH`h|Yf}fUb3Weo1TOFb#5&%l0TKtR)nSHt z$^ayGyv+nefu$^mb(gwkaSAY|IQ0>v-D@5Cv9y2X4#*kl69ICm;$e^#aN|)}{~Y@Evb^0~Y{Yt<7+} z%>X10R%^ln^OOZh?0B0EhyqJNdW#GU$J*LKV#nKDKor86dIaZF4{rSZV>3b*$|Qe|5jRi!31vo&g<82-w3ar+L9p~tD6laJAlC7=1t1Enb_v{=6(F(WZEHXjSZV{5b*$|>h;_Ve3y1<6vjfCB z-u44Tfz|$j8^Zt^GCSVJ0;0fD98lJ=Hh&Q7cpDFh0vjU$VjXV_08wDIAsjGIMQ|`M zFdlDc-smP1vX|4+?Wj@vEyx9KonSN2b6WJ?LUZh zyloGN0vmGx#5&%_zzIqkpn8gh6XqHYkl67y9uNgKMgYn>))o$89d8o>QD9>vK&<0! z5g-bzHU@4?0!Zw5TMCE*OJzV=$J*9|SjXFPKor=R0ubwX+XfH?R=Wjm%np#)@wPo6 z3M_R1$~xA@4w@Z5-gX2oa00|S-o^nE2dm}bf_X{+BzC+_1Vn+QB%rKgZSf%1@irL{ z1$K=Bh;_Uz0Yrh-rofHK0Er!M%K=efsRAhLSlf0G>v&rUhyoi^0b(6*+X14$YWKj6 zIRFwn-gX2;fu&ABS;yM=xxoTw-~tywtmAD0AaSsi2sg}A5+JeTZ89JVETsTt9cxPm zv5vQ?fGDtQG(fE5Z5bd6tTqR3OaVyjcv}gG0!vjuS;yM;gILGgYCsg&m7q|gp9dDBWiG$V3@W4E!01`XirUIhC zQW{X!v9^2=>v)?EhyuID0K_`pRsf>FYD?h8RPccFR1I9J0m?eob{xby-qr%5z{Yfd zSjXE=fGDsrXW+(M0Er!My8@!XQa7NiV{P)F#rDVB?!W~efLO=d6hPu&wJN+YPicU} zj<@N6D6o_Ply$7F9K<@_W&)zXuCV~Ij<;2SD6rZZxG@bNvEywmAPOwi0c9O)I}c(V zZ|eb3U}GkLSjXEgfGDuqD{y0OfW(fs-2qWxsRvNju{L!+u)q_z0C-Em@iq;RI9N)D z59TQYkl67y6A%TKvVgLVwbg@I$J=Z`6xcNmAlC7=1`q{S+X6SH10;65tp`Mbr6xdG z$J(xgSjXF@fGDsrGeE54Z8ty^SnVCSF%Lju$J?HOD6rHEDC=08K4@g(c-tGezy}cP zc$)!89IV!aALc0wesH?6flE0+S;yMiL9F9#E+7i*8V?Zbcv}aE0vpov-D|5Ct}71&DRL?FEPet9=7E=7Rt@h`&Ikdiw%|K{e11DF0ZS zJ?Pk}<86Q70t^rV2M`4|%ta99H4l*3@ire21(phcvW~S)2eFQ~g@7oqn<7B0<83oQ z6j<#XxG@VrV#nK-fGDuk3MlJX+j|h}c-tBf1vX{_h;_W}1Be2v{Q@`U2T1IA+aC}G zmSPZsRIta|+(E44Z7d)PYzzm8b-c|3M1j@%2*ErR01`Xi76PKcQV~$rv9|dj*73F& z5Ct|S0mM4qwg5zd)h>Y>vjQY`yloAL0!wXxvW~TV2eFQ~Z2?hWV|IX8$J>5@D6rZ; zaAO!iryw0~V*ycMDGn&>SerkHb-axSM1hSF0I^VZ^N28Jw#EXFLxEQbH0GeFlu zP6LHW_m9>~C4xban<9_5frLPQ>Gfmj+y~;ku-SrkLM77JCTL6zd>`M(7obzkz~jMu z;NhyU7yPcEF)z#^VaWI!q48{2$Vj#yXg9BBx0{Ie!7P@8KbQgnU-;bn{U5qC13ah= zE`p$=y}f=cFKP@i2ed)%gkgw#kF$XWpt?mtqfxz1ETFptl`mLd1MPR-2@-2(1bOB- z(#e_jF8KWO0%quB{91CQW3zCYCGlPb@Ud(^??>{6pzL@gtALtMeP~dliqoMUc ziC_SFyg)ZvLQ+)g{}L6@nURMfsX`QzDn9TZjOXx%Ckc?nkekE1`)WiOK-bWicDJ>N zFfeEzJotktizOiN#g99`{~vDy$%3p01#4RaINgKtBuFVpxVNtal%Zt|;73zj-F-H216@!I3p8wipG=>!|t05=e%6eQf+R{}C{3dBHAH>JBT25w*q*g#leArCeX zBn#3BHZTEhAV?`lxVJ9^WS}$1KxS~UzzZq@dL3CH=XhJ6Mk*GLGlPynKpG{7%t63r zufX#sS^qP3q`?Qro8MSKrwc)cOQRgt)ZGrM3<9$lGHfciL94!d{RIME?8^D`A0gud zlgS8pu>eJ;2P)GK8p{rN(TpNF2PO#`p$>SFh9X%2lLU=B2fXk^k*tA9f<}`AUg)4m zo`6Y$#)t!6@S{lHfJuTzegj^7%0~9b8ki(#JU8IQRTRlRFiFrTZNQ5iD3Uytkg(|o zjlBlEn2jPS1Cs=es0O^KLy>#|GZr*X8t@_!MUnxg6Eyl6@WKT}G6W_G8q*ATp^hS% z0+R%dR0h1@LXp&gNrJ{7175t%LJkB6RLKh{l5=2^ps~V$7n@NeH^3x8BY*)frlCj{ zz$8KAdI2vgQ6yVnlAzJLfEO_+k}qJApfR|B7xpNUKVXuek+pyqN=TB78Ao7}pz*SR z7py3fS74H$QLum)FESBA3} zk|r=o(CAXYixL#cBQQzOm{Gusa1_Z0FiFrzP{0c-6v+mdBxrmm;Ds!T$)SsZSn1C0LGZ2BmkP!fr1dXr+yf}s;`2}VyXxt>=#Yz-O0hmtEXh^_| z9u&zLFiFrDN5G4G6v-VhNl?cq;6)IMWDZOc)ZGbqVTvMI1Cs=ec?7(WK#}|alLU=q z1ibj2j_gl?8fYMZ#wP+^+(VH(0n-T@bqIKI5JmC^OcFGf5b$CNiew1PSkMSTz>9Vi z$pV-psNWy(A`3-Q1ttmV%?G^jMUk|CNrL+50WSCk8^>M2V-n!yf1qB=4Tcwvw|;{bFBnv?z-}k#b-mHu52}O01DX%A zyjY+PuB1WpfuMVoeh3utJ7h5i{4c%n;_4;HA`-~GS-rkDviLI?YC&sGFs!+C6KstG z#2V1-8=5th5Nkk_S?Jc}VOYbPk%HZtVu&>ts=>YiH6PKe34&MyZU?%)0WXPx`Gy_C z8i9-w?AGu=toZ=32Gj;bvnE>&9BAOi9GW!?E}{pTK!yc&YnI*s2O2{S*f*et9GW#p zAl86eWN6k{Vpt=R;e*{8JBT#`5NklKF*IvpA=ZGKRcO{+x`6H*v5Xzqt+{?3?3)RY zKm(1sqFG}Gu?94ViJkZAyCD^T5bPXJ647K1S02<~&v!)SpLm#LC zi*Ah>hBd+&9CcW;r!~YH2Z%MGE()48Q4niDV;bnzoIi)^n*&)Q88TpNu7JY$xGQ+Y z#4*d}hqSDz*YQv5ffDv^2NuYk4v_H&lXQ6dyz$Kv zMg|5%6FoQ#wT(UQ0FcHP zDN%p^w;m|b=|1t|nQp;riwO|KJxo+d+%yG+y3hVqk#u8ai7m zKnLCyc(i^i;e{Se*9{iycBp_zg3h^y$|fw}6oANrj+*Oi2Mw7KGN;R-rlYkUv`WSG z4>OWET`)n$-tC~lI(`k-gvHzfz5W6n?K?ym7}IK6RkWH1<2f1i}Jd1R-Qiz_JS+|Nj5K6&%@MlLB7om;e3Wd_<$y^#;TN0Wa<* z`~?j)a`d|1Xs&%Dkj3zSE68qsXV)76|F?o%^?xhKh5to2?Bf?`J|c3=^$#a{w!d)- zob7vi4}koF*|6wP1vwKWdCc_>SHSUB5Oaqwm%xj2f}l||mR{c(FAiV&{lC|@0d%*+ zi|vru1@yLl`TPHW zKyNpw&Gup$WaO8zdGDXU|Nk@83PPn{$Zld_c)68}fuVaV$dK;6pd-Vqzw@_%*5rfM zUpCi?2o$k&^Sx#Q9T@%|H2&t;{j)cm5xO70i`~8DK)7|(GcYi`W@-Ij zAr>Ck>$;({c1^&GlL??eVIyMX~>L9gqYfL_-L0lnRznVAwHN zRp@nH6WHn6)9cz35ZLS50#ntL3%W9-eW5HBpi?(eZ~294~%+&=;2L8$w| zst)DgcmGxqkT1Zc1jzBA{Sw`=4O9q!&v@kU2bDqy_k-q4UR1<`!oSD588p;|&HZ3i zOoZI80Cv9$H1MhC{?0gL_k+wwxF0mh^I}IF)cv5bKWy#?t8&UF5dJz~_Zv{%{U>9Q z-48M!;eODp)QcanQ1^odL$SFZtg0!Cfcq`L?zf@3`#DkE4>BL&{tuv`M+=zyL8HUi z+z(cDD3gHuK?fyt?*$!CLFM!xgB<=K^AYX`&HKHmh=GPbXt*4k`@yQ12)RE19R49x z5C2Z^?gUu*2{Iqye()saj%cX+LGuUL+z(deltCc;W5DiDpt}1{Mj?kk$b5wRK{Kl_ zendgt51LTH=6AGlCT#8pt2&g1 z*Zq(d8AG>kLwBPDX!dhs1&G`k0U~Ewh%hj8x^{Fo{tyPW>p)HU?#3HnHmCvB-M9nH zt^q}1;|vhnwV}JQ0?e4u-53F8^zgTzWny4>!4Uvy?i~O%EFjH2&;i%Ypyr+psEO3- z@DI{eco8cLYVLgjaeKjyKv2^g+T3f*1vQ&MZLo}h22gYFf;p)9CeYgp68m4;^FrPp z)My6rGFreY)|tb#6o3WhqH3A&;*A|#iv?IkHA0I9SRe~kOT&wu2rWKf6&?sJHedmB z6fIjpq4c5|p^FEsNC=_pM?J_pjHtRm;rzlEp-Tm<>y8=RM*?7h(`LwluoV z7flEaC%^^@A~b9P3osyS2zwC-(%?EJptl#4T3$GXf}7^dy{=Q5Ygd4q=Ad-K@9a7y z;Qv-o3i`hll$wy6<}BT=E5Kc4$Vk?d7qH<%x zgZCnU+RcujAvgy320PH84+DHh9%z_>;kYAo4<2MY2g>$F=(a`pPCoDsLFoQK_)b3X z4#DG&4xmo>aYq*j`HsY8A;T1qA@Xiqw zA42*Qe-Ql%tmlPy|Ll#=fp#50$KjT^{xAIy{J)qb;6=9Vpa0#)J65k+rPb}tp?&WA z%Pfh5znHoY9eg3rd?+C7Mb+Nl|Br(PLm8Tn$Usl-IqnP^0%YioPk;^)pcyJg$WT>$ zhK4{7Ohz;GpbP<*Uf6@jr5><*ZJ1jRAbCHBkfGK147Gus+>dIgI3YvT@EK}w+!ee& zAImN|+LNoNR z6anvF+J)2m$6fz`2d4R3PlBU9{C_!1;EO_#iRO@$?~g6zH-Jn84V;5hKIF1s=qVRy z1<=!2Sf&J>?+&^Igd@27X1A}zanSq%Ls)mIKzMhp2=p8mu#u30srd&>v2S-vGiW_j z^9!aD&E^-3C9KUam`lx%Gks3GZ-1O^b>bZRkrZ!f>3)FL0^- zaW*TrLZ~!E5`6x=2m`qAgPb4M<;u~~2pT>DU26a-FKRQ8#uvAMMuk)^@(36o1uX$U z+BNLT(Ot>|-jM$VcCHaCl+g;>+|+EFaF1VrnZF&hIqJnkcSy725UAOa0v=`ZfQ>SN zs*B^Tpn3&VlDv2(0%~@Ej_3vrx`C?(aGYmkfCrk`Q$e)?XoxB-;Ki>LNQLWqptl!f zUcieLe&Cvkv)A=NbL|yy%>*)v-`Vv*!2hivOQ7`=(x4GnH*^peQZpTRv3LixX4(L@ z9%FzwSokk!!4qhvp|=&R226tLrkB@2fdKY96My?<&s0afCf)8;IXz{24i-17$8<8}A zJ=O@&VZ+@YkF|l+GJsDB)ai9m;RyIIngbeN4^iRi_EF(@@n4+@wC#zD&_#s<;)zfE0wF3Ky?vm`?M@dJ z0kGcVE-K)*)r-GO3=E)PfV)4m`wi&KCXP@1f{maxt+0Cwkjk%aSB}m`&>B{d|H0)e zM>kV9LuVtX(ClXFc3|mjyaDP(F?Bm|bT;0BGI=^1A3y^QW*8(q!@|33IeIsO7TH>V zFX74hpTz*WNMzCf-~W5vC3^iNtWT71fkXpd^!@++pI^Y;ARe@V9vmg0^_dX;pw+g> z`jfEe_rswm^IBb-e@1 zV#i${fVQ$8cYOlky@604K-4kU7Yx0)KTMk$Ux@=5fM|Hlw3)GYD#%AIw@X(vE>ltg;3#C`O-2_?>l(2>UztDVy1#~eOxLgQ$ z;nU5)@LFO6Yu5>gJuj+5K}TY61iUcn26ah5cE7mZ2bu#o^5VZKXrO}wsc`@~c>sJ< zA|w$)>R*9Oc>UY_#sy2{f8rMmz0>{inCk|{H7HsjkqkPU6*Qp-iewhEKmWUKwA|)z1)U=Y z5(P!`Id@Q8mU0|(J;1n`>2*m%?FNRDPu;#8-He^CpvxY5eK&NvzUXy*67b^E{@?!_ zY7a2*PdU(XpyVPbSKsM%y%W&uy8(2p{GAtuT7N-Nu)W*&M(fEErEb>?&7k|pcmhDS zy=WHy^B?NwmII|Mn;BoT8Qp%(w3!t&xiZcC&;Ksu$rVVrvM_+|d&>Hs;eZ^THdw+F z6qGv{p@9buJMfe!G$>DiIA}AWkf4NSEl`EW0L@d!T}eCDrn5a@Q0=yW{*(gHemV#kY(=HOxhTxM-#dI^f!ZfKb` z4Qj_BQ0DLz0O@HxS!#0Jbpt3F^!lzi?z#rVI_|mxLhXT2J0R2+2z3BNz3_rq!v-p$ zUNdcA?41hoGAK=NWO|(gDvLZEK@Q<>DF@AiyUqcZPgC}QVwArn8A+@GD&`Lw^#hkv z{H@L)Hbz+mvLWEbf;L211rm92J^)%)wY7oDDzKP#7o@BTHpD2ax}U~^?^uJS6%c)# z5xnFWZ70G-(2`^DSs93%*FdUa>1!Jzec?C@=Vxc_hu(4)$O(d=bpxQYaX`zLV8>j( zm=yZ|e$g(Kc`H|t&Re+xO87Sdj=SCfpSN<>j)|eO6m}cdaW~K@vJA)F zz(=e1*6|!?tCcclBw|56dqwSc8OF9g^?ZszGe_u`w)pZ}m{;2{BcM-{9a96rrYeqh%R zIvt?-2uS}nvh;)Y{zLSak){6wJIwuNWa*#40n`7@njHTdaKiL&BTN4Uxc)M-^n>=Q zL&DDtpZ=`>8A;Lb^xgOdG*W2^4!Y#~0cgol>xaMp|7U;}LZNizj+p4M1{`EnXQF z`#~#T%0fUrR*)3|5b1yyhvgvs*47(;|Nrmp1sNRhg3k`xbp?wy?|t+4|9|lK1juB5 zXRv6%|E(Zv|8E630lBlz)ZGeF4;nug0*_K`1sVO~*K%+%)7#qtau!$#coe<$1<19a zO_N|_8D1=80yz?_3UY;a!0}cP57e!F@#GzPuNE?DUdRFN)E<7ZNPr2H7a{G_M>0t9 z2Rgh4clYdvNC}Q zZzOIE0)-DsB>t1Z5{aHR)Q?2dWkg2e9R`piLD2>suSSkU`M203aSa-5(q31Q<%#jShgjwB2qz%?Fqo>I50Wdn*|EU4B^Canx~z zzt{+FxR#iMWJ>tD-B_62ctA&=DIQ~BYOrJI_5Tp7lQ?AGto1z*Zl2-|CEg)BUlt^hvKPXoMJC zclU;JK?1b=H50<_=U?XS{$ zvP867(E2?8)C2t64g~xU5;*P-KBcq!+za#N@Y8}l!d`q~f`&XwUl%ku0v~TAY<~kO z_HSQ?Y<~$g>@S#4ivLmU|H4QG|1TlM{_RUq{7()01xN{ha}@i(Fi^q&38dJ+eF=*H zsbN10DdBI9V*i)_pk4+CTH}_)^j|QKg!H$4F^c~Q+rJXIzkp->><#D!zZY2ySrO1e z05o_8o)vo$z7Jfkbf0*!b|bNaXA`uU7<%IbP)E&>|Gj}bq{%KIh>YoXNA-$FFg!$*}8e;vkK@F>a1O|hDmhXW1=kID_ z{qsN-tAGAb#XrxG>z@$B;3(?m+)v#%yK6a&5AcT{09~iCz|x(C-{nVV?F#U$`JWdX z=KlX5*6X_gG>`S7c;5g2EeA@CK-Us%W&%xmE6xTVxdj^9Z2e#2-RrslbW=k1g5UqU zeOEMCGL))=?(cYQ)a}M$?Z#7js@q$o^<*jQi|R{^4Bd>qp&Nq!2XGkOe!aQZbp`B7 zj}v@r(cn7 zK>0HdOK>5UdqT(e;*i4!`}pOr?wj4Eh{SNm(v5}R5z0$M)t1{}2uE}Aepxp8zfya-K_DLVI|FE{Vy3zc11?Imy2>)%E3!39D(S`a?wc8csJJ3QB z*AJbpFTg(BcOK%yCpdg~1?0o@xga0jA>hL&utfjlh1pzOu?X?sK4kw1U|TH7h>G`a!HpbtP1bgql7gU^8geT-WcA2X1W*K!G@IV?v8x{ z&463FeLr-@a==3D#92^?^@eglV|{wB>kC-yy?9YE8!ZT+=7Pci5`RWHNaYjKd1h$k zai{MYh>FJ8_9 z2T3|4NI;Y2=<842d!XeO`r$Ls)xNF&OUip)_kaqmIkQ0FcLWrE!JzPa9S5@JMJw2j zk~!V67eE1hF5t!F9+0gieb4}G>-Ig<8G8j5fbC}>0eB;*H}nc55ML&N%d!iwaJ=xs zU>25e1Q-3;Z(v0~Bs}ww!&89d@*Wy=5?!v`9j@HHuG|4HN@jqa@7U$b{aT{emHU`0 zH$%XSIEbirLoGK0|I~v}zbSP1a=;4cb*CX7gQW~MNT?$cq75itoey{sJQEa<;Cw|~ zsi!m(OK2dK?4Z;I%U?vE2g=uavP7fXjRSEUsBPEp|BzMxpws@PAl!M~u5UVBIl5i{fR+U^bn@(QxBgwT12n^ke2o*x zqB_5{31IUx&mpCBQ4pK{JlszAsu&mI!tm_PQRiKEXfr5dXGILI1-9(3dLtzA--g;?WCmMno*b zqN#uQw}Cyxzs+@ThwD|)I%}xEK%+;{+vgzuy0Cy-pwsom3tlq)#f9!KP+Wm9P5p-v zU!YMr6o0*e`pZH) zp9j!X_Z6~RisbU{)8hg44``MM#Xo1}LDHKlnf_72?jNgMr1q%>w)RwK>Icy3mN(sO z#{WBOpLCYq>2_f0_A#(%Jz2uq&Gd$2H{Yp&!0EyM3{eE@AIwH)AYS93bu>+T1PMQmUuFR!J}PSQxL<$=#r@p}yFCQD12~vHc))2LqstIL-iSq;z|6bb4@fd+~I7@N|0#bb1JY_Vs}iGkiTD;rzG&$$d9!@VKu5M|!~) zxDfk6Yu91<5!61UN%+n{N*@yV++TnizOe8N1FiBvOCO+ZW*~W3epNfp1ZuZK-S5WJ z>BPgo4P2n`Z}SuE@DjvQt`J+Etm#0ckBDkK;h!Ldl0HE01Eq&B{%s81ULugx9RN?> z;PMjYe!1gJp#Bup{kY1*=9erl#pe9~4@p4~_kYSos&8$eMS7OZe?XOLx9ba#iIBUqORv1RR|yVzP)C@5 z$^oPbDL$?n+@G9u3(~$~0j=!@g%Egr0aTuYHnDLSwI6d zKLTF-YzGU0M_yjDf^KzY2lwJjw7T6{ko8`GC{zRK1vx36f64*S(8eJa2Jp?x8^H1< z4?sq^v!JN}IS!Klz+)d_-9KL#2!SUFSU~25_4@O?kVh4ec)^D%pz`9cAc_`)7jIAn zY+l?(74Ud*3RNKF#ZFX#gcqQzoIv}xpzg?d0lF9pCII&aq!fdsKf^qD`fGeMhk=0s z+y1)dHyp=Z!5ecS=X$;n2nSF2fMz$k*_wa+FO`IxNSdM32s*DQ@EvF^J;zJX1>OJ4 z1Tq{Nxdr~0ab&1~X_gEPkSeH-2_W_hd5Dhg6E9lB|NRem!4Kz`g8Bd7f=%o`@gfz> ze-Gz}hX4Ejzf1yZ+8nSAA{j1VQ%}NG>4SCcg!ARY|NZYS<$!o6>_tN8zyH0yD_&H9 zXxA0cwrId{*A?I`34!}S>r7Zs)|o()3p6o6(gSD*8EiNVONxzZ1t(AB6zdKV!c4KU zXem|>qEH?bv!KzY9|148Awm$n;5*FSSs=+>w%eTpIk`V<0b7i$`5Z(DSu+P*GY_)n zB@mU!nkPbpkTrwW+jpNUk?nRDK-QcNQHiWM1R{j2SpaUc2(o4^h)QJ5;t(NZ%_0!Z zTHWpv$eQ0agZ+#%i=PF{L$kO9JZ~V{$KdkEBsi@5R`rO_Gs=7lLl zC9-BEh!C=7o?d4WkUOp;xuY3$Bk)Y9TR=v=Y61s=5;)Ds^t#>%cyS#f1Tl)U+x12# zSQpGI&7eDkk&RdmQIBlI6o?SA5g=V~BS4oABO8$dQIBjyAVdh+2#_wg5uh3b*$735 zdSoN`AVSDSfOPd%%XFU$f5Gtf&;MR`a7=xD^XGrBvkEA%UV)h!Am)8AQwPMn^5zdb zDw{#~EhF2!yb&V^r$B^|Z3gLrJ05gVGqMpW5cSB84}=II8v)V(_yrWKoXyUf2KK=K@Nk8g_Glt{mW>>iYl1{W`E!;N1LL;h5`xh8JfbLJ+HX8*2YE z@J~I^(G1c94@em_7vHD{8-pB>MRZ2{7`5hMyxunfekb^wXa1~DO`6TnOkkhWG3v)Tuw zpbErG z+QdQ3>I%@QC_Er0M3fQC1RM74#h?GZyIY_>eF5S@)Z7I#!D=pnn7b!H)f@rwAZm7k znP4^Rz)Y~C7Qa9$FhHkMBWKmJT8tEy3=u+(Tad2aX3&*LAg=`>8@PuBHIu1AbR);K z5JU*sK#;EH-5`_fezQ`Z3Z2b-|6}zZ9;FwpYC(L?tcPaJbM1;KPbd*J%@Qj zzPt7ZxOII4R7-S*-g&XE2J8<-aNQvdp6Q)k^ZS2y?T?lNr4XB0yIn7IvNs=R*$ukM zVFJj+j^}^=Hy>wde$80=p*!|R_qkqYmw*>V&p}172gs}GAZE4CaaT~4!O$K11f(kn zsw?*kW9fU)K%DCjM^;ec?DT!p>H5RE8{{wk9&6Anaq|HdNI@bCGHLe_FfaTCKZpm3 zG!`%u9BDtFfy%%OU^M|RUW0hMuYh^sFYbbP5FMAmOt6mQ&%i+fErOIAss$Lp&>``Tz6=Zj-RGcv!xx9x!QD7e z$FTYQ|8Cb8-RGMh{OJu~`M`gWi}`%1P(T*ri@g(JE8Ql8&XjR|aU61^O+feQ7Z-hC z=7E-ky(og12Rg*6`+B$Q3y@(RAj1TEz5chJgqW8LH_y3`fuZ{})VLQ%0~i>(*zU%j zfTufA&}yR-y{;z$y3c_Y9G!U4_~g(3Ue^;KucQSsFm!Wt2e5#ai9i#oV6W?qPTv~= z-RD4IcBS(7|L)T-VnOEewVZ^hfrV3N=$(KU8!ADaLGEVAtN zhX3a*7tz?aRT8FC#uxM9I!k*P7`nkqKn?>P z-n5ztG>6XsT2^v8;Dsv0nV{3_x;eVoI(Pjs^EJns4jbZBa~>mHa#1mMnj*3H1+4)un0?F;^<(*OVezmxzS zM!Y%_l+wD-f$gt-(S3Yor|W}W*9QTep-*1SD+dP@ycj+a@S+jXX%?qH z@e8u3ypRCd;`#t2eYfoQ|8Ca@-KRTUPjtIJ>2y5<%0Vx}qT%l22CI0{e1v6Y_vxU3 z7rVh`e*kF?c>Di9)E7@nLFRmDKEl%c;7|AI<^vr6OJ4-MI2Q#s=P+0W$Q;m8xdZ%t zT?`BiX%nDv7Fq_%S{p!FOUr|Sp&K-#!`JQ2(p$-B{j->-+nM9y3+o@n;^D7(t*beT z_`8oEe8I$g9F(GOo%{R0o4MEje`hsIFHZ+}zRC4OCnM+v;BMCqu*g>Kg{9h`o#0b@ zc$;%yFm}h@;RoN{a@-Ys+jjG*|J|-1ux8&!Jum}ybTTl2N^jrqJo7Jb zvIV7CaM9QqdgjHe5^$PTIp!?D_!4xq1USa8Kt#DgqDBW^z6UjXYEN`Aw;bSa1s%Bs zs*xEO85oSewf^VtJITPn&{=wgUmn!10F63Ax3M2{y}Dxj;Hg_2ah#^s{pjyu#TjHvIS4G>lFz%SjPNbGx2p0>}*}AddS%1jTciO z>WvP(HU~MePRsZIZO97ZSn7~Kp}tX;7fVtQ`V=;RQ{K8 zXx{`K)!NGv-D`3z?8Sj2AU_Foma{-w35Qr1ietMEYaaxSk_P+z`~SZbybh_JC9wOv zHpGhWFT2l!jQw=*ojmiW?#tTOUc3awP3a%73!0B`bo;Sr^L>8_QUp2kSo=mVOZ349 z%#3abd*CS&(%z7Zg{QATY^y~-g6m0fPyvQCC<|V>d5DGKe!H>C&MvDhUSA3&94|sA0znyV|h5peE4|n zgFAoz_qwrwV&f{9$pK=X0yB9)%>7`d0EoE-%oG7JSAv-mAm%(UQwGGG3}z~Tm>poI z3W!+?W@><#MPQ~5h?x#%8i1HFV5SL(83<-tfS7JzrVWT`edo{rhI#=8@ZdCL%oY(^ z;Po!eZ+ODOyMJ|m41cli`G44m2Q$bBcW`s|$8AuT58P{c3uX#{O7lmz|NMvaEM>dh zK_hPPHElZzKzSH3a`h$P#Zrh6q>g3lcKy=n4jOTTwvd$?>Lnm8WZQhORt-=}0u`BH zSA${!+(4EG%a%NXHIUs=M%=(fDd@b9@a|fU?vG*J=U=S51&SeX1S|$K!J$3_%mfE@ zFPI4q-zG2<9H`}BCO9N>z)S~FNG9IG5|ZHYy#Vm~#qOKk=Ro7N3f;}1TYiy;5to4- zUJ9@GZv?!U3=x8a2&AJ8($(8613DJ&T)+#Xyx;$ucZ0+jpz9O)`_?itFogG3!w3D` ze<0i905K9i=yxIDg)T%0VhbCntL6R!9%+AOcDjD(b^Q>~8T#b~Gejj^^ND~LAM(JF z0oQz@)BO)bGh`A4K7?}|q7XhLeIVe)7Kji;FKf5!flhYlP}-`Spwt9TSo6V5aKf4b zW`Yw|=S{SP1#dpZLkxwxaYw)lABYgd9=2}R9gu_t8AJvR<-+@-N)VNB%^Lz<@I!>) znm2U1OZ2+SfKoRL*gXm$=Fb}-2ZP7{-hr9mvA@S)CV1@c#trb%a?Qsr96DV&tiiF* z-vc_%IUbaT09Ezi3$eiIg#%oKbpHemLs&og|Gzh!rTg5A!ax82gVdLRJ5`W? zR_JzD=yd%7nofe2n=hhr!Lb7O$B%#)?hqlkKYnz&D?s$icDt(}ClOhQN@UGk5FupE zD!uMtKfcfT4a(xZuH2xZH1URd15hsIela~8>;z>{E`2R~%$1wrMGHg-VhR^zee;11 zcLRtsw7T6*kex9t2W$X%AP(eZST={voRxv)p~LDXXeyA4FHm{h{Dudd{~(nss3t05 z?T%-8&18JLZ&an~Q9siqf_V8ct*z)OW;HOLEQh$t_LD0KNS2Wa`Q z5<3F}XjN~CC}=tFxo(DDmLCBx&Sd}o?{59O=rzQn%H6Slp!Re-^FY`6zE}Nhkb_UIe!u9ThD1;}kGXXDFLxdoD*+6=oS(>X^82DQPnHd-w>=>Z_6>q5Kfut_W zOt62EQCVK*YXgM8pbJ~l`5VdgIw*y*0v!Nd`ltKci-60Zau}?NCE$e?Ki~%WxfdtE;y=32v34*p zFa*5V0q28`whVZ&;?kf0&DAWdrCk3@zjU8_vEu9h|IMy{1VCe+t{gJWu0J@MUB5Uq z=YC-1Z~Y58Zm(Gb+9=4q1R9Iff%4+PJOd~%@Y0|E7!?jUzw-ox&j1Gba2YoI_56G2=8uy_FcSq3GN1!@}kIemwsumXDHRME@pvsw?7n% zhrQ;tE(UeCkAb?|$3Pvr+iKvmG+V#bsTki*o6zn0C%l`3`Sgq8-{Ae9EFe=G52t`` z7g$Y=w`NbS1|f525VQhfz0SfO-i_nW}r zuZcFcaJ!6$UfG?NJU8vsj_~eAtV>=Rpltu-Z>xCRpur z5YssT)CkQ1tF-{BO$0F^-H$LZ6Rgb}#4L6JDR2NWAqq^vOt1ni5VJUBH)tR-Z33v3 zEOFt_|K?-R@%GX`;k|wtFIxT~q9?q!4^&pY*zgx2h8|B)?}O@NaOD!-{j)os#rktG zPq#a0EapS8C@681a}@D*Lleh~1ImB?cb2nQe=d{hX76RWq5Zi;7<4%>c>nMgX-^Ry9Bl<0n^Yd9jr|>tw5r7@`4?f~w6BO~#6aGX0bo>5zA%B9A;S;|A=K21v zA7ID(hkohy{qW-3agajD;r^iB2Fy2*{?U^k|4T)(82*>?{4eDQ3VgA`lL937$j=L^U0Bv+~1)uDF+!b_*C&O{q4G@)}scr_u8R-y}p!sa1d!j)D-{5Np zKy@)}`s29k1Bf{Ic$L;mC8FJ@dJ7pr_shc8%bjz4&AJmbzTbKYI+eCV1+>=Q_XEG{ zq2sP!K#l}2vgioNV$V?M;THIBdWBg);J@hw5Gg7Fx_iR+kMY^K7yCAY2bI9xTTuSW z`k(P0F}~6GMgVl&E8;#Ir0cRlr|KU7_3WE%86JX;3U6lwUEXrz0R#AYWRN2kvOENx z6Z-*nam@?R?J%uxKo{hJZa~pp_vimH*98o{t)Qz`pk0s*j)$N_VgvvE`417#5NQT2 z*jjJ`Ja+7Rptl#Ky7`E}i@l1VF`pX&y}ckCUfg>QGVTxZRVNFe7rKC~{J#}sJ?a^; z&~ZEP0kNewUfc-;jfwF z0_^;PZ2SW50{nt*0{jB*3jBg@3ZMDw+zrzBuellU3;0`n=C6zQ;MX{q#xHu1U*p0j z{>Tgbg036*H4c8_k39H^KjH$v#^F!=k%uA7L!h9(@WPLW1(c=2BR=s9_$Pp;l|Jzc zxCeaVk38^+Kl0Ki{>YP`_#+N|;*U7^LJ^`k^aQ`g3DA)HflvGqr#|sV@%1UI%%^1H=J)i(ljLiwT?{-wL{}06XQyLlzbWegWSN`~sm5Kx!_4 zgjamxk30bhJ*BY z_yt2B@M~QE#2@kD6Mtmr27Zkr&=~l@uW|Gfe4IC;rIP4WIa9e)9{Oed3Qf0k!DD zC;pf}pZFtlPk5&$wD>rnt7k8OOjhLwQ< zUSOgP`Ty$v_`Mx;@;_+I{1d-G{|wMzuq#J*EDy-B0-dcVe*gd9Irq%(|NlSn3-)gK z{r`U{H#k8;IG^}q4)TXzO5@iD#aHW&-~a!ElI5Y7>P!p_Y5e-E9*aQ9Qjv*)0i0N4 zSS?rtK&h8?23X<;s9^^#eV9SF>wqNr+aH5Up`bgEQV4W^JhT-0@e6ud^@m@e)2hGx z`u`u~?ib5f{`r5bb;a-h{~4O!2tZ3AP#OkV-rM>CXK|usMcKi4L z{{jEEg2M0rR!~^Ni`3vOM$iWS7p_IHF?H#D&{YW_(_d@|`Tf7QH{tjH|1VsZgKj4Q zt%YNFEd&)agouGA^m|)Ds*Zz6P{|tbqGU27LpL}XH6Hj(N_@S&0>A(N4}T#f%D~Xw3leEQ!UEdY0%}Qo<`-lGH7mdk zlF$5tZXg**Qv}500Lg({As`+oNjoS&wYh;ZrGo~H2X4ZE8z&%@;MR);Ob*;|ae(m@ zKxTTtcq$-X0E`F9styq_o(@PZ0md@`@iJgM6A-Te#MOzoTtEV#r9{2$pw2o-IH0$+;n)BF0llrD5De&T_4xJwKgcg0h{PVz3d+9$pkgH8 zMUWT+L-&an-eQ=oyw)q=?2gvX11B+%Lt!mFP_wS}4pb>Pl%dVP)(22QaDYNud##{E z$S(jkx*Ng~WJ}|}7ADZ?Ch?hHfbBECKpYFd#);3MQvNf)Kp4+w{>T%b`31p65WmLZ z&-{^xKl2NM6VYdW!KI*V@R>gXq+}{6%kXO)`OF`A1SG_-ap*IDfnp(pqd9% zBSxLz*W(RX$SnY==05Wauzp#{E%2E??jXcwaQ^+wA9)ZIay*~;1;Ca=1wc-01(k$Q zz8ecj0mK;)9UR|S8CV1a7)va{r6(jVn%@ZYhAUvn@WBDStv5h%7T)}ZjV-k@bOJ!1cxPcF5NRB&a9U zz5~j7acRLH&~62=OWHwedLgc92QB!6I0#(!K-|<02_BHM+Cjksb6GnmfL^pO`13!* zgOPzDiveOBXx0j99H`p|H4c;*pvHj|LwwmD!N|Y>Hm!fEoyjPe848 zp5Cn>;l|?yj0_ArgBTbXJ}(7dF4O%u8gjo(^OGNqZxW#4-Ob;6vXsl{09XlVI>AN7 zBjAM?9|J>giwejspkA;@K(CKVzzYLG28LrUDm;wF-_rQyL906%7`j6_dRe}L!btmA zuaAmA^8tZgmg500o`BjhM?jZS88`o9Eae5Yh6_IN3xdN4bimVxQjUP`^DjVyw%sl& zJZ{bZm})k`Tmcd>K51Rf!N2VQzstc+7Zsk@cfmbgaR2>B!RWi@FJEM>~K)Z138=ry1EnvJunbrj z#6!+d`~ofKK&2Br8?~GRRbKpp(5wV8pI;D`ogn6QpG)Jv2F_G3%-;Y1-{qph4$fUN z3`US`R5A?U@t5vUj?O@iUY4uiSUJQm&~gxBStBG-wj6|5)(A?NAX$*F_yrq5N%J#* zUCTj`bJO^*HG)F%#p!qd|09Nzz;S>~faBvs;~O4OKTCiq3^aTsu$WtbKm0#vbR?kr zW6DAuP$J~7a}wYWzXUG!6~NikMa7_-cf)ahP{X4P6xwkD{2I?b@e8o=YrOu%A9=8w zr{fcU_n}^`Y`@}EkqXKFG@O|QsJpYM5=IJN?m>2vS$3F2#f_g!95})`Z zo_ykucnj%?fVwS5KJiDKgmxcXR5-wj1wvFneJ4qZR*28KGj43M8*lq~_}Se9m65buAf5~u-~u!vjW#j$V93}7Xn z_yt)Hum}je;DIRp#4k{z0&0!=S>aiwZ|?h)O{~Z;uM7`wWii5^&H&hN#GZV)PTg;1m^5!2y=5d2x;p+}L8>u$Wr_ z(u%DEg{O~70Kdk2aEM0mhlBdODJly5;h;`o7zcm&gHQYdW)N?K;_S*N{>Yc$K$ZZ- z+$Vm)6i~E*62uWu7a5cwE`bsWsNV>UbHNZ50e+2ZpZFs$^K0Ds#2*QcA#j=jb;CiK zKjJ38#+gt2k!L^gM_l^EAK?QEcThM-KKjHTaRXw14LHbCz)9)oC;kXfg1iAvUtpDA zL1_?XtqWM~vrqgnAP<0hw}(IR3(QdgRXzL~zd!Lu)~JBmC18aDpnh(|L2y8UBHRts z<2?fAg7Qj_3Mkk1wy1zQtDpDn0xdsILf`xC#w6fgtazl=P_ukjExo|2*x@`+zy zjS6T;?-PH_4}MJ_6%&4qL;RW{Dkb2^Q{e}tkH~ZU8ec#0NBjr56EaHR0@51!9po3V zK*SS%jk}-tBT7Kxpo|p>3PDhsk5P$%3_J+9sF-}>k38~;KjyE4N(F0B$lXvh9y7oN5rVer16WK;TMD@Ezo!pXkg=b z8o$VAe!(p&pc)$#{rnm(Dkf?CB1icJTU0>9n4kC~LR5It_^(Y-0gY9@$XWuv^ezru z^D;teT}Nn>!Vxs8+Wnxp$;_j%CZ)`!m0KQH*c z|NjrFqDpz8HEj3eXiz2FS^=uLU#w?iVCd%SZMFFG|9?Q^K@TPdh8MG;ViAAAViQ;x z7+$nP#Xw!tfX0JAI2agS1cR2Ge}Gi;-K_!t|NnpKG+!Xz}>z_vgP)M*A8Xb&?G z6hJTo+sSGyrSV?_w~~pAq z(9I8`48WxbsKeu;;?P;5;?a7tB)Z#`r}aQZ2^=oL z*0e;$<3%9o5>FQufleb(Q>~=8AC#T~UYueB*9oLfvw%9^E}$Y>zyZ1I?EhK=)FES}+0upb{me*F~iS#5D;37iSS^{MTGm zJYLAMF)+l(!A4&YvqGRE8hus>Jlp~sD}c-jfhs$=b0I!}47_w70*zrnMhd_I?V`fb z4RNGG8vnH*gHA6C(56|?kq#*7;W#MYGISq2?g*N%WH{~!ns{M2?g(0%&v4vPfC1Fa zbOc|IdE5~+t;2BKQ3ljdJnjgZ&tZU`c68hk)J|bI?x+LNU;t5K0--EG6nuUK)R_Za zQrvCWcnp+U!j1p;&QoAwV6gsNq6`W~&`hujBLhR@F>tbSX9On*ez)V@Kde8O-t9gP z>efR~Rs^>ve>A=UrMECh`@WPD+P-CB0AEV}q5?F5&j;(DK+DZ!m>{SW4QM1G$ zKbp2y}s6^-c1#I%J9Nj-Y zFYV^G_We`31L9@SiHoira5iK<57Y_-H8J_aPlDFHbzkHc*(259^oBx3=(qr98R`e2E1_lfTp zn;$YBd;BOl z#?pOgrw0QAL-Pa1UX}v~AFwtb;9&mnd1<%rAJ9F~KdcXx7=FLdTL=zPkV1$m<`3P@ zkRU7l)6Hk?`=b=nKZKNm-Oe1?%0y85c>@{_WCaCbuj`&L{_vCCpSnXiKr`&;f&%yj z`9JXs`hx<~U4mcGUx8oH-+*7x-+^DyKY(A*KY?G+zkpw`AJS#&2eqhPn1e>^1sM1- zM<75QanK}~J7_dBD&Z5qKoMvz%MX=|U zKw%IG`}(Eb_JFHm7s*-2rBj^Kk*9`Xn<13C;rF^Q1bBrjihISNHF5zCw>7>P!hZP zi9h1@C;o_QpZEm~A#<;hr$6yWfVv+bH-Hm|hXJUe4>AyxTtH3q3y}T`sBaR%0clc$ zBK7Deet`@D$V?u@c2IY_0_0Rs56uxYTLt~PLhBl zs2g(-=E9Gk_#;8HuAoK*Xbv-y5!8KvOdo>%0-dJ>xfV2M3F@9RLYxH3IAA3gx?MT= zHIDFWoc+Wf2~rpd_B<#cL7fCp50UW`e`F*F>Z~P5Z=@o>AjtdB+)xP$G>{3PS<48J zr@(HG`Hh&m^bi2`RTR?rMIh1w{DK~!3fTeFRXD@}zHc5}AA-7UUZBVh5&#wA;oYFo z18|O!`@|n1^@%?sOaR>55d`A?vhjbHy_ znGd+nCm0S2oET8Y`b;+{>>+(#P{IK9d7)FjAc=RMz(p)57skB##4i}n@rhqBUjULj zz!7zoKZF%DLct#*3Zg)BrC>WE50}M3q7l^RKKR1m4Z^?r7t7FR;X!4V0N5>{33z{y zHU1L(;o!l9PyB-Hpphg|1OL3dCb)jt=k>9>J$O9{68+0DQWmNJH%b5>9u# z;QRakj%`e=B%ba#(-*v}4YZf{#nMvv>5i9reiMJXBfOXn?S2#7eY2an^+1UyXwfIn zE>OF9AFC(>19-lLf18ihf3M7M_6&>+%pY4XmA(V*96qglEFk>F1W*_JM0{N9$qHW3 z(Yq3z9xTzI%k;WkIigW6mjwwz>IBIBd;d#0UK~wm@p;hc=ZS1B;=gKr@ zUYN|tz{tPNozeIL|2B7~%u^t~@d^HI?#!7dA?(b9AiCRILit2D%eh{Wv!FJ9XDE-g zGfOFJcQMOrw(b%!mToia4<&rv{M}_N)_xo%-qs&VzjW6Mbk@GGtMfKGn?#GT5!t6142UMu6pYYB#cmo8yJI`M>|&t{lxrSUL@kIj}IGEcXC!6X9X7K32-oY57{J+mWRk z)V8-iUc%Sy&C~57$O76b4Wd9h+d(VGUvw*iHZ5{=S{!p=VZ>(G|I#e)5XgEG;X?R&67X&cEawS)e4)t0z|hUs9m}H}!SbJ>n=kutL~kVr z^N-Hj56$-fO7%KxdAfZ$dc!%6vx8>;J44?2xal8N>3G?zTXhI^8 zrTcT*1UKbR*~cQ9YdARmm441X7SS8X!F-`J^i8)ri}m4Bzs^w5re;tdu=P@jVmEuQ z7e^;kw>wLx6HBKrXlZFDW3RhFK=VP47n49oGWdeF7lLf>X6$t509)!W@IsuEfuYm< zb!GN}2vAe~V5jQ`ONkOuaC@EsCTJ;9`l-|PLuV-H3<6Nl60}hPWTWecZn&kL1}N4p z;9y{YhDAIJX4HWDy2OWnH(Tq0QkE=^*Rr4kW*K^Urh@WTFH3{1*uWLS48Pxm!YMmfO2e7M=- zUx}q<0ZXX~s9z6auy=cKSo4<%b_+EB`d=cPeF&V+55ImKAJ=^dT!hERHJ|toX2BUS z{{)7Cyiv-5IJ)C{6)2Jfx{q~pcKWe^CgqUpm#qI8Zph^Y2evCoe|FY>=q+bC&JHSe zK?|F^&vll*fh=D*4!IZN#RM4!hE6tUA#vOtGNj`U-i~|R9XzCy#nF8pbbk`amtmYKhslg&3(9W14pw7V1 z>jzt7cARa=YEFR{>Fo>*$KAjqNZ@m%pIb6AfX-k3!@z*DoC77KATEOB?>mIu1G1ED z0?4+RRUjvbK*Qxl7no}R4hA>Kn3fy(BG(rMRUl`9M@^2q*?4tbF0JNeB-81l%2?_6)pd&yaOfU%v{{SX<{T7I|_3Hbfo3ZskiA#3`i}5$- zZp-ExbB=!{qP>0+%;#Uc0FSzTIPPN3@ej0e|5ya*Xrf#H4YL?u{PBVy zN??@q$WA=Y2uf`WL8;C9U@52Zfn6YGJJWGSmwDU*u=5-?b;I3@HFI_Q!2US}P*6h&w z*C6191=OZv*5;+}|C_(ifby}~46#oDaeg_r>Z?P-;I6G2a8fe?CI8N4J{=G?TVMkGgs10ZR=>TtQ1T44TjXZ+`Fxdcr~X zd9>4y_QRD=1uGZnz7A0hs>^#Z4mX+rSDpq|E&x%?3_9o@tQh%FpJcdVOORr0VF`*v zNPPy{Fn_b#ouk)V08~@C^K?4%fZA0r_Lea)^ty`#^m>cD*jNUh$Z(hF^#;wjI7@)` zCOa#1yQ_3Mt8}|-bUJHvyX$m1>-4%C1iWZ2V_@iZH|h1Z=yW#uUvBflNSJ}a_>yI? zO_@-)yG6IRMK{ZYPL_#I*1&n$a$dtLKx_-a73;-2Ff+i z;u>_7_;EH+&MD!};t6}9*#R2ZM!rNG5}!47i1dlk)#&~RjYVi_-)Y6j(Cer1;vi_n zt)IY)pWUE4jj%hQ+m!=iKlIFz6^tb|D_BZ(!$6nsf)6!$amx*sCN?-@sV@$(Fl6b3 zyGU3^e^%a!ba`r-UcZJW3c*Cp78FUt=~#QyWLrW zJ6(BtWeluuz;9NV&1)SG+L?72v~BNjz>96|fB$#0cl&}aUhj-&iSA|TX#G|q z#xKv%dZ2`*o2!$f`4CI<0T$@~EJSzkO!viZrq%Z5MPPTxPR2THtxyCYb_jK4XDqZP>EfBygP_Wgsk zK+blB1-GLUs6hS`AJ-`X>Q_N*fux5DME=IsJ}8A9RNPt0fvwQ^UuXkOGXD!Ly3f6s z{_p>PjD`Rt=DHm@AQppT1H7Iou-6e*xp(_=1iZ*B1i6y~GHC?MJWc z{{YY)xeV^5oC2V8A71Ev1qI}XZcm;aJWDwRT2IFDyQ1!5gM=4DF+Be?z5%WCgk~a) zBZhu(^aACO@Ja$_rK*H8v%U01-1roW&ZBGL;M>+J>U4tSAU#K6$q3SvXgx%ywu z(c22P|G_Fwfq)ltR6$uop!xLw=6W6m{+3oyVc84XZ1lnqXjplwqx5(_|12QiPi{$UOHU#{}MT;WAGC&&{ZQK%0fCS_QFO{fK%AkphD^5Rhi z%rPRUDqX-TgTX3!y2CZP4|V(NC?9P8@xMeYFbHZ~2w0IGSdl=lzrl;i5aSfP-3|Vi zo1mJQ0anZiQQTZ_!%z|qHKqnE^IVycp*!BD`3Q&cx7OPwT4`yB^_lJ#|4lYPRri2Z z?^I@FaBDuoWBs}GVHOu8^}R4DVPI%J{l6QW7Iv;^<`($B^$IAPZUv>t)&u;mCqT`D z-aH0|Dn-j0_ndB`^HJ8aQ@<)FCyXKt&Ox{4#+Sj{&`o1_7YK!KoiX8~8bzkMKZ>Ik^8q zyWfDWk`Gkq_EhN<==5MgTbtSK$b;_R#y2iJNIRbXG}Q7iK;|TB1&+1u0qqhhQOjZo z%VG%2C|Lz6>Gotf1iWzi2`WEiKnDh%4|rjc$H4HKz5D!&+a;heG4SS~-qt;zK}8Q} zTToaQLk5Eo1H*sOHw!ogS`U=^bstk@VE8X@%fL{@!Qa{rI^_PvJ9cmsw;m{|3V`Sa z8x-(@A&!Zmw-;nw^AVojK&G^A#^!@eX{`rJziOYl__M@2>pw(2NE>MX56I4d7wcp| zF(Clin4}K%OxFL5mQ|br-REDNFJxed2Q3}|Z47;}tP-4H4ma$D`1v~6%-{e2gZ7Cp z0aY5le>O12gSL=XLzRN-pRE5GWr+0B{3Zfx7o)daptJN%>$ej2u>Ya~3pn8kB1(mk zq0{w4^Kp${*ALz21A1Mb1iWZ{35wq*tp`f@x;a`;mT+{3zOW8tsf+7%ofGgvd^afQ zS$cgz*WQ9UvO7TI(Vf0ez=PBL+k8addu1K~4@n;c4M~H{1bO2AoB#iNedoML|MLGo zl4TMQ%eq5fbTefCieUZ$J>w1P*n|a~0=@1MNC^|E;{vJA&LaHZ_y)AY2AXRy>a$Xg zE;kp@nRcM%)V;3Y+jw98`2WBAMzie(SzZCqRwq!8o4@@Y0|Uc;P$TC>JSS|L<+p`Trj@#Lt+qLzY({;043sKmWU# z;YB4#HsFPKFJuFl>y6%C&_Q$oFJ`X!^S`K41yS9KfcfFVq3rdwN z-L6-fPeHpgpqTg9cJM-9dxFpx8O?dInUy zzp&o{+Kqf5;BLIci_M@l^d~^KfiZTvD|9=u^!l#obXVzi73g&5c`-E;q*4dkaSQlg zssY-_kuS^0(CxaSw_Kq00Ju(p)*{a{85qJ|6oT4dt{0k*u(Td15$i1%0UdF71}qiE z3=Wvr9H5Fe6I4(88?@do;Rt@QCX<2THS3Ge0#F-JqSM_3JT%aHpp^B6AqN9Pc=w4H zo}kw5i5Eei{{Md=yBM^oYd6SK{M%e*z8z%R1!lY4;NRw|@a-TAzsrTr&?7Ck`CC96 zZa}AHo)37j9MsHXfHY2+K*uUT(r%~g1^)Jj3=9nW!0GnjB1pPD4^6kAx)7RfKZHTk zt?my{x&`g-1|=$Jy7f2!I{D-RWG{HYi` znqphzKzkD*`?}F@8GbQ654P$1nCl<50Hht?ccY+5_XH&AB5G>nbZc%2j-KulFL=#B zTR@J0%BXH$9ywlt){`aDEw@WKS}v8cY+!uNWOSgz6?6_xw_rf{{~!)fs(5+#_kXle zNobYMQi7Dy!O0!epKW~O!h~FZb-RLY9L{3MXqYwwbjUzTj*K}X5FsBd6o=>F0D zske0xXtnEJ5DD5-2I6cz09sJ{qBV+%p||x0h@Ig9ZZg;W|NlP&wEiRD#iD2?hUOy@ zP@}`bU)%#3SPI(xtNkI10X*0#eJeQZg;)b41C$>W(Aj$7@BjZVHZ?FZfK*A}>fCze z@BjZRy)ZGf=cAw^7a*nC{_rZru%s;z(!D<Z3Q_pAR`9s;6EV8zc|dtz|h?b@_BD7NTm6QM8J!_ zG*B<*Pkfy5+2|MBiZDVGT%UpJ{%$tVIkF6@|NsB5FY)yN^?-tM85o*>aFs}Pvvr?C z$a)04umH>Oma0N!vKYG|Iz0kj$mD@$PY}vWH^;$_+5kr&q`kuW|9@+F^A8>V_Vu8v zgts;9P-GSOuhJT!$SSZSXDO#Z?BN}AAk+m2#jp%4xBxAX9ZY8283Dyp{_tEmX#1W2(RunPQFU=?6fWEGHB zWED_SWEId%gR~6*9$fu6nU{ElYs%G1x398sK&dM1X7=ZqF&%d2||6=|BMNU`X1%HVnnY6 z+JS)XbnN!k0Ts!uCrh}y8GA!d1pOE2bbXWYLY7yc*Z0JW?V$YxzHdOMx^@fpx}E@C zJAHtE+kt@pK?2>rIxuk#RB`yYb~m_L5}t>pc!7tH2IyXFM;)Y*E_iwctu5jB#4qS5 zfguY{U)`>t`^S3y3|bGA2nM{^l?Y0(Je_VPaUk_CqB2nU5M$vaD11XXx|up16~Jo< zR6v0amxY<%>Bs{WhqR|&Bf_`w4QPJ>qCFLc2xIh~;S5<`SkKTa1H^f;G!I;THrs-D z|4U84HO9^cSzdT=z$b@+A!7oldpM(rkpZj=Iu!as6Repd1FXFD!N33iL9GAa&IGuX z18rTk9w-eA$kNGTe6ijTmPuGuL4y&ciWv(!xdkADJuePQF)(CY*~lZ%3m)(Zc=2`~ zBSUBF9Z;|S1ZYU*#sA0u|L+9Pr!aP#f@p}{u75zS@BgBpjse;*9XRG=a}Y5P3O|7t zVWQyKkk$hw^4-21ttU&_x=(apc+K1$%G1fw>%r1`vV^Hq5FC9r=a6P=!ST`jh6A(& z$C;zsTPBS^@4#pNX9o_xkpILV!E$uMVs3%%g9l&8r}0OfNaN2t2$F=$fY!)==8rqU zug_iP*7%cwiGiV*_25J1*IbQ1|Ns9lU(CdOGCZ*R^b0f4R9!WTrG1H9cRfp3cQH%% z>29;IUN;W#0N;ygcmDsk{$Bb#E*>%R2}v~I@)hJh(BdGDZf6nZ|Ju$x2Y)bGA1@Yc z1g)H~FSiTt_2zl82sCvLn%w5;bp6xq%+u*C(ChjqApCzZ4`>kag%ZdOz8vv!o!&CN zj{iHI!K18)SQs*7K(p9P-r#Tnh3Eeag;IF?zWI#=))_d+dY=c~t~}j8x{bB}9sJMK zS$n6uR-pAif6E)t3|ufvw>O9Osm@S=gFl(9&+|7kF)}b{U)%Zr|9^YXY1Rj|4_O~C z=7Lz??8V5?%VO0X%+cv8pnVM_f9T>1?Gwz0I(^?5pR^2p!|!~e+f~5&1i$ma?$ZIC zt^%O@-p|H>4nX1Q2CX^)HLSZ`d9;}i{$L9JUncb^vR3oObiU5 zIrSH>XEQQ%pVB@74v^xqZeNjJlf7Vfb9VZQ^zyKQ91o&405OHe8@BY@nEmW6{0|i>cpC;COO_$J4nN;Qbk{9K9^)-p$_02(r?h zrQ1Bb)1aFlA_-a^sKXCi9vI(g0GbR1uMz{L6bOc-7ku{xzc?Mh2wGy*$=H3cGZ1;* z8FYL$>wm^P>R_OXa8255^8G|Q32_~M8rr~qZ@KJh|ImVu$u zm7~}1Kct-s%JUv9t=~$-jZcEk3+3qbj5zMXxBK`k|oPG*#}3oeo1Q`X?~ z90fp=Nu@kl;7)wiqu;Ot9T@{(%zDTOIWZD^pyNT5z9lGzA?ZCBv{lTPBfR^E_RsDx z4sEf6|CtW{VzRzo9N2xx`1ZvY;7Sivn^~XYcfQfhW__RE>3-{h5*3imq8tl31p@wy zGA!g2z&3pu+)&QhMW@pz}mt^LZBs@CE&w6q3*qW z+)V^@-3eHg8+c_~5lc7QYo_jF&Br8;F@Q1!sLf^ly>uH!q5{u*K-{NLhSYw-w_f@U zs8}h6Ee@jjdTBrSdg&Krt(VT}gsqo;2^z8Lt`+F^X91Uv&?2$dUjS4pvI&D`VnE3{ zJc|LEvO(np&K1=EO9i@p-@LeI4{azNn#4%bs_IbC^qwo;Rn;%LecynFCtketgjy0i z36ds3`51=5`B}jDWH2<5YTpYt{%>8%!|#5x^)`RYRM0lU-wH+fy?+0D1O79gX1;8F zu$;yET5&ADhOEFoPJ!;z{2HnX`#1%fA3orhXW$nQYd)^PuW>q!zvLA7e9HT$()e#5 zN#lPF+H%7$$iOcUCeVCL0h_#_gFy2E1?!)sJFS10$ZCJ!muG0OVbk9k10KW@VdHnX z=-wgVVEw!F1!$B2lmH?9g}`I3e;EFk{t1Mvc?C71oIx%>A_1Dt0~Zuf4}<(0%F}wO zL;~FHEfoMS7~$*W01ZF9Vl4fDI-CaTUuXT#2t-cbSnDHD`>j-)rmIJhq6mkK1 z+63$0C3&5tJmArRZzbl(A(`yB8+iFB?%W3|AHuuO9b;g4u?n41WdkpaqBl|Qql)L|yR-DXTyMh2(!%0b|fkS03X_p!K=h-=WRtS{{D) zkFDQIgtdRP9w=e$=3(#TaB4mPYDK?~hXo6`Ji7^6VGL?IAXXNaz*iPC61lSY&~Nz4 zVh-ra;yhc71PUo%>QKTT+k9XtM>kuy2TQN(8|HHXFRn@d{vQA>;$Ku2g2ww;@<|IgrDI9x{UFK zVBa6~sc}$?1sbqW3gX^v1l>#2`eO?c*B_s^CUX7pH>$WVfmHYD6YD;Oa-{kMXMX$G zS^B0s7V8SA?rIio>x2K9ur)7Q|CcyJMiR=Po$+s0j11u~3hhC`-RZ{C4eFM{=H_}? zc67RNg#9-Ib(M`@>;aD(g4!S`BQ=nG2HIZk`{qT29kjrG(}N>DJ0SZHXMG9vANXP{ zY#!q zggNd6DP5hw=Ph(Q$#go(bUP`4hbT2V9W}b0bUGb%x}6L<9SypjOgbG+x}7XK9WA<@ zY&sonx}6+49UZ!zTsj?Hx}7{a9X-08d^#O{x)1UTfKDQG4B!`VO5hiCOaOH;Ao)ET z5ubtBN+(cm?=I!&^=Ij3>tyeBV+nX647xYL4c0ab04=wA@b~}!Za0}ucbRTC1<<6g zn?|R*Mz@=U72lpdH>2)*KK8RtGwQ3B=(KKLDEE1s%_} z0<>PP4|Ismu{O}=ONJL!zyALRj|2Difo=sp=K6=_g$Tiuy4^tY|DqWT4WJAg z@L%)hWYAK5)gTa7-A%lT|i6M*Ozv!6-oC2L7_1(ux*gB*Oxnu4%44}@> z;WLo)RE{~apk?-BjxvzbQ9z{t_;i$GjwTGp9bG`_;kY9>;T?1IVL0vxYAiAwcT50D z9CJ)zIPO>iVjg#_08z&rYZ#6sTY`Oc#dZjV5qip!1F(QlP~Y z496Qmr#pfKjyDEC6&-5~0kMuZf^IN@NP!No1hI}a=0K!sKor;+4N%sx#ugCkc;gfh z1(uotWgTmr17aO-Tmz!OQX8PGV~txttmBPGKonT&1eA5G5xm0Xc;g+Y!12ZhP}Z?V z(Akv?#~Z&u1&%lVfU=G?f>+-jZ{z{3#|9fH0A(F(6alf0H>!Xru#^Urb*xbb#5&#x zI(Y`<(c_H{AOQvjhGUJOr40r~!9dB#_ zQDCVKD69M6vBn+{`*`CV5CxW80A(F(TmoVpZ`=Z+z*0M)tYeLPK&<19XFwDK0|P7@ zg>`?-040kohF&+3<7}YLcffHs77%^hjRQjQKqzos_hNQGBSQu#-g?_WY36tvXgUp~ z0F=GzK$4)Pd%bNSM;&hiIT9wB*bmB=D&5E8V3xzjs|^t4Q{x*@DnShSqF&khvvY3; zXnxC;qc@(XbM6Gt&cg5mpyN6~8)-^9xdo21%k*)BdRc;yb<)8vUgm&?ad=)cA7f?! zi)A!y;S>md5eS;91FfZo%%6eWzpoGEM2X(kDgXZe&teG363JrvFZy8trvU%<1I8yi zTYLWf|KEC`Bw{z)8cu=kA88YM3mJEGY~d8J{?6}vIN<-5UXadS*C!c0TQ~)>xB_0> zKL7ha*jCWGK!{BNFRo>STKLUJ6s*tJ?Cpkl3G5k&O2~X(@Qd}?V3%WGOtT#{tO*`= z1eJp@3@Psk?CQi>i%ZU!p=S4(Y}E!%Ezs~EoUpahF{c-sX_v$@wV=Y`ZC(9A)=i$|fq z|0DSnn&6K!ChX-DKos~8|4u-}7mo84K;v6KJ8NHb$8uQzE~)P3?sjIeK2gfj&Hg&O zJD#QcL$|p0N9|h&|1ll>&D0tD#`<%2EJwMF_Q8O_pcm=Mj11l0EX_xFw7I+45B_B8 zW$Acr((TTneF!wO|DoKm+x1PaNn`ghheU zl^&=aoW=0Mu9gveo>12RjBO-_hg!EWC_Fxt8vh6F%>tc|%>Z_~`3vh8|NnQhHy;te z>GbXs;2ysAx$iH#{aLj6K|T3H2VclDAL?}F081g?hTZA<#?qCe+`gL~GY$WSzY{4xnXMCteo)|Np<+A7ZpNKe7^#$wu9-Z~mM2 zvN(Y5`2KJF!s7;)RSZH1-;*!NU%r-ESasEkD6MZGRSUXIl)?*#`Hrr9e8}WOjkJs#D(8 z*8bkxXp{g{vOq8-zY(Yppy~8DxX1S*Qx4RJ zR(K&8^!q<#Ln$Z=mvCoUguS@o3(hIHdYj<&J|I2dJ*rS`EMYGe!nA?c%RyWQAw#?0 zz|=!dK{(C^)y5I_A`4R+D7?c#YZZQW`#W?q{tw{k{?PiZLI z`eOknx*3r0ma9bSZ)075(fzX*bdxb?hX{KBWDQt%xXf2TGWjZ*{wKSi19+MzoM0*SZm8vF=r%dgeHglWu!KqbP_OTsz$})4u>Yb*KsT#_RUcKGu2z#OjWP zwZgw0W-JN%Z{FMb;rsvp85Ns31u_^oK$kPkI}F+=B+#%IB*9S1Vtn$ocyBL=(;LVL zp3jHfuXidCqC23s7i9R0Em{l=Ew?KJ|Cif9B>tCMWHca5b^)6#f^4!7++X0X3#DUff$={ z1z~CtIi~hPOyyu;C<*L!4+zM3fF9D)n8p$lpC%fhu$CwZ{9mpBaqItbnT#(8=N>)) z3IvpNLO2lase?>q<8N6Fy3J!RI75{PWie)OY~d7uru<#%po11TjK68SvmE@v)Y)qA z5!7erZ*gK|V3^SDDq;!Fi2Th)phc9epbXov13Z*l!ujnmO9{(n(6*M_y}cG6|Nnn+ z=iUGRpxr}@L9096S$bu*f^slKGH_=?9-lxri^R;JfES0qK$;L$3=9kndwo9s|Ibir z)UY??)BpbrB^kY~AVxs9JIj9)W=MF1WteP%XY{T6L7^e>Iv%P6qJAgO7ES?vmxBTS zw+4Lr|G&2tWNbiKh62d9kir5|PLzSQ%e+gogF7E|bXF{noAp*u z81gsm2Q_7SL80Co_}}_eF;_-FGq=DCcLhd<=DnbD4su-8 zvJ4Eb6&X&-w9Iy>$Ubw_E?0u!lq14$XBA3|+1qrK}xp zKCiVc+b(5CcNt~ zQa=t_t%4_SAnhM$d$;vliD}r2GZG98VJ)C-u8`)K45-n?!q8mr!BE2YLP{M}=dwV= zUi@7EYCJ-Dkm?sY92Rv5wi1sVPLTv3h*H(2+&!s0XlbT~(^f6fa(P=Vz7!P>n5bf_jz z^8tZ?7geAB|A!RWnA@JQrDPQ6fzlt$zu+Ve@z0CdD#U~z#J^yDkkA14f3p5(d`I}V z@r?-wa(fYJzsW+6JU)Te1N^O~j0_AGt{nU=pv&VjB-j`j0(x7o{QUnv;Dt^FDB^i~ zThD-+hM>B;1!4jVLA4@C@|f#uhTcF% zc>Alj^~Cr8|FuuS>|s6#W4(yF1*&O4nzCX7UgVU4?3ZXgP@>u!zzDw98Pdf@y2|Ip$IG}sC8 zPhj_n7v~=S|NolF_&_&kl>lfSVKFGkUR-BjU;qamQjUp(teIYD2`*IO15Tjy`#(bu zQNDn7w_!WZvv(h8POY={4YVLc+T#CTv;{OT>G}aO?gmbbu5SWf98d<$^1iWd1KoX5 zBGB!@W9=bO!qM#@&|UE7HBWabN9(sz)_n|Xz=s8Z${MKI;LMI%C%`7iA?{5?xVP~Q zXjT(@EdVO@`CCETVjAk)7)td(DI$v@LkHB#irCC4@FK4sG+NQ&=Jq1xFL?OG`dA6e zF*i2`kos<0P#kp2f+{NhmcI-P3>g8;Aoa)Gd>D_nmi+(!-=L9I;CO4r|Ns9T8bB=2 zHq{FtG1mr#CRTytt{oe|yq*UjY1au3bs)hh5Nbw4J%~34LM?az<}HCxD-M8FuK7?4 zQnH}{Y|54iU{iK{0Q2?)fNeMevEc;7hBFOdeHR{psVf`6X5LT$Q+EWw+8+dfc~2lV zya3to|8l_p>#YY$IJ-~0I1Nowy}ck0cDi|h(%CdN1_n@lSz?`Kk;MS=KUfRs_)}Nd zsjaOCN`$&kyjTrdAPq~7uY-+GLKkqo_5g)xiDniD#DHUNu8d$qx=(b1x8kWCXWRjr zP=_o_c`cd6lEna306HMzIAhOVPJ!1<#wR=dzyljB4Rt;YrP9zi-LaZeAmah(IK)}C zp!_7#;pX!q{{;g>2Y4C62K18!V8=j)b$|R1UVPi>#4h~)U@fxlP!8kU-M+9ce(R+Yt8TW|lO;O;O9cYE z&;1V&=)Tc&X&c&=OuY zm`=<_TQ`l+hF5@y9U$TW^t6g&t`|V- zzd`*gP+Pv&wILwv#h&l~|AQ8;r|^NgSEXv8hUNdQpmHcUtc2%9v?AC?-5*|?yl{cD zHM;#Bpo+Q~!~O?ofCs3A{+CL0pZ{Mf^1t*%aM+7OJPZuIz6~#SJw-dL43zl54fIfB za9x5ptQ(S^vi@gCRKwe=&2LI@hes&~C_G|$$PWfHNHA>u1_=hx{g*8VN)o29N#I`oBcB`Z2!BxzI*cb&q~$;fPq(*2P&mke60en;t34P>1jDl!{+muX!7uP%6x6PI z&6C9t6#k+J>?fZ8r81z~WN!Q~mH1yO5*7}w&$@rK{x1=={#+)g{kfOLIt(;}|0fUJ z3;_*Cn8%Bc8V4ESHhlEERwF7RS6SPV4U5%9l^ zBV$nwyTFT;U@=g}4ESHhld%>gHWe%eIteJ?f0;lAQ#HH5i^gZ5ipQh3`3D07L%{zs zkqkDF(k!r2(Cuge|H~vY_I_m(co7B`16`FC@V`tZ!=;v8;Dr-d40KOg!2dFZj9nlx zJ+N2=BiKBZjN}G(ffrI>u>y#gMuvYKyTA)JnAIH+VV#T)kka>0K|Wjn5i`iRSI;i+ z;x<@p2Sm&yBMoHDaj@70h?qr&DoAYeQ;=^An(Y}%gyQ3lIoB|5U_8dm2u?IC3}6uk zqXVEYh6+JaP2V%?P@u%hjZp zr70ljh0v-0|9i_pM~Fk444?`6|7I_;PD5wtK?{dnRX|f{t{R>03capxKuhlbgMcVx z3FQ;?C6pgP+f092ftFCd_+R=YDBy*THEaoG76Wwsq`OA9D+eoR^<8JUP8MUpixd0| z44v)m|Kr3HebvnaMI^8{>T?6oxT$Vz>i`W~WRK{x^HEQ;dnhxwnj^`3Q^k{nB^cwI8~{3ETKm zC&Yx?-R+>YjNK=?w}Vy)XrDte1=8S^?EaZH;lJ4nwthwoqd;0Z!3IDhyW72>+W>SJ zb3vyA%W-$`5=!gx0{)hH44|bjy>SYiu5Y@TLB|?E)^EHB{$I=z@WSWhf6y6WIM#1~ z`dqN_o#W1+$u)*#4QG}>_qi7lAX^~UfS&7gebLR<>Ba(DS)3*C->ld5LBNaYTnr4o?VuEXyd883 z8^kWq#pWQppdA>H&L0!H&AX3*_MBbp^nGD`+xX-M{^R`CA4*?XhQ26$3`zz54y`9k zR6#X2N4LL27DG4Ve}Qgy2kc1>eEK>{W&jnY@Xk4;e#;`NeI2LJ8T+C2b_shhWW=+Z z7qpJp7&dNTS;tdm&o9r=?Z(n81M15%bhCgieNlpzUIG6vcDu1aG#zJwM6inlD0CUz zt?PJ-j`zkXKvpUXB6NUOAcK}sqArMo9MKAO3b-qee3&$v2cf$V;9d^xe$)5{bP)!; z(fFs^l>@ZDwX-$j`~Ux)TMNGb|NnyZ4g*8ijTe2l7#KQQtG|QhAWFHw(+w|X-DhCP zVtg?fyg&uCv|6m!BcQW4<@^8tttU%_10liln(KHgNC?!L?sh9Mz8!9SvU6_9_y7Nm z|92Z$f8cM?V`N}Rn*h4DJWjx|vo!%^d2bHLl>eo&@P*k53=HA_!Ic82<-*?rT3vjM zonhycEt~?~&K}@{Lwj3mzW@Ip_`lfV|5lJO8FLWx4tJJ;mOm)I zXmO58_XTTjj?%!4J>cmKkTi65Z#jmhr65gnK|#}eM54i-p(N~oE66k5;6Mv+Jy2o~ z>gHW&KEmRX`S7a5q?I_vsgUkN*G9xUq#(ApFJWAW%aQv>|K5 zF?NR6Z2v{SfF{Dty1`*!U0lEqKBA=?9A*%~EYOU1V8#cCa}mdi{aE_@Kg1!;M`S>U z+Vu8z7JYj_^10Y z_{^_EYLIq0yn_mPE&5(Z_AG|x2R{O`7y`q4 zTS1n0p9=_kG57ob|GjkqoqIt?>>&*|fW}5ZI}J+2dRsyE2lTf70A0BZn$|dZ9DIr- z6I3}UheEvb;{0{Aefy9x!(3HJpn}@nknj|#LF(UO-46z82Kq3Rgo4LH%841fp2QCt zEd*5?C8h!3u@e8B7kl}@d!E4)0g$6bLC(cK?1DMGjbqFN)Xsom(0ZBfkDz^*kZoJ2 ziy2%0mvVp(PzB8sK(?rrONYO>!2#N;1!``wL3X2UV1&%zK#r2JU;(dug4jTc`JioK z<#ORKPJqpaZ3T<(WjWF5#<77Byfz48#Z_jQ72y50JXsQGBgd@=N)+*&Lz6eCYpy>6j=TNEI-KG69? zpu13Mc0Q6C=1c}3v;gP>b*o6qw%|NmFU(*5JLdUu=% zXwluO@6WqWUwnD-mG!AI;T@o5cD*)|+6S#~l(B+lm0{I5q?y(0&lm{a*A5z>?sR?8 zdZ07_Tu9wPip)Ep$b1lR-1PxCGCu@^&LZUi9kb%f;n11-Apq1?e6fcWbehJC9kzv_ zYv^2GbeFyXt<7O8dGE|CVW_-5(md(G5+uJv{acW_|9i;v-;8iEHbB?exi zjJZG<=Wzz01>vqQI@vnwL_h{~#t9TLb$>X@B0bu80eL4WD60x6$bqyqk>pU#XKaaf@s2jD*r%V_`q|I|JX>)!tV|2xr-!&+$yIiw zV~*wNKHgdSr~8_)uRwPx#|Qr7eBGsgtbdf=wEk3jwflJYHAuz;HQFKRvj91LDq!oc zgVw8m>@0oK?aFcR0aHL0L#OK-NMRNLStr{4qqFu!>;F;}a6xtjsUW)oD#&gG9Cy6| zF38mV85xikkAu(R`fv7P^FGKhh(vcBi}np@pY7mpCTtzAZr3-=$B8+H>j`L!sU#aT zxvcd=Do7y3!5PrOJ8Z-rq!R}oPYQ(TvHD;72Q-Ki@M76ch~tUgWdYqi03KgzegmDK z0MBDVgA;U)C#aTZVE~6Go?8C8FS4&d^F^*4&2M-hv4j#u#GBa+Hxq7NFN?#$2h7Mr z3ZTl1cq0uUMuN|~hy@*x+3m{{-t8=4eUQHi)aUOG6VN``?F%}f&;3OAq3;(ueL-?< z>p+8$He8@(FQD<5=Kufr+d+FuE$c*zm4d>%&%Lnx0c!OMwEizCYOWRm)kBc#PP<#| zwPx%8(pQ~z0^r(*ubV9%RBwTA-{WEEJ{BJreGD|=#>3Ekt@UJyXtyg5^WngNZZ`qu zLjf-?2Egmb&N_i2{%*EoEEW)5pc$s_V<0Z{EprJ_BRK5E_J9BX z$AK^R1Bo7kiY|nUc83XcAL{ny`F_FrAU}A2On5IO2%ABtxPXGN7qk+sPNY~09E9J# zfr5~y^?yk!IHX`f_X%szaXSM9PnbcKb}wn=|l=O4ro{%`vD89 zJwK4b3KU|9@Ip#2;Cm`-1+))Z|KNB3Vg0$(y_dz((oKNB3ABEy(+v{clHFo~Sq$Ch zjwgJfcrOcgK+uZ{KRiJMN|#7M1WQiWN<1r~g~X&RzD$5xnw zE(`{bMlyp2BO%Mftc^=zx_LnZs@--d`zO^wdHy17WDu+Z>o)l?@R4tz2Iqgc>hBN} zt*uK};TR=@)ISIG;r&sZ?zQM-=tg$0b%`=)Jj@()(!;eA|Nn#L*I*?msNvWB&)T^3 z0S;?HNehf2>=>tyUc2ri|%aXJs=zOe8t#urO&{{P=y3c4n_`$y}y z5@XPuc)U8TX%eLn2Pthb=~agfoV1Oe(_fZQX3N53fOI@t67OF`43 zpxrnTNG5>NGvkYEH$cr}mTnK2-HiVOB*61ZF!Q&729R*LPxL=@A|LF=uopkxAY2Gu z&maRHR02&UfhM&WU!+5=JMlvI{{R1Adq92xVX%6I|D`hEbpZ%1CU7lW50SM%+%E=` z1%(u1eZ~2E$Vx%RgTfo^7|7{a;D!w2i|f}R-aqkTF1ikg`P*O$Am$@9zo>bDY6aN+ z5dR`nWih@eftm2a3q=R0z5pkvV9;1tEl2ka{`IvypmgBv5DrQLko{D$Ad9mY!o#{x zznJ+NoT0*AEPzy9;C2Bl5aH%A<26qn6lJIXmx_SQeBll=(GSB!c>G_(Oz#PAP}4hT zt?^-Kdf)I1k>014z}cYi2YWXKWF9;{ffGB#r>Kd2?JGo5g2f+LzX~q>=!rcW)dWa< zKD!Eua8P>Z0L`6y8@T)iCw>WdD$ZhjVGh&&;w-ujkoo^J?jY*V<~La9FQNUR zH=teDFF*spouv=D9ay@33@lntmau}tfCVH68mwmMc3^3)G2me+73}sguxUM6!fAc3 zg!P4hx z9cTc$b+Jyxqm!xIQ=wZBw1}G#tiH>Yql3x#692XX%|HJ0yPkUO#lOv!qgycGe-MxH zC9o2xgkiVun{LML0G4hSE*|EK%_mrzt1K8wnL&&P;+;-Btxf`^H9Mv?g9esLL3heS z-PX<4UBSZq4|G#XcQ_CC#qRUnhd`R@Ef}&G_+1YLyx4x`7iho>cEu>Jd!Gv^9LHA@bWHG$>;egz|0j2j|SMWF${Jhn!zewk;?!5`h8#1uu z2U6ed%F)fx{NPU~V{ZTpXvqM>2mXUh-3LK~!XWv;;O@Im|xWFS2*6Yp@9Ppyq1vGy5r}+p^rv==H;PeSwuG9LhR1}N;*IIBV z)L()*;p$PWP6z`XIp)q0@IurD6bw9_*4>9eCp#WOo=*wu{)n*VI2*`~Ajg7tAe4Y7 zG2B7JO~=3^XU7>q@?iD5px$EYJ_s5)fMiKf`Pd!H5#Ie1bOaFt1N6FIqyqw&7#NPZ z3ox|aE>Q_X4O~#|+r!Dg5ElI3{6(@e*u`<($K#{HF#|Cla(+?wLFhc=aYxXMF2iw0 z9?+`bV~zswgI*xYLGcNS?~7sG9NkRK5C3$3Xnw%VeX#l2pH8OcgYf8Q>~&*lKKcIx z|3Qvk$N#MdN`=C*7+=U=goW?dv;Y5t{SRs%hJw1Qt(QvVx(|i-RxoyPIJBHB{i%Jt z`&@iL(2HHH3=CkU#s|931q8iV1>=KV1X_;;4%y({2KzV#I(`4}yWR*3H~wb)Kh4sZ zzXddD&A*+QfBS)e7Z=trFfjk0&Qjcbgavec+%wR07O2Yw`czUho@F>Du5^M?$|%gr$B2H9{j<)8SLtLn9Ek50WV;9 zz|0FuNS(}Z)4;(4im$By8IrZ|_CJ>US&zGd*48tCt?%XpwGtox>EvrZ$O2BbzC62( z_JQs)h0e_#cl`j$nf$I7yUzu^0IhMr+|3Qo4j}tM`H!RfX6v_-nC@e}0kHTD@3z)H z)cpKUKv=hUuRllQBhXz#L4jEe%!j&92fP4pnB#7K$jp7B*PW%48zmHlKuySt=U`#5 z{4_WeLCG3a|96*igyYKWy70_C39kLcK~QGj3Gx-Bym4n~=in~o=`{aeD$?uE0a|hU zLfHYFe?SWZW04NbC*D3KxP28k?E@YC@6HkSzf>UL#U^{uvLl&ZKaT&U63piVUo5l- zxj+Kq0twLIH>5w>{6+viUHc~(bkr$F_s?F}51_;P1G?p#AOGn#ZhQs`U1&tVC|?3f zsvmk?zce4=2@DA9b>;}@WijkN4_X1K1zM8A4+(f@mQH@ufDg`Md=YUL7VvtfK;s(F z`=ru1Ak(1e`&m%j2Xj$V)x_?4kS7t*Sgb=$Z<&x2uala8{4eDPr@aZV!sSqSw>9p>rv}=n zh&Sp>M^HLM~8c``coaO>?7anSJ*+gU0CUd&s{z~J6|goXKo_3xsWP!-Uag-~JLhRx6Z zgm?3G|2+6o9+HH=9b_zF1r<|=d)+v~177S{3UVcf_3=`+Mn2HWk$6N9K=MoX!Qf8U zA7R}Rpu&o|`$M-dq`-ps_23Kn&d@(A7)xb(ojJk+USvScJ66ip$PF^DJM>TYhi+dE z>vR0glR)ixS03hr*2l`&K?n47y7Ghv^;UC)2fmoU095Y%>HeU7F0j`dl$$`8$#g7N&DpwpxIn!%Nm zGfO8QqKpJ*Jy0QOd;*q)IgcV`J#c*iUQc0N$58|t3GC&u@c4c~`9wEcryob_fl|?c zz%0fWUyj4Hd+q-J|Fv)+C{5jm3#y*||G$&1o9&pJ07GXTXcZR=cu*7EP=dq^goO0B zB9ZHVEW6iAVduI+i{<8jpaQd$2f3-QI>CcKb3xzIeKnfuY-9p!tY^^}%xc zPIm#2sYTM={Kl8kIz=4O&QJm!W8HlorO(c?zTvvV~jr zA#9*t_#tHM`8cCMJ2%q#SIBK_P%oj^k)`<*sGTj)>jY|NbG4o0=QheKfwggM6DNxD}BCYK$>7+ZOES7hnVx4(-06weY>I zAO8OTp8@JA1iUb=2c1B`)9dlS@#jBA1_u6iO-2TWhCQtB|Nj5aRVo6xev7{uv_f0el(eHj_X9oAwB8vfXb0%nS zK1jv?tulYXtG*cjZw1+ixbC+Vqzg1S(ELN7NZ6sb7koG9|E(bEh26?u|9g8o{({eG z`3pa%@58NT^MP6;5eJcAx?pvJ^T0t+8Lo|V#BLf zHj6`?0x!~k{r`X5O#?KndE8A0LV?eS?mh=9Xhe*6Xo9H;ArS}(|`s?>wyx5|7AJ>FZwtk&Mwo) zVti4!59V(7-Jl~X1zy-Q|Nak&UWfyafgA{p>Emo52V%q-QSRyX6M@7CXrC^m@`m2H z((NaLsL;FJ1R%F=L!FH|EVOSg%*j)B{r}&6?#15k1Va2cqsSq&^EJU|?;&CV*^{87 z_8=ZD;m+a-d%^h+9A4dsMg^$7(f#o_8zPn<`oXcph_3(SUo85w{$~(4&$Qc(2ecbM z;Dz79zyCpVPi`Cp0%qwRSin?+mJ*$Vu77$l7ql?Lm16~CiOmX@Qr)mD*l{*5is3pu zK{}9kxq@;dX!u+r?8V$=zy3ELK^;{eTlyx{l-Dn7siwcUQ8O9B|d!XH8FC|o&?vw>n1>cJI^C0Z+3 zN~IwlV*)j^X6=RrMZu2$|6haS@!C>MZ-9@QJ%rR$1bc|6^!%a>bh0csSRGcdlp4Z3 z^sU4YGz=^Ocfq^upy@KSOals9ldu;~SlomXv{Z9X$1Yfi#Nl#}MA(Z>OEAL-mwO1L z-;6T{!AE+4OMW&MP?b>f<^O+3u4z8P0x8~*Gfp=sUO@#6B3{uG?4g}7U(DEsBUA;# zUc6b1-xrYhCE)&UH`vKK$Jsm%fexxG;S2aLnu55P0kRbeB-jJGG!Jq#C)g9Hi4)xu ze|Nw zo_mP=-~7e`K3a=<_+uC3^aEa>3p}9nAG=F=I$W=JxSr^86=?w-QSZ73H2udLaDhjl z*Y!X^7Gq#%?S;@ z?Eef3T@K>|FAsyRIKAELdcz|2de(pbDTl)YdSzn4<-@7>AVoaQwQo3jT|o;)LBYcB z?0O?0EQ=wy*L6=o*8l&aB?~wO{+Ax;{_tP4U?Haf#In|JrBa=)XL?=F1b{7l0kZVh z7qEG+O>MU`Fff$Lg#8xj(ZRuHXYkIGXD?7)m4q!OgaFpmFaX%}01z|CgF|yMo5ln(H_iOXQmCco_Mo zxW4#b`U0X-1+-K62k6{$(7=f62j^~Ij^^LYH5HCfU z(FbVIwm(AKyKM;nVyi!EL5l~~x=T6ICUo<`Dw~rftS|0?BJ3FGz;)2Nx#stbrT394 z8*mK=8bpBwE@V6$?S}V1-L9bVVUF<5);FNwaTN(LK49T0kj211^#EwB-W8N>Kqui= zfW}vTwEi!3fTnRsuIOxi@egz)7KjY!1sf8OVX==>;Kluqppf7(J`f+*?fb|0>6=-Ou-S-ATr=)QAbj?UIApdfb_INo~ZA7n75vln!+eP`1AAmAezzaPNP<98MG&rU8F(|RLf;2<&1E^<*nHhLC!J_!ly8r(h_JVYQ zHjFcrDs+RL=4Snwzo+c~|NjlO0u1~uO`wAN+e>NCOp?0>^f*ySa_MGa{_i02V%J8P zi2_SOlh&=@N)@3=;|a(or)I&E28bW<;+q^JL+4gdfPp+{1G>491=1P??SSk)|Dxmd z|NotJ9Nq3boo*~I7chdC`%7dozVL@zwR8!{s?Mz-@3wv`>F?Zn1hhwMD=5r+doTP0 zkFBx4cy|{xQU;0=P|j)a#!#% z*FRh@1gHM}-{}TgYt|VjaNJD6;>U!ds&#$J;h+V@LTK$zWV>a`4|gGee-L^ z(x;I4>2~C}_`>=}F;Do53m^adhYErNqMNa^lEuH*W=H2|c07ysA8oEW+o6rQc$_*)$Rfi`u6^mp$Cg>LuxW3GRMAo26!-AkmH z0m}%#c=huC|88(HKkoVmG*I7qpagV8IA~)iN*^DzQUE;Exb_ve06E0NU|q?<-{cCK z06u>31rzh}fERy0!2I-5_y7O@(DL{NB0o02!FoQq@onR8ov|N4Hy+mVbe8_HH0N&t zt>dyRXW{R=&%nT7A-iTDzd(sDxW@zT>NtYx{CW;X{wW9fx19|9U(V8f;=lQeU!X&O zKo=)|c+DC9;?ECo5OunOdVslE5-)y(u7m#2e1xU5^a&`7wSFrx`fuLr`{G68ZBXBr zr`PpGV8Cur84WtOp_{QY_QU@GmH?3P=U%LR2MXucOvc|3m!N(-%v8bwGC)E5_y5*! zC7`8Mt)N>GYB@U1kGuY11zpGq5v~IXAIB`qI2bZYKuw!@AbD5Ns$1w?+=w9^Q0RmA z?jcn^koqU}A1-$9wP^(v z+}&*5JQlEW4pc$zeGZzNWd6}v`=PV;O)t-kPG3;d9+b68gt|Gw>An-B2DHYjlO3dg z25cWONPjJ8&e{)oAQb8^Sicc89|=A1wL6~0`g5^j_hId00icT=HUzwo18psF=V(3x z%0nND#lyPKzvi_r=P2UsJ_bsF#{yndzx(sQvz*2HbD1haHz{7bvC+y>g4d}g?^X&is42LP40xw>?VPF93f_BkfRDv~gWPp`} z4+8+PAk_{y)kD|&wH_!949GIcVtny`H8^p1pLh{EA5`C?7TkhU(F$%`Nk)dwR!|Y! zeFBv9U--ZN{~tOW)oltIH-p#>8NdE7ictbU&%9jw44nVL^)4j*p5Y0#zwFE&P_%O!e8Q`x(^hDNaMGlv8(+c^V``o)*R#% z0F@iZA>H(|PaqbYd%+yVz|d~qZ3KKsJ;DI%O~`gG3=HVykqUfKDGgqb0h)jZ&F6nBk?uaGeaIuA+m$DvmqjYzMT9gX!!Z}*{|ulL zijIS_4mj$;P6Dlm0JnDqTECSjb%$~^ANyY-+Qs3}!R6F)vV^_)9b@Uo*DS5yN_mbk zF{HuQ)41|@fUjHzuQ!IR7ru5Av?i0I`3Mj4deN{K)8#=|+V}biq=9$3w4N;C0Rw(LIN>&^mNL&DHd!OKvp9@cG~HlaH}!1`J-YqtZ(YyO5xUWO7@ z>rebnC%S)hgH@H>j{}KzALMs+{R0sy73&tZ4iG42>ps!V@S3^Xfdgb*$s5r9=N9pu z9xUM2C~TDsxcmz5{@Ga1vU1fbF8=01(40)E$O~gokHVd$`$o5~K&LlLH@o$TQtr+O z&~57y-R!Sr8ftkMN_aXYyVdvKI8cSdl4uKfAjP{G5%-^vAA z4eG|y9l+AfWqq);q}z+5p^}H8q|my6qm--r185niDk#LnqUGB^(A`7vaS;E3W|})CqGJzRw>}2C^ z{;pV_?hh@uOE@e&1o$T(dd+6-A;3TBP)F#SmP;j|Jvi_bbEDh$MR)9z?qi* z9IOpX4gZ&lgokA@_PX+b)-dh|b&@$i35(;H0}JL6tA_*_dVP6b{9psE=;G=25U}Pi z76u#fzx2)PU7*GHFCv6N3!FGWdwoE+jAFJmK(jQ^z<`t=S^qPlk;8*04BA^l6x>+? z(1ji^_H_RJ-wkO#fd*PYjfB>3C7RHt`EfV!MW4NXJjdBMzJiw5z5rD;pcVEn7R_d0 z05zPzGfX_41uUJ&$CiOcMnR2xv1f!!gixPX^Gs_{Hk!psOiCsid<`q|>f5j^)J<&>HmrqC58S z3xFnTkf&16T8pspt-NNW{LF!E$Om-1U9UgOF?NO*meUy+di`af8Ty45h+A#~>Y#U@ z1GVarFX4OfMgnv;O%_A1zYWNZFWyW8X?6fr@h?7r*%_c4n2)=sfU?4iyC9){@DYu! ze^_7eO$YUTd;38*7#?%|!}enBG>`x&qk@llWB)HYVTCkYM-u-bhA%c?MWJ;&fnmuOG*YzfHgX zce{%43osmagUm=DJMLxz3JQKfHw8k458VA{klc@1`gDKnW&<6)2r~A+0cfT23sy-6 zhW}RSJT=kpMK8CW?2OT?g6sIA{hRKuIk|L;Ejf&ZWzC@-*epZgEm5mLwDU&`6d z)_pEM?tcOcXqh3T{2?$O5cXem4;G{#(4-tgbDfR=bP~TvtlLcj6y#{`KISIDfD~rvegXLj;=Vt~;e};=-p?0bgc%s1 z=?J&jA+dh8Qc^?Febmn023k zGE2Tf%=BOZTP(^i@4(Q_WX)L0-O1JM2^K7Q4|N_BSm_z)c!fa=QhCCItvvY%I*1Dz z<@{3*v>YgL>UEO|==J^Z;^!m=hUPcmdDdQ6j_xx7FWf=PKhM1=;9&qAL<%~KD~kbi zU}CSI$&2jopo7dlya;~$>wkACPwTf5MWm!E3QC;tqzdX!pZgzx+I{Xu85IDx#|4^y zu#{{4S7}Yy#VW9K%V$o3*NQujfGDY*S3s2T&L<#>XXh6X#k!N_3#S0+Ou+EoFxXzJ z?pPk}PoN^*jnVo>5r0@<_=^C3a7TgppZ2|OUy<&Qy5tJQIa}1dxH8K zFUn!|{|R{UdjbOkXhV+^hqWlk+ESUtAgc91iCVAkpW_aoIX8wEsUV}C#vbnW;^}nc z==K6x%hv70)9J|5>-*=08&n#W9+BoVu=v0GBP{9Ffh>13>Gd;#di{R^%Zr&ppcc4E zukVLW2bOL(lTHQ@;lOd+%>q=SzPR}S(_66MhvtW^i2Ts_<_QbR{US*Hd(b3O>j}{K zTdhFA@zx{1Aw%i^MP(Lp3h)bnrJCOebRWq8-Pz4A$k5yR;Wy~kk!Q@HZofq90sg+L zj0_B*b-p`6O0-V|_V$95Fdqzfq4*cnmlinQD)9UN{~5j90>@hwK&(z~fh>mJR*m2A zOFj6*4?t`O)n5Ux?h_D~ytw`J_y6Ny&((B;+@1gp)Z?uwP*z647fyk2NKhVk{lm@x zzRm^Y?0^@&uRv@6I09a@z!=pKMsMql-~a#j_JW)p@ZuQfpZ}od*)i8Y97Rms3;~dn zBfDGQ{05K2bAoC$@M2a_$o=06()*&Y4z$D$6sj+#odbm*h^C(0LLN3@&9KUY$Nvb3o!7vHZw3VgoSt8DlFs_$msY2x_;*W^={KU z3pfP={$Fc7uruHat3bw*FW?KyvKSU`*vBvM|2jm<;WDd0#tFF879^<+AgKp%DNq{| zs_Pgl$Y#c!3|Ck|cc8^D237HhjR(*i0V$8(Ao2r7UkQDXD`r1@l+Yvt#CdW43OGQT zZ9%;MrE(bwQ{c-xUR=DvzyMK}30B6jBLp$(MWr4T6p z^9#Ce`7f#ho+qytImX6dd;mK0sd)*UbPk7SDfCwS?{z&AkTC;Q?|)GZh(6JHWQ`v# zLNxMk_dOKc8}a|R>jqGQ-67xlIoUm%Tp^Bjbc$d)S_PBC*9Y&4{BfF2eo&) z7<)Y#J6yQ_w;U+_-0OR!SHun^ha%h^x~A9l3-h(^6U^7OFLrT&F5LBD`rmT0^mDiG zpI+zx(ecJ-<6fviEr5nBgo32c2t<0ov0uLXX7joK4b}|&t)PRSL5-0Yf*=3?5A5dX zz5=Z~I=Q+%SUSB}x=%yK&W}5Q;*#OTP0$*++BcxhYX3{*yN`X~Kj_XK}9kylj|WSL&tMl37h_3R0kZ#C1K!mr}f_>>;d&caoHmdw&zLf{}MTf zds#|FA_ahi2(M_22k^07pX|FGHzaw;QB;Al3b$n+@E@&<6JhpuCcA zucg7`io6V^0-%9Z?(Pq;uE&S&553MD*56Afbypko7IQ$3bO#-XUZmU2=U@xEfVfEN z+d=u#@NUOH)(49Nv`;kuWGV7&{;6E<(tRTE#kDeUXdlNsz7uq=rbX~EHqabCG1&~J>r;u z?f%#e+G7gM`rsZ7f6GOo$qE)rV(?f}hp`C6koEV{=GXGwzAt)R-vkG|_yU?}Ed2oHzxZGJ zCg8;-4$vhuPhPybN@hn3Wt<;1eEHho^>6bV6?pB2x?ZpQW;diG@{PX*G@}i!54ycs zx|zG}I$f`TW;H+^k1Ijp{{tZ7FK@u(HLjp}aE4>9HyFS}F?`+UdjsL~Ii~`{LCf1p z3xECpUkWR^o8L%upE>Rb8GLhu48B#0fHDc=Yo_jlS^q&paIQB%ySHnKfBo-1{h|~U z)8MPeK;<*2wWrtZdjmOX`#_SmDw*s7u}${U_h559(TP0Ds4MUZ*;oeIqnL&)&?|A2{NSD^-2Kf zj=PKw;arFRq9+z|3V?2Sf78uie6rC3B*;JYU@wa=D2*QOP6b_a4_b26?fW66lNV$_ zB)BMjVtn?+nd4wbgPN@%_x{i5K%~z=tfN7_ZW-XQpT7+Z49)vM!@V$Pl?J{z@%jJ% z?h`LAf;wD%pt0c>*Dn0}-*TV?e57(%#)dPj;LA1ti?)CVgZn`GUl@UQMnQ}!;mr^@ z%qs9=>lsk>02=3bp>h$e763KA;r)RF2>0T=e-iBCH!r*~TwJ2k3vp#aBLhR$|Nq-S z&iOC81a!G4#A)h{3=F+)4qzX1H$cbl8DB6!hq5{@{QBSP`{qT%1?+Bwm7O3uEIgwG z)WZ1q;t{xe&yw};zvvZkCr@J~+$kkKL{Uy}nnvYdMT= zce>sH`S_UYeTEkj^$ZNnwGyDMAE0zoBGg!y@Pe6vp@#FnTgoxl`;4z6K+REjTdN}v zoIN^SFM#rN>wyxHUf&0xg~{C~{+IHEzp!`#X^+a;X;%WNP`tcF?{1KKV(f#qovfRJ_yDu~!VF91Y!`AD?(#h0%vV^6Zt&_1AJh%mB zb{~p6{GwY8TJ(b>1T=mITENhK5PaOj?}ln#hSK0LczOQ6oTK~1i)*0zq*$ce9y~k> zp3_2%<3r}O+(3N}(71j8OYn;{kb7MJG#_DUsOM$qzF)EfdfWuI`K@lyc|t`T-E5ss z9MGmAb7ufcw-XEKN&-gf0G3i-&~&9(XAui{u|c;Ji?u*0Pp3gAT&S~v1Hl1%3`&5; zV?pK{b-RIvtD%ihbo2Q@=7(`0TM)oe$_FwPA=+usiQqtu2c`F{{~5^RgV?46y2U|v zJ~EZMScVFe+W#*Ct#Ae<-50gs8FbLNAbTf6H+!c82lT+GZuV}-L^M+WJ{~mG%)?;q zDo_#uYC(6OD7EPh;Ap7gWhfQthD_pXbYFn5O1{08=?-84OA1>%ag_3PAL?}F=?(%5 zmAvf?^!?N8%M<=$=JWsm zySYI_{3Wd2)f}&-yPd&J{Sub$pRf74LwUNZIIJ)8x3+^$X#gdMVwO_o&T^NSvu`rGlN#HGFeKLDua?v3Fu@^@Z2fL!=>C45c3t?Or0FvOqLNG z{H>i(lS{a|&vklmysQMZrrbHY&qFjJO-OVzb$W2TjsY!VVD4nH4(2Fj>HhRu3S?Dx z5yV-YcHPb#prq)`0ZN6wf4UhVjs&lUaAvWTfUkz=b_T86=jGd)lI!k|amVV%G1@-K^`K*7ImUR1p zSCN#8ffsa~3OnY;!|>uBsE_N%(H;5+6ukVcpcNpX`5GR^QcmzB3lC#S4wO+U+RYdU zTIO-gk%yuC)C(riVg^5sE;pVIN1kJDJdE9r9NoTu!az!1wEp@3|Fti86^SUag=aw) z@Vi9l&ftc&VK7kVa z!X@+X|8CIXK%m7h@o~|u2TE8xz}LfZbo=sja)6RL2LsevkUNmQb{sUQ%ZKDMM!3g# z{`~*{vJkZL6_Q{f^$mgfi{-CDi_cydy!rnhHjS~Rf`Osi50+0`PnK|l_DwK?F2xJr z0L?NfpG2u#!IKe?`X4$(QEJ%D3z~W8cIAM~K%6Y$?{wtp^x%L_Lc|_E?f~8t2KWp$AIX;o6ZWGd@BlGhz?NzPyQSCV0IUftax09q6l3K~D;Xs|s18YM2#>~;MS@E?2| zA1F8b{&=zGJOjfg{z%pj`}qYv@e8{Cxa;}@)HK=&((nRwdu8{D7w%9+5nnk`6hXqT z`HckV)W8Jf zOd0ckcZKdykoMrPPIs9XoNzPdgSzbg3dY~KOMi6V$YRKFaN=hO3Yq{I`z%Q?60OV*ROD zsXO*h_owb~59@fJa&E8?Yj?a)_b2URo$e0Or#t;!K#S?hJpwx8eg4B%hF*?~1_uE& zt$?Ud(0yZ|n$&;1qx+N{B&E7IA_P zRDtAwr%w3z0Qz|;Nb8Fs2d03Qk?8X28E139OLAw`LF!q8EP1ymuypZ4ZLm1>Fl^2I>L328oCp+9? z#W>kP{Q|^Qt)N3rdV3*fs1&{bO_MWJekFsZoxo={fX`Y1kCC*#0G*t|z`$?}>;{Gx zEL%XX2djcCXGT6l#eD%Ny&%s>L02|k-U*5H7c7UMO9#Q}SpfNjn?K;`iqQB z@xO#+g+M7kXc7~oBjCTN4XCdLR@8ki;KhyApp6NCx{rZI{SBZ_geFM5?h6Ne3JnV%bcyA%-He@TP171v@1)9-k;XYI%8V~MhKxbD@?|_6uJbb=oCsgErsRZOi z7^tB(paYwZfDDy3K41wBhIsy|uvwaBsIG3`KV7Z@#-L;P3ZOy=_cy=c0d-n>UH^my z>||sD4J7{nrP3Xs`*fh=J^Zc*kGp;WiGnxNfv)E&<=~%kfEASb1OAJ0fVR?=3bY<5 zHSBf$5)cNe7eJ?V^ZYOU^Iw!@0eGXOSaaxb$e_eO*s~M7DM>|t#3dF{K0$^*1Q*# z=ow3WVG;dk7Fk~@gFx+Jo$PhRHDhpk}Ar3RK-;70ABBD&Tbo zvaTew`%SN_2~wCeXPOzJH7lw0?`{pK<_HR5A={~&QtVuzpZ)q4`; zD(E3zu$t+{3)<9739-b~Oj&C|uEbF@t(}RZX0qH2j>^L?vUbC=9=L>p#Agv=eN^Kc zl-dey3Zj&!7hD*1$8vx&E$CD>@LC+uWg*~#22@IAFbIPRVenDuopV9O6`}ON=0At1*;lX8q5| z0U31qMe(Zt|Fix>N}ul2FP^OW59L4(4Cp?LJR}eY-Mg>62@)#cpa2t)@K}ckk3eWc z6tS4S+f|_TKxJ6~cp>Q?&;STS^MgOoil+GhN2jX*=t%Qk(DoNsj(`k>znlUuj{E^F zK9cBm{Q%!K3i1r*w$bb|kV2O36E7T#|Nlq1F%#4eLAh!ZBmj0bf>OlZH93L z4W4i`STOLn%mgp7X|PZzWpik-P$>D;#nJtvqJ z611)lbgw-F^h~7VZW5qL^JY7SQnBuHFIGu|)d_LclDI|JO58z$~5r*E4FsEQ9~o zGp2x9CjYNztO2tu{$I~H0%qC#zn<{`%yRgDJ>w6Utcd^DGbVspG5@b;ECI6;{$J170cNHAzn*ah%*p`S24>~_ zzn<|0%qsYQJ%fWAWLwGq>lrd&Rt3mjFslaSOAre@{{H`ZMg*7x8btbkJtGIq0nZCu z&u9R1KsT&|d<^D*_QU_bp0NVV0qrFEe?4Olm@|Wcf#Lu4j0<4S90=zLn6m)F`2psD zZWQ}}J%fjbOQ5q2bS66}BEXzA5M?G{4(L{TPym5BTOcwqU=Cc1z^q|h)fHZ z1G?Po|MiR+U=HXc6j1DdIiNd-|6k8I0Op*5=(z&sfUYk8e?8*`m~#ap^9Rhi0pSSn zf*g7W!chTpKyy=|L<8nLfylUkIiUGmP>6y#pbM@+AqwVz&Q%9RE|~KLqNfAQ`2pcf z0dqhlGbp~n90pK@d_7|am;-88f?^%a0qw;BMLd`T>imJ?9?St{4^Z^;fm{vR7!OJT zV2%XDGy^aP)RhLM129JcA`=1TfLcT#SA#jA?*9Ml84X|#=)6u)IskJFAbM7SIVKR! z9x%rO!npwE*g!Z>z#In%=LeYM0^tbogBv~YfpFe{IiNNBIY%HI z3oz#dgyRF|oPlr>z?=&ZP6?QE1;S|ob8bL56TqB15Y8Mh=K+MX0?c^=;p_l&UO+e} zz#P!hCr}~>b3iu@{J);@1I+mXQN|$za`g`gM*__G1L0_ZIiTZc|6k9r0CQNFz{QgX zn8N|#M1VOw5Kal018QRZzn;+o=7>OK7JxYt5Y84b2h?x;e?8*_n4w09KsaB( z91RGELm1>x9SBDP%rSs)bif=F2*&};v4C&_z#JP0Cj-oJfN(0n92W?u1I+P&aF&2M zJ`m0hFed=QIRoZ|KsXP;oCpZ#4VV)H;rsw|5+EE75s<4>ARGxWCj-JU0CRF691k$3 z0K$m@b4nnb3^1nx!l?jrY9O2zFsA{+nF8jtKsXD)oDK+Q1DMkT;p_o(CO|l6z?>-% z&J8eU288nh%$Wn>d;xP7KsYR-Apb0Za0I}d6%dXBn6n1L(E)QdKsYvF&K3wK0L<9| z;iP~$dmx+&Fy{b-(*fojfpF%4IVT{T4Pee02KM>9q zFoywjMe+5F6JQPtgmVYX;ec>HfH^!64vRR*p#l(&1ehZN;pl)l5)h69m?Hz>gn&5; z5Kab|qXOa7fH@iv&IB+=2f|qb<`_UYJHQ+h2QgCk4!DfN)B{oE8YD1@( zj({}CZ8sns1u*9hgku8cJb-XKz?>%#P70U<8lw7tJ);E7c>|GY0dqb;I8(r!FA&ZW zFy{w^vjxog1K}J2b3p6d|6k9z0_L!QE-|^D@dV7_fN*|*IXn;!j||Aw0uYV@m?Hw= zn1DGF5RM0!BLm^YfH?{fP63#s0^ziPIT{eo3@}Fr!dV067(h4&z#J0@=L(o(0pYv= zb8H}-KVS}MmH7Yb83M8(hq^#yRKOe$2*(1<@quuBz?=XGCjra}fpAK|oCpY~2h53q zaF&2M2@uX6Fee4VxdP^7KsXP;oE!+}2bfa;;fTnA+*ShNXn;8t5RL0|fH|NY z44{+<=CnX$I>4L`2xkVE(*xnG0dpomI48iIDG<&BFlPpY^8?J81K|kBgPgMf!chTp zmOwZTV9p8%CkD(}1L2f_IU69H9x!JMgfj=s*#Y6K0dw|1I48iI0}##wFy{z_^8w5` z0pYMHfShv%!jS-TEqO3NYsZgfj)q0qq$B^|Qd77Z8~v zV9px|=MIpd!dQpcw&B9}vv>1JPpw<}k2=n`|*)4hw`+1Lkl* zI6Ytv4}`M-%n^Wac7Qn|U`}V71S@Fm9?0Je{H=Ex7#K3{D1t`-zJQg1BtXtl0yzg7 zAR1r}Gz=WT9B3HCfH}}Gr~z}JVK4*Cfrh~rFb5h27r-277`y;;px$Os23ZRAwg{L5 z^|k|;1NC+Sm;?28377-*b_bXP@pfk$$j2E=l);|c0hW;ghe5^(FbA|@0o0@hb5tNQ zKfoLf2!}%j;ZEcz?{yu7FGs^j4OXRL8C`+z%m_RnGBYH zAOm_J92qcY0)%4%=1hTbJiwe85Kau3GY7)S0dp2WI1OOV5(sAkn6m=HSpw#)0dwLz z+cto1z=MvNLB>a)BgRJ?-++cN-~)tcaw62a6Pd*&D#@3NU*ki0#_Y+qMbJ=;(Bv z(CIp(w{0_+yP&si3z)H@w{0t!v7xtZ8xT? z+XOOX$s*8+yfeT?@wb9TR(3#U)eZhbcJLZq>TEUn|Nno-R0YtY+S|~>J1pmdOyX}j z3Eunx9{&Z8&jy1X*WCbas$J;*0lG60G}xTQn8CxyCD7XoGUY{M?XUk0_MoNtCtrik zmk2~YUjnqR0irCb_Sb*oZ}9c~Enh(q*L@y3-c0O3Ggo)ZS5N{54K_Fb6EE8CYz=XI zs~2eb7}$4RVBbNHs{<{FckKo{0lqB$5NKKaY0&i#plv=ytS|QeW?%qsh$v=#vH3Rx zL-SA2viOxC6(<5;JaGDpb~*)kg*oVGudJESVePPPQ_yg8c!mHYmq7Q=|JO2f7`X&G z+qZx+@3jmMFlPsZlK|%IfpBWToC6Tf3^3;igtG(8IRW9^0CUbjI3K{A3lI(u6Ud$` z5RM9%a|6P$0CVm@I6h#`0|+Mt%y|Og)POlJAe;$c&Kn4437GQ%!r24ne1UMTfH^-P zoDX0Q=zPTg*D^SmLC#@dV_^7yEkgy&VS#WQz#I+;CkD*nfpAK|903TY1I!VDaOQwH z5)jS?Fh>T$IRWM%qf6y&VV^35Y7WIrvk$H0_M~}I2>#s7c@XPGGI;% zgku8cbU-*EU``K&lLO{V0CPIqr?4?Fz}M-+X1u`j>!4A1cnt(vFLt~YRKc{caS0r6 z1ywI|z${SZvIWcnRV`Q8xCEN_fzmufZ`)o_*$yt!d)xMb*`Pwbw{1U|4Jy`q+YW%) zpn|=(?I4&9D%yM74uRRA!o9N>1{g+W-RG#I|XK}>1{g=W^CzgI|F9y>1{g;W*q5lI|pW*>1{g? zW?boQy8vd~>213RW<2R_y98#u>213VuC_om=?`!qfNE0_c2E$3>QVzR3sjT(fLN{# z8DOfT0!&Sq0H$WF0aFW(fTy`yoS>2%H zVvoCmrbZZ!yMm@m7>>FAXK4La;tpB_1X=^czmF~8#fA>>DyLl^IJg8_5A1xw!6m@& zaw;(Fg?%gNIx^5SU+J6f4=)1tgC^fWr%+6F{onkLsYDE9M20k|j=T&qF+&E->~{Up z?fa#ZJ^MgPr#}nxLF1F1?i`)IA8hp)85nB#K=aBOY7-e4{$K9){m}fAk$=j84tL%z z*Z&>vJfIrjDQF=p$a81ToN2ZM9SaU^oI%!~f)?z8rhCDvAnmoo9Z2g3LF4rB+=6^Q z>5F_e2GG$B0Sh<nebR_*J84d^d1p;1Nz6%r2IH1ZU5b#22 z1!(qPpx5~6YXe$R0ZQMP+xlK8^njcIkpvB?Fa#WL1@XYAP9#@= zA``TL8nj!c+q3{Qul}us4}73b07rKj=uFB_%_zZOzaM8XY!Lz31q}w!Iy7i7oVf!N z&v*h32I=MK!H{_jUofy@4F)z)^8*nKY}R;!L9!d<1dzvJr+**?LrghxFubU>W?(?| zv-dunem)=!G8pP-(82?#pKsiTiDz)Afudf08M>cKkK*$)Cssdmq54_K3Xh*vyFgBW z`WbYmCvwzhlp*`Mn-?7QCrgCD`@I>v3t9dL@N}PR{Z{(vI4ejF)D(VUeC7ZDm!P>+ zNboT7w|@rRj-j&`5l0H1OU+HL$|Tkrq>85gE-3cO&N z!oUF51wGW^#pHgFW{wPya_G^#AY&lq6$7e8%fM<`uv;VuiXLCMMKdR(S)>Kl46_Jy zmN6t|nfTkK7#SE|1nq{zEH5Ji1ES1x0PVIvE&vLxh=1VKOG2QLAV`^a{{~DvBLp0? zdW#`3>w2KK*W(|k%&R#BipVRV8&|Rz{%`&9@Be>(XV(J(|F^n84z(BlzZGN$Qn7dC znCl-AP+U57`yPPzH4cLM8u6g}9iV-U;P;5WhWmS1U&9up;zZz!60^UczD95F2C%EI zfa3VLD`?#U!!g$b3@^U4ft(JJ{3FW104gg%JaAcQUJQy8SXuc(VlQaDG19eb;Jw@1 zd$3f`;Ps#XGyWjzCuq%tSZ;-qo_L_?336(-GdN|u*xw7b9v02IkW;fk2?V+*>qS~O zEIn9MY;^bbG<$9p|pkIKllz?s-X|M%V(+njdFE)dc&wp@54XUEz{wHv} zn2!)!2r8&L-B>!o6&Yf|5~O`V>iz=$_Gm`%DN&%slF-$Ai#S1P8Tmq1vKDau-VVuD z__h|L^MVp1<^s<8s~~ZZo8SvL&&&t83T*+W_;7vX_Eh8mJ=+=UYPDu87v2r4Eih#slGh%-T*7MyU_eFvh93FQA zRm2RvZUWH5>w5iUjq&l>L#+o& zEUb^0m~;nnbUX5NIs{T>3eD$0H={!{efK%&73s|9AUC87`hxN$Xl3Pd&;S3son;`aHbJ2RS%zuY>-WF) zBt-EOADH4@AjPL&JZ?iN)L`v!h<^#3_xa)(Xq70=`{^p+cKLzqLO!n+w3PsKKb=9? zi$!L{Tmcr^{RVWsbnE{Tg>FZI-f)hv-a>&+CgTI0X&Y3321C14v+>VUeGzhZlER=10s1#cSf^-QZguEf2)8cY^E2lDnR#_fGqCyli?3P z0BvY|;umz#=mxKpZ$2Os@S?c#|Nrj2AjkLmDfGH41iVPB{Qv(Gzks_&^KpUhsUQPB z@e4X>beFSOe=p%|{Z_)-eC!A4jE?Sey>1-eZ%Ut3K2f4(eZEAg``n8opcKK~>A}$( zz|k4O(+%3u-6`B%20Fm=?CX8q;7w*oxeS!vz}09$E2JEN_WvO1FTD$%-x}Y5*5ly_ z|1Qw7ZE(=Dc)@}`$`%y#=z%U`j27q)+d+X2@+I~V$5EhwLj1TJXjK!#i-vMUsF#$3 z8%LnN6@T~vaG3%+1pO1g0Bge{Zh@BDV4adb}?hN)etcDaDBY*8e4( z;k|weFCxm&u4078ad8ve(OaEc`8-LF?18WJfm{ z(1{Vv5B_wYZa%=#C1528Jz*+<(JByh!qfq#=7Sg~OoesZgYIWS})@|F=F@0=^#y zRM~MFpM=g|bYJXspgD1PO>~ z;PYTXhaa@wE-8o96QwfUjv~E*0=?cGoz6U+g56Fm@zI?eon9=U623c71mptiYbBe+Uoj7W^Ni0XiJ=#*1=K28Pz#C0f?^OV$3D@*HEa zV+ebZ1m0Q6(ftE-1+FOEgx3!L|GyRii7~>(t~>nyZ~VX87jz>7s5oi`U9}`s2Rc~# z$%|LD_%2N(vHU6J=#J%q7D0{9u+X?}_WwU@m&5SlZ^8fnz5bvUEz^sS1!zT(yGHA` z68mIEc6HVWme&Bqu^KL&?&pMMc13cll%yZii$-!-69fnGDA9j6c7P;{vlt$+gE z=h7X^18QS&7=JqsI$ReNRj%Ek0{o!!Jo)!A^?F=r{>fR+(tYr?M6bvE=AW$Ptj#aN zUvu|*><4j#nqQcA^Sd2<$l}C&qLbhHbJ3~zxb8#Iv4^`|1;EE)gL4Xm0FQU`fX?DR z?h2YFV|cL(blAj=*4w3K0a?shj4!yHV8NbX3dt=cLRtSa5;VC4vY5kO?0pQ%E&`zJ z(hWWtJUok`*JduLRTZAa_~MKsOt+Hh|Not?e?Z6lfck3Tpwr;=c7YCd5&+%vQ@{c` zK;Q#PL&*4l>+QOnZdVS6PFLvpi=a~}&IPPDx;!n5 z0hEb^;4aTF0iCDS2|BN^)VDkIkMXzG+jZ&?`?^^+wH_!D4aj1A@z4S0)$O1rQs^Hy z>(4d!gR&T39EZ!ywFT`pGClx3+po8f@fc&Y@&99N46V28ia_;+>z`hh9a;bX8+5vU z>3030eT?~FK-i1$N1#)_zce2a=;rEmWbAbP0xRDb9a|2R{?zvU((C-6`J?rZ62W6^ zI&R>7-z>-26x@!nG5j~mVtnBYcY`Fzb-rL9PyAo{CyVigI$Z8As0HK75ubLPEtVk; z>PkpTfsml~e-=ZQXcps(kM=PCx*J0ihUouNjtmYhE`co3uosL+LGqxK0iIca>;J?r z;LFkchT{{zfanJ;E`d+{ItSDE^A3FGe|F##f6PJt5Y`2Yxdqbr^)D2uf*N=)7J+#O zi^S9T^?4N*a|;yl2D~Wx4>FzwH2xBn#gOHY#rPr~?xL+m5Et>cfKHsb>k6{(u8hiy zw@r);pZEnrL07tc;unwwS@eltfEVPByRkn$@e8>A_{1M`h(F|T8o&ODB4v>M4BA`* z{2HhDLr$mh>mMxR2fJNRL?weqi%a0O6-WuF4T?}wE(vnzgGJl|=;U9CvwbU= z1kmP(x*~-8W24cQ=@o_5ygLCr{36N`dfC|da zSdQLc_TG2_ewPc~)hwN%AFO|uaJK$0VQoGRYKQy>ok-&PLi<=}=@W1c0^J93zSkYv z*Wzzk#lXN|eHwDOXtz7GWft%Pv>w0P_Y3H5m=E2qPyUzkbeb@Bp9ftDW(zvW|3tUz zlTME211z1cPg=i~B(|O`iR}fgE^%Ri-(Pa7H;fT99{|0-pxc#0`%`y4PxAp*kn?we zjzr{lIn*8cf%zcwG3E=Mp&vj;vReNx0bL!;(R}>J%OKE7nEx-m|NsBLfzkN(Yndzt zP}!1g0}IcC`k*-Ma{b>K`=<3a|F#pmKtmP$t`}P_l~i`eK4`sNXAcg6FWoF`tp`ek zKuJIcuARy9|Nm~dxCmVQl?C`(QP7p5NB)<-$YOl)!y0DgInWZ9(jQrjFP^}~c3Gel zaiHtqz)7j)WCrWc~kd4Ab}h4g*6sck>YeaG`bP|Npx;A7<&SePUhvfWHT{4yil#4I~&h!j-jybb^C% zE?lhG9CW2F4?~Gqx9<((1Fa|PctPps7#pX9oAtq(?~n}EeHg8f29?jChPv^$*8im% z;aQAXj4wRkhR)LkU)#tM9~XPLi}#%dmq2_6M_laT;4b;jT8@_6B}UE17)x~dw;c}1 zaM0oscpN7bL7|rK=QBcjK)|6t>9-vruqsnWVfo=qTQ4=DU~!FSKIbbkPkpMB!janxu%P%4sf1SBbd zBAIapB=+YM$iD~;0*)GxDu+eoMFaS5S`MgT-Hr;)&}*TOLyp3PNVg+XtifMpO1_@H5KP}AlIWZWw(-1t9qkoS1&ff6O_LnU$;gS?%U9G#Us z@o_Jw7lMi$*nCOW|BN@t{Wa|O&wm8np!?1e+GB%_V!wEk{QrN(B+%q5U#~0pPMrXd z!l$E|G^h{}g|v^+dPfa*v85cnZj3LzL9?I+FYac7 zrdwD#!NZr(UUTb#65cGf?h`KpKnE>e0Np7H9b;|1#NPs%3+r|l==I`gJ}%J7*jWYY zys$&Md7!ZX{ui8_3=E*U`c%M+bL~#2BLEE>}CP4d^ zs;01btJVM&k^C*7?bMLVYe8;-E)ezP-xMfzl~JBRWK$QW%W2Pkx~_8Jw~LD!D9ek<`u3$@m7B{m>8xA=k9 z{MyCxx9kMn5`Vjd?KrcACYONm0c<0`W%=N~P1vGBSS+iH|W$q z*AJ!a{Nbz{7IO=L)@Ys6K5^U~w4sn8Fre38;S;~0yT*&z>Hq)7Lt5^KSQwz=No9!q zhW-9LP(Ew0t1c1i1`YP`w^)LXsbWac^3csF9|UT@F^v5dwCT5op-^MIzl zm_WDHp8kHb*O>z}9n;B$Ey$rEa1dk&I0U*8>(jvj!EK{Z&JGTU*Tt>>OY&hM;2#eT z0gp6r2$beFA7?D#2kU^0CxLtp53S!yjL?F=^;?NNxNKkpmkqW2E&o9W zp@Nc43EOdo1K5fO@Hh=PWtBWW&aebjF5CuH29Wu=<~N{|c*DYtzjgZlXs}S~tzhiF zUIIGN7jmz;iWZju_@FkhF%4EqC9+*yEhkIFL181*@H3{@iILy+P(uZyQf~lb>Eqxm zhF&*DP-kPmKCF}#RR+aEXY8NW+ohb*@t_{=Ar6KHd!_Er{4IUpQ}#hee?Srve+wx2 z*u<2ucd)%o2Bj{4MtA;w2b&MfYyKh3-wsMK{M#BnXoA~|S2RKGMUIzNpd$&{cwQQT zX|9)AV4C-(5}4+E30jl`N?EWuSg&c3&+svTx|G({jW(J1x=!Sa682(n!`5g`QOr`v-hZqJ$e;q%%-=qhfq|j%G033ChamFcV=nHSjfWW+7#TWaIl!Iu#^0cw4#n&{ zLFxFlY~ybR4hDu|_MMXg-ypT1?W+v@PA7UD|1*DV{=r;s`Cp}#MT#(1S zJx{~I*K8eZ*x8-2935<3jZd_=1pK%Tcd#*ke9hd!=jPsEuf*R9KCe0U&oMTJ-g3qU zd!=B0*YDl6KYINYUObBV{~y#qd8G@B)B{@o|3@Ep2W<&u=spIE)U*k18f*f78f*e# z8f*e_8f*e-8f*f28f*e>nrs3LY;0_dY!JZ2#>U3X#==^z$tIAY$tDn^$tDn>iD)~5 zk|=0=6f`)>(|xn`e+e68fV8`m15~wt0yW!MGD@_#1j1ezr-ByY^0Xc(6^!q7V>#{& zYSu7-?wsXd$YRZ?0W0EzD^km7(c%*5^;S6U44Hgnj`{yTofQ&4rDj0Vrgf#)TA-B{w0w0E)DD3uC?hjpKRG5HUu%?dWuMz_Qn zTK8GoL__71zaiwSpOTSo#5JXb!9a)PL+Q*DCGVC=MOIa$gE%I&d-E7;@t_ZewaEzwcu6Bl&}m*jjG$w}8%6=sK)&z@}lx-~S8@{H=4DK=*z!cJlG>JKg-y zp8I0sFHlmB=6AXf-+c&T(g&LdrK$Y;E_U%ZKjJ_5h^OTwe~Ug714GwAkU{*dpwl71 znf-x%r`^E^Y}^;RY1ZIPFL7_Q{fsp~lQGaZH@VA26kx)l5 zAABSMvQQJrLQoNhID9Wi4RUCLmT9AhCW8X1 z!~fa*fi$C`4re_0NUr5%NeRqBpeE#G%>&peYLwUMgIl8$z zWH|maMaLcvYyAD6oq?fTt-BO7iyO+(@Yw#~OSXp74Gkv`bhCBvF#TuiX6uj<_|FEK zJ8T5smsl*hQ7LIPCkcd!WlXX`!;;tQeic~JNukGueR1R;v>2P|m7 zG&Fo5MezAfU!K<66;|EHJ6#3p)VfPKCbWL5lkRop>GTx{c(DOAljO?->Wdxp(>`u} zxaMKEtAO@->(g}x+Q-2&QQ(rhP62fG-3ySfy1~j@50tWacKY)8flf(p{Z{`#`+R&{ z_d)1nP@e%|IS;Dkk|6Wo?gU+@j!=r`&Uc_939b}$mJ*sf85kMh?mP%md{6~k zyn$w6pzdTo_y9C+2n}-3kx~eEwlN|Hk`SspL45~=QqY1@ggeo^0pknf%3b^0{?bwHUiSghAIYiKdcBdlT30hQwaHj;Sm*#=YgS!)S zz8yj-%=hfzwE4OWW@Kp!LJiE@P&GktH4X?hF#kf;=)u*~02ih#%Az=Z{*KLI|Mx4xVm zbi@}!>|tAQ8Ojbiun5fi&%jX54sO4KJCq~b_>bKcQj%pyB6%Qb@~0{@_ElmlvVp9~yo>C{+XHPX3m&P%%h>upiW|1Gi*A>gPk{ zel-02P^t=151RIdg)e_=KSaG#^Fw=wgAaLLuLeo|Y54i0R2HPXqzJ?Z8C{wIiVBD_ zq1Rg)9{+3j{iie-+^h116i215U0#e%4lO53Y@h-rFad3-fHF)#3MwGvBvn{qO((xajWV@v(<{T{!|?uzv$bW$S?w!CqGm_kb7QzCr~`--A`bViVk+ zYaoFpu4(c^idl}aNHJLdE7s`t71#wzUm)|Ff4~ym zYfkG6(g(iZXgps<6 z2*3O89P=sT1E5~9fc3>rSCMXC9{%Qb1_p-U@ZLK3dLu4Sy~ARB;B`=i5dXe|;2dQO z+SShQeDJj$wE9Vb797y(2c%pXo)|=+iGlkdxWeIY1|9ST&Wzo@Jk~#pIlE&y(mGj+ z-Q2rfMI1U^MXW;wirV9&tv?oXcKdP|UrOr~DMU1`1E6+6D<_a$+u?StfR+=88VMvn z9WLL2a0{podYS+K|Nky%-2-aFK+T5MJ)r6qv{e?Soxj!f|NsARE8wM-@qw3yAcNo~ zpB%C>c!6bn;3XG|vhSeXE&EP`G8FegTTs9E<-LDk2Z1XY&{3UG2SF?F%6gHNA-lU0MOhlMGGuoLp(wLQbGHJ+OEr)JXicI3Vnf;^(3%9~ zZhnv`+}(fvBDot@i-44Y&SXb~_f=$N$lg2n_y2!{vUSMHki9nxMOiztGGy-+qbN)G z`~N>uI$>a7;cxQ!3mW41&j77Eoe#dW|NH+xxcun$;LY3Wd&Ike7|Wb?yaSUeMY4)3%2GOCXRn49LHUlI6(IiHXq_?e#uz+ z{J&Wi;|n>sQ@%+2{}0-1&cJ{)wE!BXgO-yJ*MQ?Q>wiYTZw}biiqLoi72A+i(%p>R z9REEzKvyeOvM`j0|2Oa!4Z?FoFx7ibMn7DE;zNNNS>XnVxfaUdy}T_76b|4oST zb8Op1es-60w0_e;2ehU)3wCwh3tMSeSPO$Z==ui~N!{fvt=~#C{+mH3GyaSA zEaVgj1M30}vb|u3>$)rc|9|)S7iIrI5e0WYc&G~!Fc9}mtAWp_Vc*ZvT`kf2zr;9g zLihLXdY1oY$X0?X#1~VfU=Ga^hc7#9{a<>%`}A>V@TuF!oxyk79CwxhYjBQ7xt|HN z1RAvO`z2_zDk$Kf7~($U``f}WVyxMA!U28(hLV78UJ&C2=*-83AXcaAhi=yoovt66 zYd@4A8w#|3znj zlk1;OHsiD1$KqbdLQR5BpMf^sy%1r7PoIJK0WTcdK+|WS`JS-ukKJxEtp`f1x=;UsAOR{4%tvuqSpGq#Gw0r_YY|M zuABY80VF?z76^UpuKm#+`{gxXHv>378~hgq=Vww!|vZr2b09XPs6LF=Kx>6{%D(9ISMCA{7K99jQ^U$}xi z^rD*&R>C04Ln%<9hgKd!GcPy@4WU7ZC=#Kvpww{YOmO$ju<-q$edKA!nHd>+i#fpS z&3oM>Aftuc^Ym^59cc{;sso+7IRY3N zK&|8G!{GA0@eSy#H01nM$`SrwbPXt0ejIPT@asRQW5v)5W_9j81G-y119W<7Z!74o z`GD{jbM-;Xq4`@tb2r^!WjjGdQGjw1D-92DEoo*kxTMzvD|G(4i2jq?-@O?D_ft`LY{);|Yz$uXR zA0iIB$Of{$M!*)dki6J0OF!&|Ru2P1R!ms;j~5C(p#2S53jFRrTL1UDGxEC}3+QbF zsSJ4Gk`3Ap1`3B&kO9q;fs3*^{@|kQ5C=mvXdE4Up2>@LxFCpsARcrfOEFvwl3Kv=37X$KXnZL+ z40Hpk%GqBUQj`HiOsUOz(96{5WW zDfqj=l|VO7$HF_H^8jG`w?Uj2|NTK}mZjMi#QR?g-M@Y00QfurQ2u+d%=iEQj0d3e z06qnS&Q(0XFYuxZtczm@NF7o|gx0`-)Q@%u_hFr%e_;wb#Op_AEohY{dpM*RTe#x@ zzkma@<+T{ZY5u{;-w!&;A!CgtmjLA2p2d4W2ZJ2oZ}|pFjHaN=dNPh!atQ?dzm{VnS`U<%E(F;K8l}w=`+s3GsF?-c5AweR z6eyrG5U?ypI{cp(6gWn=Uta*HN7VadgE8A9FF@joz~dgE{noL_w-v$MQ;3NF#y6nzRH3P~)Ad7GI3lTb z_ICXK|G%My!Gb;57Zxr05w|NlSMIvq6rU&{L8CKCh03l`9%{D;o14Zpz+ ze~@EA$L1LShkC%WR)D{4J!lQZR*>%IW6=E$-Mt_qyIFpAy8Y;O`N`7h_UC`ePnQ2C zKfA$}ztH~k|9?gV3j;%^8%J;JjNgzO3a@s6vIx&{us{R@=={MKzyJSd1RZ1wDY;MZ zhaXr7is#PWmf!#Xr|}E7R)E}gpd_((D#)0i-l-sgpl-0I{+Ik>`ET+o5PYzbeRt~? zkVn~iTi^Wt|33qC7h8)zdb#M_Jk(8k0IpES^JS&%`^M|e8hKxd=BmOBnwtMLE0 z8|Y-7|Hr`k7>}&(IBwzD^ z?xH;oW`o>wtPOOCJA-@Uu?1`l4A!**{7s;Ke>XTTp%prE`U6KiQVA0e-I4#y6H;pP zAb05gi@sREDe(OUXm|>gP9g0((A{+1r5piS4q2>W|3#00?~^Mj>h=|AJz1jFX?V<$ zg|(Zl(~-5yjitkpv%&6VDQ~wMWAg!4=3||XBCpw@7xZ+y@@OAB=KAGj^9$DQ6CJK! z55DB+@cq_(;^0ex4&U$HzF!W$km%&=aAWCp{SyG%3<9$bdRHCl<#cDxoH^#m$nX-h z*dCIdpyl~GM1H~9erl*^WZ-WFjhepr4qiywS^5SVY@nRbYzr!eV7J(pWMqKaG`*lp zjRRhkfB*k~Cx~x-kl*PXh7xD|BQQx@WgUH!;9@dKs}buQqX!JSV;n|eV~O2Xz&{}FzErV zg<22P*Fr)o;J+xi^aocT$5}yj3@CdYX9d+Q5EiITfv`X&JA?%)>>(_WZU_q$rVtjW z41usf`4+^2+#GkD6;zRd_?USFDR-caDS*abT|rwr4}y9}XF%td@P{AB03CrI#xKa0 z#(&LC;J;`LXprC-=u{Gj`mpYgouI7??9gLQxyf9aSE~Q1faB2f%8)LU4OY4CWP+0ja-~`_q3)Kwie>cD3 z2-qzftC%`{|NIw?SimXJ#n*DORM?h@k%6Iv zr}aP_|C9re79gbLKyUt?0Z#%UvJL66OvL zdoJW4+VRE?m2ZM74=%qo;LU|U-L3-QhW3MQSCOo*ovwHOi^hOEPW<5qK$l*+KIwG* z*6aEtAe>*&_1S;X1dyaJ2dMLNqxmOGxyFB$-WmRE0=q%$s$Wa(1{J-pg?EEmF0XlZ zgT_x^v+f3MV(m6f0cky~`u#rxLqPcdYyV3hWM~}X7kKeA0<;#ANmpfYM&-t_9ucc-$4Fg5h{8XgAD^UT%Tot)O#%XLNE4 zfUcwkZ7G75W1vQW>lIM(9MJ3Aaon{dqla7IxNA!Q_=b7mRt?aBfvZA6hxmX@=ybi% z4K}LVf#rA$D@e%0k4pe5=E2hI_@lFhR|nK|2ipx%269D2H@84HL=2?tL1zmu=%itY z&~aDLk+BR2)h<0Ks%Jn|Lk>gkKGErV;lC2J6yB)(rD;=B1x4kEIHQCi2oQ$WjSVnsS*7g#%T@HfeV&Vj6C zVc>5OW(HmOxB?UopetL&|Esjhgt7@7cLi;=V|dMe+!b_(6vJ^>&?0??sg=yerw4pu>mO!NN_f|wMwhIbcgo&?$|BgUmkY_t>R!f_=~Cg(7_k-%!fK%7x1?$;({c7ye?Vm<2{3wk zOLug~Zt3=2)B3GMwVP#kC);Z|BqiNwN|-wBx?SfqA7gRoEZxz3P@>ayPN(l0Yu5!u zZQZp?x?QgvbN#~#@+9VIafS;S7`maS#i=etoE9g!5O!J|KS;%iz!z>W{(w%414YSe zpH;t?g|$m+@HDt;r>X_b=}~Twf#XVP6WPadk%I#G@rKKE(z^+-J^Z@;14F- z|NsBnm$AN3UBJL_@BtId{KKHr^aMe=o&Q)LE@FMb3Nrsj^KX`7))znLGcYv&RxV?G z@qRu7L-&o~7itjmk=hcVb|?7kmJPPBj5y(M2%7*L2eJvU1+fW0@}oc>y#8x`1DY*^ zW=W*3YU&42HTVKFh<-!=*Z=M?mhKe9NVFQ;hctaT&y7@r+@#9#uZ$ekd zAN~H&4$b{fK~1>-r5xS9 zFaDRld7*gi-+#~`!VA@W@X$E8Pyx56KX&_agm>3*bRX{yW6?fz@CTFi!D4f5vEbdH z&;`ZkVeLcK2aB|{?U*kf{Lf^3vitbO7uq+Nk6Yj8cRpc#ir@KS_qm`K@BjV(4_eZ9 zh=n0TriEMJMXn6OCa`s&_C{FuN6-$*ZZ{U|AH{~t@-}$=K}10@^ish=su#t_pN!bT?QPOE){R5{Ok`64ZVP`(G;1UCQyl z6ttHDROSU9cM}2C;N9n-qp`=>7+xej`S~9-S@9HQL;^g&0lJF^8l#=Af4W^cKu5BG zCOJXf{?;F$E^X@{NYB4>?w8;H|G&6e!NAb{x%mhWq6F;zt^Kh}+W1n-?GllO-(0=* zj9v1OmHOQmT5gxVY5WIjWS6n;1YN=QT4)F8PC)Bp(kGiArZgS|4cG1lRUOU0Qp(uD za<9dje@T|H?*LuE_?pZ57HDBkO7nq~?x`RLrFHgl{rUgD`&3$IE6<<*|3Md#gPhpF zaH8ROE6bn%|Ct%M7}7fDa{T%KzqgXHvz719|Nm+5{krFSTZR7o{~s8X0a|ny@FL~j z|Np(c;vkc5_wqP)w}MP>K5(b`;h(flM~-f=CC43kvZHYK5*PofRW+< z|Kp6H!v~K$iZn3zgYK;L1~nf#9c7viDniY9_^0{64!q_tqnZ;4GAES5li|3dObEm{ zh312*%@6+^cjRDWU}Jz9eBeu3ry~!Rd0=?j9 z56>uwWD^Ju2>vg60Ccm$R!{_V-w1yp&ka(=(e3-E^>#e}RL~vW(J$gH!37Gm4G!)< z@ie~>;BNs{vbvyNc8OQ>3&v7={_U;;%`X`FTR?sG<`+zm{qfB&5=&LGQvR26{1@G^ zh*JQRqcb*w8WsOVk1XO805|Ys4+$_B9{`bINJ{^gigbSn`!Bj>5vM>#0k}C1(v1aw z{V!?(8S~)DVhqSK0F8kl+Xdyv!7T&T7aadZ_aHkUi{XWd3nTJi3#5OO^*_T6QC>E_ z0nIPKa~EoR^&{kjImo5y$K60f`LJ2REQTx&@C-4id3v1fg*}(Ri~D~-O=-}13Z@_a zVL74Z{nLN{Gp=mp5$J7&oJ=R3#lUbJdMFLMfdiL7w;yQckM+e-v;Y4)>o`z4B(SF0 zJaeQ7gp~h;`mcVl{jH#h#upi&<8#iva0F3^X(dR12V!1L9lSol9FFb&*o|tQ1jwLs z(8}V)E6^!1C}$UfLa6myi6LmQ!=B%;Ae!{!-+vVUfgAujyO1aB#j~eB|AVfVNAHh; zcF=)~RX720F9H7_X9I=pivYOGY*w(8>Ov;?LFMraHMpz(e8=G`j<6R2M7RpPx%Pj8 z0nCA5ez$|m{|68eaCr_ID21oEKj5)}ZU>J47g`RK1aFKcRR?y_z?I0FBJd{Sulbc z9}YJEFCePa<`e(9FCY#1L(LOG(x3G|qaSzqfYQb3{@Cp*(CrI4q$(gduory#V`neu z#HoN6m$*TFD}nAG-Tcu03OMuK2Axa;&E@w&YwtQTh~3jnpesFMLrXUacd>8$cKwzA9kAv~c#%C7iS9Ay_L$m!rM(V!BH0dmLyWQTVzSU4b~ z15{dGGzQmBC|B0Qo4q@Yz=;pc=0C6u-F_T# zpnL%@UP0r2MTX(Rn${_OsyZt%-my7%_=K+?Gq)E-ToZfhr(uNF?JgU1$4XF{J+rYuFx5-5_jAkWFZ4o zUp#7o2RfCh+aK&*Pb*4Jye>RGIhm9c;oUk4ckTDbx7 zFlhW4)ZuBa6JX?TT?iUfh!tr5%~~VZa)>{+uFxF<0QIkd8AJ>yNPthi3p!&z99VbbzPfDQ|La#e5(6;e5aoXXd5OE!*MrA zz`20~{I%$dc+e^tju)VV@VjFLKql7mbo+4xhX;Xz!{+~m_)a&4&M*~-cCZJ-x<7)v zRw~r(CSrU^+f73H60@6vaF|Nm;ciem1LwBx6UwJRA;{BQC%{z7#_R?PH_+?>c)k~E zM2SLk9S=i^=Zl+v|NlSk2ATK=PdRaekj4 z-EKV0ZX)3UK`+iGgT2+uVvX<@INV_bYWivfrLS6^=KqYP`tbA>2TEVshpkVS^MK-> z`5-9zI2f4SM2!D4U+Aop=&TcY9oqW8)E?xp1EAD&OFIsnkZyvLka!V`_04iYXbJ+E z0Wkp@0MIh@wa^RsKmY%~=6E3i>Uh?IHif{0&0;1}(m`GV2C6SYIY7D8_*-+m0As00 zx4TGpxrFuy>rec?pO}wnU+Z)iX}wfp+U?H~1S%wSnt%K+k!St@&Gw)oqx%>%^MeWv z@KQa{0^@J|ejh+5KY&I-V8I0{pTLpA-R-8J?IywOCIU^U{{sX-26KXwC^J|bqzN)U z0un4S0;kWM7nY!Hb>J360w`PXfZL6s$K61e#G|Fy9iYld+f4+NWUY_a26dl%@%z{R z|Ik$B3<@4-`cy$lpYgB+ikyT|mB3Z-F#Cyw|1aeTe6b)AoLC@v0GzkG5PEZTm_&{8z zw*=^{#=|et!BV^>nlEC(EXES~7r{LY48|wp8UZ`rYolrJtvBd^PX!8h~r6FZA$Q9uEG>+h~3bQ>60d+WE-L!gPTz!x(vf=7EX&Q^oEC+mNPJEA>?K7N4O zKd1$D4YC-r6tWnPgWJBKrp1fxZ(zxY_W`6&hkBCj@vCTU?az^*!?dA&1dtKX#%XXb zq#<{l4V3C%@Pqdc2z2_1be{vwKfLe*4G@}RKYBJ?9o)i3ZLXa8UnuaR$`TyephYPT zXwql89VJkNx*a(n4Sc9*FsOmW{y#tfbed#^YPWdz`LHaeEQbF<7TxUK=Rp$U-RH9y zg1bL}gpS3u5WH4OeHKE7~?=|B)~R+(*qA^zQ6QKHyb1i zo$7S`0ZIrbYi#RTS`QSNgDx})4hLDA#qdAC2E>J^H0uW4q}F{4G+gxOf9a3^VK&{z zyD!H_gT@{XgZqYH7AU46IJEl>X!I7;ll&iGF%#4tf=EC~a9;jjEbszU;LHSVb^g`; zq4j@#Tn$U>x8jHw*FX!gESO3Ky03$?OMLgSPH&00=)*7efMs|~G+t~1vlvU{UaaT< zWti^k@y!-8-N)kK*%g#o4}&ueSbO*N_&8{Qf$CpSkh_Bxm7l$kv8M<#Y9}%#Q<*5yMVFtFFsZ;>$y6(fB{t}?Y1sn`7 zWWX{Y_X&YnAop>A-3M~qVT9XYI>7D&>F+)aK92$%LZJH9l?Qa3TlYup<0WFvFBnU> zKrL^+-U_DI!k~i`7+&)j|LD2XG5`fArxPPXH{=Yl%77OP?V!SrsgxHIYR5pnjywF~WgAGCw?y^DeK3o$MEb?m zHc*s;g6tSdkj25{(_aGVmP+*aWP-%!b5l@Yut4Gy)E$GzC$~6Ce5Qdd#ulGGU>Q(+ zI)PcB__TmKj)eHk`kzsUDF2$@7{G_J&@b=kb{5%rz=2C(1xtzG3da2>9JmB_9B}}h z3iji*{0a`R;02K28K@xF3a0&6Kx~(v-OkX0r9>WdjiXdU1*27|2&kid1T>xqX)ScR zo_Ni7-1P{!NOT2FQZPXDK}TGg4{(5XTU`gAvCGk0z?j9*%VP#Q-Pz(8f(`ES|6z_f;7fA|s*e#vqkUukV)^vh#oa&-efuv3LCv@FFLO0epg6 z^BW$Jz$y6xn~!9ha+Qi9SdWb2IyEc{;3B7g0q+cvp7L37=6Guc$aW@yPjxPVCZ&Z zdEEjsOp)Qm{YD0c;|y913=GXD{=dxr|NlS#HgV$v-KQLyAF>~O#eDfei;EFYiCed; zfVCS-F@Lw~i7x)Ee;phVFYW&S{|~lM8gAkLGL~>;8%w8v7L%6tLF|1!5w0+c5k(z; ztMUK;|6k^T&gDH2-u=_z1OGwRB^P)EN+rYgy*R)x5ccA!C<824z`R8XlAv5%mP^(*yYM$d?~E^W5yLbE`iR{KfQhu(6-)jwmFVm0-a$T zonbtkVFDd)BAtRAfh;d(T?gHM0&2D#f(;ic{DW`D#5THF$ zB-r|`^j;juBU%451Q44-u}va{K|J(=4|HREodiQ<3FrSZi5ENS85km)(;Cv+*8l(iLAket3)JCKg17*(=o3`rWO2M`KKciA-9TjPff9jkUXa^5 zIl6s0Iz3okGZ`NM`vBCzT)5#Nzrf)vjvcG}IR#!A>M<}Ff9v)A5cUGRm)I60+gbXj z^?#{L*bC69BHcg2Ux2nTMMh@au;UWw^_MvAE?^J38dB)m|Not~YYy@YfI^q0``nA| zx{zR82ohX;;UK?2LoEkG30!_URKC~u!;6QY{Q<{cbm=lMfLwD9C2?F1 z$u01&17vU)*!Y$M_43{4UPyz6;K~eIzm*7fpL>ye<|jChGRTASXk6^!u<$H~?w>E3 zK?_{mH9)fi-3H*MjT{3*_p!*x)^DZnn$tBHy4`i4k~{$~4xvcufNoU>wd;L3b{KeY z30QKJ2sR(!uwCHAB~bcl#~nK^f!M>{4lH2r1%fsffNsCx2*_gmFB-6jQ-FWJ?;lX# zQu!b#1427kzC7B#92b9r#!_MGx?Oo7Mx=H7a_j(YGED3A{gY;WqQte^m1h@dr9!s@ z=zu?wH0x8v{JoC*)0%%smTROnA5?g)1X>XHClEw(1O^4XI3&Qp05Yffhy-Z6Qd+m~ zpR{h61A<>nwqj)Hj^)T=0&hF$WPUNvl98d)nFW*+O60=AU%Uo&o2prMf>xt+e>m<8 zj`zZ= z$mhjUt=~#{gI}EHVPpX1R{q!Z-EJ)3SRxop%38mb%5@(;_=BU<^~(z*ki$d2@NYZC zzn#THm7#%w;k9VD8%y`)gTFXHqWf7q4!+=Te!$pzpoBk*sU!4FN9@~UuJ0HkUUL~A z=!kuD%=ImU1E}-(qu2LO7IR=guj`uta5#m(SjrC?@>2jE*wuabwGe2-+cwufC7k@* zeE%MNz`=bGv}X~T&_U_e_;z>}SETWQPPyJXmd~qSNP}GWuao^n5-7agSY8-fGBOyS zw2a{3pK`DhG_zf*75pOE7VOCqvF^*=hY$W@ZhpYdzs<*rhky0K4j(HXXGoCLT;)M<$1MXCbl2jxu7#X@NI9|Lm$C^~;H~)ksl^3{@iW?U=6ieYrg$XUG zu$zN6ve6)^FflNMzo_CRI;jK(_PYKEcp)qdniKhBe1O^YM`ZIQ23>{*yQ_`2?rogQ z2r4sAc~k;64KNhr|)ZJ3P)H#de#Uaod;}4OYr5_Yy|FnK9k?Z#5dGYqx z&;J3vzI$FQIsEg#^Kmu}UoL^>G!_QXwUM3X-wrdDaDZgfj{N+e#T4yGiBDhxxTFB=r0$MQV%F*d4(Cy08=_mqmY*@GHjYIqbyFfb{Iz{gs z;ui?-{t3E%3p5DG(ivi4(+w8w=6!I8AGAx3A2c_@(iy@5mv{n^;6z9qk0-LN+Fa+u zaGZ_74?MG=!NkDOQ0Ku=!rp!EMGI&V^SKwPV!!_*^{`;N@lTJ%-0!-+)$=24r#c`rhbtebM21<3-BsKmS4LzuWglx9gkki_Jd-idlO@ zZ*-sPuD0lPy%Nyv`hxjTw|PKdud_op=%!3gkOk-ehbc6_U?|}SjnnaYfXFzb+plAe zIomRT%<;VeF^U;vROuD%PbG>VlbL&cZ~QOz3Cm&(d{M;$8tV|S{!n@hq66fc5{cGt z{H>+`|NjpIyYj`9*?<1OjQ{`t|7J$eF$cZAH(oIA{Q1A@@N1?Gj4x&=L9$Tu8=mG` z9!CBt2ZF=8KN{Z-?{M?zh_ihWru_SVcP&Tj{}Rhy*Dsy1e*$`4e{{zF2!0Q$0-bI=oo=A>**o22K+7&%zjV6kbh;UI*7+>F0BV-GIV`+#h+iPS zGtQ#Z%>^8K2-~U0U zS%St!Dt*ASSw1i9Wf>VF4~KVG^7J~|ShAOjbq5B7br*(oife!Bc9iK9=yufUG>D5o z+*o%dK|NsAA?!&+B!*|d{liy!xGl0ekzu%6O zzWx2O^1Zn3^T*sh7>>EyGQ8kW`u)E--G`z3a5pbFMEo7Pc|kz}@?@vKOMEn_ID?G0 zylDIN|9@ma_qi9hL5IkJ<~Fkoc4UH5u?8r3K6Ziz6gZks|F=HP4^F3iy^f5K=HAN; zMh1p%H-&D{5;4{8FoSNZUKW1q6UCCC=8pgWPOk1Sg>Iu>KgLe34mR)s-k^-f-=YW7 zckab{(5XAF9L6Ut{VYnQ|Cjj$ylDRY|9@o5fo@lhNd8t%Mh1qLpq*%eoxU$Rd~fvn z-pJzUaJ>S}A1?xCK=MSdn?tAT87w)Y&Z5`#1X9j$J<{zb6VU5=H2{=j{+FJ4@kAb6 z>W9g+9^mf)9rND&gRwpflFpHGM(qjhUnOd=oY7r+;eVM=I4E<(GD0%PkJ3PhCeX;? zh2GFB$J}fgEklo#nz#PvZ%qevLTXGJskbH(u=A`tyJH;TIwD3=EJFfk1FV2A@I$4tmXQHy%rlVx{Ka z|4TUdw>kc|K3po=?WXgeq1#R7KS!@KB)$&6b^--|i6uy#NpqbAL#gEdGM`@8{~fXa z174`W>}Kgc{92;hO{Uk+#*(9iyF;@3+za);|Np;!-h2Xd%-~Z{A_29@0zsKLygN*$ z*UiR~sZ^@DR)n!s1Z*&0cP&qMtU&Ye|IL^Gzh(oi{;1^v+aCSm+OPlr!7C$=b002c z18FJ|`Clp$9R9z|=S8dvI6zwulp2BB3?QKbb5Ir2dZ1LH``n9a&C zF8|9MUUY!AAG>nAR_+evShxZ-r~>M7@~#1~oH#n2csjjUI-LYMokY41ffl4ajXfj+ zDh~n!yIn;<2hW10pIm=*yMjmKK(6d`{Zmr(LKouDOqfIREuanw?>^3bxI{RM5#r{R z$}l(E!IbVXgDTbOc9rQq*Xica?W)k}=JI0q@Bjb*qq+aY5AZZKDehMQxgWgH#fPE9 zy1ABvp_I4Vm519^pp-R>B?2@g^1qY^v=Rjrg65zO%@Kjt1Em64jQ`7gy3f7H{{jeYk}8f4R>KeNZXbdZ2>I_;!5v;poFz zIy7Yl!Zb`@AUTa?QEFZSthz1Hh`E#O5Es4)i05m))Qxn6s@6?F80 zE4X@uRE+|l$jV#81Uf1hci~%q1f_!yEfPb6obzNl*r5P9wcl+Mx zb-ixsdZN@2WJWQlp6zzMpnb5{_eMY#!;61ge*XVo?DL}980H=86a1jN{QkdQgV0d= z0;J~y^T*b2brb&=`}pziV_^$;u?>EKA3l=x9NbCPn&KFH!177o3mhuz}zbFCmlt9K!gc!%1B^CiX*Bjhu z<@hgJuz*tl+zicP$XLJ++Cj$g;vpN@IIu8yD+A~V0t63q3;>u%Xc+UgN;gaIk3;+d zjscy#8!qq&{1;7G#3=w?rp?)X?!^{K@E{IYs`)2Z(M2qc#DySzpn>73=8O#gOF29i zg9QGICV&hA>+FQs0d`RsI7I72K%0tQxLsvnh_pTy*;~L^!_@uZf2qv>QVEa@^v14L zU~fu5#^jpc@F1oXfvVw4UT|nG8DMUWBtZio^P{^nupHCBfF0d%ZZM4=5kDWnf`oD3`ImD1AWr z;0t9?(zw%^`U7L*)Wq%+dulPC8wGM7G{8;W^HH_bvlN^I?w8SkQF+ zYu4`jov}Ya_q2evY6J#@90eMWfVu?~bfCU{c=-R)FTqfsZ-Cwo18R4+fJ%(-t~?<3 zl<0N4f-3Kp^PsyPKk)a1@_xYoQVArzCE%-OBwm8f6YUi->-FLQ`Jwe-i93i^KG^HU z0r8t8g#W@_l7XT7PV4QGBB;lp5&VP~3@>Mw8SFf46@3-DAaSIFnU-|`9E0ux< zKVSS~0VPS$=#)-)xMi(Oscd+7Sa3Kv$U$Qg;4~#1{K6E}RedcCiR;&QyZ;5hPyz{c zfB#?lfl+z>BbV3=EO6hr=>_ z{6J?EDS#GXeaOi0;}Qt_FA6%I$e0y$+HXb)NMy0bVSWJ=;To{84!Up$Sl9qvcnVn9 z1YLLoSl9wx_y}0o23`0HSl9tw_yt(l1zq?LSl9zySj3-8AZ)P@y08XVH~?MP11ubZ zE}Q@sjzAZ#01L;U3-|bQ2`o-H%#RkZ3&5&V&{gjN3umAU-vJBfpbP&13m2dZ^8|o= zS%NOC02Z!57d8M3*PsgrfQ1{-g>%5dE$G5MVBrpQ;T2%v9(3UYVBrbq!gs*JQ_zKf zfQ4tE3-bhmd^rbQSOqM+0A1JtEW89=I07uZ0$sQSEW8F?xCbn}0bO_rSa=J%@D8x> z4s_uYVBtOJ!Z*Oe2hfBUA34k~V0-{PViDGD3JPFjQ&7(QU&>L!-F@zbhcKwFdCm4; zbk71#0Z5r2)@=&PRS<=sX0t%|IcNzf2~o}u;X=+-F+Sh`(H9I_v9tRz=q4i;>zUez zx<6d}mlgWoE&Zylrc@45@kC;q=??`HY>C6Wtr z**Iu29W?DF3(~gm|NsAytp_RuY@aYNFcfokvmCt;1ez}}hKv-2b(?~{3HDftlJSA= za{&PXkh1Q7sR(3W56GZsA+TrVu}F1;>6wYg`~t7Vj1L3^ zWHAQ(2On*^7^D?+_%gU(ELC?OCeJGM7Jx) zYM=z^MnFQ$QJq+B_g6&POJ0G;>zav}qGD(yurNP?H= zA`j?(LB~!otCIu${6COU01?ey4c+HWO@}djmyJkCv62)e_ z|0VBm8}gdDneTsG>`PxzP=g`^a-!T}sMAYT!n(nUult;_DJZO(AIe`o2M*Nkb1$BP znvd7w4hQ@f1s$F9-xTEE|DvD+N@2kOYC3|v-E0ezV+boXgqiohl*8B*6crF7L3YE; z?FE|)8YTID&$fw;qMi{e-uys*Kgh-4tkrztKP+o?x_$wzY<2y!bm`LlApH=5-qJ6f zu75T#E?v45vMM8s^~Fa%28J_P92q~B^9a1yA;`c08vEVh8^yqoW(hhuNT4)!p$!9r zKqF|Aw?Kd^14F6LPHsk!bcX~3gFvZWw=2g^1_lNJ?Slb<;L$_y)TerLg$hHB;&InM zptHg^Fus-t4O=l7pKP>XWnehKKjmQe!Nc9DFQ5vH4!md-gbdxjkQW3+UI{;F%|j`t z@qwM7bkz=-ENHL=1vo{)Nvo!24W_U0%yyk|4^dApKhRE+XBBc*}zo6{O0q!S(Dv4eH|Nn;w-|#>PF8=dB z63l~7(6khD2|$*C-2l}cuvI--JQ)%zcm!T#2rw`lbA8Ux9m~^wxVu(>fBo_9QV!-1 zou!Z!8OQxQYe7?nBHEujL8o1ayx7alz|ei}f2hdoM;jPBT%SXO=LKk^(~Eck28Kfd z44}i1VtKktIl5e*w;U+t{$DB*9vt=p)XzGcC6QqPviTi91B3Cm&eA{KwH%$LPpnG? zN}RN7c|dn@`ii^=2ibD|f2fGt>qp(LZ#rEcbh|$2X6SUi)9rev(IUAx_dyBwaaT~G z%h2t5Xhw+9mBYC+_QC6iDEHu1n~ zd8l4c9T@pq0JO4_f9e7LZ3hBgh%~l~7+-#cxYLu0*XR*KV=LDq^5FeDoUp)Q+9@I{K;mpgxkdeHK zP2hz)=-`&0JPZuSSyVVd0%jlq241khl_i`48C#Zc3cUE`3aaf|50q-YD25oKkg)+I z%d?nM;6(#i_BboZB2Y3iy4?{AFMeDY7#Lb^^S6T95igGLfbY+>V5@tKo@aAgpY!j+QEcD zhiF2Cqd{dYNEo!YQ3=*|36Q4m?y3?tk$xma@M1&B?%kuwdUm(Dr*C&}cq< zx5Jq;;bFnX|GQmOM7R&sinw=&s0e(&@%>iw4Teq^6_L&m6@hLS6&aYE1VT=xGekv# z`#`Bgw~vYhNWbx=?;pEwbi1eseE-;e`L$#B4X{jziU>&T;_HhyFTT2XgZp;rm+v3D zKYUM7k?B6s?V=*_{TcJcB0lR76_Ij|B6e#R6@fBFKjTZ?$NWp#zu)?Pqxlv?bX@!) z0qD6d-7YE|-99P;+$XwyRCr1`yIoXRzCS!9z!3cXA=rA3?Ke&QFs-3tLe8k6-^Nf3qSZ1H&hN0n-Z*7039S z_`!1dC(`(fKQgBA7hhy-{>fNk1v2IXMA4~ooizUNOKJT2r%IFpX5X|?N$X}&Nn0tv z5K$_$3sm;JxC36E0Lo|$htv4Ozoqf(pW|-<4IO}Pa^FzQB>=i7eh1jRJY9hjkn{3C zeBwX!ks*yg|6&^d?aOKWudjftH%a5qf0)Mq`)L|~{;f3r&v(-J^Pi^i|9+UppZ_b3 z|MH(S{7pX>Vx0pc!`&OrM-&dDM=(e|C`O?X3~IcCxR3}2$Hz^Ob56iw`a?Z`a}sF2_$MQO zi{L-dN#0;p&{zXS*b8s~>z^vqZ~n<67(S}Fw64RN;qts<5*{+L^7{P~a5 z_=~?Nr|}nGQ3k~X_W@XVZvblrCB`ZL!1pJMLKEX5{-&mX|Np<-4Jtza^M@b!#IJSm z;7j>W{1Gf?7k~=DOC|FB;U_=wYn?jy3M9;P6(szLKazI^IEh6ZJlwlP1++(~`#)46 zvN3RF5aT}aM;tu-UzKAqrvTDqO+08g{b_9Ar^DU8AB@j_dLi-d|Nl=fZ~g!OKOp75 zDai0%7Zo1u6cy0%dz~8HFTi~lf<}11f5< z6n`S%;!glx{PC1?6!BZTsBn~V`f0nU2uO#hh#242c2VJw4pHHO7UA8ex-WO%1lbdZ zS|EeUM-J^1%@6sR4@#fpJ{bA()UW^l;iBv?(JjCJ{|BF?1nMUQhh>Ss;IT$(A{&3} z1-IWb&M+}Bgave(ZaK~`@M6Cvc-XD86;xMu_ICXJ|G#r;3y7TC03x^6fXKZSfB*ka z>zTR)O!dwHQ*%qeRBHj4TABl<)@Jl{$hbYuwzWWCe7#P5{fU2n%>&rpdt2?aI=8gy*>H3Q-0IhvTkmK)JHhbqnM`_^{rH|KD%- zx~>47xePW(>UO8=pMQrT-KSpH9|8YGLH(!J1EswD+YW<V-F#n?N&(WRio#iZ@{v4g*Jl(E0x_zH?y8dYVn3zyn{ zQ}@)oQtlHGSqzaFI!m3qU2mva3*dw`9Rp+wm>fsKiwM8>uNM2Xr4urV`~@YyDS zD0bTdHfDxW!EW0<$N2@C&og#{8L!!(0<}NbyFn)>zvy;-(CPZ8)Adb_Q5JiI@kxlS zy|FhsnLCSFI=wkMgL%4L@2mt}^VSKvz3NX1XY+X`h;i|8D;XFB7)o*>K4&@33i36m z=32?Xz`#)w3Zeu`{EScXGhP6Vy@dYgcKy=r`=j{*8)$taTd8sD$x{7=pkQl0!2!_@ zs*%6Beo$Bp5-kyGKA`{+2NmRCF=OxrO^1ySI2<-UV99!cML+;FHU`d}XU=3CxX2~| zEl@xWrOq4`f!-Vy0qqB{TZs%^{}>+)=uCa_zw}49E2xkFHJw4}#PtKLcJJ8R@e~%m-|v~j?tKgl|NmPbFX3%HR>JxH!eUV0^mQ6& zR~uw5q1*L`F=#C6&wo+SZC!@0fBuU~EaVh0bp6xo`X=DNXbtH6Vc!qEu78Yu-x&M; zF+O2^zLb5Z|1*c(uLWAqmGX2S+6Wj-e3}G1`a5%)nka6HR zXm(L&5vRamF#CnSCTR2C3$^rL|GPa{nmJfHJy>3Jr2K*Km^wXJ4(~X_A|P-$IBegQ zZ`=aAL4@_^Vu|o>yVn0DoZaVN823Pf_@LBsQrfDYz`E&K|Cb0L0q`m9IwMbZvN9-_J;^Jv!Iv@;vty};=;{k zY5pltBm9{^pRf6)KyR5q8h<^1Z@s|l7yP>(VutQRY@yrD()(o%o524EkccV~?qcg; z_iR4K*nFH3B2@ae`yx1vfR1K9_>$@K(&k6Z|5c`fwW;*7tYs6J03vwSvI$76WfRa@ z%LeLV@x;X+o&YionqI){E;q&wcSfj4uO|aY9wOG|#?;}?1eKZ4Yhu`IV+po3kP)1u zpeb?+11w3Eh;(0Xe#ESOs>|(vhx>m&|K?YWrJuoC2Br%A)q3XXM2W5p4 zeosGtke?vj(vOfVRg}^A4wSVT--F1{{P}F3`Sbk*KJ({?DSYP7k2CnppP%ONnLj@- z;4^=IS;A-j{JMhA{Ppag`Rn}!KJ(XyD}3g!k2mD{Y<^gO z@D+PW8oYg)#-GmyO6{P076!_caRzDp_3UXNzodcuk_Pfi8pz9_92<}Z@^Tu;%V{A0 zrGfmH2J&AT$bY@tK>q994Q|^h_kVD= zLi>XDsle_--C$juU1A;LU|k1aFqQCvOztgX>8)q+DE%Dy^5s9!rqYazl{^A3K0wwv zwjL;{hKy#H7B^Q2Fqh^wR){FDPL?bYYOD}Z1Ti=pD@2r7Crg$Fb$iIPo-Fb14rFP) zRH6bmwD`{pg9lFy#Z4|r+qsJbh@5-(FtaXbh@5+ zQD@7*&{-kyq6{SDE70j70`i#g0f$c41D&paKud(cE5AUiVqchwfEu|XVC()cyqv%Q z8uWSd;y!2)6EvFi!oZe+p*cZ;p*vKhJC>)hiUpK9>e=}BIdi;b?snz?%_CF^7@zF) zyW!e6xh{r^8Q z@-=gJ?32S;EIW3C)~R-X`v3pMe`^MY<_Z~xQdyAuUo=@WFuZte4RR4j7DE<8r-#go zARz{Z7yA!GrplXZ6&OG#Zj}f@VkR6kJZKDFiYL%qs{@+YEoBaW&HTSq=S7|f14CGM zsmgyd@ESCc@E1IwF>p5)2k;KN|D_t8?i}5&GXD#BzzPJwhJjZ1Hy_c716|`19`NG3 zFarZ*KP%|M1qNtlF#~571KgQK6znPf7xLDi^CcWRJrueR#vV3?ti))3;}YB*%M%vf zT`O_S^#%jzuF=MN%(U_Yv>~PE9TNkCwL1%c?^Dozm{N{LJ5b#4x6Wr`U}&xrVCHW< z$H2hQSO2!VYLevVBSssKnC&)0osA2}?%9aDAa{o&oya3%46WMZrzlE8Jf#D^H z==K%p^!@Uht=soYx9bmxBluf4fcjHlA1`CX>*IEi!g?MCe(5lx0BNp~y{e;;`5g_{g$jM;&wTcG&>OQ-7vP}eE+On2>t&e{*%wGy47 zcUmviX@M>=EtC0g5ctB69h6}~J8Lz%UGFrzeqizF_I=aodZ+b3{mpLICmziQ1v*`y zbo#z&Jy56D9eU>V=KrNPK>ABnz<0KmDu9k1F#umC16s86B{=K_Xd0>ch)#Fti*DZs z-L5~Jnh%O}hQ8?ZeE{-eliL6P{~Ky$7)rRZ7{gxt0*&uSHq`!S;BRdNjgzy3hP&i# zL4|!$adW*4Ln+TUcLkP`bWmO^O$4z^bN`piguMWr4ig#Ka-h`bg}Vg!{Qp1W&q~m)!94*l?D;@x zN##Y400TqTe~@{>FATtIJO%!j%ePrmuHaxOam`|Yt_A+^qSTy$0komju+iSv-}ym_W}|(Ov-5)zMTo0|;Y*~#U-a>T zA`!IIwRH)|57j&j{4JpKKS3L^!Q%&@DnlXog%dxhB>T~PM5H_PkM*hI%H9H=ZdVy= zw=Xrx)^0!QsSsxVCk-5|I+%uL>P2+L=4lH?$AFC)f^1nu@a>g-E}O@$3HM1 z@2=(e#^6w@0a~4_((Cu-f2l%X7DE8CyY7HC5`_K%B?aFf-L5i@&BsJKeScV=D(a1k zjtA}Qd{Mp+T8_Sv04-AnZI*`Khhk@ZyY+uvA*htQ+!_0)+d-z=fv1}Tl&pO}bh^Ii zJ^{L)+84BJqV+(Xb+;P}=r)x%-Ju-+i)8*A2D~T+M*t{kOLn`078iRoA7trt{n2`$ z6O@bJ)L(hcw3)Fx^iQ|zi{?WDouPj~cjB&ykLx-N9#?sBdoRRo!JvYX!}yz}d7Wza zy>54wj6L^x1iD?AS(*>91iXlr0+k)09o25lhXt(7Ywj8y0BsRFyn*rc_lU@L7M1@G zKJW(~GU||NlP>8mIs@lpgK@Eingme7~cYkuoqq*!1G$o^&%{# z@t_r9Q6TmI&0h5U`~N>OvXkw#r)9iEsT#z{nXTVSrv5J%0jUXmkqK535cYxxENce`?cnrsE2CR+h$ZODsAkQN6CP!q+vRHP)P`QQJ#pl)9Q>q3@V zuWm<z+0c?)X7l|FfK#t2kgg1vIk z2<#Qm>W|>C@c*R(FF4wM{*QdI5_H11uY~cp?of{1|NsA&-w$fRTNWskDm7YxS`Q^s zjaF(53=Jhh-HghIt&bOReREV`)v}ON`Xv()E=ysg)*gF*2jyIzd0(fl*B^pDz$8`5@0SewyY8< z)9ZGU=`P@C{Z^vFzs*$zR3rZ{l>wOxT009m{v_zdo#&vgLGuv>(7FKy@H#XVkP683 zYS4?_-$02_!T5j!IM;)+dMM~#anN1w2TIC%JvbUH8A|fLF*S78@|3WCV;3k*?2czK z{$_o+#Gu!iqf63CqExEoc8O3|B%@UXV<{hK(dhxEmfNLIx{tkPl|ImX0(4*lXs%uR z8#_}8>o+Ej5~*%ifo}|qAP!>*?>7dpFjEP$@i({bW3NG{I)PpDQfwy!!wXGANECrO zLZRJnK($aqJqtsLM>l`#$r7jDK*lac$Cd-7KebN2ERxK-RATmvh`buJaJd~%n@3D7Eo5BwXsAgg5{>q|k4B~Kg}!7qQPk!T%zK1^s%DGu=Ka9H2Si@Zhj!ThMSWBY)F5&>%?rUj_yS{%wNYw+=qy z;J(b?@{)mpA&o!p)+hdg+YJ0-x6}CFAL#zreEvWGHp%9LjIFmzWWOH-jZ2iiOXJTM zOye)Pkj8)gR_pCj*8L#iH2%6{QZHSfuUUeGk-ou8vpxCY5XM@)A&nH zr}4i&mBxSlX7d4o*4rhQ`1jmyej&hon17o@>+O=P<^zmYmrM6_U+DE?1RKWANEH62c#{c>v)DaxbhXk4r3cNnbzvnjdW#-fT+az0Wmk3x%@wbAf z0}nAaA7p&J+yk@`%lH6@1f{s|-9N!rDc^)z0~+OEe60k&P>_F{Ve>)8G=3|EWBh6S z#WxteOE_Dh_x0`%5MB467HUGcFmFnMyxDwAp!twM8oyPt-v^$;NtI_`f>x;TZ<7M;`EmUJ z|G$+Se`^J3lJgj2^C8C9Yr6!yf3#dG$?qy;Z249a+Wj3gK-FcUffC*> zHVB8S+TIEaLf)I%s}A}fmL-v(NVZ~=7a$pz$O)g7Y3vJ;eE znos;!K6Uwl_C=77(NYO0Qco$L0Pk;XJ|yt^4*#Bm%!fcJ%=o000Kebehhe>XnO{DJvr^T+?qAO0JkH$K*Uh^6r%10!Q&siG=~D!B}z7)v=CL06VHlpcwT zk2XGVxYy}_^xwsm zzx`ws|Mr8RRLhjcf8+qW@qsk!gC(rY|M<7_gT^)=b^HG44(8}S1U3U=Kr|@DG4Ymx zvQoG2kJpd*n=gQuJy<0(@%D;%b$j!4|LQ*8>H7yslWq4wB%VIM04K;4e%?Zx3de5W zKh4L%x$-3cb|&NhY1TjZTR`^>g50u^`P%CS{_TvQ$~4W=^-qaVnk9QF8}mQrbFXJH zUwc^vD&P*i3;-2Y;L$;_f8O8j_U6c9ic90qJMf9W-~dA!f58I=6gOz`3vlvl98Tje zJ($K{dM1tk^}#g$>jywbc!3It%lvx|bh`ey_@bA`k$*d*@uf8D3;Zq5L8ak#@iglT zrTN_#yCFdf2^JTWKr-VO5a$=*f>>}Wjlc9z8hh2TWhqRA(y8Z!qxbazhEg63h(}X@G%GTeGnzUeE+p{ zeDeX85$%AgMKSrlZl#O1ONFIDCV05~K z$LMtl)9VxPOasX?VDb;-)P?3Z3gF%Q;aMD!`&>%61bS;9fDUftY5iX!18PBwcXKzt zWC`qM>@HB~KG$6#@xtLgsB-L#{n1(br}cjc&o_3C687V+Ul<%_GJ@yyN%7wq+Y(VY5%!T2C(DJN*!l&916OSh|t!*SO)+mEve zbo&12bp4Y8>P|9ry1wXjeF2$y{9h^&2x{RS1I=%r=!OZy587&eV-eg~%c0E3z)&i* zqw5$Os6zufWX9p;Hc-bU^#sFl*E2OI*aV=?IAMGcJYXRK8ZdR`>2$r(?J5Ia;H=Q; z`T#Pd_=2H1^$kO3>XXjg7ceKC=yg2-anf9p3*G~8l&uH?v6dt$(+&&=Dp_Zh8f@O z`UBiC1f6dH>8y6wa&-IibYJX_7XTef{jI_*`=Chk0S@NFperamyK4oSUx;{GR)E%Y z*K&2&3Rqio*K*Xcf=<<8?+*Rr2i8@2soPb=v6BOID35@3I8V8N^{H~6?1Lilam>)J zXux_%S2Qpfw9fSa4=6@pu7&s=)cJ_z>CXMro&4wj1CTopfulJvFgPqcr5n6zrL*+M zao0aR$Jqox3om*8m;M3oht>e?I02n$#nSxXZ?`W`rz1;BH)z8RLwD?tPHSjD#DiBG zKnxB0(_IR>t;6`-i$ACS|IcCw`(GyVzl;ZDtib;=@UF2RpTW&y$R4w9U+@-+PQDlO z)EF4LJybgVSYAw41C7+EfR0E4^%%llG=bzwIjjp*N(Ek&sxdJ1dZ=`}v2=niPJfXK zlJrn{&Drh9V*R0ntNTQAB@098$JZPnC5|kwZ@ti32MMJYmLRnbDxe#@yL~w3=IAQI?2m}!`PSSh3P3!kBg(*fu;FDT8Ut{E6;HU6;NU_KH%^= z=XF*VW49~M{{jgxDFP-Tz6CSE9%hGl7!*MjDh!}S{-BePUR3-81rTWP7=%G1G8v#e z@#5wmQ25AnyZ-5p<>^kA>CRU8|G@Zw11Rc1!O{E%)QR}h>G}t>feW;>2;AEN^+`Zu z%rifMv@3MF{s2Xc>krUq3Z$6=C&R-==d<%i=d<~D;hN7ra+<99Y_K+!-Ycis1SWup zJEz$MUYuqV_;Y&D&Sw{#VH23paE48w;|!a?j5BNkYtA6K6+BlBYAwXYA0D00W*nW* z1~&u9n$Lz8zL5Jz!=Zgf{wC0nM0YJmc{%^KP@e8Xpn(aLz9YEbsC>Tp#Q)0=w0|03 z`plotkJ@v*4(c^Zr14)rseFQe??L9{tta_iL3^-4E%FP&puq>_8y6oMAJ9Iie8N-t zbTmwn%c1y_he6i1UMjIPJ^)#AQ6kE}jo>5__jcEE7$0ap`Tx_p=7WsiZ#KVY>~iJ#`)OVCaYhUF642llQ}^*d z@h8Doe}ID#w8|gS)xO?cqXHg#wqayo$UMNv$jAsi%^YzT~QT6J!wRKpLoP#eAM$kR8;4d;UTDJY?}noey*+1C*KoU5o)*Q&jJ+kj7u{ z4qBh#?f_y1fQSSTQ2<$T0b5?e09rP3^fi2KSg{?bI|sHCwB|$xx?06up!v8$^Gk*1 zp9;lqz8{naE!;}#t+9LnmxsFl`$2H$pRa@6z4;|0gjf3M`$5p!@e+RgOQ=2F1-w-B@CJ}KJNMj)MDz61rPKSB2{H6P*m=D?E1-@1!|fuYm&Nw4dZ&e|8< zbv&JJf13aQ<8L_$9*SY=WpVHJX=dqVY3`N)9d&)OB(*n8;KhD928NA{9lrlt4^*Vp zg?77gK*!n5n{8D}xC9tV^fEy73lDxKhUOzItp`e^x=leM-RD3PRva(bE`fSZ;M;{b zKyBv>-REA+lw)A9tm7%kc^%Q^`@j2l^Y4EpBHgh+UKWG;u(3Zt9V^h4geom3OLV$p zf4r7%uH*SvqL=~lYOkBXF3?H`(0O^8a-jLZH^DDv{sXnrIJ#ZGfLdu!V-LfWc3%gn zbChFX=#1m(jS~n49q5t`>eKpu0NsXrx!aTD#RpkPdluwAUmoj&ptF@?4>uoVZ9c%- zC1533D$#POcAcyx0hIJbRya-$Y zI*BQ=^;_vjNaGxI%vty0u;v#G{4Gz#7#P48L7#>(Cc_vGVxWm?(AA9mEo(#>7`jV2 z!kd39@HZ`FVPNQHvu5IN0j)0K-}Zxl8 zHYax64qCttIuDV<+KB_^AP#H}s)Sg_$-m8s6T5Zc5EWef+nl(tt1tzt@Z;v+=ERNL zLHu9`@mM?Yz#PPb%|S2N!2aju-{!=N-MV8C6@2{LocOS-SOQkz$Irjbi66Iv>exUb zBw+0%082-tRCQ<%vPNLYYn-5VT#=p%;47-Y2unIqM{%ua;xE&M@c94X% zlLX8`64)GM05+^nl7E|%BzEigAS$Hzw>e2+SMi1gOagtes?F z4wAvSX!1Imu$Tt`?#~j(?kz9Cj7aU=@Dy{M(%5aXZMAg@FNdzQRrBkIWaX zZ}KCU4F6T;w!UH$=yrQz?ev7d1+?r0Qb;_(Ztr8zYVB=x zPx-ewJ;km9R7>-3t9!=3&FL9-74yMn_&w*}=JXu5+bfwtnc#)B(+gy0y})jy57@}M zm;BqDUSe0F1yS*ef1A@Q>?%0GD*RsaZ*zK$+gXo5OTFCQSUbHzcGes0Ms8&SC7Zgp z{M($~VplO4qT(I@Hm7&kRTP3%_`T=f=JX!7v%JC1`e5z!0ohp}up21{HnQ#`|2C(O z*j4-ijmK}R`^3M^=@WJpx4I&D|Qtr5Eb9}w>f>ouEGhd!tXo(HmC2n-6aEd*AHu_AIQP=1G|x+gE;xO z)&1n(=JXT0inE{=_qMuU{M(#zSttH&b^rLcIsL;btHQs{??3-Gr~kN|QOaa|vio5C%V)fx z4EWgE=`qYPkFgqfnSWc|6aH;Zpb`VqsayFGr3I$!bpCCAkdgvt`vtTNrQ7YfwbOIt zsCte)m|ehkF4eu@-{yp)q)>vWz*ACy`Yrt1{2(O-PG{W$wNTw&TRXi*cGhd`&RY8q zblgJS8~$xhI7*6chzdL<1!$EH|298JNrBT@&R}P~w|07u?5y|Loh1gb^aKAkCmbck zm%m_#<0&aFfmQfHN(!9LS_9fE==Ry#=`*skK4W)QJ=n;)FQCE#yNXzd3OogcHCTlo zq@cj*EK#ttzFRwehZj%Z`M1@5$8PKMKj6Ul!N1K3M@exMq5@Azu^6nv4^mR#bXP6t z{vEg9)=s~XgX=eTX9a+btoy^i%?VUmVCih=K~%s>3@j>mz$*M8r3OxCJ^Kv`0H^<; z5=8q1f6KMspu>n;Pa--UFAx6)b(bGmJ3T^n`6KKup9VIs?lJ#1Cs5IX#a$&36|mw3 zi;5ty3csh|1_@4=>wum0%-ZQ0va@isPyYV`d9x1EKEc|1y9-f)r`e9-;zIG1CiH;Rh*Za5^g;?5t1LPM?sSg`<691vat{(muiJED4AT zJjKknA0V&!L5dli&bk2F>Eiay+UXm-5c$Txtqw=~WD(d*Cp^VW14P9S{%v(QikUcw zil6-3{C?u9#raz;!0!5G?eq&dxNx*jxWPu&LE0x+gX`sYP+;IIW{!hZ_(6&poWZs5 z`~UxG-ERNVteyVxw@m#0|Nl!@aKGuHwbMg*2tMTBR`(ElsgVG-rtT5{HYXhAiXB7+ zo^nM7tilgcuHba)H_+8KZcnY9o+5`Jj(*R{Z{YBOv}Uk|;BtrxJmpF&ScM;?T*2wA zc(AixT06Z&b{39)j}h3&I!J2>usW*}q5@C35)M}32Ps!@I?E93tdG`CAK{7XBmcHK933BKu$lNeJ`cZu z0s~*cvLCF%4^pt;bl1!;py2vy?erBnxN!7)a==E`L7FpIgUbt|0@ClnszL*-!Vl7X z!Rag}u(N(zJN-m<7LI<;)z9FtfV5_?TDlpc0#CUz5v;-w(tN?`tZc9o-v2g#|of3fiFh5!_EJ zgpA8#RRKELlYd(wWLy@jinU-fJYnOqe5m8H-3MQS4!rFS1#J-E-^RtijSaaBhdHG* zi+`IJBmXuxMy#?v{M)>k__w(+y`D?ZBn6mB;5%WvT{-x-adf-#@NZ*y84F&w9~T{a zxch(q9X5g057-1gJYf@1d&wribB9epmBgvYajSG za(9cWT;vgGKL5Y_RQIRmhw{cBE}yghUXs}gy3Op^>*VfI0npNassCm#A{iLK_X6sJ z4n8OqDSZRcYkZ*fK#3;!st@ql?vO*}!(K?Q`2Rn$o%!`nh_cr=A$0elEQRI=@{!sn zE}u94)ou-1N(Z^e5VR=G_++^8fnJ-rXO8m=eBj^6-+iL>WC=I?x}Vpf-7<4iO1K2V zG8i~O2j&I;7kvXhUB2~OsrrA>DGNCTntz0s@`i=MWkC0swSFt*Y(DY7o!$7rYr*bg z?d+gkj$!{rJwSSof$qTsErkiokSXO7$PfV$pu_63SinpEL3gwZfbInYond$Gg~<-k zj80ta;kelUsyT}w_gZJDfHZ-%gATRNVtoPXb2c9l=>G7(6twOibei_B?I4|?)3ht# z=SYWT=zw&Bwb%G@31qRo2n0{&py)gR*I9t1(*&dwtQ~YTeir)+&{;`PJ3$A&wSEI1 z;@u3_T!N(82BaBm0_Xt!ERGkq{{H_D^D5|6Y|zdGkSQ;mA^LfcPxX$AJq%t>w~OHf zzd%^?19{_bprOzcJ3uMx@;T#^kmJFvFGyc%e)PTh5T|3OL9YXg^{LWt;M2yzC%CGI z?E}R#XhV$v=!j(w&;`(-C}~z>Xg4Uh~!!JZY8!Ws2|NsA@hZ%g9F8D;? zNJcQ5{l#Wx*m=KOKnLX=0Bu0XVtA1ZO0gRlL2(PVQ0PSzBLl;WR?q>M3@<=ehed); zg?-_|2tFS;>_rA>h^T<2^;-#OOMurlP<*|x?to8^fmV9ig1lV99`K@|7kq{z_yX01 z4xn80<9~@dXsWaITPa__3pvne!3VHRWEMlf3lH#4pfK=J%pgB;LY&(2@iGI$;bvQq z3I9u(jSn0S4u_=V|E3_Z?jJ9%fTHF`BdwN{2^rrGhKlV3i@j#)zGwU`?8V|9&=!mE|DqX-I0eA> z>SVaSV-tAs^w0nQi$Tta1f7u!3iS+-{{voBfwi}SPFn_@L-YFS2FAl+zc&B)U&0sg z;u&b&881lZ|HuuDh}rftp!wkDH!Q({pcQQ3C5GLu9HIY91-g9&x^w@$&}3#{2n+vz zAwI7AZfv)&Kxp^t#-E`3NlRJ5N7V(sU}t7vh>eUsd58ycFsV0C+N7@v3{x(IXz zRfYs;Z+3ye{{oR0;JeF@@Wg`Egs2E~GVK7()E^H0U!ubCLLl(x|K=ks;4Lbe{|jaQ z7fSpu)Of)O+SqV}2YgFbSa@*vE8_#kw~a3ue>497|6(-gCY$b8-5mmWjK9g69|04_kocCyu~N9J4b~hDDZ!YipYzV;3A4A_7Dd{ zSor=7&@P*AS&*x6!e7k&4VsJwo#QY1pS9rxzd-XbiRR-H&Hp5dZf{_G%?_ICVgT)3 zJRH_-3X*UAR-%x7Od`B@N5BbwfpEyV@Bev0QqAurn%^;&zK#bS5)NGu0C8a`XqjWi zi;ryJMUffr85v@sbKe-@Yt-$cBGT>g$N0pHtqZ{6E6^RF5!4-^5(M6E)_jBmBX~iH z#zjRSG$89=#)psSX(gc7MTG^rAl5}i1C&-kspNl&RdbDs&i@iN>k<{6GTmO2vTmNu zojxi&pkz|BnT4TL9Fk64Hgml21Qj+QMm%V;e>=$8&=Z!R3B~w8N;mk#rN&AYkQ+(` zx&wK-gLo_hIZ9cBnJOZz|p$yPk7SIt@&MckTJfVRB5s|Tx(T7+V{$DuU z{U3a|nFcchB-a=p?R5RqT+8u4yo3|9(o<&3|NoI$0llpc{(x4J2E2H3=l_53VQ0Oq z27e(!7w`Q44^hy3M543x#vc$DB-sf*P^`1{0qC@|-a8<2>J1P%7gTn2ZoL3v?>z%P z;%qAD9`v-H-Zx<0+!J7`^$3_+dH_tV-2*uV?E|Rb108<$0({OHOJ^%+%=9?eJ&cf3 z&^lY6fEDp{f*s!ND$v;q+8Evq()I>)s*31~1)Ks|44_L6K<7mFf}M>x>rA-yeg+!EUzB4pr@;Sfpj{nDM2yeIy-f#D2zp>99`c*kw?5s|~)|HF*Gg@M3}G;qcj z0kI+HexJz_f8qLu5#%t|EY`@gnqgUt`@~ro4uoYfy?FT-oKwS44$F>%q?B%74&wvX zJV$5La0!&CJ2d~$E&AB&__q0nU^#0RZ$#|j-bT=TKo(!5^$E~zOw9*4Vh?w-9Gz1G zx_bj0Vqq^pCm(nFas+mAyjTv}5ZwI%EYxWLs{eR?g2JnmZAZ#Q9)ZKn2Sg6P`1u1W zlmHPDIQ){Uje!AdT6p)*ZeNaL?mP^wCrh}x89Uusx*b_wi!HP`4Z0+~RA`~cWgdY} zcb0`dV4CB#OV|sQ9}En=;Vhl(LA~W1-5x%jT-_cX0iAp=CjVq$2>WmTV#iMghHidP zqp2}~nSmj01yd<+^9iO-Fz=W<4`cW7cu+A4c0%(T3D6>zFwn+E<8Q71OL&bBfcBGt zjzmi9WVbBkDV2C({{R2~;|yX93=A)VLB-^W|1S+0LF;rxdVOEKFa#~}aedSJpTFe< zXqV}R6$}gvpkqY%TYiGd179BgZ7h6go$L)Zd<^_8PZ<~(+?tOwS${5i{t|TRdT@C2 zx&L9HBb7P-7jQss&H{CIt3GxSHxffDsz z-#7f*4g?0gi24EAP2TPMr}aPynUw7}=ErggHvcJ2P~+R+l?55ewIo?bu3E;cvtF3*pzHNwKMxwn+}g#g@` z*UY^I{~Kz*FqCk0`@U#i2#SZl-N#_1IjGobej@-2cpgx|m$J3qE|GuD(t5j8SVar&Fa^`MV3D8dD`ZCTJ zpc5Oj#9ll1`hEeOlpzxS0(9bO^AQ11dq=4CKj>`lv`+RH2_W4DudN(f|Ci`kA1+gD zu9f%?>g0kXok30jUl^D0=l}oLqFDjmhvSS-rgi$b|LgVz9RbAD$=Fc)2kgZUP%p-J z9|P}ofaEvOo(2h&rT0wWyet7LYCvb}_;Q4`UMl5nJz2_Y>C029Xnf$cUhByc$!=Fr zbt}|*sg$Kd@b$~?Qi0ZQrIN=O8D6Xe73Sc;IR+Y~KL)-=I9U5*_l@xGpUuDimkM^V z*mbbGw;U)@ZGO#I`th|KT!5?jHDd`YXsg?s)=S-?BBjj7*cswmZ%3E5gLHy!d&~+r z=EC@&A>#FNkYzR?%amSE1ZS4mm!R?i%nWR8Acp>u#lytyZ!vfSuIPw1_=saK0 z(mnyup)jrgOF>urNm!PO@VA0aA2B}g5_G!+XrugGQ0|Bo0cE#IpuBYfe2XRMV2%H! zGS>IYbh{;b-5CQwSp!s?fwovSACYPP@vqeP#S)NZ7D}Z#;3G0RC0-|YGl0(32JLSF zDTbVIAal$`?mq)ahjjD*|D{qda)1B--)x~&YWgA>6n4IUIyqizwjQX|IK~E6Ci}ws zH^@VvyV72Bzpw*yz`l$6_5XkK3D6C`@am)SO$!TZ%`3ss?FvfPBAu-Ze*gbpD)Hja zFOYFy6C@xeycA?)U}(Kv0$N%40JPOzrnk2SbcXv&(By_MNAKPV;AtY`ORHC}Ufq4L zdoReS<_Aojtv$d0|K~o`30BZKcgkuVN#8C%Jd|Pjqh_-&KWa;34%?ndm;@iQ) z-rM^Gc9l!toXDH$A274JP*MO_%=oc@hL8@oa{^{m(|6d=5nN+$h>t9@l zkNp4F8^Gz0n6Pj72@m@@KftkvGwgFgQzZis_Gg&kVSfpb>JKMQnj456^knM!2X zH`huql#0Gk`~eSM+wb7ujXeyyLaX&#iB)s02t%0(VOaJ~Yy!pYu?w`#+n2PydG=NRwVPIe|I`BF;*!VW{H_Q1Tb4ocH|A7oB@-@>&M&ko5C;6uw zh&>D%sW3VKstv-rKZbYj1KTDDTJie7l!f`&YbIvU-Sgn|9t={^>*vr74v5zOrA*yF zUpxa1N5pb?F#qVRGwJrzXgyia(t5kZ!1z-4;qRq9o(+c#I{h@dZ#4X}tP^ag6=2|> za^T+yl?N<|I#x^x4#4h@;po=p zgRBkZ@#v1_K(d*w`!M&R5-U)pC(!HoKPb4y-6+6*f(fu?QbpH*gtq^AX&9YRWPA0s&R;1gPBm93U&x<3VlZ)*Cm$126mkQLp z1b2WzY6FcAbo&13WbAZg>2&1ibmZxD6zFsm>2#Fnbd>3IROob6>2%ac>vS~ebhPMj zwCQYgU}0eBY;*z5sU3uu?P1*?U#tN)>^Qm^I@>%zvaURxY@p7F8w+T^r5i`Ls|fhc zc$rQ&5ztmd&_yF4CxrbkmFfNnN%sFsVcYJOg6jTd0ib03;@Ow~|2y4y;F`j^KmOka zj{SF43=GZ7Kum^6XtNz8Y4+l36=)4LN3$A3WH(bMTlcYMC5AY7GZxf1^yLWdX6SAJ zRg>KeT@tTZtqzy4J9aU)94P$?KBS{W<29#EY6-WED@^=j_eIYJOM{YM7Luimo?T3i zP8}fS-@xPBq1|t~d^vg@AJ{~d^YiaJ$iJ<@p^i(S`2j!Zg6HfLoZvC>7RH1+E`ftD zSU@8O;8cUAspCN{mq7DFkfxIm9VZyjbbzuh|30>W7pJ=!7@B{izUFb`-^Ld3qPG>) zcZe+g2$o#e&A<@Z{G+0jx%n7Vw<}KUB zD;0h*^8-BaKu2*I9XPy!5j231#nAong&af`Q{3TRH;DjH@`5DVfEUf2pb>IV83U?X z_A@kqRxfgN`57K_vti)hcCnkGn<1^$CZNOuq%#nr?S(HV14Fl;Ko?_&n_;gbV?&)G zL#LZSsmKdqge&yl|Nn1v;5E|*#`w5HEDQ~mhFT?Dy^b0IFS0;aE;T!fuyi|$bUXa% zbkt})P|4ElsqudUt@X2 zh*CZTmIw90I|F52%yGU!rxM;*{X@8GN7k2~ss zM($pM66|qD9ncLQ;Nz^j0|mO6Y>Z1K8mbtLN`-ozn2tN@aDh^gEl*lyyC@B(1o>O%gPT|{&oVMF1ZN4n4sU)DRU+E_g1saR zl%7kU1a_Z$@e4GcbE*5>3lmTYbh7zJLA`H@ee;j>I>Y84nIMnlfjpL9x~==%3u#c{ zwY2-(i+P~jIj7lAK_D=TtNYvwP%Ztsr~BNCK#(cT-REBLvoSEdECJE1AO-j1PpTflhY#(c${9`_RD`EG>si z)Ikikmcu1%$6WvDz7}h_3}$J+=IK6k@dZ>|q5F52pJBt#iW1g_pAn^;AU&)thfA4^ zZa4f)Ea7bU=~%)7N&PLiOIbi8G{;FSbAo$YSU|_u@3@=5l+68rg0)g@Z4cRxp+zlqv+g=!7T* zppqR_MtzS|fu*c&SB~Z%+~t!0Ra%d5vI}IfM8txQ z2aG+O#q|117RT!kp!4dw|F7X>7ud+jF0hT0T>!-1#mO!J!XP#X?}Lhi*dX!l|Dc*Y zyxC2JrQ1!Uy8?7-iCK3%sKKlMzf1>Iv<3VxWBG6PBKHeu3{;>q&ZOl4|918g?u#!v z-7Jo|*)YBq?{u?x&3D|*WKSKJz;QPVP!0l>ckyu>7^9)Ri9k?!2ugC@ZlK~xw#&`X zCb5Lq#<7I+xSIw@$7|W+ZW^G%;I&Ap5J)<`gvG|al>N9HD0MM(yJ_^+IRx*H1tqof z%!dPBgns`2zvVzFPxtv3MxX!x*FN0orqSIFYUQ;aC}rwC4n9dF^$$a*n@O{q2uHV{ zNVnsUPS+pZj(@t(ce?(0@#oY3|J~reOZSP^+oeq1_y3o1fHE%F$N$ST0s_0wzu5Bm z|NnsQ^DoYQ`u{(m*Y!tmzzYsWMuu)Th2|p~2Vby8gQB{*PJ^M8_kS73|1y&owckLe z9U{CS4o(uRD;VJ_=6(gK=yo${u+S~#X!cWZaOiY1=?*jLVzS9B;j!^7;jqaoVX^Tm zWjW?%SlnC1*u~}4an@tt87;NhumP%|JLHJXlrT0}<#dg~lo4wP6z<24xK zOaAQ+e<1z@`RCt9kbm4Pf&*Rzd}m;2J|Ym^dZ0x0n41CUs!?z!t@UInQ}=nOAzcoC zIv9_;S%8XiSTL6`b%T0Ipi~WRzJaHlxj+R-yNR&CgiBbv9sazw z2hCJndTos^$;Q9m;m>PDkY`^@V@mFG`16{Df1AUfncXMCyXzFXkAsaZ5pTUzFI>aY zda{`J`_1M{4Bu}xpLgi2Qvk(md@U%Ef;|3OusKcPJGj4W>84S~-07y#eUST5DNA#j z!hOi>Me}ctQtlv7>CF4-|NqwaDZdqpoHhYpGmi$ z$uUNQ|85o=7(pFH4hBffLIb|L;?D~<2GG<*smKe)7w~YCeGUq@*Dj#YzVZA2|42|D zSsO&if=g?G<`*ob=epe_W_Gf7hO@jD?RJysWPi<<*6k(%8jxn~a+By_2gNri{tkBs zDu9dK6^tdEji*30QfHt-7DE=t3zdKW{~yj`%n~^6r~#^>p;hq<9*{U%2~wxg9r33# z&IB|v$hseNB^qk_R0Fj{j|j9JD3NNt4a(dmN9wo)!vB|(z#CnSIlH&@Cqlt?yL%CMIRzxePB9w0o=Kmh`2sDX}syx7gv?Z{#6$kOe~ zQ!3I>$-_{>@}J=~b2G>PZl*2=p4Vdk8M>MNJ8*O}b#rvNa&$0uGyP}SzzFYjHNSxz zh6J7h1Q(PIbv6tovE6PKtq1DDy6a4gZ?_&ON#)-}WdTR2L_-A+csO04 z+m(lr@wHdCt3Wfy|JSbC1stGL#;rdWF?D|q1MN#TcoDf1v^MQW^AVnIMn;2fM#ch; zZbpy+-L3*9EQ}Jbxvf8!u!6KRF&adJX6L}YxRWJJo&1n-8v)3;4dhT{@Zp@OgY_aW zLDh%?v>%B)mWAll7rX|kk-@9x#2cs@=w$bqGiRD@Z?Fh}&Mm+BpMjzI4F~_a7!?-K z4tv#xdIkpD26+aCQhwN7dCd>%)0%(O_ok?D@VBn`&%p4S;WK}oiwa8`zlP|CI?#1^ z8aLATHBO}QYdlEf*8p8c_W^Vp-v!e&{^H9fY5XCo4D}#obqCV;e_iPIQQ=ABzkDi< z|MMx(;eodQnHd;r`;p^Bb8oeqk3Cflkm(Vpl+CD~G6XG#`@a3{hce ze#Ox#qVi((e+GuTE-C`eM`R!scI->>MGVl39-%=T+WjUBI;9#A5YQdU)9cC5#l&@> zgtPe&BmZg^mDeA;OF6p#cd>CDDB)>7#>l^zMWy&-uiO9TBMNaRL92_1(BFLWf3GJ) z^Fc z?f6j7z@U60&H6;CM>GHbz`(mQDlb+sf^LCre!*Cx1|mRbJ(tMbb>+Cr+OUXQAguX~ zz>R}v9F0dhBBV3`TFueGF9#ophyq3G`$`KCHD96Ca5FB~>^PWnlR6pO=AwgP~cGq0^BC8dRXWIXJ?)OF{Q@%slu& z-uP0t9}Blw<3ms>&V8`cjivigqaO{CojWq3i{~P^S{{QC( z9Y9N}_U;oQ2*E4`v z5}h27rgCWa8~$ys95chZOC^ji9eg0)?Z?82;#*gqZa)@QP)1e-pti_6opY_5*ZX?=jau3@@Z4K@~ZCJQ!06!V_cz*Fq094?B)^dPGryJi0psW|_b_L}m9nk9F z)&r%YFTC!-qb%+2|Nq7Z99}E+_I~&Sx?j87fi|%vb zFQ&SHMlDJ?ve+YDI)cXaL8G0Wt}nXXL_lZGyod$e^byO^>-)3Q_d&1ki_X$JoxV?A zg9ZbgtQZ)AJ6wPAZ#$615%A)OE2y9Y-4pP*%lBt@s6fL{UH&NtI+{RR;~ReJf`$mR zOL@A_z2LNBVCXv0;rp}Urzd~QcF=U(&rJT7bzp`cf6HVrBagqOi4^Q;Tg3q~Q{tHGKgRBJFUr9x!7ef=dEXr>V0_ym z_CNoW!`{u0*_sb?cE*0_I;dk{!&%P3zwco43xn6nT?cg%Z6u-m@Ylj!2X!3beDl}L z%_sg_A1+tz?E-lpWR3OD66Owe_y4XSr?OdsCNKoRq40W1w<|{$Lo{Ll--?636;y_F zpL=oF0->~VM|C$|qjmeaQEhqU~ctPFE zb1$x%gFM;rQ@6wSC;t@JzYRaNK?zD1oS=4qB|Ch7cEtVzg^nmBXkILUi8uT-D0xpt z3^xDZDptw9%>^=#`9|aK01*a;dcN*+FWg`zzh1dJP=tYjOtV2o{Wb&nti$)`>s<}C ze;G=czTfV0{nv7!R16frpeyHF4wS@opL=o13>;+tOF==J=m0u7NT4^2!}?cALPPz3 zhEi64>tCf`t$&pSLLI8w_~nu zLEh#g0+4B7NLv)Ls)?i5RUpjxTc_&}@CjMRI%_|4#(wE6{nN#5)p4MUOQ3|qs^dr( zmq2NH_xTrZO+lg2?fS=|gB!Gd^9OV3bZqQ{;EeH6g9PDN31&s^8z6x&JG{4~it=$3n0OWS#+nu#vI!i(4_;#^bHQ#{P z+I$COs~70nOj8C1=MJ{!-^>tO_u65&nGfV=!Cz3G znE*Pj%lFHRvs@tOfv?)@KL6r|2?IlTSO?n+(AjICn|exEvRGg9hljmL2kiieY&lRO zl*PusO|1KTbkGYokhO(KP1ZpdmZhP{6Y{|6?h=x0w-q2Mn~8imLMgRObu0&M(GLovi3O!9%E= z{OvOtKqt<$9+qbpfb=2?)3&cMKM;Q#Aopnkam1NcN-u<|S> z49g>84@0Dwk)@!v-|h8e_$fh>j>2flz}0~Qd-CNBfaWHCX) z0a?cSGe}Ps^Xn(w|5+5+1%wsY1r!w61uPZV1^g7)1(Frm1u7KS1)3Dt1tu%73#?UO z7XXJr^Bad=U!Jh=7gwx7HBgCScdbtA{}R>a|4cQk&Hq*Eq+j%1fj6L5T?RFvx-WEp zcp1XPz!3bul%v=8z>AhEAmLtL9?$^H2k)I$f{4NHt_&=(^GCdL$r=gMZuU zz}F(ZzC17dQA7_1bj1F7amEJL?zwB>YQR7BK&R`MhTov!;S)@qu3uiWHvHBu$ z1ncgI{nLE%f2Z#U(Avx9{{p4eU58;!i^I(aF1%LiIt*)C9Bw|a^0iRcVOZ1RaPxta zubH|JwjL+8i)pv#|6b6A(YC{pcqeN)b2eWFOl z`b4R)b?J*zKH~${u1|`1%2};LAC$2+pJsV25f=Er^v?g%8!tj?|Nm!p{nGuZ)AdL5 zH3pEw&+CI~hYsIAFF})8|4aXX1j8&D7``3mC>8%-dZpKw2XqBuvoUDX2k7?d53e1% zYk!1=2ftViK3AHj;LXEH)DSU{4X=sM7W)Kkg!X4~P zk^f~GFQULq4NzkUG$qJbBHmD^#{lXMz2@(A{Q+7Uk;lxy09us+omT)KB`E;1=L5Pu zcVj=G*mEB|;Q+QL7q2}ZK=#;Tu?KWy~DdBGZ|G$K-*Zn`}gzrnn zC%augaJ#+%owgtPrG(2m^g}7DweOpfRFJW!bQu^xeOgdM^vR14y5N$-5)`PV;@z&G zrQ&kkzAw5%pL7U1dUX1}0L_Vpf^RQB#Mpe1;q~I?|Nr@0Kzk5g#(`?g&?miq96>L{ zKv&QC{^$<<(tU{gAb$%VXacsDgP~LcZap8^d!UK>mJk2_{|8$M+LXai!q)Bj;ur(N zf42hAC^2Y`@epVp0UVR~LU_Y@P|$!w_{=$Q2y5XFVP&urxR00cf`Ved4k(ADbuzz5 z2O9(q<6W3x{G_w?3vw8LF-8jGKb@gJkis|{WN?}eB8*?W=+Oa(u>;t{a?PMc@M@q^ z3DgM+=yiP(5FY#@)C{afy*u;=Xk;1^)N{Z=4Z2zFWhiLLP3a4e;cHAmy&;e?NJz8c z4e1xKkQM~_tAwN5^$BRrItP}p4(|5lc(GcWfuZ{bXcwaB|56_QZKtz10$;o}gB9<0 zx(~yaf;Btluyi}-bO-!ty;LglLggGhE*#E+;^H+A=wbxNf^LRRCeXYDbX6ppwzp^D z+BhNFg#J4gbo+92Gj=j{JF;{-fkr-Hvjw2jOD_f+-wy9&>aEi0cID}GV(E4j$l~a9 z;xIlC*%`(2d3AheltA~Pw9Y7zjwrFtD2dJ}na(JMjwqGRC=J9)Mo{}9QGlU2QG}rr zbRK`FBS*KZK&K;5w<~CAVC#Vr=3@+u-3Q@I4!c8nKufv9x=T5_Z-TC6>=f>;=IC^0 z>GhUa8W6N}>5C{(c5szwPA*_*PA*~Sbk68@m5J|k&gni3ni-RT%#3xrv2^qCZ(|5} zvB((IBV;)SB00MG{ui+PH+XSYmw^Ga1P3%@16nx7Q^Ia^;3X$0S-Wv`#tEc##))*q ziFL+FbjHba#wm2fsdUC^SV)v|9(NM}&+=UW8@@M=0ko03MCG`f0BFU^Yv%uM9Nlgl zV95m#$R{2{}K>j`V!b_h4w1!}Z0hlrZ7byHK?*IS)&-T;c>2_1Fn8WA+YT{19 z>HOnvJfKYcQV6uI#tk$Y#Q<7QBw~D^!BRDtf64(z=7ZhmI^8&4{MBb*h>JelP|3nj z!raYxIEx`;J|hD|#)l3rfsBYwE`f|Kom>JhUZ48^{|rb`DOAx?xS|UnMLJzv0xyn% z6oDI3-M%~^#U(;77XJq?isyK->?NpC7JK*wXn(NrNef>NNJARZVC{sBoi)Ev0rie} zAUy)>&*fsx|NoZ@^6x#~8GEOMwbz63wMh5r*8==|k9Ef0>GfbNW$HfNd{Cj=RmS*I zmjg@7fez4k!6D-VUd@kWn-587U+nf3&_2}}`o+Taf2Z#c&{%?M188RCKz*m{2kR4c zqTrb+krz&&%~p|F%n>iQGl9x6=)i+&186<%DfhZhOk85z34_hL35_}}UJp!-ns zh5wzQPdZ)iKor<-XJk-5e$4eRqw+QGL#50ev46W=Uv&FEQ9iDGj{D$7#!{xP(;dG5 zEn+1~1iD=xbcfziJ`Pgab-09S17nBlzm}8Wg)pWsLSHk0wyjCqf;Rt_@YsSDbC=3> z#frR^w1^eqpK|!MphfKe5*~}#f2FJzv42ZI*KGQJ=swTe|Rwc?{>Y@?fU>VnEpb8=}C9!3tYjZ_lk&M z`U?-H|Bzt%0uH8)TaklF_!B6A8q`1mROC?3V*R7cs@qq__&|5;5B@dZ885zbws2%Y zPIcBd>ZAi-cK!YTzfJ&jXYsY}<1cJMW`64a(H;8(WL%yC1B3Dps`A{$AF<2h&!R0KL20nUZZZ)A)w1$W0vfM$ewEP`41 zryPRh3i0Ou4&|2Jz8uY#3}vj{g)E@+9-1u~%UHWTIY7rWH`IzSfXWHbjoklB1&j|c z9}8-}$PgItQV|sK#}B?|ZGIpRIvc$FU+aO=!0vMgAF?u^>JH`T7TMKZ%faljou$+D zP4guNkV&1PU-+jS>Iem08z>1n6y2Vow;mKGN*6#Il|OX5zUc`45d0r>A(BAg|I#n7 zryJkyEd6sZ^$%E#G`Vva@x~xBvfJZ&xxI z-|lv2={{|Jqll^dMDqcT-f#});_xXda}f)`A2cF zSZ7ZwNCQOF0pfz!hRsX&{P_Q$p||w_Xs6Lqkh2)F7y^31YBSD&u1fT3w@d|DA$-88`vXJ+#KYDXN*}d;D~STRL#A^J*zE4P zAiJD9!M^GQb6(pM;~FcFYryK8j|f1tzh;93PB%1|jZeZv__wiVf8%2Q;OO27aW^<* ztbg&hPW$)&Kj`wc&!Cx})*&I&At@8A;X{@K}j;oJZJ2cI*A_p%svwt|8Z5|W@pHuORJsgE6ez!cC8 zR>r@brB$bcOQ4sfRimCuAOND0`FOw!*XjTNcY}2spLA?KB4K@yzkM^P!Lt<7@8U&vd}cKMVo=4 z>+nl`&=w=G<_(N5wL#9g$=?oIJlqYocQ+^jb%Nat3I~X(P~(CFUgT?o8tekb2U`D^ zN(Df|526~XGWg{IP{9bczyT81pi2i&fU?DH{uYp=@k!%v-N(N#0p|vghrtX)UUN#x(B4?Hsr?N=6}T{(bgYJ#haIG1?gjO zU_Rd23bMKztggEk2phBh;Ql#+P8Gf&DCe$?f$CupZDh*luu0b%Xuw4$4md zLCunboxPw;4T)-yy921chT^ik_2Sb;f(vI3J6bRQr%3xNUxT;9Tp$L>~8Mb&zM zzeN~yf;^Y;C2%1KN=@BJh2UBOg&-*D;wS{QX8!-*4J`yg%5WEg4wEno!6~3<-wVp7 zt^Z4%jSmDMmx7Q&5H*R(s)I`uNE+L~2+6*X%HicfQ1SG$l%?z7>$k19OMVb6IY3u& z!)i@%_`wRuW!5+O+pmM&28uiarCg^P*iHCKInW6J5H};0a-g&7KzqzVl7!p}s>#?v z9bHI*|541}1nPK!k~=8$5JfnsKnG{a07!BE;ImbLFImCs z2C(Ho6hmf13^6+J5|nE8=(?B6#2);Sjx;l?LB z=l1;i|G#r9C{tMP1@#j6TWr}F7{G0O7HDIp4b+f6xewH~H~!zBy%23PAvP=5&=oS>ra7xqRws1*jP%yJ3TSD^Y0 zM}1WVs)eBS6-XKG`f5TqW_<-Jn7U#06;h)e6auhDdpo2W0yWy_Gl5Uk05#enZCFtF zfMR?rh=FLsLK^KLLvY76ywMIS>p|Kfjdw_BL(;>G|MH-+{-q?i(GD_h1LI3kkaOUT zc92GBbq11$wB$fFNI-8ZNG>?w#V&bpfvf~Iqj zBs}kf%*5hhSfd>rl#p7evKO2UV6_e?6Lq$NGFr>YQjX5KAXfJc(7AGuI>Hj%736OL z)i=;)`j5`Npk7@s%XajdMio@kT)JhvYQ>XXI}IZ72s-(1*a~8?l>D1`JOC8YE6J(sDc`3+i z3|S1X`N2kjc#x_Cns`x+I4=V>0%A8LJi5W%#nwwDRp1g*4%&tX`3Is*_!2}RsGJ0~ z;e#OM

ttNpBgXauQ-Rqyp;h1y^R447E(!j9Fa9mztNR`~fW-{{GGQq+{n)P`q@4 zTO^&mpiwAD#}g8FphEH%fkG0`$VO-{qEQc0hP#l=Zi5$+mz+Q&8;AJYLHDXRgL5_m zN}C?kM1)2pI0_-zHsFP)G$a2m=T=ZtG63S(@PHSyrNFKQoj8p&rUB9eO=00Ll|hX^uyqa) z&scxpZ_x%FpK_AF1uO|3KLq>WFizJ$>4sE?-}qY|f;!*e;Q>&Ov`GuxB7%>nAlVIZ zB{*~gUVM~fV1W3#`G|ngftQOxE&qeCfs#Wlmr5&p!T#Gl%FB$*uoC?Z|mf*1r{uWj6&f+Tvw z86l>;ya}4+0Y};E?&hVS@{0j9`~_+gbbkkx5Gz5uy}=_SpFmChtsw0T;1Lp#E4o|3 zDyO0ryx^(=+}sB%hbRIy_uU|4v)y1Hbb|F-A1qza3~qfelsJHgJV4Vv)}KJ_ez0x^ z@GuF)GLZYgLnRF|F=?yM&L8=*=mx2-?sK_mD{=o?8 zy?|m7wE5onzwx*4kRdMSE(yd|Nlb@0njmG#@}8mbhm(;G?@K@ z;{OMqu`+*XJz2_PdofL zO<4*N+6Q|@tMy!lsA5ocCW6htp*JP4F>t*`U9^n;2-a8~L5r2PTXKI#?OWPPG2$NF2>>WeYlvl+vyKTOc|W}n_sa&x~biBL77x}F39E!R8Y?kGSaGjp%ct&Jy4?EeaQMl znIfcv*$qx)S&Xob=KrmrKI2O%(2a)|w69s;EVnE&==J_@eZIt?8{%7Q$RI)~tEct( z(%07KOT+x;pyBOdl2l5#dz}~|Ey~wMkjCqH27=_>x2Sxfe0h7#SdQ0nEpbfk%NDg|90g zR=&u6sDvFNz|eiM`!ML>k!g$!kSqzA@#qGRTo@m)1`kh5e{)ajUV*}%B z-j)L;0^k$6NMqbe%)>iCJ0y)S!A^re16d>9_(le_(78L7qno+)Kqn-@->-fL3^h@gj{#IR3o#D^Y>3gI3Cu6C8cQH$^H%kEI6zWdq-d4~_)sQY; z;0qQ3a1!l4W_&3w9&A?Yw^C1#7O*nVly5c5aqt1wpkwF3rC<1Q&;|>J7bo}`7>qA< zANyW<12k51()v`Vxb(@m?>CJv#dmUp4Kx0K-1P@Y<8fEe7%4+%?T6-n|4UrDUB9?F zfEF~EZ0=1_VaQ?#G(N!179Q{-DD40L&d>wBWq*t>b;f?^{>gj+wEFlWLucrZ=G-TY zpxyPpH%iZS$8uybK)ix*T|jR!3&d?;cZR)C;|J{&`~d2^hW;@=X?>#8uG5*L+x3U^ z$?rGg9AU1sK34ADeXZAnQTsxt?}_en)}LyOx(~W(AL=#P+-uX`e4M45-I}eG*R%OO zOY=Jx>r=JwUki4Z@^l~6KGf~f#$xT#%~H(h)Ox9uI}Q;k-L)sWU3t1qc67V!_|xh7 z0JMmz^h^ooPS6$i+9zJK?o~uZSda^_lwBpG3$mJK^zIQICKDhjh z`$K2xndbjYW&9u;eUEgz?E7)~1*hu+<8Q}ZL33^l&4>PXhCbo%0G;jB>&?>3GqKb6 zLobU}ulFC&CQzQnPTwuou3ySoyB$HxO%62I-eKqtWa;MYbiHug6?9}XL#OMXPTx0W zp4~sY4|V$O%}ud(lY@;FPcLB|L=?i&79rnEWOcvs5ACYr|XOE zpPjLLI$aO69w=pP{{6p93#`2PFk|zD{{g`-Wc~mDXZ|7lsrmGO;{%R*7g zd@BzqVg)Tz^9%?!KH2@9+ZSxvgHGQ+FP`}Q|8IS*NVA;P+VxMFQn%}i=EMIxWA`*) z_|IH>rqlIBbLb6*PS*paT+RRgm+gPe-0k|JGxksGfl?08Pz2~^j&9!*pw?&W$&ye| z?8Sa)J^)%<)9L%Ao1xS7Mz`yM@2NMsPjtKP`JQ@%`6Ba=ZszXu!k@bT8Go}rSj^gd zoKg6j_Q6i(=EE%Au5X$Tur%j>VeE8$Q+l8~_7BML1EADa#A;c4q1d7IWQi##R)2Pf zerP_%(tV?Mi3%vUbaVBVu^1od4Ps&T`y+gS`E;k(pXLjom96g?OCNQ|{%Jn^zd7{9 z|8CbG9-!qnr8|rdbca4+KHTlQrTa%Wc(HwR?gtjH?pTiImn$o}J?rI?_#HxAa!MV~r_TQ8OH zcXKz}bTgE)Hy`}p$zA%f`&##LXo=D6D8Seq$kBbMIZ%WlthQaP@d*r|4Ts!QyGHR!oFZAQ3ss} zAk_SVz4TR3^FfyvVH}`!p0BxkoxV5!U@5!W{7V6}5e~eVmxH0(QKR)hg=F&&#yaih zA8d6p%|F;nctPhA$~6DrEa5diaQJ_r!V4!328P!hAXYR714HCt;{z6sD*RIqI6&5L zLW^*D22c_HpTYRjVaS;*y>T4fr(ei&f?NPTAMkZ%IOs&H^DoYTT~#X3eB%G>knVFY z7{SN!m2h{Te{t*z_)w)+&2=RV-E{?}V%?`--2V6ffAf$3rA*vE0=iGX$md{S0IdNB zufP}XE>mg!R>JclW8we*odz#D7X1I;eH?UsM?<9^LkTnJ{3=HQZAXqQ&>;H@B~Av0 z!`+S!%|AHH9sjGeZVh1vZTZ>8$iQ$oi}CfhERNTovKX@%UeqvvMY6bFe*v9A^ZH#D z!|P933|RuNpS(0+U|@JT_djTX^x=vSc7cWvc7cu%c7aJD>;f}F*ahZ=unQ~-VHa2t z!YSTCxuA z#c*da1_gAVdm+cczyR830bZXEIu;AGBE1|m*?$3+oTT`-x#}0|WoQ!=RlQE7=$rASbGUu5|)04iD@8*zKkPK08PWl#azg1UPhFc>V(= zi;}PZ-AdvP$AM2Qk9+9>%1WT!@6ELwjA7j$OIcr-f`&)@Bwi@}{r?}N8)n37DNx}G zTKSxL{{R2iJTTtRv;Y6c#X@ZVUzpKb$PxBp^94{Z7vx-4Hqf9i)WhAb9M+Bkr99oP zJl2jPU~h7CJ4ze_c>{7{4`{u2w;u=pHpb>3Dg6DQf|S2y4rn~)M{vCbe~UgN=x`KA z{+82VG3OH3<{vKneb2x=cm6(*hUOoh{H<3&rxdzrfY*GdHNS}9Zvl_$ykIUdZ+^kX z-_p&%zyJy+{?=8XAaIl5c9Y3sh%V(i?j`{$v^wKty3f6^0v&-Hr}6R_NX@wy+MtW> zL5shSyMa$pii>{vjERBaxEtuE5%6TK8^=rV!1RxTde;(T&?$bZ%|9~vTR;B*EmBHT%Ub7v**kF}W%HMo|>9`|kcM(IUBS+lf$~tUhi@^ z?x+BY2(bF*UpXZz&A&=YgqnX84?H;5Da1ho5LCI7xsqa3Dt)lTCRk2dJ0o$nl!P#<_&WCb*R4 zn4=2lo^+hV@uM4 zq5dg}X!xmHYHNMG#Imb`vEhGgiD6g7f2;dtY+Z-D?sxt8cf2F^x7Ga;weHd{|4V;& zpL-F)z`*eDFj%zoZFlJh&?#=GUf6*Ow=f;ZCJ>N~^SgZiM|Zn%#5Y(lfc79lQ{hYf z|NlXbWA8roV(a(+{~_51oH9YBWf=dqQjYFx2VXJsZ)4$Ve8$ee&``S`3Dm?_!ydhFqd#O|6nO$ZT`Ul7J`N-|F%#LP&Pc(_z+@>XYZQL zzG8N`{2+^=g~cd>f9e5 zfK-4&E-)~-D^?<``(sD!pJT3n8D4~hgYwU1MD_viI9&hr|NjoxzghMXX`tS{TSh=P z!~X&n@WJ=4KLTECSPa^ECeVCDAdP?D>29XD=(JAIndi++O#eAHFoMo!7l9n12HoTp z)?M(Y^;@aP3wDJ2l)>(M?FBl0zJ&R|V?pyli5DQ7K~=6Uh>!=D`a+-+0Izksa)6Fl z=jn6V;uZ=dhAECWp4+yYG6mQb-N0*9w_1MX6WVs zUF5l)#ql-I3zskkhHhUD{_QLt%C0=n-TK|W0<9-Y#JU-qD_9uo_yQqk3ca|noq^#s z4~(}0G#-BhrUi6{QR}x-7UKi2bHT~ARQLt=^#A{}z_+t#fbOz5_BuEmd>B%Rh-E2H z5r0^Cz>9fVAQ$o&A9!sBy7h-4;Dt{iSfurTDd&q*(?ABi=CLg0DHeXQ2gCzkLvwQ~ zXtMA%bCy^H{IL7jmu*qdyOg?pLHDhI?xoS~4&~9l&cB_-Dy@^f`8ZQr>wyy1=9i46 zZ(2{52!IZ@qEs%-4}XojJiQLigJPO7-Ds_K41Dx`<(SD{#Ni(z8}ozw10IUZ+;-J z{p0AD@RQ6xU-KXRTEckr?{!fBmA(0(g7x{*x81Hh%*S4{L5(;8GUDiu@|U2Mip@V5 zYf7OG;Lj3>&?eFWrBU5r%hUMZp9DF8U;791&(}iy8jNZDB?r^^VfG7HpD%rd#s1e) zpdBKoKr)9w4O%3(or>>12sO+`=Yh)pAz0QOREx&=0i-@p?^w0YhS$h%laCBt2(G-AQISpLi=3zK~N~40EKcd zj~6JIOPS!od`Q9iA}E+Sx_xog8*)5Rn${~42#zJFC-}8bfIJ|?ufdeYUy6vTLju+p zK~aUn53gkqL0-ZKc4-ONhZjn}fPyQ&`w*m+1u7L$57v?f9jwLKSPQDq8_Hj`9w-HI zKzrZI@4^q#YJQ{9>&p`y{^FG&sAmc~aY3Z@e~AJ7#09k%GLzv2xy7Xa|BY{VhYGY_ zDq-#R<>}-CUAhUXOT)m2FWh*+KKcKD(5V>TI!nKFy1oDnr|@)1ICQ%5^t#>&;NNyQ zivxVVLJoL;4(ME|dls$|;PVxJAkJ6#0XbiRue+3|OU|t$_D^Ri&uixHQXbgp3KeLl zD=4F#t{{wdx&r9nCg|}BwxHt`EV|g-I$S?=mh#wClt|k|l!${5QUD#U@BwuCKnLhN zu~MGbpe5wYSpxBJR~TPvKJowi_s-Ba-Jw4^T|e}CUugIVK0xYp^T7+Rk=${*`5@>R z1^6isr<)IgTHGi9H~;)!Vqkr~Sf|_dOYle7KuV+9`Md%Fu@!~CL05kRn=xhY8Zr2yaw>w>VUORS|ehCYH@eOp$FX-SHjTdPX zL9qrq41pDN(~uPSxC78SrH0o6yFm%zH77`j>HEFzdkwWu7~=R_6hL#$t~a0uAiNX= zaY0F|`Hc)DogCr^rxWFFSCK5H_|^j@`qsy5Set*S)TzDrGy!BMXyfY(z6tnK%99s& zC%{w6k51Pw;FQ9@-GKRc7Drg8E6#pVD-)`P~oT;-Glsam8x_w2CyZ(`6U|`5Hh{zI%YCT!P0V=d_GchovS%2Vf z3T0wo$g+w^v;I)b&AP~nKA1SIkD7)Z%8n3BC{N38Y#{+SQoENej zNbt4s4gm>>oE}t84P+)r@U{33DM%_Q2HOKlGT`&zKx1(RS&k8D*2l^@vZ6qVtBkYP zZGM`y>z{HFD1(3dv2y0-7Yd-0UZ7AT=eem5--%CZhPh=T@tRGG1O{3|2 zaHMn4wc3W(t|G-c-K9U8Pjgs*EaEO@u|5Pj6^N66eW?iZhtAR;@U;BW^6&ruVW8x$ z%LzFEh^yQ63%rv15f=PH5PUvZ%YhP&7mZz@3Wt7-S({e;LPq*ovv2`1G4^S{qOX>@uI;3 zbRyNAF5my1u@69T`=T@S30VhHy#XCam0%qzQXJjw`=i_SL-R?FPTwEarB8}fK{I|Y zisY*OK5gLYiI{#d~Q8uq@>>B?h#0CbCNckKsImsfEmxPuEm ziRxuLEM0cH{#e0S%F%rOKd1$!x`L^M)A#`794e0H6aOJcQT=$$^Ud`KQwiJm`@)~U z-vggR#ow|FGzkGei|XZc5Eqh4EkI4Nu<#dV;LB-Bl)GcWZL!-WX4dy>Set*V)akxR z13LknP@CGI3H1i}id9Im;(i5K4OAa$Ltpyn7jrQQIiROCjP+j4lL z>;No%{sFhk*tw5)y8eMS&3Hj)KW{f=KHupJYMJ@+WEn)Y-Y(&6{w=`Yst#_Aed2Fg z$OvzZfvQyPLod4+85nkfYSuLCPyEf!XogF1yypvG9yrCp$A7FZP2yy=CA z?%4%uS%F1Cr(r-vm-PmefyImw`X|A}@nNn8R+9MrObxRAez;s5{tyFjfUut}ii4NL}f`ys@wMddKD zOQ6}ZLjh^lpNf*34+MbQwfp}4|Gx{=x&ev$!c?vRiGtcSAW?Ie=p?Xy1CW?<^8o`; z<5v1*?Z5y3VeK3KCeZDN&7i4)|D|$hEgQKk$zHelQEAqP%EX#a{BJ!_qSSi3G(3wd zx-(YfwSSgm6u8B62)V&?i+?*KI4OYIHd3IrjcDubQnoA(kREW;#u0Q7nGje|03^r{ zO*`F(!9~X%Skdv|g{uju=y=k7sxubc_4&~0`v%tPfuyIXH0w{GCfYykAK>(aXxxL+ z(+)^_`oIrKPXSz@aJaMslAb<54p`}hi0(l&;lb$%BD$>CsSF(E;PeC$n*o`6bX5#VPrD%P-8 z#K`wYkxh5$hjJF{b4AA1=Sl^wUEhF8^%vl>zV=C(T=OZG&d@)v4I#;pfBU~Q>qF(t z&F>YOkDq+KI3VzU>4X2JcV1l3`TxKBME4<3qWmFz7_?l%m8aYH4gYq7<^xQft~@VS z!dfBV4V12bR&bPZb-UgGm-(+Hn|QAca1p z-wi7CcZ0g#-9KLQeslf9RKouKe)DC9@3$LjuQ2epfbL-Kc0B=Wns|dQOa>MD|2ex{ zIl4Jp4wQ&kFqR0sXa`#cF5VY6{QnOccZZDYGyY2hohil%8WI&vvjnM)MyM@^s)dZh zJ0T?E8o=Z5@bUF5#w@PD!0sd9so{VZay+0lVLVw3FDie6d@KSQ^8s5Jh^F!jH%#S` z_xM$wf~zcgi>5O0=DTiJj=Qno3!+>_j9qzDL1AX>D$?ot=dSAyxb11(zI?kt*FvOq zA52p|lxBUX)cCF|2joVE{`sKF3N!#O0V4Q71S|L?(<~n}!vFoI^vULj6M7pP7#J9058rj=xcTlD^wJ0(h~$G_M~B$M zAa>(J4p1rI2-*e!9dl0WcIDgkqn?2wP5Dr-*N-&ogQfgnE7%!Ixj|>xm9m1|4RIN0 z1_&IkNCWSn!{b^{mI}X^R1X?AkLxsevAzyGQVu#-NTBt9i8yHBU8tAEEFe7ag;Fpm zG!bL(fiDi6`tiT{2oHGd-4ARAZ0y|u!~>7L$3jemjlE~_WLT`?5qOcB!^rSrN;v~V zcL7i9w-PzfrJ~*E{)=)f<`npU?KQjc0f)ogsV|PZ{`vR+|Nj@ay%`uFOBK6ALASn_ z2zUGPw4N;C0k=F#B|%r*Grc%f2lL1CT97~DVh@LR|I+@%zn#S{trK*64=D9Q2K3`w zPl6`%(mI)5Oa^IFdVSpZ+w0TdFlv4y0y@2}^;@a%i!zWTcv50A*v!|#;aQ-yINkpu zKdBY=q}TEmU^}tF-!R(p)B?YOLvwU*?Nvf`~Ue4lgor($icL9 zAA_EP{bKrZ28LeOADyv30zhY8$NqV-3zX78>nxvu8WgTy0$yB!iChAU{0VsR4kiLR ziljT9rJKL?c1?XfN8`_iFU$;OrCIC|);H?&YB(By)>qq1E>7uo{WDYhM6c_c0O?zu zzHh=hV?Vs`*9IkNkWHX{4wkMz_**~+M25Wx0X57(d$mA^eRaEjnW^de2BcLo^h4MS zNw_Xc@OgCLdG(hc89?VxzxbmCGg1aL^HckSp_^@H_mA#dB~oE8{w{+Yx(B*3mf7{o zaW}A5P_yvQOzj_83|ThPw}Qi8%+F$E=wxd>P|4kVz^3{5kxsVe%l|>L!Qn49tNs5E zGOpW=WhOINi!ew_4oHg|OY4D39;hBS7KElcxF!yWCJC@6bFd~3h$e~V<1aehI3SuN zg2P{Uf;63Iy;P%J&(eCbM7rBeg85(;`^@<7{~7&wI>RIw{bY;}yfg(J=X0t4EBJb` z_uXz1%?H>S{dizXyWK!aTMyJz%M22~#5^89kuf5;uW!NFPo|Cb5`2mTlJS;Q#-TBvuRROr9xl!crE0WbWk z|NoDCxqyLzf%!mqz>5UXQR+V;L0e#2Kqp9-{s@QY{$KhBqQCV(DIZL;Q1$=+uj4=k z#tU_j#t)IL-%32d=kS4Uhyq!T>r$_eJwU@Ugma-G{*|fx&qgv=R+| zkH`N~ju+cO?b9O?(84now5JX-1se!Dq8xm8P*)W^u$EPV`YbP}f^N;|F6C+d_n?gb zMHW~dH1A=2;B`%KcoxHd(+MZ|1^$b&EaVjEzR~)vl+i6LJWBv3{AU5!D*=ta85|fG z$_=bPm+Lh9{`nt}1)eKL=zjtBa|wTQ?H?w7&{YN{EZxUnOT73|`Tu|S2UtiHR{sCr z$!2^YGCD3EUR8lg`V!s$r5p&;7{I2LN`$@Gfui5A^8f$HPBz$V97t!W=!+?pa9?kz z0ADl%IuaboIFRR{!3GT~ZqPO2Zng{zk*~pbgS37t4^CJItif$kw`{Z=BK z^}zU2#P@I3t^&pUFRoO8+z+wowNr3+EJt|j?Go+a;pb|B3~*zxT3Ohh;GYykLb?ZlGzWxY)yp!~ve0F5zi@@aKQQpBFV1|Nloq zg96D}pvDXjD2=6nMyKI(+(;_G#*~V_&;Yv?oE=@tpE%YK6tOM-y&N5Kuh>wFEaEs*8<~K5+6R|-@eR8yZD;0xh z!51E&THpxJ%V0(Z2GGWW*8inEVK1it1C=&5jG$Eo0<9#?Zd&Ht}k9lgJ!I{Pivn8 zO?bVrK3>M$S^K8j_fM}oOLyoO=7Y?KI$eKQ|0ol9F|`a95-+!cI@OLW%!io|SsyD> zeNj~gx<~0pa5qDz>ysBpeuFBU$jH|JrAja2%RqPNJ?Z55U;5+4>ib}s*8e4C$6Y^w z*3i9X>b~E7OxyK^^^b1XKc)QLzF&Gp446YjzF%y;SYp%dE5dvnrCOW%CI)LY2H z{Gr?Rh4Lrn!`dGM!d^Vr0ynjqYd4Qic8TEsQcyu1{K6Hqw(|&2_Ya6b zSnvy(fB*k?gSKB_=APsJVE1+(jz(Hv0b1P+&dZ?eApj}lUt9+pD}b4rL5f7c$1H+# zk{vj;h(OhWdLF(4-Jv|40-YY9I+&?b5Goaz#rVHe0Mw;`*bwmI6j&>$Pf_#`T5nC056E&2sGCUFz~m4HlzlJfzC_@ z-83Rx^8bH#EeF{2*8e4Z-LX8aw@cW&eFdz~l?lDLQw(>}kD~woU;Bajv^!RSg1wYK zFgX0h$GM<-mZ$r}Yh&%-{M%UMdwstI2E1tJ2Ho`arTYW_Hs-*97Zu>{l7Mq_t^i{R z2k0&<>klOtwLdh}{sGsnAE32seD|@qXwY6gP&&&J$cO+nXNjb zL!@QwlTzLnUy4BflmOi!v#B%oL1*lr|D{jkA|A)IvAAqW+|D{h}ECCq^Vo1w^R@Z|QX6#E7P=x@hWT5SR(HCuC+rT+%5ol@A ziT|$yyWM!go6rA0_=0x@V~J(h3mpXphOq7*FK#VnUDXj-8S)0%Q ze=XcxC&N&}`@c-)MHuK<%QP8=$gmgkAV+`}&c`0k63D0kgPK< zfl?~^f&t+Q8K^6)yWMyWzTgR4!C1oa;@TWg-TR_B^$EiZGZ_YkNKpSN?1dq?#{1A& z`UEXBd{n`q@#KH$gBMaD^@p=~GG>76f1~pMKgbx+5#$ChUP(jE0_{=@0xfAqHjEb} zaO}l@mH+<_@i26kKIwK9_;2vyBuEqd-hysdj$YsYkkQ^=SJ16+JfNFUUvz_l8gXG` zSog>9ZnkcV@E59`3=AEvf4bTJ8+5zzfCvr{0XpLw6b<43OaF9#c(J7u6xA}_#~_m+ z;P`{yxWf|;>On%5iivl}f-aVoe6g26=pLazsqxy^6ZKgzH6 zI`e==Y8X}?U}0b=VeJl)X6-)SS^Fa(@W1hkKhB`#2cXMUHJv%Me{}nDFfxPo{&Bo6u>Mt42r)x6 z_{9rQG6Z$FK#Rdar?`jy=|0|isf5q?()ZFo-N&^-71V3y&e|W%KmHf7HJ<W)VvQd^`F003KU1K0xvIsih9>CSptzCI61VxLw4Tr zyxa*A2IZD!P=Uq6P$B~=wo1gBYeg7J#a?*l!-G6M4;18}lA;$hw(_CZm7~-3ORp>F z?v!3vflk*ypv!YXCmtUKRn(EMuRtRdR6>HvKJonj|3S$niv`rKnsyyjIP;(vNg(sl z^xe;c>SF@wiz8a!a+p32kUlk{_2t9#F@p5HyN2JL;7X-kJ46xC>V9+=bN9%vYXiTg?>+Mo$&}a<%3!7ZnXiQ|z|Nr3XBld9jb>nYo zmPX*Ud7y=rpIc9sT+qJ7znw)mt&^!Y2xZA-=_!awpK|{H&r*851svCb-Jv3&6@;yq zNdacmD)!%Mn8zD$;3w%~<;8wJNG8SMzJe64vHdjHS<8FLj5Cl(K^CVvldV z9nIfb1Zq+I`d`WqTCH{|D!~0mj4w1m4p4dtniB$hCibNUD9eHJ6f{yw zOS?lkS}&D~zxb04&rTBA&=yDRVaT}Gqu{XcEXVk)DD8{U{M%W$(yWgc@upcHF6U@I zpuoTV!)vDQ5B%F1LBiZ1VK%Vvf#!ouX|3N%SktUOl$_w-ej=WK`>{CfgVC{vK?#xv zl!QTh5t`v$nC3SEy}lnn;|>BZT0lV-%K>hJl=8HGE0uZ?iEv_R*8l&zK#d~sI+||R zFX7G5wun=fV`Ns8_Pr?n?JUM=)(1fjJp^^=kJn7yKlrz^frPn1gX%Dc9%D*t{a<30 zX8oh&#A{>z?aYw2OOYtJ?ZUquq^UQWDKOwgyeOz36yV=}ptlUHi4~;jEdTcF{M!#` zUx)`48gZcOcYI+jneIdIf&*0TgE}Mp+xXldcbt_oHy>2s-zM(f>$Jc5hh#Z(^C5-S zlO-(Hr%G;VBd=wJ#g_)8edw13kFBgscx*x1hp{jFL6@U3Kw7Ba1@D+a91gl6OCbx~ zcO6F?4<0z+wRum1LGJ3v{Qti@mZR}EX#Ba@yVvzaK=2DtR}Fl>oJvFO z2L{l^1`VJ!$o$)QBtW+v!PY@^AAI?Vfq?;}1~gjp1lpeLKK$}F=sd0iX`QZrI$ZyO zcF=;BkLz_G?)80f@CT^E2n21;f3YVCRC%=?C=u><{nFw3$M`@NQ%CII4%dH?uf<+m z%>W&-ew+cck;V8xN9-TR4%fe+W%<3KKRR50b-TXEV*Fpgk;NPo*z5ZTyc&H2sF4iv z!;44DK#51C^+2hFh3g0Y7SKge-G~(&5unWcgRxW$UkiAU3bsfd zn#4*3K)I9S#W`>}-F@OUU$-v@Qflo!2sH_mTR|-@(H!u&Q;9LSk`=9i@Kiy~goE9o zf4C2oNOrq^SiIl_zd*O^mrmXpC-?MWQg6zF~4zqomBL!*SW-+`_ z0%-&_Z*PE1RL1QilN~D^9 zFqVkEa8HBh*5p*^0MAa4+IGfR@SzLAVW3OoyF*k2x?@yCz90Vo|NsAz0PR!X4}o@W zm576O3t2IhdbA!Wv2tpD%~)pg?GSV6%U%{P)&Kkq47Pvx85qiMb+d3;GnHO$e$7%Q z(!1gRzkmOl53zi|pnPm)LqkJD$wlJ>anXlgGoLwgM*2YW3D9mn==JVrn%@ZUuZvM( z>2^_JQEjMaV6bhFXJFuO<>zK#xM`!3*3F`l*8HG8t@%eif9o&M5>S3&7L_!9VILKa zG=3plfo?8=G=3pb1uz}*;}gHYgEao)3p&s%>cf7e@gF_Itok1`6n217^&cYx!zcbo zn^uK+V2wIp2J?Y5ehrgWgGF2dyWZC`Flb+Feks6xsu6U`Qv-kVIVJ{%ouH2FuKIt> z3~Bs%r_%U;9|T#$@tObGfi!+0-i&T8flvGb_tW@`udAi;A3e^H#vh^zavi$WGOZ4) zKx!j(zzmSp5hkqx>p;#4Qw90s6Mw{qH2#n?pZEnXr|}nGmQUk9dYB=NUx*cAOUy%% z&kMS_1XTZn%21HEn8DuCX-(J$Hd_SDNaK$%Ia;s}WOB&SPy8`2KJiEV`ou4A;}d`6 z!B6~=XFu^r-uc8IbKw(z?h_$6WlxAMrhnUkDt&M-MW8;*Yufi9hC88o!V% z$oe$?qt`%!S3dCzJp05Sar_g1%&$-UF`v@-MgFUT<|u7J1b?#>D+5F0BM@8ngFOQS z^Pyb}92gk1FX$H7FfedmX#52#g!!A-bAVhP^XwCU%#}2LAytSSAve?bLqKAO()hzK z?MiT9U`XRXa*6p9zrbs#qrZIOj{$k$)+heRcWL|@q7CQ3UVr$BU-$4Q{>YDM{2IIy zz+w?^()bIWz5B!;@orcBe?|uF3#|ViGBR*q&;?P=zZm%YjL0b1*hJ9;*Y$Z#vlHFSA#vst02)MznDMqM}YmC09KxN@)Lh#hziFi{>bBL{KX%2 z)A$Qcx}@=I*amZ3`{>Yo3_#=*{@rxWtaB5U7z?Pj(y^fIP!@<;&Ag3fy1x}7Lqjp+h2F$6TiU4 zH2#p&Y5c_(71H?YPJ$BuhkE{I&?y<*2b+H|@V7{@Fff2Zs~1#1e81Ir2$WaS_=`WA zr16Jc-uams6iazGK}LwA@&7uV#{d3y8vnb~Y5borrtz0uPUF9RsQXmoqyO~`42{1) zNrS(65hDWwIE&bVvM7Hm=mrOv>ohLz`~o*Kgcst};)^B_vxQ_QfZdKT8*I)_#{bL= z%qJQjGBB_(H2)GPir!WKj~kSIWI@>xR#?0={qz5S8o!W@N*ce$^ECdtU!bfD^7)VM z6X0ohTLy*?_54l!ObiVC?O#9{?H2=o`)fu9hL_c_0wIk*{J@S6&LDpuIlv6cmdJK| z;*UI%#$Wd+jlcK`$m9pjzZgn_()eM;R0u27OGw2P*bmL1EKRVas<&fdc$o(p2ENev z2-MbX{>4zbuscMBrxA2oSpgM$xwl@IO$d4>Bz8h_rQH2&fb3ZN1TRMMpJ3yG+F z;*UGEOB!^%0m!Rh^`O{p1+57I`45_2prIFjGL1jvP8xsN=`{Z9CmSDvVy*Efh~#fQ z&j1RDqi2{Qs|=cdGVr&|VnB}H(p=)=7L;z#;uV}eN_1iRj~--JWoQ8Ht!F6V0hNuQ z!~k_FYezR1XtyIgnIkFYZ?R+qxib6!R57fegPF$P0@_Xw^Y|zJh$o-;1&-``$IQU+ zG7qd(NJJ%#zwSaBfAJ+ytX_fyKKCJT6#)vmmh6Avw8dKiPM|`p8^D=3^5iZVP%vvi zOi@uu;};46RbzDzntw2qYQmDqBT(7+!Jfb6GXp4}Ffe@BUkdgjD9WI&MvjeJ(AYQ# zPCMXmDosw~KY9q1AXQYr9&7vvGKTviDEqd6PC9A+!B8TZ#((q(GqljQXJ9B&gn1iH zqL>3AA;j7M4c$-t5tlyk3mgK6&Fj!K{yI?A3r^{eAYsydg8L9CZa@y-B?YR2e=wBj zfE4bM1*ePu|LeiotX#Z^wfQGQIV{##LDe(JtIcmD()fj4R0KLhRCv0tG#>&nI3N^D z^DB-{5tSFom7oX}a#0azKB95B`3FOthAk-b^EWFofks9zG(V_sJjn2$nW6C&XmLyP zqlWPPpgQTbnk@smiNN7FsK(=;!1Z3lG3=Tz{{8=d7hLmU$jlC?2w+_S&W7MR_5ieY4Lb-{`f?6P z6UYV4KN(6yL1}dcB(JhA=;ji5S^F29k-?l#{E-J<=70qX9=fFQM?OR360B{TCYA61 z|J#C^IYq*aCqXfr#-9gjHh$0rCG9kRAy5%;^a?Yinbi0SlqS>oj~-+;J_OFRpipSF z{{R2~OVDlRY5dnfE#GTCDjY973_5B4Hf~=+|8pI3=GY0 zIIuLXOZm|n*1ahz9Q>^tXD~3lX86os=c2*_YEE4M2b#u-G=7aApr)=#8h_n^H2x4) zh8|Eu=huZa{>!IUGH@_3lq%W&XJ%lii3BAWTO$?*hI;Na{%bxeEO%X0SPp{;n7N-% zrSWUrNaNQ#Q1v{G|Ik53+yC4Q3^j_jMm!7*^;baV9{@){%n2kTZoWI5#(zlmLpPTI zV;X-Ln32XGBKrXB#%nQ9o4P>*SH=e#YdMmOb06?eIS>o#c>Mr%yjt8C86abCLNA;c z85mj)lyHK&SXH2<8(B;*j76cnu?E{6C-?;z_*+3Ywi_RC*ty{Zzd$?Vao0bfiB!l6 zE1Pava3}CGcw2R(_9^27mrocU?&jTcf?vS;M2V>JP2&Rr0Ri2oE}!l`4P8ZcIYZ$z zzrbs*=KqYP+!;Ej`2}9wa)w&k`oB~#W$ zD`h{%3UVIEIpBq8>I@7Ft=~#@KwbfjICQ(d>1OzE@Zu9V>#%^Z zCpW0Nv-FTCz1>_JQMGvw#eN9xl)@gXjauV1aU2 zhDHyU!2i-8|3&XC;1uWv_2+p}`txzkwLcg@k^1Ams0YYhzJH9*zDWG??>~H~pxc#W zF(`^+4}*?-%3^qN4_rv_KmsF+AqzZ8e-a`Xdw3xz>JKm6bAn$WEQ>h~bP^$WA?0f} z>tnU--NzP#WU^QSUL=Zw=2I6R0F6R?2OoFH(`*akF_da&v4nM+f)u{6MpAVVRTXRV ziT`nj!;Sy%yKs?5Ad4Ym0Y3vnubV=^3(+|Y3=2U=dS2WUIIef9~1ZkDM5 zr}+iCT{t8_^C+CnKmL`lfSh>TO#qZMnvYqyH~y=*#3N9;KHeB~3>heMWV>=$u!8IW z4bg|l({+oha z^FjdR0aXx_Arf@B3+QAr&{S5b=!?st@G*z?A)qn$h}gs3p**0y)V+=@olKBzL`^XUjizot*y;Kst@{K&nDJVE7pOav#h7Lp z%28|p%1Q2}p!^5gNe)_M%)kA>Yr$^UH~iauIl7@kiYy%b+YfZQ{&+0|8pO+D?Dgdc z3<`L`IS({`C((MKln1I4q=qG}+w~9n>M-O)8Mbc%XcbDY$A4CBMh1qN-~VN$bbshR z2wKt?uMJ`}KVoJ+bnpjL^MUuw$6)jHpsBNis>}?alUzKSPyBHx6$;Br={^`Y^ZUQJ z)=QxCzhV#fHs-K1Fzf_bF!TG*@3*8b^*S+vVjp}q4i9L=x%FGA*b7;3RDl-VS_OmV zB3>$ioP@r%RPe>uU{I8T)CmRu|Nq*!+n=SIz0>ter|*yEpa1JQYs76G!vFs-63AkY zvOZNKRnKmFUd?fGnc$1vFrD4UUV=_Y3WgqT766)9djUG3pgZ94ti|Ykqljx(Q@4Xp1yL4C@Tz`CrcR-~0vV-+%wJ*qaZ4?(2-4`Tb`W!wvyH z28PZs3DAY!umAk}zZ1-NBf?Mz()Iq@qtb` z=u%loF$P+)vZKNHAtPuVS$8o@w{<{R_>0+p{{7zt67BVH>vi1K>HFvVt3d4^oz~Ky zI*VCe{QUd>|9-I7-bZROcQZ={vvhm2w4SUts$pq80NPLZ2dta+T3?kg_+6ZYZ}RF19Nm**HGBY2(*p4MVtvcTp{L338U zg*@GCD$F)aC7^>(yt~;}94PtL?Z^_|ZK?gEld(CGgQ4|*ok4g&;EOAn;Avi0@U%CN z^^X$nEP;p*oS=!|*Mi+_2VXF)U@T$F`Wx{o(jCjuS^B{GLrF=uU1#l$*8e48;V)+V z{{KG`R++o=K-N$gHUDNT6%2pj333{!G*$fX`sB4t>+MpBZg-xGFIF&?@Q1$u-A51! z+6K+c>3RpWzyWfsqwAICV=S+ycE@sbgSK7Vc;N}M;xKH)Rs_`R`OVnv`lN)p+x5UEt_;lmMN0z<%8I3uOI5sYv(b&e}iS|60F+CtJE5c_6DCyt*AZ zI$hti9w>3(@A%5VzyMps@W%QOfBQiO28MwDhC%;J|Ge*#h&Ro(Ul>YwjW2yK{Q}Z?s5|tB^`Y|2 zfd8d`0$+Sf1E=my^FhTo4`_WkXk%$bUU%pZZIA`p7rK2VUTX%vIJSg=A+j5El4nU& zcj%ASOQ5r2{&a9Sbo)y9ce?)Zg7~@he`n|q{#MXR^KMs>m!NwjK;g$144FAm*93KJ zcwVgZ1H}MnU+>GxfB*ky33R)DKwjb?@Dj8NGmGQ(b8ra*U%Uuf@yr38w-W)kaWgGyea7 z7?R?Oe!x;3+)j|*Rp6G92uk_`?d$J8{`z2dsRTIfd4se<(jF+`acGxt`#vp zX?(!Z(v_#4yN1=$m7|!Y`{rw=?i-e_A`lUQVwUcUubH|pSl=o!Mo|Y5{ZY?W!)E;f zbj7gs#S+18SBYkh|IHpO|96Nnu{XTt==PQ9H0-Qo0WSp2;>qX$g~=QSkl#RU1n_z= z(HEw^pfCsfJJ1I_Bl6n4yHuq0TM1Y5KhQk-Kc>=K&Aw0mgFKuC+JgS2hbfJ~r~ zz$4&AUhqr^UF22D0M3L@Kw6zaS|Q=kTr0v9UdnEC;AJmpD$13k+X0&H-+)#UI`FJu zD}B`M$`NM#&9Z=_CZjt*p!-nwspbdv2Y<3;|QzPT`JG?aQZ)G%r?lsa3M zij=x!F@}W&y;!}JfuZ{s=&0ut*8l3+YSgXI6)AU@a`d|L1a!M`%+x+1{VO~W;)54S z;GTg<>w!v6qXVFo(4ga)+*rE#v=7d-4i%_>)m_U|!(x5B{2@rIWvD>?jT+Fg;Fp-s zZ(!^MP4#J3a=bnUPLL4SgUirTffu*EVIkXm;(zSnZdVS_s(|m2%?EfsC~|a{igecs zbjR|5uNLQc@d)e=ftCaOt>CjQ{xO#FgTk$qje&vrMx^jB<8L5t0BF;?D@SCv2TOAT z2LtHXGEne=>zi&@juP&yKTr!^D|S2ZG(T{(aV!;wISka7;p%qfIPM?;x}Y8`ED#nR z9Ppxi2?K-jq2?n3paPwR`v7PqAvocHJ%*C%H-b|=tS$N5ggb<$_-@pIH2auB6F)vu4ym;gZNp8BJJOj9@-}FqQuy}|v~m!f zsNQ|~|34D6R__GJvIBonEE9hbiLk5`WZ9|z-G^SA8-MF8eb5P7qsZ}MCdh!!(mx;@ zV_-Hu=>CONp$LG|=&|nWFP8rWSzP-BT&;1uC<1APBxsOsIgswwOEu#4?4av7>&y6F z-13C^6_Nlz9S-o)EDnZJsTX_TvM+9UfJ1`&!plrX28J+@aV3eMg4LI!`-AZTOGl1c z(2178;aQ9U0bwsTEMj2jz6DC(KRRoFwBD}g>a{==6Qlda{%o zbbeQ;z)NY+B6*OD51zxFZd>&&h^!l43j(TIIAJ0t`c7+&1{ z`0qbrtwJy;X=TNMBE^@Z`v&-gNm#&w_9=i9DyVlcGm9xG;Dy77fB(Brceefj?Ld8K z-#PWg`~UyDKWG0mIQWk(i=mrmD=4Y|FR@hlUt*~c{32sM156Nf?{VuFkn%&_Q$ciR z>znug|67MxD)6^H1T~{vEL9-K0D>+X`0)P!|9}ioBd)jg4~YH0#8TqF=nn95JpPsq zprfcjYuW#o@&vzN1h=9DS}%d}DQL%1>jC~IaLqRt?7&u#X|1zn0NkgrNvT5p%wSf4Mp=wh_tEfwx{|8ISwSfbaFvB83?RG|CBYaae> z2l)3j7+m2IU_JrOPS#t&dQVtiEOhzs|H_&D&&kLVXx zkC29mVqebs1wD*A_N5tUehrjqVqc2?`u{(RC*uXE>~;C^53)}B31XeJ*ozx3u>AVs zi}U~gFH(N|`+qp>#q<~khVCC>FQngt4w*K--5L8Q>_yop&@Ku$mQJ?LIF9CHJXy~{ zeW&LC|4XEs|Nkoy>pp+*CmUq6=Yj#V2)Gz}&AKb%GLHcNHYW|0za35*h>q7Ekmlgv z@D~-3Rra82jSbR8gY`r}OXh zk@(NbaEf1``ItoWaf!x%7K{uGMYlIFzUIne0Id~fh%`D74;}c)cIA*@1(||0Y7^FN z3ew*CtwbUFm_&H*4$xRyIAkd4KQBnC`MpH*JI2!2@f#Sim;)K<$zpji3)B-joW=6u zCYS-Po&!Pa*h-bEv4%(Bh59#8QNYt($`SSgbnjPWWcQEO|DZLX zFI5;B7+z>wGca_z-s$%6>GZwQ?cvesdjpgxp7gq22?!1k4(P(SBfwZH z*X{CMrS(9G*a!ZD9G<28U|lzkgW5bGUES_Hoy?sv-&ML}A9Tiimw_cyaI@#|3(c>f z)<^7vES4AdK|>mlmIq`!p@av%2ncRFJ)be8VujNJp; z9VfyJ8m8vxjJ;tgQ7RLV0lHHsu-A1*aKMYV3qiHI2xv>eZqRXrELn^%EdTxgAKdAB z<#`FKhXV`u}}D0TtQa}|L1S91q(djZ!rNg?(ny0gKqmh+`(eu zU<(@gt@#RCd-=bNKsOaui&mP>8}g;DSe`C5>_RY0a329+_ccXoo*gG>Oc4-5$Gb!QC70JTE? zL-o9_f$Ql9^)73#FxF{X#J($0>-Bx##n^J7M3#SB;D7#Y2VQd=W3f_j;@`$-eWC74 z^Fbzy$p58xyIr4v%?J4=0PLFZEXLqY*Ap)!!8uVIuY1+~y-K9sm`+7igTPI6An@{}zz<-dj)SRPEydFKWO-GZ+{cK)gKATE=Z4LtZ2w2Bi;yZr2;fL6$IdwtR%oO*hzr)&nKXAO3T6&I8$Ie4uk4$oa?F9QwHgj)Sc_FcHK8 z+2t^qOW?R0=;Ct*`1M}PZvOj^lsg4Ll@MqzO1I7b|NPrPhjabt@)c?EF_0{kHojyT zDp11L?fRvgfqy$ofwHT>Yo_i)AQu>4assb82Q3E1vgACA1w1B|#qeSZXm#-sSU(q3 z05t!5P;SurtrT3e&b$gMT4!E?7p)9fiq^~4C`Bu5r6+`j&rgE}*hrY4E{%HGwSa+P z0#tvA5h;3EUz&pY7;i*wp1dogayLYUquWJ==LKm0So0B)!@VIYJTGpnXJF_)5ilDx zH{NKYQqNSv`eMp@1_sbNvJdsWAu1fu1##fZJzlI_&%nUn0&3N+1g)*&Zvl;3cKN9A zH#}_MZw+E(V7U45h5dR4hK8SvrA#*;G}|(q2Tv=XT+hJJ%j+<0& zFzT@J$=71WCsje`x^TOw2$UWHIsC<+bqow3A9r6+1vwV9Hiw@9yzZuyjXOkzqjY2I z$;QE>Uw;1g|NqT*Eob>#7Oi7oxcT7a>~#zbAm6>51mYij0UC9< z`Jm+_f9qVZJ$G;1)_ri7O90}WEg|m<-GH*m;qYA z@S@HLR50?q1Z^w`d+`#~=)*PyHTN~BEe0AvdhjCq5oibs+zbb|ghXFFHi!H7zZuxS zv4=q$y<5MPioQ68kbDG@d@T*?LV`)C|-}*!e6L`W0Y;<=h4>l1g`KZJ!(iQ@Mj&Lrs>F)`gsnLcTVH|>BLoe+ zg}s>i5Jwbz@S{}}9590i(H&FNDEMuF6a^s9f=(EUj6@k@htBbcy#hxA4|tsY@dNaD zh(=gaZVHWuZdcF-v?p1h>mdGv=eA{DgX|N4%o>1#uj=JLq#d^vAY(xde|$S`dtd%T z*>M{V(gev-&2M-J@3;kR)ce`Z-YwDX&eHt&-+zM_nUDYf?{)|6u@y~cVCZ&diHzJS z|KtDvZU*S+u{*~%29^?$Zhw{x1{MZ}ET(S8<^v)D{|#T;b-VL)GqfHk)eL^&^z;A! zEQan6FA8^qdfKhuO1b~D9y!4ezI04B!vWNk3wzC;0cv;#2S6+YU1HOGL;!Sq7$oVr za&-HOfUM=@0L`$w3UoS3fJTCRdBCI3ogOTp0lowd25=t$G&Ios2DAmR)Avv7NznQS z6L@65HwMSUYwvDXf#x49C7htmmd!sLN^gNDKz}%t@^-t5G#~h9`}hC<`tl>--KlSS zUH^cNTnFt-h3`>)6A<`fHYk5a!kYx3JQm&?#?#Go@CDBb#?rj77kWMn4BZ#@gUX3W zP{|+(Dj7tYAJ})F%06Il@FyFzBzeu$eH^p=02Lm;3=aNaW43{mAMU!KJtWKs|HwoA zlhqr>1DfszO=`JxGj(%;&w+c$*6@?9)TFtNg`t!y>_rl2lP}19Y}RfprJT)m91JDm z4xMaZ_x|Tw!Pw1K!eb#(!sXBjo<|gCdjh0f!HqO#Is*CpcvBWORU% z>iK7AIbHNcnlU`En?QxxiT|&4L9;huFV@|KW^+)x>BT8X*!@5n=!WL11J96hRWC@> z;TIoPGl0fGII_fEIILk{i2TOdaEV8NsYEeL{KXVGMvxq97JKAb%`C=-LZV`wBE#*lpmwc5<3Z4oOwGsH1H;3>Q_jst1YWb&GaDapfX}morrLPI zv)Chh-PmS+|Jm&-pnZt>;LPtoK})1=yf}OJ|9|aLfk^&sC$iXk+dyZGcGn8b)czUw z{a-Km#Ha30%*V3WXGVVi+4w()k%6IxwfPrQiB#i%&}ot&4s!`_3|I3n7Rc3p zBF+DpN_d+8F_*A+A8!7~Qp()x%!rsp0Zp29mva0s?&dXdiGG7-#R zEM?D1iVBK&ec1za>YZ2f3ugY-UEt1}K(`0z0GEzAppp8Y-2DBMnLwNV6d3rY9{6`c z#UO14|Mmj`|G~qwSxmi-i~%q5xIo=7k(b6?pzgLnw}(vYN&b##CI*JapP(q<@At=J z2J`D(-L3+S6(Uo9{QuA2qXN=aA+i{>o2g$M)B`qvS@yp`=6`|2{{oR0SHY8DJglH4 zI$0^8&<}c9`X6*SBxto^^NU3OmffHZ;R{ComNp2Z#HINKBY*2vP;bsvpt*vFk-rDj z`f0A~FR4Qn;jf;@Tf-^qrD25J2JPV#R*8Hli&=cNd!(H1My?W@rEn_&)@0DtRU z(8bj!`CCD!ady{A7=H^3?v51+2W_>?N(9wO5ny-9v>YfEc=1Iamg8OqfR+daXCzGF z5_n<71)j-~f#^yC=~4pg(r7tQaw;6E3UmxS=+rQXs#K7wKj1kukg6pxRqr^F%?bgj zx&~9l-vZjL3{!aoMI~r;;)^wKm91GE3=A*5|Ns9V{J&Jf_(03a|D_`QQxE(v6#&oP z?cfB(w?xYU{uVXRzBh1MfcPed6V&Mk3;Zt?$O5km>;x-UdA+pT6_U6roST1g*W3Ls zmFRYr0Zkch=>Sbjz0e0Mu*9L6_j!nP*ZN;OP9Z(V}U@&4hWy&wU0W_54D$wn~(RzTtBMX#le~9z#@_-uOaHvM3~FD3 z2E;f(i?Cb;EDID$6nb5Mbe8@Ic+mxud<}Ap?;mF0ADzB`UV|^(J~-3(koKXOSvGOs z|IPgVul3~4f+<`A-M_j&RIu*U2m-B(1x0`0i>+)73|a7UChWx=R%Cwoiyl@`iZ^)~ z$OhlWimTGU|Nl4sgp^j9fB*l-7VnUyg#SxLvY1}_{RSmE8RG;0L0gp-P%~CM z8^{`omlc0NMOigy*VqqV{{GpZom4ILpaS`a3xB^eBdBP<01i1-{+8`vh75lTcsale z#*#pAIKKGfvQi?y|9mM6n$iJfMsTgr21~Lwvaef?xaxUD8>q@V`_BqBsSl_$la^o+FU-4^|xf z;yRkT%9lK#1pLB{zXfz&GN=YD0})=}fZGh3xPm9@sUVf0MBVcnG>HYOYFaOqGId|X z7SWI>E(9;V5a{;c02L7-AOn7i^Y?rIMhWtlxe$Bc6`%I+|Nk3d6`vf)HdumWK~#Kq zzJtmENX7TE=?5qd(1Q$InBNDh0|#02PjHZdl6&xrGtA%u10H1H@ZAJf3=Xm|u;Sns zOVHG%yu1nX6${8$b-(`qZ~kfh5;Rtk#oqiPDBk)we|yER|NsB1wB9?%E`WA3U6uzZ zZal#jfnD_$>~>J@gOp^T_6oWl-=|3x4?s)R_V$e{hm+2c<+%d0+SQ|Npe+U*V-( zttU%av)CeEGkSJAfX0hEl7IgHZwqPmMEv~!A9Trg4cE-?|GPg}U#wwtgQOdHE8`$? zYbxyJhHof|1YTu!1ID$ohwW zV7CHMO0m4u`1b$*i}L}X_3fRdKVE$C0H5n;dId^Vh=NzCVl)IA|YaWbbA11w|wy z^9E4U7t}io1A!L`YXAQ)IKwXR>I}QU|1<0YIcM1gZl8tFyyw^j6wa{=fIFPcZ+Oz0 zYb6*;g+Xly@ZO6Tpp}fxM|fV>bi0C)(u(2*Ui?=-~5BI%mvi< z>pq;tH8cAA@9rDDP6lb6pc%0Le66?ZSexw_%O7=%_ZI%^T|yC-4P&~t$TL}sC~VA4FdxMBY(?FP=}+IhiM0>WzIk4U>dWN zNLr`so3w5xfi#B>-^Xd4uJ6*iop{nZT|cFDJ8`6Sx_(LPc4A5Ebp4jr%>+8|19ZfW z>#ttdH!UYiM2t@c28IU&{@uvs)Y|ylth;*+P zhxJA21FZ*3BA`s=gS}oHwx9u!a%GT|^1&Coul)Pp{iUq^_a%F+;EGn-a0$u<(Fx z*Be<3|2Kf0x;KM?;k8&61G@N5&^XP7?tfmbm+F+eW1n=F-f6aGC=>1GOX~*R@dQc{ zY)t>Ty;?8TKkF`i5%wZy_rL#<8yI_2kAM~$`+|1o96kV<;>con;kO$!mii>}Wge(~ zV8>8$^_c4u2IG^RwJ*Bw^KU=Ye3;2G&62s~JOB1Wov|;vV{bHr?%M`kug%}`1Jri- zp$^$?-2B6_M7a5fM@dBU58o1{<{ydtt&bQP7&3gOa0!IJklPL(8ahxK-0RQP>HFe! z66hjLMG&C?B0%?Q^0#gTUE1OF@(_qhdI{=;9dmucn3el-11OoiWGvwVspWjx$;iL} zmhpHAy5~J30&K^wZBRSddfnMNU0-AsysQ9q*bb^P!gg!?bLh44=Whj#MDcIuPXo=S zJ^(cfL+>=(G4Qu!fGk#zXg>J}E2lj15oIwAwQW}v(F1^;&OwAM@ft!;n*|9=_%_y7MF0*bIcnbCol-k=6K zWSCC{df>45i+2hz6)(6H{{J^V@G=yXFlu=iN*;rXOHk%#Z~ay({^AHi8{h8q{nF|BqxArP8>n^6zum60 z_5=U+|E-{NIQd(;K(SE!A+7npYIiM1i8Sb5pkqvFouI{w-L5~H4>EZ`40s)387soy z0?PQ!$Cx@|-=sC$DVMSzbA7|ue2j^IJ6rP)SI{-j{-w;#$C&>_#LRGmT5WA?fRocsoVEU^D!on+Yj)!CV{$*2TDY{V|hRxXVi}U@!F*I zKncr6#@9?;r;RVAb&9u~EEQ}$P|Evavpgv1K&#$g3%pnc=748j4#|Nk^cUb$KJUO! zWkNn%dIxA*r==?gXuAq%IR#I^3(#HT;4|w$5rn*xFzkh=1Oo$TpCEq=sHf2_)_p42 z_;z@26R2ZqeW8S}yOzV!vV^nwAdmHl(y!g8TThm-cUN*i7wYhWqVqp%DYx-~&PWai za3*U0&j{)2b-S^EE?Ra4U2oi6$-=?k3fj=r>!i{fkn@_YGlHY}0FU*d(r?{y96Kg5 zFdVRCEcY*QX|(KRU^q}>+-TVcqLmsg`$4o|qvZq!h6APf$K5zUD+*qx9e3ks0}T$u z9(Usa%?`Z|Iqt>*>K48BKJLcR0+MoSw44OeY}{x$8AK~JT5e%tI8Y+kXt|Y%;XtX< zaW@W7j(#n9+>N6Tq(k7i8wV)Yy=Fh|#sNw?|I0YK&u4K!x2Il@?2O}hE%3jPr8APF z`#emv+x16eryFR3CO#UxRxa)ZAE=~;ot)YHhNrofgDDJj_96#kiP(#)vatPOpJc%M z$i6TzFa(Fc=vc(SkO3-?_Hmrz7cl-G7XDvUWf7-9x2(f?et}L?kMsNjt+z{98>|^h znY!=wf^OCN695_tul*7b9v=JxR3d>6*Zl(81|kU>)47yssfs$lSe+^pTMKVGYKhyLh3-+c&ldvC7;i=(AQ>5uN?oxC6uKndV}rzpsb zfESF5K}VU_{s?>VebN8_k>GQ?K}|t$11}KLB9Q@4!+LyANZPbd(fN=3 zv|E?!zm@|fl3k!{>PxrUD3q|+aF(tG9p84${XfHNM!#dO{}~!U^~)j9ge)6W1+&}h z&tOqd>j!e8A4jKU^FfwQU(khT{~3%gIT;^#&E)3LU>8&J6XZn06^x~FV0%jVd;J(2 zER{-Gx<9_=?(+R_e5vIm{}k8%7hk;Q_GtZI!g7o~#{EBY>w(gbU2H7}N~}Tq_DVTy z6iN(jI7@U}FO?{_{x4zfV0Y)=#}@D+?LK660goG!&;B#Jy#x(XL5yQ?|Ihr=6f}(K z%M%|L-FmWwxml5++g0R0Vwn~wup2=QbNeFD<~Ccb_NFH|5*$#<}UdEKQipaG!O+k zv=`Dg4-5p&rqyy7U+Vte#r|5t#5n=}DMTv^TE;Ie4NEnzH~L{2($RZVK2l%wl|;n|M~+Y zZzDP&pd*BP>sVe3g0@yd%g<1b$mU}#*56BCgO>FepN)HQVJo=Fdx!;c+XJZA!eGq` zis=&efET|&(^Mdzf%a3oa&$9Tvr3%i7XV4!he*Aw`}_ZY#_v1q0^l_A0(2&PhS*(p zft{d`cmX;w@V_a@xEJd{soxZ&{RLG~qLo1t5x^>!&o^NIg2L02qvi-HzK zgoSrocYo@RW@&yVZ~UvX^iB6U<6D={Up@`Ga|FDK05qrxI-9?<_Dg5%hb)Ci?Q`G* zAPzOZX0g6slwiqR^0nKz+xLy}r_1NM&vi0G6T>yonUr8Vx<55PlLr~i(9O`z(e1!u ze5%v;hw-8AbC-R8Tt3n5`@`DzODT7jLZr3phmr-|pt0aD-9JH_D{s8+1FaF~4S&%) z=l_3*lOwwi8DDCCAP;iNiOZ+DeP0+utYPeC=oIJ%kpV0aiUV{O0JtKLe&Mn^ zeX!H@M_4yQH)zclI8;E>2H;TZJ`vn4*ZfdEyt|IY_(pdbhw%^N50}qhK6m-F^*{br zP`^|AGx%_Xga4SUKa?|dAM3R-0ADt)5O4jjNH&WlJov?)IiQlY)Ai4bi?c!7IR7*s z5okSGs*%OgTL+S#1DD^3EDv@HsPoXvva$PSr|X|ylbsM()&7C`8WaKD=Z#rGF$mhv za!mVp^8x0AFPN;qgZGYH=nVZ+BG4WB#rS|jr(mxqi?!>Y(y!gFKe`=2s}ABr85n{) z*~v&#@dV5P?L^}2bmTBT5RbH}=6@*% z_=JxaaiE=1pcO;lCMo!+=|7+*Nfy%!CD2M{lo@=`eqYdDgx4C~Y}RfZrSf2pA^QsI zC$>&EmQFVgW6+*xNXZijHu?wn6ze~|u0H~@m|nd611e`hEsqS)3C=rhKs5;HFt81b zhas+O23?KBq5?jD1XQC&ZeTq8V$JXW|2Hrm2HPE$rO^C9-uPRj_KC~qjKQZ}hP{|B z^#6a@i=H(g@>LJ$nE8SQAady*P#Gx#TEd^j@WPM>v?gU?!Yv+w=9B-!KH>1#k(vMh|2OqG%`ag5trH@&5iA61TXljZUMv6$ z*npdgAmJDNGeI^Bbee+1K=y+JrPqu1YYc#2U=is_=Ok`Xx<-mGRcc*ZU)f7(nyLV=7SZ1 z?E#Gf&*EWVh}-}>O98p>(e26unvmzvKGuAIIo$aF!52)Hr99HNzh73qQ6kgL2JX|9 zaCe`877U?3nvb!#TmLS70;(nAjL$~DSh*f4Zz3I#0;(OuUyFC!fp1`dH`7}WlyZS8 zno^$9C&mXrrhw|26l6oXT{%`Ll(1y6z7}7>Q3AP!Z3RmSOBT~>wiS#etXa$vv4{D$ z9cX^Q#C!l$1qFBC2@Gt0@}c<%OK5jCOJ|M>OZS_`HysQN4B&)fe6-W`Pgr-cLa(z# zcv!&yVvZM}-9Dgw;Rj09no|$_3+Q#024&j)9bA8znCMS*R>(wMIos5UaZi3 zLLaW_Uq;O4u#F)AE)ok7bI{}=OwzX%3T zVyV2A2!A2T%D`}(MFn&eNZ5-X1`G^$oh2e8Vct(&2M)vT$I-ANP5?A;8P@%|`I-E; z!yF}I-&_S4O9ZkQUx3Y{|DVc82aJnJKJ-=|NpOLH~xR`r2Fg0dpC_Q-GA`yh+`?EQ@884 zoy?%wu?PIkCj>x4pWUv1tPj>|YoF+L{qW8817itm>;F`HnEM5E;QFn*t{+-2fmVQayYk$Xc+G75-@WyJd8pgaM=F^xnA&_tAIiY zcb38nTZrg;(2~nI{wW6##~OncG9xAsz}o;}yX0j+2^!L-GCmn>eA^kaiYt6SF9XAY zP7e;ymO~GoZeM|K2L(z%`~LQWy5^h_EZ+_?m4H^X?FaR;n>|>Vz8z$Q2!Q(a%^oZ) z-wv`s1VEkoW)BvQZwEOb0-#=fvj>X+s6E(S%G1qu@Bz#B3&xHd%?|_&9l?vs*q9GM zML1w07hga{SYRRtUob<3m_R~o-M$L-bdF9pWAlT5%_o>T8D9&5*2Xb5Klsai`1J>n5`{k?Q<%Y7K*5%QiGiU6q#d-Q zwOQfuYbmJu=glWrUUNe^ubWSBbTWe4z`h~}AF>*AG(LRrpOL{36d#-s3eB|&3?(`s z!xI!9cDqX4WaxI~xETSuR*Ews0i-Qfra2+uAxM<@W<VCZB61yfuJ`%TAyo6@gY?>YwDm5ztqg#`*c&`HqE z2mUqxU@Vt-Vafv=eTzN(LIccE1Yh_GuGc{8Zr>;vpX@$pDRR_e8kax`hePuZ*_w~9 z*}Hj;+DzjT==6Qkda@+68?-v{MK|a+jW^w{5}=l;s|=`e0yVx|6*53Y^8Zo|&>)Gc z3TXei>z^0l+Mp1A5b(kSbT%D$wHtfbi%?MUf7kU#+-qr=t{1x63=E(u7Icr}T~~$X zBRrrc4b+9;3pWKJ!xUVQGu_0GF)_S|=7xiPfBzvj&nScUsX_Wf-Ht4vL)E$&{~Nsc z$pmTy9EaWm%E7?E@S=Vnq*nyKe8w20?{F4Jh6czyIk&X%c z*xnZY#-E@TQVDzDi)|AiC)9v?Z!f?WfJ^~ha09mB638Hs1s)&^_U?r_xCkT;>cC|& zfJTo&hrsz_y7ls2B)7JMw1A9y0qVXL!HrS}iGz#+8`RCv?cnj@KLd)NyOGVY2dRfu zv7o}T7u$t9FaG`i506DWy}JS;)%_$=9rzHIr_l00FtFQ|!}z3QmUE{EXi@KRh6>P1 z8dr|a4$$t!ZdZ=T;|?C6sOWa(NbB^-0aG1CpboJsNAm(7X3(8%pxa|0O?uWBwV-=& zK?2APah4ZipcPd|1P~ssK}PCJgh7`^f@EGWdV{(b2mk&55850I8Y~7~2ipAsu8$|+MLS3vXk)Es zMhY_nLl)zU8%Mz#EHYsd^0h_ye^aoL>%2gX`%>oc*H1G*jtzhD5;Ppb z@WQ1R)Ro|A{a?Zp_FpsuG$?&MKJGA-{o>ta@X!?KA~f)wq}?BkZzDT{0p^TAm@@*A zoDuxuX%EO5+AwFRV>lz}@Bjb7FZT67T~W#jwfQxS(S090UUoR+@f&u57f(DG7#4$k z1lr@xY;@r8i+J$#ODSi-3(!q&k*{Ba`f^Yepe`4OCj&z>FG%4321Zy$gSpL>fLtB^9#nj- z0BPO416C4d9E26MzC16MfF`?%GCLoLD zMGL6ri-hbV@BSaw{ju8(RM8apfbJf9;l&KfSpuND$9Vo5fQ8IC85p|#IGT@$bTWcA zVyy=atGNk)c0ZKZ?+UogBM_d}ZDD-UG0oblR1UOuLNu+rf+@|qim8;p`2b7vA(ph( z|E0H$54>iPKEQo29+V|_Se)h;Xy*V~0JgvRfKR{+gDDIQAdwgPlR>Uv0oA|^upQq1 z-&jF$&RFX9zrY8am0mDRVPIGY%2bh&aoruDE@CI|3D7+m9G$$NGbpzd za7J(aU&;b%>hwA@f>!hfgugJI4vGTM=sak5^<&uZ@?@s}|IZj7*a`BhLpviV)ntHD zP3^XS|M!84EK5_6>r1qkn`^}gPg)+{H^sssatP5XwO@kr9p{UK*pLGT;MguJRoHp;O?wQBX~+E z&CAsMiAZ>sUS#)=&r6#Vco+g+ z{ODz1hy(>RxJqt(13L8|G1dVZ*6EIgv~pV|{{8>oIalQ0|Nr6LwIZE+RY2Eme=8M+ zjJ|-!aGuTuk3SrKVGY`r6x!>N(b=o<@BjZ^kDSh41rP(=uwY%l#K6$mtMl*wf6#se z=bwm<%7=CZMJhRH8K95W?9Ens?)s{;NSoMVFCP84nwZY1*N!F&}214ruBCBTu=xG1P7F` zzxcMAf#Egli|yb&?x1~cSrAnL86eO6-wN`|ixkjW-npRI0S!#u=5GOwlJxclfSPTH zlN(w=L0$S0bb145D@boENFEd$!7o8u%%N%PWf-U(2zEi(i@PqM<^+EWXmw2%Q*SFM zngTLd1Q-;;UdTCvCMfbKR2^Fc?)GWW(a28SU#w0aUK(m*BGM9^9l ziT_(cj((8>6XtIPP4xtaWrhCV3Q8X@ybv;=gF8UCn97xC?*#eX`e(5c=#+u5!2er8 zvGPI=rnW>BoGD&{wxoB1W6bzuS|>+0I3>5<200lNz}*a;%-wTA0SHN3psgTbFSzPK zP6Vf`SD@DS;ghpzFr?$by|VH|@Tg#ijoP-zZv@r;Qe{h(r|o#C^Baxk)GrL6i=UfoIatd?UO4>y_y0HpXo~hl%%6Y%jSsvIda>*)Xo%~_ zi*r4oQLi7pzW(?yHJ%wWW^f5WrMUW`LBZb& zGO^qBORtAOH$$iImu^lHa&NcqAJAlV^Ff~P7dn0aD7yXtUBTu0<-Y;MJ%(_%B!FVv z^-uE=3EP(GTmt+(d7v&%?GJ`huWmn$=JWqsPnHOF9|s@R!1=#SFI?zJIBRnsgLG%G8<^$a<$6uB)F)$b(INs{;??347C5Fyc&_<8$8=Z4qK-$0Y zw}5)xY0Y*%{H=-Lg1U~$nZFfOaHKWYvBdMYdV`iCP5@V`ydj|FCY^IZg&t@+p1(z% zk%2+`*u@{6U<>$L#6imdts~MbnfY5l=csq@1zEfslq8O~+Cbe99`@h(MddV5D*==> zWV*SLG9uW0kdn>%XNll{u&(CAJdM9Wu~>Jw8*F>?VJ2|m3V!i$Dg#3|I4ruslm4YV zSrGeMyBQc5n)iY%Wv!173+`?G^6&qDa0wRhVjs8*1TeDh6srA7n{u-U||B zC_M@qDtpZit_Y1!wjL}-8+4$sZUXTVz?7n7q?gmG*Tk|0S zh{KxyvGVtU=0jQ!lybD*E@kOH_?kWZ#WK)|!k}3VaI>OsDzsU#e=evf3jl!^o4z9w z`4cAOL>>$}a}%JR__vsQpw9j!Wl|Nrl8b@==LKO`VQ4Ag-92;N=* zI@27vZNmw5L~k+E!DlQGPj_y$096MfcHO7ax(%9_y8QkBpCQfKup2C1Y6=V30;V+U zLZ-CNt#%;g5J?F{z=Cv@?(1#^X@|Elz~}ch_V$8P5mLPkQUpoepfxM4CLr&yxPn#% z2D~uY{r`Vws|IM!6_gA>cer=+*n!rn^csL{?wJodC#kbn1;p{^=}U7_Gt)L9vy%iJ--50yT@z8y))19MpE6Cz*H-%2Hm%80lIw6wo z9M+5_?%iN%r*6jXxgckDd$M%Ob^|3gkfSq>r5haI5c44>b@qY`ZvMqu zv*opN>!lL;ZkB7EY~3!`SUTNUy1|xpvRs3>q|@aZOY<+*(!4Cj|K%LLtzSSM$*Ru~ z0Cis&|8E8P^TqZ^P`M-13d+NO|Nk$s+zBcd(-eDLLCPJPf7BPf%>W(Q^WU`N5|04X zloy?s|NS>U3CdWrTMv}jb+>}jVkeKq|1IFaei2{&|9^KcC^2-mf+9Sy6A}wA z+&~hops0_G>~!aNDGuHV2kK0hcy)hnKKY;dTer)14e(^P<^PiJ8ZShuL6;=Tp z`wYv=&2I!i6UjWS-%2F9V?pa91sm)bz~`KT4iEqpte_PE;3=^1|D__JjoEuj2?`xXPO+2H=&8GRC)C|5q|~|Lz9e-*Mr8sYZv~i{&5x{qJ?>wsaLJ7kSb2@!$U} zrT9*Z7xO>-`~PwUX!SrSM>kWq7fYw>gYJU|Ux=uJ{A3FvN`tI#m-+?&FI5Q+hi@he z3wqHF()FYHhze*mY=_*-B+!=p)UX%Pr~dtq1RWG8Y!R!#KLxy@?LouAf)0+32%mUh{XmUg>TCji7ZibTM==b~~|v^>(^`DCcapV&HE(3TlU?{$be3z`)OtWf0Nn z`lHkLL+k&#;BKbwAQolUKgt)oeSbhsdE(!H@tp_T?ahNM`7gQDg;3zZ8 zGU#>tAKk^#@H4H1wc)2*DQky>$Lsgqu}`dBUzCV|BrHqW8xC7_NWA9!cd&!wHS<4* z|E>S)1j4fnA_Br*h@JwcY3A?Ut}hxaKr6sMfHoLzH0ciI;GY88_WppSpo0zUkQX!V zFfeqVFuvXR5ES9szF(woSMb-fw4N;DJm$uz-F%GcHQzBeM&0IPOy6%dUuO7zyZc|3 zK|}{z>+Kr*9WR&}80uN9PZWt|F$4q$zUaEkz`$bA8TzDy&CU9IDR=Ab8mW5L=AS7= z!dVPiDZzo@@WZBp3#@`GIPirVk{MYB5lknH|960#z|c^82fUx*0<4fY4(;fGGf49r zo?h24Vcn&meF9XJgYFCuG(HKDJP4IyKF@qG;KhwOp!!(=R9zfnXLv31zf_~w^-C7$ zaupTOmizyu0^u(>K}qU}0&FN6G#L9v06du4`o9h|kji9yp!oo&r7KUl_>0ePLD>;h z?g+g7_aC%68r1UzCA@% z{)3JQW?^Aq=n7Q;Ev9po>HgeopLCOnk#s^w1@lQFx ze4P11^NIhKt~{V~N3@SIyYgf#nad>*5ccBcLvTYay7fS5S+5_Hg{w#j^D#Ep?ogR- zCyoXSgA)DjAeQD=jFoKPZ-J6XR!Y3}^%{=uLo>hsXK-W6;zH&!Gla1;*Ge#ziZoan zl=5dWgGMs~U))>>POH%B%k@L^0?^#YU*iKWLAP!hgD(CG2za6R22qLg7#{%b?3U=Q z{qnz5WcBLRy{=!nYh{q4S^^YH@TlhN_C=0rP{HW>C7|2&2lH`IFxGz24FmP52{!@w~KDk7VY2pnTGaC^O^}VH9Nh=M->^Pj%hLVx`~7f;p-(}>Bv}Sw zFMb^b1-A?+xZ~rZOSnM0oM0giN_fzmBmnl4gzg_G0!-MDQ{*ybkSl{o-Ni z`iFnc!R8--YP776*Q&LgEaB>6a|5lk?{NDE&Rrj}7z04zAN-;dT=z;qa~(+he<>)} zL1ZU`mQI0k9k|&5^#{@+tlgm^-M#|BU9mj;+YUD$V6nbXESkl0jFBM%x`4N(9nuqQ zxn06>j8WIo>lh=$j+D7v0>@qNl+5K4=ycr!s;4A6T@UQY0P~OVPd(h}dcu200a(?O z2C(Rr=EqE(t~Wquyo1JnIKuYjfTiE`%;gdY@3mAC|N2->APtUpN~aA!WweE5G!>z<&%7cTd}nKC{O)C+S&4AsB* z`vR6nAXkB@fd*r`&xQ9^!gnK_2j#h57O}8^7m4#g34sSbJRcYcDxr8<|Cfrrh<^!d z-_^VTl}Rr_^B2L8CNmHCHWW6{7VC1c7p8EPK@gRoy^`IfGR^-$yGH-Hmhd(Ib1UII z=K6=B`Ja0!%Q4qKjNPs(%?~)5PcW1kfm&3Xzkx>%L5&8b|D}IG?F^0=T%h|t__u+M z6#DT3G@#RbMC9dk&=3Gfvq19+h7y)6=GRPFOcBlh66-ZexSHQNmasOzV|gwAzf=cw z4-NR-08ljmG4a~B|NmcyHor^#U#e4L*8GmKL=uatzkmM!f31(EwFPuo!x5R+Qdl%J zf%g6%Q9-`C3f$%_6@4N30zOP?`uyL2$Sn>IpoTXuXkE4Of##Epmb?z9`33l=9DvSv zfe*Rf_W%F?fEVvqfhNj8b52GFUV;`!f-Z1)(K7M>|Hv$+XzLH9?E69MeP0U%zsLs( zT7M|b+z(pz3pt~$*N>;05quv|Y0!=)CI*HNoQ&PwHJ=pGapMN2ec4Ctqir#A{JdCz8FB?YJ8U=(PIdZW17B1LJEZBhX@PXw$O+ zv=~DNG#eD&TgTJQe((k73dR!2uosV}{Qn=hqyF#z{~r|DK|_iXpjFpw@Fds##-rDD zN5FqkgGHPIY0b5-82DR2YhJrScNal6WCn+I8}vr7^s*Rty8hY0puoUj{h@}b`$O0Z zVMhjrg#l;z1tP6K)G>8`2si%U`mH3a+x1U3NAu7BB@WF$|CLyG34_-0nS49MQOX_o zU-S(4i2V}9?&IC(p%=njFz9yu13eJFo1xQ5qKg@H6uj#n_vQmE&YiA*tpAm+g*P*T z!@`aKBkBHNz-$6OOTM{I;(rNGbDhM$61E0EjfU6N-N%o)X*4#!U?>r2e!*D6p7o{q z1>u254qX^8f$;n;AP| zpTj0+K?jI;9e(j*#=rlEyJDYbvA>uHG5~bgz45p1Hqf02tp`f@0$%vqGcYtS1MwL^ zyL1}=F)%SO6x{_aCePw}vE~8;!(z~7s>TN(Ngdo74+m`m!M6$cU?I^$FPcl7Czs62U33~`Tzgm@Vl`eUI?*(sw9cm z=^*8-4U4!1ZX67UtG+9vk|mSH@xtyBsK}Lh?E+FIqw-?aa!}PL5E*$_;7%^b-Ovwr zLw~?m0#^y~Z$G9AI>I@P)Aiq7*B^IdKLm%rSOIq9UDprrv;=M!svssrn{7kR@(VD8 zg_j8YH@(6lAn;!_1vEhL<2CDk$0iN|(AkDRr1<+4K|{eU{Gc7RKlu3jK^Kejw}94n zWHCi*A1tW=rM9f*7px^=&7iZ*W-~G{9Cv-70~*_L<>)@&T?(quKqDrg#hg5MW1rk* z=yknwH}=h4wt%~_U!be#uY)HGK|AGN1Uv>6WT178FFhF<7&?9LK+OYhi9hc8Kw~3(gXa<`>K*;<~Gu z85l}Hi$M8XL5m2wT{-SDygqi^^}&p(AZPyj|Npq_g9RY=SqOUvhz(jh1$FDotzhvx zpv4nVA<*JkP{0y!H)x>e1=Ax?Xo5Cu-*x?RR}M4~4ccA6Ru5@?fEzCS+gx>M&@Kf~@$$`;PoPwu`DCXrPwS;hw&s(JoxVKGm;6EEB`-imc7}57 zeE*+;Ax-&XT4yOAXk#q+Q1UeH4=;Hb=nD9dy-~-u$Yg3`-z1$mv{vDx3hS>R)L?K0$G2^ z2;SJl_+K;td^CT_5&rG2fB3ii@+cpKTiE;tsZ0XRRCmX6^!h${k#zsx|6XTC@FD-@ z+}*BE!0X#0URQM=?)80g@CQey>zzPQlkLUJ8_-cuVbE##t{;pKWHEKbe(Z4l6#1Il z_&`VO2ji0+t{)vcUB7_b*X{Zwi}8N}2dL{E*z5Wspcf<%@M5(SsBD&LJy0ra;ra&D zRe1pK9KIIk-|qTF*_EfE_6>MQ-~nt%0CW;c^ot$UklgfQ#}WnxRR(4ThQk>R1q=*3 zBhK;*ypTWr|9=+a&KM9|`1Jq(86Q6W|GzT<#AP}C|Nn8;l(YN-0#|qhj1L^%0aA5% z2T1bp4v_A{3qi7wN(?+2Tq^oP?;a>mgJ;CO?*99qB^D8Tcp*q*CnG$G!PGJ#)XKrt zf{e$a_S#*zxu5R9%mq0DNo`0;RJ2+gU}<@e2flREmLQ__wnPf#|^S*CPDeS&_wpg98GCgI}0}>aFdp zr_S;VG#}9cX*_WjV%0GyeFQ|OS<3D?%P&wW&%d4Zz*(pjhd?s?+gbO4=>KIR;jhK` zx3eOP1_uZHFB1t4e{l|6BI&&L&ti_qVu~`poyF}O-~2PXmM4oPB8w~D_)-?DQ#7dI z0lL=!lEs+C_@WkUU_`g5%oQGiZd(ly=_g}-y;jQl zRE?VT`FbVmQ*}z#=WFG_XUKxPpVsGVK3Site`kHZj>Gy?EhvvZ&35CkVFq7!%gmPf z0W@%Ce8BotDYvz$0w^x#9(aAo+EfR`oO9sycE~ae&D*d(U0@*SHt*(I9!5|1=#*~wh0knO5s!|bY& zeZYp4@^PmvC@n%pQx=2#4Jw>EO+n%N;?y7Tu?3|r znXW%T`n!2S3YbrHg6T@W#)AwoYOMcxL5g1s?f`MDPt@>fpZL!T5`rk}v;`&d*K`x zf6C#O+a-){VJ{{|fKtf`0X|Uc?oSt+jdlr#jX@2&jb%Nv+w1oYc2=cMZecI7BL4r+ zK425s?fZxM1n4|XRvXKDcDF7z8-v=fAVsonVJ}=kW?@y)a=V1}`^`?@KgI_v*!ZU& z=yd(k3O@cuEQ=ZB-U5~vYwtiET*C2Mq1%Dw7z0Ch>7N(Ppbc~e-KAe%TO2t`zf&Zd1i#S26?fF|aGcYh@^MV9zx<${NS@!?Uvi@h(fQrHJ|KQ^nKy5M0*bk-b-E18Z_ODsG**YX(YRg!% z{%2f3QVd#>%nMS@(e1_pQqBsZB|t%H@bmxwPJ`~!A1|b!tS>Lbz${4MLdu_&*I+^0 z_=X2%wNEp+2KnFH3OZrG8CZN8rW2&VT4*QUAVtTa z>)^qwmrr(rRxh)?XaZ>go#F5T)Z@f4Qcf&-|R z-F@su6UdnE(kEGLFDyVB4nwYafs>)#Z^FZZyL|&-)Yk-1cbH~5`#^5XY?6Npsq=3ekI&1%cZ&E7;ZOHFt=wxd> zP{Q9?!O>YE(`nIJ!P4v@@E;Z?Q15_DIow?ex}7@{WCXO)1llvy3EGqh*)|HDxE&Bs}+f0ynC*{Hw(>!iDKbQ-+=lx2~{_~O(gP|@7U{vtUFG++i^Y*BI%>}>Wd zhKvRL3=GW&6arpslw@G&Hs1-dvDb~~11Cq=i$ak3uQ!3acFk`Dj1Pb}PKWo_epuaG z`XP%cGD~6g>h9l5mo8lx06Ijel&8~~CH^%N^T#wxyON*$+u4jSHUCH~QEdKER3g~? zqny9>HmFz6%m|wH6zmi}?hHB$is3cqab`|X58a!E`C~`uU!%7jp?^9;|7~RK$o&sl z!Oq_TI-b1wM{s>XNsRV!e&|8L+$Bz+&az4K3yBi-<`-O`a~)auTT2-k7`k%*w_GZf zZ{`+wZPLgM>N0O+dmNCtnwXs?XpTwV-`+uVW$FUT|7(V(bY0 z*LCW3Nb`%35{Kp&d?m&ptCX5waF+-+zhL8U1r22czo=qjV0f+8>-sk!_=Px#y$iyA z$;iO)dR_2~gCLqM_ywp=?h5@E*>$2T_dn;^ROYKVFA|FXs4PD$wit=YQ#k|D_xOFHS54Ib5XmK2w4QLBSmX+8oTd!l8u4=s@h@ z<`WK`jPTPNx_vozfkukE8CwrQPaTvb)h7=D@&!ZADy><@ z=*poJ2Hh-EK?9?p>v|bWxWit6&Jc<0{_vXb#h3G-cm~fHpZnig3cmv#w6VYY*o(qu z$o{I*C!n)_4PNAcY=MLUo=u-opv5b&EoOn>Er$R8m5RP7Isfl}vjW45dbp*pgIm8< zm|L5I2GWc5yN`8W0}YG+V#`Kzvj}*(Hh2&r47^D*GV-5EL5C{~1d;zkw$*8B4jF|1*`!d~=9kED_6Mdf}x5 z+JV^p;e{heU!?W1k`v)COhN2`|DrwMQT)s?ORApo>XeBqTarZ*;qg zFdy%9z4KpG0yMT;%F*q6r_=R>@qte0ku=sn`I~J)#jZZ+>_^uZ-L6+Ua-VjKfbWp$ z@{!U74H-#xxk%|XJpA3^`UNyW&D4?mwZlhBH{i9^i-sQ1eRll2KzS;yRm7u2#k%$m ze>3RliY%sH*B9XdFJ9gRcNdy}{O51E#K6Gd{#qi7F}&CHMZk-5NK&9fGL296y1oev z%wi45V(fK&;T{n9zw`v8A=>GB1~dZ+I`$%qq1X38U_h_yn}GkNH~x#R07pSXaoWHF?5x;_CNg$XkG35rIG=Gq60MOOdaIR3k_ zfSlj-?%)6auQj_vuXM3@^MLbGhl`{hG+Q^Y~8+pKr1OgN58Dg zgf#NNm2V(u{U3+%0niE$Sb%rC3V>qdkM)mYd;ab6!7q+1U|@($vp!s^(d@>;)cl*P zR5Xh>I{3vJn7F`yHj>tZV-iokmz2-+c_yc!pR8N?u_v)cYY5EG$L`UPpv? z|7(6`fABwB_BVrWmc5{C@Xf_QqoG9pMaq%?|GOQ0U@HxUpwbOB2AT||Ak9*s`V}hr zzr;Y|zo-a!6pw%E0Z1nrZ0imI5e9}Am&-s+*^4{^;A3S#gO~?F_nCq3A_q<6c0(?1 z2e~l3+lNB}G`FC}z;M0)ZxqXQF+1CE zm9qbL<2c67>)yfM>-yW>`bT#wNL|sr-d2!0?H|3ZUtWV6O99~!k$^yWnvm}X%Q3pK zSRXHvf@tgpTV{QuXgVS&kz(*oI#LWmy!WM)WbZK_hWN?&QYYB8onoC~ES+H-uS?;+ z)8^mK+ z@cOnLt8f3MA^TPW6q#)Jd>aOhO5@w0QNC^$4vB7Gf$pE3t#4j~_R)wiAMBLtjAQ8p z2YY86hxG~mX3zzC-CIF%)Y}^H^Z$SAf5nRY+xeT1Gd2I@D&++GTcG&>_=MyGOufE8 ztPd954i3%;_LC#MTYgWPPLPboX&>SAkA97VEtrCl>P?-+t)_ z>Zgc;Hm##%?u)6Az{(QI$N*Kze?Y^&r5w%w{*_9+XgdL^?IxapRk1I(fi6M)#@{iG zfq?;1>G3y%_QQ4GJNO%3S$FzA=w_J<%9{M!TsSnEA260=hP|*>2326^|993t0d?b` zD!P3ifGhP<(HB~9YhLg`Y<>-0HyZZB9Xy1{gK`ZW7icxZ@z$y6q7!T)c#wK2#Kf1YLEBurkAb}pYN=c>0Nqav@qDN2mCn!?T`>Zh4ZoR6 zSQ~ybmTGh#{0{0e$-dBny3!P3X5g`Z|6c}z2Dn_Wd~*@dP$=QgVge1jg}sPS0JS;= z!d^T9jjyyED6wq0U83~wbi;2({`Pkapwmfy^t!$Y4|ov@PO;WZr2yzTo^SPO5FJO9R^La>w&rzpd()RTW6tYKK%Rt|JMiqmxApG z3wW{c&;S3gHzN2)e*ORddSSNc#a< zZ|R%f+8axkF70-`(|VvZx!d(d>wyxLEY>*dW2GW5_EUta>XWE^-_FqUX^yYe(AaDWd$0V!o(!PxD}Q?jMog9X%k z=gIm9HdB!UwDBv8DH?2n1jw@Q2nmD%khLhrpmicyj4$@&{r?|n{h@@f8?<_H9fViP z9sc4+JEXeg{9nrRBG-n2Au{fNDNlDSM=OOSl@ni+hz9jsLc4w1q; z;GrI#?hD`$Il$jC3FK{G9^?O@6KD*zKRAHSO5*AEknrsE;As6;r`GMt6ZXG=CFsRk z@PZ$n?jNAA@L=h3<>+8EK4ATif69T^DWIDGr9n3Vigh3AJ_Tv=Wy5b3ea*Tf;xdoG zHwO)cl7m@H;o(6q>}44kln*r@0Sy_Ju0?kG2FBN-pw!Z{4KqpVNekU=OTufYWWWm!(8RfWkS80klN*2h9Cv zI2b^;9Lj?HW$CI=Y84O=79Idvy$BxD?f%gEtyC}k#f->*|09jR1;6MAF}jcSroI6U zM1iI>Up$M0pxYfg1-w3vfV7YPhpF zUfaJ&ZDC-z8~OvZI_C%nXl(;%X@gMM-J8L8Z@j1i8}cJE^0nNz!wRJ@K?dABi7-Im z#j16nPK*q4dmGUk3+o1-wAp>m*!0Iaeu3tP@}NlhU&;YGK^D5e^&&nE=!>BoAiffb2>E5gC4 zWFXk+5|F7ZFS^0yjX*bO01`A7(~V+k1;SJoJf_xwOa&WV12UEMg(+TB3lOHRi-d## zHn+BbOa&X=0Wy{C#eL9p@DZ?EL8r-JI=2L2a46JZ4lIE%1!Qm!hyby&IA4Hn$b&_r z;{Q?wP&A?+t_crp>?uir8Jv;?5H7eJ0r8p)78k4mS-u2BoB-v2-WMzguR*&dt=~$} zVp$N9W|uL6ZSp|alnJ#7TQb@LvIJ}$h?OPqVive10}ezKFXFV%3}PP#!oHv35T8k4 z@!1)WeMdk9h?OPyLJM@U88nLsf!d1akh7%-$WNfi{4dI|h*Kco#Wip<@DC_=OoCd2 zEebz?Y5dB{Y+9+EJF_&X8r@;SfuX$kEG6qxtLNdDn)CL|b z9{B+>9Bd7Ul_mNj5y=L$m=OjoPytOHaxsGAh6NE;XTu<2g)M>0+~E?)5CIV&R+jjS zf1s=LpkalpI1xnbcHGqm>bUVhYszG(P1sTa*b*L)O*cU4P3*-KB%3HIK_wW#K5jtx z_;x77$FLF{5@GdFvpE=E?D+BjKd9pQ zegkrpcR0At+7GHSBSAaHV6|~gv-r;$AplWOf;O%48K2w*GR?7_YXjqJo-C$_ zogi*IqtSslaQwVD5&{kuh%-Qo@=Mjj_JOL=W;@Utbi4m09RJNAm0q(NL-R3~#(yBc zlsc4Xp=CJi&cP z(9pRUSoFWih8GO3AYDKHmoWc#eF7HkX4wFm8T~I>uz*tlECNy|WBdPqB$(H%vVpg z!VC0`22|NsA59%LI2c($j@#ZqI1Ln#Lj zQ-_PC#%tCt?hZaT?N6xF0?5G%>cMiFc|dKD zG)pP;kSzj*?1ye}$bwFV>2+e_-_G6X`=$A(RJZRB{uU+BSvR~*H<#*5!sOyJf<1DVIG)sZ*P@YneEUw7r!z>^*2UwbqF}(y06oChW z#X!U25Pf?S#T${<$p-a(78fXHpq!2p3vDPfsw2cg=e2d3rR$$kAxMOAgKok+#?aSaSshhIQ-*{-$%F86|~otP#hV*3AtHg=0+G zpPHZjLyf<{Kv1u~JC+B0UG^o=X%iY@poI8Tto0P1Wi8 zqoKw^lcAKo`{2vp3=9lmy~Y0_mkCv{xxJjtz`$U9iGSMxr`LSVzgWtJtUnj=`8n}# zV{6!9aD_*Jq2y&3AOE(4{QDX}+*Z)-@!K|niUBPK28NfQE6yCO50$boe|jC219songG88njiryDY!3c3x;#ZpK6(`%9Mx4I8y zG0qGE9ar&UHWxTB|CdT=fBs)85*D1r03GcIA762y^-`%2q!0{v@nHjWmQ@aPbp17` z$^26fFdZ;*vD8&zGH|if?PU>yp6vi0y6AQVE$6A_>Hgj;;@*AS`d4vWuRl{T|8|My z-%=&!&A)j|6|7Gc%VcrIr&(Hd*YcDKW^qL~A7DxAlxsc+N~f=RK+FS7pp<=($@);y z;nz~2Xn@YgW?z8K2RHZ#YA{7>e}~3t?BOhtj2ED4;Yjj7&|)XZyn){a$OwGo22kLF z3iOwtQK!~#{2lv1nFc&r&fg5Wyb(Nb4x8l1oHyWa>1AMG*zy1W|9Wdz0qFzH2N+95 zU%XonG5_a!kolnT_}4XIFK%-Ym|r*rRt|E`i!~4vNSj|Uuz-0f3bN-Uf6F%}28M60|C#t(-+;~!16>SxA*{QENutYzNwdQhv~t4u8~?ro zpeX=p&;jqDP0$xW+Yq~5c_7y|f@c)EL*IbrFj@|k%DhNh_wT==!HXieZ7=%P{`(KP zq?9G%;>%9gFV-iDSi28)`hE#`VOj*5(d_>4BELGd^J=wT>sf{mE^ac zEXnS6{m~WsFN-N2Y7Q1Nw7I%m|694fDYZi}MF(PvX6wlkRj4V(*(}@Kg2l&7A32ctL#HXS5KU1k!76WL-K)36ci!TEHm;L~&_yMl_OXXpO zQ1%*7A$0zK*o&P;pgDl!aWBDrKGz4`z5=~A?yohExxQh5n*=up+J=bg_7$-7eNZ06 zT>AjzvQWfK4UR2_{Gzoprjzu{o{4d#rL2MDdGQ1?*x}{ zy^sO-gn3>+eZlnO|NqxtATG>ejki8tD*ocfJdHDUy9Y6J;fe9>~a+m)k)4?b)3QWUh?@Bq&T zPH>aZfd?{~1MWSYR08#$Tsa`qLZux4%Ow7nv4p+&aOnU4$bc6!K?}CsI6%iZxpH&| zaDY~_gDysF{`H@~WicpOJMgSvD~$!!+j~J;K*yMyf_Up8yniL?pqcHk7xNE+#@xdW z{%3nJa{<29c4>kg_EnI`h)yprO)a(*(K!mLp36JP`$2*~ZaWApzQuTB-u} zFuCkOwwL$BqGPqtp-pL($Q z08cN^Sy09XEtd1;Xinq+&CNx_&gYJO2|C?9OC*D1J&(YP0?@cJY%coON=O8^H##FdC>r|8Bte&=4(K)@uRaAzS<0ZE}E4UTvxb2^uF*%7?-^Qoa|oQ zhyiuZWHK~BUTux}2f9PI`9G+(;D>6Gf@^vSnxJX@&))%xcWYZnZ2>wguKWDKpKP7J zPrAWft_ud8p%0)$X!bqq#S~DmfzFW^cp(GV0h+zlhjd5- zUVx^cx-T>z;Q`GeKJ7jRS`74qE&H4S)He+&92$SS55ZDYAb9a!c-RXo(6QF%|3_LM zFBN=oU^&d6-N(DHzxD+mRrVtgYR7-k81S;7QhrEr6YwHxIcVnjGU$4?&_BwDtdEx* z2eHqAEdL2!i3Di{H>4P9{6$(y)ci)E*Y!hK7Gr?%x3Dnqpc=Z-|CfP`_5}@xx$^Y- z{s@FL8aqpWbe8^sxuoP`x9bnf(mypC_3XCbx?Ub++!x5AREVk%h1l^0k(*66jM{hgmDjMq_C3a!GzLaeu7SsyPw(_Q-`F8Bq94!FWXD%3#W|Exck@P$LhQkst&SpP2l6!zkRHt3pMP(cJ*2?NTKpCbPKZ>;42twNVR z@cl-q_=~Qk|Ndujf({y5z65lr#|zQOfBz4I2Sc*hUo<9y?vX3~)BO*8s6uD$14~zq z8hJ|-aC@cH@CE3I#!g64+j^i>B#S2wX-Z3!fq~)m8nDjh0}hKpIo$pA?(WhjS?n+J zK_){6IzR<3tWgf1F%S4J8nA#97G01Pdad6oG9l}8iW5Q0Q$VxqzafiKA#EeyKg~6a z68}q`!(Y6qVqoa5&yu}Dsv36r~b^_ShSuzC21Ia~OPGygy-0n2#QF&7REMx>$})bHy){=y^t-~YqC9iTJ<>W6&DGKlCb zy<`2cB;lKz24ksI7$lTIoD#vX|Dqtbcl$obGKgUQ@cOED>5cAVGqVgLzyCb=n61}@ z8M1o$Tr+sVAhiE_%!N^d5y}PyUiZJ3CIA2bcYX<4cHdnKitFZh(3OSYKm!eJaD=yh zt4N1NWPJCr?th?&{Lhws1F`s#S%a~}rMZS#;(v+l3x!Gs22eyQ8z0dAfE<$npqLB* z#bf{?Cc#Ow*@s!;zwv?BVlP%Mf=6TbB3LxW$HC_neL0$cf>uH2K_p*P!qvZaZarC{ zZp{mdfMWUXgUt`^5B^}wJ_#$8L2GmvOV~h*>tYYT(1Yr?gzJA13OdB<1Z?ej^BWz+ zkThtjwL4ZI%=jDVK%mkO;H9UvZ(0wOaJSwDuhX&s9V-97RN}>pg&+@rioh2v5CdPz zFo70Ii1hkidGToBzyIC7FF@`6>7b@s=nczF;A0j|Kr1TNGBPmi`VYEoz*3yQ9dv7Q z7kdYbA@pE+&?<>;Mg|5q>(52^UN(Xnb5$&irOBv!^N%Y2 zR?spqkpDnuMRdEq=?=XCTEYL5wT?N9HL^GMLvUDNukV+@EXDvNr^O0%UjVf;LEUw* zp<6-g{x0!%tOYsu7b|}|s2=WRv9dnQ-wrxIqx)E=>yy??b#mRlFS=Y0t;GKlsbg#m)<4RH zU+{oT10S!c2{BD3E1>&$SIKDJ4qN%6?mZzcA}*}yA(j&ZzZ>i!N2RnYn+&}96Jnn&Q}uCm>(65-(iph+WT zSCN3M|KLSH(ERcv?8Oe#fBz#JYQKOY(e(xNFoW*ny{UKL%Y6P@A;n|k8_>B=$Ylvn zw=YLYN|DC-B|NsB*+*$!5t($)^^0$JvmSlkHo8HzM&^c0|2n&3%3EU1+j+*sTXj+(37c|A_woKfIIq#Uy1=|CPtmn!g2B|wUWODl+{7jHb#R(6cnUd|F?qd0xbjk z5B3C9FEd1MD`-divF`7k%&(c7K^^)RN}yWt`0H}esYo^u>t6hS09vUIGN<)GNmLe7 zzzcbV4JXiTcyZyu|NpO-f|js=?wJ6G++GkF(CsP$>Io z0iKX=g4WIiyeNqW2Yc(c5?AzuY!VzE_ToV)XzMi(=uUb_b2^Lhf2j<_A*}~W1pb#w z1b_|`gd85y{UhwfOCy5G*}wu4PS72!;3JO&nxA~QdGfA|3TQdk3(zS#Cl9Cb3%RJU zr11;cUbw?0kj5`0`T$Ia{P@H#@F0!9_<~Lv|Iq^sY5ZZo()f>_VFn+M)qH?a^&cYx z!zcbon^uK+V2wIp2J?Y5ehrgWgGF2dyWZC`Flb+Feks6xs_`di7d(ISZ6*fLfv*e< zyXyZjGo)>`otgeDUDy`zbfeL99s~<-z?6`z|i;z z#Mb>_&%nTZXx9P<1_td5x&<~24BQtQe?h`_69>rUG0#5n$6QI{7gB}T5ppw)KLjLp zD2+e-(yjyt28J~LBbS&z@e90$I{M2e{uq!4Zhhj9e3!b?DdDA_;n9|;*b28 z#;?IU0W22rCXK(~*}G5t5$|@@|7T>-zQFqbAtM9#1zix;{ELCVZ#^pm1M`XI2ldSl z8yXKb{AXnN#2@kC6TiUWPy7+G2f(Q-^7<$K7#REiC;phj%m*MajbCHNf^(p7)-Ywb z3!)>>r}0NzOye&&_3jgY_J`yi5~gI{E0sT>|X`2^1PFu_#;D9cs}t* z9#7*h{-~SAUvSbTjbFo70GzNQUZwFz-u%QLaWsuz<6$v>rQ;)7r2t$tRVEBHk@enBEr12MjHc8_TyS(!=GbqaPZi0*uN#p-@I*tGR?KJ*(r_=a9 zUrggKyPU><{ZRL*#z+6_85kOWfzk2f8PLQQ( z{2)_9cp;80zGwn5T}U3xLzx^JlS^SHEzx^sB z1H;QWSP_xNAAVrR2WODyj~rkIWmIHqKJiB$N#n13l*V6t1!VGr=3fjYL23N3f-8g- z>MNuI4D1bXCMQ^S)!VT!yo>=YaJta=2;}1CUks%SyF*k28bK9(1IRYRgAaL?5AFha zh5JGpf8L=q{^Ab`pfU_p_N4I(g{ZK6;*UGEOBys!n9jt&0M-DCbMTVro9{ryFEsGN zPp0vQ+)3jvJDtXV{bb`qP_#Av1d;r$dqLd`P~qG75VX6n`6mNpf(z^)a0Hj8!jm3> z$OR=Gw1@?pP@)Vo;pjnT@DXUuKNw2b@3Ml@!r{BD9(TC}K+c7gW-ulEE%J;E3=pqi z$}vOaKJiC9`NS`9WY;@p28NfhpbKTdp_9g6cOi|x_!1}rFG0eY`_N7XP-g*@F&h4X zQxdNQI5`Tj7JzebqwA;5pD&ivhEYyhd|X6 zC;{z~f`mhf0Z8F4Sq4y!{{O!ooOjBli&&d~GL(xnzY#z!gKoY!-26rcEGEzyqQcXC z1#~Yn{AjF7{a4as3CkmsPcKOX3N0z=RbenNAUSp5Oq)$jfWckF*Ahk2gM(H zncw}X@g1lxNaLrV?El0c0jgAyOZ!ueuRz9rzjg2zd-EZt?nBKF6qql7Dv2GSN+ON_ z$PeaEpb9~R78ODof8NhD{^IYtY5aMY()i0xrtyD11*#=LRRpNm2UQbk{Ndly_{*N8 z@qd2wi9hBhs7m<6A8`WIFiGP-@|`&z+E_UBi9h0S^FM}qzc`R%Kk-MN|HK~wYF>PR zn0NF5B(d!REzN^84q8Cxj_#6#q!j)ZCQ$nwJw?PpO*#GvT-!w)1GVTdO*;1X|9^x@ zJ3w7cbdx|yGXtC%!PV>mXayT~5UlTI3&;eJ+nRqel!$^9M?i8cYrqEhP0a+UxCstxD{r62%Mk6g|P1b|Nmcl|NsAg!m(CR*XbYE+fwVBCvSdy%?lMU zdVBNLy^}ArLB-gMdk4R@CjS5bpRt4mbZ+3cLk^`(H~(_IEn&L(;N>PJ28I`Ij0_Ci z2TDYY-ZuYWDq;F|_2$W&4_~i;xs{25;iWe-1H;`LcW>O*ZMe%N0I`7S@Xfb3Pu_eo z`|jR^|NsBbhFIWOdgHZSd{04M3ErgtXw~XUODfp~ek-KReciEbclz?t%`_qYUZKJA^i8zf1Q8dfyRfR39as1%r}}33;b86f;Bf!LhQNubT%Z-+&tN}7Hsj; z3x6*h?K-N$f4%Dgk}EDex$uPR2tS5fz~}YdJbCxV;TK0hvk2cnDF{?o-MD+>=DQYf zsy+-BdvW;oUeKMJx7UKmZ>^dC|NnO=;eh%Zn#LIJu>J$3(wir-DdvPKe$5VL+&hTX zPzB<&Gu}H0cG_*-2Y0yy8uo%RFGD@lY(}n=P{}WMxdb4om+NE+$6Z#odt3tdP9Eku z3CgjE$Uk%D45)v6Zdj*}?Hp8+M^I}dN3y!qhfhnp|%9lZJX?#;v9 zAu245k3eT+HlM0b>kLt0yP2cHc6cTDb{aNt+CF@TRpB0&0E7*?Lj}~>1UCRmnC~(j z?sj5ne#6Df!0^Am(?x|1d_@cYk`vqqA98oPsIYYMsNB|3X+FXQI+&NC+ll3Hw~Gpg zD#8p#u)yK8MjI8dyLD8e4ySdqsHEA}GnL4tH9t@&5uJVi0hqzFg9Eh4=HT3~9u@YN|d*k5-Yk|xwRfHKV0XDe#muw09i*B&#FLJ>Y*pj=f zKA8|s3fOb|DAHTyJbB{~l_5Qo8E@%o(U<#QT7#Pat-Qf)Z zDV){~nw<;`yz9yVIY~E>6Lf0oiV3A&a3LpO1_sa`x`+24L`L4d3ECj1eTTPT5w}2K zAZY8HjLHjnu#z9QUV@Z>6o3xGea&fnz~ME^-5bUS;CsdHx^nCUh4{^fI~W)~{I~QK zDYb5{6<{bWz4_wCMbH7ktX2GXZ{EFemvzHjE&=dufFN;@wT|7c68x>8t|BN;zP!l5 zz+mYL({GB<&kfRl^BwqjB~-oh7{H}9#AwiwA$M=5@V7QGfST@iT?Igz zz8!JoZz=x&|No7fU{`g!N>nG^y>au!>ljN{p3+E=meSz6uAnfGQF*cT-~azN-`#Z; zh>W~(vHJu_i({!U$RQAqfNo4yxcT6<4Ai(Pevk+s$e$#9ayaNv)6r z^uZHYyFm*=f?rtpfYy9OB z-9(PNNr0*X(6J|OEa2lb*g(@zSv(mlKr@A5){rIkkTvM+E}-@Dpo4=foD54yq#v_kp^=xP|ysk$$k zke88nyK;Dd*2(EMzhEg5Zhpa8BGdeW4RT673n&nFfGm$ayo2LBzd-Ea9Rd)F1x$f$ z%I4*m$|bw~3VKxTl|1%fVg&0>BL3tnyxPm2Fb zId+0fdodjp&7~YWK^DE}f^tBXzo>*jxA^=4r&p8W%jf3v)HeUVZRnmp)?z0!KSlmoO?eiCQ_pK;g=R7kIhlpQ`g^JMi({Z& zj0~NwXI|_9om$QSn$oiVUaFMM$^(i*X69^O0Wjl4r|S{xgC(k<4g1XpcwXb$&D!mI zqmvP~at3tzcSG$7hSF^7@1HETxuOzJ3^-tPy*FReJ0sqZ9eE+>Tz5sHkS*b{`>w^H$TF(Dw zFF;qzHXjjq%@02L=)c*EHK5U>BRt(dTL1I6z6N!Kjj1vyY>NSUr+a8 z?c<%kf4VO;A7DQCi^=KW3nuIPouOZ(zkR=^{Gr64`+E1yZZ6Q(o34Ml7#&*XHA z{o~y2`h)pq^C1?8PS+pS$4c*Zhkogd{nH%_IySrXPtc2~4A96vXbt+eQr714|6iwr z?k{F(1GOM7bcTMh{$1kNeN6j!r|X+;ez563;HLioogn+)ywmkZx9bP(L(Hy!0)k$s zw}YkvK)YPbz;mu&Iz=p+kFzj`{s5a+y0hDr$M}DzK^DV{Fi@@4>-*q^0qAa`ir`l0RqkX@Z#qNJ8M{vN4a=3&{x35Upi<6+e4-DNOUhLoi z%@=`o_<{-_n5(Wd!d%t(CIID7({5iL(EMl^=z`bItvf(l1SGo{ZS+gTZDLA;pvj^m07FX3zW z6;s05@XM+MboUpt@c{?^Z3nbZJAS{B;lRki0GgfYY~2F7z`hlfN5cbNgvNk8%F_$s zhldA*2mcrS09w8Bp}Q62s^)+HOLYUn!-HSU2bWy}-9MWD{V!n;`!5;-+9!vY7hW$1 znSkl`VA19{_>-x#cf-H`{~Pwc`1k+6Ua3S^FQ_5aazE(gFXs zLR*ImasSsBMg#8zN0A6?taZ%}-Zh>wGmTs`|+J_GQV6r~J-;)0S z|No4)1snp}2eViLdRe*xURZ)}I2Cy51FDk#hlO|l>^6VR{om{b4?CzHJjP;O&Qki} zzxj(lY@jtwagb~t7T*2wg*s@pC}`;bFK7kW9guwY@z;Faek|Rt9G#5KZY(UIMO(3l zKwBZhx<7_@*Kt_Zv6O&L-!5vlV<^?mV##88!DtVz%-LSdV*CHUn+=q24wQn^pKqrd zOY;GNPB)I%XSD4O{%2|g9XnKC{x~>`rB}v2_`lf;cXm)+0lFBPHH#RBJ^V|N9TA`1x!=9tKtXzC15H z7(lmlfDXm|{{q~=EjNZ#^sWN`4PI!2ltMxRPc1(a6r|u||H8UIX7O~hbu)B3cyv3k zES3PBDhlIrES5pyHh`9xEEYkCG#}sz$l}RRIL|NeLJxGQ6WdPE;)_7AVa*350s=EE zuJH)G5Q4~oE*^l$u}XsWrUqs>T;~yZ@#Xoy{|ggt@dz{@F=#&dAAH}dFj&CW;RcUD z346c`X;x6?gt%%kNGa68AO15yL$2GELw5=2x(*FcQ$?ov1us%7WnsZRE`iv?3v(b; z282ohQ{dJIX!)Y=hb)E{E9(CJZ&uYg&o96LI^Ffhzfz&&tROBUcnbT*LQa9#I?X@+ zq6#Z4;uLr-+Wg~BsX({u7lejx2M(NPXMhWj@C;CR8UODsmIx1f(HZgYe`hs|@qx~2 z&?4y0-JtLWhiGp#&+65y_k)5%`*#&H$`VrTaAh_7-1|H7giP_!@lpBn7%!c>nzU|NphX3Z@cKkca|E zA9W8vI;Cjv8F$c_Wv_4;S@O5O?{N8CG@$S0?&paQZRdgNe3Ee}H}>x;As(5Y{Kx*a?|@E?@$E*0%|{nJ?C0ZL>goc{|vUMvOa zIu1HZo}v4Ex9cC{|D7Hl-L8MWH3Tp-Fff%a|Hf)?l}CWFbROvVbWk_qOF$Oui-zC- z|AVZEj4WvdXXC{_mw5zUmi_<#zrof3l(kBQvKX`ezIY2-xEOhi6(q*Eff2m(7F6yf z>ivW4ynRt!4Dxq3FUXqKevqvtf|lhzB|P2b9GhUo_|NlRW^~F0g=#tcOkIvF3 z)~28$qQn4nd2{m#P=Uf$%HQ}8>@oJR7v~s2yNN+cI^8|G!D>58pM3bw25YLaf(Dls zfR?1PzPJN2`Ed8K7eacl1>DVV6cFodKx{)e;F9~TTXzceSU)u z$b+nb;op8Z;J@e{aOKJ00$P<0I(jo0l5Iix6|_YMT!!?zNrVTya1Z(SzcY@d`3R5k z?aqCm4CQPY`=Ttcq4pg^uj{)K#V!xVmXjq?{M#<_Z{v8)21?Z|j@GBjzBM0U0$u-l zzt>G_C+I}`1`ZAfP!aPTbiC;-@KI|looyf!JL5QBGk4Z;7$4}Z1C>fI!As|CL4{-q zci0R0-~a!=+z4vap7{R~w2B|ec`Jg!jg@TICkCCa4|*FSuJQA7y#C+^J$ zI67UQH2-HQ+7a9t$8y{awC0H6#dGjR8>o}JT_5!N@no^}PVl+PBM_g~&D0yjl-9}E z>&XPV;oyDPi*umU=8O--cl-VUuaR3U3dynmMXxO66j*J+gwa;Dr*(>7Je26K{(yH`fT(1)o{OlOe z(lpUM3qfb!K(3+-d$9)8YYYz$@4gYPeedG$;IMG$A^x4Ne_9Wem;}7IZw<-|paMV! z)H?lN`X@X%EFb`~WUTc-30wDl0Q#}e;MQyF z?NWgkbIM^w1!(_4O;~uAZE*MR7u`<({&%{50p0dj;%9xh#H*o#k)hjE0CEXohwFc9 zQ<>BJ0;NJ>FP?x)o-Wt_k)2?9-hD{g3SS{b3RNzf`E(m81K2CrjV!`fis#mQI#FM@yN$($85efnhIl|Ni?Q z-2LH23)muo?&GcBN+MndSj7J4Z`Jz`ItrrG^+&G@n3l0T{4F;?vL}#xMOlo!j!Xfau0LMH zm_WNf-%8v;J1}0@b3RwxVQ~eAtVXzyJM@e3|&~|9{Bs4yQ|C9ihPR?plu4|KRn=phM7&Pj(-- zlb>z!O_=jW6e;a^WXe`>7V~5)-NhDVLp;=KF(svUb-zhi{S+m$eG>8;^IM_wikOH z|NjT&jevlF7gBHsgDyL_1*M?w?;vMrf%jvZfvR2AK=3$t>w!|)PV+Gi>r$T5Cm;f(P{;aviCXiqKh1T27)pe}I(V}f5PBk; z-*NPU&cH3bYjhwQa)3wt3noEG0R?sq(s6&FGZQUKIY9S1{0Z;2YyDpWGVDCm0oP%M zxpI^~0u^=}7(s{IY!!eQ2KGt!31e2D^Wc-vE}sCcPyK!aQrdyW;y@BFxD!BwY?wAf z2PKV7L8_V`%3nU$`VHKW;X^qg3U=U>J=9jPLEWw#AO1V=bbHjao-ASh@Sm}}15~%c zIiLx9I0rN`1?7ZgvGsar#5Gp_2)N86P{P?Q*m?=1pQ*VLymmJ54~&0M0JPEL+W!r6 zK$8M~jG*Hpp(8+$oh0GiZJ<_F>w%IS+lq@k0wt;4ZZ)k3O5#ANID@D|Nj5q2Ga53H0U0K$nG|rhyE2@%=j}+X(#M z2KFE50^G#6W@$bSx}&ty^-t-BuoulBanOQfa91+4`wjT! zvJ$bzpA2)j1WNdf4>)|_KiCM`bnFm&7`(e38swmkNb9!}g~oqil@i@;AVsYQK&__| zZU%<17wRChBVpUy&%azkpc)LmQn#e|!+#G%V&X(jOq|^vps<9bAI|O$P~bs1 zxDpc=T4LgAMommnpvpTg7Sw>{*uW$3Vu3Pb)c(b8&~V!il=drocezjNw^HXUmKPSF zEnJ{c-v6dHr}+hX-F*UH7%+emN;mR_FQA>`t=~!oU);0#{~y#UWqIKS(s{W1*ozuv zSgRD2@xxocmDoT6z_i=K`d=yNNIu=LPJE?|0VCkUt9wX1J&~|M3z2k{6FCm zk3h+-@E2b}@~uWW zdl>jz+L#y^z-^l>0a=nT85x8I zt$?f$m@q3sSUVsq6ej%c9Nb?z0a;-%;p^ag&tM+V4af?I$?QdF&5ED^8zC znF3x&q8RT33r(hg7yr+KB1VM!Sczsg=#FLw(5T6a*B_zj;t`nfCE&%)kD$aT@UjSW zaAW9)ZlTxwT}(CxH3Bx4^*lNT9ZXIQRt%+YUMtyHmwxH~)aAz5!PZ;G*kH#{`uX*f z?%F@#gq|f5`FUw~GpN!tKG|LR$FaNi3+R3)h)}l!3uqn_EZyzE(dotk6F2B|Gk~#8 zI^9gVU4L|PwEiz)>g4ZkhSsahAO3T6dxNTfIY{ZwSStE|GsvnJGN8M(ifdkoe1z0d zKRTUjj1P3~2I=esD?zS%wY0ueE>W?cgnnFJC+FC-3xg?Glj=yZK!*$gfj#4VdaIk=R+`$wlMw1fx) z?S%Q}mK6}zS^DM0N)7P%52$Zd%HDnKWgVyk1@=hy4{#V~vAlS%3o1&C|A%*iE?xuK z8wsif{+IrF!SmtYf8zs@4lhBgw>s@CcZ00uZwUd-Ww5;12G$tfS^D9{&}YU0-yA)o1a6%Yl8T;l%?BxOm_P3okzn&qf>pSpwmZbF@GOM=wIgARvnm zmd?vggAyVvgP8Bg}Tlu|m~3>JdY zN2i;~OVF|=XnU3iyec5v_uB?AA=Ubwvb_usv@ zj3v_gcj*VjsBQBb5zw4u>Ia74uU90n8T#clE9jo3?^*2e%?B}M~_j^+b0pq)CPb*NgVfEOHKpZoy1^$*0M z5M!7EUc5a4@&m*f%?DWApf2ew{ZZQ6UCPnh25LJ8WNC!=y1oHfu@|hqw++;64#?7k z2`_^R`+#ODpsJYyUi3qSL6d)z`y{L(S^!@ijaT|PM8cszzbo7C7`ShvIJE9ya{;m^Ek-Qy=|b`YM3QV z0WTgwg=0W|Kv=>Q@Z!XAkb7;o4}&^*@o^4_9qf?OlfMNNw^{6AFZBNY|KIB-lf@qJ zLK)1o$l?ijApvG)fS9}>COA+*iQxaA|NsAQ1BJnhwAY{x63E{#qQOj%Uta{g{`bGP z4V1P(Mqc>y|9@{A#IArBhrkEVy7abzE`-vS}*VCQv}U z_yd}X+y?Uei;rL?$ipw5ftjE@^5XU@Q0=DyE4aZIO*QWaIf9{-eIKX?^4d2e1!N85 z3tnYVxf=;8Y&im6EPVCv|7)r6uop?77Bc8Y0im!Lm;Zroh-`ZWI)eRx!)w(nhU4Jw z3uuz)MLtOQ|8`Jvdg1u_|Nl-f)A&Fn{5B}i1h?@e(6Ge8G)ut}gYH@${_XPJ-_u%e zmq_z(7w8QA(|tM3GW1W0X!9{9{_SF*<0jr4UjkjTVkuC1EnfRz+{GV=DC>3w&A&6n z9tPd&5Xun-TFoNLzuhRU^;-#VnzdmmNAn@j9kZ{W@o#71-_EIh5Ec-PZ$LE%xZ4jo z${LhGS_44CRG|TlejK2y0$(gy@&AAG55_v1-d>PQcyAz+@qgrz&QlkEf|dsKf;9&8 zwgrINt)T%glpsA)(D8Giu?EmcgEs?Yqye%SvMdQcs01!7jcmeuqqytJ9_;)?z;GcA$ zmY{{R2x#=!zJ z9NGu&_T@0X)Or#$L=t-^SxcP@;5nEdGkEk-v<^%K7Kyy#bPOl$zAA;&>d;@9` zA;lPI%;`li=$^?BkUh9r4guYMDc^5OpKN@{`r-fo#)C`(3=DzcFPN5rM_)M=-69-b z)-W+J1Vc0g{4Wc6(fIY>f8*Pob3vO}LCq5W)(4=A4;`RNy4?~$C50-}hyVXs83h;^ z0>WQxS_(FgLoqJm<$KV+Q|K<@vVa%Hpk7*J>w!|MM!yIa(AjP0djmlc3LYIlT>4cT znr6a#+ZI4m%NKCRMxgaTN#@HBj0_Cl+#;At<1FK1O7#Di#X#NhzbxQIu@-F9PORB4 zf~gzL=+}$CxkWIRs)WCY1)T=edZ0wI*)M_-UD?Y@P{rgHu@khKRr#RxLH-s{snPA1 z0I}-(%`68{5Q2Oh(0CB!=fLn6`<8(H%-tCm0qWD4g08_pc-sclfdk+DEXc^f(C8Nd zny~B+i?EDKC<$pi1)9(342$TU2J&*6r4)ZFxO08JHxeE+;7!D(AGJ?IvQ&6hXwZw> zpFxEeXg_re=r$(k04HQ=Wn4^2O}AeFb`z}qVoGDeUxYD%4^Jyq>5dC9zSQf@l-3Qp zyDH84Q0dqIWdYhZFaCa!1Db%eK3oz5ax}_SR)7Bf?|vG4h=&0(&YTnzX)@sxH0Vo} zn*AbJqPyK9U_Jm%?t)6R%HOCSSQHEM0H~M`3kMy-0jdr`VadqfGL?aWVIRXAE`jcg zY28+7)^??G;1h<@x~rJdtm~Lc`I`^1G#_J0YyDq(ulvGlR_RO4rx;r=mBjDkK-MJ# z(j^1e#fzltHLLW2<`ayq2TGMd&4WJy-L5Z zv^$`o13iRN76G`@^I)Z*0_rtyH)tZNlm4?HQy11d=zzz0#sy|DTP4nD}3Qy^#%%lJ~b6KGbf!Y{b>Qi(?| zi}_6LL*1Yz>&4&Mr+GSk|NJ*$gj{iX=EJ}L-4{StoI~dQ2VGwh{z5$T|Nrh-4&#%ZzCU^kpw(BW zA4ggzM{gYqXyg>!!RVChWCtA#B@~_|mhs{hm%s~8@Y*dN8Se8S^jptkfFGL`kS`U=Sb+a3v1Z!k}@dI?`AJ2Nb6)q$_uVPO25Dg=>MgE zvO+o0V)xLU#y)EPD~kD4!!e1y{X^~P;JxO4l+03ML$H=D=R+u zg@HF{WD_*Po23{0LJ7(%5zTT4&SHmYh=XX5%;L%t=xqmiJ0R>uoF%Bh7cf5H@EUw2 zC%EMUEe2m0MZxkLdVvA1xx-(W2mk-yedC2e@c;i|-8+1k85mv&f(~En_D<>k@ckyF zbjYdzmGz+NG5}g%hW!@>-D=Q!pp;dS-Ql${L|wrD;*b}i;9ex?XsfUnzd%N{9w^~# z=4a_F=jbeF>1IbRBH}<7ONM?2C-Os}#b%-1Z^FV~EDHMnzx#sm|8B1k^l4*gQzi>^ z27JcZSsVhLPASl9V_Z4DF|d>}by~oilEGo&FTy}(eK5WaYC8D^U~i&y`-OnpMhO_w z-L)Kurc+91Jd0&qLMb<>umn#bbYI9~%y>Bm)Q*XPx`H2P+li@D9?^>hIc;|!sIE%e4?rx1HlMN>Gc4yLTMF~K1i}Jv^NHwY(;o(mg;3!yq(Sbx@j@gJkv6`9YD=Qi z26wYM1E?Wz1ypB(D&{_PNBsc_f}V`x)}qxlqLr#MJ6J5s|4)E(>gPJmeU z{U#){fNES=!wByFQua>vm!QrbL~Q`b8)`6bWHj=F8${xk&Iu&~(58d9r8^7wL~2Xt zn3C5ZH#;(QwzB;H5AR~YT;2;3y!aF3da3X%#;_NQK6}n%2{O?H$suz=Ju^_NR6gAJc5v8>B)EP)hP!k<%7M}DOB@5#yYfk%t z%bFv8i1f4+G@;Y&oq%4}U=KcUS(Ak1=9e#_X@CplCDZUM#@EWt)d>ux#^5xdi==cP zOsPb8K-h~`$Rcxi(F7`;uoO+ZKB4%lJCq~L_#6LruC&&ZC6?h?tns~$^FfPctdEy- zG#fv&yZ!mMpKLyO;ovhC=8q74rDs4B=Ft8Mq7ekz*8^goVFY=K~sj+fpzJh5{+ii0oF?0cogJX+x3>?}Q0R7j(`nFK!O{u3xJw>1 z4kESi&ucD$aE|~;^U4I&V{m-~TFZ8+GxS3@=vKVEG)sY!Oz`xz0Eo#AIx_CXCs6B& z6U=P-`Tu`&?FWWP{#MX{;ld}cxCH)}zVQfvw7wqv0}Xrev>Yh$>t;9p4?3$T&C;R- zV$5oUG1fo-|BrmF1GY#IWDyV8bURSP?6vT5*AJk95y&k;kR4RUU|UN?jSqnO1>j0Q z;XOEK9X9?C(%ahxDxkjKlm4dsA?(FN(BctrL$2g3q!CwgwDBLP0avmYx$#!A9(1zO zm;a(H;B#6_7IeG5fVSgY--Ks{LR$3yOTWC(p7H;G>+O=b@T}0@W^m&RBq}=N|Nkt9 zU~pUQf9V%k^5Sm^`45ul1-EPiz)d#L5!uid4}Xg(NE*}x>jt?xFzm%`eNg2BYJ$B4 zEocHK15jDfdZ|?GMRXu+(@aGGc+(8%&RkHsEql`KD{zd7q4i`POZP!g_C_%t zV_;}KSs~P5Z(76qn)w)mfk%UdWy$w{3=LL>rL3S^y=A&j_ZBk3cC4HOjYRg@0{E6K--*=$esYrJ#$gm8R zH(UbE2`mgRFAFg+^ty5cyx0}{|9@obffC;CUXY68j-d3%(ENgtzh#vW1B5XP#^{1E zs)RttbPF^-1D^)7wC2bE{|pYDwH%$LJfN+jQ)hrK6WTimM4s<#?fCKk|G}3c-3L|w zvokO>pI|6u+r()6?KP*-rF{$x0u06ny61v)G(HD8m-&Y9KjQ-}m-we1XnY9L;LyAA z%yj7P-ON_0C}L>nt`EtDJXOpJoxvX?`&Q1a^a+1Fl zG+5ShfWH;gZObZ(w7yux(S5PA7o@rSRA=u3(6V#Tk>{Xn)cvWq737odsUW9mf9hq~ z&(9k3-4?HzjQ{t#{kJ|`%nk8jx5FP$UQ-6URCzDR-Q8e6U4GHs3-ayd z=iOjixQ}2t!Mb{5{`?1>Gzis}0GjF!c(E0t?PUxL0|Uex#+Mwr ze<0!)6mZ4|4!&n~=-dlR0G;5lc(K}&fuXwx>^To;JoE28i6@#xtSwtXW_3;l#Sr0W z2DO?&(fkC|VMatVNOSk0&Q?%#gHN^xwT8Ms^@1a!dn(9<+MjxPHguJwNjPxpD_1CUszQXF%DZjL$vkK+Rlom)Y%2}>5B2+m@8Df#dJ|HgkzfBygH zZvpMhXoh9{NTiGpP7~HQ`CCEP6B%FXZV?5UWZfbPN|gMq4;dI3K!akxI7*+uqxX0T zYi|JKYbN7MpqzWC`=j;2-d50tHArxD|KOhl&bQW|i@CbRJHdJGHGA_?P}nj+@)&D( zI4JNhb%WDF^Lv(q510c)Y%D?~JU=ia34xj~<4?0^+LB8yDXM73T5ZK)U zPQP&f9VlV#^#J(~QZj*d22VQB{2Qq>`i)T<&1PU=03}mUG6a=IH;b9NPlIxPCM4#& zKla-6ckTrxS5kt7`M|+f@`OTVT{pP0fEFL%`&%JF^4hqw7gBOGF9qd&21o!kF9iuQ zWHCTXjSNtM6YyfwMsUet{2!vqUHf16{e!PryFbGMQePRgV50fCyhHc-%kV&SW`v|W zaM9G+3QBwjA20<#3<>CMg%&U&VAEx~!F8AMr7W(<&R$R*(0YKsBbkMP;rqwVR#2t` zmEEA~0<08=w)fusOJ)ZI*<8yz>AsEpyUAxp5`MGkaD~ECu4b4 z_g+vMY5iX+460lAfT}dG=U&bSb$I_X^0%x5G4_Hy%)sBW5VRc^tiTvr{271iKK^~l zR*?Uh4|cYI8O@g%+`3O$Zv~~#(g)z39i2VkAo>s1`!Wh{CL@14XirG@UXTIZ2SHwe zc&`&yf`cT2177?B-4=92p!I*L6v(9@pFpAk>dBX1LA5u?!GA#vn1eyHL)~CYiFYt) z7#?&24@6({k7E8NP%{L(wV-Q>tif*W1qUT)X7B)HJG%?iMdf>SOxW&okeb>OY!!bCXsK}X&*GAB z>rr-U{DM%;i4j^QuFBgJNXac3oMc`%!NKI!e*bxW#Tl!cS7>vJxHb#73(hD+~ z`B-NQn9+QR!Lj?3HQ2eO4?qjElHmG5iLx1VwpZsCul3@T(mu?8w+ zK%MDkJcSIXj=@pL$bt5H9|MIqB+79YGA82K3K{-(P;~(>Xu#PQ6kMI)c3%J_SYH-_ ziUd#~Re>0L!DTmpOD?#)0dYXt7ZhgD@&;6KgUcHb16JOE;N%wmK~s7ucVe8;A^>{We2D=hEjHb z0t}RvAq6WUhG&897dj#UDm(aF4uYn^!0j?^a0d#~48y-2%=kSzJ-yAAt%gFt7O%gM0TU z>z}0$JGX*jy7e2RsaE0yF{1fraj{_cA!z>*>K8SzV{rS03+kAEz2MqApcfn{0WTV+ zg9akAxT35N@wbAGeEJV=YxR~hLMqZ@?1oS$AK-84W?*12{@?up)Yk`>sox)Eae=}f z%mEj$zoM+ql|FWKm`|g(_ei#6KFnK#>4tx5mWa; z=2lQNK*n0EKk&DJQyVxCK;`*SWS@aj)Gmfov#h^A0(%a`hj`BVTD4q-h5XG9I@dh*?D---;g&}w- zw)H@%dc)ol(9l$TTyzOG?|qn*YlzaMI-V_+yrZ@E;-oFxz$z8^H`)Ox*yx%ni=_d}o|d=Qi6 z`ymDn1_lt5>H8tjv0xx3W7s~11O|rgL(0djkHwX8G@b;lJbEql{Sbo#149Xj&&a^= zn(O-^&`nGwOx)+=yAML0)E&wJvfP%3fuSV!+abmhknP_Nv4G6w_;!c`M6-N5BmknB zz8z8k(IESHFzu6rIu2$ZAJpA!jVD2#LAO#Kbf!i$$Y@4KgheomnLri^fF0C)QXy;~ z$VbQ?OmIJ^wIZ2ph4vlkcAu!3|KA90$Iqq6VzaYgfYl!ChqefFN5^4 zFfe>O!~`<}WIsq$fPn$i2?-1guccbAgTq$=&3Xq02DC8#c1XU&FKnLx1A_p>AEk_r z`#2aFIG{Y{=94V@SQr>s5PXh(ObiT65Pn=KbMr|7P(OoF`GWNY5KjTsgK!H3peX@j z0SAl+wSWbQ53+y>%7-Eo{>fU$;!e_iYk{_U=R z!UA5b{|j1T{iFNC3k}eMFYaTJs-Or)UJ_$`!1yG{gihZdcQFhJ{nLH$+acQ$BT$gD z?hs%QU;sr4D=!BF2LmXMSb13(SQx;u$IHaP!~jZ*th|g2j11kOKR`Ooz&dw=0vM!| zt??u%bU|9#8c%`(7NnQ0@gyirL7LebK_@gZavxNcXONeN=f>tY3c+EZTTN;obk;uU ztbNg0`=+z@Luc)m&e|V0OCRh8c`NvZ5!k;R-5arGUVH@yI>`Pf z6xtsc7XBhz{{Mf_8Db@VpmPpOJV0xA{TRF0+`xx{eSB@yE#7?!)GtFmAkW9@$!ym6bo0S`SnHpu<}N7h0U=7YJ`Xz~9;f@)~3{6{y$U9m>&qsZ{)hpBbns z0^iJ)W%}LqqCyov@dp+{&~%u6&1(7orNpS`fw3%n)R`A zj^+aj{M$dgX6pXHznu{z%#&vA`lp-?EPkN*An3S?5-!lXZq_vG4<-Bgx1ZqOek@M= zVDxL@EQbH3pc{rjQ2{y@s`-cjcvn2Q_G*435*%jyE!?tHfWHNF9YA+1N9*lUsTcE2 z;m+M{0(I`o!(gw00{;I0QjuQYH!miD!prpo^uDU#ZeIcI`&o`rSy6FF9>y!Oj~r)ee#uzk3i5~p*dwnkL6fBX+nEDiOuzr{KmYa*5I%dri}w5Ab_)OY1I@Vt zjJ?rJz4c5;VQ`#(`vLy#-?Tq8)cycnmgM^ecH`ACXw+v3WO#rQFxQK}|BVlHmrAsL z9)x*(7}H%l0kQH9+BxrzBmF5bM78yQiDWll_rZfd*kD)bwFaE#7XV%J`R~8ki@E*(|3^ae4d`r&P|(Hk z!QtJt8pgK|{sLWi*dY(SaqpW8heiYVe1@~2tK+*%RlXl%aA0RBRRx{X6Z5d5Z5bSx z7)n&Y2k?U?@*G$gN@b6+GrpGK{_uMLPDap*?_;1v)ursm*g=OQ$$vk_z`)K>V)MEPfjCXg+S z-AHb_4hj=dsB6=aW%hzbghc=U|IfdVz58=#>>top4nfc*@%~>-vZJZ~(|UamZmA%|HJ0x1|05|DXAW_2>HAFL%R_ z^Y~)`E8MzW6}VkhvKRvXmr8&Oav5-;&hcM#!9q^hRh!+e9J?6U85oogfsd}WK3K0& zqS$(%MAjDEloPTAH62T=Z9(n7Qu!>V*KAoVubHx#BVrHRGO#j$lL{LHLy4sIp%Td# z+J^8Db2s?+AABBX7VGOv;3YHQ;wmt>JC>*WFlaS#^8;q^{R|Dq*ch5$FqF81fkwTA+ic54=|Xei)SA_@^HHb{LeGl}_+)I|y2Ltb81Fx|73ertagx zphJ3PL0k7hJ5^l;vIHWv50=V>bKouzWuZ>0)sD34A{c?mMtU6fu1}tWd%UVRO9Z`F2>K1S%r{ zTA_uqjP|u2EJ1)4VRLjJYkpu4zS%STgaNcz>2l%FSm6OaBGI_zK;@6%@GPdR|5^XT zUM%hawM4pab)RoOBA^VKJSr7?VWj`>f1?FxwQ#AQ@d5a0pP;s7uj?PsEsQUAgO2G1 zE#NB^PiwCIBULI893J-Kj3Bs40?NIj;L14cg;NJ2`;=~a@k$Sr&t9(vrHd(#7WsK;^SS?)r4LFaU(C@1U-#MV%F}7^ViDM! zm)Ai@tR-}TmVxthGFu-j6@O6*QPyevqD~K##z0p@ygm;)Gr9CibLs~M3buKEwcL$)Q~_VLqPhqySXv@ zwvegJp(!A#~pIbbN7d^7lj~c6hp$1?v?)cU$h6L6gdin04(N9cd}C8-^uSD?0Zgm7q}SpUscgb6Bl%!Nafp@i?h@r!K8g7?;M zr5e4i|Bku-0~J#uy`@*0-$;Oi=fCmir7xa?7EBybX+2OP*!|(Z@r(7K)iT}3UV^S7 z>Sl)D$9ut`%k^J3{ zSHRAP#%}R1NFAim{OfCcVXZs-i* z0Nq&(IZ_LpQ9w({I3PI$(o%f!=o_g1lzfxoH0FEQV>;$3gAK!_bECh1X2o z7x=fcfrPo!tPjK6!N-`IbN?`c8iAKeSktU8lpN~z{Qx?O0MyYvz`y;H_JtDp)=QNf zy^;SrV}HD6>#bz$to>sBo4+p~wEyD7|JUr@EN62*a|uA(h~NMMU6={kumdW!8h?Vv zbE+GEf(LVoK?~ZtO9e_H%5~dBY_D+E4Lq%D?~JpyS8B)rngFs}%zsBgpeY89XBa zTEflK>&^&T!vkK32`&T!0$#Xl!pdlHhffw%)3<}pP;5O=Az%wyW>U=A%>s40fFI=4R`^) zt_=Y%=178!lIRAzCBJ#p>>;L~P2S5i8=4=J8kt^l+Z}y@} z2E0xFPdsRc*7c*{@x$)N(a1MkfMXo#;4Dz&cgONr-z>}Nb`=Ntv!)G>Ac>vk1j{$TyN>;Y)+{fF+$*1sVQBkkW^Oua#j zT|VOfJ6y#7cX<5=oj&!t8+0EBhxUzL5k~8q<@4ep$9YA+Fow7h$$?<^b-VI__IFzU zC{Y6)G~N2GL{|GpFQ^U6(8bZ~z}OYS{=dVA{eMRQ#Q3=QSeOxD{f%!xd#4e5=s=DP z<>~DG1KPmcT`JPKmEr&Y|KZ)W0-bw7tLs}&ma4Q~Dp7dRp$;nW!M)feYXAO2-T9*D z2skJYxBf4=)B3IC#_?8A&lq%jR`V|={w5)21_m$w_1A-$FLq7^?KkK?WPC~c;P>yn z5sb~hIm*St!vAjti3h%@1yv(Q1YT}uVqm!Vnt%O$=9|HR-RC;zegF-bh;l6E6!?D) z63PPM!T&)=^ZkDTI$^r`2oJ=J?sE`PXq-S5i$ZOH$i3JGwg#>v7*(+VRB`Z&K8U(* z@Lq%NAKhU4x~GD|q_g$SzyJRySl=r%Xa3Z=6?D11_2**M?p{#P1;diWR1goM0pjY* z*7wS7q2}!cNiu)3{!lI-9M%m#j15USL}A_S?!6$(AhvXaBj+_6B)%bvwSQUvE|Uxn z?>>j(llq4c>29#|I>Clm|0{~?oC*rE&b?3mfzSRo?!MQ3y?ZN2O#41GeG32Ya1lnN zPp|>q;8=hf2@VqL`~0oHKsC)hNDRFMo!!d(%ldw?QSTBJPyztE3>GTkP}iY{O36*@ z`$hT?k7@t1-U~{HsNR8C3J$`OyAbbmLz2?*?ztf4-KVtAX&<&eSYv5@zgVIhoB%uL zfVbXs*0i=bbb>{?!O7YBQ?XC?If!+TME^4D@BjbSpWqs|Ks1IRG=lR6M2q$LV$tsF z5TjmdgPJ1H7=Z{u>~4O+2(hw4th)znT6aim3)Hr6fByf6Z*}!Q2+2I)oCzAO0gsx2 zx+Bd;c%XG~^BVzB*!Y&HpXu*0+KAHAG(ieA8dZWsQtkY z<9zC4;KAS*K`Z|MH$K^NfPc!t?t_QHP6iKswH_#Ci+%ZM-M{}JAHc?&AfABr79po; zgB#@{FTy}h0UuDnZv5?KFKA@Rm!tJ$343=a4|u>#7U3C7rGNkTffg&j&Hz)^$I66W z{8fT`R#NHT|JS~tihe%mSP9U`VQ=Y|uz;Yz7kk!$M~S*Wyw?3+E)WnD5C~rM-s}1$ zIN-%gPEe0R0d&sei*<10UNiR={6qIYyki9RawiVBK!dT-(8SU0%M;dm zvQ+rRD@E9_6+6Tbo9N~PCVx=TfR-TpQI zP%1z4zf>YDC=k?k0Cf(UkBGnyg9vP{72zu70;RuWu74P7SdO`ZMtJ{##{*z74Z3Wl z`G^R3d>Aw!8ukLT9=yAhqm%8$uIK;%ce=3{AAp+}2)fDwbiy5|C;#8&sRS28QN0JaPYJZ=8gH&g!q z@8zBFi%S4x7ESzYCyH?MdxJD{aVoQ;BPVJ0{M{W@Z@i0;$mQU z&G4DO4t%Y*hUkW0pi7iBPNeZ``~cmvZIZ@ccOZ>Fg!KYg;@5>V{>!IUf*a*Nw*R>q z7;0)kmsr{w@h~vdbEolN^MPD%d^n9??|-$*t~a2ym~RANH;amNhNy6Wt`!B{DZ0=K z)Vvh9>!QMP80Lb{r_%T}Zlv)aI>=@V+MrdVYHP&8z)-&dnO zFD}qcvxj64{NfT|OXClb1u0A8zZL^^2{;jhkFYEieW4=K^ZwB_VB`(^ZWvx zjEMbW-L4#<17dzOKd?XepDp`>LAS|X&~R{wiAsHK?6*kzJI!Xc^ZF$ zM{5Hbe}V>@N*o%0f<}i*R6sNnLx~KCW??9G;%Vq`5!2{q0h@KqML?7BwH}5T(`zY} zdXT!;LQpv#sCq$7hUVHo45jQlK-RpLYqCj;d4@E21-9VhTzHh&^p57Y?Ob2R=2=`CX40is?rbsr80 z3xBaA1e8E{K!Z`9GeH*r0bAU9p#DY;OY7~@BcPM2UU-1o(=SRFf$AV0<8NW0y;h|k z!e4ZiB8^+szc7*k`R;Ya3o)60|C=pXOSxajgB=Gd1zw2A{QDo)ZSg{H(ZBzZ-N#=C zS|6+5TEk*}uXueJq{ANm!V<~AlJ(&)d@KL|j|})P8UfxPR@(OByfnzOVDmPDmIr@; zj3#ulf!2IQLv{#)`jc7A0a?r$3=9ko883cu2|z}B7lQ@>4#WEWB|ObP{*|x?K*oX~ zZGh%CI!L_gVt|#N@3wIa$bOZ^P$`IPGoni zLhJ21$>4w&;UK}t?i;TKoB#cNCylEwV`Nw4n<(BK5g5w$&Ic+#+FMZ7rW%GB#St#Zt=HmVFcX(4?0u+$?ILM zx9d!yS{A~z%;+w?1JTvjB?r?5I<=4a1X$P063}rd|HH$>{+B+;;{0E#@?X?v5vM?> z>kZJ#9?+h-UJ-^~FAnRA(g#`(mPA6C$_IPBIBY=!4dn_TDdmGNl285p-+iRh^$AEL zKO+OfafUNzKG}X91KOpF;!-b6mr6oh@?z)7zyG_x zw0nd$DxG-~W+dcJPatAa?ih-qaJILI%7{=)+c| z=5_NMf&Zl(y}ln_Tmub|m8$f*e)(Uj0G_OqfH!CYUZ{fyiWSgXf$-)HsH(30bNdl= ztpI-yXk;i2bQi|S?u(##2@Zx8_9dDtz$IC@?e1GU0j^-yH?#ifq=C5N>0pBHb5_HwLiwX;9pqe3#U*km@zX<5gU$B{4t+C@kjhi?&w{`Hz`_f%()Yeyxvb{372DKICFP2wG3V0CqFzmSmTUY5W?z2f*$CRpc6?7r^Yu z6KVXBx6}9|PNnf{h(7oYs>wlo4P6I_{MR&oja30)cF5B-uxldzr13|d_{1N11E%i- zSU&PX8o$Q(G=9-r1P_6Mx)=G=3r81;4ojc7c`zyfy)GCxC5^JhX zfB*kCA7pF<4jsH^K6B;_xQPThk!K%h zkS{F5UYdd7#XOV$|L?kTbl-@Kl3BsFL+G;|M!TDZ2rMi z&KDN^A`hZIGV*mYXoo9n!y;~h;N~|1HxAy7Q32htoW+yH@!I}{$c_L1?}q-k>&nr5 zgyZf*&`qE&RYGBRZwBAJ@j?@9$dAa#*K*$uE0n$j8F2F?!T^C6kxZaQfed79{mg$= zlSP~Y|5Y^>aSEJ)1JGgUt{jkK{yc1$Pw;Pd6ye_<$<};8g83lmpug@~p6&u3>wiU@ z-5wmw=d6DgaXB>~(6GK-^a9%HgPR3ngm%Bl`j?ThfkzWky9phHg>K()NUiy8({ADE@}KuHMbt}F%y27v&G3~0qV zWWdF$+d<{v3wiJfUC_&Lx_v*Sbb^`_43VIc7BtN7`lg$~_++C6D+2>;cmQk{Xy6XC z{~cWe$n|GHF^mO`L!1=zd8&WdIZV8fXYKc z?Y}7~Y`R@k1Uhq61bTB+1hgLnhlN7}@DJz^#3uorsW1MQf;yDYFaTZV0Sneohr4~B z7@z(0qH+D-|DRs|Ir{fM#C^fx#{WU)av!J_aqkXM;rV{!`>p0144ojmLR5IVT~s8v z57Y{Ghp31kq$D~+R7AKBluCE|sEB~H8(;eV5!Cnl{t@H>|4P5t!QD5&k|8PrAc>2w zFW$WP>f#OV+ofN=f9yW-Jw-)g;`bC45$20UeAXc<0_7Y8I_YA|V~3B4d18+eJk{Iz&ap7w)g_ zQ{9)lZ-T7yFNOIvHZC6ISx61eP+|_cAsbZj{kSWm@`+!EMdjpSn4EO;8y?>R3z@#s0iH8Q4#140ecyAY@yA)m#vp7)J`}6wmSwi4s-Bu^Bayd{%b5M zFCKF+Fu)b@1_td5x)W>|7`QJq{sLt&{$^RQVW8Lsc}(MH8h^|=P;8~~ zYp520^@CzqL$?9U21QQYkM0wonf!+=2Y;}2Ur6JRIh@9?G4aAWkRu`=r166WpTH6D z<`X|C)<7*r(MxIk`KAnDLvH^Au?4{FEC15?i@)oo@kbv0#19%63cH@h4`~B79;#zz zU}*eR18ULneBzHh^oc*>5Gd4|-w4gVS)(G51}bIK8c#7Wr*(>`+|*I&zHsq}_63mX zAHdOl{}U@{3@VL3??xJb@n@4X{;h7ui+vp~Z{ z3=Kt+jX$-O+YXdV6mfTps5Jh1Z~5zAF*iuTE;QUCuR+!7RMKB92g7BqfYYzP`+1+Vlg7Ea?AVm+}GoK+7%3|<2gx&RXb zS@L>jw+LvR;fMNijpknrrOHtKAL>haK#DgkgY%H`XCy{?=-6L4>n>GFS%o^a)Ty z-2%);lurR*KBRnd0JA}<7gRnmpq5Vx%W#%Y5nz1;$|nY}A_~hV0f-^s^63LO$Z1qQ z>7*Te!IEbCm#38T6MrOY!7^@eXG%5!;(!~U_+xH-;*XTg07<|Lt8c7m(dh|q^$xi{wj|NpZC0)t-sn*9I24MS99M5)LN#;X7S8+tAN{{PSX0yOp(ee&?l zlXs_9{r~^}=E=LEO|S2UcE3S217yT@xDnDX!Yg4$Fg7d&ne_KXFarZa^vS~zbC8Yr zUkaWN1znlhe1rosM)P7mXlU;U2h@oW*D$?Eul)c21vA7Th`IluvlFHMcc+3p)zwMlZdk?*8bP0%^Z);U=gzsH+f=``f`XK>RO(M}DM#;KP{b@<+EC5ISi;d;D$rZo zv~=m+*sfl%hkECN{1F_`4K|?5nU8ix(i%_yuTSfY{Rf&v zjpg89a)Z0m^;c)?x7)ejUNhfy<%m8BZ#NUV~DraJ!CoXY?IcL{+GLFYZNj9cJkX666?w{^Adae-q0D_HT5 zyEkwCe|;7*!)6GXVbcQ5u)$~H;HJr;n)X7y0yM)0Z74%2=zLpA9`=F^YsFOR_>z|e zDXeTr(aZmGCo==Xu3dMz1YTbK`~N?L_4D_CNCz0|9&+YWE!mLVMB;qvQ_xNe$b9N0 zP@+VMzuIzK@%IlLC5ZT2Q~v+|E>K$U<-M?pTj1r&a;)+9kGS}YLpAM1dKs4ZgE(3i z!_gIbCQ$T$+Vd(5PNbyUv-~a#jLfSlp;tMp) zuffZ(1>_A4(+8Wuw5R}tFRK8i@%O_t@btqB!1_UvsiErtW>eS?I{qloF}4FwgGGvJvwFTpiY_Q>nLcKOajs+EAlEA?G904f%M6WY+kcN zI!>@2nGD!RpynWQj|{{IkJN9HL^KU$z)45g1(CK8Jv0ua9$Lc|aDIjM(B^i_60XP#;wX+4u6A#n)QOX-nP-MXRUSgoWm%>(1 z*?^pI()fjB1;D`&3GawWV5oYT@#Fvh3DD-tnHTpDfp$QKsBrW;@pOCrF+TA^Z^qyM zJ05)F7I;~84mPX~Q-0>fda!!m4=*2Ce*fPM)Azyn#EWm!|Nh^>^POAZr4vHmi+Ygy z7nL9quKJ7di5Dk8svSV8MG&gboPn$PVSM7n5|Ek_keUx?p)P^TKQTV>q6H*B10;U| zLmuRl6p%bv{|30c?}wMEm4E+t`+jIX$nvr`?K_0Y^RfxX6nR+=W6HeDfiYEHCc>CH zFT+4gnBN~5pLp?W+TZ^>RDN&^ymW)v1PQVi^#}j{Km4K+OcsO5TrimqCKEv<+)p4s zZvdIp05a*%nZN(fbo+jI+2M&4(mRY#yyyX`xdKvi1EdCG6NJoi=?0xt%P{Bfe^6hz z+x0{914jN9(6XE6)DQo9efPYybpQVUFx*a%c{U*P7=CgKyzD?X@5TND$ms**LOzgc z8<6TKbk%3h^!kdt^sxQ@zt{K5O9$KU|6kOD^uMSClf@tsZu14>6E6-;{rkV$3uNk! zsek|P$N-tjf^6ywdlWraj8DAi1M30BZwpAz7Lc9`r=jTsWbX-^@Bd%0qv!+K6$aJ^ zvdagg?*T~P446Jh=$$$9;{1M4e4PZ7he0IVy&$`VKsrT!aSObRgXnxQA4Ltw^mkMK z{@)P*Qey>C12Y>$zsN^X4@$-RKbWr0!)*uUnJFNZ;Pm|96x_czUf!?smOgJ|A@BbYJ zzqtio3L#AB_5JX2#oX`zU$|qap9WH215*F!B-Hn3&b*KZsq5{v0QuTJ3KReV|Nj4f zX_5$HW`LNQU?%8Do|k@?L873gC@&As1u+>w3M{~)6(Hu{$nXDOoY@Nsv14HJ0GQkb zB4Lj20%8LQFez=7l~;=L<~`3D*yb!3vPBHy~X{kafNI zzX#-*pCA&h9+Z|mKr#mOV5Fn%>XHrf-8f0@5~E-6!jpN&I74G z0#g6#I7WCt%kiy+AUAzzKFIUZ3dDq!&7k}k2h#rmq<dP;K6aG*Z0lK8P4DTzc5G9_s00di#CwHFCcxFj={qPZa+vx3P=UGyx0I!0hb4r zJT4%4jsM&NFDJm{GZN183%oF$_!o4_0W1_ju_gghy9J~+1*R6{%3j|KFMo7{%AX4_ z8M?p!f6>1S6rP z3rsD@#9rSgFMrJX{{O}E9mw@MC^eXYbd-Q}G$C|=)Sm#U-;Sal)aGFWsowxnAB3uY z21tE7Nd1dO5DBW2TR>vPAl{2y5D9lHsAk^N`}hBjFCddR5GH|Kdj{100cGl?)1diV z=Oxz+DAVBO|LIVs$;&UZzW>iqSj`}i#heuYD#Q*r1ia9m{P+K1WKmWFMh4Igu3+&8 z5Y;~2t{+$xm_XvcCn1LkC~lNMF7sgK5qOz*7#!l@@`mH()_$ZU1XB33=kNa=OF#-; zAqpYRKl7q~J1E^$g2`eK3HLcDmJWfmT>xq0gJ^r<4^s2O6HGdTNn0>!4kF=tK~}bb z^zyLq2)w*>2<$eHmA$@OUS^yD<;OWM6V819|Kk5Pko`YFBq%NWOasZCdFcX@dkhkN zaTiQp2a#~|XBeM&p$0NP0%U#>!hCRj!140vRA|Vvyv*7SWqQ0^4-$nH8lVjDxcl$_ z9Vb9W=tGTokq@%xMJAX`29vQM5^ggnPptuIV`1eHc=_WX+-D%)LGpXY)bIaasDpHY zQfJjvP|SmlZ*_eW@Pd6Jq~ZI59VGvP5k$hx2DRV8x$rMAoH$oMUHz= zZc_uPoC8u>1X2mJf5FQe`@jExu^goS#X=AXH-Cchi5DNbV70`vuD}0xTmb1eLe|gm za>jm89L#umV9NLZFXBNayodyo!C=xCM8eISVtnGo9Jra2KxXo=@d&)UcK{qR;PlAy zQuH7+5_n!(fvRWZNQeXJNdW0t1 z@BbYKK0H>y`mhRs_{lc_3RV*m(qA?%EFyBZyBSWUudvmp@qk{0Gq= zp!5qU{QyeefYKL0bZ-KvWqFk454?)$N&zi0Kkx!@v*-th9oSy0mz zG?DaDm*vm@7cwBrdV4{48orc4cIXMvO&%v+#CE`vWH88r6p$n4?}G$QukVtVFPIUY z1GhzWK+1N2lvO~LK>`o7J`}A(+3m~mas~6B|A#?MTm35_2Tpi7o%zrI7j2tB0nq>= z;Q`TOeB#CV_P_skJOLRlz3(qL9x{;a2Zh5LkP-t$ZN*F1i{JmhSh61E{dph~RGb)s#3q1vaKA@DV(CuH-~T%*KsIS0 zYy!C!RG%Grx#I}P&?7G=EC+=&*uS9+ppXW4YFB}CJD52i#Pr?s^7zT`|6iz~*aVU{ zKJlUmWYY(bP5X9%!vxg-i~yT|;H3fBe30*7e*OO&QJ#TpG(Pdd45ZhGhezOL6GSh_ zg`oEGi?>K6EU3ii0jcZ&sf<9V1gQqK*WSFWIEthmRFmFm{`-H&7La-kZ0b9Z%?GJp z15*D0r2fZFurDBHgUA>9>yYcK2ICVi>OiV_czFa~oO96P@U4I_5J_O4C)gP=1rUy36MfNqp{$%Z5V+Q9bms}#)e#)F{yz+XN=5)ffzV0d{MNx%do za0o2$2UKsczyA((TI0b8klZ&Uff*oyrC`M%uQVPk0L@N?eEt6ah4ZSv{|`g_)OfH2 zBrJOkVNwrBK<6t$U=B!N_B(`t11Q-=N&Wbr!Ehg(?0C9cL3Xev2!K)^Pb(;@?yUq_ z0&OsNZGbeHwCX{54^;On)c^gzV+SbQbGH8df9Az{kn$HR!Q^5vITuV$2a^-QWH*R} z$2h1(bF1#}{~a9yJOVG(K&C+A8bo%t-ud_cf53|?FTNvA(SHV1e(X^C@&AQ5vYlNgAeC-1NSA;hkHAY%vmIn#Z|{bm|Np;SD){4n zZ*KyK`ReEI|Gm9yK+OH1j?K9hpzvq~2?V^bMRisT=q~LOFL>b2Vggy<0v_5U$M63y=7D&y$cDAcUe$ndILJgZR1f z<{~+z3)IsvKJj85NbeMo-d~$gJqv1Y>VvF%p$R6H!K5sh6bF-nV3He5vVzI~%Rq_z zCz$*UB0(*JX)AyHfAJK=dvPC3-UN|wPsBhnfocsb^+|)AbOPk0bTlWum=DtVVkU@$ z>GuMSmcFP4&F2X72)r~w)&lBpRD1`eIB+=RBA7`artgxMQ6L%;O8(yw5!D54OHBZo zI|pR$osFRUC=ar^*LTKCB_ze*RFDQz`2wVJ6G$Z}wSm&hj+Y+0LG7&_FBRq?YJx7% zQCr3*UKoNj$%ya>ysQOl0yXR;!0K1Le6Rqa9^6l20VxguDGmTD29HPXc==)%#QXzu zk<{-oKJns8)!+X+T0rU*5b77a+yPd<;N=9+l!Whvml_5?{=aZv3QlAXUP^&@mLT2> zV-N`%ab*LEse*VfBKsqf% zc?4cIz;yQd?s+KzR=?-vhdF5eVF9Vn0jUo_sNeGP#ZHj_x4b+s2h^Sg^_E|@enpB& zP>bC7#EWBj$|A)cyzQmk{F-csU74e=q1tsh6rCBOuIQvq8SF`1Sw)%l%(K3HJbq znZko;4Ro3O0(YgpR>1Ph>k80J2*_x2gwfyx*y}6sQbPe0J{>O)?10cSAU1&dDX}0M zd@sCwD)Zw%D5CFz=^Zb>%76d=!elWhE9-&CUf%~V56b-b|3U%8dm#lTML;A-*K)9~ z3oqw`=^Zb(gLHpe1k(KhOuhn>Pe3Fr>2!fE`ZYfB!T{v-86cspa@7m9xa&gYfP>>B%K<2&Z1Ct$KvI#`OZ2 z|D_Bx4+xTXfXhS2OHkaS@X{3S9*LKoAon0wlxso8a7gk9y!^Qa-GeChwSW}*fD~SU zDFls(wniY$hk$w#F(7qIK({zmP?M7f+|TV z9)XvFa3f#%BkKXzB=f);Ky9%pAPqer4G&gB1LlQ1Nc{^*FewZsc|j!1R%a1(++ zChP#2Fb`q^X#DrZq96ZXT%Ql}_eBs1*9+>5D1dbQ0qMvA>43|D(gO=f&O(|;;AH?v z4iu&@`aveV=me9^V6qlWmV-#RZcuG-tOOPidrCkpBak^9Fmpg=fiPSLsK+`5r0xz# z-Gfz7|AXSMq5u+q3Lt;*gY0?12_oToLGc#>(wiZ}Bk*zwOfT4cP=0fGxwQ`3g>!ki z3dZz!dHy9-)aT`tyP!<-0W=qUvKA_u@zQT0QWgUBY(5o(X8Az2*gw_r0(Ose54wCXKH)DjK&&PZYXOK=0b=a{vGPEy z3m{esi1h-*ijqVspFv%fcZGld?|1{U&kEB%(0GBwBWPOUcqt2Gs=PG1jg*!^xqTVP z91nROftR0_!$aVO{v1$x(gc&rU{V%Lii1f(Fv$%fQ9?5cWL68vtYrwZKq2tr{%lZp z2Uh%oLS7G~_5nz36{=d0dQktS;}$6XIbJs00>wW_|BIPmax$3g1(WSyvJp&HgUM15 z33nAJogFFo`+tXk0*}B;0hmpo@X@#h4Ih@5vM?scOCb;w=1x$4X#?r*0O`K83?4q+ zy)~d7_ttHoUNDH+c<>LXgMH;Dr~?lX0G$&5@-UJB3ljsw%S}iE93X*(NCG?{feApr8LC7B(J~013={3bM8Ve3k{r%Lzz4o|i#j-4Ho}mo7*=k(Xvw2z?SSHNZTG zTMa01E8VjGaaQzQWokiZorfe?_uWY9DvIB*&do?&BPc=_oG$WDkY zH$Va#D-i;BKmrSp1U`TS_9JQe0urdZfk?Am6_8%j`#ex)2PNRAd7#-(Py`t+g+*uWnG|7 zmhp)f(IA(sP~;JKxqJ!CC7{%N=1gy|1E?H%`V!QR+w=18BGCG$8Q`LF#mn=LzyE)+ z56tVm07_Q-z{+;KY`gyB|BIy{i5K(1`e@BE8kHAZH zbo+g0yv%s{`+v9V3#3V%7ym%>N&zo_gQiyAyi8vNFYs(${{H_$8)VxHRS*fc(+4ut zUI?=30?4Mli$Ol^^?mVD1Ek$|&PxWcJ*W#JLH4|O@%#Vb7uTkPef{L+%JT33!OK$* zzc>UEd$9*Z_V$K=0&35T-~V5%h6wP01XhCtW`P9YPT_z!tXJj{cxeQ73OK+) z?wPR=R9`Q6S?~hXodES~U#23MQ7=HDf$2&ouqzEvYyvsS_{57EkWCvvHl0`m@-)~c z2+{3&0V!NBfW!62b8xt}ynO#06zgwZvV$G;;AOr4Pw*&5If(AH0eSDt^WXnp?4AZn zvs=OBdN8>XM8Z7`oqYJ3{rCS44iz4OmyU2}K!dFnY}105zGdJ4zsLb;1`R{lUj-GU zdtRDf{qg@r7)bO*0GRXwk)W=eEJy~lJoWGkGmzK|12CxtCRM zeL*pC;^kWq-3vPZ_@xtA$&;5+^AYuJ7wAM|;}b8cK{lLF#!d;zKry}jV{#R}GZ z;N{uNKmNaXGX;@t!BUfckam%!v15ZT)+@c;k+muH@W;vXdNVk?+j4<=WF z$;DuDE|{DSCMSYOcu0UuFh23(ZYC@wE@%Gzze7QdN8lx>*$zsfp#J5I8=(0QWS!s@ zrprKzFMt$(nh*CBNPPxKy*fz!3q=qKvk$DR0HljWok!s19+0ly-iUwy|G#8?iZuSf z11X-|;LfrE>2Uz*=>X{gxeJCt?X43}K=~9j>hN;!6C`t>;|TvUK=V5w-CpRr&zyNt z4_a&Vq7p>H-3hAuPk?kS0O=Az*45pr0y-KWG=~G)$Jo3S#QoO|S=DR*1XNJzg3Rje z)d5A%--|!~zmS0lfQQ=m$p8EgP2v|lfBt{L0Frz03$(DQw-e`nefftWK zWN+^TPzXJK4DzG_$WRXO;0L&0m#Yn`XhG*zzf79?;=7lvR`8$|Z@t^sNPeI8`e9uV`x`5*sZ@Pp)DaDqu@F!^@^sPOv^ zCO?A7*I@D~n7j`rZ-U9oVDc=OJPsxgg2~-raw~}J?Og$~sugVO7LcP?J^cOu#Y~Xg zi^*WJ7fiN;$wn|)4JJ#$WImY81e3`ivbXmD$V6kXi8&w>BS0p)gXCT~f=O#IX$m5{ zTS37Z@M6h%(0s`YMUdDFX)q}YB71vxfJ}RO?#KTZEFggw|N24R{{bdHfyp;u@)?+X z048sN$txhTxAzFhfF=3g|Gzj45_qu}Ol}908$o1muM0@Y#s{GE4-$AW3rtP{lYJnv zw|B~)|Nme1ft1vO1YVSb$wDxh4JK2;WIULR1e3vF(icp+gGoma2~SZIAZfcd1(dcy z?W*P!&=NCH+B!cAQbdBr*Cif+k|?O@_mcMkQh5a`!HiG5@B?XDp~EBaau!q*tgr)( zUqh<>tM@_m(TbOEok8`{l$TTUzW;x*r4JO6>p&!^_HI1;6 zFuMaxHi5|+Fj)pB3&3O+m`nkaabPk6Oa_5TA28_#CLO?}6__*ulX@T$9wg9F%c^8p zkQ5|?Mj$}G+cOh1Kk&a7|AIFF(dG~Or&Qpuyo zBk(c{StUdV+)Pl<@kxSlU2~|`Xb=PfpqA40^b)eXD<8>Zk`|D3Fvlx67a%O5b6^wR_&dJ zY!ztS=|SS(|2rH&R_TDO!dSco+TVnt>5lP<7pp;b@8HJ)rp11e3}j z5*}ipK5-F9;|7q%eGrZC@NX7?y4v@{%kPmt5mWh~h_eQ1djrze4$%g+?aUcaXn=j~ z4A=kU<#uHKAou=G0JUojcm!U$W9a7y0GaWE8Kxf=51>ZCVUWHKkUoB>K9E|leV6%R z?tSvo9o@cekiHineb=XFF>pY z5bGX@H3P)D0%C0du}-lf`UhShZ^eOZ`v9_S)f7+=K`erjpn`k`>-YaJu6KY!=pu*& zjVZT)#14aau<-H%jbsYN!Qz(#WU7xbkHE_iWK%)rd4Tk`gY>>=1d$-~Oh97AARgR2 z&@AzxSeSV`V*mc%F#}{C3$l4H>_K`!rha1i{{Mv`gm>fR6Bba#G~wkPC>`?u+y58B zAlVnZAQEm%gYk(MF>qUgK(@R9*)nf3I4nT*<%=8e`tt6L-~V5nL0*vrn|GD~=}a&I zt$%{(galx3@01_^|Gy0V@csXbDJc3het;XI4`M(*1SQpLF`$|WWP%dH1kiY&2WTD| zG!D=5(iXymuAkC}@xbe+6hS;#=>e)eT0sUznDPj`yf_K$8PNJ%n1Un5Ctjq06wCoB z*Z@=T;(Z%(Y6R`fv4gwN1f>23NPPoLJ#;_eQqa_NFQ_l_au%rnuo7g-i^X7aE{KGM zcNb`%o$-kmFQZ}Jz8?*mA%s4VdJd5K?=8sj4pQ$1QojSF zeiEws8&`k-e{mc`y%;M0kTc?1!tpXrs)KyS!JONsdl04ED|(a3)0;L(+%4H z3eo{8f1GCi{QqJjgg4=33dqdG5Z;QHVGN)FN>Kayr8k0k;MceRFX};RUQ~j~VlbHt zCeuMA%q3l*L0IDxFE)c_Zo$hfS4MzxjSY{$%ddSj zGX4zM|Cd4jN6`mL&t)Ke3HBiWBlNxa--zUXa5(va)ZGB7n}tvZHXKxbg8cvQ+y7qQ zIWI3<`V9_;3J@PM{JZzk@Bc5>ARE~Q9q#)P28u8T9)XuG$fknA(E_C3ch1WOkmh`3 z&0e6Ku@9v421q9tvQCJLUf83k2l=xPq&~utN8shH9*ppL!H=On4y67BNc}1->hCw8 zhmRgey@eBxz{@I3^}W7pUhcRE%Augqua|2tBK0ppD{YKVym%K1%IP5eR+#!<c#8>slNkK&xJ+3J%;)|ka{0ykpH_e{NLLPUf-TN6_g>tOsfh+dkD6~&KqRJ9*_~! z(To7CB+~$C_MP$aLlvl8JMz+FDpGd=w1tHy6qKAnH5e1fpbsE}{2&H_(&vjQAbm?- z9w-OVS6*8D`S$-sc|EB7DFl<*AQF}{y+E_pyF&i{-=X8eBk+<9Vh$wsLFFT8x5LY+ zAR~Lh%q)a6O%LtHW-#sr4z&b&z{a=1P zkE9c1ENJ~dNaqod&L)sfhzojqK~3(Lq97w6%vWWgpgjN@s9Ap=ln^RF%q1uWLR!{O zgJHpRJNWPa9Sp9Z`5%PQU<*Lwxe~uY`EAe34U<9PwdZ9A*aq;pwJ*p9-z6`SXBeB#BwAkh9dkbPd*?Xv*ex98=BNf7_7CKOz20 z0NZ!qr3J#izh@!-Tl(|c{})ecK>oW2B0K6Ss~=vv|NQnJF2RK)p$C$HwE#g)*h7J!!BKY}ftP#`Ghvo`fx6X8K(aL;*$?ed zAA;J;FMfPO?Y`H5)Lj9oI{{M%PF$e!9A+D+yBz{j$Kb&u@Nxl6-HZFxpg_0@BH?y} zT&4k18v#;V0#gez6XLBG0WXXhVE%paG91}KAd6lH{QbXU4oI^(vS!funlH!8h)LiD zG%p1XLg)E8US2)@6Sm&%6=;M+h3=3}_ftQOAW`HJHEkO2PuK?M95k!Le z>n$MD4ug1b(?I(egy5!efJ`d^nHGXD4K!W`Np~pg9XVdQYJtKFIiyecf=W%0ei3B- zy}lb>t^l>I-9dJPT=MG+s5IN~auP_?5F&cu<&!Vp{=ZNL@m|P+NVqFOwP}to%+E<6 zTRwnnS=S5>H&FY<17y{||%K9c%!#vteNZimNR?pfCZM z#sD$x%$Y0>Pzruw05cC+c`Haci!Z4E-vss?a(M@8r=)-s7=RRPfGK$Kz6?40g9bnC zK&m=Gs=8pRz(om|*lBT}lnfLIYA)(jBK55(F4V!41= zCqOK#&q$>;sLgcF8#MX_vQG-rK2Z7YA&qFUfpg^?kPZbu9)XuH8etv~77kp35%AQEN@xUQ@K z8Ij=6Bk=M_15y})+M^uDe*b^*y#zVlLH!6fkd7B19g`3`UYti(*9Be4BkctWHc(;_ z1ZheL;1PHk3)b{vKC*f*(1`y#Ptc?kNQo6#2{fi4RBtc1{aJbx)N%wJL-jHX!Hh>R zLyrFb|H2t$HfTq%8tgc<{o8hMZ!SV(k%_P`sTc#-W1b8jNZF%E$|0x#Fr zgM#J7`(pHPumdUi08-KgRswM-lzg!tMLnp$!Us~H5Cj_k!J@t&MLno7aL)r29w7Cg zU1d;nVbqIw6!oBZSqD<@5X>X+@>d z9)Xv$u&6(eq8{X5Igt7ZAoW>T)Xzs&-xUI>)L*;9!vCQ=sO2BZBk)oetQi(lUZC>s z2uKn#{s)!>jpz9zo96}Eoiz`nssLoft6I$PkVjDu3coy%`UfEOyD-)F`Zm1$ap?E| z7tafk!UeYb#~7qFAdE-gWj$1DuW!rC6Ni5P&u9S6tH^qQ=2c#-M%L>E8e#tB1{ym8 zX>@~X1jiO=Kg*Jr9fv^W$&!~1P`UzSe>#d8Aa`#Anc)!*TK|kN1C)O~p!ys@`t&jM z)q(U~0O zu0}S0!b=UX{s}J?ptJ;(7J$+mAalRxBfA?^JG!}o5-Dh8-UejDghYD(iJ3#u&G4vmE0?mxa@d&&WLe@X!WdvB?l$QZe z+5<{EfXvZHF$YvW)`8490W#-Q1w33}IpoFv9CUa4fz(IDgUWv_>d#}SmjkIk0aBlZ zMg4qa^{{gEwIeL)KXe3j@Do7gKUnjNd}Q_D@?#%J$qJAXF0c}q)4}u$dkpn`AoUW7 zpz*(QO#kwO)W6^ak?^t)bS7K`NLL3)*Air1FYad}g%4~9NgM8dMUXazBp!j6xnOP3 zWsy@$AzioLrtkk>%mEnz>Z%DE zTm>?3CW?8WC2qziUOcr2c^Blq+xDO)Kgc|F?B%nH3S^!qig{4?O@*7+4KmLq zg-77!^-`?n^y`p4;1b% zckTN9|HVoa^AaF)D_`wk{(Wut_x}!;R33qs=4j^iLiUrhJ_Zc|f}`fwBha=3@M@dXQZwKz5xj`THNb-g@aHkoj*w>4$6A z@BiJspuLwb*FOb?$`X+1mz|*X&l#XT|6MS79Yn%y5rFte8E%Ut$d-gO9)XvsCCDM( z>$~S=1jtz5D=!0{e*51InIv`vGr{e9E0An2s3Y;R9%N}AibbIPAjT(N?6QRg-3D7w zgE5^);N_oU@c8wWmp`6>%mpt;e+y=U)|nY#pJE-0^o@QeHDNGSt6Y@-KKsgVJi|3Fp=QVnX)TzQ%CY^&o8^_Z1<` z69<`>29iKGZ<94F^j3h(+W<1}OCge{q30)Def;zP3l$U-pk-_U+=Mic2^QHr0xvfq zOn~a23ex{16)EarWwZfYzZyvY29W+DWc}cIFV<>M;DDL8VnIv^(0t7NZAh~!(5~nM zD^R%P@Cdxr0ht2of1Ci%D>b}a0M-d!a-E8-6ST71_{584Ae|{7ou3NeApn{f=m6_q z@G=3cADpvQxBdSALImU=&`{v_zlaGd*ohPoR-ljt)jfV7a~FWjorN$Ll$Joa*H`6b z$3xJF8_&xI5ZwzNUl9da31Pm90r?j^|FnK9sNuBcWjIKo@0yqXVEWEW_lMv9zi0z3 zdwS6TB0*hvV~|)8i1#7~Os0XzUf(+}C84?m!Ss=roFJ7RAlVmAVA2Lmnt@3J5D8B; z&^fOfOHfM_r(g3>>-8$kO- zEx-mHczK}$WdDJeE22Rm2rm3{!S*kBDGIVb1Z3_DKM)CuW=4>h1Bmy+3Pi$f1nn3B zo&O86F(VH&|C0yzH7Nd0+z0uW=j8zq4LQFs6l67osRgzjlv`fD-wg8ogqPDn3VkQM z><7~aUbf%=_W#APBv5D^0Fj{Cp<3r>(BFPK3j+$aUe*n~gaC|8hC3r-E3 zBM)AK8k5{0oh~4q;c%T`?TGccppl;^W}sFcNSOgl8Eih~$pV!56wuBL(E1NEm^W8~ zwEh8U{h9-h+%sp+?EC>5Q+;;#+y9*c*Z2iq-T|>RK&(q3mIH`&0>p{{vG##j1t8WI z5UT^kT6Gs~Jk}0ml|~_tz{@TatH2(DwpWg>2Ce^20Hug^AQB#^pjsJp|A8sY;U7#v zXPkgcvjLg*q8_CDMJ1Rl29YqW;E~-!Ak_yzs`)^wLHU*Ar3GjMo;!xxX&|+KKx!Xl z!-E7pzQFTeWuSR3HWULu^IV}I0}P6I1YRzL8-Pv!4zT`X@kq4;cwvetNPh}Qe*UP2-go9`&TuJ<`!?gH^n zf_QNKpd>E=(jNlSpMt9Y$;%Fqj_DvBAoo{+c%2{~TtDaxiW|lt&x7=F{1^gqc&@_)u0(70Ty320odw-+>5`Or zve}DYu}E>*1yTh%|HT-VW^F)bE0lo7e~`@vWq@wqH!mZ$|N0L;_gLWNSsU<_K=VP3 zmz!2VnFcT0OQ1}Xmo+7zGXBHMl9KQLUo<0I3qAwuk`d@caF9)M5StMDLEpS|0O|1u z=>eq*BM{FK#Cu^4BH^I{N)25ga}I#axt4(x8ld#>P0K$@o_G@k*5 z--nksmVrWu2;@Bd%yj|PVy$IC?^-bN7b#cB`lRYfLK=7(CXWBdZ088vP=riGVuIIB&ewJee=@k-?#rS9HG4CgAy+d{~;L! zio#ZqK`xb``QH?fUqKGe*a0dJOZCC!q3?&6HgmuK&&UvEVCV*&j{edZGA;e$Wdz6; zSipgDlLg4I4v=9jaKk|J$)Gh3EH97BgO)UM-Aw0mRFP@jiffi7=jk2m`~*U>MH;#B+u50zf=-7_R`t(}eLRfOy_X;Ig;z z;2sd~tvQtU1jJi^6|}16P2)ioQ3i&W3$OnC|KdY9C_B6Yk?`yQ%7K=;ph-HA_gj-; zVF?P)7yCgy4K`E`9s|!W^XMg&~N9+1=#>8QG|XTVD*a{sYMR{fS`f&-6lO?3eO@ z=9@uBUcdac48*hnjT@bh2U#%X<#dn**Fr%l;{u3;TkrwWWsreeAOy0YpoT}_WgNtU z7xO_HUd#lOlfh&!m~01=jbO4GOqPPld@z{_B4O5mTLwF{Ks5-+WEP0YpwtIi-vB;& zTNUim125lR{PzEa4oLG0H4xd`3pxSdB^y}!#>;acX10>p{}* zLO}j}0U}`z=mPC$H9qmeL<<&=S|Har)ba?tEK7g{B*ZyqKwWu`EKvP;(WP;4w@Up=lY263t%={%FZ9H{6 z0xv(rLtOz{uhaonzvE?s50ZM&d~yj$y#q-70fhP^FC)O}kGwPhyB9p7^>qo7BO@Sd zL(D+BOF+7tV7fu)S%dG1n<@<||G@VP-Qqy96;yfr(*T|N2GZw+&<72!GZ{S$ptAQ# zz>8cxNZH%%`{bot255!elV3!i{2ycq`# z7MOLQ{fbEEeSpqUdGb;NWWtMYLC8fus7db%GDo8x)c=K>)9v~MN&l07p!Mr7V$fZ{ z4bm9{(g|v|!z~AwUkhGZT>SMP6t4yse*S+^k76xo_0&0aSSmZB4muSVWQ+jJ0ig5i zep~?Qzwt7_=J)>>_8|Q)EI}kJxq?@jbb$080qMOGixdc;0i_)me*J&Jj-mtP-7t_2 zjt0>DA3_IcWU>RK{(2yC@PL9@4W!-%q`nAQ{gamwAoa^p)Pri!Z)%|4K1jV2vich@ zH9+diQPhLh$s7ZzUjkAugsgtg%OB@|{eR&OQV%Zw&w|Q-5buRCh=hj%D8)Ca!NRfv zWZDgoX-8sE!sE%y6(IAz2O#?oROPvWbf`3f&c8(HcyS)2?!`$E3AYK97bU8v;`l1l}U}@k*KS<|`P7n##58CN>Llxvwkp6S3fB*030qK{*)DMck6^fwp;Lgi{ zU{JAj<>ibUpzvr3y4(!VpW|%YIcFfPx(N0c{G96|Df6h3Iou5 zh{u_4|6jEGgNoTk5D7|SCLpn55D)HdQ2ZTIfrZKr70?AjAX8b8O@*F1F?GSu|1V6C zwZo2fY5?i`0Md6R3N#+(`{Lz~RM7p0AjP2G(<>0~ryscHKl8FD^ZWl7uVK785brL8 z_uyqg!T0|!&VzU_PJ&2~Ut&OFyCJ*}FXyF#VrIijH<0L3km!r~AQJ8;&>GQq%AgVN zW*&i;Rv;IFLIr_eEskQND$mR(>ipkx5Y zp!KB@v!R*=Uj7AL)&N>;ukmuxEJTyQ3p6RL1~TVQJCDH2B7`|$`vqQ31@}5WfX?0T zf-wzV*29<i^{|@O7HtspbB}@Bd%S^8ytukh6vA5V>_9p#KsvjSb%H|c4ETKg6$v2E zgXZ&I&IMOVH(sV5`}Y6E5|B|Z=7Gr>AQI-FF6hBmPvl^pxg`hc^MgDCYPLg+29w>c zXTU)P8J{@wuNyRVBg)Ep92a#|G zfMUw{#EWFO10q2VumL6Jr6GvW1o@BSWrsJY960f^!5e7<1E>Y00@p4D(!Kx`MrkP8 z&t%Myh^&0#Did{CtyDI0<~yLK=KhF`2!g8pjJW%+(s{uO7Klv(_kvW(QyVe zUbSM{@Bc53yCXRnJp3;P(vt%UgCv9=(CU2f(2DXIXmJKBia;YYk7YoUAyaq+Ug|@& zyvRo}7c?5M52VOqGLOJZE~p}iQ@|wLf1vVp3P|M~kje)^F#o#>K+4y}r?J?d4AP(i zvVT2P186^u$N6vnUp#k1_8+L+Gy^H-0h!(eRSX{g0r!7I&q9k#o|nHsOqeG@`u<7( z{l9}{B53_5LLb=i2>qrYO`vj?=jARC6IuU0kba2?Apc|04^s&W&M6?3BHcU!FCPTL z{11}{g-;1c{s>6^09+nqDa%V&WJ^JT?g>)b(!(S0aw<$I*va7XJ>cb270@`+hvtJh zFMpi@d%f`>s3-UG4~#d1fq~)WI~WgqYsvu_4}4|HB9IZtuDd4n_y3M7AS;y+R)XrI z73aVKEI@(#HUQ*hSbFGcfsB1LO2INwIY=cqNgoEQ1bgSqi~la5 z`sF8xgy{v(ym^3>M}S;21xY#T{G|#=O%5nL3t(zqtVb~k6zcyZL3f{nO!9)Mg4hir zU(}TeV}~T22$ArvhNZ|B{(>sC2krX?#g7w0A85Uc#wkS0 zs;dGr*m6=F=HdMyZC5}J;`RfzPa9tTIEkblwEV>Q#EY45_5C3AD?sXR`~Lm^LLS8( zp!AprQjh_Pxm~{SbOLk#i}#M8_;OOk~|%&{40aVlY4676WzeKu%Ie7zK6`s63tlG9esf!izu<33ml3 zRV@H%eE`z>#^>*UME(TThbjn&YP~qYNl79k< z=?O6T7v~+2(*vlelmn@90hy8oQw6dKfkPff~cJL7F#!>apkEs8NbdKgUzh20K{M3-UrVNdFy> z{^e-;q4yUY^@Oh<>Du${|BI9Mpj2`gM8bU01zkVFFA9rQR*^mNV#y?Qhg2p+b>SX8`HH;fWR=p#1bB1T_AEq90T)gn@Le0qI(V(DmZJEpmDX z`AH9??gmI*6+#`zZ6FLilJjXJs7nAkQ{`nB$hMhaQ=n&?anynuz0kAGv_a9{dIY?Q z`h5*pq7}3l7ToHGbdW&Yf6$JWO$aFMLpn&_mU_!3GDsm~jwV$w1vx0kIZx*4k{zKmT96vH>N6Cm<3Qov;p=fe6Ru;L;71iZK)iZE{_nt7hs%;N-^X96-W6vez3{Z^o$1+}^*UfOR59VGOj`JlneDaf}( zfE;v!|L^}DF>`nXUWy4Mp2yh98|05MHAnw23 z-U`sr;r>_O{vYn`)c~=D1wb{P0f^bb4=QI4fSA2PAW;DjGYE9*0%XXseCxOWFSc2L z%8U&l66WwOkV4}VFaGetlJh5C&_o}|*LDyWWyI{~7kKfM50oEa+Q8#ACqODY!0``J z2@ak!86hC`TQSwo0I8n>3ZEy=P``q7fC`%mL(pZ(FJ2aa=?5<}4F4d`2LZJ`VnBLX zK;g6kSuaR`mPL2#onN36DbET)vOsSyi2qVq{QLhGhs;5V0h(yKE`QW}~0hzl5 zkH8hcl?wOn{pb1~TOb$dpA0Q$X!`3uJeK z(xMJXr2#0sDiA6`wn6$o9AY5i?Rp{L zMTQ_Gkl{`Qd2}x~%%ht@2Fw5%@ZS;QQIPv)h$4j}C~x(El(B%)!VRc0h~q%x4XrQ! zqNINi_g{A}=(LfS_kBQ>D=a!6KqmL?;kKKCj1`#&I{y=HEXe*9KA`>orbtNv++tz_ zDfa*=4}vQ{^P(T54!T#}e$%)AFX})7F#mRe_6ZoDcyWpg=H&xipdliVDLf!kpfmQS z_MjoT8!!KE{PzEa4akHSW*`zOEe4go2a=WrNxTpTkx=RHb`ahBLDK(BK>79uh=fYt zfJ!d_N#6%aytoM>GkOm23%s!82IW-hf}7_6GVc$_ydIEwpz)U(7eM9dhnE{XLF*rlK*?t(h=heS zxDCev(&qs3R|rTSD6T*lR31lw^>e%|0O_v>>3mTMBH{W$t??7=pmYz?FM_Ne7CuJ` z!QlgKR&9guU^y2Q384Lt?65$t1{tOSis|FFu$Tt92DF}$Bj80jL_6ph?i>gcY7%(m zjU7mH3`lbqnr6^?y#0n?|AWcRAQJ8iP)WoD(krkCbp8uOFQ|QdWBs51FWOPmf@4WP>06r|;g0a6jxmGB!pKIXs%3q&)J{yiZ5O-TBE-@N<*T8X?JSu=P%oDHP@ z14w-kvic7%Pk_|7qo@ak)iqYoY7dZlC4_oVe|g7J#C9d{%-b4}$|E4ZgLajHf(eeh zU9W%}H;~T8m4Cgy9WP%z1UGBIy8><4K@AwtahfkTvVpSsg_k=yK|H2GEkVj+dbIcA%3% zBi4YHuHASU05Y{7WZsKTFxdGh{0-6^B8P5kc9x=WH$|Fla zvJFc>?SCtf<)Hcv(zUo+0&22>dJ`{Sok6sAVA(qxZb2f*h%F!^)`E?Ip6~s&^85c6 zPxL_P0a}0r=YcaEG-Gr@vzQXxAPJB`A3z4BfDMAi2q^wMK#uYK@G=3(CEzjUC(NK8 z^z9?uNT9759%0m zx+0ZtP|rE4w^nfyWeE}&uII_A&|0=fq{V`V4=!I9s%Q{0lltYQWk?mGJc%r7dYLCD_#$#deCpK+02;KfTeH2phWSOf%K9^?8Bbp*mZ&_#+bc4DYc0I8pb zMLp=C_ZOY$>JjFF4&Hi^i7vnM1?Y_TZ7P2-><4WOdtr&8z6E5z7~KAyJ3xED%GSdI z5n&%_q5F%Utmyt-0MdVr6XxHYGeE1T%;5I#3;^-f;CzI6poLd2R$`d<0<@;;n=;J( zI~RcX&)|H7e$c|57nvCPKY-TcY=f)s=H-#&6=*$KBGWC{`16G#*9?q7vGK7p5RmA|3ky)yyC zH-oE(r0-`HoH)~WH?Kz?A1r~lo-8qbaRPK`E?D%%*^R&dF9gZA9w-qA$YS^}%CV4B zAmG0!!$MAhE}PPhg3ULj)B#f9*U0GVhrZJiZe4gX}}_H4g9# zyi`N*OF;Z(?C|hA0^(0&|NejH0}$)b{XhSAUOC7w@N&U}KmT{00kL*$`1XIN#vy)z zmv$UK{_m^+u|i+}`M*;E#F_xop?H{I;APBLkQj(nbN|nOP`C_z{NN-H!JSeD+hHCC zxx+jRCWm<#Tn_Uv#2w~gC^^i-&~=!HVa;J4hEs=m7(N{4VcY1 z@i4d?<6#In#>0?xjECXDK^}$)$9NbP9OGfwa*T)J*fAc48^?GU-W=m$U^>pjAa|UH z!Q?m(gU4|mhPdNA3?;{T7@CgrFibkm!?5f)55vCWJPbFE^Dw+P&cncVf`>uj1P_DP zSssQf2YDE_9pqt{agc|huL{P&>%OAa;<4f#V<# z!>o91p{-b36=n$9NcQ&hju! zImg4$bdHCi>>Lk6$~hi}kaIi?dS`hU#Ln_Cu$<*#a5%@qU~rCyLE#(^1J^kohA(G% z7@nNvVYqabhvCf`9)<&Fc^KB6W=T;|veO zoHINOb!T`OlFsljc%9*4usg%UpmTcF*L)vK`hKkcX3@xX57^a-&VOVjRhhfKQ z9)=UAc^Gb-=3#hpnup=jX&wfKGdv7jXLuN7&Op-9vr{|_mrn6896H6rU~-y=;ln8& zhJUAc7z9r9FsOjkGcYiSor0*{cY=pu!wDXSB`0_ox=!#gRGr{qNIAj75Ojiv!48@( z%}((!c%9;5NI1pAu;LUC!?aU83>~L<7)qdKxEz3(l?0_fI5G%;aqXAo%6XAlU`XAoGR&mizXpFx1Z zfI$ER6$BUr0t6TY3IrGgCI~PHY!F}&xFEnF@Iin z!yxcLhCzTqmO(&4mO;QlmO&svmO-FFmO)^FEQ7!SSq6azvJ3(Yats0rats0vats0q zats0uats0sy!k8dMns z7N{}^98hNvc%aT8z@Wt-prFMd;Go4Ikf6gL(4fO0ut0}F;D8>3zym!<9D(AgvX@QZ z+9WoC>%Hs(i{`NlOc&q~kP+t)kh{bIjz^Fh7%u@ zlwSlEi_}%k)m2SVQ1!4<^|ewBW?*1YEmnwDO|b%_SOx|L7lsH1cLq;}cm`L7Aci0Y ze}*82cm@{+SB5YKPX=cOSB7{74~9?%KL&S@kwmEvVsK^fW$7Hj0(P?>gCm0viu*wh#qKYVt}w8APX-r;cm`)M+XtteAYXu7 z1_}{Jh7blvkkL58z>Oh@!I8li9Ad#>wIK|i3?LRL9D~833gUY)_%ndq0rDxX@b_cz zXYgZiWr$#KX7FJMWeA4)9H06ShIj@y27ho|fkGXZT6eHJ0~kEO@e6VnD5hN)0vP-l z;u(U$CImra9^}q=u>Gz$!wBS7kloGIfFw56fVx-xCi+Xdpx6>1qzc827d-OaO{BW z2x5rD>7Q^0M+Q)+Kw{1ZoVHxRVHOUKH+=a3luv>gLKy-W0>C*5eUqN}(j{%mt0>EVxC_Eu%Lec_=4=M+6 z`5#m^fInxdeqtDsuU#lXOzpb%VH zT#}lrkP0fj!Ezd^6`F7b3JNZ%#mPmP1tppJc~%fj3JU&VK_QvBsa6WAX1q>k!MGT1y$qd;HnGAUh=?tz6c?^jR zNenp*sSGI$3=F{x`3z|cB@E>Zi3~*ysSGg;{tU?sr3^U?r3|3TEH6I~RLwCs=H%oj zCzj+F>4kvY!(fw^nUh+OSdw9<5S^BpQ<7SwP+X9joSBxHoCpdQP<^K0lA4xSnp2_x z*UZ2WQk0pVo?29_P?C|VkdvRDo|%`fke>$Tra+Y^!t7GWNKGuzQ7F$W$xuklQ^*Gg zcw&wM#6mq#-lV2^Tp<~$P_q>>ixm&MVKzOwLe9OioTMC;|upI5AqT2WAxT3no(qL7)VP>^3-l9pMapb-?{r>VykT#}fatpJY3VukX|oE(Lu zRE6To+@$=R%qox$i0>gHAp28`6%vb56+kAY=9O40wN>Nh|^@_74jR zPAw`+EwbWLP*70t@OF)i_wjdj^ojR%boTJ{bBzi1cMA!3404U}PcF?VEspU>O)LPV zo$SoKbXSObbQFSI-Q!)t{exUU0cxO-U!-6N@ekO=AXmZDMp9|ILP27BD%fYFc#LQl zx}+wRrUxXZr-Gb{--*x^otd8p4sMX26cY1Nz#NdP!O@(NSeB}g3ktR(aFelEAu~-O z7o57m3cCxSYe>xY!y?I znp+S9PUCtd6(yh~K>&l20yse{q~?`m7D1vF90G(*S1Qh|N>#8^Ff=eSQNm&m#O(aM zoJs|7P=QONVyFg%q{@=iVlr&9RsdUTqhMrUVqp!6ZY2eXO~{rcrIwVZrsjd&22ul7 zO{{GtnYkc;=^7doCYUBo@Q< z5gWWA8AYjyDSnB$sR|j1#R_Ga#hLke2upF;msXUYt55>g3M#)#G8B|xIy3XYIVUeM zHs^Bi)dEocrUOoNRtl;)Ii(POQciwy zHj1c@0w@k4YCv_ij)F3T!@$6h2d%$#6iO1)LG2F)1_qG&6e|T)kbyc-pDBR+0G9_< z?)o{97D};(YKkTUsF4C|hbg3$<|TtFc})feRijdnE|3}!4N?XX19?CJuA?}=v?v)| zxu$AjQwOR1iWN%p63Y@Zb3nC~CfF>6#1c@`hXF*W7Jz!z2tRRw?0^SQDa?y{W+vcf z9D_y@toej#u5*4Kq`XV6w6aP`ElJGG0RnM~$>T;x#8B&UaQXsfiNY2mA1=T0{MWEss zoX8;6BzYCBLQ!fu)@mG7ZX^~I4Fyo01PW3; zWV2y{&&gMRJ11MRYDp|dI}*Kpk`rCPJVf@LRx+i!U9m0uaT;ku7?z(ptwv` zNX|{s%tYGPVS27=Rjisi1aeUcN$dMq*xisvZ}(MFO!M z+*CufkU<4mr2@Exf#Deif|b4=moucY-bEpQ72L`La$hJ6H`(Z64OAP0Jvi^iy@6gP`d_i69N)jpwI%@3NFg^^z;-o$`dn7z@c26 zpPLFU;WWXLh?D@*lZx5+0A)v{bOd)%a(-z}N}hTNa)UUf6x%!8##NQMJ7af=m_ z^YhYjGLuU{2@q~8&UERLSqv(+K#l@=gn@wpJzYXoU?j}Myc7oPa%c&V{Dg!z2B3Ds zT#hUJQXn3L3egu2hH#uftpO-IBr%-<(!}uub?u>SP;-ZY!Pb_6 z!G?i>!N!(>!H$7}!OoU}AtSMvLDd`*aiBB^ic@PY28QC2#FETp1?Qj;1_qSwA_D^h zxTHvhqyboDg7SxNYHof}CA{(jk5{CC`csHL8%P;LJ|y*n*^sV~Zc-ws-wf*N>w(7D zQ&Nj^DnZ2zNCa#SvYnth2NWg{y$VIpP7rt?1|*J6ZE!|uNlJb>q^kxQN?`zX@xX7qKtLR;fPojQ0La`6 z8LR>h-mC%(Ks5;(gKi4R`6;OiwhF4CgpA89 z|5ETcOfER-fh+}&4_Ywk^V8~#`V8LL(V8~#|U;!30VlZbgWiVneU@&K} zWH4qh1B;q47%`ZERa-KcFjz2HfZuqKysE07GM@=BoyLd7Y5q+H=F@9H-X>J z$ZF{AZ(L~tk-n1i^U6|-O2FfG#h}IrXe>_$OY#B-BoXEnrGkb{z)3YXv7i7{M1dNC zSd%ORF7rTTyaG&nVu^xku|i@Fq%oITky%^<>V)9Z>zP-Un3I{JP>@)Zn44Mx9!1Sp za0a_eLz4mBPOt>nm5IqE`9+oJ@-C^xB}Mt*qBaexf`Q?}99DsZS*YX733CyA(D?F$ zd5|(|!7NsRg4wJB3zo17D4^+an1iZEVIHf%0U=fa21Wr!1x5o#2gU$KaKMv5Brp~* zGB7lN^-TbiBxoL0ItW5w0ZOd>`~ROE*-`)h*Z*Gy0U@C)!Hg>!f-Fp0ih)WFL7`h$ ztY9tw2BNIe6?3Yb>VzWD$D!FDk*fbCf&BDiYRsxB=i zWK;hA|Np-pS%857sv4pPLTVw4G5u$-XZX(mB3FTEdx&;s1_lOZ24x5biTqE(DzX3n z|AUNy>P8Pcs4xSe{FQ(b18`knMgb!zZ$WYvYD|HpM~Oin0vq75i=ICI|E~up(14BqC12ktri~!ld$N(Zk zL%TRaLqlCfq3*+$vmkn~k^ley{}0VbP}3l0LP$|$F-CCKLu5dhar_J*D9-?ODMXm~ z+;`wVvRd@8g_s5*6B!&Ck{FyAk{O&CQW#tqQW;zs(iq$r(iz+tG8jAvKYJ= zvKhP?au|FVav6LX@)-OW@)`UY3K#+y3K;?!iWq_ziW!0#N*F>IN*O{K${4~J${E5L zDi|UdDj6afsu-de9xxnWc*t;&;Ss|jhQ|zt8J;j4VR*`Ll;Ih}F^1<1#~EHQoM3p# zaFXE_!zqT>45u01Fq~m{%W#(A9m6?>_YCJ5J}_Kh_{eaP;S<9phR+O_8NM)FVfe~$ zmEjx1HHIGyHyD00++_I0aEswL!)=B?40jm*GTdeO$8e9~KSKp0BO?PNGb0ltD1_u2ctWqH=`G$FQX5mKcgRGAY%YyFk=v7C}Rj? zIAa)NBx3|)G-DKFEMp8~JYyVVB4Yw$GGh{BDq{*`I%67RCSwL;He(iJE@KX3K4TtZ zA!7k!F=G*9DPsv^Ib#`P6=Nl14P!N99b+wHJ!3FKGh-8DD`N{|2V*;94`VmuB*ux1 zGZ|+vE@WK5xR`Mf<5I>Yj4K$IGp=P^!?=NQJ>wR}&5YX^w=(Wz+`+h)aS!7$#v_a; z8ILobVLZinj`1wx1;+D?ml!WHUSYhxsZ&x{`#zcPMd{LT1_@h{^a#{Z1} z7#W!un3$QEm{^%unAn-vm^hg@n7Em^n0T3ZnE09am;{*wn1q>xm_(UGn8caHn1Y!a z8AF)b7{i!48N->n7$ceb8KapdFeWffW=v+9!kED{oiUSX8e=}w9L6H1xs0Vu^BJ3& zRx)-ltz+zB+Q`_=w25&N({{!+%x%nTnLC)*F?TYrXYOL&$UKpG6Z0hI&CHXTw=hp( z-pV|cc^mUI=IzYWnRhVHVBX0*lX(~OEau(JvzhlW&tcxnJePSN^E~GL%=4KKFfU*} z$h?sG5c6W@!_14Bk1#J`KFYk5`55yu=HtxEnNKjUU_QyblKB+#D(2J7tC`O*_b{Jj z?qfd3+|T@&`4RI|<|oY0nV&JgWPZW?n)wy;Tjn>+@0s5*8?Xql7_tbm7_kVk7_$ho zn6QYjn6iknn6Zeln6rqpSg=U2Sh7g6Sg}a4ShGm8*s#d3*s{p7*s;j5*t5v9IIt+N zII<|RII$?PII}3TxUi_OxU#6SxUs0QxU;CUc(7=&c(Q1+c(G`)c(Z7;_^{}(__FA- z__64*__OG<1h6o$1hO!)1hFu&1hX)+gs`x%gtD-*gt4%(gtM@-M6htMM6z(QM6qzO zM6+4WU^$iWV2+ksi*Z zY-HKMvYBNQ%T|^xEZbSOvFv2o!LplW7t3CjJuLfK_OTpdImmK^mX!19>o5zAASCoIodp0T`S zdBO6U4Sw66QX8FYOmE{Y|PnI7niL8dKNvuY!$*jh#DXb=}sjQ}~X{=_f z>8$3g8LSqpnXHzqS*%v9*{s&AIjlCUxvaLVd8~G<`K~d^!oN^p;+;UuUymCBp z{BnG9f^q_K!g4}#qH-c~;&Nhgl5!Gq(sELAvT`zV@^W%=igF5a%5q9_s&XoF>T+sw znsOR)+HzWQx^g;l`f_@5hH?gS#&Sk-rgA27=5l6omU0$y)^b*IwsJOd_HuS|j&cri z&T>w2u5vDN?s9H&o^l>?-f~`YzH&Zt{&IeDfpP(I!E!-zp>iQ|;c{Vek#Z4o(Q;98 zv2rnT@p5r;iE;^Y$#O|@sd6cD>2hgunQ|F&*>YKOxpFyj`Eq%3g>nUQ#d1Y*rE(>5 z<#J_mm2wqw)pAvGwQ@Cb^>TG`jdBfg&2mk0t#U1L?Q(5$opK#=-Ev)Wy>dNr{c?SB z6XhnzO_rM^H&t$m+(Nkpa*O2_$t{&zBDY*_ncPab6>_WPR>`fETO+q#Zk^mlxeaog zU2dD)PPrX&yXAJt?Umajw_k3b+(Eema);#($sLtDB6nQwnA}OZ6LP2J zPRX5>J0o{q?ws63xeIcaYVvyW>hk*X2J#m2hVqv3M)Fqj#`4zkCh|7& zrt-G(X7YCO=JNLP4)PxIj`E)JPV!#z&hp;!F7iI|uJXR}f%1{^!Sd1aq4Kfv;qvkF z3Gx~8iSn89N%C3p$@1CqDe^h;sq(qGJvV1@gP(3*~pq7s;QHFP1+kUm|}> zzEu9Se3|?$`EvQ&@)hzw@{VKOq4yfE#IjC|+<&ermJXSfW@|9`-Lga3j5 z4gUxIH~Js^-}ryXf0O^A|4sjg{Wtp`{@?t6#D9zbk^e3KNBy^gw-X&15*eHrk{FyB zk{MhWQW#trQW@MB(iq$s(iuD$G8jA=G8w!WvKYJ>vKf3Bau|FWavA&>@)-OX@)-gc z3K#+z3K@bJiWq_!iWx!}N*F>JN*Tf!${4~K${8XUDi|UeDjA{}su&J1JYYD;@Q~pU z!y|^n438O(Fg#&6%J7uo7{fD$;|$LkPB6S+ILYvm;S|FwhSLnM8O|`gVK~e1mf;-3 zJBITN?-?#Id| zhC2*@816FsWw^)ikAZ=ak&%g!nURH&m645+osol)laY&&n~{f+mywT=pHYBOkWq+H zm{EjLlu?XPoKb>Nl2M9Lno)*PmQjvTo>75Okx_|JnNfvNl~IjRol%2PlTnLNn^A{R zmr;*VpV5FZlfj75n9+pMl+ldQoY9ieiqV?UhS8SMj?tdcfzgrCiP4$Sh0&GKjnSRa zgVBr8o6(2Sm(h>WpD})7&kI@F>PY(X4=fSg>ft6HpcCYlbCie?quAz=<1xnL zj3*gSF`i*O%Xp6QJmUq%i;R~TFEd_Yyvlfu@jBxT#+!_{7;iJ)VZ6t9pYZ|XL&isp zj~SmZK4pBy_?+!`#Pwmbst#9P>oxjm(pnH!)9U-po9Oc?=rn71)cXWq^{ zgLwz@Oy-@;vzT`=&t~4uJcoG?^IYb=%=4J{G0$h-&%A*70P{lTgW%TS66Pb!OPP-{ zFJnH&yqx(s^9tq@%qy8sGOuDj#k`vNH1i|o$IMTdpE5sVe$M=Y`6cr!=GV+`nBOwL zV}8%fz!Jd1$P&oH#1h29%o5DP!V<#5$`Z=L#uCQD&JxbT!4kp3$r8!J#S+EB%@WPR z!xF>7%M#1N#}dcF&l1lfz+%86$YRJM#A3uE%wo(U!eYWA%3{hQ#$v`I&SK6Y!D7K8 z$zsVO#bU)G&0@_W!(ziC%VNtS$707K&tlJ_z~aE7$l}PN#Nx!F%;LPbP#p1=H&En0X!{WoD%i_zT$KuDL&*IOLz>>(4#FEUC!jj68 z#*)sG!IH_6#gfgE!;;IA$CA%dz*5Lk#8S*s!cxjo#!}8w!BWXm#Zt{u!&1vq$5PMI zz|zPvfn_4gB$ml6Q&^_5OkRPOzM2Im2>+<` zu_mz^vnI2eu%@t@vZk_{v8J(_v!=6Jux7AYvSzYcv1YMavu3l}u;#GZvgWedvF5Sb zv*xopuokd7vKF#Bu@5robwJTLP;EZVRjtxFfJu;I6OrB5cnW)P~fA$A%RZt#T$o(AT!dVtT$Eh2T#Q_-T%26IT!LJpT#{U}T#8((T$)_ET!vhx zT$Wt6T#j6>T%KIMT!CDnT#;O{T!~z%T$x;XAJ1%!Z?xfr)xzloIm zcSG)`+%37=a(CqJ%H5N@FZV$1q1+?6$8t~Pp2|IwdoK4v?xox-xz}=UfJfA$9Jik1< zyo9`fyrjIKyp+6(8 zyuQ4;yoJ1hyrsOMyp_C>ytTZsyp6nxysf;cyq&z6yuG}+yobDlyr;aQyqCO_ytllw zypOz#ysx~ge58D!e6)P9e5`z^e7t%I}gdkl!s|D1Sn}NdBaJvHU6d68Y2erSdoAFUa4NzbJo8zD)kM ze7XD!`3LeZyrYV*wrYn{!W++xDW-3-HW+_%FW-C@J<|x)E<|@`I<|)=G<}21K zZd19SvR&n($_|xFDmzs!tL##_qOx1%s>&XfYbtwHuB+@*xuLRO<)+F3m0KzYRc@;s zQn{mYSmmzD5tVx?M^)~t98-Cqa$M!1$_bT6DkoJQtDI7KqHVMb&YX9B-tN(ZZukqjGzvh3>|62dO{%imD z{;%`j=fCcM-~W35{r>C!_y2G3Kj6RN|G@u7|AYP;{}29e@;~Ii>HpCGX8*(foBt30 zZ}C6kzvchP|5pE_;O$ZdMn(q23|s;u0|RK(e*)tI#tn=I7%wnBVEn+yz$Cz=z{JR4 zz~sObfHWhLz*NB0z%&6#1TyA{OfF#B0G4NDAQc{9B2@?d)n9*s5=zf|NjZn zDDMDK4I)A7aTypGSRAhZ|Nk4Ltp5L>|Nr@+yqo{?|Np;756_ou*l_+oGsBa15I^^DyCg&0f&cOh@7DkR|NrmX$NQxj84kkL zpMBgfd0@lg{|pRoj@w?7IKKbzaoGlj29W&yzyJULeSi4AYytyV9>I4&@c$n^FWUf- z|6l*-|Nr0m^$qd=85nrLJ_q^qfBk=OSWHv>@NeCl|JL#f|BXT63i1g^=07NK*#G@! z<_ELnL2@7r^4{-n?u`GLL8?F^;1B_Y7I?N2BoD>SQ2IYRjPd_Jb3K$@Z(DB*VuDE! zr@kH%{q?qBCH0`W*?(XsBE_jZ%>5v(gz@}(ka~pmkm!Xt8cMwpNOko-tI=Kufg?LmBd`~Ryz(?%fn|Nr;n@5rC$|1WiYtK{){;10fH9QZF+DJ1BZU^8f#%gbDitkf1z57Bqp3D10Gt1yX{F zVY6G<<6$2vVjn9!O41t9}E8ft&hJARtO_N!SMse0nzpdm;3?o zp&1ffaKO!CV7LyELy(~S3om;PfRpxrP<++@`SV8xtZ}q{BDv;7)IGzcegfAJpgaaI zF`$JLI3*31`U#N-K+XcyPYg0(F(T_HP`*U2pZFP2>n8>V)cOfjH$c=w>L*aHM6RDe z`R5&?K4JjNBlzIT{|%TAsh_~|IO`{nX$%aA`ia2+Bm!~+hz4g}JoOW-GzY5%6~y3@ zydF$~LhJwk|CHBHAj28JAr3VXr7VVu;h{*ZpP<%({qP-PESL?cw;-|*VH9$-eu4xI zm_!K~C=`I9MJj+QTAZ3pI|O!U=RRj2H0vw(CWkn#tC3C*y<@zp9-OVlr_{t z-~u>yk;^uSk9e^5(~!#rh&oh}1BlKKSejBksDA=B2uhG@9#k8YLUk*$pV4KY8c--= z)G$E%7bqI>a3E$vNZiT@$U|cgw|;~SB!46LAeI6F{RRZ&L1v8N0So~<1_tyfLgyp9 z4qXo1!)ZoVfyzc#k1ET6X*q_1QGwwb0t$%i`z`FZ-e z*TVRUu0cWmL5gs`y}dnHIYd5I0c2-!iGpe-=m;N$+|**w*&xNRO`V0Msimn3`DLj^ zMWuPx3ZNroO7cNl^-7Z=Cw?U6f_5~5Hhw`*00Nl@J_-nY&H&Uu{-q@ar6u9{McJuE z49FY^+YNdMfir`1eqLH;dT9~pcq0Ei=ZwU>ywn_@)UwnZ5Ia59nSlXCO%V8Co75t7 z@z6ZTkvAZj16P>^1X`E`E?i|62)M)`0OL2XK={z}{h%itF);Wulra=BI5LznlrZEo z{&i!y%_pLG~Sic7Y+bBQt=)2o$D}{cx}i&6#=Wpu??_ zK!=_vXuvh1@14VAFS?Zs&WU-TO^oTOB?@H_=P6|7rR6ikFfcH{%?V2_3M@@6stila zDNV(2Hu#(Y@F5&|`KX3~&P7boQ-vai7={#vB8E(cGKN%!B8Fn{`Bb3O?SdJcz^5X* zFz7K9GgN}lszN`z%84P7p_l=@WtPA>R|*Va3_%P!3Dy*LpB?e4bxc;JuMA? zTtLqYRqz2F*aF_=4cXC}4Nl8>453QjGC6}d&Z;G?4;N97>p$`}S>(ozfqdQ7AG3%wLU_=`C6-BU{- z2Nk-24+6_Csti|11D~}53AY$N&xQ=94ERh$OlAoqjqMK;POKOHXapOlrFT;h|MlnOEe;zo#A zKuHlqI6Vg<0O5h`f$-r9z;*}Z7l7?>FUl`1U`WpiC@s!F5&)}lOi2kYPb~1r%qs~> zO)d%d^aHuW-6!7B*Cif&3`KlCxHZWD5({#QPtGr>j87^}OG_Uxe8i~2u_gAU%z%+HH2HZDmA3o&&bRJMLRfumZ#@{_tmF5ffEm?E0Le)7~}-f zQx3{lIjJQ$kQ5IRgt`wRfKV3%IeiqW5FrjdivTJPGJt^ry9MfdX!yY8AZY?B3WBo!n82{VvhNa`&1Elx%i_ercwEkc(pPtOTY%q(%s zFG5id6$?&6G6Ph%B0|hB4CDrAoT3I9G@ihM;F!Wx3lj#J5uBQr0*$DUe6S{ndYFBn z{x3MN%hPkb@-y>5egsztAVH{IATg)JqN2>yB9JH|&Oj0{#pUTa;CS>+tbhxHA|590 z1}eD02QI)$66^<;2v7-FT#{M@QID`EIJG1w6>{t&_$VNcL{JYHAs?CtI=Kp> z3v4UYJj5UjM9wdaAskxqKnjz1&>#({8x0pvE&`p*5}ynyvlwuQ#}^dkgAQ-ODPNSI zR9ak;2fpe7ZbmA+^o@s{1`TR!LfwO0$%89vs2r$*!X*c)uyYf$Q{y40PnN`k&VGUF z1IZOYJPEhI093-qr-6%jP#psc3uJLv!vrQ*l$w{4S_G@Wq5ci=j7JrZN2&8cdO_~S zOki-q1#)Gsm=(C`;1bssKequBP{MS!s0$7EbcSH;yxoR?lZ>X zK4UEIGsfaRV=V47#^OF>EbcSL;yz<6?lZySJ`*hNGr{6M6D;mC!Qws>EbcSG;yx3I z`+~u}FK5v72DtYFN^4Fzsd*{R`8l8y6ybc=!cy?)5kq!=l64`u6xM2zfO7q2+;7YIBNv$uZTEue=TtG);$%X4x|F)F3)0!wGcK~IoLhEi3L!J^qkPVTsRM; z&atE zI*7P$VsSP+H6e-n7r;e9X%-wkhM+nP>RCgO??LKed{FrcXM?=U0M}=Pqz~L$Legi1 zqz~LeLXtB^(g!Z3kmZo{flDYPITIv(;MN7Q9Fjh8ivmdw(h3H<5bkz}7}$0+F|f($ zIiba=h~Q^P&j|ya{h3&TB$%Fq9KqnGFi0Iz1RH`I4`}K@#WcD)aG;~9gXRwuJ3v(e znqF|VgdqlsC{*)|u-FR@5_G*->;*Sn(bR#fBMdQ2d%;atbahz#3vQC4tHa`76F*Q( z0M&0Mevmwh99AZNAkFCNO2KU;RCS=H1%^6s-b7OeZmXb(ft-ToW^j`kLku%qz)fa! zby&g$l9_Tlp7FpjB%(p!J*y+VK2B%;+&tCk_oy7B{3%mJmLave}LL6;0`UQ=5b3+O#w|Y zLgg~^QrwCX(?P8jMClLe|0m`afZNazb#V25KEWUsYzeDO~@TdpaE>PP7BIcA>44z*C z*GW#0xysCVkel68OF+Zi>8V9PN^#2grF4en@HsyusxONYiExO->*kVD-pZ3fX)Vagb_|z3@3zsQXYH0d^dCya(Z6u*UQp zT#f>@L7@&ZEQOkh;6w5)ly8J4Zv-|Pk*4QW=0V3S(8R!f6I3xQ=7D{PW(RbP0YxvkrbbtX#XN9`ps6zf6{6^3Si%5Y z5TdKYEaN>*K!qN*gb5 z(sKfeGIKLaGRsmybBu{aCE#TMknu@Kb_ICOfwTua)jhb zXkIom0p(^;zCex-m&~%vV(?%HbnFAYe*p?!^u7nO7;>u;T^!2y&CG)g#ef>7nR)3T zH-Og#psj0g^aTyVf~IDZO4Ffokn#^CgDMVL+W--FPc1<<&L=+|A`Th@h6D_(V~1)6 zY&`{d`VUm@f^NZp+6$T>EXvP;NTJC=?GAE+gfF_?U~zCc?*dwr0BTHu>@6tC02jj$ zK4?V{xWgAvl$s2_-3&503YG`Rn+Tfj zfW#k?UPwi$B>Kx^O2Q9+6u@b!LTJ644`ENpjjYDa$4jgBwaSM?E#S!S%AXxl@L_uQ6Ngr$c zf)s-N;0~GyMMMQs9D|gA`rJsN020E8XOJM)_ykG7>_CcJP$ND)2U0k~8i3$733$@V z$OTC$q%Hu98)J$?lMN(qf#$s+$qSOF5PV2pf<_Qr55#d`dqJ~YP;o>Yp{hs355inj zmx9tOLJrlnP&pKPkbDVo3dFBSYEaC8tAUNZLC5Hj>pbwl8$`SmS{Xu@6M$C?fYy>h z+Q-nk5HuJMjvq+bha?IrP9SLxO%RkGkc2>GDri~(6pi4@J2eI3(DWSW_!*KYsLh_3 zl#_}i#NZCPtvRhUN1+&c36hn9e;(wLDCn9S25f5FGV?NvGaPerAWDm|sqxQ)u0Dm_ zBf`J{HBg}_HMz8?II}D@r&1v~F()TA#aaQpkWRrCd~6IBHwBmELvB<7Z3qE{BXoZS z#0CZi2LG@iE32f$lz8yHOAHLr5Sds7&{|HsHiEAZ0&Tnk9b(AD3w&@P4RrAjWLpiW&Lu_-cKcHEz!xYYtYe6dWnjRr7TIm7 zIMgKP=j7*+BbSp8x;k6|AG`YtOY=)o8I)o;c(`~u8A??ROe$deg9wCgUTF?^%`nV8FdF7g7>#N# z>~^GLa7=^Z3Edo+KBvSK1+QR#Kk)Tz;G5_UJoxbA55og4HUW@628Inb5L(5-<@2E@ zPhKYbID;;a1aGz~PAyT$NGwVLZR=4efUHB$F9P3Q2D(BJa#1h?s(Of^LP1exeo7bP)xqnx<)3&3aTKat(u~sT5P47!leqXQ$d=sr~%8O?;XIsJA;8CJGCe; zHOJUUF9nhoL8DFJDDzBV$SX<7$$?7vK_==zb3mX~xS9FT$`uq_aDRi=6-DZ*=IVlS z5d#CrrK*wos=4|QKC(ImRS!K?Up-aOdZTE#1Z44CQLF-7L?Jn`G(Dq45mccnsCrnb z`dWeYgcoIkE-zJpTrdl|XAhKpL2=8);Lm{A(+1k_267|leqPmL1(5qeLC2s9y5|>k zNxT9=pK7r}Zf0I)N@;EZk|+ZM=zdBC4R_xVO^EpreolUJVh&UUd#_jK*fqHi^0jC0TED{dBr6~ zrQrLj6%tcYK&!<;HY#Wor>26NC&eX+plp(wlV1+Ga~h#HCAB!YC=;A^L3+3tkjw@7 z6O^by5(=REuR+cwD9`0sPyh>U$jo;!=+5>K4Zy>Ep9rdGQdCvB7#KqGOA>Pw3Nk8-!3h)6Sh7+8)lMl2zL`!SOB`WWyAx0c zH7hY4a$&pzHp5`)%$$LN0m)pV^uWW_zychu5c|q9i%LopbFkXRz~EMtnyP?D3356K z%PcNQWB}b$k0tFJSTKOpg3=Dm4-o+jp!=T-auO>QAj_*kyTqVHV@|OS=pt&+W)*Ov z)B&|3aubUxK`Bi~Avd$AC?B*f1jOY+*k@#506woPh5@wyFNUEAyrUSjb2*tIlOdO( z47%?$oFS0G2efV%yvnFp0TDLF;IIMhpUz=OWk_ZyVNhVuVo+d61Dlo0pum9G-51Xg z#*oR7!jQ_4&)^KspCw>bISe4ZMM&m*fG+cfSOQO%5Uzrefq^jt7pRQ@3W&s%!~)QT z;yIbcpn?DqRtf<{`Du_Xnu$3I6=o(1u8?UsxOtWq3i(9}sfk57nV_yDxPAataNsst zN@g)Qpkd}i^QDdg1A`w!A_HvyHq050P-lQ{QHBOFgCj!^IYj|%W(p27ee+XNT`;O@22ksY3)(P%CL@O6>`cf&1GGsFZs3-3F@RdhpqvG6 zpMx@5ijG1`YEDTasvv`oLMp5^3vH}3FcdHpgVRGM17d$KXafk;tG?hCY%v1^XtNHO z4VokcC8%&DG0af0_^g2up407JW~`vApsVH*atBgt-Ap2cfo7{oxcHU z(FTKa2jr}Xc!mlFGX~J!VB~hMBlr{tH-;i;UM~ly*lbYHGGu_uFb0fW+aO7Au*r}; z`^e`?!I%Lw$CtuT!H~`Xp88_QV*t$_Fo1J1NCZ@Bfz-G#B!O?20i7#QfRq-4 zK@HsS#GGt16Ncc*T+rMasNos{8Y_fs@Bwe32Fbyb9VlIaM1w1HgHucV!A)RL2P?QT z7c}CQnV6GVl^PBjyT}DiO68RnfZ3o${*V+3wW}yU*D)of2x>OyW_vfN5Xf{$UkI1G zeKYeiT}pEcKz*825QBk%Atf~}u{5Uyshu5^3hu6Gs1|GLl~jOY0aFdgByjfytSUDp z7d%hnpIn*)nw^3k;^J5UDzj1(Q$QP&6tHMtDX8}gY7;s;y9Nixhk5$@IEHxo`+-IapuIl@Q2*P-F~l(>GQc(7 z*E87B$J5=<*VQkCfq}s($kow1z~2+Z3HJ1J_i>F64si`&a107^jEr~k5A|~ij(3f4 zc6D`e1=ZeeJ|Xcgu73VOzK%Ze{sFE*j(#9v2C%qin5Tg)|RE7Z>guE5hT zB;EzhK9Cr)8393_Vey`R!68AR&QNO@JpJMW9Nk^x!3RDuFfe%f__(?|`k*ND^Y?T1 z_Y3j#3w3nzaRvK60Hz<}CWI}Xeh|O7cm@af2YZ5*xraIixqz)BG^k7fotc2#ZwJK~0|T_rh*SeZYly@W1x(eToW{VQ3LSTeM;cer0-XoN zzyKSIfLsaB0Lr`IvITOyluJ^2SY|3{cm&*jgq9HyIp_Sm;(W+HdgQtVR0Dx*MN#Wo zmYP=rT0zXfaKVUKV1gf;zyUut0T6qEADh4ie>MRIV`hO3ery5@0@(yWt>;p3+Xr;s zkphDsLn;Hv5m?4#L9IK6hG;f{53y_l3~_7%3UO=#0SRmZ1#xTw4T5X}261cx8)Df6 z5)|149>}u^I3%zM9Ef2PSP;u5ppd{O;1I_qFd>#r;6eaPcBYyt);YyuaO z*aR4oA^s9bXA>w$VG}4wV-t9g$R^;B#3ryIl}#WZnN2_-i%mcviA|s=iGiV9JBgt@ ziGd+eJBcANiGiU=JBdLcgH2#VHk*Kf0pL=>@s#S4(w2awoHb|TaZY=@}-U&JPml$e4zQv@`D#=yYvWG}aXfGdN5_&zo; zj@iyFpissp(BR4-Fu|2U0D6?}|IC!sypqhc%+w-3I~ z#i@m*sd>qu9zbSZVnIPsenC+tsJWk+5AJ6c<>!E=MT#I>ml(i%lZr|UN>Wo8GV{tn zYmgNZi_%L$s~JFP9VS+snhI*(Fl6S#vlByRu|lFk3hZne1_tOkao{6&Kzj31OUm<$ zvK3N51A?IbGL&Bg+Hj4;FU>1TO-#-JHCGt&@)aOU8Wf5P5|dLw{N#+xoD|qdJlNcP z&`~SdAUSYV4j+C5nVAnet`0FO3DpC29;n|AGOZ*(85|U#rV>~TY$0f1B_$O!P6QDv zDN0SuRVae)bS?(jSzMZ&p#V_>>W4yW9f;jXauEF>wV;t!kV>SWf|~RyJr6z-74rEt}LTX-qX?g~9fCKEF5{2T@0#Ne_luQ`% z3qVIAWaj57B!iZg<$wecVwriMP)P@kpE58YsRg;DAhjqrvjk)lLOnT?ZGAD%-qJJU-1Grzw&B(wY#sKOw zGk^}uX9$4W3pzjg(z{UX4Uk#-d85kHqdagie(9x_Q z^Pe$8{Kdflx^;ztL6m`kfg5U<5Gd_4K-`}Qb>CxV25|3+52_w?Ha^Hba!_?wSs?l) zp?uK13&@`=3=9ks3=9miP;ro3LE^IN5c?g}8NmHFM|B49`EvH^p!5G27);d}7(kP# zlIjc$oS=5CIs-!%0|SGvI;j82z~H9NzyO*AHCJa~0HtF&bp{5I+XB@Y81fhx7);b5 zVJM=`zyNZCnmQz0Jk%K&3K)c<5)a8_qv z0QDx_)j@q%1_mp21_n^rda6UtCpA-tT#{m|&cM*bz`$Uw&cM*lz`$Us&cM*Yz`)?6 z&cM*cz`$Uv&cM*a0P))bFD?O4fAoMCmjI}qx!}bm0CLj{FD?Plg${qbxCB7)CgRN{ z0P>TLHvA%0HrS*CoTa{zVmV75&(s9j1!jt=v%0Z>|vapn>LrP~T;E&)(J?r`Q309|l1!aOQ4Z~f#HrbmjGxS;f*tw0Jvl9!UaC4R>Fl#02Jp2E?fejxb<-15@=;$ zU`TM`5&)&~92YKuHU?P@0(F!X*I8FDqQQ1XLIp7!J5_34rq40~am~ZB10HwV%u3Q4p+EpPfF*h@(5k3f24Qf6Ehz+jSVN;0t zMPM;lBO|FOKRY!~p&+v$l_5Dl4^&TsD&EAT{31{_iXsMe8cGF>q^Bq~t+W_aS)zy) zL)rz&Mft_Wu+|8u-T;rG6qjV?fg5-VQ1>bnr52WE7J*Cwjj@2*H=q^?tX-o3uE5~! z6L2u6<`$GxLi^mHrWtgs7~1>;`#rTHv$&*~0nA2JLts8=b^|F$8PcGq`GSo`iouNh z;t~bq1|S0i!<@Z{cJq;|+yW1T8R6~V144`f3xpU241^g41cVs{CV=FG83hgqGYV`F zW)xU)ms{Y195Y<~1z~0Z2N7n052DNh3&fcP6eO4h7DzA)C`d93ERbXtZ~>{;LZ}Dz z7Zenj1rEqF3na)h3oytt3w+qlEpVa^(H1W_&nWP~mko@w>)8ZAxV4^5Ah@1Q0JPjh zA5{PE;TG87jcCsc_%H|*_%H|<_%I0U*vTz0!4J}p(AbS&Gwg=wQ3zlVFbH4}K-O~t zNu9`UZUKQ127w)yxdjyFFbaHdWB_A<>5Kv(4C;?DOlK6hFpW{*z*I(o4O18e9)S93 z*$e^`vLSu7f@}r>j~(0sryJM=_BXK!Xf(44Y;I-~2yA5o_vh+5*#z#lv%&S>Xk`AVw5TXGuLNp9evw~kZW4IT4C1a}Xu}e;7dRX=e*sgUn4F!Mp6Zzb5(~*p z&IYf41&!!JkF7?UwQ#D0tX^>iRc#ExkYlZ}$b;uXAhZ3TfQIZ~NOdd*O$UGk7{GB0 z8F+?oSPM%m$^;cY4B?PN>mW0Ma8U-ZxMNNZrUnKEhTxpk)B+3{XVB6cB)fux!hQ0S zLG2F5WN;Y?6>zOc&M5`0a%Bi9s>CJ509`DAp$EI&!9k$GK1kRjrHT9^ko63~rAfJ& zNJ$TLG&(4)pr;Fva?l2k#G+KlPCC~LP&|P)9D)`Hr{%j=F!(t8CKkYD85kn=a|;-F zGr-Hm2ks042izG17(5sR96T5V7I-iSGEF>f-C@3Hxz|YUm&j$g#U;tVL4C==u zLfT6biIDb^LL#Jnr;!M0&siiw+E)&VkoKxaBBUJ|kO*m~MkGSoZwZNz_Dx12q&-!T z2x%8pBtqJ?4T)R=p#DooBBWh9AraCJoskG>w=PJ8wBJ@FLfUH^5+Uu#9f^>3=7B^= zJLp6rq#b%8kxM{|fq~&hBBUMrAQ93oe31xgkA6smw7-5NLfTCXNsx9lM-rsHEsz9h zhe;%H2`Do#FeoHJ+G!d|Tmq_~uug)si!G8M?NNs$NITji3DO=8Na7OE2DQ(UxCC@S z?Z6~1aJ*+EaS4Fxw1Olq0W$^$hKeLE0Z{+1A&E=Cf`NgdBZ*7El7WF?LK2sN9RmZy zj3h1r(1G_0lDGswSBkDk;u3HKwY!tJ1VCrbRFWG;a)1_lO> zWG(?vz7k005{Lrz*ODRq5`|<)dvwn{ZUIIX1_q5}E&(PM1_qO4E&*m11_p;@E&&!6 z1_qyGE&)~+28M`aE&(~ryAjZPLAd$i)Ai=`GppwERAj!hOV35Kk zAjQJKV3WcnAkD(S;E}>5Aj87I5R$?rAj`tQkdVS9AjiVMkdwkCAkV_UP?5qVpuobw z(2~L>pvc0&Fd>CYK#7HcVNME{fHDgM!-^Cx0TmVohAk;v0;((w3mw*WiXndVZz?6l7At04Yz>I}~Atseez?_AFAtRMbz=8!dUcx0{ z$-=syb;Ksthz>>x#;LgIpAdto-;K{@g4;0^NTmt@}_)g;z2mr-*8kay2D8AFU1j0b^oyH{) z4vOzIE`cbJ`_i}sQbFOD#wCyqisv*gfgF&#(zpZ~LGDW95@6(DV0e(mCBVYL!0;xG zOMsn&f#F9QmjEXR0|QGsmjD+B1A{<1mjDk31A|ODmjI~as*%nmAk4wQV3N)yAi}}G z;E>KGAjZMK;FHcJAjQGJ5RuL$Aj`qPP>{|gpu@qyP?OFjV9mk6FeRN!z>b4~VL>{V zfHMaJ!*1Xy?&7#^f^39$1pFuY0U65!-vVE6%Y2M+@S zO9qz!4-W%_Kn9n96b}P~Oa_;LH4g)WNd}idHV*@XLk5=sqW}X#Kn9lpivR;dOa_+# zy8r`2Mh2GvrvL*(Nd}hymjDAp1IQc!28JGxIRXp}GeG7DFfc3u=@(&O*aFfo!oY9< zq+f)A;S5N>2m`|nkbV&ch9@BXA`A>4K>9@(82*6ti!d;VWO4~GN-!{}WO4~`N-!`O zWO4~`NiZFfeq0)XOk1OaZBr zVPII0$t7Sd!@#fuq)vf>;RHyX0t3SpkU9khh6f;d1qOyUAbAxAhCd*A6$S>5EG_{q z6$S>8EG_|S6$S={EG_{?4F(2-EG_{~4F(1qkh}&1g9k`lhk+pkB(B52kN^_bVPMDs zi5oC5RDi?{7#LbW;sy*16F}l73=DHX;wB6XD?s8V3=CU9;uZ`H2S9ua28J^rz6}Gz z4G`akf#C^=@4&$D0mOG;VE6-~T^JZRvbhAfJQx^6K(r47g93;SU|`V6<`Q73VPLSx z<`R&qVPNpc<`Mvvg`mTXL1j3oj1S0$jNJ$%f?||`Atswk;06N&Lq;~2z%5WeCYwuO zBWMgDn@eB;0|P@(HkUv@sEp6%5;)Jmz_28nOW-P~Y|rKrxCH9EXLAXxWME)8k?I~fa-S8m|;W?q%KLxfsBC^b!;-EZu^o08S4PGAwXkbEV+<64AhnYjZq2YatSO3 zjqT)e37iFu-{o=%tO5BimrLLz0|SFYE|0vb=v zkCN-C4XKmrLL>DEy#pm^Hav0v8z=7);@Wys?aSOOX&&EpbS3#v== zxCHJqFfgd(aS2QYwITAj1Rj9Kbn>_ac7wtzk4xYjXum@qm%u}i{drshw;321a`LzY z?t$70d0YZF85kH^^0)+!f%HS$CKK`?bu_4L0UC>&lLr~|1GPm!V|Od^AY+A~wijqD zZA%`P0B9W}sI39&V;{(ajKzW4WS}vqGkIJBQ$THpJT8Hyp!u{sE`fCn3=ALgxCB6} z_x|K@32Xzk74o?R_JHVQNLxiDA2QYiYI}g%Gz$5UHUp@Q2O2}u$%nK(Ky4dP8^|Ib zGWG{*qk+b-T=KaD)`QmF=0n;Zpf(|B>?|f9(pHH`f{sDvL&iEmZ8XrBS4lpX0B8*< zsO<Z2 z`H@8dWDF71cC!YJ%@#n$_&{w$&;r(g0xp5Mpf%|Qkg?N@0?3$ZNdcEYC}>O*+Lmr8 z;1ZYyDt`*N1VHOJW)yGcUW`N440>~KXhXO8v`Jhf$A(y}kka^Iyx66zz&c<3%LYNGcYh5DC8124$8OCzQTn$H2far3fAb%G@#>_!|70{SELosA*o2M8uwl7f(>GNq6a|t{GmHWk90uw;#u9!<; zAt;{~a|vt$rMF@(0npr6MlqxhQc?^V8&6~?0>wUfr5%Wo%mB)z3=CBa84S7%&I}$5 zpxnd2kPM!60nPnD6#sM@Z1Rknk0NrB)5(llW2GJSd*&+sp3b@NCtP*Gr3p5h~ zniqn&7qs>nq(6fJH1h#k!w4A;NQJs97iw-I1E>@M&4oeqr9s^fTB8Zl4_a3VqO+mu zv!Uh{gICLd=C&Z_mO$N80F9?~s68c6K4=X$#2iR`Zwhc5_2bysLxhEfN zBk0aCP{^c!?L(N4gB&V7owR zNteM7Y)&3S5(9`0>Q{r(lrBR6SR9nDKz;<-3rbtM3_%PaHK6nbVuS1jr7@5jKx#ng z3=}>fKZ4SlE`uZ39MI}nkT}S{CEz?1!T@S#f%XsRGK7HL14?@!dqH|Z=?~<7(D(o- z4T8c166UE4AoqaETu@pBnF$IXP*lfY_jLNCSt1C)h4f z`qX6zV*rgOfYK<)ouKwXB107eh#dvimB>&6O&6ea3o;)RwxG1D%is%+N07WOLlihY zRDk^jVOKGfGQh+^X&lDR2D`zX0pw0lS_j1`C_F*w9pqn-dvd{U_GJLM8MH407B8T@ z0J0b4cTj!+#Um(Pf${{14N8Zgd;wyE%r6D|C6oc(FQB{vi@PLndh-N_11Rsn+yKfy zFg7R;A=sesho}dwB!`LTGUPBI*q}TDQ3F~rj}Ql?ZC|im$qbbYpfnHagQSD?Lh=qM zeP+W=0+myh3?S2j89=@Um9wBb0zshwie1ngIK-Du;8Y1J7mMNHp39I4PSc<;0+r_= zcYxYZko@Tkb_XOMg35DH84YruI|Il~sSF@KG>JtXfrf#VF4uOR9n`3E8ny7>_n zPmnwl0F6J0>jTiz6C^)C@-}jsb7lbf7g7d6;yxH`FC^}rz;1^47!t3@>I)elGOi4u z(KT3E$NIXFN><$LI17f!i)ILynL+pUq?GAPm%x+Nm04ZCXpzg?J$O6YGD96C;aA5$& zFT@UCa4LY=0Vx+icKCtSKxv-ag-GrJmCP_TpjHly4XV*# z>`JJcL3JXelmeC8MbI`NLpqAo)cxTOYZBY{W;21s3#39eBgc`gZD z8zSq4w4*>F3~5{IG9-h;2V}1MkakoGxP1o6>!3UfsvAIcQ!+SgA>tqsCY}Rc z_XQHsWyk@y4k2wiUGOeRP}>mF4oe5O3?byD~8D=JE#}JGSNkb4dRp7V>g^n)xW>SzEP`XS4rw@pD zGB|c%Y)~%&#s;NK2pe>BBTO%7&nJQn>ZL%`q=Q@35OxMQ&LHeu2G9gAgbljw7^WB0 zdO)y2>%kyu3ZUT$a%TZJO+ds!H6ToVDUx^@G~7V#wp1t^)RqG2g7hzR!8hfC*r56y z)Jg`i^BHs*KrJc|83B+DVdkB(t zA?@!>a5zKSZ7^|&y`UZiq}~FNkiMNRw1)?2Yl3!if%0A! zuWWF618F0JNKikni~*ECK)pjq`w5a>A#Gj|30kKJYU@Evg47Bi5+n}tKTI4H-=G{1 z5(lw!!Ep>}+k!|?TMg9b0PXV!u|Z}+;tbNR0+AqbP1CfY!A|$6E_>k0(;1_^HlmWcg6?ES-DE~nEIv^5MzJqFRh#w*C zA4vLxup#b*ut6k9Jt)*cy&@1Bu^l203LON$kO5RifLfA}wgaTB1(l<)@*7zkxeSJg7c&$vfJ$HF_9!TRA>yd& zL1_kJGbmTP_V82*bhFxU$-FtBW36S%VjvVR4% z4+gaM5xz^Bfq@~pIQIe60I>a_HL41%lR-;s!TgdEE`g2`E`cK@TmlTGpmFaMhBD}m zYS7)mAVr}4_MlQ7(%&fu-!lwKg`oS`LA5(5m4QkL&>iuha>|fFmjQx7Z5GgeT2Sc? z$_bcyL1{3L0Tg#Iokk4044~0xPKtws0z=~#Wfs}GC zft+$Kfs%4Afr@f2ftqqIfrfG}ftGSEfsS%6fu3?MfeGbY0&~i_1g_X|2`nh*5?E5s zC7=_;C9tBLOJGeom%xT{E`crOTmn1FxdirxCAsRxC9I;xCCq}xCBBfxC9a^xCBZnxCEwDa0zUw;1ak}!6ope zf=fW8l1sp%l1m_@l1reXl1pGlC6~Z~N-lvrm0SXED!BwcRB{RYsN@phsNxdPsp1ka zsp1lFsNxa`sNxdHsp1mosp1mYQpF{3r;1B}rJ75?pqfj-rr*D^iKgT`(}ubPfkfq&S8j;FGws- zP6QQ+4Ds>BB`MH7SMl*B8JQr790rE?__W005{N{6d|7I8Nq!N82a-$9fpOyFQxlUi zL1G0ZMP?=p@$p5V;}J8HOF&|!d5Jlh>3OLs3@}lULlp8L`wT$`4y2Z(GJxhq?CcmA zY-|`9Ky#Y5whRo4whZ92;voBIz(*@H=-M$bXlpYt=;|^sfaX|0^J2PoS`46hDA3#t zXx_obmH~WHj-4$7186>1Lld&DA2bFJT1&2`#=uZh!@!_r%fO&*%fO&(%fO&-%fO%t z(r0JOU}Iy;pk~X!P-Dx$5NFH4kWiLZ0$Okf8e2~&OG09ULPMP)0ko?mKMf?!kN`R& zDF<{6SxIKHLV9UpQ3^yHa+4y2T?UE|g%nUAm4X6Q9b^YMcpI@049t;UVAt9iiJT&g$v5m^dZXhTfgU&OA1bixp$&iqr zo0kbWW-ButO~)}Pgj5!!D!>k1f#e$n z(58O{=bXgiVk8;RUTzHrWI6B&_Ua4_P^BK3sYQuJ$r+%-k08gbL5yQi04-t#9V)E= zIdfM5w1Tw+BFPBd{{^aRK^Rouf@shh4$!#M1$slK<0x+uR(T$Dj$$IXde?OfI<6kK=Y-bzB$OPAb)_= zgBo%mH-q-=fN0SE9FRO{P8}o<+8+Zl2ec*yv`z*zCko<&<~Bj@0j=Et*$0|~28n~# z!hqZdTB8Ay2dx1C$xE<9_RX<@w%jp-_V6*YF|aWSu(-Oqf{)5IH2}{WF=!}Q1VpfN zFqj({ga@!QFeoT+fWng_AtNCnA%TIRqM)LpqJo2+gPnn$frEpCfq{dag8_s<%_9c3 zhK9C=#s&rk0p_-bwx$LVR#sP6*VfinRt5$GgNA^H4h9Ye4Rwov@CF8UkR<^D9UxmY z8af(4VUduLkdcwW!NFcpUQk|8fMP!EOb!i(Jcd$+9EKe54n(lEa01p|hS8w*El3hZ zgV>;HcQhKxg;Na-Pq;%s;m5!rkgOYbJR6k$K-2uM-j=vsn4>cvl-3v$zwTVUe@V>Y zkDAG#Id2Arl&ybFSdUz4Pn+~p)H(+=rv+-H-<*&-MaL=WI-{%7EO9k;f6#gZ2d1g) z2Rp-5WS0Lrnx1>2_)hNH*F~UAz;N(fiu$7DQxZ$wt5#n;Tk!sVw!Gb|x$&S3!NBk& z@899GSv-5vjN~o#n3-IoRDWD54D&j4_!c_@gFwID3J&K@t7@ba`y9@7eda!Qq(z(_L#Jr{%4Z~v{?+n+E6v@nN(L6N6x zxA>C2^$7+=1~BPw#i-ncj^JjGYd~H z6MN~^r=iCoo}cF_l_v=bZ3iPYhqWvLMRGr{UYw%2`)qXDG(GD@w`+f;t_i+ZK6{bE zhTxz3kF8dn;_dsGg`rXR@b51dl!5{@__u%lBpfa*;&i7r*7Dj+$;clv7LypRiEM7$ zS-!L?@!xi#tVC`Gh9`ouz3GR;6y&E^b(?X{=EyAAyDzm&;q?)<*>hi{i{^2P&ei^8 zR45$ivG3fXr>;Tupw-y|yDO%AXF5~A=dp5}v}4<~;Khma&qELV zdbr7j@%@H61(jmeqKl0`cRX3gD$4GVWL@PSyX2g)<0JpvTzvZMa6)e_HyLj$b*X^_S{Mrs=gf5KD+|+3!q*CZwE5N|uD5LHro)^9@ z>CLK6rT2G#FWUCx{X_9jd((^?I<}bG>Fn4)@!lFqj+8G~{IdR=@@0jki|oAZaLQV% zB4f5u_RXW~zwXIQ0X3nYe2H)Pz5Zh8+Z764vwwt7U(NMz9b@$}9k0x(`{gucjvQZg z>FSNL<7O9mLT^o;F!%VZ6{o#bCCWbVa(1lvULqiG^+(X->Ds>JNP*|4r@zR&u4Y&C zWJ}ws3DHWH#&b&9tGp+^bk{BanK$dX1Gm_bACq_lKE!_#%sH&;)cy11+=<-9>udhA zw(2@>$Sl>?)oBS|Ch%VV0)s=<@ux{UUSxIL5O_M{?1`hHodTiTA}?Io_dCL{X$P~U zs}Hl~Nngn|3`gZ39q_4K*l^PNqVC3*Ka_IgW_4Or-;k_4S5$VaV*bvjm43`qo`8!E z28M+%uf*i!*FKs3{HFEKh51S4fhOI@UPNl&i@0ZVKH|Tdl4wo%ipbLEYQgE{;>p{e zy^iPl`#96`g|X=Z))nnL4Zk__%PZb?j=C}JtMuwclJ*&(`ZwiY?LK{$linNNetme$ zZ()D&ZO$ii-ub8V&KF&IZR^%=eA6t7Cm!;AeP+6L{8W1j{%@NnDu|d@T)gje@!&lr zJJIm_>$~Egel71l^?Y%3kUq1m|8wy9kqiQNzXWl*#y)h~vQE!r^Wyx)XYKQ|iUiL=v-aPsD?~Kc2mY~~{#sSkK--6# zk9ncB%|DG@e>%z|oagOW^2E0I&?mQ=8A&Dm{ECvd*KJ#@w@D;mRqtxcS579=rmwtz zpYh-2&zBmQDi?s(4KmK26Yz2Eo#Q%dZ7s}wj}>1?&wa(VVs_wrWeZ;Fi`1t1d@|kVlRP%Ov(2>N$Nvm$$YQOi&ct>K!hben! zoe|Eudazd)oL~fmUzk-Lo2M!Eh0EUa^Z8{<%NHx}ThbK0=!|}mfN8zU+&O!13MQvW_~ zwOhA(=i&T!95VYr#X19n!>U6LjW^4G=-6I=SU5xf`Bl#3z@od7E7rS3Xfj_bc;OQ z|4;bOe^&m= z7PTp}uNEXuQ+<4BXDPRcqK>S5LYDB3Mb?)(i)%k7+`oS6nD+flHuLr!DsR~)r@hYe zl+3@~JGr!}B+hJB-ciHt6U>e}X`JY*T&Hpmw1|@-#qr>*j;k|uoNr1!Z&;*f`z_nH z(zD5Vq~m~<}jo@-h9VzX&%Rlh4WndOHPFJ{Rux-a^}k6 z9Zq@4H^a|FZ#8}SPdFzr@QBpyT~oKt_4~Lm;Q7xxh4sno+Vl1A%>^wUWMB~J+#6>T zW?uf-V)1EP|9O`hb>@9vQgZy~;pxw1vMip&ubI>Rnf=$Bj;m`9M%kS^v%a;!UViT7 zT-_Hu61C#_Q!?Wo>hz^}ST39@_<-Le!bW_{ly4sDd&AXg^lo*RE|}0@Exhfv?gWqX zxpgd0RAz!2y9^9WObiUntPBh+oD7UCybO%2LJW*-5)4diatuuDstimVx(v)5rVPxS zb_~p19t@Bst6 z&?g3VVOB;CVF^YKQC&t3F=s|ju}DTv@d8Fpi4I0Ci3N;Yk~q%JdZNxx&{mgZ#Q zmQiKmmIbwyLGvjum>C#Ao9!30F)}zf@iR0`o58^F@GC3Bsac@qrwpLEjXabS0Arx1 z`xP_9FqA^sF$|y)>SP9x9ApF%bY5i%Lp)dXQ*J% z1JCP$T8;4x@ldl+Rah}tF{Cl%Fyw>hO+mJ#GsH6#Fyuo`jt7s7g65=B89-_i8HyR= z89?)Pr3^{n(^eV4uD}!p*$R@Qro9N4f=pM$V>2TIBO|B?VPs%nL}4>R08|vrA)3v= z05TFxfXoHC0kp*rYzW9YMn(otKR1TVyfg++KhF?QUklVN2hBA2Ir=f=CFU^%`#Ji7 z`boukiFqK})6YdSGcN_igc=8;EI{2k&}va#k*VYFd- z*Yo-tq4xV1uw3WJUSnVGw<~}3re^!TqfP(!?muV$-tyN!C%tDN{Xal@Kz#;x(eL}g z9%J|bIxYcZE{y&Uv5x`N^#P6FL-`M&@}OQSNW~ARIEW3x2=~GIH82_^%fRpfw8a9n z`X1^}nE4D1|JflbU?gb#JsEsvW-3D}(ixM^`9-c3nXrw-Ak_*C=um?J2GM1(@jVy> z@WK`bOo*zZkr4r5X@U@qY(f(w0x~fY2Vwe=eWZaA63DW+*c@1VFT@Bk-vBNn!XUyR zzyJ{yU=V?`K&lA&6jfdTls}P#i1RH%l>h^R4Pk+^J18NHXp9-VuslFqs-QwHU}%Ix zMh4;_DE+{269WP=F%Sn~dO;&uBRcvS8XB9LTUy)NJ370%dwTo&Crq3)dCJsj(`U?_ zHG9t7dGi-6T(o$}(q+q6tX#Ev&DwSAH*DOrdCS&q+js2TwR_Lreftj_JaqWT(PPI? zoIG{<%-M72FI>EI`O4L6*Kgdsb^FfUd-oqaeDwIq(`V0LynOZg&D(eHKYaZ3`ODXD z-+%o4_507?fBzX6nV4Bv+1NQaxwv_F`S=9{g@i>!#l$5frKDwK<>VC07gslT4^J;| zA74NJfWV;OkkGL3h{z~N_~Vuz6yaZx4?6J*R0ce-2d!?>XD9%#c}rvfu^7N-(1Y6M zpuK3Iacs~$CTQ-Gm4V>^XdD`(Q;lZ4Wkkb;AzTa#B(&K=Tgq$qvS&gIcX}>A?H?TOy?2+ zoxi3t9dbT}$#ls17dF!&=Tl6W3OP4p##G2T8VjaE&d*pe6>@&YhN+PAId)8i>;XG4 z6>^Tok*Sb#E>28^oWpTuD&$;_D^nroY229#IVa=ERLD6RZ>B=d;rKEYa=yl&sgUzF zSf)Yt?(s~6oRc9k4RTI~#5Bk`88Xu#=VT~MgPfD0F^x+A6e6HBo|B)>kdvPdx@L!= zI1>^_$@#_LxB{h@3DY6_r$Oi4E||_G5OA3Xd?xM=D7$qlyTBPJTe6));0cs%*UcgD z2g?3FfkVKD!I>c*ymtn)%ZGsh!UwIz_F?d00Il7JtoMeAhcHAkKvrGD)PmN+`!TpO zgfM_sT7&vT5Vd{`p$xtZt_(p8p5RsLF!dn}o?vm1FBoWEoDrx_7;G89-E=Ss8Z`%X zSmGJo`v-$d^B8>d^B6)(QyIcjQy4-rN*UaWG8uvsOBjMn^HLHk89?%2I;1qU z7{mxqP053>7(nWaz=EJNxQjAD(jdL1MPL>KgI8i6gIj76gKuIHgJVGvgKuIbgI8%D zgI8$|gJWqrLvU&VgMV@fgI|6bgG*{MNPQ{jVr93~q#`f_bjBlSwv&MYq#v9iy-M>^ zL80qangi;Zg3Ku`E@1$fRgwxlkI6r|Bp-A#lV5%rObBE?obBk#z!2cez~JkvpOT_q z2{tDsB_%~i!PnQ}EHHRPg$0U+8*g(7g_zxl#}xWTzL@Zy*{}=s7Z!g4fxB zZioPtaiDX%K?S5ALq2$?BIwo;(Ar*z`Ji=!Mc{R*5PLvt3PCI7K_)XWfb1v&uNPxr zfY=LJ^9!;ILGT6)^3Ar1chHJ^!Aush9vO45}^AlKsW5vkUno=ns{x6CRDm!9 zg9n2LgB3$ALoS0A1L!UnkUuue;1bv}gG*q?3@(8^Gq?l}%-|9@GJ{Lt#0)NhGc&jZ zuFT*PxHE%G;K>Xwfe$md1pdt65@4ChB_J@9OF(2Mmw?1fE&-XDTmlL+xdc>ZatUb6 zQg40uN?!3A~uaCGcSumjJ_T zE&-9*TmlNSA?kHza|u|?<`Qt3%_R^rn@b>LHkUxfY%YPG*<1n(W^)Ow0I8eJC2(Xm zm%y9ZTmqmogJ5G+urVn=M?VeNxKv(Zo(61e3M391p91+2Bn}&=O4Wv5_5_juW7xP6 zcu490|Nrly<3osX9nb+wkTE8P2GCN+kSNf;3ec`p28K|E5C%5}T?Wu1P#D{g!HmI& z!IdGD!4F(N_%pbG_tb!`gN}bS9C!~J$6{b;g3t{v5c&W+gl0JN4lM655lV+cXa+e5 zecq9HCP?PS_s`x3#I)a zw1WbKZus;HtghiGgl3otrE?+l0Y@k;2B90?yacO1a0o&-%!JSkg%J9H2ZUx&gwO|m zz5uIdxD25Wtbx!B?GU;l5lY)YXa)%={pC4WpTh+xy%tJ$LFfbNP}&tjJE%Zt24*Pz z2t2OH&~Ok!J1m6I4UG_*AqhesaDvbbDiFGX6+$~ae+st0;Ut7+SOcLC^g(EbA_(me z3ZWS+p|mW7c3_0i49}i`%{g!iO0S2|4pSjCLp6jxkN}|>+#z&>E`(+ffzrPpgUxYx z1fd&FLTHDL5Sn2ogm!3z&<&Xonjr{ETSI9TD9sC@8@@e)nEL=iGn|6bTOhQzwBE{4)c5V|1{ zLNho*=mrA_?Vtdm83dp-1B`~02B_qv#4mr_?7x4z>Go$HXf3YV@*Y zXfST*ezn2=skHu->EeF23=AuiKCIkq?-C`d_g>JzmVx1ie@5yy`}OuKdq1^+__4-& zBzM}^|6_jJl%QhE;Besj&SSgnBh*rzUTk-@WoWqbu&8LCeas?b<&}C~whRaOny&X8 zuxDf1B6!r<)Ry6Zu~q+_gZ4fpxvP63U2Pd0)~i=(AGY79l=^q!YIa)&h7zB!vLp5d z{j*i(ANI9nNSKh~ap0(ZhFN^wm7^NA3<(wQm#`nV|M5&V@>QF^EkncMUy(j1?9072 z240SFwq-c5CM&e>q`knqu!|isCbkR@w3!XgpR!M#xc{E9xt=XU!a89i-ZS=ZA9Zis zBkFC-kZ|qVPtUXVnz{=Qg>MDdUrm16FfdHn7g2cG{@$0zP8Y?zY#BDh zyR@)fvCsYU+k4?`H(Q1a5(}@)x?;cd3{$cBSx|ThK8n`8YVU2=!JpD>Wy{del>T`C zRr{#gSGF;wp0*4P#Z&46uh}0-w^GvR^0Q?Sct1(~(KUO^33Yrb{)V;;3>WKf6kfN# zop;%AeV3{&LxE;?H^UA4vYV%RcCd=sG9)aGudf74vRPfbZxNWa+o>%5jmzphuK;Eu|$UFA`8c$E#yT#d- z!C+#y*uy*ak0fJR7q8W~We`wSn3;apo~87~w1Bq~whRaU^FDfW*M3#kTb-Oo&bAC6 zOxM0Hyl4M#YTpA+F-BVk2bas6zumL{B_gI9z1hK*p`c`*N!5LOg^4#C3-Unev1eY+ z-~0A+Gu!lB(|_48e5kBjY5&0fUAO;pp*VG0291#3l7mYGATZV>>Y8;FY?ISL+cb#19XUp)y>+TtchxP|A)k)quC2z~%QDU3i@X+3| z>H)iWsFE$ijJ`al{SWO!<5_e5XPMhFEZ7|T{_jKk!W)dO_ncg883YtgWY|2iuUe`( zv4lt6mZ2ePfpXO&`(+}V3|?*Uv1M>Dm6_XrYk%+zfB&y6ZhILvJYL5pdTW0}&!*dx z|GVsEFj(64WY*37U;o-NT+id%%b;*S+*0x8{(5`q16dMwdl?K^x|CMl*x!7k_q@U$ z&%F!>0{7<`+}J;j)gw>sgzH|03H7X2JFf3{HFuf+{fp^dh6R7jmpNYF&nxj^{ufn; zy$lYkp3gjeZNC=7@~ctWj(Zs{1i$zia&7h5p?wDcXA(8th)oxO`^6<%vm8&VFUx%kUstHs;Ui{T5rD_$IWd?`3$<{Ck1g z>HXU?_S(y^V0YA8|5N+rk0mwaO?TbP(BSgOwf5wGrn8~x$ubUm85VeOu3dRz ze`wUFlwF-Zdl?v%mMC03zTb8!#|4)x#k~v+^#`}H9N+)$T3Bv_mE&Fphi!8bjF0V? zIanvI`q6kV14H)zwaG{KA6A;eZqDJmmqFow)6%I&_J5gIAUt`m-Cl+TnyTB59o`?a ze_GRqOHO+k9$d<*_<3l*vYE%BjzH_Z3<)JnpLGxIw~Y-r^w`5-FGGWMNKfLy{THRT zExxwHbuR;h+M=h^4($JysH;5Vp7&mchOij!Is5mAB`w|FY~s6@!QtJcDIELux7A<$ z(;4cpmw_ST>8^@B`==jlXO=ZJ-OJ$c?N|4kUHe`5UadYY3<}>&&rNYV_q$)8x#^d> z`Cf*G1&))iY~LTc>ieD_@BH>MFic)$jt^E}~AwZ3~98t(j9VYOkuM#%b?iiVf@F9Soy^?muP_N!d4xt%5hiqEEle=C;nHws?=smt7CF9SoU zl3x9i{bzHJPIhzB+RM;jw$!s};ePMn`|-TeE_)dm6yBLi&)x6)X^ZZ5c~E+)GOTr) zzJKxtX77&-?t2*+1b8ncPuy?+*gtLO3%9)t3?F>tb=vnAKjn`w@zmbSz)+EUgtL6V z%FDB1yOKfSi(30bc#!#LhyRd%fWtp1{TE9AfzrRB^e-s=6H5Pp(%+%GS+4p5o_ zN*~~Z%0p=fD9r$+5AZ_ep|k^(W`NQMc%br7+5t*4K=?m50&}P?`ZsA7F#ZLum&n%>bnjutMdb zv;&l8fYJw8pz=`K0ZKDK=>yDAc_{4wr5T{~0Vb$Cly-p93{d(2BUBzrJ3wg$D187n z4gjScpfm%VhLi@VWJ8T+fTDe9qQN&#PS7qlh6mclCib#lj2`p^a@sO597veI&)(kL znkRhENiWb2w8iF2UG3Y}t0yw3I)mg-`(}IFU(=emM?MMEzc3IxIU~Sci({?Mn<{%- z1_pr?rkY^;ecmfW)bD$PhKw%;#fRCy5lNcf`N7SWfuSI7ms6yD*Og!YzPN&Rx*g!P zREx2%|8l?mw4WtN{=qrUc>DWnU6YJr9YOtz*L%Mu*vklQznZ4(Y0JRy;Me?&Bzu3O z3F00J#>a-uOZCQE z*)lLVu*@;Yu#eu;Y?PVmZ_B{2;qUfEnfCW&42u@9g50~H@4iU3eM`gQmUD|iyYmig z7i!P3-}B_>nT}`+TLy*;m4QEV?d>+o)r4Ds+}Ck+c6Pq~Av>YMyPH7$qbpB;F@X#kXm7HAjGY9dy>2@14G1?gL0MjN13)Bv0xCjWnd7ovA9ubuPCljZF|G$1j85ph!@cnPHS9asO(asA>FJV%D zqnqvPA5OpGEd0%efx$}P{f=h)?4M!pzkCO|XWOU8qAm8nK8gRh8VL%&9|vz2wb+Xk z?tgBg4(dPX)m=N^V!!aUob7~Qb6W<64)rTKt@h@-eyoUCplr*)V6yK@XRE#QsXN(k z4uRy8oNhd8wLkJ{jjL<{C_J3D+;eWTS6^*ZA(;)@xymH+VnLhznH}Mwv!y`k2fe*; zX5y)}W&6FiAB$eF(0nfg!yNbXfo1zsRl0M2NrT!O5Be^BE!}^ia^98xKOTD-7<$sL z%q-ns)3f9FVpY$*3=C5)Ua>9Rzi*R0Gn<LV|uLtIhi0T5EG*uiUibaDd8@`= z28J8vJ4K84_e?WmU0e!k-)PKQzq4q6X_=nfLsy->3=Ac`OJa-mKlAB6T-NBnmw{oA z;0(s1{fke`y3So7wU>e6g<99r!u`$+txBf9LH_x2rpmK$fBy5!cb{{B)L&uFdRwrc zWd;B56`w%-n$zJE3-+_{o>+H4AJl$)pzLB=u;2gx>ht=>ApQr*xJ~){MVfd#_pJl9 zrxSP$f936G5n1H2(HZ1E4kbpXy#1Y}l3a0$ApV8$bDg>S@BZAUt9#a9F9XAjbu%vJ z>~Hbg^7>N&sJ$1UmLQq4f715`!9z2>Krp%ej5b$GB8+FJX?{qe^WFc z3$Ly%h#$1{L+1X*m6vf0bP zaN&Bul!W~s&srZ_$_LV4@c7*J`28!(_+HsG=z`=!zq!Tjzxrj%v~Ej~{TtXMuEp%% z+s(T8%py>HJosvy8oj^c?(XH;cJ`q5w6fQi$o(Q}9ISVALGBCai)xP8pZo8INvkKQ zKjC1WDipq7=9K^61&j3eGB9kA%~}|`fA$v7nK^$!=1p+SGzi(>7+%P|subj&1&fmQ z2kn0@R+Ia}3KX6P9K!qp_uJRFAKI4!iq8b|j$QuyEw-F9x$zkk9}Q^{H+=Rls_MDn zWDbho1$?sKJoguvD5-Y;1f~B3{cFPR`!8F4QC6!(c5bD!%`pR<}{?WpU7vv#8ZS1A~LR=y%Y#gCm4yaDdPab`aXZ7D6AehR_aH5c+@xgl;g0&H=s{=)T?ly4=6%t2L%XyKn_AT$Up&OVXGy@ZaZeW1W4F5$S@$nZzJN$vr2Yx|lho2Cd;Rl3n_y(aFzC!4R z&k)+-6NEnS0YW>xhtLP!LTHCK5SrmNgl>2Vp&4F4=!Rzy+TkgLKJXYqJ3NBW2OdD^ zhWikj;U0u;xC5aXZbRsXn-JRJ282Fv4MICyh0q5sL+FM}5Srm4gl;$wp&8CW=mTdU zw8Lo#ec&X7b~pi{4;+Kg4M!m~!x0GGa0o&(9E8vZ_CsigeGvM<9tiEQ8$vVeg3t{+ zAT+~v2;Hz1LNjcE&<8d_Xormu`oMY!?XV6)GpvQs4XYtE!zu{fumVCmEQinsmO^NU zB@p_+A_(oU5JEF7fY1%|AT+~V2;DFnLOaZY&{DyfD`oLTW%>bnx=0NxdWJM=>M4LuP0KsSVDfYJ_K5Pm}^gl2%!4jmAFLpy{%&<3FyptM6Pgx}Bt zp${}eXa*?V&;;QhXoS!VP}-pZ!f&XD&bnxiXr@lA_#q;5JEFRX@>#`|3E&3W`NQT zc@Ta>E`&ai1ECq9v_m$8-;f2N8KAU7CWPOR0ih41Ludvl?T`lHH>5)711S)i0ZKO{ zL-+@hAT$G%c1VQq8xkP&fp`eb0Hqz`ApC|{2+aVc9bzE-hG+Jl5DK9gptM5>gx?Shp$`N>Xa*?l5D4KP2!PNGP};#C!f)_{&VNch0gQiufnkST;OkxN1XBZfm8Lr#SJRaxiBL(WOFl=C9xNEogtVU*w z8mRxnkip#W&@TPi-T49PVEqLw3{UKCJ=4;>_#50GzQM}y+>ZIL+9sKwp#CaD1v|ql zJ3Z?ob9<(P`hN@_oD6U60xMtcE?o!e?=yVhYItwQIwyJI&PGuGoS}!!;iFwp%iV=b ztU&!Ah8^q&KG|{p<`&#n4eF0FFmO72v1=39HtY0nP=ARbf$P9myQB%ehuxLG4=vB#0QFB9&hRn(vUA#_;J0HISiVP~;kVtPtT}4U zf5G;N2p#xi_kgA0tlnZ!|CND3#NnSEYeLTCqAlR?;}ARW-%hdb{fnGpLs0);gl7SR z{pvFo2hWSMf%yM;92o7p1Qf0b=7RmN#>c>9-@7BUq$yAZBp<=U+uhWj@%h={1(YFaM|DfTHJW~HK@PIpe28R%YKrSdr0Pb zFn^Ik0=Ipq_x!8fE5Pwxq@=)O|IDReQ$nFI$o)Pl4|weVe5yP7?K(KTOw<dq`va_B%cMcVJ}F=#i{p=GkbjSwK9I0)#&oie3()NF)S3jHol?Noh-9fIvdjp8ee0$;rl_>-k{{dbjCa2^ncDjK+c})k^0_~vS9a@1}>1ZU-HjH z)nOgD{3;7(khj-b%T-wZ3!J{|LKEcey%mHXZrKaYf8F5+{-xg3?37c^v@- z`XS*ne1V`ZM=5IDRkb&rqnB;m@NZC1CL37qW$N1 zAAKU$<^r)-|$_rQd#-24Ff~NB1;P;`!Dhp7b-V`#`_vBTV*KOCpin>ntK3bKEoC32}<^* zj8A1B2Z7`nxNQ$8*&B6TyHj2ZDi0c5>^>;jGo5kJ_-zJ~Z)mhvP`3Y~K4<#F6=3^% z96XfmO^n4__Va@H4d)yyl_%+ zZ(DHwE^=j1v1eO5_f$~>D19^>a5GS`H?}o=*Bk{dpM^XURO~Zqx;c*6g5xXQbApQf z!&i4!`h5n42g81^11k2dCaDX!4}tUh1Me3q_WvJOx7aKLjbAs|`bwzUmqsoPC_e?N z9~NVVF_VSv#*Qvu94>jt$%4K4mD7-4?nVd?@JA^e^-P>sM&uGI`pQ~6YO5O zhz>RTaM=U=oWkJrJ3VrTnmuz%`U!O*koy>fqhF}m^NP59Qi=noe}PN<;``stGSXaf zN(D4taPHE5vHj+El3H_jg2w9@d@t`8+rMM~+}RI>LF01_oLBnA_8*mD3|?{&G~dZ^ z_)5Ik{ym&_N2IQS)z@6r7u&yU1<%iODWLHi29s<5Mfay4+9-To5;We#@ao!m(fvjn zWD9T2F$CE+@A`bv{e_8A#{*V^#!namZ{&;a-^p<9ovJlxeE76I9(c_&_EfA8*f+>yV3>|tPFxOhijWdG;MeT#MEtw8b>cmE6Tzo>V$Iqnc> zJc>c~-g)8upBopv-*y!=-o(&#Z@ut-_Whr(%)J2`uVK)=UoX6Wi?CI!tv_fyhT+_O zf8qVg)ienTY=TLUD?mS{}dnRTh`^E@lb}ItMUB%`|kPhp7jKW?}Tgr`S#oHb!ava z1E;?U*XQ%?U#8Ng_t*V5$h|!`?D_WBwiySV>Nf_N-*)pp?|#J^Jrj}hKSAd+?uYKmW=H zW{gw7=~wIFey;ty+tzC6Y=yu$Nt057u_%T1CAfHXZ0NWTaSC~ zm|g+)--l=N9Q&_dT60WlxeUmE+n(=d-(T@SRzHIWG~Ul(@uHr6zt7y`Ww8>V@oI)& zFXY+x&kUP!muELv|BjdY+4eJTc49kF26lhZt9Z8k&yyE^eYO#7pVsUDtox^#s&Pmh z1n0j8ujjMwFT5!9^ZrG!{z-4_S@&B>O$=JM6kMJ-yuHt||4!e06@FIGcs9eExAiRh z`Mf9HWxA*ia$n3ldzSr;7gkkIO#=I$>HU4?{R=*+xUMY&r=Ml->zVg^zAU$x7z9@D z_CcO`zx$8)tW7$aApMU%>}T4)PCM(3(=BlL*L;j;+RvSk&HAJfoW6xV{b$^-s$R65 z#|iA-WuN9V?&sVSGG(U}*#B&w;~Do03LX2!8*m%0CpGRS;|FY_7p zTX)@yyRjXdzgB#)XV`D1k>K@n3OK#SyxRYN-!>1Yy>gVn>hIPgWVVMw*K$FyEb7i4}OEg!{y!nKl^;oZ_2g`1?TT4@9h8V6A_)K zqrRC5WZsGQ^}qM+$e4QlY$!PWtoX41*S^r1i;kU`0nQ&SAOHW{S2CfU+2IA){)kWZ zKle#|o;r2Gd2sqv`CR{FU)zJu)-FIyR$DeQUM%Z65s0I?YnaL z;^|r2!Tu5W{{PLsrq*FW8NW`5z33$NtC;s5*p<9%z(UOJ_v zg7bsHpZ|~csY-5|Yjhm!zY~AzAMQK1RNQs-JaGNC;Mf2A`>rP}wdK1Ht}hn+{(ooR z>ED8`wl!QJ^BVsAzqzmUzOZjc13QTC@b~|_3P9|F`dp&$z&=$_jQ*!~g%w_wn%c1qW{hmoKn>KbRKVu{r5V{So_j;VILW z9j>%X-qNk*9Xytw@ufMNMYaa+d7!&;-7Ke%_Vdg>&f2d( zc~4;9(i1bHKH77xez!Brp~pvJVwnyZ(hxo6Urqw=UH0_+-CW%HrA`F2_CG%uklJ zUixHz#qoBCJJST4Fnzm~>)(8`Z&tqQ%73cRMs&L&*FUz;_D`A&FJ*mcvoXBk^QS=Z zvwaPVMBno{T{i#4QZ{kee70X2Y1X2sKH28u{7Lag!#>+x0(_Qk$p zl7UR-=eRx7R|MSrYWT%|MrHityT=>%=yoP1aQJ<(Ki}}4rE0c^O*n(>TgR*~_GMiu z7rm#RM)3Z|(nL|H$dh z`svQKHoSNL&fIk8i@kA0)}GsMX4ov(nOnB$=NJ3O;gOd(H&5B)ly-j6EwQim?PW&t!V!9ulBLe8Vr6en{C5+r)=j#)^GOi_rhj7J(|3yHPmWDoys@+X|r8XWtdsLM|n=F#P*&EA5wsUTqy{CAk&y~=|Z}us6-(A*OB-os_ zu1}k{;G2DD$|hlxyR-M~zr|fDbl{sk5BLA{u+E}A`ckPjo9=(JU)5ogVYM%NPs^0R zpSAzL*?;3}Q{}hm*i#b!=0&Oecl()D9c}J;jeANOmwL>y|88%6H8tnviV1s8raOhb zj{k0dIoB{eQf0y(``CN_nGN6Vb;OvscBIX)X=i+0EVA&sz5Yy=cjcljdyEbmFupzb z-Ttbt*hL?q`8G*@=gmGp`fguWDY}a(w!lV6$}U8m<%hl2^xUMjnn`9|9#eRam%%iJ#Qzu%)XiN!+zJdE3{mU0X%u(0V2@e3=*)E=f7s_t zf4oTeOsmbY{}Z{RMSj{Vt48QmUYon;>Cv+r%*}t=@2=b0csxFR4}Z{!(=Jgz?JYkn zomS&rwkN>v-u$N8pY|78rE8)k=I+_WeyZT(f}i$A&(2NUTRd^kgb$0GCLZ}|zwcAw z2Dh3T8)fCklF2WA+UNN^t2m`nVUzkawmOaHm%Y(dnOM)r$$N}-z23|=_+`J^>`rZr z!8Ds#Rl7~hp}*`OI`-bq)1SL1VzYtpyvkqp$C8hpsyjW~X8+&H(Cm4?><#~Z=R5gp zf=$)u%loqr|FXZ3^Zb;_r2ai?FGtOs|KgW@VMl?tqG~~k0{;a z#kSC3!_wdOdYU18m;cP$bLpV>1i3T6?OW#QR$Z`dvf-4w9)0N3Z~LM-+4iUY&f7C5 zsP*n_$v^gYJpwvY1sZLtF8q&Q?eNE*>sa#xbJy86-WS95KBoV%Ut{C(-?w9u&DQ5^ zQ*!(N*t^6uc_)5-3o z%l_AXPF1C|`JOp@K6UbPwCn%1FK?Y&SnV-)Py3SJcO)YI+OwHQUuSyTWHY1rq}bzz zzxFTgzwJIKH*rs^(QW2uEC1RXZOzSOP@ZFxu!Zrn;^n{gha^5!gx{KE6F15e z_R-!F{%4m?+@rbhtB9N0Kl^DSRgLP~rtkS?-~C)K;Gcc}nUxKl^O|j%eUASQtompF zu$SkQ($z^ewJSpx(_eUv=P}iXYJqW|Mr}w zY!`%f&)sul!o0?V%m3TUOvl{Sg({ zxdb*`=MwmFol79%2A9B+8<0CC9^Bv(P`Jq@5Ob4DV8%@@ffqNq1RQR03Cy^~CGg-D zmjLMg35HTG0fXD1yC(|3w*!LCxzc4Q2cNnIx-X>wd~QWP1L&Tp90t%0FrdBDB@CGi zxeTe`n{gnwO@MBl0JTX7-B$tH(F{5#4wngp^rta^_8dcO2HjQxv7PW;7od~nK(`)& zZoLBCFaokaAAHwi4g<&xh*^}F1KPt}%#aU0iw@*N%sVxR2_MkyQ27kW44_+-^mAYE5yBo-3roQ1dhpcl$bJLAVzN`1L$U+JO0ztR$AVLsi8ZNhh zZWT&qC}jYJUJ3YSPS9N`pzs9kLQezlu?Ov2&tw3lA<*qA=;o#}RDk`CnxC>6KyCu< zmCs=?W&ou*(7jE`44~VqKzCPxZgv6LTEqal-wa#WVK+CA0oli(d)yMiXDNd2Ujv=L z2#Y^Z%7OTs7;_+T2njim-$5|~@iC@(u^`U;xpsd8N6*mBl5g zxuC=Bb5e_4D;Suda=2)aIeegl4Wa7XQ%hVDOH$qPi*gf7Tq_u0W`p)~gY0lmEeXlY z#gunXEeS17Epma}o&mAnFEKY2WIpH|9gtp_S)RpVi8+}mD2iZmptH?EYJHqNT|)9v zl)&AB5Dm!(sRP*oI^R%^fq?;Z)(`01k#YtGhG`583|kl&7%np~Fnj_X|INt2pwGy_ z;LFIski*Ep0Mi3H^#gRDC+Lnj(7o}Itx@{ zXMjt^bOz8JdwJl~M=;fZ>Xuvv&>eM|;5*Q7MliU>teO9wOTG1Y*=5OhZ)$VH%*L^1e=YtUIHAYK&% zxJW?@eNdSWIlBejJWyDJVm1kU`U!S5nNUBY>jm9m4!SWflL2H3rkfzQ6k>{lS}34U z$zV`m0Nuk4vL9jsrdm+Ag5ni)_c$m;C@@qqC@_Fd^ab6Wm(BpX3lQC1p!?@Q2^Uiw zeDn@R*nmPbk%55$bk8J64=8P6#umCf$i<*@hCy)-2{%;zpmTyN7(jJ3=zc>`jhc>O z2k2&SP#%J~3sn0SF@Qoe4}4D`$XyWsL(E5&2gNqXrJ#0R9=NrV3T|gHFrcd|Wx#X? zsv1;xfZ`kEstg9qTnxJP5|pwbITLiNAgG3hoLB?87qN(;oB?!WE<~OIe3v4s7${`( z8M49t%mGCcRyBDHl~D0w@ZEi&QkT7sJuZ}2g=)!beRY~^$A@bbbBtSrUKn935o}hYe6{%Bga(-ok^!Zcd~odyD(8^(K+0TD3IvT5q%bHjsA1GOpb-dASqO?l zP?&&xm<~P*9(0Qo1GsmFkcZ@aP)QAn&yssw0`@9HAw6WP&VjJs~7jU z1pF8v_p$$gii6JH=kp9CY864piKOfq@|aNxT9o z4pKh{DjveXz;NU~!mbDR5$MRvO(?%fwG+#7#J#`Y>@dAplmM& z28In#HmE;w0?G!t^9z&>a)ZW0h+Xas3=9rXHYltjkk|zexdhx8f*3${O@OjNZrA{2 zgWPrn$_APL;USlR3xg{I$o&G3AZ(C&3n&|;J_gDLsjqkhaRbQxQyy^%crt`AfW$XE z0)>x1_@4PANbDC-wjTon1J7eFfdGaOu-hyigUksA>y3f3L2j;rvO)IFfU^A=7#Q|I z*&w$)fwDn&Q^`DmnB&I4z+eMqgHD@FfwDni)d6LL;(85~?aRQxa0bc-x$O;<4f2=3 zQ;3I(Rjus;LhL#4quCBkaP@kw+omZ1wQvI z07*>(61(OZC~kZhK;hN%j7z|S!5eJ%0%5RQff9gEv67Xh#qyrZu@dPCCisxJcAq*i5pm+s^1)|3 z5+Uctb|ga1jh&DPIq!8wB9{PY++sl@V&UI;t~L*{S8T=G|s@VBMFpm7#I#Dfyy-oh7(DkG{V4e zAqiCWFfiOm;t~LrpAV8i>5hTnMG`2jGcbHe;t~L*uOCUEG|Rxikjy0j%99+)Tmqnb z4h51yX_kROBAH77)H75_<`Mu6XY85BEx^daz@U-LCBVeOz+jThCBV$Wz~GR~CBVYM zzyKNxU}a%oh)CuVU}IrmNJ-`rU}s@qC`jfK;9y~3s7dA$;ACN70G*-8&BDMiC7DZr zhlPP*K{A&BFAD?1nq)2kJ{AUs9m!k*{45L%N0PY&Kndty3C1AnAz)+IPC1Ae2{^Mb zFkDIH5^!N*V0e?tCE&`!!0;oLOTdkVfq^BBOTe9lfk7aROTd$bfk7sXOTY^h-)UR| z-k|tS;}Y-z#djK)fFCHn)3^luLGhi&B@h6L?=&ufAW(d#aS4Qh;yaB?ARH9mXCFS!0;oD zOMsJufq^BROMr`mfk7ahOMr)ifk7snO8`{hXryxq2y-wnn51(Fh;T44IHYq4h;cA5 z_@r|QNO3SQM5J>G$Z{|+6r^(r=x{JF)TDC>SaUEiOiAYwu;XB0Sdh*o;LO3muqK^L zAe)1M;Yd1{03#0r!okE*I{7D0f`$hFjRoV4Hy_& zK;i}r3==@&CJYR7K;kA03@bq5CJYQ)K;jk*3tJZsbOHS$mSA|s$pR8$mS9N zm4%=-Sp~F=56I>cC^Ru}GZZR-0lw@-WYy@3Qn$0D!fPsOb zC!0&4A5_L?a|xVhU|?91%_VRZRJUbw30wlT>9V;5Rx&U!oXF-9*a;dt&*l<10=hvc zn@ivh0|UdGY)BpOBb!U$3{kw0Cd+ZsLltq0XlL(Z7~K0P@NAd za;M}#>Y4>PTmtQ&HaE0QuqFr8hGJj|s0*gR>gd8q`i3|)37jhtV)14eH zfz1pI3@>uH1XhFU*knlE_9cf)pc~ZhfVL@Eav^mXs4W3%TL|QG2`mQnS8}-o&VuUX zTrPn%AphlZ37iDEBbQ5H5(5K+PcE0hE(QjMh+Hm#qYMlTDY;w%pm~deTrPoY3=9l4 zxm*Gl7#J8jav^o&lw2+W(17=XTrL67+ykEb$iTp`BbQ6yF32CbTmsiY z{>bGLI0b6Q=5h&u<~CmBatRz{U|{%?%OwDs=U~X=5&+%Z%ag|?uoe`~d0Ybb85kH; z^0)*hgKloh;}UoPYM1A63G8NIVDQM}5&+%l85&(^mf!ZRV%Q08vaS4F>@u0RB zs4cc7k4pg5rUkV%^cWZz4&-qOfclr9HW}#thBJ9w0#g_m7;fZo2`pt`V0e3 zqg5W40H|N^Cyz^D8v_FaM?RMTXfZLU%>Zhvh~#q#bb!JI+NM#+hqM_$Z9LFj3_AIc zwg;$f18M_VI)JC4bRv{gWDDGgA5%I6Zu z0_C$LNZYL>A2k2KzyNAHg67;B@*!;+P#Y3-7j#cPm%vm|KFjA42n5m4Hs+FiE&)(q z1=RKewaqr$OPjpc&cjG(q8M*)`r=n@B! z0xp3*P=15985Ih+1VEz!It5$;pgW>LZ8OlO4vPXVfi_S)BykCV=GI&axCB6VN6$#& z5&*U50}8kV<}xra#1wD|fad8k3b+J7BUB{?puPeF1E}o`YD+g1a0!6s@OlbB{R{?% z83kMdp!vBC&^Gpx0xp4GP`Lwbqi!hR5~u^Ee`wo#PXVN@2x@bSg47j2+Kg8UxCCZ^ z%BKP@fgX@M3%CS8_aHMAatW*ese`uF1q!(YB0%XR5ps8fOd*#5sBZ{ri-I?q+545jvp^!@;29yu8xda}A@^vAX zz#&k6F60sbEu!Tq;u2T}%D+Wi0y9DWgZ3?Kins)3f%Fw|3B-cTPvR0VW?*0lDdG~S z0_FQ;NZUQ3h)bXgl&_#|{emJc0nnvzptd=v&0kZ*B>=h?6x1gH-6P&n#3c~Nz`!u2 zh)V!Gqm~5eyDTW;5&+$s0BZAt?l50d#3fJzvIp9S*-^wL0J`4;)RzIx-5x385=a2W zUlNyq2`Jo)xCB6VjK3)25~v2{H)tP*p_oemG)Kl$%q5TyGOrlY=hGN!v0kxK<#jvBAD9V7*57XK7o8gpY6J=WMjU5*jRL|G>_c z;XvwNY0=I0Q`37`8XlS3G9(;rP@lZT{`1nLvulp%+cGq~j4Ni{W9+b}H1Ik?4XpZ!bU-p~9`Rc#p(vNp2z z?zdlFzJ1ZsJ}p}Y1)HO@a}U_N{(AVXw-L0T`Q92k-h=k*J~W?p?UJ))xKJW$zvH0& zmH(4JN^&#WGFM#Xav~It+n)__NLry_Ys(NI z^MC4=+1_!-ekJ--H*X#{FD|#9femPg>PCR2@ zwC33qw{3j33=@PCe+!}q8rm`}V7j9->zsZ2$Hoa?Un|%$Oqfy@A%EVUVS@Op*X!AB847O8H_SY5pE2#z z_u675TZRjquF+f2V;Ag=4jS}&y)?CDSaIp>&Hoqd8|Hre#%C&K%TRG>pT5II`|e#zP6{@L zwhR+8C8t+iw4WKHt62F-(Uu`%jX~Aci}rOb|C8*_+uAbhuoAuf;iCP0J|1Pg2z6Tq z4<~;z~u*w ze$W8n!{`I@5I&4vujY;D_*Gbi?6mVEr(9MHPe(qc0dj_%OQQ%~h~^7%i|I!iUissSrMlc2I`! zVf2M3SHSvVbiy(SA4X?nL-;WIhYo}fqbt5%2J45>4Z9$G7|qZO;lt=3eh@y4t`LXt zVRXUcOJMV0^n*b?@L}|V4;R7a!RU^|5I&49mFNC+QBKahg(VRXXdGhqEN`oj_kA4V7CLijM6K_9}0(GA~EgZ0B`h64~jh<47; z%S%lzNd>i){qjrP@=NnltQ3M%i^@`q6jJk23i31aN)+<)OBB*TQVgDX$@#eji6xmy zIjLc(Ma7xLm&piDju^{}rVcmSz^ErYIC;re~BCGcbhaW#{FW=P9HX z6@l;U^G`0#DJ}L4a5gY7;^kssK<9g;=H!6d+b}wYA%;PZA%+38svWe>0MsV|-F;Qc z09qSV%;3oo0KVBbNaW`p{Nps}BD@T?XC1B?dwE0_Va z;vIxd8FU$p!8}U_&}~5$3Ga|TleBL)Koa|TNWV+J#@s0o7+gBe)0 zC4&ir1%oA6)SSV9!IS|cXUSjzW`S%%#g5>aYX$}mHg16ztlR=0Sh)rA%Zf7NL5pKE ziwklRDM)HLFwBuxg@hJHKZsp zIXg2i-M=U^9eg1rSRYJ{bADc0W_mzTep+TuDqIQNY`^^C)R6pu(t^w!&phAMlGLJN zxE#ny!KFoMiOH!U`M#Mc1v!Z&sc=K-RdY=I5rC6jj3Q_RK3NEeT32_sC3fNi0c(hzFM@_e_scKIOv_A8gakXpF3*(I zypqhcN=PXI5erH!$S*2!Pt8j$%1ri6Eh)-OE@pt4lUf2%>Xwt3jtE27ijty4SPXgQ zrGd%?u$#c9B$lK)2L!lQB&QZ2+wGc{n3R(ml$w}Rl9`+8T9%qu;$K=)P+9`D3q{5^ zu_zmI<0sf$h+dD(^o)S~^3)FHO#f&q+-yVSuv1 zB{@TJYF=@EQ9Nj94aNoy3&Pl-AwC!zG~C1BmtUfg469oeO7g+A1E@xXgdu3Cl|i+b zfoOI4WkvCjB<-$`W%*Qxysli;GiJKu!hOI}4q zD_WQd+Nc3abI~5YF5r9=s}NcYYOka~c5f&YKuT2w)nW!W(0#r>sb#4-&fuasHN~wc zKQ}zTC?|!%)6qpCC9xz?Av3QGw4p;sp*Xdq1Y}T2z5>)N&^SIwU2;ZZUV17x3RU$C z({gjU7#JWXg3D-^)PfSw&_9D;YI3%3eoAUiSZZ=fevvU~+!@)O;1UFs5Ykgi6g+%g z6f*PD@~uEFWnh3+4WJrDA+e+cR1AR9VMb<7szOF;BB(j1kd~MXa$#9&5hyq3f@`IsDN;x=nE`CJGbGuh=9Pl#yOLC-%$J;>S5lOplapFh49+k4 zr6mf93dN~KWtquvb(#5j;5-T5HG@S`0p7AJ$p=M&LRn@~5wy?;`HSBA+`)N{)OzNXK!lL=hk;7^VyG}oJUF!^7@K{;sU=wL3r;P; zurD~Z1jD}I)Dl$t{6c+v6iOhG2rB=|GE*R>Reo8K4=6c?R2HPh2bLzL=qb2l7AGd< zfJzatjDl(=B%c#!hHGW2TYedKQy3VK$~u?S5=fs9)HzKAH;EO>GxJjN%M~&b^HOqB z6_5+nikuu!SqsYVM7zT`v7{)o0;^MqH^(KjC^fkRt04>w44#mxK>?hl6-p`#QsJQs zF4LTgQWHy3gHv-83o`PHQo-F?P=_BP4r<_nnv9_8y~wo!E(-~7h#GLZh0B244H0(^ z2t{uH!c{=@g1U04;6fJEkp|fa5r^n?0~JMZ9SAc+GKx|YQ(zJxahJ?ucvA{gR)NG2 zz5%)4Ex!odbS%h8^-s!5O)de~3E=z~oSB}Nm;*BoEbf|D2r8+9Q%f-Yg{B;=9;VPg z57Y?GNd=WAFayDMfXh6PJHTP60BXpjD1fV(w35^!1w#V^gWO^+@Lm+qdUuc?K&s)P zu27tlT2P`;lAo`Tlb@HaU!0L&RHC4fsh6s!pqi$TTdWC6cHs6YtgQlRr$XAM5H_UE z3T>w%w@s1Ttl+jOR1LVz>K_&q@8%!m>lhLr>gVm}AMOVlvw#nUfD8B%Jq89Obxx-4 zra`8ThVh|({z0HM0H|_iL8ed{B=H~%cMB&AM+>M7s(B{vCP5~SCRpVx+%1A|=tDI# zJ~+tT3DsP%-U#e=g5_ZD!PFaMXy$Hc=45E*XlNGi=Hu@OT2qeXA1APWnAw>6U5udK zi4V4j5B2l|X-5u27eh0+cTvQRjUd*=2U|pd%m8UcveyMB4@yHw;!e)c=zux}*-W?` zh8`n`8?fqu%3&D@uAqn&GFa)l|!=wZ`wr~+JmQO zY+}&%g+fYZZfYKAWV0ADu$P#pkXV$OsF0tgV4$ZEo|#gTVWps&qN4z5F@e~iJ}^|f zZ)S0FykkyIemSh0?weUqtdN$Im=0@17AxeJ6+x9dW#*;CyF|o8+CL$QMW9A^QYLs@ zR3R~^IA0+tRiU^bH90daGc^TVo`cFiP)Ssj3hA*yYSdzoBNZ}{#%IB;U3l*bY_g6* zsAHHyVqS_u3aB>#uZ@#IRYYcf9@v@1dJGJZ&FKh>K_jS`W`pXQoYZ27@AMQPnm|1T zxH~~^1&x}frYIzWhfqOPx{I-kLJGKM0GF?X|$u>0ybYEAHp?q&d<$F%u4|m*C5Ba7nFhvYbz_yyvz~>-^^lg?+o0> zQpf}iASr+v)wz&SEl9mZjvlDr+zU#Jp!Pv(zrfPeqDqg{M9|s@B>!QkgSs1(o{|$w zAZ=Gd>cJ!2L8-<0rA6SzJ}x(aYhVTj26qO~?x_&yStvyeRt#1QE)2#DDGY`TMht<_ zomG_#P7I|CX$)!L-EN@#hs#{3n|(5iA@wj?xP|6HnpPPoS#>cnpXnOyx^%9NHR{#2Mwoy2Rs#$z$2c;43N|Z zZufx7VrQpdUsX^VgvMn_zCvP7PJVJ?Nh;dt3&=3gFjEn@hYvAM4-(!Ww?Lu=lIe8q zAhtkDI3pJgwUQJag}l<7oPv@f9R;;ycj)W8AR3+gO^M~OTj&2?z-g40oXdX7s(P-=Q+aY<^CKe%1!7Y1v% zF+ki7Z#(BFC*~-mf`&_>Eq^_*8U6*Sc>zWFpvfOFKNLPV0v?<~(E%xMLA_kiz(N5; z7c`7QA!BslAv&n{p>d*63?7*VO-e!CM2cF_@Jt@0*_c|SP*9XwoSFw}uYtk_pIk^r zYEi0su|i@FsI^_Gkf@NG37VpU*9eg03MwkW{)QCo@O}l_%vWVWD!3W|&3=_7=75}l zRvCcY1H$Ox=>jUN;M@x;b3y*} z%SVeWXu5%=WoS%7N?E8Js$(E_;Ip3`J3vht@C*jH3@R=y0L^%ShNSb06hQIr?xTQI zgdzM2@)M##1a3dMM8tyz1Hg$2G#pHnVbC;6oO>6JMSoraU1fUqRhlP?QfD2}wbj zO(rf+5zIeWau0gm!Ii*4@dC|ox^}1uNFzSJv@|m%KTShROGB*)+SWiZSW`#A)6*qB zARsK>F~~hQ-Xk@qAhigWVo=&fwF0%g2g!rnLrffi)Pdsx)M(AiS18KQ&xO^cQ2!_t zmnRk^g9Z^n4nyP@G(t@lS>r9H8}F*4X9C-Spt%VPW>bn6cptb6lErsq=E+6 zq4}KJ=ApY8SN`y42xABWw;Y`r92o)_JfZ9yhD>l<(gnPhz?mVR0d!hUKKM*F& z49*N7HK20^O2B$t89*lhxPedj0i6H=nIl7w2S~aHH+(8e@TX4j%m8?(o~ZPROF5*> zL|%KLz!1#f!r;vSqCqEXfX>_~VL)~{L=PzLG2$g75wuDMQTam$8bK)!q#m{WFUiaW zwIf0EFrYKTz#X-s{9M>P1p{Un(K0?Dl_sPO334k4JLhDAqXfNGZe<0TwL~5!1dr%i zDIggWt^n~b0|VLS;24SoxeZkJP@@e;Y8-;>Cc{6Fpa7LipsJs6)Pu_^+Rf2Z2um%>OsiBV$w(|wsLU^gjA(^}r#OlgyfaG_EI?x< zd8y^8MGBdqz9(p1fgS_6o&{wbh(&&&{oojOF)$#x6%t;cZX(EM5N+sTiso-<-v|~8 z;Q4~$WN?`Jfo8YCa|cKzKU6&^EJ03#=4p+9Ab)4q;NWx4 zfvO&G*hAZ;c+5s^JcHr`gh{mvI%f|V+^kec$}h=KfD8sfhe1K(lwh|8gJxGY74{lfjnXa$!*|H7K#br^1<6T1mt^Y zE(0ws@kmJqnE^U$C=+~ss~$rN1L&kCn0km~Ag02_a`KB)p@zW4z-1A%6$UDcynRDl zAdBgsnq7=t5MnTepnYRtao6JH!~*bo1c*A&f<@3+Rz*p0az<)ODQMU$peQrHD6^yz zW@m6}3Dg|iYM^ciuFOl$D9X>vtO7Ux{J}#&FmoV&#Hz#yrUp_w;#UI-TdXRe;Q?Mr z1s*`cbgy$xVsSB49cV_-Ex!n>QASWT!Ko$ST06xjGdB~mHUJ!s;3auP*a1$Q&^UxF zD1?N&YhGzCRJfRd!8yM)Ck5Pxhn3gR3J@M|AU{LZgVK{vX(ni`2SQ&FXnkX9S*n7! zZwOQ`bW{zL?m%S)bPXPOTpL2cvO59}?FZwjE91g9rpPSfK8&F_L{o?#74mx}aENM;312xE6Q)Sm@ud64vi z7XKb8$uRRlVTBkYg|>x2YmyZ5p}7wdm)PwI0*465Lj=P_K{cmXkBb3e7g{qES}udq z0&M*#bR8qgx^kEt#yV+y>#AXk*dWW2v9FJYslm3;4YuyrJ+%b9ev628(x9bBxYknrh4~d) zB%^4C$w9h^=u)6L)y#NYYpkKgC5k54x@>%Ft+B1mc26zAxz-v~-GEzv;E_#;n;>Ni z%1UaKHP*0+U)<}nv9Ga4F%fNTHv0N%L`NH3_@{!(49Mb1h#SG{sqw702Cbb&U$2e6 zz8Y)>cwr6pHQAsQUf9-HgUp7R1xo+Wb=k1BE8skbWgRy1Iu_7cZ0I@_@cI>q9Av!< zR2)=X!PZ=Zrh{N?@ERAt{5;*_lEl1}#G(`hXKihTRMH>=LQ%aLd7+~v%K{RBU0RuyDY7uyWqibajr%0 z6Klpmse_mI*vm011=u7>epyj)YB6Y)2PD6^gH|x2>>I(R7St6ZI?f?`<#JL%bE%Lb z7`7@I)T)5ggT#gt$X_4~&O5luS{yD0>GLbi$$?Ecg7@@+XA2<{4P;z3Y3Hk$WC1Dhxv~fH-XfGFxbyn>P0KqMgY(fB4`4J#UG(K z2Ahek9>yMwM5l8?_JaIFOxgm4A<1EcwH<)nLm+n$<5p-IFUf}tI)WPYs8jaPu|jZo zqPI`5TMa2=u)0+tH4nU1H5IhgB{2^kzr~P+tKdmmJ)+~nr4+IgK%qDT+>1*}RmcIY z{3-&C0Olze=oye+?hqR<#H#ZT3$n6GN=%6d4M`<~<}Qe9QojVa(YN(n(%&XF?bg$XwVL>2cjBO=3#Re()vQU4#?^fh&}~~iJ+_t z?)Q@74^+Ptr{<+7P%*xJcB3M699B~~5C&!A={w8_eV)Eowf zA5wUyfz&8~H?=V^AnPI4F0fz0ZC}jxGY;<(oj-|n1IWK1jBpEM{6qh6>XM>0OK+6|E3$?%-YBV(U7>Y_$8GBVo`CbLP>shYMw$)YF;{I zZz8%`vFaeNCxX3#Y?L}^B?M@OB2gg^yeSGa-;tBX;F?=dQmK#%9#>W=4n34kCIiHxLP@Gu-nxrX8Oa|>}SAYc| zsO<`Ib7@{?a()VUQ*BXxI%uh6L1Jc+9)nY23Lcvo!16G?I9+H3I%uOvAtf_Cv!obq zIVc-2Xelr-KwJYFAxq552d{RHDTM|iXhbtL9lB<;7`$IkAtNy-4OD9-f-(~pM-%I& zjMR$6l+@(R+{7G+(~w;T8uL?7U|;~z!KtYVpgIve9+;9^l9-tT8ggV9%@+!z`63lt zjvU$f0@MU92d(W&%>zweFeHOEDkqn~MZoedMfn8!CqqS!SMsS8;xxl@+-5wX!M(%|PaYDs~M`D+QRN6u^~yF=*2? zWFfddHoYmZDPYK!Td;{BQxJU(0$OkbszX4` zBG3r~Ab&ySL1NGa%pfL28f-5Pi#)-r(-|02@=HNhW9WsNi)=5L4KbO40V)r&45}AJ zngO5PAeEqs6xD8!r~=G*Om~@?z$Kw}gEc@c_slCnD1geNxeXzY&uw6X^cV=b-^@f0 z&5a=E5NAhPPJSY&L5yD)S{2Wj?qNl~8)Z)ylRFs4WZn%N%W57(i$)Fwi zD9S;jemSWXkTj2x*7FNei$HszqGL6{%VEH$oM>7hcGV%-hVC{by`Tflz@sXfpdJV4 zpcLqtBT1 z8k7n?87&z##33zoSdioMM{-7D5yS^tn&=KdF$Fy=(^E@)!My~~<+H^anmUm9f)s#B zsn9M6#0ltni&As*%TgiQQKBBjMh1pxJqCsnXt|}TXJ`&OD?1HZHYqVMFet@v@Nn^R zGJx5jbBALX7-Ezd7-G^G7-Etb7-EVT7-I4m7-C8p7-C8o!0JF7kU(V@sGSNr!`n)M zfdN?zbpCO5EdvASyn6*J1qRT0($TRD4ABY<46&dy>0=ofbfE2AkQpEhYV3k&Z03OO zdI6gg3o#SK2b+mz9>`9R9LRo? zqpuHWVi0sbA9xEH18B8kYF~dSEFoFV|=?ua?nMwX(K|vv)ZHSN|$AFwt$WdwF{rI4}4?uSvA#_4mu(?j;c}obJ zynXu7AP2-MK%AqHo1ape1Fp*%2;B`AFegM@Y`3z+YMGWx_o(!P-@<4arf^Ln>WPsg6 z8x7GB3tc1*>WCLXcl9Z_hJ?d5r4@k=yvospjBmqMxSE5{vIOnN3rI}PRxkt&Vk9bn z4s9t?fRx3czBF{{4b+FArVF$v22T=$#-BX%ic8bdGLu2aS0VxuszFa72sF|_FvKAK z2nxXrG6q6n02+e>?No;BMFFpiDlJMSeqMl(`NWQe!ORI}$N=Aa2)YBboB@0yJ$M`z z&7CQkkcDK$rOC;upc6odwP&Ezf#MqE2gnqwl>#U~fzktLs0opkz{vvcUzl3xxL{Ce zUP)#yICnyH6_-E`Ys-f(IEIX!BHQDa4?bxtv7{sswDJ*@EilZ7*aJII44ekQCjx-X zflljz%4VY0Jz!3Q!?F>?Z^VW_%$#D#TsmZp5n}5++#kf62MT{;)f(!VgQl~H_A{~O zg4_V}7h;(JYWNV6C)O^|zQ-cuGdN+rEpU$nl1_*w3wQ}Vco#sbLNVx=NKiop&V!`5jhL_isR8)`x{bAD+Fn1vFu@UsiSM=2Huq!vNf5`+1m_BOHk3)Jrd74Ze7*w-78 zWDe{E94srBKw%8F3%b5ZAtkjq8HYMT(m{5)Nx_7BSXESNkgYj?nIgC0}>b0V(w zS75b+#IMlR8}PG%z}qCi}VybNyl4Md#a^BXvhLGC6p&M0+1IL=`X z0^LD?wqB8>d;&{ggE0@_@gqFU>EM25Q@ccI@ zk5kj_;3a~fQ?Q{nfXpY>eS=*cC~n*#2R(xZa3Po2fDW8VEh?#0$WDbG#}Daqz|=v{ zs0WRd6oA!%R*@+vsTM1N`=B5*p@&CXflq@&RR~uD-iiU9Rs%PzP*p*VBR2e?c6#QO zV7HQ3bBI-kY#+YhAjLe;Qclp+EuupOj|h|ihT82$x?0c-4r(xiA_HU|%x>^xB>@MJ z;wRAhU64DW=0Y5h2s(SIB(;cyz9n!SB_tRCx*HbeH*9WkFU?E|E-50)F_icjWDhZx zV7k%2v;?G?NJkRuMq<_BbPq9}0iRDr+#U~N-Gh7%mj{C{g9`)bY_U8B(D~}g3?&Sy z44@MU7~uECK;~Xi_K$-1m4fz}LgY~9Wx;z$q5Djc_m+b9oPsW-DlK4O@CXiv@6!a` zncNpd%A$`e1`5-g{cWiOixdRT)71g7w8&! z25fSm154A$_JZU<`e5!ymP0lRCJ!?MmX2|$hox@=LnC7oQ!{f5OGhVX7gslT z4=-<44%c%D|0{>$fOoImL+E9fL3;Z+yy!J8ob}iGY@j_3ux~ZVsVKpZ0#?^U;br9!5O6`Df#7~l@1^?-BU|Ea#J8@=z#b^sX3{M#i=ke zVAuXQCl)}=g&Y-9S_Hpwk%0lG7IK5A3QxsQHkCkdgJl6=OFG7UC#o zLAv_LhxUOFg2bW*K*x4qPD(<;9O4ixQ$XnE zff6^`NgYW3#W;5Z{YVRFZV4^P%!!AcL_68H^{Or=t0^bccC5E0uBf8@hV7{Xa=X2K!X~yV1ncw zpZs*l;yqBfLV^wCqGE8F0KR??*46^uYX@={L?6Txfu)eMwvfeO9s{dQEeQ((Uw#gK=%Q9Bo;eEZu$eSwF4hc6AQX93;B{HNIL*jdm0-U8ySK84emREQxmi? z7Yyx>L4pP<$iTp$2fdg9bjD#ZY^|CCC?7)aiUzH~15dLm&|1Xe z5}2zXZEi>fT8s!9@VaAoeT69wsz>3Xpm21DUA_hvg{)nMk5izDL&y5yqEIt1;s-t^ z0$0hv06GE=bf9Ktaw@2fht#o1@*uO2?p#Bxl`P3uz>>%{R4a0FKsR1N+9;5I8H5dK zufWX_)26@ zPa4XHUEzkf_q_sfKXX!Iib8TC3e#qSVA(kh@`Q(C)0% z#9YWmZ_wKR{Nnhe#Nt#d&>hv^0JVQi2% zh>wmz;<)gi1Ka`)2N?tw9ApsKbAVewd>b650tXH<2)sCmkW0A4 zAP{hgK_KKXw?M)T2C#aVK2qri*BJyr_``Ju0c`gwLJK~md&I!|NURhj{cLaRb7H%!6yrNGwYQol#SQumZNoAJl?^&D+5j z-V}ox6rj?afx$Dt8Eik&{3iqW{uj{2k08lZNN-N$5VydFD+~f0N4NzXm>30CoaYvB zxWWj=3obJXOt{P_u;47CfWc`-0g3B~@JA10kiP^N7z9~(K(P$sF*pb^FbFXr_zEf@ zc>(y&5QjHMxdj+5F@o`ji;MyfE+Xubxxy__aG4Q|6D~6f1R%TP9JfHjB}OnVxWp)s za0#K0e38t(9J zIm<0@;R+)d7hGW!NVtLsgD)q!1s+^w1mgu)83iUFg@MmmZUKX9j9@HqjZuK%8l!*! zGz@;6$7A1B+;SnuxdjBSGlKDjYm5R1t|9yY3Ik9Z0aUg_ckzO%29PiVKLdjRD(eO-2EQn+W$~+yRYtH#7QJDs;RLKCXv8Mv85$)wQAka^Y?exM!*W z>zOV&hda#ww3~-szZ~bkW|Qdj;|jBFJT7w!d^pDl#t+Uh3S2mcNcSEmxdj@|GlFr! zc}9VR^N2X#aEx0(K$j7eOc|6x;l+!{pXMMw4}!0AmRo?~CLkaNSrikx}5nG)92~QyB#| zOkosQ(9bAP(8q{UHwuB>1FC5t@!4=3clc~L#VycqlM##yZZZlaAjRp6)7%0D*BHS# z;Toer08$tCfQNRII)T;>)?IL8Ra44^nXi^$6*N4NzZ z+++mf4In?J*Tf z3=9koP#T=iLHiA%d{FTKVuIx}7#J8XoZ}W)04hVSF$#dJ&yptE%IIU z-8ZIjzq!FJFoBUt;C62Q?eaApeoeuRbARss=rG|rx4?o9CIN*GCV>y_Oac$unFJi# znFKDhGYRC};1*D5VGr6Z zPsO?(J{MG3BXr(pugLTnFM@p!fE~-gzyM{q?Q=@W)LS0uu%|LQW(EuY+Jc+h0tO)S zTbKkMv_b4xR&au^E>_8>=TG#i2W4V!pWI_gj9ky@y>sRk-{KFmRl3*S+H{3^zwgx7 zMytJ(FRT`CV_^OJJJ4bI1QCyxE#FqA;Av~jxxp<^Aj2f^!GcNPfen+u2XiKY0t+UA z15Qi=6I_`D9=I_H7DHv!TVf$Im420}dHmtW!r8e>G!3zm1z&jp79 zlDiQBjRdptC(7 z=b*S7WKL>PFz6T-6!9R$PH1RUAk6a3EC%;oQd6Lp8Wbbsd{Ps$GxO4epjX_11{UCM zhQtxf$p}6Er6vApE{P?n{=q12fQ!4QRk##omZcUU^dS4wJs=cCpI?4hVoqjCSP<0H zkSQ*NUjL-xe9$q&$mz!=vlujek>XzjopywJ4OxvxWl~XQihEIFK}KeBv0r{kFzn7o zgxOFleG~H%(^HGU!43C6cwi;92;vp66hfa*W)f)3+c_gOIUCtdpUk9yM95ihaC1Ov zD|3_bbCALvYOfEpzJRMmpN?pCmVLpZ=fAG{9iagZrAn;igNaYD= zY$!FaBmi>nZf1U-Uw#SFEGXQKj);qTJ@d*i%Rf-ufG!A6MKT*|C+Kv6^wbnkYA7m7 zO)kl)MDiPSXEEq}zyeSw964P5@|_cNV4Lrd^!Vqbz!E6jeZHB+klS%eQd68jr3YAj zFtp6}@O5#^EXplUEJ}rC3>0~2tm9P!3Mt628KyE&8iCmbH4Bo0u$Dv6_;V`FOUX%f zOvx%OE&-jqgc4t&!A?$zc`4P9Ucarxryni!Kr!0 z`9+|CU}!N1avPW#51wR7%z-)(UPHn4gCe20II}DjJm(lvRGOEJQLdn>0hjfedFco{ zKzF^M4Z^_9hguA&DuYrJQ{YZO=tof#UX)pq3Ri?~4#bt2xvA)NC)5n62SAIBz$ZVV z>xaY;+;|K(_yxJaCEpkP3WPl!B7*e@UK zaHMjc-&c?Gz-gVUUIeo;{=Ec+tt#hUAo`~{6CEZGTRhEsliNlt!Z zN@@|r`ACfdxErD7AQcwia6<`yJh>Ncj!SBpZ(<&9dxBDv^7BFE3!0md^Cu{jQd1x* zQQVH?Z%^OQko_KGSWlvt7q^90;|Zjh-J$WJ z!1W^B;#gdqT2$hb4?2Db5zdYU1;`R`eV|esv@N$J6-jMUVqQvq9%u{`uFe;9JyLQp zblsUF=-zsCIrvp!U|A&pLiPIPgC~$d%@KrMP&sHC#1MDO1UJJm#QpLi4H?ji0F-n9 zHP0{Kv7o>=wItCcu_O^W{*dLdi2Em|!2=%Mf6#WlBjoyV&>_HOpdtdpZBTWfiZ;0< z6T2Ev!hnSax;@~$nwbm@YOpE{JD_SnOLTHFlS?x5(jn>?ZgUG1urP!BlMO7);QnOG zZEk@EPG$knd<6(IFtG?s;A0U;xx+2+frD89c19Ka?5Y9=2A@&}2A>oLhMZCchMW`z zhE!JuhJpYFhTOyg{o+*A>6SBhxCM3?F$*Z%;}&2rW)?6oW)^TTW)|?d$1QNdh#5Zi zuX7)FzkJ6%ZUKku%wVi=omoKOIfM$E{2!f0u9qx1QMpO2yA$cDSzb&x4?sKEMRrmzT9;0ZI4 z$J_!8Q&|KUrmzU~Jm3~^*vtaP0-IR`7&fyAY=GMF-~qQl!*mvb1t9aV*p~uI4^vqL z6sE8UTzQJ=o*Q`5$dMP^0z%snY4Jibi$KduZUKdDEMUyAjYZ(YRu+K;TOs~+dCV=4 zu$2Xj9k#Lv7;I$`cmR!;l!x2`4}uY9fzq(c18xC^Ei7RCU^9!rh0QDi4IsLmNniz* zcslV2k|scD5*dqczi5#!#B7x>)NGY6#B9xVeX;ej*+;A+EKO{r^=_^1yKk#(^M#si&z?DBt7(1K*0S%hZHjfgUB<**I|haZyR&D`*xlrKV#mP1 zU_XhA&Hkd2wLQqbKPx|8@=bEEKYPXpi63BJEwax2VO5Czuez)~C6goUXU&YXXJBZs zcQB3nrPbbMZ@J|}*}nN*_S2?K1MAa_=|A*UV~+g}xz^W#JLcINgTZ3^Su;UkrTvOy z-sYW-8$fCw_$FoW=7#I#XFff3Z2QXX^N(L=`Wk@}H z){%kX!2kdM?}PXX@e7!o7#ONt7*t9;Uu=@t&A`C0U!urxKLbOULcHi&!x zXXgts+k!Ai6of$|;UEl~82}BCgZOMnbI2e*NFIbidJwn)35E~gom4K)Z`&rU*^T7izATE;_L&-A^f#OUK0iH|_fn6CK0;e-j`COSC z0w8Pxr9o;z7^EIVhl0UTXgEFCF9-&W_F&=ArS?(_7^N04YV8-#IVhHMFl@ic@vxF9r)|28INw#4QtS5wt_dZ^fPV#RbfIU6RSxAZIf$B!HHI zfQHF!AmQ*H7H%MaGcdrz?ZbYE{Qr80J~#VQ#Lt-p=CvI$JdNEE5NnR}2p%)a~{_G=H%Fohib|ws!JZHTv zD}{a)XISmqZ~cwUB3AnzNM50nHx8PfKG>I39*s_)baelTjCGdQ#~*^_@2Ymg<^L{P z9sG~??EY)AoT{IFo`B`E*fZerM(_X3tZX`Ef7ZG_ZQg=sV0n|f-B9}<*hiGBOgUqG z(B4s8G`nHX3$XmdqfK!6_MT_6HW#n4U%Ze{Gi~-Oko*IKZl&WL**~nUrmqXlb2nye?!do^V5^S`CLIfsT3|BpdZPfx^VV>HPwrYdvAc{ z9lq6eK<$UrJ&?Erk+6IOVnZ-gzda89`=R#RVrBmVY7<9|Pn_}>prKlV7%&wgn7v&WJC_CwRJJ&yFdADaH{aistK z(EMYMBmeA&=0AHJ`ENfo|JvioztDOK64#jI2Xy@)^`QI@O}^Va>+GFlEJx$A9~# z*;pi%=2clRF?@P1KSSHS!RBtwqg2;yCI-XRoVgFbH`zSAC;xTsJSK+CTs%ch=G`{j z%uklJUSeX{wt9nasc*B5=ypS{e{9SQUOz6!THfuq`7f5TiNl7OL9Tm1vblc=9X>x$-=b=YC75GmiksR_k30c z&JdYL50fX@Xoh&)Wnaz8V0s`$` zF+=-@nKmj)p-mP^Yz&2=3wV8dXWEUkOX5Y-anr;joD6&QW<{9f&bCQ;8e5&l!^O}rW5=u-^{F;7s&<>0 zL%A3>M-}I_WVYDs|63WFJ&%i_-T3sRa;YAhwU?u2&VRwhFilqXPMXRhn_r^-I~Eyp zGpu8sx=~MXp^aPI?@wj*+ze;$#&cc&Ut)9Vp!Wp1Gu#ZDdDa`O%PY2-6V!Tlwj>Y3 znn=!z{SR7fyf239eN5+J$dH_rqm!L(lR4r29fj>Y44Y@(H{&drY*XFI?xoAl%dni? zc3JD<5}WoVzwbyy@G`8Kbnt3GRG&?&(QW2uD|s0vP4|*1-aW%6Zg#ct^gp}|mpiNy zShkhee6#O_lJd&T^X@6XrD@T+Yu>oC(^2i6{b!3yZ*OL0}?7qyIBf`mYQO zg!-+6J-$Hcs&(gqa1hPJz`)SUz`!u$6F0+*JKP{42ACYE<1WI$z@YJ&n?d6)svIu^ z1H%+%1_qnY+zd8%QRVo+rXYwI1e0Wz%0(Ulg;(4Ha!d>i9E&+Yg9HdOK!a2Q0s;mC z0ssR0=W(gccM5Dn_M zBkKc+O}NJ+(1K(ZXqDxZZQKG&(98p=1K9)8gKQqMUXa{|dprVH(9C0vWrx1rng)2T}_P3y?l!|Dx+Zu$^1r3Ksnm_jv@c>E8ggA7m~FTioXn zVA%ojAIMFh-3lT*xCL}}U^f@69;A^0l5aswP`tv-0P#UMtUxjgq-VztZh-?(F_1h+9S9?vgRBQ6x8pvK zzz3)v5Fg|whMn93JUbC_2~qk5syF%k~)wd zMD}wF+}X`7(6A3PeRVwK5df(H`2*RXHG8=Qe(dEINZH3N@M0ggz#3?J1gQgIke)gF zxCKCN0I@-0$ofIh~f0wA^MW-r;zE#Lq( z3pVNrQU^|d`?&=`;SSOR!pQc3;sO*;*xZXAcc3^x5AT8pJOWGhp@ugo9zk*T;Q{t= z`~i&%ke#4Bb!R8Hz=a2pa6ot8nVkr;L3uU+DO^B&4y5!2GHb(LZhOpBPWG}Zs$4+hmo88<3OQ2~BMl(FZo-R%HatmzP$1Sj8 z54V60R1e5J5C)lfWe>N&104APqy~n29`FeCAmuHPA7haG3O$#8qKyH(P`W?gv z*;BJ0H5@^C6BHikb|B|hko*>;I02a@ffNQHy`Ve`%AXT}8S1e$+AxWF8EI!UX1jP#y&N7i11d54Lmw@`uJwZUIo<2KfFEGEPd^v-LF!_V z8uWS@mR>-9M-F39dI6~iVUW23NO>3}2Fi!%c}`>>_OcnI9uzhpb3kPwsN4hP5s)|t zBijqgH#v{7mq8K-xCLSkAj%eyUJ&ki%p>pvnr1A+vCXoFgyFh#pMs_#I{uU(nfy@B816>`++>C<=KY+pnq-M=y9)T4| z;vlgnk9hNSVRrg5Fff4RKw=;avTFgFewdjj9%Ik;(A_*<6sF0!Ze8%mS4;9!O#!w}AA6 z)N(w*?)E=u>Oty|#X#or9O4!@gQgB-_LV0*0y7SA3#1(47O*(XE#Ps8Tj0+jNSq+E zw>-g~4i6mS7ASavy{wTq3^4~}56E8{hY@Cj#6TG2wh4#01s>pV14s=BgW|;o>Mjr; zRFAAU#4YgS3HJ8Hg+tr|Aisgsf-rKpgZv8;17T2{XkhWX&J*nQVgr&JK>9)UgY42d zf*F1wc@PG>^)R=UAT~%0**!8xxCQPU<`%$aM$ci~auv_8`@IG!+(G`!K;nb! z2Dt-dCx{KgptTGK4s#1=JjEW5KcM~ntE`VTj0WT>~eQbatoAv$DR*yt82i-tq_}fcyaBK+kYEa+F&jfr%H~ z=Ku*K=Oc;J+yYZhBf{zm)b5%~+yWKnAnw2xPZusg-VePUi_M zyjc62B53i+@qls;scLB!dY$s5RJ_YkQ^uv zW0M2rYmm7x463hKPH+o=+ITQAWcPsDeK2v5A2uMxBS;+7wga`}7F@yIe+H=oVTI2; z0&6aC3mD+2`)+{R0&lUG(V%t(tn8{eiil%SyAPB$(ena&TM$&H1 zAutC*X#D08Sb@}*1%_OWY!!cK1d&^9s$)E zu(<$`7zl&Z`dr}_n1WQt&N+f8??7rm7^E%(sf-7Sf!Zjb_6V%*0Er=o3ApaS(VuWY z%cl-!xdlM=2*?Z&Mm7h%Zdr1PTL9FLz!pxhz6D4QRK81q!Wc(AiyS8)|FNKjX~q$5 z0Rt@ctO1rX7F4c)>_m4vdRYT1JCVytka|#i0@QW@wM9XE5JvVtxP5wp1h@RgQRZIe z767&Fu(=b|-b*=ws7GQhBiJDK!0}ri0a)CD&PoA?@pB#lPn1hp5D+lC-FfcnRvzA%Ul!XSGVT;LYi zfh9kI{1Jnc2S9enK>ZBT3&NoO1E{Y6YNLSKWgs!+bOCC&c$`DD6+!YK46=6y=v*(f zel$!@9#o4GLF}Yl!lq;urR`ci=2)`>o~z zw}8$$)Up^<#)HnNG`YkrpaUAefc8s3{bo@3fb2weE2uC1;w+-hMoufp>X6e4Xk5hu zt-T29S0eWzL1PFhNPY#`opGF7px`2+y$o^-41>Z86gHr~6i6*d9NB(Q|LVj$?BQZ@ znp*%=XJXR_sz*U%0NCU};{u?5E;cz(-xuTt3Fuf5Xj}s{h5;J)!KNO4EC|$Q1GUd0 zuHv3+Qa}nHkX<1Ef&2pMhheh=)HegE17VQ-1GMzufEFj9bOcH>KdvLjNKYWKLFRxk zC_XK2BGMKpO z3CP@=2)QFT`q&}YvD@RohP~Y!g5-Ws*etouEdX*e$X*aePD>zvfW$x;YOMEV1zy){T_1QZWn zZgLAquw&Od2T3o;e;{?}Vjz3b?U;dP$DNzp0u4C)+H;Fr;K?n_Fb1WG6Suepj<91- z>sQd+22uwS0za|^tyga+_Pg07(xh zY(V%32d{v_9fTYgfYgHYfW(mf57J+P zLq8}?KzbDJLgE3W7ldDM@CumR9x4;iHe}T*enFrE~ zE(dah3FtfmkRm7snGZ6H<36`Q2UPCNJ?wcj=N`8}1Q&MqynyP38q2VOi&vlmO^kty zSK!AzZUK-S$SokX$l;2t9we`F9}#Duuu1@#$AvwtK<2{S4>A{qLGDF&8z}7}r&Ewx zP+0;hH$ZF{2IV18ezACj86F@t8$@^oc%E?!WPtYjBgHF74umWCcm=+I_TYm!Q2axZ zS0Lj7x4;HT?BV$5DZ1b78Z zKzrvw9O#@(50c#=JtCkp7ohSWY6Cy7z!4-hATbF6UV$5Ee*DABE1>X#Tfl%1;xA%Zx4xn)j z;)5_K&e7u+lx{(36qM$%`VA>gKz2WP$t@tkjXgdhkjem%eV}p-RA!x#!k#8)yyO;m z1M)M}ogjZ;a|6h47euj}@dGIiL3V=5VD$1f;W@W}z*Ee41*vxs=M^Y<%q_6v2|^x} zj zP?-hN2XY5;S%F@Tf#L}iCl=2T=_&%L3*n7o;!(=>?Vlpt2sl90AFJ$_r5004wW2 zpXOZy?1r$Q)1^3@UFmUUCbBJc8ssSUv{DJ4g>m9kP9( zw9o@eXIR#HB}noL2t4E#*Z_(jGROAc@4zRc*ZRNDlf6w3o1h+q_OAO z1rNCe?mUCkLt7qj3#@_q1>|-R2AN#~O(QV=l*ilxFObqYs7?UMf#MuFenDcOIules zg4i$&Di1(;AI1mKAoqdX0%F53s4fH7TfEra-hx&x=78E3IO;}Fo9@PQL^?xmgTU+q zwKqU*3m6|1mU~`s3xL{4AT~%GIX=Ekn~gD1Nb-0gCe;Q1~N- zC&(TU-hP~oq2>e|!-0!z3==-EF?{&Q#?bbQgJIt<4u&_sI2Z(eb1)eE=3of;&B3ti zHwOdD9}WhMKO77de>fPH{o!Ev^oN5%?JoyI++PlcMSnRMj{W6e`1Y5BLE#?iIX9KiIbs#iIZUt6DPwRCQb$!W=;kVW=@6*W=@7J%$y7tm^m4~F>^8~ zuy8W?uy8Wev2Zf1W8q}@!NSQfiItOKH!CN@Css}dJvL5;J~mE9PFG7DeRmK zee9eJN7y+TBse%3!Z z8CLLdGTh+fWZ>ZEWH96BWXR*^WVpu9$-pPT$xtA`$uLKNlYw23lc7wIlVP18C&LRt zP6invPKI`2PKH~;oD6&-oD6;`axzqiaxxqjt>4&dJ~>&dJaq&dIProRi^!I46Uf1Sdm-1Si7=2~LLB5}XX$lAH|LlAH{C zBsm!xr8pTLOK~!&NpmvPOLHAxe>xp-qvK;e#S4gPsy6!y#o(hA5^N$&jtd$*@_Ili`gfCxeGJC&MLeP6ib{PKIPXP6l&* zPKF$PPKIgvoD2u_IT=3cb211Ra55Mea57{Xa57vm;AG%5i;#nK>uJGILG_HVaM$I}1*RJPS^S zc@~@ucPuy=j4e4CN-Q}U{#kM|*jaHhBv^4WEVJTdxMs!4z-G%vu+y58 z;hQxlgPIK|LzoRGLz@jJ!(kgvhHo~U3~IKV3~9EU3@dCo8GhMvGC10CGF01fGMusF zWN^0UWY}!a$)N4P$uQf2li`yCCxd_^Cxe9}CqsfGCqs`TC&NicP6l-+PKI(PPKI?( zoD3hGI2ml5IT@OqIT_A7b23P|a599ra55}%;beH@!pY#_%E_?8m6L(Njgvv&jguk3 zjgz6wjg#S-8z+N=J10ZDJ14_8cTNTy4^DQyzoi``LE^khTf8Lx7W1N#$oD8OsoD4f7IT^I0I2pvFIT@0oIT=<)b240r=4AL6&B;&}!^yBc zhLhn_3@3wJEGI*JEGNVKSWbrfv78Jtahwb>ahwcu;y4-Z#Bnmn#B(xa$8$0~isxj| zO5kLemcYsIBY~4aFOicWE|HUAS0X3F&qPiJy(CVCoFq<$!%3VB?~*tfoRc{jDw8=G zo+WcK=%;Wp)TD4SRHt$>yh!C_*pbG`V3N+sFg2Z%;ZHgzLv02p!?g@f27ydY28T>e zhU!dChHaUg4C+~&4Eb4{3@fuZ8J=ZvGU#M;GQ?$bGW2D0GVIIdWO$d&$zYVj$&i=B z$uK8}li^MdCxcZkC&RK_PKHmpoD7C}oD9eEI2pL|IT_6IIT@Dab27Zo=Vb6G;AEIp zz{zl+fRjPEkdwi!kdvXWkdxs~AtwV*5hsI35hp`M5hnvfF(-pfF(*S=F(<>>VonCX z5>AE*C7cYeOE?)6N;w%EN;w%4N;w(km2xs%EahbQR?5ksP{zp+SjNdvSH{V(t&Ef5 zTNx*VLOCacLpdiyb~z`*y>dg!%$W?MO1Xgk~ z^i*;(?5pHt_+H7$pjXAokXXgZ&{oCCu&;`f;YAfEgG4nagIhHxLtix~!g*WY|>4 z$#AcZlR>VYlOe92lcBAilcBMJli@`JCxdPyCqs23C&RNwP6mM{PKM|vPKMP@oD6T8 zI2rPqIT;ozxZ@M@cbhoxZL2@4q7#Jp;gF#b27+) z?q!9DfzQg*S(pon>b?bxvd z*$z*z9am7*f%V=%5%U4-y@M(SR`&o!EC8(T$r4Tm(Aols`vM|B{(pn2E&`s}wOb$nrA8JZECiODcvO!Y3dA@pDNIn9m|00KOwsuOz2fg@J*=KtKRI<^|?Q zLHxy_Ai!`0n?zm6yfFw9|MV9hl&oR^zK`^RkpM%1 z0VpoPVqpJ*)glo}tdk`{UyYC(NX0|II{{NfM*>Dh*) zCk2Nd&>Ry;?E|QuXHY$0%W)7OJs`J$`m}q#bA$JV-$64U=5CM?AoD>qNDP?<`2~bQ zV;~?omLG^PfQgCx;1&SwLj∓TN_HD11{}25`85&Mx&p(hpJ#!yvOkZYcQ80a_Nx zQ1P1syxzb0HwW15eZM)tbNn-ZbAb1zEcwj=UL&ynHzdqK>n4`qFdGyWAhRF*hJ^Vu zDE$UXe}d9Kp!7eenIJd)z+omx4rHdnABg>+uu%Dl2pgEcKr~Ekz#oX;;{QP00ir>1 z1d>m{p%>=%1yFlH{2m-?LFRzmbOCD54JiEpNSFB?R;yKvKJafZ7jGwV-rzhJad!e~@_c_y!Aq4bXfa%ld3;c(;S>iv$%~A{u3^(xT0i|1zJ_o2ixBrl^2>cJpk1_ut`7!-JBtI5G zX^=ipnL`W>3WM7J90H&=Mh6-CvDq^j>aLkkcg}~pdnwf4AU$XPV2>+USUrIH`301I z2c^G3%>aeBz+dcUfcyjsHvmzUe2W`NY~!C?l>tq+jYz967hfDz#zk$>330Awd93>+9C{_%$D0omt4 zKu-fBB;4AdbPtrC1f^#{%>sqzlz-gdI${Z$nK1i7;Q?|7h=yU190>3DhgxTys)p22 zAh|ba<{|3^nfC$74HEzHhk*hU#6KELkZ=RVsn35%eVl`)7i2fce2{%G8YBkd!)TDd zK^RoFg2bjEnE?}9@*mZ2LQSakaYQ4+uQ!nNgY1D}kl7$NOn|x@RBo~`K-MCgFd)`` zg4Dy*9)SAw1QRDXUSM({8f4Z5CQfkOeT@l{Mv?vD!N7ykX1LM;aU;my8mPT%aM;Vh z3<+ZnX6*I~FhlGWW5%@i0Ghp_-4J_0e)@uDAIKjd43Y!+$AK9Vry#xpBWjp{)PXQa z4y3jKsumPSJ_OV*fcj?z)IaN>dO_jU!3c?i8E9s}>;c&cvJXVVFh~xB*D#`nap(ku zUmu{EhpZQ5-UlQ%@GwE#Aj5>}XOJBrwIIDP8pH-+kQ@jbFrm6(#$<>aKz>U>GY_N> zghAy7$UFxYNIbi-K*AjqmNRhZ0oeu8QvlTiG6%%3fa(S1!z%>zE@Cj2Gt8nQyQ%J{rv%|_ZyV{1ErbRA^ruWsT>?; zfcy)x-+&zwb{0_DjvW&JZcu&%J0wiwpk{*d)&T-$HbC`sK=pva;R^vh8=&^>fa=`` z)eG{20UP#kfcfDARPPUVNEkA3Kxj4&h~IcPAbt?yfP@Rk4=n`Dbb#vhhUx*?wF8G9 zSUPM#Qu_plT97%QaNht`3yNm}cF5Ts2JEQ*gsFw4OKdbq41_^yK{x_x7RZmFa0iKH zu%nifyDy;D;VKs)t22Mzra&bb!ScDUjUgS6-<%I?(BySjT zLdpvpPDq%8%>F^Z>;g_mJXJvH1}NPDr6)k?8Blrw)NGJnLpV^w4&-JKhQ-YVsGe(3 zJ)m^efkO|>uL@ic_h@iI{A$1j@v8-t@5}}9vnLnCk05<_2$t^SIjCMx+^BHj4;uy^h+YmJNZbhUK;lLkN-INYO&)~5D+rhw05vlj zYGxW#FR0$wfk!VWoq^(O0#yHOsQzV8H*AE`d!Y0oD18D-gY<*a@MWldps-Wn#_xXt zUWorCcp?5*;6?Z|fq>ossNM*u-UO&#(EhRoc=UqY3HB#c{|u=91-y{3Uk#-j45aGe^Uj{yie>wOd{uSVZ*eMOA)%YOgjvH&rQ1Oj>{@I%UjS^SW&U&0Rw`*r+~@^1$}B*?&e*uVlGN5LF_@FURki985%m9_U;4}<1V;a<6koXK7dO&di(sKZ+ z=LFQ=%L0&acqjk~hxbskKws9I21=HO5Z@-N6w7X%^Ue+^3CfzpqlW`OM5fWr)s9LNj-A&A>V85kHI z;86?8_aOBSLJ+_E2|@fGBLwk#mJr166+#fdcM3uLK1+yG08}Te7UC2Dh3y_8P65!o z+*u(`@cB9Sp!7>2P65zq)xU%|!Q+73!khx2y+<-oT1l8wfS-YZ!C07605mb+BFrfO zItL+Cm{UNAfq@}Sm{UNQfq|h>7~&t0U26oehcztxHV8w)ZyS`}1Emi^=@U@;9F)ES zH5(Lm9D>-*2FZcKi9rP74p4eFA)wYl1mX@4s2-5}G6?7?5P`%)wFo30+Mx7AC_No& z7RdfB1kAbswf_cG56BNM2GoRzwJYSU4c5bs(U&0IC)g1~~-OE)a!;+iFor z7;J{pJE7tSp=N=?UKS3jUMvpB?m zd{A0U9AQ6?2!8t=pnBYp^f(aEQvlUdfuyH|fSv_VJu8s(tRSH00#wfps2)(+^8k+? zSbQ@`K*EDV0+QwgptOVpq#Trk(rQp~9Vl%Cr9tL^$|fr)-$4Qqo-v~M!?OTtcLkE3 z2?X>kfa+NR)dOmu9wDIT0#wfps2d+3>17bZ??wShNcc!dLc&Ku65>CQy*32&20-;j zK=md-^@8fc3Icj3K=sa+gxI@G5)vO9p=O9NFfbgzV+JT*K;`xaNoe|q(hO1%b2y|R z{;HOO)N{g6T3QNHzbQj$ZK$}R6r{d0htl>?c~_{sHsGb~YNIaH9^@8lHk${Xh_n?^ps)IoG zf!qkAL2M8P$${_!3Dj{EqWj0WigVUQdMPmx6Rv*Tij+dy(B(98qr17VOH$h-g< zNSuM%ZeO5oP?19Q4@_-?3?y%K$Ux!@W)6r3nKeNM(k7fH1MwdyEUNO24Ft>(kcIdYWZxYeYC-iT$UX;I zh(Fz+v=5XHf|>#HlY%sA7=hdi!XUSR%xHk>>5zqlRUcF@C`@9cA#t69W(G_z$Q+Ov zAR2~2av;};wHwMT-(q)(&X1ct9=8moR5%#jkqWT?V9teZn4>Gqw4w5drq4rLL zn!ivEQg^I@+Phs2lJ-Dx6oJD`kQ~U&2T;E}gVJxH^d~6&18Np1T$T_pOFW_80P!0r-CZG|$3Ow%4hyJWXQ*CKJ5E3zzaJW)db<=L zX>f`HB(2R;fTV>L3Xn9oNdeMd-UBroZ zUfkQpWEKt4yrSA<;Jv*TE z0jRylp!_pX{v{~?29$pf%6|gozk<3G6n<;)*bA~#Kndbb2_;C}C`0)mcZ-8=0>`5t z=I#Kfo@l5UIZBZDtyO}=Z=Vt*e&;Je;&+1*q`i1h3DQ2iqy!lcd7uOt4|%7=DF6zy zKT44C5H4kiItgXSc!;JlrvT_4FDqq8d(m4NG9D763>go}Rfdd*)G0&8L;96D1wdDnrr;Xzb*IBJOyE`R{`=B%OSN(tn^dlL|zf14{EjX%Q$b1*H|Bv>KGw zfzn1$+5$@3L1`B#?FFR+R3PpJg-L@FcK0HuqXrd7oOVO$$tsYzoe8BELh0pDdJ~l1 z1*H!_>0?lPL1o_;JobXp5r-ia`gZS?Q)D1tN zW-+Ki{K*ZK*N4&||AFGmK!vdX5}N=p} z%b?qjrx4E!#CjqJ_8%h^L?Wly(jZpD+D8CoVpA5BgCRBV0RD2bbzX8hM2IcR8 z@()4zC!qXu8jx@RwJE;faW6O=G@)goCPWXY?$J=k?MILv1E?MgC~XJT3o6S}2cbgYkos^j zl)ny2Z-J`Y54G>87N-DcZ0I!9zKc+K18s$sI$|x16IxTHTngP}637Uk%w?G?`)+(TM9h7c^ z(mhanCPDf0p!69iJp)QFfvQ`j4QX#|h0+J0^2ea=3S(ek_(6obK0y8RTN_dqu<1a; zOHc>mUU40WxU3E&-Z$t#+CjUad=L$q7di%2cLu8e5>)>UsJI4HTn{R40@ZJ&1Bn+` zC>;P54}dSzt%Y&*bfvT&5s%wC%YlEumfvTGXRW}2wZXQ(K5~%zts5~e? zz%VFZfY_kCeGjVd2~^)JsQM33@o!M^KTz|SbU6jI85kINbs^yfqIDS<7$kHd;VGvJ z31<~uNH}Xj)fqtL?V$25P^7T;pR;YY8R9;9A z;tmNth&$x;Anu(ARW}E!ZV}X+6;N~5>2eByHUMscs@o4$cND7bG*sP1T}}ZH1_p-f zP<4->>Rv$Ay@RUz0+s&-m1lsuiw){79z95Y1C^a;ba3Z4P@Dxo^+rHxP&o)H3pjLf z>jT9zNbdxwp4obkcv=jlS3|`&LiyVIkZ?29hm<$l^&qsQK1829R9+P-{}rn5H`E+P zsQ6>3_)Dnxd#E`Vq2kw};&-9q>`?Q0q2>!i&DjrCe-x_zG*Wo|!Q*d`pA+;Uai69S z31d)tH_*c!Rv#RG_jVUQdMuhBytV{)uz zf{z71fSUV(40BoZQO$i=2Qe39r-eTLa0oDfgc)dzEro#E-3E{}Gr<6oM&=tp(#&$G z86f*s5HRBdR4u5jas`K4SbyHY5E8FuP};^2;#N>R2pHh^SArqLt%XoMApf}-K;kY1 zO)tpZu($)o*#bj||29JH1&M($$X<}ULFy|EP{Z866B6bi`87~`ju5ct0h;+Bb3t~1 z=o@I}%XLA_2l<1?5aJIVL)0(;=|lF1fDyzWibjxd1o;7kL3V)L2~zK1i0Y3&NcNPV znGezn!XSMhdjg>5#z1M197sIH2og`A@t_?9%$NYxI~z(bgwo5Q^javr8A|VjnhokF zh!~;zA7noW!`%152$BZ=LG^MPL&8A>N=rd$1!IVNLFq1ofSCct5Hq8pbQ;tQki8(k z=RnN@h4B^wW-Wl~T>;eta`y`YdM-fKg2GnB7{C7oOdxKRGJ&K66%$B))iZ(glPpXi zZDJ=ANS*0pf(VBK0%kXuK*F*EO7}tODNuS2l39BQm~{cF=LVF%2c@4t={Hb+fa*a| z|6afZx4&WWpkNAdpPDJe?|M+$#1!Ip8z}7p6$jCvH01-;2jYX;g+Zo>FljM?&7DATbM5guNv{{{NTTglcc-CWO5;X!e2p z1HvHl!2ULa_>02~64t_IkaVVK1_?Wmod*b+fpoVF$Xt;5p!f#q{R8#4h#78wgWbWv z0N$Hl0Cf+@43J+zSi=nA-wXf${}R-=o5dVVmRgM`XoR{FS4`lWNsDD>O>1|MZ z_n1M_9!L$SOgRJ<2gNxkje*>=1Iax+|NsBj-G%C&lwA<_fc+13kBB*O{ueNZ#0SWJ zkX<0GVUF-WD4l)SjcT9N9)x{4<`Dn45NV$S7W-x(+4tiA|NnA(QSI~Ci?Htw)V?o7 z+E;+ZJ`M|1|4Hvdwa;}Q!ag4hi2qV7hzrjJSnR7nvoCc&s(tJ6u3+GO$3{0dlj21th(J@+~O6g2ZN6qQ*ze z5mbBIjv(y41GV=L0echB?9ISpuYeV*z1NST+RJzhVQ+{P#J?q0`29Np&E6SU?Cn6a zcgb;7d(Rz**bB=4XQ1}}Az<$T3rHNFfZBHf$sM5hx&{>og*m940foDOHLCynPNBME z$0>+AKxrex8sh&DYfS%x;u&NnC~bnwU15!yE*UH#ZsWFul=WhkkTjqOrPVDFX$0hF zT}wndO!)Qxf5KT*cTGPFaTmzWH&Azp*kHN~R?dUmmjJaZ1IaE>SmZ&)LGA{H6NuKZ zL4?bJ|Ns9xo=3I6^gP6V&^U2}4J2H0u-Ff>7c^!DS{ns2m%|n{Toyp>UIq=9bx?YX zC8Vvj2TC8Zgp5O-g3?!^;vgDS7CeCJ1Mxv?1fN08eFLRGA^91!X7mSA`1<_+|9|2o zRR5j01o0mzJbY}S{2!%_{+x*zrQ9x{V@Z{e<1fQfQp0c z0)-QZPOwAx@5%rF{{^q3`p^10!hcJk_V2-CKeGQWKLwQt8wh<%{&Xo1?d1dn|nvkk1# z(hbyJQ2c?y8RX9$X!e%fLbZ3nEr`7!^?#uDiZ~GG&jhG_Ah&?*0$~jYRDZ6#jcVWJ z+YtLegBwUx^u@7YS1gJeTtRZFK0w}!#$^W2qxf!Ys6o#O(5aga6NbUiptF?Dg z-E;je#62MWf1vJBam4L^kb53L?RkM@KPdb@K*d4!g4_V2EgTWy0kZ$wJyiP@?nCSc z>928wgvS&-_9Le=1slwCwgSmMP&yNPfNGz^1B88Vp!Tsi;r1`GeF0ePlW;=#4`iR& zLsa_`9wO|Eaf0}-gh=}uu-MmuW}np~RQrM+LF@yC{TVcSKye4cp!@;y*9IF%{@G!J z=sz(yL)<9gOk9|Jz~V+7XVfrx_ZZcU5>Fs*1jTs))V>ZP?NhMDjPp5Y_N{w@YTpg0 zeV{OTfMyRUJU|#0CIPmPFp0KBgo%g?YFL2OgD_0b1gM@Fwve{U0;pb49uFX(_X1S! z4XEA+Q2GUweg~yt_I-hx4GOz81k6^jgZM?;4&p8|JA|KJ5YU?d)tdp;TL9Gy%GWBc z_`_oXRPSo2-feb}a_gWSBp)|-mkiX>}ApQo~|9}Yl z0~{dX9RZ~i93bJH;Q$HmsZjHap>#ErZiLe9P#R``Kh%Cux`}be?SGKp4?yj_2({}b z)b3YMGeG%wfjgvp+JI&jEH8rW1(^k+VHhL_!bjXu$DjjQn8EWRAh{oC<{|3^nP=b# z2}h6{R6HPVF!4b356B#lT995C4Pt{ZNDhQOJW$>6o)zK-Q25lKnFrDb!XSOf<~2A% z;;79L5+@)vpgaXK;{eoc575j)H)De%q)a%7WCq9_kpDpG2BiKAnp^*}L);2#TWENq z`W>VfghBd1Zv6mt;}57k3{H@A#O(x0zhX`hw<|h9!WCp^4FNMFoFM)VfYOCfy&yYx z5YW2-sutwGCj`_!fV%B9R1YXzCA{$aSHT(LHVr6k;0*DfnKQ(HAbVp7n2`Y0QwY@q zvUdUjJqw`rfx;ey_c%ks`8d=JQ2+ad7bLx2K{E>!ZXi2A7}Wj)@in|5{mc(gxBPI1 zq!R`g2+aYdL3V-EgJ@8E^SMC!nIbNnDC5fegdk}K6u&Xv_`}e_1rla%P}Q&s6%r3> zP+AX4n?PwBs5&QCh#x`rG!S7=0aRZFl&*uC*9N8gp!5_dJqN085!4<~TtC5M4=64# zxI+AY-xU()KcHrS_@FQWg`tKo?l1wFq2LDb7bx9__(IZO3Ys2}IUu#LFa*&s43Y!k z3SZRnlG6y0p4On5hpZQ7E=a7v4H7pXHpu;;cG(L8dKb7s!eEsfBn-B=LE>|t8>IX? z;RYFJx#R{J7rg`ZFUZXD&w|4k~*SE)xDoWA?^jmhe!~_y*fd}g-?MeBt3%s0`db0I|L!Z2NeHK5vca% zL?G;If!a5RNc$FGv2O#KeZ`Te_RWYy*!Kl$A5SoG{=0z1K80X}|3LZ5A_~>Mq$q@a zDZ!BNtRd1q1~1I;oPcB>C_L?=QSHl!M%Z@+YTp|o?K8k)A43Sje<1t1V^Hne8iTOU zB?RKXm=NN^GXaZz1!(rYibb_gBo1NU7N~t^h_r747W*Ec*|#YU)xPUU_NjzI{AUwN zoc|7Bu`eJL5uS7Y{r{hsfNEcT0>Xb&p!TgH(mnxi%=B^q$v#m0ok>Eq?^_bWK9(?u z|7605^PdA2`wYSm{sY-}I2qNxSIH3jK=n)s)V?Wr>;si01>T4<3{<96K!Ob1(N+B`?f&ELH2_D0ird+QT_cO z9o2rW42b=pdOjx{63%l7*#7`(&j%>|0?8d9dw)R1L2d&13*?RsXzn$F9>RSZ zkr4NZL}G>yy88+uQQh|dYX1u;{Q*jI_(H<+2b9m?iwIMY`viPZ-6vFl>OPwSi2Fd{ zasukUEjZit7fUK)O=@#s*B>aMI(gu5n0L&B>jns9hsKyz0B)cy!4 zT>zyMpmYYByDHG!^`Q*aT~g%;cWJ~x+$9o2*j*VhsNuB$YX1r-eE>>tfYLkA+;sxY zU5hJF-F3DC;jRNvcda49T@10P?)m_={|A&7@Q1`J1C-|QM~z1bf7Eyks6usDRTact zpg4Dlg@jj0EM|DY`VpXV!vSiS2b2y#vJ+H}MnJ_uWh^MKfbwrgENZ!Wwi?wP->V_+ z0F?_5pzb(>#T_8~L1x0r1%)`&@M(bB-2tT+Kba>sMbT=0rK}7s5?~R@w-DH z0FpK|ptJ;(RtP|(5l~nfK*d3B1NjpaUl#EQ_kh|XXB$x6^SuG$9*`eu;-TS!$33w0 z18VamK(!LK^?E8UaAIN`yT2Sp% zYem>+lL+x&NFs6JsSpTBSIF^~k%$_ezgki4Q)z?P2TEgWp!S`?V;{)ufIvh#1*MTN zsJ);x1WI=xu?I-@g8Hwj?Wp!zwL|O$saHvY_|qndIDa-k?E|?5WEThrBq98H<^TWx zcREn*``7`o50sClpxFa52ZTZH2c^#qQ1f>~>BCU^B$U1g_5bxi#JJ-Ns2>E9ar*&e zhd>Y{j--PSVF(HXHK;hqFQB*p(JILZKY9HB|6j2e)lbpA5I=#+ii~7P7)~Hye*)B= zY&84JpyD8VVfHUUvLCcI?NdLh{k#(p_P>DIFOY)Y{~Mt8>_)Ty7*rhDew7r2|3UV9 zPeQdnc@o0@j1;K<3E0mN3<-bkVASvzgNh^DzXZ+x$5T-4|2G9;{|l)70;%}@9{{x{ z8qNMRs5r9yDyazn8~p$OzjZpQ{d1=y?9WJr`k#RP3!wI_Mzen#R2pQyj@^C8;Z~83 z8g2)m_Md=;*M$(se9CPo{~40IK>qxQ2|Nn1ZjOwm)iy`g;`C$*#U0<-c3sg>m z!VZKLLLqUa5ekVjV<_J)6cJ}2KX^jLLFEg`Euiq`$UvlVlmGw!&sv7+o~_Fu?g5pN zJ{gd3O3A z?b(6kUyytELB&D#g8U4ke<0ZpTF+d#64m~tDxHz@rN z$sHhjS;8Rk19B6{Um$lhWFo@d0kp1qHL5!*RwLYT1nQ121l-{OwZ{!g`-LImALNb@ zs5r7aIIaUPmGRzl^G-7x{l9RZ+r z;5t-yJY0ux#}%kMShDfE;{nv3XHa*%LvzPZs64VeB(f3V0dj}e22^)6Zh*K06rM5J z(C{GO4ufz+Jb>cfIvkQ7KzRgYH%M#(lD!fC|Nq~)5!K!g8xi(if!h0pfV~B1_EuxD zmm>$^Uy!|;n^Eme*bK235CPE($}dL<=rxFdgs(*e#9oI8NV@Ze(t#0>@CMbBp!^XCU6AoR%y$hjyNq4Z6t`27e-z4;VMzlF+whRXkh z(*L0}dnDvs6n-cTavvz|foRY<>f%swS*ZQWk&ti$&5JYS5%y<7BqVGypmaebBd$>UKia?T6Awq4e1($oX(rp)|-} zu=p2dU|_f#1vxhkBn~h~C^8KC^1LBNa&P_-cYrW8QVB;A6h2V@S&K9FB<(I7bx2B`(%J5aMgWhf}V zL1J$TP}kTb-aswW4&8v1X&|)>44IGP0`3?{p9_V?jJ5@2r5D zu{j=+clO0Y^3KV4NZz>urSBk_{e*zo3<(fFg31jL=173pB><(xptKxRoeGo>YA=A! z;`AuR9flzDKzS?xswV|d5+Lp`gVJ?SahQG(4JrpfG{`&LFMxS0%in2)q>L48v<%4BtqhS29#a^rI$hJb!hI{f@HQwIqt9n zx%mN_UXWiv_ywByXCyu-eSym8B?Qb?NWvaYAoD?XYa~I!3l!!b2$&U+1POx(D4hT` zI}K_ED9xEv;P>kUsGfyTdJ|MHsBS1Ap!WgP-WO0kAp4dO&?Arx@xLOJHcE#07nD98 z5YU?dRSQZVJeBzUwICT1Hmi~$<=B>FNZQ|*49UYMk|BBcQZl6ez5_KI6z&-W%oa$2 z_(3cMVzwNVR!M>Q1!Tq=0%in2&4_{OO@Z>uQXuXIr6>qf{fu)%RP(7=mX6;OY z`1N=S#IILVAbx$E0`cp|6v+C+|0$63jd@cc?Of?pNV`@u6>=`2c`D=_WY<*4y->la zkaLg|Qz7Rd=R@hzREWPpYiU>JCu9(4ZQ-J3#3S<_>{0h&v>pv>cRHgVH)s+5}2lL1`x_?E$3&pmZ3N zj)T%EP&x-n7eVPNDBS?1JD_wQl%58q=RoNtPqK2?PA3*gzOM|4> zcToBZl>U_lNgu4~ko3Wu4oM%P>5%lH0Hrmc;(F;2``H*67^dK{A5@+tq(jnkb~?oF zvUEt=Y=qLCQ1O1KI#9X?t*`xn!(8NabRZoPf5)Ko87O@TO5cFe_n`C>DE$gbe}K~8 zp#A}+-;7$q;Te|!@lz(0F3f4C;+M_0!dE-0X+>+Jsn7TrV!Ax0jg&QlAaR;^gMv-c>&b}%JY8+ z=n=?)h6$9GgVJg_kg(CoL4=J*BmS^Sfa=LW(o;h~&jhHRX-IlD5YTf0s^=P14`|Ho zM^tDGhRVU!CA?<}YtCApA1R+kHDb9CfF%D_pvkUC{fE+qUxZa+c5 z>WzTXaZox9 zO6Nf75-42-rJJC12b7)wrKdsZIZ%2DlwOqwX;*E6(z~GI2l60c28#1Pc-#w$(+^NR z-=H*0KE&Vupk{!|B!?FKVFmIx2pd54g4m$&0;Pu<0(ukjA>o^q4@rY1`Ox%`4^0pG z(DaZGO%M49zuh2U_64Zfx1sc7sQX?*%>bn-nO6LMQz(Fhhf@K>o!SKu_nAS(ZJ^>H z|AO*iLn|a7=AfAi%15C10AY~5ApU_?NIoopnpIH%34;bG-2tUR;R#X?qCs)iR{+U} zQwmV?VGk24`24dCg%G#yE`*qOtPtYni-m}=yMX3Ckl7#%vIk^`K@r5?W>DG&N;?%H z%n)hA9(ExA!NQ{khZ>kYmx>^6T~GvZ>*^wiTem^!gHZZ7l>P!$_Y3Nt0;qdH=Iy~_ z7sx%Jb|+6eb~l6cgZ#aq7~-B4#Sr&whSIyC;s=W%;c~nf5)Pm^Pat3>LkYx8$r6Z} ziX{*~YL-CKxCxZDfr>jp)p?Xa>^cCY&p^emL-|ijAZ`GqsRabwPykI670@)%3{4B5 z{QZQ0-UO)MGoXGifchPzSD^!ccupvV_+dsV#I2yRH->Y{OGl75}1E`xo z@py!QS_Wv^VS}a}kog~Q=mDi=2T;a<;zL@HJO<)|(hG=&VUXP*tkTH?t`9-xnsh?S z1D8(Ja001AHdj)U6=m-zw!VG2?Q!XULE{GbaFcORf`V(3N<1CTmo zbN9IuHrJvXVXj9v#IF$q%w@GCZ0-aka~D9(-9W(H8c$XMkRL!86kj0vMK>g_HdH|J zD=17r;SQofaRdryo*sz1e_$~mq&5MnH?0DZ*FAbr!wzH~2!rw!SWh`bEyxWuIMjmV zKx!XUBGj(HqZZ^|P+9*2j~bA96Urgw^6YX*xxB2L6P$*(ltaqpL*ry60Rb}~Ai41j0ksX4 z5PRC7;R;F%KM3e?fa>u^(xcOdJ1ju{bU<={0s*xfpkcBbN*{yj1*N|p0(u#0ApYTi z(tI_La0BT*K|pTB$AExdg(`>}VR~V-2Go8~d7gvE z4CHdhvy5>0u%RDO?i}cc49Sc{;-$;4P%fQHaOIR z@&dBEHA+}f>N=?sOn-pf0}C4v4a!rXu<4ipsq4<5*#)v6qz;5ZY!I%1ss;H26gMET zj0uo(ZUNMdBz!oK$~TRP_`^p4Ev-l(rIi>0dN)AR$_{AS z0QqAE0X+|(ZUedb3?8+}@gZA?8XwmRG2;Vd9xNUxTVED1+q33Z!)K2hD7dUJ!=a@d4VF1@R3gqxu`94unB+$YDIg2sMn&jWEL) zKn#qtbK7eKy$PSQt5C*Y9I0vd0Iox9=qlR&*2`hNbI7mH69f*E08ImtR zW`VE+G+aPzkUK!}#WMvG_CK(=1KF>C^fAr%n1X8l0cgJf+58-+`4Ll4!xZE`aG2CW z$|Vqg1)3U=IUo#@1F3aDQhSAfT7f!*xeQZL?FN|%!XR@&;Q%Vj0`RB-*}b6=lBV`F zLek*zMow_M;wn`9K_kRIPP9BN^16@a=;3`(m*-3YSh1rEI+b3ySAx`)+c zI`*&tsR8+8Lp{VFyP@28Uiy*nrY&LmR{% z5MN^!{&3jP1__59P(2{Gg%Hs50IKH&lAaC%dK6k9_Gq*~+y=5|4*@+FS|NIFK>ZHV z^MQb#1JJNOh7{H+v$2N(EUYI$<8&I5o(LRzKw%0FV`#igYK5eqxllKP;-?3XUQqf3 zl@V|7r~#QD01YotxdXBjMi;d}(kF-y!nG}s^x4q@NiUOIAZ64%D7_LYz8*?nXo9G_ z)&z0)!zM_4fZXje2YWby><78&0W|JF{00JQ8QLKBa3H0TH3alHK+}~6RIeXYFUV~V z2`GrF)?C3@E*%1G091J(S)K72gY` zKXgFy2`Kz)=Hn0V51kOd{p*C}G0rZCUQpPrAfVTw3!>Mr3!*m?N$(Q^dM7~j&VbSj zx*%b?3~C0b9#>d^-|ZKmdT&7K2T(JfA(@dvz>Eb@|F47ke`hC>{|V?VfaH($I zCj|5ebVK|p*A1};q(@>Qet#xF^<*RI@gbl`0qQnwC~ejWvDXIbR#5mh5HRBc)ZQCN z_8uXiX8}~tGAO+Usuz@=e&EmxtJ@5EAZ`SeGoXA2qb+(MVFhxt$s+t=bpdL|4X7Sa z_*M|mlK|C|jihG{0X++#dR8Fmc|br915_<2Uy3Zo?GI471gdva@TdWWk3laa|AE2@ zWG0OE>_x42LwX_gZhS8!eA9a&^==WAu7Zj;Kxu|vNO*(H+=IsrAa{b=uRKd|`vv6A z4N!OP=!KLM2YNZdeb*CE`T|t^8dTjKs5>6@qRvHM3}pk)MT7haG8aU{FvzVS?6U+> zFU2f@)Jr*N?gOa<={M+ugokw>#J`}lvII>nviTrA1yDWJP`VMS7nHtl5YT%7s^f$9a>=Yc~nEI$?WL;P3KkMLg$4n43iQRs)*r`HdOD@&+e zkbOJw=mmvS!99pyK;Z=9gVr#9C}abV3%M6TXoY1w0wA*tmhlLDS;`|Ivk{_a0v5en z(DcSY_2!`I-GD_eH`G3uy)%|U#=Dj*L)du%i@uIRNE$l^^*1P74lIMX5#%Ri43Y!+ zbup6KHw4u3On}4%NUy|l{N}zyGS`KG+C(IC3kay~LsC13fLaqIwI}eX1%=B$XuA@0 z-W!a+a5|g7mg$hVhslG^ae>K$=vOmPOwcN z3B+$is6!6VNjupDrtO5NgPDUYpR$2XAa?^BN_&3!CP85bDbBbyJ>@701|{&pXJdFy_NJT~`(%uk;S zk@ug=E)YML9UlMa?(kg-Q3vxUaz71Z&bK8Hc@X>L65QsTTnUH>9`RC#p!McnYqJNTf= zqvsDhU;Oe_L8$WR_V)!qa{o4>sk zzkJa?RC)CHX*q~0k8Ho?BMt$dM-cf0CkAjjwScxUJ04=zJq5iGH5(qF%7OOhDg-lt z`zcd4K;j#o57L8N2R1lD z>|(%T<_)Ns5sx5d!}NjNxF8s6CYpU1YQfgwSZ z5!^=a*~lZX0*iZ&Y=qS7*yNso!i9l>p>F4aaF8E8w(@}Q01sebU;tr_O*{-4n|T;k zY~f*u$m3&hxXjA1;W8@&!xdJBfGeyF40o6r4%}j9c<_Lkq2M+%!-qS}3=VP33<34b z3=^W584`k+87Aa0Gb|`&X4sI!%3b%nTbgFf$aaWoEdr zl9@qa6ElOrdS-?NtC<-Dx|tail9?G4vX~h*L@+ZvxX;XBFqN5M!YpQn1KG?B0shPk z7ZRBn940U`eDGyvFeqYXV5nqf5NKg$2xwzwXlQ3N;91~bEfCT4~Q%a|D=xAHLbZslQEzmX~?K}*VxAQQp+0MgoVmlARA!!E>L(>i(hN(Mv z7?$qfVc4{ThvCQ$9)?>xco<&p;9>Z^gNK1_Cl7=4P96q}ojeSoJ9!w=cJeSZ?c`yY zvXh5lKk&n_N@ z3%ht2UhU#x_`i#XL1Z@%gZgeB2D9Bf434{b7-DwwFcj|QVd&V+!!Ua{55w}^JPe0+ z^Dtc9&BO3$HxI*?-8>Bcck?jt?%`oj-^0UTvWJHuXb%rV(jHLDlaYamfti7Yft7)c zft`Vafs=uYft!JcftP`gfuBKuL6AX+L6|{=L6kv^L7YK?L6Sj=L7G8^L6$*|L7qW@ zL6Jd;L772?L6t#`L7hQ^L6bp?L7PE`L6<>~L7%~Z!H~g-!I;5>!IZ&_!JNT@!IHs> z!J5H_!Ir^}!Jff^!I8m!NEAx5sQ?egCm1;eqLH;dT9|z zmw%pfMq*xGYK~88S!xc5ou2B9q9Q0YJ+rtZwFp%-G_MFQ?q6C`P+Ah6UzD9%1Yx_C z<|UV8=I1#x}k$*z^DAcMd<M)H^GZ^S+;S4rA&T>Jb2CdqQY%VIi&BHj6APR(5;OClQjp+E4Jk@Y&d$t( zY5)f{L;;xTn^{zpUj#M5B?6a>yAP5KR5jc_6m95|P@OKR#U(}gm0(k#Y!s`JCD4t4 z%9W%hmw=h>sU?o3DVg~$sb!hTsh)Z6rI{%>C4x(eu*!uemZf@P)8=1Vg2OrRJri79l$|IJLMqGd~YxLMhyc;F2O(LU&Ka z$QJ0%gM|ky+d$+IE<~4iE-flb%`5TDOG&MOISgG5vJ=ted{Xn$OETa(Gjmft^MX^8 z^Yc>R9tg=VP0sL0EGWrLE=Dm5l!sG`obyW&@d3`)sDT0%0+k(bYd|_P^U{%%4p>=c zUb=r#W_o5GC?TS&1_diTk%XldL4q0{xSlDgc_o=?mCiYtsZa-b=4F;-Cg#A>mQQ|u zc4-0FSXiNjYAaN#Ait;tVhTJ}1*L)o^K%O_b5e_tgp1J=O>k-nJd*`u%|u{Zf>TS- z^G`5xet~fi`6W2D1eWlFQ%jIiRd8wvsyE<)7o1UAl9FEzDSLxUlX5e$Won3fz_M;d ziMfy<2AP=Zn_66)n4ZeOU~&LdpMzSQ3=9zmco=>x;$*Nv5-S6-7jrVy>_w83{muyp{p}zR1J@xQ2AM-V3{a2(-b&^W@wU~`0rA>;@TL(UN%hK3_N3{#Hq zFswSl!*JjT55tusJPhxS@Gx*3>l!w9MC=Y|%Q67eoB55t6GJPZqt@i1&T#=~&z7!SjZV>}FRj`1)s9p_KZXDoY zIC6l8VbuX1hMogF3=Ic(7?z#mVK{J(hvC*a9)`MOJPbBxc^Iag<6&qz$HP!|j)x)T z91latIUWYRvpfu9XL%S{&hjugoa13IILE`FaE^z8>l_cmm$N(!PtNi%Tsq6c@a7B; z!-2Cr4C~JFFw8s4!_ab;hoR~$4@1gX9)<^Jco_RtT@fXu;Vlj!->;83^z{mFg!WU z!|>@e4+Fy)9tN&6JPa~tAnEAYDISJPr+63+o#J6IInBfH;S>+Uzf(L60;hQxR6yz( z7#PGrd4Pd|Vc!WJh7Bip7?zyiVdy%+!%%gChau$z4@1xi9tJyTx->h*!{Bv_hauq< z55tO6JPgxL@i26p;$bL(n&AS?Gf7aIg~7$x#n2Ga#)Y(47*dQ=3?U6+CI+ZPguAC( zVsc4-Q6)o4MS3Ql#o6r7oto|EdI z1Zw0m9D=$Fq$Hf-9kYKyY937YHmICyS!!NMI0Hif$Od@pfPo>2H6*ntH#0A>BsC_?Sr`Aulv-SxQ^HUL5=9FOsOvma81hhLA+-x4q&6}8TQxD}o8C^k5 zb?2hYlFa19oM33zfx#DKCnO|5bz4y`xV6W?uo7&8TYiymX--LI0W2np85lg65tS>N zagKQ@!3CLlkaoc$W}no=vQ#uB3=FNTp?SH91!0+~<^E|P_cF*cx|9~=WF{w;z~V%Y zC9pKLs1npD%P-0WMUPuiYGG+=UUDS^E2B$lPHG8;!TX^x2Qtz(v7jI`FFl-r;Q+HQ zie0)GCWBp@TEx%=NfnTYFUZf&0rkZg_(0(UjT4BJX9@$u23Y7ogkY+j6LWHs5|guw z85mm8O#}6t@=6Qbi}Fhg7~1g3`ljY4r4|)4FuaBO2+5Mf%n}BMR~X_bhBMfMavz$e zNLENI07*E%D4T)d9fnz8Z!=6_2};dLO)O3gPR&g$$jC2BWneHxm>W=(nO~GyQpu1H z%{`!83+fbrn#n~BJ|LASLZH0$5Na3P$Z!URYoPEAt}HG|%>`+7ECxj%h{f;)sv6Ch za0Z5jtYMi&C8dcu0Y&-XUKqnXmrY~;TeN@V9zsHfZ4&IrZ2-Hko!RXNG&b~ z>1ANJ01|a|oMjEqOi6XlNGuA;2WNGs%92!uXW$S6c?pq|99V)9GmBGQE0R+S zKs`bRhCq;6;NlA$VGQXYK5`g^GcX8%#9R_fQX$@VWMKFL5&>y|i~MAS^f`<3b5g@I z^HTE585pLqhJh-S66gH9luVFyzKO-z4DPtg9)?*U9hqsB(Eb6)ci{{So1m%4C9^0M zT%UzAFqnc|0P>t;Nl8&=QfWzQaX15mGuUkZyyR5Ziqz!Nl2j0rVICtWRG}$@p$C>L zd`nAGD;O9O5p@eRlo=Rmn7xgST=PmnBPpQj4H6*544oixP&X8uh(OMR6}AUJ?g=hQ zffU0G3}2AKBRIJzH8l@Xq=WP@Fx&x^>dyIjpwI&K>ENDVcn^{R_lbS;Q&Jfiyj_F* zTz!mF^eB0=9pZPSq2OEt4yH&M}ARidQpC9UJ5ii_Amvf=A|Ig z?gj>z%*34hbf^3Z&%6|H&;}$HCFX`RJZEstOMyr-*nmuT$w~JtNzG+o5Md5ZErFN^ za&|ZaLujyT5X^N>(0Fpo2UX(kE}l?{M$j-?S!xlq+Y_9cTnZ|8K)unT%z~2qqL6${ zv2X^4B#_-O8L(%cfP97`(u`(yW=cqYaArz41H*ZcTGzaiqRiA{&pgNEoNxvPWkyH| z0&1!-FepKIh!H#n1&9c2q>mwlDJV4^+|ck&tz>8g@j%TM@6<|A(J=|c2Ul`oi8-aI zAR&h3ATjVTA=swi{L-T2)NlrdZA_3(C|J~yfx*!w%rO8KKn#}{f<3?^Dmf{sMFEK= z8Q}~J!5*$Yu!x_%d|Vl`z363?-Slsh}Z^%-mFl31FU6YIF4VUPK22Z z={fGHd7$_&ElMqBaAHW$fz;-3A%;YT^c-+oh9MWM8Zyemz!1+^4$@o#ExKKt8IqwQ zpsWWgsPiFuJo8FY(^HGe7-}GVNEyoDAK>ce4htBDi_Gv6FC-sU3^E*rHTvCzw z+@RVKsfAk18j@2CDaaX0L2UQb5^$%$qm!DTIE zfF{@{v$(_q)Gl8Osu4r;$}{s)7($pqQCO6dpPZeV0!|KKbqvdqYie+=F$LFm;H(5P z99F0@1Twl-WR^hP#9#+<11O$Aamw%(6l<<|Wtm0!dAX^1C1Ht0nV{B-BSR8M9i+$x zsRq^PjtmS-Kw;>r!k|4c5(`2 z?Bo=fv5Qk+!!AyN1G_i{7MViAAY83O*$%dJ2v{J_9%Iq>0hz(9b1c)x!l|vjGZ2 zn;tIknKU4ASQx`-ka@^#5FdsEE~EOJQa;RFiH_kwqIAxVS)R+Fl+a8W0=;VUS4%xKO5l!et(T3zvD|YxhCUKzB1p zY^Y*J0)Pn(Fhc>%zp!;!Fg_y_3pjf(VP;@RXsT>dgi0*C4`D1^3ZWb4KllS;In*_P zY0%P=gNtu1#+5}I|AAC9FgQTzt;`Gz#He?Ks^7-Uz;J%ilSNVtPZzyd6b&&9iG-V9 zw-Br&kd=WU@K)R{1%~)rS+|UkR6>}Imv7vA@RNbTunwjZB2GRjfD=H>RKN)!^23Bo zOiE5kO-s+n%*xKm&C4$+EGjN3Ei136tb%yZ(aG7x)y>_*)63h(*Uvv7Feo@AG%P$K zG72I;Y)PES16l^-Odhzh)DR1);gK*vbs}=WqnDosR~Q7SjU7lZ6Ld!Hlv_LkGdQ@x z>FU8P9)UG%5cZB+JOUw5@gui*1b(nX#JAky5oqCru;<=Y1a3gtGj8z+xIo!UZt)0gftqvU7LNc6l>OlrkAMbLO~Wl7fdZ%-R)E-0H7&Pz z1bCoo-rV95SOR6Q0f}=%-1FxakH8zK-V?WY1inDk{J6y5f7rq#pa5krIL{>T!3?6F z;U1HKhy{claGy!wi#deNaED3Y2$VhH5tBdxRLz5%OafP+;umf)2`E6>8;&puEP$H% z;SiI62b8UFlS!ZlszzWplfVq98x+nl3GhJ03$8N>tbnl}FbP;d?Q(d+BrpZaF4)H; zAObbB;W3jy1XMiX3X?zqRPTZPOaduTH355=1nxlXYPifKU;|ZSaEwWy1*)cCFOz@{ zl+AFJNgx2KX2L@z0TrnE3@4Zbu0Yj1IK?Ee2g+{P#v~8`HGjfZCV>(t`@%XV0TU=2 zIsX!7vobKS2nZDPatjFbf#RTHKLY~@Lv*$jL)y@K_KsmW`RSR-@u{E%R}RG`DGs1B zq)_C+tBFt*Aj{{Mmc-|$#TO;!rKiFSK$cHROo>l}E_jSjPRz-HDneEh?~|XLnOoqH z1DY{~o5H|=tOhjBmRwd6pOjb(SAi^VuL4!!;NlV*@0(N%TGv+M-~hD_#VmW3q{QOP zW-4ig4FoTytI4=2NW|w{!E2U zp+I#ayDu#XOk51PJB&o8Qk7z#>3$oh-HQ+%jSMwX9vOH58hjW(2Ui+4}W zOD%#WK}^e#%nFTnE-H!7OD&I20Z$ae9fYJN%w8qlGru^=!2>FbEC-S)DN0Sug*X?( zGGw)&_)JbLE`b_@?B>v9a3VlXiKuA=7DxHTVA~vU#t_tSWP8&{dqlO83-at=BF!MoSmYJ6hu?Dvf ziAvi+nR)4;l`W}74xRzd;Gzx1Pat{l3Kcx^&iT2y`FYs&L)Ls?mjg{<=O^dqz+{o) zFciG*1GM@OG(rwa{!m3oYQo}!Qq$s-K?^ZaiVGC?+p7enrh%6^IDsbgOA<>wa|?1D z!eF9c9(cJsWYIe)%t0909#k_N!klw5K~oU<#hE4fMNkhqI|g_{On{K+W?7Zb9K=>{cp(h|QB_%U2ovoip`!B0~6C! z6O&Y<6a&j-1C!KLlay3T%T#j%Gqa@RRAVE;_8{kBnCnf=O;RllOifG-ObiWE%`6Sf z43o@~lZ;c+%nVHuP0j7l+AJ`A=Ba5($w^5@DJDk7hUS)*Ddx#0rl}T|CdNi)CZ?vT zxb!6(85mlcSsGayn;04!SXw3Zz$gM~S`=8TBV8Ng`+ zYACY5U}l;orKKh%nWmUnCZ<{@rWvQCq$Z~t8(5|$r>3POTHp+8!=ywrb2F2~R3qaQ z0|SE;1B+zSBx3_ZGfRU+BeP_jaci2KXp&};lxk*Xkdm5`mS|>fWSnYlk!WU|VxDGb zj$t1x{K0XATE11znl z7^WDdS(=$7n^;&{n5LyA85k#-CL5#~CK@EArKN(?EN1*7m-C=@CTWQd-8`6Ej8ao9 zEzHx*ERrmf&C=46j13Y^Qqz)BO^l5#4GdFKaFtc4=`1Gfg%&OiW2MOEfk~Hc3l0OR_MrOftaLZis+afoO3A$pe|7&QNM%E};Pm z5FzBMT#Q3v;t%)6`^835_kBNho)Si*J)8%cMl3R3pPAixgvXOJlQSv*hH| z6hli(%QVweBMTh)j%M*~W|@>^Vw`MXWSnARU}%wSWRz-|W?*S(V3=xRl|iJ`fLp{bcgs&Q&c zT1v91MN(>-sj<1Caf+d3qEU(&j_~q8sj`W%hlmy+UD8LYr9p~Cs)2E`d5XDFYHEt1 zg}G63ikWeuk$JLliU}yxu(^YX_((N2OENGvHZe#vH8(UhGcYnTG)hdfOf)kxH8(Ud zFeEM?B_$`Bn^;&H8zrS0S|%o2n3)(@q#34}8>FS0m>J=8AIb4ykz|>gm}+XC2x?#^ z8zv(3;k)TER&!z439qm;C?Zd- zC8n8~C0ZI98kv~l$lrMFfsM|AyCh-g<7gx#JxDS{OMkHZV_Q%p>a3@y^q%s?rQ82=OQ&0(kPDDB+qLqd%9U|4|$bNz45h8Lon%kgZoL@|0_<|-L{PI&$9m25mL9ymzSU!P- zH=^GH3NU29z|^6ZTST;?u!R?nxQB%o5xEp4ykPo>sQs|&BcgSMRUZ+pKdk!FjLniw zO$^P`%uI}ujnYia(o!wcj4Tq(3@nYzjZ8qj3{dc+=*1rXM6`Oag+GP$utAzhVv=EPv!s&;I(HpGp$3DgkO9w>sD$&9glHZ8z zmZRu}*-1pnja45JBj70dVCevyUy;fk;=-GV+8SGUlU)eotN&2vrATOxU=0t{a*2o$ zXl(vODwl{0Pa<+MHhUQ1eX+*CYL~F#Ie`CsNqD!>;pFUBZU)k z9*5-xB3jKTaR}2##OMZgeS~NCK+%b!7nYAu!-I&D4O@61&3S<=LJkw`_7E|Gj@2Gg z`)Nds7Gkppsa!$x3u5&`eo~f0D0DkKWVLX!b#E3r;P;v7rxP3O4{b%+Pd$(_3C*4py~L zL$S)Chbf9$s19U%!=Vb$J%_BuUL~(Iw*a&-6t>(FJsuEkEyQ{-9KA@CJc_j71C$xj z#v{P?#ut>9IJkt_t3X?FNu_D=nI);?SWbxE-QY3=APIgoh4B_&Q~RPNj4R zjStOB%P&e!O@SzNbR--Aj*bD2Va6s%bD3Defo$_B@xGCRLloR~;ECAyfD8u}0|N&m z2PCc`V)YhAxFD_HvR8>G+ZT>bp-9KP1{CENq!yKArWQMZf(@q|A#s3~4~-lmaGHja zIw88T#06^I4O)$vnpc9JKv2^$S}708P!3^G+py&fNd6#fHyQZ>ImaQqh$vI+LD>Z| zwg+iXQxtEQYr8zij5BN|K|>G{T1cM3s86U+j)01EP|^plQbyQ?8qd@UH$U7N4`MZD zqDCF=qfvaudz0?4cyEZ4L8%#|d>D`t0pt?Ycq6&q@&?rk29Qh-GLA;!P1n*JGfh!w zJ-GVB%!}YU0n)}nBn{N~phAAdvYg4o!N}MFDdKRaOOn$A5w?Mo33@s~t4qiz&yiCi zl84a36CCE0m*)|Px)x#=W|~3n+~bIQ%H07fjB&M0a5)UA(T&4hkTgk2q6epVhyx(e zjTYY|rz?<0;k6FPNZQ0J8O1sx>mvIx6w;aj&0QgFn!y|1s0jwue9kIYvk8g*xD~dv|hoEzzjdK-9a#>p%$XX1Nkj?f-M=W_K_U#en`bS*hDnEBV<7`QynL~MbjqFmSk^;>hvf~$2VBjwqG1_2AVS{L^p}B{0e}kHi@RAJSaa4Oq zj&~GOK@m@(c{saqf1JUB z8nTF#0d~evBpQaIqetD0KLo_?vNQa?!_H7}o{=H@Av;6sLkRmalrF8}0L!V>axi2I za4?7pa4Ct7}yyZ7&sUi7$g}P7-Sh47^D~(7^E2)7~&Zi z7~&W}XPGlFh%z!Th%+)U++cuUkbR&-ynZtK+V_-;OV_=xi#=x+Vje$X#je$Xhje$Xlje)_7 z6@t~-7#Q+d85qokq{cQytFZ>W3_8v{ce8v{cN8v{c#8v{cV8v{cl8v{cF z8v{c<8v{cf8v{cv8v{cP8v{c%8v{cX8v{cn8v{cI8v{c+$Zc#43{%+{7^bi>Fid7+ zV3@?lz%UU>?*ujmhJL8tJ~jr1UN#1X9ySJsZZ-ynIcy9JE7%wq9!GeK-!J2`AftP`Sfk%*mfme`$fm4uyflH8qflZKsfnAV+ zfklvkfmM)!fmx7&fk}{ofkBXgfl-iwVYdJS!!7{^27Zuw1_p*C1_lOU1_lN*1_lOq z1_lN%P#S<@(4mQ-w8YBDz`(}Hzz~T)>kT?tMg~@f4NMFT4h#$p%nS?+5ey6s+zbp1 zGZ+{e_!t-%HZU+WfDTDI!NAZU!N9=qfPn$6PGAHD0mBaraW=5H03$;K=zK^GMu_8;GJ=x~LkA;va~EI{Pi0_W*nveHbYA2IEaD*hUtkgE1UUpGi4rS} z3?Oj<9O4Q%#0_wWJKzuxz#*Q1L%aZoI5=>zxPJl;^$VC77%torWO&tv&~(8_fFT1E z`A{JXGXaKVaVUp@fnkBK0D}f7kwb+}gbFffI6*lK3=AKp3o@)wMet|r6=YZeN;FU* zgG+)8bHFDiLIfPn2{Is`WVhg)Aj1SC`wt`vG1P)06QZ1fmm!?Nl_88Fgdv_Ggu#`; zmmz?`hrtod1}V{CU;tmF3OWRikpYxS85kIl%mb+bVbGbD!vY^ab}S`1IV?034W%R} zA3t^s&5Ns6t&)|I!Gl(FSZ|`OogkHVN_96Z4=JO|? zK5-IKc&OBOSe4}shsx8S5{V5#8&o3}Y-MFX-Tuq(wMA>)iXSKYliqsBWZkbUJ#g_L zx0pnyF;n291+E+_jB5l0WY~Qk98t8KH|Nf|o7=xTSM@bCEM&QUE8TX#q+9#x59;c# zZ~ou=_~Q<@#T{;oe>|J5VRODYbCyNrCe~#q^?z@@v8`7#SS#VSS&M*#*%}U4 zS7!T9pFal%1~y(??4EdLhT#mGN+T~XuS@l2GkufK4IesXNfshI1n zuXnw4{CzWh{=*9k+1}jWFTdP>zFTs#@~6+ACr+K(8lcg#X3d%scLs&Kk_-(3OzU2I z{oekgF;ODCW^aqY%m3y)%$+VwCsTwvU6?*r$b^Q5YUt}9-&6V7p!%E6o!akr8Q2aT zG2kiVyx+`Nz}xqD$$FLa^YdJD-|k+qcJ0xH&b%j1pLUIlvtw8iT{lVHRF$FO-8+k2 zyQ>YWzv+a8hcDh$#i`~qgWzIgwB z|Di*NO4J=*dB^@t-YBtY^X837N4aeN{g4lgi{rb!O^}1-(!zz-Zy z=aU~Fllt=Q+oBB{1h(Zmf7b7R O&OD$=mL{V|^#=N^xYofoWb9{W8zTP$su{wPH zv7euxGuHgxyFmG^Rl}8-4NI4@W?x_D>U=m+L|pvvCY_s0FY;?h@GRQAS$K2WSr=bl zUM(%HEivjB)EI2eHw!RL^k7*XzTPc4S(uB9Yl~k!6H_C@u3ftVLPI;l<7-71yY+h2 zuYcjtt=W(oDd6qud z`wSK{D_p&kbNicF8^3&?ZS}WBJ9f-qp1<#Kp^S*A=)!&b7BVotC&6RUax(#@&7^V_j{VxtkJot8p!6M zB2@8WVf%+m-v6f;RV9!Nkht|#Tp_Zjb*4{XadF*QxRwI!2- zh3VFveGBE|vJxwAZOP2Y$~x5{@S&FB&CSj1-QxBg1r~EYZqMnFavlofC1{$Mx51|4qqez~KMj`Az1tG74LU-HR@ zzqYpa#@^qyKJ)GFmY1{Fh%!t|efWC){$o#0ib|N}%y?7OacSSrXVP=5t~O0ncK@Zt zQX|Z;^03AG9mz7AHf`GRz}-vGNnxVLgVpQL{eD#tbf1NR!DptCXl-q+WZ~~tqyEfU zCr+L`cyh9O%5r28cwNs}~6?}N0zR7#1V(Q|Pn{;yS?U7u&cCE~xC)V3? z7jNAvI@>%ytm@UO6!r;KbHf}R6}!5+Ql>k9iSKq>{Nhzt?8jNgQ#EcfawvXyvA93! zNQdAiZ^d1z%5FUe7Wdn&dh&o>fwub?r7|uqOEb6@y51ZW_CNr z=xA+r`&60hr5CSV>tbfN3w*V0TafI5Nvhr--q+V3Gyfjo#>K+)<6{52W4qt))80MB zM3w2lXPc6;vZOmZtOH|Wbau-uy1i`kX5r`O=Q|e`ZWP+iHgzVG&G$R^1EQj|cJnN{ zy=u!Ak@L3S&2OeI(Y(mW;Em_6d^HbQnM?QNCdP6xIQ&}I(s*<~vw+i&U(RAq2TXjweEFgv)%$4O?stc-tPBne z3+p;LS^e;~+$qzhDar6@U;MT5#All?U%o8ZyH|Eu=A$bsgF9Sq6+Sw`S@ZMhbPX*n zCkvUj+}r#9#(lKmcj5q57sb!dP2FecQN=K0S?Bh9x7y~+ky#q%&VJf}=f*bP+uJte z-1O3k-^cU)Zux!D{pvG)m>M?yJ{UTwijRfCY2gLY{og(wmrp+4H@D*RS@VQhjx(0M zJZlg09S95)l#k^{KM{cwsKGQd~!nY z<@P;G@3XF0yVkX?Zr>XtHr1>1{N~&7PS=Y))WpioaG?Bt%}j-_rtupR81-UzwYPkeEDYcX1&&>Im{B(K7!vYCjUf!VPI+vIZnE0BQnQ7L_hjTQ}o0s?I&d%U6&63Gw@9uQY zo0qqAIpez5i#Bfbe3hoKvb*7UzkIkAD7$K}-!tjn3Fm(kebhdl(q6Bz_rRN7dVTWt zdRy66N;mo#cLXkWJNfH%e#Qfab|DjU^OJh5c?WwWr@nacBH)`-@yAE5H@59bKD@Mq zVcqLRd-uv#R=$$^m3iCDET_WlrSaXD$8=5~YU4exahLVU)29pf?v0Id@Z@AT|M|kL zTdUr%Nhz}A+&*-um3!*iiTmOWB#s9V_M33pp{#EifqiX z%%r1T@hA0~+fHgt|2d2-^%>-FpR?X$D_av^AG zw7Znd?QI_~ID22beqDX{l0WTOo0d6_ur;P6=;r7;ZYfK+&x1jYO(AQ)(Zpsry0~CypLT|S3Ej95_%g0maPBJwzByH47{oa51!OnHv5o^4EowUBL+;X6W^YPML%jw&MFBHn8 zGJ_f#A0D!?Ij|MPinsHxu71}dz|{Bn#a7`920S4lAsTzFU(YQs)7)JloqsCt^)?;u#qRyrUi%zq zJZqLbm6zfC=Y&~~SFT>wj8?9-KfNg+Je>V9kJfI6j7YI#eN(r)H?lXyu=BH=_e7{1>r z?!V-JXXdg_)9h;+^}BRx!!<+>%`(lN5_iIshZ!V&M=Is-(QUblSFH+q$?(C3|6zgL zG~H;m-6Fd@PfyczwwSa0%^i6Oj)qmMyjF5gx#TuqfN68u%HMO!yo_cZd3e};L*`|* zn@cY!DC` zix>j-9lhfC$~aGP$fS1^Rrsdr4!%Hnj1w)}m9e-C}O*|BbR-KzEL*73c*Zr=(D=gD>ELfuC%Tos)h+a|^M zq22zEVD+~*fo1!@^-8oc-rkmYTdeN)?Wqy_Y9!x*s>(Y5RlZ*@i+YKj|9oltyLI>K zKcZI=E8nQimp1ej?iSNM^#9*``;_TQ_MjrBk(vF&hr{~=zqu+lE4DOb&U*3krK5?| z(b)34tt*3IH~wK}H{ZOhG1e0OK(rR)2buse8VW=d|_w5jIr!8kvTiSxLY zyem?fEEW@f_VLQlL!p|1)~nUVs|ay!+3ub)oyp-+HRHNxm2%hCL^f}~ zUuT^xb|t8NUX1V8=y{(iC2Px%n)t4X*%|a|@Bh=97a1$&wVylZ2WrxGb$6#ucP_bI zQdaip&(C5FJ-sj`hABH_I28kef|^*lpZzX!ot|O9)W{&FGoydfBq3Ec`vo2h49wk) zudmxLePfvDvVGP1_52{tmAiVX%NVB5HeAdlD?7cWvbz066&v3S$-ZaL+-@$7ah%D= zz@T&5&G+nQ4;7(J-ilH|oi0qKrsofDy0Y^ZGgleBS@niVLs_D&anYhA8S860yQjPl zSjEi1c8zIUZnf~ni0N;FI@(-xuC?agz88}9ZvLVePy^x9ry`xmPsJ~HFX_menmH?C z)05{K`ugFYen+0vbjY%=z-S9<{+8(|l4bbt_VuK=iiK`vnl9U)w2EgwLDoyN|^jUq;YeQe*)YMdqiVwm!m)@ChiSfZMyM zC${8_2oIZK`Z<|B|9*wtT*}jx&&0s6%x7lTzI}FO%u7@*n@pTMxp}g>{|UX+3pK(F zeUA?m%G@bDzN5#=qQ%Jh)q?)@`>gsM6duf89(8rzf*3Uc4hN3LXV27J76;yZDiEtE z)w^itPEIF|`#g0A+!+~o&a8Lqlj*GeZRe1mufLmN(z(wzU%q`yy1$R#py-Lm{khpM zS2HlMIW5?GLGahZrEK-SzP!_Pe=l8s>)+|0X@VcBzP-EKegDt1?I%v3o*c`Sxn%ir_Vs(e zY1Mt~jz6LIblML)hMe1O!NI~}`gH=8m0A1w=l${LXnglB@6Elxa$4HjQ)>>rPy1oV z(9kHbqu`;^vokY6J-a-yMYokCc$6l3Ja}-hS;Dqz%6oSE35tviJbQAF8u0kcw`2ZT zF=uvbhR4ihoqzt+$k^WExn5ek^Fg`pz8IE0(-I6g6j|*4ezB0Nc)&PM+rwFHqQ`?q zcDVz~=gYMVC?&JmPjHkyaP?kwzIoWXn9fI!lKePd>=)u;yLj_vr}@1KW`4UJ5oMO! zU5~Lfq(*YEFzxvNZ~mh*GmTHlop8wdWWz74?ssHgt^9$)IX$~x#p@+6V+i;5<+S^= zK~CB%$00uceR-U@Z^_mGjh21;;&N_mV3e5O7FOR~OU$B?)Q+w#)xBWk{)cK4W8W!|J8?j!AX8Y^eI0WnyNw zaKVBHv+_Tv*0L}$mXww*T(wGQ{oZd+?Qd=l3V{hC#xmC zzqi+-?2X2|z2$mVR#pkKmW9dh%WDxZ@D-MomEH0E-cFD#DC#{Yt1&iA3wF+3#&G@d zE%{Sm-Zc9`U>sGY3mevki zbKr6Rf5E3upKi#tuHC_7$gu8Y;hYldif?ZsuUy;Led|_~jMbHfJ$quFJblV6!NJ?s z6w{WtguS@DT;}fGy)$g9#a69e9T>ZpMOe*;q2Ot{*Zm}hn*J+O?Y}-ao<6^}&ADA_ zL;e4{Id-*Dy}i9B&YyP=3lno%D6nbMrU$$7s$NZ~IxA^#q0h)5FDJq3+uQ5fraM{% z3bP0l+XlXGl1r^ zz>}8H zlrhK;F#mx32J$1wuOL5z{0<8P5PPIxSUGs@+O_|I0RjKHxw!r-DJp{V^-zv$V%!c& z4Y{KLWu#2yY9)b{=K`SX7*P0i7G$J3qx zr2|kHfx-$DX2T)wL4E-Bhd|{Vs2zl!_DA`s?ORY7fx-$DW}vVe>Uh=4mEd}QG@eo8 znNWCu(!h!pD~5FR&z&>pzo>}Fe_0usA>D@~6j!v62Zb3Z>_A~S)Di)x{jzn-meIIJ zE89s;C$KaC3QJI!4uy08YPa0EbLYR1fWT?PqKw$|AQ&89r<}?87zlw{A zjfk-vQ2fvXgT{GsZQW~xAsgU=P(-tU9L18->;~eBBP}#J8 z{d({m4YIpO*`&4m@r4&?ZV42|ps)so`C!AKG76vjN98C_3!pF_Z1E0io3^&JjF$UU zF7vVF7f?L_3Tsf952kbgn%l(Y-cd2i^E`SOg2H;R#64)e)08Pw!1ML!?i}S)Kkh+c z3K}B@g*hnf2SYjlt-}HJQ9y2^1qPW7D)&HrVbIzdVId*#njp{`o56xXZUVUtpnsL1K9;C??C0%4FFL2d=P88n9n@&m{(pg5x@29+_Ou!q?N zvTq=;u8z)sYWfdUeuB!;hK2^PcR=9@W(+|B=5~-@Kz;)Gjaq2{6y~6?AE;n~r8`az z4yumzNl8ln2eoYm%3rjy7vv|9->4P;Aag)r4{|RoEIXLJ(mC z%mAe&P#l2bg6XtTz`#JNjr+j*GoUcSX4h~K1NjZqX9M|_(zpld2aN-P;$Wb{#=*gXYHfcGHnxHC z2Houi`4tp@lwwdH02Bvw_W;yFOA8CC#6M^}3ltVmV~0Hj@+-{GAU3%e6#t+&7^naP z*$r|7x$cMQgN4OF`Gel}g8U8hGl)$t28BH+4(RQEn0=tK2jm8F-H)sfR3^gA9qu&9 zugHEUmkkPgP#g?Yc!Am;pf(7(?nl-KY7>FlMxZv*K>3H(_JaHd@*~Kv$bKi64GMcu z9MIa`xXcIjJwSaBa@~)t4`dFgZv+Y>T=orhagg6Yegydy+3)1CLFRzsU?9Q;H0A&r zdjPqCT=%2v1C5OggkR`sC&-WJ{w9|X3VTo-fZ~FlegN488gm4VJ%Yv{$#p-vK9GMv zW27MSha(304dh33f0N4xg*_+^Kyg9u@Pf@bfaV~`bw4(Jpg9uITnWAXLu>m$eggRo zo1e)Q1BE@v-LSX-vFVLLbC95RD7k(>*9V#-1!$WI`@ zq5GFyJ}AsVVLy;z0!nwFH3*=!2;}+$mp+jHKx-#JYbZc|1la`&Pf%G0!l1U)V8S3b zfiTF8Ah&|t401cj4KY9~AbWIG}gDquU2si%5;}EcEz?@j+&T(mSa91eK$p{_|j2_X%?c z$W0)(f!qjkE6B|-_fwk&nGFha^mrHuKB&9{wQWFS5!CkQsCn4ekAuP*6y~6?ABZ@| zW+!M*!f1S9k1uM63n;9y#lb*{f$AX8o+MDYM{U23nunUEKw%6DYfzXERD9#I7t~f8 zjW5*rqIP(I!WdWh52QF~3=*_A8MH^4+I}8250a)pVG9alP*@LST;sDFbVdQFj2ewI zNSskC96(_T3R`?(KhScpu?SEZ1?rP?&+v&czqDLq!fW z4+ioNXxwt7#wW4<289tQtUzHlRN|MAJ3;Lh(3$3-v(2fw{)N~u9V+TTVFL;yP*{P& zj8M1^C3#r;1$4&&=&l2hUx!M((Au4#u;An6{SOKoP@KZT3dA067}S3S-E{)G^8{4R zf&5PE@Exq?gZvH(15jAJdHwo7C~SsXd}H$uXx$D-9CY^)=nf>%T}Ys?0F84D*0`dU zyFh*f`4!}6kl#UJ0169On1I+L1;ffY&|PStJJCSvd_Z%Xpf(T)gTjhh;XY92fcyaR z3kZY!2J$1wuOL5z;u#hOAofVbpmGlu4xl>{L3bsB?o0&Tod~)^5wykzw6+E`{{ae5 z5C*M(8B7@DCJ+X>5#&~on?Y^|`2pk?ke@()1I01OuOL5z*rOOV1VH5=dfOKiZlL}U z=x$Ze9jl5#&~on}=(B zjQVRd1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU=)moz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1Jh5+?KfMFDjhQMeDjE2By2#kinXb6nB5YS*?U~phyU}#`qU|?iWfcW1DLLrm? z|Np-*!tvk#|NoCgq+vv%#;|Mhis|C5uF{)Yqy{|DXc>*eYBpArl* z17sG+Opw_iJ3w}U?1b43V$&PL?4CAt>VIub&Htc#jzD)Cg6=a0-Gc(U7lWD@WG2XL zkR2eqKz4%c2KgK277&}(7JgWLde3&`Ivw}IHS zz@YQ*LFPI;IsKQDk@-(=KjXAdM&>`rO(3_y+z4V*6NAhJl|M>KO8-Ikli+lVEOqY( zC)OU2n?QL4SU1sI9ms7UH^SUYO&U}NgTk2Jej?RAkQ+g6 zrIz18W$T_jd;Uv^iw~asP9Tqg+zN6t$nDe!2T-~KmA9nE#XzYCxfSGQO8pKBznwdF z{0H5AM66#xWstCt(0^VYp8wpOoc}@hp;3f6Il*Ru%mkTDtUEw%2Du&N2TH;rJS+@c z#}l#_R2PHp`~%$qcJ1ob|6jj-16%v=|NsA#V2~jovp{Bo%mvWpn^fZPt!PYDLa zBO$vK+$48fR;^m~AJpH#X9uWEnlfbyUE&_*2T&RS*$J{6pW8rg z2l)Zy7nojRX^;Sm|;&134};te@&m{(q}l^h52{1(*#VLR)kUB>31kl_tU)w2>pqZKATwcR zgX{v?39=g>2Du&P4{~Wx8-h?e1GxdD1{B_)HVUY%0&25>?4+da1JVmJ17sG+Opw_i zJ3w}U?8JvbYCvuW=_eP1!W-0v1hpmc*@Y|zDw9BMRZ!RuhxRWh>_B}9P@e+XpM#kV zax2KqAh%PBL1_R~hJyN(gW1o>ZUea$?NLxXfbt+HkAU1pO$;&Ydd8#E^g znwtd8QG(_wL1i##?vj$ZPmo@a86dMjW`fKH*#WW(*h z+74Q|ebn615Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S|6R0pzm)M%g1T z1VHCR7%(s}Bp{s=(V&VM4*&oEzc$42z-6*gn@2-nGz3ONU^E0qLtr!nND2YaoEK2T8mi|u(2AKge3xq*tgXW|`c2UFKurN4u=+J*zY3cua|4J?3Wn(e&C81j3;zeLQvjJwuG@&!2eJcX7syVK-5@u^ z+yY{gf=`_~1>V;P3KwGSr-Gscu|7! z`4?n2$PFO3fZPOf8zBseD^PiS`0(NXJlx#iG>^>=P#lBS({gcg{^ww4Ckuo0g3JJ! zh0P97xPaUMatp{!Ah!{6Kg^#I;o&&i_%p?fZZ3+&Qu^NH53?kXaxz zvH1a1E`i(vayQIvAT}-xt4l!ZsX^%v-Aqtf30hNk@7_JI5uk7ZnM)1^=>-`AG7DrT z$ZT}`KyCoJ1*8tklhc8TTmQ>;u>TY zDDEjqJ0QIvGeBm6%mkSYvIE&pkQ+d50l5jJju3|B5m251R_%DVUk`qCs|o>;}1k6gR`vg3=L)4Qj)J(mE*3 zgTk5C?g!ZcvI}G<$Zn7uU~U1iNx?9EpuPmCPXRI;6fUITQU9U!|vc7ogra|4J? z2?q7)Kz%z<9Rn(tKp52b1C@D{V2~Lgvp^VRHpmW;U6i;LT`wpMKo}$rDl0*KZBU;Z z)b|GU!9n(tgF$*hW`N8BnF%r*WCzGD5C*Yng+X-*XzT+t1~S;kPq2jnsEz=YX&`@4 zf)pwk~H z-GKayo(8DJCzSs{X#-cfq0|jH(lJW<1KAJ4_~L;acYyLW$XqNKtNkE#16luo?1y1c z*#im>Q1}sxsZsyJ?58n}GyG|6FU>Y0O;0X z35E=25DjtxXv`v6oPmLfp`igJrof=V!N|bO;NSq|IWaJ>Fc=s>cq>#H7+4t;6rel- z1_m~eAq)%*6PQgH7#PABf*Il&!Wdi`f*67sJQ@5M{21aHJQ@5L+!*}9D)+Ly{|C~| z&cF!f!)SX31_llWkX<0RfTiHX2PTk?V1^QgB8E(cJce`zH-=1x9EMZ|Plh~(G=_Wz z28J_WH3keO3ge13=CMr6c~&c z3>XXbEHefL22AsH7!(+M7Oh71fFWSAHjj2Rdvc&jPA)S^U4x#W|d4%Qo7nv|Pa z;#QQH3o$DoBe6I&xH2ypYF2P+UNOiKBB0VRv#6vrF~=pdxF9F7k^!7sobz)F@{2P| z@{1ITO7j$Q^79K6G>TI5Qc{Z)N-~O46H_!5Qp-~FN{aOuWT4@zplWEPYNVi%2C`K_ z)mW2(0W1dzZ%kQGx`c&4rYr*ksH6tRhe8U(=b8C=3J^DB=A|p7W^a61K z$bX=`1x+_83gGBcP&I<)Nr>MAit>|Fi;F=%Mv{l<1E(=$Z44?53=D3Wd6~r-sVNHB zwSx0IB+Y=rFE~51pdb}$c`?X#&|HC6u)m)|az<%hHb{+zseMy} zs)h>AIr+)i5Vs%%!CHe-lk@Y6ONvUt86A==K+z8l2Q;;iEUVyFS`5ku;FM_u&R+<1 z?x`h6sR5K05OTq(>A9(SB?^$xhH3}v2fHK(6ebGJ0ig=zMVX+Of#h8zIZ)04W&EVX zX?z52rAP-?f`{rewqSUTmdYh04XNGdKef$ z=^30yAcc^EstF{Kfzk}T>;gw50|SZ}s4!-L=nn%0yh3nlQCVhkszP9ZGXtm&VqkDA zD9Fi72A8o4$%t|-EkC&wRE>ed09lQ5eqLT`a!D%4?VvIWSGk4)KpqVo7RV za-~8DI3yuq4+=9#ASD(QC_us(lnKnPP0dSDD9KjAOxW`3GNaY1HYd17V>xJ+`(DJ=$POOR#d z`9;|v?Vt)6T91J210_PR6euEdQcF@(^uYGQT%BK}kPGo2B;+*Gb23YkGg4DDA@y2F zW^O9D4k#{3EGkJ&Q2-mJk(gGJTBJ}=l$x4b04im`bqOe}or64mU$ikWFf%ZMdjfyj z%|owWj`Lr$Np$*gh1oWsv>omm7ILJGfdSNkVrKyLJQx^y7#J8pY#l~$JBHy+8OSsS z2Av8}AAy14Nd?GE28KUX;C2fGM>RwqAL;Dj=(m6Yq7S6*1hmWr*$d*oU|?VnWPrE> z#OGmTU=V`xLFogzovF_NYF{TYlrp4)l!EIGRCz}RPzyDOp%UEo2DKY7&2VKX0=K4% zz-EMmIQbkXWnfSPwfbCr14M?zb-ca^D=}nWHO{M1Tf?= zgn;`3=?tk1B@CVnDGZ=k;Gifh8Ii&gIgB=d5*4T~judVem?3=`-0p#twb;U~hn0bW zn*o9Y*dclJ*!SJ8IY-Ybt#{ImoFP8n4H|A{%nS@J)JUr#43*$M7d(`#F+yA!TZnTo zfO>y<3@Hrx3`NjzW@KOmg|jV&381rhF!Bi}S}zz9S4 zFZwZ*GUPHOfkl{jnHiWst|2-Ff%?Qn47m*D;PjKq;LDK6kOlS~6E6$IRTP*78jAsi z6caBi#4Mt7wg*ElLkfd4Ln1=~LoovrFB=0mH4_~|kiKs+LpHegpN?b_JH#Y+jQG;W z7S?;V=r22O~ZkjrcpEMgvm^< zNZExePl5D->R;SB1)?8Q9+vtcWglvahUmeSNPa4|q|4-cd)F5Yz5|FUh!?K5>OhT>w*pP^;(3#QSsn1PjXv@Awy8RDp| zaHVo4UT9fNwbGM=>ZK>BJchI=k;||UUQmu6pz-d`P&Zs zP+-=QF@lzXU5xn4K%(1(h<0%hxbp?-3o$TogIaQq7%c%%4;iB+z>U-wLTwR(+VPJ6 z|AQviP}`Q~*xEZn436NQC1k!LharR^6Fd_JsvVQTb4e-S_81cb4@s_rw3td5N*O?N zS1?mS?NzWjpvgT{*QsN39T$TSLq51Qh6piG>yQPhufh%LOhB>(!wk?sDOz7;15}I$ zG|>Q6cLs~t52zS&{u2>|jLRTwhs76U+z26#90!o`M`FSi9%S z_Y$PE`$Py*f15c;mi*s-DR0WPNwZ6qzvO|Y-8uqk7nC|sV?-WXjIe=Q)}S6ZXs!v~ zpQ1vl1&;&}-AaeFuCRwcXj}kn8qu!89#`GgMGO|P z3aA)z8lHniY=+ciYGX>QTg$$+Oz87fb8M(*Iz`zA6 z$%yV*BEk(cFI&ox2cFd}0*_vSO(MEAq8y?+|%h{sGwn>Vx2SB_vL5kjB1R#2|61+1fG7^ry9fc#2_%Da*`f z&^TQI@&cYQ9LmZas)aqM*2HZ0tq}u-3IhXjI3Ezhp2vs{yBKE3cr|Efl1CB}b~j(0 zVzAx(n(0mD+Q#>DI7Fdg_k}>24H_drEwhOot0lTb3t`A-C;_iiaAwG00HywHaC-n0 zUXK6&6P+Uwx%2^w2U z1kX%>TI;C{fefYKehp}bryEq;24eJTK;etgs}W{EHwiM9kjH?!rU_J6l4mYxt}PwB zz7MpP3N&Vz!;lYNi&er<$pC8cfz2hl_XKk zA_qz5us$0|#S}C#W(Ed^Em*`JU=iby$289ZO$=mS45%-I)-UXlhqQ-q=L3j5EQVnr z2TR+aQWCW01zjF{$U^#rFtzwoA*xz@DGTHVP`d+PdI6~ct)s%G2A5kwWjywng_Ku+ zAZq}@s}BEw*Zwjv%slwLL}u=?X>;n9vt>S6838S?6bQ6oKxr1Wmc%iS=EMNXsY&2< zwxD(hsHSBgvDSygVJ3K<9kfn10^Ex40hLfhy93>fNCr@81U7@{_86?@1C=-J(AomI zjp?HZso#+EP6`&W8mJiZSl|>zNPUVKUJ!9~_eVh2^q`AJLf1UN+zLuZpfLvt76$NC z4QOh{K?PD*UH@Ln=^M3)yJ*C0%TwKE{)1*qkNIS0?+`VpE+P0APA2y#t${K_|gzG_Og4zKINOKQ1+K{x-A6oa0Uv!#b zNb+n}DX*1>p=l$ArfCDzlSFMn;#fWC$B@cUj?y;;*IGoc1%v2^gc+zu3d+e~6Nq+! zKSK^f3X%($A$1`h0&PgY2v%-@^6wTjF;Ktg1ezE~-2*f+kh(A0 z*wYqhZ6qXA5WON$dV`1|+zCoEAhi(pqpF37p{fO?FB2xv2owa@=t9yLk5c5c_V=8X zM{b!vKl$#d4m5pP(KLNgrQCql9Yohe_-154=?>iPqqrtwX23o#bq2Kl6s;V302PC^ zVL)*T-iV0ap3=jfRzPEekXXiE-hi5G_Ay~u;u!v28iowchklrm&G30!9$B?`{1hGw4!N)R1H9V|wY|qc*&vzLBi~-^klDvOajp> z<>xBv?)Tac4YMo)>*$GYe}Lu*Q0MNTJuITfK0vd}mC&{8(D4_dbH6WmE)r4>fm{M= zgMn6?!}=_sk`BCvDjZ{E98?})jEswc*XD!T_@Eu_puO5D48aV^;62o!UGAVgDv(va zp!MLOk`HV;(c|u*mB;u^2ZaX2Y!=AsFQVs3V15S8rr~olE5ux)=QHq`i*PL)#8jel z3uG+0h@pf5y&M9q2?fuM5M9f;GJy7DV4A}LnYkdkr-*P9tUU@^jSqGU(d~JNTM+uW z7`maYanyXi0#quYjYS=RioxbWK;`5GEMh;fi0ObfUxW70Agz6i!6MdS0qF<8>;Sdp zw_p*wf+hy)2YkRH#$gE=D+1*{pg6i>2}uJWU*I>&Qz zJL^TZd)xlwm!|JMG>7|g6V!i4Sn#jICAvOyWvBqJ<^q){ppqIi-UM!u59UNlC;CWDJzmMor39{ zF0dIy*R`$;Dd1g7px6eTu>(3!1$Fj>g#m0LXx}L6=nE+9Fw&AVcqK3BY!*=cnuB#8 z6KEwu07E821=#Jy4Dk%*;MFwXzAjDe0qw*BwfPn)?M3)9Z;PxeQUzZ0mzZ{H_CO~FlqzMrQM}`6h zP`H8GlL&J_rA#t-2O#KtCQy1|;^k%Fg_fGg{YD(JfEMf^*#44a- z$bHELSj6sN5t9J5$k5s>Ay~vFU=ce46+>RL`U5J4+$WN70@V}@49H<%-~?%7fIHAeEpoBINkSEO8-vF-uX1IA+NRsiO#$b|AZL7#PSb!x$LI)tdp@&(FX>R#^jc zGidD|Y2_5iR>+w^ps*&kTmabzYReI?rxK(Ed>#cz54JoEQUGcvq32AHIH(OsY<>f& z2eqLTSP*M(U${Wp80NQw51*2(T)dz-to^Pa&nsvfBZ$EGAgBaDt@m*3AP3c;$Zcg% z8v{J21!{Alnt)?{D5%8=X;p*97QnS3(e*ee#e-rWwAuyalF>dhsGXLNx1UeDJ~OCa z1xky^Wnc-Y7mZfV_CUpu+tYKfh#kQq_5+KUh8xIM1_osFLfjx_A}CcLr%#Z|k=U05 zl@BkF#?)lIAmzjSt(yOvxI`4Mzqe{*UfUfHEgwJ!W>Te(12GBZtSdSJ|f`H8ewbD_|0*yOk zn8lB@1_IQg1=Yx)Qz$|G0bhn-@Y*-P*LM~z_~H~1`zT<|#$8Q?P(Kxa^Z z%wdL%DG@#P5)3}?GnJu$0pbqm2pVX#1l1j&wVxR7U<04R2->j^(GAV>MEfFuAp<t(zR=AgdS772wshkjViB4U}F2F5^0*jc052l-4d?4*lSbl}Y8D<#(8Eb;6!wf0N zd=4TFVauzK@hDJvkD31<<4&k~3MN(nK2rshzCk_!&E;TE{SY_cOVJ?xpmrN_ti$|_ zEuDhYL&oEXNqrFekyPM~sr2`A*dF3_1>20@T=-rP@zWlcnb<)1?lXZ1vru0qTC zNv!zCny8f1N!@V)86iZ(HzH>~p8$Dny)aIHmjC}Eo83_cGTVj8s6C%QDnG!1gLFX)6PP;CvX6WJkk zB53vswKf5*3&g0?xUi1bGVyXiOd)zi1>w4424C=LNT9Q)L1&C{LdHXg4mC%HGVs~l zp!Ia1HGQyD3JEnXh`Wd$jmBjfa!hbT%p`hj3YVGKjbWdDvaY4>1i?kD;bK(E4nQlqUdh1tDCAo^}KvX@}^Xi@lCv z;uT~-%r_v{!!tmwB($|id$5Sz!6F7df*iFy0Xdc&rO#x6MJxo1SOpfbB~UTszTW|; z7;?Yt0TwY9(3~?`+eQbASOONY1}tJrpkl~wIROTuAw z9js=+RnLRWfT_W(Js^Em%o+jGra`1Sya2fk)V{z}gDw9+ptFBO*SsMN0Exe+M#pgk0t&fa*E4 z`GNwd7_z#aaLE1;n0cV|2nv5}t_I10(lRc$faF2(a{y_twL=6Xe%=LScxhA|ICMKP zYyRh|+E!@%#1V)eqFaQZIe*Y@-Bbq9>?-68SkQSMkdR?uK%Q?1iGY+Dn0g@d%?3zg z!GEG4?%&*$RFZyY?wjI+HIts!?>q~2e-weSV4`bD$VxlVEGXo}U-VT0pmYabQBHJA z65T`yA9K|vBV?sH(QPeIsDWn0K{HvPF(1&Wv#?SbvH}a#Hvqd8RG*^eF3{LGMjJr{ z%W5lJu7$3PCwi6?)wK}!!O}WtZXpM}ODGt;ivu(g4ms0`1=3R@x-|zg5tPHx&0>X^ z1sdf+4GVE>XFf22=hi`|JwVP10B!k!TsC~ znO8$qPh8xC+z%<^AS0}pF$%c{1a#UmNG+(m+kv$2wId!={go!SPkxlYs$Ym%6 zj{}2ULv;HdmYX0a5f?!H2OlLMx?hBD4rq)FvI7j1#^56cM29)LdC2uKXxxA_UqaG2 zXx$^|96V4z8gzaXDCd)A4q}Zva@d1bPlC-Mx(q{@gYHkzI00-o2&~)zrG1+O5Q$oz zBw!J1z#=vSi`W({VmGje{lOw80a^uw*2gnRgtYUK!v#IBfP4VT@0e;JIRGRNnP&!- zU7*$*=(KN8x`wp*(ZdR2KEz&hIn?xrT@7-Y0@)2}i(yYG5c?6ahU^1Kn;s#D?h;5l zX9CjMG72e>a_i&g=w&i;>{~>?-Qw<>dD9A7ZcQUlZc*48hOQMSI;|r66;jH;d!w{SHav_)LVhUWoQPw!R;Fi---JMeS#|Mj81s1UdP%-2+RVPv*`4nG&3fX_CsTtBfB9uZw z{s-NgL^$0+);klEmSAQQN+B?HgyS6&4#<8*#3iIW`oIpkI|X!q%9$)kc~q{))Hgv} z`u8I9idC{#_3uN=qfG?X`I1zUK-M^bX4*mR0w)I096M-tIH{!)$UmSv8bLSsL3&0A zv!MNbqUW$-=^zz+7bU1i#Rl4`N3?!WIhM;1!T{6H%s`rcKZYWPG$j2j5dB2w*)Rss z?S;h*Vc@l|pmPF2GsK`)64)J}6$PlhA<(&V7(GK~22Tb@1{d(H4`6*nw?jc~|9plD z@R`M+_ynyVWhc=OpdIm`ojy4X{@{C6AUy(5YY4nbi|9Hp6ny?4Xr&q`bwJ8&(2f%D zdUB#$pB~Vg9GswcS%U5s1-TA1-T}JX0c;x4y-XK|00t&rZU(R}qGJ_QlIJj_f!AoK zfzNL)2H#b|L!vnW;C)`8HLs9d2btLd&3u4kndmS9oqz?o3l$Qo$SabWc=k48?C) z#A>jJEx;nSCl}Jz1=TCq%W;T2?y?!OmI1ZAg@~b+p%5|DauHIeVK3_-;{=fM3wgW| zxlDrS$6n4r-*DLrz1ZspB_84q-@L7U9i2qE(FeTAi69Dg*D`q zffD$x9ME_P_`GJK*WH3r2JBQ%=w4N#$7O@TcO~b7TN$9$SD-tpA+;6g%v(@t4jH{> zg6vTsdbGn4e3vrlwEk4^cq;m6I5Ptmv;;yP3!ekJxDaiP=?UG1$6$P`UuE6-9&;r0q$Z?;+_9zmFhk2zh__hXP0%I_)E8@Gm;iVow5_&dkdH z3!!aBLi@vsPD9w*^6)f7bS;4`&Ka@BkwhUVG*Ra;ObQ`kkIgM0)u1s8OdB9!20C~V zbT=Ic%M?Mv%=b%D*W9m#D;C|ptoy~Q2zEc+ECTa0WaSuWyP8TNg<5yIK(0YVo$o1v z%yA*7MSS6dJb%Sd3<;lI8OpDmmv%hSGX4;BU&!PnG)+-${>l}+uMc#?8K@893vM%j zR(`?yx5(peBE^t$6;lr+eor8snGjF{asU5E7bZTr`c`7a)P1>yu8K#X?te!henCB2 z)OI>(BmkqGF3SMglLNWC9Mbb~W(Z&i#WI?LIi3#6IpC2>&vOp6njAH->`*e1^DK1)N#xmB@7Iptxx3p3o-{mo?9XD2)a8Iw5Jz@*OWryv4hX( zg&0T0S=}Wcf1Hx7h24kPLLeSNSBIj8Eoh7gBWz`$JN!`ZxI>H=z{bRI#Udnhk<%*Z zE>ci9LiSyeZZ4=S1I@9#L7G!uQ3eT%dCiAaRPLNy@BL-f>TAs1Q=n-Y6r1?g-xED6 z3E4yB4o=CCaS)jQgVE*-5jhpv?|aH1^H#)~1M;hXfU~~?BjnyS5Xr^BU{FvFlHms3 zjcL#TX7hmVoHv*PX7e)eGB6md0kio)`=kx_fZ6;E{0s~R7r<-*&^_P=Prz(J(EYRq zAHZxO(A~5KEEOR0g&Bky7z`vTAY~=!tT<3_6(j>Xp9|E!hTPc$+CmN~f5I6O!MA7T zgI58Af*qn4kzOEeW{^5i9~=^r5HV2Q1e&V{jjDrmg4(K(FowuO&U*sQ&=xa*5--dR zpf(bujRR2!au=fA&%og08s-B!>m8C3L9S;A$f$tcy~V%~&`|+7H;jdWAz(oT{C=l^ z6BUqtLOIwkR?z)?jtn{A`!Fj()d2W@Y?wS^Y#lO22NMV7j5P4>1<*=rQ2P!vs|?x` z0jaNH>OiOF6fq=0Pw-}72yqPdmS6(KI3#T|GB6Z?U5`X?RKfj$A*WCUzvmZ2&IEeD zF$)$mJ*wbgfT1s@ih%*t1!cpcFQW>+Uk*cGOBG~}ngffzIaTm8f-&@MsDk*P3yZ!h zRgg622EJ(`nE@8Epx^m1Rxg4m6@?hs-os5F4>o&%W)>YIV?zXhFY0;#1St^@7=1?3o!8qjzxs85Q# zTLN@qO%T|BAQ$C>6M(mCBy`md1A}XrU&sS)1_n?=6=VkJs%aK3Q0)Nbfr{A;pu2~E zlrb;_R4_1n0OxD490TaG6-EXIK^AU=dPW8YuzHqq?CL>RAhUofA&3zTOi=X#Sk%v8 z0Ou<~7G6-R60E_2g@Iwi8YTt?8K`<5$hJYv54N22#(DP|pTc zZ-PTTXgHZg0HK~8s@?&IdJd5Jf}qtCU?)0oFfeR*!py+n168kq=6((aMnM)d^#z=` z)pLT(7lM~e4x9`O8%p>X7$TtNyP%oR2{Io|y@4QZ^;{tHc@gGwLCuGSKf3u`AoJ1G zgUrXJo*QJoFv5Ip28In+gc%r8aJZibq+S4_o(Jk4Soov6hX>>yH1#0&;8M>EGM@)w zJ}=Zgu=I&;J}=08H1#V)85nS>=L4IMNDq9V^dN>%kDea*85jguc|a#PgVRp~KLf)C z2hcq!0*TR8@X4LZgM_n?>m@*wp{<+D5k!-fPWMEIbqR{*K! z1+_@P`O86pfnkG;CBpm~r2GZSFNz@b0toerQ1!6zM^~=|Qjb)gD={!^_+yE?JXZ#( z=Y=04@1V@Uu%W>X;hq_2?ok1$7eJ_2VPM#h;e+rmx_VWRdZhYJ6_kF$7#MKXcWNN@ zi1NWf4U|4X>wBU35xqQ7M^mp(K)nWT%NQqK!o@d$}uEe3`SIT48P z+=3RK+935v{?%q+*f1vsQC^|@R|ieK4g+6xt=<5no)>-rpo0M@e-$Ib z=M9?qh9LC<2=#^x3>!c$gQb6T^+q7|Nbdjt|NnoVLfq~#2C3&o)L+KX@Pw5Q=;3by zn%+kYDm$2f;jRM1C{} zsV_tL7d<~(fYl?+w*aXJ-Gu_pU+CsrqN%rJVA$}b1Yth9dQjYeu#J61ZjM4(YEf}! zex9wmp`L-dLTX-eeoAIux~+O>h?}m3xC(r=Va{oSIx(lvz><T4GLds=9(c+#DNy+_u>0qqxaNAMQC&u<66X%?^>fKoK!iu>b=@0W$*wn*oo3 zpn;h|ph1{Hj6s4yp+T8JjX{IKM1yGta|{+3Y&6(ru*cwl!9{~>26qe|7<@GNX7I;= z!BEgp%uvQq!O+mq%+SWr!7$J;%rM3U}Gvy*0b%pRIOH~VPz+l5 zz&zAE+C0@f-@MAa%e>!ws`-5LmF8Q_kC>k{KW~21{IU5v^MB^d7MvEs7P1x^7UmX? z7Csh%7U3327Sk*iS!}l0Z*j!pl*JW`dloM({#YAR$I1O_FK-fTxGf5a;xQj%afK@ET34uw0v**(~{YW&q~fp*-F#O*vi(*!z$b= z(JIHP(5l?3$!eR`A*;()_pP2-y|VgZ_0NjaTE<$@THV^v+S=O9I?OuSI?+1Yy41SC zdV=*->)F;zt=C)cvOZ;f-ukNbee0LjU#wYdIBocCByE&!^la>GoNYX9f^A}LGHl9i z8f|)PCfZE5S!DCj=9$eKn-4aOwrsXMwgR?_wraLIwg$G2wr;jQwgI+@wrRFGwgtA0 zwr#dOwi9d@+AgzQW4pojpzSf+Gqx9OAKE^%ePjEk^GPSH-yPRGu`&e6`z z&c`mmF3~Q{F2}CGuFt z4SNhH8csJ{Xt>&No8d9T(}oufZyP=}{9wpn#A?KCBx)pYq-A7fWN+kZM;jSd@~HM(K++~}jxA0tL%c4Hx9H{&4VWaE6}65}f47UMqS znZ|33HyUp@K4^T}_?q!Es3A?GFsf?+jsk*6=X`*SGX@O~n=`zzzriV?> zn_e-!W%|VQo#{_g9y38RQ2x<2Gc$8D^EL}Ki#AI&D==#?Yc=aOn`$=SY?awAv;AgA z&CZ+MG<#z9#q6iqe=|;VVRJciJ#%AoOLJ#)U-Jm_bn`;<8uLc;cJoQ*2hC5LKQsSi z&TPSNAz~qAp<ns*EnZptviNVo zYRPXYX{lmqVrgknXIX4nY1wSqYdOPmx#dR7J(dS8k6T`{WVB+l60lOV zQnNC!ay-ld7CRXw``u+ytDaf!(%IGD{iZ3t8Hs$>t^e1 z8)zGCn`&EN+hE&j+ig45cE0T@+g-N%ZI9ZXx4mim#P*BrPuu^toOZ%?a&~%l#&(u= z&UU_b5q9Zzg?2S|jdtyJlfe1pg568IpLPuP?Dl;2qV}@(D)!p;M)p?rf#BQ$${XGG z3+-3ip8)5E5B3ZO3=E*AF(@wx7|0l?85kMZ8Tc6l8^jtE8?+mA8%#A=Y_Qf~yTM_D z^9DB!z8NwZWfuZCdDSpOtzTZ zGMBU9u~M@#wo10iwJEpRW^=+O!1jP0XtJ(`fq^03u-|Zt;b}uQBVi*gqco!;qjsac zMu&~A89g%!Fpf4ZH?B9{W_;Lqo5^95TPEL4WK3gBlT0_69y7gUDq&V;)@HWOjLlra zJks3VYPyw~wX=1Sb%XUD>t!}uZ64c9vt4S-XQyu$XE)7mvE44aZ+5Kq{q_t23=C@+ z7#I`{q72#$rW!mn_-ydoK+e$6(91B$u*|U8@R;Fs!$_kzqdcQ!Mq7+78a*}oW29zm zVjO6kYFuNy%y^6OMdPQ&VkXKa_9oj*PM9Q{mYeP|bu$Y#D>qwaw$-f7e5$#KMS?|} z#Z-%p7H2K4Sv<4&Vc}@G%yNh2Gs{1g;#PC5S#9`jjBUJZf^8~om~GwcLhZ`!uGlfy ztJ`PVSJ=GCgQ2Zg$%2qS+SnUFHH7Vir-> ztE@Lzzq0;dea!B%-3vQ2dnfxC`!@T@_B-sq*@FhNJ3wQ^2J!~F1|ZuH8Qd`t1KYmL zaI@ig!v>>iMvINujD?NEjFXLPjGK)+jVBu~G+t-C!}yT#MdSO%@unZlewn>8|6=~n zT+C9{(#+b!`iu2nYhD`(8(ABD8&ewx8!wyJHh*o|?F8-A?9A-~?F#Hl?ON@`?A7hB z**^pMzkz`Pw0!NF!3%?8!*@o;rrS&pncgyeWcuFpuPKk2keQg7jG301x!EzZ8)iQ( z+AL>SR#~&zNZ450INF5U#Mz|SWZIP5T(G%n^VH_6O_^=8?JV2vw%2SQ+nU+A+8wjI zWG7~?2C;1d0|RK$NtnS(!_9`r46hi58KoGx8AlkqnFO1pn>3ruH~DG8YFcL6Y&zX^ zv*~%$Z>G#<;%3HX{$`zKQWk$L#4MF9Z7c&Vb1ge9pIQE}Tw}e_`k?hS>&Mn?HjXwS zHYql3Hj`|Y+8ndFZ1c`W!Pdmq%{JIJ&-RJ!JKLYO!gjKD4t8F4U3OFK*4gc_J7;&p z&e1->zRbSaewO_)`)l^k?HLv@Fzf+sL^KdGP%>~c2sX$!=rY)5aKhlXfvlm9p`T%> zVU}UJVXxs`!{>&73`LBTjY5pljb?yba7&C<7_Bi9GuJS8H%~GzG;cJYYQD_;qPd}k zg+-`EjKwsIB^GLy+Ln%%ZkF+uDVDXCO_pg^C02W^Sgh5ojje;MBdtrVCt8c!q}i0% zOte{Mv)kr^%_kc++wHa|Y|ZV0?Go%N>}J}nu-j*M(eAq4dpjf5CYY=+*cKNH;^}I zHRv}uW^lvcyMdLVw_%FmF~iG-uMF9Z%#56kqKwLorWq|Y;xKkMK4yH?ILYLr$!gQx zrq@g#o2HqSo3WXTnol!dVxDGMY`Mfr&DzZRnDtd_Vf(H2$Lw#|GhAR`fRuNYhE7H~ zM#qdU8>tza8iU%pY^IW?R;J0O8Kw(Omzmx-ePSwWreqdj7Hc-yY=+qjvo~fR%)XfY zF#BW1W+7yeW>ID_)k4ft&C=Gg%(BDsgJql5GwUzbZ8pnKf0#h&Z67x!P0gEt;RErN5VV233*DPOKrrA{69J9M&$H2hw0Ww$aW)x|pW@2e_ z&GfbDG>cUhY}S(2(`**mJhS;^V`l4WyUq55?K8U{;8Vas{s)yE=M29YG8?%W1si=c zVm2-^zG?j0*xzKa$u*P5CVxzVP0LK%OqZM9Hf1vtGqW^1VP0m@WUttkkSbt?pW_uzqiS+~%>(KG3Qq z0Y(PUkzKL|B?gX$dkqg8UNd}QsB4sD^vw9Pv7kwyNt?-Jll>;gOxR3?O|?wZOp8ss zOqYXmx4M~_g{p;^m9&+W)p{!i1_lL22GBN?T?TUu)l4l+)yz!H+|90;KQjMi&Sb%F zA#0&!VQt}R5oFP6F~{PS#RSV*tD{z@tn964TOYI*uvurb+2)ANd7JAt&uqkOm2HpN zUbc0!3%AR*tF>EacNrW~3=;bFt)hI~d!Mp{NTMqWnAM%hL+ zM!SrT7%>`a8&?|l880zDVEopY-NfHyl8LNc4)cZPSr%0mY?fk{ zmX>aoK9>2Gvn_HTi`$skJhx%7-EMou_N<+yy|;a?{WSZFAipLsGI%gBFvuI!8hkNO zHvDE3Wcu1{mc@LFBNitt&RATqxMFd`;*P~Li{BP())Llv*3Ye_ZKm6tv$<;X)`s2I z%`VvPn%#3dh5|+g(BA542Fnee8GbWdX1v1~R8m|se{Qa3X>M6&)oGPxQ)Sa;H_MKp z0g^_`3_1+98J#woX13Za&9cPO%-Y@hmNl=9tj#f-D>ff&_-tiu!)yy}du+Ga9=CmJ z`^NUOt-PJJ-5k3`cB=L|_5~pKPhbR9-wfggvIcJrJ{#B?IvYxvSeOKxRGG{&Q8PC- z_b{JpZf5CX`ONaOrG!c8Xq+V_2HkHem7M!w=j=3Pc$z#uQP8k?=+uo{=xjKIje=J zMVLi~MS+!=jfRb_O`y#ro7FatY@BVE+FrALVf)vX(=Na+({6zsqkXddH2W3yd+l%A zGi+dF*uucTAY))^kYjMxK;JOUu)?s{aG~KN!{3HRMw5-cg3H@r<88)AjUOAknS`1Y zn_M$_YQk)qW?E`G+4P$!tC_M{o7q&e&1Pces^-q-%gnc$Up61TODCS-aVU+7#Iwv$<;X$;Qn#)V9d> znC(^DPquD$5q7zDEp|uk?%9djmx1bp1B?t47#JAD43rJZ3|b7H8GJREVhE~Z*i6Js z!pt(vT+PGGlg-=BubDqJPqVDBd}j5@io@E`y2pB%^(N~R)*r2TY}9OwY&>iVZF<1H zj1x8=ZFp?eY>jL^z^P=J?Izn3wjXV|?9}Y+>~ied>?YZ*u)ApY$4<;%$=<>~(Z0ui znf)gF6ZRkN87?p~faW=w3}g(<44e!i3>pp27(6u4F?2MHF`Q$#(eRAnLqi@TMI#@h zM57*~g+{lGY>WeqYm6rv`S$VHI??ovDWjQ!nT=VXS&i95vo&T1 z%|4mQm>Zhcm`^m{V*bXQ(L%){#-h+-ip3d=hZa1Rik3c>iIzQ<3oYMR%3E1liCL>y zf3xMVyJgSt01{5G3=$2~4RZ~vjb<7BF<~<0H?=oSH*GTQFr8|;()5_=71J=Y6thQW zYUbwVndbH8Y8Dn2=PYho{IC$Wl(BTSEVXR0Tx7Y)QqxM$D%Gmi>b%tzDrCtA z*1N2)THmsMYRzpUU?XlLW20k}W>aA^+h)1VcAK9zN_K{JW_E6N*>(kXe)bF>AntK6 z3^C+35;rn8N;4`oQZiOI?lGQde8>2qv66|pNt?-3ljSDwOw3F@OsASIGyQLBVCH9* zX=Y*WU><2P$>N*^v!$G6g5^3(F{>$7>#g*x&8!2gW38uKFR)%`4eC+4*#z0_w|Qps z!-mgR$~Muq-*%6!tX;j`HoFsc_w4@I+1h8@&#?b#4_alU!^pr8ZSc*2*-+kan&DzY zH6v4SdVgiCX%bw{_WBSnax#?Te&!#_3|C_R!af3$zWX+V#G|lwQOwFv# z9L?O#e9eN*BF*B>Qq8i>3eC#R8qGS)ddw!6O);BcHpgs%*%GrAW^2qgm~AoJVYbKY zfY}kV6J}@3E|^_0yJ2?6?19-6vlnJR%>J9Pn~RuBnERWDnO`=4VgAPagZUTpALf6| z87x>VI4pQ91S~`>BrK{d>Mgcg?6G)au^HUT_OOb!O0ZgJwZ&?u)qg7%>uJ`Dt@m1U zfb-xq+aS4misK3tT?Sit)#4+tX5fVwc2HsW?gM9ZKGiG&4%07 z#MaXGr=1$8j5lBcbp;s23^WWf3~~*w8r(9lHe71B&+v@lMZ8Cd*AXo9-}mGuvZ!(CmfTTQe(jd-H7b0`oQI8_lgO>@B8Q z%m$BGezV}Vw6e6f^tTMLY_;sN?6h8K4H_E^wwVh~l{vPBwl{1;>>}+Z*)6bJYWL3W zv)v8*XZEi_?sI^IO}@bfgRKTf4blut4d)o1H2h}BYNTW2Y~*1y!|0gN4I^G-A>(PL zE5Rd8dS=heewZnmtC`O--(fChA#IUs(QUzQ$z$nb8E7eHrEJw{HOK0-)jO-tR-D#+ z*0$D8)-$a4SaaFP*(lrO+i=<*vAu6AZ^sb81TI%s8Ll@hGpaS-ZG0M>E1OK(P25bw zOsh>BOvTKU%sS2HnH@JfWA?-BpP8AtwYj%>hWQfnmF8*|+7^x$i56uR)fOEVJ1q`a zoUyoQ@!4X7(L+GZ}L?^I-FI z^V#MP&DAW-EK)6wS=_KtwA^NS!m`Y&!|I$>k@Ys~qtp@@ zhuI|AWZ2}{l-ktVG~0C9Ot6`5GuLK`%_^IXHrs9X*&MMsZFAA)hRr>jr#7!`KH2=R z`ESE&%VR5KD`_ha9@{pywX}7xb+h%g4YrN4O|VV3&9N=9t+Z{k-3lI=duIE?Hr=k= zZknBvy^+1S{Z#u!_RH-*fx=({69Z^%AB%ygfs}!xfxAJvL7~B9gBb>M4Y&*y40R1d z4ATw!4W}BeFx+Oi+iXdwv$2~=gvlzCT_&$grkNfyJ#A`c=4^J%?26e7Gj4M= z^EC4c^Qq=n%>S4(T6kLcSuj{0w7g(>-}0U1UrQb*D_9#@J6Z==$6M!F*IM^j&$eD`y~p~r^)2g{;L%G^i_6>w)PhN| zDYj{{nP{`vW|Pf9n+rDgZQj}Zwc)Xqv(>e=vGul%vdy%uux+=UX}iL9JGh1O#P+i- zlbwj2vYnBgqg{Yqyj`AMtzEy}JiE1ad+biz-LiXW_rs3MUeaE}-rU~JKGZ(NzSzFi zev18K`%U%-?JwBh2aR|wU;?*Y84UOhx^$3 z>zbIFoHV&&a?j+I38=>gs{db^zBg4eQ#VU9D>d6@dDQZn)l(}s+iA9|Z4cN!ur0N# zw_9kp%5H<*KD%pnFYK5>@w9;n)IDZsH@IowZy0A-Vc26h#c-qHT|-qPeWPfj6r(Jo z3ZpioX+}jR*hEKRKJtg@_%tt!EBvdC(Sm6)}XwTX3`^$c+Mf3f~&tze^RqiE z+U>JDY^PwaYM*IeY(Le0p8XR0P2f?7xAqJNm>B*rFfd3PC>Z1z6dD{cxM^_Dz|7Fv zaI)bHLm#6+qp3#ojSd=}GP+=N&*+;Ghq0`&uW^v^eB&j?;wCaC2_{)4Jtk94W}B=8 zk96KO@i7fFon$)Q^tS0!Q+6`}Gchw2Gcz*}vskl5X3Nba&E?GF%~Q-*m~S$_Vt&{B zvH3@HHVX+0U5m>Wpt_{Pve%N?io?p&%Fk+&)f}sRR>!T*THUsKX7$5L*gC>G*7~va zW}7oMZ*ACYRc*Cw(`^fF=Yr>vc7glK&uo8#M|D6wfI_=QyD4@H>{i(wu={W4YVU7f zZQo+wWk17ynf(s?%k~Txm>47&85k@Lat%%zUNn4S_}7rrNX$sz$kb?t(ITUBM%Rt* z8odUOLbMsrFkWlC*O=Qx)WqDx!NkoZ#3aq6!ep|^Y?DnUCrvJ!u$fAm8klC8)|hTI z-DWCcrfe2xmTb1kY`dALxxBffxtDo>c^tUMz1Vz@`4RIg=FiPPoBuTzwlKA*u&A}z zZE@7%qs1=^21`Cm(5RKKWvt~S%Q=?&ERS2BwY&{($?#gqT7l*ymRYU0+G=&!>YCLH ztG`w$)|u98t+!j>w0>m$!up#vn~k)Mflanet<61~w>EaR&bAwEciY|t&#wKlWwVp8 z)3wX8tFilK$6~K$uWxT^?`$7tpJ88XKhJ)#{S$kJ2TTm0@dYUZ6$3W|e}hniWCKvY zbFRTYgTn?ahE|3yhG~ZRhNXthhSLmJ816OvYWU00&d9?k!YI)w-Kf-Pn$b$514c)U z#EoT)VIlX)_>ZxiiMoldiM0u+6w5WKHQ8jc$K;;LbMQz3DEy9@T{SbaaJLAv%C;)A z>9lFHn{Ic_{skx>eqdq%t>;!Vwl-!nlQskOt<`L-ZOZK1>_IE#L1Qit3_*5XHNIv1 z%9zch$7GwyQIjy!4AVsLJb;^9ngM!vt>so9&_GYBw)$2ZIjTnrKn>I`}fjv0J2U^i4X z)G_oiEH|8Nc+BvI;bWsT<6`3(#Ucj`i;$I-Da!I&zfsl_*$&8IAx(_ z>1Daha;xQE>qOgZTR}T%aPJ|@uF!6x-5omy1!nM=W0_&AVVP;G>2=eGreRjeR@bZ^ zTQOS8TUXjN+w|Hjv)N&D+vcIocbk7UEVi7s;tFKj>A{<3Aa6SC8_n`}4JZn@n~ z`|F_ib6{q8!N9=4W1wlEZ(wQ=WiZ=dp}{%>U&BtEI^ z&@y$R%`BTWHXCh@*jU(>*w)$3uw7)k-}Z#x!1HCk?T)9AI)2cr<2FgOGcGd;voNz{vu9?X%vj9j&E3o+%yZ2bo3AkcYtCfhW)WafWKnI= zXwh%6&|;g#A&YAkVwM_~wwC3Vjh6E)ms_s2+--Tx@`mLnOB*XUs|@fOfmW+&Rx7Ob zTK%;8XXRw=W1VMRZe45LZ9UC;h4o%*1{+ozHydx8ew&##yKRoxoU*wA9>Ha^b+e7I z&9z->yUO;R?GIZiJ7qgfJ99h8SVo84HoF6Mcfqsrzw9LKb?tlY84{QoG#Ei^S+WgE z4LS@a8ca7>YVgy5(@+~c>iXAE!KmG+$LNC5Eu%k1tj65NlE!Mr7RJ8DjmB-p$Bi!< ze=z=O{NI?@#L@&brm(_ft;r`7c2gcxGgAlCVDRi;f$1{S9j0eZ8O&JC!p(Bcs?0jf zmY8ib+h@jRu4b-h?q;55o^L+ee1Z8B^LOR~7Lpe77P=O077-S?7Aq~*S@2m3TZULh zTDDkrTAsDMZu!%a$%?~D%u3D5!phgG)2h$vfz?whC2Mu?nh8*Ue3|tY>toi}t$$d{ z+LYQ%0?%UJwfS!I$0oow6g+2p$o9A`vmJ+>nVo}Ol3li4pc&PX)IQA4AH!0%iseM$p)gf`OBPw?Uvmyg`{ktHA<;(*_p|L<}VjLk*)0=NT>r zuN`1F5-<`oQZX_!ay3dY>M-gBufY*EmM{)Cjxp{so??8!_@wc9R7aDfYP2ZS0n7NwOo3)r7G&^SY#q6J%g1M%- zzPYV=n0bbIt@(8GIpFa)eG3zd5{pWU#qDJ5vh4Eh&e&bF`)|i-uWfH) zZ)NWRt<9#{&$ef1Uqhm%_jXoHa8drhmFP|8{HU4bOXd-5! zVPb2t-DHmmgDID(j;X1swW+5msLrW1-D{Pji3sSo1dX8RoamJuE6MCR#kOcxCb3g29r_Qp7UMGQ+aba=qnE%L1!i;QGng zTFPdD%?BF|TO-><+br7x+dA86wkvE8+upZ*V3%Nj7(CL$Fo797M#pR*Y#?KxWME+6 zW)NXeY+!A;%TV4Z$SB4r)2ImAVqIZ$*yz5|UE@HLEheu_zL>C>@|p^pDw={uq>@eD z%&wW4nD>}ZGhb}J#(b0c0rP9-FU*-OG%YMF*IUY31zW{hYcOU;j)Uorn-&Sartp=)7m;Rv3aYOt7TvCv|p#Sx1O7Pl-u zSm;}pTGm^xw%lU5%kqTfHOm*4%vMrX6;>0hR#<(o@~{rFuCs2p?zNt6z07)t^=0c< z)*dzqHWfApY$R-zP}-0p+jH#-)4F?$VrXZtAo%l3ajb-@N^ z2GG%lfdq8Rr|98aEpsGrn#tW~y$QW>#%B&0@7ho7HqHkju8&p0;H;z{~*Nn`V@4)Mh%{ zw9R6M1*qTh*N)3R&_2t4A;=9En8E!eCW91%X$C6{_8FWq5Hz$m%rQJ`sBe^JRAJO- zw8-eOk)W}i@qA-O6EhPJlRlHlCW}q>n_MtqGZiz9FpV|MHSIK=Y;1D8YBO+h`i z9uuJ@t*6;6w*mEjKyxbF>`&M;d|+k( z9eEpN_|1^RD9kv+n9WoIJe#o1;)KOZt3>O)HlQ}1h3!^bP!C zG4V7BFo`uuF{v_{Y4XhEhY62qi0MRAJ~M4IYcpT7W;0&%UFOfsznb@3EV0;Pam>Qi za)sps%jcF%R_0dGR+iQd*74Sv*0t8{*8SGgtdCm@+DOb^%>nT5-~P2 zjxa7Z-fMiq_@c3@iG_*3NxDgqNuSAQ6E;&>Qv=fs(+Q@FO}CkzHGN>pXXa;~VBTeZ z+uYp3%Oc3a%`)7Q%PPdW#Ckn=o;uVv!M4ZtlP$NMvYnotwOyUvRJ*ly=j{jBWt6(M(oD?#^T0C#-YZwCf7{7OruP5Oz&rutUp@|*y!4L*`(XF*etZ!XLH-;hmEMMk*&XNj%}yyGTXzp4{ZP1O4*s)h1eC^ z_1UeqJ81XFPTStoevs1tv*8~@DWhbgMx#?k zFN_S0{f!TR+v;g1Gfgg;d@zwRwJ`NJJ!7hA23j@SZno6yr0Eyo)gA4;R zLl1DS2aS;2F=jIrG1V|_Go50(!j#QS#7x7i&1{O<3Ntoy5pxamHuEXwE6mv}L@YEc z+AOA6tN^!{KPhxK{uE7nh}8Eo8aB5dZ{ zEV0>QbHPT;R>L;mw#2r@b^*9Fv$u1x3$ZHz&jRt=i`c8!JJ`3`PX)!p0v7OmM43T{ z0jS?zX4GL6W}I#eYQ>0|s+y*mRhX5TH=C$iJm_tlQi-p@YX z9$Y4GU;&RaUp5FcOfsx6TxfXTP|Qfl$igVmsNQIs(IKN7MvTV(#%;!vj8_<6H0C#P zGYK-uFqvqw&*YiOCld}+L(_cls?!suA5Hbm(#(p?I?Ohjy*E=cH#J{oxzqBiCAXEZ zm9&+*RjF02)iKaoi~}s-J^o^*8m4O2rq*q?Q*F)coa`7buz;2|GKkwK*%;Zl+63A} z+vM4Nw>@nKT0i{B?uQ+y9`~?Mw4Z9f%>JuA!vjdZ@G$sdz-4G=7-g7i2$~IAXuQdI zm+>*<^TyAOYEDfTPu zx7i=GKMfjx`oIFNzu64<3?vNF4YnDSnH)FKHsv)_GCyv~W&H&dXAG?1^&~3{)*C!9 zU^cWf%rk5=oME`p=$i2h<22I>Q_!5qJBw+S%Pq~UT&z;8GOZe{j#*u?dS_K>J^I0*IPfc{$Xuy zGt1_aO}K5B?L6BzwpMmEcDL+w?C;t$D6oRpu`M@PXRz5|m%%}U69(rEt{L1lcw+F{ z;FG~m0|rBOLq0=MLm5M5LoGu?LkmNDLpMWT!wB%+h7`jL!yLl`!xF;^L(m?F7Q+t1 z9>WQSQw(Q-_c|;wTw%DzaD(9%LtCS3#!ro9!Sk>wra7jSrtPLvOqZIjH$7~6*7UOJ z4O0d)0W%{rD>HjDAG7mjFU_`qOEzN*P=D~5)mJMqTP52t+YDP%dmH;U`x*8O29P-8 zFyJ>xGblBfXt2Y8%}~OS$4JcRuMr!#?DQ~AGc7k2GgCL)W_H{R)T26JZf4}DKnTxMKre9ZW=@gHMm6EzcK zlNgg^6VS@p2PV%=KqWwuX{PBE)7juPYiee?W~pX5W}CpXJD|3|nU%9uoK>mS8mq@v zz2Nrob?YFTi8fnpIBjFWZT-i#wszC(zS#xYudv@~&k(>0TGqzEZ;)WH&p_O;&+v@l zJ403@U88=ZRmK~^tJ1$33!5aETr+uQB4Fxiy2A9Z=?zm~v$;xM`egOfiou%Qn$KF)TE<%0TFctddaw0u z>mSyCtxat}d1Z>tewzf_GTS!WrM9AW33g?6t#;rNG=UYoF8IE|Q-fKC3k=natc?7O zl8nlXdW{wuZ8bV+bl2#k5r?siv4OFRaiU4R$uyJYCgP@wrf#NwrW3*Sjh>mQnUcAt zd7ycOd6jvi`9g~o;MKpZmfV&OmJ=*bS^l+Du>#FpEw#F0({c;xn>!8?Qh z1}ugmh8Bj+hFylQ3_lvW8TlF=F}h~-!pPb9r!j*`nQ4dVI@7JDCrr4uxvaS^*ws1Ub)ielSDWt#k7Dn#IAU?m;)CTcOJQqSYjtbTT9 zu61pV`i)i_oiNfg?lC@Qe8c#yv5QH9Nv+8}6Gu~!zvi0$G!->7GMjAn&CJZ)#XQA4 z)4aj_nE4fR4hu62XNyG^%Plrp?6NpyaopmP#Vw0x7N0HHEuAerEQ2khEz2yMEoWH@ zS!r15T3J}RSY=q{T2)xJSS_>KY*l96Vm;e>f%Ow>H=AIaYc`K<(rk-u+iWM>&a+)+ zyU})!t(u*&U7%fz9cVVFhwR_j|FCCR07+9G2EhiA2Dt{U27TcE zL=1R5d7IG@BQ4_?<4ogx;|}Aq#&?Y07=zaSn3}YJXIpqoznij~X__rFJ8AyQ9MoFs zwwPp*30X&O^}|ZUTE<$_+T7a3I@CJey4bqby4kwJdV}==>qpkFtlwMzu?CH_gxbW~ zWZ6{MwAxIwSzxmTJo93gs{*Swt0`97td3dPTDw@cSx*74(sr|%VYA5QybYVJ zu5Gk!x9t+!pSE^(Mc_R^6YOT$&9_@=x7BW!-4VMBc3180+r6>-WcM4qcFD@#$==^S z);`r9v_5*7{U-ZU_LuDM+rI_X=nM=8Si$4@Yz6`bvIa&5;Rg8zEe5L%_84q4JYl%N zNXXdC*u!{(@kL`s6E71`OA*x0@HbDhD7EOZ2(yZ|%ChRV+G)jREoz-&ooC$v?ul~Q zB-@nQ)Yx3Jd1_;8yViD@{T5JOyuiu;I={iqIK+6X@jl~Y#;hhHCekJ|OqQDLFga;* z*M!AX!_>&s!c@%6%FM?s!>rBhl-X^w_hy3TistI(y5<((G2T4znnfOqT#E}9T$Vwnf7Ho7*(;1Sy>n_Qb3n{Jy~;Q4|*HV15u z*qpH8vK6ycvo*AJwym^nwe7K;10GNNXB%(VZ@0{j-98IEL&orcmBE0CfkDVX(jdv8 z#bBGkVFPBvLc0Q%Trr%9j%mmHk%(Trc%v{Za z%;L>*%qq>=%qE*HFk5T3%j~$>6|;wC@63LiahQvmE1Bz?+n9TT*US}|*P3^kPd8s; zzR`T2`DybT=1S-voN-Bu<*5rvPicmv1qjDvzTqM!eXn%A&c`CcPw6l z=Z^#|Wi7QV%`IIl11;k$vn?wuTP-J9&bM4+xzqBPqUmTxV8S+ZM+SSecRSy@|o zScO_8S>;>RSan)Wvs!Gm!D_G7DXZ&NPpm##{j=h>matZ}HnO(2_OXt%PO~nyZm{mP zo@KqvPt(tzTGwwPv#6w~?{Yv@x@Bwg~{|*>al}n~65_Y*yRsusLdT$>zSz z8=IdtY_`I-3bwkoR<`c8A-0LOdA8NI9kx?#7ul}2-D7(aytm^9pSusdsa%kH_|7du9KK6`0<4SQ2?eu}Zr1m~v-_H*r5 z*>AT$Vt>*8p8ac3NyfnNftBF}BLf4gfslc`fsTPCc>h6yL9RiSLA${e@O;m1gA?G< zzxM`z3^)zN43!NH3~dd)48sjm3=0kG47&|y7%ny3WVqk(jNwhgXNI2*8H{+1q>R*! zOpF|j{EVWFGK@-%nvD95<`}I6w{I>O-8K4a#9}OHEN853Y+>wb9Aq4CoMT*R+-5x4 zc!BX+<6Xwbjc*x0G=69N+nB>d)I`ZdA3XLFW|C}DU{Y(+Wis7liOEKjeI}<(ZkRkZ z`DF6ngvV6URL#`V)WOu(G|DvHw8XU0w9j<5=?c@Wrq@hgnBFscVfG2M;@(`qT*_R< zT+iIp+{WD5+zVVs#+#>^=bD$8SDQDPcbZQ&Uts>!{I$8EMSw-JWu|43WxZvOjdju>niJZ>nYX?t=C!awmxBf)%p>*WaqRIvr)D&u(7qt zvZ(>@GMi-s+Bde+cC+m++k>_zY|qiNplfdo8bLI*b0T$^NCoHrrL93*ffqSx&R?ntu~;R z)LPrUw%=`y?LfWeHoF;iC+u$63E8LFSJOJQq97XoZmuxaDqO;$Tu` zveNXh`Fn65UdbZgqTFJN#afH)7N;$4S-iB!vF)_O zz4~%fF7O)eZPtgZpII~7fYxuffmcEP1h3I*v+cK?30{lLYG(x=Yujt*XWwnV&HkeO zGtjynpl~5n}nJqnY5Wq z1J90}G`Vha*W{7O2a~TRe@&Q8IZXLYMNOr^drEaojZH00?Mz)wy-fp5!%bsNLA{WC z(-PBa(?-)a(>~KFrVC7$n{F^YV+z_$z+$FkreS7h23k||+API9&z!|#pT#E&QOg!f z(5kPmmcK2vtwOBotqxedwgS!jnp#^~`&&m^Cs?Oh=UA6nH&}OBPqCh7y~28v^&abE z)@Q6AS*zJN*?`t>F0=8m&9hx&``Z>YC+}hxWtVAJW;fApq1{Hi<93hj80Nj}DVw?43YfzaV zZu81U&oS`Kny3BO9 z>1op&rf*Go%)-qw%nHpa&HBw&n;kH_YIe(v-Mq(qi@AV>goT`iu0^#)o5gO6>lXJc z3@pto*IVwkJY;#_lHIDwM$gXK&cm+TZm!)GyLWc_p#0Im23{`*TBoFDU}NB95NZ%@ zP;Ss-FvsA7L7q{WQG;=(@iyZ^vuZO#b8GWQ=D}7KR&7?3tma#7vD#yG$m+V)7b{k4 zZfikn3F~<4#n$>ZVz$+`jkX=O{kBtWXW1?QuOixLyWMuL?P2h|{}tO?w)btH+P=2^ zX#36fk1dlOhaIn-u$`oxyq$`jmYso}nVq$rqn*2*uU(K`gk79nie08%zFnzZwOs>v zkNPCL>2`DN7Tc|~TW7b$ZkOEwyQ6le!8_mX*gdp+0bUXN)9ydGToAAqvzM_~v{$#+ zwKul6u(z{!vG=m~w-2?CwukIoFS4(&ueEQs@3il?pJG4Deu4cm`_=Xv?YG7t(pq0^| z4Ss@qm0X4bhGK@&hMI=@hOUM|h7pEUh6@Z&8h$clGU71uHac$f(CD4f7b9k4E@OUU z31eAfHDfDdC*x4#MB@VEQsX+~S;lLPw;1m--fw&g+(rbIBmO4gCV3_$CRHY_CcP%p zO;(z$H`!{k+vK3hX_Koa4@_Q}yf+ar6*Fx%bu%kBJ7#v%?2XwEGY)e}b9?g;aE(xG zUTc2a{DnEcg}8-*MX5!<1*c`1;-R#t&PqCW6tQ?9c9ZQM+f%l8 zY(LuS+d10(w$lTp?*(k&xdKT;4MTIo7{fZl#fGm9KO6ow+;4Q;=$8?vv4nAm@kHbE z#@r_QCT=EvCZ#5ICY>gyP5zshnMRl~n=6^?nA@6rnunMtnb(?kfY&uBT4Y$1Thv)> zvDj;I%HpcUJ&TXvxrHptR?CT&3oKV!ZnJ!9`PTBEC5si8m9dqzm4j89Rkqa;tLs)@ zt(dJh+PtuNZ}Y|Ghs_@w2HP;(*|rO8m)NebU1Q6zfepNOiQQm@!2yF~2ImaAj1HQK zoA0s^wp?WS(Nfgue3R9bJOOY&0}zXO4?SzHo!K*Hr6)R zw%m4(?K<0CwgGmjcJ+44?Y7$Ow!3Ec&rZl*&)&k`$v(h7+rGyBuKj!aFQB;pzy_Xo z5j9XWurN$CtTmi#xY}@&;SR$)hK@$QMn{eA8@(_RHfA*8Hjyy#Hib7Sji&FHJw1-Zgt|=4Re&-fP7P8Y5(22b&Ap=d{*vzu{M-F5^DqNygKR zXBp2kUSzz?Sk`2j$tsg|CYwyQnd~yzXL877h2;^;6P9NzFQBz7K3FEoS z)Ar}>FWX9#*H^ArCJTZ7-@Wx=iC4&{K6_=H& zm6nyhRWHb119tFu`60tohKxoWMh>RO&CZ*#ne&?GTb0|^+itVnYs=uk&Hy?;_OZbn zqa{YSjUE}5nlS{hGk}sviOE)zohExt4w@V_Icaj%8>&@1}Ho7)uHg-12Hj`}@+3c`6XYzRP~P{ZjkQ_WMA7TmT7gDFZzNLnAjMT@xRZKoeF|ck^fqb<0y$=GMhF zi*1hCEV12a$6_C6Uu?hEo?!z!xUKGPu-O1KBhU=qQF6iXw&6>|4~E|i1&t((E*M=k zPB+Ol=`-y!`)u*og5C0vr#vv#&gwAo>!VXJFvVjE#wX=`V< z+HQm0cDvhlf9z^OZacsZ-XoN35NcRtIKxoGXoXR|=@HXcrUGVGW|PeP%nzAgF=w>U zwg|N_w{)^RWA)F<&}NR!X&VjOdv=fPp4q*!duR8_?wj2&JBADF;C8>GL5|S{qX4rO z^I70k!JyNEN-SzEwpkps*lM-k>Ymk8D+y~^Ye$;|n=YF}Hn(ipZIx`zZEe7(gM`^8 z+LqcLv(2^ZvwLp$$AYZ>ef+zn|r4cK93;Ny285Ndb;&I>pj*hY&YA!w`H_rx7%*_!A`;6+P=(wt^Iz` zh@b!mc%7JpL6Jd|!F+=w2Coe44YwHXH#}u{!SJS`w2_-pwo$oJv(Yr8tws-wei+#r zdxBdqCB`$1TTQ2%t^|+7dYCDh>zUh{dzkx}hnPp1Czz+1_nPlCe`>C5p>1Jq;bP%q z5n>Tzkz$c+QD#wR(Pc5oVu{6ii|rQsEsk4Uu()aQ(Bi$tcZ)d76wB?Fhb)<`xUIab zf~?A{>aCVot+ZNiwae;=)orWCRv)ccthuZOtTU`nSYNjGw~ew*v`x1yv#qslx1DIa z$abaeb=&*4EOtD0Np`t*Rd&sGGwdwwo$Vv+Gwi$U85B6ceH9mjCkAf}4jJkjCmA;y zFEBPV$uOO5YH8+gw$kjG*#|Rj^Fs4p^EKvo%rh+7Ee=>bxA+8-PF-E+qB5E!nEFWqUki#52nm!TxR@cB4&nW zmS&}9t!8t~mYAJ3dt&z4?7tbWxxTrhd8zqK^KIq_&5xO%Hh*ufWT9(eWMOU*WD#Rg zVbN^SVbN=`!eSG6m*+i;#}@xAI4o5x^}#0sg?x08%(m?Z~55rza^IyzmzCH7 zHUc)HHc~crHu*MHHuW|wHrs7(+kCfSvSqjBvDLDTv`w)sv~9DU2wo|>-u9yHecN}o zLUt;426lFK@pfr;HFlHi=G!f?+hiwW?{A-CUuyr`p22|wyp~GPAj9CN0k5H!VYT5A z!$za|Mu&{f8{IN8F`j9B!}vLPolTxemB}O%X;Wj-{v(1*6pD+jQtcbBF zwpe7b-{P{xSBw7^ww95W3oXA}{kLkj-erB=`loe~%~G4AHt%ir+OpXR*jd>n+GX2K zu-j$_-lrG90q!5N8n_yS7$h0g8?+m2FxYNz&ftlGoS~{=x?!GSx#2>?Er$CH?;FY* zX&FTtr5a5)S___cv^Nem?lMj{S!{CBgvoTj=?$~#=GV-NELts3TZUMrSsk`IZS@Cy zl9IP|qIJ1-gLSv{Wb2LAd#x{9-?4sbZD2FS=A6wV8%X4Qvc%8{9T{WDsYVX1LK%(I~)3*4WV4(>Tz$$at&q zYZD1m1yfy9J+pYTg=RO*zM65Gixzcdf9V708YoMySqGTJJ}I>)-!y48BB^)lpeS(y^_wj)TWYq;?5)`sv)^V+<}&7> zv*eu2eavIPyPw%DB(2=6(yel=%B{Msrdh4Ex@+~xiou%G+RnPvdbRaF>j0Y;o7Fbo z!1a`|t%Yr)?GoElwr^}L>|E?XJIUAD?XWv)cMZITZK*v&0|$5=AiKeP18>88!^MW@ z3_lo(8p#@&8F?6m7{wTs7+o}yGyY~AZ_;V9!$i(B+%(s;&y>x~(9GE^)GXbs(yZHT zuGxCCgJze_o|=6(<23g$Hw5p?;j)&o*0avC*0(jYwX=1z^#h%$F@Xa-&&O@ZWAxc5 z#dx3b3bPvXP3Be>z81EYMV5~&Z(1o^FSA~6tz%3uq zaDdxvjRxBd{u-!(S5{3ov^Sb!G{@+f(FY?Jd%XE?wCZXdrjSYmkH zP|0Mzsh-(+^IPU`&A*$AS}0glTTHk3Wg%qgWSM0-$8wwH9ZL}_Wh*DE7At1!FzYh# zesB&Oc3X4XH@5TaPTT#k^RlnCKV;8vfrFt2bjP2;L<3_ZCQ~QVwWh~Sub8r!X_y(C zIhX~R%`)3;W^V3d9%>$E-fzCy{J*)dg}%i(%U70MRsvR{R?=2FR#sN`t&*(2TJzX+ z*cjMa+Bw>J+6CH0+LhbY+dZ^-VU@}3&_ z7zTlN4xTl94PImV(TLCZlL?>cA=5;&Y_mJy9n~!0`6V0kMDu0lo6MCg`Yfhd%(GZ# z@yz0rg|MZ$rL*Ni%XX_-R>#4o2Xa`~Sa(>@uwG()(E7Ob9cxA#&<^x{HpgwQ+g!9u zvoEu6vY%qV#C`*)od3W9?vG6}xMW~y=x!Kkm}1yvIMr~u;UU9+h89LnMnOiCjD8xi z8%r9i7<(Cq8mAi{Fur6gWFl*#Z&GQ}YBJSip~*gzBPKUZ{+T$N`kS6J6*H4FQ!~>u z%QLGon{Bq=?6jGgxu%7UMTSMb#SDv=7GEt`Ed?$0EKMvuE%PilTkf~CvI?+Du$p0Y z!RnutlC_g{lJyyDF&itJE}I=Te6~)uRkmAfZ`g9!8QJyN?XzRBH?ThiaytVjxGyeY z;Ac>0aM9q0frep*;V#2Rh8#u?MoC6ZMiY(J8ND;oGmbLuGCpSf$e6>#$Ry5Wg2@3B zE>mCAWYcQXC8lRhSF7MMLYlQJ(eUts>g+{7ZoVur;Di%%AemfV)2mhzUGmd2L0 zmJyZ*EZMUrtfB+{$4+8^(mO+!jI)e`el7@!RGr%GZlMQnXI}8sP{xTFa(lbgo zUS|BpSl1-k4Wq4*ZHetN+e5Zoc1Cu2c312K?8EG5fqJtFoZz#B zDJG!o$V^@!tCqpSJ+>&XE5Ldw_}+Nlnk5QH*|p4ux~ZnZ+6n`ve{j;A7)zSb>`d_eijWDTPZuhIcz@bt>y_4LtOaa5Y>I47*l5^x*}k%Mu$y4_z|O$F!2W42Z718#wcTOMXXj>j!%oc} zv~n-ozSO?nzSDj(gPoRLgk7KA z5xZY@R`vy;)nW_`4UlxSz~GmGyeAK z$v+c8Q$5ox(?h18Ots7k%x0NgG7~npGM{LEz?{vZ*J7r{Ba4p~e3prpQ!Sranpw43 z?X&u4cE@Mvg{a zMxed>jYeHY3yn4!9W=UVbj#?Y5u>r7v6Qi)v6Hc%ah!3Xaij4>jgJ{$GJazG z%b3MP&_u#S&IFVel1&zxY&1D&a?#|W$!n9ZCjU)1O@&QmP1Q{eO&J&%7H~2!FfuT3 z7z-GS7)yZ96;?6UFxD|PFg7u^0G}`HV(ek;V;o={VjKZJXE?<;!#Kydz_`S?0({kMRWKDM&jTAtzJrFb17Je8l*K@fqU_##fAQfX^X*V*JARjqwNLFUCKNLFW;( zm~fczm|)|!;$sqE5@Hfz5@V8Jl46o!l4DX} zQeskJQe)C!(qhtK(ql5gWQxfQlQ|{}OqQ6eFj-@=!(@-i0h1#pCrr+mTrhcJ^1|ee z$pq^u)-$ZQ1qp zVLJytPP@T&i|r2EJ+=pIkJz37pR#+!_J-{p+XuE!Y+ry++x=qu!}gCYgB^<t^pT#+yrzMZ-{+_eT;pAeTsdCeGYUU z4RjXo7W*A&bE7xx@7O=Ee`5avd^YbF`yY^b4F@g;8zu$@1_KrY4g($o0Rs^O2?H4e z1p^fW4e)8bCI%J;HU50Y1fdiopy6 z&?(wW3|4?o^W9>w!(b1}h~x)@F9turCu*}8a)3|v6)}_mpRBE7s9~sMXkch!XkiFC zVcW&f!_dbtz%T@DH7fcVR1*suq!ED}ixP_(ix!I>izya!ES6ZTvDjj<$Kr^^8H+0x zcPyS*ys`LV@yCM2lE+fSQpQrnQpeK7(#F!o(#JByGR88+GRLySvc|H-vd40Y4Czfw4zgYgUWU=D060wr8QnAvpGO@C;ajWMY?j!puvufX!Dfri4jb6|p))oYY_8bcu(@ONz~+g~ z3-GDWuvr2YTMqE)&my)GwlcN~wkoz7wxCm>O>8Y}ZEPKEU2HvUeQYCaV{B=ah6U_I z>?G`D>=f)&>@>h9NSoMM*xA@Q*tytwfaW6txEM;985mv|zA?m?&aW8VF?wS3#^{UD zA0rlH9%B(>8DkY=9b*$?8)Fw^AL9_?7~>S<9ODw>8siq@9^)y-bBvc5uQA?YyvO*6 z@fqVQ#&?XL7{4+8V*JOL#e~O1#6-qK#YD%%#KgwL#l*)X#3aTf#U#h1#H7Zg1-vt1 zj>!^}H6~k3_Lv+oIb(9gyF$axr#h9m<=a`q6*O<4M_n1#HpJTqne2w`Q@c9O3%&(Z= zF@IwI#{7%M7p!hrJ+OLV^}*_g6@xX0wScvRwSu*V zwSl#TwF7u3d4zR>b%u3;b%k|lxMytXEiXu-;*P!1{#s1?wBu53FBUf3W^x z&0xb}BVZ$8qhO<9V_;)p<6z@q6JQfzlVFo!Q(#kJ(_qtKGr?wt%>tVhHXCeq*c`Aq zVROOehRp+;7d9Vke%LVBa@Y#kO4uscYSD~B!+)t z!mh!t!)}7z47&w(E9^Gd?XWvwcf#(1-3_}3b}#HcfKHvX=dc&Bm#|l`*RVIRx3G7x z_plGJkFZa$&#*7Budr{h@35a>Kf`{3{R;aH_B-qk*q^Y!V1L8@f&B~n51`dy36Qd% z!GOa+z(B%4!9c^nz`())G=~vj5MhvDkYP|@P+`zu&|xsaV1~g0gB1oF40aeCFgRgw z!Qh6$1A`X^9}IpNFc@+eG8Axu&k|@bhScP+`WIHuI+(hcdYJl{2AGDJMwrHsajMx7 z(-Wp=OfQ&TF}-1W$Mk{e6Vn%_Z%jX!elh)F`p1;PjKz$@jK@sCOvFsWOvX&XOvOyY zOvlW?%*4#X%*M>Y%*D*Z%*QOiEW|9rEXFLsEX6FtEXSg2aQ;PR*e{#nwVOc+L(g;hweL282~%2jr`p0VIE)}Vjf{0W1e81VxD21V_slh zVqRfhW8PriV%}liW6og1V#8s>V@vWsw-_F9f!9ymFn?nH!TgUohlPlRf`yKSg@ubnfJKZ&hDC`* zgGGO94w6OASjCO9x9I%LvO9%L2<9%MQyamJ2M` zSnjYqVtK*xj^zu>FP02eJXR7`Dpm$oHdY>1Ayx@iIpFo>6RhS~t+3i+b-?P3)eWl` zR$r_bta+>@tW~THtZl44tV665taGd@tXr%nSkJLuVZFurfb|*c8`e*(KUn+NgxJK` zq}b%xl-ShRwAl36OtG0`v&3eN%@!Nb9PJsKD>ip*p4hyx`C{|OhQ*f0R>W4uR>fAw z*2LDv*2UJxHpDi@HpLcno>h%)i*1kX6x%trOKjKJZn52Cd&KsP?G@WQwoh!|*nYA7 z1D<67?V?q&)3GzLv$1or^RWxDi?K_w%dso5tFddb1D)YI$8L$;8t{zp5xX;XSM2V9 z$0onn{jp=Q=dl;Dm$6r|*ReOTx3PDz_puMLkFig&&#^DDud#2j@3Eg^KgWKF{Tll% z_IvD)*q^b#Vt>c}iTxY#|F%&VBF;p?sF*Gr> zF?2EXF$^(`F-$ScF)T5xF>C>!|1`&NiQyWU>aeXV47iCU|M0?VA^3i!E}b{0@D?y8%%eY9xy#&dcpLD=>yXj zrXNgym@=4gmHN^m^qkvm<5v zVUYkjG1j8OqQRoWVuHmCiv<=dEH+r|usC3G!s3F(4T}dBFDyP-{IFoK+xnUraEcVm`xs zj`;%fCFU#4*O+fG-(tSQe2@77^CRXb%+Hu#Fu!7c!~Bl<1M??%PV|(qP_R(3(6G?4 zFt9MOu&}VPaIkQ(@UZZ)2(SpTh_HyUNU%t;D6lB8sIaK9Xs~Fp=&ovDjd-#bSrW9*YBL=QKaCcw+Iw;*G@zi!T;GEdE$9Sh84hSn^m3Sc+Im zSjt!`SgKfRSn60BSejT`SlU=RSh`qxSo&B7ScX_eSjJc;Sf*HJSZ=V~V!6X|kL3YN z%oQ}Sv&R*zRID_tR#>gE+F-TCYKPSxs{>Y7tZrD{v3g+j#Oj6B8>f(T?)8E04+^o1u-jp`$L@mN6}uaDckCY6J+XTMzA@;F-4DAzb^-RV zQ3=qhUJ^zlCU7$(fUaT27>fXnIe=~oLiBsleM+hi5q(?G%}B`oT9^-G>=Nu?trz6A z=b#&trr6D}n`5`YZi(Fr@XbkEz%BhFb|=91Ct(j2274BJ4)A?SBK8vYGWH7gD)t)S zdzDP=E$nUV9qe7~J;3)X!9p(uJf>4%Ut(WjUt`~3-(ufk54vw@3euWs5<-`OVF5RI zA1STJdJY&I!MYNS)Nvm|BZUkbxEX#hGBAL86hBO1{RmL+0n%>>G0Oq>5+;~I&PQHi zwg-F~@&oWW$e{i>k2$E^g_O7s<`LkQI--p}#e5A?346u-jrkvQ2I$$ykdjo#!UbGz zW?1A{6j)SPOaPaWpwjVx#SL&-2q^`5z$G83#6vFYax7acJ1iG~OFU3nhr9#fizN^I zrUe5l6DuF90ILviKfA)J!>R{-&dwUEBUUHCCEgz^Pzk4CtzvBgF6TnP&i0_HTf4&IY?J;G6;~H$W@bKy6k~e$cUZ zu@3={Wg=2MWOo2)p9g3J^8;vhb;d4Qh#8Fu7v#20SJV8Vv@uD^67Zh2jadk|AKhRE$`@}NS|Xr!2&DZ1X?45+=L}Hm0@S8JZc(II)PUO%kk-Qn3&_n5kd^`q zxP2f3Z4-d<2c#uXVp(B1!E%b_8gM({2KXKl$o(UrnqSAt#mWPkBVw!)tV*m}z}?;4vPn>jXXz$3Rez$3LRwxArL0UwP8jl|}FXAmaXP65vyEV12Vdj>p5@WPhC z4wNGx-FMHnR*RT$M6O#$D61j-|z zTP!aaT`_uM^umY%Wu{5T*abSTRASs>JjHm4@fKrHo&e1hy#db=ahOOz=Yt@#K#)-> zP_6*Y_3SW#%9_9^hz5^^qq><@eaoAY|W&2WQ}fdMqr zWnkc75CF|3pcyRC+!g2!$}I+G4DNt$p9IZS@qlNiKyy-%nJCbCD4>&2Kxd$UPCtRv z94`zRj6mZSD&RRiP>#qkDgcjGOo7%IM~to*-7vai^u-8NUkDg0fNKl~=p1W-af2~r zHWf6B3Yj~F%$YKnfaXd;Go>0P7T{S?(0nLpCKNIUx&+)?ycE!NM#6KFSIjV+D<{_LwaJ-zRYZe1`-mM{t1W zFeJ=%puJScIA;cUY;z7$n+Y_Y0J&KLcB6!j1uQq@AoVR*fP0gm+kQZ`0;uQ6V<`ab zEjoaEhdGu7;5j)^ov_4mh2;V0z6#JCRc|aIyEQ>~WpRVgp?+b;VJ-rmUGV^qc7Vn> z-azXo9r(Io$Sh$8%J{_{i$4||&=Ct4@JQnX_!z|=@F*i__Cp3b+ZO>IU0hni&q>7C z)__L~7uX)KJ!AXE_J=KK)J~wOu9&?7w1~0HYV0i{Q|I2|g0~Q0F@tt9{$LfgH z8LKN+cdVXRy|MaZ#Q~k^a^3F;08}ZT3mU-o-uu zKHoIOevAD9 zhCd7?j8u$Vi~@`bj4F&8j5>@a7|j8X-d-RuJ6r%BtzCjNAN;`>G(M{Wo&k;kkI43b z=X?)f%=Ln1dL6(cuO;BQ-4)QW)+f-}Tm|UpY7Bh-b^#Idwvaj73XHj0(EJ8y%xSc#QN5cs9ep(gD2EU;=ms;|zGz6Lf+iXjT<;UR?luCUpvU)&e$n3MpAk zz;mWG);-oU!2LSN{3xhoF|cs~-+c+12L;W6g62QZKvRzZe9qGbX+EL@WtQ^}$_#`7 z%DiR^c+O!5bSCqQ9jM2Km}P*ar5?0-g%|b=3Oo!f%nS^m7Adw_1Xv2XU_jce!3H8` z3lgx-65KHQVZ>kzTK6PjtYB<_bM?UvW8~QY0i^N^vD%;moZ_gl%HRUZsJ{jgs|s#_ zNBMc6>j*$KT?u&QzzXn4{sStn6mY=1F6IUa>tU8ytpV>OM=mA5SpBhrrEVK*7i%Bu z5bGFdc?sDOJjHqrM!5+}^N`w<$410P#zw_P$HoL)v*MbygVeMyY{;3VdjOvM7qK(3 zbFfPQ&&RE>+hGTqfdh?T$k^N1d%)-LLHS^ZJ!IDYi#>w@4}${}sJ$rzo~;MX)0Y^u zfam9T7+f)U0-lkVFjO$KG4wHvFsv|aFq~jG2W?giRCX#DX&4z8Sr|DO`9SBvdW>cm z?JzoEbjIk7(GMd~iq0BMHngE6)hG@yAc(2Uj!=&G4J;F&A| zQw8WcnGn+i_^j0u@H~|ObQO#XcxDPVC$#{&?&S)2E=mBp(#6F*z&ygd0h~gYm~R2k zH+_JnQ5EnE6X>p4(5kH|;5nr;Xe+fK>$GgZvq%M&4bYWYTfp;1FD!ppLe^sGfLEk| zdOwiWSD?1p4(RHWA67ippmV%HZ8Hb!6!>2ADbRFv1ia1!w8BIHnvz_=D@#BO;j5ZiuFuDO=r6pnvNkO3W6Jy*0og>|0d<47(>xVI9 zPSgZx)fMO-VaOcl8R#l24pR+N$gF38DQHCn@~WymrYA7gQkj@JU|B)6#q0oNGfL9ai zTgB%9UdL2oHN^^4N`Y1{f!c78(n$t9lH>qgsZ@hh9-Xj$Vg17zz5GeQSS@e@z6OcM zRtLQH2z1))1lt|p_C50azlNQMT?o>QKWH`4865NckXe3M$^oq$+5nx`e*#%C#J~{1 z1G=h>LBc=-I+Gs*UL`aGI(H9h{Xa0^fX>$273^?Yl-Xq_rh7;68#4c+DDQwb}%5yAINeya6tYKK zpsPnh!0XZ`K-Y^L0k1@3U|>k#VWpofxCm4cy11F#>J^mPS7zr3zK-YHU7*!a}Fj`==!e|4uPP+o`74R4dh(O9w%%q1-=>%v|i$Y z1!N_%2zZ?YWQ9ZqbnWpR@X83tnurh3)y9z21zBxb0bO6b2E57=(nnwb*KnY;1zJ~` zVO?R}V-0FKfkqz=SU<4-V9jC!YAdPO7=Y`x1e+Y_D8ve+b&@}9h+Dw~S-tcC%c>>F znxz7}DM)=#P)q5G-4nYHXnhCVE0m6)uT3i8VTfS@^(8=~7@#$eJ_b49wT?#&ZWw^( zc#uahG7JmAEvX*p3ZoN-FTf)iEZ{Xo7U0q99Plcl1x5#qP8dPb8fbm81hoAWU>pNq zk&I|RJ%O)5)_|`G%0XLoe8S`f(i$KQaC$?mF@~%s{$MHsZ9hTMT8LSKS%cXOvn6Jr zatyJCN5Ndj+y^|G(P0j1+h2jN1D1fU%LxImcZZE+9kF;~@xej>W$ld*d`)Of2`b$K87wZgg`+N>~CFT|DFV>({-=N+dsArd8(_qtMv&LqJ%^kEgmln35QB%Y! z%MG>{Y$2l>0^rr!E_Nw)1<>``YoIOg7j_)>BK9WG5wQ;YDfWBpAAnN@!vr1%9wyLT zYa#{;1`Y;32B2Qs27?_2cfdV1216e3>P82{1j7Qu8bi=(#tnuS4DT4S7>R(}*EvQF z;MrnOeFkb@e}IlXh!~p~I~ZpeSAh39TrhrO{KXhF-v!#!5Mq)6y-j)!YS4Pz58#~wJXWCo7^t?&0oPRvz`FsiSb^HpkWo<^ za4)|Ay5fJ0^#$t>)*M(?_ovu^+C8B0tRv91whYh}{IJoi3fncd8*C5QJ^_z~3fRej zSI-7O*W~xuZ6I+KKBxx|>VusCkD-Ikm*!#E!U!4@g{_G70Jot*y|5l=JNg88ZT%ku z(5hF+IC=`a6}`d`R6^W=u56VsvM>rTiUF@oJ$GMxi$J%dKiVJ#fc?57EQO(|$yeE~GZ zfbJ1r0p7WC!R&+CA2S(q4Ra6k5a?+78go$l88n|`0G`(@u$W-6!QujV)gP$NkpZvu zbOEpCgUnw-`skopN(L*?>kDiS*gUWS#W-mEyTKMTBLW(YQ2>v`G}tY$J7D*~j=^5R-oZY>zQKNh{Q=1S z%MCo>J0BRpxilsv>yVrV)=mq!v2d!6j0QZ6-z@yk5&_475 z@Cp%7FZzKYXwMU9oif7(9tIY0TNwZTIUj=ng9HOYd*-m+u>iYY0WlX3nqvozoF6c{ zVD!M~gAs$V1b7}%2fSYsG)tIZ)c{=+F~Mqz)eNgSRtv0_fMm?y`!l1Ph*w#&g zR!xFdPso6G>ga&i6@gYyg4RxgR!*jX_v@5^*Gz&|OoH}Tf@Y0Dt15O_?*X4acLCg! z0qxuY&3b`GRzR&!(C!^jUl}yp0UE6X?cf2G>YzP5pgs<0^cu9%9e&Op0*Kr8P-`+8h#eZV_=K&$UTdwWX2YcoK5 zJ3*^6Kr16bB?f3uCum3K1@Joj2jIP&pm}J}K29F+P9GUN(0a!haJ>O4MZVZc*jw1A z*e|dLjqri*CwssHJ~u$YpunKVV1vO0gAWEWh7N`?h8>1W438Kx7%3PKdSazuy~O&CHG@ry%>tVvHVn1_wjH)_Y=Nuw*a_G#uxI$d!%)BgDyJL_ zDhwD5Cm8-PG%%WBq+r}(e85=4WR1xa6B*M8(+Q?0Oc~4q%yyXBn3tF@Fz2u+u()8s zVOd})U{zst!ivRO!+L`C7i%4x6q^|~2W(VqV{E6`p0Q=IbFe#N$6%jgKga$CXpb`k zFZezh0Rs<%0s{fV2*U%02}TV@PmE-YLyRXF|1eH4Ibypdcjn{%)zY2Y>U|& zGYNAC^9J)H<}b{7EPN~~ET&i-v3Oy@VVPjL#qy3NgH?o8kJSdN4^|S^8P)1nVEMx`!Rn0F2dfC{71jba5jIC`K7dd51I><(;*k*o7sMGD7?_wC44TCE zvvF#*d9;1!Wn^bs&?LUWphtf2=`fLS4$p z%F1BS*loydz{$oO%EBhh6y<0rY9I{aa0v5+rxur_7Ud~8Cl;g{iWmrigxQ6;T}q3R z67$M3b8=F_zGDt$;Sy#G$w(|ONi~!;kOnE^78ZdBC^)AUm1L%6CMT9;=I0s88_0sB znT5rm(jl3-sl_FUxdoYd=?cz{26E!OhDL@)MurAp5GBrQWMF7yY+wXBirO;DAP&i~ zp}{cgxP(Q5D{~X`N>Y;*ob!tc@{1tW85rn6tW$?egDg}ChS?aLT2z*qoLa2l?5Lot z;BI8l#HfTEK#Z&m%uS5^33(zIy7gR=6(J?>zT>=JS6&kHYP3k4?Jc z^`qMONhR0s52YQBbN(M?4xG8_dd~dGneC~X&8>$LM2?&|X)SW=K;s8_-jaKhlvbbm z{=1|`{n>Xf>H6h|=jpENdbRA?Ds{2i#P2f-1@}A(Sm^yU_SaLs-zMj$25Svwz;(9j0tuExCaLv)mk0%cnGBGnUFfMNVWzhH?9F?+s zEMhDo@w2|>#hf`)GV99S+V}Ri-}p4>-8C>`=`6aRj(uR@-;*gXh05TAqUUZENOe}Q4c@ioAFgG?bFmulCuY6x0X|U>j#@1ht zIc0bIH?hT<$1e+-FV_1?W)i1M-q+mM5j6%cerEP67jp~cyRTelDfmNcmV?1;b?=FaTncv8(>#_NSu>=i0+16lD96(}4?*&< zfuRLB3mZW5u#qJ!4=0h7hfNHOATgm$C=Ul`rst&=f%35l!F;?ZncLE3$8P22E}pyj z{xAHH$Q3+!!;IT&b@;uG=KXK82@d5KJ;!3N{deWGX*c&JR&qz5^l2-5`oP&+Y3jQ} z+Rg{(-^kd~=ivXY)ncdMQRPo55g$a2^8LaWuIpIBbX`mCtoOsa$ydcYjiNWi&5T+x zS0jK={N1$MiPo-xvgd`uxF@;)S-tLCnyveqf}-b>p2wdR*m6z3sQFmUsi+skl6(!}j`J#=w!@7<4-b_B>IoImw z(O1UYmp(3*{?fhg=H~Ej>w7HAtCTjWtkXMQaCDzvvl_>5?!7DhXL39g&?s7U7Lt#f z7{d*k7=sOXK#3om?U)Q048%Y@RZ!NzlV#W&42ogdiII^d-5}LK3&uBKY?FiL(UM|a za2_u&)+>gV(BO=24p+<6rj1aWn3<@Drc}SAxL7wiQ8(R4FFCcyzy{E&I8V}<-@rpa}_C2A$(deJ#L`kvCa zm3ANgS1~2jTLKqW8f)uS@4TbHDO~tEOEUWWi=_tPI-Q>OJI~jj+;69p zksLg0Z)VAwqp~*jlO7!2BXfhL)S!t~$)Jga3tCLEi05D55cEvH;q|N_7S1D#$i);l zD}zB1YB2$Amv9O5xMZehf|?Zyo_Wczf|^@cpuD_XFC{ZQGdZ=W1eC@M4Gr`mC5HxF zN3e&Zk%D7!acNO%ih`$$f^&XKssgCoKx%%N8kizAKMXAlj19~UjX-5tltCt{n}iJn zK{jv*b2%sGWTxd8$~rDv=t(`PbE-=1~i{^V}nEA#g*mUuC9PGXU- zf!-SFw?7xi|8Q;${9%6B)#RIAuD`?GDG%CHT!oIL%%All)oJVZuM#s)g&l6JTwV2P z1?!r18xC7&{i-`%!?slG8~frXwLj)D*j)A2Dt&G8(V zpXd4Yuq7?YYhZ1jm656U{Ji2ySP8bE37?+oQVwl;HsF~ zoS>?b6G3^b7}e>pJO;{Q&>ZIJ0?J>|>;-O&m7rBMNTnnrz%(=6d(CtZsketof*Ns?TK6rPf;|TKqq$*^9aFo_fGp);E;RM)1Wc zUm^Y;ud0{(pZrs-)!pSA(^I~Up^|Y^^f#HtpC=8c2TeUtu~esjZhiuX*>k~ML4zh% z1A`_O30Nt~DIpzyb$426u=CdZsR115rDQ5TjEtZqp*XLR1rm2a3Tr}rwI7!^%hdA;u1_y#zszmuDS7_FZ`YX{t!}$~t$(^= z?ro#%g|Euyvg&Q`|24_^z|xF2^0$G7lXJ`XrLx)#-Xgcj4lf9XbkA*U5ObbKK|o z`p7pyV&AGGo7NQ=rWqI7ttnWv`dt0Xn$wdOKD9QKIsfVt*OTzwURz(5Jk$P{bGoj? z(u{Y)`zKrdmaKf0#kIQS^O|(Otw+B1TvSk1e$A0$7c}kQCw`$XNBj5>E_$I8_`P_~ z-qwvt&BcyQ>`yGZvx*fi@TU~p%$vW=c;#Qo`>K;K!b-@q22G474M5#@^sW_ZC#Vg3 zsaFXr0T>xsat*SHEH|8Cx(t}w%!w&C;AI9V$w3Q?#zs)VC(lx4P+?%Tz+!<}n+eRQ zq8zlM6P9{0&B?*ki&k3W)9Vj%f&z<&ft!H^8y9FKr|oYJ0}~5Lg)bKy2UI6BQcZ-l zqC#$2y1rht{>!A(O@_LG-OHCN&i$Nw0z94s>wm(^OuIL{Q7W51D_s;lp;M!(S++tp zRz}xK>d1S8#Orn334agU@*i2>{rA1reT7i-4G+IvoK(smxFv6CU(};Gl}0~-CGYGD z`;z&Dz1Lokcd7hrCc@VBeU6)7%>M}+rP=u=ivHfUerw>NUX^t!$BwIOE!5PIvMSVI zveBEk_<*Y5qd6k(3#&3R*3VuZqY!hma3fFu?iD|d3T4bc?{M0|WvTFoXDK|Y98N}? z%(_&V{^=Lh$z1nzo%SM9_T{gVl%XF+ie9rs&MV<3Pu&c|a2>S;;BI|-c3hCE2pECw=2JZ?ii17ulI z1AT->7DFW#g})xz;oXhRjC0M*Lcgp3%#WY{JE{4{a;JUI_n#Er%UOV2YcR4hurx6; zl&@`HeOC07Q+*(daD8*-s>p>klRLY2PV=f@7L!__GM{as>!SAMn|yP6BX2H!y7o}Y z-c!xL(z$MQItpZ(=3bw>LC^osH=$tl%7B6=%VyU;`t&?@=goD`810{KTQKhptM1wf zQTmQ|cO0m^p2*m;qfTS(s?*#vW4}D`-NmS~_@mpM_ghw|O-WuP_(kQr$K$T^#Y+qK zPP%N~80GPM!@f>4iH4b)&D`_C1C&{VA1~PTA;|F55Gw)*6{pp2YDj(1$@Bh<`me5P3jeGG09@3Aek(^-B}|K^1JG=LwLXyp}iSdU)6XO?9GAg3=P$QE7#yAZp8>==SGm{i6 z!-7}?353I#4Y}bQc18mkIERzfkYAkF(9FQX$jr#l#M0C<%0L+*%VH?TBErC9#&{qv zLr^HTrQbCER*1U3;597CA#028I_=y&)*=3Go#K1v$Z*^BCC{hcYH5?QNPeQ5LvlJu8sHN5i9aqhRP zt-Usnme@=VoYZdd{?PsM{gL9beP*@iJlu^{-s{Ajk}E7vk_&j^|Kv{a&60c5wu+hM zJkD9WX-?ik(|5^h&X?L0ac-OW>g#ILbZ$rH-D3XPnj0izC+(WxQn6*Pi`4y_cJ^#1 zC;g1rzw*!g8TvVQelh<4zvET={-B5;$(1_}h}~__HPUZyiQ%f{TDGjcDCqLV^A5@t hDW7s%N-Wci?1VotD|