From 3a2abcd62b6271aa90455c0e8823c0d72de8b0a6 Mon Sep 17 00:00:00 2001 From: mhjensen Date: Tue, 29 May 2018 11:04:42 -0400 Subject: [PATCH] More updates --- .../How2ReadData/html/How2ReadData-bs.html | 704 +++++------------- .../html/How2ReadData-reveal.html | 597 +++++---------- .../html/How2ReadData-solarized.html | 658 +++++----------- doc/pub/How2ReadData/html/How2ReadData.html | 652 +++++----------- doc/pub/How2ReadData/ipynb/How2ReadData.ipynb | 616 ++++++--------- .../ipynb/ipynb-How2ReadData-src.tar.gz | Bin 113365 -> 113365 bytes .../How2ReadData/pdf/How2ReadData-minted.pdf | Bin 413932 -> 404754 bytes doc/src/How2ReadData/How2ReadData.do.txt | 434 +++++------ doc/src/How2ReadData/make.sh | 22 - 9 files changed, 1164 insertions(+), 2519 deletions(-) diff --git a/doc/pub/How2ReadData/html/How2ReadData-bs.html b/doc/pub/How2ReadData/html/How2ReadData-bs.html index 9b92fb382..a3bdb97d5 100644 --- a/doc/pub/How2ReadData/html/How2ReadData-bs.html +++ b/doc/pub/How2ReadData/html/How2ReadData-bs.html @@ -50,46 +50,14 @@ Automatically generated HTML file from DocOnce source None, '___sec5'), ('Non-Linear Least squares in R', 2, None, '___sec6'), - ('Predator-Prey model from ecology', 2, None, '___sec7'), - ('Case study from Hudson bay', 2, None, '___sec8'), - ('Hudson bay data', 2, None, '___sec9'), - ('Plotting the data', 2, None, '___sec10'), - ('Hares and lynx in Hudson bay from 1900 to 1920', - 2, + ('Examples', 2, None, '___sec7'), + ('Ecoli lab experiment', 3, None, '___sec8'), + ('Predator-Prey model from ecology', 3, None, '___sec9'), + ('Simulating financial transactions', 3, None, '___sec10'), + ('Particle in one dimension and velocity distribution', + 3, None, - '___sec11'), - ('Why now create a computer model for the hare and lynx ' - 'populations?', - 2, - None, - '___sec12'), - ('The traditional (top-down) approach', 2, None, '___sec13'), - ('Basic mathematics notation', 2, None, '___sec14'), - ('Basic dynamics of the population of hares', - 2, - None, - '___sec15'), - ('Basic dynamics of the population of lynx', 2, None, '___sec16'), - ('Evolution equations', 2, None, '___sec17'), - ('Adapt the model to the Hudson Bay case', 2, None, '___sec18'), - ('The program', 2, None, '___sec19'), - ('The plot', 2, None, '___sec20'), - ('Linear regression in Python', 2, None, '___sec21'), - ('Linear Least squares in R', 2, None, '___sec22'), - ('Example: ecoli lab experiment', 2, None, '___sec23'), - ('The program', 2, None, '___sec24'), - ('The output', 2, None, '___sec25'), - ('Parameter estimation', 2, None, '___sec26'), - ('A program relevant for the biological problem', - 2, - None, - '___sec27'), - ('Simulating financial transactions', 2, None, '___sec28'), - ('Simulation of Transactions', 3, None, '___sec29'), - ('Particle in one dimension an velocity distribution', - 2, - None, - '___sec30')]} + '___sec11')]} end of tocinfo --> @@ -134,30 +102,11 @@ MathJax.Hub.Config({
  • Installing R, C++, cython, Numba etc
  • Simple linear regression model using scikit-learn
  • Non-Linear Least squares in R
  • -
  • Predator-Prey model from ecology
  • -
  • Case study from Hudson bay
  • -
  • Hudson bay data
  • -
  • Plotting the data
  • -
  • Hares and lynx in Hudson bay from 1900 to 1920
  • -
  • Why now create a computer model for the hare and lynx populations?
  • -
  • The traditional (top-down) approach
  • -
  • Basic mathematics notation
  • -
  • Basic dynamics of the population of hares
  • -
  • Basic dynamics of the population of lynx
  • -
  • Evolution equations
  • -
  • Adapt the model to the Hudson Bay case
  • -
  • The program
  • -
  • The plot
  • -
  • Linear regression in Python
  • -
  • Linear Least squares in R
  • -
  • Example: ecoli lab experiment
  • -
  • The program
  • -
  • The output
  • -
  • Parameter estimation
  • -
  • A program relevant for the biological problem
  • -
  • Simulating financial transactions
  • -
  •    Simulation of Transactions
  • -
  • Particle in one dimension an velocity distribution
  • +
  • Examples
  • +
  •    Ecoli lab experiment
  • +
  •    Predator-Prey model from ecology
  • +
  •    Simulating financial transactions
  • +
  •    Particle in one dimension and velocity distribution
  • @@ -628,47 +577,39 @@ a linear \( x \)-dependence we study now a cubic polynomial and use the polynomi

    -

    import numpy as np
    -import matplotlib.pyplot as plt
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +import random
     from sklearn.linear_model import Ridge
     from sklearn.preprocessing import PolynomialFeatures
     from sklearn.pipeline import make_pipeline
    +from sklearn.linear_model import LinearRegression
     
    -def f(x):
    -    """ function to approximate by polynomial interpolation"""
    -    return x*x*x
    -
    -# generate points used to plot                                                  
    -x_plot = np.linspace(0, 10, 100)
    -
    -# generate points and keep a subset of them                                     
    -x = np.linspace(0, 10, 100)
    -rng = np.random.RandomState(0)
    -rng.shuffle(x)
    -x = np.sort(x[:20])
    -y = f(x)
    -# create matrix versions of these arrays                                        
    -X = x[:, np.newaxis]
    -X_plot = x_plot[:, np.newaxis]
    -
    -colors = ['teal', 'yellowgreen', 'gold']
    -lw = 2
    -plt.plot(x_plot, f(x_plot), color='cornflowerblue', linewidth=lw,
    -         label="ground truth")
    -plt.scatter(x, y, color='navy', s=30, marker='o', label="training points")
    -
    -for count, degree in enumerate([3, 4, 5]):
    -    model = make_pipeline(PolynomialFeatures(degree), Ridge())
    -    model.fit(X, y)
    -    y_plot = model.predict(X_plot)
    -    plt.plot(x_plot, y_plot, color=colors[count], linewidth=lw,
    -             label="degree %d" % degree)
    -
    -plt.legend(loc='lower left')
    +x=np.linspace(0.02,0.98,200)
    +noise = np.asarray(random.sample((range(200)),200))
    +y=x**3*noise
    +yn=x**3*100
    +poly3 = PolynomialFeatures(degree=3)
    +X = poly3.fit_transform(x[:,np.newaxis])
    +clf3 = LinearRegression()
    +clf3.fit(X,y)
     
    +Xplot=poly3.fit_transform(x[:,np.newaxis])
    +poly3_plot=plt.plot(x, clf3.predict(Xplot), label='Cubic Fit')
    +plt.plot(x,yn, color='red', label="True Cubic")
    +plt.scatter(x, y, label='Data', color='orange', s=15)
    +plt.legend()
     plt.show()
    +
    +def error(a):
    +    for i in y:
    +        err=(y-yn)/yn
    +    return abs(np.sum(err))/len(err)
    +
    +print (error(y))
     

    +Similarly, using R, we can perform similar studies. The following R code illustrates this.

    Non-Linear Least squares in R

    @@ -703,6 +644,9 @@ text(0, 0.5 +

    +In our lectures on regression analysis (and other ones as well), we will discuss in more details various R functionalities. +

    Another useful Python package is pandas, which is an open source library @@ -721,12 +665,149 @@ display(data_pandas)

    -

    Predator-Prey model from ecology

    +

    Examples

    +We present here several examples, with pertinent Python codes that we +will us to illustrate various machine learning methods and ways to +analyze, from simple to complex, various data sets. Many of these +examples allow us to generate the data we want to analyze, following +much of the same philosophy we discussed above when +fitting various polynomials. + +

    +We start with a simple exponential growth model that is meant to mimick an ecoli lab experiment. +We can easily model this system and then produce the data used to train various machine learning algorithms. +Another model from the life sciences is the so-called predator-prey model from ecology. Thereafter we present +a simple model for financial transactions before moving to a random walk model and ending with +the simulation of velocities of a non-interacting atom or molecule confined to move in a one-dimensional region. + +

    Ecoli lab experiment

    + +

    +A typical pattern seen in population models is that the population grows faster and faster. Why? Is there an underlying (general) mechanism? +Here we will construct a model for cell growth based on a simple difference equation for the growth. We make the following assumptions

    + +

      +
    1. Cells divide after \( T \) seconds on average (one generation)
    2. +
    3. \( 2N \) celles divide into twice as many new cells \( \Delta N \) in a time + interval \( \Delta t \) as \( N \) cells would: \( \Delta N \propto N \)
    4. +
    5. \( N \) cells result in twice as many new individuals \( \Delta N \) in + time \( 2\Delta t \) as in time \( \Delta t \): \( \Delta N \propto\Delta t \)
    6. +
    7. Same proportionality wrt death
    8. +
    9. Proposed model: \( \Delta N = b\Delta t N - d\Delta tN \) for some unknown + constants \( b \) (births) and \( d \) (deaths)
    10. +
    11. Describe evolution in discrete time: \( t_n=n\Delta t \)
    12. +
    13. Program-friendly notation: \( N \) at \( t_n \) is \( N^n \)
    14. +
    15. Math model: \( N^{n+1} = N^n + r\Delta t\, N \) (with \( \ r=b-d \))
    16. +
    17. Program model: N[n+1] = N[n] + r*dt*N[n]
    18. +
    +
    +
    + + +

    +The difference equation can be programmed in a simple was, and in order to get started we +set \( r=1.5 \), \( N^0=1 \), \( \Delta t=0.5 \). The program reads + +

    + + +

    import numpy as np
    +
    +t = np.linspace(0, 10, 21)  # 20 intervals in [0, 10]
    +dt = t[1] - t[0]
    +N = np.zeros(t.size)
    +
    +N[0] = 1
    +r = 0.5
    +
    +for n in range(0, N.size-1, 1):
    +    N[n+1] = N[n] + r*dt*N[n]
    +    print 'N[%d]=%.1f' % (n+1, N[n+1])
    +
    +

    +and it generates the following output +

    + + +

    N[1]=1.2
    +N[2]=1.6
    +N[3]=2.0
    +N[4]=2.4
    +N[5]=3.1
    +N[6]=3.8
    +N[7]=4.8
    +N[8]=6.0
    +N[9]=7.5
    +N[10]=9.3
    +N[11]=11.6
    +N[12]=14.6
    +N[13]=18.2
    +N[14]=22.7
    +N[15]=28.4
    +N[16]=35.5
    +N[17]=44.4
    +N[18]=55.5
    +N[19]=69.4
    +N[20]=86.7
    +
    +

    +This forms our data which later will define our training set. +In this case we defined the value of the parameter \( r \). We could alternatively assume that we just received the +above data file and where asked to use find \( r \). How can we estimate \( r \) from data? + +

    +We can use the difference equation with the experimental data +$$ N^{n+1} = N^n + r\Delta t N^n$$ + +Suppose now that \( N^{n+1} \) and \( N^n \) are known from data. Then we could solve with respect to \( r \) as follows +$$ r = \frac{N^{n+1}-N^n}{N^n\Delta t} $$ + +Suppose we set \( t_1=600 \), \( t_2=1200 \), +\( N^1=140 \) and \( N^2=250 \). We obtain then \( r=0.0013 \). The exact value is \( r = 0.000694 \) +The following code plot +

    + + +

    import numpy as np
    +
    +# Estimate r
    +data = np.loadtxt('ecoli.csv', delimiter=',')
    +t_e = data[:,0]
    +N_e = data[:,1]
    +i = 2  # Data point (i,i+1) used to estimate r
    +r = (N_e[i+1] - N_e[i])/(N_e[i]*(t_e[i+1] - t_e[i]))
    +print 'Estimated r=%.5f' % r
    +# Can experiment with r values and see if the model can
    +# match the data better
    +
    +T = 1200     # cell can divide after T sec
    +t_max = 5*T  # 5 generations in experiment
    +t = np.linspace(0, t_max, 1000)
    +dt = t[1] - t[0]
    +N = np.zeros(t.size)
    +
    +N[0] = 100
    +for n in range(0, len(t)-1, 1):
    +    N[n+1] = N[n] + r*dt*N[n]
    +
    +import matplotlib.pyplot as plt
    +plt.plot(t, N, 'r-', t_e, N_e, 'bo')
    +plt.xlabel('time [s]');  plt.ylabel('N')
    +plt.legend(['model', 'experiment'], loc='upper left')
    +plt.show()
    +
    +

    +We can then change the parameter \( r \) in the program and play around to make a better fit. By now we know that this +'search bythe eye' approach is not the most optimal one. + +

    Predator-Prey model from ecology

    + +

    The population dynamics of a simple predator-prey system is a classical example shown in many biology textbooks when ecological systems are discussed. The system contains all elements of the @@ -739,19 +820,7 @@ scientific method:

  • trying to extract general behaviors and extract eventual laws or patterns
  • develop mathematical relations for the uncovered regularities/laws and test these by per forming new experiments
  • -
    - - -

    - - -

    Case study from Hudson bay

    - -

    -

    -
    -

    Lots of data about populations of hares and lynx collected from furs in Hudson Bay, Canada, are available. It is known that the populations oscillate. Why? Here we start by @@ -761,21 +830,7 @@ Here we start by

  • (fitting parameters in the model to the data)
  • using the model predict the evolution other predator-pray systems
  • -
    -
    - -

    - - -

    Hudson bay data

    - -

    -

    -
    -

    - -

    Most mammalian predators rely on a variety of prey, which complicates mathematical modeling; however, a few predators have become highly specialized and seek almost exclusively a single prey species. An example of this simplified predator-prey interaction is seen in Canadian northern forests, where the populations of the lynx and the snowshoe hare are intertwined in a life and death struggle.

    @@ -816,20 +871,6 @@ One reason that this particular system has been so extensively studied is that t

    - - - - -

    - - -

    Plotting the data

    - -

    -

    -
    -

    -

    import numpy as np
    @@ -852,26 +893,10 @@ plt.savefig(
     plt.savefig('Hudson_Bay_data.png')
     plt.show()
     
    -

    -

    -
    - - -

    - - -

    Hares and lynx in Hudson bay from 1900 to 1920

    -





    - - -

    Why now create a computer model for the hare and lynx populations?

    -
    -
    -

    We see from the plot that there are indeed fluctuations. We would like to create a mathematical model that explains these population fluctuations. Ecologists have predicted that in a simple @@ -892,22 +917,9 @@ climate and other complicating factors. How significant are these?

  • What causes cycles to slow or speed up?
  • What affects the amplitude of the oscillation or do you expect to see the oscillations damp to a stable equilibrium?
  • With a model we can better understand the data
  • -
  • More important: we can understand the ecology dynamics of - predator-pray populations
  • +
  • More important: Can we understand the ecology dynamics of predator-pray populations?
  • -
    -
    - -

    - - -

    The traditional (top-down) approach

    - -

    -

    -
    -

    The classical way (in all books) is to present the Lotka-Volterra equations: $$ @@ -926,43 +938,6 @@ Here,

  • \( a \), \( b \), \( d \), \( c \) are parameters
  • -Most books quickly establish the model and then use considerable space on -discussing the qualitative properties of this nonlinear system of -ODEs (which cannot be solved) -
    -
    - - -

    - - -

    Basic mathematics notation

    -
    -
    -

    - -

      -
    • Time points: \( t_0,t_1,\ldots,t_m \)
    • -
    • Uniform distribution of time points: \( t_n=n\Delta t \)
    • -
    • \( H^n \): population of hares at time \( t_n \)
    • -
    • \( L^n \): population of lynx at time \( t_n \)
    • -
    • We want to model the changes in populations, \( \Delta H=H^{n+1}-H^n \) - and \( \Delta L=L^{n+1}-L^n \) during a general time interval \( [t_{n+1},t_n] \) - of length \( \Delta t=t_{n+1}-t_n \)
    • -
    -
    -
    - - -

    - - -

    Basic dynamics of the population of hares

    - -

    -

    -
    -

    The population of hares evolves due to births and deaths exactly as a bacteria population: $$ @@ -979,19 +954,8 @@ So in fraction \( b\Delta t HL \), the lynx eat hares. This loss of hares must be accounted for. Subtracted in the equation for hares: $$ \Delta H = a\Delta t H^n - b \Delta t H^nL^n$$ -

    -
    -

    - - -

    Basic dynamics of the population of lynx

    - -

    -

    -
    -

    We assume that the primary growth for the lynx population depends on sufficient food for raising lynx kittens, which implies an adequate source of nutrients from predation on hares. Thus, the growth of the lynx population does not only depend of how many lynx there are, but on how many hares they can eat. In a time interval \( \Delta t HL \) hares and lynx can meet, and in a fraction \( b\Delta t HL \) the lynx eats the hare. All of this does not @@ -1000,29 +964,10 @@ contribute to the growth of lynx, again just a fraction of \( d\Delta t HL \). In addition, lynx die just as in the population dynamics with one isolated animal population, leading to a loss \( -c\Delta t L \). -

    -
    - - -

    -

    -
    -

    The accounting of lynx then looks like $$ \Delta L = d\Delta t H^nL^n - c\Delta t L^n$$ -

    -
    -

    - - -

    Evolution equations

    - -

    -

    -
    -

    By writing up the definition of \( \Delta H \) and \( \Delta L \), and putting all assumed known terms \( H^n \) and \( L^n \) on the right-hand side, we have @@ -1036,44 +981,16 @@ Note:

    • These equations are ready to be implemented!
    • -
    • But to start, we need \( H^0 \) and \( L^0 \)
      - (which we can get from the data)
    • +
    • But to start, we need \( H^0 \) and \( L^0 \) (which we can get from the data)
    • We also need values for \( a \), \( b \), \( d \), \( c \)
    • -
    -
    -
    - - -

    - - -

    Adapt the model to the Hudson Bay case

    - -

    -

    -
    -

    - -

    • As always, models tend to be general - as here, applicable to "all" predator-pray systems
    • The critical issue is whether the interaction between hares and lynx is sufficiently well modeled by \( \hbox{const}HL \)
    • The parameters \( a \), \( b \), \( d \), and \( c \) must be estimated from data
    • -
    • Measure time in years
    • -
    • \( t_0=1900 \), \( t_m=1920 \)
    -
    -
    - -

    - - -

    The program

    - -

    @@ -1129,24 +1046,19 @@ plt.show()

    -

    - - -

    The plot

    -





    -If we perform a least-square fitting, we can find optimal values for the parameters \( a \), \( b \), \( d \), \( c \). The optimal parameters are \( a=0.4807 \), \( b=0.02482 \), \( d=0.9272 \) and \( c=0.02756 \). These parameters result in a slightly modified initial conditions, namely \( H(0) = 34.91 \) and \( L(0)=3.857 \). With these parameters we are now ready to solve the equations and plot these data together with the experimental values. +We will later perform a least-square fitting. Then we can find optimal +values for the parameters \( a \), \( b \), \( d \), \( c \). In our calculations here +we set \( a=0.4807 \), \( b=0.02482 \), \( d=0.9272 \) and \( c=0.02756 \). These +parameters result in a slightly modified initial conditions, namely +\( H(0) = 34.91 \) and \( L(0)=3.857 \).

    - - -

    Linear regression in Python

    -
    -
    -

    +The following Python demonstrates how we can use linear regression to fit for example the population of lynx. +Similarly, we have also used a decision tree algorithm to fit the lynx population data. As expected, the linear regression is not exactly impressive

    @@ -1170,17 +1082,7 @@ plt.plot(x, y, label.show()

    -

    -
    - - -

    - - -

    Linear Least squares in R

    -
    -
    -

    +The similar code for linear regression in R reads

    @@ -1204,198 +1106,8 @@ plot(linearMod) confint(linearMod) predict(linearMod,data.frame(Year=c(1910,1914,1920)),interval="confidence")

    -

    -

    - - -

    - - -

    Example: ecoli lab experiment

    - -

    -

    -
    -

    Typical pattern:

    -
    -
    -

    -The population grows faster and faster. Why? Is there an underlying (general) mechanism? -

    -
    - -
    -
    -

    - -

      -
    1. Cells divide after \( T \) seconds on average (one generation)
    2. -
    3. \( 2N \) celles divide into twice as many new cells \( \Delta N \) in a time - interval \( \Delta t \) as \( N \) cells would: \( \Delta N \propto N \)
    4. -
    5. \( N \) cells result in twice as many new individuals \( \Delta N \) in - time \( 2\Delta t \) as in time \( \Delta t \): \( \Delta N \propto\Delta t \)
    6. -
    7. Same proportionality wrt death (repeat reasoning)
    8. -
    9. Proposed model: \( \Delta N = b\Delta t N - d\Delta tN \) for some unknown - constants \( b \) (births) and \( d \) (deaths)
    10. -
    11. Describe evolution in discrete time: \( t_n=n\Delta t \)
    12. -
    13. Program-friendly notation: \( N \) at \( t_n \) is \( N^n \)
    14. -
    15. Math model: \( N^{n+1} = N^n + r\Delta t\, N \) (with \( \ r=b-d \))
    16. -
    17. Program model: N[n+1] = N[n] + r*dt*N[n]
    18. -
    -
    -
    - - -

    - - -

    The program

    - -

    -

    -
    -

    -Let us solve the difference equation in as simple way as possible, -just to train some programming: \( r=1.5 \), \( N^0=1 \), \( \Delta t=0.5 \) - -

    - - -

    import numpy as np
    -
    -t = np.linspace(0, 10, 21)  # 20 intervals in [0, 10]
    -dt = t[1] - t[0]
    -N = np.zeros(t.size)
    -
    -N[0] = 1
    -r = 0.5
    -
    -for n in range(0, N.size-1, 1):
    -    N[n+1] = N[n] + r*dt*N[n]
    -    print 'N[%d]=%.1f' % (n+1, N[n+1])
    -
    -

    -

    -
    - - -

    -% if FORMAT != 'ipynb': - - -

    The output

    - -

    - - -

    N[1]=1.2
    -N[2]=1.6
    -N[3]=2.0
    -N[4]=2.4
    -N[5]=3.1
    -N[6]=3.8
    -N[7]=4.8
    -N[8]=6.0
    -N[9]=7.5
    -N[10]=9.3
    -N[11]=11.6
    -N[12]=14.6
    -N[13]=18.2
    -N[14]=22.7
    -N[15]=28.4
    -N[16]=35.5
    -N[17]=44.4
    -N[18]=55.5
    -N[19]=69.4
    -N[20]=86.7
    -
    -

    -% endif - -

    - - -

    Parameter estimation

    - -

    -

    -
    -

    - -

      -
    • We do not know \( r \)
    • -
    • How can we estimate \( r \) from data?
    • -
    - -We can use the difference equation with the experimental data - -$$ N^{n+1} = N^n + r\Delta t N^n$$ - -Say \( N^{n+1} \) and \( N^n \) are known from data, solve wrt \( r \): - -$$ r = \frac{N^{n+1}-N^n}{N^n\Delta t} $$ - -

    -Use experimental data in the fraction, say \( t_1=600 \), \( t_2=1200 \), -\( N^1=140 \), \( N^2=250 \): \( r=0.0013 \). -

    -
    - - -

    - - -

    A program relevant for the biological problem

    - -

    - - -

    -

    -
    -

    -

    - - -

    import numpy as np
    -
    -# Estimate r
    -data = np.loadtxt('ecoli.csv', delimiter=',')
    -t_e = data[:,0]
    -N_e = data[:,1]
    -i = 2  # Data point (i,i+1) used to estimate r
    -r = (N_e[i+1] - N_e[i])/(N_e[i]*(t_e[i+1] - t_e[i]))
    -print 'Estimated r=%.5f' % r
    -# Can experiment with r values and see if the model can
    -# match the data better
    -
    -T = 1200     # cell can divide after T sec
    -t_max = 5*T  # 5 generations in experiment
    -t = np.linspace(0, t_max, 1000)
    -dt = t[1] - t[0]
    -N = np.zeros(t.size)
    -
    -N[0] = 100
    -for n in range(0, len(t)-1, 1):
    -    N[n+1] = N[n] + r*dt*N[n]
    -
    -import matplotlib.pyplot as plt
    -plt.plot(t, N, 'r-', t_e, N_e, 'bo')
    -plt.xlabel('time [s]');  plt.ylabel('N')
    -plt.legend(['model', 'experiment'], loc='upper left')
    -plt.show()
    -
    -

    -Change r in the program and play around to make a better fit! -

    -
    - - -

    - - -

    Simulating financial transactions

    +

    Simulating financial transactions

    The aim here is to simulate financial transactions among financial agents @@ -1469,8 +1181,7 @@ exponentially decreases with \( m' \). We assume that we have \( N=500 \) agents. In each simulation, we need a sufficiently large number of transactions, say \( 10^7 \). Our aim is find the final equilibrium distribution \( w_m \). In order to do that we would need several runs of the above simulations, at least \( 10^3-10^4 \) runs (experiments). -

    Simulation of Transactions

    - +

    Our task is to first set up an algorithm which simulates the above transactions with an initial amount \( m_0 \). The challenge here is to figure out a Monte Carlo simulation based on the @@ -1569,40 +1280,11 @@ $$ showing how money is conserved during a transaction. Select values of \( \lambda =0.25,0.5 \) and \( \lambda=0.9 \) and try to extract the corresponding - equilibrium distributions and compare these with the Gibbs distribution. Comment your results. -Extract a parametrization of the above curves, see for example Patriarca and collaborators and see if you can parametrize the high-end tails of the distributions in terms of power laws. Comment your results. + equilibrium distributions and compare these with the Gibbs distribution. We will use this model to +extract a parametrization of the above curves, see for example Patriarca and collaborators. -

    -In the studies above the agents were selected randomly, irrespective of whether we allowed for -saving or not during a transaction. What is often observed is that various agents tend to make preferences for for whom to interact with. We will now study the evolution of the distribution of wealth \( w_m \) by assuming that there is a likelihood -$$ -p_{ij} \propto \vert m_i-m_j\vert^{-\alpha}, -$$ +

    Particle in one dimension and velocity distribution

    -for an interaction between agents \( i \) and \( j \) with respective wealths \( m_i \) and \( m_j \). The parameter \( \alpha > 0 \). For \( \alpha=0 \) we recover our model from part 5a). -Perform the same analysis as previously with \( N=500 \) as well as with \( N=1000 \) agents and study the distribution of wealth for \( \alpha =0.5 \), \( \alpha =1.0 \), \( \alpha =1.5 \) and \( \alpha =2.0 \). -You should try to reproduce Figure 1 of Goswami and Sen. -Extract the tail of the distribution and see if it follows a Pareto distribution -$$ -w_m\propto m^{-1-\alpha}. -$$ - -What happens if \( \alpha \gg 1 \)? - -

    -Perform the analysis with and without a saving \( \lambda \) on each transaction and comment your results. -We add to the previous probability the possibility that two agents who interact have performed similar transactions earlier. That is, in addition to being financially close, we assume that the likelihood for interacting increases if two agents have interacted earlier. -We add this feature by modifying the previous likelihood to -$$ -p_{ij} \propto \vert m_i-m_j\vert^{-\alpha}\left(c_{ij}+1\right)^{\gamma}, -$$ - -where \( c_{ij} \) represents the number of previous interactions that have taken place between \( i \) and \( j \). The factor \( 1 \) is added in order to ensure that if they have not interacted earlier they can still interact. Perform similar studies as above with \( N=1000 \), \( \alpha=1.0 \) and \( \alpha=2.0 \) using \( \gamma = 0.0, 1.0, 2.0, 3.0 \) and \( 4.0 \). Plot the wealth distributions for these cases and try to extract eventual power law tails with and without a saving \( \lambda \) in each transaction. Comment your results and compare them with figures 5 and 6 of Goswami and Sen. - -

    - - -

    Particle in one dimension an velocity distribution

    diff --git a/doc/pub/How2ReadData/html/How2ReadData-reveal.html b/doc/pub/How2ReadData/html/How2ReadData-reveal.html index 519fc4df6..d0879d153 100644 --- a/doc/pub/How2ReadData/html/How2ReadData-reveal.html +++ b/doc/pub/How2ReadData/html/How2ReadData-reveal.html @@ -611,46 +611,39 @@ a linear \( x \)-dependence we study now a cubic polynomial and use the polynomi

    -

    import numpy as np
    -import matplotlib.pyplot as plt
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +import random
     from sklearn.linear_model import Ridge
     from sklearn.preprocessing import PolynomialFeatures
     from sklearn.pipeline import make_pipeline
    +from sklearn.linear_model import LinearRegression
     
    -def f(x):
    -    """ function to approximate by polynomial interpolation"""
    -    return x*x*x
    -
    -# generate points used to plot                                                  
    -x_plot = np.linspace(0, 10, 100)
    -
    -# generate points and keep a subset of them                                     
    -x = np.linspace(0, 10, 100)
    -rng = np.random.RandomState(0)
    -rng.shuffle(x)
    -x = np.sort(x[:20])
    -y = f(x)
    -# create matrix versions of these arrays                                        
    -X = x[:, np.newaxis]
    -X_plot = x_plot[:, np.newaxis]
    -
    -colors = ['teal', 'yellowgreen', 'gold']
    -lw = 2
    -plt.plot(x_plot, f(x_plot), color='cornflowerblue', linewidth=lw,
    -         label="ground truth")
    -plt.scatter(x, y, color='navy', s=30, marker='o', label="training points")
    -
    -for count, degree in enumerate([3, 4, 5]):
    -    model = make_pipeline(PolynomialFeatures(degree), Ridge())
    -    model.fit(X, y)
    -    y_plot = model.predict(X_plot)
    -    plt.plot(x_plot, y_plot, color=colors[count], linewidth=lw,
    -             label="degree %d" % degree)
    -
    -plt.legend(loc='lower left')
    +x=np.linspace(0.02,0.98,200)
    +noise = np.asarray(random.sample((range(200)),200))
    +y=x**3*noise
    +yn=x**3*100
    +poly3 = PolynomialFeatures(degree=3)
    +X = poly3.fit_transform(x[:,np.newaxis])
    +clf3 = LinearRegression()
    +clf3.fit(X,y)
     
    +Xplot=poly3.fit_transform(x[:,np.newaxis])
    +poly3_plot=plt.plot(x, clf3.predict(Xplot), label='Cubic Fit')
    +plt.plot(x,yn, color='red', label="True Cubic")
    +plt.scatter(x, y, label='Data', color='orange', s=15)
    +plt.legend()
     plt.show()
    +
    +def error(a):
    +    for i in y:
    +        err=(y-yn)/yn
    +    return abs(np.sum(err))/len(err)
    +
    +print (error(y))
     
    +

    +Similarly, using R, we can perform similar studies. The following R code illustrates this. @@ -684,6 +677,9 @@ text(0, 0.5 +

    +In our lectures on regression analysis (and other ones as well), we will discuss in more details various R functionalities. +

    Another useful Python package is pandas, which is an open source library @@ -703,11 +699,148 @@ display(data_pandas)

    -

    Predator-Prey model from ecology

    +

    Examples

    +We present here several examples, with pertinent Python codes that we +will us to illustrate various machine learning methods and ways to +analyze, from simple to complex, various data sets. Many of these +examples allow us to generate the data we want to analyze, following +much of the same philosophy we discussed above when +fitting various polynomials. + +

    +We start with a simple exponential growth model that is meant to mimick an ecoli lab experiment. +We can easily model this system and then produce the data used to train various machine learning algorithms. +Another model from the life sciences is the so-called predator-prey model from ecology. Thereafter we present +a simple model for financial transactions before moving to a random walk model and ending with +the simulation of velocities of a non-interacting atom or molecule confined to move in a one-dimensional region. + +

    Ecoli lab experiment

    + +

    +A typical pattern seen in population models is that the population grows faster and faster. Why? Is there an underlying (general) mechanism? +Here we will construct a model for cell growth based on a simple difference equation for the growth. We make the following assumptions

    +
      +

    1. Cells divide after \( T \) seconds on average (one generation)
    2. +

    3. \( 2N \) celles divide into twice as many new cells \( \Delta N \) in a time + interval \( \Delta t \) as \( N \) cells would: \( \Delta N \propto N \)
    4. +

    5. \( N \) cells result in twice as many new individuals \( \Delta N \) in + time \( 2\Delta t \) as in time \( \Delta t \): \( \Delta N \propto\Delta t \)
    6. +

    7. Same proportionality wrt death
    8. +

    9. Proposed model: \( \Delta N = b\Delta t N - d\Delta tN \) for some unknown + constants \( b \) (births) and \( d \) (deaths)
    10. +

    11. Describe evolution in discrete time: \( t_n=n\Delta t \)
    12. +

    13. Program-friendly notation: \( N \) at \( t_n \) is \( N^n \)
    14. +

    15. Math model: \( N^{n+1} = N^n + r\Delta t\, N \) (with \( \ r=b-d \))
    16. +

    17. Program model: N[n+1] = N[n] + r*dt*N[n]
    18. +
    +
    + +

    +The difference equation can be programmed in a simple was, and in order to get started we +set \( r=1.5 \), \( N^0=1 \), \( \Delta t=0.5 \). The program reads + +

    + + +

    import numpy as np
    +
    +t = np.linspace(0, 10, 21)  # 20 intervals in [0, 10]
    +dt = t[1] - t[0]
    +N = np.zeros(t.size)
    +
    +N[0] = 1
    +r = 0.5
    +
    +for n in range(0, N.size-1, 1):
    +    N[n+1] = N[n] + r*dt*N[n]
    +    print 'N[%d]=%.1f' % (n+1, N[n+1])
    +
    +

    +and it generates the following output +

    + + +

    N[1]=1.2
    +N[2]=1.6
    +N[3]=2.0
    +N[4]=2.4
    +N[5]=3.1
    +N[6]=3.8
    +N[7]=4.8
    +N[8]=6.0
    +N[9]=7.5
    +N[10]=9.3
    +N[11]=11.6
    +N[12]=14.6
    +N[13]=18.2
    +N[14]=22.7
    +N[15]=28.4
    +N[16]=35.5
    +N[17]=44.4
    +N[18]=55.5
    +N[19]=69.4
    +N[20]=86.7
    +
    +

    +This forms our data which later will define our training set. +In this case we defined the value of the parameter \( r \). We could alternatively assume that we just received the +above data file and where asked to use find \( r \). How can we estimate \( r \) from data? + +

    +We can use the difference equation with the experimental data +

     
    +$$ N^{n+1} = N^n + r\Delta t N^n$$ +

     
    + +Suppose now that \( N^{n+1} \) and \( N^n \) are known from data. Then we could solve with respect to \( r \) as follows +

     
    +$$ r = \frac{N^{n+1}-N^n}{N^n\Delta t} $$ +

     
    + +Suppose we set \( t_1=600 \), \( t_2=1200 \), +\( N^1=140 \) and \( N^2=250 \). We obtain then \( r=0.0013 \). The exact value is \( r = 0.000694 \) +The following code plot +

    + + +

    import numpy as np
    +
    +# Estimate r
    +data = np.loadtxt('ecoli.csv', delimiter=',')
    +t_e = data[:,0]
    +N_e = data[:,1]
    +i = 2  # Data point (i,i+1) used to estimate r
    +r = (N_e[i+1] - N_e[i])/(N_e[i]*(t_e[i+1] - t_e[i]))
    +print 'Estimated r=%.5f' % r
    +# Can experiment with r values and see if the model can
    +# match the data better
    +
    +T = 1200     # cell can divide after T sec
    +t_max = 5*T  # 5 generations in experiment
    +t = np.linspace(0, t_max, 1000)
    +dt = t[1] - t[0]
    +N = np.zeros(t.size)
    +
    +N[0] = 100
    +for n in range(0, len(t)-1, 1):
    +    N[n+1] = N[n] + r*dt*N[n]
    +
    +import matplotlib.pyplot as plt
    +plt.plot(t, N, 'r-', t_e, N_e, 'bo')
    +plt.xlabel('time [s]');  plt.ylabel('N')
    +plt.legend(['model', 'experiment'], loc='upper left')
    +plt.show()
    +
    +

    +We can then change the parameter \( r \) in the program and play around to make a better fit. By now we know that this +'search bythe eye' approach is not the most optimal one. + +

    Predator-Prey model from ecology

    +

    The population dynamics of a simple predator-prey system is a classical example shown in many biology textbooks when ecological @@ -721,17 +854,8 @@ scientific method:

  • trying to extract general behaviors and extract eventual laws or patterns
  • develop mathematical relations for the uncovered regularities/laws and test these by per forming new experiments
  • -
    - - - -
    -

    Case study from Hudson bay

    - -

    -

    -

    + Lots of data about populations of hares and lynx collected from furs in Hudson Bay, Canada, are available. It is known that the populations oscillate. Why? Here we start by @@ -741,17 +865,8 @@ Here we start by

  • (fitting parameters in the model to the data)
  • using the model predict the evolution other predator-pray systems
  • -
    -
    - - -
    -

    Hudson bay data

    - -

    -

    -

    + Most mammalian predators rely on a variety of prey, which complicates mathematical modeling; however, a few predators have become highly specialized and seek almost exclusively a single prey species. An example of this simplified predator-prey interaction is seen in Canadian northern forests, where the populations of the lynx and the snowshoe hare are intertwined in a life and death struggle.

    @@ -786,17 +901,6 @@ One reason that this particular system has been so extensively studied is that t 1920 24.7 8.6 - -

    -
    - - -
    -

    Plotting the data

    - -

    -

    -

    @@ -820,23 +924,9 @@ plt.savefig('Hudson_Bay_data.pdf') plt.savefig('Hudson_Bay_data.png') plt.show()

    - - -
    - - -
    -

    Hares and lynx in Hudson bay from 1900 to 1920

    -





    -
    - -
    -

    Why now create a computer model for the hare and lynx populations?

    -
    -

    We see from the plot that there are indeed fluctuations. We would like to create a mathematical model that explains these @@ -858,20 +948,10 @@ climate and other complicating factors. How significant are these?

  • What causes cycles to slow or speed up?
  • What affects the amplitude of the oscillation or do you expect to see the oscillations damp to a stable equilibrium?
  • With a model we can better understand the data
  • -

  • More important: we can understand the ecology dynamics of - predator-pray populations
  • +

  • More important: Can we understand the ecology dynamics of predator-pray populations?
  • -
    -
    - - -
    -

    The traditional (top-down) approach

    - -

    -

    -

    + The classical way (in all books) is to present the Lotka-Volterra equations:

     
    @@ -893,37 +973,6 @@ Here,

    -Most books quickly establish the model and then use considerable space on -discussing the qualitative properties of this nonlinear system of -ODEs (which cannot be solved) -

    -
    - - -
    -

    Basic mathematics notation

    -
    - -
      -

    • Time points: \( t_0,t_1,\ldots,t_m \)
    • -

    • Uniform distribution of time points: \( t_n=n\Delta t \)
    • -

    • \( H^n \): population of hares at time \( t_n \)
    • -

    • \( L^n \): population of lynx at time \( t_n \)
    • -

    • We want to model the changes in populations, \( \Delta H=H^{n+1}-H^n \) - and \( \Delta L=L^{n+1}-L^n \) during a general time interval \( [t_{n+1},t_n] \) - of length \( \Delta t=t_{n+1}-t_n \)
    • -
    -
    -
    - - -
    -

    Basic dynamics of the population of hares

    - -

    -

    - -

    The population of hares evolves due to births and deaths exactly as a bacteria population:

     
    @@ -944,16 +993,7 @@ loss of hares must be accounted for. Subtracted in the equation for hares:

     
    $$ \Delta H = a\Delta t H^n - b \Delta t H^nL^n$$

     
    -

    -
    - -
    -

    Basic dynamics of the population of lynx

    - -

    -

    -

    We assume that the primary growth for the lynx population depends on sufficient food for raising lynx kittens, which implies an adequate source of nutrients from predation on hares. Thus, the growth of the lynx population does not only depend of how many lynx there are, but on how many hares they can eat. In a time interval \( \Delta t HL \) hares and lynx can meet, and in a @@ -963,26 +1003,11 @@ contribute to the growth of lynx, again just a fraction of \( d\Delta t HL \). In addition, lynx die just as in the population dynamics with one isolated animal population, leading to a loss \( -c\Delta t L \). -

    - -

    -

    - -

    The accounting of lynx then looks like

     
    $$ \Delta L = d\Delta t H^nL^n - c\Delta t L^n$$

     
    -

    -
    - -
    -

    Evolution equations

    - -

    -

    -

    By writing up the definition of \( \Delta H \) and \( \Delta L \), and putting all assumed known terms \( H^n \) and \( L^n \) on the right-hand side, we have @@ -1000,38 +1025,17 @@ Note:

    • These equations are ready to be implemented!
    • -

    • But to start, we need \( H^0 \) and \( L^0 \)
      - (which we can get from the data)
    • +

    • But to start, we need \( H^0 \) and \( L^0 \) (which we can get from the data)
    • We also need values for \( a \), \( b \), \( d \), \( c \)
    • -
    -
    -
    - - -
    -

    Adapt the model to the Hudson Bay case

    - -

    -

    - -

    • As always, models tend to be general - as here, applicable to "all" predator-pray systems
    • The critical issue is whether the interaction between hares and lynx is sufficiently well modeled by \( \hbox{const}HL \)
    • The parameters \( a \), \( b \), \( d \), and \( c \) must be estimated from data
    • -

    • Measure time in years
    • -

    • \( t_0=1900 \), \( t_m=1920 \)
    -
    -
    - - -
    -

    The program

    -

    +

    @@ -1083,24 +1087,20 @@ plt.show()

    -
    - - -
    -

    The plot





    -If we perform a least-square fitting, we can find optimal values for the parameters \( a \), \( b \), \( d \), \( c \). The optimal parameters are \( a=0.4807 \), \( b=0.02482 \), \( d=0.9272 \) and \( c=0.02756 \). These parameters result in a slightly modified initial conditions, namely \( H(0) = 34.91 \) and \( L(0)=3.857 \). With these parameters we are now ready to solve the equations and plot these data together with the experimental values. -

    +We will later perform a least-square fitting. Then we can find optimal +values for the parameters \( a \), \( b \), \( d \), \( c \). In our calculations here +we set \( a=0.4807 \), \( b=0.02482 \), \( d=0.9272 \) and \( c=0.02756 \). These +parameters result in a slightly modified initial conditions, namely +\( H(0) = 34.91 \) and \( L(0)=3.857 \). - -
    -

    Linear regression in Python

    -
    - +

    +The following Python demonstrates how we can use linear regression to fit for example the population of lynx. +Similarly, we have also used a decision tree algorithm to fit the lynx population data. As expected, the linear regression is not exactly impressive

    @@ -1123,15 +1123,8 @@ plt.plot(line, regline.predict(line), label= " plt.plot(x, y, label= "Linear Regression") plt.show()

    - - -
    - - -
    -

    Linear Least squares in R

    -
    - +

    +The similar code for linear regression in R reads

    @@ -1156,185 +1149,7 @@ confint(linearMod) predict(linearMod,data.frame(Year=c(1910,1914,1920)),interval="confidence")

    - -
    - - -
    -

    Example: ecoli lab experiment

    - -

    -

    -Typical pattern: -

    -The population grows faster and faster. Why? Is there an underlying (general) mechanism? -

    - -
    - -
      -

    1. Cells divide after \( T \) seconds on average (one generation)
    2. -

    3. \( 2N \) celles divide into twice as many new cells \( \Delta N \) in a time - interval \( \Delta t \) as \( N \) cells would: \( \Delta N \propto N \)
    4. -

    5. \( N \) cells result in twice as many new individuals \( \Delta N \) in - time \( 2\Delta t \) as in time \( \Delta t \): \( \Delta N \propto\Delta t \)
    6. -

    7. Same proportionality wrt death (repeat reasoning)
    8. -

    9. Proposed model: \( \Delta N = b\Delta t N - d\Delta tN \) for some unknown - constants \( b \) (births) and \( d \) (deaths)
    10. -

    11. Describe evolution in discrete time: \( t_n=n\Delta t \)
    12. -

    13. Program-friendly notation: \( N \) at \( t_n \) is \( N^n \)
    14. -

    15. Math model: \( N^{n+1} = N^n + r\Delta t\, N \) (with \( \ r=b-d \))
    16. -

    17. Program model: N[n+1] = N[n] + r*dt*N[n]
    18. -
    -
    -
    - - -
    -

    The program

    - -

    -

    - -

    -Let us solve the difference equation in as simple way as possible, -just to train some programming: \( r=1.5 \), \( N^0=1 \), \( \Delta t=0.5 \) - -

    - - -

    import numpy as np
    -
    -t = np.linspace(0, 10, 21)  # 20 intervals in [0, 10]
    -dt = t[1] - t[0]
    -N = np.zeros(t.size)
    -
    -N[0] = 1
    -r = 0.5
    -
    -for n in range(0, N.size-1, 1):
    -    N[n+1] = N[n] + r*dt*N[n]
    -    print 'N[%d]=%.1f' % (n+1, N[n+1])
    -
    - -
    - -

    -% if FORMAT != 'ipynb': -

    - - -
    -

    The output

    - -

    - - -

    N[1]=1.2
    -N[2]=1.6
    -N[3]=2.0
    -N[4]=2.4
    -N[5]=3.1
    -N[6]=3.8
    -N[7]=4.8
    -N[8]=6.0
    -N[9]=7.5
    -N[10]=9.3
    -N[11]=11.6
    -N[12]=14.6
    -N[13]=18.2
    -N[14]=22.7
    -N[15]=28.4
    -N[16]=35.5
    -N[17]=44.4
    -N[18]=55.5
    -N[19]=69.4
    -N[20]=86.7
    -
    -

    -% endif -

    - - -
    -

    Parameter estimation

    - -

    -

    - -
      -

    • We do not know \( r \)
    • -

    • How can we estimate \( r \) from data?
    • -
    -

    - -We can use the difference equation with the experimental data - -

     
    -$$ N^{n+1} = N^n + r\Delta t N^n$$ -

     
    - -Say \( N^{n+1} \) and \( N^n \) are known from data, solve wrt \( r \): - -

     
    -$$ r = \frac{N^{n+1}-N^n}{N^n\Delta t} $$ -

     
    - -

    -Use experimental data in the fraction, say \( t_1=600 \), \( t_2=1200 \), -\( N^1=140 \), \( N^2=250 \): \( r=0.0013 \). -

    -
    - - -
    -

    A program relevant for the biological problem

    - -

    - - -

    -

    - -

    - - -

    import numpy as np
    -
    -# Estimate r
    -data = np.loadtxt('ecoli.csv', delimiter=',')
    -t_e = data[:,0]
    -N_e = data[:,1]
    -i = 2  # Data point (i,i+1) used to estimate r
    -r = (N_e[i+1] - N_e[i])/(N_e[i]*(t_e[i+1] - t_e[i]))
    -print 'Estimated r=%.5f' % r
    -# Can experiment with r values and see if the model can
    -# match the data better
    -
    -T = 1200     # cell can divide after T sec
    -t_max = 5*T  # 5 generations in experiment
    -t = np.linspace(0, t_max, 1000)
    -dt = t[1] - t[0]
    -N = np.zeros(t.size)
    -
    -N[0] = 100
    -for n in range(0, len(t)-1, 1):
    -    N[n+1] = N[n] + r*dt*N[n]
    -
    -import matplotlib.pyplot as plt
    -plt.plot(t, N, 'r-', t_e, N_e, 'bo')
    -plt.xlabel('time [s]');  plt.ylabel('N')
    -plt.legend(['model', 'experiment'], loc='upper left')
    -plt.show()
    -
    -

    -Change r in the program and play around to make a better fit! -

    -
    - - -
    -

    Simulating financial transactions

    +

    Simulating financial transactions

    The aim here is to simulate financial transactions among financial agents @@ -1420,8 +1235,7 @@ exponentially decreases with \( m' \). We assume that we have \( N=500 \) agents. In each simulation, we need a sufficiently large number of transactions, say \( 10^7 \). Our aim is find the final equilibrium distribution \( w_m \). In order to do that we would need several runs of the above simulations, at least \( 10^3-10^4 \) runs (experiments). -

    Simulation of Transactions

    - +

    Our task is to first set up an algorithm which simulates the above transactions with an initial amount \( m_0 \). The challenge here is to figure out a Monte Carlo simulation based on the @@ -1530,46 +1344,11 @@ $$ showing how money is conserved during a transaction. Select values of \( \lambda =0.25,0.5 \) and \( \lambda=0.9 \) and try to extract the corresponding - equilibrium distributions and compare these with the Gibbs distribution. Comment your results. -Extract a parametrization of the above curves, see for example Patriarca and collaborators and see if you can parametrize the high-end tails of the distributions in terms of power laws. Comment your results. + equilibrium distributions and compare these with the Gibbs distribution. We will use this model to +extract a parametrization of the above curves, see for example Patriarca and collaborators. -

    -In the studies above the agents were selected randomly, irrespective of whether we allowed for -saving or not during a transaction. What is often observed is that various agents tend to make preferences for for whom to interact with. We will now study the evolution of the distribution of wealth \( w_m \) by assuming that there is a likelihood -

     
    -$$ -p_{ij} \propto \vert m_i-m_j\vert^{-\alpha}, -$$ -

     
    +

    Particle in one dimension and velocity distribution

    -for an interaction between agents \( i \) and \( j \) with respective wealths \( m_i \) and \( m_j \). The parameter \( \alpha > 0 \). For \( \alpha=0 \) we recover our model from part 5a). -Perform the same analysis as previously with \( N=500 \) as well as with \( N=1000 \) agents and study the distribution of wealth for \( \alpha =0.5 \), \( \alpha =1.0 \), \( \alpha =1.5 \) and \( \alpha =2.0 \). -You should try to reproduce Figure 1 of Goswami and Sen. -Extract the tail of the distribution and see if it follows a Pareto distribution -

     
    -$$ -w_m\propto m^{-1-\alpha}. -$$ -

     
    - -What happens if \( \alpha \gg 1 \)? - -

    -Perform the analysis with and without a saving \( \lambda \) on each transaction and comment your results. -We add to the previous probability the possibility that two agents who interact have performed similar transactions earlier. That is, in addition to being financially close, we assume that the likelihood for interacting increases if two agents have interacted earlier. -We add this feature by modifying the previous likelihood to -

     
    -$$ -p_{ij} \propto \vert m_i-m_j\vert^{-\alpha}\left(c_{ij}+1\right)^{\gamma}, -$$ -

     
    - -where \( c_{ij} \) represents the number of previous interactions that have taken place between \( i \) and \( j \). The factor \( 1 \) is added in order to ensure that if they have not interacted earlier they can still interact. Perform similar studies as above with \( N=1000 \), \( \alpha=1.0 \) and \( \alpha=2.0 \) using \( \gamma = 0.0, 1.0, 2.0, 3.0 \) and \( 4.0 \). Plot the wealth distributions for these cases and try to extract eventual power law tails with and without a saving \( \lambda \) in each transaction. Comment your results and compare them with figures 5 and 6 of Goswami and Sen. -

    - - -
    -

    Particle in one dimension an velocity distribution

    diff --git a/doc/pub/How2ReadData/html/How2ReadData-solarized.html b/doc/pub/How2ReadData/html/How2ReadData-solarized.html index fead58baf..dd677c506 100644 --- a/doc/pub/How2ReadData/html/How2ReadData-solarized.html +++ b/doc/pub/How2ReadData/html/How2ReadData-solarized.html @@ -70,46 +70,14 @@ div { text-align: justify; text-justify: inter-word; } None, '___sec5'), ('Non-Linear Least squares in R', 2, None, '___sec6'), - ('Predator-Prey model from ecology', 2, None, '___sec7'), - ('Case study from Hudson bay', 2, None, '___sec8'), - ('Hudson bay data', 2, None, '___sec9'), - ('Plotting the data', 2, None, '___sec10'), - ('Hares and lynx in Hudson bay from 1900 to 1920', - 2, + ('Examples', 2, None, '___sec7'), + ('Ecoli lab experiment', 3, None, '___sec8'), + ('Predator-Prey model from ecology', 3, None, '___sec9'), + ('Simulating financial transactions', 3, None, '___sec10'), + ('Particle in one dimension and velocity distribution', + 3, None, - '___sec11'), - ('Why now create a computer model for the hare and lynx ' - 'populations?', - 2, - None, - '___sec12'), - ('The traditional (top-down) approach', 2, None, '___sec13'), - ('Basic mathematics notation', 2, None, '___sec14'), - ('Basic dynamics of the population of hares', - 2, - None, - '___sec15'), - ('Basic dynamics of the population of lynx', 2, None, '___sec16'), - ('Evolution equations', 2, None, '___sec17'), - ('Adapt the model to the Hudson Bay case', 2, None, '___sec18'), - ('The program', 2, None, '___sec19'), - ('The plot', 2, None, '___sec20'), - ('Linear regression in Python', 2, None, '___sec21'), - ('Linear Least squares in R', 2, None, '___sec22'), - ('Example: ecoli lab experiment', 2, None, '___sec23'), - ('The program', 2, None, '___sec24'), - ('The output', 2, None, '___sec25'), - ('Parameter estimation', 2, None, '___sec26'), - ('A program relevant for the biological problem', - 2, - None, - '___sec27'), - ('Simulating financial transactions', 2, None, '___sec28'), - ('Simulation of Transactions', 3, None, '___sec29'), - ('Particle in one dimension an velocity distribution', - 2, - None, - '___sec30')]} + '___sec11')]} end of tocinfo --> @@ -585,47 +553,39 @@ a linear \( x \)-dependence we study now a cubic polynomial and use the polynomi

    -

    import numpy as np
    -import matplotlib.pyplot as plt
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +import random
     from sklearn.linear_model import Ridge
     from sklearn.preprocessing import PolynomialFeatures
     from sklearn.pipeline import make_pipeline
    +from sklearn.linear_model import LinearRegression
     
    -def f(x):
    -    """ function to approximate by polynomial interpolation"""
    -    return x*x*x
    -
    -# generate points used to plot                                                  
    -x_plot = np.linspace(0, 10, 100)
    -
    -# generate points and keep a subset of them                                     
    -x = np.linspace(0, 10, 100)
    -rng = np.random.RandomState(0)
    -rng.shuffle(x)
    -x = np.sort(x[:20])
    -y = f(x)
    -# create matrix versions of these arrays                                        
    -X = x[:, np.newaxis]
    -X_plot = x_plot[:, np.newaxis]
    -
    -colors = ['teal', 'yellowgreen', 'gold']
    -lw = 2
    -plt.plot(x_plot, f(x_plot), color='cornflowerblue', linewidth=lw,
    -         label="ground truth")
    -plt.scatter(x, y, color='navy', s=30, marker='o', label="training points")
    -
    -for count, degree in enumerate([3, 4, 5]):
    -    model = make_pipeline(PolynomialFeatures(degree), Ridge())
    -    model.fit(X, y)
    -    y_plot = model.predict(X_plot)
    -    plt.plot(x_plot, y_plot, color=colors[count], linewidth=lw,
    -             label="degree %d" % degree)
    -
    -plt.legend(loc='lower left')
    +x=np.linspace(0.02,0.98,200)
    +noise = np.asarray(random.sample((range(200)),200))
    +y=x**3*noise
    +yn=x**3*100
    +poly3 = PolynomialFeatures(degree=3)
    +X = poly3.fit_transform(x[:,np.newaxis])
    +clf3 = LinearRegression()
    +clf3.fit(X,y)
     
    +Xplot=poly3.fit_transform(x[:,np.newaxis])
    +poly3_plot=plt.plot(x, clf3.predict(Xplot), label='Cubic Fit')
    +plt.plot(x,yn, color='red', label="True Cubic")
    +plt.scatter(x, y, label='Data', color='orange', s=15)
    +plt.legend()
     plt.show()
    +
    +def error(a):
    +    for i in y:
    +        err=(y-yn)/yn
    +    return abs(np.sum(err))/len(err)
    +
    +print (error(y))
     

    +Similarly, using R, we can perform similar studies. The following R code illustrates this.









    Non-Linear Least squares in R

    @@ -659,6 +619,9 @@ text(0, 0.5 +

    +In our lectures on regression analysis (and other ones as well), we will discuss in more details various R functionalities. +

    Another useful Python package is pandas, which is an open source library @@ -677,11 +640,147 @@ display(data_pandas)











    -

    Predator-Prey model from ecology

    +

    Examples

    +We present here several examples, with pertinent Python codes that we +will us to illustrate various machine learning methods and ways to +analyze, from simple to complex, various data sets. Many of these +examples allow us to generate the data we want to analyze, following +much of the same philosophy we discussed above when +fitting various polynomials. + +

    +We start with a simple exponential growth model that is meant to mimick an ecoli lab experiment. +We can easily model this system and then produce the data used to train various machine learning algorithms. +Another model from the life sciences is the so-called predator-prey model from ecology. Thereafter we present +a simple model for financial transactions before moving to a random walk model and ending with +the simulation of velocities of a non-interacting atom or molecule confined to move in a one-dimensional region. + +

    Ecoli lab experiment

    + +

    +A typical pattern seen in population models is that the population grows faster and faster. Why? Is there an underlying (general) mechanism? +Here we will construct a model for cell growth based on a simple difference equation for the growth. We make the following assumptions

    +

    + +

      +
    1. Cells divide after \( T \) seconds on average (one generation)
    2. +
    3. \( 2N \) celles divide into twice as many new cells \( \Delta N \) in a time + interval \( \Delta t \) as \( N \) cells would: \( \Delta N \propto N \)
    4. +
    5. \( N \) cells result in twice as many new individuals \( \Delta N \) in + time \( 2\Delta t \) as in time \( \Delta t \): \( \Delta N \propto\Delta t \)
    6. +
    7. Same proportionality wrt death
    8. +
    9. Proposed model: \( \Delta N = b\Delta t N - d\Delta tN \) for some unknown + constants \( b \) (births) and \( d \) (deaths)
    10. +
    11. Describe evolution in discrete time: \( t_n=n\Delta t \)
    12. +
    13. Program-friendly notation: \( N \) at \( t_n \) is \( N^n \)
    14. +
    15. Math model: \( N^{n+1} = N^n + r\Delta t\, N \) (with \( \ r=b-d \))
    16. +
    17. Program model: N[n+1] = N[n] + r*dt*N[n]
    18. +
    +
    + + +

    +The difference equation can be programmed in a simple was, and in order to get started we +set \( r=1.5 \), \( N^0=1 \), \( \Delta t=0.5 \). The program reads + +

    + + +

    import numpy as np
    +
    +t = np.linspace(0, 10, 21)  # 20 intervals in [0, 10]
    +dt = t[1] - t[0]
    +N = np.zeros(t.size)
    +
    +N[0] = 1
    +r = 0.5
    +
    +for n in range(0, N.size-1, 1):
    +    N[n+1] = N[n] + r*dt*N[n]
    +    print 'N[%d]=%.1f' % (n+1, N[n+1])
    +
    +

    +and it generates the following output +

    + + +

    N[1]=1.2
    +N[2]=1.6
    +N[3]=2.0
    +N[4]=2.4
    +N[5]=3.1
    +N[6]=3.8
    +N[7]=4.8
    +N[8]=6.0
    +N[9]=7.5
    +N[10]=9.3
    +N[11]=11.6
    +N[12]=14.6
    +N[13]=18.2
    +N[14]=22.7
    +N[15]=28.4
    +N[16]=35.5
    +N[17]=44.4
    +N[18]=55.5
    +N[19]=69.4
    +N[20]=86.7
    +
    +

    +This forms our data which later will define our training set. +In this case we defined the value of the parameter \( r \). We could alternatively assume that we just received the +above data file and where asked to use find \( r \). How can we estimate \( r \) from data? + +

    +We can use the difference equation with the experimental data +$$ N^{n+1} = N^n + r\Delta t N^n$$ + +Suppose now that \( N^{n+1} \) and \( N^n \) are known from data. Then we could solve with respect to \( r \) as follows +$$ r = \frac{N^{n+1}-N^n}{N^n\Delta t} $$ + +Suppose we set \( t_1=600 \), \( t_2=1200 \), +\( N^1=140 \) and \( N^2=250 \). We obtain then \( r=0.0013 \). The exact value is \( r = 0.000694 \) +The following code plot +

    + + +

    import numpy as np
    +
    +# Estimate r
    +data = np.loadtxt('ecoli.csv', delimiter=',')
    +t_e = data[:,0]
    +N_e = data[:,1]
    +i = 2  # Data point (i,i+1) used to estimate r
    +r = (N_e[i+1] - N_e[i])/(N_e[i]*(t_e[i+1] - t_e[i]))
    +print 'Estimated r=%.5f' % r
    +# Can experiment with r values and see if the model can
    +# match the data better
    +
    +T = 1200     # cell can divide after T sec
    +t_max = 5*T  # 5 generations in experiment
    +t = np.linspace(0, t_max, 1000)
    +dt = t[1] - t[0]
    +N = np.zeros(t.size)
    +
    +N[0] = 100
    +for n in range(0, len(t)-1, 1):
    +    N[n+1] = N[n] + r*dt*N[n]
    +
    +import matplotlib.pyplot as plt
    +plt.plot(t, N, 'r-', t_e, N_e, 'bo')
    +plt.xlabel('time [s]');  plt.ylabel('N')
    +plt.legend(['model', 'experiment'], loc='upper left')
    +plt.show()
    +
    +

    +We can then change the parameter \( r \) in the program and play around to make a better fit. By now we know that this +'search bythe eye' approach is not the most optimal one. + +

    Predator-Prey model from ecology

    +

    The population dynamics of a simple predator-prey system is a classical example shown in many biology textbooks when ecological @@ -695,18 +794,7 @@ scientific method:

  • trying to extract general behaviors and extract eventual laws or patterns
  • develop mathematical relations for the uncovered regularities/laws and test these by per forming new experiments
  • -
    - -

    -









    - -

    Case study from Hudson bay

    - -

    -

    - -

    Lots of data about populations of hares and lynx collected from furs in Hudson Bay, Canada, are available. It is known that the populations oscillate. Why? Here we start by @@ -716,20 +804,7 @@ Here we start by

  • (fitting parameters in the model to the data)
  • using the model predict the evolution other predator-pray systems
  • -
    - -

    -









    - -

    Hudson bay data

    - -

    -

    - -

    - -

    Most mammalian predators rely on a variety of prey, which complicates mathematical modeling; however, a few predators have become highly specialized and seek almost exclusively a single prey species. An example of this simplified predator-prey interaction is seen in Canadian northern forests, where the populations of the lynx and the snowshoe hare are intertwined in a life and death struggle.

    @@ -764,23 +839,10 @@ One reason that this particular system has been so extensively studied is that t 1920 24.7 8.6 - -

    - - -

    -









    - -

    Plotting the data

    - -

    -

    - -

    -

    import numpy as np
    +
    import numpy as np
     from  matplotlib import pyplot as plt
     
     # Load in data file
    @@ -800,24 +862,9 @@ plt.savefig('Hudson_Bay_data.pdf')
     plt.savefig('Hudson_Bay_data.png')
     plt.show()
     
    - -
    - - -

    -









    - -

    Hares and lynx in Hudson bay from 1900 to 1920

    -





    -

    -









    - -

    Why now create a computer model for the hare and lynx populations?

    -
    -

    We see from the plot that there are indeed fluctuations. We would like to create a mathematical model that explains these @@ -839,21 +886,9 @@ climate and other complicating factors. How significant are these?

  • What causes cycles to slow or speed up?
  • What affects the amplitude of the oscillation or do you expect to see the oscillations damp to a stable equilibrium?
  • With a model we can better understand the data
  • -
  • More important: we can understand the ecology dynamics of - predator-pray populations
  • +
  • More important: Can we understand the ecology dynamics of predator-pray populations?
  • -
    - -

    -









    - -

    The traditional (top-down) approach

    - -

    -

    - -

    The classical way (in all books) is to present the Lotka-Volterra equations: $$ @@ -872,41 +907,6 @@ Here,

  • \( a \), \( b \), \( d \), \( c \) are parameters
  • -Most books quickly establish the model and then use considerable space on -discussing the qualitative properties of this nonlinear system of -ODEs (which cannot be solved) -
    - - -

    -









    - -

    Basic mathematics notation

    -
    - -

    - -

      -
    • Time points: \( t_0,t_1,\ldots,t_m \)
    • -
    • Uniform distribution of time points: \( t_n=n\Delta t \)
    • -
    • \( H^n \): population of hares at time \( t_n \)
    • -
    • \( L^n \): population of lynx at time \( t_n \)
    • -
    • We want to model the changes in populations, \( \Delta H=H^{n+1}-H^n \) - and \( \Delta L=L^{n+1}-L^n \) during a general time interval \( [t_{n+1},t_n] \) - of length \( \Delta t=t_{n+1}-t_n \)
    • -
    -
    - - -

    -









    - -

    Basic dynamics of the population of hares

    - -

    -

    - -

    The population of hares evolves due to births and deaths exactly as a bacteria population: $$ @@ -923,17 +923,7 @@ So in fraction \( b\Delta t HL \), the lynx eat hares. This loss of hares must be accounted for. Subtracted in the equation for hares: $$ \Delta H = a\Delta t H^n - b \Delta t H^nL^n$$ -

    - -

    -









    - -

    Basic dynamics of the population of lynx

    - -

    -

    -

    We assume that the primary growth for the lynx population depends on sufficient food for raising lynx kittens, which implies an adequate source of nutrients from predation on hares. Thus, the growth of the lynx population does not only depend of how many lynx there are, but on how many hares they can eat. In a time interval \( \Delta t HL \) hares and lynx can meet, and in a @@ -943,26 +933,9 @@ contribute to the growth of lynx, again just a fraction of \( d\Delta t HL \). In addition, lynx die just as in the population dynamics with one isolated animal population, leading to a loss \( -c\Delta t L \). -

    - - -

    -

    - -

    The accounting of lynx then looks like $$ \Delta L = d\Delta t H^nL^n - c\Delta t L^n$$ -

    - -

    -









    - -

    Evolution equations

    - -

    -

    -

    By writing up the definition of \( \Delta H \) and \( \Delta L \), and putting all assumed known terms \( H^n \) and \( L^n \) on the right-hand side, we have @@ -977,42 +950,16 @@ Note:

    • These equations are ready to be implemented!
    • -
    • But to start, we need \( H^0 \) and \( L^0 \)
      - (which we can get from the data)
    • +
    • But to start, we need \( H^0 \) and \( L^0 \) (which we can get from the data)
    • We also need values for \( a \), \( b \), \( d \), \( c \)
    • -
    -
    - - -

    -









    - -

    Adapt the model to the Hudson Bay case

    - -

    -

    - -

    - -

    • As always, models tend to be general - as here, applicable to "all" predator-pray systems
    • The critical issue is whether the interaction between hares and lynx is sufficiently well modeled by \( \hbox{const}HL \)
    • The parameters \( a \), \( b \), \( d \), and \( c \) must be estimated from data
    • -
    • Measure time in years
    • -
    • \( t_0=1900 \), \( t_m=1920 \)
    -
    - -

    -









    - -

    The program

    - -

    @@ -1067,28 +1014,23 @@ plt.show()

    -

    -









    - -

    The plot

    -





    -If we perform a least-square fitting, we can find optimal values for the parameters \( a \), \( b \), \( d \), \( c \). The optimal parameters are \( a=0.4807 \), \( b=0.02482 \), \( d=0.9272 \) and \( c=0.02756 \). These parameters result in a slightly modified initial conditions, namely \( H(0) = 34.91 \) and \( L(0)=3.857 \). With these parameters we are now ready to solve the equations and plot these data together with the experimental values. +We will later perform a least-square fitting. Then we can find optimal +values for the parameters \( a \), \( b \), \( d \), \( c \). In our calculations here +we set \( a=0.4807 \), \( b=0.02482 \), \( d=0.9272 \) and \( c=0.02756 \). These +parameters result in a slightly modified initial conditions, namely +\( H(0) = 34.91 \) and \( L(0)=3.857 \).

    -









    - -

    Linear regression in Python

    -
    - -

    +The following Python demonstrates how we can use linear regression to fit for example the population of lynx. +Similarly, we have also used a decision tree algorithm to fit the lynx population data. As expected, the linear regression is not exactly impressive

    -

    import numpy as np
    +
    import numpy as np
     import matplotlib.pyplot as plt
     from IPython.display import display
     import sklearn
    @@ -1107,21 +1049,12 @@ plt.plot(line, regline.predict(line), label= "
     plt.plot(x, y, label= "Linear Regression")
     plt.show()
     
    - -
    - - -

    -









    - -

    Linear Least squares in R

    -
    -

    +The similar code for linear regression in R reads

    -

    HudsonBay = read.csv("src/Hudson_Bay.csv",header=T)
    +
    HudsonBay = read.csv("src/Hudson_Bay.csv",header=T)
     fix(HudsonBay)
     dim(HudsonBay)
     names(HudsonBay)
    @@ -1142,188 +1075,7 @@ confint(linearMod)
     predict(linearMod,data.frame(Year=c(1910,1914,1920)),interval="confidence")
     
    -
    - - -

    -









    - -

    Example: ecoli lab experiment

    - -

    -

    -Typical pattern: -

    -The population grows faster and faster. Why? Is there an underlying (general) mechanism? -

    - -
    - -

    - -

      -
    1. Cells divide after \( T \) seconds on average (one generation)
    2. -
    3. \( 2N \) celles divide into twice as many new cells \( \Delta N \) in a time - interval \( \Delta t \) as \( N \) cells would: \( \Delta N \propto N \)
    4. -
    5. \( N \) cells result in twice as many new individuals \( \Delta N \) in - time \( 2\Delta t \) as in time \( \Delta t \): \( \Delta N \propto\Delta t \)
    6. -
    7. Same proportionality wrt death (repeat reasoning)
    8. -
    9. Proposed model: \( \Delta N = b\Delta t N - d\Delta tN \) for some unknown - constants \( b \) (births) and \( d \) (deaths)
    10. -
    11. Describe evolution in discrete time: \( t_n=n\Delta t \)
    12. -
    13. Program-friendly notation: \( N \) at \( t_n \) is \( N^n \)
    14. -
    15. Math model: \( N^{n+1} = N^n + r\Delta t\, N \) (with \( \ r=b-d \))
    16. -
    17. Program model: N[n+1] = N[n] + r*dt*N[n]
    18. -
    -
    - - -

    -









    - -

    The program

    - -

    -

    - -

    -Let us solve the difference equation in as simple way as possible, -just to train some programming: \( r=1.5 \), \( N^0=1 \), \( \Delta t=0.5 \) - -

    - - -

    import numpy as np
    -
    -t = np.linspace(0, 10, 21)  # 20 intervals in [0, 10]
    -dt = t[1] - t[0]
    -N = np.zeros(t.size)
    -
    -N[0] = 1
    -r = 0.5
    -
    -for n in range(0, N.size-1, 1):
    -    N[n+1] = N[n] + r*dt*N[n]
    -    print 'N[%d]=%.1f' % (n+1, N[n+1])
    -
    - -
    - - -

    -% if FORMAT != 'ipynb': -









    - -

    The output

    - -

    - - -

    N[1]=1.2
    -N[2]=1.6
    -N[3]=2.0
    -N[4]=2.4
    -N[5]=3.1
    -N[6]=3.8
    -N[7]=4.8
    -N[8]=6.0
    -N[9]=7.5
    -N[10]=9.3
    -N[11]=11.6
    -N[12]=14.6
    -N[13]=18.2
    -N[14]=22.7
    -N[15]=28.4
    -N[16]=35.5
    -N[17]=44.4
    -N[18]=55.5
    -N[19]=69.4
    -N[20]=86.7
    -
    -

    -% endif - -

    -









    - -

    Parameter estimation

    - -

    -

    - -

    - -

      -
    • We do not know \( r \)
    • -
    • How can we estimate \( r \) from data?
    • -
    - -We can use the difference equation with the experimental data - -$$ N^{n+1} = N^n + r\Delta t N^n$$ - -Say \( N^{n+1} \) and \( N^n \) are known from data, solve wrt \( r \): - -$$ r = \frac{N^{n+1}-N^n}{N^n\Delta t} $$ - -

    -Use experimental data in the fraction, say \( t_1=600 \), \( t_2=1200 \), -\( N^1=140 \), \( N^2=250 \): \( r=0.0013 \). -

    - - -

    -









    - -

    A program relevant for the biological problem

    - -

    - - -

    -

    - -

    -

    - - -

    import numpy as np
    -
    -# Estimate r
    -data = np.loadtxt('ecoli.csv', delimiter=',')
    -t_e = data[:,0]
    -N_e = data[:,1]
    -i = 2  # Data point (i,i+1) used to estimate r
    -r = (N_e[i+1] - N_e[i])/(N_e[i]*(t_e[i+1] - t_e[i]))
    -print 'Estimated r=%.5f' % r
    -# Can experiment with r values and see if the model can
    -# match the data better
    -
    -T = 1200     # cell can divide after T sec
    -t_max = 5*T  # 5 generations in experiment
    -t = np.linspace(0, t_max, 1000)
    -dt = t[1] - t[0]
    -N = np.zeros(t.size)
    -
    -N[0] = 100
    -for n in range(0, len(t)-1, 1):
    -    N[n+1] = N[n] + r*dt*N[n]
    -
    -import matplotlib.pyplot as plt
    -plt.plot(t, N, 'r-', t_e, N_e, 'bo')
    -plt.xlabel('time [s]');  plt.ylabel('N')
    -plt.legend(['model', 'experiment'], loc='upper left')
    -plt.show()
    -
    -

    -Change r in the program and play around to make a better fit! -

    - - -

    -









    - -

    Simulating financial transactions

    +

    Simulating financial transactions

    The aim here is to simulate financial transactions among financial agents @@ -1397,8 +1149,7 @@ exponentially decreases with \( m' \). We assume that we have \( N=500 \) agents. In each simulation, we need a sufficiently large number of transactions, say \( 10^7 \). Our aim is find the final equilibrium distribution \( w_m \). In order to do that we would need several runs of the above simulations, at least \( 10^3-10^4 \) runs (experiments). -

    Simulation of Transactions

    - +

    Our task is to first set up an algorithm which simulates the above transactions with an initial amount \( m_0 \). The challenge here is to figure out a Monte Carlo simulation based on the @@ -1497,40 +1248,11 @@ $$ showing how money is conserved during a transaction. Select values of \( \lambda =0.25,0.5 \) and \( \lambda=0.9 \) and try to extract the corresponding - equilibrium distributions and compare these with the Gibbs distribution. Comment your results. -Extract a parametrization of the above curves, see for example Patriarca and collaborators and see if you can parametrize the high-end tails of the distributions in terms of power laws. Comment your results. + equilibrium distributions and compare these with the Gibbs distribution. We will use this model to +extract a parametrization of the above curves, see for example Patriarca and collaborators. -

    -In the studies above the agents were selected randomly, irrespective of whether we allowed for -saving or not during a transaction. What is often observed is that various agents tend to make preferences for for whom to interact with. We will now study the evolution of the distribution of wealth \( w_m \) by assuming that there is a likelihood -$$ -p_{ij} \propto \vert m_i-m_j\vert^{-\alpha}, -$$ +

    Particle in one dimension and velocity distribution

    -for an interaction between agents \( i \) and \( j \) with respective wealths \( m_i \) and \( m_j \). The parameter \( \alpha > 0 \). For \( \alpha=0 \) we recover our model from part 5a). -Perform the same analysis as previously with \( N=500 \) as well as with \( N=1000 \) agents and study the distribution of wealth for \( \alpha =0.5 \), \( \alpha =1.0 \), \( \alpha =1.5 \) and \( \alpha =2.0 \). -You should try to reproduce Figure 1 of Goswami and Sen. -Extract the tail of the distribution and see if it follows a Pareto distribution -$$ -w_m\propto m^{-1-\alpha}. -$$ - -What happens if \( \alpha \gg 1 \)? - -

    -Perform the analysis with and without a saving \( \lambda \) on each transaction and comment your results. -We add to the previous probability the possibility that two agents who interact have performed similar transactions earlier. That is, in addition to being financially close, we assume that the likelihood for interacting increases if two agents have interacted earlier. -We add this feature by modifying the previous likelihood to -$$ -p_{ij} \propto \vert m_i-m_j\vert^{-\alpha}\left(c_{ij}+1\right)^{\gamma}, -$$ - -where \( c_{ij} \) represents the number of previous interactions that have taken place between \( i \) and \( j \). The factor \( 1 \) is added in order to ensure that if they have not interacted earlier they can still interact. Perform similar studies as above with \( N=1000 \), \( \alpha=1.0 \) and \( \alpha=2.0 \) using \( \gamma = 0.0, 1.0, 2.0, 3.0 \) and \( 4.0 \). Plot the wealth distributions for these cases and try to extract eventual power law tails with and without a saving \( \lambda \) in each transaction. Comment your results and compare them with figures 5 and 6 of Goswami and Sen. - -

    -









    - -

    Particle in one dimension an velocity distribution

    diff --git a/doc/pub/How2ReadData/html/How2ReadData.html b/doc/pub/How2ReadData/html/How2ReadData.html index ded14b424..c401e5a8f 100644 --- a/doc/pub/How2ReadData/html/How2ReadData.html +++ b/doc/pub/How2ReadData/html/How2ReadData.html @@ -75,46 +75,14 @@ div { text-align: justify; text-justify: inter-word; } None, '___sec5'), ('Non-Linear Least squares in R', 2, None, '___sec6'), - ('Predator-Prey model from ecology', 2, None, '___sec7'), - ('Case study from Hudson bay', 2, None, '___sec8'), - ('Hudson bay data', 2, None, '___sec9'), - ('Plotting the data', 2, None, '___sec10'), - ('Hares and lynx in Hudson bay from 1900 to 1920', - 2, + ('Examples', 2, None, '___sec7'), + ('Ecoli lab experiment', 3, None, '___sec8'), + ('Predator-Prey model from ecology', 3, None, '___sec9'), + ('Simulating financial transactions', 3, None, '___sec10'), + ('Particle in one dimension and velocity distribution', + 3, None, - '___sec11'), - ('Why now create a computer model for the hare and lynx ' - 'populations?', - 2, - None, - '___sec12'), - ('The traditional (top-down) approach', 2, None, '___sec13'), - ('Basic mathematics notation', 2, None, '___sec14'), - ('Basic dynamics of the population of hares', - 2, - None, - '___sec15'), - ('Basic dynamics of the population of lynx', 2, None, '___sec16'), - ('Evolution equations', 2, None, '___sec17'), - ('Adapt the model to the Hudson Bay case', 2, None, '___sec18'), - ('The program', 2, None, '___sec19'), - ('The plot', 2, None, '___sec20'), - ('Linear regression in Python', 2, None, '___sec21'), - ('Linear Least squares in R', 2, None, '___sec22'), - ('Example: ecoli lab experiment', 2, None, '___sec23'), - ('The program', 2, None, '___sec24'), - ('The output', 2, None, '___sec25'), - ('Parameter estimation', 2, None, '___sec26'), - ('A program relevant for the biological problem', - 2, - None, - '___sec27'), - ('Simulating financial transactions', 2, None, '___sec28'), - ('Simulation of Transactions', 3, None, '___sec29'), - ('Particle in one dimension an velocity distribution', - 2, - None, - '___sec30')]} + '___sec11')]} end of tocinfo --> @@ -590,47 +558,39 @@ a linear \( x \)-dependence we study now a cubic polynomial and use the polynomi

    -

    import numpy as np
    -import matplotlib.pyplot as plt
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +import random
     from sklearn.linear_model import Ridge
     from sklearn.preprocessing import PolynomialFeatures
     from sklearn.pipeline import make_pipeline
    +from sklearn.linear_model import LinearRegression
     
    -def f(x):
    -    """ function to approximate by polynomial interpolation"""
    -    return x*x*x
    -
    -# generate points used to plot                                                  
    -x_plot = np.linspace(0, 10, 100)
    -
    -# generate points and keep a subset of them                                     
    -x = np.linspace(0, 10, 100)
    -rng = np.random.RandomState(0)
    -rng.shuffle(x)
    -x = np.sort(x[:20])
    -y = f(x)
    -# create matrix versions of these arrays                                        
    -X = x[:, np.newaxis]
    -X_plot = x_plot[:, np.newaxis]
    -
    -colors = ['teal', 'yellowgreen', 'gold']
    -lw = 2
    -plt.plot(x_plot, f(x_plot), color='cornflowerblue', linewidth=lw,
    -         label="ground truth")
    -plt.scatter(x, y, color='navy', s=30, marker='o', label="training points")
    -
    -for count, degree in enumerate([3, 4, 5]):
    -    model = make_pipeline(PolynomialFeatures(degree), Ridge())
    -    model.fit(X, y)
    -    y_plot = model.predict(X_plot)
    -    plt.plot(x_plot, y_plot, color=colors[count], linewidth=lw,
    -             label="degree %d" % degree)
    -
    -plt.legend(loc='lower left')
    +x=np.linspace(0.02,0.98,200)
    +noise = np.asarray(random.sample((range(200)),200))
    +y=x**3*noise
    +yn=x**3*100
    +poly3 = PolynomialFeatures(degree=3)
    +X = poly3.fit_transform(x[:,np.newaxis])
    +clf3 = LinearRegression()
    +clf3.fit(X,y)
     
    +Xplot=poly3.fit_transform(x[:,np.newaxis])
    +poly3_plot=plt.plot(x, clf3.predict(Xplot), label='Cubic Fit')
    +plt.plot(x,yn, color='red', label="True Cubic")
    +plt.scatter(x, y, label='Data', color='orange', s=15)
    +plt.legend()
     plt.show()
    +
    +def error(a):
    +    for i in y:
    +        err=(y-yn)/yn
    +    return abs(np.sum(err))/len(err)
    +
    +print (error(y))
     

    +Similarly, using R, we can perform similar studies. The following R code illustrates this.









    Non-Linear Least squares in R

    @@ -664,6 +624,9 @@ text(0, 0.5 +

    +In our lectures on regression analysis (and other ones as well), we will discuss in more details various R functionalities. +

    Another useful Python package is pandas, which is an open source library @@ -682,11 +645,147 @@ display(data_pandas)











    -

    Predator-Prey model from ecology

    +

    Examples

    +We present here several examples, with pertinent Python codes that we +will us to illustrate various machine learning methods and ways to +analyze, from simple to complex, various data sets. Many of these +examples allow us to generate the data we want to analyze, following +much of the same philosophy we discussed above when +fitting various polynomials. + +

    +We start with a simple exponential growth model that is meant to mimick an ecoli lab experiment. +We can easily model this system and then produce the data used to train various machine learning algorithms. +Another model from the life sciences is the so-called predator-prey model from ecology. Thereafter we present +a simple model for financial transactions before moving to a random walk model and ending with +the simulation of velocities of a non-interacting atom or molecule confined to move in a one-dimensional region. + +

    Ecoli lab experiment

    + +

    +A typical pattern seen in population models is that the population grows faster and faster. Why? Is there an underlying (general) mechanism? +Here we will construct a model for cell growth based on a simple difference equation for the growth. We make the following assumptions

    +

    + +

      +
    1. Cells divide after \( T \) seconds on average (one generation)
    2. +
    3. \( 2N \) celles divide into twice as many new cells \( \Delta N \) in a time + interval \( \Delta t \) as \( N \) cells would: \( \Delta N \propto N \)
    4. +
    5. \( N \) cells result in twice as many new individuals \( \Delta N \) in + time \( 2\Delta t \) as in time \( \Delta t \): \( \Delta N \propto\Delta t \)
    6. +
    7. Same proportionality wrt death
    8. +
    9. Proposed model: \( \Delta N = b\Delta t N - d\Delta tN \) for some unknown + constants \( b \) (births) and \( d \) (deaths)
    10. +
    11. Describe evolution in discrete time: \( t_n=n\Delta t \)
    12. +
    13. Program-friendly notation: \( N \) at \( t_n \) is \( N^n \)
    14. +
    15. Math model: \( N^{n+1} = N^n + r\Delta t\, N \) (with \( \ r=b-d \))
    16. +
    17. Program model: N[n+1] = N[n] + r*dt*N[n]
    18. +
    +
    + + +

    +The difference equation can be programmed in a simple was, and in order to get started we +set \( r=1.5 \), \( N^0=1 \), \( \Delta t=0.5 \). The program reads + +

    + + +

    import numpy as np
    +
    +t = np.linspace(0, 10, 21)  # 20 intervals in [0, 10]
    +dt = t[1] - t[0]
    +N = np.zeros(t.size)
    +
    +N[0] = 1
    +r = 0.5
    +
    +for n in range(0, N.size-1, 1):
    +    N[n+1] = N[n] + r*dt*N[n]
    +    print 'N[%d]=%.1f' % (n+1, N[n+1])
    +
    +

    +and it generates the following output +

    + + +

    N[1]=1.2
    +N[2]=1.6
    +N[3]=2.0
    +N[4]=2.4
    +N[5]=3.1
    +N[6]=3.8
    +N[7]=4.8
    +N[8]=6.0
    +N[9]=7.5
    +N[10]=9.3
    +N[11]=11.6
    +N[12]=14.6
    +N[13]=18.2
    +N[14]=22.7
    +N[15]=28.4
    +N[16]=35.5
    +N[17]=44.4
    +N[18]=55.5
    +N[19]=69.4
    +N[20]=86.7
    +
    +

    +This forms our data which later will define our training set. +In this case we defined the value of the parameter \( r \). We could alternatively assume that we just received the +above data file and where asked to use find \( r \). How can we estimate \( r \) from data? + +

    +We can use the difference equation with the experimental data +$$ N^{n+1} = N^n + r\Delta t N^n$$ + +Suppose now that \( N^{n+1} \) and \( N^n \) are known from data. Then we could solve with respect to \( r \) as follows +$$ r = \frac{N^{n+1}-N^n}{N^n\Delta t} $$ + +Suppose we set \( t_1=600 \), \( t_2=1200 \), +\( N^1=140 \) and \( N^2=250 \). We obtain then \( r=0.0013 \). The exact value is \( r = 0.000694 \) +The following code plot +

    + + +

    import numpy as np
    +
    +# Estimate r
    +data = np.loadtxt('ecoli.csv', delimiter=',')
    +t_e = data[:,0]
    +N_e = data[:,1]
    +i = 2  # Data point (i,i+1) used to estimate r
    +r = (N_e[i+1] - N_e[i])/(N_e[i]*(t_e[i+1] - t_e[i]))
    +print 'Estimated r=%.5f' % r
    +# Can experiment with r values and see if the model can
    +# match the data better
    +
    +T = 1200     # cell can divide after T sec
    +t_max = 5*T  # 5 generations in experiment
    +t = np.linspace(0, t_max, 1000)
    +dt = t[1] - t[0]
    +N = np.zeros(t.size)
    +
    +N[0] = 100
    +for n in range(0, len(t)-1, 1):
    +    N[n+1] = N[n] + r*dt*N[n]
    +
    +import matplotlib.pyplot as plt
    +plt.plot(t, N, 'r-', t_e, N_e, 'bo')
    +plt.xlabel('time [s]');  plt.ylabel('N')
    +plt.legend(['model', 'experiment'], loc='upper left')
    +plt.show()
    +
    +

    +We can then change the parameter \( r \) in the program and play around to make a better fit. By now we know that this +'search bythe eye' approach is not the most optimal one. + +

    Predator-Prey model from ecology

    +

    The population dynamics of a simple predator-prey system is a classical example shown in many biology textbooks when ecological @@ -700,18 +799,7 @@ scientific method:

  • trying to extract general behaviors and extract eventual laws or patterns
  • develop mathematical relations for the uncovered regularities/laws and test these by per forming new experiments
  • -
    - -

    -









    - -

    Case study from Hudson bay

    - -

    -

    - -

    Lots of data about populations of hares and lynx collected from furs in Hudson Bay, Canada, are available. It is known that the populations oscillate. Why? Here we start by @@ -721,20 +809,7 @@ Here we start by

  • (fitting parameters in the model to the data)
  • using the model predict the evolution other predator-pray systems
  • -
    - -

    -









    - -

    Hudson bay data

    - -

    -

    - -

    - -

    Most mammalian predators rely on a variety of prey, which complicates mathematical modeling; however, a few predators have become highly specialized and seek almost exclusively a single prey species. An example of this simplified predator-prey interaction is seen in Canadian northern forests, where the populations of the lynx and the snowshoe hare are intertwined in a life and death struggle.

    @@ -769,19 +844,6 @@ One reason that this particular system has been so extensively studied is that t 1920 24.7 8.6 - -

    - - -

    -









    - -

    Plotting the data

    - -

    -

    - -

    @@ -805,24 +867,9 @@ plt.savefig( plt.savefig('Hudson_Bay_data.png') plt.show()

    - -
    - - -

    -









    - -

    Hares and lynx in Hudson bay from 1900 to 1920

    -





    -

    -









    - -

    Why now create a computer model for the hare and lynx populations?

    -
    -

    We see from the plot that there are indeed fluctuations. We would like to create a mathematical model that explains these @@ -844,21 +891,9 @@ climate and other complicating factors. How significant are these?

  • What causes cycles to slow or speed up?
  • What affects the amplitude of the oscillation or do you expect to see the oscillations damp to a stable equilibrium?
  • With a model we can better understand the data
  • -
  • More important: we can understand the ecology dynamics of - predator-pray populations
  • +
  • More important: Can we understand the ecology dynamics of predator-pray populations?
  • -
    - -

    -









    - -

    The traditional (top-down) approach

    - -

    -

    - -

    The classical way (in all books) is to present the Lotka-Volterra equations: $$ @@ -877,41 +912,6 @@ Here,

  • \( a \), \( b \), \( d \), \( c \) are parameters
  • -Most books quickly establish the model and then use considerable space on -discussing the qualitative properties of this nonlinear system of -ODEs (which cannot be solved) -
    - - -

    -









    - -

    Basic mathematics notation

    -
    - -

    - -

      -
    • Time points: \( t_0,t_1,\ldots,t_m \)
    • -
    • Uniform distribution of time points: \( t_n=n\Delta t \)
    • -
    • \( H^n \): population of hares at time \( t_n \)
    • -
    • \( L^n \): population of lynx at time \( t_n \)
    • -
    • We want to model the changes in populations, \( \Delta H=H^{n+1}-H^n \) - and \( \Delta L=L^{n+1}-L^n \) during a general time interval \( [t_{n+1},t_n] \) - of length \( \Delta t=t_{n+1}-t_n \)
    • -
    -
    - - -

    -









    - -

    Basic dynamics of the population of hares

    - -

    -

    - -

    The population of hares evolves due to births and deaths exactly as a bacteria population: $$ @@ -928,17 +928,7 @@ So in fraction \( b\Delta t HL \), the lynx eat hares. This loss of hares must be accounted for. Subtracted in the equation for hares: $$ \Delta H = a\Delta t H^n - b \Delta t H^nL^n$$ -

    - -

    -









    - -

    Basic dynamics of the population of lynx

    - -

    -

    -

    We assume that the primary growth for the lynx population depends on sufficient food for raising lynx kittens, which implies an adequate source of nutrients from predation on hares. Thus, the growth of the lynx population does not only depend of how many lynx there are, but on how many hares they can eat. In a time interval \( \Delta t HL \) hares and lynx can meet, and in a @@ -948,26 +938,9 @@ contribute to the growth of lynx, again just a fraction of \( d\Delta t HL \). In addition, lynx die just as in the population dynamics with one isolated animal population, leading to a loss \( -c\Delta t L \). -

    - - -

    -

    - -

    The accounting of lynx then looks like $$ \Delta L = d\Delta t H^nL^n - c\Delta t L^n$$ -

    - -

    -









    - -

    Evolution equations

    - -

    -

    -

    By writing up the definition of \( \Delta H \) and \( \Delta L \), and putting all assumed known terms \( H^n \) and \( L^n \) on the right-hand side, we have @@ -982,42 +955,16 @@ Note:

    • These equations are ready to be implemented!
    • -
    • But to start, we need \( H^0 \) and \( L^0 \)
      - (which we can get from the data)
    • +
    • But to start, we need \( H^0 \) and \( L^0 \) (which we can get from the data)
    • We also need values for \( a \), \( b \), \( d \), \( c \)
    • -
    -
    - - -

    -









    - -

    Adapt the model to the Hudson Bay case

    - -

    -

    - -

    - -

    • As always, models tend to be general - as here, applicable to "all" predator-pray systems
    • The critical issue is whether the interaction between hares and lynx is sufficiently well modeled by \( \hbox{const}HL \)
    • The parameters \( a \), \( b \), \( d \), and \( c \) must be estimated from data
    • -
    • Measure time in years
    • -
    • \( t_0=1900 \), \( t_m=1920 \)
    -
    - -

    -









    - -

    The program

    - -

    @@ -1072,24 +1019,19 @@ plt.show()

    -

    -









    - -

    The plot

    -





    -If we perform a least-square fitting, we can find optimal values for the parameters \( a \), \( b \), \( d \), \( c \). The optimal parameters are \( a=0.4807 \), \( b=0.02482 \), \( d=0.9272 \) and \( c=0.02756 \). These parameters result in a slightly modified initial conditions, namely \( H(0) = 34.91 \) and \( L(0)=3.857 \). With these parameters we are now ready to solve the equations and plot these data together with the experimental values. +We will later perform a least-square fitting. Then we can find optimal +values for the parameters \( a \), \( b \), \( d \), \( c \). In our calculations here +we set \( a=0.4807 \), \( b=0.02482 \), \( d=0.9272 \) and \( c=0.02756 \). These +parameters result in a slightly modified initial conditions, namely +\( H(0) = 34.91 \) and \( L(0)=3.857 \).

    -









    - -

    Linear regression in Python

    -
    - -

    +The following Python demonstrates how we can use linear regression to fit for example the population of lynx. +Similarly, we have also used a decision tree algorithm to fit the lynx population data. As expected, the linear regression is not exactly impressive

    @@ -1112,17 +1054,8 @@ plt.plot(line, regline.plot(x, y, label= "Linear Regression") plt.show()

    - -
    - - -

    -









    - -

    Linear Least squares in R

    -
    -

    +The similar code for linear regression in R reads

    @@ -1147,188 +1080,7 @@ confint(linearMod) predict(linearMod,data.frame(Year=c(1910,1914,1920)),interval="confidence")

    -
    - - -

    -









    - -

    Example: ecoli lab experiment

    - -

    -

    -Typical pattern: -

    -The population grows faster and faster. Why? Is there an underlying (general) mechanism? -

    - -
    - -

    - -

      -
    1. Cells divide after \( T \) seconds on average (one generation)
    2. -
    3. \( 2N \) celles divide into twice as many new cells \( \Delta N \) in a time - interval \( \Delta t \) as \( N \) cells would: \( \Delta N \propto N \)
    4. -
    5. \( N \) cells result in twice as many new individuals \( \Delta N \) in - time \( 2\Delta t \) as in time \( \Delta t \): \( \Delta N \propto\Delta t \)
    6. -
    7. Same proportionality wrt death (repeat reasoning)
    8. -
    9. Proposed model: \( \Delta N = b\Delta t N - d\Delta tN \) for some unknown - constants \( b \) (births) and \( d \) (deaths)
    10. -
    11. Describe evolution in discrete time: \( t_n=n\Delta t \)
    12. -
    13. Program-friendly notation: \( N \) at \( t_n \) is \( N^n \)
    14. -
    15. Math model: \( N^{n+1} = N^n + r\Delta t\, N \) (with \( \ r=b-d \))
    16. -
    17. Program model: N[n+1] = N[n] + r*dt*N[n]
    18. -
    -
    - - -

    -









    - -

    The program

    - -

    -

    - -

    -Let us solve the difference equation in as simple way as possible, -just to train some programming: \( r=1.5 \), \( N^0=1 \), \( \Delta t=0.5 \) - -

    - - -

    import numpy as np
    -
    -t = np.linspace(0, 10, 21)  # 20 intervals in [0, 10]
    -dt = t[1] - t[0]
    -N = np.zeros(t.size)
    -
    -N[0] = 1
    -r = 0.5
    -
    -for n in range(0, N.size-1, 1):
    -    N[n+1] = N[n] + r*dt*N[n]
    -    print 'N[%d]=%.1f' % (n+1, N[n+1])
    -
    - -
    - - -

    -% if FORMAT != 'ipynb': -









    - -

    The output

    - -

    - - -

    N[1]=1.2
    -N[2]=1.6
    -N[3]=2.0
    -N[4]=2.4
    -N[5]=3.1
    -N[6]=3.8
    -N[7]=4.8
    -N[8]=6.0
    -N[9]=7.5
    -N[10]=9.3
    -N[11]=11.6
    -N[12]=14.6
    -N[13]=18.2
    -N[14]=22.7
    -N[15]=28.4
    -N[16]=35.5
    -N[17]=44.4
    -N[18]=55.5
    -N[19]=69.4
    -N[20]=86.7
    -
    -

    -% endif - -

    -









    - -

    Parameter estimation

    - -

    -

    - -

    - -

      -
    • We do not know \( r \)
    • -
    • How can we estimate \( r \) from data?
    • -
    - -We can use the difference equation with the experimental data - -$$ N^{n+1} = N^n + r\Delta t N^n$$ - -Say \( N^{n+1} \) and \( N^n \) are known from data, solve wrt \( r \): - -$$ r = \frac{N^{n+1}-N^n}{N^n\Delta t} $$ - -

    -Use experimental data in the fraction, say \( t_1=600 \), \( t_2=1200 \), -\( N^1=140 \), \( N^2=250 \): \( r=0.0013 \). -

    - - -

    -









    - -

    A program relevant for the biological problem

    - -

    - - -

    -

    - -

    -

    - - -

    import numpy as np
    -
    -# Estimate r
    -data = np.loadtxt('ecoli.csv', delimiter=',')
    -t_e = data[:,0]
    -N_e = data[:,1]
    -i = 2  # Data point (i,i+1) used to estimate r
    -r = (N_e[i+1] - N_e[i])/(N_e[i]*(t_e[i+1] - t_e[i]))
    -print 'Estimated r=%.5f' % r
    -# Can experiment with r values and see if the model can
    -# match the data better
    -
    -T = 1200     # cell can divide after T sec
    -t_max = 5*T  # 5 generations in experiment
    -t = np.linspace(0, t_max, 1000)
    -dt = t[1] - t[0]
    -N = np.zeros(t.size)
    -
    -N[0] = 100
    -for n in range(0, len(t)-1, 1):
    -    N[n+1] = N[n] + r*dt*N[n]
    -
    -import matplotlib.pyplot as plt
    -plt.plot(t, N, 'r-', t_e, N_e, 'bo')
    -plt.xlabel('time [s]');  plt.ylabel('N')
    -plt.legend(['model', 'experiment'], loc='upper left')
    -plt.show()
    -
    -

    -Change r in the program and play around to make a better fit! -

    - - -

    -









    - -

    Simulating financial transactions

    +

    Simulating financial transactions

    The aim here is to simulate financial transactions among financial agents @@ -1402,8 +1154,7 @@ exponentially decreases with \( m' \). We assume that we have \( N=500 \) agents. In each simulation, we need a sufficiently large number of transactions, say \( 10^7 \). Our aim is find the final equilibrium distribution \( w_m \). In order to do that we would need several runs of the above simulations, at least \( 10^3-10^4 \) runs (experiments). -

    Simulation of Transactions

    - +

    Our task is to first set up an algorithm which simulates the above transactions with an initial amount \( m_0 \). The challenge here is to figure out a Monte Carlo simulation based on the @@ -1502,40 +1253,11 @@ $$ showing how money is conserved during a transaction. Select values of \( \lambda =0.25,0.5 \) and \( \lambda=0.9 \) and try to extract the corresponding - equilibrium distributions and compare these with the Gibbs distribution. Comment your results. -Extract a parametrization of the above curves, see for example Patriarca and collaborators and see if you can parametrize the high-end tails of the distributions in terms of power laws. Comment your results. + equilibrium distributions and compare these with the Gibbs distribution. We will use this model to +extract a parametrization of the above curves, see for example Patriarca and collaborators. -

    -In the studies above the agents were selected randomly, irrespective of whether we allowed for -saving or not during a transaction. What is often observed is that various agents tend to make preferences for for whom to interact with. We will now study the evolution of the distribution of wealth \( w_m \) by assuming that there is a likelihood -$$ -p_{ij} \propto \vert m_i-m_j\vert^{-\alpha}, -$$ +

    Particle in one dimension and velocity distribution

    -for an interaction between agents \( i \) and \( j \) with respective wealths \( m_i \) and \( m_j \). The parameter \( \alpha > 0 \). For \( \alpha=0 \) we recover our model from part 5a). -Perform the same analysis as previously with \( N=500 \) as well as with \( N=1000 \) agents and study the distribution of wealth for \( \alpha =0.5 \), \( \alpha =1.0 \), \( \alpha =1.5 \) and \( \alpha =2.0 \). -You should try to reproduce Figure 1 of Goswami and Sen. -Extract the tail of the distribution and see if it follows a Pareto distribution -$$ -w_m\propto m^{-1-\alpha}. -$$ - -What happens if \( \alpha \gg 1 \)? - -

    -Perform the analysis with and without a saving \( \lambda \) on each transaction and comment your results. -We add to the previous probability the possibility that two agents who interact have performed similar transactions earlier. That is, in addition to being financially close, we assume that the likelihood for interacting increases if two agents have interacted earlier. -We add this feature by modifying the previous likelihood to -$$ -p_{ij} \propto \vert m_i-m_j\vert^{-\alpha}\left(c_{ij}+1\right)^{\gamma}, -$$ - -where \( c_{ij} \) represents the number of previous interactions that have taken place between \( i \) and \( j \). The factor \( 1 \) is added in order to ensure that if they have not interacted earlier they can still interact. Perform similar studies as above with \( N=1000 \), \( \alpha=1.0 \) and \( \alpha=2.0 \) using \( \gamma = 0.0, 1.0, 2.0, 3.0 \) and \( 4.0 \). Plot the wealth distributions for these cases and try to extract eventual power law tails with and without a saving \( \lambda \) in each transaction. Comment your results and compare them with figures 5 and 6 of Goswami and Sen. - -

    -









    - -

    Particle in one dimension an velocity distribution

    diff --git a/doc/pub/How2ReadData/ipynb/How2ReadData.ipynb b/doc/pub/How2ReadData/ipynb/How2ReadData.ipynb index 3e36c775f..106fc8862 100644 --- a/doc/pub/How2ReadData/ipynb/How2ReadData.ipynb +++ b/doc/pub/How2ReadData/ipynb/How2ReadData.ipynb @@ -545,51 +545,43 @@ }, "outputs": [], "source": [ - "import numpy as np\n", "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import random\n", "from sklearn.linear_model import Ridge\n", "from sklearn.preprocessing import PolynomialFeatures\n", "from sklearn.pipeline import make_pipeline\n", + "from sklearn.linear_model import LinearRegression\n", "\n", - "def f(x):\n", - " \"\"\" function to approximate by polynomial interpolation\"\"\"\n", - " return x*x*x\n", + "x=np.linspace(0.02,0.98,200)\n", + "noise = np.asarray(random.sample((range(200)),200))\n", + "y=x**3*noise\n", + "yn=x**3*100\n", + "poly3 = PolynomialFeatures(degree=3)\n", + "X = poly3.fit_transform(x[:,np.newaxis])\n", + "clf3 = LinearRegression()\n", + "clf3.fit(X,y)\n", "\n", - "# generate points used to plot \n", - "x_plot = np.linspace(0, 10, 100)\n", + "Xplot=poly3.fit_transform(x[:,np.newaxis])\n", + "poly3_plot=plt.plot(x, clf3.predict(Xplot), label='Cubic Fit')\n", + "plt.plot(x,yn, color='red', label=\"True Cubic\")\n", + "plt.scatter(x, y, label='Data', color='orange', s=15)\n", + "plt.legend()\n", + "plt.show()\n", "\n", - "# generate points and keep a subset of them \n", - "x = np.linspace(0, 10, 100)\n", - "rng = np.random.RandomState(0)\n", - "rng.shuffle(x)\n", - "x = np.sort(x[:20])\n", - "y = f(x)\n", - "# create matrix versions of these arrays \n", - "X = x[:, np.newaxis]\n", - "X_plot = x_plot[:, np.newaxis]\n", + "def error(a):\n", + " for i in y:\n", + " err=(y-yn)/yn\n", + " return abs(np.sum(err))/len(err)\n", "\n", - "colors = ['teal', 'yellowgreen', 'gold']\n", - "lw = 2\n", - "plt.plot(x_plot, f(x_plot), color='cornflowerblue', linewidth=lw,\n", - " label=\"ground truth\")\n", - "plt.scatter(x, y, color='navy', s=30, marker='o', label=\"training points\")\n", - "\n", - "for count, degree in enumerate([3, 4, 5]):\n", - " model = make_pipeline(PolynomialFeatures(degree), Ridge())\n", - " model.fit(X, y)\n", - " y_plot = model.predict(X_plot)\n", - " plt.plot(x_plot, y_plot, color=colors[count], linewidth=lw,\n", - " label=\"degree %d\" % degree)\n", - "\n", - "plt.legend(loc='lower left')\n", - "\n", - "plt.show()" + "print (error(y))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "Similarly, using **R**, we can perform similar studies. The following **R** code illustrates this.\n", "## Non-Linear Least squares in R" ] }, @@ -622,6 +614,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "In our lectures on regression analysis (and other ones as well), we will discuss in more details various **R** functionalities. \n", + "\n", + "\n", "Another useful Python package is\n", "[pandas](https://pandas.pydata.org/), which is an open source library\n", "providing high-performance, easy-to-use data structures and data\n", @@ -647,7 +642,199 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Predator-Prey model from ecology\n", + "## Examples\n", + "\n", + "We present here several examples, with pertinent Python codes that we\n", + "will us to illustrate various machine learning methods and ways to\n", + "analyze, from simple to complex, various data sets. Many of these\n", + "examples allow us to generate the data we want to analyze, following\n", + "much of the same philosophy we discussed above when\n", + "fitting various polynomials.\n", + "\n", + "We start with a simple exponential growth model that is meant to mimick an ecoli lab experiment.\n", + "We can easily model this system and then produce the data used to train various machine learning algorithms.\n", + "Another model from the life sciences is the so-called predator-prey model from ecology. Thereafter we present \n", + "a simple model for financial transactions before moving to a random walk model and ending with \n", + "the simulation of velocities of a non-interacting atom or molecule confined to move in a one-dimensional region.\n", + "\n", + "\n", + "### Ecoli lab experiment\n", + "\n", + "A typical pattern seen in population models is that the population grows faster and faster. [Why? Is there an underlying (general) mechanism](http://www.zo.utexas.edu/courses/Thoc/PopGrowth.html)?\n", + "Here we will construct a model for cell growth based on a simple difference equation for the growth. We make the following assumptions\n", + "1. Cells divide after $T$ seconds on average (one generation)\n", + "\n", + "2. $2N$ celles divide into twice as many new cells $\\Delta N$ in a time\n", + " interval $\\Delta t$ as $N$ cells would: $\\Delta N \\propto N$\n", + "\n", + "3. $N$ cells result in twice as many new individuals $\\Delta N$ in\n", + " time $2\\Delta t$ as in time $\\Delta t$: $\\Delta N \\propto\\Delta t$\n", + "\n", + "4. Same proportionality wrt death \n", + "\n", + "5. Proposed model: $\\Delta N = b\\Delta t N - d\\Delta tN$ for some unknown\n", + " constants $b$ (births) and $d$ (deaths)\n", + "\n", + "6. Describe evolution in discrete time: $t_n=n\\Delta t$\n", + "\n", + "7. Program-friendly notation: $N$ at $t_n$ is $N^n$\n", + "\n", + "8. Math model: $N^{n+1} = N^n + r\\Delta t\\, N$ (with $\\ r=b-d$)\n", + "\n", + "9. Program model: `N[n+1] = N[n] + r*dt*N[n]`\n", + "\n", + "\n", + "\n", + "The difference equation can be programmed in a simple was, and in order to get started we\n", + "set $r=1.5$, $N^0=1$, $\\Delta t=0.5$. The program reads" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "t = np.linspace(0, 10, 21) # 20 intervals in [0, 10]\n", + "dt = t[1] - t[0]\n", + "N = np.zeros(t.size)\n", + "\n", + "N[0] = 1\n", + "r = 0.5\n", + "\n", + "for n in range(0, N.size-1, 1):\n", + " N[n+1] = N[n] + r*dt*N[n]\n", + " print 'N[%d]=%.1f' % (n+1, N[n+1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and it generates the following output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " N[1]=1.2\n", + " N[2]=1.6\n", + " N[3]=2.0\n", + " N[4]=2.4\n", + " N[5]=3.1\n", + " N[6]=3.8\n", + " N[7]=4.8\n", + " N[8]=6.0\n", + " N[9]=7.5\n", + " N[10]=9.3\n", + " N[11]=11.6\n", + " N[12]=14.6\n", + " N[13]=18.2\n", + " N[14]=22.7\n", + " N[15]=28.4\n", + " N[16]=35.5\n", + " N[17]=44.4\n", + " N[18]=55.5\n", + " N[19]=69.4\n", + " N[20]=86.7\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This forms our data which later will define our training set. \n", + "In this case we defined the value of the parameter $r$. We could alternatively assume that we just received the \n", + "above data file and where asked to use find $r$. How can we estimate $r$ from data?\n", + "\n", + "We can use the difference equation with the experimental data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "N^{n+1} = N^n + r\\Delta t N^n\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suppose now that $N^{n+1}$ and $N^n$ are known from data. Then we could solve with respect to $r$ as follows" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "r = \\frac{N^{n+1}-N^n}{N^n\\Delta t}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suppose we set $t_1=600$, $t_2=1200$,\n", + "$N^1=140$ and $N^2=250$. We obtain then $r=0.0013$. The exact value is $r = 0.000694$\n", + "The following code plot" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "# Estimate r\n", + "data = np.loadtxt('ecoli.csv', delimiter=',')\n", + "t_e = data[:,0]\n", + "N_e = data[:,1]\n", + "i = 2 # Data point (i,i+1) used to estimate r\n", + "r = (N_e[i+1] - N_e[i])/(N_e[i]*(t_e[i+1] - t_e[i]))\n", + "print 'Estimated r=%.5f' % r\n", + "# Can experiment with r values and see if the model can\n", + "# match the data better\n", + "\n", + "T = 1200 # cell can divide after T sec\n", + "t_max = 5*T # 5 generations in experiment\n", + "t = np.linspace(0, t_max, 1000)\n", + "dt = t[1] - t[0]\n", + "N = np.zeros(t.size)\n", + "\n", + "N[0] = 100\n", + "for n in range(0, len(t)-1, 1):\n", + " N[n+1] = N[n] + r*dt*N[n]\n", + "\n", + "import matplotlib.pyplot as plt\n", + "plt.plot(t, N, 'r-', t_e, N_e, 'bo')\n", + "plt.xlabel('time [s]'); plt.ylabel('N')\n", + "plt.legend(['model', 'experiment'], loc='upper left')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then change the parameter $r$ in the program and play around to make a better fit. By now we know that this\n", + "'search bythe eye' approach is not the most optimal one. \n", + "\n", + "\n", + "### Predator-Prey model from ecology\n", "\n", "The population dynamics of a simple predator-prey system is a\n", "classical example shown in many biology textbooks when ecological\n", @@ -664,11 +851,6 @@ "\n", " * develop mathematical relations for the uncovered regularities/laws and test these by per forming new experiments\n", "\n", - "\n", - "\n", - "\n", - "## Case study from Hudson bay\n", - "\n", "Lots of data about populations of hares and lynx collected from furs in Hudson Bay, Canada, are available. It is known that the populations oscillate. Why?\n", "Here we start by\n", "\n", @@ -680,12 +862,6 @@ "\n", "4. using the model predict the evolution other predator-pray systems\n", "\n", - "\n", - "\n", - "## Hudson bay data\n", - "\n", - "\n", - "\n", "Most mammalian predators rely on a variety of prey, which complicates mathematical modeling; however, a few predators have become highly specialized and seek almost exclusively a single prey species. An example of this simplified predator-prey interaction is seen in Canadian northern forests, where the populations of the lynx and the snowshoe hare are intertwined in a life and death struggle.\n", "\n", "One reason that this particular system has been so extensively studied is that the Hudson Bay company kept careful records of all furs from the early 1800s into the 1900s. The records for the furs collected by the Hudson Bay company showed distinct oscillations (approximately 12 year periods), suggesting that these species caused almost periodic fluctuations of each other's populations. The table here shows data from 1900 to 1920.\n", @@ -718,18 +894,12 @@ " 1919 16.2 10.1 \n", " 1920 24.7 8.6 \n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "## Plotting the data" + "" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -760,8 +930,6 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Hares and lynx in Hudson bay from 1900 to 1920\n", - "\n", "\n", "\n", "\n", @@ -772,8 +940,6 @@ "\n", "\n", "\n", - "\n", - "## Why now create a computer model for the hare and lynx populations?\n", "We see from the plot that there are indeed fluctuations.\n", "We would like to create a mathematical model that explains these\n", "population fluctuations. Ecologists have predicted that in a simple\n", @@ -797,13 +963,7 @@ "\n", " * With a model we can better *understand the data*\n", "\n", - " * More important: we can understand the ecology dynamics of\n", - " predator-pray populations\n", - "\n", - "\n", - "\n", - "\n", - "## The traditional (top-down) approach\n", + " * More important: Can we understand the ecology dynamics of predator-pray populations?\n", "\n", "The classical way (in all books) is to present the Lotka-Volterra equations:" ] @@ -832,31 +992,6 @@ "\n", " * $a$, $b$, $d$, $c$ are parameters\n", "\n", - "Most books quickly establish the model and then use considerable space on\n", - "discussing the qualitative properties of this *nonlinear system of\n", - "ODEs* (which cannot be solved)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "## Basic mathematics notation\n", - " * Time points: $t_0,t_1,\\ldots,t_m$\n", - "\n", - " * Uniform distribution of time points: $t_n=n\\Delta t$\n", - "\n", - " * $H^n$: population of hares at time $t_n$\n", - "\n", - " * $L^n$: population of lynx at time $t_n$\n", - "\n", - " * We want to model the changes in populations, $\\Delta H=H^{n+1}-H^n$\n", - " and $\\Delta L=L^{n+1}-L^n$ during a general time interval $[t_{n+1},t_n]$\n", - " of length $\\Delta t=t_{n+1}-t_n$\n", - "\n", - "\n", - "\n", - "## Basic dynamics of the population of hares\n", - "\n", "The population of hares evolves due to births and deaths exactly as a bacteria population:" ] }, @@ -896,8 +1031,6 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Basic dynamics of the population of lynx\n", - "\n", "We assume that the primary growth for the lynx population depends on sufficient food for raising lynx kittens, which implies an adequate source of nutrients from predation on hares. Thus, the growth of the lynx population does not only depend of how many lynx there are, but on how many hares they can eat.\n", "In a time interval $\\Delta t HL$ hares and lynx can meet, and in a\n", "fraction $b\\Delta t HL$ the lynx eats the hare. All of this does not\n", @@ -906,9 +1039,6 @@ "$d\\Delta t HL$. In addition, lynx die just as in the population\n", "dynamics with one isolated animal population, leading to a loss\n", "$-c\\Delta t L$.\n", - "\n", - "\n", - "\n", "The accounting of lynx then looks like" ] }, @@ -925,8 +1055,6 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Evolution equations\n", - "\n", "By writing up the definition of $\\Delta H$ and $\\Delta L$, and putting\n", "all assumed known terms $H^n$ and $L^n$ on the right-hand side, we have" ] @@ -957,15 +1085,10 @@ "\n", " * These equations are ready to be implemented!\n", "\n", - " * But to start, we need $H^0$ and $L^0$ \n", - " (which we can get from the data)\n", + " * But to start, we need $H^0$ and $L^0$ (which we can get from the data)\n", "\n", " * We also need values for $a$, $b$, $d$, $c$\n", "\n", - "\n", - "\n", - "## Adapt the model to the Hudson Bay case\n", - "\n", " * As always, models tend to be general - as here, applicable\n", " to \"all\" predator-pray systems\n", "\n", @@ -973,20 +1096,12 @@ " is sufficiently well modeled by $\\hbox{const}HL$\n", "\n", " * The parameters $a$, $b$, $d$, and $c$ must be\n", - " estimated from data\n", - "\n", - " * Measure time in years\n", - "\n", - " * $t_0=1900$, $t_m=1920$\n", - "\n", - "\n", - "\n", - "## The program" + " estimated from data" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -1041,8 +1156,6 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## The plot\n", - "\n", "\n", "\n", "\n", @@ -1052,15 +1165,20 @@ "\n", "\n", "\n", - "If we perform a least-square fitting, we can find optimal values for the parameters $a$, $b$, $d$, $c$. The optimal parameters are $a=0.4807$, $b=0.02482$, $d=0.9272$ and $c=0.02756$. These parameters result in a slightly modified initial conditions, namely $H(0) = 34.91$ and $L(0)=3.857$. With these parameters we are now ready to solve the equations and plot these data together with the experimental values.\n", + "We will later perform a least-square fitting. Then we can find optimal\n", + "values for the parameters $a$, $b$, $d$, $c$. In our calculations here\n", + "we set $a=0.4807$, $b=0.02482$, $d=0.9272$ and $c=0.02756$. These\n", + "parameters result in a slightly modified initial conditions, namely\n", + "$H(0) = 34.91$ and $L(0)=3.857$. \n", "\n", "\n", - "## Linear regression in Python" + "The following Python demonstrates how we can use linear regression to fit for example the population of lynx.\n", + "Similarly, we have also used a decision tree algorithm to fit the lynx population data. As expected, the linear regression is not exactly impressive" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -1090,7 +1208,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Linear Least squares in R" + "The similar code for linear regression in **R** reads" ] }, { @@ -1122,203 +1240,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Example: ecoli lab experiment\n", - "\n", - "\n", - "**Typical pattern:**\n", - "\n", - "The population grows faster and faster. [Why? Is there an underlying (general) mechanism](http://www.zo.utexas.edu/courses/Thoc/PopGrowth.html)?\n", - "\n", - "\n", - "1. Cells divide after $T$ seconds on average (one generation)\n", - "\n", - "2. $2N$ celles divide into twice as many new cells $\\Delta N$ in a time\n", - " interval $\\Delta t$ as $N$ cells would: $\\Delta N \\propto N$\n", - "\n", - "3. $N$ cells result in twice as many new individuals $\\Delta N$ in\n", - " time $2\\Delta t$ as in time $\\Delta t$: $\\Delta N \\propto\\Delta t$\n", - "\n", - "4. Same proportionality wrt death (repeat reasoning)\n", - "\n", - "5. Proposed model: $\\Delta N = b\\Delta t N - d\\Delta tN$ for some unknown\n", - " constants $b$ (births) and $d$ (deaths)\n", - "\n", - "6. Describe evolution in discrete time: $t_n=n\\Delta t$\n", - "\n", - "7. Program-friendly notation: $N$ at $t_n$ is $N^n$\n", - "\n", - "8. Math model: $N^{n+1} = N^n + r\\Delta t\\, N$ (with $\\ r=b-d$)\n", - "\n", - "9. Program model: `N[n+1] = N[n] + r*dt*N[n]`\n", - "\n", - "\n", - "\n", - "## The program\n", - "\n", - "Let us solve the difference equation in as simple way as possible,\n", - "just to train some programming: $r=1.5$, $N^0=1$, $\\Delta t=0.5$" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "t = np.linspace(0, 10, 21) # 20 intervals in [0, 10]\n", - "dt = t[1] - t[0]\n", - "N = np.zeros(t.size)\n", - "\n", - "N[0] = 1\n", - "r = 0.5\n", - "\n", - "for n in range(0, N.size-1, 1):\n", - " N[n+1] = N[n] + r*dt*N[n]\n", - " print 'N[%d]=%.1f' % (n+1, N[n+1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "% if FORMAT != 'ipynb':\n", - "## The output" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " N[1]=1.2\n", - " N[2]=1.6\n", - " N[3]=2.0\n", - " N[4]=2.4\n", - " N[5]=3.1\n", - " N[6]=3.8\n", - " N[7]=4.8\n", - " N[8]=6.0\n", - " N[9]=7.5\n", - " N[10]=9.3\n", - " N[11]=11.6\n", - " N[12]=14.6\n", - " N[13]=18.2\n", - " N[14]=22.7\n", - " N[15]=28.4\n", - " N[16]=35.5\n", - " N[17]=44.4\n", - " N[18]=55.5\n", - " N[19]=69.4\n", - " N[20]=86.7\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "% endif\n", - "\n", - "## Parameter estimation\n", - "\n", - " * We do not know $r$\n", - "\n", - " * How can we estimate $r$ from data?\n", - "\n", - "We can use the difference equation with the experimental data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "N^{n+1} = N^n + r\\Delta t N^n\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Say $N^{n+1}$ and $N^n$ are known from data, solve wrt $r$:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "r = \\frac{N^{n+1}-N^n}{N^n\\Delta t}\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Use experimental data in the fraction, say $t_1=600$, $t_2=1200$,\n", - "$N^1=140$, $N^2=250$: $r=0.0013$.\n", - "\n", - "\n", - "\n", - "\n", - "## A program relevant for the biological problem\n", - "\n", - "" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "# Estimate r\n", - "data = np.loadtxt('ecoli.csv', delimiter=',')\n", - "t_e = data[:,0]\n", - "N_e = data[:,1]\n", - "i = 2 # Data point (i,i+1) used to estimate r\n", - "r = (N_e[i+1] - N_e[i])/(N_e[i]*(t_e[i+1] - t_e[i]))\n", - "print 'Estimated r=%.5f' % r\n", - "# Can experiment with r values and see if the model can\n", - "# match the data better\n", - "\n", - "T = 1200 # cell can divide after T sec\n", - "t_max = 5*T # 5 generations in experiment\n", - "t = np.linspace(0, t_max, 1000)\n", - "dt = t[1] - t[0]\n", - "N = np.zeros(t.size)\n", - "\n", - "N[0] = 100\n", - "for n in range(0, len(t)-1, 1):\n", - " N[n+1] = N[n] + r*dt*N[n]\n", - "\n", - "import matplotlib.pyplot as plt\n", - "plt.plot(t, N, 'r-', t_e, N_e, 'bo')\n", - "plt.xlabel('time [s]'); plt.ylabel('N')\n", - "plt.legend(['model', 'experiment'], loc='upper left')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Change `r` in the program and play around to make a better fit!\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "## Simulating financial transactions\n", + "### Simulating financial transactions\n", "\n", "The aim here is to simulate financial transactions among financial agents\n", "using Monte Carlo methods. The final goal is to extract a distribution of income as function\n", @@ -1445,11 +1367,6 @@ "We assume that we have $N=500$ agents. In each simulation, we need a sufficiently large number of transactions, say $10^7$. Our aim is find the final equilibrium distribution $w_m$. In order to do that we would need\n", "several runs of the above simulations, at least $10^3-10^4$ runs (experiments).\n", "\n", - "\n", - "\n", - "\n", - "### Simulation of Transactions\n", - "\n", "Our task is to first set up an algorithm which simulates the above transactions with an initial\n", " amount $m_0$.\n", " The challenge here is to figure out a Monte Carlo simulation based on the\n", @@ -1597,68 +1514,11 @@ "source": [ "showing how money is conserved during a transaction.\n", " Select values of $\\lambda =0.25,0.5$ and $\\lambda=0.9$ and try to extract the corresponding\n", - " equilibrium distributions and compare these with the Gibbs distribution. Comment your results.\n", - "Extract a parametrization of the above curves, see for example [Patriarca and collaborators](http://www.sciencedirect.com/science/article/pii/S0378437104004327) and see if you can parametrize the high-end tails of the distributions in terms of power laws. Comment your results.\n", + " equilibrium distributions and compare these with the Gibbs distribution. We will use this model to \n", + "extract a parametrization of the above curves, see for example [Patriarca and collaborators](http://www.sciencedirect.com/science/article/pii/S0378437104004327).\n", "\n", - "In the studies above the agents were selected randomly, irrespective of whether we allowed for\n", - "saving or not during a transaction. What is often observed is that various agents tend to make preferences for for whom to interact with. We will now study the evolution of the distribution of wealth $w_m$ by assuming that there is a likelihood" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "p_{ij} \\propto \\vert m_i-m_j\\vert^{-\\alpha},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "for an interaction between agents $i$ and $j$ with respective wealths $m_i$ and $m_j$. The parameter $\\alpha > 0$. For $\\alpha=0$ we recover our model from part 5a). \n", - "Perform the same analysis as previously with $N=500$ as well as with $N=1000$ agents and study the distribution of wealth for $\\alpha =0.5$, $\\alpha =1.0$, $\\alpha =1.5$ and $\\alpha =2.0$. \n", - "You should try to reproduce Figure 1 of [Goswami and Sen](http://www.sciencedirect.com/science/article/pii/S0378437114006967). \n", - "Extract the tail of the distribution and see if it follows a Pareto distribution" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "w_m\\propto m^{-1-\\alpha}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "What happens if $\\alpha \\gg 1$?\n", "\n", - "Perform the analysis with and without a saving $\\lambda$ on each transaction and comment your results. \n", - "We add to the previous probability the possibility that two agents who interact have performed similar transactions earlier. That is, in addition to being financially close, we assume that the likelihood for interacting increases if two agents have interacted earlier. \n", - "We add this feature by modifying the previous likelihood to" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "p_{ij} \\propto \\vert m_i-m_j\\vert^{-\\alpha}\\left(c_{ij}+1\\right)^{\\gamma},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "where $c_{ij}$ represents the number of previous interactions that have taken place between $i$ and $j$. The factor $1$ is added in order to ensure that if they have not interacted earlier they can still interact. Perform similar studies as above with $N=1000$, $\\alpha=1.0$ and $\\alpha=2.0$ using $\\gamma = 0.0, 1.0, 2.0, 3.0$ and $4.0$. Plot the wealth distributions for these cases and try to extract eventual power law tails with and without a saving $\\lambda$ in each transaction. Comment your results and compare them with figures 5 and 6 of [Goswami and Sen](http://www.sciencedirect.com/science/article/pii/S0378437114006967). \n", - "\n", - "## Particle in one dimension an velocity distribution" + "### Particle in one dimension and velocity distribution" ] }, { diff --git a/doc/pub/How2ReadData/ipynb/ipynb-How2ReadData-src.tar.gz b/doc/pub/How2ReadData/ipynb/ipynb-How2ReadData-src.tar.gz index bcef88cb1038fb5cbe3b04bda26882e173c2a7ff..9e88e3af87eed95f427405dd69f28bf59e2cb3f8 100644 GIT binary patch delta 20 ccmccmmF?L(sasOXl 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 z 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 z zmsH7Y;9Nq_eORZb@#-zxz>%F&zU`V8elu4PQd(gKJGH}LN%q9M7yfrPz+W&~s51)`3Vg0XM`5kn}DSXurZda7{D3M?e7tgJwxkX|rWwuaC) zNKjVbT^=cLBkJWJ+Q0e_VF6)dT+&#fK3aX6f3arMZGpZqbU?F= zVW3_tZKG-?4k&Ofmi8av7tk?|u8}rd1r&%8PuH06g#Zd)Z)Y)Sw7|7u1t3{EEl{!K1z7s8 zwJ#k2@@3FA>XadZ0%!+7&!#5wJd&4meX? z1-#Asw>BcEJCLA&u2Hm>6BLK@e{)wntXyex{9v>I?f>Vl=2W0eBzssYm^sLDAb@-k!T9vWY(M!}UcQLu zKvGSjD-BvU5SGDU)s6*4j+j5jm|i(X89mFi9jHd~5@r$9LZ4hP)D=2K_I96j=hBG?{-z#kU zfb1v1k({x(ChCz@EDnx6+~-_Be06-eqe_hf-5bEV(OrpRa%@QaE-QGZMD+CWdls$_ z40koJ8~<$9R!?lUY}xIs{}3jaKctDnq2wQ-ufFukPkFNX#cvY_-uzKG<1`K+f}Xwa zvEKmGx^Z3MwhM>Xc&iU^*jCj{L7}(Ti_Hqa+_PZpnZz@FM!448opmQKzxzF2gwfZNO2@Ka!w z2Ly7+FHN%^P4a7n=>haDzka~x+%_fS&u+|)V5=als!XtbW8;hqpgABX)o7G18QCu5^S^u09=n2AZWNi04JP_So1Kr6GlQK^Nn@@4<7dMFIt)Imvz ze1Jh<8WB8-niKE3^jGV0XF{!@h;(FnTOPocE2`hhkI!o1ZUfEi4$L%G17WrcK~T){ z$+~-_vaokBfs$BJCs_q--8kjm*ml!4B3V*lOfN1;A)>TywRnS~w7rbPOY_K}g}W;D zU)e{H+S=DMLgptW>9Dhc)X^ZN@>4~!qmg+t4E8L0SqnBx;2Ziznk{i}Qi=TT$e<4_o{>_q&~3Xx8{S&6XyfDa4HyGv2ojXEm>TTu@<~Ij zi1^CF`^U)j!5ZBl-%nup9WuW~nE&chC^yr?jA+K61s{7KT&7GF0?{(qSoCDkW^U=; znh`6ItEwEdg2mF4l#jgn)D(-+L|WS4KRMx?wK=K-#L@+H=VNJ!8Mt0GAOZScapLyw zG-|M**mn>R&<}v4?!`EzW}tY0Gn_g)&2#V#5^AD4BCPw>IyI#VpGE%fUQ6r<_6Tn3 zA{C?509Mp-~+~JI9mXv;^3HB!>FNgIf67F!qLS? z++6$%;p1phIB`}JB?0bW$UX}Z3T&*fWY?$f4y$OblX`)Uv1UbjpDUGMw*2s-T61nO zI3iu$woM!qr{O9$juU%`3_p(+99Ae_9m8sgvgMw;3PM!8ST8;e?%(GlNL28nBUI-b zs?H)u5#j(@eKV6XjTNGlf?ze%gx-6I)Sw{(^4FEdL6FqhP12WhVc^M4f|olB4O`gc z8qF`aDsD*iBzvo@H5KB4d|7r{D7twO88j7sT8rPb7O!a1`WE`HMtBYnh4ln=mn%HY z*IdE0XKXHVEZO3*K6{DJ$qyW!Ce_&xIq+unzUNq6Pu z@N0NeWT-_U#1VI-^uP=7jUEPl7pvfTe_eM&BA)p`b`U|?6TT${gA}*l38-y-j-vUi zAGOR}JS`uC53PBEu02~BznJs2q(QqZHt`>Q^^1^Kc50KHK-~LP2u|&`AKAk$(!JF7 ziD>|D#op62=_2eTKO@B&U+~sYk}3y#sR(-l$m^lKB)KO7ZRY`E7g|Ra5mtvOL7T! z)58a(`1yDKOztCOp5w;ZZgekdh>Q@yPumydH)S_v$r4IO!u`7M7zCWi$I0?xs z+@>LSDNj2qYN`LS23mpOG#ccIuw;q*ZI{@6Hq{`-YM z4*+hqq4s=eosQAQ*AGR5E>xU;lG`5JW$TfE_K5PgQKVRfFA2 zNvvvb@8A0|+V?UzI}n$?CH*Iq+W&?|1dzbYmWpppC^8abAf0*_WA!XPIBkVGotzMT z6mdR1txB81zrzr!a6UTNa$4yPXiQe6dXjokAAh#~3q6fND9~x66-FL2I~Hn@agMw` zO`yt_vpJl^o>Dc>DkUnFsq2impl)nbAI4i*DJ?sr8u;egkFBqlirYO_Yz!sU3D^w$ zyNXYrgqF0%@#ah}uX^b~;wQy!pfF3A>)FcGYV41$tr_R3c1b*uN>wQ!KrAqrKlB_% z-6{g@{O!2_Q>soxd?S{5&wKRD&t=X#g?-ocqfrS7h>!a4>1l$VVnem`No4AC%rN~H zvufOINjB`v>N$KtqDO$5)UTRo3J`@q+X7Xi3O&W{JeD5S7dOwoTN-J=`grP+Y{%oD zWU1H8qjJXqtp{_^l9rCmi4(b15xd52_Y^azKNk#;`hSYIfAsRrTB5*HeVuzQocnA0yB~Gz{0SsB zcJ_m*dNqkZ@mqGyx?MQ(FQkh$Zul(HcH1lyo>zmi=%UN2bo|5r0f2I~VC$Six;%?f z6ykl%;tf})^@STjMKjMucF%oqpEP?f#FC75dM&x4_2*AwORxi%U~LS0rljxwB-z&2 z2s^R3r5NVX8g=eU%^GF4Yz~@JJc=7Mi$ApHy0b^~;9Y9h@54uP;6s1;Uq86FcY;BraeSNiVQULeSU4K|cS7?%PEkJU7kMG#z>zE;=xlWA?%dWvv! zoP-#zF^xM(Znq6pfBLwhy>ZFuWgm(Q=TWr9UZR|)K9!KhgKfUYOyde z(z9c+fQ0SQPI8!k=7!L7J$dJdM0Poe#I75j{i^m>F=XFVZ5R7xv+^Qmdc5cEi$Hs9 zm<4kSR_$ly6~O&=x567VBnIZ0zJivcI}h)sY{om2x_5~~B9(J|6smmzauF7>-8oN* zt39t(T=4cV<_BV|*NpA}OGb1$bi1wfn~K!6PGG&=i0R5^B-Z;_(=6US=p`qxFu}`* zS9C%YM`h4XfUrSMuGf9WEW9O)k$ED;irj~hQEcH~75ux6266ds##N5csl6gu>Ry8D zAL(FOA!&5!($8RH#h)+6uDBqEg+&ZQ!1X^zc)TT|ckjJ*1}YsK($?!HyoG#$GhtcT zyrY`(>2iwGz1K_geEX7C;%-gMSvs_m(O_*EMRyQ1VE$aYn9O{q!|38m2% zt+BN}7=Ux1`Ic}49JO~f^58^^Zc%t}L%KRzuAj`oJ-1#UkF?Y+z3bk^X zOfMIy7BqJf)JRVMZm60N>1#xS#cX;Sluu=Qn0T9uM6UEl#|@4YUB99#pGu~`U`7W% zlr&C^U{uE$&2yOXalk+E3#;AZHz$nYq%LoRvj7Y$g7ls&arq$$=$7FVpz$@W0ZbhEL1F z2ms8@lGD(Y4T($T2XKn<%_o!vG(Pd|*iuzWOEPC5&=!!+e>Ov~1?qmEcv# zh;}~HR`GJWc%f-t@%($_x}^n>^96O!t{QvVYD9E{N>OMCnw&?~r9pDxgnmGQ9ZI;L zUHL~YfTm4Bu~O#GbTLwq%s&MrT?0S>uhpSxetsmV>HE**#<=$aV^Q<@g_nm`aloJx z#AN|wyyr}NXQMxnQ+CVYgT;u(-D?17ix}76yF!G6(({3OE2U<@gl9Rwp_8AaSp{UU zUoEOmhaA3fucXCGVDQQBDM4!)S>5~g#NJpSz0!&XZ*jl%BI9CAiI+BuXKXmcW41nM zF?-73@}ngJxeJHPPN<(bvc861FkmOxruCI5z~o2g4&$`_q{$WCi#{nDFN@YL`AUIB zh=X&jwI{4-qLzk@)S44g0G?}&mr`TqKNIm#W%N+3phh+Ah;>YHWgV9Zgm3KO0Ig+7f_Url`&9ekE4W8@82|#73n=$#3 z^z`fJz?H|j98B6|G)hkw$o}LaVO*qUNAciWEfUtG5)v2r-zH|%DQDF8B**x##S?rj z!j|w8!y*UI_$|2;?*;P+jFi5Rh0o_m{*|Nsem~^evc%d^*tAfbI=KL!BVn&)E!r>r zlEXv+$fUvm{`uUKiMVFRApq=bC;Py7vLLgR{6n4?IhXi~TN!YGjdT6vt9?-BMaR4F zO>e=i4NYVGpx}aWPw?Ds(02C?GD*n?jO1gzX|m=62_q91WPe*<0CTKxL;smnm$>(? zWo$UACkLw1(m+aga{uB_p+lM0m8Oz|U*@^-0qT~s+T)jkUQLBcA^^!b1fME}r;Lf< z>cnX$Rxy?#J|McsoIq=N3Ucu6CXekKAJn_`lL zt|{(k6m!I`vy__?6-Z8 zRbzC2Sf253>^_;~1cpF`gcwvCx&Dl)pp);$>k008p)Fr_Gd1Y!d0Ellxp9*br)8a5 z05CaUUy=WEWLVt)TPlVdct=PF*w&GA`R|$gM63R+K-G4@6UEn)D%_&9V$+GK#=_f? z4OcseL6Ihjl5}&T?j{JtJSh;fo66pqR0L(~>$w}`x5tI?%?q}tBS65*={pRSSwu!! z%z^Di8l@;gnfVa4FvbU%;UVB1F2mt3^yc!g{f3X`Cb&Qj#hf_|46Oznty#vz9`@1~ zERfYr7nNte8L7vPOGmA5@K+3U_27PR5UndMnrDocOpUUX9A1Wleh^vg-oC(YoslN| ztV`av$%iP?jg-yFX#cn)uhgH&DE0mh8!<2;{lj5XVX%Q&fL%yo^4mBZ{SPY!S~PN& zgn&G16x!?!16q4De#AI{Y{R+J*%4j^0}z>^1QtVv^ASQ$)U12(>Yu3CJQf}MszU#* zerVxHUo&v5@w-V=e@%kD0Ah|*j}b~SRa{E@GS6vBSDmaXI?gL|emmX8^LNt9)3L!bFm?}^55GvxJdw)i-XoMp{E4)1c2AFu!Htke4j&#?L&9Fu$ns054|?5-wS! zdo9dxc6v!~94@GB%0@D3D^y6osxA7?*i;V<6g-nwW5?L^YxA7?%CRvW$$e{j4g?J> zm@q22q&vqC$w(|D9}?7f6&$DdMTko@Phd$Z7=t_zBxW0;axTrS#uU3z5+gH!Cc&}6 zf;57Zv@%mk-Pi)a6)B~(Goi0Z#_r%Nw|TEUCd-v_6>VfydX0_NRmcY15Q_Oo>YGk5b`%2HGED~@!_heMqp2DEEAN>rK`{{r zUntAJg65SylQ&;TnL;dvOeTQGRKT8#4B(bCy=p%) zT9D4~TerPI%TpG}qjvRZ&o#_{gCw<>Pap=l9i$iXNt~ay@*1E_%zLm5k?MRvK+5z! zOY&R5KpyiPr;>>aF^>}%&%&R zWK;lxT|u@*z;MS81$lR~1YR)^_yjSFUVpDFNw`y25vg=SYl{*sw=w@F)Nc;XXaG09 z;eHmh!(Qtg@J4qu-WCe#3XJIHQ1)S8`Lc$td;-ziHtg|zYn8OMX1+8^ojI8U9;tn7 ztvjAeZ9n1jGFWWCasElyD;VY$G_k*!T{s3X%|UD5s5RH~WNlST%}u1#fK7L+G|C)e zCC}{QqrgxQVTI(tzBc+{mO^CZV8x7hzcW?j)5FI>7ErY4_YA_qClv5z zm5Vtr?p@ln+59mZXujkWg?rezJtQWUtdqG~k}eyoxv$W434eu+-Na>&{1gVdOeh2( zLlS#jB6dTP%+>qKGt*d#y^beSE6Y1XH*|l>iSkm$W|vko=ak1C?2;_dG0ke^VCbSY}+`oHL-2m zoY=M}b~3Tw-1qao-}mSFajI5TqfS+K_3mE#+H0LUSLBlpeHJfs4mD=F(Uz;L^)&xw zi3FnbP}`>3?k`?x(BX{hY;P8vPH{ax2vAZ*O7*^fS(IZM)nVGnt4!$$OdX_h4C2EO z#u?^%wnCAVLp8e->S!!D-{oEoSl3G|yk3=;xKT8^q*pu=nR8~H)g1e@JDW-e z%1sd)DAlld^EC&NwwhxQ9!R}wLJd9)t=)Ep?v;GL-2AS7UPt-#c|Ji+-uj3N1B9Z$ zUow+YMHmI;Ky)kkWp+Iy=~Z8LCQ|P3BC`B{f|`Yki{*djy|r!aH@Hwfuk`!vTZeR? zKRc)}P9`29Pp;7A?CqZ-eH3lTAD4f_YproSonK>1%bQU4Q@b_71rv+Mgbt*K4Peiw zNFAjs(J`5#s3c&QrzuZr4yYPYcwwY3MOe=8oirKtTa}PTQOnQf(uI@D%mHx8Z-*@w zLAMO@lZ@Aa`EC(f5yE|XIwf=j@UPwTlO81^|4_k+69$}3w9ES}@bJllsMZY(td+d) zz3YguiIZJpx$Ew=S);DOp0)2siYTUqSnSgV6s5h6h;VLiJzC-?AQw;Wk+(_*`__Yt z(pr)GHIJkYcCku~l95mqGW;WFP3eCiAdh)Yfr-Ha71jIRgl3)@jJgbzjBm<_0^#Wr zsIVxt!)+eO5>B3>@Ocr`hW&A5jZLNvKAH0$Bgx0Il4FJ0%$eIIXU3S`xfQN0X{KdS zo`vG*0u-7|P#3Y_MLQrm$zpio9od4m$2QZNLOal_cIEti(H2q1h{hX;)H32h3xiXn zf&fmyLc_V6MbQSCzu<=5g&KX3<;wk&%zXy165&!{Fa`irF%?7<=}HRNR|S+rjXL4+ ze;{O1kgw9B+GVP9_jE2b1|tV##6M8~+|T(-`~s_o5>+?}0Zoi^D=?szP4envLLLx0 z8-*|5D~Do{f{88{Qc()-*)50krd~y}nh%}?N>&T`vN0CEADpUC#HM@b0;|$J#soa8 z3Xo*Gw3{d|!U%7?NCfn%r75;Cj}OJV$|_r`*4bsmI01y?uD)yEtHM*%ub#`Z=p&CG zG#;hqy;LEHeOdaC5qbtlPDXRo)DReQ>ohI9633P`UoOS?YBROgOeFq^bph;$;P`}q zuc$a4>kSISN@ThBQH`iX*akFBgISDh>dnOlgz4=CFwCo4Oj;FNiu{tzs(;iR#CfhYtS@$?WKU;mm@0^Z^ z+9ETc)_`3i#jiNOJLdwOi?-1c9N%q$;{MV0MAeok;ILL?M?!R{C&sk)ute^Yp_RDC zV`p(;AH^*&no*zmw*GznYTXM;gXaQFrt>4dcuIKoPr^}7iWJkPVTU$Ojl~jBd?LmR zt6|xHxhki|Qwe>cBLm$>TmQmeI__t351cxUqsNI-)3Qv>@b8SWwv~O!HBqtcFelOeKH`%mE6i+)%ZO=t#07e`h0{@&iHSk`z+V?en+Cu|3ef&=$UK+y z&4K*4!wJk-smb$+JI~DgPOCHE+F=v=LP3RwhA5ffV!%Wn!jKBFh=j$00|MC&(r&w zLKi2&pO(D+wmfu-swtE}ZP;1XOEftJ^3*yi|fdOf+cPn(a~uAeGzQ%x({r_XJsSM*#LR+0F|r!6&VyIW|oj9DkLBQ57=P<6CYCxhYf)>VT>xy;aYZNu2v- zHZ7FiVPMa2DOa9 z`>HSB1uPKfJZ@rtUohY#ZX?BvMN8~+Smwq<4ym#2TQ~!!Yb55ZLipHLm6~WkIZo$d zEyGIuCbuM|8m(13UOh(r?mNmEHD26I4Gu8nv}QSO6G~pUCa#-RId)_{3SHhi7lDcY z>=hbD8z(H+>aOh)uv#**>lch(+pEkJywo2!AW^t$KKoxABQM{N$0UBtUradh+hWkZ z>XrLd2x0;;6$dB&J^f9c*e}p_PZC78ZS4D%e!yZawB5vXdOXxIS+f3mvlFGotA9LE zGTE`itfk%(aB){aT!}0NEZ9m9&@|i>Z?uaD9g`0~*4ny|l=9yjrQr!L-M~8pH+inl zSZ)+|on~RcG&d)Q7p8cFxTadhc2hSZlz3|3v+e|{H*)2+_C=@ZS09;%Y-+!^+E^)R z6kGHzj;;@3%Q8-50F#Um(770;UnNwdDuUC8a3Sdb;=?JuM6%*626(>Vqu#Gcy*zpMI8wG6+u z?*1##+`94Hz?c}i*K+NlJH6GSG@g$b{2b&{ztGo$$BTfBtxl!G@etcTr9e4Kk|p(E zkvjTo@|1IOy3DacVe-lxVo{D9C+GMgoecqufNmy*M&;vIMv4pO(_~!WXHlrO_OsKa$D`(a15$l+R4!( zj&H=kQ1q+Rz`0ig7iZ*TeA|+zcKIb+6hEIV^}1N8sZ$+dNo$RbgSw0pBIZ=}BIz&i zM~K5xj0h6T{bOM{!iD6Jt+aikwYn}im>b);6ddHn#Uq1u#O+SFI|wqvA!MER zSZ#$xWxT(rTGcqxR+A9n_$l0^TON*pA9-zyT1#`&QVce`3CU+F{oBm6ON3ngto!*h z!(*JR9YK={2km1qZVD?o1iBw3TbE!~&IQt+zfS%3N$qQ0deuyiYdD^&vRPF+Qcn;v zx|yzLFT`Kc=i>03?)X1YN-&Y%e&oE~0t@|XtTE8&T&Gn2xC^3WeB`mRy@A#Pz0>@J zY=}w-9ddw+iJ6#5rEXK?86OsDahE@XK5YcoBmHs~W(cSJ*evEA3k@k7zBe^p{v7Br zd7H~?nwoo<5)e>}VQ0GZrCv0LMs?=M){93?& zd*%LfIUVN1#47q!O|i4(X+KWR&El;&13r}_mJBh&TQH$xCT>EY4-GJ*2ij;@Y=WL8q;A__U`Du2oll_U$hNU*B;sZ%SuWBrku; zDy@9y0hN&l9>EnCSZCs@*g#m_8zG*AWvUVwC@MBH*Z-DqV*9^E)Vj5_>^CHk{Z?v; zW}#Hd+Sd{%5aLtwyAU+Yzc=&A`Q4yKxo`b-w~AGo}siCKo;qSE@wK}eqSdI%#TO@PyQ+Y-%*77 z)fW>21o|hTR{iuokfOQpfrb{dWn;6gy+C^2=hgIcq7XNaa3A4g6>hSRMu4~3iFJiT z9mDa`_|5p&^`!s#c00ghh53j=L(MO9`O6?63h?UHfrwVnb{ue>;uNaC#j!8>8}zP` zH0|f_c<`gdqopb1Ceur%J#j2Up^pCaCa$QsU4*zBMK*>wpaFpj!5rwD#?QLiGCY=C zJkuBD;Emha;;f?w)F7(&XmtM=ykAJWhXT}4^hFV3k@bkwU+LA$jyWI4SRSU_JeA|g z+2Ip|mm-^kq-CDzangp1`Zp}KICA|{;_EC0S6ayl0d$Un5~k)y5jzSDL4*oF3?7O+ zAL%pB^Kce7fnI!i)&PjNrs-kp5BI2L45iDSvDCHJH@+TO=Wb`xu6u<~`F*e2C`O3t zFnj0QyN)(l>r{-TW?TEeJeTIupNiXr*7Uc&E%UV8goUQK{aLZ}+2I8{wFi)!yE866 zp5zvsT8X8`hAL0;{sVQ7*3B+#K3JP2b}~$elRatqK(_}1E}U}@Jh*tz4#^3zOoD6! zp&Lq353a0pGsc3$3v#|S9Ose0o)5ZeONIbl##GD8i{h23dZxNa`-O8GW&)6N6SZW_ z>-{jeGSOLL9TPU@KV#mCgyzPz5A zvp>^=En^EFOAwW{)_KzWsQrjc+iY6x{)>f?Kr8kNHD~nHmO}mc=!&y11(`;T+2nUT~z+L2#<=9x$`|Hc~lj2~HHi0{#Y zK-*dZ8=D+#>qYptK_=0x@aj&bGmSUW3bAa%?aw*Jhs{hs^>vPAgj)^ImbP@|Q_hzlUqw|MFu#OTRBAcx@~Sa-plQIQ zni@rVdqF*>YNkL-JrqvSA6pHWY5zxE*~)mL3R>3|%EUfBs zzYUd$Bblzp+h`y6+L%NDNBlDWK&$+;FOB8R6R){No*z3~RwL2ZY+hTeDo&^JTBmEg zI!_|5Pw=_%LGYb;6$@O5*&HErV0OOpR*X%m-ks1u8$TM~8uQU3?hCg$Eze=}OgM4E^HBHF~a zN9siWxPOW9Pc+|vwlNXynI@6rH&bHS^EYSx{jFzHU+5aK6Tdm@>MPB+oHYPVRC}Xo z-2Y~?iRW)L{};{vN;LhT`6jd4iCLdC-(c1%apQ|7(Kvl56&e(j=3C5Sf~Kx~N8f(| zIT7VeEY%bY^gn*qHdPrMl=>UcDuSkFKz#2R_kjqS3V{5MHgeEFQ<=Uc@VB7_2TjF= z`aW7Bzc^J1`a3``Fit&&0sX$`zZq@n4D9zg;tB~tQwQL_H?9`RrpEur0m~OZrkWsp z2X-a>sl$jr5EHwK@V-4Q{C~vn|HHs>Wj3JTEdSBK*HnoV64h<&a(H6WR7TY3JmGqZ!s0UkQ)(p9lL5`*9Efcz#ATo@n zfOp{AaffE#YUx@gD}rT40deA2pPE}?lSGZ)pAIb4A>kTR?86QQC-?%{h*&(MDAOP+ zxdxH&s(3iz@2TyAN&s@TPg+Jt`S1jluDjgT5IN<-`-$nop0(9@5-W4$I)HwjiTckj ztMtnI*&emzz+VeQy8eDXnePh&r2hqY5eDXj-dkXvFoAQ?^C>%P2mUThzv)GBG43Zd zGSD8wox%ObNGxXe&OSv2N%R&a z;i^Q6D2;%hxn7@VT7N}CGTA%i57KFj>Q6Vkxp*1f`rI0a82SmRd8i>Bxgz|c}% z@$)ClO$i{4cUwP@zD*Ck{#^D`xVMQcCe_*_CnycR=JeLdGEV}EfZL8*rvf+hU5Lj;8d8O=F^;et{HMppBTP~6J?Bpv6_z1P*3ieyQ1&_B zGQWe2%Mue!dV?NE6Rh54B0-9iiUIk6@e$1<$r=4+tjf1IIT1L=gQ*MDzA$P0v~-%3 zA=u4>&D?*@}6(Rjdlh$oK6)kxA4m~x*a&QG%6F6HfKztI*^OE+1|Alw@!PbcLv>I?TSmJe|HX=* z;v5nAMENnr%GLAGV7MyTD3y(HMO1phJP^P+!>cE#XJRdne^m#3qI_P&WLm}gK#*S= zXalJ=T%-5(H&#C_6o~5n@a@~mKzpA^Ag2br3+g8`0vL!FtTM)TgR#P26A4wu;aa5k zz$)qBNH7$3E8_pS4nY>4rN~mR3J?CS9W_TSs61!8@sFf-glDIB4|`TtZ+7#gank+l z4lgkfUy*ZQRha{_3t54jg~RDEA&bbO`=7*S6iviq{57V<>KaRciQYc^>xO8`zR%84 zuZp8kcNS&MthaPq3@Yt(SS;BdYFG)RZ)M&wnn zaYnBJdEaTM6O*X94ZQ?6$7JUUQX2oAj+1eKYQUqzm{+0=J1IJ4kr(fUX|!p4zmg2= zQl77Mr|JOKr$T1NT5?jp&t0Zwirb)u#vI`xg)?+=3~sU5T66`0tD;3bD=6`p?=m~e zINvIYO_VMhv6;CWt{x-E94iq(2hyfHGjEg;yv4a{oq_t)L zEg66_`osoQG@O75du7OX78`sfm!a81`iCGC+Hww^M>1~Vx0P$j?~<|$Zs<_wGGvKe z*PT1~=y?2MT(6g4NI8P~`dz*Xs!0W^%GkO)KZD_toB&e!$fhJ6IX^j>MHAN^u5~I} zugk9z6^pQJRtpKI#y}OKl@Wk%TqFP`EK54~i&P=!R7Q*kGQ;3OH9dQb7;i@DyCO%{ ze9L#$&BH76WddEZ!{D>$$~Uzm1^lHh54xjFcuj3JD!9r&Wa4-n{AvQmvf3;&gRwsr zF-aaQ<9rQGx={Ah*XIaBCq=OH056P}-hHy*;3Bk%8?$*V1Ya4^>QJh%Xci zTnMO@7+}R6doKGpTIT}m`_$~hRpBe`ddC~R)I{i{-kGGrxy5|?S65`5Xq`*N|W@K8H;Mow?=Xm5bK^8vsb#u1uQ7bJPS%bRc?!b)X(kr66L{>GA` z=1(|f2Ea0jJRjRDge#)##>cXViMD${$T4X^8hr$h5T{@{&SwMD30IN;5zv^%Y^F)1 zQkseyy)pNL4uKZq{26a*hyM!o*6_kw5ll>96xuU{I{1?9F74EoV*)(UIUkt2RN$2+ zMGgN&#RVXd=ShIM=8F8%(SY^QQJqR%#|W;@t;&KrfH{fLhTlAwnw8uo(1f4gh1&6XLx5&K%lRuX8o&|aAj6X&bjz+ji z6`=>^V(uQ;2_{0UZ!8@b;;{tTD|0u)nI0nu3~hsM3VOW*q!@)Lv-oSGyU-IYizd@2 zzEzA)yc9q#IxU$D*9(s@$Av?7+Ozh=3ZWRZ3JshnZX> zw}RTY|4KmqWCl_CAz5ea!ejpPbbp2_fm&hJR4C2&`@@{m)vMLJ))UlMkW{+5V)S+>r3 zN1N_}hTZkG+*ZY6l{S7w71PJgYHOz)Q=PfbctoIEil*7VLTs*dL#M$B2@e$CO zib@dP!iDFSu909VW(O950~6Qrv32KvkoWA8=veI}Z|eMFLCFd&?)`nRPlnX()_T&S zcYz|Lbj>nir7Tq$h|%yj0l%8vO&+>z1@<}7;BHXu(EzR{!UAg z#iah6V{{Uqp`+mNZ*^0;r1vdxG*L|J&~2hM3RJLZ*ui~1pxo*`vsr9%-7>7<>?%LNS~{0^ zt04wU95A;;WR(O);Pn~XKIgYg$!Q6J|3Ij6qAuEKV;_gx|R{g8?7 z;@DKCAL9;Bt07<${;*AWYQ)#_T0C)U7mDQ?x1!9>Gu~?4HLBe+S#a>{2*>RJX~nK) zmS=x%tjt`Z){2~3?cPA4T`oP64kCd>+uf|bjSBZI%=@es!CLaakJqoWoy$GV^mTVe zzevmSVv#jc3%hU*z!Y@STeX-tL`{{T?d@W4>hQIZo2i6KI>=&*{!c`1V#WeNHDfpKesZDPJC5{|Y*(sL1_yd`0K@ z-##=G6}4!AOWHc$qb-`>OzkWa+V9lxL$y@Ip*oq)e5C#suhk$_w8&~Q5!12cWF6oK zB4Yx1h#MX6)H-Hn$>_lKrU1eGpXuVD>>Z@Kmrqlln}77=h{RMVfjs+gVN9W5f-XJ) zqVZtX9B$O7833u>ui?8Q>G9tqV0#o3G}$9++6RTe#@kMbzZ0#|T!2WQGg?bL@hn~f zH~{G{INl+$lPO|h>sT9RkGvmWys+t+eF@R+jUvEfadOaOooI{QZRvnK>D2^O z2eesj`F5CMOs9je$y?}qrF!s5K@f3hDzqxgEbF}1h6R7lM`=1C(g28akV|@W56r2q!jRnjt%D-$#%t{LoXxejAqWk{FK^^jvAH8On^OmtknAQSGAhT2{4#)*@LFDS-%+Vkk)gaZZ}!@BKn55XdA$X1=3vZ~r84 z3&m3d4v&XvNXTVOPBm@LAqFr4U4v9&>;w~6sy>uPJs@<>UTK$)v^&E;KWZ4Y%iseZ zU)gG{p7d%@6*8U!N2@)C!YmeVMyh|n(3ZW#Bbt`LQk zkj3%uL=5)X*M!5o?{=r2cNYSh@Z7>hMX?~~NDoqeJZ4WLQJAl$_Yb%uO3=Y(>#(~Z ziXz7xbWM5!Z&KIbHvEZZkdOZW(nx@S`VoI6v>$t3k;vh+$JG+Hk~hPM$@IeUUJOg* ze5y4E#9a6mR(xUHUsRFD0kqh@2yz1|;tR9?w%AtqGdA=03!+OCK1{>m&KQi_N3^B- zcMb4J<^M3mj-xQa(^0ol50avKt6%9^j`qosTuAvLwADF$@Wd{she5{ERB-}dJQ4{M zVHAhm=7IzYpf3L5u~rfU3zR^Y##j0N%0$~!92QoZ&2}(SIuKUo|BEzDDrsT05+qn6 zu{)qH+Nx1lBjE|cp0K-7M!ei9s@@b(LZZ}2T4#BpYzQvjZ~RFifruP2Sn|;|GH6AQ z`vA~{`BUDis)JHjwxdejhdT*0J1LtQ9+f;*ebO65*DvEIW8=GTtU19nb%Y`B`Bb9N za$@~QZPQIEu_gVahgR~sA`2RG*EAYA;Zh+f4#z!{(9Vz*5E0-U^6szhd3x{lsV>f* zL_~bD>s%;08bFaQR8?cV@KP|_X{8c{D|{o|QE*Oxd@0K(9FnO&gZTt(8N+our zHpT2tpJ(-gG&FPbil(=iz`%MY7Xq;I&ODKlKg;>XEB3w~30q=_p7-|Yroy;$t zX1xQSM>(G7KV}iqB%kCpB?2rmakdZ6?JFh|s>OdFCEJa!D#R_278FRh_V@dg=&0rQ zCW5A4r8jTnYY0RbldD1}j3NI#S-2LWtcnODhV|fpM0;-J;co>(-pwcMtRsplwhOKf zs_ry!R}N>cOmrK1 z0*i?1W}dK4K9WCi(75t4yi?8o8i<%A#gaY!iBE_v@TRs+M&s3?bD~nb$L1?lhN-U4 z>FAbC=c=>4TQ&@2VfIPU!)obd!M_80wBJf#@1R5P$2cEYCb z=Vt(-Z&R9|FDxh33;I-O0!2diIhxRcQ&9% zZvMXKbe;i?5!NQ`BAK|fjWDF1cVrW(OT|A+M;fexxhzkZrrhTWqM}GeG=RB-FQ!Jc zRZk}Qw$?zc{T#Zn>ZOm_!q6wOr4NU{P4!2#A3zpUMNlYRx3q(uzTZRAQXsx{d4+Q5 z4|az`d6&m~_bC_ymVK=0Tf~1p7}WEd^i0H)i;pcF8FglWV;!RvwpW5vk2}%Zjtakd zDj+x?#>Z~`&t=&6>+TU(Fa)LO)muVg1sDmsyIM7`ge@Akvf*|+CE>+Sg|56JtA*vb^5huf#5$_=lsNl@~Cb&dppV1HU3y` zdp{{yDUEZkPVU&<=;$Vn0-`3n!V5c>>a0KFE8&c|EeL=%-JU4t)6O42pxPMlOXlMQ zjaAQgr5OT&t3VifM5f&G!`x>T``*mwh7dJqRw8u{8Vn8de<>5h%EHY0KNTBrCKC2r zZUyx7vr<&B`v)_dtW}azvx{hAQSHg0HlSh$u^s6nj1$(^Ufx^^K_laZEZtD`#h@Wx zL;MQT83{07{$^%w3Vz*O9Yxhb>N`wJR}cN&8VHmbtD?q`(D`0;+NHzjH`-(G)|y}* zX3Ng@HnLIN#Pi0SYNdav@x3gvI3mCD(YF~V!)<5h^Zv?S-)HKwz@!-P1N69x4z4eQ zu}!q#`Ojz|I_&lp$VjIgf=~BdZ4|ScbIfuaOD_FNfPzOn zKV3MXdCjfn_!<7(=HDInu2B>MPQS4x45sa#6p|$*9qqBR;PpL_9CKI-RL24`r$VTGm+-aJnA1Uahd@ zvF23qs0Hn#%-+3*gd$yHGy&559#3eLBTzeBBg_jUuAm+MuA)~hnbnhB3+Mb@W2D0j zO;*Qfn`L2uq%*EiZ5pQyIZ$!n2H*cBtM2<-B!hJdVHU3+fNBHTSfNQZ+zxeToO4W& zkY2?q8xBBL07+m1{x$4}kn{u_Bv^4sC(>dCm#EKDykCm;W~=vJ3}rR$LgD8eI10RU zwB6km>pGTHBs)!TIWb_T^?zFl*zIMEw5GULR z`3(d;FYi!87pk$W11nnM4-O)+PPL>}C2wqZ57lLF(gmJnuAX>Ga8u3tAmV`Nty(dL z^?In&dySL888gCWK44)ZonyWplk6C3@M1PUB2DLL2729KAjj?MG?hoOM>=~0ewj_-v`jeDC22~XHqSxflp5}a zg>DN(3sRwkq!t{^9xK=(k2NJB9fC_+W`2El8ZHes;wJl;BXFmoc>5585E%2d5!f~H zm2E!o5JEQI)l>uZAnW&JWs@(WfjV7Lu)nh4;}OJ4glswhdJDps{^{7_PKElS@!|_W zpB=@A>fzE>*VYBMRhFV~!ku#);wfrSG&})XOt7D0&7CG#PI?)+I3F?FvBvvg-g5lQ z?K^KFAhDDk=M_}?;NxjhMXaiVe7J*pZ>m;j&uN&>f6VX85H(c2{FvQH%z}PNC}j&g z^mtUkn?l#HY?{C?E@<0<-FK-4Y zG)^=@=4*ahAF{dZfd3Xijrw8)lTL5qTWgdzYp}&3aXH`+>+01QqWm24Nw5&VDL(Yi zOBL^7%plTR>mQ`lcH^VK?{}QzI*KU2L=k$Sw3Wzcg`~f4!D#suAk45ObFa(9_G%u< z$o~K==rCIQJ+-_j%NZrhVbkX9EO$~sGoKyD<3`-N2FLuyM(5Z)c*td^yy*6Mz`jQC zCYcW^Rz}wNb1O_V7fP`(o9G1hSI(@?&ENOIyT zpTeLkam=KFWL2JnShqAp;Tav0Y-{mk%8a=9a?%`nHfpICg(GpIc_pVk=YzSeIvJk(2o;x>@vDqz96^ z(YCra3-IijP+@Xor9I-@R(gavk6=>|Dr+`y=Rjv6W4jolJQ+5c-%5Y%vGRP^`2UxD zT%lhm`ug?#W9KQ-uNBqTldtXCNiHx^mgq*gX)mOt%cdNJgX&`GbzufVq2sFR1KQwn z9J)*fWF>|-%6=+^ZU@WA?Ao_oF_Z_>HV*W7TJQ>D?$owR8 z=Yc@dNGHTviEqSvrOSyQX~$WF$jCLI<5BJy+Gta5xQn&O;ukt^Sl(KwCL%Af)m z(Bbr`>SUjkz1Ui?Z+D^b}3h`Wdf(cmMHGA&}q^!(zW!X<$ae8bfC*ycj)|1Jm-IAF)X zbBj`bpY0Eng9K5_F-P0_^#%Lo<|@8opEkP-L0kk#&=OHrZZA6U-CzfAhS>7%q8v6) z^6vXLY+SGi{xiv|t+}aar(FPSx~)2GaZN~@Gw><;@FgKS-jb9`SHSz7b6C@T`GYc3y{L$PbR7S4=El0^l>h963 z>CYL#VOx2{j12d)u~bPs?lU4yi+z>)S9XXyLO*x`A(x2$G*D=xq9tq*fvknJxcjpn zbQ?Uwa{_r%1YTcWeM?DX&xpB&_))J)&Z1MKL8(><@V0(T;5;v$GFU52!rMr^^LC&e zWQz$jzEf#C|5Z7BL>b#1^T(p=CWKklul;(q?^nNM8Go#~4%REn*j;yRJ)Mp> z^AryyIX0&r{Tuj6trmOEk44xa_A>z?5%UP(*L-Z?0+i5mmS2MV&zPAW96`gh)Dl(h zwXGzwoYzP*HhVd@33M{~<)~Rb0B^XC7OF9*p^k&=7ng_n=88X;gFw>T%=>aquN;4R zRm*-V>u{-lXGOZ4@~AQVjo;=k;(FRB5ri; zP~53?PW*Qby2LnK`QEAfjAM1A`^`WdT;*4&7if;q0ZJ`u*Fx_MsU2|&9lnzIgUNd> zY*Ga~-@(#7m588VtFq`>NXL21i2e!E6hQF zF9Ec@6}T5wazWJ_2m-DF_&hqvYU@?bHa)tfQRUIy&FJG1`I6CFJRkmJSjAFTy9f&DP?{ zr*y1Ckr~S+EWG%LYS0SgV+qqXe8P?W3mLY}*|4=NtBQ8GK6B3=Kqy3VLq6B9yvpbj z9%nNA+Mt&9nyCcn_L4MN6PVa^=ye2#ucoDgY}Or(?cNeckOYG-+YD1X+dxN#(5S?~ z^6=%OELksHUG`J3gNmC@CV7hDQLW_j|q$6fL z3gmS%XGAIf)CrdBDx0d;Q9*~3!>G_bg-FDUO(HpZnQ|nT0};HueMfNsObDv>|L9{B zc=`#M4TAa=JUiq7R><%4hKeE3?*w~DyZ@j}e*Y55kn~b{q_R)lg&YI~%eqH8!_6V^ zMi?G%!{X*+EhnIa6`{>g<8VoU^YtA8);E3iQqiY$RAeFv%xG{tH7R?-HK`7$d2UTX zEI9?lDSHC*fju}5FdoL@-5W)4k}d9}fq@ia;}pzdvrItxx^w6HsO=0b_zx50qHhNkmy$f^fH?=Q?uE=G5&z5 zpiEQ)p;HuHtFIKLG9Ac(%5uL6BrEx)*o|zIczWg|elAs{t-l3cT>cz9U`Y0+Y=-@7 z%Z1|4iKdA1uexB$k9I~wtAbd_d=wbCL4*3A1&U*7Qln?z-K*G#RNwo~bp5tFM3B!T z)ZM3%f$9n-&>r2KygpoVL1$GBPim;bRGRVeD(p>CEk_=vg74D;0B;0@Jh}Pn3y-Tt zVe??XkF5#S0c>k)`SqYJZPCn7^hgA7YJ>sF>?QIRZX`Ertnq6~I@O}~P>BtcT1^xL z8*QOGu_-|otoa8x8q4Z*2 z*REaoaYgU0zFb&D?vIq--jKUke;2|appaP|BIHAzeXEj1;N{X~VeiY)Lraa`%);Mh zY5@iF0Qjyc-Ns=fYj>}|274)7ly2P^Mx{I#&n9MqBqm8mnGIIM;eX;zP;GVmPY$|K zf#s`5nVpH`1!ElonU_Z{IZYQgC==7Jjbr0KvO*8B(LQEs{O{WQ$kA=CE;jCH4HMbT z&v!|-k)WlKdkQ&|a}FT}%|djBhrIX-Aqh_uvTbvJr2UROUCOz_WyQ zee-wFb6?bZ9!Da!tR15sHRC$EYe8aLfRRm0V{0$9*C|c!xh~Cvt>W#n8{`}K$jOcM zVIIejI4$V=E!iWCA4s$+Y!5IpxiFf=Pj3O$gzO8j*aqxgwH==sJ0Av>jSCPBCNn8N zZwA10U9XdJRLb~`ey^QLXiRlBFuBiAqVblM^`80kEY46M2+~buHq8!!H4LAA0zVY# ztoUS(x9!8y3$_|&WZC+9TOxj7E=zGLR0C}cJ*e!3lrThZwe3m|4oZyl z()+?ftx#9tRA|Wi`m*k~lkUw!2ab^#&XBB2oc1o1mJIz|iMO1Kh8|Uz4n$g5hO{Ch zn^TvvJ;Ny?UR<53#o?`C{>R){zEH)FDCij1**1x}o;80y5K)~fJPqGrFTpPI`TP<7 z*Vz$}o%@TM-=$f&{Vs>?=2rDZPfy@lz-iv5jcieRBxHJF^0fapK2)tw1Gsd3plEA(E@sBpCZj7w^tqPWsXS<8&xmSyoD}|-aRM{E1Whu2d z)PEa{I|OL;`#cKCH&=WxUl0sR#dq|d_DeAVI)#m9zN+shEPpvI6Vp|SYp4I=xidff zGMm#^c87WRM57_yb3NO8JN@pdve%FB=zYDfp?p^%or-_$Ihnrv-S@cVD7~vwFST{c zc^f+18tV4m7^7c;qCN0loTvsUZ@fb~xCR#BX_r{Q87M$aOhq{9Jjq6$V1DbNI9fUK08I((r=9*@Qar-_j$Kid%tVi0d;m8Qoeka8D7H z1zE^0YVRDi+c>eUhN){$Oa@_EF*W@G!DFFgBYBSh?pRiVh1VoreB@<`_xuf6p;pKG zG4N##I}UyOKh!ca4H>8ZXT` zi_W_AEaqk=FA&~wzCdypl5fHY`ns%r@VMJ{w@~lAVhEc8!dtp(Si4T1jV;iAFM)ow z_}EjrsR=jw-CHxVEpCKVI0d3%h7=#EKHGo=B&tutK0)F{ZsHNTCJRdTU!B6<5ws3D znk>$^HmL?QjQOn+(KbH}XR|`T*8s6eJ}jMxE&}B(GcYO7cjJTCA-C#r0<|A=77vz8 z8*?jaB2EhrQT2D6fiof4-GVU*c_a)_==G2oi^j&9gzslkCTYPl7)g#GTPoLIs-A*i6#=cxKnbaATzxRZ(?c+JUj|7Ol59obZ8(mFfcHaFuEvz#Tv_w zli0s;(x*=Coex1#%+U ztnPY0Nxpbm@WrQhJY4^D|L)t5GG7#|u+lE>9~V+tW(&En+Aw%=zh3;DZI}PP|J%18 z6|AztsT|>Q=CoUACWIy+PC&AMm;mv`on^*3f~W(8nxM0c=XxQTwu*qh4?t6z1ZPHA zIL$-+i%YXjAQPGyQ!MTT(}g~b(J-ULVgmF{0wdn3BSPU42WiH&KEfC-f|$gVbiueS zj!>Lm#wJaY>|BTmHh~xuXF1Tzh%Y53R9t?Qlx`Bzb*O$x%25<PJ#2A?DQ(H5GOrDvtkN)5~IArGvwFu3>QiEeEcxK(>2^hEuw4W zQ(R|UL!WmIBbWmt_O20sJmY0kua+{;Hp@GuRJJO2c%!oiFcp_o^zhQv`+c<|kg`wN zt>(;vCa>`&cbhMLrHpYQHkm8Jpt(L*Sddjd;Ec5(Anc%~rdmkHCozPwtA%=X8vcC& z%3W#Ialnr}{}`L}EzUm(_QNU3I$6Y_|E1n9X(2U0<$$_I0~s%R8%F_G8slt3AE_yfgsW9I9|;`EM_~L6IT#f|>Jj{R2~r{?8vK#Fc+<#05)0%?ZQ>0d zE@3g?t?m|9EN3~m?QOhR#Vq8tXp>18U$n^yALgP>C$i3eu%!@88X0dnq4o$>0p_A+ z3i9EyI4cY(47lBGvXBBYq?_rrxF8EDA(Fd=`)Avv#*855x`sJ=9J8(A9@6Ev)N)-_;L?J8%4{n1Cjo2Nyw?MYl9XAPR0) z?e@9s5VhrhKm$gFK0NvS=7ESdxcO8+JcJVl)FBQSsNeqFZnsd&LHO7c%q!lvhmM|r zt3$Kz*-2VKdbtcz`^zXBS@_7Kcm{-)+X}G$Rw7n<2LZ-kgZy|_Qi18i-)D?@VSRPz z=&^rK3w;&dJhmO3QTjOF(nE(Q51?dNGJdx7MtbU{gkSQ>IpvBb^LFs;w z4lLEbg-u>4xNB2CZSJb!(0y4qJ>9n9*b#E7*Pc{0XNODhcuVZmp?2R_-L@yA^csPs zV84`qc2Mvgtv97#0zuXs;Z1E)n+GZn4|%Z6e?6|iUpQS(=ng?51( zxas$Yb&a`5>O337juIR!V*(8TPe=&ZQco`e*~3{r&0%K5C&+^9cH6uzbCbPC(b=p< z$0e=-u%4puV#X6U6=3U9E}+Fixq@*XB>S>|3~iFdgxXL#A9FJ-lG$35^`*CU3KQ^R zSl_jKy75^Y?Ba#LJ68BX!eIu-=Wu6g;4fy+%RY!hwQJ ztZfb3NH#t3F2XQPz?giNn&(k(_HQso*vv6xYrC{7&%exi1Cdm@#MH5NKK^n%gR z4@gvCwe0)DHe@D4DozCpr4_^Gk?g>K`x5%Nw=Zn@$;q3Vl-$%%rjn0h3{SVN&?j&n*p(fO0s*_h*vO$FX8OUAw%(0@U2tRa z7g!9_r2R2ER^bhW7KfqbOlg>7VJ%|J^?7P#A)!t&@t*S)ufqNq9d)|pm-A?p1b+kp zMted{2J9VE4TKuXHk2;LyoJHz9Pe7@OxPKMn~eGt=^C8g8F7n*H1;0)i-@@(NA0X1 z#z!ZQMJQLZfX@XqP9bsKQ=A@uYb#3Jr%VZUI(QSE;5`JiB(p!Hd)g7dl)w_ajkfbN zYm-elQ7Ph0zOGW)$7Qat6gWdMbfQM5D84`{G?xyRqkX;)bC)T0_-RDPdtb&3ufVQX zKDmBAmW*Qx89WIL*S9(E*u&P{VWCMi0m z2aV$$R@i0p+EdDsIHe|pUG>=)G9qhUY3bBNa10#Qe~gOo{r!Zn$1uR55rsS#Z3@CR z{FJ!I-3odtr{diM2PAf?X$HQ;B_=f2OhNv=i3u%$b1Rcf2!4?Ztzq4X85d8XYv@PC z&Z|&39*UT#4VTAqO&oQ9J+H$=sKey64)f2CXFWbiUJVu|K7; zfpR5}w|#dBmC8YsI@)7Sh=1Gz;T%i+>7MuJ=rSB?Msu?iOu-;Lq@*CuVRO)3o8mSp z04y#~_wY+n$R)EXzg`MCm1nm~p+InPs}wY3HzUMNQb4bSQuii*ThLN7EA$)JIzyS( zjL)p+3OQ&4#kNgagFIVDiozGU_P~&seFlCZtEej1>8SE zD2=C3R7Hr%9PSu@FKK`@Mg6AjlSX3&HqEH&O_Wu~*(lOhg#lVT!jD z&02KfCRD5B=OJjY)J!}P!5UK7___CwgR2TN8z&-Le5gx@;t{>D+fL`qe&9P+g|ZkL zGdYab!%};gjIiO-``M=-)t$*4R)STT&NFTQ`mST_{W>otK4;cW~iP)OsnY#0jSLi5DF)f#heQ?wGgTI<4n4x!Q7;l^v^Gw@M1nXv|!kwJ1K}W z7v|ifnfU1_0QU8^Zpw}xCISyAsr0J7f<9{q?`32qB^by#9HrsW4b_Lc6pAvf2LuLFN?oJVsgW6UfQ zj=dv&5J7P|KgfwBnv+BoDm9f_axj88{$7}anycoZ=DInk{-U4V-poNo`~%wMUv;kg z-RjgJ)GZP~=|QOaqExD)UuVD{D3z+?zbuzcem-3#utCo)L{f>f|7PU;??L}xrkMO@ z68*LV#j?oJM0hcBlKOeUG6(7PZUXorDj4T!2~rStnGhAAVGsX#OA&4P%l*6m0fQ~e z&6lwY0TY+iI0O>~ATlyFFq1I4D3^dP0R?|J7JkpK5HJNs+19Lh(QRk?FcVC>yTB}p zj?tI4SSU7Qb4Hdtl$<90^?N8%wkXSrB|GjzBAV7YJoob*$)2-tJm=k&XRg0auU@~! zp%bGxAb~Tzb1?EeAHMS(>|ja}!%pCbh)~~|uAEQq*Cm(y`pfh`uiuiWNmtVZ1W|t) z*hDi!5IX^iLmDXphA76)1S1wRXF7+w#Gm@M!}5fRoY}l3UrS!_?3zSwSzJ#j#csLe zYT>!C8@ij7`tJ660&6by9r>NU0`0xXH`mxTq(U>|GMSYk&$bMcQgd7;isik!iJR|| zzp77};g}|~%0P~X;y7xUG7KUoU_O5WyH%1aiGZ$D)L$zWz@x{qAwf8x77Ni~G3(ec zLNR6*O_I&~PKhH#d}2}j`NS#2BPb@mMT4#@~qfMu5YUy&0KM3?ppFky;6U!j~cFL zZkCsor&W-$wx{7ri3!qXRMiskM5aQ^Lbj(+ca~&&QIsN0x5979jbYzcV#vE(uFUOX zCDO#OE6UAW@Irr+)K{GXxgEgN{VK|3UqsXj5sbh$l|KLNa3mOk)Fdo`w8j?68#v4l zUF>;Ycbbz%%tCTEX=z)8pK_&<(!mvBU1Q9_Vvq?6E$QC`4 zQ4gv|%WPlf~jI?hjm{( zQ=cH_`Gd6ZA#*}{ycU564TTNTB48+pY?qMUBVwpfbdVO%O#J~$gdqwr9;AedU}{Gr z?K>h0AxQ@55XC5p!Xarzp}R+3bfB^vIEP`#D{O1RdNg5#p+O~*kpM-(AVnC(C~l=6 zbVfgl-S=s(T6h>$FtC5CJu6HLwSwUq(^kzeNudo^4RJ1tQUW9tx0@{nq%O4DZLco4 zUe1zY+hw!4`C2}jMQ$4XL#Z0K-sJZNEJ715H%Y2@*A*1ZcSulb(lpUqnqMN)qE?95 z`uK5(pj>KoM5RceWCAVbdaZWzO=-SR7k~*G%=VX60trvN*gAjWvq$_V3OM9&2$iKt zRbj9|A)lF2%Loa^$qJ3Ol?NGhZ}Qd30D67PqY^XUNG&zM{Y_dy{eafdyN6bMfCWBy zUC$r+YMtyL9$z(pPX**Ydz38z1R7uZmP@G{80>hbj=E9@d5Af3;nd3y@2;Fr)vfRH zqViy}5(b0TK7fDq9~$6q$FC}AwdFx_h-e>>x5Bp$05!<%NDoHuuVJo8WGQB;(joM< zCE=Q9W@9eEVg;B`e@x8vUQzN?1tNB5qEsIrYYGT*6X9AYDAS;f@9BR^J9`I|1b;(~ zf|()+Smki2K#al^=OZ)3{Qxc`08eGUkjYAaP>E1oc~O6wl^P4w;&)!ke4VEXv8&HX zy2vHC#ZYPwsa2(^TCBH*sO~om7vf$GVEUBRTCYUbqTN}k=>-qUL#?J~6t{Ma;Ea1OOsNx6nnor+tu zN?|s+xB-90oqA5sH%zd8RIAGyVV#!WHw>Wq&-2x(GTg~-9!Gj%Io9wUxiQ>2k)+}qZ&h6h4Zl@i6MZQ-pZ98G zo4x5g7$ltCze;v%=fkewH5;Hh@w4Z9@P|hm!Ipo@sQ<4-&h=`R&qb}Wdh(}@v)+{3 zmXfS^$z^ej>c+;u-^?DN4HW~FuMT_D3bmsN)sqwb>||#?Tkk1!J}#4Tqo2@TL@F3^ z`b4_rWpX(Sp%Iks>vlx8%-Hh#zjac51XKlp>hWUAO~&ZQu3@kk1l4j!#*tw z{+54nxwxF+pk|CQ-9Or4G2Zb<@oKrI{^~=LE%*g%%vnsOnw+ZXjZCV``vEooDEazw zHR~)&j`dKh;2cSWJ=B@WCZ~S62RkqLIa14P?pU>4W*tS&eAZ}h92B>9)5j#;oZ78h zlha7V^Nq{AQ0Y-ah;u+68~IJQ^L3t;W_f>;$kYttMY39_Vjl#yr}3hMVcV?h_rB*C zn`_XnUkDxqTsT4ziEHF6jEO*14*}O5uD5nNPSub4YBr;We_JkwFd;QVxyye$Oq7d< z1PX2kikS}TFnKjJc=s5pK&zg`Iuk;XPeUtqrt)mK#%!L5FJ7L*s%;1~w!oZW)X{$| zTEot>0zd91pcNj|u! z_aMMs!RQ5XpTw8vYERBYfev~;Z2f=olHmH~^P}r=&nOL&vykdrk*U|8)x$@vbur+{ zKCOZ!gxnIGx%L*HUEtZwU+@ zH!V>$9!m~03e;ZMK25Q3yg4j0H{Xh^cvU~)E@#U#O~2bWMk9OmQWVw0A-jL34<2rq z=N*`r?vfdwWl-0kA$lB3FKQ1Ka*^h_NwF&|pqL@+>1t(hWAx&<1 z+5jcT3HjpwMX!jBEI(Dk$8i#FJFt06-}q&M{xyN(c&}uBQjy?1ij<;E`A|LNs2H-9 zSJ~0{=|uheh8KVR@7L)Y^5Rrd`X>*fdPMbUJp4V9$luT6ftBEN4&KQeg8gdr<(YD9 zA;r8Ana8}U1}MMb7mA!>nSZqhv0cY&{#J})iefKtCSia`U@9cBAI<+Zz4||^tbX>F zfhYzP0Wz0?i3Af9GBP(d3NK7$ZfA68G9WTGGdDDsKyCyS1u{1`H8Ybjx+j0Mw`EjZ zTh=v<6WrYjg1ftWaCa-9aCditI{|`2aQEQugy3$$HMr|bZa>}kc8~AxHyBXNxoqyW z*WRZN1*wuMgNUiUF-X$h&V_-6k(n1DC$C~}3$$ZlW)QWvF$J(PGBdNoQ&5OGfq*WS z_IBbx7Z5Li%f$kqXyWo7=mdXYWoG7qrvONS>_ATMMpJ;XCqN$L0#x&K0I>k5fqwxd zduJC0W1#c98DwW}X$PWt4-vC>@N}{?w{ZEBgN=dVPo_W7qKp6;poz7;yR)?=0BC0l zkYSW(1Sr_Mzmt{#YI{3?F~|aFV+OD{1E_(t0P3m|Dyje}6-9L=RT_WB_r$8M4i5HC z|EEPvRZU%r9w08Fpe6wTY0v|t)K%5~{8ac810?R z869l?(x+x&=?rkUcd~y5yni}@Y(RfC#?{XBy`3%=pnoO!vn2pIOB0ZtGw4r{r2W5) zw(qTc4|?Za{v+(Y5iWmn+WgBM;0yx&R~ZYS^Ix%YN=kA7TcD+#3&;*=XY%go0(5b8 z1{nRtz5jwtss1Gp1Q2s|a{5z4{@*62|CIT+bW!{FmFd}d`vQO6|98iLcCOA||LDzs zFWbc4&e_u0#ra#yL8_*y1&VTmI((W%#UPR%Oq=c#(gWUVz*)ho5zjw!u(Z$2% zFYiD3M8xHI0o=@-02Us00Q38hO4yl-+1uK_t9FL}(>`&__ddDUJ9#qw&s1C6*}L0$ z|1WE1X=iHor|W;Ft`1Dj7m-iumKPd2j zW&dPnW)I-`7yYi}-=_cDe(JvtDb4!{HMO_1@dTKH%;0~S6zpBzhk^S4pELG9wIp3_ zY!raDAnN~a=>K{FZ7pp)|J(0>Tr@#{q*DKX1Y0^wT6%y?l`LIMEdJHifAODOfbT;u zVrOmxdf$=1DD^+*$mV@u-!C1@KX(>@frXv(e{AowXku*#a&`uA{woah-h=|NeN01mD$z5p|OC-^@b$;l0168}T}g}9gjOp<>iRsfUq--sQ+B=a}o1Te|{ zjko|z^8Z2H?^%@oM(udrr0gAfA8sEWp3fyE5ay5f6aLIU~@A=Iv|6zXDY5ouRp5Ef`VjS8{_YaSE?w|4R{jvH7d|#UNKj6E5n}5Lf;+X zfbW0zqz%Z-y#LVeq8va@miGT>3(NaL9sdE}7wYs6_`WLVf57(yf2ZSk zui|3i1p2$H9Pese-2W-|eci7AfbR=+|3}l`-97#R-}8C?1^@dTDE)Z={B^%E|9vq2 z@5%TVR&{Z*w+3lin!bN4_=k%;(8bBpLzjQ~{c>V?=ih(+{h$7S6`=V0Uj0Y3sHnY% zHv>C2CxC&KhXcUE`M!tm-D30ouUM0RJ*57+7~fCuzww_Z1ONo`0GYrq&D)#sg;=FF zeJ=Hr_%>MvO~J!>Qh_a~C6fTPls?%`fGeK6MFtWo2y70>pe(SLljha;`x0nZq(y%b zf@Sl%-jZB7ac!zBybbh|_ai`-5E;wSU{nvvkY5Za>m;K&l*!50E@q$3XiaD(2B?o6 ziSe{|J;bp7d_%iTA=4{sUCo1bFPvrhj_G8B?y-o9-$AfA*#YkI_JA1|4eS+JqMb3y z|BO8*1LM%sg{niBny+TqP&I#G3KM@_-9t!Vt4eK$sO}M1eT$W`2wC}wm_5;{UlfUv z%w-^AQh1y-v?N3Bo>t#xrT&|RAB@;^zJ{w$f%)+)QE)#@l%XcUnrf`KH#HUiF?Xji zNf6Hdq`D!bLd6fBm1~5ToNrDwaj5|C`49yRTI?&?C@1#0(+5qsoB{(e9K?SzyE_Px z&0;_gD{UbNI64x22x}JM)eXcn#f~Zz8!!_U?J6J;a0?e8K|S;-SHA9KA0LrJuHdrT z3UESXTXq5pMKc8PR%t@tNUsRo&jq9u>CS*FQHI{|Zg6qHvkFr3KXB8~u76e#g~RKu zW-g(!Zr_=xw~%`g8=%SW18{$0|G-=95x@NsK2qM_ker&I!{`#@6Q{woG_r86*$(eD zk^L_N^|0Q#O4u3i`x~&huWRP2y|5TgeQ;8!O@3EgIc< zZ_h4hIHDkX#lty2HyZ)Kaj?66Nd91*+K?1w!U{HFUPTv`WineT-dMPz_ z)|Ec;cef7}%I286hMG`1Bn^3eu6$xM5~?q88*&&%kknDVyqpU}f7wiLDS*vJj1SdQ zCeNWK6K*;oFknXX=MI6{8I(wl-?<%aZDcuNQ6VzX#l+&iNSuEmCO@1GzvfMifD_B| z!m=8^@_{7NX#1Mtk-Ez{>-Wva;O2a`k4Cn!d2lZ@m&NcZ3we z%4)GfbXv96czl1KWorz!m{HKeox^z)Nikm1(Zru?z)OhF@P>3Fxr9ZayoN9PcmjU( z_2x$(14+pyDh4XRS6bsm?)rs7?E9X}OXwE=uNN|u+IV*8)1&i4gG+b8ltLJ<6uu($ zwPrrP@^INE7*1-bPFkEuV*M5nIQ)jVP)FaA$zBIKHnV>`s|B=icmZ3C{oO_*Mq95cFlwtRp^87ynWz1FHTQVtsxUtCF}B91lv0M^EBSi% zT9ec6gz4^mWC1;PN7i*_i?=d|;44sIQiPlY2( z5D2%_gcZ|j>5&Jf(nN}GZOH_G4^G*^*N2aeYXr^f;FI3nOT>vx!S4EA@V_A(_z2;aC-rJA*F&TWZQl) zC&CvM%8=EL@4*JC$7YFf5=ViO*y19Term+fbu}g9xeY49nbB?rigMkTYVv;W!(eQf zqOgCfD)!{HpSxV+9!r`$HgK#y5q_m(1}+fOm-6F%w(a<`LkQJ{UJ1;}ED@Y86V6{y zlpr}8XD)CWB=Q6>@V3y@)1JUdO`SB;#Xmt^xEMd1&`mt92v0wZTn=4oi1--E4HW!H zg+-H}lR}TlJ!VFeX?|sd>DT+ z+k66RWL)Ta&9J3YhTv$#q{ky`r@MG>o-&A=!u!B+x1Bmx&Km{FvhYy*YWya8y1pZ% z`cKlxu}^S&)9f1%KERnyXC|1BMV7bf?xX^9wfce+Gq(NBB#k`4_@q} zW+;>)7e6*zJJQd^4ZZR2GgSA&-qU}N2Ps{*Ld_v%*m~6k&EHp*?=i#@hs(Pp;S7xK zI0xeYkgnadQL;IQ42tzvty6%rC|1vx(ys#5C3K_bszdGrf(?iWcQ1{ZTmWnJ1u4WkpIInrmr!8d;*KCI3&{RHAIY(3Vo0pC~|I$8Dai$Q+qh+-jb5~Ln1H79Ut{Hae)D>{D#Ni6Q8rmu5n zo~?6d$+$ArZkHzb!|dV?4ouy7!!m84Jmx9}@W&Um6-LQg;Li5aLE|X|$r*MN+d@QR z+meIS=ob87uLp5$a5a-=rK@h zKKJz=mNkF@i`*2{eNMtwG-*W}t}_5s7~l&$XjGCh(<8AW5Eg%qetEOrDp87ZK{5U} zND?_sBN%NeuUAF0zFQKjR3eBMWXSxeTMcs1)mApXtyLI8%NrIDy#(sOl^zxpc6(Xx zll>&iXxH}TtcJIS2?v#~+Edo&dYUiXt`B;J5l9VaRTD&11O7)p2PNdGPRZ;^(n z4)i9;Pdg1dU7UY(XQknzb@&t$eabI`hTt25z%@&k_^d%_<%$;t9A`0*1)JM=*ixp8 z9PV$82%c_*9k>CU=jF|7SA7QZClaaJ3p1LA_RoWL{>dp?*pKS5{PWFJB`YL-lD1uX z1)9`{Wb)^Pcl;;19`3Myq8N!Z958(e4u&HF3E#5wwwr&PSLyDOSPngEbye}^>QCO< z1_G6L%>X>~e(Mqi_pvZ~bVZi|9ZjJ0 zBUqoMII1!KK_)nw^zv!BL;>D(ckqk?g=n!1f}Vf>evapOkF9{F3|)02>~v7Pga$V4 z1ay+lY8EVa^{mii-`6;t?~Atb_6&rojehP&Rd2Stp+6`bW^?WQk9 z*U5j)qCrfVrpFlS~YZgRa7|hNA`c* z?=UN9hWy^}8(MCW7@{A_^@l)#cKv*;itp>-h|PICUJyO43&aoi0-hV9-YTeZ_4si? zFi|+7(jQtn=PM}zo6n*Z`_%-Dt=wKzx<3`ofz5Xs4+E>FgoEy}>6nR$@4D zSKz8LC1I9~LzBt8LJtA3n-za^K{Gx2Sb7Z($B2tLC)nuCd^;NvsysUL?V`lPljRoQ z!H~U4#}}u$GwCCjggx|&etn=JrULO3gE0Ig#YLr4{3$w7BGEKHLqhLx80S}6CuWD& zb*D}if;I!iFEJ7f;vu06w~BG6LFnV|q(bl;;7qrxHtJzKYsYPGK!<7E;s-Ac0Uwk^ zTpSm95Lxr!(02&jdl`Sbr)sV+(rWqm34^Q=Iyz%9zK}xAD;+GKcceeiX{G{d@gB3x zxSCo;ghH&sy{GD%v(KD03TqCCE<^bkzK4ny6^R*HnjOhx6BH0wZOPO@(3z*qh(&)AK!PKRhh_)llM+`? z@3Cp|qzn%j7lqR)_O5g4Jh>jXg^kx2Jxq?Te$k4fJNlCebjXy1#BD8G^JSRAv zdCe6i*SRRRxT#a|u0w_=-BSuJYz1e3&gN**1CM$lf0ciuosKU-Y}=$I`~8K2?l}r( zyjtui)n8ndHY!wb>kp+$Hu}X6#EzW9fi5qf z2oAL`MB>zfy{>Iky&pcz`5_#}t3NshSEKWkU_47FG-QWZM2m6p;>2HIf+;aAW72RF z+I)pkL-_Rz2EQsH8Z?Hvb?qzNtcYGp@Oq`_D_Fl1GCY4z@v$#^`DWZ7;j2ggraxMO z-52~}dIl-G#i;$SS*G8}*ui%wX1B_BisYpz&C_hHJBeRCp@o9Ga+rcPOX^NeIZUz8 zM>CP<1G!&9S6U%vAno`yUS3QP8H4RN0e-?1gHACN3c^HkH0brOp8VGRh(TAy$4lzd zHt~s+>tBE5G#WQLartk7&M(0jf%0X=TT8+YFJu{sR z+KC0lh_s%T{XJU>RAt6a)}?fmJ5-!G0lbP=XbZ87!t$nAePt~Rr3oKvRq$1sTU%oa zi0Dv)^e$BIw={PM(+qj8IG*cGgEm4B+lFd?=c2Z?39+<%70*HQ*;z^0Os!&8kO^{V zNuz()L{D0{GWR9wds{k{aQMX(Fi|Zb7azSo$OjJnrK3ZhN^zEM9r4^Sfge`k=y*FG zQ(=^`eCjt{(}2QubU^5(w8VFBs|G*h=G6Vu4hBS951P3KVLTMH5!Jro=jRPQKxt0s z1OZ>T(K%`>49cEylBGXv5jpM}OLyQr8=8O68rWN^r-=ADJDWu*4#LTS{~Xra)pc5o z!mbBLt1xWhLV(nPlHdJ&1myn6Q7H{Mbqi-u$nWv}rbPP^J84j%u~EuQz~XFX0JJkg zd@6az9Fx3kdI6j60q%~0ZHgbk8cPqFwWZiEn3SHo9-&jR?oUvNdOp?6S$go(iR*uv znKqtFND~n26SHK?wHoCc&SS;v9JsExKg+x_2nsMw!l#rpjLnE;eal*#@TV1SUs~-H zKWJAkC^%tz3Ggl2a}!VZ2NIFbDnvrH3up`1Fl7%ExThIDrwj+4uC-Ep3I&KYmhwgW z7ERfk_DzIL`{R#f#5;;h5LE1DjQD>qz%n%N^EX+AAPFGIW=~?QIxxnCKqPKlh+@rN zpSfRp2zBn{vhhyNM0n!|SEW1FM*<))U%)Z1)`u%Uv0bL~W+_4u9&Nkkj!zbf3=O3X zqZd*LPV^%E&MbWG&<#ChR`IN;l68sIwy%_J*{nKvo%Il4AO+eJ5KOvxOmZ zQZB1+be)c=cnWHJZ3%2_QtkIhK%TBU*lc zwHcWpL`)uyg5kAO&Og3#1Yndofdxe|e$c^gXamz_?g7di9{|OuL^|Rs^*@D{WiFF7Bw`!%c zYhEe=@5z&7dc~;E+QNBM*BR4|6%&4oh-Zq2_D3QZ5oqz@1MKl=38c%(L~$u26Sc{< zGM0TVxbrwHcF-D-9;_aNCym^-T@biIkow{;G{z3eAt+80J41grAv2H;*&Eu0l9h{i zmTlg4uCIurL&cK>h~D|8;c25P0ht%Kr^uoaF_@0Q#8|yr zb#<0Wi?L+rsR1-~z3F-6Tn68sY6;3=<1NN~@+p|8L*v_>Iu;7t;IA3UP=R7*^~Z9C z$|b0E>pBFD5{N-1G$#Z$H?7SJJJ@V99@ZnQ%1HBl#qWP40E(61x`62RTL+74S0iHV z)?6Hi&wPec^Wzm6=|q)UP?cS}Z`@hHUmq)tCg_(>&yJ_4!`~=pDEW}G=hkL^9T5!2 zsxW`Wvxm%XH1Ddh?rOd+E>Ta@1LxKjH}qSJ_(_YM(Hesq18*;4)+y$pPP1&*a7YfI za2Iv=2ikwmw}MY@9xjhcJSaRT%vlTyA>Al*%~{PSg5S3@qeJsP91jnFv&UOeSik46 zvY?5cw$shNlIZ$&LW8!|Vuc`FRURl^`}tw92BmGNWssvS=EEyU0J_^MRlh$y>?$fS zo^*K$A6wbL!{1?I=fbg@+G|!@x{k~cJh(#|U&Vi3BjC2k7h1Cc7ma-^T*{7hS>7xS zBV?7)#DOOKuyX}{v+MDOn_v?Xy zGRCA)y8vo+-}Lz?cHP6~nGWdlDsQJN?B2j_$|(9g$-dg)ttTvR+$Aw|8?u{`USu4z zua)LJB?_%x(XhP*J$5iXPF7okXoyQR2ef~T4BGw>Wi}iM#0dBTA;AUhF6nW~>*IfY zz!Bm%>(Q#EcMlX~sRnJYHB{vx$3k_A@Fr9$U@nc7ZNxtCCUJe~9(!_vS_Q%f&V??* zST3X86I?ObpCV@Pxz*6j0q+xYq+JAiK6^Zh$TP9kT2c2Gxj%f1=1QrqJc&(Phy`yZ z+AfZ>zv%knjSo>SO6imQX7nUYN4b9@Ei@LJdX*ve0yA&U-QGk1xwnpPf>W_XK37E2 zhp~|^P4dfOKtmwva|Z0pDps8pOk``9sgo!meX(o#m+4npddylO+(oD;^0z`Gs;Oa8 zVqRvjef;y`R1-@g^Z;NlrEJQ|nKeYk3rA%_jScHmR@GaJvZya*Y1dX-;Zc7vY)W=( z$M@3p40dOSE!_PtE(sfI1{^swtShBll?$D`(pDI9qyj{E(&U=YFKEJ5X47E)$K4)b z$06$WVpZz}JWm%qc~ik5SH~=e?}rlRsEf(}_<9v`Gjs(suUmPX=mW7KMI@ zzsN31C$erfRYvdoT^xw@eg9S5HBJl?Vzr7i>l@XY; z2;8NE`UUssE;h$ToMf1MSr}Q$BM}}>e5J%dDXpB5 zd!DE`Z-=M{EKQ%AIVK8b({A_>vrZR;382t5tqafeKMU zbV;aXA^*Xe%>rsH$>L+r&TJDDIf3796W?gQJkmN#+XN+= z)@aS7!;gO-%gGSK&6;DV9vvIU!oB&2Y*gZ`P>g)ho==3_5ibkYU0H&88nd#-@S89@ zuKI0P;rimrhlS+!Sa8hl9KVLV@1c61I@2T%o6c8Knn10{SwjWyitcI=8|kdsGHl%> zM;n8$N=w`!7kv8GwoF3zt$?xT<$`#aTUW^0y9j^F+W?oy4{&B^9!666m0ar1=E6R7 zGFL>nHW4j~f`JDR&YxmqBfkIEd%(NwrkKt(@h#88RJk}uSfuq5Fp@VcglCMr!2=5| zP?3eXuUc3kpiHD~$Nkarve`&%>}KqxMilRr_!Dw%6}sn5(5erZPL20hAJOnK!sz7@ zae9A;Uy7|Q1diHOh7cPL^fC(f$`^{P$|ajun0-`+{_{zaHVF zN>hs3(yIz|L(N|gycA|gdwk5{=&ubQ-=BYKPw?qo`7)RD=GKT|J?pdksowqJp4tS z+*qt0Re*p_xZ}n+v&?CWiyG<<7t(bPTA7>iSH{3*bVl3Zr zc?|me)$$U=j>la$G~eRMPRAZ2IShY!T{iV?BiD=+j8M6nzW7`EHce;@BObaur|>8* zVG~PrA^t~mpL46G+B#3x%KpzCnLW%)vK`Q3VNA!l@;xDOAcWe143k)MFU4N_taO~q zK-MmBb04t}PyCo;HvAwXsaMS=A(FI4fy>|Suj8m5szCaB?=dn0))bdDy3Zfx%{OAN|7z@a|Wxvil6TE#S@llA&$mZ}rdR zmgIT#s891<$z?k0)%qB=4Lb9?c|fR}nGO%(-BIAEtzLWuL*1eWAE&Rrt1P%)GJUjY za#YN#C-FW{-O)}ag$ky5qG^BKR?hW$NtfgSQ$H@nP15%IY)_rx+BEoat$T}zj*kQ8 zrk@^9DtsE=ai~1f0Qr2PUaC>{fL*aH`Ldtz#z%N9#fjlV)`<|MWU093S5Vv+-8&)f zCO?uj6V2@HGC69a>Hgth*~1f&>)2iRTThpWj}`&ddp=lsX@2)h@M3?pl!{9ftw|!* z=2}Iv&K8stH6&!E;%B6fMLi6B6^XknKViZO+;x0DT)A5V2I7%yBxty5Ns48ZVoE}yn9SaAzw~Y2yF))?tqdu0%za7Gp zBVW5zv}IdE$vB9d6PAB%!YM9Haql&lbfWO2sA6mKd5#uEy zJ!tPi$rKu>_?fmmhBb|~RHjTIofy@BDE-t0&ntb6#1Nb~M&3g9ps@ONT^*-|Svzq_ zzokL<(dB^?9|_b!MM_=a($!~TVTeHn|naJ;L3O*T9~^Z=B*H-@ioG*KJ(kE*Wwbf%G;WVzr)}smoM?emOGmS z>1;o=NE`yHpS#+ER@EO>V6E8CqJtKr1q3I{txn5UoYp;JNRP0mrRHY})bu6XXN5aS zzw5ZB(89QeI!AvLudyY_&Q0Oy<{7}hi zJ!y3%pjpk#`4N6L=Cm-r>#G|w!@$YLkDWw%Fa&5$c4GN$fuGH*oZ|L%@+P-HvVDm0 z#A<>^>BATrCHSiF(3D9^+9nF}WY$#&@5T_Kg>AJ!=?Q;imh!Z?%i^g3jo+6~NXP_h z;PF-8)0)>SGdbk(CrS-NAJjq3(!t1+!*@A-H zE-4jR)MwX#P5EuQoG(?1eQ1Gm37^W(z9X8oQzVCGYTx@L97)-Q7nz;gH5cXStZo@x zDQoH5kka~;7K6f(3Y7lm?Jj1|4in^VW3Da zZ?CRjk#39AYjP`~J})Y#1CMPB%Q3pZ$$Ed9iqw5vAVBW`Ph_a%Ak%rbmZ_~;{>V*) zlA}wNsBr+!`fU!Pw%oQ@PX){T>ZkO+Fs-)dcUFG_v@PqIQjh8p23wW3jzCSYwJsM- zL~cVYUu-^KFmJIQ8Y!u(%2~+mk=yx5^GC@5NILuwKWyIZYIemq?+(fFIx-DCu%F)WIA~ zgjRPGspxD@p}2$lUR|?#_JonwHy7dqB^kLOo8q()aL67EZH^>GFNL#}>{edW^MVg> z5Aw%nZlt_@P!WR;n5w$lj=atg$%fLmF)IwDzJB|Eq(?Xxje5V`zZL&k9_K^baCHi0 z?FJ0Vi|O2PJGAv*)S@79ZTnV*^ z6LH#q(J0a94fTt>SH}yjf&eZ&W9nerWq^lqU)MdjS4gY%GeKc8@+h;5E=vEWiC5F4~a*0sd&p?}%9iX`JA&bO#d4#sXLBX2rYN6B^Ml2s{cnU39$oZ86B2uk*^Np^A=b458Ko1n zD@K_j(FRE2%g5BGJDyYGdHudiz~{FQzP~d~vqan3H%^CPh)!4s7k#)6g`z#h_aC%|-(k`!cFZ_q%@JKK|Z)j)S1y-R9bCpUVJVnIFA45XEQGB$a*q>6y!C)M5 z1f^$7;e8v$e6{?RgtsxEg1j}Ha^u{8zt$&a)zmT{UgG>t^no5)>krRs3&T#&;M9|2 zWDOw_&sg+(h4$YG$JxriBWl{_o2&L#et|qymmdj#2&Mi>cN5?ws};@u86;+SVzv;u zW3f4s&o^mwYA()oc1XWdnQu!=y0QEX&6dtj0x`}Tn<{44{E6$}4%u1kGDC8I-1>W` zUQLH5|5d#%1`aIq;fMQ%b;p|6>lTlFivWlh@FnjHts-}6YH5d$X&a94V8mr+rXQfLtb*)%dr7b#U~!$MkS^kWqL-iiKy?#c9P(3dIW!-K_Q5}Y&X(i?TR;8D zMHA`>kSS|Hiz(h;Yf&($g>-EM$k$>p)!^5&)xXA0l)zdt;O#jQ6sgf@D!#$rz3KgA zX%Q5bp6D8{ys>s2DWuaR;q#zQ+BCu8c=kUF4yh{XrDC=J1#y-KBVL84SYp&=oL&BW zRvtrLZw{6wWIDQe$Pb)AO;uyPQ5`);*t6Et#*`*D}SWRm> zA!Fbm&eE{UO~8-|AzZ>F&l#o@^8Jvc09nX zh@TxdNd6{1eKP%1FZ?ua#ej8pIrx=PNkeM5GFNIf8v;NZz z?LKfi+lvwS^G6$vd_g^=nn$xIatHUb*r=j*{gu(6Rq@S#Hce*OH@3`3>G;>>y`Ojp zAV}NnyCW3kxj>Y~#OyZ`9upQoRH%5J<(G4J6=+(nhG%)&%ECKK#?1Rs;%Qb`DOj`y z+SisT!P_eBInTu*oaO>i^&kFi%|Ug2Gb~-W%c=-M47A#>vpiEozfqk$F%(AmZP1!r zegT+!elF^NcJ7bnixfcU4VthB8Xf3TAWo|W(4K#US=FLFex4jb)yx}$&!aj}E`ENX z!r~v`g!}D?qo;y`{lk|CSq7udxU)#B%)I%T07J>cGnr-#N2mqv;==#eV$f6Pk;-ql zc+Hpvex)eM64S*Vc*uyOer%RrR;xZnjf9j29Fwvo2NrKtK)xD+3h^N37 z@18dfF*FKn6o_{}`dy4aV?~TfR&4wE7Gm>%(Pgoc7`V@U`SD`aCMZqOLa~BEzAG8x z(b8wZO~CK~#?UYH-1J=%B)~ed~9A273b;*@zI216qM8F!g4H%8+X0*%TVBZa+=IbJ}u$ zSZmnO)Vg)an_Pu402R%Pp!C9tEB2PjP?l9HWlVuZ^jG(o+BG^g!|Rr$7{)`0jCl~{ zSYc9Cs(4$NcoJ)R2(_kkT7ejfW}H?$cHL54Z+mbE9LNHHaCNo{2=g#y4k7_oQp z_ngz=UGq_Cpqqcx-J+{kOLQCxuet}OUWys}^M={+QD&_qd;#IccnTYAbZYE>yQOD# ztdE%Kb`2A)JhirAt34J@tm;Uaz6f)-x*9RIt;cSjjil`fe8vK79J%N&6RK?;=_Z!r~~;>$d}%wfPZFA zy?3R(ahyZHBtd_lk!NSnvuO{1uyB5+nD$<1KO|`8N$l4|{Y|7j03(|F1C`!9L~@Uj zvnNWmacGyBGD<#FiBymPs^ktKoX+5lzR|h4Hw=w|b}8qmg#(L#3sbkI;FF=MzLWiw zL$Eo2H)0I;Zm3E_sTPUk2*#$J_%1ukBJZqUS=LAU*G}gGqFa|3X(xDp6qDbbbBtaR zy~}keRom!e&_<}Alw%fmTKoRMorFbl#x<4V2UqidW+M+B7bMJjfh3L-)OKW0kS^Is|LuD1{FRk;Z69?)#jj*8JusIJPV}kr91^0h{HSzKoqi6$mH!tZkZU{1^U5%alzF~m5?RYc(Seg?KjVx zC<#j%Ehnu(#B&ZjrJMn1;rjN>A&23^EQ;{x47ha!%6IKJnf#_+}&^yfi)Oa5*d*@}X2+yWhWQp!Kul*%-?L~QhA{lbbp z){n&Rq1DEJM$@1sE89@C)nb5&$RI##heP0MvfPjge~b-zOsL7PV9&L!GKgx+I^wyU z4BbXL-qe9@%9TvEC8+8SKYgC^_3erc#(aTrL5h>rX>iM8doe>mWdQHNPpGH~Q)5bY zMH*mb-J|`%Z-#6mB@zqt{r!wA?5<&}AToS@NQH`jBPAXC9dgJUje5{^{ktTtH7DgS zjS$h^gdSeYOQgb?T8ppPy0r^hq=fmys_F?|C06G2JHE$rOxLI1W*ASMOw1(_?uGN} z*fcs^Cgy~N`o>S(W4er5T;hNqVhFy*ZKlgEO3A7vo^=D_R(VDr^J2j2>PB$CxuUBT zOV=5HJzzfB0&nbP^!!mp{2wIh zJ~^BidF&SBDNXyNN&bLCc4ZiMWmqQ2^(76Z_jPz}G?|*0gaW!KTPEbClw$p~#QoW+ zoMHcg&opJn!$2cZN6vT6juOVxnU)_PftaIz06{ffJ()NdSw>zR$B{3Kj~4C+$(6qrJq~(+=7$mmaN8en-Si~Emh3}?2QdLxHt-3^^z#0O{gdDQM{n?`tAC4MYZ zL3XnFVX%Ji3DyudGUs}E6h+(R=UIQlRit=NL|0oy`-@8E_kf#Jdk#PKZXHn|c}7W9 z#V=ja(5LIDi|o;c8s|Q)r_!aKI6vQiH~+gyRxWgn>#57Rj?izWR+EBnVgbw3iY4$2 z>~Km)@?vTRP_TNlviy!)eZ&u*mkhU2Q@OZ2P>hID=vw`=rfz|TX~VTJFO(13igw^b zhRqb4Mtk~_mM$OuG(!b%wixAet8vV|FnjW$WdGZ@XVggA-iod9a>z*SX z6{9F7)-v9*>>UfdiLRNFE@HnH83!}*QGvDHIdd(KQ__2b8}$(E?lY$I{zl@nS9@n`k`X4fKC0L!r*6n<>pRcbZ0Oj9NxFc|5(zh( z6>Xo2u3rw2kiw~W*|pQkuCq%eF(~f&w3WTpm0dzc4wc9s=Fv65Gct{|eVsg&jcsZ!{#Bs<$xo)wQhvL zu`z}Z&&kt){@dWRQ&agep~kMqaZFE=7N2;72r`v3kR4N_W+QWdbJj%({j4c4Np!$9 zO|%d6fgf}XJJQ&Wn0}wFt(&Rrm0QB{<}lHdM2ojzY%7eLvwT4f6jf2IgO#&Va}Z6I zijp%Ul2ORXQ@^ho5IqcCn4oS)8%z(E)Z8|9M0;vQO-BJ3%3yrk7UjzLxtNO`=jEUOBwn3|KmQ36lR@DZKHWCY=ov_i8L37nn_dMp9dQzFaYO6#gAKw{o{= z6FzY!8ZrN5h6EaH+c$AI=T5I(jn}6;_G=yxq&~1m{Tv~Es^l$&!{Dt_lSU0K^1F_L zq6nOdrU1+svOQ9AsHg}j_YzZ$+etO6!3O7I1yM9{lH--vr?0?Wp+&(Nf2=IB3?2u65j+Ed1p`6n;1!aT#0ZTJ_E7 zBkE#cBFV6Q-(u1%(d+jQ)}c$lh-9uADFPx7`1WUMducm@GgnGRGX-1cf{lbAGShin zxa)=&9Gfl^o6Dgd@4doUS)VNdU#cD)7H;1TV!LmDQOGsKw`$lla@F}mH=oaJM-P<6 zU`$R#cf8YfB2)3z+ti)0d@N}~KdyRK5V;g2%J=lIwJ+w0bCr)MptNvzUy&G_Eq!zO zRy!abl8I%rq{UP<>Kza=7i_yO&_THZh1`Cm<+X+*6%-+MS6}E5FU7C6LN%@d>zf z;UBwVwTbpt5H8VO{KkklLNop#?i*YXYm@>F(TXRpX6tpW=ry%Wdi$D95|;frD?V3$ zpN(b}TFj3G$%R9qs8p4a=y6xEf1DlTtiP7TqKdL&OnEhUD*H>zoX&{bM#%k*4}?cy zZ{%Y_IatZ9q99*TnCF#KsHl0WW6W5rmCWUE$7aZv@RyW(txutS(K*En?KR=coN?8jgY@w z-SUt!yMa#bu7@F`Oa_Xdc-rj@H>4Zpu<@In?M5B^X0uqu(0XwBcSx}(%pp&mHbDfJ z#jJLSBh2Siv75Br03+puCc}BS<**ZSol!?rW12dcJ%yyR4~nT@iMVO(Dx$T2j&L%` zfB)#P{eNwn({?3_qC{icb~?7xv2A0;wrv|7+qP}nwr%t7m-}{pqH5F}v!a2$)m~7+ z7->gwck}5dM(DKQz5={lmU*VAO+m^rXr?e`mIdf6-o~2AZYI>QHoJ8&DDR@7z1F)A zc*$~Wjdg$-yaYF=&X3}tt6`dduf7IHOBeKsuhg+~Jf@Jq6Psv3!nc!FzPzHGt)+>j zB=oY5U4@>gLFp!6I&1OmZ#vAcWP_{0Zz>!j7Wc=$sy!j`Y^&nW8LkmNhUdfb1uf@( zQPNG+{T`>t11oZCD-jlF0#^7{z69VEqcjRqe}%Xoq;v4egm1Zg_bO3;MIC00gnXH# zg6sj=2?d`=@S;sTd(eWtNZ#}oZ_a6dD5Z7V4j|$u+T$k4Xj{4UBLZ2okF+Ah4I*ps z!ap+NovGlY=`~ji(2kj{23?%>nAQIk5K#T~QS-~=jUY#e3&UU)%Ig(|Rc^YMHs2>o zDbaTKtlVy3BR2)V=fO@EgkrMSWliUj1vEja4Y_`PAkD`&K|ck50$AWLK|dT_*@aw) z2kPTjz$#Zk=`BVQktfBY`BV684I9{YgUvq;>th1j;c>rWM;EzzBsAG8R@X-jlQ-4g zT|yErCNAK%>*jFAfS{4FcXUcOA}wvg%(7}ikb28%ho(^_>?M#sHNeSh(<<^LD^Z>v zX+h^DX&DpZHPIS>yyTDPE9qu9l6WYyv}ddkGF=g?3{-i8>~F!U%0a9Y%5KNTsS z7(M5vij|b=h}pVrHR;%0K3Ppv|G3t|(*{zmbytv7j=pApJ+a6)JR)giDkP(Oho+Pv zvmF|egnCX6FbWH^VOxn`N{6a~Wk1l>rd}7tfT#j$ z;#`oge5z$UVo9RV-Tx|rogv*ieC#(4wiSJicpm(JbR9-yP1`pmMrW`eR#W+|$vR68 zKO_5)PbeyzW)-($;bh69SaK%iMxNVl-JQC?Wl2@u^ zD&ydPIMGPF<+_2<1plr1p$UbI%KIL@sn2OXxngl5T_%e*N|v`TxM*tOui#XiweRW& zecGvNRtE1Z)#g!hT<)AFhUnfr{nu}o1^1!$Pvi&UuI^vG%+9j5=p(}t2a-EM>$2hj z3<MHIRN>a=mm4*(oqPk9;-Dw5(bjEbdy@^ki+zM`b>cfbL-74*LfSNh2{w$yO? z#atw9|J=(ewZz{polf#bFE7`@bMk5I0lgm9sgBFZ{v;~GL)}l)r#W9&5UNYMi|W#E z-ps~M(Q&2{4P%r{Ll{>UNS`Og27~C8q!?D`SG}RG{GNn=*3ZrnltVpe!J%QxC_dVY>~_&^gf~`l3g%_^ z{(=_jud96(lQzig@*t#fKLJ&sCke79?Eh2wd3~fpIFlBtRB=>iK4_98xMSGU&n?|G z*wjP6!m@A)$$`kVzh@I%%iq$jmm{7qkxhlxxS4tvZ`KzlAR((S;kKUrVhqTC_H6)> zeQF-i#_&bIiY*v%3pR4n2H*S8H123_O#5S##W2&;u`U>f z0Ym?@ZNNv6Mxq8qY;EwxvWIzZhwgBH=i_pRoF8?!!ThBHEVT8IpXrVd%6)-6c9b_W z%IqgI8Eewv$1FmOD~m3dK)1PndTCw%NL($V6_8q+_W$MtdOr5zor3zZE+E2(Z4uU2s(>9bg~pCU0N z#rzjVO)D~&^&}@eaMS{X)kGGRXpTRb4o9&NKXGbXLO|K?)7rM_m4>Wgw~SFD9B+AZ z4y~12`@ET)vz^<~MlB|P6Pi*|=f&74P{NDmgxQlGW#U5iGh**P^Kg&(dL{>0XNiLf zU)9YowrzA!sJE&F&oxPKcVG(sZ=RX@lCs%P(2q$;&~kha$XtVkWN^^7`DEY4(3c9| zr65?_J_6=WO~EZwbUkXl`jjS0*N`SuXuTj2*RXov@BV`Q z+|+4op7&EnHWuZ_k^r`U`^1@4F?o1)u?=PVBGwK*R$seSx(+;(9I;_TZWB?FgJ`B^XGX;?aoPL8ckAeP5dRN1kna0BBV#qVvxDK<$ z|DlOkpDb2ynoQ6P*dHB%y+toZMaw%Uw zrRdKXr6L7pYk&UiT1gYk8(if{v-OoXe4oN)j4fmNgMB4(O34RRZh-#+U;VLg;3K%O z{y+yaHFVa_dz`0%G|i3-{e{ozfC=q=^>0CS(JG{(EY-XTdzU#yCuchiXoi=AS>VEo<-udYiBPJKzv_^aZ6Wx!1nD_4hWLE^QI*)ZdTD77n$-oGa3n@~5$`?W;O^B&DiLA(cIIurJa{DKl+Xsj1GCKzsogaBk$qXaAL8KB5_ir z0G2#<#UZKke3Q-xFVtOn_5k#;bh8ZyhKNRgEl9&F&d~tWc$}w^ukbvjw_AFBWfkYa zVBT;UmfO2SI7Rq0wcT=GQwNL4K7BQ8{}&Ec#nx;tEie&|G4aD;$GBT;SZ~XEzwY%0 zL=EYSJ}T`wN&V_%AY&kz&3JkN96@69$NqX}fZ4p*Y$(5L`YxuwVb?|4f!qA_kMduC zQ03Bn7UI_<*dc9KZ538z6Ty!%XyNy+J?>a`t&#nCm+)5~gqS{Gu7{>seOBDrw*v=A zA(*8&&!S$-i1$K5?E=T`rZC{Ef)Uo6ZCi-kT8Zd+6jHYM{r6d(Y)pZmJ2P6>x+#3L z;B~065+uzA92yRXIazc>(6rc_q9<&B*CbWoN1DbUQ5CZVOgB%=767Z8-~B|m*e&T` z>_cU$9$3kwjypc-D>CrHXZyt0e9CEwG9-dItk3~3i8&hw05%7;&P$fF7t}mZC6pMa~@e3*x^s{5O-pMAE3;5S9VP-(xtC&fV zUS2IZLal^^>oD?-y|ge?p;SfOwisCc%dIVtf*ggNe2%r=!c>mV8n^_)TXO*4Dqn9p zi;OMZUND9)*Lv*{6B{wh5-*m2xW1~x@1rb-s|TfhrcBfu%vP8oMi;muMIfHXn2Rvd{hOhX#*wN9~#VY(Rqi4IkQ&p$Tf`_X*iz8ztM;|>3C|7<* zt0ea!r}BNk;bllU{e!vT5X&_bH&Q|1>^|ty3gRN5SyGXm*Hy`!0b(z-`NA zcjQZzSfR~#sacAraO3>rm%JwK4?_OZGBVM_=eP?+L#8^9%_|;!93nESd&r*y(?jF$UY@WN8dZCOOw@pac7xQGgw_yOSk`S zJCS;4|Jp<}AE(XyXrNO;as$GZhgAY9M?dwvo&K8ddi)(S#Z1_x!sZa{$6iJRC1p-e zT~rR+Jec@;?1SFC){m9%Wds9nV{|HpWA7eBw_0=9Jt8R`UF_w5^EN1$u5Ohf#@gwb z2ju|k{2)hJZCR0Z%Pbrd(IUkf-6M}|!F^!XieA};Q(F-riUDinyrN&`!O9!3vp3ZE1oXr6d`%cl>e^_s7JXgc=s) zHC|CfbmfRiv3o|B`{i3K?)SFu99PusG&RdRH~KglpYJq(%j)QnOj!-gDt1uM8z2Cs z`g=T8afjaiR+pa#6k0Aa=V0>F5LpoiZr6(b9FoX>9DC{$Fz(GqKek{ddpR1XNYAQx zi{SYNQtoOO#uQOKqn>)V+~GKLUe)01*!`3VD)NR&#_81+D||&&KPSO=WCDu1T(Kn}&od*+-LX8PRxWQ?aHU6nqP}U?wKW#DimErsShaJx zc#WD9iBenf!ucvGh9j9iDR_@CUwH_sSd675eOl5SXHob7~yLUHM%iaP2BpZAiXm&ezK-cY?vuc1N@2e%qvZBwu zhmEA~eMm=u@13{VZQ+2tnH)A|#A(WZikwSU7AB4uUb5;G$$-Kp_bpPd-=wocu7eQg;=Os z#W?=7*Vjmx^7B>kY3)lqaQ$_y&EHFF35h4;*Sfanv;xtb15gqnO`-dz^NLu1C!jmO z{1|~KfVomM*PjpmdT?WcrjpJm#cgCXRmMS45u|3gPsY>=Hf>IrQ2f43TQ<&F3a)Bk z9{x|lerUPGFaJI9Yx`lUa^30)#E`RQd8%?FtMaAWQQN4#ZGUX4R64Ug9J~*^i#o)B z3od{0ck;TFatj)$i`vThAhTV6NaB6j0Uru0yiL5v@&WYa$cHUos0uifq->Sv|~w7rMSBb2gU;}rXRDTKJ3mm z7I?>evY!krCm(b=ZoQBqDu?JElj9$hQ+f^U5`AGZLbN#mg9Ux%EMV4up2R<-heZMc z5>{CbzFkq#B?}Fk2u(@3JJ54ecwRlf`>T=k@4wU=cexFQd;h}Kvx@|ul$QEFUul$5 zPu&$iqxD;J=4_psoG+Ix^m0kLFaxj;xDUn+1}o7(sGjfD%(bDB6E3M!n&?GnTWgzq zIc{9hvzp1kWKocCFLCC7f%@CZ07VWiZIRoV5320gMHVB8tHG8585~Jvn)i1+-yX*c zfOamulW;33zab){RJ)_IeFDQ)eH-i(sHUqIO@j|+wE^vA(VrXHjrRh?Msk)}DI{3v z1N6pu86fYHSm!&T@b)?QV*0_dO6JPCyLvT`-txo=x(Lz6Na?qK*5hB+7V=qZX#5+%&s3ZZe`rn?Txki0vC5I1{FT z%7a2iOPIf4>S@{sX|JyO0OV}lo24+F3iy!n$#wYE9uO0~C%A}KfM1vLZHPIL>s>iq zm&Tl-S5)$b9kg29eBueVCZU*ftMt=E&dE<0Ajrzw2iMAf?%-{Pv)oj*&S?bV!iJKk zR^%U%jKyI`kd5y%a8zD98ZV|-IP{m0lkI!9E7Bfc1&E`Vn&m%LdfSa&HQn0=v`7L- z-dBn+xW4)u>V4DJ(`NfA4-c9Oph|OH_`-i{>Q+O!-NvuwOiK3%Y>Wr(pe^z^U-7y= zZF(wF;-JcZ8Q=XDo8D}jDWV3RKajDYy&1SOa$?j{8}GU3ul*RCM)VxC6(p=k3A=;sD`##}EM86d zmwln!eYclhM(=c1VdsjbZ`frRGfo`O-i>kdR60g$#dtMeFuwqcL_s6r9+}>#YUasqkL#X>Z*jL{yd! zSiCqb|Dh0ps{)~Ha1zfzI8WL}6f(6-WxTh1Qov8GGJ67|x997VDFKKN8L?5)V^+sx z_cKp_JsAE5cxD&gJfqg%qDEY*tr`c9Qy|{NA`+#(PE9j3hu0Fi^Ac+gg>zvF7(M^O zM33Q*Z9>E93QW%L02L3iY%YVf5TJw2f!yfVhFl1~3+H z@`pC*#0CYop5nysT!{l_`Y#DL`0`TEWMVo*2iwyd}=|Knh}S8E#e z5fij&=3&M67ej>;B&t-=@)XT8m&1NGk8^M{tcS}&{PWC$#_hc16%z%#n6(#wcLfWF z-p7_F+|n*Uv9}=@=Az9M{1J9GRvlJYaL@$@>BpJ{>_UC^%B_jb>Wz|+jwVU<1-S^B zyTSbmEpdzmB7Yx0ezI!8KivI~C3e)QgD!ku8=ohQct2e7@2{Pzl1zm03|?8jBC;VZ zD&A}<$sbEpA1V`ogzrVGG0xV1(rzSoeovfd{bqyrT5lARAIV0UDI}`%aHXDG!;qRp z`txpPQFiv9ErvIUv(ZUnk0DABKr&zC>-dpSTuJde}3p4(aFG()vxDd1kS5~7U$4j6t6JrLR+S5Aai#|n(sqZoYm?qhOejFrOaW|2J zcsr^5#^s$WQ_$Z9MB@{CHOBo_#_2YVM_DP&LnB=b-qTfWWmtyreMzG!W%XCpp;*bM zdr+xR(UKTpYY_m9O8a?;s)An<$!^EMMVPE=6rxxM$d@Jkq&HC7AHa6ZtY*)sH>yfq z$Mf{7WQlatfx&2N4v^P>XW7*xFt5BH{e2*jbGF9PA5XI7RxU|^td-tyO&?sR5r%0# zoCq(}=~Oe?hRvQnQ%q5qR?+gB>lT6NPs&W}!~w<@w1q4g1Q{UsX~{usx_Rd2>#z*@ zVa3ZMQDNd9nJA1gtr;~~?9{TAEUyyeK@XH3ZA`IGtD20~9mzO<0P=D%4!*gYv`N7^ zWn4>r)tZ*8&<+LU0|3oI;UN98&WVcq4J}Y=7#;odI7|*jq9FZ&$#b)Gu%qo$3K)(F zw>kc*%+_-|0q$8zE;g6KH43v6XA{O+;!jIVqStYcv)UJ3&lN)Fj`(c3i6!Kz7<&bj zIFOH0%Q1^#&)+_O(UZpeDGhUH5S77-oVHo&g~~9^G*qtWFLZHB2g@sdFv&^mRCf?o z?)A=L+~?Fj1dNgfOrDxVp0PMD4J^u!hFgv*$fsJct8Ny^>DqD6C75~pmB@QnL~4Iz zW(9}7LN#-HXDz5_x3l5$)i<^S6^8f$npMsOAYoASBA8pd=K^72|PoE$PreC6`*mq0C8Ccg?0jyWMdey zsf#_W`QU$l&TF$bybqm)|H@t4?tzv(BmRwCoJ-Dxda;UNT4(Zqu|z#H@H|eH{OsO9 zj+?a-PQ7qJDU+$JK5?2d+ib35bM3*3iwwJ-LQsXTUyF1vFimP|pkW?NFyhX%609DZ zn=jEiF;j2JZ~X{7+t*{aK93X#3e;FqI%VPzfC1Wn(TM8oc2$xV2wpbx*03^oq6<@W zV#dqCnY%K&)4QA}a>-eNleWM$Rqd2`VRWQq-fQL%6San1OzK2~=>Eq-^qk~QhJxNz zJj0%k;OIB$h-UlyMVF{SnDkyhxCjRpru>~2U=qHQ6-n!UI@VzzZ}o|oXH6J`0Vdty zVd`Fg6XJ(2bHpW6`9#LlCw>tjqhn`5`WsvSV5p$>+h^r|kX&Nrr4c3QmDuz`sH^iF zg)@O&MF5$PyGV;uhud0fMw&s4Gq5s-&M18?p7qr=^7teY*R%8XLt!>?N^bNVEh;8V zHAl6>>~R?WN<2;k@YF%qnWp@kdqBiHGOA5~UAukm=(CYM;%}RotUf6r0>wvwm74lk z9M#o&^ZThZ`xG-G-P4yzCz^eF+-mwq<0eJdf{uPD7l{AqDBp0jAywO{}+16|Phy_OEe$XP3Ow<0^!;zMutPryUi_(XTP~${Swg~)cApLW_ zREn?WxnLSjJW`J3K%U*8L~mX9QLWh3)O)Gc2DeXSuk(ZUGxjhy-y{mZcuk~Zt=k1P zl85J&)qkwCfGOU4syBOtV^1n;_ZUHciQ9Y5vIvqR&_h87aj{H{5S?@UbxKW(zMwHpaVx91i#rd8lSCCKk;r_0?Um4s{RmX<=oIP4Vxz<^ltrwZ7kQ$WSsl=x?Ln*VAGLV@EcBBy0&*W!6wz0fU695I?;C;ue=Xn5Q+NT-ns=Q9Ovg zRZonhcrMs}qr6+k+zU=k4((Z1nI*C*F~q#>rem-n5j(SdE-TZ^c^S7JDz{ZW%kE1{ zzy-t`gF(=Y>xX%qWjhv(mbENGM1`Af2~kowfzC6{8gHA)Agpm-r0&Om{2>-Yqa&xm z+0$9g(4#%OcLRNQT;L)=aaPmnM*rJ$nDo(VYkMuf+bX*OIn`x=X@wmqrVij~iOlR zhB&3W+ezC6)A^jI-esjyqVueao(Z~W1GjV+BYX7UoffkT3fQ3aCrvSZ?VpN)4j8sH zv}rW$n&oXGloVCV&|P8OvhLVKZuX7{fqX05q{XNp;n;jX$%I9Jxa-F#x0I!WCzn^p zYU)2tXgsqzL|N%x%a^{f)jYUNiFYS!B8dQdW8)IpR9>Tm2RCDJ6Zl*NJu#TwXCrLT zji(F1h0Oo$Z(O=-)TsoRW%`z8*KU81Za<&$`ePc;q&~6=Fp?1{QKc-sNx_732Fy2b z4|!#Gc;(P18e4OJs(CQ<9XN9`?_g?%lcbK3iE!5d?(8@l)HEOu>@Cg)g1)z=lJk%M zMV`U2R-urV=r(dT4t_Z64X>6L1A}4B0%iw1t$^r=qdU-bZ4$o_ap_X$)!JwqXe^lu zR#+V_pPf=7fYyCk6<4zzlSeG+b18m3I=cl_n3Yo35BrgSuwhGN&M9c`T%Qx#SmB`U zTFq{ec2jt}B6;gu-ax~mbAJ;J9O@4AMm@UNlbIy6J4-8JV)B=o>X$onXRB;ent}`7 zsVycJ)w0h6QnQo3Vu@TVKt%2W*uv`QZ9jLaXL#=dz`Zbps@#LXBuPG62geZ|^wXa# z&C^qv%7VRr$@Gu^Yzgh)Ou%?;I1^8sx4m!9KmfdHxPr)p8}&ARyL3beX9}{aO;dw0-9ZRELL>97toFv%k-It?dKAZjGKi*W`>fAU3Z8N{bhC3>ya3@&`QJ`T zVYWv+Y!3~7rNGtF4&XVc(C0Y+IgwKSps~$=LoV#omu#zaP$f94-~lsVt~CsZ&Mccjw-4+LtJGuQ}}sk|^Z0 zD+D-!3t}J_yaKcCp`jf~T!EiOFhQ0EU%}>yR!g)=by`X6VG(_!mo!>i^1>BhY6Iba zygDCRl+qxV$`eB$=rDY!3&&hSzQ}inmC|DhYg5%VDg`MrhjX+!;FA)U>Ov@J*%y@& zlt2^+_ei&OO+rApvn-twR&}(Vq!-tmF#RYvBZt;hlg^YcU~pOa#96wtjplSGVj|&c zD35Q9n;^HQugX2D1dmdYjQ4xAqx9K-(q|2-@&{30tCGX!d3DLQQxsblQ5R1mXuHu- zY6SMnnUhAl<^7k6Nayu4$RbQ8r82Gn(QnQIWcV%Vo)Rf-cj6vvUax-39f+ zlY=n$nGn51(-|dip$d!!6Sh0b%GM_YTyKWk4s({JhhVI^*Zf-pNU%K($;Co{EG|Xf zg(oMQv8vJet#HHB+A60mAc#Zj7q!R}L<_Ao`QJ-tXK265?WPtm@(IL(Ii~L9aMU|U z3%lJ}psKQk1U2vPbGf{7wfT%vKJaWX0UOMVpfV%Gt;q^Y09I>&2+$+)u>*%LI+DRW zfOI^X52<2QjHGXejb-7l7*}k6JlBuFXPMeJeqTiZpT$tLCjMX!w#Y zO_w(LxZ5)?Ld5HsYSyU*>-tJN?2V_dQm!=-JzV5hh!9pm)%PUgrQnKYej+GGy2IaJ zXkaJH=6fLE8iftLy{R-p6g572@zSV48@1(7&&<9@{+aQr8F=x~+uOc>pDK)czYgg43o z>0bkWERPRMu;97x2vm)Kb<}``M#m(ddoYs~E18qC6N6w^faEH{Pf-VLz)yd`^Rw@U zJV%+;M0J@Zr`w@bLietr!*PGS$?{^5rseb}&xdOolbdRO4|==WMd*8do8SlE?Y7_( zxBm|Gt1h`&h%N%ei{<(0qx`i?!4IBLNPBaf*hKn=^o6NuskO6zM75>tArUPkN7t~> z_x`}=mOOStaV&evagcjCBOY}^Sy_`$xQO$8ra>a^m!U=^@X#0ZmM#{Vr9Hp9Ag=)* z@fNMR=q$rZ<&61e12n7Q?_Co3o;*22AmS!y!w%%c>K<@g4hKF=$>X}2QRl|>r|lA2 zu7^sn0B1m$znmCe5FW21f8WfH%Kw{;+~!%@?V}(kEr#5DD<~N=-xYs+!_n$+H0h9x z32hVFYC}J;@^K<1GRbxnl%8;6?V2KlYrJ(l3HmS?-73=Z%4-SXy_--p0R#np0_2S* zu|NV37Gg{&f^L5#TzPi+f5{5j4A;&g4+*hD zjR1Z~)g7215Re`LJ$nRB*kmyLjzS7zb&0a+-N4ES$Se*!C@cxl9x1P<_&_YHj{g$T zfNvkm_amCM0GGM7=n1r`K2H8MGqF}f#zw0UJzoLka0 zp5RV`H}3B4?he7FacJD#6P)1g5*&iNy9W>MPH^WV_s&f2%zFQRiv`Ut-BqXRJl(6w zh!j=mgiJt2Kyi?*6CD#hBR4=+P8nolXv@S*Ck(PS0Wi}uGP1&vk%>3}4V^4NwxWhk zKyCnslQ}@a*y+vD0l>_E$jAjp29N;S0v+CzCIBOMfE>`tP}SWI$OND?{0k_89G&Ql z3?1LpKwC2lTOie&iwMZh-NC}l-061=7CO4$k$!s%(*vXpjjcegj#d@`Lt7JoG`$=> zKpy1!CbR%hf@}dsKyyQDQvk>mpbFFksHuo4s{kaF71R_}sOaB+0;@RN*?}DX#YIF# zRZW5xASxuUDh2?m(*h*aR8)WeRR!9<@i(Id$g95Tf9H8K{Ov9$rYfYWr6|V4@Vf>8 z6Tk)N;ArtX?f-Bie`5ytL+#Dg)B$AkR{{W~xs#I}Hv@yKt1G>kv!fF|$ia->&iXHY zs^%7s09TNM72xfE)d6S?{Hrm}wkB`wbTSA29pLwo0AwwUfwqpo-%jG7zm+y`t$cHO zlRN!~*jpoV* zWw`;IjO+j=E>-~J+mMRcnuvgGY~ENq!u@WasKr~KoInol4F5CLR< zH}rq43~el|-T&L}e@rxhzo}CGAI=tz;udZ|6GaOrWAnee`nO!l$?$FHg>22Nfo~`B zmq_jR9$CK)?AxVd@%zpK&@pka{g3W#7LBcJfsT#r zOjwM6=6}ZJFC#HqV~~l3tr>usjU8a<;9%$u$M`k_%xr7`Po}p~HUYZ*H6#EAdRvgw zn+w3s*~uGV3UYw^eUR*I00yDoqQ4P4fI;{V;s7v+{6U-m2GKu=3&0@uAH=}~V37EO zm;nrue-I0RLFx};1u#heL2vnF|Dd;ga(~c&TR!>!AWlXAgW@0bmO=Rsddr~l2fbxb z{e#|OYWxRry&=Ot=q-cMAM{p{@qZB8o6ZRuBW3ar_|^sB zKj0fl(?5{;ExxJ6Kh$rm&He%3!khm|_I51h?sn!t+kaTR$^Pm8R*Tg?;2UAd%b+Q%rqiFUfF;F1iztJy^JRc-0$*t>?;BQ-~Nfv}@{j%B= zUp{eVq9nLw=p*NYizFsAlBG_s7LX>l;PKTLF5Udet z7`v_x6fOKql2{VL#q#r{Uhnfpul8|Ve{xZu3QUu(u40C>dOUs1@)|`_jdyb6>j|n^ ziwmuq&b~Yk%XJ~2vSh8~IV#{dV)oLcd3#+k5Vc={G+NtW#Jqt&*1wQ{!UQOUaVz&P zxtuL(%q~?O=~ScQ1{R*EFRW9F+2KAl9H_qP%)s`$L+GEskp3dWSVKMwIR;dICHFcH zGIZt?x!Nk@m9(+ki-wHJh8@FecTKHie-V51t+qazpz zq$Pd2mJPCxI59LS_hTD>BlsHbNK1{+kLlrIRysMMql-6Pp729LyQDlG_#eK zLOMSm@|v5LU&&y9c)HA7Bt|7c4OV6ako?35<(?)TCp68lSu35(wOZP&#at~R5Tjd~ zfdTm+ifhs`%L368rQb_J(V%(?H7x{VKQ_ zwA#1dA_?4`N;DUs-Aoun5=anBX8A@ZTL_~=qbVah9{p2)WbPeh2-_?^gMi!$FVZ~w zNuAgZ)i7%2R}Xmw*E(3vsJ!Q_oOelexhsz!WC#dX>^_~7b5=2hA2L_{z^d^~fExVV z^~9KGc~RqvYpyNl^PFNLJRzYLb-rV|gm{YPm6`nWV323q`sPRVQf|c#{gJ}EJIIhh zhdT9IV94*P@bcnv zux2T>=ruBP4CIG#;(XXD-@I(8V1=p_ET|8y7PrGjZb^_wnNAgeGw;>^b`_^6g(5>9pS+jq5$=!Q~Rz^y(h8GYxt>Ei_F@Zs>^WRezPD|D&Im#Xi{WPhz zP<K4;l)RiEO&?3trMNtd4r^ z97SM%;yb@utgl+;77y1J)Wr{`B2V+zdJgfCbbX(m6tNy@B`Y(6u}Qx62Q+XUi3~6F zJPWGS%<|r&veDBNdjRj^)8O4d9y)k$XGgAk+Oum%GodhP-RLqF<$dgewz}aQ1GK0w zfQV1{%X&f1$b$NniR4j!`LJVO)-SEhzeVVOPp|LWFHakNIeu?hIdm>N#45N^TvgWf zv%JAA(9wV;m8>(02Vu{g6d5Vv;Pq>!4306-RJzo{1=l0pGog*DD(x#gV!%aDR$6D1 zyn1is2=T)Cu(dJIZj_em5nmVzzc6EecKG*4gw>)S;_N7N5~VRs4Ee+&@%*)WKGr>d zktZ#5jqR>(U#;vOHt4H2V|iSxbDMh})O4DcE=Fz|a2rQT;E{1`L3NTMtXm>&8l@*3Q)?QKH55|%V zV1sFjYKEBgEKyb#kTf5zd7cpR=xXU++p8kJS9{>_elYjDCJT+UPHXdjjp_j*T9^O7>!A$blE7sv1p!cn=^D-msC#O`A)m-OwaoeP(qS^geCY!Fxcro={>y|`KRA3Svs+l4Boi$Vy9q-&VdY8lQ`2tT!{o!-N6ALE8-hwM|U@{1H~Qkgzh4>fSf z!8-Nv4>WZl@eS+4zFWS`?9t!GcbmWhZoN*XyS-jfmQl2xGey3a`l?BPY>~-yjjHFS zn#&-bfTMIFMt+M8|FIVRr{*{MN@EFy! zpYCnkz9NkpOK7)5=%+0Lhr+S z3hvs*#2Oc({f^QGVZ^jaoj!SEGH=7F)Aa$$rP^~WU&jPNQvhoTU`L6dsR5U09QZBE zYv-%8vWms9rCQn<67(;;k^yRp2qtdwX5yznL^OtW)yy5 zmy!mKX0w)jI5)T^EPHf7oZatoit{+e2tvk++iGr|`z{ zM4$Cn*EGCADklBvM6S6*D{q7!HRgxK{^vXivDjZ38vIpC*GegfkW4kJ9eKElC<4aJ zR7lFSnEhXs(d1Eol!`F9(%NurIG|cvHeT;C)hE*VZ=gR1!VdIIBR)Q(tm)?=3#PhM z_z^+rcBUr`RmjNSvK0u)CF_ISQIPD!ni$D_kq*=L0UOM*=+ppXOU7au zXkG(zd+k1vKehNqiH$HUexomm;=}=OmX&96vM0HKgLC+QV0yn;=#q5@F9=Vt{8VN< zj!DVya4hOsKHH{QrILd?Z^xC%^vJ^(3~Ie0(Jm)M^bcnnQ`NQ>QAMtSgLeU?0)WjxYGr`)eF{uCy z(XpJlEv1Qn-qyGy(%scf>loR$LgG4mIMg5JTGeO%Zqwu(Jme*<)OsnUt8UJvKeV=ZG~!c<76VX z%`GyT9NXwSr`>E^Bo@TS+@zM7_FQ_jgI;WJWKOouczsT;^^9i@hjRUp=|B#bw;vWvD5 zR^|mw*HG;2HBWqFv(uth)w9fTJDOPa-FwWwVR1}_-?#}P!H5)v>Hg; zfU#CDX9pdSl^H=R)J>8Sm)zX7&fc_t5%poSNQdUDl(c|xb%>|Y{nX&stiE#hqwEWV$+TVD&~vYU}w3ci(suxwZu8RAK=rhle?V(+Tw zpKhXqJFNf|4RpJ<+;4@<=qDK4b|-WvzSeAK>7KMXB=MijERJ7)H@1YO??qLT-=ujA z9I!XU(C^%S!qi~-1r^-PF=d=)Xz5?G5h&HC?=F*IM0+3nYurxsKp}*C-JnY)=o?QG zLHwz;rZbISpq3C)uB0{Z~`m(P0;_5U6y-mBrvs zJog4VNs6=klcx-Jj$pr>5pw%CjzM4})<(_BQ@;JSFlFPeC=knSlVR_Fy;%e>;V%XV z5x;DtS?+x5(ef%+T_91sn|<+?uAi)g?;C&U?1=#9dr5$VgHL2G_lxuTnQk#3{p%6* znHUNvtpv5iuBBd;*tMo~&|tMOQ(JG>1raUE>a~PG&t3X`vcf1>ozL&*+WtNWZ&r(Q zdkE&Ic<`PkQN#myJp99duCrj|)4;A*JdkPaCedQzhuY}3f{}ApzVg&&D>gnJBMb$>hvVOXg$FI1bQShT6G zehGTAqN?!b*SBKNgzhrnPnEyNr}ItZpjX-F5#wkPwB?9223vH0`yvLzoZgZ}4!2

    m4yx9MB7sY?~h10}|u|tax8d7z?Q*E&t z!o9a}g{JwC&1__U=D_JsK1;!mI`eJQIhIm5?h*Hbz6dBwkpxUb*Uq^bFTCLQhEQg0 z=viUVOeXTxl_fRHv&bQs!J5G7rjie4WnqO?9=Ods=-v<%VHd1XkZ#9d)wSd%<4yFO zQQ}|2nj20A_wquGj4->!k?9$9msy4Zt@w|>E8pF%`KnES-WFdz^SPs6YUQ)|;26fP zHo$yTkX24H{V{gx;72SD-MR3pfvcVIgerO>viPl%*Th1CZzW^kR3aSO!7;D#?8Gz8 zKrF>kT%lNTBMs|iQCsHaLkm>hdps7jcS2_jB%40VT!^OL8;f8URO)Wt?^77r2Oh{i zF_GEZEos+(e5=Z5>4k4znV@K=6dG)nRVs#Ps{M5VM+ppw1558BD-*;)Lbf((*NJQa zL8Y@0{wqD@N4}GjIS-{BD*WzEUQ4F-M+z3DA6I2Uqk2F%8M?hS1!*D9x z#vwa@AJT7SLOb=G;^ZKMrqRwxZN}F=f9EKKG((7Sv%$Xu7O3k!`$7?nb(qY>UN~Z2 zFM0Voky?vAblI9cv=O#*gw~aE8+A-E_+T>(-;8|sy7r2uNVeGKeN+xIe?k}l*P~|$ z#<|uQ9NGZIlK7U-p!7u#p(@`QeCoh8_K7=x8%jqC=0MujCA{mnyKgtk!p5{etWos; zveUEo0gQHI5)QdQ+E*{lqdsH6_aHa0wzxlg@h2Uxeci6uAbs4q#*uz-+9}CWiH^Eo zmJ=#v{1>9ArI1T#r{SYU5-^uz?#5Zqr0X&D5x>zeRJ=^Qz7pM#T_f*2xY?3n zLmM`%37Z3gNtbbGQbyU`Qm%^=go)y*3Ri%Wj1EtcxC4iY4JEN0d<@nE`6J{ zFWb*Zz7HaH1Q3l(uriyvjE;rzaK}}DICGE#nfaU4&%L#J7+F45pSoLL0%oXYz9FZ= z2mI*VBCq`5`m93Dp1{<5`9*yTo8uOblR%FALILsohcMKpvdjnE_R)Qv%AxFwt*8_psPqCRMlvlEAoa*%?EvDlp9byldXD@+=g_NS+&^& z?nwM;zn)v_~Y5l-tQ4q<*$@Ua?jy1I*& z*!@`oZEvDlP2s!NxfvP-1W{iM*Xp8_>Byt_K|siUsdj5$aWB)te2WnZku!hDU0yG< zwJZ$wPzW6(p)_>yL7k;PS-LEWNM1->+|F~CV|^HTwGNv>x2F$SmQVkGx+Hp^L2mpu z>>j^3p(iq%z4CVYO95;0_u|`hk77?4(rb^tu`sSBY;!dF!$=^_onS3ISZk`)iBh5^t)p3j%R9mP&ZI25)gp$I zQiFP0N)tqU`jdpVFk3#(52`Ju`)RFy<+I|Fp{<5+rq#T{laWU5`ZzYqt58t`EaKfK z_7|}o&)IPV4-I?nbG6Rwdxw(}n5KDGika}tO_fXB_@T-;yFMO&y+U?|?FLGbrdolC z6OJX`MV)CW7qppxhxJFLISqI4OtXl=<|hbKu5qxFtT~n*f}rZIv+N;wGFd_@$SvTb zKVZ5uY1**JVHr^(d>C_P8*9>>SXzYsOH87frC~mwdw2MCxvuvr7_FmfN z^Jg%njYC#Yy>R9)|wGAn?Z3QeQ^)?crSGVoq~!c0T#n{T`7s9`+9 z8fiNoalRt5P~-7Gf-jh7^onem=XkI>v>KXxT)bN%+iX!c2lMQR|T9o8|Xt38VLezLVqPu@`X^>tOeD z@Wx99+gP~d_oq*>FBtlFy~7!mzLcN90bE=-*@0@7GV9b?{rok8Jl!veQM$W>?$wIm z2E_MLLt3aYPdsdfo&C&D)Jz=Q!(xQbXJ!vcvtGY{sB-W+eoe|MxrmMGoE;Y(W6W<| zMRCF*_&A|rGQP@*W5+i2yHrbwQD?W8sz00H^WBV3DsV@@^QhV=gN5?tyKNPR6oZZF z5sDlH;7~ovIw5D52ix0u-KgYdUzgfFYP{Aa9Y?5=^%L5hEOD)csXVnx`aJf>AV`fu zUNu;Ml)zv5^~P>P(Vp;{sIG~9+E;DBuPCkVEoh4e z?~N}N!GdG6X|X#7h%Qa#hro)CM^VGXi}OHA1Cp@{8&GS zaOatdo=dI2=2Az_jFe5i8Ehq~I>W$!3$Jz(IPXvHE`Ee_cX4@s6x!{fYIMCFcD33_ zqGSu8YMIUljM7~&ci;B=$0Z{|(KWFMi~g$P_F6y`mHsNG0olzcS*9jw@Ok9d-dQ?P zt(XTrp9$_`(e0t9^T{pkm`wG89PU2O=Bah^iQx&FQepQI*NnH5Kdtc3YhMq4gSBSk z^Wo3Px4@C0tcc@jkro`0JhNDL%qbuqxTZLj&&jEC+<&^Q8xQ3d zG!5Y+sNMImW{`yh%h7FVM3g#z=c@91+sS0^oFc?pKAE)jY^(Qe_8+@Bws}UJ!$3a5 zF_1_p7>HcV+t&^zGz$=R6@9S2mN0Bra|nE&bUziyiJA6T;%|GlS8cweEdqR+=S5v$ z;FVQ+pI~K^yk3TXuu}pj+a{Y0L}#uGpGnGO4{CY4_{?AfmTE-Fc%qkod2T#xOX-3) zh-EBr-xsjV36X%8gyAlp=};RbX`j@ z!JgsU^LY+G_Z5Ehi||l?sLu*{)6ea0`yT#f1XVd4X{+sJgl;2`n0TE`-yM?A!w-k2 zc)_oQ>1$X&Ex};q>|8HauM#eoX1lE*n?HSQqNUb0PKr_-kQLcNV5cbEYpFwh1Xp5y zw>Us&JyVva9`eX;%RNi7wv&eH`$Csr*RJ!b;ce|y0g{vPh-}M$^k|EV6u72$v;g_+ zmK63$E!;BSiejylYzDAppvt0Pu8!@Q%;nbBt?9_M5Pz^(H`qOLR*3pst*Ng52g?f!%1gBv^(~xR z=D=Gxp|BT!w+X9#jIBsKGeOH44w2~?5r!}7Lz=E63R!b4NwuXq$P~*zmVo=MY6cf2 z_v8h^x}xBZghpf5=_Q9@Hd*rXZcl5nM0J@iS9wBZ^^}+WFG1c>B;RgR2AY*{o)l7Q zzwJGr&T=o3hq8U@R#l8Pde{7+IL_~d)i{}DGh?iOO-=h!>I#AB%Rze~1#+v5i|GZB-^#%xd0RusE`f%%P0Skp-ZCavd9fIXu1Wz7md)`bCG z=P1*l;5JB*WI-ts;Xb{~pb}|-sA%whx$M5CzGTFjC0INjh55oemhA$yz^IV5nXI9V ztlXAKl=Y|lW3?4xI6TbcFp1W>DqN`Ro@`v6X_2osPlKO5>Fyt8?CHmIaI_l2V|tB$ zC#D9J_S%0U?RK?#T2!MfKh4b93;wd?SOC!1Cb34m6PdhV4M_Wv4$pOxs3<_30)oHP zt4iOm%V2wkd|R4gE#;em}y2m2mDdv&^jL*?J}>B;g3niG}5 zuZBb9Wi-mZN+iA>APx^73ev!pW|M1w$)!Eo&llE}(^H{+)c5sN`zQwEG3A#p2O0*f zMw{A~BE0+czw(BbB4n4RzqJU|7??}yl#)IbU*1roTYr>YuX;W4FNN`Q(7j;c6WtL zW(uOWUvj&#!jva9g9uDnIufn9H-749WGQY%lQJ}~VEV%k?obaeVKA6+{`6AI=%zx6 z{9UaauE4}6dMk5K^M$D=>C)YQU5Oo|-XRK$=t-F7;1iOmLZL4LNc|N$E5$1CaY_lz zIX9~&=+a;CLFxhi^Mi~4S4{0nl~3uxY&VMZaj>Cpja9~dJ)fu zm9)rMBy8=8245F~UWbZHH86xcy9ZxAR&=k?LnD>b0#X=AADWQCX#T*Vr~$l2BPW-O zn5?^?Oc$v5mRm5$W)&rWQ%nfHw#|29-L&@1kcDz(v(N9y;|FlK?}YBR=Foi#;Jd=V zlAOwhAismDXBBU$QY|<`9w^p%F;Rl8{-%F&kk-Np_QSpftY6i5lPkVaiHViJG{OV5 zIM}681YX)L2ZMe;`GW|zbXFF&gOTgW#|=>@Miq3q*w;E}cI~ErW_K@hxDs^P3;x(# zx+eWPa08oYwt2rEL~q6+lF037-nG`RdLQ;!;pK5q;cri9TAIq!zBIv#ASxh&u8bv^ z-DU!DRduUWLkAN=)m2cL$iBq=VHb4ZR&tZXMD7Em_Op+eMq=r68@PPmdq&h$hWm;SCC- z$dB!6)583?d1YBGBOs2H4&HNsJXKQ|GM)nvQ(-M{rKzm?ngb>u_@Yui@a-M zhD5*USL}g*?}-F+r^Vou4>cP&Qhhp(R;rtC^`5-q_|;XM`qY7Cr58rm_mY#sqX@Xu zkX;|Ff7<5fq|R$uA4A|Da{A8Q^$?pyl6x`Xfz|wRjm5Qe*dLtn(+P2qZ?KlZXac#E zFsM!ZvCgIQC8GCN{!b>0Zk-!}*tt|*JmF|;CgU=HJ86&;X=avQ!!UL96U`SoV$5b{9)J3F-G zt*&M$;i-}dC4H(Qmr+pC`DdQi;PQv_rOIk0t0&?gF3gki;?_qmTOxy;rrO{vpQ%>d z8=r80={*g!`DD<*_~!`Q>CcG*sJxVo%D!ntLFZ4R_}J2Qz098MKSB2vVH~{_!_G>m zFs<&z_RHtXZGjsxHISMGdfh%2n=G^88YR$L9;em86jUxQc0=Un$tho3Rjxr8Pf=G_ z_GLu}G7LgtXZ|F}XQ3h7HIPq&35nvl+$HsYK9-Z8cb+TSn(wJ}g$*JF6E|%RVtYY3 zHllCG+LiTVLFT>OwTRl(yX;@=2p=%aa!>@wES6_Sd>fRm3lt{Mc`u$3nbaMFk-U0I zdCwd2koF6fZ$p?G=N1`)Z3c4w!p4k^(^(%~hlM9}hHJmiuUCGkC@0&+;d(QeJdW#s z3#>68JStSdy$-r+w}c=Y2O)I?(> zgvEB!`SoU9D6PA>w&G~OagpW=a}nL?2EKUX0>Zn<9E)2|=GOahj)0ld4_sA{i{jLN z6)E|kodeW5F1$#yv6+vactpvBDbOl^W(ZFk1m;vfON;o@_jH{K1@Z@j=)1bl1ogR?7u>n3eE`A}gc3{yQB4Jbo6Pf2D9lp>FIneR6P z#p#yus~Ig%MG!Oc8>uW-n|q=fX>YzL7Aex3VTf$!$N3R)BOMlLX-vGA6xcq0*pO@z zyQ5RSCo+oMI|x@?1CdR&DDdfr?L3kWYvneP&b^-iLygBJh$)SQCTd^FdFjXYR$2zZ^;=c z%qJOGaStRsnbYotteh;#!4H?d#Cs$h57_lOPt5bJ<*;({#rDGC#&5_F)$aj7_qR)E zsvtvjA%62icrYhS#cIXdZ#J8(H#ne76%IbElwyll_r|!dCr?&w5uhM{q+75ow{4^8 zL?gQ0xJri4WF|(#C2jI<2(gXWq4A#(T~cFw2t)^vKXKwmhT7c^n`4p?(<5J&{#9cA*VaTqEi=oojD2a*Q3t@o2+jkhU6XQ-b|vt*?JfRb%BjnicC3^R?B^tA$#msbc18i5Rm@p^h_8OF z51E-dIe!<6V(5;JmKjoM;IZ+IzE7@yNRn0}Yj05I0ZNpG^`bm1Q<|Ry5iZsI?ubGc z2Ou=xF%`1#rO~^8J&URWHmgowN6FnwJ`>~E0UWW3m*BuMLOws(xOfhiWlUMP4$|R$ z^~liCFMmi;JEya3HyXQ|T9GBa7PG~8g0Co-5rnp*i}CWQncwG9P^A+PRjlzuoq+BM zK0pm`y)qNyJ`4fvVn+zi&iEY?wDqSCHKSSaa&_G>DY5T==6r7llhc*xvQ6ifTg>^y zr`~A_{`_-G{i0(Wm5p*O!0&CJ&m%8fYj+Nk5UriM02Z*?ZZh zw;^aSkwqyY&c@*QxM)tRShzJu5_EsuWtIlS=z2F_TZjey3;NOh5=Tug{60Joa$?S~ z^uCC;z}DsqpXdrUfb^Et++klL0XhQ??RwDIlEdY48wax#9fz_`V3b9F0X1ml2(s@JH`k{}@wn3-&3C5ZwuDMbQ)ZG9 zZbgeAZMF@x_kDygLfAwj@nvw4STGAiL^9g z3y}L+^!<=XE&{DfeiI}|iS zuoXj>7+9X~{_;L9gZ3;qVkrqU#p*wA<}0sr(>7@w#F)RBS^V7>{GrT$ytSQHf$}N~ zg2Nakwb{5UYl9rzHb=ID8dViC_aIcsURmkKM9RXlM3^E-1yAg?G;LFsd%M7NLH+pG z$Oj>-9$M1sLT>AcCr1AapBf0ctGaG&EU%8BZc3V-bPe1eiW<+b?==`LKCQk+ujIKG z-hWM{impwcYauO+5%@BHv(a)QI~cQmW*klg%j8N!75;;N<(9%{Gv3GQTny4~SFz^G z_X7?R#fzavI;|Ex8XNFm+clcDG@`3Jb0plJr_LpgAh=1{6d3km=SCsP}*d^D$* z+a}~@%THy;$uHZ;&04!s4Tl{^P!Tc(^kY6d_yw)graw;est(0}Iph`Sibxut*O^iF z(4MS+eF3*IeX8C}>dpm>^TJ?*cee?RD2z!26xnJA#yp|xd_kaS0$kq~*3y0=3byMK z|ISjW-{tgP04~wB3!JL+WHzQPX@p+e5Wu3|IR5z(X@tLq7M2x%#|-NgfQYr&DEg1+ncD`1-rbJsByAVr@aw={K^I^^Xf}0xR9I~- z$@+?qHgRgG%6M6?Ay|USsc%M8s%$N6W&I?GvRrkjC+s9O56oq&FvMGRLUycJ^m!X{ zMce6n)z#`)QL$aQB+K{sod}WE&vU*(p-|8tYmB6fx^d5cuLD$a=RpKUL7QU*jG?n( z4;1Iy&%7}NGiR+-coaT3mo76-!aBZs@JuWES-n|hbTpEU5$umj8;j=>NDHK@sLVTA zsoLyIC04`lP$6)*B>l}y_Iu5Vcj?oa-a%SHwr??v?tabTIFu8U5gheuvU<$YMOtdn_k{{nZSyxN4Jq#dlf6UDy zE9uWo`~(_nTMgyX9$VFOq6d2*1P~eDmDxditgU^FNku3ZG2E}-3Ao5;pgCsh1|A0x z{tVjsfebave$7iFw9#A9mY{WK74ul2Ny~Qk8PZzCp);BHVDanc$}XU@l*D|^ zw_F>4(a$blK5Y#7F4hHx>ngA%sJ>^bc=-ZZ1>*_ZyHD(eFhqp)RB3e=BahY&ff_Sk z8&%HtfJ~s_-12Q1`sn)6+O(=1Ol5PZSL;VON!yhjD4hlc9MdB7;XPkFrT|NuANpyJg0M&4%%bLKE$1U zKV@tAlt{=PL1lLSRHIEBCm+d8n`|Nj`jyFqi8V=^;6)l35gLC|TZOl>&zDfT?Zz=< zOHL9|zRe#l7P8ODAB0H&6i5YTXUDh^Bs<5hUvgsK$rN5-=UhRkI$!k2?V;|#G@K@X z%2Py%hc~efu1+Z9-kDT4qHkAWKWDK*i&dghG{`t>cl#3nnJ^!v*J}WoJ7{4fconnY zvJUeopjASX>)^5hJ^WvjXwWWRQYIF-bnZJor*3F^A`YACx3E7XeQv|ZO-G(s5n)s8 z#f3Mr=DmlF{Sjb?u1v`&YccsXtUnWf#(o!~SbTsp$LX~0%}nTSVM?)R?%I}yaf+U` zkqtdWtm%b00K5;o!l#+E^65k|Zl*ii6au_^pIGtWoTwCZLQ`nO_uLBQS1QhRoBRWR zMWX63fCfHbL53I}hC$uInVAT65I&IUyZcP`K%5}W@yE<>vO?c8RSo2tw64*ACh+qz zk<{#HbuY}&dCF}-(a~ygCwh_zfxYzc&U#hBQpPht63hPbAzpB{zB;d_U$;mDM?ZVy z@-S}lF51qmlWfGTV)6I<)%nTgL)=-62Eg45zlp2%-*vgExkaYr(zt7$Vu+R?kKit% z7pNYwJs7E9QMr3&TR|69hW^rj@F5wC@IWW60#@AO|OcX__4D*Ha{luZfj(b@R#7wdUPt z(D$dYa$!-)GAD;SRXUhfXoYyZPg$QXE1vU3k2nbTa4Mqxy6^TEJHC&9Ml{}7+c$~M zHl{-JqGpb7US%DP?kLfidJKGlE%Ni{Av~upF{`GoERU5Y;s~0r(-i(8D`)L1){PVX z=;*&o8@fWM+g~#}XM{Ui!<-n0l11`7^Ueg4@RnT`me^cBaJMt-*Ro9>L2(t`7;aB1 z+U9~O1QIuB^PCn-w^=xU8z$U=ldYC^3t`Vv)2-+84=%Q^teSJ|KYJ`CDiARt=g$aY zD3l>dE4sG_vbE^JQBu6=$%(iy`lq~6I9c>^hit0pSyQ6|z9cw>5qA!WXj-=GnV=eT zw_y9qTB<`3I$|+I&%(K|;&ZM(7O}twB=QX!O5X6J-aDagc&b2FB=Vu$(25E*9 zzWW0Cu$!bR`d+NQH;p)-w_S7|R0cZLpUD`xd*utM`vEOkG76R!DkvpX-4%XWrrbt5 z$>7yCCZ)MydYtlqV(?9cb;P(SQabF3(EsqOQ4UT??Gzu(kj<)qY`XgH(D`RUUm==B zo$eAn<6+(z99WcAh|F?ViNXO#P1}$#8>zoQY|%OIcGoX@g7iJI1+_ zxrJ}LueJ!!+L8M;RUCup7jXncP;DjT=Z42?OjT75KCle!S{02V+#+-9KKb#f(F7)? z27o2J8zvy99T(IwP~fYA2E2-ExbhlC>=ZB>ttMn0-tS&$Jft{7Dvl6KMSAjeihF)V z%C$LA=hT#cxK=poOj5~2aeCEd8!7quZ9@4-Xt zQ$~yxyJ1`bXE+IpNV|_BkO>L9vbj;Y=>e5(0hb-cO-2&4al(=5qeSe;qrTQiS~Y~J zkwvW%W!MJ7P`(Oy#?|M?7je@$1CP#rZ#BAArH-MhHq*Fb6Pax1O{o|O{azAk&V|bu zKL4SAJgTo5b^JCZ%*1e~Ud{#0-SU|t109-($zjJ7M8Kv9ldCvIf$A*9ye<-!u#t@4oiJ*K~zSG1OnFB1+ znfd6vl}JbEmAMFQ68fIZb!5I-ucNS+7++*L?m6$FrW!q=fLrr zgCz)me_HtdGp@-b`$v5(FK*mg62${J*yt<&bcTbXzoj=Z>qY68Z=aDsd$`FeJK#sT zL>=-k#dJq%rX#g&Q|`oy(t=S_wAXLMYB2Ebdsa1&&%h zgzNi8i|t6u&FsPOBx-vU~fhl}1r}uWCp-+jX+CyET2+ zX=mXV5%1Cu&_LaM506O&YGJ_&kM6t^Da}I#MMT1qD~=FfPXt8hZwwx2uyz+mq;YXN zp_Ww$ae4{<@R5Vo-JG8Ohg7_PPe-nq8`N(3pHWpGmi$QplGD{$$cX}T&ZI8H% zkK!^ifExeuvSRwjac!n)>n-M8)mUr)1x;*1JRvw$|N%9e>Lkg ze@uh!Ge7PaI(efMX>Bv<(E&?~4pPrzyqcskm2bOO<^| zKbAV80nvK}Z$Ir z+qToPb~<}P`5JjsiFU3l#d`_nf7do9kBQN|0rA5tD2szs$)XTyH1V1gDZRKkzKE+9 zp$WF~F-@gSjGr;za>2GDrO_aN7EU=QBWq_H&$13wi$C*=VzX6Bri{UhazxD3uuXM1 zr!XGUe%R|j&TS7{@E?VYi%UWE4R}$Abh1a}Kuyi2Lsuj0P5&zTp7N{Fe}x1*d;L%9 zb|a{j^*u?2T6m)XOj0Lg{cv2T=!mT>J#=GTUfG7}`~MfgEk4p+D&ngmMI7yX(eVQ( z6rE&Fhe{yoJ)QU6$^IWp(O4UtY}Zp5klP&<0K9OHC96uzVZ~#8fpz36I!y>Tl~5w6 zi6{`&Evf$$w`BqXWvUauf5c;;5GE8bt%+I}QCU3L^X<v&21FJWgtS4MG z*opxx0d+szUc9(C^h3g_{W$sjJs;MgePKEI!Ba5Cbimv1eE8ptzNk+8fZqzK^uUEL ztKeG)V(Z1a5U)S4|L?kIi6=v*_G3X5Y9KI}P9y2om`uU{owd)+fA}R>_}6W~5dx^i z7B^^C5&hb-==|3FCp(P5%j8AL5`HEjU>BJfH^UtY?2OCWCKyqNjo?M#{etIBW(pAi zvt#75B6yXLkHY(?Lvq55huQ9BF>_o_%jpHN#gm?EtJI*EX>RKcQ05g30i3`dhd9il zUR3`!(7buvysr$;e_bNx`Hzq@hItVR*-#7CU}>ZS6F&}5WHLWhgr2a5KC*#W&x%w1 zRLOr-os?IBR%Um}v20L!F1b_3S!psYP2_;(vS=+0-tX|UyBn^4ZrYEdh)75o0O@sJ zfmiInK9}IOv6zRHCW(pbCAvd5RsUEdid*t&T13<%?2Nele^*yB1Uq*{2e)0M)SQ3K zQv9!`?h}-9056oR>=Qrgfdump!z^t?xt(`Cf{!-p8KhMbDen#$jL}1SwC{*Z3;OIq z{y{{^DLCziV3#Z4J{tKNZGYTmtCC4-SnfRfCG z@WX!yVrK?@e;sUMR2~s9&(GyQRyc;(v{emK7Ot-n7J0vU8fXa?MKagUF(z=I@PoK- zE#b|o>*p?2s}Q7^4@As__}w)ag4{)MM9x9O3$y~-O+VB83iU4`koI}9G>40HYNgfn zvPj?-AySnm`t#B9iORz=#wpH+iEOgSpI*iRpltnoe`wEu=-*1n71c3{9aRWo#%H}o z|591bI-xUo%y@S#qYxQ^;UGdg9RJ-59WuIo^=+Xzr$c_*pm#idIv)@ z#?pDr2(X5Qijp7%|9+Z>QPBWYhI^LPWhRSYsW?Dq386woYnP7i!qTo=B;m1z-be_y ztvYQMa14MNBW@FF_L6eBYtT~6Bu*?C8l421sku#%XT8C~XdU|Rf0tt+OED1bFWxx@ ze;EfZBH^$qL{nK@M?_#LT);4{uw=161UfAQ@{CGK+)zO)S6&5gZ|Vi<3#zaAx%gZ0RH zF3!M6Sv0uaM!vWI{z5DQ+)eMIcd6G_6j(po+WI7Cw+5-h_8Y;25+f3Ou3qa3s*4={ zj|1TQBpkZ5DhE8M{b8i&Szlv$8Kz2Lt~8lK$l)Gh4pB-#Y*I>_KJ*q)Pg-0%f75Ng zb}ur{B_Ok#!jQW$>n#>(&~6sNo4KC_x2;)4D;S{`hmTPA^{rZ@AMUo9t6zt=vRhu@c_2L!lNK>`>l}0uyznDHw7rb7v zxu&ydsv7g4BGTGvtt9l9*^{KPGN$L=U4J>4XM`7#zJHh@--5WFEzpQusa8^+q@8<_ zGkM+*7Lzb;7vC+GhW+vIe-bK)Z93LJ_umT*R#^UMfaQQSowP<_m>!FHz`{hzE~CRq z3yVc5fL;zTZj}HQWAN@3Zb}AK$jrRYSU&sV|2S5s3608DbEZ@cg{MAlO8B}j?CRq? z#%|#4+gac`yPRSYMKqbVaUO+dM9>QDbkq&_WECfMb>Esz*u%$-f7&V^V4A{=je|aN ziFXPlCFr{_!vtd9$3at#46qQAF}A}~q?fAK{@}KZTwraIs6t%;(bcs(`ER^;Ff9pI zklPss5N_% z#pc-B6)}-2?`4h^222ilfHpaVBz6kpN9t7oR@#p{k;n~2f8)DRs{{3Tbrp3VW1#!i9?E}^@D8@k93-`7A0P>A^NJEP7Wgnb2P;A~HtjoRY zg;7BYzrniM*Pa8)=S^oMl1kLmK2*4fLvm2q-1=s)0YZEAzKuT| zd<82=e}jR?$RaL9)@kEbS$EL)$Rs#aM(VSc^yVMarQVPa4ypG-Ujn))aF%% z-B&@skELN;XWZj-4gj11%Jzb8X=I_Z$+Flee?+62|6dj64iAR|e^X1=Ufrd%W}>!- z@R^Uro8-AaLxBQ)8+11~TPOjLK$FoV_}Q2a|_Z zl5mqeTK$_ssMR~em-&-yx^*d}y48=&=Pv*kLbrJr6jbhp%eoGP`34MPr6Ru5FXE}4 zf4-oba^g&yal=MMH!a{nx_jx-uM7d?c`roM^%$!i2N;U(DMHNUX8f6^%X z`fojp%aFYXqP67vFZTL2G3E1IT| zw3uI+A*l6fJ{K0#$-3HyV68;se-sw(PN>0x!PHrZS}m*PBf)wg9wFO>HeJ}bRph;< zqe~o)Iq;i={!;D|b+BC-%b|x8`Xa~SFEsT7=*;XnX0{=0)f6E5l+PP%5opRiTYt9h zXuF6+pVz6aHRT{!3^ILA$Umy0HlCht_xqVZAtdppEvx+Y-txu1z-Jhaf5gn{X8!|q z8clT(L%SBJnR~jqwxOhxyxwQB)hzW*d;sg5XDx+46}Q_ES`h`@w%-Vj zb+{F_O1>k;7qYMJ1?AcWf9htK(Q7d9HzY2o{J)`$hfz}fPWD5-p1^(2P@42NqU`df zUwg=w@%`K{45<9}?i3=T2E4jncE*yTTm_%fvGBXzOd;dk=LISXb;X)cP5tcTNgF9Z zdn_(BH%(S-zFt1JXRqsd!=@_QCi+B;y9TQ=2SpKxBbdRE;Bq+4fBMRCy?0#(_KU7J zzOhIyt1YJAuJtlgRGM4W9hT{}W(SI4hAMbz&v{Zj2+2=De5Dqqt@toAQYdj5inHld z?bwS@S--nNtpQxjfIwdIaHtkwe=qe?+9uwDDS$Ed=Dj;@F{^zaAg)o6xf-dWGJ!1}kL=3&Nt+`S!)r%{m@_O1RP?2eWa`T6)Qt%g==4oa3=U zC~8@h#t2oHn?NkLFzezi{u%*P1jO2(MN%US;+oO-ub*`=|7H~tHc)}gOIOCLBf=?r zof(u4G`?3JfBqOb-tTCpNbJ`q+_Zok!)!Gx$qQdP{vZTdg`d^H(B~PX96!bR*1?0? zv1seHvLypXgz9di8&^bM*nVce`Q_^@P#y8-T~nOcw0kx=BqD#*2Kpk0 zXc7fJytL&awa9(p*>$jt`0uVf?>_UZyN;K=U(W@1e~YRgak2$0xhkYrA>WT=cW1Qr z#84Bd<%&m*63;MP+uRyaO+f$`fPaen3%#{Ler<&>@Hjww#07yIA==HXeEwrRD5CK~ zxVWFO^A^#`$&SJ5Bz19#I+%#QN5pDo1TpGodUKrRrh5KW%Do7paKDMb8kFx(-_k&7 zUHIVNe^%gmBU+0%_K+{+%zOp##I`-b!GJ7B76w?BC^P6lD!>w52Kzky14tt2(A<>Z z$-$BBlorKv68frhd3&I47Y@|%et?76Jg}1-EVuj>KqjWIwN1zuP|C}08{z$t3Sk$u zQlmC9|7uyQwTpHkXo+4f1I}G2^ox;Or88Dof9A^DLwWMPlo`=x60_>b%3Xg(e4LNB z%S*5YyM}RdYqw>5@}~)mNE1UkUmG(R@@c=L6#wlY^&7h zR|V>lLc}wJQ6-LHVmhcUbYKUt6Bp}EK(c^k;s@Yr%9)s~NqO>I8!$gTA^ZWn(v ze>GlD&${vgzC(3`tc|~`xgAu@ftG+WE~|3kB?@*5D$!PW3YxscY%FL=V4HjhN;y#5 z>YG0c@lPd>sFaET5Sdq}A#UJaZ*pPXpWrCd4uFq)`p!3er}|Zhze&vb6F~p1)m3Lx zL5P|GFmyyKc5Uu7_sJ?{TIg&FdOG|5e*^&m_4DHI&)*T%E{=4W_tN=mw@+R_0mS`{ z+>PraiX~K|J3|R37$kI{eze8=_X;bNq|uGndHfi5%1z z=P(Xflkt=-?*!?A-?fLEpZ%;U>w2o(!s@O8OeVi|t?DT_STjGZie2^4#0Y)pf1y`Y zN6hoPYG5~@5Alxb#mhIle`CeId?cPrmZTDak`+%X^5eNrI~vIjit2H}Rr6oK6Bdh@O5AL$Y6fq}h8XDCi&?7yG6 z!SI78Pare={O4KcU=totb(-KTqPT>Ct4(%TpNSU_e&~lvCd=o^&UAoye;PS67i(=V zpCHVi&*Ej=WPMLOD%4TlE_JQ$c`bcm8_@+kE1MISg-4YX2=xLkq1zJP7rwmihh@HB zX7b=L+GA%WD2iU`#Od{e+gefe4oiM?@|p`82=9jiWoy)a;6n7ge0NxeW}?oE@Qz!< zdTbQj;${0ZuS}F*rcGyMf1EM&_V?b)URU79w(A^$d%KuM z1q|G@h0%|_E)NwsasFJIq7Ax{+TnefrUI8gQU{|UzK{<}qN`nIf5lreW69g%XT})g zLh81ex=ebifwV5kOjsa`39BenMFc>X>ty*e>(s1Hmn`Uf=q45RK z-Sse!TwFYI4eJ+pe?3ID%$v!jE#x{Xp>rk+jky%tXQMN8+YH`jgHUBvScv_8gK&D! z1E_H{wy}OP3E!WAR(HD}0j=#FP8A~N0o^XN+aohfUURPBi@8yKz(z3q@NLI@2dR<% z@?LROA|~_t(!Mx<3%_KVUi^FUHpuMn6&N=~AEhnih%5yQe?VN3sPqr1vt@nIiTM-} zPYzlF<6mF?U7>BvBMFqXS7P6@1?zXd99AC>2P>pOC!M+7PH!|<+d$cWm3jZ%ghv(5 zKgF@`94}IMaZK)UZ5?3bSe0WT03Z9!r>s{hrBlt+AH+(*m7R=^>{wmfDWy)P=}h*G z$Xs^)2D(cLe-*jzy<4h3t0uul=yHsg@gd&QR`Q#8lJI0>%Z?V`bv{Y#y-9}#?$f)9 z(~@ODe}dMt=JN*Z680x=nao??7D6CkMD%cfKSDWoPQ}utGO7(FW1Sik()|BC<&RuC zQhd(m&6%C>p_*0L-fVSBVa1SJ&nn;W_Mi2DTm$eYegp&Gk?tziDU*=_l+jDFhkk|my%WVZUaPGM-rQLva;BkGiwLRmrVI*f~Ge`h=`8YN)DuK}LQJ*{XtwU;<^Z~y1H{_0ENYLEI{!ZP1-kL|&(FI*q~N6QX&xb`^mf?TI^`0{&fvku ze*%!>VQN1DBs0VI{D9k*sqKZWA}S+3#u%BcA`mL(hJjfFJjZY+*rULpYDm1z_14yR z1Ol}1d+9J`ylKX|1Sb@xD)?P2<}#6GqknE|RHKR^+XO&v50x14THsXjb2**dRE*DF z6k?G1KF{p7ZXrXRJ@VJ~f|tvH8AE3>fB7%Ooxe+mjJUD-KsG^r_|>z+1w*Ew`nirR zp!W{(^)zu_-#(?IHhKDd2*?c;+tn5cBC7Ji8!~r+S*~tLihoRgR;d7a%6*}YCG%(< z&=VX+;Z4HFS>eO?41H}aO_#5ARX$uT2G|dBNoHo6!qrJ4IO;FG%PR5t)cytZf4acK zapH1!JRR8?2dRYKOqLUi=evT;~}rAJ`$IGu~PD$#3RQ)XGAhMq)xW!eizhu0OhVMXOgjUS7XI z!A60)*I(<5CNI1JE9K+_OUkpMf1v2*hIO8*;Bax1HyBdA_BX*0?5J*Sa99wHv7Dt| zF3EVZjg3ygc)5Htw)eryRE-OTQmXT#|F>e_&h2(wQIF%)nY-BL4lhPC~ajn}m{o|9->h8ePRjDG)x` zBjeaye2c9^rs++J4EQBc!eZm5 z;66D%YM)PrTYf!q!VeJc6rL>^!XEYY-E?0vJppZrJ5iX2>QG^h9g1sp7^!G>0h-Fi zD0ENBsG0$shV>d}9kC5`*-(V6Zv!Un zE44Ckhd41PWx@A1q$_=Hfg>B3dF}|H{aT3E-sT3HOE*iXN`q)DH6QtEM!s*V zyGWb#XfUkLgXw5K&1`C`vWdKK3tshuTZD!G7tZ-XEZJ+x84vWbF{*NoHohfB>i>Fe z+};2#e{{M7qOo2DDdru@!Uv}i9Dc;%e-V*xl^Vz_Ek|zHi|3i0WTl4dTTFIulLQ~C z4Z9g@3L*=RI-km6EkC>~h>?#OXR2s-?Pu9>m5)7uso}Gk5E@!>aAgMP6BV+0sA;+4 zuJvU0w5pGG$GiT}>izoS#Xa}IV7b6Y&1yg0_K%d3uGd!jp?r1&S_=mRz z_WwOOC{CnL-A*kFjv29#E^gO<%7_)h5v@q|CmAk0cVz|r4h&^Yo|kfY3YIH|+;Owt zi2Jiip_Lz+e(weFy{x=Llxh74fR$jmNJ&5S5uWdMfsz&56HX^cSNfuqL$Gl{CIU^+ ze-q3Vp|O`27%t~JK2*rCEy?$uEjR8Wk0(4h`a5i=6a8yErAzJ0Z<{2?K0-u*6NVJ) zqG8dCv7&BFCkR-nVJ~0$T1QUMtGQwJVw<0?!YEkYhNexT9OP{tebJz=7g;qpOoysCcGMkvnqJo&yMO z7(cmRHV^Gn@uBAD&NS|$wZJxT9Sl!$5w*3<3N(*0Up_@s7lCk6=wN6}h;{ch+@CRQ z>h`*bKGp%8AXwMtD^M3G$b0r6FMT#1_s(k3mq*|QwAT-S(e+G9u zK`G1i9VpL)od;4K;}3wQ&-<(lq2d1G9vr?`r1tdf{PDUUb zG_`}JT~=R|i7H_g5EIt8tS+hReXlf8Zwq$!4Z zUJ&>m1h^a|JJGYJG}G|^_Y}c)OfVWrb_s?MkL^PCb8FU%&&i0rfZhc$CklK`AKWud zIHUkr6iWr!_1{<7e(^MKaw?L7_jgp!_KqDAEJY6}jkhSg*)&0pxeTQIfBe@(pftLq zYwe^UkD3K>CH2*>JjzN(_lrYl{9Bc0%2;-{eCRe7cSIiAg8@x-G*~JE#&ztl-Z0+i z)#3UiIrFa@n48(lv%c_xW%Ji({*uNS?DEs^2VM0$`)*@S6GTJ*`54Dm#IpgfVd()$ z42|{=Vn&7TUIi$#VQqD7f3F7}mOZ^h~CW(f7D~L?$5$W#r~c z+MTi8)iu;^HO{zIAg2o@FOy$<-?o|`if7>k%*cl0`!S!GSAzfR1$j)!mwskiu3SxV z>f$b%xG)fk6OMKdLP1wRGsllNzT5VtQ7<k(9awQ??P=Ve}ea;HH818Rcx(r z-;|V5{mL)+C#R9UX@zp4ls?^)8dJ+NkL8;dP!%2TrP<>yH&@bSq{y5uwlrx)@hCZ~ zCTjukZq50(Nw%I%;G?Kv&@^TTurCIwS+*(fbVMOjyPsyl7I-JLEH;7WX8+Yu!z*ZL z1rakFuhX91__a^qe@)|gWH+~C_lAK{{$T>}DW+*a{;f204C^KtyD+acE&umK2>u|XFlo&GkkJLAiuwPfAbxqFVgCEQ!#a|bi_cI zgz!?)+d_`@@8Ij>xD49ugI#ITYzJD-`pHB6G-Fg1anCXl=?52lrA5zq@cO{LOVX6d z|FCGEu*9#W*s6amBGZ4o9%OL);162;g_BAnVOJw%qNl66Qm0T^7aTINwzio(uBE(% z$7dK*?0UuLf3EEqDY5S}VB=YozBS<=&n)z3G1Uct#S8EE57C)FiBr9!Kq(}BE@#A{ zBTA^Rn3&hkdhmD%E%7RH)~-kkw`&0+zWX48vr3v@B8Q)_2i)>x5A0OZs?tY7o1L{} zTA*{BZ&eL`HkUzcQXdt9;NU^cAm+;!t;${`mf90k7q&syi)%TLI;ZSr(!`%*U zlk$#9{}>NGfj1nxtz#B+egJlb8q?A~#sldr)*#NGH=dSPSW@$KnHO_-USDs#I>Dx6 z7Aei*BQLCQzcNwZfQdkirSOrgCCdUgtRgh8#;5AGV+tQSh9|2J9y*fiTC??k|FF5u z$aF^&fBR^HclQ_LEz(9wTL_VO*}Oodl^eTn)R7?z!`1uVWl`7u>g>v!uLZ>S(9Ay$&I4E=$BWA7c5tBQa+-%A> zcc5i!g_tk;*5WBiJ9?8wuR>!H4B4(2_Pg&GfhB^dyyDHFpwMr_ap#9SHJxQOM^Az}y+d<8Z*j zeRqHgowk%`8%SJElfr>=mizB;|$%?XiK286i@N|s*%zU5}`#X4-R z#}YiQw**)Np;9dGr^-vug|GR))>W5yja{(@wyTBy?<$aU|0U0Hb<$A?w02yK@9x3n zKW3EuD9Y%@`2(9*iE2bbfK$fC2Albme?2R}4oY&8FG#7ks!xM*>+!3mQZnT6Q0vjK z@8?;2m1xP{g-k|+JUutD4^}U@0yg(3ArgpD8JyYg2JF1kUl3RivX|gxrKXG3&OSYy zJh18_#yZv<-n76~^de>(*$ zp1Ox2s>1LM^p=egJ!>39F5!OJd-+fp!e1}3?t2QlPJXXj0xDsbOb@5oKj#iy;A1td znAgDE(=Ow;r5Ra(Wp@xvngJya(|am!0~+IGkqV?yAzJ#=+g@E_PRNb(LI0T2Yi7G6 zP$Lz2=#ca7LTU%b|JKDH`NsIBfA4b#1h`A-BRg=gdVihhyaYh?lS;eP5Q;T! z0-{7Ap8%y?ko6Bcw0?>-o_T`J?gJJSG}Yk%=;~%XF_8&*6&jopy0}J(nCumMEejIr z{J|C}GfN)-CoaUQ;7woXf2VG~In&;oZy#c$XLfGp-RP>L$WR@g2y3fOV>C!rfi0@* zyMPApRv70P%pMi}R^N-gY9;m|?bS|#)s2LBg*ebtt*C{l%C&@Y$oC``OH#qrs$avJ z(xOz8C;vK;*6;ao!+T-aGsd-RGOV#$pRyeyb9}`4LpD49(bTD3e@6yviq+7LO__3e zUeVDGk4p1sZZwr1${Sj7*>NCf0jB`s=%>H^qM_uQz=oKVk!-SYNGYWa&@EmiCv`9l z-+x9vT0%oQGL(W4=kNz05BaVjNL(K@ZKx2DLq*}+YNA`4m_d$UpNLJC!=~ja#~Fq@ zi2vMjAb66G-_IoYL)<@ANEhxy1S{6O@c-PlFo8uhSN$zeYyX|U`v9tuTIh{+;K0=b~=@{|7?L# z9Y{nxz8pv^k;(7X_j$Kbrd@~{VVue<-vX&5@loiu3O}uLe@j%f)^J?sUlL}~>*T-9 zlT`RWOC}yirH@sx)8YxTu=qZis$9MyAD{`%U5){$=HI2M>tobcRX1`(Q-%|Dcve;VH zb9@(XO$cVPWh)33OfWb}XdE^6fTu#T1PFEI9QE$U|N)$Xk^D?@jqbEw_hc|jfW z>Jb|vsaRiQ+m8*yel}ZwWom?kX~1G77|oU}k>S1qe=!HTyfz@&&SsCG#h`rIpH+~d zcB|E9ASA~S_sTi~{@JAQPE=FU9FbT0eNavH(eX=@FhAZ7>)mi6mSq2Ok}-C&I#%>& z66R5>tX38Tmf-@#IQ0c+v$@AwnS$%LH<-J!^)KgBNeLsc-ADj|qf>=12yu+elKVpl zBqC*@fA%Q(9Vi6twI&83j)3<3SeS^a=K7n&K8=9Cg?t=~rv#M94nxn}9XcQ&=EotsG##7DI`!+Y?0@Q! zAKZ$3S`W4h``(S%+YR&7o<3b_UplKb{RoEoe>J^jzt%JusAwQ=4gI|@Ts=IaB{W5g z&yXtcAy3A_PNJomPq_^#dcD}Kx;ro_A{Mfcm2VVzD~j*1DzQj|#Hg{If>XXDPQJit zCsi|aKk>txJ8;!fZaG|wk0|jWN5#n14CO67!-KF^$%fX^_%UOfAQU}Ozgjb;K<8|iJQDk%wX>xKAj3D}_j(=kh3f>;R7d;7@sAZI zKracMD=69yb?$E)jOqnBY*STNe`A6TV<0QeLq}KC@HCbsMKSBW65@tKlp^H6<79)S zB@<-ZEL&vL-8_4iEETGqgFG7K*z$rXzfJK&OerkY)j(#910YGYc+Q}txqFu_YxAt&~5K7BOlA8jHJnLFbe4#`M#f9>r8o&j0Q zQ1Ku97JC4UA&)N+!txJ&4xX>h1gs8)jmuEa*+R~H-6FjoD9Nr_H|&2Q@2?L2gMxn> zI#sRRro;K0a^k>Ht@2N7hNF{^S6$-YqdBpVpThoX%<}&F^(SHO=oo@f@(GCZNJt>T z>^f*{D&+UY$7Bmh^Xq9+PYjCp-E?r}`j3WC7U9YZ(LIdp@-00Rs$LkumUq;z*Hp-3Z*gh)zDBdw&Mq=fJd z{_Z(?&U5dd-@`M^yer?m*4k^cFzD#>$l1YdAj)tUf(OXUF9Fa5fxrkyH3ZlNY76A& z(Sta6xqv+YKwbfUemoWy1rG=q0foa9!3ckd1OO<4a0KW>+z=2~8;A!0X(Eot0#Jd# zARb7)9l*v90D>UE27Yc3Ab=hG8|c725j-|vPox?GbAZAi97q=hxSO8`)WH#P7ekPT z=PuHnw>&RE9c=3i_wjUw0>CgkfI2UT7oY|AK?kmk#Qw4E2TB=|B;-j{g+- zANfC_L5?+YH9_x|+nrwIzjVlnwRMI;JUszI{J&KY zWM%$~J+d8l+yQ(bQ$v3R19`6hW0-y$E5U5xc2JlDKtNao0QT?z`{D5;CqzJ47!UwN z4!#}4_xA_^_;_J(1kwfI=7k6Z*uy>W?%FIO4&YO|6a7Y_0subMKS%_?r}+noBKiD5 zVgNp^eJ!Xq;}{sn~re9*rjvW8B7K_p$5zf#;mu&a&T-*k}&bp6ZZ z4to7j-?4)I1(AQ0-2R*%navI20fpQBWr5`9@mIl+&=czL*Qtb%E%9^#d;WC@ATkc( zFNoye^9KqbDfs>ckp=bp4gYhDb?&zO@1@26XRiO}`TLFa5gu@7h%wX-`S|~3f}C{^ zsINIca^nDza^&B?em(w=1T24+vw;Q96Ra-#inIKlR2$Pt#kmx;avss_RfnqfzeyiqjW}#*R4xMm_8++fK3!0 zE@ZxQB-9-=bK@PTh}#Q_gjjHo+&t%$b#cV~VRbCG?oRSe)YuZ)>lpUU9R6*zSVxP5 z+a4(*u4;FlY>jPvnAqUyOSR8DBWhB3C`x1e$QJu)x*z zJ_P46#>hPUu$1y^Io^-9_Uk3pYD=BGn4=#j*C4*{{DmDRbHB;>&6T@EHle*R!E9{8 zpi+OSbS(D3?PL43*?HS0qhL1TX79;cI`1FX)N^Rco8(iXWmM3Dt$iE})$0)rvpFS! z$T{bJw(duzb=_yo;^I!<1~R6V`+hQ$GCre^y2&XL;=)khc_Fo#UNJp;?)p*51Q#$?Ie(}%mn+cF=7`U zx%_LQ{e_vFOv$XJ{Ki{*{Tu{EHSUoVZPl+NLAJ)>g8(ZVld+Z<_GnJPgDJ%wL93F9 zs9-!9mrwk!AsZz*;&60}ps+|QGfPobuNx~aH6wpmY&f;Ok=S8$-;>e^}go}OWA&n&X$VhW!4u4$L#2(QipS0-VIA-by zn>S^<`Z*%NY|P~tgz88CXquV{zkq-2aLy?>u`na{2yh8hZvbZ8z@BI`_I7H5&foMO zZuQmbWooS6ex{_TXc-OFFl{#dnG8gu6Iy?F)*ok-v2O8pmWR_SB;{Td)xI^8^kyn! z{DkyCg?)I5Ad_4>S_Q!FHOkex^Dj15DGX(DwyW1XQH>KSzV}Y3o`>w85KMnn(s8W3 zP=QtqrYuKSM-#EB29-RUwhC;CUOgKLLg?S7R#}6Z8AIW(QKt#oax&iMtnw3TO{Fo1 zMlRQ1R;EimCjuztBw3S<4t1*G^3J5x(bQ|(+bCAP;d_8x^QxS*baEzwNkz3XX;}Bx zZf!zSg8i}8a2v*KU~igb*!_Qm?7m%ImVpmGtGl}hi*(b@Wx6r_*(Xi)o2Y94LyZk1j;?YABSmq$*g zJfHg$Tbr|Tdr>3Fjwg-XbJ;Uk8@`cnJ$aMu=Fcw;;jeE|QGOZ5SrpttmF&J+eBoMK zNBfK-%jp`XRl+jO_O*XvrrYwS*!N4$muUrI1Cm^ySF;Z}F2V)e_fF)!zIN;TO{hdg z8%QPG%bmtJj?rdo6-tjui+SPJtSZOu$n2_a_C!+iB%byyW6&$q2A)R)PE~QQr|Pq= zCBu6kpB{6Tv8smQ9>5l&pC=npIMHWeHm&9yZu0|2<&AD4&LDrrV)Z|$UbR#ud{_Sv za^B&4YqraP8CAz7ku+Mh#JlP)8g+$6gT|-N4DTUm1rJP(jt{J683fcr||i3nDi z-cMJv7`~f#+Y%q!J$s*is;4}B19~K!#%hI*H9suLI&6ixZ&mZaxqu_q_6_U7IYAJY zsqDr;J8lo97}kFPo2%n|7y8xoii2aJ$0xy0awuXcvT-ISGUYg18u}!?GIhMs7E>GH>5E9@zqYWf$`cW_>@ZWCsmt z&N5LilH2CC@EwuAjq3cElG88o7O_qZkFNR}s?c{~x_*D3eMjjFl_9HU%Zbgk5Pd+@ zdCZ0!F*g2Ugtm@r=EAkE?@?5IRYV<951M7pEgSUM3K@tC2*SSCPB_&LH+ zLM=m>ZBxVtJ7Mv&`f>(bwEUU_ks`aAxf)Jda`jFQNAX5q?du|@Blh6X%MUO)w(Q=# z`xI7Vfoy-n!Q{sYClwQ}d_Am2mwKfJ7KHA+U|+NhILV%~ro0(Vsh(!Czl7D4=diA- z5XtHEKxG&ONx=6X6wwS{m8)!BsnCAVkvuc@)q_Ox&;ELF9#HpDqf}T2JJW$p**+o)@P)r=^gL8 za+ApaS%k?EG==X<7L1Z?w?_pP zg;9UAPy?t4T9wV*G1xxuM#|--qEePF%?`ToQ%uNIYP2B)PS2a(9PeNb<@;szIz98} zF2AOQbBJ%;l5i)TiNYgM*2j6j)_U zyu@he4VQvc52cQ8YX-m1_uO6G?6&#x;p%^_YGNH)f#$+b@lpcr*p$2s>;7Vr;wzNTAClWw^HYaiAc>~3<6OltA(EwkiEcIlxowF97 zU$n!P*CzX|AxpI=V$E%@4&Hu|J+u01^5Z%nW;R?iIOFu@oZ&<~j)!Y&>jhapz+dZa z4^~zZ_Dt}TlCh5KRAK?C*kw45==$r159gv1mfcOu5*~XLU(a#N-@VM(b}->2tHXSM z>ajdm5gsjy^T?7@{!4EFyg|@CHOHO4pDaXmG=Y(H{{i+9T~4o#_Q}|jrJK(mYD>^) z$sF3MqTl83r~5iFe=z*+eoy;wnw52qne^Z`<$1V`a>O zX}d0T8Xr@X<06A7B-vY~JWz>m;0Q^ILQ`YV$gb`Db6k^8PD#3QNfwvZnr10O*5w}p zRHNLztPIx<=$94^cTFFyeKPyrvrlxjFs8>Kb{6(oc<@;gVs>!y92<7RLP@26^J);R zalB(rexs0^cXdepM)wnUDUOFt*~`iGjOYhXR~cF6liv4D4;j^s_Jk$@0w0Gu(rqVj zh8%Cc-}}N(}Z5%FDZ+3ZqYDgK);Pie@1CgTQ;3*d8uYCa8t-ODBi-1rllmKjIr=+4R-}VM!(Yc6Zqg|bN8-C3|38<>|*V>r<+?l zbIr6x_TlMfs>k!kJY&F8BhUi3tccn%)_p%p4s;61qTBD(KRiVe@OV^zX)q-B*3a;w zeBOp6dgZ@W_71pm5tGRaQ7}rr|C}}z%k~u%_w)0QrYbyfT;GE0>NWcUY!tCdyy#?V zx66b3#`t!s0u{8At0+HL9rapZ`JG*7Uq#_($KV!}E598-r}H{x8z`m&Nc&oeTTcZ` zbqPCm(#%a5aZI1*Na{&{L>`>RgAa8_KXh<3VmnmwPOPl4y?=pMM-a@PsrFh3uo|7w z8fm!#I(xnOGpVtJ5D?dfv*icw8++&VHO$t8pHTn3qmiDwFdjsQBlv6#Hik0HG3QPt z%J>rdT+b|p<4x$dp7r=O;R+!EV3O6T#785lvFqoH&8y0pX}v*z*gwbhO4q_ZQ1+Qf zjzw=3=d0Mj)nhyz=!L9Fn>u;?)<(pBu^ptyRF2p2O)9Cn0Q#7~6DPXc5 zxzt{^+9G?Ny?E+dzwmId_dPaqWlGAL44haSw(zi}Pd_Ojsf5voyfk0d)=oold4e4c zV2=U)jy2MMfz%wCnXjw&I!|pQzQ;#RU2l()_1Bbb*k#t8O+TIs(F@AdRE{f|bIz^U z8WAWVEqauCo1Ia>&X~UhRI&JC@57TLlefWj57jjDtdv~!-N8x7sXw!*di&0x7R_Gz zV^vE{HkT?@mNd}V>$iLnhD^BV)35NV#|L{g@Z_z3o?Wl~BraryN0AdId#+pyX30Mt zv)Ygr<9ryxxMit~!};T3o`TfmhL9y0B?u>b@jB;G*KAryM|Cx#cy6z| zr8SUwlC#w9=uSQR72vsf7H_U;~qVqji5Qr{d=4+4u{xJ;bs%PNfWgG39Wh_ zOrzr;3k`I1oSTH!)o|S-G>QU-?Xz=b zk`oi|E@I-yd!Irr-Qox-FKR{x>LQwdWTwS&eOST?vcj#cGmm01%N|fsMPpuH%lzDj zQgc)|&j-n?S{C@wgU+pv1;xAw3HqM_0D#n-A~!6)q_@lGtBr` zO4#BAcDkC>3B4VQ-q`i`gNV_a@E1ECT5pkrbcx$@06z^9F9cdVDG}jG;Gtf%)^bg! zPssMMd~~r;-)}lSdXBUE)50n&*kR+;ae}sAn5~(~q1e8HvrIsyrb_4{um@t#E)5^a zdiq$}JgaB=#}EaE95?Kuhm%WxdQpwc8n5wQktyK-zSW&b-&5%%G&&lz#^y|wy z{&RKN>w%OtDJe^wFG+a%<_nRkTO4xk=AAf*cWhWV_Qzke8r$BzK~;6r5sJ#p#1*S_ z-N_*i6$x4=-3~E``^apa@L1KH$b5b=RcZXknbR=f+vD|zAF~2-%5@WerRRK18j>+= z7RXw=r}_*%GI3#g*TVn|Vtm8m?vpMwE$fveP_j?HT@@sKvkBu@;J*6fDgNsZk!?Vcr9 zYK;I9c^Qs0CBMe!MY*0nA_irG0S=b|Ub$}pHnDmkPu+PO8k*6na~{MiuI7_%_|T^v zh43Gyj-#n2m~#EXV!9&266s0p!q)(csj>@BE2y$%!w`OC*C>)5C&r z8t_3HD*M;0w`|J>b}GymuCgtkPFj8~0^=G`dIxh)_AugL<-iA$Z2X%nzQj@KN2hgE z5H#YarX23>3lBGc)ZOeZx+ZT2Z`Oj4y)P_Fhxt!VrDL7Tg3`sM5O`uU2*4|D+X+I`hsPk7sM~GQ~*)Acw!5Om494rt=!)KoNV~S~% zhNhw4N`uI-ip-Xx6}v#|0ar??)%ZktALJB<1-jmUEsKGry)|3_YQk$?=4^i$6xY~>b zwCZfeJpH7n5MMzfB===5{It^OYs~u*ac7UppJK(`e(mYe;ux9i!2^bm5JB08pl8`` z)cIHUMP$ThKAu+vcB5Y@VqB#@dy^guuGZs!Qf0`r=JKny$wOAoJZo7V@YMK=ph#$PTJ%vTmLAkiB1XXbGx{V%`IQ1c5B(P&G z9i1c86L-A-IwVb%+7i#@OmNn0*Gj3s9q$9)^~WEH&}BfbYpU;tu@JGEX=U$p%KAos zeTG_+{BW`)rSdzhmOTwQ=4`}AiqV#qd!I1DUHAvFX-?a~W632MEi$xc)H3>(bluTWh8zqIV#B zEUL3n^Ug%Dys2pgAQ_A15WJyQo6Ez0l5pP5WISkoX5Bfe`2pXR>Orf5$%lDTxXrBt zAJu37p=hk1vh3C&0k)+U1teCuTwzpMcan`AMLb={T&c&>@3|BH(y`xe@33-TJa$ zxAegUb3xepuT#7{$Be4XX(Jhjk_9!^8m(nW3)E6e>+gxx)aDCCRI_r(t_@vY6HI+{ zgDHPw1Zg;IN)SGeJk{V0ugPVu8@wHKl^P5?e(UNS+Hn7MEw6QYucntS8~_{K z_C#gK(zo&wGSH-DLzD)8^tj8E5cS^A^U?mIH$k*J$M4Z;@gfR0jq3Ck$lK%9REFyL33o)i7^b%2@O+P8s`gr-bgDA_jhH^sF$tb zXP&EsoJ~97x3$|F!Cx_i2v5?Bqk{Br9WZd3V46uQY=fd$cB#Uw71} zPxoUMC-w-M^D)+c_%2>0ON>}MsTtnOt-E($;?1}4TTt!iA43SW?vYtZjl6pvEjD|e zA4*UfrNw%G7qSDis)E{!O}}D)sL+ee&O7(ZRX{!KGeB2;?9JFLlh}~8Dr~Z#rdy`^ zNU8BTra5{+(?`Sa?^o(>xe_c;yjgc94}YQbXk6)8hL#zrq&IMhUFUEi4BkkuOYjXm z#j;K_vB*{k^UlTYS*#+vmK|9L)OuvvmQwlvukgWtI$YZPs71dio1{p%dz!d?u~9Wr% z1At?HD$W6u-_)Hk?eM8|+x&YwWt8bme{B4KFIPDU?FaGW&2X2;bzya`K9d5=4d7qD zLdSQzmMn94g=+LsM8M3GLt~9~Dm$V&6SuMI1!TK=B;UOykt)qjR@PGp?`(u2b4^Rj zx)5l2nn&|s^trX-8@i!3MNJ65Z<$JDpv@A0_8vZyh?;SmehIzn{+`H~T#!3SDEU~@ zQXO%WdAz?1VoflN;gN2U%uXvMs^%GW>}*z8!_L7Bjk{8xO!~m9fal4arj-!o_j^z@ z-!G*-2fcd5IYz#c3Cwn7*9xBETp`_DQN}>4U5+^h4FKdR?uyOLMzFABr(k2Pu44Xw zvX(~@z<2vR3%B!OaL3M}v2s~slvswn%T0<3rU7@@J$V#r1xXy;(|&ZJ{D}Ua7rr=0 z&bO}N3N-i!m&b~iQ?MMbly{?JyFd=Dn$k~=KRZiC47^^hI8%KY_RV#-(%3UJW|5WP8qkHeiuI z4yk67P}kjhR)#6Yo!=%o!9X+l(PlsGR{qi3+Lp>bMbN%Du5AyZ0z^sa%@KhJPUN-3 zD4w7F?xtt3FTZnz_DxuxY)5;opQ&)ywb&xonU@-?A#tZTB++gG-&%G|*7s1yZj^+& z9+Oj5Utd`?j;-SHIR4{z_>3BVkTQVNbQZ~4%Xpd)=@cSpx?CxcK0WiJSI@k|R+W^D zUF7f$Tr!R@T6;Gj1H@AkRa|J1iVu4U{RpWR1@vmmDy|S5+^1Ww@VJudKi}^ zNK}Nr=kqIbu~_He*+iE=y_CWJZLPC;{36%)7FVXN+ERTP?n4|R>jzk$MCD2j>sobo zI(eV7-BZd%WZPJoY)GYlrmGDo4RRV=Q#u+;k+yrwv6;4?^8JE+60d9`G`VFTv{i4+ zT;Tyl@=vxzP+!K1$P-Vjg#7}6j8PYj2{Ec?JC51iQF^t(n$qZ5m|}hv*;Z0}P`W2o zO?An%n7C@wvJADm1x9uqW<~{i^E6~A3}cz0?3Cdfn`%aJ1QW1-mFhh1L;K1#f5RqM z^aLwN;73ukgfu3cxy2LRYzM#&UY)&4Yz7N`?lt-Na7nrFb;_aFp2IusSkTVoE##=# zP)eV*6Vox%x`8(!?Ti; z^F?o;o5UA}hc%*-1`W}I+x6mmMl=H06Y+<#GU%#A%OU%@?~HrQE<%3%I2eD@#Oj_{ z8tD;+A;12d^LXr(W}CDe!*7LwjH@Eh7pQJ-Gx9paKZjoNYdsFZFXKk4Ujb#fm{)}R zGQ5elxms3#pSLfs{n?16`N#c^+qk~vo@EEEiE6ZUFoHbyMtxCgDrv%6mI65ZB(g`- z9&Si2DtdG_UCQ$xw3~c1_!je_?h?CSwKU?$ByeuiA`2Xk?q|We?Ry$O>W1fXc<}VJ zxsVA>>%!?4WvYFi{#6Y~I2ML8?iX2HXnS9?@oKYwTJEiu+C`}a4dGk*K9=YJu#%SZKf7jQhHdHeei-H?_(S% z?1Eo5zp7E4KTyk-90y`FyDD;Pj1hvHm@=@zB`Cf#SaD63$-2j}AE!B#!JQ)!>RASG4yndvVhodqfBp>dpMg#?lBWphWa9@ zrCDN9vcFNT2|n)Z@pJZO<50GHF#rxR4h#*f-~BEAd&!V!(_&H-;^NMj3P)# zsH22HOO=rMK-#49RG%AZ4#3w7lJ30p0~HgXS$17D+iB3t6OZ$ll-&b&1r7vE$c& zFU(Xog~B(A-`)>PpQbLs>LViO$yl=npc{Q=jG!sH?7*xU)s@eF6te4-)+(u!g86AD zkKH=15KI>&2hmj#qF48NGxO7KR0O;bYT;X89*%Wpi7^yE_tx7@k_&s^I2gex?k8Sq5Q{T~fx(VTPG=#>|l|vP7E_2}voDid0f5QfVP%%f5w*vJ}}% z^`6nax8=R>pYLZrGiQGL_xV2G=Q+v>_KupyG}s$7hap6hfW;dCHe@mdp>IPdOa@g? z(*g7iWKuW)0jq__W0aLmIUogpVZe|X1py5Jf-XV_96>e$vb;eKfTnE3C<7KC1ainDfGr$^IvIc}3<2ICox=11U?0ESXGUjx5e z7=j)^V^9%P^60U_EOg%n`M|)&A8r)MKcTyYWN9$O3;}4M4+duoBd9b~ z|9?*0AG6E@nM_*>3sn72UjIy{uo%pc|DFCvnk&ddt!fK@b66DSA29~koDmGt>=_7^ z{)6Hl{vVx;Azvm4XcCB6ytb~^kBBqxq%l!Rqt_CHcd?;y{GTyYtyF&q67lz4xnMgY9M~UpWzf(! z#V;u+IUGi?2ObqD0rjJwfBt#?HbD93+4`m0!~_n14$~w6np!$2a|AsCpr?Zm|E-Yv z!rW)?|OT8U;If8Vd{)&L|M(jww#1=QJME>^l`cfH5 zvvd85piy>IapY;0Y}m%qz%$}x6m-!|dH-tWx1PJnSL-He+qb@^M35t7#7M@~nJ!r8 z=+oqXw#X}GifZqzGPB%siH)c4CEk+FeyzTu@;R-8n&l_2}kgOvkk@4eg74@cD6e~29F zmG|0%fbU)$&R%IOSt^RFe77`CHB&I9yj9YFDhbz`@F;3HJuu&`vve*$wXl}*crX`3 zBhN-t>3SRD@IuEAL2G38^uJOVsAHLv!t3(?5_d^3e=^Ha;KuVQ(Qi!fOCW-PIO80p z;nbB&F+#~{`xgg$X|x!2*hqGIH3Y9M=)T!hm-&)-O&$(k-luM6!@e^=;~$Jm*kIOw zVzkuU!Z@CNi^zdB2Rcg=%mY<>;nZ8}yuEh&noKd2m*Ou;&TKY+ZD!~j-gPjTQqeh+ zu}vqVxw}E!g75SDY{N5_Po?YXHyk^=(d^k=ht*lEiqxgi8Z$rYKG0#Xa-&FO`dZ13 z>!xXj_4H#bX!BA?l)u3&~TWN$sv9zL!$@DH%&eQ`JsW!UWigwk9X$g61iNI8Ux-jN?p^?9g z+w}Tv=R8d5agWM6lFxs}a(ebf;!JM!VgyZVg6!Vk-UKKsy5H1#s z*_$z^1jST@qRXZ^Yfm2XPgw7ntkn6ME2v!} zVCeprNJLjhDs2jSbRzmwv0uyfDs{fjL#LA0Ug@X0Z%Y+(y?yXZgV1zzdzZ^@!-$+? z)LpK0z>vG+!@A^CSBo4*-xA)R>lK?X#7o8|y7sJ6##kN5+}Ct}`{)|o)4PfftoE)v zS}BlRJ2*n#*uH4jpqbe~4PR_^I_xT3Hy(BHuf-?k(;n5D$apA_T?4bNH>CMQUVagT@7`s=#N$QbDm*J5nwbW+}lhFC>x>e9CCZ-u==&^~7UimrPBA zJ(He)zH>fNbfu+#-NV(p^FrOdEx`jvGWsyzBlfkWU20lETk?kN+?x@kE9jL^+>svS z^+n45g`mD_uKX@y@iC`MLLW9KsgkS0;m5S*)E$K$nxX7DN{vV!-cNAK1ks3XTD5*e zg|&issJs@5i1hIU=9C;w0nsz%{cFyI6x3rhzg{j}&z-P;`)1*G)K}@rVwQ1-sf2ZY z;ug0@UCAX)jIcRKdkkX$od@Z7bzZ|J;J$? zKC98PpS?thG?M-D@=)CJB}qE^pQH=Ey`bm2dxai7qEl^hwx&d{02dH5J=d@+v1YEg zM0gPZ@09yKn2=d?CtZ-fH0qg+%T&_MowC^?$!pGkcgj4kYt2=88*B8Eel4mv%&0@- zv4tjUYtYU%?AEVAf~m)&%IyS{VvTD~hEGR&T1_f|o1PnBIX%wJip$j>3)7^%_gSh=I|qRXC8bvqth|M!TQz|OAwPeU& zkTpi!9+5nk=wsvyD?$yXHphgh2%cWb(sdAjY}ynz`FR^hJLC73fEk;{qQMuB=j@l0b7Xqo?yK_H8dRiD!FX-GAEj=B?w)cJm$VkJ%wfem^@c8bQc^)leuHJ7*w&_ma-Y$BJ7rI@%j@$|+@O2Mr5- z^hD_OnGLS(pQKt?>*n`d+bT3_@7Ak1gcywu=b1c7y+!^uKRS9_#~-{uJQ{iPt;eV8 zYw)Y_Lsh%r1G(dxJ4DChlhWSJUvVFgv3t2@KI@nwpHq=;uH6C8C7zrjNK#UNLxG?8 zSlnNscyD*s*`PV&v$kmu*J8XM$=^M3;EU}UKKlEzC~O~Jl_$a4aHYrVDKGEtLdooV zM5>@tXg7B5c5D7cI`??+MT73b)}Hz|bA@M46^!=Ihvm4BSv`azB;1J#d)@gf6wk^E z?K;~xGG?Mg{Ft=HbF4bla&5+cyTL$G|9ND|*fX(s%eGP9{nkkt(R!u+GK@9q)p@T; zk3$5##tcb5=jM}}f+ZR({e-@BNXiVNKCTIIl&nclZ-=G!aPN`;XnVs9cbE(#Bu z)=Z|xr22lS*1yNkm{MJAQJI?Hx^(@S&;&mPXzA`oFNM;gXOA4*7sOKL?|xTIQmKgXQeSqE`SV;v_> zI&Cl>n(tktc~HtWp78M@(&fD=`LI)e!LpVjf*{~@sOcq@5~&)FsdZ($Cfm3!$qVVJ z#`oxS>x`F}ZHeJP<;TN+Jp8w-`F2sOo~efHy&FL*q8;ci6i<5Q+~8(%-+d@`%k|0w z%a?U0Pl=8_3Vqn1{VMC?;iI_m@P@E7{#R|>GAFWemg=mOhr>zZi*3STzSh#}nTn^+ zXP-}tH@(x|=iX$vB6aJDwG;ZFH;8=@bB3LDDi}=iSJ4_TJt=K}`><+Eap`?N>+N(W z&4ibRQ7*)(HoS1r(^+Dw)|l^^>WlOv;={u=Pbcjz2pH$d)es{Gjw*i2cU~fyzPf27 zSW~B^^#+?eX`Wmz6R=2DlBr#i>gwz-#&6Qd=*X4G8-9!l}%CshNzAP8?ws*1e z-xZ(qtVc)NW>)kXfPG?tl_>Z|aLANuI>PLmm}MLIcq_br#mn)(mup$qI2z!irn6#@ zp75{{J|tTtyWCp!;Tsj#<+rhAy%*FJ-l$k+E!k_=m7$2N)w>xcpdIBZ%FG$ib3Kwc zv8ZHw^UmPRuF@|w^-Y;~I8V>J?31p57Kgj-@4_DpAeL0k#pDHM`)tb64|>F$FPdnS znbkd^zWRh2N4mSMno9KU>i1M%ac#@TQ=OCl1Bb9nl$U`h1``4^GM9mg1QWOFOakDG z12Z!;mw|}{6}RHp0#G^wGcz`qfr$hZw@DKN%~k_5GdP!li3Ah3ENTNzXag}gFq1mp zCJ;F=ISMaKWo~D5XdpE-F*K8K-zk4wX>%Jl(*CYrG2b?+eKmvo*h+1c&m_Bc4%=U#>NEg0eAp`HK8$4t390z0FP=5s@ZD*y0L#MqN_8F zHRx`v$3UQLYygmm6C3Ldn=l6-S(6(ZG-@y-8-m_54s@bojRio;&H>1*0m04>>_)i|RuD0(^*Fime7hnejeZvlALH~^VAzHyEOFgW)uQLm`*|I*Hu_y61mv_8^rEXWbU04(Kg<5 z@=-ND<_rLIGC74DgC^zZn?U)Q7y*znXa!5kxC!2{du~F2vNsZ(Ck^vQ0oBoS`DK$3Y=RFlQl9N7y(4HqP>Cuj0eKjv?)L^Z>K@t>O{zpN(K~B zTH3tV-tJkb8HNufS_6N|&;TLO3!av1KqX{S!HCc)tjCh^=)s)DLeMe7NUY_GA$yj~ z3W6kF=5oq*@3YVLn(p3wHeWnFogDNKlxm(d-8Ylfs$ZNmrrbVwzxw>?YO?AfR#xnF z59cSV=CjY5?jaYND`*eNSgJ4t0wGoytPeP3$_)6LhBY);7~+2bV}5>(goZHODA@m| z1-4sm{{Hv9?wiH@;Ay{VUSj_DA2!{y{{5E!PGee+VGB4DhT%_|HuS)eZ^UhqC&%+F56JMp%Tc5l&7 zR@3>(eG2W9`+t8kiW=7m14b49s?1-M`pc&>=fksue$jk#JXxL2=BwHCb#r?7rg=R% z_;-JD_-Q3I-^S3bZT0^(N2}H8-@0zo(9RccKON>k9o_Gj2aD+``_r?^guj{`LlXD< ze@(tWdpbE;7R<+!)nW=}8`UaB*3-*L%=Br7dq4i8Qa=7-ahw+*?w zKYjD2hbE}AmskVcQViIs?vx6e^>0=MT1?*_tzb0W(J!Y*{Ry09_n&?-@8&0cxB7Vw zH`u*_?z?|C(|3Khga~}-diLo~rYAkzQ}+ctQuhc>sQU^IsQU)4qkGY0-<_Qt_KW4g ze9<>Kc9RZ@QK~!a`tA)N*By0J{HAW!9d{?)yn~r&*Dbnbx9ZO5HM;lRFRuof4D3;V z-J?mB45GrIP%4wAw+|P*i@ct$`s43Kw6n?EC1iiJ*FFD2SYzcz5gQ{ZR4*FHtb zH9VLDm3x!Z4V^DnliBp(&dJ+Z&)Yj?j@e{R`(+cbV*kjCKGwmE9U><}1fmt(I{Y?b z3v-6XW+j(brJeXzymS(eN&HLX`Zn9nPG=F`_?dGCYM;>i8?na3Z-dL#B8I_)zxsUR4^NsZW6! z7$xo}#(nu^Xkq55T=L%D}zZkX%H4PAdT z?ozp<CG3gVWFvBbzgK}cK2`tLA>HDz}ibV zSgH%Fti>)4l1Q!N-c*|w!RpmI4eTCGPyXHA`Rp?ppu2OxjJSK+efQ)`UZ2$T_2-{| zZvQiH&sP2W$+GPa&$ZmgyPfeK{HAWk zr3-Gxg=@K)kt~Nf?qc8DxYcAsY#H)*Lw34ldbAs|PHno(3NJ(U2_~C&MGmRG%&soQ zbrFu!?1*e)%P_tZvdg;V-eEUnxDlR%?u2ZyBvsVEYS_J&Wp5t}jZc&`5=`UcrRPh( z-O-T=7b9~pH(fH}8Xx6{MkX_I%w+Xu;b1_=;TY1c#&Kj?h^K{Q9FvX`FNNF^-*h7};qiVIuH)3viFy(>c;dFr^+JpIVS8KY- zVl_RO_1)=o+C5b^CTF8oNR*v5@%A~Zci8lxA*j|`9uYB_3V#p}T>R1O?yt6SKjN>( z$j*e8r)DljuQqgWr>(}*s& z%Hb(Mu}YI%o0Efdu;Jq)zie9N`8dk8K5+whN2L4|+yD8qc>~3M(*JZO4@6q5zE7KN zW2#%^os4N4cgPoW%jd_xrhV*^fsb`RjyhN5FWZ6UiqwDPrsk5>MRQ3vHJ4Q8V#*UE zc_w?S^8)Q#KBY!jN!hMFv9pfL`+v(5JH*Otlbj-COQuk7_5TJF7L(^|3&`DC#TO&6 zUGRMNAE6oRe-9=!mXXRIy^(Y!E%ka zTAn87Hu8VLQ!*{zg0V5Te5m2GMLOvIK&!}Z_rS1?Tldb$GR_}o{Z^aSD@bhMQRRVe`KhVjV+`_NC z2L{f-d?5>Mb(q7%-*G zS*AFu37R^zihcR`wnBc>v(_MPmNy7^ZSG3zrmoy?YKsHz>!q`~S zAIaJ*<=77!!L&+R&%Im1i}b}+m%9;l-e*Pcqm|}TE7fLH^1b9TOnC=n!$KW4$?}y_ z$dB7b)4Ob9S6$}9EaEU1Oudv;Xsy0UONPAMdrBkz^QB~o$u?q%w zG<^L@=oN*GTB{`qT*{42jNkKtp$0^9IQ}4=;lQJyI=E_2cWfhFGlCHvbY`INl&OD@ zVQs1bMg`WgtJt3JRU>_5Qd;VGuBXUK_C*s6XP&JA6D8#!t*l8ViRQpupiYB#=r5B# zS6mSH4XtjoJT{QGik2fPPncoUw5$YCq80%jdn$xYzPKG^Y3i0Qxo26j6m)XTkBWU| z9>ns6Zqg|{Iqr4D_PpT1PAN^wJtTi(6v<}M1SJBg7CTRr^>`hYaw8QdHtx{}Ix&0$ z09$D>10|9cGfbSRi?Qm_mNXECUGVsNIg^bP<;^zIkd@^Xd3G*Puh1Xrk+P&=wMEfo zS%cb(m1waZ=>E^(^9Kf__z`Q5qm~bsTQ3Rj-fah>Qe0lU_1fZjFp|6bM`>He6iB#aKF-~#AQieh& z@C{e`U~LqgPLhQhGs98H68~jMCr9TRN|XSBAdXaCM?{%Z8A=>-C_&P#nY^+biLAQ) z3*{jFvAYpdl5HgX87<6UqS${Hh_5cN7oT{Wvd}4IGC@4yru2&5s=zUO@z#dA2$48N zFNWSSWO^+IQ(rNycv0_U(*hyF>jt*w$W2?psg#96g_CA4db2u89al=N_#MxvB1i}r z3!}m%#Sok=Q3>Ia@Qh(AdK}|aVVC-#P*x!&vQluy_yxxygh9(XOKE?HQJ_3#F~c=B z|Mi+vHQm@sR6dxdZepzEk?S9tRbF&B|K(ZbhJo7AtN-S#lFMJtFs$QZDR2?eZOTHY zlrd*nZky7{c}=Z}O3p+iIl~#M9xU6Wd=H>-*`kX z4hQ`z^@1m*R-PIjR|S6|J{CiTi!udgOGqH>O6(Ab`7%GO+q72kvJMk)^**hqwZSay zP8rGHk*#OR?$<4afdWg(9l$0CFjqh=cyMCLN{PK^aYmuS%uZ7cLRy{+B?&o6B3h8` zZjfv+Rs0a->j?=vMk1tq1t9AzP-)uAQh;={%vbg#jEY%4VJUxonO}4LFtT2H=2m~o z*<>llhkLgv$26}x^$c3_d`}0P0v&A9G@opp#GfQaD!YSJ>dO-34uao7WKVu0{3^|= zpeRWigNz6vV|SEop=k$0nPSNYQH*ozSOjgXG{*4i8y%TuOA!`jppC}o zm~FdWwYQXo-njI#DX%rcZPG~=AJ{b=g>ySx6b>^lig)g-Y^NG+%25xtH_v3Y#b?wrnio zFl?1aIZRQp-WOfeersH|J9+Zpyp*DuO4oJI>7Bsi`T{56 zO%4Of@zDrl(`MIDX}L{VDN0$jzqYrM3Cq39HJ5+DYAm?o1f#6LsN}f|R7h+&AklQ~ z^bAUZTS@bSpa}wZb6FnS_zEY9Q50HCMilP^j{|Fs;8(y>h7{Mc_8VywdvJNv=ERYk za(*Yj<#~>?vI7t!G;1l8+HA$vHd>K>YuwWAd|9Vf!fV`WD-tTOl&?n5+^_zc_W9j! z@7{m;;jfP#Kbap-PPE#;JD(j6U*@{;*S!1u&ky^2LqOB!5QF56s`6Pa@~`pdw{pAw zELdlE;d9*b4Y1a3^X)IP)AD6DA2EN@-R~ZDUv&TI9(9kqZ@MSl)9x8RW$q5TgZXTJ zg7WxyQa)<#-b}l<-BJBwubX!N>i)g?xcPt553jq^eleXNc0bk6o>xbUUcS5T&bpuZ z`SYiR_lHx=*VZrBw%%j7TBhIq_~V1S57sg@AChULOcNi{N0Dh9$uzkwneuiQnW}uH zOz(7eyL*uAgYI*A<)TRUtF?T8*jd7ZeEGd%S3X+5O3<^jCB*#GS-+I`GOD~q((iwY ztmXU3ZGpS%2>jtcpFIBdE(HE~vO0S3e$}5WF%pdVN&oh2Hd$OQdyD~d4%pi{&s~Yx zh~BAlACs@;j&OU0+{0MxR*%KLJcA&~{NZ$YI-C5msaW;zSKEw->oETK#dr6f4UCsr zeT-{luKPwdv`)6O<28KF-t33$ZJ&Qjw{oto+@)$}dU zm$S+82=;Z!8cx@d?7e?{{@~f?Tat|*7Obvv$Ma6uKOO2?0NS>oZ0II|6|EYyi$dWUxMvT7YAp@Z)W}b3l6XRqYb_sJnQ=R2QWJN zK>kfT`FjVaI4l341;JULi^;!X~KvRLqWKl#(yeAOSmo(cMJQ+mi<0qISb{qeLg zuhqUe{hL%)R*P`yZY^AFL&O*jT*wG!}m8=)_q3t&N52 z=n7-0|3hV)xod@#d*A->@X@`2xsNP;mn@kx{I^Jk%(+`L7q4CkT=B&+#r&pCus5+T z+Rvhzz&N3KcZs5}6=j~i`0?Aj-wv`!ACZL*RTeJ)N{Wu*176{tB#9-$49Uy(Di$ei zEzygq%Q}dxQhJOU_xcV$=`+O{q3P+SWHio08JcXufo z9D)RQhXTdj-QC@xNGa}CiaUkk^61|8+_TTQzu%WHGNz6-WhJ2`Q&wXXF$0+ZB|-LJ zMph;kK7hP}D#*^*o|T1B25f9=WeQ+pVqxJxqNEga0vdy@K=$IsU?3lW8*B+sG6lc6 zIsw>!SXg+GC;?JHd!W;s(hOkY0Z;&fjnzFIfUE!-Q9!^#kmf$}z*cloBMEc_`$^?)#Hnjn{IontPjP1<;vP=q007a17o6rhC1F{F0 z04f{DfI3hcprIzAss@l!Rnkyaqh)%33#{hi-~e*^A1-2Q>KalE0C5pTbqN4a zlK~*5p{D-lRUK&m#@~Vgps4<)|C8s<@Q=HKgt~~jj^x1_?Vg9+}xNfT%5s7ASVkZ2iw2+sask(1KdDPHh{N( zcPF4N@UOzS*qgnT6Ko0mJHVf&0OYMqf%eY8KTeXMzm;}xrF?UGlY{@4*jpjMe`4DH zZ4Ph-0{_Kk!UjJ8aZe?#~{-^S0E)L9p8unI> zEA^^f?i3_e~CAP0cCv8^-E$I2Y| z_J-u;Z0rgIfSp``K3@M+{3k+UprDh;|TMvL4&>V?b5d?mJ8wi^JKYR9Hxg=d|Z555}fHePI(*L$IwzIPJ_)p9K zGSLG5AxonOa_CR8J8wfT|PJkEd+iaTw-T#^x05g+42>j*(aBu

    F3HlfQb7291KzE=i(((ex^kcAfN^@wLuSCIAIV>eF(@7<+ptfur%yRlv zClS7Q?lw74s4$?_KZB|eBrnZp;F}a+U#v|TjAQ$<(Uw^C{n|`L_@}Y2f-e!8gvfY~ zCX+^BhQgA6c{e$K?V)T=zD^0pOh$WLI|)Ez{78(qv*$jVZSoc4S2DSNdHY%(tXt6> zYYVoMEvEYtI$;;l(o`2D`1Kw;Cd#;9WSMT(C_fZ;To%ruuLo-fGO9@EDUxOQ@t-5V#}L+3IQ6m%A8Bqnt?K+DLg!l>@(N?}?Da@iIPINkhhySJ z99cXHh96pg2B;h*yH>voh_DwB4*4!6@~JOCts>UubHQkhw}L5m$CR7K!qxSj0t11j2(!jRi!FnVkb5B{R_%=ecX=X5*8~ zDul2Y%L*EGYVVY{0|>2y620bwQQ)vY)ju+8`DbH)BBy>75oJ%^N#RHypRFossz#KF z3WH95c)Tavs%o_|fM7TOt-SmD6}Ufzo;fkrIvPmNAUP2D9`5+}Gjt!({z(5u@hmGA z-1OBZYmZ#nw1jxnH~n2QHz#?1Pa??KRO$A|Ipq}QMD$E}FJYT6?DgQPoXPHs0J=Px z*;zk-sD6J4fQ9IefN07^ij;=9U{YJM53`{D%dIcb{ww>lUu!Ei5Z0%kHe$B&ny~&k z_ocmjqd(UfF20URwZ9|BKG}$f&^=>I#4u$1Gmw9^f`S5lsS4LsT*iADc`BLF#E{B! z`!4#o0)@F98b)3QGHx~z7M%M+d9u)2m0E0nw4RjB*CNX%>pV}#7_1RuhbtYad#W$L zm$Ios-pP%2($)2ZBF+{oycg@J3wz>j+%!VQp!%If1>)7Z>fz>)o|dQRKzd!Kcm38) zg5K~1?V@@LhS5g|BX;N=WRyjxf*|Qe?n2EH>P0eK>AavV)c?SW#gpFy*P{pigyDyO zbeK(1voG`ReBhCdAbD#nE+clmqZ2+NCAYDvFbcJzHrXb3zG6sfXT_<^CDE|MEWj5r zZOD=nljS+3D&Qqa$^*3>tFgN+WZ-#Xy z&Emw;oVncZE}MtX{)^xIeqePPN7Ji+{Rpkn9l+^C>(iGD68dr=T}7+sw>dNhkG&&n zG^VWXtwaqpSLGHd5i5J~5la|W^?;PyaP2398xymhBG)LfOb?XPl(Wi`RtaP1gq&Po zIFVF!iR)<-7tO`Ci%BRj_?%A))FFwg#3)sG5kfTm_-+MGj7&%KkgnwCLUNmbk8L!e zZ;pKZWO!hBb`;HHz_(I{$V=_ylDZ(tZ=}Bdrz~?b*qk6{iPh>hO*r&}&agytGo48U z!Bg8x^Vf%WcuCHLR-tIT{Fxn-aTuj>%p;KdDuhC^?a>@O}6WTXJkAUXFZO_q*)0eEXnEl_uKAevs z8}f3hXqz}SPq}L5{wjO0hnAGiQ8LNn?66DviCS#OZM{$}IhHz5Gy543ZAa?TMhoGG z-+p~cbQ-~SsgG|_I?B+sN;{}p9_z0j4f=9d*2 zRpY~^!6+Gvoi>joX-cT>pgkgqLk^xwr{Bq^IhKi1|jGRd5<3RM#uBHd)TskxEL z8D#|Nnk2Z>r*7IAV*;Q>>yb&)Skk)&$?CY4ElGM~d$8r@h>vJMhbT-z)_w4u;e71M zE=Df{M?X3#<4S!{cB@x^SXPuU&W_Moxs3zZao&H<<7vu1Y4L9Aj!FmP^JLnr&u|AU zWFN_yLvMxqPI1?@^AKabOGSLp4;H$re)W4Fb8&KJVGUjnI5-HN?nTGpdu@N+@R@wS z@Ovv;B+_z_y0*%*dgy1eiX_IXptdNp+smfnBe2W-H;J~1&nGH>@)>%U7f5BoFCPAm zW6YWcS((@gzskyDVZt^Tc`CeW=MT$7gf@O=uM8M!7MRIXTL=knF;22@*V-+*@OlSJ zx~FEw0xV7f9!{LPx9Y1zzsx>*PaMQ_4C~4O0D^DZ2Bz_1K-YXF7f+wC#o2b=2_Kize zA;p8rF)v#|ae;s}7M1CewqsrF5)-x`SO zlD3||U{+!qB;**_wNf}szYlo&t$T##-TmRaUA(tWk-raBVq^2R45sGlTnbGEGmZuf zlj?j=#o@?U?l-3ysw{9}#rXQq_0*$!1@><=^~D@aelvnZFW6yAR1p{%t(s1AjQoyG zdlFxn;xDv+jtxUH&OWS^X=5`TtI&AZOO7L5H*u$WGtH|u_yiZ@l0U<79nm~(K0z?C z`ys$qoTw_0Y@VNN+PtUnD+~$vuGI2j`@`oZeMGlSu|qt#s=TI_krskJ6kQ@c0rhI` z)tSuJ9O*IcL}A+|Kfs>*rn&tOH8Y|G#??#}JaS)u@w*8*M8J|Bfgce3G zws#9i>O%(<{c2x1n zGnLdSkq6lPaA!k>Y}~{)up7ep8a2jUvQZSfd;D&egX1cqujIp%G0*qwudp3tEBD8j zm{%xNO)2{kt_QTK_~hBwz1sD;0Q^(vQiXPZ>)LR61A-*tHN%cbZ~X0&CSAus2l#nK zBY|)-{0C4UbVV%RX>8uD40l_EQUKBL;#A_{QE|laKz4z|w>$pInI#8&Bg}fXBwN9C z*lzHI)?QUYajAOx#u4&(EuGU*h&q_+F?uXya;eYbUop&Ve637?h>4DpZK#u*Vp+h#ELKwV0FYlgvL5&!yL}e#?nOUpBe< zATp(18<{>$*fSpx0F^zKx~crVRa=D%DuF`m#ad}ooMh#>MZZg9GCrx=^&%lAa->LZ z8M#XmK0orE%-E`-)Lj2d0y8cp=?wCJ86l3-VqW0I##vMHwO&-kU}vmw&~?wdF!mAE z)X$RSqnim`dUc`KC?xsT$~lf!_RrSEh6n54EtAca6^^+=KB8F8j2L~?*7Ff| z5kkayS13C?ygt)MBfPH!lq535uJM_HiLz%TLK-HQe+qfX>LoZ_x0KYx@oY|i*@6AA z@ob_U6SES*6kbnZi*c$svLj!ob6hB{u#VV}>=J|vqa=?(P=;z`LC2BJB$fE1wG=AQ zzJ|)FqKpD2C#_ZZin}`!W9aOqSuL`M$(q<7zVt%HWpE_KRHn3E1d?-(WHyt;`?6Vu z^TM}AeObJ`#ml(1nC0svLh0?GJS8tSlr$m#>WI^Ekq zz8$VL*-2*nk65FAJHzUuKgi+q3QbaOr$wg@mOM4Sz19gKtYHBSoJ0s@DS2W}OC#*p zgTFm3ZrkmfSxKdtb`(as!+VV9$bcME7&om$6Xiah=~%I@`+V9>jOR*tM{?Vzj(EHl zIbt7`|F_pe_sA3F;GgxaTNMR5W4v4sa|TP;;=+jL@oOxu`u9;12)euh7a zpT5zR7qT{hG!T8IvJZ&TFp!%=`mteBY0aSAP)Dd39M5{PPeET^GT5BZ5?&78jcFH_ zsFpP}4}1&|4!z@J&UfrCg@}Ml(BUC1Z2n3l@H#h_9GTCcxjAexVpL!TL4)zK^;7Nc`cH`kSFM6|Iq(GYKl3+c(^)<;TTP&F332W_XGY997`< z5g4im?_?2^AkSWx2!m)}?%;V)#n$)dnbH?LBVw&vRqscfD=pJutah)SSULjCT=RLad#CF(f$ww&28y~$ZpfG=^Qmp@uU{2U^pIxpSL z;Wc#Bk5f=!he!y`vGbE26C!ktohj<@FEyseVq%nkeRAq~439pD+w3#w?*chx5O-Xs zE}tl|?p0+&&R=-s5=%?2u)p>0xD7#+Y*Zx+Q9UP+kx#(94Cq39xFd__k%+Hycx~AK z;KCi1Xvo@co>Fp(lc5^#nx-26X*5Rh=957zwA%SV$$UFW-EYFpkbKF!T3X^Gr{V}d z&E!6R>e)V`3(Ol@>H?6VGjd@%n^8L&qCy<*-SV&`_?-lf^I9PXWy@DzVu}I9Y_TfM zb{oAo{k(EsvMvf}?~*cme)C7`gl{m!=^Rf!%1K)uFd@m#N{BF@4w?l$)IQTbErT$aBbWlxI@EM9#xbq&xyaM)tY_H*T}P*VC(Q| zlHXp_nM!vvW*LC^O)YK{+8RrMul}TezxRC#F|%GTfa~)Y1Ro#=e@SfnMa(6iu8p0= z%=j(B=_--Ik$M>w^tn`cR0zrG5y!=%i%RSHBE7U>5^|*cyHAuW0_3*(531ex7nA58 z=`?^v@*!NFE(AZtMltRD*($ggfg^s{vJ!T>Znc9vWEWD$!(Wmz@kE*dPz&CFDLjYO zJQW>WkvBRXKjoD%qhDlhbxDu>YI(X?j$K7i;mkA0Vk0yZHhy@IZxyuU<@TnkikEbA zm1GzFToiIYtUOKT9^$P|i}wHV6w{ky)yV&y*y^`|W;YKCXQYQb(;iMh50N8m`IRtH zd3#xx4V@~+tH{I4id+x6l4ENSG2a9DknJ^5RD+2wMM zg{bMFx$g%Rpnk$b@eSH{M);i-$*rs~TWk>H`T?@ZBc@ezKK>zP>GP0@=EMokOVRp| z^(rE*uiBONQJ5Re-vDjcsAz{O+aiS2Z~|JraO1PEVFa=^h%>qp{h=&>f|gk#JqElp zd>ma`p%3xj`eAIgE4av2D#4`2NdlWNI^1)falHU4N4Cnej`1w1 zVST;uPH`Il{M4Wmdu#B2W0(XSyfxm}$|qY#Ve|Vv#@@Rj{}(snAM0kRy>-U7BQ;`P zpXYvEYB&ZMNPV-`W13z|bCk@dwyX>sX$x=lY=UYMZk_ezubaQ_yxIzUKXZ0cPq6<| zJ5hUD?n8ab^ioHse8E^`vw9dY#bPS|_Wp-?F&{5RE4RVVS*n@^ zP0FrhU~!1^pK!LQn=(RSsv;vx4DXK%R!Lwe#F~MJIBCRx3FL?k*Waue?~cVpF=D>M z?a3l5%~VQ=y~?v+-mizK%cq;QZwK

      ?1bCm-s$e5_IyKeW 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 - (which we can get from the data) + * But to start, we need $H^0$ and $L^0$ (which we can get from the data) * We also need values for $a$, $b$, $d$, $c$ -!eblock -!split -===== Adapt the model to the Hudson Bay case ===== - -!bblock * As always, models tend to be general - as here, applicable to ``all'' predator-pray systems * The critical issue is whether the *interaction* between hares and lynx is sufficiently well modeled by $\hbox{const}HL$ * The parameters $a$, $b$, $d$, and $c$ must be estimated from data - * Measure time in years - * $t_0=1900$, $t_m=1920$ -!eblock - -!split -===== The program ===== !bblock @@@CODE src/Hudson_Bay.py !eblock -!split -===== The plot ===== - FIGURE: [fig/Hudson_Bay_sim, width=700 frac=0.9] -If we perform a least-square fitting, we can find optimal values for the parameters $a$, $b$, $d$, $c$. The optimal parameters are $a=0.4807$, $b=0.02482$, $d=0.9272$ and $c=0.02756$. These parameters result in a slightly modified initial conditions, namely $H(0) = 34.91$ and $L(0)=3.857$. With these parameters we are now ready to solve the equations and plot these data together with the experimental values. +We will later perform a least-square fitting. Then we can find optimal +values for the parameters $a$, $b$, $d$, $c$. In our calculations here +we set $a=0.4807$, $b=0.02482$, $d=0.9272$ and $c=0.02756$. These +parameters result in a slightly modified initial conditions, namely +$H(0) = 34.91$ and $L(0)=3.857$. -!split -===== Linear regression in Python ===== -!bblock +The following Python demonstrates how we can use linear regression to fit for example the population of lynx. +Similarly, we have also used a decision tree algorithm to fit the lynx population data. As expected, the linear regression is not exactly impressive !bc pycod import numpy as np import matplotlib.pyplot as plt @@ -752,13 +788,10 @@ plt.plot(line, regline.predict(line), label= "Linear Regression") plt.plot(x, y, label= "Linear Regression") plt.show() !ec -!eblock -!split -===== Linear Least squares in R ===== -!bblock +The similar code for linear regression in _R_ reads !bc r HudsonBay = read.csv("src/Hudson_Bay.csv",header=T) fix(HudsonBay) @@ -780,110 +813,8 @@ plot(linearMod) confint(linearMod) predict(linearMod,data.frame(Year=c(1910,1914,1920)),interval="confidence") !ec -!eblock - - - -!split -===== Example: ecoli lab experiment ===== - - -!bnotice Typical pattern: -The population grows faster and faster. "Why? Is there an underlying (general) mechanism":"http://www.zo.utexas.edu/courses/Thoc/PopGrowth.html"? -!enotice -!bblock - o Cells divide after $T$ seconds on average (one generation) - o $2N$ celles divide into twice as many new cells $\Delta N$ in a time - interval $\Delta t$ as $N$ cells would: $\Delta N \propto N$ - o $N$ cells result in twice as many new individuals $\Delta N$ in - time $2\Delta t$ as in time $\Delta t$: $\Delta N \propto\Delta t$ - o Same proportionality wrt death (repeat reasoning) - o Proposed model: $\Delta N = b\Delta t N - d\Delta tN$ for some unknown - constants $b$ (births) and $d$ (deaths) - o Describe evolution in discrete time: $t_n=n\Delta t$ - o Program-friendly notation: $N$ at $t_n$ is $N^n$ - o Math model: $N^{n+1} = N^n + r\Delta t\, N$ (with $\ r=b-d$) - o Program model: `N[n+1] = N[n] + r*dt*N[n]` -!eblock - -!split -===== The program ===== - -!bblock -Let us solve the difference equation in as simple way as possible, -just to train some programming: $r=1.5$, $N^0=1$, $\Delta t=0.5$ - -@@@CODE ../../Programs/LifeScience/diffeq.py -!eblock - -% if FORMAT != 'ipynb': -!split -===== The output ===== - -!bc -N[1]=1.2 -N[2]=1.6 -N[3]=2.0 -N[4]=2.4 -N[5]=3.1 -N[6]=3.8 -N[7]=4.8 -N[8]=6.0 -N[9]=7.5 -N[10]=9.3 -N[11]=11.6 -N[12]=14.6 -N[13]=18.2 -N[14]=22.7 -N[15]=28.4 -N[16]=35.5 -N[17]=44.4 -N[18]=55.5 -N[19]=69.4 -N[20]=86.7 -!ec -% endif - -!split -===== Parameter estimation ===== - -!bblock - * We do not know $r$ - * How can we estimate $r$ from data? - -We can use the difference equation with the experimental data - -!bt -\[ N^{n+1} = N^n + r\Delta t N^n\] -!et -Say $N^{n+1}$ and $N^n$ are known from data, solve wrt $r$: - -!bt -\[ r = \frac{N^{n+1}-N^n}{N^n\Delta t} \] -!et - -Use experimental data in the fraction, say $t_1=600$, $t_2=1200$, -$N^1=140$, $N^2=250$: $r=0.0013$. -!eblock - - -!split -===== A program relevant for the biological problem ===== - -# exact r = 0.000694 - -!bblock -@@@CODE ../../Programs/LifeScience/ecoli.py - -Change `r` in the program and play around to make a better fit! -!eblock - - - - -!split -===== Simulating financial transactions ===== +=== Simulating financial transactions === The aim here is to simulate financial transactions among financial agents using Monte Carlo methods. The final goal is to extract a distribution of income as function @@ -949,10 +880,6 @@ exponentially decreases with $m'$. We assume that we have $N=500$ agents. In each simulation, we need a sufficiently large number of transactions, say $10^7$. Our aim is find the final equilibrium distribution $w_m$. In order to do that we would need several runs of the above simulations, at least $10^3-10^4$ runs (experiments). - - - -=== Simulation of Transactions === Our task is to first set up an algorithm which simulates the above transactions with an initial amount $m_0$. The challenge here is to figure out a Monte Carlo simulation based on the @@ -1045,39 +972,11 @@ We can then change our model to allow for a saving criterion, meaning that the a !et showing how money is conserved during a transaction. Select values of $\lambda =0.25,0.5$ and $\lambda=0.9$ and try to extract the corresponding - equilibrium distributions and compare these with the Gibbs distribution. Comment your results. -Extract a parametrization of the above curves, see for example "Patriarca and collaborators":"http://www.sciencedirect.com/science/article/pii/S0378437104004327" and see if you can parametrize the high-end tails of the distributions in terms of power laws. Comment your results. + equilibrium distributions and compare these with the Gibbs distribution. We will use this model to +extract a parametrization of the above curves, see for example "Patriarca and collaborators":"http://www.sciencedirect.com/science/article/pii/S0378437104004327". -In the studies above the agents were selected randomly, irrespective of whether we allowed for -saving or not during a transaction. What is often observed is that various agents tend to make preferences for for whom to interact with. We will now study the evolution of the distribution of wealth $w_m$ by assuming that there is a likelihood -!bt -\[ -p_{ij} \propto \vert m_i-m_j\vert^{-\alpha}, -\] -!et -for an interaction between agents $i$ and $j$ with respective wealths $m_i$ and $m_j$. The parameter $\alpha > 0$. For $\alpha=0$ we recover our model from part 5a). -Perform the same analysis as previously with $N=500$ as well as with $N=1000$ agents and study the distribution of wealth for $\alpha =0.5$, $\alpha =1.0$, $\alpha =1.5$ and $\alpha =2.0$. -You should try to reproduce Figure 1 of "Goswami and Sen":"http://www.sciencedirect.com/science/article/pii/S0378437114006967". -Extract the tail of the distribution and see if it follows a Pareto distribution -!bt -\[ -w_m\propto m^{-1-\alpha}. -\] -!et -What happens if $\alpha \gg 1$? -Perform the analysis with and without a saving $\lambda$ on each transaction and comment your results. -We add to the previous probability the possibility that two agents who interact have performed similar transactions earlier. That is, in addition to being financially close, we assume that the likelihood for interacting increases if two agents have interacted earlier. -We add this feature by modifying the previous likelihood to -!bt -\[ -p_{ij} \propto \vert m_i-m_j\vert^{-\alpha}\left(c_{ij}+1\right)^{\gamma}, -\] -!et -where $c_{ij}$ represents the number of previous interactions that have taken place between $i$ and $j$. The factor $1$ is added in order to ensure that if they have not interacted earlier they can still interact. Perform similar studies as above with $N=1000$, $\alpha=1.0$ and $\alpha=2.0$ using $\gamma = 0.0, 1.0, 2.0, 3.0$ and $4.0$. Plot the wealth distributions for these cases and try to extract eventual power law tails with and without a saving $\lambda$ in each transaction. Comment your results and compare them with figures 5 and 6 of "Goswami and Sen":"http://www.sciencedirect.com/science/article/pii/S0378437114006967". - -!split -===== Particle in one dimension an velocity distribution ===== +=== Particle in one dimension and velocity distribution === !bc pycod # Program to test the Metropolis algorithm with one particle at given temp in one dimension import numpy as np @@ -1124,3 +1023,6 @@ plt.grid(True) plt.show() !ec + + + diff --git a/doc/src/How2ReadData/make.sh b/doc/src/How2ReadData/make.sh index d73ef27fc..f23265bd7 100755 --- a/doc/src/How2ReadData/make.sh +++ b/doc/src/How2ReadData/make.sh @@ -49,29 +49,7 @@ system doconce format html $name --html_style=bootstrap --pygments_html_style=de # IPython notebook system doconce format ipynb $name $opt -# LaTeX Beamer slides -beamertheme=red_plain -system doconce format pdflatex $name --latex_title_layout=beamer --latex_table_format=footnotesize $opt -system doconce ptex2tex $name envir=minted -# Add special packages -doconce subst "% Add user's preamble" "\g<1>\n\\usepackage{simplewick}" $name.tex -system doconce slides_beamer $name --beamer_slide_theme=$beamertheme -system pdflatex -shell-escape ${name} -system pdflatex -shell-escape ${name} -cp $name.pdf ${name}-beamer.pdf -cp $name.tex ${name}-beamer.tex -# Handouts -system doconce format pdflatex $name --latex_title_layout=beamer --latex_table_format=footnotesize $opt -system doconce ptex2tex $name envir=minted -# Add special packages -doconce subst "% Add user's preamble" "\g<1>\n\\usepackage{simplewick}" $name.tex -system doconce slides_beamer $name --beamer_slide_theme=red_shadow --handout -system pdflatex -shell-escape $name -pdflatex -shell-escape $name -pdflatex -shell-escape $name -pdfnup --nup 2x3 --frame true --delta "1cm 1cm" --scale 0.9 --outfile ${name}-beamer-handouts2x3.pdf ${name}.pdf -rm -f ${name}.pdf # Ordinary plain LaTeX document rm -f *.aux # important after beamer