From 9c5660f70e3b6ed9c7c9701e575009e4d6478668 Mon Sep 17 00:00:00 2001
From: Cindy Xu <88256581+CIIINDYXUU@users.noreply.github.com>
Date: Mon, 6 Nov 2023 00:17:07 -0500
Subject: [PATCH 01/22] Update README.md
---
README.md | 107 ++++++------------------------------------------------
1 file changed, 12 insertions(+), 95 deletions(-)
diff --git a/README.md b/README.md
index 3f5b1e71..03ab6315 100644
--- a/README.md
+++ b/README.md
@@ -1,117 +1,34 @@
-# Final Project!
-
-This is it! The culmination of your procedural graphics experience this semester. For your final project, we'd like to give you the time and space to explore a topic of your choosing. You may choose any topic you please, so long as you vet the topic and scope with an instructor or TA. We've provided some suggestions below. The scope of your project should be roughly 1.5 homework assignments). To help structure your time, we're breaking down the project into 4 milestones:
-
-## Project planning: Design Doc (due 11/8)
-Before submitting your first milestone, _you must get your project idea and scope approved by Rachel, Adam or a TA._
+# CIS 5660 Final Project: Procedural Terrarium Generator
### Design Doc
-Start off by forking this repository. In your README, write a design doc to outline your project goals and implementation plan. It must include the following sections:
#### Introduction
-- What motivates your project?
+
+
#### Goal
-- What do you intend to achieve with this project?
+The goal of the project is to create a procedural modeling tool in Houdini for generating real-life succulents (and potentially other greenery like cacti and ferns if time permits!) The final result will be renders of terrariums, populated with different variations of succulents generated with the tool.
#### Inspiration/reference:
-- You must have some form of reference material for your final project. Your reference may be a research paper, a blog post, some artwork, a video, another class at Penn, etc.
-- Include in your design doc links to and images of your reference material.
+
#### Specification:
-- Outline the main features of your project.
+
#### Techniques:
-- What are the main technical/algorithmic tools you’ll be using? Give an overview, citing specific papers/articles.
+
#### Design:
-- How will your program fit together? Make a simple free-body diagram illustrating the pieces.
+
#### Timeline:
-- Create a week-by-week set of milestones for each person in your group. Make sure you explicitly outline what each group member's duties will be.
+Milestone 1 (11/8 - 11/15): Implement a working, initial Houdini tool that can generate basic succulent geometry. The tool will
-Submit your Design doc as usual via pull request against this repository.
## Milestone 1: Implementation part 1 (due 11/15)
-Begin implementing your engine! Don't worry too much about polish or parameter tuning -- this week is about getting together the bulk of your generator implemented. By the end of the week, even if your visuals are crude, the majority of your generator's functionality should be done.
-
-Put all your code in your forked repository.
+TBD
-Submission: Add a new section to your README titled: Milestone #1, which should include
-- written description of progress on your project goals. If you haven't hit all your goals, what's giving you trouble?
-- Examples of your generators output so far
-We'll check your repository for updates. No need to create a new pull request.
## Milestone 3: Implementation part 2 (due 11/27)
-We're over halfway there! This week should be about fixing bugs and extending the core of your generator. Make sure by the end of this week _your generator works and is feature complete._ Any core engine features that don't make it in this week should be cut! Don't worry if you haven't managed to exactly hit your goals. We're more interested in seeing proof of your development effort than knowing your planned everything perfectly.
-
-Put all your code in your forked repository.
-
-Submission: Add a new section to your README titled: Milestone #3, which should include
-- written description of progress on your project goals. If you haven't hit all your goals, what did you have to cut and why?
-- Detailed output from your generator, images, video, etc.
-We'll check your repository for updates. No need to create a new pull request.
-
-Come to class on the due date with a WORKING COPY of your project. We'll be spending time in class critiquing and reviewing your work so far.
+TBD
## Final submission (due 12/5)
-Time to polish! Spen this last week of your project using your generator to produce beautiful output. Add textures, tune parameters, play with colors, play with camera animation. Take the feedback from class critques and use it to take your project to the next level.
-
-Submission:
-- Push all your code / files to your repository
-- Come to class ready to present your finished project
-- Update your README with two sections
- - final results with images and a live demo if possible
- - post mortem: how did your project go overall? Did you accomplish your goals? Did you have to pivot?
-
-## Topic Suggestions
-
-### Create a generator in Houdini
-
-### A CLASSIC 4K DEMO
-- In the spirit of the demo scene, create an animation that fits into a 4k executable that runs in real-time. Feel free to take inspiration from the many existing demos. Focus on efficiency and elegance in your implementation.
-- Example:
- - [cdak by Quite & orange](https://www.youtube.com/watch?v=RCh3Q08HMfs&list=PLA5E2FF8E143DA58C)
-
-### A RE-IMPLEMENTATION
-- Take an academic paper or other pre-existing project and implement it, or a portion of it.
-- Examples:
- - [2D Wavefunction Collapse Pokémon Town](https://gurtd.github.io/566-final-project/)
- - [3D Wavefunction Collapse Dungeon Generator](https://github.com/whaoran0718/3dDungeonGeneration)
- - [Reaction Diffusion](https://github.com/charlesliwang/Reaction-Diffusion)
- - [WebGL Erosion](https://github.com/LanLou123/Webgl-Erosion)
- - [Particle Waterfall](https://github.com/chloele33/particle-waterfall)
- - [Voxelized Bread](https://github.com/ChiantiYZY/566-final)
-
-### A FORGERY
-Taking inspiration from a particular natural phenomenon or distinctive set of visuals, implement a detailed, procedural recreation of that aesthetic. This includes modeling, texturing and object placement within your scene. Does not need to be real-time. Focus on detail and visual accuracy in your implementation.
-- Examples:
- - [The Shrines](https://github.com/byumjin/The-Shrines)
- - [Watercolor Shader](https://github.com/gracelgilbert/watercolor-stylization)
- - [Sunset Beach](https://github.com/HanmingZhang/homework-final)
- - [Sky Whales](https://github.com/WanruZhao/CIS566FinalProject)
- - [Snail](https://www.shadertoy.com/view/ld3Gz2)
- - [Journey](https://www.shadertoy.com/view/ldlcRf)
- - [Big Hero 6 Wormhole](https://2.bp.blogspot.com/-R-6AN2cWjwg/VTyIzIQSQfI/AAAAAAAABLA/GC0yzzz4wHw/s1600/big-hero-6-disneyscreencaps.com-10092.jpg)
-
-### A GAME LEVEL
-- Like generations of game makers before us, create a game which generates an navigable environment (eg. a roguelike dungeon, platforms) and some sort of goal or conflict (eg. enemy agents to avoid or items to collect). Aim to create an experience that will challenge players and vary noticeably in different playthroughs, whether that means procedural dungeon generation, careful resource management or an interesting AI model. Focus on designing a system that is capable of generating complex challenges and goals.
-- Examples:
- - [Rhythm-based Mario Platformer](https://github.com/sgalban/platformer-gen-2D)
- - [Pokémon Ice Puzzle Generator](https://github.com/jwang5675/Ice-Puzzle-Generator)
- - [Abstract Exploratory Game](https://github.com/MauKMu/procedural-final-project)
- - [Tiny Wings](https://github.com/irovira/TinyWings)
- - Spore
- - Dwarf Fortress
- - Minecraft
- - Rogue
-
-### AN ANIMATED ENVIRONMENT / MUSIC VISUALIZER
-- Create an environment full of interactive procedural animation. The goal of this project is to create an environment that feels responsive and alive. Whether or not animations are musically-driven, sound should be an important component. Focus on user interactions, motion design and experimental interfaces.
-- Examples:
- - [The Darkside](https://github.com/morganherrmann/thedarkside)
- - [Music Visualizer](https://yuruwang.github.io/MusicVisualizer/)
- - [Abstract Mesh Animation](https://github.com/mgriley/cis566_finalproj)
- - [Panoramical](https://www.youtube.com/watch?v=gBTTMNFXHTk)
- - [Bound](https://www.youtube.com/watch?v=aE37l6RvF-c)
-
-### YOUR OWN PROPOSAL
-- You are of course welcome to propose your own topic . Regardless of what you choose, you and your team must research your topic and relevant techniques and come up with a detailed plan of execution. You will meet with some subset of the procedural staff before starting implementation for approval.
+TBD
From a0eb3aef0d50806b9062e1455adde785eab9dcf1 Mon Sep 17 00:00:00 2001
From: Cindy Xu <88256581+CIIINDYXUU@users.noreply.github.com>
Date: Mon, 6 Nov 2023 00:24:51 -0500
Subject: [PATCH 02/22] Update README.md
---
README.md | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/README.md b/README.md
index 03ab6315..4c915a14 100644
--- a/README.md
+++ b/README.md
@@ -1,27 +1,27 @@
# CIS 5660 Final Project: Procedural Terrarium Generator
-### Design Doc
+## Design Doc
-#### Introduction
+### Introduction
-#### Goal
+### Goal
The goal of the project is to create a procedural modeling tool in Houdini for generating real-life succulents (and potentially other greenery like cacti and ferns if time permits!) The final result will be renders of terrariums, populated with different variations of succulents generated with the tool.
-#### Inspiration/reference:
+### Inspiration and Reference Images:
-#### Specification:
+### Specification:
-#### Techniques:
+### Techniques:
-#### Design:
+### Design:
-#### Timeline:
+### Timeline:
Milestone 1 (11/8 - 11/15): Implement a working, initial Houdini tool that can generate basic succulent geometry. The tool will
## Milestone 1: Implementation part 1 (due 11/15)
From cd705a676968c947cd747d4dd421fd8d312eb10c Mon Sep 17 00:00:00 2001
From: Cindy Xu <88256581+CIIINDYXUU@users.noreply.github.com>
Date: Mon, 6 Nov 2023 16:45:35 -0500
Subject: [PATCH 03/22] Update README.md
---
README.md | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 4c915a14..48532742 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,24 @@
# CIS 5660 Final Project: Procedural Terrarium Generator
+As the final project for my Procedural Computer Graphics course at Penn, I will be developing a SideFX Houdini Generator Tool that allows users to create variations of succulents using procedural modeling.
+
## Design Doc
### Introduction
-
+Throughout the semester as we have created different projects using Houdini, I've come to love the
### Goal
-The goal of the project is to create a procedural modeling tool in Houdini for generating real-life succulents (and potentially other greenery like cacti and ferns if time permits!) The final result will be renders of terrariums, populated with different variations of succulents generated with the tool.
+The goal of the project is to create a procedural modeling tool in Houdini for generating real-life succulents (and potentially other greenery like cacti and ferns if time permits!) The final result will be renders of terrariums, populated with different variations of succulents generated with the tool. Through this project, I hope to continue developing my procedural modeling skills in Houdini and gain hands-on experience with developing user-friendly tools for 3D artists.
### Inspiration and Reference Images:
+
### Specification:
+The main features of this project include:
+-
### Techniques:
@@ -22,7 +27,10 @@ The goal of the project is to create a procedural modeling tool in Houdini for g
### Timeline:
-Milestone 1 (11/8 - 11/15): Implement a working, initial Houdini tool that can generate basic succulent geometry. The tool will
+
+#### Milestone 1 (11/8 - 11/15):
+- Implement a working, initial Houdini tool that can generate basic succulent geometry.
+ -
## Milestone 1: Implementation part 1 (due 11/15)
TBD
From 33ef02a44b5f9823cb6647fb4364dd70a55b3e8c Mon Sep 17 00:00:00 2001
From: Cindy Xu <88256581+CIIINDYXUU@users.noreply.github.com>
Date: Mon, 6 Nov 2023 17:57:50 -0500
Subject: [PATCH 04/22] Update README.md
---
README.md | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 48532742..19ae7cf8 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,9 @@ As the final project for my Procedural Computer Graphics course at Penn, I will
### Introduction
-Throughout the semester as we have created different projects using Houdini, I've come to love the
+The motivation behind this project is to utilize the power of proceduralism to replicate naturally occurring phenomena from real-life flora! I was especially drawn to the concept of **phyllotaxis**, the phenomenon of how leaves or petals are arranged around a stem. Phyllotactic patterns (Fibonacci sequences, Golden Ratio, etc.) can be observed in a variety of plant species, such as succulents, which result in beautiful and fascinating geometric patterns.
+
+Succulents come in various shapes, sizes, colors, and arrangements, making them an interesting subject for procedural modeling.
### Goal
The goal of the project is to create a procedural modeling tool in Houdini for generating real-life succulents (and potentially other greenery like cacti and ferns if time permits!) The final result will be renders of terrariums, populated with different variations of succulents generated with the tool. Through this project, I hope to continue developing my procedural modeling skills in Houdini and gain hands-on experience with developing user-friendly tools for 3D artists.
@@ -18,7 +20,7 @@ The goal of the project is to create a procedural modeling tool in Houdini for g
### Specification:
The main features of this project include:
--
+- ex
### Techniques:
From d2699296eccd5231617238a7a9774cbebaf70db9 Mon Sep 17 00:00:00 2001
From: Cindy Xu <88256581+CIIINDYXUU@users.noreply.github.com>
Date: Mon, 6 Nov 2023 18:18:10 -0500
Subject: [PATCH 05/22] Update README.md
---
README.md | 25 +++++++++++++++++++------
1 file changed, 19 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 19ae7cf8..a625565f 100644
--- a/README.md
+++ b/README.md
@@ -6,13 +6,16 @@ As the final project for my Procedural Computer Graphics course at Penn, I will
### Introduction
-The motivation behind this project is to utilize the power of proceduralism to replicate naturally occurring phenomena from real-life flora! I was especially drawn to the concept of **phyllotaxis**, the phenomenon of how leaves or petals are arranged around a stem. Phyllotactic patterns (Fibonacci sequences, Golden Ratio, etc.) can be observed in a variety of plant species, such as succulents, which result in beautiful and fascinating geometric patterns.
+The motivation behind this project is to utilize the power of proceduralism to replicate naturally occurring phenomena from real-life flora! I was especially drawn to the concept of ___phyllotaxis___, the phenomenon of how leaves or petals are arranged around a stem. Phyllotactic patterns (Fibonacci sequences, Golden Ratio, etc.) can be observed in a variety of plant species, such as succulents, which result in beautiful and fascinating geometric patterns.
-Succulents come in various shapes, sizes, colors, and arrangements, making them an interesting subject for procedural modeling.
+Succulents come in various shapes, sizes, colors, and arrangements, making them an interesting subject for procedural modeling. While there are endless types of succulents, for this project I will focus on the ___echeveria___, a type of succulent known for its "aesthetic" rosette shape.
### Goal
-The goal of the project is to create a procedural modeling tool in Houdini for generating real-life succulents (and potentially other greenery like cacti and ferns if time permits!) The final result will be renders of terrariums, populated with different variations of succulents generated with the tool. Through this project, I hope to continue developing my procedural modeling skills in Houdini and gain hands-on experience with developing user-friendly tools for 3D artists.
-
+Through this project, I hope to accomplish the following:
+1. Develop a procedural modeling tool that generates different variations of succulents, enabling users the creative freedom to create a wide range of succulent species and designs.
+2. Continue developing my procedural modeling skills in Houdini, gaining hands-on experience with creating a user-friendly and intuitive tool for 3D artists
+3. Create beautiful and realistic final renders of terrariums, populated with succulents (and potentially other greenery like cacti) generated with my Houdini tool.
+
### Inspiration and Reference Images:
@@ -30,9 +33,19 @@ The main features of this project include:
### Timeline:
-#### Milestone 1 (11/8 - 11/15):
+#### Week 1 (11/8 - 11/15):
- Implement a working, initial Houdini tool that can generate basic succulent geometry.
- -
+ - ex.
+
+#### Week 2 (11/16 - 11/27)
+- Continue to refine the succulent generator tool
+- If time permits, experiment with the cacti generator tool
+
+#### Week 3 (11/28 - 12/5)
+- Create final renders
+ - Model different versions of the terrarium containers, including round glass containers and ceramic pots
+ - Create different variations of succulents and manually place the succulents into the terrariums
+ - Add lighting and apply materials
## Milestone 1: Implementation part 1 (due 11/15)
TBD
From f2512aca36a431848f5ab0f7078c35ffc615de65 Mon Sep 17 00:00:00 2001
From: Cindy Xu <88256581+CIIINDYXUU@users.noreply.github.com>
Date: Mon, 6 Nov 2023 22:48:30 -0500
Subject: [PATCH 06/22] Update README.md
---
README.md | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index a625565f..4391ab5d 100644
--- a/README.md
+++ b/README.md
@@ -20,6 +20,11 @@ Through this project, I hope to accomplish the following:
+
+
+
+
+
### Specification:
The main features of this project include:
@@ -29,7 +34,7 @@ The main features of this project include:
### Design:
-
+
### Timeline:
From 8bf4df45a93f54d294c4fd3744d07016fa6b91e7 Mon Sep 17 00:00:00 2001
From: Cindy Xu <88256581+CIIINDYXUU@users.noreply.github.com>
Date: Tue, 7 Nov 2023 00:21:05 -0500
Subject: [PATCH 07/22] Design Doc Edited
---
README.md | 54 +++++++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 43 insertions(+), 11 deletions(-)
diff --git a/README.md b/README.md
index 4391ab5d..159cbee2 100644
--- a/README.md
+++ b/README.md
@@ -6,32 +6,60 @@ As the final project for my Procedural Computer Graphics course at Penn, I will
### Introduction
-The motivation behind this project is to utilize the power of proceduralism to replicate naturally occurring phenomena from real-life flora! I was especially drawn to the concept of ___phyllotaxis___, the phenomenon of how leaves or petals are arranged around a stem. Phyllotactic patterns (Fibonacci sequences, Golden Ratio, etc.) can be observed in a variety of plant species, such as succulents, which result in beautiful and fascinating geometric patterns.
+
-Succulents come in various shapes, sizes, colors, and arrangements, making them an interesting subject for procedural modeling. While there are endless types of succulents, for this project I will focus on the ___echeveria___, a type of succulent known for its "aesthetic" rosette shape.
+The motivation behind this project is to utilize the power of proceduralism to replicate naturally occurring phenomena from real-life flora! I was especially drawn to the concept of ___phyllotaxis___, the phenomenon in botany where leaves or petals are arranged around a stem in a spiraling pattern. Phyllotactic patterns (Fibonacci sequences, Golden Ratio, etc.) can be observed in a variety of plant species, such as succulents, which result in beautiful and fascinating geometric patterns.
+
+Succulents come in various shapes, sizes, colors, and arrangements, making them an interesting subject for procedural modeling. While there are endless types of succulents, for this project I will focus on the ___echeveria___, a type of succulent known for its aesthetic, rosette-shaped design.
### Goal
Through this project, I hope to accomplish the following:
1. Develop a procedural modeling tool that generates different variations of succulents, enabling users the creative freedom to create a wide range of succulent species and designs.
2. Continue developing my procedural modeling skills in Houdini, gaining hands-on experience with creating a user-friendly and intuitive tool for 3D artists
-3. Create beautiful and realistic final renders of terrariums, populated with succulents (and potentially other greenery like cacti) generated with my Houdini tool.
+3. Create beautiful and realistic final renders of terrariums, populated with succulents (and potentially other greenery like cacti if time permits) generated with my Houdini tool.
### Inspiration and Reference Images:
-
+There are endless variations of echeveria succulents which means tons of inspiration to draw from! Below are a few examples of different succulent shapes, colors, and arrangements:

+I also found references to visualize what the final renders could look like. From ceramic pots to glass containers, I plan to draw direct inspiration from these photos when designing my terrariums.
+

### Specification:
The main features of this project include:
-- ex
+1. The procedural succulent generator allowing users to control multiple parameters
+ - Parameters such as:
+ - number of petals
+ - roundness vs. pointiness of the petal tip
+ - bend angle of the petals
+ - width and length of petals
+ - scale of the entire succulent
+ - distribution of color
+2. Terrarium containers, both glass and ceramic versions modeled and textured in Houdini
+3. Polished final renders of terrariums with variations of succulents
+
+#### Extra Credit Features:
+1. A procedural cacti generator allowing users to control multiple parameters:
+ - Parameters such as:
+ - scale of the cacti
+ - amount of ridges
+ - density of spines
+ - length of spines
+ - amount of twist
+2. Implementing procedural placement, allowing the user to randomly generate arrangements of the succulents
### Techniques:
+For this project, I anticipate using Houdini procedural modeling techniques learned throughout the semester and VEX. I have also collected some helpful tutorials, articles, and a paper:
+- [Procedural Succulents by Kilian Baur](https://80.lv/articles/006sdf-procedural-art-plant-generation-in-houdini/) - Article breaking down one artist's workflow when creating procedural succulents
+- [Fibonacci Flower in Houdini by Junichiro Horikawa](https://www.youtube.com/watch?v=nPWQpQQgWJM) - Youtube Tutorial outlining how to create a Fibonacci pattern in Houdini
+- [Procedurally Model Pot & Snake Plant | Houdini Tutorial](https://www.youtube.com/watch?v=BhXcOzpDQ1g) - Youtube Tutorial on how to create a snake plant and a pot. Will refer to this when modeling pots and soil.
+- [The use of positional information in the modeling of plants](http://algorithmicbotany.org/papers/sigcourse.2003/2-27-positional.pdf) - Paper describing the mathematics and algorithms behind phyllotaxy in plants.
### Design:

@@ -39,19 +67,23 @@ The main features of this project include:
### Timeline:
#### Week 1 (11/8 - 11/15):
-- Implement a working, initial Houdini tool that can generate basic succulent geometry.
- - ex.
+- Implement a working Houdini tool that can generate basic succulent geometry
+ - Expose parameters for users to create custom succulents
+ - If time permits, implement color control
#### Week 2 (11/16 - 11/27)
-- Continue to refine the succulent generator tool
-- If time permits, experiment with the cacti generator tool
+- Continue to refine the succulent generator tool, adding color and tweaking the shape
+- Model different versions of the terrarium containers, including round glass containers and ceramic pots
+- If time permits, experiment with creating a cacti generator tool
#### Week 3 (11/28 - 12/5)
- Create final renders
- - Model different versions of the terrarium containers, including round glass containers and ceramic pots
- - Create different variations of succulents and manually place the succulents into the terrariums
+ - Generate different variations of succulents and manually place the succulents into the terrariums
+ - Add some soil and/or rocks into the terrariums
- Add lighting and apply materials
+---
+
## Milestone 1: Implementation part 1 (due 11/15)
TBD
From 195e4e65d230688a6b38425c398b15c1ca494e8b Mon Sep 17 00:00:00 2001
From: Cindy Xu <88256581+CIIINDYXUU@users.noreply.github.com>
Date: Tue, 7 Nov 2023 18:47:53 -0500
Subject: [PATCH 08/22] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 159cbee2..81003370 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ As the final project for my Procedural Computer Graphics course at Penn, I will
### Introduction
-
+
The motivation behind this project is to utilize the power of proceduralism to replicate naturally occurring phenomena from real-life flora! I was especially drawn to the concept of ___phyllotaxis___, the phenomenon in botany where leaves or petals are arranged around a stem in a spiraling pattern. Phyllotactic patterns (Fibonacci sequences, Golden Ratio, etc.) can be observed in a variety of plant species, such as succulents, which result in beautiful and fascinating geometric patterns.
From 7d6936627cb64ae2d3c4aaba6723e25668ea70a4 Mon Sep 17 00:00:00 2001
From: Cindy Xu <88256581+CIIINDYXUU@users.noreply.github.com>
Date: Tue, 14 Nov 2023 22:55:56 -0500
Subject: [PATCH 09/22] Update README.md
---
README.md | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 81003370..d763914b 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,9 @@
As the final project for my Procedural Computer Graphics course at Penn, I will be developing a SideFX Houdini Generator Tool that allows users to create variations of succulents using procedural modeling.
## Design Doc
-
+Click Here to Open / Close Design Doc
+
### Introduction
@@ -82,10 +84,10 @@ For this project, I anticipate using Houdini procedural modeling techniques lear
- Add some soil and/or rocks into the terrariums
- Add lighting and apply materials
----
+Click Here to Open / Close Milestone 2
+Click Here to Open / Close Milestone 3
+Click Here to Open/Close Final Submission
+Click Here to Open / Close Milestone 2
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -149,7 +149,10 @@ To make the pot generator, I followed this helpful [YouTube tutorial](https://ww
@@ -14,6 +10,11 @@ The motivation behind this project is to utilize the power of proceduralism to r
Succulents come in various shapes, sizes, colors, and arrangements, making them an interesting subject for procedural modeling. While there are endless types of succulents, for this project I will focus on the ___echeveria___, a type of succulent known for its aesthetic, rosette-shaped design.
+## Design Doc
+
-
-The motivation behind this project is to utilize the power of proceduralism to replicate naturally occurring phenomena from real-life flora! I was especially drawn to the concept of ___phyllotaxis___, the phenomenon in botany where leaves or petals are arranged around a stem in a spiraling pattern. Phyllotactic patterns (Fibonacci sequences, Golden Ratio, etc.) can be observed in a variety of plant species, such as succulents, which result in beautiful and fascinating geometric patterns.
-
-Succulents come in various shapes, sizes, colors, and arrangements, making them an interesting subject for procedural modeling. While there are endless types of succulents, for this project I will focus on the ___echeveria___, a type of succulent known for its aesthetic, rosette-shaped design.
+#### Table of Contents
+* [Final Renders](https://github.com/CIIINDYXUU/Procedural-Terrarium-Generator/blob/main/README.md#final-renders)
+*
## Final Renders
## Design Doc
+The motivation behind this project is to utilize the power of proceduralism to replicate naturally occurring phenomena from real-life flora! I was especially drawn to the concept of ___phyllotaxis___, the phenomenon in botany where leaves or petals are arranged around a stem in a spiraling pattern. Phyllotactic patterns (Fibonacci sequences, Golden Ratio, etc.) can be observed in a variety of plant species, such as succulents, which result in beautiful and fascinating geometric patterns.
+
+Succulents come in various shapes, sizes, colors, and arrangements, making them an interesting subject for procedural modeling. While there are endless types of succulents, for this project I will focus on the ___echeveria___, a type of succulent known for its aesthetic, rosette-shaped design.
### Goal
Through this project, I hope to accomplish the following:
From 014559ef05bd4068f73a71335feb9db58b285491 Mon Sep 17 00:00:00 2001
From: Cindy Xu <88256581+CIIINDYXUU@users.noreply.github.com>
Date: Wed, 6 Dec 2023 00:26:10 -0500
Subject: [PATCH 20/22] Update README.md
---
README.md | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/README.md b/README.md
index 850cada1..5de80b21 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,26 @@
# CIS 5660 Final Project: Procedural Terrarium Generator
-As the final project for my Procedural Computer Graphics course at Penn, I will be developing a SideFX Houdini Generator Tool that allows users to create variations of succulents using procedural modeling.
+As the final project for my Procedural Computer Graphics course at Penn, I developed a SideFX Houdini Generator Tool that allows users to create variations of succulents using procedural modeling.
-#### Table of Contents
+
+
+### Table of Contents
* [Final Renders](https://github.com/CIIINDYXUU/Procedural-Terrarium-Generator/blob/main/README.md#final-renders)
-*
-## Final Renders
+* [Milestone 1: Design Document](https://github.com/CIIINDYXUU/Procedural-Terrarium-Generator/blob/main/README.md#design-doc)
+* [Milestone 2: Creating a Basic Succulent Generator](https://github.com/CIIINDYXUU/Procedural-Terrarium-Generator/blob/main/README.md#milestone-2)
+* [Milestone 3: Building the Succulent, Cacti, and Pot Generators](https://github.com/CIIINDYXUU/Procedural-Terrarium-Generator/blob/main/README.md#milestone-3)
+## Final Renders
-## Design Doc
-
+
+
+
+
@@ -91,11 +99,8 @@ For this project, I anticipate using Houdini procedural modeling techniques lear
- Add some soil and/or rocks into the terrariums
- Add lighting and apply materials
-
+
-
+
+
m*0n0Ll}} zN0D`^u2rKf)=iY`K+(rgOVf4Grj>)us?3KuN-s!_5u&Pkx*3#Mc82MBDry$mZSYmp zdYojZ$#C%MEbAY4v%|PMy?y~fwaP9*YZ_7loQ;P4(RB2###mM}EESqKrtfuOwmME6 zoTg$2l1A$BARG0QmzZmLBA<@!)*$lnSyfxCNl*LPVAw$`)9zGN+JttHnfe@%9;Et+ zgmJ3c9I65D?bP5i6$YTrlEH=5$hazMJIy+yZgw&KlensC8+9+xx;j=>Mf_?y@|EDK zs15FlqcrJoCl6>nmbM=}Sf0{yw1;ykV$&EK9Mjn_JGrn)&7d>Y6~;aT!9IC;F~m0L zO6v4hRMrCN!}igK_g0Q*fz%nDp1y+Rl+SE#J^IOv`TRD%{s7O`e{!(54j0h&mU#E$ zf1I5C`Cs7sugWD7O|D`Y_iAS5$N!k1B*gbgrq!BDy!*}v$=O$r0rDe%K{GS+oB!L) z%=iDZ =LZXWsegcV=cj`zLt*1)A5OuCdKK^Ui|BfuspaN{A&b;#%|JTgSum30V#c$G!qKP{5&j0xDq3gGkv+gIr%Oq3A &f(0=chFF#^Ka4Hu-P+n?R$T7 zX6Ad>B>La*Acf5{bM05=W@fJaM-u2)1(0n@%v}4?KZU6L16d(c-J9}fuKo1`u=F2F zBtIe~_7pvHZQ&h=#NWgFzYijCkIZ~JbM5#41Wow2WCgtTPJ1->&0Jgk@yyJ3|9eS1 zek10onQM>#1^V`X%Q8$>HKWX2+y0*fg_z_lX_oe%x%SC_00w_sHkKL6s( jVz4b=a#Mz^T4%0(@o%C}e}<-PpmTqfij`@rnQQ;r! oB94~2dhc)f5g2Z z-bHXa!Nj~x4N_o#VE+Kj_n&R=9H^K0tv=rZ9KL_+jQ@NWP;j)!m+yR_zOWtuXGL4S zZ#zTq>_@9? zsNumup$`fTlm)EjStv~7%)=T@gC?;B?%O<_U`RZqX=P^SFI$bES6sJ*d6%k` z-z#eR*V7)Br#$QAAI&aB&E3Zjqs4`Li;J!McZy${;{j$Pq5c)lR-GbfVPJrLM@*B@ zxNGEY0?=>C9+R%&m#lRZSc6oK`k^~rN8bp$Lyzq5h-sKACf}1)F)0&%$+T8r4I;Ms zp(`#|B%a9qYG87QL_acKsmMs)ipBI|Ic`?*G1~N-)W+bO8V&XY@m+0aV4ip+9aunP z&kG8KIi!97hUW$Ax2}B(K7EU98qByGSY7SXJ|}+srX?bH&D9IA?~! *rF=S%Z4x|GpDH^_!F<;hkstcTH7udW H&i zr1wlWPUs!=)BejNjP1R5=`mTw*R90`@NV{o$uV3=82+pW0AY`Q11wsl9ese~(Qg3o zM1AUTmS+&2Gr3vcm8%*oX*R|B2FnFY+Qe(w2wwl7D@+sxJxS%>Z24Wea6;uz*=-11 zcIDzVSFRzsa{a4L<$7(vR=DZ o5k$ytd&XbaQsak`- zRjkkr^2qU*>=hwU?~to8`a||L0;RnsupoJ4S-%1KLz=PON2+NRBg(QZXheNSEI{#P zkDQQrqHHKKW%wmmt-#onQ9mlGd*v98wTwKWWZ6uzZOsp1X7Yd9xU` 3=#RRxg{OtgpTCT*kCzid&f3<0;e>?Lrp; 4dkqdYGxjgjv^O5<*JEd0p=>9_yi!#~~l=eIw&9(@oYkY#6g69Ia=KaDoG zC cOv@DyJNpA zu>L~8cM^dfA%OjOaN1B%;w@|E1}2^ckTe?2O JjTULsV zA@9l>xfD=A8wGeWl>ZjclV(N(gk?$8AzF?EG3B4qG8U0WM5K`*tNvS6P?Bpz `Y*0~nv%?icOmXjGDBJo)91eQ#`_xdK9uS$XwZM;Zjl{| zxbD06?=3BUc)xXjX?gKzYkTWpZTsod_1(42)h7oON&Mb>@6Eg)38fr~;TwU)k#IT6 zSig8Q%rFn6ZTQ7sMaLp4Iq5ix#x7v1n! GoOYIGTlZhbY);H1)C@ zntV4oML3UH)8^3;BF9BxtJG4XxvQcrBUN5N5i5uBar6~5Jv369BP??X(dmLY7LMgc zb8mDwzm>oO8hjpYvi^F1xlq?i5N<_wP)ZIdX!>waD*iS{h!0mS6e#I6_nBVrV7`Js zm8T%Tw;+NHB=x#R7)T2FZ*~knF>{7~N=1oYHy4|-uk_qdqba1}fS68Erw3iQvqtf8 z0;5>O{Hk(-Qe_?MCCBkls(7kFcS-D%z{=}Id)P8*W9l^>f9=igWPJqibWMwNyIC1o zJTM?7jqYV!R@46HSbp`Amzd|}$6`iH5tUwDJTs>66V73zz2i`m?H0pqqVpCnPGB81 zzltOgqmMqq(T`skLgDZOR0;_s#=4>c{ry=4o0;B5^WA7ZmTCyQYOP2#J^D<;3$de8 zv F^70K8iSzVoN}&){UWio4 z*1t}%z$)Z4EEhX?lMd-bjCK>|W)Qpq+Txr&n^HU^K`%r;6mwpufOLl4uzdJF lB7(OG0`?#4^P^W?nR!T5k(yWc@`7uMW5ZYXyN-NMHrA zBp7SKoqMH0Oc(AH(T`SRn|CM08mr7w=j}2hWm+5`(}tXRuB5NtAg*odwFe0Xgp7fL z#g|8-J;5Pbw2b36ot1%gCpOjKDx}3+H-Fyy93I2t{AaUj3zynI`x(4h>O~KJuG!BP z2 PEYw1q!a)bL4?o%8-`?6g!1)Jmqbgf%>+1d+ zuDj9@?SqKsr4os3fU~u6SDWaTMmiqh1cs`e *=W3dSt3)#)`sGbJ==PryE_&$n3W=_;fdDwk8#1Y<&Zy z`ctklcl^G<-_woTf%WkKn(Jq?JF~YU{PS7UQjgR%ETBo90R}r23phYM2QBoOBliGd zRYr%$33fsJ3IiSquUIZNP{`$#|7`KI2LYT^JG2*&3VZ-tP}(ern+l{yRHh6aL9|sX zX^73uB9<=CXKyaRa_X+;d+d}b#V%_A3LKLcr?F LPgJFHr`~S`er8gbk2a)`Bzw zN7Pi*LrPa+A*8jNSu%cV<}@;|18y@jj*@JO|xL+^IR~;Uhd>;N2bxNX~Zwv^=gd>eOHX zzB%|>=YFQ@#rC0W!Dpe-G)S-w)r$r`v6RC!67Etx2 XRTY&a_J063PgRrCPhNk741*G9-{p) zy&8(->PWoZXBYglG#}y6+n34Uc`y82t!JJ)UWKwc)rv-7r)Vig&&JX7-r8``oqzK5 z;e%)!8(PuugcddyM3le?#cp)ijW744L^BWM8t2*O`lkmD5>>j|C}ms1DAA&Zjn>H8 zFc8X&t61jnnnG1ioCz&+gvt;L58(qebx@fmnFRbA-}S=7hoKo=0EyL$_g+olgpU?T zn9RKyh^i_w@w^L{Jn0isQ< 8QwA&CR%%VvpM1L(~ 4`Y4>_g$LC)V1DyL;MkGxCa*SDfw=i8e~;FZZg FQ~Bsr_7LcvoNA^1QQ z*v3z>6HltOxvIZw-WZ7k17$!&v(Bz5Nt0ECzMf^|(JI}_K8ZWYfZ*Vwf?9&xC2G>q z3nli|Bd(2@m}J17TEka8?$-FN^43z@=rh4^Cva~Udyt&QeOhB+Z&_4X-9j7;vqVle zZ53lX9gb|bj%pW#JsuwpFt%CL_7em_s_l2}b)m+S&qKAJ0G&;96N^Nzh&R^8ypB;p z$Cd*$ujrVF@zO#@D>15ISwFGVJmiIB#+93M_gV9d>NS0yZ|O*ZYGyL?1D!_T5rl%( zym_nmdG2Wi&im7}7m}i
R$I|H$dpiX?oWeO2>Eq)p7TKsatu3f#J zrM=JyDP`Iu IOCalA8TUPt{_nQD&|8kXP5T8LjDfiW!_*$!4w8&5$}osAt2h zm$XNRY1?k7RTC9s9b}5NkYF{MLr~Vus0DxRD4`z f!(Za`L)XtY-EOy^kIh02I4RHFA~OQp*^cvK?VI z?4~TrlH1jD*AO;74Eunb?k9ALkuvUj5UTA&YaAmC&C_>mdV7-UwH^_9EJ@_J?V~YR zl2{KwpBLw}NU*1g1=5i0ia;;d#akQ XS!!t zQfMUawTm@&$mTxE5Ii=JF(NcKX!Wx(fEx@4Lqt#qz4GjKdZcZ4WL+1~^i+L(T%N;% zz!V8Qrv<&TZ1 4c(%XRJf*xaglARY##C= |6$(YE~fHig}9(1BPJh^Fj zCBOi1dbCe&gyue_ONXmNt11m~B0!oSzd9VGohS(Cw%MA_>Q0 5MqD;}e&Vn$o-Uu17IM&Oon4XxN+=L}aWQoa(P2k>v@sTGL8s&Gu rP@FFB&1!BEFO5!+Bg& zhLZ #9D`FMg-_#>V)|3mJUexQ7z#Ut0P*m11!r!c-w^x7>@yiNERJFO15d||V z$OyQQ{CxdeY;9T!=?}@ywuk$KrI3gM&_X6P(O}gN^P# z8)jlC^4SVe$7?)IXc|c=v1AkDKH^&_{*Gx>%l{D4u;S9ox^8W*rbJ6UcF!%^!@1g< z?Jx4kl`S-}x3(vgI8LLF+Tg$o-`JUK(n%Sv|0&AOE#Bf4$VckLAt~P3;#mShS9WNC z-WfGVznnqny*vMU$BDGXmPX-NWuH#ws18|2D9g_1JV)-R2!-ejhl-hh-lL9)=g>2J zc7~6j%{~yX=(Vat9VQ}`%qK93?CRk@9xmumS)BT$l6)$M+6mMm9CkXq6h2Gm3yWAe z+;=*p;>4jqsk+Fc+c{!N-I(N Z#9~R$T@C BLlek)+2bWlMw#S`{sWaTeq_b3wArtbDnBbcmH6 ziPKCK+eFw}f6o#SB7-HxQ|=R87S-LOxztuIpL?{WAGwEg2|x*{e{z7{g$#PjcIO}% ze@60*HJAGCbXc|zEAdhbnuylsi&Wf_{7SHn1GbyE!#Z@jmEg?are9Z=cd|Qr;YO|1 z+~W~b) cPz$h6f%oBf@5Cg-ffvNF+#;k>f+oF$g=jWq*$RoWK zaixltpE =!p%9>Tywco^T>ca~|oD$mWTox6gZ4wgrKD z-#fe{4=LTkaiTBjRtd@jnty~JP8tRxnI)aU`B7l@jwMZTZmF`av1ga4G<}M#y~t@q z$OOr@JNEUMSmiUdbg$7C&fu2pzJ}D=xETdeL;gT1Q&lX)5Ty+YlNVH>f87@I6Gn i3vfw-e(~J!h&&l90_rI=!HnaMdtR7mOU$WS1clEHQ^^`R2_%@v9H378i(kc4 zxC*#tZUPBTf3R8ra)GxxKY>*U%M+9 JL}6J{a49>SL>&mFmky=L z4Nul1!c9{w{3sp3(s*mOQm!#$Uzu+-8G1fbmJx_`vz_4#LXV>NIWMoXDA6|0ngWXU zicrj4pu%|@oK7Ljr|)1189vs^y44!z)iBzb+?G%?p|x45QPjkV*5*%KBa{Yo^A(=| zH1PaOJpUv2xgjN$wAKPw$0veqH9sm-vu{ ^QZct- znpq-e!D=__9jgm4oE|8C34wQBS?qH5nu!#iuWIa=vV{B+Ja~!*q8TNW5X;B&d4jfV zjYxE`-9P~%AQDrxjg*aZK9P!#bpyR!fW2LSd8z(LZY&ekUh%zMfRUb=n>8a*8=8AE ztKg+9z%F!|^-H)Y5i{K+VO*h917fOsCN7`SGg;N#iK`?0gTOSp^yG ?nHZ;h=&zg~+W#4$Bovr8n+&0W4xgyqBY#@1wL!3rv4Cyu*I zGn1&n9~iFknU+lb>PwOS24Obp5ta mZ8?+IW^K~Y>ne-#W8l;cAeN!R8Z#SL-n=umgbpqkCeI&pp&roEl&>k z;#0cRkrLfgs=ayRazj`MWlnL)U046Ym*ua3Emd&|D| E>nsd zTtuQgM{^fbmr(&%pBK}Y5zLhm7AP4_C+=;?)$j%?d~Px(I#*V;x+jZ7TKmKj^-=t; zoTw)l{WT_P&|B(tYxc%NcanCyVfZnR%s)E$kLrartgg-stQb-@4kzZwxCwXyHq}zn zzif=Em{@mtHAEcSFU-Db2wjPZbsC=i@=lm)h*r**dYoSLe2MW|%#%ba?VR&vJsH3} zsJhP*j8X-UI|HCWUqx@4+VvOqW*)?Wu4(7N30620&4bpxu*Cj1nd+sJ-K1n6H`z_V ziwP&YZxA=e&uC!F8#AMMjQM4sw&Iu7)0P@>7d>rZ >k5pjtFjUs%ca*hg &D0X+uKj}4t7@eKfcZS?Y3~D z-sb); ((r4z_O{i*b=Bpf5wp(*a@w57;wbdiI-EQ;MoLdDc= z3&R_*;&k>RCe+? VwR^z%PuI};kwNItt&pM;2s@h z4I0E{=@qy6Jwl^iRQYhLqx0Q^I |38q0^!(~Ry}KlHfC8vWoX z&c!XX%? GP*k0yL{3#h4h3s z2J|`BZr0{3yp<=)o=BkcohjS#wH}Sl%G^M24~4xw6!uGcC~T_y7{7GKvn&hf>UhP~ z1$xfCeKeJ6Qzv}2AAu;_zUWb%*u7>=KGjC=m82XI!nJ}Xpx(u7BE9L(AQ%MxjBAaT zDOL<5pjEbn68vIldXaZU7$y2}{$5V_x@sQACD&CQHTTAx7V__dBra)s`*%XpOGW6( zbxgshVCk6Xj-At<>am1vN) i$6ui&Ye-egLYN^_-3DQ 8~INsnG3gBacv7xK}3ghSl?(zZ(R*qSc+ zwHQfwA*7qqmHC{oeX>QN2#$rZJ^-1z|I7#%6)DLsSn^mVsPk|v9FEd%XRnvya_`|& zAXWJ^m^*wa#%+&Lvq;DLS;03~KgZqqr^KX_!aDMOJ>GOHfT&pjM6Z25S _h=P%o~ynN+yb2kt*GtxMAUWk8rW;33nR!q~-i~E|(YDg9MjK zlG8QWLD76;ke#lbtii#W&k;^>GX-IsI8X8#qs}Ap@Frxds3Aiu?<8)YM5A8%#VCnj zsdgdrQTt@>CX%Wcx0*+Ehd3(sLmgQa9XUWXrw2#q#6kOHJSwW0rqlx^U?BOlJN=M? zgZ7IK?nC#|8EECaPA+lw1x8!MJ$Uv#P^F=>KA~}jfu(>J{Ekhb6^Ks5_!t{D%_&uS zhDin&l5#4DW}!(I{wdc%e057Z>vrRQo+3ecnSWK>fPS}RDZAQBPnqP_{)rMR4 2(O1=GP9vMUP4W6~l_FHbP_Zs}N_!?=PEM_8?c%8JzH`HP*5*;F= $N28X24N7W6x7InDl_*gqU-ANE7bi8!#~TRUA}}Raq3u Wh&}Ip>t^+)+ht)#HR93uVL70)SLW(KbZu%)bGF zDpLF(t5=poytjva;VN!S--TyIzB(ko>vf!3cri35EU$GUK6F=QWR>#O+Zp9;CxS z&a&DpT3T3aEiJE1%&20!Y^JPyb9sV0_KrOxmn2SeWtZM#Y2>9*BbeGu!ENam%#h1d zOqV)Hrk*gDT=~@8`7|E%Q><|(n=mO)t&7lM`4dD!;JUoPo#c~oJ;ZY}s^(jlIK5md z7l{f~L14z$%M&7TLOF+O(mC1-!qy&QL6g@II}nwtdNIW!(<}Pgi5 a8ni;6*L^qvIx8!!yw zc6)T{WqYIUX$Gwlzz9B}B&w(5r*@6l+^S&!f0G!1$(V?4e?knXsgvGvKvPp1Pm=^~ z-!Z( > 3Y*;uZOg Wg^wMEebwoa(2df6QZ9 }52XQN%(Uam?T^*gYcdZ%5_38D$H%jtOe zl2s;|2dAW~ngYe6ebbU)lFg#?Q4W*wFRpKHJ^IOv`CP--cPaHST@5B5-%rlc0lt6# zQ5tu%mg&kaVtJ|B9!7n&%rr#B>>cAy5WiG3y)6Ree9!uBuJi6emfy4+lY` zDFjtoEqryUDBEf@A14`tR0gjoM#U;ms>}jhYBcvohx1#>5C@e$k2ZTaWE#CMJwg`T zau9A=)NjG91mUnH!+rLqc5MUk29FtZTJ#^ofoM6Cl&E_VI@Un9y+WP>JxlWu>l@Oa zS z8pb496g;yi1d&I_B9Aj6hty|Fpxx0%&<345;=HX)MvVIWElg|N9gk?iV{K$iHu$Vo zQpcJS9e;mJsIk!n5%JUkzoz^8;7{fR^>kk!e`g}lYx*>k&N08I@9X^Ceb3hd5(2#6 zp{uWap3*(W;=Og = zg{u}V+6y4!nmqFw m47s14LJhr+j0OD_sXY7_u}@+I2S%iiWxE(i)hb^ z#3H~6{dYjEq&vyyp#2uavwb{Tc-+kn nS}JT&y;TqNAtB3B)2M!l&tG9^2?5h>~bA zT&Rt!jbb%R5@giGI+~veNskcnJ(Q+sAU>>lh&&`PSi7m1Xc@!)i!5jc^Gn@A`XxS1 zIC7}f(HyPeal2bK%0qR@q97w8yN7(;oGA**@zaWe*&v03Kw1Ri9(FJf7HqW5Z)8xg zYL@!jl=WgF>Z)EgH+y-Cc }>c04a?3pA}AkJ=}=P~7@7*ZA4|lWYJAeHkc38FHK= zBq@ALAp8h^0wTiPwAm!9QY93x+ yE<~mlV;U^&$D96 zdL>ul^y`WvbLyTr_o<}_umh=%ztUf$oroq?f=4$5sM*}x8Y-29iZX^Zfw-fqp%a)b zu{)- xQshlw3pUQwa=nB-S98>;R!=c{%8D9x!LnVnom*GOw#6_~&3A{3(Q=nC zobF?)w*E7UxQ2l%$A)V4FB!k`VS=OZ{+SQWtUbIAob!0yy6;k%<*iMOFjda#NXZeG zPwbrz!VlQyaYx0u2zj2lU3mOx@n_sQv~puN-XvpSB1A@meLdHkdQlklSPAzjxn?`3 zuYslKu?w^xx4>1)Cp-yjr$T76*ojf9M|?qav2*DT6|Iw;OUcBJC&FJ`U^T9)H#^2G z>I$)4>>qOnOttv?!)q#vRvC6*L-mHCSJj`E4?CTtER`HzauTf~ iT zJma;RcN4hVCPHM`>CJOj$A(l2xSFqsW{W$Q#@NLL++6`*gZHmdVl^yFGukI$W@({P z#+f!%87Ro?c9aemhnXw=TC0lfj-hnSEJphtpwg&;jg1RB8U$rox;q8aMC@O !j^fa1Zik2+5XFVc` z*0gHMS?jHw5s&zz!#p5o<@7UhR!+N0Ih)j#?a3Khb|vJDn&m13t;$Nn3X~3`vQ^g> zO|)@-;i_rOZAW#Zmq@0pJvHhxA3~S=f|%V-Glb?~vTctJ)3&dDyrL{prf3W4N258! zh~JD_?DkhbC?sLf$1exDxn>F8d-|cvh@YjUmPI{uAJeib!#~PORCMDaLN=h?;J@!u z@NkLn(L73y{3k^iC4R4M3Z2MMteQ6_LUg`KcMQ45ka{Yk9=-{3t%UxVIgp0e7>i{L zm9Uz$#EH)j9UV=wJ|BbM6;Q(k&+a!}8e={xvm6|8QESC}m1W=df%v9Wsm)zA2Bt!2 zxG;?YI-UcUF&q{bXq8*|*T_wcp-_`pVn|rsoZQr?S(7WlhAq<$4(xl3ofWY0@#f76 z{#coczE$I>T8mvs^@hFEjJh$beOk@dsb(NC0Tuq8Xvkd(UFDo5h5f?ktPAG$w1XKj zZwVj9b+v>u&mq!0iB{>vt_$?qjXb%ZDI-OFipsYXiav>{F*VZj4ZU%U7{`Rlh4AvE zp^y_0L5vgK{3!;?1eLi0Xi*&TNgvu_0!Dv~G4=Y{i)3(^#$|!&WavG_Yj|&7Q1V}W z7Q$`H+p*w;tXQ0xVrOg|PbT0;<*>N)QK38XdPc=O{3}cLs37yz@^(l!fzF0tdlc#o zpiVkKE`#z5b;gXA=`02^(anFRp*4*22~ 1^I z^I5=2OeDLEqxJ)Ht -=>&Wr| ztRjYcN`|ml%AZ?<)2oA_xGzg+RGA5hVAZFj#q?T>CrHD*eZR<9f>VueKBMD4Q3;gd zaX@1b68Z$wFp5`>4A?W7dQE@TV4#tpg^?y_mH~eZsFIE~ ^b!$x5NpOCu66JY2i!7noa}dBi}7 z)pq%NGj#-D%uAPd_NXnX_Z+81W#3HY6ST~dgDRtJ%8krA+jvr*eB(h2lFZ6*&@v>| z<7B%}raLAOJ&9L|q>d3Zm}od?Y|nIlIINaKNrWnd^Mc}PUOzjCB2`4}X)5;pELoEi z5 B6CQ^rZ0dp3E9F1bwSS4PyXjYeA0XxhR zFIAN w5m7;t7Ds?PB>hPjkC#0RPM;i#03Qb}9G@+LG`q%;k z?Yv2te>=LQB+N1q?*u8BWeK)9#5^w(FxxL!mD=f-KP8Pt+lO3k(&WqXI*8~+Iy{Lq zD&nA(HyL@DS9|Rg_uV36GiM0I-OH52aISSLT3A@PNqJy##frWw%_@uB%q3-)#+F6C z=903@#j@P}ai+R4ul1C)h75`|t#rn2P!N?gn#XQ7XnLpSwCZu~k81L!32Vwq1V`xT zgJh6_oX@!0uoY2mV9`MDmU3g=5C&&{yDalm?|R5f!mnBmXd*<>s1~h0XCCNE)HQNJ zQ+X%NGY_;pYCg?6>Cvm;;*ZMMxt(PZ49fWE2zy8qq-`ct BAIX-tYgN@1G%rJr^Qys26R6ZZ5NH@{)-ZQicIF*eqsdj^?r+t~khg z?Ie`Xuui6C>Pu5LgTI&Zsybscm8DO!$GZuF?_y`c+fXnhC-~RG&$Hy^0ovKd!A5Uy zMzd9JimVku6l*Drz9NHQtFUmhy^btV6rm}|<$Jv?sz|SjHw-LAUe_0B=w2o2M4I6V zoe%tZc36?!V4q>4Kg Sh$38B^^Hh&Wc`xnvlQPkHw*C{oE}#&_ zpd@E<+bEpso5l}}BWZ7dbE;aJ4g4(F61e2COpxv2SU4P|-Oirq?NcC~n-vRiX`J7d zgqSVl$fnxL@?_IHLudMBiM!*YqIVQDI~YcEuY%*4oMHqJI;$9R6b!QgwkZp{G6f*& z3IM@bUs)GHQ{+GZ?1%HkAUO+I`ZRr`(PO~#-t%5CoBQ(~;bN!!N71Ze1A%)O7O)wQ z+i&&&p6sAVzJYri)=t(afhW=ncM_~>BqlJ?WedHKZU(2h%354w)VMZ-kP{kY1jP|1 z+zo;Bo=Mz3p>3Wous=(wUTJ^1eKL15s$Gj`IEs!OP@@j$@`;1?iH*uMoglpVQ}12~ zY3jmf=FZnz@2{#WesWshi5|M3^+xdrcH2nss$`s6JfT0QUUwl32c&J
(Q!uSxTtP81C0|E} zucEC&*4&yTMwWZS^Gg+|vak|8h^VWAI@AvJQQfrzN(>zp6#Z3_Bd*3#Z>AUoRMaXK zh(KZ0UYIvL?LcUp&e4xROn~a4bq`pPorFxWG%(TAYt?@Q1o%v)*HuHu6@h@JBLq%g z2&SqpnA1#VW> lAv%S2#pluqmNXd{CuFvOb}4G_sOSs6*#= zIZ{7Wy3o@6b=Saz(khl=!G!zK(=*&>;nr>REP;FTh1Rb`m~1q}4UMO9{&^W~!~$kV zo5wDkB1~Yeun2Q?%*nC0qkh8Ir$P?s!i_xIJi-x|yx)!6{sy_~`5S0kDmkhW3|v9l zKB?TV)@uz~YCI+IX+)#AM|#17rv6yK78vo_?S)nnYq&I#E?eA9as)0zGJ4TY5&Wu1 zMg3lj8!6%KVYOe<`E6Dc(H`G}NwGydm$|^I>(#2jHyJH`R#y$y?;8|kJEeP8+?Hyd zvh^5-sn;87vfrb!%?tq>HCL&OGlkH2Y%U|=nD{$?=;s*W7kA-pB!IgsMF2w*0-2ho zlWfj^5xyb$v&U7N^Q~!aNIp!Ez>lam?pkC5WWvg=c>S9h-gro_`F&x_ov20z>IrU3 zMZQ+9k^X7N{ox4Sp{D%O6t9{o1umwzS$3`^w=TTWr({QzW8l}-Sa6o?WeEm;HMaDt z^3t#1cCG3GD)_Rz^p|5wCq0V(tDvC;Fs2=#B46(nrli0lL8>tc&~DN@9-i snaKWJqEeCr1*jOqTTP>b3~3 zl@Lb0tb?J7?{zqye=$n)lahAGm(}eMK>hR#7vqIx#)hcIRV8_KWNug?ZQ@;Z{WxN9 zoc798)bQmPB_WEJ$rr8)sZ)EIU=7Eqs8OFIuu7Pq-c~nZ)EDP<5wbcQWZhC+F4Q=j zWdt4d$5C|DFQX>C8CP!^DM$TrwA6}TDPr+gO_jpbIdmsiJw1lXh{>@~PAfIPjF=8X z@PZ%#c+evRFNhF;2Mr4F)+|OO@Jm^*i)B0Z#1<~8o|e?>Ph|>R{B1_gL{@^ssE}}J zsYc35YXwqLT1-}j(s~98QBA)r(oDVz^HjeqEf?mkEEnRhHSPEvRFh7jZ{xTkr Y6WmJxy!rU}UWyRV!%9 zK3o~y(TYTitk7DsN-py;O|f#eia22g@X21$P};H
Ew)iSO{?nzIPa1-T@U%a$-FJNMT(+pii!rJ0M zR)ly;AsPtjdo?`4RxW%h95jowGe%fxNv}S3q^<52T03#9?btY5A!5`=%em@~5gGwv zuu=2eapJ|*s=?yN)LNsZ5KkL$KTQxvTO)?HIVOHq#A70e2%lys9 Ld|}*aGdm#0m7v=d+<~X_xw`|dt1B}on)g0(Ug6N-vYD6 ze)=dL#tR#i?c)|&fv_8#rT+*=MdHCAesw^d|7ZjIAqdp9^r?{F-tj0tMgSGYV%F1s zO~XTL!0VVbC%V)E@HME{!IMt>45}v?>#d)DqW2M0>m_HJ@q z*dRGS8NNm; 8z`TsF+(*9TpW^ ztJx!DlhE29B|%IZM{o(MU}34E=i(Z&3n+1-b1cFe9N?uP>-_!22>*BKL2W4u@uzoR z8`0UZM1$i%NLYc4ng@GOO1P-Pu`#Hr^iiBB8z{cbAxb%eeDVQQmlajRs)wA+Y^%Va z*~%j7V=x~bHMprva{4Z)fyicIE*Gv7qyj~jTWl@2dZ;LU+~VU#kaS2^45G)_;4@QK z5l}HvxT6Y!P&%H- R>Ugvl!A@ncDXd)f2mf+<)q-m*20Vp DJ0skiaWk2>KVFnQtwTTQ zN6+Btg->@)?4=iB)etPxq}CMG9_0uX3w6J?uvb}xRf_Xv{4!OJ&7VZ8^rN74h?vb+ z7T`~-0Kc>V|ELO3^_sAYYw(IyyVB_X8qdulz9IvQFp6;{)<|um0|o~f9&V$FmQyel zYSt4@S_23QURk3=?oJjdT;xLNb`m0$;zcoI8@;uL&_xlt*jU@XTfXZrrwn(kLsd1L zBD?`z=@r?hU HRfuhvy$ZVSk0pGU#Coe{#IhQs)YZLAp)+PabR1V(~2|CUZ3 z#pP7JJs0YTnPexkHmo4ON}J;epEh7;B=&Qi3AUc;VO3Ny;amX&gfjOegR|r;>yA#X zy=$T}eYC*sNWkb>3FHL|mk=L|hNVJeED)F fEF@7HDkar;UqV4H?l()8ix>uIK9I9v^* zr<&To9Oe$wV7#HT&wAxz+*yQ5)mYcIu~|j#EW)7$Z8CdiYE*A+nCWd8Ci>T9y^z`- z=L-=BAgfdqpUW=-yqycgtXPl0dW;qcsZF@IlR<@EEm~5R+vuXh1g$&~Rs0eeD|RU1 zL=mideApK4!ky60dvIxM>+E8c#Wia+yk$o%EaHlbh5Ppd^N>a7%X7~OimTbMU`LxV zB4}PAD2ndm_mkW@13e$h0?fbyi5}kPnt~_5^>z-Pehzl{e(5fRI+L()rXxjqzc{G1 z=!+G8v>Sv{Qa|Ok(O5|@wrdh)<0|iQGbSso{vbO_=@u_B%bI^RJ&=|>454U2^gKA~ z4htwO Mq91hq#-NX1!ru`&2Q!J |$69k|#XF@|I|LP-l^qc6mj`Z(mm^SH zE$(~uRiBEZvWCM7Q`Ipxk#59gE0xofS5)8T)Kx`5MfLN>DuO5BSVc2dUgPP8>hlbW zMvv6l$jc>DP`h0TG6`RPvG)aOdcr$PML;D@;k{UE2#=#d;7IXg14B&SNc9}^^&rKj z>ORRCyoT{wGL4s=5UaEGTu^0`^|DU?WFFfZ{Tpwbx8+3PX(`e;!RcAIuXH*ts!IQY z9dj$A`nDiI_OoN$D5~$AALtwiUq!Pdh_eqk1%yi6VgU06dObIbe5MEOteXvHZz6F5 zwIoLwl;(#Lg}gtBX7Qvm3pgIBc|U0bcJ?&w%_DaNJ;zsCaKr;VNA?NiT6n2{Bdf&h zknY}zbNy_8Fv3+nv!fiR_6SuQ$(G~8oKVqM9ChgpB`R(YwE({ 6K|Gc+09CYWOJbm~e+U_U4Xm~ vt*7)J~Qo5e)8uclDD}qXC6u>Cl4i zaOMy{rpKaaU59}oAr I1!VQNkWrtO+k!-1 z+em`yWXn=b_wu`#eiI^xs-EJzG@^=}{UTRW(&?Rc%jmnCkg}j8?K&Tn%;O&>akWSV z!t!5B_s>F>h?XfGQ73vDg{+Z!L#UXZ;k9(PlMK=`D9y73cYh`Qic1{#@Vesq#-iP& zb6z{^ZEI95!pZ3CPKyXI#Lh4CG>ojFLSJziG%bYvnk}gOBnDmR0R{IaFNbtTUmF*A z*k!~}g=#Ncu>MXUS34dx{y*eu|L3 ~5~_ukQXd+T7aM-hH~dzq!4& z5JmeZDK5#&j)q7!l|=Xs#|JWaB}2Mee3((;y%fh!*Et7U9_=a6&0c!}8KiKw7KM69 zc?_j@m_#_=IY8znT&Qu2$__!`94Wwt_#NR0AZ(|0H_MUB4Z+B9?^X07#(%i$9QIT6 zVnBes2z!dBX-=8_7l4D?FLC0|qzCxjC~XqGT)B5I+D+Rhrx_Zz2V(?F@=q}b(YyU@ z01{`nqU|1fm{R{5YjH2`#9-XhJI|u!^?Qt?b$9;G;>!H}5AWT@Z~XuE_3Q7ay>@p5 zV*DO>CGHbk=;XhD{kq8JLi0qUiQ7|^8%?Z;oku*f^%D^`+@|BbUtMoBZ*bWNht&wj z+zmKPZbdg>ZPCB+%bUL|6rG&jIhkXF$3X*-jV31si=N@O8|k*PA%LaPe46&s)6r=u zO#BisIFsnXfH%;)vMO#{qq#;+1RG^_Jm&KBxEE7K{YG SzKp^KIL-;tJt* mJN zNn6qmMn?v*5hepd9A*%K&VV@l9o1#90JNJ{hOsV-M|F8Ts>@^n7;dBCUfMet)n&5) zbTRV4mTPj6ovn#WTqE3Mo^^3GanxE`P%Bvv>Z}$NZq@d26->ozunXU%b7Anf @E+2Q_4?~K%h?~?f4}=x9Mw6m2p$b?2a5=Vr1gw`5n~Mr-$^t@8?7h+9 z{8lo2kqth_9bm9}qW5Ly9}8|d2)A6ow-SU~k(*Cs?^~;R?PXx*n a0C%kXlDk3-G%00`f;fjzXMzfz`&7oe%Y{P_e ze}q((bF(av3}+?V<>7#Y-N{QXz4*MReb$0vEHXR5qV^AMaV%@`6iLc!p`A4QI1JNH zIusp2I!CNUk9)!h_q 20 {goi|JWYp;2Ad&T}?Kx{aaf#z7#AOls> z9; rzQ^^4EA$XAH|IvCj(7Rt3q6{XxK{=o;6O0^34vsT4`6Dn0X|= zYdj1 &3huD9 zrN5zJcR9E(>1;=i;RNxzM1`=yRH8yESfWLcx)x#y0GhBz^I;64YB~`#c}$xRvk~7I zj*QM08TmE1-Q0y*MKUnA+%msFTom7Ip?76GC|tKGi ESzDB9e6Z>vwO{P8Pv7!c5i8bEssS8L#zXglA(fnIWN ze@1<3pUgd{eS|!J-n{u)pg(~}auG+x`!71UHp5xJ3FgWLTx8W-yaR+5IM{_5^gept z{2=;UYaO(~uW$O*&3Wf2l42f70nLZm;Mg*MmGrt}T4}zel2Pt%)K$o|l}>zor)b6s zDuC)4nR*-OsNg1FSMC6)9#gS{!SP|Ji;j_WIo @aJHHGEL2|Vd!SH dWk?={6G9CfL1hD&%kIa7+nGRdGabm7d$>dLu5!!IbHIT>;-K~;|kQ= zbhnIGM0RXNj*_w}#Y@%PUljMUOB|HlPr?q$-}uvV2W9)tooO7D=%u=FMcy@6>vr;D zF&=$#3mAL(0)QX#oZDzVGBrh?l6Iiu1`JTgof+^{%6KlzQ~C9JG}%#PExNQzvk;T7 zt&TNL*Ps;@jY 7AvX{3TzR&h(1CA)dghR!`v#oZ`yD z$`;gc92%yMm0prbS4v$8_7>RGG9|{L)Yz6B7cL5 LNHWN)IGXp;en0WN7Mh>W z)_=nO-qPE*s`U~X2_GT0B>&y#J)u-Siuf;nhjdnW4MnuUIz!%6ib+T{i6p}}>LqZ= zW4XTYa4Z~-(r#x@P=c2ivtpj(xM(?l-j zn(Kb*u$$ZhV@s_0+ih}nXSOtF5CXyhz?a?M;Sv`Iu;^(Q&HF-eCh&u>o|2ZzN zDOhn@=64AyLN0(Hn38^P*Oppgv&0vBi>gj+$i#94d+!VqjH3}q(^cMy9RY@jryyLt zUg-T^>K%Qmdr?<~Sr@NqqCdm}8{6e|^_SRv>hc{SqG{q^jnB0vgt6qR5JiG&tGzBC zsd|#a3FCa~u^(n7&eq_@+_I&~dJihHosiHDGwPV91XW+Fh4#uEph9=sFFM$?IB{8~ zxw}qYM_!ObTV$c{6hKvvvp%8Gb0V?H8m0@E%wA6_a11Bu@=+-)QJlK#%Yit#LAQOE z(dK0zd;TDaS`oN#iZIn;UpTH ;HIr^yxJmeS#T*I1XhZ zN!NGNeafS y|Pd~9gsnJJtFI#hw?E!Ddm+*m$mvSa? zPBT$8>ir|#eAWQg$s?RwVH7!z;7ElKI?#mkHX7_~1rXwRi#cZ_&diA6YoWJ}$Efn7 zK8kziSyX9m9i0$S5&6*^Xw*>MXwfke@&96|JwTTX=#mX;qm^e1`Yk$I5J2plML;tY z{E`iCVP|-|0zT+K?LI&_f1rYJ%WYr_`_0;l;m1FHs~BE`VmL~rEuwUSejwEW|7Q8X z=u8IcMC9hy+LKQntsg+xpKLzl_tI=s5X~F;NqR&IgSKISMxC0>2W>uAb%Vap0je7v z903)N_}e+pQwsdvkxCfQI3PPB<7(FgBk+ElJUuB| M(-r2 zJZ0$q3E^VxOUFBbsb6xs(|#Vpq0SUGdO%Wj(9?ZaKxLgOY_x%jxBSQaTR`HT0M+y{ zGm<|;`M>3G3rtoU@`Uf`2xzNLgSzhuO|&MzXM9a;voRu0jyoIbzpp|p`5Ky31v|Z& zRy?f2sJJ{LE|;AcEqh*y*y8z!cpf}L8hj}E PQ3WpZ(L2 zQW0Uwwsl82W~qC8c!l3K3FJXk(dvV T%Kn?vJ@V-+P6VTxa80^PemS?k(oT`- zR^U;%Dj{MAb_ur R33Dl2lj>BVoLgUMr+O22$}ZtnQramhGEJun<=pyo zr}VK^DSqv-opMS*{Ol5LC8|@p1XCQxW2s1uPPye|RZcm#KHVv^&`^Vl&OL_&(3cFk zK9NGm$E8&L#)76FZ4^`uxt)uKC~HIwRqt;}qqnU*<4s2g?>n^b`!x-)btJ Mv0=W*uouiijXMUMciss$8-_RF-jFsqhoGCQJGiJt&uw>BP}l@ zjldaBM)`RJsFz-qb+QeVcxS)!58gUqUWXHg7Hq=|D?H)j*S;9 _ROFr z<(JX8=58EeH- i9%f;uYrM^*TC308>Huj@E~!6fms%0 zkj@UV@NM8vqq)ubu2ixq;h=U_R Sl`z=c#m!UK42J)n(HJO7H zj#HYm40L4+eBjDP_`u5|FA=xHas(LPi}HzwoIc8R-bBu eD_cGSDznTXvP?osR9n(V?N>c-~naI zq0PfU3K?ASe7kk;c55YStvqNgKe*F!(({Fp3DFi=W-1`0W_+Av2!ld;MCgP_96EG1 zP?ff%oOx2M>@;=)PtO|9l5U1$1Fr%vd5^xaK|A&KTjpLPK292|$AK5!^eAaO!9R8x z#5pz6PGhrUKa?$7>onFv&*6jn yw?0z|K0!fy~~;bg ALoNlsxma^9e$+r+S7zLE7=ev$3D z(M*q`IrV^|uxANq_GaW2p{ERgBOkSKRF4jiEeZsfKyM(^)M?szNyyWd!5edUA7RBr z34;g+v`}Tk0vFFY&D)$+C6?_et>IIS%0l95 Q z9@j*HXjvj$W;49NGTB7*`Lt#WCB87aJ+vK1G8_3=WG;0@XN5WAC83X22ZQ((2`Ezh zkKqbSXe^vYakzz>LPizVbUaeDjd7JARKlt-o-M`Wnki*AmJ2Bq2r^q@Ue=gvB35{- z(XME;D>d-~PKtdAW+_Zd3iBy?HjWlj++!v8)u=TsPM60vTFSq|i~>O_s}Z0ZUAN5& zaS2{A6cpBcJXSFxVySl&Rvr`b#8ZRL4mYHEalIkUlTEVVG1ZbW&=5$js|7P+keW1a z(#eMg9mZ>5^-R-;cuFn`nnlGUiTJ@{({o+8uUmNSIxO7xP Tbw9nCU-Vb4dYm5L`1s@7cySx{2L3D@;vXgeg2m&*Zt~(J!Ce|(MY6vUlHgHA z>S$b`9c)zSh7@dzQqr@7SkoRSr3EQu9!oL-IH9F{ETE;cOfiK#RG^qPJ=Aky+2M^a zIMidtA##@}uiImhcUn|U==5uR=WLmg0x4yLG|H67X$qj)GO=6hsN*&Pf~GA^O?J-F z)iQP$87YSA^# }}s8sH~5ZWb;R+FV3DlF_aw;ufjS&GzWLdW?J{|44;e|E8M z17e)X`B3IGaQ)+M88M?u$9UkCau3ieWU*E0B_>E?^jJC5kr5dO(s=Dc_W=o+vT#bb zDjUP1T3E}gy>{BgMTD<}qY@bsXw!vm`de67xJg--S9v+KVA +Koo6hhdZmV=uj-?baV;dVqQC0B zM#%#;+Ajc55dt2QWyZ<-Met?kvq?=966s0~QaSZ$3Z2D2%M-##T}4nO324MvCIIv8 zbkrTDRm3tw!)uu$SJV{rav4FjsE^bt5&UfG5&aF+N{=<0M9Ss&T_zEPs<|nyYApgN zMg`7hat#?{a2i9;3u&V1A$?Q_FwYmx?;27P IfuQfwQn4u+|ogBzEIEin0<{W}V_MEKGQa;~}=3|-P16z@;s5HwL zm2+w5{u)O~nIoo(j+R80%gA^_eqAK2pMXfx+|QpvkLd$;R3;+A;<201{jg3-B9<33 z+N<*sQ8iULiRit{PkKT;m8ZFdJL Dwh@GhSq5^fHB{%8d^^Y1lRbMkE_rmNlmddRAHi|_a&1hy@FKt zyD?7A()V5Yy`aSza@3 WlQ2yy lKd(WamcEYir? zg7U5%#_i8BJUNB;$thBJi*`}1e5DfS^{$cnP2oCF(-@HUUm R zP6c&*niFl+M-eDsi&zBm?GTGT=g#J*WvceZ{@=$EK5!Y@kG_W$`hQ!pLcf1^nq0%e zE)wpXTFZ00085+Pc@)pZI*FgN=;BJ)Q%>(8{6zLOE(|0#me}b{{t*Poj<7=}w)d?? zq5u;dY>=m`L0&%#gM1~l4ED?#TBR_M+-ef_;0`3L%Nn>79)IlDn4$Del-zqVRfz3< z-NwQ`J-4dx)HF!EGP_nAv}tAegt%?qj*WPRW=R{vl%@$3chEFaxJT)|=)d|?UT%+f zHySyLxkco!@{*5`%?DFG9371gN_X(nLs4E9OXl_v{xSGf;l5RS1``*D-_<%`?Y3XI z^~3&gSvz)!=v1}b0H|NPbg%Os7|LTh<6SPd{)*1a^1S1v%P&t{KW%VPMh{Vc{o)%W zXv&En(@|+|tMbw-L=_#7!lrRZp_>519*dnuV8m|%97X^&9wmqqU{R8&aaaO5IU2p0 z6C1&t9E;w^iY@t^0F4q*-KSH^Y#`-yay+I}r^^}-_MRpcc+)LQZmZB(x_FYf$zVvH zyv0~dy+ZvPoGI57j>4QATYjO~L?rY@wQY2vZ9A*LRvs-XPMU-{(XYTbIVVoVl`0oS zywl~2ZQaU+qKl6%7Tv`TiuhtjMSQWtBEHyh5myb2$;CLn*ijK*@UVz4cwEG%(+> ubwTKjoxO1;$9MzmRJ >gfcRMzsrBHlfX+U1V|tSv46HhL24+vg3pbU zP$2YIgV8;Rg;O00QbR3Mm4zc61SSYb-<+(C!Ci8KqK{@L6Q#&FS|1vkE84>I%IBsu zyhUAn#cLgEA*w0t=afWT5VX^H*{N#T(5pk!QY{^N0c+l=UI;@h)Q25gJi_fM_#jH6 zx3B&2+auB!dqmof-o~1JnDLTJuva=!n*MX?M6n-x0o;6w8F9~ZjP2%)6h0I;JXttT zfTBU~;E|E>gT+u>M#0CO5#YqjM&XH(TmMqUi5M=zr9)K|N~zLBL=9@J4t^;{tdz*& zcmLsAS-ebHB(I$>hvu1 (jUwXz{RFAJk3|2a z<6jIJv4U>ML4y#*s5oRKjBEo9E_Q)-Y*0;=Mswxm3T<$}fusYuvBVa$gax+za#@4f zi*UK9U-nC2_GvC5@>-&%*@)t`>7yM1$|2yFl|!Avla+5so>?z6%cM^XCr>OCuuig{ zkuO1d>ExdRxRom~n7meU$I(N!8j|c0>W7t?Qb2d@@Vgcc6o~(YzlnB #HJw7V4;)$z7tm3Jk2_zZstyN_A@!nsYh&H!*MuK zDqxxnAs~qU>C7D*VCSFbs2jk^2jBQmee^eI%ED~2#OKZQBqgCJi7?>j1PmW>W8g7! zl`!2HFV1_h9TrMcBPvz^p>*V^8) 6P3P4@uob@a-mjL)FNkP zM&&95lCtHQldB3VB3C9!E=6F`yF3|k;0o!IWh`f%dpq%8;KXmcR1j>B6g0WFkaeG` zIbMT$i`g4FB9{=kg;VOVgQE|k8>+nPQt?lGD=2}EwYJRp1~j-9W0R(Edr9a7q=-sg zFx0(9y@`9OLuzSl)@ze1%YvkjQ iq;Tq711#oL{7L;KD_~G88 z4VqpKp#cx`&XM@105(=z7E0JFb)0Ahdf^c;hn5RPj1M3}ldQdQSyawSQ>f!YRdw}n zRl#!oTUAPNGN^b<3tBu4DBRHUUynSsD1XXlZn`OD=_)QW-DNA>MWQJI9X{dVxp)5! zEb9L2lF+<+OVfnr_30ql&(k56Ahja%EO;S1;?SJ`Sn5D#YxIYVe#*mgqOi^FWcVT*d@c^iMeoa1hXsd|Z~?gG0zMpi3&5?o?rG%((K|#O )cFNiq<>WfhbU}KrvPD zfl6Bp)iN~7lN15iaNHgmiP4huNshdNkL=)9;v0RGP 4a{F zWTd*~70ur4R5iJL9Jqn@-hnrZQiVfrq1F?XES}Yk)3=JyS9ndZz3iMHv>@^m ;T8wmB=a9loLy8(98H``1d0AUl@h;*9 zSqDi~i^LL-l{4X2?qLz#L{HpC5*b}mn#RtTxMm3pee{6Ilf=5CS&x)G=do(wrI8H6 z*e@d)4O%e?mN3#AvlfxOi$@K47Q>EfK^u!Y;#fuRv} RF6VfK zH2~_2std4z{u*qczqn8vDDQXEVJ+*2A#J Sx!I2~` zDn_~m^tD+xBtBxnD0+g{iOCTwRn<( S_yk2YRup8&YmdNyP zpTNDkR+2KGdN?D6qp?KReL5yPH_McyK|711vI^`QWiydrT3V)fkW5Xm1W1R~g~^4J zAh;8Jfb(EDEG-6?o}36$N_R9oNsRf2VfcBH^rJXOsvAm5EMy%PVJG6GAJIA;Dy0*I zZ6xaNViQQF+#r e@f6Yt19a zBjic6X%vd+lR%;mv}~b5;`l39YicBr=HVcTKj$?cFyr?_>$gkgq;rgWw-w%~xz4{` z7=wu6f(bI3lxo99q|@M7lh@ZYfYrf6STKsN)m-f*$2eDMXsB5#0y!d~KIy!(CX8Zi z#XNj;q-rO!h3o@*ZVjC}6SP;Pe6&^fc#xdpB*gK+TKeivKf;m-r%XTT!EnOdLQ-w< z@O5=OV40M7*ss6;c5D4&1I21>ts`gWVJ}N5*ouTy1v7e&h4Ip~o(gLWirj3nH%*0D z({ i`$hYzJ4<3roAnaxMv&O3)-qF z<0^O-=B*CBFgz};=Gl3w5%GnMW~tP?yf6yoIEUR$US1w;oC+?MDm12e =v(G#`LsIZ&|(G{~_9_yI(iAc0SpUqPYep3*36S zljTSx2Mh34V=;7%qXs7h1o#d786~~;D-@t0CMUFq0(Nu(IsYKx0Z&As3Mdqa;SYA_ z8l=fUFpThYh;TQ7f8MP?7oZM^2@PqrX=3ZqV&hh0;f@Iha)5c(Bm6Y`jrcxys=+{S zZdq;NDHCZ@F>{W(=q pdLQ &UNq+B z2QpYS`W;-RK)WLH0Y$jl-8APh96Xo9lL!qL><%!u$Q5wGItN0n#`%$wgCWo+4U!{9 zOcy%JuOh-Hn!|h0oN$OKo%K IAyu&Zr%=p<7@;+zNR}1K*j##`eiw?H zfFl$?bBimLt~EQ6-0C38@(xcEMf<8KyR<}>UiojRP8q*~f<0BR#~1$K-0$EN#*h3{ zC~JkVM2)s8D=s&*|1A_0Axfz5P!%$PO8l)*!bB?(X;xG*L5)y^r$-+9#1I0JmJ|XJ z!DQ}nP`?Weu!5h^0^H{ynd^r@sow {^d+)m4R<5K8y1M?fy}DQb=?B=!lT&5aq-2u1QPnGF%2wK$ zuC^_;WczgW$y!>Q ~UO~`uY*NIpm ;3H zXc;Q%N@9j&scUY&E;oxSi317XYWOAjNnA;mX`iknCGfE+oL$`=dC4|HVtEwA*-GqQ zY8SB8S|D*f>}wW)LR5_+6l7{4#Y4$E$jko^7uWyy56KVxbTGQm3i$+C2b0;b-|J^x zxsIR1ynNd4{Nq3FlqWOxeCWz53n{eL|N3@3I+y0 )#TzSorN+Ct6gL$mZ#+Mrf?E!%2! zqrKf_+k=&^c;uH2ySr?I^V-`qhBvW!Rx==|EIZLRv578gZ=spK*@@7wy2WZD-o$8F z-Qb*QzKKn9b&GRQ?5>QXy4*jkxwChE-kqfbT(YO<=k%Y|rC{1`q5SWU5cX8SDID~K zKYw=i>I~OGXeQ6EzeOmiKAz0M>JG?D1@rA+dkkZq4*snS@Z`nmtK%PD9jUJE`;^<3 z+ufqQ#o=sc$o#^k>C&U$g9Gve$Mqqe@3QVWG~vQq_F+{7T=H#K9^LRT3M=4iewWu# z4jnC+4x}c3 x`nai+z8E0EE%6{D#tCyqX@zQ;}4%b!f_ON3e{YuLL>hzF 4MI;KjP3sgK?DI+TSM!s+ zdYeDEu06@p`)G>TnVzxU$9{KuDYMr5Xs0s(5DstvtiU8BKS6W2=)C+R)_NnSe*h<~ ziqQDKc_$b6<`b&%HCh&-oLFqcjN|E3bIMldV7XvUl8=}D&Smm3OS+@s-%k^U5u9Y- zL0yTrGnzWy{{1*h5KjUAo=OCwoly_Qj4+kN$+>+i_K@1@QNMqRU7CWHrHn8{9vkTK zv#%i;XWMd!>BLazDrIhF{P(fgQRL*&00UXWl=3j20hpzMX<(vfOHCZjG2|s6gwvBo zIJI`8aL5Iw(5Zj-t)Q d=UUD|iwrk&30YM}qU01~|k zV6yMN)$8Otw_Ubf{CwLT4L+vh>+kU8LcS#54nE>9c}D*B0))k1{O@=)o!^?=Yrezv z29L`5?6Ff4!(HqyVrsz6Z@$NfK}Ki5%>@Pwm@jg`_9(;Qi}>**gE!?*pTc}~IPE?D zx%Pidenw6sVG?y>0-IR=Wm6%0sFU5-#vk7$PoL^Ars?=Xj;kDA+2>o_kH7mC$$`Ez z7IF|xdQBw@H2|*cOrQKWbZhIC^uHXlTJnEY+)DC`{6`qsg~<0g=^tA=?#+NqVy!A6 zBmY58C3yH9Hu+T@{EUdPfa-eG={#1yKwLtQQlQ#hGs1j?>5kg{bRu$BzRZWeNc%&9 zmoM|-$HNN&$G?M-`F4r8MeH6HH%bKPLyW<)rVm)MJvfit`e((L;qT@~MEYn@*~y&0 z<+$bi?MrU 1U9T2)Z^FOLHf1LR|JI-(lY_$H{CR&ZkY_0XDq1w-j{tOdc5 zve7LxLlWz=&cl~D@Dy6GD-#)@N6B+6QFnecQv!%<_92U7^|?T${*U+)uP-1h4(mgD zJUkLlA9&5EJU)s78uji7E833oG#w(R-s7VI)<{Mr6jzeFHaJ=l0Wea_J|=Ja!~WIm zsub?Bui@a8TMCE1FjHbH`OF&aIX&w+{YanzotOT|Q*m;P6aTnxQh~YCs?O9F+;Lou z7~8$2N=kb33gw`PRf@D$@TPx>H-V!WthB+%Cnk7a|5t~t3YBGvKkH1XRCznQY6I)z zp1 &QZn*O4_GD=IDE(vDS7OFCAfR&GfN)@rPTt26k$_c8LD+)(xJj{OOY zMqY6fhJkOyepRu*Hc<+#ab)dl1qCFQsN&}RrpgU8|J9uozB+$;Sm^HDZrtx0HZTIg z=z?+f8ZaeMl~uK`dW5i13rEN#N*?*X>LJ2dEF5B0KtMCCE{7P_oA;Y4H_#3{7QQ-v zdX!#~QL!L@;J$Q9HGVi+rVE3y;;b`0CzwE)Q5OH5H$pQu7w(=$jhU?+H7B_+?2wbq z_}%fu#u)qUp2nSvCCs}Vc90+ND-cVX(_KpIp90C7%Oz)sUxQp)VvPAN>Wnc679Vn~ zOTQRb#(vu @Z zS$5t-Ff*}ctG(nmp_OT~HUWKLQe^)Q9p(!aQsXGE>g0~|1vscY5gj9M7;iQF+wUDG z;g1#swkrxKdC8xBNIPPMsqx1zKq0{IAiI6}Ot)G4qx=n@{J{W^Gvnl?c6YSH)fJwX zR%mVob*}tg@X|EA#1j$J*ya70I=Z81ok&-mLRUwZS^IW!ncY-$W$Ku&Vs-qk)P;{U zDT@&`8~$ZBf(53`i2^TMSJW=&vts%DrFrek%S;dmb=Xq^gGiXjp!qNQbjLWfIx497 zH-`Gc(Lt5AK1awRtKJ>+f|W3Z7Y3u|n*U!5Q}up8t6vg`AB!uNj5Y{X1$l6d^2lI7 zOQBOem8#d$KJ$W==u 4F+YZ0%4gZmDT^Fdr-_)EC>HS(k@Eam z%*i0b7;DoBBgZ0sYQ5)IlyEgTybQbPxQjfU&}Lmq6(M)UJB(1n?c+{?ekjCQ$8C zfz*DwZR2$?i2~-l&MIX>g=L;#;SYJ$D#GL4tc2*nvp*Z<$Ix7qFJ&Ze73qD62T;R^ z#?}adzBo0>zd;@azxil6LkElQJEL1{oOlZK8??-oTQB$k3k|cmU2imZc9$Bg-;Fb{ zgjstOjTfChc?$F!v;(u&0)F{I @Dsdh!pcYPW0g }5IT&T^>?3T)qL)|13W`1O zW5)LR*B1ncLP7o4;_R%i&ExG)iddk1rUfQeCM82&V4UF+b9gThf91pUG1$Or0%A0w z^V_wP`4XiCyE-%JhVxb*nW!QdWr{dZ>4BsT`0HB!goUZ;iT~y!jjgg}w#52*?7V$E zo5FMjku)Sir~l{;Srnwh!`=&B=%Jy %OjU{*oCdvxc9NCrFE2cAJ!@;5lYIFF?Q3bMvg_k^9 zzU)^G+O@Z4%lw!bT4m6VGAu`ujjk~0dSX%vvw^(1Ir0OBs3jwg+K#hre(q${t}qM- zqmLbh@#I=LF_g{6VwagVZ+Gm~-2wOqDrYb9t|$&>-&i^?o*Ljk{Q7$=*L#TNDogSb z|5aRJQUerz7DjnkbABxZb^Vr2z&rI@{39-zh}+LJFOQ{w-nV#h+x;%tp|=)!OLM9T zY$YL-AJbb30glBoH2HwY7LvW5VXeH#RyHc~3wl20vLXZaB2Rt%cbhqBA4=4a4DGc@wYeNNQAwU zf1CQ>B717)LA7!J)6PRyx6JcK{iwB;J|pY45!d@8Ld8goai4{4nDNI1MfU eEP{2u~<|J$QNQnzk>fA3(woptKW{<~2$W6+qs}h~lh8}9kQZbi-=-OSt>_QPpL?UxR2;nJuTSIjR=%`vuTx}E zA_TQ-1N}4Hpzu5;KVSAQE)kgi5{ae&G#etIZdble;Mj;%psD;p8N^{DzX&2V43O(7 z>!rv*%)ja3%rrWq;UhKAleg(r*4=sZR}i#M$C2;{DPveRd`XfHayMZdjs2ZgeYbJY zqPGgh+3(#Zje~l#dC+Jy_#5o!F5$;@-e^s(2LJT>*~z=(ldZF}{a3BV`!_7_bckd9 z;NSpVtB9ZP-<=;3;e-J~>)S2+|BpaNC8jwKoYnzO$FmgfbC>G(N1#%1R(JDRZ65Y| z&BI2 ;LL!CxQ2p^couJ_2S+>v`2i^I#VQOj#8vh{mMz1APAG!GDIa;0M(TzTv08 zeefR}hueGG2YXGQIn!p|Uc1-WNz=V1+I!kT42b?V-1?>uMhcv>n*e|S-7Lsr8 z<*Ve+{j_uWPe%x(_%CN$YOO4`M0V;;s_&ar;x`(*$w~{Qo#rgn&N6WOek*4w+60Lq z6nTrs7#&{{2`gYEP!!$;Uo GaZXxEigyz-KTT{gO_X#pE?=CC>`G0~F@{Ngw8Q zR@SV^P{a-C1loUI3BC8%$#MJ7IDPpfz9TICPO9foQ!fFAT1VqiY~vV`d@E4#1l2wd z3CE+sU>O3Q2JoAw*>VEb$X0(88^>zK>n1OEem~Xh21$==Iijz4QBRB{+>HZDR%w zS_Vnv+@oUT* cAsm(w$tG+{`jkB_!-;_x1OU?(t{2FI^Xr= ziEDcivvGE>W>M3NQ_(Ulcr%+^j;_z4r2v1X12T_~ef7wpZIF6?oi+An51Y~Tbg5(3 z@il{06{>8Ub*EaP=a0FXPCqCepkHOv*Vs+rwZ`<_^s|q=h7U%C+rGWnYf2=~3e#jB z8=>K3JS%Sn8J#DbM0zu9RnE&N#i)3P;osWP JV
u2P0r-3=q!*ckYt>m zcLsPM!tzj3s>pmHJT i@RmYx4W5h!w-?xhA>ScDa$)iqu9O&c zfktL!E@`_N5@#)9DgjtJUjZ4duy;tG*CuiWd10065NYgeGQAxXt`L@vF44|HI76{& zS!P%aZ%^=z{iVoUuH})HvP3Lub5*tp2Ax0%saZ~r(kViw4z>^t6TN#3LmsV-CSC3j z8ae)y)Q+#Sp&EQu^_ klX$m(sH!h_<=j_}}KS48`nYhblT$cZj&wfZgz}V$g1jtMc8@R~E9@U)5L4rG9 zTx@W1%7h}_!rzV%)^R+|J~8GdMmWOL5DwJ->~g^3>i(j8k %W_olQWKbeeqZb4gKYC6`+<`9leu`_$!e zyOLg`Ybf-v^0DfI;|lw9NISajNt}3qe)G-o^M8K&sLSi^zJKJbTVHHZ8vJx&cr4&dLTB^bN-$am7b0~x*Pd|gWlje!$uYg zT)RcQK6#P6i$N?txH+=ZC|)WRh+J6?J#-zdMAU;QY?y^AcSgdS5f&4YSu-O^1tC8O zSfX6JLb%1rDeo%&X@Em5If=8V=0C-JDn&woFVY$O5>mdi)P6MIgRNh+o8oOOn^G-Z zd#=AHkKvpF3-~~T%o_aEu(-w}3G;;49<5qC#Sig5pmHDbyvUkA>F;sKHr_UV0cQv{ z=6f8JStQva8$HAK ulLdSV!}(Ii*x~^I7;;@`#2LVWok` z#47zx2yIw7R5g(b&Y3ZKesiw;+x2=QapS+RK0hHP*QUN2dG$=+*%ZKDp=jsKVOp}o zE&*FLSXAAdSmu5V!6WYu1al}J1QKESMyaWWa!+*RTOx=QQ8ZXmo~E~WxWOB!IiUvv z;!C2Y9nhu;s*Q3u{fpe?UAr9CvE-B-ddpwuVZv~JlffAc8twLAR<&=M=P4LBD){7i zw1Szon8gKAc2)sAjbdjK7@WA_9HICbeY_g+Vnr0Ak4bE}YU7oj2!wqGdek{X5HM&~ z1)fzFfv2 1UHox~kY*m%-nGNm9X9WfdHn-_Vbq1$DRdXis-|_JRz9bue$`R{ z>EXyY9l}r4pHWt}L{~i_N^}|I!bGoc*Mo?W?8-SUc|ieL#?MB{Zbw`oU7@49A~-ff z_=k3p;k1I}*xwU4$^c5%lMuoAk0Chq^u@O}f;qcH^sH1R?D<#*dqD0XRVc6 !eV5Thq zl~Ipa1x6@pIOR(?RC|NlFnyQZ!FGJ=T3Kh#X-hurK#-2F+PJvWIMZ*MOlq5du0fEj z?rMa<3nA#2G-1w=mYgn2#zH-RfphIvZBJr%j-!y+35Qnj9%WC)qfXYHjgbgYR!8J8 zZb&=2W?R9H$q|~xlM;J!1daD1bN18m$%;=h+jIH}wxG?BmAn3E+`-PFC>t`N E=Q2Fjgugo=RUZzA+I0{PuZN;oDC_Rxo&yJEzvp6-P z`?N!i^^cpus0(Yez~pyLer $7C!UgNXC9Gb8&Bi zOEIxRq8J;MBq?%_A|}sB8{wYlDlKSScouL-wUWk#hw!s&S{p^qbR4H}+EIVp8N?vI zBv!#J-It(&Da#N$oo3l`N%J25NpBPEb@NyGngV@AR@vx2;8W$k=0;6QCoS6Cdy80B zZxV@JK`1j7tEqZcoC!zdBEIpRUq~G)-P=S-%#m(ixl4yznU%Qj7`IHXAepixog_c# zda(SQOfw0lmYm`NXcm!cW syHKP}tc}Gp7dMoRnl22{^f*?X2j&(4@PKLIp zPjRi;ia4@LJ)SsK!%~k%!E_Bo%*DW!l<@a`jL?%5!NXbWcXv<0Be3| dEj$tN_JY5kTkYSwpFGSRmikDfG! ; zr>r`F##uIn^%M-?8A}I_P(k%If>tb#&0S$~-S7MooE54G^Fc@4NVHikLPn_YX$672 z27QQ?3e3CQjL{JvH>z>}x)6$J4O|dp_i{-J9ia+>bxJUhvemx^MmLOiB4z~{JS_@d ze${iQ-qyquRfX8V)df*3R0tKH)@vh(ODLmIBj$j3<@>Eyqlq0}0$Ah7e mdH~eSfpVAM0BRRd+CeucQxxR_$^D-KAi>vhFAV@lMmgCk&&6oDI9bst zuDrAY1wB#9?I&o#5L9XZly5}<1dkX+E*DCC00K}=d@*bf3LTCxw%VmIup01;o+|-; zJKF$Miq!~wW5@tfqi<~Yf^u3GA`^i7*-;JWHeF#Q1>xEy1u!mYtc6c0RA8|ZLh6Nr z%WiIg5khIXWu6kb@D!R6P%XO*ta>vD;Pk?BpC;4zR)96?y%7aXIW);1C;})wWxggo zfO6W()xuR!N+}pX ;gEgw^B3jt4;z~2e;VGKLRhCRggF*%d T zb4;bqWR;93?RMVk&Ov>@k)?Ip>eJ~*c)B;d#3yY$O8c2l8in(8yOlS2xR>s=8@qWD z71Jclq#jIQ0X1Oc0Q=?pB$~WrXM4APu)C9NHFvfTnmfBe_LAn;p46v-z*&-17wL9` z1V8oU;Z-)i$QrO}2B4(>ao~{dCx<}7Uo;S80YZM0o!xr9$<(c07NF+tUK79REI=#g zH(4_Ukjpar%|^Pvzk3jHVdrv)ix_Wr9r{5cW78lTULdH7iQqWMdQ;K!eUJO!lzd8H z7`V`*JXThPqGU>hamW+?h8c;Roxj<{%|&M(S$clQfp%qeT<}6 zKb-%|*{lEc;)$_VP+Dt)u&k%m@m&ZzjZx?F@z1sG?Wae_Z{M9BzkdDVR4u)qYfrSQ zk*Ebi#t{dtox}ZJcF+zcB620JIL=8CsUHfuiy2)8AVj05A4-~Y =&uyn^P4R5qlI zJb{8@vvII6K6G&{CIO@M**pv65t ufxC*aB5L5-E+ZG8N8>3>a^M1C^2mhA41l zgYycZnfc4CKM8eP>`oOe(4PXlW-g;(=txLrn<_&|)i Gc%Rna9}$^t(|Yl_W1xq~&~6gef(c;vZBku4G-%P)k`!WgN-$ z{! Ue*)XDAQHCv)qsqQ7|7tTeNl=M;IqxV8M9=R}zygw3)UJ zchmh&a2|2*K7Sj__W0nze?j8M>1Z_Qz-4S|l0g2=?t}lNfA4qAkN?&9Gn^}|WSstk zLA#M7g=~sDox}ECjudl6&L-!gsPt}5YMyUK*Z%dXm^iY%@3wxJb@rS2Jx?AbZ0k6F zEOUw4+u1p2BwLNv_U>W*@ZaAhN=~AcmnaQUdWmY(8;7lipCqzTZ?<+@hd4~%^Cha) z$r-27ZFYCs2h5|Y-m!efK?LV%Uykv6k0{IkfK{IOmj&~)D({SA#htM(y@-}x=+bty zw5>{&Oo&0Kl7e!fb(jybvwP6)9yFK&I5tQz>Ea-{On9B+cYFDAVl=k ?KqaUz2`q0P*Rp3JyL(Oh<48+ KIj{!x@XqZ6TiesRLU?(E+BG0VQ5dD z$0m6GhX7>>^-l;kloi4Qf^n1jr=I>Wi?SJ-Tz}QAR$WQw5`#4sCP?zmgAS-NzfTpk z#uBA`0#0W`v5(7fTe7#C?9=&hb|qUu-bi_eZ)aC+Q2mHoM-IP2r_)Q=Hh2F#YIF0= zTPpAQom5EvdDKqMyecJ~i};Fhxbt@8xU5>9{(yMKu)<*=aytP9{vexLJ0DPRg7-)Z z%fet3{L$}WG=s9*uVn@T8&cbv;uTh}!ht$+zE=9}Rbz36I*|-mYakJ^fSH3rq{iy~ z!*3^D%GT;M+mdADA71>= ;y`?54R>dH}EAx_!!R1Zs*kX3V z>UnuV7a!%MIvr8;70fl)L`YR<+}LGE^URo#B2?ulIg*U-e*JaOLT)f_Be %n5m4Xh54D;` zFI4vI6O*fOvz#qQNwu>rg_Nj0lQ%qws@j3+U&RD2Vbr?ghU>EXkzHBIbDWUSHHc#6 zOx3nS>4LLZN9^R5889U-W0yoKRt$9BE{H3~h-bWIFkwnV)=Ap8$y;U~vIA#tbC9t& z2j`f gXpwnkLmuk<;}1SX2ouGM1!iEioTEaT5->_v7Uahr{ gjoqk z;Xxw?!a**8qF#6 Xo5!buz?aFRg8#~lss?uFOe#oz`J765 zu9U1)uKH^ty6EkKe=n+8?DXTS6i$<`dhk-EF*V}H_{~I@Rle#YE8eanVh39*JRi$R z&~LXIy<8sQ=m^KMPT{7sCRQ*);82&rh^I7$?K;gSkmaD*FgXd^SQ9U$Yrzpr_-`5X zj>Z1M_*&o$Ckw@Ip#nKA84I&%XYzUql|$Z` I zS=r8xveL-Eyfux1V_8RLIUhM!Hv&`sCdbaTT{(Cz@!#Ia-}T*lqUCn~XT#xsD3ulW zEazV2Y)Jfir&|_B^a}Y9LMg@)oLQWr-@ P z#`( t~V&9IF-OIdhvq7h-2r3Mg~XEgX#RTn_2M?c~_!Lie&i z?*0bGwi_ASOS}=nqWkNgIN0aQWeWeX6Zf(|M!LkWcxplPz=&EFhT(TXF~)2dOp5r$0WTMMLAdN zGzu{>m%9J4KWN7LlXIjK2Lnm})648!{ix1 !i%AA4o`#W z ew}eOdTXrtji6V#IGdd{7UxFLt6W0nIcLN2(GHx|9KW!%4)2@pVWY%1g=fwOepERcB#F^N;72Dxd~7k#dLf8)r6-*D zQiL$#SVA{enw8)kPdp$3um)YG3E{abM8KL1pX7KJ1R%;A6HUQcASkR|-NIHw!onF- z{t$-9s_>LS*>Hy7YVePy1$ qjhyB4t2C%xj`W+5{z9hCvkFnYZYw3yE+YGC3zfz4-^V zbP@ZCmhr{3v;Z%u(K2~>jF#~IE?R*1uITUPfhZ`HRbXCNDob}OOT$1T((>#ksKu!y zxlT$;%InC2FRgbJ&Zdcm__nkXFJD37pO6U(KR1;Jyxh-lmMj4izi=J*LS5y`06XJ{ z0;ig9bT0fq+v-n*$>UvI9k9!q(xuu*pA~r8ErFII2g7E_ZwjTRk73it5GOttLw$ZJ z>(j@uctB`%bLZ7&b2n@6^qk08p5wUd)BZOxpZ5RQINaXbKG X245@8WQ`*={xW z594Q$r^eA8_7oR`5mJBnfxd#`fBeVhcHQ?~FNXeV?c}}h?x%Zcr=5q=^<0o+z2ort z06stxaH&>flvL46C5`RF`rg4I|2^2>X#|ezjXR0{HB3~Hy9B17mxv%GVH#oB)k|hW z@uB0_NqUnp?3(;e|0QwLMGaRg$QF2vm>?}1z9N&lN+uwcu8^L01{Y;!7my#=m-%y; zU^h}JA<)|+wP{aiyWQQ9uwOMiKLzo^%nyKwh5{?`Vn>LzT^yUS* J zYxQ J}6(0-E8+DJ8YH2ig1UcCc1Pz zs^Z0$VtUx>wbPyx*sqL^rsLA3Sl>nriB__+y?;>O+YgrF-kmH(EHtwg@%0N`jAqq2 ztMg$EO8FY}`dp@sB>xjnsZHlk{iwK;Jd{mP9s+87PTO^W@V;caP!a#oG6PkpcKJ;; z$#1qL{-GM-w`HV3qrUqk#I$g>v;F;p!)~YSN*!B1OG<;ZbGXx}*Gr^- z(m_^@;3S>D0OGzxFot)Ygr|JDYO$Q|CP6ElA6*}3vR?mF0AcInU^cA;kSG3leRdO9 z$nh-}2oONdf>9^{X&8B(*4o#gEA?XRwpIqo@XYK|46v$zCK*VVBJ5hn0wBDWm5w zat X#$k>Cya#o@iGg8zR6r&A|YCNDN _eu9rNb6g!bKXJ};jEmQfIF9}`L|;k^O$0V%TOVdXAEz6mbxw5*T*-7iUj6T?bGGw W?m+Recao3_vMH}W(opg%DbsGw{RliIIsFKFP(RJ zW>#%y5e;0!iy4hDYD|Wg8w~TO>ev;w{R9<@(aHXd@R>t|BCtKPJ@rbD5iB1sj>-6z zLGE;fpwLJ<8DcgZ$xU%nh+zxo(9CB6k_~{EU&+vA`S^-U#e`Ed*;Ln#`!ok%J@7N; zDvbBM0yE&0WavG=>k~#*S7}GfDZdI5OVM6oQ8fcApdgXum!ZY`VINxTE98XT=yaHL zlgprD!t9Q-Eh|X;`es$EKp36k(r>StL;ri0A?m1k%={zt8;A^u_YCB9xbWLq123Ce z({HgFv!l!Ypo_q^S4eI uek=o1NG1r fUs$isI?o%l7Yq-pI(jK=UT8#l)Maj&tT=c z^&FLw9x{K73TL;aX}3gZ+udkr+fzK)@y=u^OkI<6$s^(I&5Wkkw0IR8qh)0j^bAtZ zr`8&Kj)x6%O#3ZYue9UqNHFuI$xrH35zHjGUIsH27xLDxvgvEAPB-m$QcbZaUTaLB zlYH7o!}>_;9+PK Ylh=)JJZHQu*T~T1=b+$V+}jRSz+BsM+ysmO=>TJQSxIp zVmiRW1WUQf AHZBL$4DK1Zqv22oC)<43!W3C2&YgS*3cgiw1N zwfP=`;k~pAg}zkzNqrB2m=aj`TRX$|K68S@NbzhohB(WTr^(R_Y2XU;l}9gS>s&87 zq@<{r&UL!#TUbA7Y2>(1=XI;r8L|f}ldn8SxlakpQ>usL1MqJ52mNVb8VqX{g8mS1 zhqL~n$X1;EaV9ZNV>|%(s!vU@fyNQBSD||GF=xdZjpkFZOi3%Yfzfbq%T_czOtfzc zbKy4kziB)%`WUoY+8k5Ms5)gWZ&hPjdo`39Qe$ q*RglLU?Z2bnutG-B}XOx+-+E`IRW5!jmAyHFz=_++N_`4*3oN zk_(f^Z)DU38kv zmX0pb&O$gtv1(anr~*HxK|21W$Xv#ZCaL{3u~L?ZCEqi-@xS@2wQLg%I)O}6vz#2I zQ@D-|wvMECZ(ccnwb7)@9YQ0=pOV@!G*D{rRn>Dkvr@Q9R$Nv2tT=O8=wb7GAdfFT zv7>zOqn~h$crC^U>rMPdsjJ5Nxu{D9`^zj1&jOadWH&9LlK&BdG!zztA&-R}(d5M? z;=IgRT3BtC)sk<%Puzu2Tz7di9GFF5ReCsVY;IgimG`k(-e;fiTvXOqCH#MU_CxYv z`U$b}aKkJp3(VB8fs1VH5yqJuFSgKzC#Os(GGx=+QF5cAo2wDxO_29ef1t!iLR-D) zUSt!zOAiXCRsp~eY6^hIw4>1&rkI7ppU)Sck7@D={G4plLrAB&eDm@{I$noyc9)c! z%dF}u#yPthjiB?*z&*Dxa~&5RH7(1WU8ZA-ua4q}D&{eunQ$4INLPw*;|`cDghv+O z>+}M8o~o*#n5~N2PSWP}6*E=5HOdh70Q?;HG>Lu|)2RvmGAW7;6{pEJz5eg45Zs z{VB0K6{dum07sq2%8_HH*QUOJM`yq`jdNOd0Xw4DG#McqIcc&ZN6r>k3yZBz<{5&W zA>=8d;X^+#Nj_foJC{i(9a0H{+h3PATV @$yE`r;U7 zR%7p$V5eDc0G$%mBX5EnY=ksa8(nkQ-p<5ghiZYof#sHL$8sw~(m&*VNj~ -pqPuE!aSard1g?&1t9bF@1JN8?Ee)A0?Q#}3g#qpaL?@s^a zn{Q&1?A07++~#h0M|}#k=D^?CB=XWfe-a6Gf0M}Gf1gD1p7XKNP`s??OyO&INKfy0 z2}&P&1!4ituArBO)z@cPcduXl_|v bKdo#KahA5ggu zd0u4ApY-=QWE;8HegS6)Hs*UAbkaxK6Tt=teSA+IPt+v@Jr$I?gbJx0@?y2Bj;(}s zH2<1YN@X{ng?~TxyTt_L#5~T#$sgm;hLuBA6WemmjM4L(bLHQz*Bi;+=b^qDd39fR zHU+R(DB3xDWQSb>wra4bx;e4T{TPBr-W>?$P&{~hV0p-wYw)rf%01DMZ;4Fs7m5 fcTQAX$Q1vf;wq$7rD#3b~$7jOU^TRL_zhj>~$U{4Cgo5VAR3u zc6%@@m>79InCB@NH!Aq#d9;F=wwT2Q8+29ye2ije5*VBqe{DV`LGd&Ccs1h1iYP`O zlh|<8#w$G$2%8u5sB?xOV9=}zJgY1M&tL)rp {J$s&BDMkc zD#KZm?jVlF{WemcRxC6RmuKY_%)HG%Bum$^iF02mik!t~38^S^Sa=I0p&jWL%6G%v zh2@u%ZP|6y^eJZ7(GUI3@~eo7TD2!cABQ+P+kqB$@y8)Tnt51z*A8EI*t|pL^$+}o zQ5R;X&|NUAn%0F{`J9^iRZ9V+hYRC$h&UepjIy#Ny6P!;Sqix@(HWIJ#`?}_3Eq+Z z7|b}dCDZz3w 5Z;PXKwC?IXYt0 zr)>Nx*n?s)(-wfrs7I^ n$-?@{(-JnCfK z**G1@ov7%YOjtwO5yG`iFM}JCBQ#@slp|=o7n!r4j!#y6lG&cqPp}1ThOFH6N8=8x zG|KFwEx*1b9JT>VTZ2JzJezt+JV{`F43XyxoT%Q!q4M30UYTps=0}O7a1~ktXe(xI zLFtLyd3Kb`Q6sufJJeYJ+!Kttur`UW)8So{Uz^|u%dkj#*sO|$KC*YciJ7aqWM1Gr z6xbiJ{=D-LF1^Z2K(RygOvZNPK%`mbm=@v+^N_y;n1><_{C 4liIMX)!aTqM=u6<8G;-c4a*rY=&qy2Lp6DtqXk2&}a7eY1#)XIQvuj!#MaC%1 z1L;{i>W`6UBLeXyu?lACzL*83EJN&cnq|u+&3pJKy-l#!&0pn YqNy+M}1$!$IT~I zFY^_Ie*++-i5N^saP>eRLVrobbw+hxgzb!OqNg~^%||5whK>syHKP}tc}Gp7dMoRn zB1Vpx3LwG$mOz$?M d`2eu7ODB5x9~P{=Sb99W@6LJe;+D zclQ)L0*fF02&Ug-1UU{DmE{&ZZ3}2}TncL#XZ{NjwWQ)D8PdOsdl)szSc7OTD&qs! zRr&=(^U{Wnob)1vA@GT?#7*{8WO+DhVI_+s*wHp|JdA0-!eM-t=`+)&lD34yu#@-d zVmKOS)?FMieDu4Z)+Bx5TUBA4_qAH!lF-4?atvLNU zwZ&_gbu<4|5S6zMtF3=@j*fBT1lPK3{ZG-b!McjHLrds6jEx${Il{mdEC PbFzcwD8mIuPltE=u|Pj!#o|Pw=gca z$q^9-=r(n(E1IJ^CBUAMyrQ6x_YEy&Oj zl-xM}rqm#x^9?R+k5GB|#qx3+0 w8ocSRdB;j@B5!vb1T1?7Uh zJv;=(wz`}xf?~_ *ILyOB9%v@$Rgy#-IPNL|gqaew#&QXJ5&)T_vJMBLIw!cC zMgwqJHfYd^TM)pIQ#6S6QV)QbX+Q(z4!;2u6P#=J+@MTRlnW&HehPrpGFOh9bZQF# zNJcr=D!;{Oxwu%B)-E_;MO(l~mD5j9Y6$9j jlegB3?Mc7#&Rzxr(I#)|LmxSbBnI9l7eupk^&f)G}gYS z6e_S+2_Z!u73?oUC@r_#b*#{gfNI%gVAYF30H+t0`!Jctw*oMw_d*mj< zr?Cs*wAM<^ystP3U>)3I_x=dH>^8-$Cv7M3W3QJr zx~)B%kA(UXrYU}a&obGh+fH(uY`@-Xb`K<*G!DK`uMp({NsEVmmRe=&E*WVS$QRvq z6KZw#JN2w}0FTC}e)}+(dN6@4)POMr?3eG8XabY1{Z@Uuxs&Yd*SGgt2SEap=GT_M zBuH6;EKoX4Z=RazEfga l7pKRoSDu Oxd*YaG=CJ}}z=v>Y*bfT1l3Kd9;#Pp@zbDxRpG^?PbdU`% z5a@-$)+AdUzeU=K|A=cVd}}b8$3NG$x1SyzzkPRl{QC8a)2EYBe{e1f@8{YRtt(U- zaWiyWj*u8^6XV|5ZWV^T%BaIukXO3cFk{$Pjd+q}U4OuVV0467quuTH+B=fs*B3I8 zdwluP@5!Tz^C=p~6qg@}rSxM)?h0f(_ZKNg%GdCQT@!xc)-Etg)&_0JQBe|U!Rv_p z8$i@ r7^stnDK8nxTQs32 zA s!yQTt5!_2!m^694#Keu!p{L)V)_!(uuRlh6iDM~+67~)6z znbOtpGqva7C-jSBXlW$HA&!3eYFOso&%sk2M#kyKfRI|Pk`3wPgEL1Os-Mi^S4x>F zHfV%53MB*%f-=qp)Ytt`gw-Z}xY}l)xS+6_#mBQm%A5cMexTf)C;eYTSw&(x<*QNC zG*F^BRV!L;&=_S=0_g$>B#IyP*J^mEx*^AyMawH0^OSPeg|{B`=K;~pl+A^E`jm-| zlsy+h>5Oz9^M8DVg4cRZoJa7j1bR=Fy-<^poMASSt;CQHf3fsfonp3_`w+*OM~^tg zH`%B2&c|+4J-Ll?#X$SPSja%>5TUqX5FHenfnLuBh*buc4>}45P-G9)d`#_zG6sA~ zLq%`x@~ZcaxQ{yFIiQ8#5tAe6thrrpG