From e18794d504c239e4102d315b0f7b4d0cd863e03f Mon Sep 17 00:00:00 2001
From: gagolews
R [50] +
R [50] has been named the eleventh most dreaded programming language in the 2022 StackOverflow Developer Survey.
Also, it is a free app, so there must be something wrong with it, right?
@@ -344,14 +345,14 @@R’s predecessor is the popular S system designed in the 1980s by John M. Chambers and his colleagues at Bell Labs S: -[3, 4, 8, 40]. +[3, 4, 8, 40]. R is called GNU S, a free, open-source version of its commercial counterpart developed in the mid-1990s2 by Robert Gentleman and Ross Ihaka of the Statistics Department, University of Auckland, and a large number of contributors; -see [7, 31] for some historical notes.
+see [7, 31] for some historical notes.R has a C language-like syntax that involves the use of {curly braces}. Still, in principle, it is a beautiful, functional programming language: its design was heavily inspired by Scheme (see -[1] and Chapter 17 for more details). +[1] and Chapter 17 for more details). It is also somewhat object-oriented (Chapter 10).
In my “spare” time, I write books for my students (also check out my -Minimalist Data Wrangling with Python [20]) +Minimalist Data Wrangling with Python [20]) and develop open-source (libre) data analysis software, such as stringi (one of the most often downloaded R packages), @@ -530,7 +531,7 @@
Deep R Programming is based on my experience as an author of a quite successful Polish textbook -Programowanie w języku R (see [19]) +Programowanie w języku R (see [19]) which was published by PWN (1st ed. 2014, 2nd ed. 2016). The current book is an entirely different work. However, its predecessor served as an excellent testbed for many ideas conveyed here.
@@ -548,7 +549,7 @@The author taught similar courses for his wonderfully @@ -598,7 +599,7 @@
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/110-basics.html b/docs/chapter/110-basics.html index d9c135d..c36dca8 100644 --- a/docs/chapter/110-basics.html +++ b/docs/chapter/110-basics.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -287,7 +288,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].utils::Sweave (the Sweave function -from the utils package) and knitr [44] +from the utils package) and knitr [44] are two example template processors that evaluate R code chunks within documents written in LaTeX, HTML, or other markup languages. @@ -540,7 +541,7 @@
.ipynb
(JSON) file;
see Figure 1.2 for an illustration
-and Chapter 1 of [20] for a quick introduction
+and Chapter 1 of [20] for a quick introduction
(from the Python language kernel perspective).
This environment is quite convenient for live coding (e.g., for teachers) or performing exploratory data analyses. @@ -616,7 +617,7 @@
The idea dates back to Knuth’s literate programming -concept; see [32].
+concept; see [32].- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/120-numeric.html b/docs/chapter/120-numeric.html index 2c21984..2078d12 100644 --- a/docs/chapter/120-numeric.html +++ b/docs/chapter/120-numeric.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -304,7 +305,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].In this chapter, we discuss the uttermost common operations on numeric vectors. They are so fundamental that we will also find them @@ -319,7 +320,7 @@ More complex building blocks can either be reduced to a creative combination of the former or be easily found – should the need arise – in a number additional packages or libraries -(e.g., the GNU GSL [23]).
+(e.g., the GNU GSL [23]).A solid understanding of base R programming is necessary for the effective dealing with the popular packages (such as data.table, dplyr, @@ -589,8 +590,8 @@
Let us stress that the numbers we obtain are merely pseudorandom,
because they are generated algorithmically.
-R uses the Mersenne-Twister MT19937 method [36] by default;
-see help("RNG")
and [16, 24, 33].
+R uses the Mersenne-Twister MT19937 method [36] by default;
+see help("RNG")
and [16, 24, 33].
By setting the seed of the random number generator, i.e., re-setting
its state to a given one, we can obtain results
that are reproducible.
\(e^{x+y} = e^x\cdot e^y\).
For more properties like these, -take a glance at Chapter 4 of the freely available handbook [38].
+take a glance at Chapter 4 of the freely available handbook [38].For the logarithm to a different base, say \(\log_{10} x\), we can call:
log(c(0, 1, 10, 100, 1000, 1e10), 10) # or log(..., base=10)
@@ -1167,11 +1168,11 @@ 2.3.5. Special Functions (*)\(\Gamma\) function grows so rapidly that already gamma(172)
yields Inf
. It is due to the fact that a computer’s arithmetic
is not infinitely precise; compare Section 3.2.3.
-
Special functions are plentiful; see the open-access [38]
+
Special functions are plentiful; see the open-access [38]
for one of the most definitive references
-(and also [2] for its predecessor).
-R package gsl [28] provides a vectorised interface
-to the famous GNU GSL [23] library, which implements
+(and also [2] for its predecessor).
+R package gsl [28] provides a vectorised interface
+to the famous GNU GSL [23] library, which implements
many of them.
@@ -1758,13 +1759,13 @@ 2.5. Exercises
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0.
+ Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0.
Built with Sphinx
and a customised rtd
theme.
- Last updated on 2022-12-28T15:36:00+1100.
+ Last updated on 2022-12-29T11:00:10+1100.
diff --git a/docs/chapter/130-logical.html b/docs/chapter/130-logical.html
index a543f6f..cdd6f44 100644
--- a/docs/chapter/130-logical.html
+++ b/docs/chapter/130-logical.html
@@ -10,8 +10,8 @@
-
-
+
+
@@ -28,6 +28,7 @@
+
@@ -294,7 +295,7 @@
Although available online, it is a whole course;
it should be read from the beginning to the end.
Refer to the Preface for general introductory remarks.
-Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].
There are three logical constants in R. Wait… how many?
@@ -485,8 +486,8 @@ 3.2.2. Testing for [27, 30, 33]
-([26] can be of particular interest
+For discussion, see [27, 30, 33]
+([26] can be of particular interest
to the general statistical/data analysis audience).
Can we do anything about these issues?
@@ -883,7 +884,7 @@What is the purpose of very specific functions such as log1p and expm1 (see their help page) and many other ones listed in, e.g., the GNU GSL library -[23]? +[23]? Is our referring to them a violation of the beloved “let us be minimalistic” approach?
If we know that \(x\) may be subject to error, @@ -961,13 +962,13 @@
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/140-list.html b/docs/chapter/140-list.html index d4b0a8a..4f56183 100644 --- a/docs/chapter/140-list.html +++ b/docs/chapter/140-list.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -297,7 +298,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].After two brain-teasing chapters, it is time to cool it down a little. In this more technical part, we will introduce lists, which serve @@ -1168,13 +1169,13 @@
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/150-indexing.html b/docs/chapter/150-indexing.html index ea3ee4e..7dceb74 100644 --- a/docs/chapter/150-indexing.html +++ b/docs/chapter/150-indexing.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -308,7 +309,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].We now know plenty of ways to process vectors in their entirety, but how to extract and replace specific parts thereof? We will be @@ -1337,7 +1338,7 @@
Below we explore some common patterns; see also Section 1.3 -in [48].
+in [48].First, c drops5 all @@ -1697,13 +1698,13 @@
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/160-character.html b/docs/chapter/160-character.html index a97590d..a200223 100644 --- a/docs/chapter/160-character.html +++ b/docs/chapter/160-character.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -308,7 +309,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].Text is a universal, portable, economic, and efficient means of interacting between humans and computers @@ -429,7 +430,7 @@
cp1252
), but they can be
mixed with Unicode seamlessly. See help("Encoding")
,
-help("iconv")
, and [21] for discussion.
+help("iconv")
, and [21] for discussion.
Nevertheless, certain output devices (web browsers, LaTeX renderers, text terminals) might be unable to display each and every Unicode @@ -1010,11 +1011,11 @@
(*) As we have mentioned, many string operations in base R are not necessarily -portable. The stringx package [22] defines drop-in, +portable. The stringx package [22] defines drop-in, “fixed” replacements therefor. They are based on the International Components for Unicode (ICU) library, which is a de facto standard for the processing of Unicode text, -and the R package stringi; see [21].
+and the R package stringi; see [21].# call install.packages("stringx") first
suppressPackageStartupMessages(library("stringx")) # load the package
sort(c("chłodny", "hardy", "chladný", "hladný"), locale="sk_SK")
@@ -1311,7 +1312,7 @@ 6.5. Exercises5
Even the statistics/machine learning oriented
ones, because of their heavy use of numerical computing, e.g.,
-[14, 25].
+[14, 25].
@@ -1331,13 +1332,13 @@ 6.5. Exercises
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0.
+ Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0.
Built with Sphinx
and a customised rtd
theme.
- Last updated on 2022-12-28T15:36:00+1100.
+ Last updated on 2022-12-29T11:00:10+1100.
diff --git a/docs/chapter/170-function.html b/docs/chapter/170-function.html
index 1211672..f7862e9 100644
--- a/docs/chapter/170-function.html
+++ b/docs/chapter/170-function.html
@@ -10,8 +10,8 @@
-
-
+
+
@@ -28,6 +28,7 @@
+
@@ -303,7 +304,7 @@
Although available online, it is a whole course;
it should be read from the beginning to the end.
Refer to the Preface for general introductory remarks.
-Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].
R is a functional language, where functions play first fiddle. Each action we perform reduces itself to a call to some function, @@ -1041,7 +1042,7 @@
documentation (manuals, vignettes, etc.);
see Section 9.3.2 for some more -and [45] for all the details.
+and [45] for all the details.Most packages are published in the moderated repository that is part of the Comprehensive R Archive Network (CRAN). @@ -1163,7 +1164,7 @@
Rtools on W****ws,
Xcode Command Line Tools @@ -1666,13 +1667,13 @@
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/180-flow.html b/docs/chapter/180-flow.html index e2bd207..3ad31eb 100644 --- a/docs/chapter/180-flow.html +++ b/docs/chapter/180-flow.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -294,7 +295,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].The ifelse and Map functions are very powerful, but they allow us to process only the consecutive elements @@ -985,7 +986,7 @@
Analysis of algorithms (e.g., [9, 34]), +
Analysis of algorithms (e.g., [9, 34]), can give us a rough estimate of their run times or memory consumption as a function of the input data size, especially for big data.
@@ -1280,13 +1281,13 @@- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/210-design.html b/docs/chapter/210-design.html index 0f4f483..bc0a466 100644 --- a/docs/chapter/210-design.html +++ b/docs/chapter/210-design.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -330,7 +331,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].In Chapter 7, we learnt how to write our own functions. This skill is key to enforcing the good @@ -939,7 +940,7 @@
DESCRIPTION
– a text file that gives the name of the package,
its version, authors, dependencies upon other packages, license, etc.;
-see Section 1.1.1 of [45];
NAMESPACE
– a text file containing directives
stating which objects are to be exported so that they are
available to the package users,
@@ -953,7 +954,7 @@
see Section 1.5 of Writing R Extensions [45] for more +
see Section 1.5 of Writing R Extensions [45] for more details and other options: there is no need for us to repeat the information from the official manual as everyone can read it themself.
Important
Note that you do not have to publish your package on CRAN7. @@ -1028,7 +1029,7 @@
Documentation files use a LaTeX-like syntax, which looks quite obscure to an untrained eye. The relevant commands are explained in very detail -in Section 2 of Writing R Extensions [45].
+in Section 2 of Writing R Extensions [45].Note
The process of writing .Rd files by hand might be quite tedious, @@ -1137,7 +1138,7 @@
For an interactive debugger, see the browser function. -Also, refer to Section 9 of [49] for more details.
+Also, refer to Section 9 of [49] for more details.Some IDEs (e.g., RStudio) support this feature too; see their corresponding documentation.
@@ -1401,7 +1402,7 @@Note
(*)
-According to [49],
+According to [49],
a call “add(y, 3) <- 1000
” is a syntactic
sugar precisely for:
`*tmp*` <- y # temporary substitution
@@ -1741,7 +1742,7 @@ 9.5.2. Variable Scope
9.5.3. Closures (*)
Most user-defined functions are in fact representatives
-of the so-called closures; see Chapter 18 and [1].
+of the so-called closures; see Chapter 18 and [1].
They not only consist of an R expression to evaluate,
but also can carry some auxiliary data.
For instance, given two equal-length numeric vectors x
and y
,
@@ -2303,7 +2304,7 @@
9.6. Exercises
11
Such an evaluation model has been heavily inspired
-by Scheme [31].
+by Scheme [31].
It will be explained in more detail in sec:to-do
.
@@ -2324,13 +2325,13 @@ 9.6. Exercises
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0.
+ Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0.
Built with Sphinx
and a customised rtd
theme.
- Last updated on 2022-12-28T15:36:00+1100.
+ Last updated on 2022-12-29T11:00:10+1100.
diff --git a/docs/chapter/220-s3.html b/docs/chapter/220-s3.html
index a902bca..43c11b7 100644
--- a/docs/chapter/220-s3.html
+++ b/docs/chapter/220-s3.html
@@ -10,8 +10,8 @@
-
-
+
+
@@ -28,6 +28,7 @@
+
@@ -295,7 +296,7 @@
Although available online, it is a whole course;
it should be read from the beginning to the end.
Refer to the Preface for general introductory remarks.
-Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].
Let x
be a randomly generated matrix with 1,000,000 rows and 1,000 columns,
y
be a data frame with results from the latest survey
@@ -315,7 +316,7 @@
being able to simply call “print(y)
”
without having to recall that, yes, y
is a data frame,
might seem quite appealing.
This chapter introduces the so-called S3 classes [8], +
This chapter introduces the so-called S3 classes [8],
which provide a lightweight object oriented programming (OOP) approach
for automated dispatching of calls to generics
of the type “print(y)
” to concrete methods
@@ -1344,7 +1345,7 @@
Their list is hardcoded at the C language level;
-compare the list of SEXPTYPE
s in [48] and
+compare the list of SEXPTYPE
s in [48] and
see also Chapter 14.
[49] states: Factors are currently
+ [49] states: Factors are currently
implemented using an integer
array to specify the actual levels and a second array of names that are
mapped to the integers. Rather unfortunately users often make use of the
@@ -2234,13 +2235,13 @@
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0.
+ Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0.
Built with Sphinx
and a customised rtd
theme.
- Last updated on 2022-12-28T15:36:00+1100.
+ Last updated on 2022-12-29T11:00:10+1100.
diff --git a/docs/chapter/230-matrix.html b/docs/chapter/230-matrix.html
index 1a5f0b8..170ff35 100644
--- a/docs/chapter/230-matrix.html
+++ b/docs/chapter/230-matrix.html
@@ -10,8 +10,8 @@
-
-
+
+
@@ -28,6 +28,7 @@
+
@@ -323,7 +324,7 @@
Although available online, it is a whole course;
it should be read from the beginning to the end.
Refer to the Preface for general introductory remarks.
-Also, check out my other book, Minimalist Data Wrangling with Python [20].10.6. Exercises
When we equip an atomic or generic vector with the dim
attribute,
it automatically becomes an object of S3 class array
.
@@ -1436,7 +1437,7 @@
R is a convenient interface to the well-tested and stable algorithms from, amongst others, LAPACK and BLAS5. Below we mention only a few of them. @@ -1845,17 +1846,17 @@
("Classes_Details")
and help("Methods_Details")
as well as
-[5] and [6].
+[5] and [6].
Note
(*)
S4 was loosely inspired by the Common Lisp Object System
-(with its defclass
, defmethod
, etc.; see, e.g., [15]).
+(with its defclass
, defmethod
, etc.; see, e.g., [15]).
In the current author’s opinion, the S4 system is somewhat an afterthought.
Due to appendages like this, R seems like a patchwork language;
suffice it to say that it was not the
@@ -1923,7 +1924,7 @@
attributes(z)
@@ -2423,7 +2424,7 @@ 11.6. Exercises5
(*) Note that we can select the underlying implementation
of BLAS at R’s compile time; see Section A.3 in
-[47]. Some of them are faster than others.
+[47]. Some of them are faster than others.
6
For drawing random samples from any multivariate distribution,
@@ -2486,13 +2487,13 @@
11.6. Exercises
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0.
+ Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0.
Built with Sphinx
and a customised rtd
theme.
- Last updated on 2022-12-28T15:36:00+1100.
+ Last updated on 2022-12-29T11:00:10+1100.
diff --git a/docs/chapter/240-data-frame.html b/docs/chapter/240-data-frame.html
index e31b94e..e482634 100644
--- a/docs/chapter/240-data-frame.html
+++ b/docs/chapter/240-data-frame.html
@@ -10,8 +10,8 @@
-
-
+
+
@@ -28,6 +28,7 @@
+
@@ -303,12 +304,12 @@
Although available online, it is a whole course;
it should be read from the beginning to the end.
Refer to the Preface for general introductory remarks.
-Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].
Most matrices are built on top of atomic vectors and hence
allow items of the same type to be arranged into rows and columns.
Data frames (objects of S3 class data.frame
,
-first introduced in [8]), on the other hand,
+first introduced in [8]), on the other hand,
are collections of vectors of identical lengths or matrices with identical
row counts, hence allowing to represent structured1
data of possibly heterogeneous types, for instance:
In particular, read.csv and the like fetch data from plain text files consisting of records where fields are separated @@ -737,7 +738,7 @@
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/250-graphics.html b/docs/chapter/250-graphics.html index 2a54a2b..8d8f6e0 100644 --- a/docs/chapter/250-graphics.html +++ b/docs/chapter/250-graphics.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -276,7 +277,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].The R Project homepage advertises our free software as an @@ -334,13 +335,13 @@
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/310-compile.html b/docs/chapter/310-compile.html index 1dd5568..0175bc8 100644 --- a/docs/chapter/310-compile.html +++ b/docs/chapter/310-compile.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -278,7 +279,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].R is a nice glue language: it is perfect for implementing data wrangling pipelines, visualisation, @@ -315,13 +316,13 @@
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/320-language.html b/docs/chapter/320-language.html index 2dde6b9..7d41eec 100644 --- a/docs/chapter/320-language.html +++ b/docs/chapter/320-language.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -277,7 +278,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].🚧 This chapter is under construction. Please come back later.
@@ -304,13 +305,13 @@- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/330-environment.html b/docs/chapter/330-environment.html index 1affe6d..1d7d468 100644 --- a/docs/chapter/330-environment.html +++ b/docs/chapter/330-environment.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -278,7 +279,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].🚧 This chapter is under construction. Please come back later.
@@ -316,13 +317,13 @@- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/340-eval-expr.html b/docs/chapter/340-eval-expr.html index 0bbaf2f..d60cec6 100644 --- a/docs/chapter/340-eval-expr.html +++ b/docs/chapter/340-eval-expr.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -273,7 +274,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].@@ -273,13 +274,13 @@🚧 This chapter is under construction. Please come back later.
@@ -294,13 +295,13 @@- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/350-eval-fun.html b/docs/chapter/350-eval-fun.html index 3f762b1..b8c54ac 100644 --- a/docs/chapter/350-eval-fun.html +++ b/docs/chapter/350-eval-fun.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -280,7 +281,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].🚧 This chapter is under construction. Please come back later.
@@ -316,13 +317,13 @@18.5. 🚧 Package Namespaces
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/998-changelog.html b/docs/chapter/998-changelog.html index 55bb453..8e636b0 100644 --- a/docs/chapter/998-changelog.html +++ b/docs/chapter/998-changelog.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -268,12 +269,14 @@
Below is the list of the most noteworthy changes.
-
@@ -293,13 +296,13 @@2022-12-28 (v0.1.12):
+2022-12-29 (v0.1.12):
First public release at https://deepr.gagolewski.com.
Beta (complete) versions of Chapters 1–12 (basic and compound types, functions, etc.) published.
- +
Preface drafted (alpha version).
- +
ISBN 978-0-6455719-2-9 reserved.
Cover.
@@ -425,13 +426,13 @@- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/999-bibliography.html b/docs/chapter/999-bibliography.html index 646966b..7bfab10 100644 --- a/docs/chapter/999-bibliography.html +++ b/docs/chapter/999-bibliography.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -259,34 +260,34 @@
References
-
- 1
+- 1
- -
Abelson, H., Sussman, G.J., Sussman, J. (1996). Structure and Interpretation of Computer Programs. MIT Press.
- 2
+- 2
- -
Abramowitz, M., Stegun, I.A. (1972). Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables. Dover. URL: https://people.math.sfu.ca/~cbm/aands/.
- 3
+- 3
- -
Becker, R.A., Chambers, J.M., Wilks, A.R. (1988). The New S Language. Chapman & Hall.
- 4
+- 4
- -
Chambers, J.M. (1998). Programming with Data. A Guide to the S Language. Springer-Verlag.
- 5
+- 5
- -
Chambers, J.M. (2008). Software for Data Analysis. Programming with R. Springer.
- 6
+- 6
- -
Chambers, J.M. (2016). Extending R. Chapman & Hall.
- 7
+- 7
- -
Chambers, J.M. (2020). S, R, and data science. The R Journal, 12(1):462–476. DOI: 10.32614/RJ-2020-028.
- 8
+- 8
Chambers, J.M., Hastie, T.J. (1991). Statistical Models in S. Chapman & Hall.
- 9
- -
Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C. (2009). Introduction to Algorithms. MIT Press and McGraw-Hill.
- 10
+- 10
Crawley, M.J. (2007). The R Book. John Wiley & Sons.
- 11
@@ -298,13 +299,13 @@References13
- -
Davis, M., Whistler, K., Scherer, M. (2021). Unicode technical standard #10: Unicode collation algorithm. URL: http://www.unicode.org/reports/tr10/.
- 14
+- 14
- -
Deisenroth, M.P., Faisal, A.A., Ong, C.S. (2020). Mathematics for Machine Learning. Cambridge University Press. URL: https://mml-book.com/.
- 15
+- 15
- -
DeMichiel, L.G., Gabriel, R.P. (1987). The Common Lisp Object System: An overview. ECOOP. URL: https://www.dreamsongs.com/Files/ECOOP.pdf.
- 16
+- 16
Devroye, L. (1986). Non-Uniform Random Variate Generation. Springer-Verlag. URL: http://luc.devroye.org/rnbookindex.html.
- 17
@@ -313,101 +314,101 @@References18
- -
Friedl, J.E.F. (2006). Mastering Regular Expressions. O'Reilly.
- 19
+- 19
- -
Gagolewski, M. (2016). Programowanie w języku R. Analiza danych, obliczenia, symulacje (R Programming. Data Analysis, Computing, Simulations). Wydawnictwo Naukowe PWN, 2nd edition. ISBN 978-83-01-18939-6.
- 20
+- 20
- -
Gagolewski, M. (2022). Minimalist Data Wrangling with Python. Zenodo, Melbourne. ISBN 978-0-6455719-1-2. URL: https://datawranglingpy.gagolewski.com/, DOI: 10.5281/zenodo.6451068.
- 21
+- 21
- -
Gagolewski, M. (2022). stringi: Fast and portable character string processing in R. Journal of Statistical Software, 103(2):1–59. URL: https://stringi.gagolewski.com, DOI: 10.18637/jss.v103.i02.
- 22
+- 22
- -
Gagolewski, M. (2022). stringx: Drop-in replacements for base R string functions powered by stringi. URL: https://stringx.gagolewski.com.
- 23
+- 23
- -
Galassi, M., Theiler, J., et al. (2021). GNU Scientific Library Reference Manual. URL: http://www.gnu.org/software/gsl/.
- 24
+- 24
- -
Gentle, J.E. (2003). Random Number Generation and Monte Carlo methods. Springer.
- 25
+- 25
- -
Gentle, J.E. (2007). Matrix Algebra. Springer.
- 26
+- 26
- -
Gentle, J.E. (2009). Computational Statistics. Springer.
- 27
+- 27
- -
Goldberg, D. (1991). What every computer scientist should know about floating-point arithmetic. ACM Computing Surveys, 21(1):5–48. URL: https://perso.ens-lyon.fr/jean-michel.muller/goldberg.pdf.
- 28
+- 28
- -
Hankin, R.K.S. (2006). Special functions in R: introducing the gsl package. R News, 6:24–26. URL: https://cran.r-project.org/web/packages/gsl/vignettes/gslpaper.pdf.
- 29
+- 29
- -
Harris, C.R., et al. (2020). Array programming with NumPy. Nature, 585(7825):357–362. DOI: 10.1038/s41586-020-2649-2.
- 30
+- 30
- -
Higham, N.J. (2002). Accuracy and Stability of Numerical Algorithms. SIAM, Philadelphia, PA. URL: https://dx.doi.org/10.1137/1.9780898718027.
- 31
+- 31
- -
Ihaka, R., Gentleman, R. (1996). R: A language for data analysis and graphics. Journal of Computational and Graphical Statistics, 5(3):299–314. URL: https://doi.org/10.1080/10618600.1996.10474713.
- 32
+- 32
- -
Knuth, D.E. (1992). Literate Programming. CSLI.
- 33
+- 33
- -
Knuth, D.E. (1997). The Art of Computer Programming II: Seminumerical Algorithms. Addison-Wesley.
- 34
+- 34
- -
Knuth, D.E. (1997). The Art of Computer Programming I: Fundamental Algorithms. Addison-Wesley.
- 35
+- 35
- -
Matloff, N.S. (2011). The Art of R Programming: A Tour of Statistical Software Design. No Starch Press.
- 36
+- 36
Matsumoto, M., Nishimura, T. (1998). Mersenne Twister: A 623-dimensionally equidistributed uniform pseudo-random number generator. ACM Transactions on Modeling and Computer Simulation, 8:3–30.
- 37
- -
Nelsen, R.B. (1999). An Introduction to Copulas. Springer-Verlag.
- 38
+- 38
Olver, F.W.J., et al. (2021). NIST Digital Library of Mathematical Functions. NIST. URL: https://dlmf.nist.gov/.
- 39
- -
Tierney, L., Becker, G., Kalibera, T. (2018). ALTREP: Alternative Representations for R Objects. URL: https://svn.r-project.org/R/branches/ALTREP/ALTREP.html.
- 40
+- 40
- -
Venables, W.N., Ripley, B.D. (2000). S Programming. Springer.
- 41
-Venables, W.N., Smith, D.M., R Development Core Team. (2022). An Introduction to R. URL: https://CRAN.R-project.org/doc/manuals/r-release/R-intro.html.
+- 41
+- -
Venables, W.N., Smith, D.M., R Development Core Team. (2023). An Introduction to R. URL: https://CRAN.R-project.org/doc/manuals/r-release/R-intro.html.
- 42
+- 42
- -
Wickham, H. (2014). Advanced R. Chapman & Hall/CRC.
- 43
+- 43
- -
Wickham, H., Grolemund, G. (2017). R for Data Science. O'Reilly. URL: https://r4ds.had.co.nz/.
- 44
+- 44
- -
Xie, Y. (2015). Dynamic Documents with R and knitr. Chapman and Hall/CRC.
- 45
-R Development Core Team. (2022). Writing R Extensions. URL: https://CRAN.R-project.org/doc/manuals/r-release/R-exts.html.
+- 45
+- -
R Development Core Team. (2023). Writing R Extensions. URL: https://CRAN.R-project.org/doc/manuals/r-release/R-exts.html.
- 46
-R Development Core Team. (2022). R Data Import/Export. URL: https://CRAN.R-project.org/doc/manuals/r-release/R-data.html.
+- 46
+- -
R Development Core Team. (2023). R Data Import/Export. URL: https://CRAN.R-project.org/doc/manuals/r-release/R-data.html.
- 47
-R Development Core Team. (2022). R Installation and Administration. URL: https://CRAN.R-project.org/doc/manuals/r-release/R-admin.html.
+- 47
+- -
R Development Core Team. (2023). R Installation and Administration. URL: https://CRAN.R-project.org/doc/manuals/r-release/R-admin.html.
- 48
-R Development Core Team. (2022). R Internals. URL: https://CRAN.R-project.org/doc/manuals/r-release/R-ints.html.
+- 48
+- -
R Development Core Team. (2023). R Internals. URL: https://CRAN.R-project.org/doc/manuals/r-release/R-ints.html.
- 49
-R Development Core Team. (2022). R Language Definition. URL: https://CRAN.R-project.org/doc/manuals/r-release/R-lang.html.
+- 49
+- -
R Development Core Team. (2023). R Language Definition. URL: https://CRAN.R-project.org/doc/manuals/r-release/R-lang.html.
- 50
-R Development Core Team. (2022). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL: http://www.R-project.org.
+- 50
+R Development Core Team. (2023). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL: http://www.R-project.org.
References
- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/chapter/chapter-header-motd.html b/docs/chapter/chapter-header-motd.html index 5bb3bd3..aeed7c5 100644 --- a/docs/chapter/chapter-header-motd.html +++ b/docs/chapter/chapter-header-motd.html @@ -10,8 +10,8 @@ - - + + @@ -28,6 +28,7 @@ + @@ -260,7 +261,7 @@ Although available online, it is a whole course; it should be read from the beginning to the end. Refer to the Preface for general introductory remarks. -Also, check out my other book, Minimalist Data Wrangling with Python [20].
+Also, check out my other book, Minimalist Data Wrangling with Python [20].- Copyright © 2022 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. + Copyright © 2022–2023 by Marek Gagolewski. Some rights reserved. Licensed under CC BY-NC-ND 4.0. Built with Sphinx and a customised rtd theme. - Last updated on 2022-12-28T15:36:00+1100. + Last updated on 2022-12-29T11:00:10+1100. diff --git a/docs/deepr.pdf b/docs/deepr.pdf index a221fd5dbebe1492df8ac2595d544806006c7401..74d0e519d1948445281bb8af30833e85786ec485 100644 GIT binary patch delta 111855 zcmY&
o6N6p=0w8#5;x5eqjn8<9Q{qaqP2D=RY*qxgRsHV$?oMg<~Pw*Q10 z5i>UvHybxsg4H81XObQ;jX4_;qmr|k+y6Ci6aD{-QCf^hmyg+qorBqk)tr;r$jF$J ziN%D2jfs_s+mw@&ncIw&*;Ig!or}fD)YOQDg`1O=g`LTmi;IPo-PoAh-1xt<#>T8k z*TA^SXF$-Sx;e9e7#zs`hHUKp~E_{+Lq8>0y(gdO*Fmn<$ zk{*DCNI(GQuZy#pksXZ3=8cZG8rm89uUjZMhFe+)Nnk)d6% ~7x)J(e5LE;O65GK^5yeA<3@v<7lz)PTS8=3_nY^X!T*J)=g@#?9 z=e3EO`6{{H?_d7Q>m1(Ku2=WGJx*94As~R#G%y2Dcq|ZMzfZZ1<{KnX8cgJZqh zZw-Vo^FP9W$e>+_lagPI0@f`@pT_3$Z`dt~5lfsmmlw_o0LLRMM=6acc*tS*DnJ zfe9q4K7BrLAW)V@v~2i8KM=-Y{I5HneA&U|oYHFn`dmPD@RQG$951ht>rizM=VyTa z@(v!Vy&wo=dJnm;;i2>M3*b?!bUxIa$nOcRf(=&jO^w1~%GYt51fT12W0CG>1RVIy zXl3!mPbq<2H#%m=LjqHH;QI0z70&0^HwD-8crwC`2wz>Sg=^;U+CdwbA+_7BcwDh4 z64Ut}P~v-tqhf{&^kOJdwS<#I?r{M0Jtm)7s71he>iJ^>S&J><2ZbdFYDyxVS`oky z*&d8xoUB?qC7ldWgz&J(<59#as2sw94@1O*gGkU{_~=Uck+~e_a~uuzu0U)u{K{hx zVuJh_# 2yj|8Fbanws68G&k|fsz_v~jxDk+KsXPWI z6I*CM?9fndMxZRk+^UVf!e|(IJ^ZW3Re&U+f`m|i?tGzu3Ha*joM znrCxdVe8QDMVlF^WRun{rnY2T02!<_GZ;tkN#jBG_`!uA?5mM|NTJNfauQ*-3&In% zH|ePi_t0i^#<;7K(!Se>D+L@`$QOB+Y%Sb1>|rHgcnufU0iklRZ_y%o`sYy`vgc;$ zZ;Kndf)HzmB_GY87X*jlejqF;VQyV!#PCtZmYYP9`Hs{3&|>V;cKC-P|GTUwiv#52 z4m1o_=oa_E{>mJi@hnuofkz(jUQ$e_`GhV1=~5@wk5oGbV`K6QJqGZh04vZK|M?;+ z3I~mB$C#ro59KnG8!+_?C-4C^mP>4#XMS7gbV4WaYR2{v5vxrLCCy?AVrg7sMSU1m z$TZ#|Z$qL!uMBr{Vw7k_okMd%G!3vsU8t4OyL%B^Mu=RlYZW;=9Jh ux9OTp$$yW85SHF9kG2S)xdcreE8bav~_)DiEIJ{4~v(r<%_oN>5c@GS =WY=2N)CG|?|6pdz@dH?09iXtwVYA3IDo6GP=&jBV^hm{eiTg`!9S6uLA~S><7s8T}LcN?Oo)b z;CGT(f2I 8#_Uo^@TkNX*Kn_Iu>1p?kX1y*lRtm zIlcAwx(+MRApy113d Hh;Naj=_Mmc;hj4acvk`BJ&t(-QVgDSbV` zXG;w+ZO?liOxG<@5~)l~R>H`*>ni3Yk3Ozg79kjcO9Yhp=_*)NnR{2>QQWmSj?`a* z 97+@5a|3V e3g#5tfCa>B&DD2s7Ua2B}3S%q#fM+c+HUdDzz}56eDpXlPL?$V}!9_;~!Lygx zsR;YAqV>?>8(2m~l8@a{lkRDR*NIM`5fxqA<8w=1DH h|NsGve0!= znE`B%uiHw>!hRCqxq{h(s>OS|sK~7}Q ?V)y!pGpDZ0`9jEIw6c%mj!yOu+I?ksZViL54h23JnvtvMQm~4^OJh ztiW+NH6f5OXH`rW6NfpdOy3A78J)X8{0(5ZhO6gKwy72?H=@bgj17Nb{^KZAW^!b* zwe7A^t<-hxgr;9zeSN@KhIoG7m;p9uMRJ4;JDcg8n3!PWgoOE`R%(1*_YNSPhyjo! zG)=WQ=h$;vGX(Od`Ar5ciZbMabR_Mk&&KwL1>Q)f4yYF8nmJzbQ4 CC9x22 znx&qtEDedGPr$WNMooJ3WZ;;WE(4Nr@?~xW 0$v-Kpddoj4^3LYGbD}S0`h}2cVP%iOr@t&FOQWxC7GXoQ6Qg zDP!VqC#fqzrb0fZBgx%`Qh`;*@yce7_0!NJB?6RufOBq;iBE+EPKCoHF{14g*et+J zpNtSQILZhK-{N|v^9Kx)E!^*^In5Kljj&X4sj!9y?aGHH3U@BCz{*aa2=NIPo^?1$ zPoXiqShvg@t^HB2*`6YVKL8YNOTVRN0Tte0=oA^h{gO(e*2?fz6xqG ~J$iRiVZ^t|T8iK)E9^`m9iO+9+h_zh8`7A+NFpmn8i3chu%3P#k<{-6 z)ZGaCaMpzfTq#v7-8Yu24k4S=G^fZHRGx48vQm)uPcfjdHP0dMaGr=9GkWU7)}!pv zN!})W%yZwd5Nq(V6#~M6+CAZtL!q<$KyKce9VfBZ3^RTUw{TE*z$E^GL}3k6>(@oU zw~xHDj$**`u@ VOzzb)!x5 zb8Id_^5ddl?c5IJV*BrW1eKY2g_Tu5%j5JO Ii&jZbYoAv`l{ah0nty4GKv|qy0l=U-e$k-!-S_?U^(4#i zafVUo2YPfG7ZK<_7@(R?XzvlR+SyCVia=#n008f=IYKu(T>8RDIg~#_;v)MX?_4_x z$a8iXvB~6q>!=e%>FGolt;=Tlu;N5A5!SnPbY`s-8T!}9V!ZUw{%E#;_!)A6!&wXh zn_AH8g!-|FM!gaVVE>cF&>n?8$$TPs=Xs~6p7W0qhXoOcLXi@n0ODVHE~pp0$_|s% zz<}1&fLjBS 9OJofZ&)?@Hci@;7W>V5>?PQHojwe>F>y!%=r*Fs5~aIx50TNC9^TbnuD z;GqTUkF`D7;N^+KJLzw(;l<(k!g5Sb?(0yCx1V 3AI(v2x7pe%BuTQa43tR*PT;1ww( z*sK@f(!@~;03k@F$z&phzadora&;;6{a@rH0%79gXobD!1FS%EI*lJEqrr&F0%m >;pc+Yt6;cQ*DLXw4<0_bCGS)L0P>u_e>ZJnN?t?x ze;%bIjJhMY*qLD};h|=#Zq5R)rs`-v8yaqQI?Mnb=yjf~Yvh;ozSTcm(Kcv+UtpBK zOI`n)A_}5Ggf!$#EUZLEB4JfL$wt3DLuCirnxN8K%rH@8DJd2sZ+h9)O@j~u2+IQK zB5Y%<>Y+Zt3_}e=A<${2bsK7&%BrfW#zvODZZ-BKV@3)<*uiYMDVlo0EDdVXL82-J zFW #?5T{AzK= G fR;N*8At2B;ylvV!ttRr(-i^k5Iw(|b^S+C_ z+|(nGK{6# { qO <-;6Za5XiU^Vhn27{ zNhSjs5lLPIEM4Ek0u)gnm+{#`Hq@KHDiY56Dul`gjB-XFgF#|$Vbu&(aGxp>g>Z~S zOd$cl{dt(-w06HUes}6s+Vim#^qJozw2_Zqomg~OjPsD9DXtKZ_C4NPW+0e&5__GH z?$XLF-?4~tYs{Xt_)IdZBDev_cbZsPkIYXA0L-ohTYk=tHe*M9pNC8rergRA6i&-- z&Yt$lp08Jo{d}C3YyIAyTs${ljz455k_rJK%YUvM^vfQE$0ah#9QEo%G^gfr%PAH6 zqneTsEuxY{|HWFS)1}=Qm%6=f36@IUT%{?leAaF(O?ZA93+PtvVAlEV{JPy$^(?)Z zE*L26%9)?>DxQ^%@j{N>*mCO|-1D$K HgXsZzXg4Brkzc_EDc-_={@KQ zGQ@6ytKOFv`LBO<@@M2SVy0a#>^^+e`%aVP SHC{Iaz^|K^sg3GJy|tXmLE1AI2=b-cuy{fY(2_d4u*u| zagu~-Q%z5G?(TwspY81D@fExoL4F8g#WOxo k2|&8F>*Dw`Cf9k(ou mH>=VuS__3W@TlvmhXTADyiIvHyLCTjnb zy~J7fq6|Q!YfaTFK{w9gKm}}dm#&LI)k5Fio{A*+CXL6?H9!|Lubz)4%E}rD6;1Gd zuok;-D8ve>^C3PEDMGmCcJeyQtcOytf_;a30H{Z(%uea3=46WA1&ozJ9Ay@oFh3 zlu5cr-D0#(?a_B~s=llV*= D?O>78pdrTi(rSY}4aT&h6OkDT8-Mumbx-Z#kqdFG0^X4Ax z1@=TXMZ22OV(RuQcjTORtS5Y*mY(u*38P0!@`hzf?TyA4cjS6PGJgxcK0c@J6h9qa z4dBmPDNaWn0SssCVgPq?bpZ74=8T>$ZrcNL@#FQ|5I^5|;y(9>DNfbI2hQFxUWx@H z$)@~vi0{AiEySnyM1tlR&uHlG>|egV5Q?Q8y@HCe0DMps85@-$ZKAvj0oyx&!T3D0 z9(%kIPyQ hW)jA$D;A}@{}vwVTaTmzSi%OG2dDM#^zrOYv&Z+15Q)`&f|*_or4 z2Tx8O9fbuUV_z 73`v zsFMOOuk*`J4?uIvVPGgX^cc4Wl+q(>d_r&0_-3-SiXQg6t|oaMIn9NFBScI_5A6<_ z3j{mqmt)-m=5LG?tFX&RCWJRrD_gdauNFSEE)#3wW20|V2GmQW#s+JzM NE?f3{~YsD@!=6mv~=3cyPbP*tHm{TCWcgki?=t&r L~|M*nffO!@Yby`{OK;Jg9?bR%4ZxWT9 zF+KE!hpjuL7InIkGsM(NwaLrRX`Pvd-M(r+&@5A9E+GhST$(eMTjCk{&;85q5Dr6L zYbaY0-FrbsH@7OAr{}cHVY#;@?p2$}o=Bs^Bp_VP8T5^7EKl^3gGe$#2Nhb1M@8C> z3TOg=QK4Ibv=N?sEmYYePxXrK4;=Tz(Oc0Pqd1x9e$D4O!NZZcyp;&l{ye|Us;k|! zzaO(MMD}PEvmL)cu17LQR0}MWo#)J6^m*m*YZgX{wxz}1#l^3F$DDLmmRBle#=n_I z2)OCiR=}7V(`+Qt5j;)!;eTH?a0o48-~L>wj+mJ6QLa&T=&MeH)UR!PeC@huC|-*s zD<~JQ2-#jq7O?U;!&`@|KG$W@C|#D 9jY{6%Y;${P+G+ zD=4SPfI+58rox0l+m$9jN2n)C%w0j;1<0>+cJAXZV|FaIO3wA>=u4-Ms4P%K7+e4) z{8I^j!J6i$d$D3V5Fr{XA(0`wJIvR&`4eiz4RCi?cFKDXi`9$ez$&kEowt!NwR`!Rck;hY4SgSn&l6e(-Y#H5Ild2`22Ov-q ztEhhDSY3y~Gg~r`euznjcWUUqb2+NClR0iybRvsCQc=X^igp%zxUHPc8~Jwx%q4-h z@~@=p?OQ_E?%y@ q2c4d@=HZ~g~T9x=w-%(2w6Wj;f`@kK~Wr}CN zl6rdT&e-8gp8T2WbfY-u4g1UYn2a5}Iv1?Xd&zttPsSHuaJXhO&$|z1ppLKSTU~ z9}*FVeTQf{vhq}w-G3W 2*W&*X-k^`OP%5Z{apaTv7JG*bS;Dw^cmui}vrVLe zD+IWbVK?g+ngXT-ny##&@43fDGXz Gk6GK%WRbWaB4znKGX>W6viXHuhfSxN>hrfv jhk!VCMmk<;lZ@)fgb^^6K>#H2ZWW%RPb4lj zR6!HcpBY-DhW+e=KLKJr$O9ZS-W`&fNI)Fp&k7Bs;6i;!tK(!i+oFGhj#9|uz%Hnv za5vJ~*lur-a1+VB_V&^=W 4_FG6b|qq#TRfuatj=l zKnf`>sWOMWXGMWC1OQnD=}HE;`RPb*h-U8TRsSsG9#}0gM&MW^AY#PPkX+XJROEKm z1~R#+I!<3RcnYG{P`;iaCNHX-DQ5oc!=8$edfz8lJRppH@0qOZs?)=CK7WJzr!-ON zCX@!Vyy^pK*fQ-tY`D>2()SM@p_2-k3Zd_S;(-W582ZF{S^xwr;=IR0fbh>a&-K$J zhysqbH7JCl@4LN4>)ysA{>*e4sbTuV#tUGtn1&N*o1nx_GshhAvl_VcOP{~%H-vyN z`y*>|1;ObISJeh0r0zg^j)303Vf~yNUo?*6WZ-#_jNC&4KT04`r2vyi47VXdfM$@9 zAZVlZrcb8djsjM)dP(APL9$6Xn)jPn_l_ydEcvFRLf^RMJ~igab`kQi*C1z7AhJ)J zkKQZ=Jb9x@PI+8HujV^Gkglw^ lzlrnu6E2MJIXv%&efPllnSuFD{M#QxS`0G$CkFQQ2;|2C(a-2VgZ?EX z3F#;8i4}_Q^$7KK4fS;h o}gfkEx#=^FZi4gpYR3?m~vISX{W+=4gI4bLj$2U$;Z zQJ&dF_zH9mS@N}PQ*f?9!=HsbSm4xLrw)w0p&+~!4!b-Vg-9ZS9pd_Aiq78X?edei zL+{=Pg@eY&NKh vp1F14^hLDtb{2(zW?AA()N{)or;+}KB*zO;& zmjGEg{vdOlvgITv*Vfwk8GVpfgg61S3#zPx Uk+Izv8?Z}`Y;ATMHn!a2|F;uNr*Fkl=t4c;)4 ;Z+B$RQFqPoo} zrl9|HKP)(}-h9EP^+U8Cl3;S*BU%&saIa8}p3phLJMU~QNi 1_-Ia^B9n!d=D*MDMY#m?CZEvE!6*vX@g?*wvgz^ zP-lqp*H?PJ-4L0ZL|_>HRA)4#RJb>Y0u)`%O|uZ9N@eCOw#kpvN35R59uVHv0UOqg z7J?TlWhR-{=Syur8=Odo_;qhXDRSg`aD0q<=a|(`oZOM?D`RMyXU~7}t7(=`B*EUj z=8Hrg%Ts98&l^Z}_u-NhBdRk&N>kpUDpZyJNrfRtLe3eP%%m_=5h+NA0OwqWf(#x3 z2KF;B2~>a7T_ssbE5@u94uJRrWg5lN-`_=-yA|IW&SYY|Wc`Ec#w(KvbV~mbaEmoP zFOa!wJIYdAISluPV{YDFBt@;eQznJt+%h0rt3J<**r72SOU60dX5N}Em3DtNn9d{& z1cHUo^fs-&m{snfr8~03e#4>JtZTS->!F|T@IGl=!gc0S p7+Zgr z430`zSU%LQX2NU`79bqOP+%(oZMJl##`nW99IuorC)6?|1P*!EOFKjnrsiulQTJ9D z_60Lvd8+Ayl{nRc7go$_Db4WmqCa1>>CS(w$@fO~j^6q?_-lQa6P(f@iP7+#SbC36 z{S M8AyaxEWmK#0)X>qYgA`VhLP2QVCpoQVALzMCQh{9~9$bs&De) za$zE=aAobDaOEhkB4`Gw=3%Oa=R_14p6_INC_0n>STlTJ2yCiwP5^JRme(vn2~Ce_ zwLcxEjH!t8qM<~z+Da%^hUqjmb0Y%@2Dz#JXf#$yi+Hq7vB7{^PFj0ot)0)Iqqxp^ zanGz~=#?w?u(0r{29u+V4x+l0WWK89?&hDu@~NVtGywG#rLid`X?b{pYYdICsXi&T zy;GpDcr;22`1!F59iS!syl0a}W{}wpfm|pskrP=+mO6jA+f=BRtOQC0W)54uFg6Y! zs|wUO42y2PNfgf9E&xk=eFh3zuPGU+2 lc?f72cF_@yf`w|X+77f}c##!iVq@%X7ckj6c K$`5f z(b)0*agpR%X7A@>;!tP^3v&BG4IU-mbA^~tBiNBA$f?QbAh5^h!|X8A6c!iO^*Lmb zW#_ncFP-ISQEQ+N5Xi2OlJ_$}bn9d1&%80R`O3U$X754y MBWn1faZH5&W+}WIKiKU zIKnu)G-)%39?O}BaD@WPJjVTnUfH0V41Pbg?_D0i2She;g>&ibi4LL`CeuGZEadTu z`I5lKB&!EZ=hmTG_uHdnv@#e3wz|w?R38(x%9OM#)!E;85Kf<4*o1xCYSe^#Hne@1 z3AMSLf23Du-*>F9i)u<79AniK`2wCzsqa3aCvh01{wq?6={G*}n!;VP(+e8q4MsOJ zny`^tfSMW30d^RH3QmdLi{wHC 7>qfFsOoS6$x ztsUlKu8rr 6sDk~tJNN(W(a}C;R%gU8dC~h+3zvGoGyzR#!riBIo+4dgpzi0i5Z+(LTV~= z@_`VqzHuMER0`PI81}2S1%igN0U2nI(ik-}dAUUiexIUNeQ|YMm&@w3y4d;(AZou9 zSZ{Mg ^y;+pw}B##2)YAHZtD+p|d{O1#?+kTgok<`*+%HbJIp? z&YED3aF9L9J0tyTH{_Op{6`rAfYr8nu*>}J#I=t1^1biwUbh><5Idiue}1@1&}B~L zVWVi+#BX;)Y} ;R zAa8Mz@hr1(kuk8K>h#L mtrDDGsdIO@Rk~Q-L#()Bdcl9Z zIDNXj&+{SJ6Rh*=>lNG @9yw?b77hj#1rswM9{f#c4R1sNBN1jrAWNPoSN^& z+ZEj2-qE47nqX=*8Snoq#e>OG=>0`f3EIuj?O@h0q15cdMn-j*t)BFo8p=`$a zza6?*h6IF_JMAF=74yF)4WD!^g9_NFCF4f+J)?a@CP-IcL~bq7kc9$cgd$ESY}b#n zgqDx $O~ygTywXQ3*R)T{3?RnmT8m51P6oELzemybzx zJV6)09Ba`Oc@|6h0ZBh+exbfQ`gv`vIW~R~xIz)@*s#ii;ngD^z4tx>F;-Uyo3H6d zSPeUaFKG=N-h>>mPfEiC3q~mECQOnfS)Z@}PVWy}XwK75f3BGe8m?Lus~9|D1p&?0 z(L^g4W$m<&jea@8JvCQIybJL1!?+P)j8N=9{D)I_cqlLCZ~uVBTx8fC*DZoFX8lH! zKp1VVCidqK1}+5!mpMs1kcg096RBr4t~dVtd~I}SaP=yD`d_wZ8=tZ=qws5&fZ-bd zy*uqkih3x%2m|3`ss<(MGf$Wg$qFQLQ4tL WaP)Y92>bh4cGA|T zr%-3u`|~{X5%jb3c#t<0*5~v6aP@ex^myQq_S F#(Dz+hl7+b?bM;s7(d`f*YlFcy z3X2K&M%liS_|*TjpWb_2`2FTyuaISIl_KlA!KQ2ha8c987uyVK>*-k-<~{9NNNx3g ze(x_ILDoqB1*;D1{MGOM{)} &`E5{DI+D1k$E>VfGxSZyS zesHPJz|XJ8CrL;ISS5{!n}u4)*+V6Wt;+v$UsFX%m)67pt1*2AeiuKKnI3K>sKG`H z?aCe?j6i#mn0m9O#kv9&ncFn0QO(+GoC6JVs^1&&&?3v+C1*F#vJ)~K0+tnV&QNKp z*YHP_B{xPx@W$BhThCDj4Y!$&iS&kfgN%U0_8gLbgv7%m2qcvZfmhj9ZdGkXCTAUA z+iP}muceb+ZGaz_GhowouG5jmd?{L23N04U=YlbO7F*hp! o fvC{I~6#yK;*3iTyST)k3btB6m!mxZ7JxB4HiKm8Iw=EVMf0U&GUQ^+OCvgYZ zj7XbWzwTrVP#OnwhI1V@qL{kyxLp>jk55bPg?i)-rlhm%QqT)P4osC1m7S5J*gf_x zbi+_CYLb^YbVkGNupLb(NL)38K^C(XiNoP^vn{#11!u!f>E^S>YQ?Q!0yCrw(wEnJ z?2?ErIRy@2R~Paxg@KxfX;3@V xOut`gm_h`nUm7Snf5=*m$`iY<*L>FN3C7S{&NM>b_ ze>)uIPK>pqsCLnhQ^cc0ti)T%Y|4X0Ryx5|xh%4j^y`fVIbO-O^2ta`-quK7I*#ws zb2wY2&bV*2ri?ucOQsOn_zo{Cgvt!aB4@}xBwh@e`18S _}tC^!=b z!n%9`2KfQr7Ya0d61asbC~PAnR_W;VWUDq-zIw1PYB(GrBwVEa&}h_jQYtQHG_I2h z;YU-+EEKA)#fArVDtD>=iW`F_YrJyWBwVch(6XIfL?ufL+6l2dKL~)Cl#;3VqS7JF zD-zl}u1eA<1l7l3w1N`IV7QNP_USEgH_Tno>YObWLrU~c1)AyMRBGy$Zr0NJk=9tX z 0wqFk{Y` zJjd!tktL8oy+LdY0&Bo}V2lWVXv~!*==d?z-TuD(G)oA@RvJW9^IPEs1IY7G@|+_c zkr>p?hx?r#cm|{)RLX#JEsNG{Touu`jL5|!&%hF?Iuf(N;3{mPFWdDuLwyKOGBw%0 zb(%7!!#2%)S~G?Oc<7To5Dcq#Qb^wIo(#Q4Y653sy*kdY#SUQDpTOc0=vtc7=r|ZQ zNJtY!d<_@F>^*mNq&3(^KhdHnNoJEe^yGI$BIa2kJJFm>c6o7eC! {{2E+Y7M|WiP<3eui=3Wwg-LtY2BLjmxsFknupSlD(z;1ZrSk)@f2I-?u^3KRr|L zQoqykql_*xa mOJ zgqWJu4tI)_Dtk)?&Y${ivh?TnlN7s?8R `Q0nek@9wh4$HArtRQN6tAIhD+3VLhAXT0rp>&il9 zxy=YgePFEw(m}%0l(uzo!_CVlwnmb!a^{S4-VupNOpIU*<>qgCJg_a)wH4ddcI+pQ z6=F*PtQQDkut#%S&r9+RLyB sD;E@17e1h>C%RS*hw1~NKpIx0NjZ39j}W#n zqD8hu7T)pp`<=WPR{-iu=FnAS%3{L|am3Apq=_a%biv(yhFJ9r!I^KdGm=*t6+=Ud zviMz+!)R9$N2DKT8LZKANBtHLNjE*@>ovo_)ed~jypNxs*J3N#%$RKZo+{k+O?4?^ zGZj#W69u@AEEbOtNt#v-D9^THcYEmp^+|6%45>tqn;TCVlS;;geEatIC=M!lkPF^v zpaf22gtDtf^9mSPpe(RQ95(WdrotEHjmd|4$f0kKZ0V}8KK5~JjN`UyOLpWPw?ixP zTYJ=7myb*s^xnE#v5)Gp<9q%yM>hUoZV5=C^IyhG$RuF+E|giZ*j-|4hb`Ne2*Pxv zXea>t{1i^vHcl6EjazmnPxpdZl7XlnIguQ}Sy|9ZU&p}8`v$E@&gJZWbNp*XqN&Pg z&Z|AW)Vicfae>d-EksxHgnR?@XcTYVng+=ZkdnIs9clSYCI!d3D_`23gIySV+bwogO?z1v zG(yEzLl1l1IxS_nf*YRGdEgan_u{>|u%7So*hX~CP+c{%1pNdoGfArC>0_l <8MTh z$yRLWOX0%xIk6>;f(a&2({%_yt;88vsS7B(-QS3ik!=^@jJuN`p5r2yaRuO?uJ@=o zxvW#sIdk*$3R|kFeelgon}XqWvE%n=nSG>nNO$`RT9_pThGKqti2D*PF`0h*PyL*m zKc6$*ArKA0lof`Urd4jm<$m?{oS?N@?H^r8r#1`Qt4akXMN^}=X8gmiGO@R@44Fii zoREvGlw*ROrVj!a^KS_!?^J!j-^zl4IOkAy-Hr-W=#Y{dTPq=N9g^?bUHG~_!xasV?E3)BBMS~a4#75o3tmqg*%YkkRr)c=C7b;5Jm z6fEeQYI85-JjHc0-XVst9DV(+>gA@|>gnf*sH0OytFmVbj+^9-WG1ISoTPSm?K7cB zkoCaD-d_|UQfY$}DH>dh#z~`-T!~pONQME1Qh>XqHZN5b5xj#>^?4^#PP6Vf(l%;~ zMb!EVqQ$ni5dUX^Y^jmB+5KaQcCJCj>PRTKUIK=-`-VSDz7PdfF7OfU)8^ae)sg4$ zwh%tqGjB7IVnxtdDa5npBjyiR|GfjAP)mL6AMMcK^>=ZsO{0GC5& zbPLgxw*NE*$1~#WPVD)iM@SZ;|E1*6) ES$UmuV#t}I05Od=-^F#^L-lq6vEN6tI}JHp@k z5x{Tr_si#;;-2E%|G==feE`96(D%;EL*CZde?aWu>gE0E<>4-FPeHJkB x4eavqA&jx^SHLcBw(Ln8O3wiVGug4+sNDnHS+O1UhuH9ew)ppv-{Xrl&1O{Z zHtg%y10FNl|Bb%zNUs WOP%>kFR8)lRCc2;lJ?ux~9&8AX9!Qhum05 zIVilbIVe=`8?|_zRY3xiWTY5xpXKd>{SniBomN7lw;$PufN)=6;WcTRv_;T9%55s` zMvC#`jbaB~Va)GD28@*{vFLfe!+GGtoJE~#ktD?LiS8B*_gaoFYA4!YIS&QuVM$Ze zOa+LbcOj*Wn3qhV$k9=82w$6yy)L`wutq(f_=UVyj-8LB9&a#vV)aZ<;MO=iWfxeI ztmH0-z%!kA`WlI=91iBH{>&2SsKye@Gf2UrPUZaf)gyN47ohp*|0IUbFP==#pE-{L zwVO+@T6{8+QdeRzHykC-ljqiXx+@jeld#*9uv){}Si|Z3*MY6|#lo2Jx_6x`G3pIv zD^jZ>HIK4bWx;Az)@muCKvFoE7+7Rr|5?mO8H@%uTDLptv|BY{5Pi4M)2rAM&8<~? zWfxwGX@q_p7|>w`UL!rfZGFMqR9WaeZJv?8Pk&w0Kdtjru<|u;*^B&lhR_D7=w0F# zmU~nvBD#CNW-3bi?sXa6q|qIt%f>4Sm*qP0JP3wAnxq_g(!N=H0qzCY(V3Q*i7N`r z|B3n$WqBK$qV5Kt0YC=lx7(EHepF5LE>^kphqEET6~Jt+35WXn{#7@YXP~%O`( Hu6^nN#T5voqDYHrz#$CUn zRVw_+t>rv5oi8aTZ>822YHn0!U28Y`_U| zy@U{zghkefXTd;9G?e;km|YC0`%K?u%-V{60@#09t`L*|eRwjtLQ1=wSoN;{bB~eQ z^uyECa{M=DMj#0VcR^$A{k=G%l$8Tg^G>QuUwfgfhs<%H-4xLzzgn-Jl5Q}=_{E0D zz*<~iU%Dqc=%)*dlAT$Bp5HCKll4F|2C#eWM+s56d{!DN!3ZB?H-vhnD~gH{3c*!Z z3()=Ks;)^${DW+P=3q!()B4(TxT4oy3MD8v71x?= z)UmQA$?S&JiUxbg0{F|{bZxPX5T(x!E~(8PO6{TUUhCE(op~pPB(?NfNN@o4%t>z5 zuc=PQw8(gTAx+%VsfC3FB5IxP7I&1j2{38Tz*DgK3dC~{k}YCq(lO@8(Z|yo?rwE` z<337uJZ&!8zus{&?2y93H#FcNgOWQc`;xRO{UkE0eVjH~z2uXGr@HBdEK(R-@qla(Fd(tg1?71rN?9!mHl>}oF zyAw_Epto@dRcvvn0bkqC9Rh4V06?cXo}Rqe`F&Zen1HINYl(FTO@;2KZy>cRMXYQf z&BrwDSV^TaW0EJlGm=^VW?4Ifw?B@unG>>$)t()bA_QYKG+LtKb+0|YbJiIp^VgH( zo%G7Fj_P1Gz(;r7iD<>6CuZ3}%0ERiI!^mzd6b5<9uwrJ@E+SgjREdU4A^t8uJS%_ zl&3WRq;#$0hpV=M_9&3Oj4JW-+#-m|!`id=9m)x8$|LCOadwq7j>*5E7d23_0V`0Y zsLBlALcql_CbJXCI#;@4)A1uuhBN7p1#*M`vyncxuDWh5m@aLs_t$Ow(k1RDk?yfS zB-vCHdlTNw(!I^c;mF^H8DPWF8D+2Jy0%7R@PTZ7O}1sbRnb~xKiyOj0p)WJ?Mnj_ zYo%0PLpM(^YD^ ~RzIv@ybPm8FYDSnL*k3e?Kwl2CX(x|2xus^`Ls(~2!UGX zN8bCio}-8%Yrwa^PQ3)*;QP~n=*4zES&7iF_s76iXd8{I%||7>@?%xjYeHLOigP}L z^*wi&*DAm00xw 8 z!y*VQ3%hhlcXxM7OG<;JbO}f=AgzEBu7rdLNViLOiXbT 0lLy{!gEf!5QEZmfiRG}beiRGT!rQhW7@3guS>b&f*v1Q zRbNa+p!M#1ok_gfaV<=E>DIRH%e%y4`7*g5?`sopl(4d*cat+LtO6_Ll)=XF?rF=z zyAv8HJrD&3x}cabrdxFqtOeRcEx1)Bd^lj^$)uRiCer0eUW3gYwG)d;oJ)jU)A2y( zuu0RqQS+JO*(A8{PnW$msBB1-nOj2_Z&bG!Ajh|bd)*S{Gtdz`6*$WA{gB|&y8 X1-}jKN=k~?Ioi8Ld>D9a9Q2XZCK6VgH zY=3$^)@JQ*>k6!)g>CoT=?Kp6=K)|i^;1=SyGhN)Wys-9MxL`)7gd^40(w(9s?D^T z90R}{KU0>jv4hsBm=w07Zv|(zI}UD_U gzy$-^}j=&o}hJ99{N`0oUfnIJZf4W zJ-q ~NjO^C? zrFp)#oS!%5{LYI*azAiR8Ge7M+@>IYtIoC*^78u^DJLf v1W8EXco>?(z1bK*YbZM!k)xl@G;}N zJ2ishvex=&5EGf5EwdFXCe0zow2hpIY2kg~yZMTU_q4BW;hHowf1_&iz*MabB6)72 zOA6u4P2rj}$Vryn=;(v=aeb;lYx6VKa$TmVXME&(?AW!7weH%f)D<0DJm6P%BS(L0 zw~O*gmX}#I$+s~ujg;Tpzy>u^UUxMX;rBBJ`JLNUimj7&lh););8T`vQgRIv@{f)7 zp-pX~o%tWmosI@|H}#S%&{>onp5Hh0G>eBk(?00P(~>{(W3IllS)mYIbE2n3BdXte z5Ucvp2;J|C2)Tm5X)-6XfZxvktx)0>Hb) HiS_qqIyJMo&?L^^0 z)nId-fS#xU^f)hPlW#$}j@uP`U1UqJX|417wX=y4eZ*;v+J+X2^Z ZgqMm_ z!Os1@2bHh@-@i_7{l*55=xT8Sk4gu#om{I+29erZEG(OeEkA!l7WbS(;^p1nPx*EN zV$M-j%6U=|+ZtYMpnJz=xGCL5N8pH*AdMZiE|9JPon# zDHU?Z+zs_<<#q7(el-8C&YJG|f!mG8R_b!jQ~>oTZ#7;tu?7;770l2{Opb{5R5z>S zuLGe^Elnr9`*}-^y@4Fb5yz};JL(Z;yM(Q^kBJCCNl~&fvXOGs1R+yBoDQyQw4zTr zWzfl8T9SxZ+8|Xm``4*7f>qc;cg=U*oT WlAoO7fy_9q!YWwF?iE}~WJb`wD7iIGji@`pUphF{S7G(=aDgjwa6y=r?- zWeA!FEPDGR57^W`)^igWWg`g}x*6@*fOM~YOzuJ?xRN?}z7gIYgDd7y23B6h!nv!H zoTP#&C;D!)ou4rtPHi{)p9V@aK`u_0sg9*7-fd6xNlx~`k7(yf0p~rY7Z;~q7kjax z0I5dEcQjLP(eI3}IWM6n-)8R}&bv1m3ymL_r`< wnhrcd*>5z=$T0M)Vf#$l7ZiDm|sX&LM0)AXBSPxxsf}irG0vp{@ 44=Hz-r6+o9w`0$xBCWnf}X`=Nf Z`q&7rN0Kv zjM3yjw2gevw;s;GH%w0BQO+flCC1>Ie3EzSi$V|xY Ib%79SxL1;0@PxUt$PLl4P$H4Ld1jMq-Ccg~R?6Ix59Iym-fm zS5!8|Tk(O^ob4=Gw<4YKMzj)#IyqRL-{GE!vK9PhBdKR3T#;uW-|jDTXVqFv_fd>| zRilgdf^Q$0Ywh(6mS<6A*4>cCKtIW5a!BZ!k!z)aD?JO)*&gUj3Un?iVfP--OcUTx z=#a=#FC?yI9#-D4Ac!6_7B?_#^|U^h>+T57B*93rmai L3<( zKfJR!bao>TR%i=jem*!cf~t|)7w5I|yeU JWtr?N(v8C-y2E4NN^>)N!cw}+>h!J@Md&D@p$lEPgC-4Sh8DE z@=$g1P-1d#Rdn!sP7*SbZCDu3r1@h=$hkcdot>K@W65WAjW | zFPSP&eoJ9z-pmn}wl&4PW# I!=Bp-^d dbu^A%C{<$DR|ew-W@*T zo+Kl~QM<<2VoklSfEOyya{t>{DxpX5@(b c-??Ro`(9Or5XI5QQ@oOkc&pd?o zu(zo1T-VGuSxo#~*PqMvv^1L(!gO$M;#QEm2X@8#sCpZ<(;|5MoJkO$L*9CGm=Ekc zNK_&BDWozq1m!6I01wG|?XG<=R_UWP4Wgm`iR;KoT+HGQmY?jEf-7F-dd|<~zhPke zU{y^+?!bp8fu^jlK?}%?N)Fd94=4ZVbeIU98tsx^O+Qlh-~(d%Aaa81k`mVmqEi zNwf_2!@wHgjt}P@UEjEVnW=g 6>NDko mvE343r^+k7}h|Y2=R(~$@xE8f!Bn|tMZ{cOtVV3SjnYig=-BUCWsY$yxHt8FH z+xbk@%JsNk;y+b8-gZuI3)VB!&NCzViO#{tF}ezxJ61fPg)V|4z8(w zV^)Px=-k-n=+=W;;q=uO2tJwjoq9_On5nUr@gi;2L$BmZrbK# kU_B3kXdFO2#%8NqBRu_%oI!=X_od{n&7&YO@eXQ#D{8}eZaEue zNIXjO$hoDs3cEEZ!P3xJFf>pNsA3i5cI%#j+?#&!i%IE+FGEoC81|zWJ(x?#{PX&( zQn1FYKKNS_(GIE$J;-CM>hoLP*LiL#|GBNc05Y&nbx0xfd@xI43o_n7Vu*PdAf|*G zC4PNCb!U^Y=Wbl=UTEl>PKxJb+n+O|*49Nuv+}2Kn{ROjVw ?8U+{k9cQv+7f`?dGgpmSRA%fo;o+D85rfrI3l19GUZ;AF}Q)cr%+Veh(q zt !TyPMhzCr-$nDo1L{NX8e2Y)SWc?U`9}3&cjo(kvd4co{!6gPBAyr^@HaE zSg#&Wgk)kY)jg~5Ev$4A4~6nF*O%YPo>I?%k4>vnW%udIX<#>x1x|PD8ET}DwFVN8 z KZm70(JD~92bu}CYO88m*nAUQ z`Vn>h*wu`OSF0KV%~tET9S@v;CtSh0Idwk${vB_X8jXp5uVv-zVt9fJkMXK3X-{-? zX=COC-t+;`t7nXR0|CZ`q0f`IFjl)*3k&T5LwJC4Q97%c-uXwiJN}Cdw`CQTgtknj zjdN1EMmPJ;UP22`b5gwoHLGb~MZKf$b~zWxO`#Ni(P118;d;8cVX|vsP~utMUDO+a zEHZXn@G)nz7^=b~5~`Nm! zERu3;Nz$r>= zBcTs{N54h&&OKV?Lh9pCxo@ht+mmlotp}glbi64*j %FH+qw+P}Z`e_Ye?} zXy=L&;1l(Z0-_Q)y>VA1z`XJ f~=2TS>SkPlaR1yuQyQfQ&@Ovi$@2pO;xitSc})>1xXA+wO%#8Fp@< zq% G|e7 zql~j*9w*8ej78<+o3(ATQ>Ov3uiM~w5u~c+ u!da?{t(j_kZt%10o%kE-3? zw5qu!tGJE0jN~j$PPQR`Pq~oz_L32w*NBLvQur(svd^c{tYyFS{^X=4bpYA7j)5{X zf5`{?h}A2=4{Ce<+2YR4&$92|ct@4IE0L@2RjKki9BOX3T^){z x7dL=bNR%^1g`joqMw}SO;qU&zH_m z-@}?eSVKY#yH+PVbPNVrn2VN`wKpw3jDD{_Bi+yotxhQAQ`z7 QVEgPLZBrro!BM#(Mj>XC?WyOxsVXPy zG;Q1BK|ulA$e5!Y2V59+mi~HNOItu5&ik-)ePoAZKIP4F $%_S>o^60MxA_Pd9W;=+zonO3c+tnm O#ba)DT1 z(g@^|3CGK}YuE4uD(|xzpx|JX#7fIl3MJ}WJRcj?j(EYmgxBHfZ)X`_7OLCIrD)6a zIu4>`X=rEL?rUB -u)lprff7eAa;NaXpl?w?^# z c2J%$ZnoO77Ay+x(*xySg%zOjF+kvn?&xYjg< z@;M-J0=FremB9dt|TzCJLz8*N9;BhIMea5KFLFydfji5k@k7i*FoS^|C FSuDHqQwE_!8XDn)`u{GRubayxrz3XzHqn*MG(eL>|( z7)JE#CRj+DL1PGwFyvJT&6kX%47pwVlXa0gmReI*$r&oVvyP}*AxfG_eRXBFO AOeFTg zvezW41nm@8k%jKR |LFAL(PoxG~hp!aFoV zv^fVOkClSHT92K3MX`p)+av7UB3~iCBe6KkZ 2xEdy9H|`V zS*mYS`E}JT1~R>_(<}Js+ws|?=Y;`eQC`sUn%JXAesJFM!+IP!<^CsQIN3+CpyT$$ zb`n$jM@$&b)e2Cf529v^`mv3uGViI#_O{*0xoq_YmDHY@F`*e1lgMS@n((!e=(OqG z58*{Nco<;KMiX~l= %5$bqczqOtKyvh8X3@e9v$hL(E`iyiVP^0phl|Hx-! z>pk(!uEZ(8j^1TW^*tu9#oia&^@lPfsA5|<4eeRH8wbL>8icU5#5+0(jpJC;H7`9+ zPcT=*s0f^N_{IH@wC3&f&dHpTy2;;0H$Y@y*)9<;)M|&<83Rg TPbBLL8rf}H4n@uO{((>F%v(Vki8dZev}mNl9Xp;13E)Q;RT+CE z?;yQ#DzCEUr5w7tFJ94ytOqWsjDSrRX i5@m6Og&j2pj$7Jc`h&>slw{N# zMQTf1AEV@f?z 1P9 zmTYd=`LfhK82!Fc&>O~;YN!zxe_!l_`_%9zHCrJvyFaWhr`)S$ 2uwmzc4|nGAO_H$I&eOE=_ug{|F+0xp^K^Hr zop#c~aM5n~e{lDb{g{=vxD^fwEv}03ikXzCpDjDCVMQ+6*^$oh@+-J8`HU~!V=}m= z6Nu%L((E9+nI2e({7Nw5&ZedoAHR>RawUIXudtWc=w}vX4K4q*vwDvf9v&yHT&$eE zx94~fan}!(f=n+07tr4rRx8^G?ZgMgDu+DKRkUi-7h5#>_IC2(E5_GANSj;hEQG6_ zJqp=&&gDf1EfBi8mR2^QZXiVT{8hxOm_X2{t=KlL=Y^ZE%O#NBp8+&hSC+IoAK~At zd`0y1OQh=ez8fM%Cm-ogwa$$z>M-V1*`BgbUgWKH(-LAm{=V%K^pzolSvZ&%WlSdk zprBjv>gl)+X B?FcVV*g6^|)V$Em)(u;+S&!%Cr*n}kWI9OL zU=&1BJ&S#T6QE_OQ 603!ArI?acE066nv0LR7|)}iW?gGXoyQZ?d(F#B#sVBC^tVP*%;0ZZEhgPg!91@! zcQ`TNwEZANb*CXeYtWw}NQF7z^cJK(yn&hqIVCb(q8w#pvtvKbNkmTE`sU;Jx&YDe z^eDf#O(e4wxW|bvc&Q_9zb#@amc`3yoQt-^325JKIGZ(n)_j4oVs2RO?BipkPR-er zq6LMHLo$jX^`;kJ_rPiRqimFzjt)hu1|P(WTzXG^>uca|SuH-8&)w$aXg`2ZM17n! zOC;G#B4JkHWj|v}vs#=V^#NxTeSL6Y+PA!95j^D3ZbkrERuOH_-t07}`Eb{~%Qr4V z>o_$?$L_cRNHp3smZBrhB|kMhof@I0OvMr)uf kMl)+tKv5 z6n+wwx~fL8yKw!saBHonOgSE;PLHmw(kDEDJ>}i1s9JF1ljSeY*7r!H4_!f8jYcGm zhnfuwO((4z$keBpBF z!6rk-LrJzMbQ6@u>Ro3n-5N6ZwRblBpKrQkj@LOYp*c=(C~Ub0GG($sHe`s7SXk>` z0GN$~d{@X72`E6#oVF(0$E|rh+Ul|QGQ&0PKZr`sxO@Ut5wVeeq*Y_ 1IK6G+ z;xAL1@q}#;@SZjw=MLd#*AZX3#%E6)ce6^%j!}y2x4CY36(mGZo73es65Wt(d?e{v zC~|@=(Djb?OHwi((fklt4RX*DpBC4(LLNbHxDqY D+DPTDks_Wi1I zzyY`XgeAO@@OOEvHl>PQTDEVFU!hVTC_3;Z-Icp3?}lf^W2RI=@zD_i1Ls=QJIy&8 z%~Eui_T$C2zIyJ3S`cSCDpE-N28eIB$>L4q>SE0}c~7DRr;@oUGC7V Fs0HyT6 zXr)iNB|N@0SqUq5V?s0`nLZ|#<;U2iPZHZ6XcuJTykQY;*b>`qN&4V>wAPTx^-71- z`VpzeXmBZ7<|r{}lxYp1E?S{!TK6?A ?LV9+UyQ zdGdr+HXhXMThh_Ki0KC)?mOk46b8fxR2pG@d1^nSwWY(vc&3mH9*HCW9K9Wtcj&XY zhB~0c!jIy2H}mV7B3G+tf?U%M5UKpVe88jK!fU?QERDEIs&NhzM=c_eVFrQ=5}!_P z%lDQr8-~%&STQvgghEi-Ka~J|2P`R$sI{GLg$liJtIFsvOnt7ly5+?IJrF~6PmV@b zto7=8J~cuh4%pFn Z zn7nS639D{MucYLMw%x5{Z d4SDviV{w^C8 z*DMp2DeB>)oBTmdI7|~$H}wf#)6O<&k+Y{HdTs1b79jh#PL%0(leJC&`QI|sm&Zx1 zu+CFSDtOIhsxiO-;Q=}_ d*7q7?X0c&=( *|*2LRsZKP9X%4ogR>yJR~&NLMWtcNOEXhTZsCRmxkjLh#`Tzw0_>lfhlU4ku>dU zu3qY5oLt;D2Y`Npl;eKAWN2ypM^r_|NbIfod8O*@`t`x^tsXa$q3vGEVa2LtS(b?5 zNqS3tAVW+L{29RKvbkLygKC7C<+~5gU3DkkWTrifM3Wp&AO$EJ6D Mt*Mg1r^Pw`jN zEI8aeFncgOk*`5YjZ_&`Xtj6j7J!>}QD&p$*D1<&ze1!eHsr=_Xy`ok5|EBZ!`Px) zn~CE+ygXi!JB=CpA=lsP`hYAh8H7pUv3dF;oV;|xh#2+$=b((ppsE$RaAy6JZs}NX zf1>iKD?=><6QloQcMG1@h!_Ty9kZZA{~`v%<}9oUVAG-H0B#WjG+7wf-gTRzjQqAR zk7v=~ln;b%RgwWnTq%tb{< Kf;ua6hj-;fJ4L)IaxiMRXWQ<<$zDY?)OL5b6L)17oOxtx>VpzBD zi=6$rs(H7n(zdKEnNmiq6bCtH+GITDBYrc!AOxVjMpS7?vs%v`MhMLADX(EiKF zSx_}3qQOUL#B1AD&PXfZ@ne%XBc)N}276nPMukl4Zut!7kj(|=kq5K=qgTF*oMs&=4+O&ERK zND`GI*ijMNPg8v6z+p~Zx?9TVYh`asP{5%(g#1OUSxGjd|772RmRdL+^*3IO=$^&^ zpjKRwxO9fVM7c`iKnI~8XTEw9s`ke>ZdrvleBwmHtoX$Jwe4I$>e~cs&_E_zE0Vzg zRLi&H%1-j|C&qbg_>OZgI)!6bzTTfLRXfbT-x%cQFJB72?}WUrEs%rnwhsdx`rS&x zg2ZS^nn#?}DDmD^^3SE5qI~ZeHzamFMe^E3N`9@g5J8>}YcnT9Rmu)0KXGe3mK5^$ zQ{+`-G~;pV3t5#}W+V%yZ;gh0AYM!N53j@o=}Gc?zU$wmky3CeID(|Cq>sER;MAP> zA|jGl&EI0!D=Py3q+QrK%!%XM hE#hr5`Lr zg37*U;98O=$%F+F+ Sjj}aA_QFE=)fdr6Yy|7ThY2eBeBOLf|Heg1z&_xDUF# _5BX=T`aUOb1v>Hii== z&R^T`M@+yUR1x@L5&d?IGCa8b0ptI)|NrC~3A3EQ2*v$h9y{B_hz0!!f ^}ya*8s6x$0) z`}fg!(+dd1fWD7`OBD%%OZ|y1^JAaEhJt_>nDC_z#=!Oc3B1Y+jur)@hy$)*!8hHF z7eFESFL;cZLR~|Ve!J5gV2tTNW)d91zY_1ym=S~yO_E5%Uc!JwxIcLOGfsa+TqG>A z59o#gZ5Ri#K${s!^ P0v3(dyDWcoL-6NFg>fO>Oc;z1u1V=_W<-V(a} zqRb${B*OT$ff0T!ql5R6aD)4BV*c9NFgRoy6S}5|i4Wbqj!6%XpUVyW7aM<=j09#b z2K?r_BBsy}*k1|pGJJkvft4{GfN%@>>B2exISs;P`NJCSV6uRqqOO>@&||9~OLF`x zBA!}f7F_NWF;_Sn_&)lFs4F4HJq=G*&Tg1HfWHMI^trsR?~h3UfUnd!49;jMm-wHK z{!xVy -Z2+h`A5p^gNrGI~Z4S z4lyecH5h?ofr1qR{4Wj^0dm2{3c)}KykzEb6YKb=ct6+@BUU8%e+Fm-3@n7@j41I4 z>zyiMIbUs5q*aleU`x7K {Yk}ZB6M&`k&*J_M zr lvxP`FF>h( zmGes;O3EM&Y YtE)BTyR_G|>l6mTd {V((}Uyu;i-$<9rA|m4?5`>HfZ{@zl!S(ssULXW;Jq3OGk+6QR0Kp5; z7CMpuV*P} 36ua~C zm~csU1p~q3Ndvaz)p~~j8T4S2APOVmYI_7b4Dc(Ac4x5lt`>EKlRj-=KL%eSBCfuk zVq5-!{~Rig`qko%5LQEoV?c35VRKm=e^?qnP6rkeFARQRLv;m36O0Qlh*mh)uQEn} zX71ypUhN7Hpz9BDh_23B5TNWQI75E`U8LjqU0ol73b_y`^s0>zAe C;C9LpT(UnX)j5w_LVg*p z2p&7%apnHNqX~>hd09|D-NgIDhC* dZ@bI7%3V4ja_B(=B@)n*g5K3VIr>)n*WBC8%48&Y S#URk{TH<{L|2|V7;6@&J2AELqIJoqlAh`6OB^3dj3dVbJIS%rP z`^z|&;RuJoUr{f3c~bn O~VTyZ0a8n?7aj5`AE**~`_Z!Ab2SJZN z!^zp_;p7#M!4A+M6(W>hp&_||R}1elSV`cUWebn#2gZ|Wbll%3A>l806PVC;AU*+< z;p~^Ae~+tuj^_r3Mv~# sO(Xk-@q2E) Ft z9L|BicQp$kK-b0ae`Eo~6|NFK%hf%SC5mqWE7rqrxSF640lVyl?{js$f?&87i64HI zAp^#eej7%D~LVcSocX1njH?-xraa5LbKk_~r;q#MNLIzS7lfivVR0 &NM;0E82=X? CMG?Y}B|q8x@0B>f+M@~Ah;Rh{qo2@^S-|;A!bN=OcrRSR zuQ0fR@HX~mtBx@GjatG%Y-rd7At7|L_c!owZwaF>C!vuOaJBwRTs%qW4uHBF0CAz* zi-b%GJc0bspV<(>U4DsB0f@MLIg|W-$i?pv!pEOtWJG_M5hEC3oD*UL|3>3Gva1 zjsTbU|8Rcbp2v5Ft>Y4r0HC| ^3>kOKiAX_SlJp z;e>w>gJ>yeIEh?=P+c+jlo~O|#S?`WDCkFJA_6F<7!d=sj1dREL=ga@6u=|P55^}> zly_;|X=S3zPln8cfX;|QatT9HCAyCRB~T$k%vgi#h@4^CdPEBF0jv`d9<=B#5#!|n z3vnPr@ai`wD!iPD`Zy6G4rITnhL>z>or&PHd5?IwErk5wN>y-TB6uJKsQ449VgCD8 zSQODVI=ox)jEA%RiHs2VI)UgT2J}-AoYS*(xHdFOn12}PAkaH9h;Cv*D?H(&<=rA8 zrb~2}D*=JP#4RD({&~29n*#<{4g1GI;Bo<=w?rj~1c<;D9w$P^{?kDWfg!g>#Ej^5 z5my_BL}FJHCIVD;op|>TAXYFj)z5qYAM}wC2mL5Im-=)v5*J-90|<_1{KQy)s~RRl zOmH>xArR@*h+%&aZEZljf3=ZBP%YXK?;%c7@GF0qwg++AZ+ZB`e1nLE5$YqHOdCtA z{s+YKWMZwK>-2}c%Y%QN>%T67J*_03MJx*bhd=B~3$f?bQt|`zmRRRX0fK3c6Oa7H zT$i)S%w=NiEApV_#YE;Xs$F8pRWaq4R5#CvyMDv)(lrhM5^IF2h;>U5l9c^{ha(k9 zz*WgZ_9Xr=4>pqStLKDE$$2nwlB Ctl0@+8A`l?7coMa%LvRGBGleAKDhLro3)v*$KZDs9wp2ng!}6c8vJlr_ zV`bcrBzA)E2@Cv_=$kMo4yhv EnS7_zRp&{+ zSY4b@V!x#@zE#^S34a?ww%eyWC@$%esW%?E39MM8zyJRE+O?za65s7EymP-s7RYfY zMm}>?G4IZ`)mEybs0%YhwX0ZTHChPaAbkNzi<`XrW~}}t2HU5nTNAo1z`MtoJ-18t zA*ddVEplg_Uww6VHztAzGgVm*u?}uXLc|XsO_0e7S~?)}>rZtJhgL^-tNCmB_HVH* z9N0)bJ}aZ0fq(hPS%eZ4#HjBi5 $lt4GSw}+nyiV{tFDqr9T zB>2IMbME}uP<4VgRQwsoTeYk$K4?vMjS;^?MOoil-F5x5c5|}_8{P&qpADssnM5Xr zL`2`K4vu-{akNQ0-Quf0bryMYA1u2pJm*hW_ le9elcd^TPuZ2u%QjD_79a W^Z0&gLx%uiqN=_(;neSxl4uz~H7jk3`1)J&89&JzDwo)uT^4wHuaI zWPDAK=5N1jj%`6h57BtLGPZJL3c3&C6wnRfz{Jek(DuZk*YK)l_7N@_qn0M@W88+g zs6_BYCevqgp!L?Jhsiq0*TV`jiWwQpPsgSdXF~SD-IPZ?D&hFC@*3N>~7l;Qu!7 zFnWmCF8%g$XSgd#N4m4&b?xJ&{ae_CwB{#4rY4_)xV~ewz21~Uk8WMfy7O>GJQtO0 zCLBp5_3`)%56zTX9u)cEfD$oWi ;mN&_ftB}QlZRu3T?5HrrYc+%&^f`HiWJJnK8zgIFbMQ! z(yZ$n`B-^lJ$08C-@&;(&{FuL$~f1;a@l1;?8IIuuo@CY-SjGNdb)VS^U(Ar`<5J{ zYn@Mu2@F4Ls}6tzRF|yYF$g>uKD?tS{t fTx{ D?gmNd~>5HoBv+9J(I<^No^5BV)&s0qQA* zJt|M!kDq6s3gc0d#nTOlaq~z?JrEV8Gd++eLc<(fq#6h)!&4IL9) %M&tcZm_ zt2y_KrGx>$~(rUO(Dftti( z`C)Ibo}2eGZBoL9MIUF7WUYP^kqJG_DYG0ApZ(Is_tCo!vSEw29=nETCUsJgv{}VJ z!`}Ebe9D(=MobBdCOemS@qlf-i>FB$KqpulUin7o=uvS{mgzR0%#^(g@-FKZq$=X9 zIH$yut+;CXg}31B?dESNTZRYMU>7{3B$QC |nwvSFVyZ9NYBNz_xcjwhXhclT+e zc%-}pcR6}wDwgYe5f2xPK6I2Aji>J?2DqA|SJd?`WN)O26n$BSb+VCue}`+n%gyF8 zyE`s;er_l+`_bh_`bAEu8LY6G9m80l5AsY_{jIlth_-P1UVt#2ql0_nPU-S?A7{WB z`ddgQ`?<1!)|orC1A(R8#bl;H?vP^R;LY`vyusV+XA4!Ei~+Nmo;eYj#UW4Xs-2-F z#fR8btUXyq+tkF_j%8qu+R9N5tY;kKGyOFs{wcdcrx~VD$&1bj`U0|Q15-&tbVK27 zLPZw#((UiwL#NOAClXM%m(TVYX4m0g(t8O(`m}tMYV`f&RF7w3@~gs08j-aL_WgO= zUF74a>GSucCUUW}Vxsj{NysQXUR-vqVHQ+n`L kacLvQ W(6+A0jRy?h zJEmoV7-; hALiuK8-j^~>>aY<+Wn{*sXK3CNJ}QrGl0%-E^kjSDeexXxL$5PAJ*(V8r7?&_ zVn5-%UgOQcUPZ>r;Fs5fQ47w-2sIAvr3#Vd>|YyozUIa+ehm2hp4)yFcw^0}&qebZ zcTcNtn5M*i#RjOXs~#F2O2BJ}yk*Zww#rzUY#~|WgEM>9m6HMbm9OC^FR-Hxat6_` z&nkSzfq8CJn}l*>lS>c#t`&f82`XDbbQ~I+;}U=>?_zEyW=Bstn fea zx3DEZ(F_RZKaHK;u$?$`2KyB@!2cW8hzUj4E2nc?8AhhhD?-a-!g(pgMY#kt^f?O# z*}Kmqppc1e>Y}Xk*;8~SyHnjLl 3CYn#9;1EogIEwO z5k1ml-5vfi^1!VQQ$6O%hKCTpz!%%t@-5TnYhfiqe6H(Z4J@@fkF{y6xH@o-@bxb& zbcjg%W;1I634mJlIBrIY$SpcmA2iJIAQfS1L^_(Hg>{ z8%M%EB#A@RaS63Ib$VIQh=y4uWl|df?vZ2kqB>>c9nnJsf@9X%9gC>sWvXi14r9{z zEb|lkHQl)$M2Bnj5u@-23l5ZTJ=C|vd#GROhMGsx@sUC(TU+FCRISj$GwKb5{ rO<_wKQ9xquxL ebAvc$Awvkx~2w8-nsw4hLfUz zA}-P(fN{5w>`PoH-Qp`ryVPm#3a&2#wQ*y5>Kp^?1MYqy?>|Mej2gdfb0xdhNRHMv z(v764*m>;zxHSLe3!K=qZb1%+>CDSLEtwM%k1tOK*wyiyxt%`UTJ_(MAVei#L}!&$ zSvL}HO Rgqgo;BfF0t^VMJ!+JvPY1?Au2)U1OiSqLuF=rgUi9UgdU_AkFo5 zf-3=OTIoojwii`;YV08DbppR`8lSV57F}&uclfG1vT$$y6LX o24iGQTo$YuZHA+0F7R!bn|dD5t?@?hu0E8$w%@) zsH{w5aB|ot^~yAegI|G88uD3AzNMenSu7(Ya 5THE2B@X%0^WWDKAQR9ns&)r`QW9w`bqeAIw*) zG;f_TBEfL3$a-I$@{OV7bEvKJY9}k^vP&mhxZ@(@0(r@DMv8L59;zjzRI!%>$w~J! z!|f%eZg$wc>ohR}%qg4S9=+v!*zkcWI)0+}RDk($Mqkl)W~5l!Kmg8lD!?l-(b-w0 z(8<$Y)NN?YIv|Uwu>>Gr>!-%FH-i@Ta`(B7k;yZr=@qCK!|T)158v6POekIZu?gUB zd%#(!z9n6scWRYLnUq fT?;aK%v>X%qn#O} zh_SoJG_9pUZ9Mvk!na6x;z_3G37|%))WJ2OetfR$0cCh<`?XLU=dRdgu#f9-w7u@# zZLyfH0WKw6?pxh*debvROI=6AC1b-!D0o!icXd=NBqhm9dT8E;32T+KR2TRq-bYnX zyrBGWn );axv`v3TDKKB3L*UZy!9@r8s8vKzI|5 p5tg5@_b$m-PYovf4N)!p$MWR1jp9}pp#h+6DITd_l4?NXH9!a6K$ALS0J}D-O zGXZEyqcb3{@p7e92bkC@8I-=jzCyXG6aQmrBeb9B47YyviYaz`A{VKaUw4O+*17C5 zDZ44VRnXG!e10BwG|N(zF%nL~u>MuPcazi5^-Za!{=SiRK6lh?Jt4lX$oW%S }&XyC14)Eule&U|1@!)%EkUVzUB?roRerdRiEG~hec)FRtkDPWo4QzBW^Ab zneBSghYl@mCQjm0emtO5YK90mSJ}YZ`ynyy{DmIyN*_id=9>m&fQ^!Nr-RLvwqt`0 z4{$RgM;4M2B63`n*Sg9GG)#~Z0D}Mg2=OdcZA)1{?|=T=eG`4xo-uR$b)6jzfDc oHu7arU)}+#3Y$|aW`_N2U$JKm&4Lt zkG|L93~|GB`(*KQvqF3t+keN^IpTjfC&rd4Lz$P`xoV6qICex1Htvkfk@S4YBuTn| zWW*ZveK+GN#rD{!0n!G`uH2c}r564|W?-2VpgRe%g)vFE9}8uK@u24aa#bKq23RL6 zja_s=Q{`h<7Kl-pxHD;)&r&c;JhTXfgv_cZ5XuuW9g0*)LAJ2U9hTQraEaR%DJpCv z5{lbi5G=N40=3kb3D}l#i`FQf^eh^|TH8YJ)wUt}-YR9x@x8)Y5mfxO!0!&b9fp7u z)uUowhoDcvs^hM>e5Nk|63Wzl2N*0`^9RkI40|f)_eVXH8kq|uc;PB&ClKb>jm-G> zl7-B!?3xScX9=EK&mqpPSjjxL$jA%mmvPUnEaB^(o8ga@z5$BgKeLqCY+dNKvt8sW zXQCG`pd(T_=gy>-e_NLXIhFf|E2SzxxyH9&R-#%F8ktcp3dQL7^&A~v0jB$W#XW>P zt^%c9*)QmR9&wRiYqjsF)4TN9TF?i8%B 5iyCWl>pgI~SBemmeHjDAqQeL=8~R~q~;xGB;M9pQ)p zy2 P{f^YR0gguywjAB@{gb6`x6@OqN+yEg&aWRnsAgp*WO$8`GWCYQ4 zBM}o1Jy1!0^q7+g{C+l=VzuCGJb^TcAR}aCA{u0*Qh7{1#qb0X#RSK{Tk3K|K}95g zi3Fn=SXG6~j5z`iv+_Wr85zh40Tsap^AZ32nS5YxvoYr3TN;tXLTVC<-t~S0{xA zb25m2C}H?Y%t% !u#i5P;A~pICycKsWMD5aHq9eiHp)Bn zWmiaVB5^^TOkaDk>0^vWLWg&e=?FLU&GE&b6TL0_{;%cq;8Z&eYXVN}11hg}RyDz_ zQdP|mE+7;+|7n3$ZrN*1xI9;&KypDSAzL_ThEik1 =Hk>=m%LWzyf3HIFjMrNAD{|=P}YAL zGSLVdHSIP4g#=)ms%w3~g&2DCK<(2p*(kEpSO99H$rWtsKG_=Ld_iV~ZIQHFit+U_ zn!AESc@5RP=P6!<6;m9MYPVI3@ZsFheHEA0 &)AFd;7?1_XeE3-ypmM zWEtV)?YjLqMuwz&Y;F5?=Nw$T-@4G)*`bRz{N8-FKlv_tRkDwZySpg=x^8RO!FL-@ zgK!t0*!nnoMAkpp)2Sb}5?ydS?BKLJ*r?bT>gB%N-w%b$Q*}fMov}hf*vQx#xVW=? z*nDE?#0H2llTDy0!c_{uFZyf66DQVNt` ckEFh_W7{CpBVITH XO 9L<&?%5wa8*PL 2=QPtoyZ55EOvu z>e iVjMIS!ppFZh#7j (hEs$K%UUC!-xZwcra)0Co&Uf&g!6C+>x%Tq%o`t6 zLxyZB7pXh9BoTGahE7sza~~Pc3PZ3M;vC=8sEVP@#duI;;-jXkr<(QBi=WH(_*^Ky z@Y=hEzklTE#+55Z|Nem>oha&HYL^CLfQ^) Um3<(GIavQ5SBvxd}T&F)(3#*zIk{uqo6M}D9tC{+JNf?k;bSD{NdPygK!E` ztMnfck+8!UNPCfiFud!3B) 2DA1=)bG} zHRrfp&BklK82EsYV~xT6FM*AkW1}TG9uTMfm}5f&pz*n7(eO*I$Owy55h8@!tZWgu zg^ak06GedFzg|GPT;_?89$#Je)!jCWC192wckyb_$uA4+lABl0`k{lN>tdWff0_Ja z+Ro9f&vV#0QA~-i5w*X)Fm907rCBL_Im}AYzr2&Br8!^Q3m8pxoOB67;^`EZd9N62 zmum?FP&t2HuXwnwY;e=KDXG6Q4fEBAY?M>e(2YkBmG!6Nw3d6_W^
T4^1Zn z+g8+`ifp$Vh2J|4!&AM<0}hl`Y5k<6*Y?t{JOl7iN@Tc8qb=nRn_7)*hu1S(X3Zzk zflIS32G`k$`Qs)o)<*NLXiGeAbeIn_@e=yD_6#QaeOhJwkfFh=*0vsDc-fGr#r$LH zL25Z!%`?xOi;e2tY#8BkL)o7?6kmOC#Inv%ef!4Ji}wFhQ_T_^Ev?|?e}zTT|5I3` z1EItdk$eZM7GJxmu1nj4lF=v`#S@14d)=RJVZ6&pb!(1evq*ql<6N418IKmJVoU zdv9T9hh|wSWY=G`90XW=m~Dq|PqpCTvj6DD0nVwR*=hOp{d&G-=vT42S5#}tPS`K) z($;wZ-D!FN3N0Sz{tsUfARPRtbG|7L-tz~7f6uES-6=21);5Qg*Wt S(LX%?gG^po8sjX6}aQj*o31NG}tYywhEfkCMAY?b;S1b?S8ah(9&|Ir~1}s z-R#%sOm|7CJt4^QAW@b7s4!3#5|}_oEVeR}K{J;EvMt(b(Eh0pq6jKOsyM-$ViK9* zPhp%BnS$FcH+M!LJqaQ(4Js3I1o`>L3DnPwGcXL|x`L<_SCJxvsC3o|CZTy#2vysT zaDt`{k$RHWq~Qp?anlLL)1V_HP+p6MXxC?dTCB%nYegx5<+@C`0Qw4hr}{|5BYv$51PCibj9{pA}` z)I&>2gfEn@@{EDkst6tyj7ueES(OyE02Xp;6WcrHWhR-J`PBY zph?~HHDK4x+|{Ei-3bwJ1>7eGPN;cM2`De?H`K3C6V62Tw p-BM zm0IdQPF*2XjvLu*5I-Uy(?p+`Gv%uVgAa9VmT{Gs_h^NkcWRB!N0z@CAF$H;o~jnd zM_}fPjl#Ox(hi>>a!^P8I{Iu`1zXJpPn$*S>0T&9Pfo=Xb07aH^kbnv7gpxeLg%K( zOh%Z0qb(U2J;Ai)q0YwVsg7&>Po)x@f7x}*Ze0LT?8XyXzqFF5+uD0Y0&=_$8N+rV zk;mVdeo=`bl@O!b_b!)EDhPDm(A@m^gXcmQeZz_SG0otOC1*XS3-rV9l+2y4N4^F| zZ>s R{5jMg}n3 z!P_viG6$yRp?zI@62)y7_C={thap)1=`8KrE3>jocp+DJz45tISK+M8|2r@&&FJK3 zt>+(+hr4qRIXG%+q)eG*C6~(`FKbzL%E2MZ)#Jk^(AD?D2Hozow>m4{w(jHEp4k^F zPjZU_*7!&=B|emj;=UM#B9w&b4i$hiCV<|k09TTWJl=S3VxkXTq5yxSus1%@i<}6Z zQl=tIF)@}AjL3=dXi5#~%ejv7c=VW&Ul&hvT2&sOUl&R6sHz0yo1$|2p4@Kj<65$+ z9)bvu4Y${F*F$l)KBNHjrl)f0OeG5DxQz*^A047#;$tqA&3?&@oFRynEDV^Ba@UJk zDGi=A?|z^XO}Lw`ik67tyIU{hEeaI1jm<-E;e3*6L?yJgpm$g)?1>~?RHJAtuPFw$ zqAndRY)zF|TwXJuIp0S)oBb4j8SAp=qA``aeRA79G^zOD?8=i4!X*=zN0nl^NO*Um ztJ$}-+$maW66RXO9ypO$b^r)sC