From 217d34613ee7749427022ea346519f784d327e0e Mon Sep 17 00:00:00 2001 From: "Radu C. Martin" Date: Tue, 20 Jul 2021 23:18:12 +0200 Subject: [PATCH 01/10] Fixed workflow for multiple pdfs --- .github/workflows/compile.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 2ada640..a0612c9 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -31,9 +31,10 @@ jobs: - name: Compile LaTeX document uses: xu-cheng/latex-action@v2 with: - root_file: thesis.tex - root_file: slides_clean.tex - root_file: slides_notes.tex + root_file: | + thesis.tex + slides_clean.tex + slides_notes.tex - name: Release uses: softprops/action-gh-release@v1 From 761c9b5c0da27e1e146ebdc31de2baf05088ab44 Mon Sep 17 00:00:00 2001 From: "Radu C. Martin" Date: Tue, 20 Jul 2021 23:25:49 +0200 Subject: [PATCH 02/10] Update compile.yml --- .github/workflows/compile.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index a0612c9..8382d16 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -40,6 +40,9 @@ jobs: uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: - files: main.pdf + files: | + thesis.pdf + slides_clean.pdf + slides_notes.pdf env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 1de057f1eb90d7012cbc0849ada656f718c881c5 Mon Sep 17 00:00:00 2001 From: "Radu C. Martin" Date: Wed, 21 Jul 2021 11:59:08 +0200 Subject: [PATCH 03/10] Added .gitignore file --- .gitignore | 291 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 291 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..be7e6c6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,291 @@ +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## Intermediate documents: +*.dvi +*.xdv +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +thesis.pdf +slides_clean.pdf +slides_notes.pdf +*Master_report*.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Build tool directories for auxiliary files +# latexrun +latex.out/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# comment +*.cut + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs +*.lzo +*.lzs + +# uncomment this for glossaries-extra (will ignore makeindex's style files!) +# *.ist + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.glog +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files +# *.tikz +*-tikzDictionary + +# listings +*.lol + +# luatexja-ruby +*.ltjruby + +# makeidx +*.idx +*.ilg +*.ind + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# newpax +*.newpax + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# tcolorbox +*.listing + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# todonotes +*.tdo + +# vhistory +*.hst +*.ver + +# easy-todo +*.lod + +# xcolor +*.xcp + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices and outlines +*.xyc +*.xyd + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# gummi +.*.swp + +# KBibTeX +*~[0-9]* + +# TeXnicCenter +*.tps + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta + +# Makeindex log files +*.lpz + +# xwatermark package +*.xwm + +# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib +# option is specified. Footnotes are the stored in a file with suffix Notes.bib. +# Uncomment the next line to have this generated file ignored. +#*Notes.bib From ec9660015caff1185b2af519e7ec9decb71fc54e Mon Sep 17 00:00:00 2001 From: "Radu C. Martin" Date: Thu, 22 Jul 2021 22:05:15 +0200 Subject: [PATCH 04/10] Fixed footer spacing --- thesis.tex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/thesis.tex b/thesis.tex index b7ad1b7..29db76f 100644 --- a/thesis.tex +++ b/thesis.tex @@ -100,10 +100,11 @@ Model Predictive Control of Buildings} \usepackage{fancyhdr} \pagestyle{fancy} \setlength\headheight{35pt} -\setlength\footskip{13.6pt} +\setlength\footskip{27pt} \fancyhf{Inter-seasonal GP MPC control for buildings} \rhead{\includegraphics[width=2cm]{Logo-EPFL.png}} \lhead{} +%\renewcommand{\footrulewidth}{0.1pt} \cfoot{\thepage} \usepackage[framed,numbered,autolinebreaks,useliterate]{mcode} From 1e1cc5acd86f6d950db6444919689cce333b94cc Mon Sep 17 00:00:00 2001 From: "Radu C. Martin" Date: Thu, 22 Jul 2021 22:10:08 +0200 Subject: [PATCH 05/10] Fixed missing reference --- Sections/10_Introduction.tex | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Sections/10_Introduction.tex b/Sections/10_Introduction.tex index ad078db..0c368df 100644 --- a/Sections/10_Introduction.tex +++ b/Sections/10_Introduction.tex @@ -17,12 +17,14 @@ design of these control schemes, as the results could vary greatly from one implementation to another. Gaussian Processes have been previously used to model building dynamics, but -they are usually limited by a fixed computational budget. This limits the -approaches that can be taken for identification and update of said models. -Learning \acrshort{gp} models have also been previously used in the context of -autonomous racing cars \cite{kabzanLearningBasedModelPredictive2019}, but there -the Sparse \acrshort{gp} model was built on top of a white-box model and only -responsible for fitting the unmodeled dynamics. +they are usually limited by a fixed computational +budget~\cite{jainLearningControlUsing2018,nghiemDatadrivenDemandResponse2017}. +This limits the approaches that can be taken for identification and update of +said models. Learning \acrfull{gp} models have also been previously used in +the context of autonomous racing cars +\cite{kabzanLearningBasedModelPredictive2019}, but there the Sparse +\acrshort{gp} model was built on top of a white-box model and only responsible +for fitting the unmodeled dynamics. \subsection{Previous Research} With the increase in computational power and availability of data over time, From 721953642c8c200c256cf66bfd3ee1b4dc5675e9 Mon Sep 17 00:00:00 2001 From: "Radu C. Martin" Date: Thu, 22 Jul 2021 22:13:51 +0200 Subject: [PATCH 06/10] Fixed unconsistent use of acronyms --- Sections/10_Introduction.tex | 6 ++--- Sections/30_Gaussian_Processes_Background.tex | 24 +++++++++---------- Sections/40_CARNOT_model.tex | 24 ++++++++++--------- Sections/50_Choice_of_Hyperparameters.tex | 10 ++++---- Sections/70_Implementation.tex | 18 +++++++------- Sections/80_Results.tex | 12 +++++----- Sections/90_Conclusion.tex | 2 +- 7 files changed, 49 insertions(+), 47 deletions(-) diff --git a/Sections/10_Introduction.tex b/Sections/10_Introduction.tex index 0c368df..a26dbb9 100644 --- a/Sections/10_Introduction.tex +++ b/Sections/10_Introduction.tex @@ -35,7 +35,7 @@ The idea of using Gaussian Processes as regression models for control of dynamic systems is not new, and has already been explored a number of times. A general description of their use, along with the necessary theory and some example implementations is given in~\cite{kocijanModellingControlDynamic2016}. -In~\cite{pleweSupervisoryModelPredictive2020}, a \acrlong{gp} Model with a +In~\cite{pleweSupervisoryModelPredictive2020}, a \acrshort{gp} Model with a \acrlong{rq} Kernel is used for temperature set point optimization. Gaussian Processes for building control have also been studied before in the @@ -66,7 +66,7 @@ the original identified model goes further and further into the extrapolated regions. This project tries to combine the use of online learning control schemes with -\acrlong{gp} Models through implementing \acrlong{svgp} Models. \acrshort{svgp}s +\acrshort{gp} Models through implementing \acrfull{svgp} Models. \acrshort{svgp}s provide means of extending the use of \acrshort{gp}s to larger datasets, thus enabling the periodic re-training of the model to include all the historically available data. @@ -81,7 +81,7 @@ multiple control schemes using both classical \acrshort{gp}s, as well as Section~\ref{sec:gaussian_processes} provides the mathematical background for understanding \acrshort{gp}s, as well as the definition in very broad strokes of \acrshort{svgp}s and their differences from the classical implementation of -\acrlong{gp}es. This information is later used for comparing their performances +\acrshort{gp}s. This information is later used for comparing their performances and outlining their respective pros and cons. Section~\ref{sec:CARNOT} goes into the details of the implementation of the diff --git a/Sections/30_Gaussian_Processes_Background.tex b/Sections/30_Gaussian_Processes_Background.tex index 5b66098..141a2f4 100644 --- a/Sections/30_Gaussian_Processes_Background.tex +++ b/Sections/30_Gaussian_Processes_Background.tex @@ -144,7 +144,7 @@ choices~\cite{kocijanModellingControlDynamic2016}: \subsubsection*{Squared Exponential Kernel} This kernel is used when the system to be modelled is assumed to be smooth and -continuous. The basic version of the \acrshort{se} kernel has the following form: +continuous. The basic version of the \acrfull{se} kernel has the following form: \begin{equation} k(\mathbf{x}, \mathbf{x'}) = \sigma^2 \exp{\left(- \frac{1}{2}\frac{\norm{\mathbf{x} - @@ -182,7 +182,7 @@ value of the hyperparameters. This is the \acrfull{ard} property. The \acrfull{rq} Kernel can be interpreted as an infinite sum of \acrshort{se} kernels with different lengthscales. It has the same smooth behaviour as the -\acrlong{se} Kernel, but can take into account the difference in function +\acrshort{se} Kernel, but can take into account the difference in function behaviour for large scale vs small scale variations. \begin{equation} @@ -207,11 +207,11 @@ without inquiring the penalty of inverting the covariance matrix. An overview and comparison of multiple methods is given at~\cite{liuUnderstandingComparingScalable2019}. -For the scope of this project, the choice of using the \acrfull{svgp} models has -been made, since it provides a very good balance of scalability, capability, +For the scope of this project, the choice of using the \acrshort{svgp} models +has been made, since it provides a very good balance of scalability, capability, robustness and controllability~\cite{liuUnderstandingComparingScalable2019}. -The \acrlong{svgp} has been first introduced +The \acrshort{svgp} has been first introduced by~\textcite{hensmanGaussianProcessesBig2013} as a way to scale the use of \acrshort{gp}s to large datasets. A detailed explanation on the mathematics of \acrshort{svgp}s and reasoning behind it is given @@ -264,7 +264,7 @@ In order to solve this problem, the log likelihood equation classical \acrshort{gp} is replaced with an approximate value, that is computationally tractable on larger sets of data. -The following derivation of the \acrshort{elbo} is based on the one presented +The following derivation of the \acrfull{elbo} is based on the one presented in~\cite{yangUnderstandingVariationalLower}. Assume $X$ to be the observations, and $Z$ the set parameters of the @@ -300,7 +300,7 @@ divergence, which for variational inference takes the following form: \end{equation} \vspace{5pt} -where L is the \acrfull{elbo}. Rearranging this equation we get: +where L is the \acrshort{elbo}. Rearranging this equation we get: \begin{equation} L = \log{\left(p(X)\right)} - KL\left[q(Z)||p(Z|X)\right] @@ -312,13 +312,13 @@ lower bound of the log probability of observations. \subsection{Gaussian Process Models for Dynamical Systems}\label{sec:gp_dynamical_system} -In the context of Dynamical Systems Identification and Control, Gaussian -Processes are used to represent different model structures, ranging from state -space and \acrshort{nfir} structures, to the more complex \acrshort{narx}, -\acrshort{noe} and \acrshort{narmax}. +In the context of Dynamical Systems Identification and Control, \acrshort{gp}s +are used to represent different model structures, ranging from state +space and \acrfull{nfir} structures, to the more complex \acrfull{narx}, +\acrfull{noe} and \acrfull{narmax}. -The general form of an \acrfull{narx} model is as follows: +The general form of an \acrshort{narx} model is as follows: \begin{equation} \hat{y}(k) = diff --git a/Sections/40_CARNOT_model.tex b/Sections/40_CARNOT_model.tex index 22bc2a9..3c44088 100644 --- a/Sections/40_CARNOT_model.tex +++ b/Sections/40_CARNOT_model.tex @@ -378,7 +378,7 @@ The unit has a typical \acrlong{eer} (\acrshort{eer}, cooling efficiency) of 4.9 maximum cooling capacity of 64.2 kW. One particularity of this \acrshort{hvac} unit is that during summer, only one -of the two compressors are running. This results in a higher \acrlong{eer}, in +of the two compressors are running. This results in a higher \acrshort{eer}, in the cases where the full cooling capacity is not required. \subsubsection*{Ventilation} @@ -504,7 +504,7 @@ it will oscillate between using one or two compressors. Lastly, it is possible to notice that the \acrshort{hvac} is not turned on during the night, with the exception of the external fan, which continues running. -\subsubsection{The CARNOT WDB weather data format}\label{sec:CARNOT_WDB} +\subsubsection{The CARNOT Weather Data Bus format}\label{sec:CARNOT_WDB} For a correct simulation of the building behaviour, CARNOT requires not only the detailed definition of the building blocks/nodes, but also a very detailed set @@ -514,7 +514,7 @@ sun's position throughout the simulation (zenith and azimuth angles), the as well as information on the ambient temperature, humidity, precipitation, pressure, wind speed and direction, etc. A detailed overview of each measurement necessary for a simulation is given in the CARNOT user -manual~\cite{CARNOTManual}. +manual~\cite{CARNOTManual}. This data structure is known as the \acrfull{wdb}. In order to compare the CARNOT model's performance to that of the real \pdome, it is necessary to simulate the CARNOT model under the same set of conditions as @@ -532,17 +532,19 @@ are computed using the Python pvlib library~\cite{f.holmgrenPvlibPythonPython2018}. As opposed to the solar angles, which can be computed exactly from the available -information, the Solar Radiation Components (DHI and DNI) have to be estimated -from the available measurements of GHI, zenith angles (Z) and datetime -information. \textcite{erbsEstimationDiffuseRadiation1982} present an empirical -relationship between GHI and the diffuse fraction DF and the ratio of GHI to -extraterrestrial irradiance $K_t$, known as the Erbs model. The DF is then used -to compute DHI and DNI as follows: +information, the Solar Radiation Components (\acrshort{dhi} and \acrshort{dni}) +have to be estimated from the available measurements of \acrfull{ghi}, zenith +angles (Z) and datetime information. +\textcite{erbsEstimationDiffuseRadiation1982} present an empirical relationship +between \acrshort{ghi} and the \acrfull{df} and the ratio of \acrshort{ghi} to +extraterrestrial irradiance $K_t$, known as the Erbs model. The \acrshort{df} +is then used to compute \acrshort{dhi} and \acrshort{dni} as follows: \begin{equation} \begin{aligned} - \text{DHI} &= \text{DF} \times \text{GHI} \\ - \text{DNI} &= \frac{\text{GHI} - \text{DHI}}{\cos{\text{Z}}} + \text{\acrshort{dhi}} &= \text{DF} \times \text{\acrshort{ghi}} \\ + \text{\acrshort{dni}} &= \frac{\text{\acrshort{ghi}} - + \text{\acrshort{dhi}}}{\cos{\text{Z}}} \end{aligned} \end{equation} diff --git a/Sections/50_Choice_of_Hyperparameters.tex b/Sections/50_Choice_of_Hyperparameters.tex index d7f1f0e..412cd18 100644 --- a/Sections/50_Choice_of_Hyperparameters.tex +++ b/Sections/50_Choice_of_Hyperparameters.tex @@ -19,7 +19,7 @@ consuming computations in the case of larger number of regressors and more complex kernel functions. As described in Section~\ref{sec:gp_dynamical_system}, for the purpose of this -project, the \acrlong{gp} model will be trained using the \acrshort{narx} +project, the \acrshort{gp} model will be trained using the \acrshort{narx} structure. This already presents an important choice in the selection of regressors and their respective autoregressive lags. @@ -185,7 +185,7 @@ $l_u = 1$ and $l_y = 3$ with $l_w$ taking the values of either 1, 2 or 3, depending on the results of further analysis. -As for the case of the \acrlong{svgp}, the results for the classical +As for the case of the \acrshort{svgp}, the results for the classical \acrshort{gp} (cf. Table~\ref{tab:GP_hyperparameters}) are not necessarily representative of the relationships between the regressors of the \acrshort{svgp} model, due to the fact that the dataset used for training is @@ -259,8 +259,8 @@ This performance metric is very useful when training a model whose goal is solely to minimize the difference between the measured values, and the ones predicted by the model. -A variant of the \acrshort{mse} is the \acrfull{smse}, which normalizes the -\acrlong{mse} by the variance of the output values of the validation dataset. +A variant of the \acrfull{mse} is the \acrfull{smse}, which normalizes the +\acrshort{mse} by the variance of the output values of the validation dataset. \begin{equation}\label{eq:smse} \text{SMSE} = \frac{1}{N}\frac{\sum_{i=1}^N \left(y_i - @@ -403,7 +403,7 @@ the discrepancies. \subsubsection{Conventional Gaussian Process} The simulation performance of the three lag combinations chosen for the -classical \acrlong{gp} models has been analyzed, with the results presented in +classical \acrshort{gp} models has been analyzed, with the results presented in Figures~\ref{fig:GP_113_multistep_validation},~\ref{fig:GP_213_multistep_validation} and~\ref{fig:GP_313_multistep_validation}. For reference, the one-step ahead predictions for the training and test datasets are presented in diff --git a/Sections/70_Implementation.tex b/Sections/70_Implementation.tex index 4522e31..4710669 100644 --- a/Sections/70_Implementation.tex +++ b/Sections/70_Implementation.tex @@ -48,7 +48,7 @@ the correct amount of data for the weather predictions and to properly generate the optimization problem, the discrete/continuous transition and vice-versa happens on the Simulink side. This simplifies the adjustment of the sampling time, with the downside of harder inclusion of meta-data such as hour of the -day, day of the week, etc.\ in the \acrlong{gp} Model. +day, day of the week, etc.\ in the \acrshort{gp} Model. The weather prediction is done using the information present in the CARNOT \acrshort{wdb} object. Since the sampling time and control horizon of the @@ -66,13 +66,13 @@ evaluating a \acrshort{gp} has an algorithmic complexity of $\mathcal{O}(n^3)$. This means that naive implementations can get too expensive in terms of computation time very quickly. -In order to have as smallest of a bottleneck as possible when dealing with -\acrshort{gp}s, a very fast implementation of \acrlong{gp} Models was used, in -the form of GPflow~\cite{matthewsGPflowGaussianProcess2017}. It is based on -TensorFlow~\cite{tensorflow2015-whitepaper}, which has very efficient -implementation of all the necessary Linear Algebra operations. Another benefit -of this implementation is the very simple use of any additional computational -resources, such as a GPU, TPU, etc. +In order to have as smallest of a bottleneck as possible when dealing with the +required algebraic operations, a very fast implementation of \acrshort{gp} +Models was used, in the form of GPflow~\cite{matthewsGPflowGaussianProcess2017}. +It is based on TensorFlow~\cite{tensorflow2015-whitepaper}, which has very +efficient implementation of all the necessary Linear Algebra operations. Another +benefit of this implementation is the very simple use of any additional +computational resources, such as a GPU, TPU, etc. \subsubsection{Classical Gaussian Process training} @@ -158,7 +158,7 @@ Let $w_l$, $u_l$, and $y_l$ be the lengths of the state vector components $\mathbf{w}$, $\mathbf{u}$, $\mathbf{y}$ (cf. Equation~\ref{eq:components}). Also, let X be the matrix of all the system states over the optimization horizon and W be the matrix of the predicted disturbances for all the future steps. The -original \acrlong{ocp} can be rewritten using index notation as: +original \acrshort{ocp} can be rewritten using index notation as: \begin{subequations}\label{eq:sparse_optimal_control_problem} \begin{align} diff --git a/Sections/80_Results.tex b/Sections/80_Results.tex index 35406dc..45e6c57 100644 --- a/Sections/80_Results.tex +++ b/Sections/80_Results.tex @@ -7,7 +7,7 @@ analyzed in this Section have used a sampling time of 15 minutes and a control horizon of 8 steps. Section~\ref{sec:GP_results} analyzes the results of a conventional -\acrlong{gp} Model trained on the first five days of gathered data. The model +\acrshort{gp} Model trained on the first five days of gathered data. The model is then used for the rest of the year, with the goal of tracking the defined reference temperature. @@ -131,7 +131,7 @@ performance, but are more complex in implementation. \subsection{Sparse and Variational Gaussian Process}\label{sec:SVGP_results} -The \acrlong{svgp} models are setup in a similar way as described before. The +The \acrshort{svgp} models are setup in a similar way as described before. The model is first identified using 5 days worth of experimental data collected using a \acrshort{pi} controller and a random disturbance signal. The difference lies in the fact than the \acrshort{svgp} model gets re-identified every night @@ -143,7 +143,7 @@ setup performs much better than the initial one. The only large deviations from the reference temperature are due to cold weather, when the \acrshort{hvac}'s limited heat capacity is unable to maintain the proper temperature. Additionnaly, the \acrshort{svgp} controller takes around 250 - 300ms of -computation time for each simulation time, decreasing the computational cost of +computation time for each simulation step, decreasing the computational cost of the original \acrshort{gp} by a factor of six. @@ -293,7 +293,7 @@ As seen in Figure~\ref{fig:SVGP_evol_importance}, the variance of the signifies the increase in confidence of the model. The hyperparameters corresponding to the exogenous inputs --- $w1,1$ and $w1,2$ --- become generally less important for future predictions over the course of the year, with the -importance of $w1,1$, the \acrlong{ghi}, climbing back up over the last, colder +importance of $w1,1$, the \acrshort{ghi}, climbing back up over the last, colder months. This might be due to the fact that during the colder months, the \acrshort{ghi} is the only way for the exogenous inputs to \textit{provide} additional heat to the system. @@ -361,7 +361,7 @@ simulation data (cf. Figures~\ref{fig:SVGP_96pts_fullyear_simulation} and~\ref{fig:SVGP_96pts_abserr}) it is very notable that the model performs almost identically to the one identified in the previous sections. This highlights one of the practical benefits of the \acrshort{svgp} implementations -compared to the classical \acrlong{gp} -- it is possible to start with a rougher +compared to the classical \acrshort{gp} -- it is possible to start with a rougher controller trained on less data and refine it over time, reducing the need for cumbersome and potentially costly initial experiments for gathering data. @@ -473,7 +473,7 @@ models can be deployed with less explicit identification data, but they will continue to improve over the course of the year, as the building passes through different regions of the state space and more data is collected. -However, these results do not discredit the use of \acrlong{gp} for employment +However, these results do not discredit the use of \acrshort{gp} for employment in a multi-seasonal situation. As shown before, given the same amount of data and ignoring the computational cost, they perform better than the alternative \acrshort{svgp} models. The bad initial performance could be mitigated by diff --git a/Sections/90_Conclusion.tex b/Sections/90_Conclusion.tex index 1ce3cc1..57257c6 100644 --- a/Sections/90_Conclusion.tex +++ b/Sections/90_Conclusion.tex @@ -62,7 +62,7 @@ throughout the year. The \acrshort{svgp} models also present a computational cost advantage both in training and in evaluation, due to several approximations shown in Section~\ref{sec:gaussian_processes}. -Focusing on the \acrlong{gp} models, there could be several ways of improving +Focusing on the \acrshort{gp} models, there could be several ways of improving its performance, as noted previously: a more varied identification dataset and smart update of a fixed-size data dictionary according to information gain, could mitigate the present problems. From 19e854e02d7a321f0c4ec36f3dd23d51f2555914 Mon Sep 17 00:00:00 2001 From: "Radu C. Martin" Date: Thu, 22 Jul 2021 22:14:23 +0200 Subject: [PATCH 07/10] Added english labels to reference temp graph --- Images/sia_180_2014_en.png | Bin 0 -> 83794 bytes Sections/60_The_MPC_Problem.tex | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 Images/sia_180_2014_en.png diff --git a/Images/sia_180_2014_en.png b/Images/sia_180_2014_en.png new file mode 100644 index 0000000000000000000000000000000000000000..d95b9fda29e2f97b183ee7722ffe2647a802c8d4 GIT binary patch literal 83794 zcmeFZWmFx_wl2JIcY?dSySqDtV8Pwp-8I1puEE_UI0V-~a1HJR3lQKodEb4`-s7I} zedFAF?!UdVvc{sSdUo}!IiGsw(+yE7O43O1c<>+)2uW5(LJb6hXas@4rD36gmb_-X zDiDaI*;_-)Rn5qQ#L?No+{)IB#MR5ujKs{-${YmpT&~KrN+f7YEPDBY=?BRWe#)aI zxd-j?`x!H5r(#>TNV<5$SV}Xr1EN+^aX!#-|K&ON_&G+n>H9Xrf~GfZj_~)YpR zfPk-$xL-PR&!;$Y{nwvX9w*B`p0^C^w(oR|xBTo3H#mP;y*TDX^dAfGQqdJA9`6pA zKJ|$^{Rs1fn9M=0X!Igb`XWFxcph?b6?n-wmbQMhk?P*Hkozdielc|@t^LeM@!R)d z|3!Duo1a}N`m!iqK-i?-0bKSaSU$vnPM93Kv*p*C+O~z#r3Dqvj=|E%i<#z`a?S7O zQK= zugP6$IQz4q)Ii?1+i7cH=WtE)m+pPqeP>s9cJ~BYCqkM-_wSu^ctMF(=a4W$sn!g* z8hVCe%gcdLn^=UJgU(dz6DP{^i^M~R*1F;xcWY1kt@VM9%R9Y3{Fd%5O-sZt5bwVB z^al%^UH=I9ao+7W-3fn>YO0_|oD(3XVakf+r6k-29})UU|KTV5MNN0WbAkZ|(fHJO z92Bx}xAZuHzp=bia!w%zwz+<{9)jD800@KC-JFed3(P=lG#}Eyq>|KdC_Dff#hOAf ztCeJjfV&}x37MjEnLHg)Pkt1)n>LO?`B`hL8{ z5Gz}cI`^JvB$^=IEY-z5e&`}E8}$mQ+wTr#>S@AZ^5kXA;WBMMOYg3GisqGb2`1q0n+!*UlK zwq8w!F5Tz4eLYqWxRv2HJ{Fl(r?1~#(9~spTDrNWD{HHAjYS!z0f$QKX{bSY%OPG{l|Sr zTc{&{$r(PDkl}b0?NsV&k7XJrI)ps;XXwLLDM%usp-Rmgo67Ifdh)LH;fa~ukMXi` z0TjNwTk}m78W|E>q%zuy!#45i)Ni|2baqxpQ6uQCJ36lCVN}eXa-8H=rZLpU-f^R& zRCeT`+i!q$zlIb^jHPAP}YL^p7=zz)bPXlduEUdzJmW0 z5{t#LDaZ@$XmeWv&lXLO#lxc&UK^#3TiBWZO)ye%YiN?mC;XZly7K{fHQNj7D)l;h z!Sob88r4JxBo>$)H4JtgEph>BHxK?&|C1cwwpD|z?}S!~uK9}@hQp0=@2Pc-3*c`C zcYY!k!X3h?)P*niV-1~TBOc=U`CO`chd<+$5GVX~G%8N(6xW%-Wz z(EftUQKu74ty0ynaIM>wjgRyeJ`eho7I|L0_;OL}>V~_zNh4taC^yzSK4duFUy9wc=`d!+3tm)uM(1eqz3_tLJ zX6KrEn=SFJN3z~AN72UjIQrBo1jG5xF}OGmAecA88qj2p8=VZ5ITTWXm_5`=L8@d? zc@ueN-mGAjh;JrIvaBFUDY*km8I=T z;ZtgzPO2Dz*UuH=N>NdbUG#wkbU0M!Hsk_jn*$ES2)gl*7*buAFGbNR2wK#VDU=^vIu5PwL|wxgOL(=WgM#Qj*nYff?|O6Xd|r+l0En zg9s^GVewrel*{QN5~%Cm!X04g)j@t${@LF@CoqPqhy43Tz7t~GR~=o$XGoPqfj$=^ zbFik)9kfHWE&4%Lh%GQNrZgxC1OYC+Pvr#{i^fEO%OIX%`t2Y@s&H8hkj zXobNL4#b=n0%Q7(d#S-&_d>^qLawOoLF7;4Ap05DOG5yU`AybE7Oz((s{UJ zX@7Y7>q;QLDI${acQV-}fXvv`FJxGSbEt`0s)#J74h)eVDoR_Nc>9a?mf+YVUs62x)IxGF6ik5T#XM>D z>F3`3OsK=Afy` zS$2;^?O`ujM{~F2A&G5=zz>-du^P^y zZ8m+F*vV*?ptZ&e2bl*WnB7KZHT`RAMN(s?#im1ov^ftu9qboU?LtWnWJIkuIo|o4 z6y=VoObb1q<^|xv9U(q)g)^~)mx=HvXF-kkJ2)P)PeXSH-W7sKDvX*y*fX9aSS+7p zjSF(G+|wVFvifbw^sZQ{SY^#2iMAVA4+UuHSHZW%UFZ%2M32J?NlfIy6F5lf=c_~K zk&+1);djh~AnW7|N!igdRCZ-)iuL#44OK;?Pz!$A_u}yQh+?dfX1@tXGnbnU^u$1~ zjpnY?sNUVOE)?yWaiK*GFBc7*nt=%%1DB^)kss|@l1f|+8b-6~5s0!xbtrJ_gPsH5 zy4=g92(Rp^mtRXawlGDBT+Qg0|LvX}Mo)&ZDXY*E~-&#?cO{6u#wGd}vvx1W==xNTI4JInk;C-ON|sPZ!f*3}6$oiyaj zg%pq+*|o3<2!7@iXJE{MdqUi#k=SIwr>!CSWT4{6@hp(S(;#ZVNSD=+;XEy6Y(`W~ zNQxRuQRoL*v9|M|H(K9Q=jA6l#({3g-_N}Ri+s;(&D^!+0RLDe&}OR^60CG ze2`toycRhr3hN>6&l_er>N_1rc23of^`@0fQS8jfM@=ZtH2*RG87?Xi{>?A&io)pl zs5X%zC$OV2Z*_#C1cnRvWUTFQ3CiOrsKlyd2}($nnJ%hiYR4_hSA`t8HRFN{r@U{cn61F*8((;qO= zMRq>w+#bJyNMYRCF5Q+;;WJ$TGe~9??nl`arW+ZwLGT+y*CJ=+41|+b&~#}vhPGi@naiR#qLX|-u3K=qNurY#hKht* z3DIh`9IJRXjpe6ty?9miJ5;)vFHl%rtnh7OZD5!p&=j9-skTT@VGqRMWY9~amNjA- z{o^CleaZ*cZn9vNKv$c*+DewY))s8gn(ZE4zge8oSILWPuiBjPWGPAq$t7gz&5$t- zuyL#mAl48faFgw8Ls*(F#p6t+K-Cj)7t6Xs1&P(UN|rP~ROa=M;&qYI4K52-A!wX9EwpLgqxxx*44+8iMDxUYg!GhjN$&}j z)re9D&3GJ{X9Nr8%eR3@EU|W^$^LM#sHg^vzZb_&Wq1s}m>j~Qmhp?Vs|wc#Jc^QR ztfPT~1}p=h!Ny1P7mgV6Dx5ecneRNO-Kw`*Kh;vBfoGY6vy)9i9Tbpl9*b&+(6VY9 z;^+_;*B3|fh{v}cKtWOT*tv~~{tCv~EGHp+-?abPUN=x$k*CU_hkygBfjge$w?qnA zD5d&&67M$V?}+6Xb>s8kYw@@ss4ZI_a)F#>(2hGIIG*h&a&#yU#l4?~E(vYt`_8;c zRRZyPrdU}0cxyPACzK(!coIj1)hb!--cq=?JTB)ursn2yL@djqVvn;g^g2wO7>Oj% zRz=a&CL<>`6@BV7m_f-J+?096Wja-I8Sw^1GNE1Y@93Q4bmxe*j5lM@1~o`dlC#%t zIj_5wc_rK^<_fK9J*;ObvTDSgt(z$!C^3)eIHAek?thz0^;F;!AUhN-FJhYO=SvVz zSB<-}!cFO%@rWq{ABz$ZUF+SSgQb5jXbd~CC8!2vU24y*wD4WTw&<=$Uc@cu+Z%BB z%dpbna>RqlswdR2o-n>1etjEU$wDq9PT2ae>$$zhsb()RnMKzlj_%v*ZqKkWVK*4o z!Es#a5aDUlZ56+Ag*~#A9{$vAk}x?hh$!kPINjiI;x@F#08VR1B$VAe1%XB=Xl}l%aXwqA`eqe9d^@tOQrBKHR+Zl2b_J(JtzCvq!+9x?;=+2l6nb2bjNezl(8Z_uq-CY z-}cT~^Q0HnVJ`}+@Ur|fa0SWKP%!BN7xq@ifqk{g8=_1~~HO9N9RFvKq$d9^jmP$$Z%*;BCQT;lvSVqlz^DZAA+b)a6kCG(46X%J!)S4; zMmkT@fApoWaT^(&UKC&QNq^0WTejA;ny?DFG2Ngc`5VLJB0J1CdD|ZZ zlW9`gnh!6`0y|6ZC`3egNbi(*QbcoHocvmzfSj?U$MYX*{qI9+W6kb9Wv1#hR8R?307Aus8(P{@em-Nb0(as^(tTGOW)VP7eIHY2#AZUGY! zDwKQlrbAgsY#yFBN*&LhizODHA)+>q0$GB+jUls9tk{l?V;P6`uN=H_1G?HV^FKSm zKER4YWDo!T!j~aYqVa)xH4zID$5l3}t)mfkGe|Q$th|mNIu=O;Bn!KCjl8Xqoe&6D z+Ob@L^m$UnL5D4bbv=CFMR+O(hjh#lKa>NLTpoAaoVw?e7FZ=|)Ef;sKDFopv2E0< zqBF6h2uQ8@$>{^EFs1fogUp-HWWgMDIFdF5mI$6;C%TY?rMl?pv_BDk)x!Y^3K!VS zqvL$vg~@x_Yd7jEv)r7X38ev9;C>JY4vuw*WankJt-=Ux$wxvFh@4ky0Y}PuHMa-$ zS%m+^w_Jl{t$JttJ<3G0BSD-<54a{mSE*l8!u-$h$=k!c{xnupYDfH2u#$Qkm9&yC zu0bQpVJ=UD?5qJ94lj`K)8(G$P`iYXN9E7?o*W;f^tU65LTNCuuv$}0)D={(&=luF zH-+(dtXJFD7*w-@DX?jc^vp~B(NA_oppAWQSIbqcjtFDcwiSyMD2RIIy*f4btB_&{;g7$b%9*ab#L^_; z-vCwH5+E)oA*x4czC@P<+I#tW%*+U5uE$9AyQ^OBh-2J z&+(wme)+s3+~+Z!!zQM++uPq?Z5T97VP7s8=)`iYfBv$$q)m7tMh z9fafv7KgP7WIbhMXuY7xOFa1O+h0YQocb9ph&Ao&oG7OHL|p}jpd@ulBsZdFZ7AMs zsD0TXp?`r&keC#KsMDPsf>>ZP<$_@r-#{7Du%92JIaVT`HBLS$wqXo~N#%eU1tQvU z6Pm7YC@;s#;u#`0T%(enyQ6!&jsSj7-~rE!^)L$0J(lEFxvar%YTONCyK zJ{L8|UdoQxrs%^y*jpWZABn{@TVP}D&+`p>j`Gjm`j5JzM|^USU_ExjRk@V14qpD! zNp)0vq*-uA=%dG{-KMH^MagI?;VN2?7?lzsrp(s~BjtM)sjKdQI6l@bjX~Z?5pTbr^F*ik_LP#f)!jF-mdJ~>k0!fXx+VRC>Y9b97RdbN zn%-UY>hS&SmZSQHD9IKS`)+TaOz!#W?;Zr%n?;<9iVtfm5WZJfgdtEbtJWxAiUfs* zzW6kzZkI-V?4<3vbBPqp3=lX`yhN*ennF;6xNZY;l=#-gFC?9(pBX_3GjOXVZcH~& zq|SAuWEH|igX6eyoGsvSfSLeV10kHztPm#f;JIr+Y*NU`+UPxzKtSCdlq|_hVA|Z= z^j(9w{ea`J$h0L+C<_K!l^jhJ-YUr{xhTne^{2be-1CgS@to|(={>SmaGj(j%a|R8 z60Dr@;P^K~$*33(OENh{6J>-hF*YYmO?o|S6xbP;yw#luI!e@^`>@7q4a6< zyIQ_c75U!Ak#<|26#$bx61c#v9W4>b=HIIFp}7Cej(0W{Gf`uy8#9CVW1;jBsFs`d z{>8Uw{>k6Og8k;kEj2|VBN9mpM)7vtFP~Q%>aE7UpOIszpBVTW1HZ$kj*U9Ai}niodnN6DhK6F?t?KQDnt9Z2v!qz{AyqDH9?~C~1<{=} zAC_NK>B4^sIVr9i^M?;8zOT9o=b4hnyktvAzvCz5a|+0;-O8+_n6r?4&zO?qbbV7% zfXkX|k-(ixd@W(3A{@|~Jvq)p`Q#CWOe8|~dq{XdAg@QYBdfC+6%{L4_e`2E=pZx^ z*_UIcLtKETm5SG{^tgV+o~@2uWRs7OxojIoR2Rj14MOm^Y2*0}neH63cDF_eH(fg- zKwV7-bxWfXx07T}N!Ee-%e~@Jo@9QQE~CDlb#6ZA8?An1Et#eL zA>^I!07_`&gu_jV`gPy+S=={4s#5wi_rtL7zIRMuLj_XDq$<1o{uD-nO{C(is5GH# zGqls1WKOfy#Nt<*7Hxb|d6oB|$np@*-cc0?@Tk11MnanyK8<2OOBX^v2+K#;2dz>t=WOuTgBevx^ z{N30^5ig+SNx{7leumj0y^nH41kVy8Pf-8EgszZ_lg^yY!k+a1y>io1+PhMk>b@M@HYxD>BBUhQQ z!%Ybs{F}r?%;FC&$`q$_L6UALKWDlo;ikK)6d|;w8HD=A>1bK3>%>amWV^_aP>e_i zv7hdyl@{JA>S8|p1S=IU6R$spq@0oFn}bnO$&=)Li!lWu+GWMwK!1R=-PSiH8+(y^ zoAkU^F_!4!viE#@>>8d;I&Elqn3sBgL{3 zP#VuM)z-Hdcf9ZHdTtI^j@x0Wsg|NEMOqBG8a%E=<32XrB{Q94gPqGJpm`{Ecx&fp zw0lf>l>8;HOeK7a5=&o@gmQKE?4jP{EN@M<&Bol^dB8lKrh)DVbQG^Van68RF1ml> z2AjM6Fu}un;>fx-`;HhSPF&7{jJfdcQ3Ahds`9;8C^P#y4#nA0+wQHWVLMUl@EU(> zL;G9y(%=%kjSq#O)E3vnt#7-rS?RgA9AwoKA+|+n|NWU5ij$-#_8EWe%$>l7 z=;j0j0t>Yg7gv!L7yri-48U^>S$+wEGW{Y1g9hrK$=>v0p*an!WHVsCahjvU%m*Su z$Bm`!8X<#&f|lt+uuX68$HDTDn1*WP>R^&zVB33pMF(V*&&;%qkvE&I#OG&%XX{{M zo#Px8^w5^=cE#vUtV!?RK-9n*qLLz#P_d7FN-Cn@`%vTa>z6n7u6Fj+6Ys-Z)*vWX zMqmu_8`U~V&Uz!# zhIr>aW>5yfo?En_qq75humR0ft(#E~qjv@pR}Qxwt==i2-MQ*{#Pw6hf?Wgew9$8% z@XHbcSsl@NK@bptn?Q}~pI@Bi+^#rGRSI0iHC$vjUzd(Na|4GjXtE zGBR~AHe>R%a|E6^0f7XBJspiqY|LCqjLj^p>;=irJG#k8tV{*T-f=3jC_0LpSz5_> zJDaI{D`}W`+nDg0k_ijJ3wZJY2JFmSjYvH0Z0%k6JO#=A*yRJhzcw?Ik^C9rY9mOd zrKmz8?%-@j!okGB#KI`)Y30sFCIn9+;B0EnrzRoww+Y}UK{88MS4Tc(W)BY!CJ%Nd z2WJarR$g9SW)?PPHa13J1fz?Wy{nNYqrD6HtBJpCNSL{pI9oZoS~=L0yxKG}c5rhQ zBqIa*N&YcEJ4Z#u|1fXw^0yZNe=vI*IWn^{u`t`&G5_-sF0PX9fRVo^^j{v~q5(XZ z!>nfJ;^5|NVkYTsX75V=&n8Sw{^NK@H)q>Fmt$(eY-Vd_2Ml!q&dT~Pr<9geRQZo1 zUR_{eW#{F?Z1xpurz!16AK$FBMUbp8=D3jD<20tA14<*3mYE`3mNm@7tH*c z)&IC+0p|bBCjx&4{1XfS$Nkj?zzcv@%>MybfBWp!jsFi{f3L;=!!rP;|9z7GmVf{4 zu7A7hzvY4d*5H3f*T3EM-}1nJYw*9L>wnB$@c&uxnArm?$O9;6+AYm7fl>(CSYBEJ z^z!;Iud^fxXn}K-(RKlWuqa>ugUPB`8|audAXQzO{M%$qmDjzD?!*%-XHaxGvG|iRtujL zI3?P{a84+~dpHu`lt(Ep@QNaQwfYu9(8m#|XjPm)ZBm|1=-!)c!thPBaq=?jqwmXw z&&H#`lmL77AqvBVKcy5-4)LAe+JYPKe)0BqK3#6IAqhnlgCzw%>{;v!VgGysK3MW8 z|Iz+w8vU;Uu%rr>aIYi(2l`Q|8vj4-{}1-VV(9$u^ZzIN|AYOZaEyQZ=fAf9KiJ&;{nPya$^QReKO61%r^zsci2ley<612St2OL6DONVN#9KcQDtuUcc6MB4Wo2e@ zLg5Tedq;LES>#X zRt3uvgS_7*!cTC$hAPjRZ{LO?;d8~}Zk{bQNW0{&*$;iM(oKS1uG2z{Kqd@cI8N!- zuG0K+(TDIuF1iGtoSgi^Q-Iq{Y-N5v?CV!4P+$SgVw=mp8!ky}I<&yoOoetmCfd8@ z1J1veI$rmqRm+YR3XG11w_Ryggq~nZLwI_6g0nFCKrBq;u@R1hucEFV zV#pE+ynp}p?f1#d%mf43x8R#M;No-H_R!aS2^Jv(?gs}Q>g?47Z+En&3QMutD>QSy-NEm(~m@y;-*5gYIZzBU%3q%8=IV&`6JSw zN%e)gKRE7Zd-U12lw?ax<_Z%lm9R7QWb=D41^1FL>3{jelHas)%65q{o+F4KB(hm- zX__=rl-{Os&JP*rb+v~(X&c^eM8NNkxaFwztf{3{Dr@ZRr7=4YeWV zXyfYVPs2JbH9B<;yur&KL#!MeMYzeH*E7=U`rlVpR$|yKCWrapc$wa}Ym7>Fw*cai zGP$~+Zj8^v!-MJ4!{cK@W@gOnteQ5LAL0B|Rb^%9k}X%VkGVOOX0;yeO+iD$HZV|f4>@cV#?{oRzHv9CP;xw zeRjWHuR3%J3{i+|0tuu zMe3p2JeI~xo&5MU4xg2U1=Yd@Ja-DFzzN(0TY(i)e5a2c zC846K8dP3h-U=24BpnX{^2GV+>1p^mGY!r37nEN{+MXPEk{o#R6!~s$ZkBd-DGO3$ zXasz&!xwE25(r3?l@%ChJd2mTY_+4konz#zHw1?BT)^!pIk_%jb&x-98b#0VcF7{+CB{2r z!aR$|NsOw2D--Fw`$Z^AspN}2-~!pZ^*=BZPn>J@w3MU85WZj#K$su{i5x+`m1rc` z*4EbQdWa4rHCaOBUJ{eZ43G_bd*(FJ!TUKrXQ>*|SNl^oiSfWNf$j9Db5-8!Vecju3aL^1r7A#eVou(9xl*-V9_{UVZ&6 zi;>S>y2Z{0Jw3guj!v|)&^;u`aeDwxugzKV`EkDDoe@_iu%O$w&Quvj1PFfh77a_A zjy&-R2|=M4E(hn!|Zr_ zqCHXXKC|~D!ADaQi;j+N2R`QP%>H!dj1@$rEu4C-z4OH-fozeo?p za?wbo7P4i-5+X*jgzaK27=X#~@)Y>^_!wsx^VAK-w>8bp?&F`cx#^DtBSDC1{#0^u zgZ^WEePZd;liB?5l6YdnJ}E9tP2wUc;G`%DAJclCwe54*JzNeEk5QZti3zG;z=v_X z6f4oqQ#{(nx1Y(UG9(1#2nTfSwI?JbwED2Kv2obZ-~f3bK(DHmDc zzu4hXvsHgIvbhyOoC;SZvmVw(7ac4agEcrZdVYt`^i8SxF6VFVrbwH<*5&uunq$J1 zxjR0$xoJ2Xs+m2$e&n++VN9;V-2Y|WJ04L|b@n0j17A8)M1O|qcl#ETA7A4d$ zkBtl;iu~Aip9irG6y$K@ph?kF7=d7C($<`kJ5Gy@(RO(nS;5FJEtP3-xLfnsNO@^C zpTJA6t*CM0A;{Rh0?#Q>c!fu{&UAMl%ecfP4Iu=w+llBW|HB?r&6sBlAz-`eD}P(T z!p9f={Oo_fp+UN=;x}4Dlh$sVATv;F`;e|gKA9s}asP@uMs->o@*k2C4hZ)rv&9*( zfH!;A<+sA`c2CiP+uOzfAb+OxxOtxaR-!y63RYLCW604;u7vn~VZykM>n6X_f+tlPYH)8>b zGB^GZ*>8M(7uIi-KE7@Eb$G|M9t&kO~9pHof-gD!#+<=oU) zj?{Lo9-vd#W&0prrY5`Wak3Z`92^`vmU45l)ByA9G=M~KL|Iax_og!HZdbqj9Aj3O zvp;q3PzVJEqrKzKoJi%cVqj)YyOSnEYt>^Ke~n8$>co#jKSTopgn=-{PSdh5GaF2? z>kWp=SUNF{;KZf8IP##9d%mfFx;Q_eU7M&_QT_#4xlygqHhyt3{ zA0PM^<^K_7gqMn=G8D$G-K;ZrR^0Zhk&Zlw-5WL9v!yif);2a6RA5JDRY4*o_HAXq zR!6J8jxl$~u61~j;~;*e^a215pW8mG-h)}IR)oExmXG^Fm_K(O-YN3hpZNsr>VYuo3dr3Pqy`q+SPictgNgTz$i3WNYp3^4j)510IY&k zya6O3K#nl?aw<^f2NOOS)I>1^aQ@fRb24(otngJ7b2tq%jqVJw2#`muV>}0 zvOg&OVFA^`!fozAv301C=g5=gdR`>Mbi-bC^f>4|3veiagj$=2UEd8F*A9>!%ItIY|oi4W}`;XNV zLgK^PKS(`%PU{#km7_@mw(ISrEY=u>Y%v@5 zn7N|4{BGy=Ha6leF6^Kl`$-<`Wl@M8_&=K%M<@&O2T%Z5MyZjd(*!E4MW z^LG%3Y;A2hwN$8fDC~G~hbZ_ngolR%TvrvS3htlkhKTxsB88eWKND80TK#P*0D=IS zEv&A#A6-u`x2Ld9%1qB(dZ)zM+1bgK-lS6nL|~`Uc8Ek{V`Iq zp59uaIVwpL1^jjbEvqi6(1acx9nq%gT3ApE5TRsbWNf1!Wd;G8#m??-+*mq()0jk# z2mA2OP(gh?Isilx?(WTd9t}&e;o;D83k%Ab+RJ4-*N5L!Frnnrn6jJgoY`R_xEpG+ ztbtSn0|Dr@(&7*?Vk!n~N9yX|kPemmw`vv4kB^RkyhPdj@ljX`SQG$GGhNM=Z+cGM z`_Jz-SRU};!%V$O`aTLj|N7CQL4X%0HM6`7AJNZB8A8u(<2w+Vs=#M_Ee%<9h$BOT zISctk>aILDS55>AIRY(a5G3-AH*!OfN?nYa;7>WvR^48tmQ$CLE{989$d0ZcxnEZ8 z;O_1|OZi@G9V-S(TU#5hMsYtq*mO$$Sc9&f$f1K`c2L8PM4M2}YRGjb^#dVwk~G^r zkjF5Jii-6LCL>BOU!oQ*=7Ni(Cx~WJcSAstxz34{Hn7h zQSD4jaS%A=U+Q8@`5Cw1QGT2v=QZf_wIbl~wl0c>mNsD_Q=vH24eKT|_9tG7!ONHblDSS|H_vLtREKAk6(@rAQW5NKoUub^p>PUbzoP_sZ#Q zs~^0Sd?HX+)Ef0eYa0YDiUYskzgv&gy@3L}|5QJ05{0T?o*#}g?!e<;s{K=e$|Nw< zOyhj1thzdtP>xTD0u$Z{kR9-}0g{%c?+piRWN_L0#fq6gor6rklb5gn05|Xl1%T4) z_H-ozAoPBZw}Xr(Xl!$1lUt55UM(#xW9jxyzCa17?{_oLgG*(D&024BEg;gttx!eH z-2J=0xL@}3``H->N!3mFj$MBA_v*U3^maX#w;RJ$*SjC33O#{>WXLwg^+ao!oSj|$ zO0QF3fPKh%NW$&ynBE+Jg8ktNmnx{B``s6DWd{f5qvK=F?$5L9-ed`|C+_^3RXS$B z&if3?#>mb4)Mk7*-___30vbi4hIHIA#ar}y!<#Efzd0_!^k;5DLXMv)BS+cMg1AfN z2~#YyodDhp&dVDF8vkFhdHGI1zmoIhM=0x+YBl0n=Y|odBPajwv*L13_yI6JF*#g@?PPb?bJ9CS@Rc5 zn?KzLY7=AB8I;mT7c^zKHJQdEv0p?@`nZD@+Z%BYFB*2^2l|;4;XvJ_^xdGbY~C6Q z6jyoeo(udzkr)9)92z7zSfzFYw0(>2*_(=*8fgwZ#fJ}oCPIRPI7+f{>Mjltn9dnX4d^t$ z%4^jJKv!b*W4GfLI8YK#&&`Db)h!UiOR|x7fUfoH$^W%R{89QvpP2v|Mn_k7*KJ~A z0tW|2#L217T%x|L3=T+UU?)kwY5r4;ia9y40?$pO2qzQP&?FVm0P34lwiO9#PYV4z z07vs^O_Y^C`sTu70w@03G-olDBN!<`20$MS3Xud*-vaRf5Y?ulLQjC00Y&HjRPMrW zT|g@YZI+effP=2DuZNqU1gu334LktRMU@`s>x?yCKjOGK7654iAYdnJ9o$xd z48abnFcJMhfNu6GB^~PrJh`PCHa0hJZ}x_$<*qC*f3+J55&@+#y%&4`{=Lr6#TEx* z@E{OyIY7xC4Qx|I=dFM@ft23KQASHHJ5^syOfZ=3*7b8JNDm7N0s|nw-@IW9FvsJ0 zk%t(`$HzBY-vo$sfL;xUE6&5Q-J;m$TW|) zr}O>Mke%2U>v$jP7_om?>1>4)``BN^U^wTc02}zpxQnm?b!9 z%nGpd*w|QLizsYrdIJa*u+SlRK1w^?U-WByo7??fv%mG&Pl$MLGCKy?oj5o+0LI(T zr3_Ulge9W(QjnJ0za<0w5uE@!-$#kddta?uLomR-fNoYaHTQ@%6G0in3+OdFbR@lX zCPRtH_MgWhi2Z3Gd}j<`iBn2#0rl|}`w@@21o7fVDGUy>`?o|$P+1yJUG^tsS6p}q zfM6)CuKo(pX3l18SV%;>h2xuo@^W|}R=XHF)}JN1sdku8dP>i)?|o+jqHY1jBY`!N zCaHZ&{cc~ZB=Kh7#OZ96S233KdfvWe=q83NN0!nZwfV%A58&aoK6huW4=^F3ueHi8 zWuHU&Bl-;Y;jX@cfy2T6%?&R7Yrf%K4wHWbfz|=(r!@!;iw^)$^zW)e z2aOX-*e5f&9rVWd0qqk3q_zjRKQ1oLgsF{=kueOAKwyY{Nu-fXUX?>)Ov&B?$rum_ z(0rY4-gme&3J@vxJy7Alg$caB+8+{hnJ<3}gbN^U18ND}${;M7W7$o9WhJ74|2-uD z53hfE7b|mXnx>o}8R)X)7W;YR_>@wrq2AH2;_E(t5Y< zV>Zpg!V)M#0?M2yp4mTLY54(&7}CIA4a~Yiwt2SBgxt&3!(%A!sC2qnKK(3#2z)?oFag952)?)*7I{EKv8^ibHn5H({%Q8d;z=W#v`EB7=J5P42R%2 znz_x$zynr^K*-lqO*vTOxGMp1e^~4)UV-YT2vT(iGC>l5pd&AmX2KfgMJ>u4p_C2CEKrsABD>6N^)|Dc;!pa zB7`0e$N@AC70VAjM}126ma43;S6h|{o(O}O{$LN$RsR4R@1!c_Zc7s z6rI26ZA*AQw4nPYDU3k?ABGAG$uSll6CJ%XUXVa6E8*Z!qtKq~bJiwXXEn32zq>1| z{px67W<~-OsZJK==3fsh;_dA0s^<8c>>SqG-(D%)SYtOVF&vlJX9D{SG7u141cm@u z&kpVG@5{f?oz%3nU<0=|-oAaSHVFjI>+J|29stPvsx&yt=*Iw%Zp+f7J}ims>&rP$ z;O{rHUwZ}x9>uK-z7;N{K~6@av;JIY2tX0IBlFa00oNU`uH! zY;*w$D(tY5^mw@Ka-(c&2hfzS0{eOo;il8|P;FMbQe!=Pl0AtuQM6(n4_l8xuN4(^ z(bD~-_>Gp*I!z;(6~Ky`h1XjHubWl$qlAREHZCB?bDk#12+t8F7SI6jW@&3H;o-pz z+`_1{o~P5E1oZ6DP;Fv?vJe=zlB9CN72D><-ODA5+!1&6l{8Cfzk-^ywhI*Fa0Q3l zkyK=O;-3Jv3{5N^v`|Oxj2#4i8d`6MFf51xMKk z$gH%1#HpoaY1eRsbJV6~zYP5RzTI^HnCaCxDeLMY0ybLU4ho(RI=e=RQnnZXK40zt zgp$o=G}pR*sBErju$Z#mx!Vjup*orR`t2olen{!-W{YaxZ(t(IJo)pv!;Fb1z(rfy z3IQ?t9VHUC7g!ouT{7AoKOlp6A^6t2v!*Mk)y&_>YrgXf zAcZbh&J~KYTWKB%=~K$$Ass8O{xKMX&FQa*m{(GsRF+l2LiETr`>qhzzI!A00+nv7 z(3VSA?}WrwdstdUMJ2D!$L*ye$FI|ID>#2c9px8XcZoyyNbJYCBn(?X z$IO$=Id78RTY%~G>BPf+)7aR!Fs&MZ5dg2^DguCrI=i?y{NgLW+W`bJV2|LgdgQiS zhWt1b0^Hck2NIY`UX@uAZMGA$I(Ig{eMu@D8%#b}YB2;EYNk$0ghWT?n``B=Eg?Zh&+R=H-gxCe?!lP72+@6MT zEQ=J6TpO>N`S*fV|NbNEqB1!u$GgZrdyAVgn`=*8y!(GxfX1fbo~p+s_bn%i|9l%Y zJvqF%caBl`C9buPKCDh3uDwAXSMc1zNh%9vR*ev;$tPl8zv+a^nt{flm zcYWgikyUq=T55Q)q&lFW{O5zV(FzEoXR|USn5ZgbBq-UqcT{pI3 z{pB;sO?F8~Glm5xAn3^ov5C_AzrIqH_-l3P&yKB|-@biY@48i_B@?#Xr-A7{lqe8D zx4}RlWUy?NQ>q%Az82T7A6$@eW2OsOh=?6HL;qo4*7M-GD8=AvubP@m1;tZPB~eS7 z+t^53SR9v@mNw>2PU}RA!2QeWB^F<7j_<5H`Mze2qO-^{mzMwK=aKY?!Uj^A1(QrX zWqo5#9R#vXcYiQSmM}h|^JiL7-J78)&z8mb&{|aWI#Q)m)SEb2l{DBn^-EI%FBUGpfQy_Pvv=I$ z=k@9XKtQ^f)Qe-5vNg|v#%xoH7=k}zB8+1B)xx3bFx28b)Qt$Dd|J2+|lBXB)Qd? z*n%$=y&b)lqrI1W`@jgtp#@25(vh~A8T;nuW|=kYmce8mt}EktGaV0h9jGakifi!V zFqE_%_#FrukiogL|PY?AZG9SdHWEr;NAzHfb@QU0ImCc<0VJyx*#9 zr9STji;?B*oSaw1#fNZic1}j|m{DNuqE5CJ+V@X|<1!q=Fmy+!)6EViZmdegdM3^; zAM&lZu{>*`u*TkhaFcmx2lUQoVPQ%`??Tm9Z8bDBBsPS!N>z%Da8>N)S+<9kJ8g9< zQ-wP|Gc)5Q*CSO@uD;uG%-jNNsxtI0y(zNEU8`t_6 zk{#h+lTYo5@e%2Z-JsbrcJT?LLXp1Q&o@<%3sf5D0*gygIdR)vS-5~Lj44d)1;>qt z^ZPH9_$ez1GF;Bw%RS9#_ws9^>YJbBKG%jD6E5$Qny}8&JhkJ2#LQ%{kETkIQ58kO z!i7VdUn+J<(&@X+T_H-eARkZx&kRa7+$35SFmXFWy_HEjPgoNXD z&mRq*?|&Ku9ayVO?Km#Kw-`jR{CJtqrZ~wc>`)Gb$$GkbCwng_}Rv`S>Q?T=Y>BDhZ< z;1?;J4;;F-El1u<&&T+})-cm7Eyid4Xs%}qa&zYkm#Lwqp>bV=(f0&$1^2||3`v-c zz%pK;3v4xWaMJ5~54BWcIUB2Sc;e!F(Y{O!VW zpQQ3Wf6-eG4xdd7siUsA!SW}T_2HY`+}t-tnvavj{C+BhY+T7pZ+PEsymTq>^0KRF zmt&hQc2IU74(;q6>d9x*n5f*(w3kZSy$h%v4Dx;&CFppGF^%U+R!`!526X~%5co@; zb-(cy?5`t`VO(%Sp>*;ft_R5t9F9l))uDNxmq$giByyDHZ z@_XS_XLeXT7<+^ti@RRX8(l<0Nc`5k5F79EY!8{R%xg?%(M)mIFeAJWm&UvjxC-Mz8P zW#3xt^35y5|HJDJef86>oXFI zLM0ogPn>{-&NJ&Rz2f@jpxD{~)5hY(*LV2EApdHlU4~ zTrTrgUmtbmTyLB5)n8@)p~sG;-<#2SM;NDm&JU|N8l}@8g4AJG?&)jgDThut@wNu1lKwEw-UW zeG1OvL6k=2gSBDPF&j%UFkC+_&y5;nwcmi9S;ep;@NLujNOC%g2dvluD-%UZemtb}K!NPhK zAI~yzhjgRYZNXq^W^fU|jcIkIY(oeKdd8@de0Abh*{8C#&N2g>Kl*OjW)A0)wmmW5@~GBQ>cI*v}Q^lmWnn0`4AP=(QX=m>E_0>`H#dsn4%z3VAU7pnIL%aNwGHgEm45e@tF8O@yt;;;dofyh7IqM=VLp$okpWzq{-Sy>sb zOZHw8M;sg+UcPxl_Bi$$8m`5bboY>124@#J$)t6e>rR6lt6Qe3IbA~p{DFX3DlI=XK4x{<}yy~!}k`AS!PbAGJ- z_RuTu8_?rir#_JF91Q!M&XQS|G0WK^%D302CppXm$B4S0%k0~sF1sp*ckNc7!#?u& zx_T0Q2#mj{Ym$0;j5bB%d|J^7a$)rIgViIaYEl=Dg73Q3?bsGRC%doh(eL#tk5w`> z+)sYTc!;KX9DGvzfWn`3vOUYp=*Epb9vdsYCRdNlDq6cZcgyd;xihkPA#0iM5IwyF z?rij0XKqbgB@``4@r`213y!Eq4&i~eb2_}7V>})PV6V7X_-gTO<)+`MT3Kw0(zm+o z$Z&0@+RE0i%>QN!-if9QYkbvk)0>1-sGa*qB92w&wRz9JE}S8OyDsWnssDb!3|CDqZ?@(0{e! zye;BrVx*;im+#Mv>a4W*ml#AP@~oEj7etj(UoHA-oaDg1{S|2pQI+%*}`@$!1% z+9*i;7yIT(Mya?$ckry?^$*6bpO&P>$G+YYj0!GHUsPw^_s^@sLP4AKGZBn8DE~z* z1AqSf2^(o3r%mq@dSFn9+S=MS;e+0mI0UrAt37N-e*W@w`IlUMWQ<+aUO(BHuf`@% zzs<9m%@a_Q?75?05!`+R8U1w_sUX0HcsH!l#)RWt{x_&l{|sFQZH=~<2R=!X zFWbWO*W62Q+xehBDsRN+5!O(6XYK9npKEFwS53Jie!ih+(=n5H_4L=0&mOX8Z)^EO z_&~-Oa7WlII+gS|pY9ko4eb5e*O_+FWfx}QUKl@WlPjq7Aibn#l5)FezUvYc4?|xT7Sgx0wCvj|4nNP)@hnQ%L0fjk7w7S3FpzvEf~vZ@{xC7Q(t+j$ zoa|NW@YV0~#kM67@`Ys~DB^vr}GGFzYL6=fqDmLe_g@-4Acl{lnO^pXup7aWLNIM+(v)&5PI>d`_WTA zDe38CB;cX`k1x6NmUHKTFRiBA<6B{`%5gF+J>9$8=E)y%etJCl+!0sE8ezF?BUyFj zbN#RiMHS}mzP?+z3=9JBB!k9iA?1=^Dl4-q{5kIQa~svzw~w7VB?+fE`$ZI}p6}Tf zP1$riiW}yFcaEQ?btR{uh%GB)dhp=EF%AyJp&hsf_WtwWMw{-fAE4l>8WZHsDvJB5 zfgp_o@AXH1%{>G@YH6t`;ZwhRw+9Q%fZ|gaQpDy3bxDY-Am$cWhc~t81 z=oJk9`o+x2S@%wrKPX*$f9x2sMo-VR=|gxe*KGoo1`|2I_d#)OO^xvy=^6yg=T3CA zwC~aXgK*$6je<)z4f$rbzU%Zhq6EPX_O;AcdBSnDm9>TXNEoYJXnD@{6NSdJ!bg{O zF8xz7J~2^=b(usWM4=6~iM?|?jYZ$SDS~3$a(A_CaY54hTD*qu{?m=kQo5BO832y3 zy^0RFSXJ@If7Vdgxf@#^XX)a{%Lg8a?xvu)L`Sd76B^()Q_W7gX6`LLc)(sgFYIkz zxby~;yotk{FbGhX`J%x3dQ-LK zcn*`yuivw77RKJ-=FVLyuA9kERv9Gpu-= zFUaC+rxLPcTu#+=FXn0yD$S;19Zv!q9x=)5B#Z*mc^0Y$zi(*fv8KQU0>!v(*Z$91 zh0vkp%#QO7oP5k2a|D!SkaSCH>qBskq`O~DgYPwK9xaiMT>JFn44l<}O-!J`Ua*bO zhn!QT`RBnqG+0{h$`|49VV`0R32gXr?)2%?Q_dxDyYLS|8(a-dU=-OmL({gj=6>w) z=Dg0+l$Y+H<}_J*aB82_y{du0Z(siU`PYrj)%fh93Ma7eL&0q==HI*Q>@x$#6mPrz z9!!Vwa}8>pdfj>uF@=Nr;!{ZXq8f5qqztFxNSNfi~n1$x0PRY#SY=j=1Yr-_Cxnv#I zPfvQMooavA=u{_-$v%6HwhO80J~jLQd2m@*_jKolHF?K#&or+q2MV#dkIThWJ1k z^->3RXuy=*-d$Dk%x5`c+t1SpWU|+u;i>rFx%bbZzhTh$Z!MuEuvLv1ihi)Mdj3cdxU_lhbWl zQGq%>*9h4eqNkm`ANc!B6W?a3BXT7vsugcNENpGtzCTjdDlfef=lp10;?l7RbQAj09zH5BYYm7mrg? zPJLRu$XRCW7I*t1w+>IE-O)1cGiMHWUhH0Y>z1=jpQGs4a?zLjk>J}=!>o4F;cwA% zGt{C25h=47Y05FL=Lbgw<4@cyVeB39jq z;vT@SBwXC~tg5MQ!=M&ad@1h|iPXjqF8 zhxpfleE;f#H~HkvqHg?USSC&GQ$N(5s!o@18t}|=_l=E=NN8zAR5}5^Y|3SASa&MY z?Fc$H5VJnZu4NX;+uYJ(&|B*EHaR)?gY${MH?XZ0Uu30v)rB*(UQNT2c;+7a`tJ3Y zCa@5H4qu95R4FjxzkS?Q)(YDlOT>pCHx5(zpv7TN<%W1s3`Y+UtFWpOEyLPEFW5}G^^BaHE4j&?;MN) zPHgZgy@5wB8mIJ6-&P5@;^n@je(2VfD>M*|Q6P59`W&oK`3|t3dB3lPsab_2bj(nL z)uUGCkaV8AY_rr+-M39I{Xm1c!^brpJSErDOZNXB009HjFhTUO88BIYg@ne7zW2Ow z-vA5i!;yuJvn>nfFiks`%#>iA#hJHTW;SNM4M+e2Dc}f}72dV8mL6rcy`ppjP}qeY zn(XJcwYEmg2f8bN%O(?fbKAW{V1PdfpApPIKei}xh@Tc4VvE+ zd}NlUlc%`-tz`kBO4;urk%&-Bx=w*TE9m`ax;8dx&ys0HutD_Xcd9kZ2^0XV)A>g0 zpJOGx)lW%e?%AnyXywo!nof8+&#SR`T9Pfn>wby!50B1OP0jGBI{?(4d2sxdZ*c3% zyBwBa>A*F4Hu(H=DQAY21^9V-2C6}tO}WoII<%J*v3Pn`WC$9)8W`c*HyM%ABq+54 zO!<08FQN^!ELmMfdio$|_A#ZQF$gQ0R*mX(1&vKiet^Z_Od|MXP+7U;_LaeXI~i0u?{={H zcevwO{#;krwsq`rtc?Ek3{3)NIiPo2{115!V{#`e56_>%1qJnFnw!7AGz_&JeIgvx zEM4wKDLi%em*|f$DUYy#5}Wo+sg4&NdQEd8mgmH#%c)h^!Fl{ch!%?7oHm`gyFs~~ ziICUKGTluw57nLMDo|~$Gv@w)FVn1wule%Z41XzqncDK6@Pem(M?Q=TP2_JOy+c81 zH&_lwskp&@OW?scbDT zuR)N(tM(A&daGVzZUdMgq{B*v2U7G(v};Onu_^5R9$3JfenqU=u+C?+Vv9dc`YeoSJRdTN#)Vq*Yq<8w|DT2W9_B}qvmhn> z59;#U8=@>ON8U$u2`~bjCqo-~$deEsX+e z)6|mdyUy|B4EK)+(yocdI8dt7Ur*O@a^j<45PTNI(QcKSKY#rAabjIWC_#H=FLWMs zvD2+OwiTy0=qQ;7W;K>ju$4W^sCD<1FCG?`Qhdy`8E0AYUBLP#*mt1=XAO{8ygMtPu)JD z%+74-5x;PNh(=*4T5=^$j&`bMj%7>!a+mR%?>n8i%=nHs^zHuPx~&@=9ZKYnS$+4; z^6`4CuX5Eg8-}2+J$F6qQcBRVXw?-`iTjfYb>trZ z4^K|L;2abMI0@-&AcJ>;5Y1(5(jrBFKPSCHpM?- zAh-fY{&x6#xex?MIB;8Tqx}@rrWTz#pA+Lc<735{p)rzHH1V8I(1ttWM&J8Q=+<5q6&)n3 z0MILKqyC*_NoH8bX5KwBc21=1e|Hg#&d@#mX@;BwzN;Dh}Msm1d6F_;Hf9P zRB+xxdHD&3ERR%bw5>04e`KmQ>*8FTZDQCsxAV6izCbycPtWb??_fu1c`(Y{HiDOoMHc zwN!G9gyWlaJCl{)$ng=jNUWve%F26TzOwPRxRmr{Q)vgP5&0zQu^sFu1@~}i=Ywk{ z0#4AZux9fCEP)hI<#=D`3~jUD`^SOTGqRQZJ`P`Gu8_$@vvF?{;_WH3!z#P^sK##& z0Zw!|vWZ~36B1113m*TRMgjYL=5fQJ`NSBM7ahirK819OkHnYFYu4g}3=s4u{NLR)&!tO#5Ean@|) zx}N{`Kmh9aZoRi*IXmdGi>75M$Vin{nY~`_H2e2oy5r;d42me# zvW2peT}+_fKQ7~=qrSnB;in^N>YhT>sGK9i>B4<*!PL}LJEnt5Ze(uDd!L|o^w0id zL0>su2U{InI?DC_UsU^N<_4gq_TR6I3T?N1`Sl+bfGwm{KufFAQ}Z}9AKtYmLzJpo zd`K{#ZA<9a@#;=EnEa@4WZ+zm+emH7O$ImxhYucg{GF44^$~M&G7LqOz20S*f`uF)w}SI7VAL=^Xu0?)z|MK zAgcEtp{&Pmyciq&#NYAba@PeH-^0=#0gNI^JN0JC)OL98`KG(dcK?IJ-ZvBzJtaD# zw#8XdfYe~1*&JO#{ns~r`^M6Y2`sm(aB}6mO}HcCjbv_>>y7Q4cP^nfJ3`@1wc;T4 zaSl6B^(a~nT$q9Tx903G{y5Xj5UkmA>V>VqA->i3w*?M`zA=XdNu!fz6XJc+&vED* z3S06%ZxhZDr~Tel@@(iUN{`a}v$Z4y1W@>U9`H8TN^RxpHG1ZkEVQG+RN5~`N%4E# zy)9(Ch3phzd&vwHo)Hb*1#v>L#4h$})6;2|k=V5shS2&qt*z=P;azbr5h`P(ZK(w< z>Gj7SpS%ZOYMt62%=2eNsrXSY%^U+QZT-*(%~N{Cnj-<)VZC>LGY}i%0nP7Gv}*ws zhO)g!=Y1YX94Ve_)v?#YmkVWOIcM`|g(kihS!GYt> z1&0X1G5A++Mamn|Xv7t5FP*$r$rCORYBlQyqS%Gk%^YHLQgZU(pY*m{mKA)59OdaK zyb+70M0gqTTi*(1N^j~xYC9xB+sOC4HG1Jd$zR;wM~guXMfls@v-Q57%3WtKLnOB)_s0xk4 z=zw8O$M}Q{YIKlnlzX4S!bCUeF0g*tZxpSqt&qGK!LTYUw=>%HsURF!JNOYS9KnFo zjg4MhVy7Y>c9a#lZ;c$IcQGhO&2N2=_x^-8%Q9{y$$)_AG_I=w+HjapkfKx`!i^1d zR1FjN`vn_&b#2n4>SmpY*|99*a5YrYU66pSW{-Knt3xB0)~25m;M*sHl*XXF0UCkh zU&BW_dtsSC&wXB}*4)}!Grwnxj87V!FGMt=aC}}zF*KUtG_H-i`YXGOl#F)g21J2`Z{&2%HKYhjjVV&Y>#WPSMg|+?`9ue(Vq6Hq)%maeMXVw_`>-t^yj#^3&v@scAxPYs}56Q~P;i0(ST@oaGa%yXFdHf3v0SnFvcA|mqF<~#q2A4)bh zHZLYbWHclrrXfIMCHd&cSp_hOsJng$W!BvShXPIHm* z&Q|zN&z*n%`epd*OGM_{`k?+gtK!AxI<<}0dCEUJK|y9%G_kGz;xB7h6w7f-Lm`iS zvjT3$8QUIV!uM8Lw-lnW7RF7J*oi_Agi0l~lJGr`tlD z9yGlUZNW9)V{#xB-RHAnDncsWDzv~Vk}XjjwzkEuuw%CwwXTz4YD?Ae21!EPX&7-5 z*fuigg1gLLNL}_y*@Jc0jkN`+4M6{-6cl#H9hLQl`^C zl5LD=lwIoJ@Ug0gj%_Bk67j--~=pl|$bhSGuMq7M&oia-JwMI~{sis5-r2uM&(lXSWjHx+z6Rs$Bd z#OKqpckUDj3qO8Z{RZFkmKy(aibzd4gLbI^%XL#idf5Hqv?cejn$l>b}+1dR7=l1kK!X zbTn{q;5A{`Yt0j4@?4(b`H1~vzUOJ|$$$wFJ$TaTEq|p*{-F|g<|`i}CWe55k-7N} z&~UgoQRdJXFm{Y{W?iLIQ4?6u4039QwTiyol8#> zEyIR?1p`Mw!-_Tk$HIyo@zU%?J_PcBV>@Rqz2k_nD_r<4dm=Xoo(K&5iK`rKjvi%A z!&^ysW@>veZD=Ddg#8K#$UX-_c%gB!r9IB0r$GS9C%01prb8EnoKjqJ@-8F-4z=9` z#E}c@u=Q(yEA)Vz-LE&gv zpvjZYU%0RZX>LqEvi+xhZhjuheP$p=VIammj5!pgziUjT^VnYu!6YK-`$>`><1FpgB<$nh9iu7U5gWh5Vt#dbfW($PSfdw>-%0hOA7# zefvI8aN9^QIAn{8=!_4*V)!OB`R?A|Ur49KzC7P)`|0Rvr*W4A_@B4#D2RqLmgV6^KnaHK=6lks!a$gl#buV+>AT}^K ze`0IHN+?b7_JB545#tj~D7`-k*#CTVs_3gJVKlhAyI)=6!}tPF2)pi`KObraQyPyr zdZr7IFGzi;<=}|f%{4axSV9w_RrV&@xn`;mxp=U_mun zIp}x?i{!vaj0}bJOlzLcSJO`*xhmz$p=^LmpsvBV8Z^*SHMQeTM5#u)iw=hvywknM z`c;e_Us6n|B0>Oo(PkEN%WeP_v>$)Glct=TMUp(~R!<<$Vd>?de;}19zEN#*kNw&_ zdB9p5KAxjiFP~*M^^D4B53J@&irK=WKV#tYqUgxZ%ahZh50M>$wqF%q*W7tGkaCYT zgiv+Y#UI{Ax%Y18cJ!D5LcXOdSZL^_XMjH=joJ>EL*WET34GfN;*+(Ob0VF4c+^2>A=EkDCUN{Ci9(A#^KV ze*P_Yi^cZ)R@)06q973ilrZClaCU;2Yi_}_#xop;NF0tn;G~iu!AqlOz%fShS$`ZF zI)-fR?qDta0vQ%&6C|XFNQ#o!+CHSn!|ny_m}=71O9}gg>w0`N45SZMZn!Abe9HQ& zXpi1BMVz@y{y+k4E2PB#!qbj=_Fx*0=BfSY{VtT8k;r~f8W1}%a@c{`$|mPl)@DkU zb7?lc)TW$s+-uFUc@0e}lmr+?uN{Z{8$R$!#I#Hvn4=O*YZbXR_UZb+=IpWYPcpZ> zR$I7b)Y)DYN!NAdTn}qL9>;ffW>f5LnCUFkIg-|g=S5+1<5@m(^yn6%Dcbq@RJCfhz+odR`g zX7gS2VDW3v&M$%{Rb2HLi}JYftfge5SNnISWL)Gn$NfJ}j>Z;rg&)5De#$7*fheNIoK9WaBWYuw>Bw(=_&z@y#O&7YhCE zkstWdLnFQ*_}-M^m}p*8a<5o;-SC}gx9GKyt>U8T5q?2q(Z65RrQa0&-Ntj~ZfNL! z)TgZDG>sa1cci|{L+#wYeY?v1ZjtQVBb^5;MD9q)8;CZFaBEQ3A!VRVjdwoTHm z7=G>SCw=d%_vD|>yr}1H^J-{N4*ZgvoBQ})xvl%3gOKOH#E6LvaHHuW9$gaXWS{)< zxa@4T5MeATTu)JCe1M$?g>$2HwTK%S`WY2ocNB@fuo;w*Zdnep8!J z!QSa#{eheTQAdyUmN5YpBQz5HFyaM)F)=YWrm$pVZ`|Zt5lbHr=->b>*rYl};oEy4 z)whIVo5K@;AqPgr#*(*8;(!Z5hlV39J4)>%S$=6}&g8~g*@ic6S&YJo%g?99UTkS_~WTH58;xh0I`7 zIY=5BZRXp84Ik;Hpy~TqMMx@_FJly&FUZEqD6P;@#X>x)Nk02$0(urjYNc6)xPG} z{yy%5b(f@}KhAtXmTb5E8)D2MjwI5fL6|Jq5jtxaDt{M?pHn%e!x3iO7YYOhIx3s@Df3bC9- zLOe1;jMvT04NaR$%{atV)#|Y5i-Hhvnp(!u9;s0aItL%h7SXctY_aqgDpQ&v2t(ha zEGudm?N&H|d&q5}6$!ur*tK^!ygK0VrncuQN7yAj-i+{=nDo)~<~I7_yXsEq3mP$8 zOR*W=4d&s+F|x4`2D6wI*t(*=A=a3@%m0h>77|l zFO_`y9e^TU*3j_AQvg0YqeW$MEVL)r{JC+xoHRCZ3K*xk!i}x%@)~+`m-kgn**X`t zM0&{#_Q%Pv#CG)GJ{{=zv_?xXHEL9$-dxs%e_MOn-$+DcD_>3C&4c2ZbVn{kycI4eX1gn=qB2tRHr^`c$C$ldhAJVndwK&1&f-R7=+Ral+mbY7t41K`h24d$WuI!+9@f|mh2Eu|xRbo#c#pf&G3 z@V3~cm34G{DMc4a0|Ntq0#pTmoAPdot+2@(DEJ*6$w%ktrn4!v39 zn=qq}SIkSo#()6Q$n7urp$}t_vaS z%2b5i)6m^*E%3b~&o<^*GFD?K2{aq8PX|OCwzXr^`i!yyHxD#zWep@g04`;;2&2BS)?=EuQQ5XW-B{OI{2+rR6NW*mW*v`%5_qW30NH z`$kOU|AO3_3z^KzS5bh{?rE}G#i-FYtUg=Toj69&TY)YXK3V*S z0yr)3VoWt4>l-yQI8qB07W%VZBK6b2M+GF zGjC_Uf}^5Fr}N^tqBnLFTx=8-xNRSAa>eF|{tnWh=oJ+KUS5`w0kA$D%P$_G10!j0 z9$^+bgh{+P7oK|^IS9y0|5EZWydjLGMHOHo=DhPjiy7i(AH`rFyxXpChp==Y&hrU=WQvf1Tt<+g8S)@M_WDb%-5*QOv}K)X!-{~>A=9eJ zwe*c_Q%CiXD1P(i%|>fu$ghaxij`V@^&E0ltnD0ibIZJ4Au+CYTO1FhCU_3#IF7Xz*Jf zm<|7Gs(fqdoEp=3;FHAi8PIWwRxb<{Vo(3TuqL8f2MC68p6NiRg>Raxp8mm$e`Nr? z?6@{M+hoIC6_-oe&YDO-heb2+Zi{o(6e`StTxX?vl{wK6B$4ll7Qpuo5~D4(X!p$04(m>P__ky2Jx{wV%3_85rlzdveh zs#ay3Dbp+(l&9C3-7AKE1LITP;kR{fQp4m$=-e+GZ=U#UB8EOC$r-;NU>UAKNb%dR zFmCpmZO^ff<3nK;F8?}zp4B-mrBkg_+=+sO4d^hSYlqRa2kPK+#3DaO`#V?~yAYia z5skWh`S8fm&YzGQGC+-A(Uo0yp5d9vFgCGtyN>edHhT02>9sSLG{`#a51iKC3hc!E zLS`vd`z7X$t59~K9FZG|pO`sg`9{yp&p~3H?5fD~S8X<_)+{resT|qkY$XYW_LloP z{b%iQN{@6J4=p`Cbt^T1sy$e_GpF$7;wyhg2f8aaZ)RCGO4x)cTX8pDEG!KbeW@ivND$J^WvPen_qT-+%t$75bm=dH6s7Y#{K;a5_xcYDfcNu1U+RDUnK;S+eNg}Bm!kdu;Q(a=K@5C~K{-k~kA-xk zm;VGtspI;f$VG|Xqz%T6@7X||`#g`|lPCHMGf1=Yzlcu6gtFTma{{XK;_(9-Jj!n( zTq|?lPR_}jnf-2KHr3-KazL0x_`ITFw8H(kw7iCEq>tT}n`;X`SZb1b6&Audf=jK~ zte+Fx%lE@J_BKX)yRKp%0<2ZF=8l_PKiP?boE)&zW)iU$@9!H>35k88Lnrca46P~A44%0N)| zPJMvd=iun*#+rEuk`w?^RGfz>sG2+iw5NX8Vkm7qL5J zc2@hy#KHqJOY}G~)yw9&7cng!Z1M#=yJ^2_RiO{nr8Ta)L@ts2e=F%tJ%2b%^_ zxUgnBuYGDW_)>F2qV~&WZdxD7r_hH-W@)58Ktf5oT5!Ls>nh+bbU#QeV55hd-Z$bT zhkpU+EBHS!b|=;SAsZ zTlIf}-Fk&v_}`_G)Hjl}NNnN8Z$dVH{$x>%5@Z#XV|Wj>=a>;_!4q1wK4;yemE7a0 zwQgl9{&c2KHUC`qbTo|oxrsu&PJ7SYBYi^>z>g}Lpfp$1tufZ9rLgZ65>kM)A>O*>$`@x|!}=sto33dB)XL-Lkko_W@&S=J~0O#2n*D=u~ev zt5&?1T-2WJ7T+57bB1b;GBYhFH>5_>b3~kL2APP$wNGlxf^l{^J+#lU&_%Fet3%P) zP+x!8v;=?dvdQ~i(}>y+H!o)AQedyc0HRpxbVxo;!)mGP)hBnWnIduhFR_j!81D2)E6r4iC3vTtoivr;5hi!^2z8cm2MbY<3I3 z9Rpt2*xAv(6Yv(MLa~v5L6ry1kc6CF+Q}_{ryExEV&m+ab4F3*U>(wN44m>50?j^V z)!fhW?xPY;HVrb-39Ah$W6u*0orFk4wY-Uh=X9sorHeM1O0?Bq%}IY6O6$kjNz90U{ z-ubADZ&`F$jpO2VetS1!BcFSv!K7{7jjRLYDmA{JbI$OUo`!|7m+m?*AE3M%UuK~p zHfyCd%9PE`+<7O~iS3WUQV~YHL0bz*rX2SB$&#mfozrLaeofOTkFiUzTjS{5M=QQ$ zt7O9dkdzO0b2K#Ej70zq4CdEg$yvdKItj{W!Xwp}PkKwP2OcY>tB|u6eywTKZ1z+% zCqrT0?oR*N7UN>@#0k)tlSh1i)_vxCJD$$%TPAz^I;7VA<*OnE<^y?p z(Fj zPG<`9De|QSSG~7qdc~m674acVqT3jsS#XH)3H!vw=(R@7<48YD?;rc>)g}PELt|t6 zPA03e(vrslF~%(nOBNB<{ZW6Au_1CjU|0xG4WBk3TPt*X>M)5QT=XOSa!xw#%SU?U zsR5=9LNCS*=9ss>-BTPtKm_uD@L(tgZnMR)tU97e!YBhmAvlHeRIe0ySStQ_Dg zer_6mLxS1{Mh}2}IS82wOc4nqm20;IU`j(+E$i5aLHi?khk1GY22*c7(7A<;IH4Jv zEb2!G1LkBIikr+`(}n_=4%y51_T7|M!wj9HY)0CkC4Aj9Ez5 zU%MoXGK)yoRAIqzBnymhf-_6J6P!u#%?T@NLhP#7MB4?S4(kpaTz@aZr~NOI zuI61n7O#^>9Cdfm0pc$Tcwb5LNqC-#TgHQBfR{eedsLs1iRnPFDL!`Lgxl(JTbUy5 zfH`Zxc7GPzOeITzGSWz}yvvG?j`quIY3O^w@$}Vgmd*-XJ3Q@uf0n59DkTe_4)82p zMgClXi9Hx1SP(Vo$|)vV+C2*t<^w*_?ijyw!K$~E0W*PS=`u^IMP*Ok#M_aG-bX#V z{V7ytW}hI=Oyzx2EIh2NtV!+-1JmWzN0dD-ji)9hJQ z(Avs27CJJ6%bLi>k25TlBLBOQQA+t8^j)k|xXL<%?0D*!OI5f>?F;IAdN{1EP7sd} z2Fxrf>FP!$J&B{0_mRZ-Yy^;oF3$G9R_DN~1#uH?t%Or%H^#TdWo42V^}m3&6s@+Ew7+k?X8D!qGV+RvYrZO|e z&kojvfYtqo119bfn3c%*u+DCKya_kofdRqH3S&1O6xlpd5R5n9JKyyr_Si$&9bf;c z*^&g&)gn;|1~F(oOvNCEXpMd6BE3f-fy0yzpTdIAbAWM7?Nt2i%(*>VZx_sOxR*-#x~L`F%c}VlHKMl*8uvH(rm<;-~M@4o1T`opXa4EMpOyhG{bNX zH2I`sCr?s4LGy%ZzUlmz@1x>#hgWzaf||6-{EoS8l52F6jMZng_S zj{qA3dxlOZ!}0;7Hp%Q zL0iVJ`KXV9p?g<_cLRrTr`XHhy7B-jeC!BDy+DWo>UCtluTO|kJBRtqr5+pe_+9P$ zznW$VWZjw_YRI1i%U9W+dZ^Z->aLz}!%16=-GeA0jdmK-`%e5)b}{e2W@UBC`cB~2 zr=^=7#V0@;Vhfg?^@T-TZUKS-1}+sztuw>lb)1-m7wqd-ZTvVZSW@U2;y#x(HFuz3 zL^Kx6K;Ye)=?x6O*rRhu|MrhPh;x;Kvh(W(Jyh%d5fXL2c2+t zBxo)y{f^mHgii~gS$lNIbCBjzd)jROujgm4gCp9W-gdGh3$yh?#y(RFI;ZO7Q9v|8 za))_8*xQy7;TG?)sXC8!9?~`3xBXi1MtQ+>6N6Le6c1w#e||2Gek5(=ARe3y*j^AL zu6P`KvS#dZG)kE}r2-yHS)@E$#-sBCo(_nlKW-AoKaIDI%P}5c!1aq|4nT?MJv+1a z2l-bUQ@K584fU_AoQc@z?>FQ+9y${48^K5jL=SuTJ{xCcklx*%?$7_GZtJUBXkJI5 zOhU@~mRgn(ll!7UVli^|Nk508d85k9nsvEKAww?FL5WusKUaq^w?1{kc3FMwaY_&iM^C6{aX*CMo(QVlE$d z#1vGK8}2m3gw)SKfts5geh+WR$qr5Ds!xX zeZtaTTpW0U{5A1m3a~`6V$xR{G$wa#Xs4=kg+8t@OuC{cQf61wZFs<|ml&VvjZx)! zrE{rX3rC*H&vpdC3bhwg+G)s)k8grGefQO?SMhfG*Y$mZdex#`Mw%171Z8L%;YB|Q zK0a4wWMq_7vF*}C(+6`aauPwc9oxq}7D=aQ9x>`yC%R%)S>ulBG-{iI@7pOV1{l=8 zd9T=+0pKN#{A{7fPTR65>aE1(2mx7Sh0&}ut13~l zahWE2UPy;sOy zA(hOscPJ_=ME1z@`qXvb&+qx;IgaPKkL$Sa`?{{2&hvYI#{2zR@0c!1?@0c`orP7E z>W6a{qztF^lP^2Nj|3j-5N|)$VRBc(#tj=l%+TQD{>9LA0Gvy%RqUK;oM}F%UcosJ z#Y2vn9apei{nv**0?w(v^=!MbqZvBK*tFYYZ|3ra8E_yJ1;}wrtIY88kK%#(w2vQ;?Dh<`nmpqTc1rSin?~rN1i7a*~I6di_E< zT_D8^_&xO_IG5)dE;|cT81;8@Fd7`l9)7{Oq32frCJ+m+pz<{3P{awDoLeK9>-U?m z3m8_Shs3D9yM@TM12@$@5VvjQ;(HsK_^L)Qm&!Epl9oG#c4Pr{<@DU|=TK03bXQho z(cwXA<9Pus%hJRg{l?QU(W5|#;`F@u-OE-yH@0nu+V+UegS%7g6<$~NWLxtEl+>=9 zRG!y+0h-$2S-l?(mD`=+x%EHum_C|bsItXU$;fv()zEOr==*2>Y?(8-oKGYm!)N_@ zdH8c|^H!?d4W*7iFW4mHexXZ{^Jt8C0TdD~JU1PtV;@rvKFobu&$h2=lcuQLDKH$# zUAIjs&ha&Cm9S|08Q6YsVYl-$KDa8@_NqL|OxOmFBrXPDHdK5myf^vwU+o^`4%R4f zny8UcfJOsC_@h4&-t}^Tx6{^6&s-t8>f=8z;yhAi+iU9)+;jfY>P?A;SF6Ny zj}0bR=5`ua+pw8Tp8wtTS7+2zLhqTIT$N&1#oKmdms8DX;Nj~SF#)j$Io;#CslQ%f zk-ID}I`|{|1+Cg8M|6FB4n~>MWmDA4&lun9Wn|l)>-wI<@a7eg_wiE<NrWrwi?xir>YBFvNdy-_OT;;qXtbpt5k@L z>0%N_)-MI*(g@=o@$aa6sbN1Mk_yD?{LW2GF zMb^mNi3__|AGZmrG~&-iC~JAGfu?4+-E<;V*B5 z$dWXC2zc_kQXP&5y#0d26h$^Ff~jKk$xFF;%KZlb;vkKQyHk!?dw+o_l7!!IkP(F~ z{Frh;Q)MFmY$MLpm_HoKj}=@al@SonNgxe zu^f8~=ND0Tk(eoBiyxjLm%diTd4`>rI4XSiUeMQ%c_eB(ay<3TUrP48>RwwnrTt$+ ze6arSF*7>*g#W^oP4q;VL&~+{ubuOZ3u8A=OG`hl-`WC}{n6vjDGVDagVjlC;_A%S zc^i6UUTnPJvs-=$>BW}&zqd3uBLXUxSuR^_5fD(4Q|mehp9U@#B0a+CgU$$lu6%xn z=uI4O)*1U7%uOrXP^o}=dI=&1dMNGo-#|^#3BB7O;4GU^6**Hm5!fdeeN&N% zZBc1$2Q_pYPm+3!2j5%9XwpFKBj{z9y&ZY?j~Shy4{Tv1^L1Bg1lPiqavFUFvKfu%g4L}G z)*u*hFOc|hPes_dA<{*+@ThcUv9tm?#1qBi&a~Hxr*|OT`oS_TICQ6G3oe}{+111Q7Nbh_)B>(gFuAoBU?yE5l%nj_f2 zA5U2|h;V|(iyisa2XNT;=W_JG3k5y=d04_A^`QAYJo5^lprzGJbe`(9V9CTLl6#ta znaPy;HkvkQ!OH`+UDkgdR{4%piBGO8%UstUTa}?`8r)`R_U+_mEG)pzX8@lMK-{Ah`*F7aqNI4tCNlF5XK&U zn1=XE*3gPhZF%$M2x9KF0)9*GMVxy+OpW~(cT}wD%FzVu7J&t(uPDpt!y7r*1x4be z|8hNXNeAADAW=sFI9Jx7UnKS*OqrB-j<6Vnw^p?y^QkMvYlL_B!q#%`lRL37VGXbk z#jUyaiDtImYR=iep3BCYu#h%-hEMFYC>*U>MOeR^C zO!I7IB58VXle`-W{_)N#FXihKvsVb^2{=62T}--p^Zr@ZT{f6MHi)d^Diakx8A z=m^b?{x|AA!LblYf(;;9Alvw}r^dt`R`&guz2(TRwObpu6)A6I`ZA~mz>(!OqhL6# zY)#a6Ut9iX58v&)18-##mM;xh=F+^?=>7Rz|G)g__Xqd1yZ-xPZ$W|mmlh@h+5b?) zL^k%{|6kj-spMObZrV}MT%OUd&2nVBypw_JQ1CgpvOC`t8sYC|Y{76V;#{D(gIq z)LSJM;_pwD)#3E^ov`R4@*xoOAZQ!GF``@8U*{d)Hlo=(G`I7u2JO!cJa0Ah0Ukh+ zdsyi45GiF)^(Zck*|r)NHl*}}%tTT01w6vE!+C}4S^V%8qbh`DbnZdpglhTEpFdUE znGP@kn?`t%|6Fm;XJ;HJ(1w+y`F8*ukSTJN*pGUQ+4;HOFjE5qx>UqcxZ^9w1mo^{ z=kON~%^NO!dIZT$X=VQ5h%w1WNnVE-zpK4Hluh&NxDMC2Q|x#=|B=mqVsqUw6GKz9 znm)#6dicbN6YD5|^OG!O`t!PHDXxF5+)D8p6Xp|Q`$vL-h2*VzyyC2O)MOb@T|AYPt_f9m?x=hhnM>7CKqY6_FK*z<7w*JyM+&b9_gh z;v=Mcf=8veJXAYmJG|Kp>?-aetDw{X$Uwc#yOi*~wu$sOw?J%it5^%Io>tp*XlUrY zx`D^PYEWL8PA{XL0C>uzm99p*93aVyh3#r$%BS=RrT?88SyCjd3xiNt&y1u!rTUK+ zAZiPy#vo6FxD^(5e_&rrxe8KlpekHx+(O0z$c9CH)hbNR3knT=hwYPrSO7Azn+#}z z>JeD!OL#%alcCN6cTe%#zSXC?7FQph0{Nl{=@l(g@HRHf0fSof>Q9P^`JfR&u;Z#b z!;TPF65R|1z(X3$cB(*dFy07fwOXdZdScDf0SN`-9v@$Ch72=0V}ut0@<>eqGDSWC zG&?lJ-0Hb9%Dkz1n`mkKAz{Igw}-T3djX3hqAS$fWaa`S(FR%y3Vt)6wV~L{e9o&0 z5`Kg7RgX>)%z`CD3b(8S!le(@?v*0@RI}@+U>t+BkqkpY*$Z{Z9KxfOg`QfT%RMUO zDmg$W2LX2`)q%x}ImJnpR!&a4!3~^nS;~JYXUXJ0q?I;+H$!r)iLC=q0dYhZ;36hk znbC9RO=>IA#x*W+%S#a8AQthUm@3MO0b_^J`UTOUb2A(rvJiNe8)pkx@CCn>Dds{{hW&eh2KP@?BcRwH}iqhW0KYXh@z&eU8Pbn&wiWjzw=<}JT{8%K`8^|~Y z4|wT)f>8?w7`pd5$=X&{Y4rmj;uJkyV=HiDe#RC2cqHKf-YyjcR7y%p?^@)cYPflm zqj}YktWO=r6XsWMHYi=ag+aK_T+FLlhF*@5C|!b2W50qrpooO+ z1xO7*IIvPX+&~wj%iDtj7TcWS4!Dd7(c3EOVjQYqAz(vZ?NX|}`qnP)Fp=Baa7tkE z?R#`rKtV1lI0KflXX8@6_&H zkD6Rjl)d139KKP!HkQm}MJyYrIWbJQ-;AD!1d%7^X^f%0I=`6s3H%C4e_+H!=alXE z#qcSWA#a?qIEnt7qB)BN3W9lN0_xxM}8p5KJGYvyvT)-n?TXF$ML;+ye|!2)zGlYl1NU^dL&p9dAK(+KcNe($dPWPViWnAz^ZEI+bWUmadb!@9Kf4g z*!ZgVRNkz*kW-S9L&uZU9{L@70|~wVgP1yO{FmXZhyh8~tm-pjBMLDC zR~oT!ajnFrzV8$>;<5}FXDqjFY{Awk0D!dZXMB5`-IwTFgJ zZfSJMl`fTHv4?%40qNcyllR=i#ipvCae!N??(196kwYpJ{+#G2zsYRlaEj(uv&W4MtG=z5D{Z6sk$Y) zA<<0djG>RWcX_JM)@NG~S$00hVb{9VQ2cm642x%lZ)^CY0M%<80m@{vmk7E=Bb{tw1GSq9y#Z_(nXl3Q2D@OzJ zG@mZP$kaDH011YF#L~I!0*JjS$eb5lIz)hB1NMDy!LDb~ZZt%~1`5Ui%_7ozl%rJ`AC=I~Om+w@jAZQT)O87#eC*9Dod`Yp5dTJr~hs0ZlS+;{pb>oU8 zz8KVGp@58iXhg(e3psiEADuZH@vj36o{IWl!u`vamtT0AS^8}AwOxPz3|f=q?LCOr zd{lO5lV6n)@-H6&r3~=-n%i(G8*dY5TXOeiP`>L&4dA4D@Ed{1`>JDGdN5WEydRq> z)6k1_ZvM|z_FNiotQ5cnK{VGiE6$a5uNdN zMMA%(A3*XMbnL%27t)=hu_T!id3^LV)F3RB!qQMrc2i&AkF&We)$7038BTxfJH00% zGzm>RXPwZ=OC3lg=QdOy=Rh@t=_Rj!Uh_@i!wb+eM6`j&hCqnTcwuP%g!P5YOiUm? z<3yDU!Cj-v@ztAbhFZ3*-gJV~`eL(@nkXWINdg&S#2}WyAHlesa*A^)v*7$Pw%PDR z8JFP7;Oc0QGUv*T=G`Y~(pHkjr!pPL2fSD64-#Jtc@`~>dE zmQx_pV5K^yQsz>8f2CdFl7>Y zO(A5O{WOY;1GW+o{;EF{ic%FP4i_q`JD$6zx2l}Y^3&7BPFvpde8UNbj;;PXHTyU! zI7bJjI`yD>hlb4O=unlMFmJGw`u6i%={DPhyihTJA9&%Q=l)#Y8kci7H`F(Y$6u=4M_%pgWOGoVTOLj@<&Z)8-42W=QS1s2X*d(<-xqbA994qD!IGEliC5TH7{R zRjFp%|08uKmV;lYCY-xxs9e>LzxeE}_{D$Dt$&WC56{L!oC!xIFVL;Fd6Vt3yzs0# zbg0HNzNwURzHKJPL*;|9-d(P%!C(13Y;~G%RM2%lU(-(hc4c%t}* z(-Ui9%3%6WRfR(iwMNvg{H7h{Bi=GXCU8;1bPoM3sisfB2M(D%t~j%hFG_~gI-SB9 zZ{D0Cf*cg-Sg2?RTt5YWOcGDulYuD4stou}K=Yw|#YO*l722CFGdp9r?$@dVM)#aTs6HoXLK#zV)RAcO=*L*wh{|J;UE^qeqN4DPjlG zznbPz?>*(RRA|+UQv%vXA}7FziCt(W=>yda3ol)fGfJ|Gkml(40apoHAmn)vs~AX9 z6vogiW`|$!2(qu)k-Dvc?TQDno}iCG?{FD^2wzGDv$c(lg2hCfrR!?Tw^H|qq#opC zb|Dz)33J%|aWj1sBuUvJ0YbVyuEmVl?(?ZWr~FV&=;J3rCwEFM zD+2Yyb~BY=0O0`aitp*v9H(xH^zCQQJbY3t&g@Xqj0Z}pGM)M(&pFPjyAC7!S-LEb-zB8@0*akPGEj%g$`#Yoeez+}v3G zeq`G79maln{ECJGCRB6-EV(WE#cr`8r?+{W!w_yr`x4A=2K#yZz^hWC@P-^9O4aND zn=U|5iaR8ucktNm&16CuMf1R(CbreZAlqB1+2w@s+Xm1aa*Zi6EChtF<@Y5$qaPXEfHeMryW^zhNgqrq z@C<3FGL{@8JPPZ!(-^l}(JyK0XpiqS^Mpj#<(v|Ufy0KqvD=4}emsK|Oe#q`NJ@S7 zM~8p?EXZfX`;xE|c7EU-;K5TprL~V6w5{E|`%#nI3_pgzG1xG}>(xTX<~`IY#YN^? zbZqQ+wc{UdmeS~&{A}mkR$mhfvaNs5k_r{Q`TB}YwI7K2Bj{KZzv|>|f#NJ}=()<# zS1Cte&>5s*ZA(rD?4u)tgO|gMVW8G4QbUo5LkYrDQXI8x@=mIj8Gpgbb{Z?2u;B8Jv-7j8F=z~-qu2utja^BNUPfd= z!O565zF0Gkzs9EQcKa07(xkaH9WP&Px&}cSbbfkWTsd}JU3#lN-)GRe1E-a=k0x)R zi6fW51-i|XSF3IJ1)J6VLNnY_E-<731sZ-P;ZR}D@uy+nzRC1t^uamheA`zdncURX z)ZUHuO?96WR3#bI#9tgb+BItb3UjcMzXlGoEIvp6@ITG*y9E6&-GihQw_G>4G#*8B!BnyaElLAr>{leImR5nNTDjU zhGF3GB8vf2COYaotFUSxL&w^w%y@&6^wgAa9>v~$ivi)Mkged^MqTCd)mBKEt^!@i zj>m>lM<2{P+^7M}J9B%jik4<5rSnIaUB83hN1=cCHQ+~D-efNhQ40l%j zfB>o0@+KOXE@foTK$UpDVDfeO;MK|5tjtW*ak(^!!qCma4Z{VPSPOpn<0-$P<4-qnWbufeH2HSkWsP{-n8K)ewm{(E zVrNi9;-)E@V#WmL@Ta3qKE%$bwRCj&Kz3dIFXscnv3>j=3)_nA6ZZF>D@j$AOWi#6 zLurCy zK3=OzQygK-m9DPKSX?%XJe*rPl}Bo`Pj`7Vb;t*7wq3MiXXrXANc#%#IUGt>lqjwt z#4}o&J_K~VshosF=#_7fH445*;Orx{cGQ+~UzLvmuK(`vz~>FC@Iu-D0n2+)yI9ix zZ}|Ryy1M?aP`T9YW0Z~!I2^zh&Hg!z3}%?Rc4%(JpknZ6xa}VAh^(6s+Ztr#2T%xUX$Lf ztKg%Kd`F6QE5--&f3WZyVU3W1l#;5_L9>}-$K#~m&R^cF0r&tQ_DkW@tBA0E_wJot zl3eOinlXHe=yNe-EN-Wy(f0GW5wu6{9hYCkj3P4N91Y>Kn$VyiOjVy#tMLvF4!RZ7 z{=u96z|KD&t|0og`zb)J{|rd~i0#$~kFn}9SYhJW0D7utXt=L*B$)KaxK%+`_GJfl zBZ&yz9nvJ6c-S zTBXvVpK(QMRM5{fxmPY{4B7Pr)skUXl$exMiZBnTG+GEv>Xgi6-iUJtiCO|v<_8eX zgjb4^^>Ug`@w%PlBB;C~SMf2S$+yWvE~(OpYxLr*qd>@qdMgD}SH7Zu(!`F?Z}d>a)P0tl+Ed$j@RQgl-Wv{Qjn3}WD195MCV`H>mfR;0yE8(}l2j5dS z_5N5t)|E$#=ik>`H5_u$#lf!WP&)LBkQ8IZSqrHlzK*C^0xV6tBrKCsQWRUdhis91 zEq}ZoKUIzcT4}liBqG=R{zVJGs1a;T^)A}EY^fUS7pxG^5;|5Xo6Yyjp_qt5A>##* z{s?q7Ac3=gkX!WmNu9yf^JVAk(a7dnbimJ+Z02i0#~Ua;t+79>u*&7nyu|TYjwwN? z*idjF!I|l~WN(av$uwtRLV|kc3Vh;Z^k4G3vxhbw(8ldt`SGJli((yEV^a*$XfJgw zjncHYw@19eQ0v1^Iaj1&Kp&Y^Czg`(&|t#DptZg}GIOu!3UTOSx?rd%~~4F-{}t`yHTo%v6tR(5!tQ!0!RAa|dhpW;jl<_8VWxH%kE zNOO(n(`Wqty^o0q6I?&)=>#=bx{zBLFYqv$|Sg` z0kS|b10NInun5u}mnH*CS5t6n9BF@gEWb6wpU5ZP#QVQ3|BXMV-N6CjGZ>%3O3(^9i zAtZrUpr8IcHgL&zR+j2k-jS&)_`IGAm(}sP+{vQ{n$Jpjc#>$x6@uuA3Zl|fjQ|No z@+?WfcXb-ZV?j%;Co)xk_7)L^faqSDt2p%@F94R&4Uxy2iLe3zJv+Fs+`-t(y+lm` z)xyz}C)XqFmq;ycVRR#cJbpq60U4P%jwH`yY$$6?I6e_3%Z=%>Sl+GEc}UoLDr5O6Uq1UL zc&Og_k2jSj9e!j~kn5?zs4+$(JlskZ1MU&Vkk_^8y!^S^1Kj|!nDEmAUV%hCK%Oi_ zH7k#^ddXA+PEO9(H%k{aNm3}G7XZ8}{XR!WZ6kB?=Gg8Y1XEA^a2zXGOIE^pM*~qb zhA2n2k?)Jfzlz@Y021UNzV?aQ<5$k%*MU_?a#Njth4jADURh9ueI#YU9lM@<3FtEC z+6d8sxJ|W%%p?E+3_>w#I$=l2rs)-qaCw8l(T5MBdXOo+hv4x9|;xosod5@qqbu~3_ zfvux)=~Icut^{F{EQUjvct#-&KMHD8=g2z9i^G2b-(JlmVDTFAc@PcIf1wjQit!Bh zvieX?pdkq@jx`2YOTzk*D}yRpQ*FAb|D6XN8fjq2(PFF@MrB+Pldj?XujmR~{uR~V z5`@kL%k>`~RRnWQpmKlx^=s@{t9j>G0!L}@^4Lv1oy1giZEfvOqj`iAsKac@Gr+-- zotwDu391p~+u4mANawahhB}#MP;F#VE|r@~_9n(ffe5ue)TvhFgL#KSVPJ3HtVKj6 z&?Bs}0~WVYu>%-F2A{0-Z(^yDvd3wF8x@RIB|>LBdLxjpcau$1o*pO-;E;@HqpXg5 zyyQ%p%6DG0Cj=BorTZ2AWr(~b1_k2?=N;&_2L-pROY9WHbHqUa<1-6C;C=8~xT6SW z_Z4$s5WTl8jmv-BZ23;7IlZ<5Y3AO%U-cRGM(d-#eZ;e&Sg5Q~=Q3(vWOjZJ1xy2A zGr@xLeq=Ito&yQ@j$FjxtR*eY|81YTEq@%Uo z>-6(LR5utxqJ50CX3Yl2mR^B|!68=OM%8uCis>R>36Fs=A--vx-~z{7zt(fH9g_UhkM z3^2o75@w6SejRvv_jvrfk+(U?h3Xml6`A;Yp2FpaGH?H*1ptVr6c$(mpCimRVaLcB z)iV3**RTFu`h+u>-g#`-{kLBpNvi-nBx`tE8PxSDe&y&%T4r&Y94e6u`taRLOZlvO z9um#-TdF}x5Io3@AZc{1a=y4-J;$r-tKC$za6V8`QT5G&_)~2WRL13ovFb+z1lXz7 zf_oA%#T{)q%?Lu~uD~7wI`a~4y%Yrm75@!~$8~Vpbx2uLzj7zb+ zRGlS4LZALX7n;la61-a&uM{6aX)WRHpUok;8>G$&=wST{98h^@Q8uoaq;?(?O;xYnH zj_el{yxBRNFe?+|ro&EUwaW>)XBTcp#$yofPAUYl3+^g~nZTKPEhmD&zCKF!i zrsR;fU+R~al~hi6UsP7w@d< ze5T|ChjMUS(L(S#wdqiwE36gGwjk)XE~_44r1yw>)!zr-7sG%GGW)P0ql9LY|1#$j zn#iqGVO9tjv90m?lN<7&A+ngpG(PHdyq2GM%JJZ6%@0u_Jp876EtQ`~xf#T}A1Qt} zjYXQgurrm?EU(D0ngAD5CD(dOyi_(^3`}bMFeox%i?4)FnV4@-;ubn_?%te`z3r@t zrTR5C?wy@Az6xyHHGwuD|CS=Z&~rNt^-=UkHVPr8-P@wN_lVHpng^*5Q>$Q1NV@kA z!K)&X9zw+-_NHr`fv)x4L}7;X$y?*av+riwQEE^AGpHNCEX_2|=RFU`3PKnJW}k+1 zfK->RD=wHhq=OBD?EcD{#g!l3&PvS#VJjmy zCS58kDGlPgX@f{B2X7QncRXs@7oqvQd|gIkoK}T0&9HpSoiF$G9q*XaC5iu9uO>5ka(glUdNlMB?R8rY)W?|7xh-)>q&hd!xzK-7@ zIj3$rU(;>*a{b;Eq&$YDt|j7g>wj#ex%DkTH5(a#%Brf`_MfzbWC6D3T>tXsNn8?A zSU0FByFe4*zSnkYMz^~BRBu41J3s(WqcM#1S^{B;>3%h6f$ zHP3VRiaDM5I{r?4<-=oN-@vKq#-_*P-d&@uxXxMcf1GqdYw?^F`teIxFX0vf>Xnm2 zuiIZuiGk?Wf`;W)@`OFl-XM*I#cwtRX>*I)PYjT7?=ms;r)8pZswvso$L1UWE;)R5 zTWgEyA*;{YK-vx|m@+QAl$KP9ja6%7<=TPaqn zeO3c~?Ce*U6vhC6wWwI zosASlr9gff1-CMql~B`STRAmXF&SVG>t+-`5BQaYix&8audL|_U9%uquL>}gB*D91 zqfgHxO^@i9Bx3fDM6NZ;q|{G=*yIFLM+DnTx2ySJk&^J%fG8L9%5U;=BO~KLiI)k^ zx%GyjZ;{4JEqu7m^KQ=Rx{xZ9Ioyih`eg*fcATLP2ilv%-`(%1V$p+S>Y_<7T1 z-<8x>oxR#N{%U;h)gL}=n(vaodi7vYch7+(t!r+g z0}LxJDE>+}u1^hIbcD_#8-N>f;mrWPm050V1KGTPPA~)Z>bWoCpJ!izd&V}vd-*Y4 zdX2$1>2=*CYz~@%E*tKd4z2jGIKbg^x1YD(IPmxE`qw|-`{{q))nkAc9G)#*alS4W z7yEfK#f|=!egP~BPrf~M(>F+aUalvPt2`W&m!60-o)Dbri{QCjmWji!j_o;_&!?xS zm!`g$)@)SNy~l}v0n+n(pJ*k^BEEPF_N;pl^EyYhDAWNm9hp;U6phcPZ{0nw5vuoFA3vLR8r1sYE zqea~PB2+_OzF|PL>cfW?Y(IiXtEj|d5&*o`2%k;?YJcJ*ev?CJm?K;1@9A`M;ylUN zeIjt$M%wUjkLs<7;21aSKAVDU2-kJa_dl*!#OR=}c)$>P;}y&oriRKo#$NNurnKy` z=!(PKDMT8S#2dca@i?w6LhyRL*=I+!)Yi`hnQk#!lohL{^R7W3?B3ho*E=G;B1?1c zb;(C*SGffts#*ButX`I!{`|J$@$%BZDcW##ru?x+F{X8xm{FExc6fQY@YC8WpnLGu zEg(!5h@YfuNxQuvzpUr0-o($YC{t6*xpoLCk`B4+zU^VhFm-}dT9 zKAeB}>9W$jZnWMDyKXKgz1XBPcLbKZQ{5CAOo26VkSlH)*6O_Tdh5ovk(|X}SsEYY z_q7!{I~PBQb@^}|8+rJ-y46q)<&b#s_wr9xH+?s>w-s3yudlUPJrgxOutz{Zpjt0O zqp4Qc)s=&iKdX3qVBz!Mqp6#$t*up=71G*@2S)}rdbyjMb_Kj|4Ja{=Rzd&Jt6 zdNPNqyelo6!(rdp+ZL}3#KRV7@M3_ooc?>S_4E5OGBXtjmU(N}5aVI1k+jmb3KmD5*Q_~iJ-&Qh30muZdWTpTlFICV~qxsjM3z z!etedrv*M^Sv_Ti66wAO(!5SeDp*)plxmIORwb#QgSPlFokx1KJk$X#X83Eaa9XVTU_)7z)TT=RAnFmK{mKH8LViUaA~FUiHr zyIHIRZoO!6HZc%}{r}8D@-z6^V==>IBJfWm*~IIM7wbqW`(CT!e+ZQ{9W_{SN)d8RhMTEc%BI zA5PaEzmF$)>K!2xegv&KOdt3w23CmS8T!L=R|X}(lSKY&5*f3Wa1#S6(67R zJLiV`OuLLggE=@UIAI8rxi6vx z=v-1tQZnk#cmDD#qq{j~MwRVsCBl?zuO=iae<2E18J0kDIm*kkNaB)`M-VE)QbZ*i zF@N#mg}<+_cRemXUTb0(a+5I*K?>_g0pItL_U~Af7)}LC$qwfAcqeznAD2zPrlOr1 z5yBsZ@~XOle1U^>jwWQ;p?)F%P4VxZ+VcPV51+8|YaW?GfUisc_}1;)&;R$`y?p_z z8Q!?p`;>?$v-3`#9v%n~*c!D1zfAm!Zq>w=fnW1VSFa{v>s9I;sWjl5UUWr15F#O! zai^no3?pxU--{z>g=qjW@L(Jq+8)*8(j&j-rx5Ksgc#LWx_`G$rC_@SDRPfneL8^! ztf?G1y|}zf&?*#I4QEzx6nSQN5~u06ZjFLBFIa|s-bw6svDW!>=kUu{p9Ni=vj4yV zLxGU9cT=F8NX_d>#-GE#t`EkK;_)ypUGBnKgdK#ea)Pbu>FXO}Vk2k?FtJy0mEgE< z!Bs{NFl$LIrs3A5@>ue-I+0J69=O2-h*21>s0@l@aSBzB&#pB#fq0h;*>Q&R3dM30 zM1U;~4W|>xhg#=YTff;FvR>TzSVq5N0m-Id_h)2elnsE}C6yE2A)qH^lxF`3*(Hz zr3zOQ%!$JuKuy#Fupk`}i=+Y^qBxcomKJc)vvF|TxIx|=CC>xCh`Iy-t~dj6LrtyA zT7~cK=+UF(jo?5P(HZzy*lh)s9^A;)C6~i zF6qsImmLd^IGQFhSBhps01=3!G$|=h>{~;~7qL{}s*?vEcv)9B3gdoaa9KY|7e?ks zxXXfRTx{$SVRCKU5f|Rg=q+(6T;wXGjAaKL7y70hrU6-Tvao#d{4%Rn{_dSg+1)jT zuzBMoWtGG!;)g2rpk$_6D*j^8ZUej^SxEec!_x>m-nkmD`ug$*VcW8L+H6x(Qz6J> zaCL6HUEHIU{_B>AnUxjv0nmpUJI-QQwvTwKA~%W7825>|9!^hg-QyBX4?T7M{)6>yBLv6n`>t7 zscVN}N-XlcFy#)qseg|^J&U8c)Xo+e3pDEt0iU`Q>Y9vO>Rvf%dGtem^kV9vK-mK zew~`Hk^@D|h=-_i@uH+;1G?d%b)Q|2Vq0SzBpW+BsjC+vR_6CILy&`~UQLo#Q22ARIJP51Gc1rO`W_vG*7zv-p#FPS9`Siw@fg7_>vN>xN0Tz%{z?=+0a*a^9*`IjOffQ?V&{iO43>N6!o8bHm z(k6D>wrym5^^gR8ehD_oGk^c4bn^-nO*l$YgdE8UPT{uW>?6oW&CHUa--@oRya?+V zr>LkVlBepsY>roqX?(~be+~!d-TnLb+rn`_gfpcLUK4Ug^IXk5hm**5Gx;-=JZ}Q) z2AcA%`|)mRlc0peVTxRX<$t1ZiVu&CJ@2T!{O6$8^1>ecK5>gQ+JGFP6{s#R^hE2&u|p>+omDEsFh!M-hYlgU_ll-G;!*U!9)f(kJNBS@0R98Cpt^AWrGaL{99v!Ozv zw?8#bvbWpY+h3Z>Mb-hNd7B)8*gT*XZ_+fqQlpOM-qK!6Zs&X>Y^sNwnH#~lLI_3u z^*BIh$4g!3s5`}%U-csDYt5*h#ikHPSk-Fx>XA}fd?hD4+XUimq3fT;eFb}BBzzk` z34gD)PZ=$IrGm?r-76w;%4_Q7u=^>ixfo!O>0NcVMNiZTkqzTI_vO?*Wo_nE;bi{= z+2qK`eJ?u8+js5KPsvL0KUIyDKyjxgB`FCa>M$s{JM<+Ev9O%Zx)zaoP%)nK`0?q& z5-a?xM*c>OT-<9Pb>OB-+BQ16xAE{2U*dvzx~RmDwRB0hjrVm@hpb=gl? zVYDjkbydDFkHhzyeGyK#unOfspn26c4anH@@ zUBn+VRrOB{wrA*fW*R<5W(@Assdsd8u=YwroL7%h`(gPr6=xVI7aBsu_%^pb_-_r816agCGRKDoH;>EokfX^D`$ zWXyPsj*VqCGFwHn(=A%Ic=X{Wdb{fCkA-84x>)yaJK8)d`Wpbo9<%N{N6rGUJh=4v zpwRa9Z9D8Tv9TEU0zpHZoJ9EPD6Gr?(4dCKOAqHH`j4uFK;f4Ss#*vaBz7Az?iJC5 zj=lONTmJri^~f}}vF;^ye>^P`>A@^)UperrL6^dc3%do2v=!!~1@7Tz!iQ8bq;Z$9 z{Re3`+ZPXg2io(x0oa9Lt-WeS^En=)nQW2mBKBD5Lv={p&L-o_&8X$@C++dZ zaXR6xp~eX4uu#DsdO4hd(-MqRz(4mYU(V$35!zQvRC&w%fsfPf10>Yk4tG1iM_gED{0+6`qqUfeJCn(Ja0 z%F2zm-xlIwNj4(i?bl~Jk|c3W!;OXea&r>)0ldLOIf+fLZvQ%V(v;7YR8VgA`KH&d zwUMB85YmTms-tq>CF+pPx=D>C5ps6~=RXj!$0X%F*UYG-y{{E~+kub|!19tickUD| znX$nYMN+h&^s^G%5|6(lT^OXHT91Xc)6>He@BQzi{c$a~gWI|^Vu;9 zfzgO1ui!q z)R=j@=ah>^LS3i|5P&P)rCSeNsI*Vv`O(QHNyjd;uEzepdI+PsSE}1?^?}2o1DAME z4}}Az&4%#LMO&CrcP7|4d}!jm@XvAS*;bSSR{OUYQJxPY8gx`$d;Xl-OZO%^v#tGA ze%r7yqb^#Poo_E#xK3#wsX9er333kS2nh)}gc}ILKa6a-g0m4#x8Ia&c?`uTMpdri zW3xU5Qj(X}@2~^nAKgSY(vDsk+(Ovj$(a511kviQKV6a8g&uC9sB}^Iyo7|-tiWon zT>y7d)pC+6Nb?`SN}_*oMB;qGUu6T90wKiAZpD725-&_16701Pl=cLcX!V5x7=Q7D z8&E*w)jw6rNZt7C2rwHVS25f1`)wo2*czl)k!%F9xAw)Ro85M*r62EKl9g=*VnXnG z)H9OW<59(sgPfUZp=4yl2ZN~!Z=f^RQr)*0;R3<`ICLp}2tBEYZ5sEMLgz`47rW3Z zvH)-}EIVO+|h5U60K9FbbU$ zg$-R5F8JKpk zLv;+y>Kwd(0UfpV6jnxV%P*n*9>Q-Od!b=yWTZfDp)Dp`f8!d&^M1TX*@p^CaLRq} zk~lUpM?Iw=3!;i8@r~jty6HP${Ov=d*APGFFlt9Ew)t}s63JLq?EXo08*ZbQmWX+} z!Qu5KdcDIu!?xBzafx&Ub~g!H_&dz?$FNT3Xm3v;-hw+4JfuzEb6L=k9q)==;8QL{xz@ zL}LG(yut3aW8Hz}gTu${hLuF~7EX5GZVQu=k%|4gtOW&eW_K6eGzXU^TD`XI3u(nv31|x zLA!*TQy$mD_m5#Ud(?C&&RS@n4fG^4eAtw-L_E&8ATOi_W~I_7uXd@n3#PKDXLbd{L1)&>TW_p`Jx!{|A-8 z9f3{=WJ@4yawOd!aMda&ItB*2Varn%{}!lKlKx~}<5e^~(AAJq5G!|i@WLqtb@dS7 zr!ho-Tx0qNTcM^-h z%}lsY6X2968~{(s0}f-C3x82tD+76%YZGYrXwGI;@1Yk( zmM1yyo;8>}>#%rUrt_r1r1{=@I$L0)^UE#((m3%!_c~8KE%_BTUVl}5FYZ`7jG|&j z7Y)FerH+l2l~Y(aY0` zR79{YWG;ww4mg;A=>|AQZ=)dz#W5-@_Q&PGw#hY38_kNuTv^bCpDxoR9@=iV>!{v6 zgnne-s?wWziz)-)eLVnz#-^qm$RWvN*M`u!YWN|RY zSBg*^Qz$5^tny~pWv8g5_Py5?{~yg^#QCty%q$>27v(wded3IM1~1;9wRJ zm{k(X70Uz#q3zEMH$Q+uP&gSvQoC3G{dV`%_;?9)V4Vdwj4K;&4z0|*l?~>*|L?bY z?*oeTZx{`SkWc`D2eJ3R&bw{S@&oVkNq=PoVcBewCWm@k*|Nc!g^!*1T54`#g<(EZqs!G;(!G$h!hm%7x2T4d%oOADpOM% z!jlKGA?a5#TRgsIFYRg{eET}}-RSg?(-VWgaZ#4AFVGNjoZ%L9VSLzLv)!(`wze77 z@w4!!AH}Zxc_?o*;mJc0M@C}+L@KYSARR9TG_yAQFdjVvdX?$t;Oc z`Eq@5ZlYheDg5C1waZe3n*}esT!~1na?kkq*5K6WBwN6B94vVlAai zWp$ozQ3WWvxn>bbOX<+NJ-FmZS(Ej4lNLN+D(i@312pU7eWPu+S6kKcE^Dpy;NUMu}pinBkcawZYs3+rr z4kY49z+STXwu?#+_lF=c_kVXc&01Wf5w5=rw4A4vNyAKJ*>LcGn_b+_%$y3dHXdFQ zSaY;YRD6n#6Gw#z<>fm-CGEcV_Sdb&u-gH2k-m7plbk4qhSvNK6H(%|w6&Q-pjt*N z#;fx80)r4yk5DcMP-yPyNec>M{Py+h)JXoGPfjfMfXc}E<-7cnKxNo!EqL0l z3kj~#SvUaDU8LdC1O{OTUWE${xK_I0iH(RE2PS(A=gugq&DUJa6=-@E(a&{`$cyFA zukrl1pD_h>0Sv{Wo%tGp4ROXkk=}SjvvzzoB`fQO_~SFWw`_{Kg?b;3&tbZ@!|*|8@xB>7Y;w5s({7}jX<>lUxV(P1f_9BE2ixIaNi6S zJGhBmf6hicu2WXI9WTHfk$VwVr#7#h{8O0sHVnKP?M35Qcaa^OR-jjPUMKI?H!0GP zPxzk=H7oj4Btx~QbE#Yo{eR2AFZuei48g z*Y_}dGXA~ewA7vC*Oe@eDS~AO=Qs31mlqWqE=inVgA-1tPrJo`lWB^T^j}9RF4WvQ zb~kUPL`9t@5MEz@|1>~qQ&g)!DunEYpAji+G4`%nflV9^f<#*pnSXDsG2kk|S-IGb z|Goe4QrE#bj$*zAo&|Y&203c(HIF$i{S!MiWm`PcX-+UaDXHow>$1^TV|^-OnYQPQ z!W*)&Myx15{ZDm+5B3J*p%eigj+HE0dG8Sw`f9QVPeMLM;^5)KatO(fauVx(G9PSh zhx6_DbZ*igECdhm3zB+j`X>^zva;GD0sG^;i9pqlC^OoC8DWXJMC-W8ax=mHPs!P4`8q%+8b4X$p5ReFM+4JUDsYI zniSF?By$ro6H$qZXpouA$rP!SmJB6RND-MDgfb7AWy)A-FjF#XFolXl_^yZcKKuO6 z`Ode`=Y4;Bzwg_!*82bd&vQTbeO=dm-AE!q)^i0`^Po0Bad8jwb(}fs=-$A&0(t_y zYMD{^MM{}iZ!K-PH|PTeg=bGY$yV}b zAXNKs8NgF6jCSn}ULtz%BsEdr555BuT{%eJ71`$!Fxsb1pN0lY7ZyUn&yBxkjyCM&sDrHX4^Azf z$r0GRVaF$6OgWa6T&lg5RUPCYg37O6ydYv9^4(TTA+w8sC#RwFumlz=-f)MEOu@l; ziEvewLx*m?G%xse2D6hucHY8aP5RFA@}$pv$Wn&?3F(2!1}@BDlnIrD9S8YhG{a{< z|M=a9qzhmu*jFY;P)L>|R@z#81=r-esv|o53k0h!ZiFmW5 z{vV@}CQDJAh(iWJ03p)9WR1xTWT^+rW$_%m*~s8J>al25_6G0wr|(~WT%A0KK4@NL zGQ?=-&K8`=yvj%~w4lNHQumLQiOd3$#Gqn%o1ENC%ca!0p*Rys=y$3muHLA+yZ#z* zl_2TBg&lrT$JgJV93~!faQgw%0+{z|#J%C8VIi@&gPwn!F?|ZZK!w!?VYjh}?Z_s_ z{y)10IsJd)khDj4>n-GB55=+oOD~(9+nZk03ILWbp?XapSP*4()LA8d3M4FHgD=C7 zMwyF4VZbdOA?3lwltXtB&c}L)9mP+-Wmk(3SGM?3N*@5fNSmnw5wj{HM`$tNT!A+r zAw=Zgri@}2g(tWm-%RZvL>KXt!F{k`6k{jRdW6^iV2oylPVYH^W9>iyD<4jY$w{Xf z_>a~iuhE3=HL!ZW_rh1_-VKvRl57D_0H&*HZf<^deY3eJ*+M9frr@FhD($N<`I=z1 z0&9l%5q@@Ph<(%ywrTUQTaxK~YQhhkbRjO|>|C0}0f2KDKHd=UV6R?aAuq-u<^cu> z{Sr|}o{+Uf#EGyph$FKy&^_=KE8K%1JA|^)2{9wTlV`WlTZly-96h1Zh`TW&L5u82 zVGK+t-Va|4VBe( z*CZ2hkECljTkeB<1~T;m@*lAJFCizJ78%yctw3IJdLmbRJXd!T0?{=n~$fMW*B8Il5!*W-(1W4su0 z?j1OL={&gl^uT)J{6u~>@i!{>RDtJ%#JL^|8nsd?j#hGVpy*Qw+`B^=nj4j)N3}6| z@g9)_68^Hm}2H0S@V#+YGPxS^@ZvC;}*vd;X!8n5yJ zi^w+sKOfIdm(1yt0^Q3Y`5bGYla3SkaObogPex}&F90tP%a{klNq+yu4ktak^0~BaGkSM62NxsSp2Jl8C(b>6g{Lozi z(F5Ru0;Ka;#Y`Xf>~JZ%D+$dQ9F9m%IXgQtXNdSsQXIHh#=)1KuW!mm0x=Eez*lHa zm&;#-e&Uu55w9ZBau~IBbhv7!0qrCRI^PkMzRzUqAenlNJxmZrL`X=;tovTveqNM; zAP>(4nR9(UWP2kF-;;4vK_Q0)(ZcsyCFrkM^>z1IRHXtswY}5@ku}1KGGXp`ad*=@ z(>6d|5I|O>*H(`?Y6_oH>)$gT4HoNAAq`Bl*|(tj-L6cu%ea{&;-GTeiggOh8*Q-8 zu77$r8|BJn-L*!Z1agi~8FfB2aC;S=7Si(I*skKX*>4XV^9_JxAAjw`f^t_r`CH|d zrUzTkTR%ox$b^*H#^%KEZ9Q<{>$F@P2O76!8(L~w>sceW)|nBhym{l)e10&GVAve1 z)*5=DGt*Ww!)9-Lb*_?rSeS&;prA+dVJ_!P0|X-5(puQA*g+jMRqgiYAhu3?aj_xr zvI2Av1C5d}o|mx(#gb#Sh37KL5h5*sA*|s z>Op9oY0ZMLB5~qS3Vy9DF^yhyNwq>=Q9_uoE6u-VGcq}0el*Ln%Jsk+5a1&!N&rs* zMF99|E6hm)Gzh{IVZLBEr;SL(kYEqye9X%g9=sqk4kcsOJKdJPK68i(ldu_}z9V%w z()F~1n_aSu(!@;4mSCl5kRqhrn+Q@s`i6wD$WJ>*Mnq`L8htWp(GKdnyJzSFq#Q)L z@h>Vay4*7lq{h6~=PlE`>CJ^$3PKW$s&X(t?Vfc=V?k2kyaGZ^BweVH+`ZnTn?nx$ z-CXaakkkV>K+?$-xKy4Gpy0{{m6ljmxf+NH^yp%tY|m|LACw>r-t4cEJ)DOFcCN|< zy(yP!Wo@mFX@uBhSxAGsdav@h;fv?r#yUh$Ehh>N)YjwGduESAF4Bk`(p>TvJB>x= zuDsXM$7p|3iI6Vp$Z6q^;6S~0m%#a;9X&rtnPIb7OVDe==MxD}I_o(oX{89_j@T$Y zMlB)$KM_ixuX^HgtXh}qhtj!{`|2ms48~xm8jqwORvu4r0gwvvy2y#4FDDiat9A=Y zso}FYAIbV8Z813bhe2&TJXv6rvlCH!%583B?&a`Bj6_u;0Qg?=sa#uENcgkR(*^wjv}F-s2K8;Y>SM#Z>lhl}6A*PBru-&^#l%ko@Q<}^O~S)OM*xCoP*;6L&4)~SLsYaJXf6my&c08>{YFlCVWGkiw2MNC zK!}(ia2{ZAfICj@PTa!i?jpZAbN))pIGioLmE!~a{WVZll8G*k7s!Y_6(GiaZqT{G zt{A}WLlg;{NYvs?CfdmVHnHe+;sA4p5R5P`Uk~XM;`F|M_A3w^3^Erq^Cn|E+5p7@ z2&)C@f8Z%NM;T#&CsO<oi#Ec36_;3;*!`=k^&4JN?^QtWT2C~!Tcny4C ztw^xM)Q4CUT`9Vm2TJ~Y+9_f2n#Bbc38e3b@SC_cA|Hb+-3*yc4^WZD##o%8WOd^s z{_DH_3#VUaGb_X12vicQkmuzkC_va&A% zlm_Sr^yJZ{wPjfa<3E#A28b)*Z=3)Fm{3!0#Fc2FbvaNxd1gR+P;qw~bF3GX|2OE!4yxA?7Np zqrO{+VTW&eGY7vU5SXA*u>pKCLtdJzU%68Ftz^!XP}Il?R3IaOJXH>OII0p<;)=+F zo>voo-auPjottR4pH~+HhD-X(4Uy;hu=0&iy1x^cg9y-9MBgvWq5%Y1H`5}asOV(O zfdF+?)z|KCYSGob0|!xGMv?O`l_1=qYk@@LWZ)yV?;AGcycPfnD#`bh>yda)jq5>$ zX>?`G)2^l<;Ga-}&3{%+fj|jD!vPl#AUN}BebxyvlB`uw4o22z4T(I8-NZX83NM?HVJ!4xjXmZZ}3dkMYXIKhpmf7 z$Io5-=Q+G;wv|BGh?sA8y`!yuezpz^6U@H}nCT!6y}=b#+Y1S92Tw(3LXr9h#m62|X^$k^dc6axvx z0Q_xcs?H#2Hp9y5A%P0oTV>$0YHz)WW_Yv_Bml~NRE7jaBY^>!Sf%Om<=KRuM%%WuZ8q;hMt-?Y?Vzaj*PcP5=gYZghbL(N*T|_6{QDZj6&>)>#t|8%V;=jAKCx=Oq7S{ z3EViZ(4_X2&*1feQu%@K{5L{p$G=M}jm7}~D6M5&z0P+LvW5yY7Xe2ZM4O+6t!;9l zq5Z$&C?8O=xogQFb&-VXE)Z2qFT3;#FF4y4Ybm6)Fk7$y`_4b*+(FL(ki!Lw1pY7rjtS$ittyftcNH29(0 zoxSGfA_@y#m?td>td8YxEJ#K$FGm$RxgFxB-nq_>d)`V8anps=aaJIW3z6 zozifaEbDE__~rWonE3WFkJCNvUw2pJxd=b2g3n%l>biryoUDA(su#pp%J?ha(sHQ0 z$z74hxqYiph83SejaJE?Kbj|5SuI2DSZ7@CSAV%Za7})^IpM^3^Df6%A6O9?uX%VZ z9vT`7d%cEA+GGh2UggprDtTAC>&N){JD(D z+2lv+XD&!&87?sVls~;wfJr1ePAeuWYc1kbC7>X93i2(x#>tn3gP{s3dslz|a!fLy z^YihE4>4VM{lO#n6sSQ)!J+|Cyk80l+*PFd<*#0?kh1R}W;$c|BU6BUEW*Z=(=zlm)GYYRf_@hu2YTq} zT&8|rjf`Xq*2DWS8!x<%r~>9C;BY<$n@s@T_|#)mxuf`RfXq3U(G<^2=v%$Wh>79B z*dQ+sIjV3pAMP~WkS8Cm^l(5e?zj zeSDS+N-Ty10R(FgxTielUqV=0oWU<^i(Q;s;U*}$75BvgwuEG=9C>b7GoOzc8mx%24tkI7i(O{}@YnBzW zU3-BiIKSwl59Gf#CNLxKg0;t~KakzR+U_}s-P$DWoxyzBdMWGC7*%U2er$UPW>}SC zaWZY*%s``eO`n>2F)z#tV=Fc)Wy~g;X#e=~0r6ct6(@iH{&Il$`3pM6(7@A4FU*vIzv@le1- zD$8v(0o|RczXZ)X#@w;VIggtwadLCVI2}nXagqayNvt*#8cPGNe#s zfXvzzw0~x1OirKH9xT9~M6=v;aI@*S`B^qCZ~I=_0_1J9&h8M)_EHTKj_z)>#;$I4S_`0hLIJ^Rld5-zwjVkdH{z@e8; zvf93CX^nh(yiUT=MB*j5L^V5ETXJ}+MF^>(x1%5aN(yOAfh-DUinPBk|9okz;t!g;KFf!DW8hZuwJmoi8N+QSLvd`F-#hj7eZ%+rF@WTsDTUV5zq)`o z`8Ye1QyG%v;ysb9PySkOn5#FS+ls;}8e*=hC?>%-b#+Ye&swi7L^+Edt{3NY^};I( zlyLBDPP%^aYi+djxxQs+7P*P(9cmHmh)^r8aUOa(1k{*3Ci+b>jpobGG?`RAK4RhP z^L4CjA`=(85 z-&gBVT7gzIT1&Wlk33KV&OZI|-Mc{903RRLK4>+gZikVuCYOkX=ppYi)dk(77@8Q# zX#zt$7DU8!tQAB~tUnP{$I#FOua*+pzCCDm^XAP)z30h+qj5K}C>;~emQZYueiU+f zYd9Y&e){ldLyuks>Ew0v=Q4p>D@R#)6&)WBkzb}~XM3VXeMz-YLZi2$v9Ym-n>~6n z3%7D{Q&q=`uniE@a1_wuSVeS=cA1_KRQIYfwAATQWKvW#XRVT7iLpWckRoC0UE9Y) zVmVH~Mp4#=l~Cl@l#<AD-rpRcVXw)?c|O#n2U#}yysPDP>|_uk+%DJ_dbcL zyBf+5t{-eR)6B(z$364lAHPyzd*%#8;@yz=9si`Bpn;8f7T|xFC`zP#DO&pzH1wK1 zU0mg}^aSZvv6>(MM5yB6VCKJXMldvgbg}*8?bz`n3`A@4_ix>go+f9{3L~-!K32uy zfnC3B<;u)>9YDyOVqy(Fuhua$FGd?wvtV;db)sDn=CZ8U%*DM+-bjPHhM$GIjvK#l zPw_`sQ8+a5vvB+W+t+YxzQQ0Feorf@5FrFHAF8gj&x#q ziU6_{C3zX@Yh!!+cbs@+_+i!)-FfebcWv!4OL11DKFEyr#i`?OE?(Xxixw?X7nQZ| z*iCU)h%N;!9j%pgJ3QPsJzbbChAtYngGg@4;kR|IkFW1O9UT^MBs3I+=G?3f zNZKeASZ?f7R9u4mit}zww0gp=d-vY#{g01_m-W^V6;&j=tTIENKG9O}X2^1S5;eAC zqfAatQYbhiMWD#1xa*}@aAN)8XaCKYg}6k+UfuVAjVSJ_{EI1T*RG{d=omPXa}CjI zKQ1p-HBvISIz_9dl$l(s+_l#IhXqxhG?;vOdynFd{z;Z`S;!+yy5`@}M=q=JDVluA zn5C_2S4>V%vyIF4)S8>Y6{8n|2UzP07eM8So#gj^0u^RC1Qw>RPH1Q>q2S6h;$?y! zJYY!CvcZ`JCrdD|;$@{l>2?`^|B@?k^s{&7#FJjn&Be6{Dm_R(!elR{)~(7i5R#gb zh0=f~MavIOD$zI?v9+^(&Rn{1;rg>@&yaK~@>nQ1X)S*K^5>9?c#eFUo13aQwo&hCp1D?G!+i)krJ@@E zB2p+E931rA%e|m! z6<+dlYpr$mRsn(Q7-bEkl2xv*KffNQ?1gQkuw^Z0Yg=1np@Gc3)sRb2j(yqT4Jqft zhW@UhA$lC|nH2&U=7)lQK#ylVUIZ;r{fJO3e!{Ofom~2m zgCBF7nzScAr|M@nkrs?7xCqE_pe5936L^3i4lR={wt}erM99DbDfMD?;(X39}j206LYpHApn64^Eq# z8^b?XnthA$UTvahYWi`bZ--_<2KlC0-=!~Usii>NEoGg4?;BJVqYB(+_ z#yE`E(z5lgdIA|0ua>hD z*#yo{MkokejK*cO;8%bZ5~BR;)IvUOo$>>nX~L7v<00+rj`9ne$wH0;zlQzG^rVSiiDW6`xM!&SYY)JvFc)Or^oYk`LgYC*jyQSb;< zctLNyH6gKDA}=q`ziV~CHf>F?hV}B|jaA{#Y_qd}Jr>%0o6m$nFxwg}8pi{wil>&F zppl@Sw%2{pVlo&czKL|}m78zam3{9{QoVJy4tzi_jM=Y-zxuf0-V}rUHFzoj@~=Y( z4J`^I5*G+f=CkSz^(a6f=#mghOk5MJ8>jADTDo`bh7COM+Swkm0$Y?{S%$SB5C$eT z2CWg#?0n^xp37&Sot>pVaO|(IH2;)Hy{+9MgMfq>zHG$`8VWBTA5O$x1a|&>>=Y-MICXvb^5oaM zJNuo*#Khuc?BnfxmANSbm_&E~{{7LPKP%v?5UsI2uKOm!3XTYg9&scocxX7%g6SRC z*5HuT7|eKpna-XH(UI8u#6Ae@JAK3x#vMkIlNIazsp{MAdP27YucO-ZRaI z^x$ExebSb2$95m-Emet3Mf2Z+{Cucn9r)1-n$i|Gy(ZS*?Qj80MYM;h5f;OZzG^6$)7 zj8`K4Z||y207VmARnye84xkTiWb!XlIUb(Hc+TqWq9Mzf`S%LlZIRvGQdy}~u+jMD z=}cG)9{E}b?UoXg58QEm( zQ5c-fRGZ|{q+5m%Xgqza$WC+aH%KM^ell0K60ILNQIaqHNRe^Kdi!vnN9?KnUi5JO zM>PREXRC>)XnbS7di5&x3)9%;>Z%;RHzsI+2L9!4_?o_b66+aL@C=jvg^FF&za67{0!~w`x8iR}}kg$!<2N)%5g+)bZC6xl3?90)FZAOmEG@ zFr|jBFQ)cd=fytjijwn9jiM!eY&p5a?wwjcgLGjkmW3*pmzRwf7e=X#fa?* zXI?viou{Krrp-;It>4jLlUC$~NP@%Td1vQl=l~W9e#8sGrwmF>%uff3l-|5K_Ker{ zi7LMbHmjk%WmBJO^2p->O|c8R(Y%VoxVyV9-mFE#QFSOFO4`9RWx5bPPX!{J9rVJQ zQ58&VXr!fk*N(4CVs^Uz3HHFIT%#uq$}zc#BWV!kEJEa6xnAIw9W^{iM1*;81|7;G zXzM7NaIJf!6t(sS2OIl2)j+=eTaJlF#rp=|SVBvyTXC`zrygwP8IU9*p}C9Go50LBZg0Q>i<8DF+_NyD+k{uE;mIiL?_J8a~8-#HE7kmUT8OQqz4nE&+0h zv#x?M{Z+W?`T6K$;IX)PBfD61OVzt~3^)@M@s@DQ0_L=H)d|U#`I*|JnL{Pm;zRY*o#R&=As)7U4MVl zYn#S3M#dFwc+d{79TxOGK7aS+O{6zKCe#R+3={Ur>0^eO_s_h2P2IB?UrC)UiMzRH zKkiPEUWymw?~SRS`}&MAOp5NHD5KmBY}vp#hzZ4(9bi1Iqp@`@|2@7et_tNVcAdom z2>r>Bc~z-C`Fv!m(!>%m(_-Thox2F}01;R6tj=H;v!F*0(Ji=90y$mp7ZN`pkc5K` z09Z9(WW7ICODJS&PHFk+Tl(q>3N%niks!!K4xK|PDhj~e)ns~|&S0K7BL~M#sFA*^ zsXjiobs#D#Ek97op-f;b|KMR2R_uboCuI21huKP(#$nCoFtc}JM-cRsUiAu2^H2LKEzZ!mg%#nU$f zP{`77)#gXaZWzUhtQ@u1xam{a2o{bv>*L0Gr=_L6->l0xsBLQcNTUQ#+#9+1-W09K zD;KU!vIgT;v8IJs_1E!e8tu@~u5VrAsC-56=t-&B3iG#(X|-#5HD<>5c@1nFJsVpF zg)x?!?bGnuq%Ho4pVVqCC}JC*!E<^SoV|}kXmj)NRrZb4r|z)GezQ{qM-qZ{uv*w5 zb1T%499BJIs!dze8IK;&-13_9htWrt!%0o}6~iAa91&OSG9HnW{GaC{UzwdU{%rkxcU+t*pVjoLP2 zyKVoKt80Vp^5pQBEvV!a zQ=;(CKUqTnBoHbFN*fB(;-$YSlnqOXFMvC`RjMDovOaaHspk|)mZ&U?jDe<7A50_j zd_fzTl(YjKE8=7IK;MqT1X(V3OR>#UzD7y26hFViey@f5fg>PcN4$!Xb6yW0W=zAm zYZ%_3o@ofFDG#s>5X``68rr-?!|BnpXI)p2*3cij+)|HfaSSzeLi-JWf09crqTm!; zOu2sjde)18$4op2I3*?5KE=4g#{OqTQ0O@ z4@j&Zyo;Tt{EDBS9Up}NKrM1a=n|ax(}U0z8wPiS<}hCw0RdH3m6f~MQ|{clW&Cua zBTV|Tvolh7GnGV9+W&E@VXu$K z353jcFaf-c62t>aAIzqe| zKlUD1l|dc1R*jNoLKEC}nCST6?E9L+%*^b8n$s^nvdPV`;KDZif#ulr!~7axFGmWY z#<9(cv_x^Q-ZqQf%QoZum)3wpx_e|K5Jop#qM~aMF{o$CAw-BP=~S;~WMZNKUdAOwvY(*wxtg8ruvm!r;QSnJYw5{B!~I%9I@VO2S)1Edk1+wI zA3hWu|CExPEKc1l$@f?=e@|o^1Szm_*v#^02+j*0;6jNRHepIB?$F1ulHpGiBb|Xz z@VxKIy^IFzY*!2A>H{|0p5zDie{K%bLC?!1A8V~mqDi$ETLRTlq!s}}hrp(RKJsksE062yf94oPg`;^JZkwly|3S77u}PeqfK zkDp&Tf@=4dFW%@E?ZWe=x(%YCtQ<*!!_1VU;=zNx7-mHoJ-f^j*%EZd!qCuxXIze{ zMsopRUV%IoSzqOjwvmQcQsVjDG)Kh5`l4>MGb~ z6gak+)`M+(5YL}9E2wO61-_pC^r?b{1wTk6LeHSk=fQnJbdh-V{!SPxbJB+%Qc_+) zW4pwwAH*DS{B`4ad)1wyXrS?Mu(=MnmF>?TSQUGyC)^3rrJTKZu?i|8clc$u=wNd8 zW?)iYB_(@c7v_oXmd3UdCtD9CBhlgWLSY~USIrS9Z%RacQ= zN$b{mlBq(_6e$8QhYaS_S)&`oBcTw+Z`7LN*(n=r>~2(c^-obI!e4<28`SpPEkP0eVO>)*h4#uW949QY7X=_E4n!MP z4Z3nmo`JtJ!?Csmtn0ctK z-u76H4ZyF;T*R}}?~ug6EU63xEvCV2J$cOQ`gLR237kE5P650Gc?>j8(i)lx8u-7) z^XR&fKL42>`Dq5u27`hN%dvnkl{Kj27d%iG!|wUIfl$k!h^*5nCmdV+5YdsW5$ZBb z*n|em6K~3S^c(DkA*p3c>L%cVUSRyd%Ci7Al(PFMOx2GxlO^{W6dEf;&SW`4l{5M| z(!K}y?NSQr924MOz?#aiihsIZf&jC%@UmEQno%HJ##o@ps3iT5mrObv7nVmYqgU}W zu2c3e)b1n4QVkcS?da&BYuUKlNf@ga4cOZSry=6Lb^rcNRHXeWks%?T@B`U^M5>~C zvm5=3~YYG?@ zvlDd+{86kwK1}?ER!b#_b+DJW2r`?2$`BNMMjhXdDi-kYLu8F{>L%bPVZv64K2;wy zrEv=jGa_N2y48d^NuGWmc}|s0zmu)rbtCg(GceDq;YwSM<$%t4f9x9`%!{Ws@=8do zBevUvbt$hvq+`z`Mt*)7?jzv0S23juiR^W(LueHqJuh*Fux*ihIy%Kc+id)!ee4)# ziV%#TAs4JjsYUE^clGM3Otr%4%xsC|?Er{QcJw`)1gjD%T+BUq`ppO2CNJ z!9|QH?Z;njM3)VP(RF5A+e#PjF$%%oO6;=GP$KSCKt0s)3n=4C%5^kADAynsdJ-4$ zx2@u*WTE`_EOwb*Q8G9CENiH9ZZ?;)w>9TXWL7eyrC^iO(j9sa>|1eY;NtsJ&f}0W0r*n}1u!qFeFe;wix&oi#U(AR1FZ@Add?vIE<;2d6!4BdlbW2o zmQ1!np?(yPEF=`*OgHSzm_QEOq~O?{g%tccQTIQuu0j*VP86yNY4;{Ef}NH^_bcuz z-iU_M4Q>r7NEwKDT1pw5z&vrfs0_Lw94nwLm-gO~mapeJO5BWC;2M(-qeybydOPu? zDV&AhU+q|RVU{zXiemVfS{!S^&zex@VblkcpIIa2Vii(4$KzWUpZsszyKwGYbn@&$FG! zaMsXo6kP&9rd~ATN$kKcbjK`mH%v1y6Tcu!16)j5n{r5w9fE{gq3_$;dPB4guO4~Q zFr7M3K1~7{oV0o|goPQ4rVfFDzq;{GMq=XBB`NWnRV1ap_onZU?QQXqmpEoh#YEC`rhZ+_F1ueafgcDl?bkZp> zz_w9m&~~ZzIuP?5L4GylI#TD%8sm>22zc!TXYeuP8D%v!D-m;)@URH71Np#OoTB86 zfkK3F%^K21FIf|cmjsXAK< zp!~qmVhYNES~JpF5(rg6f&o-1%Ym>}TvTTxcagUJ=+^AOnH{ zX;Xgjq{U8tRH#B?TM`VxMwSm5Kmjh18QGebF3Wod6zuxEZZ98`C2P=#G?x)b`Dqn=? z79+O+q$MV$?u!s8DoBO|&lFP>USXoAZe)E!u{D@tUuBmW=A-FG$3y|M=!sUrM+p3@ zSFaAZ;eeYwIdih$LY@8-BvMY@o*M?v7y*)hsGdNAECQM_mSjESFci8MzSb^+Nh}#u z8=>(QoaZ7Z>HX&%5e$P3#TsroNov1mb5@m#EtcvF6MrmcyPeR)Yghc4ogUd;x8`^f zS?PMZ3i@sSkyX5z0VJ#0#*`Y^+D3*}VJPy(KVJxf%5=&nx+1Lrk_i-;tI?CYr4|VY z<}=oGJv+n}6WvxfwCcxPiB3v()`VjU*%~DKGvE8qJkK;ss#LMm7Efe0hQ|m}rl;dzF@l2TQQ31$+t^>w3O;$sQoz6mdQ$Ev$Y#mbAsqUPe*G4ICrC|LM(Q$ zS`d#}g+6UBa^3(Qp`JGOE0p|dQ_ntktnTU_JW$bn*R($L)-89$x$?@&xR)pxvV}(A4txUeWloF-2($RaDq06(P}X+ zK}hKF++bMiEdO*Ds5mo7{~!-+l-0t)M-u!-r)>XiYd(;Cha?))8B;?avil(j18kGw zIH(o1$BhG8JQ~VwIBjC#Ee1R)f@TN)+6(^kRtX2BNM5x+2x4G>uzKmho<7$t+H_MTbZrb-gl0C@B`PWZ6E=lv=#xd1V|WWmO#|jsh?}9b&7}?QcD?m z)9xzKMjIWlinMT(k-fmsm#tc*gq!Q|>)T0)X1hn+=41gm3qz`W-{1Geqjc}kuOeb* zRrFg!Ug^#G27eJS$YTWE!38-kWj8x_-o;@(QvSf-2pV{VI3xr*g-#hihe80qxlVR3 zCI1m+hXNo%>co(*+uU?#z4<}4CY+5|W`BP{va?nz)xa0|Iw_vu8D54kcLSJYjB~8s zIa!J^<~2+rOlBZrU%~LYuk~>d*=2VqDyeNdyx;WH*45ysTl3Fvf&b-7sHX_x0q+)t zLx+5hx1F|qe^^BYlac6REY?d_Axy{J{{#)=9~dg`&$Vm6b@#6Ji0q-rM57W{A{GQd zH3r+>bwKmVfm>yu+NN&NvRREx=pY<1k-rmS02BoeAQR-GtT#_?!1PPdx1t9R9<+MU zGTypxKLFz{L{O;ts?fDOhITn)_`#4Yf^E~$^C3ms#*6aX(mprF9AqG6FgloM(ULWW zDTQWe7lbx=FU+qyuKZBDuju=tM`yXOmh`1PyWMXP@x0nSoG%~w7$YN`e5$QQpm>$ zgNIUpj1)y-%7elMx&5hI3+fpW6F%!BI1$Sc%MqSl8H*o>L>QarufhlnxIu~QCL~;9 z15I*2zvf;3!H;0QBt@%j$ZZ<<6H3fA;CtRI06CAU16qUm@78Rj-yJo65tt9Xq8NPP zdB_U3l5F2IJGmIu3!RafVqgwNkZy)#0i9U36D37hE?}V`FA%9!Y<$|Ham9kO zGw~0|Z(fb~uOgrSfb;$hA<(}g7W%KR`Tx`K{quePsq+)fom)y9_vA@_%m_F7>?q1g LM-)>PjIaG4^8XMr literal 0 HcmV?d00001 diff --git a/Sections/60_The_MPC_Problem.tex b/Sections/60_The_MPC_Problem.tex index b2098d2..14121d4 100644 --- a/Sections/60_The_MPC_Problem.tex +++ b/Sections/60_The_MPC_Problem.tex @@ -41,7 +41,7 @@ buildings based on the rolling 48h average outside temperature. \begin{figure}[ht] \centering - \includegraphics[width = \textwidth]{Images/sia_180_2014.png} + \includegraphics[width = \textwidth]{Images/sia_180_2014_en.png} \caption{The SIA 180:2014 norm for residential building temperatures~\cite{sia180:2014ProtectionThermiqueProtection2014}} \label{fig:sia_temperature_norm} From e1ce6e8ed6780b2a5c4675ccebdafff271cc32e3 Mon Sep 17 00:00:00 2001 From: "Radu C. Martin" Date: Thu, 22 Jul 2021 22:39:23 +0200 Subject: [PATCH 08/10] Don't trigger github action on master push --- .github/workflows/compile.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 8382d16..5a668a2 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -6,7 +6,6 @@ name: CI on: # Triggers the workflow on push or pull request events but only for the master branch push: - branches: [ master ] tags: - 'v*.*.*' pull_request: From 0d2782dd4a4adb95116fbcf74bf59917bcc54b87 Mon Sep 17 00:00:00 2001 From: "Radu C. Martin" Date: Fri, 23 Jul 2021 00:21:08 +0200 Subject: [PATCH 09/10] Added repo README file --- README.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..46c871a --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +# Inter-seasonal GP MPC control for buildings + +## Report and Presentation slides + +This repository contains the code for the report and presentation slides for my +Master Project +> *Inter-seasonal Performance of Gaussian Process-based +> Model Predictive Control of Buildings* + +The main folder structure is as follows: + +```shell +└── Thesis + ├── Images + ├── Plots + └── Sections +``` + +The `Images` and `Plots` folders contain the figures used in the thesis and are +shared between the report and the presentation. The `Sections` folder contains +the content of documents. + +In order to compile the documents, the appropriate main file has to be chosen: + +- `thesis.tex` compiles the project report +- `slides_clean.tex` compiles the presentation slides, not including the notes +- `slides_notes.tex` compiles the presentation slides, including the notes on + the right side of the screen. + +The resulting presentation pdf contains an embedded video file. It can be played +back using a compatible pdf reader, such as okular or pympress. + +--- + +The presentation is based on the +[beamer template](https://www.overleaf.com/latex/templates/eesd-presentation-latex-template/sfqmhmqxhmjy) +by Mahmoud Shaqfa. From a532e541ecd836e0938305569d58016ace97e039 Mon Sep 17 00:00:00 2001 From: "Radu C. Martin" Date: Thu, 29 Jul 2021 12:11:48 +0200 Subject: [PATCH 10/10] Updated README file --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 46c871a..db02d6e 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,9 @@ Master Project > *Inter-seasonal Performance of Gaussian Process-based > Model Predictive Control of Buildings* +which was done under the supervision of Prof. Colin Jones at the EPFL's +[Automatic Control Laboratory](https://www.epfl.ch/labs/la/) + The main folder structure is as follows: ```shell