From 6a336ba6a0db29da0bee0a2ecf44857780ec682b Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Mon, 22 Feb 2016 13:55:48 +0000 Subject: [PATCH] docs(guide/component-router): initial draft for component router 0.2.0 Closes #14131 --- docs/content/guide/component-router.ngdoc | 1044 +++++++++++++++++ .../guide/component-based-architecture.svg | 4 + docs/img/guide/component-hierarchy.svg | 4 + docs/img/guide/component-routes.svg | 4 + docs/img/guide/crisis-detail.png | Bin 0 -> 33701 bytes docs/img/guide/crisis-list.png | Bin 0 -> 39481 bytes docs/img/guide/hero-detail.png | Bin 0 -> 28177 bytes docs/img/guide/heroes-list.png | Bin 0 -> 30607 bytes lib/grunt/utils.js | 2 +- src/ngComponentRouter/Router.js | 122 ++ 10 files changed, 1179 insertions(+), 1 deletion(-) create mode 100644 docs/content/guide/component-router.ngdoc create mode 100644 docs/img/guide/component-based-architecture.svg create mode 100644 docs/img/guide/component-hierarchy.svg create mode 100644 docs/img/guide/component-routes.svg create mode 100644 docs/img/guide/crisis-detail.png create mode 100644 docs/img/guide/crisis-list.png create mode 100644 docs/img/guide/hero-detail.png create mode 100644 docs/img/guide/heroes-list.png create mode 100644 src/ngComponentRouter/Router.js diff --git a/docs/content/guide/component-router.ngdoc b/docs/content/guide/component-router.ngdoc new file mode 100644 index 000000000000..1a7269329425 --- /dev/null +++ b/docs/content/guide/component-router.ngdoc @@ -0,0 +1,1044 @@ +@ngdoc overview +@name Component Router +@sortOrder 305 +@description + +# Component Router + +This guide describes the new Component Router for AngularJS 1.5. + +
+ If you are looking for information about the old router for AngularJS 1.4 and + earlier have a look at the {@link ngRoute} module. + + If you are looking for information about the Component Router for Angular 2 then + check out the [Angular 2 Router Guide](https://angular.io/docs/ts/latest/guide/router.html). +
+ +## Overview + +Here is a table of the main concepts used in the Component Router. + +| Concept | Description | +| ----------------------|-------------------------------------------------------------------------------------- | +| Router | Displays the Routing Components for the active Route. Manages navigation from one component to the next. | +| RootRouter | The top level Router that interacts with the current URL location | +| RouteConfig | Configures a Router with RouteDefinitions, each mapping a URL path to a component. | +| Routing Component | An Angular component with a RouteConfig and an associated Router. | +| RouteDefinition | Defines how the router should navigate to a component based on a URL pattern. | +| ngOutlet | The directive (``) that marks where the router should display a view. | +| ngLink | The directive (`ng-link="..."`) for binding a clickable HTML element to a route, via a Link Paramaters Array. | +| Link Parameters Array | An array that the router inteprets into a routing instruction. We can bind a RouterLink to that array or pass the array as an argument to the Router.navigate method. | + + +## Component-based Applications + +It recommended to develop AngularJS applications as a hierarchy of Components. Each Component +is an isolated part of the application, which is responsible for its own user interface and has +a well defined programmatic interface to the Component that contains it. Take a look at the +{@link guide/component component guide} for more information. + +![Component Based Architecture](img/guide/component-based-architecture.svg) + + +## URLs and Navigation + +In most applications, users navigate from one view to the next as they perform application tasks. +The browser provides a familiar model of application navigation. We enter a URL in the address bar +or click on a link and the browser navigates to a new page. We click the browser's back and forward +buttons and the browser navigates backward and forward through the history of pages we've seen. + +We understand that each view corresponds to a particular URL. In a Component-based application, +each of these views is implemented by one or more Components. + + +## Component Routes + +**How do we choose which Components to display given a particular URL?** + +When using the Component Router, each **Component** in the application can have a **Router** associated +with it. This **Router** contains a mapping of URL segments to child **Components**. + +```js +$routeConfig: [ + { path: '/a/b/c', component: 'someComponent' }, ... +] +``` + +This means that for a given URL the **Router** will render an associated child **Component**. + + +## Outlets + +**How do we know where to render a child Component?** + +Each **Routing Component**, needs to have a template that contains one or more **Outlets**, which is +where its child **Components** are rendered. We specify the **Outlet** in the template using the +{@link ngOutlet ``} directive. + +```html + +``` + +*In the future `ng-outlet` will be able to render different child **Components** for a given **Route** +by specifying a `name` attribute.* + + +## Root Router and Component + +**How does the Component Router know which Component to render first?** + +All Component Router applications must contain a top level **Routing Component**, which is associated with +a top level **Root Router**. + +The **Root Router** is the starting point for all navigation. You can access this **Router** by injecting the +`$rootRouter` service. + +We define the top level **Root Component** by providing a value for the {@link $routerRootComponent} service. + +```js +myModule.value('$routerRootComponent', 'myApp'); +``` + +Here we have specified that the **Root Component** is the component directive with the name `myApp`. + +Remember to instantiate this **Root Component** in our `index.html` file. + +```html + +``` + +## Route Matching + +When we navigate to any given URL, the {@link $rootRouter} matches its **Route Config** against the URL. +If a **Route Definition** in the **Route Config** recognizes a part of the URL then the **Component** +associated with the **Route Definition** is instantiated and rendered in the **Outlet**. + +If the new **Component** contains routes of its own then a new **Router ({@link ChildRouter})** is created for +this **Routing Component**. + +The {@link ChildRouter} for the new **Routing Component** then attempts to match its **Route Config** against +the parts of the URL that have not already been matched by the previous **Router**. + +This process continues until we run out of **Routing Components** or consume the entire URL. + +![Routed Components](img/guide/component-routes.svg) + +In the previous diagram can see that the URL `/heros/2` has been matched against the `App`, `Heroes` and +`HeroDetail` **Routing Components**. The **Routers** for each of the **Routing Components** consumed a part +of the URL: "/", "/heroes" and "/2" respectively. + +The result is that we end up with a hierarchy of **Routing Components** rendered in **Outlets**, via the +{@link ngOutlet} directive, in each **Routing Component's** template, as you can see in the following diagram. + +![Component Hierarchy](img/guide/component-hierarchy.svg) + + +# Example Heroes App + +You can see the complete application running below. + + + + +

Component Router

+ + + + +
+ + + angular.module('app', ['ngComponentRouter', 'heroes', 'crisis-center']) + + .config(function($locationProvider) { + $locationProvider.html5Mode(true); + }) + + .value('$routerRootComponent', 'app') + + .component('app', { + template: + '\n' + + '\n', + $routeConfig: [ + {path: '/crisis-center/...', name: 'CrisisCenter', component: 'crisisCenter', useAsDefault: true}, + {path: '/heroes/...', name: 'Heroes', component: 'heroes' } + ] + }); + + + + angular.module('heroes', []) + .service('heroService', HeroService) + + .component('heroes', { + template: '

Heroes

', + $routeConfig: [ + {path: '/', name: 'HeroList', component: 'heroList', useAsDefault: true}, + {path: '/:id', name: 'HeroDetail', component: 'heroDetail'} + ] + }) + + .component('heroList', { + template: + '
\n' + + '{{hero.name}}\n' + + '
', + controller: HeroListComponent + }) + + .component('heroDetail', { + template: + '
\n' + + '

"{{$ctrl.hero.name}}"

\n' + + '
\n' + + ' {{$ctrl.hero.id}}
\n' + + '
\n' + + ' \n' + + ' \n' + + '
\n' + + ' \n' + + '
\n', + bindings: { $router: '<' }, + controller: HeroDetailComponent + }); + + + function HeroService($q) { + var heroesPromise = $q.when([ + { id: 11, name: 'Mr. Nice' }, + { id: 12, name: 'Narco' }, + { id: 13, name: 'Bombasto' }, + { id: 14, name: 'Celeritas' }, + { id: 15, name: 'Magneta' }, + { id: 16, name: 'RubberMan' } + ]); + + this.getHeroes = function() { + return heroesPromise; + }; + + this.getHero = function(id) { + return heroesPromise.then(function(heroes) { + for(var i=0; i + + + angular.module('crisis-center', ['dialog']) + .service('crisisService', CrisisService) + + .component('crisisCenter', { + template: '

Crisis Center

', + $routeConfig: [ + {path:'/', name: 'CrisisList', component: 'crisisList', useAsDefault: true}, + {path:'/:id', name: 'CrisisDetail', component: 'crisisDetail'} + ] + }) + + .component('crisisList', { + template: + '
    \n' + + '
  • \n' + + ' {{crisis.id}} {{crisis.name}}\n' + + '
  • \n' + + '
\n', + bindings: { $router: '<' }, + controller: CrisisListComponent, + $canActivate: function($nextInstruction, $prevInstruction) { + console.log('$canActivate', arguments); + } + }) + + .component('crisisDetail', { + templateUrl: 'crisisDetail.html', + bindings: { $router: '<' }, + controller: CrisisDetailComponent + }); + + + function CrisisService($q) { + var crisesPromise = $q.when([ + {id: 1, name: 'Princess Held Captive'}, + {id: 2, name: 'Dragon Burning Cities'}, + {id: 3, name: 'Giant Asteroid Heading For Earth'}, + {id: 4, name: 'Release Deadline Looms'} + ]); + + this.getCrises = function() { + return crisesPromise; + }; + + this.getCrisis = function(id) { + return crisesPromise.then(function(crises) { + for(var i=0; i + + +
+

"{{$ctrl.editName}}"

+
+ {{$ctrl.crisis.id}}
+
+ + +
+ + +
+
+ + + angular.module('dialog', []) + + .service('dialogService', DialogService); + + function DialogService($q) { + this.confirm = function(message) { + return $q.when(window.confirm(message || 'Is it OK?')); + }; + } + + + + h1 {color: #369; font-family: Arial, Helvetica, sans-serif; font-size: 250%;} + h2 { color: #369; font-family: Arial, Helvetica, sans-serif; } + h3 { color: #444; font-weight: lighter; } + body { margin: 2em; } + body, input[text], button { color: #888; font-family: Cambria, Georgia; } + button {padding: 0.2em; font-size: 14px} + + ul {list-style-type: none; margin-left: 1em; padding: 0; width: 20em;} + + li { cursor: pointer; position: relative; left: 0; transition: all 0.2s ease; } + li:hover {color: #369; background-color: #EEE; left: .2em;} + + /* route-link anchor tags */ + a {padding: 5px; text-decoration: none; font-family: Arial, Helvetica, sans-serif; } + a:visited, a:link {color: #444;} + a:hover {color: white; background-color: #1171a3; } + a.router-link-active {color: white; background-color: #52b9e9; } + + .selected { background-color: #EEE; color: #369; } + + .badge { + font-size: small; + color: white; + padding: 0.1em 0.7em; + background-color: #369; + line-height: 1em; + position: relative; + left: -1px; + top: -1px; + } + + crisis-detail input { + width: 20em; + } + + +
+ + +# Getting Started + +In the following sections we will step through building this application. The finished application has views +to display list and detail views of Heroes and Crises. + +## Install the libraries + +It is simplest to use npm to install the **Component Router** module. For this guide we will also install +AngularJS itself via npm: + +```bash +npm init +npm install@1.5.x angular --save +npm install @angular/router --save +``` + + +## Load the scripts + +Just like any Angular application, we load the JavaScript files into our `index.html`: + +```html + + + +``` + + +## Create the `app` module + +In the app.js file, create the main application module `app` which depends upon the `ngComponentRouter` +module, which is provided by the **Component Router** script. + +```js +angular.module('app', ['ngComponentRouter']) +``` + +We must choose what **Location Mode** the **Router** should use. We are going to use HTML5 mode locations, +so that we will not have hash-based paths. We must rely on the browser to provide `pushState` support, +which is true of most modern browsers. See {@link $locationProvider#html5Mode} for more information. + +
+ Using HTML5 mode means that we can have clean URLs for our application routes but it does require that our + web server, which hosts the application, understands that it must respond with the index.html file for + requests to URLs that represent all our application routes. We are going to use the `lite-server` web server + to do this for us. +
+ +```js +.config(function($locationProvider) { + $locationProvider.html5Mode(true); +}) +``` + +Configure the top level routed `App` Component. + +```js +.value('$routerRootComponent', 'app') +``` + +Create a very simple App Component to test that the application is working. + +We are using the Angular 1.5 {@link $compileProvider#component `.component()`} helper method to create +all the **Components** in our application. It is perfectly suited to this task. + +```js +.component('app', { + template: 'It worked!' +}); +``` + +Add a `` element to the head of our index.html. +Remember that we have chosen to use HTML5 mode for the `$location` service. This means that our HTML +must have a base URL. + +```html + + + ... +``` + +## Bootstrap AngularJS + +Bootstrap the Angular application and add the top level App Component. + +```html + +

Component Router

+ + +``` + + +# Implementing the AppComponent + +In the previous section we created a single top level **App Component**. Let's now create some more +**Routing Components** and wire up **Route Config** for those. We start with a Heroes Feature, which +will display one of two views. + +* A list of Heroes that are available: + +![Heroes List View](img/guide/heroes-list.png) + +* A detailed view of a single Hero: + +![Heroes List View](img/guide/hero-detail.png) + +We are going to have a `Heroes` Component for the Heroes feature of our application, and then `HeroList` +and `HeroDetail` **Components** that will actually display the two different views. + + +## App Component + +Configure the **App Component** with a template and **Route Config**: + +```js +.component('app', { + template: + '\n' + + '\n', + $routeConfig: [ + {path: '/heroes/...', name: 'Heroes', component: 'heroes'}, + ] +}); +``` + +The **App Component** has an `` directive in its template. This is where the child **Components** +of this view will be rendered. + +### ngLink + +We have used the `ng-link` directive to create a link to navigate to the Heroes Component. By using this +directive we don't need to know what the actual URL will be. We can leave the Router to generate that for us. + +We have included a link to the Crisis Center but have not included the `ng-link` directive as we have not yet +implemented the CrisisCenter component. + + +### Non-terminal Routes + +We need to tell the **Router** that the `Heroes` **Route Definition** is **non-terminal**, that it should +continue to match **Routes** in its child **Components**. We do this by adding a **continuation ellipsis +(`...`)** to the path of the Heroes Route, `/heroes/...`. +Without the **continuation ellipsis** the `HeroList` **Route** will never be matched because the Router will +stop at the `Heroes` **Routing Component** and not try to match the rest of the URL. + + +## Heroes Feature + +Now we can implement our Heroes Feature which consists of three **Components**: `Heroes`, `HeroList` and +`HeroDetail`. The `Heroes` **Routing Component** simply provides a template containing the {@link ngOutlet} +directive and a **Route Config** that defines a set of child **Routes** which delegate through to the +`HeroList` and `HeroDetail` **Components**. + +## HeroesComponent + +Create a new file `heroes.js`, which defines a new Angular module for the **Components** of this feature +and registers the Heroes **Component**. + +```js +angular.module('heroes', []) + .component('heroes', { + template: '

Heroes

', + $routeConfig: [ + {path: '/', name: 'HeroList', component: 'heroList', useAsDefault: true}, + {path: '/:id', name: 'HeroDetail', component: 'heroDetail'} + ] + }) +``` + +Remember to load this file in the index.html: + +```html + +``` + +and also to add the module as a dependency of the `app` module: + +```js +angular.module('app', ['ngComponentRouter', 'heroes']) +``` + +### Use As Default +The `useAsDefault` property on the `HeroList` **Route Definition**, indicates that if no other **Route +Definition** matches the URL, then this **Route Definition** should be used by default. + +### Route Parameters +The `HeroDetail` Route has a named parameter (`id`), indicated by prefixing the URL segment with a colon, +as part of its `path` property. The **Router** will match anything in this segment and make that value +available to the HeroDetail **Component**. + +### Terminal Routes +Both the Routes in the `HeroesComponent` are terminal, i.e. their routes do not end with `...`. This is +because the `HeroList` and `HeroDetail` will not contain any child routes. + +### Route Names +**What is the difference between the `name` and `component` properties on a Route Definition?** + +The `component` property in a **Route Definition** defines the **Component** directive that will be rendered +into the DOM via the **Outlet**. For example the `heroDetail` **Component** will be rendered into the page +where the `` lives as `. + +The `name` property is used to reference the **Route Definition** when generating URLs or navigating to +**Routes**. For example this link will `Heroes` navigate the **Route Definition** +that has the `name` property of `"Heroes"`. + + +## HeroList Component + +The HeroList **Component** is the first component in the application that actually contains significant +functionality. It loads up a list of heroes from a `heroService` and displays them using `ng-repeat`. +Add it to the `heroes.js` file: + +```js + .component('heroList', { + template: + '
\n' + + '{{hero.name}}\n' + + '
', + controller: HeroListComponent + }) +``` + +The `ng-link` directive creates links to a more detailed view of each hero, via the expression +`['HeroDetail', {id: hero.id}]`. This expression is an array describing what Routes to use to generate +the link. The first item is the name of the HeroDetail **Route Definition** and the second is a parameter +object that will be available to the HeroDetail **Component**. + +*The HeroDetail section below explains how to get hold of the `id` parameter of the HeroDetail Route.* + +The template iterates through each `hero` object of the array in the `$ctrl.heroes` property. + +*Remember that the `module.component()` helper automatically provides the **Component's Controller** as +the `$ctrl` property on the scope of the template.* + + +## HeroService + +Our HeroService simulates requesting a list of heroes from a server. In a real application this would be +making an actual server request, perhaps over HTTP. + +```js +function HeroService($q) { + var heroesPromise = $q.when([ + { id: 11, name: 'Mr. Nice' }, + ... + ]); + + this.getHeroes = function() { + return heroesPromise; + }; + + this.getHero = function(id) { + return heroesPromise.then(function(heroes) { + for(var i=0; i
+``` + +We can then specify a `bindings` property on our component definition to bind the current router to our component: + +```js +bindings: { $router: '<' } +``` + +This sets up a one-way binding of the current Router to the `$router` property of our Component. The binding is available once +the component has been activated, and the `$routerOnActivate` hook is called. + +As you might know from reading the {@link guide/component component guide}, the binding is actually available by the time the `$onInit` +hook is called, which is before the call to `$routerOnActivate`. + +### HeroDetailComponent + +The `HeroDetailComponent` displays a form that allows the Hero to be modified. + +```js + .component('heroDetail', { + template: + '
\n' + + '

"{{$ctrl.hero.name}}"

\n' + + '
\n' + + ' {{$ctrl.hero.id}}
\n' + + '
\n' + + ' \n' + + ' \n' + + '
\n' + + ' \n' + + '
\n', + bindings: { $router: '<' }, + controller: HeroDetailComponent + }); +``` + +The template contains a button to navigate back to the HeroList. We could have styled an anchor to look +like a button and used `ng-link="['HeroList']" but here we demonstrate programmatic navigation via the +Router itself, which was made available by the binding in the **Component Definition Object**. + +```js +function HeroDetailComponent(heroService) { + ... + this.gotoHeroes = function() { + var heroId = this.hero && this.hero.id; + this.$router.navigate(['HeroList']); + }; +``` + +Here we are asking the Router to navigate to a route defined by `['HeroList']`. +This is the same kind of array used by the `ng-link` directive. + +Other options for generating this navigation are: +* manually create the URL and call `this.$router.navigateByUrl(url)` - this is discouraged because it + couples the code of your component to the router URLs. +* generate an Instruction for a route and navigate directly with this instruction. + ```js + var instruction = this.$router.generate(['HeroList']); + this.$router.navigateByInstruction(instruction); + ``` + this form gives you the possibility of caching the instruction, but is more verbose. + +### Absolute vs Relative Navigation + +**Why not use `$rootRouter` to do the navigation?** + +Instead of binding to the current **Router**, we can inject the `$rootRouter` into our **Component** and +use that: `$rootRouter.navigate(...)`. + +The trouble with doing this is that navigation is always relative to the **Router**. So in order to navigate +to the `HeroListComponent` with the `$rootRouter`, we would have to provide a complete path of Routes: +`['App','Heroes','HeroList']`. + + +## Extra Parameters + +We can also pass additional optional parameters to routes, which get encoded into the URL and are again +available to the `$routerOnActivate(next, previous)` hook. If we pass the current `id` from the +HeroDetailComponent back to the HeroListComponent we can use it to highlight the previously selected hero. + +```js + this.gotoHeroes = function() { + var heroId = this.hero && this.hero.id; + this.$router.navigate(['HeroList', {id: heroId}]); + }; +``` + +Then in the HeroList component we can extract this `id` in the `$routerOnActivate()` hook. + +```js +function HeroListComponent(heroService) { + var selectedId = null; + var $ctrl = this; + + this.$routerOnActivate = function(next) { + heroService.getHeroes().then(function(heroes) { + $ctrl.heroes = heroes; + selectedId = next.params.id; + }); + }; + + this.isSelected = function(hero) { + return (hero.id == selectedId); + }; +} +``` + +Finally, we can use this information to higlight the current hero in the template. + +```html + +``` + +## Crisis Center + +Let's implement the Crisis Center feature, which displays a list if crises that need to be dealt with by a hero. +The detailed crisis view has an additional feature where it blocks you from navigating if you have not saved +changes to the crisis being edited. + +* A list of Crises that are happening: + +![Crisis List View](img/guide/crisis-list.png) + +* A detailed view of a single Crisis: + +![Crisis Detail View](img/guide/crisis-detail.png) + + +## Crisis Feature + +This feature is very similar to the Heroes feature. It contains the following **Components**: + +* CrisisService: contains method for getting a list of crises and an individual crisis. +* CrisisListComponent: displays the list of crises, similar to HeroListComponent. +* CrisisDetailComponent: displays a specific crisis + +CrisisService and CrisisListComponent are basically the same as HeroService and HeroListComponent +respectively. + +## Navigation Control Hooks + +**How do I prevent navigation from occurring?** + +Each **Component** can provide the `$routerCanActivate` and `$routerCanDeactivate` **Lifecycle Hooks**. The +`$routerCanDeactivate` hook is an instance method on the **Component**. The `$routerCanActivate` hook is a +static method defined on either the **Component Definition Object** or the **Component's** constructor function. + +The **Router** will call these hooks to control navigation from one **Route** to another. Each of these hooks can +return a `boolean` or a Promise that will resolve to a `boolean`. + +During a navigation, some **Components** will become inactive and some will become active. Before the navigation +can complete, all the **Components** must agree that they can be deactivated or activated, respectively. + +The **Router** will call the `$routerCanDeactivate` and `$routerCanActivate` hooks, if they are provided. If any +of the hooks resolve to `false` then the navigation is cancelled. + +### Dialog Box Service + +We can implement a very simple dialog box that will prompt the user whether they are happy to lose changes they +have made. The result of the prompt is a promise that can be used in a `$routerCanDeactivate` hook. + +```js +.service('dialogService', DialogService); + +function DialogService($q) { + this.confirm = function(message) { + return $q.when(window.confirm(message || 'Is it OK?')); + }; +} +``` + +### CrisisDetailComponent + +We put the template into its own file by using a `templateUrl` property in the **Component Definition +Object**: + +```js + .component('crisisDetail', { + templateUrl: 'app/crisisDetail.html', + bindings: { $router: '<' }, + controller: CrisisDetailComponent + }); +``` + +In the `$routerOnActivate` hook, we make a local copy of the `crisis.name` property to compare with the +original value so that we can determine whether the name has changed. + +```js + this.$routerOnActivate = function(next) { + // Get the crisis identified by the route parameter + var id = next.params.id; + crisisService.getCrisis(id).then(function(crisis) { + if (crisis) { + ctrl.editName = crisis.name; // Make a copy of the crisis name for editing + ctrl.crisis = crisis; + } else { // id not found + ctrl.gotoCrises(); + } + }); + }; +``` + +In the `$routerCanDeactivate` we check whether the name has been modified and ask whether the user +wishes to discard the changes. + +```js + this.$routerCanDeactivate = function() { + // Allow synchronous navigation (`true`) if no crisis or the crisis is unchanged. + if (!this.crisis || this.crisis.name === this.editName) { + return true; + } + // Otherwise ask the user with the dialog service and return its + // promise which resolves to true or false when the user decides + return dialogService.confirm('Discard changes?'); + }; +``` + +You can test this check by navigating to a crisis detail page, modifying the name and then either +pressing the browser's back button to navigate back to the previous page, or by clicking on one of +the links to the Crisis Center or Heroes features. + +The Save and Cancel buttons update the `editName` and/or `crisis.name` properties before navigating +to prevent the `$routerCanDeactivate` hook from displaying the dialog box. + + +## Summary + +This guide has given an overview of the features of the Component Router and how to implement a simple +application. \ No newline at end of file diff --git a/docs/img/guide/component-based-architecture.svg b/docs/img/guide/component-based-architecture.svg new file mode 100644 index 000000000000..6380b0fbff2c --- /dev/null +++ b/docs/img/guide/component-based-architecture.svg @@ -0,0 +1,4 @@ + + + + diff --git a/docs/img/guide/component-hierarchy.svg b/docs/img/guide/component-hierarchy.svg new file mode 100644 index 000000000000..fded37af26de --- /dev/null +++ b/docs/img/guide/component-hierarchy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/docs/img/guide/component-routes.svg b/docs/img/guide/component-routes.svg new file mode 100644 index 000000000000..84461342e40e --- /dev/null +++ b/docs/img/guide/component-routes.svg @@ -0,0 +1,4 @@ + + + + diff --git a/docs/img/guide/crisis-detail.png b/docs/img/guide/crisis-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..48f037a950859773bd56b2d5fc1e68cc4935d124 GIT binary patch literal 33701 zcmeFZV{m0n`!^b6Vsm0oY$p@j=48Sh+qP}noY)iX*tTsuIl1rWdEfVc>U=!sC)x$W{qAS&Zzo^#_F67Deu8LVQgL`0#1 zIBt>}Q}^9V*Dp5gx}SgqiMtodk5@XMKs}xz0jj`J5$zD^jHAn4Tp{>d+fSd1@lR^d zkL^#cO&g>wJ}|2)pPG!hC0}+Ju#ZAauohp~W66*?3vd$2LvS5QEfN@Tg1>xYq%>#E zpy#<;N63T>myGnX@mPE<@ZjtHqOFDGMMj`c-_d+ZG@D;o(E1tQ7{15tIfw#g2+ZE4 zvHGC|y+8r-44=}2Hc%k-s34D(YrVoGA1B`JSh*mG3SiuSWx_cKW=;ltS!1DT1i_EM zNPi((`jT>juK9An5LNM@_WQFCVHo-2D}aRm>3bMPNt>;{2#YRESPcszUkurTg)J zW7GwRkOJa#B$x`n&42(R9EG!mfTZ=Y14Fn*Xn&xeQJ)D~gWrNka+efHsEiYdM?m+3 z!bOVmzbVd_im5P|gEfY(h!jl2n}Ifft$>_|K8WUsndXg7AsorwQMnUz`t|%uWg@|5 zi{uIph3zZ+O>byzz|ClwDmuoVj6WKd1Uxaws`XnUvm}0?X!_0*tlN7LrxD*BFnGKo@_$U1|r$$(D&Qf#m|F9#}DWzq7HkFg!dQ6Z<1hJN`A6G9D{# zlh{Y>Bij>NJ^%}7v72?h{RH=f_aygb@y6{ZxJ7A(oC#wP2p6a @$JEBjNLSk6FV zTP{veQD|C(N$ff)J~BQ=Dd7gf7~Yt8-)qERM3sh_#+$~9hD4QD6;>5)9(^8)jjj>B zk;@6h3G-g|=XWo3FW7g(7cM9WaDf2g00Ck4KE7bdU|lh1Fxz z)G_O6p~c`dM~kNFFg5j_;86wURA1hNViFS!OWCw(BM68a4q z4H_;=aL|5WXOMJYi0CgAHx$A+<~T*g#L{@PT(h8~L~K17Wm=(1xwB5rfR-@V_$T4( z8q^L{In-8EFVt?beX@7*3bIX!X$c%ja>+)i_gKti=LGsVf)wJRqhYck)=|$CjJW&Q zPLfxtXtfEIi%gxAHNOsj&rr|Kw{Wl;{|KS7-b9kD{Gi{-J1pdh@ySa5N*OcJe>&__ zZ}|3YXnucriP@(-3A^fWbPMk9B$z@*0!d$fwp>g@w<+@le>kx{X6+n z7u;O+{TvzOJ3t*Fo@^!!H;OtMqo$-*r{=ZLus~U5qh+&VwrsT8QHRlh(0u-xN+dVtKUB$tioL^kq zK0DWvBMJQpkGcx<5A+(=T_e{T)~fVvSOJG#5=sII6=sF-N?XciM&6Hi%gab#(Z zOvk2wyzDK$c}V>pdDDEacPc|KBQ8@uRGCOBA)fV|37#>YVJP_=v7J1cOdO*fTbr~W zJrQ7V>NWK0e%s<`Rus3f3e56>!JIIak(h4<)N@5v6?y!!6wR4#dqh;xp=n3 zyYhQ(X1;u8;`ROHV=vXOEta$V{6+36npALh@EpQo3zD6<|msGIp4CSwZY=o5d& z)jH7J7a1u99-lfVUVD%h2sg&s$9?o*beHsHo+X|%TKZd6+G#u2n(~{OZ;qEr1}1xQ z9@Uh)6?~}QX`b$TIHGIA50g62Y_cLe-Ad)fb6%<>Z6SP}167n2-l~>A zgpmt(z$xyXV>$0|E`E}cRw?3|fx^Qjhee{5h*<|elI|%qC{!y&OuJ60&5X0au!ylZ z)hhg1saLJ5aVWPhvhCi=J80bDnG_&`2{a1i6QvJ(h_I4`k5MUR@fDoCCCgpxrwE2K+a+QWm599v*o!r2UWo1 zEDsA53uXOAmVVn6`K$PZ*u}v>R7cd?y3ii^3(558%YZdGY>}w(y*l>@bak|TMs;e1 zPT7lQRLf6&Qk@E?*;e`+wU2X;`vQc`OQp?(R-1RC2Bwm-2Lp@Sgyf5b3GtW}Ttbe9 zMQ0V~WIpPnk)!DI>+?o$n$5wv=3C2)XWP$Nzl$D9hLvF4;0Q4x@y05KCjnTyJiv$ytJ2O5W*%@m*7bn!6`+9mok+5;c-_oX_c z#)eu?XVKrr+sfmIe^t}wqZknM*Si#bEOhEMUZ40Lpm$?RPL~D1IYKkC3purx&iRl9 zc;9w?2#yfXB4Wj8NiXwJrxCH)DzVc**+sI%o#MI-#&PiCdG5Vsg4z2A3(@yZlep!(3_uN}kjE*l&6G3C{V}jl zyHWi{7tWB#PxYxHT2V)kq{K0QwK%rWR=}5kD~ePxX-#BRYGGt?W`b&lYm8}=ZE3f_ zJWn&u-A6IX-bX*cztXch4U{}gZL8m~D?y8+gwwe|Zr6ETcVEZjlj4*2SoV;9+455J z5`WWrw*Z#{s}G3x7nb7+F$=U0z6g>H+>Dlpa*UdZN{-y-8z&gW7blcY@|9bXd9y7R zIJUO`DYdt}TPAksI3qI?hGWWHW6H-T;IVD-AU2_P0UWsRXnbRUtO(L)u+lH4QKNyS zt)jnpv&EJGw|+mnF^8%ZpI%u0*fUX=bJ3AEve}tE>-uAwG+A?}j}1fE;7!aPh@Vc-#SzbS z!ejERM(0(!@FrdSvyua(bU1iad@S72L8}D_dE%{1% zcQok-Y>p>?dyTsf>=W)Aoh#jw$52e@{ZURF9)HG*cB1xUvr{v)bEb3GS@hX1Qt{`L zKE$0MaO%erxSyC2sc39pDRu*dJEX(+Q(20iO#!Er41?mRl~je))Kna0dde;{b2A6i z1JfQ%8cgL(uuQWom-V#u(RGdWiw-LG$+j5whlIlilKW9xq&KJEY+)_o5WgkCg@j{= z+DG*K{;{KsI!UHoWG#g?Og7RsL_J)vAA<1>{d;0+lHQM$vX%;|ioAJ~81^z#3s;L1 zvug|GV~{MTb@EQhcX6noU;;5uF$bV1#X&LltaZJSgD@OLgnaV3n%lw#J53YBs%HD@ zLmi@6^j-92rg=1E+|B32^&lmxym|XCU9qsDYH#cE3)e?L3|@9g2YTm2Cyytp7u%b! ze#vJV$hn}=FPo|5U*lWn%1*@5g_*i|CIk;G9aKVWzuB3Y!ud|@8l>Tc$L@~Xmi9P9 zTzj6z126hJSo9>hhkL1IOox?!o=iI20vKlSnEx<`Y5qB6IxJyW8=e@t9-Z%&aJU9+ z)OF0irGkwMRY?O<>IQJg;f%-B3rCZxX>=1RVoT90ce*BYWWB)Eh1H}b!^s-8>6<6# zH?3XWOh2=?yh@<4@Wcsc*m#-}o8%hv2;dq|U0R$ecw1-YH{Pocuc%#e9$0D)HQ!yJ zDWH*p1A}9tba1o0sQJ9TcTN-UE0O^h9FQ!imsA_#^hWgJK1{E5t%lF5pFXXxHa|zf zW5svUoDU_fAbr}1R6~V4r-9b(l!G|u-1a6^4NU}9h4~;-F1!0Eb zQ;T73Nv?OOV(HVg7#gA?}fi-5!a#3l2_{+2~~-J@ql5d6zp1I{^QGEQRyyCY)j zXDZ2WWVTRhGR(3_ctJH1{Q@%uAeq=gRPYq;k%%J}R1j0|-Y-3a*1C@+OlJ5rK23yW z`U!Lwgl17|F}(os9o_472!0{%?H@r1qIhA)drF|?$|`Vk(Q|#Q?yNBY3_!+F;&Iz? z)zKkNFV1vikj$IR_?XGqC@r8;sq)rx|EwCH1b;PCzV%zndd$#GuG_}d#^LC}BNihj zItmF)6|8(HFKQ);AlJ~q`V|Ibp zi7@VL`lwb0w;+}*_hBuRhA=Z}2U8Yob6I6tnp>`DmvP2?K0=S$!o)QH#CEx1%xpZ% zv)wS7Go_(!d8lyp>O}{^Lbhq=N{5SA<2(K9B}5x!RMrd}04@Q+CKNrQ4X?o6os6E! zkIs&nT3}%B?4b3{aXNB?HU{o)`O;p0ZyX&T(+=ZDQo0V88(Z6s`TQM1-AY9>+3Deh zo`>xYv75Bl>NR2<{e)hpDMrAPLC^H~^%`~0Vu4LfNBf<@S;6SY1Xj9Dv$tE z2oFyCxX12m3?hvWBq7Zkmq4z73nHs8#uYdq7g5HK1qS4r2usBelMx=X2ecnVQcx_G zG7(-?P(Bxl5f#%{b_=-$`y#lTcnKL8sv!dY8+6#eLCA!}LlIdD!3p;srZGlMoU$Ot zu#_=6^)!`GL)Mbufi&%#Cc!d|T+H6Bmp$|iG#LfHKOrR*O0`m~vWOzBBDWHv;<2KW z5@FFr?sV~SNn>#qG1IK>izSpnFep%223|&XEP0GjGhY+7Qq>aI67H-OUn~z^HdwR!s=Y8xkRY3f&vVwG|e5x44k8sq!aAk=p2_~Z_?k~;WR6(6t8y`oF7jufzK>@!z$G8Wd?wwJBPHP$_BW~<@HucH$=#l6czf4 z#L`6SBsg7RHQuW5Qj^Z>mW9UXj|Ca8%dBk=yeK6kLv5%Ps#T}27qoH@wU>tMO}s>0 zn(t{iuUsEq_Q&&YcQ>m!m${EEZf&9)d9Fe(sELOH*nG@ua!Dz*U-Y`w^F{zoGCM5?h& zLuz~cQfNtj=|XUMlewmh;!GGCwCpfEa>XKQ!2xz%EwJ|AZ^T{6-_ZOaw@F1&$vKQE zlUU{{oDie1$Kh54xxsW1Ix*k1gU!ScfyBjdW7V`;mA#gZmL6v;_~V&atza#((GoX| z*ZFQPPhGb@Xc}0&$i>Lp81u*uDDsI^36{z3)SdLBB&Jk3g;Q05>dtDd1;NDg<>%?* z4L6S1j;Hro@MTeAvf<95&$QxE`|?0(u-f&g{Bh@HBbWeOl`YDTM6* zJ%iej`3C#UWpID0-f1&!VZ1r{38TNLx%uMe&}X?jUi^4)pw_=I(scW975yN$PH({B z>S8HxU1N6n+O_RH@Uh`H-gB-Ws*l)h{aq-eDTKr4RbWn8?B%kGS`Q9n?reLTTL2_A z0tA1LfZ#$EpMXFmeh8=y!u|fa0sT45rUH`K^&0gOM2Y%&sCy;=aza3?3|l4F{dHcP z1yIp&)R2|oHng##H!!mKZA|ZKW&3r63xO8%D~5n~5Kdw{JYz{Z;B zAH4>@ZJZqWNJ#!M^uK@q@zdB9@P8~>JN!4SuK*eTp)fGfGcx>d-Cv@-|MYSz09=hN zHADbb#?}sBHuzcDn0Wu?|9?>akH!BXsri2-Sy&kVr{w>j{8y5f;hzBhM?n9{*1x@9 z>Ei#!%kaNb&;N}s1FS;9Z#e93?5^&^n?jWUSwfx!M(qc3bN)1K-7vd0U`9?bWF@(bj@ z9spx={_*4gH}?Nw8r|EG{P0Tob%Vl{u@n^@5U?^XL7FeOR;>QE+Ym;2xpD$|@nL*6 zyDpT;77}4wF#Jq(+La=JCV%T)7!FynHkDBp`_Q0}z$Z*LHbV z6Lk$`ac&-b0-EL06i!8?a=hQ`Zk{DXw2ic!LpDa=RL z1J2W9>g6#Tx=(D#v;I_t*Cn*wQ_bv_RY8xquEbx_L3oDkzPZQC736Q(jaU=A$D5ZT zAIEsQp(*tyV2|k_ogyaQfm55G!pwmrEEfAnstikh3t#_Zb6F50$6)+jGH$ZQ6jt1N~Qby26N(Be7?hJW` zxEy`w`ag3!%Zo92)8h@!dh60l2`}u~8%|II6O=otkEy;9IDIC2-Pr-n)=gr0SiN2y zM>(MURidJ32d4NIY?$J|z%Jx+>x#<_byFWvhk_D@YVy;#)|u8?!b!j1*l&K{ZjnpV zF=q$t4hu_g9fHW&Fcf}j$wcE+ht7qD8$xOv9#x&LN#a*Lb5T6Esn}r{ZwXUOfkI?v zZ7+jrE=Pn$#Q;YX7+9Cvc>wGH((xDTHal?2t|zF9@Vi40qwnQ{V`tM3`Rku+;Ae@?{QLJ2WDWq` z{PH(+tmJ~HUe&pcTqh+C03Yf4^~GV-RV_$hAk=SHpTQN0WmX*_QH*C#RU|LMr$Jhf`cGh;@IF;;V{#+eO1nJ6(-Weg z5vQy&A&<_8+G9*HKNLJ3%i35I%KV_TqHW}e-fF0Yigm1~&*pY$Hmbi}0quCYHDWpk zZjH*ektCN~X8AxG6ce)uFZufG@3T^aR1xK~_o#_s>kg%;2)6!_kwhH}0`M&X^I9$& z8ew9lcYmE=%wkM21A)G!_S6xd^D_Yc>kj<4@*_8*PEq7Wwz0vGmQVQYgg0$B_9C(t zHPxS!37)j?o$K%cH7I>__nxoc?z6+=)HNc)35^~$8u)E0?O=p@0~mo?VnOiSiF+Ft zK^B8GFYo5TTzSR+V7Rd|-cBL$Cw2r=FB03K&HGtRRxknNr zg!3B9eB=*PhQEa)+PumecQTq?C3F}7%iP0Ssb_p8e4eJ6dM#-k?-pMcI#G~4em+Ty z5-$jzSJR)Q-iE>$;R5d*-zKJRe{RZNN0ni?y$qczaW;YmXlEr!Z^q1G6&)_7Lk?dt z^N04ldlb|iu-^QU%iron&_UaL{{Sc23l4PpBxj_rZ`irpbl!O;neK0ZKejj^nUTag z45Q;=3|Y9;@R#rA4@JZms-9=U#ycpTCUH5<^Ryh|jsc?#rWXPe-)b}(l;)88w1Q3= zE{>>FX7H?~gZ-e4A>NmDKcWpc_Y8)HCiU88*b8pjW@UdnhI#nNMVYn_TN_$c8xskw zD?-6g#6P{2p9z7_6HNvlhQ^Uz6>C)Q7zxuXv~+fsV0(xLOi5iG9|klI%aa%-?%LEl z;}G;uTh02G?`k~0a17aL_&^oDTT}c7avOL8=$0lp_y@JM5Sq(*p*kLJ(0SR0OWVr% zTmAUDy$EfVjt|gy(~|ijf8NLGyhZbpzI36)FWA8FKkc$$&+1caYF9G{zklu3>lt~* z!fsY69cvqQlJ+!Rt^FOCow`rG#I}xr*dYv<-#=uItFz96Tt4Fi?YLtK9von(mQM!i z2FK@K-+6qx({k+V5?g7jgPl<$F&V5 zPur1CzTtk3I~<|8A4!~OT)ljcG`4o;DpuGm)`vUO4NJ+t6i}kg5=fFkNWc3ma0Y~J zU!K;ouY#QBWaNBiE{JOYr)S%V+;CaX)6064L0F_s+BHT>pCleu{4*a>koH}7P6y0k ze^VkWXFrh`-Tu*A(Kob+Fi)ri0eO_GVZ@{B3MPA=C6J7RtoHR0Ubhc>qbtxei(s;H z3HiMlU-8wsXOTOChXU9*!PB@Kr_}$fOoysK)SHhZvJ zb+53FCUc^y^|gRmX9ijK--S5OtkY!+KOJy5$ORePnp-bWfwgrf{?#7V*a#yoddT|B zrpfl43q+J0NQBvQ9vBXpP0AP9KhF0WlU|@6N8<3u1m@ec=M-BlBtHju;d*J-xS=3rxG|=EJF|I9^H!PP9iiLtYFnuu4}gY1hC8|d~D^4VJB^z zFN$WkzvUiY9n0>%6f}hBWzG)p{pNDTY6*dC$?INQXh&m1m*&D}TO&0ikv2c$jKp4p zYb=r5qJ!QIJ7vCMe6E@NWs6rU8UnqW^aRU#bS|0T98G#Zxp~xuKJ@#Qh|Vp%p`ky) zeYO?PzV;+@0qX)$E~j1Wm7kj<*ibobulr3}<{KWAaGx={(JW{FhKg$)ePnV)DbRj6 zwsLtlcX72uU}k4Oj8m2k_37-B?JbIIjF8?16K%Nkl%qKH zsF@G%4+{KlH=H>PQ|ar61F$nT`6b0cE2X&_P`{X{zdz@ z8;fxDy@Y`RI6n@+Pef06EKdE}6%=a#M169d!kw$`)wAyi^ zu?_L?run^)Pgmg}5BJ`4`zWJkQwKIF(5+EgqY^Ki(q4#alVCAiYNiqPcr-@pj#@Rw zvMq0`k&1DWY~)(~*B0xCKmdCyo;dB%I=z2}Us$FR%kl|hfGZF_r{tH4XtCLzuqbWb z9^f1AJ`BGzjc)=675Xbf2ZlF42p`Nlrn%lLz%UVB;QIzobNO8Kma-W}3q z|7kaHoyVs<`60&JxYMoB&MNId8q)KiyivC8C2fkTPCLJ7ZtR6K`0L?i`$}@Xf(cIR zj=QE25HGdzgMri}^89?&V~&$n8yx>t*snNZO|83=iJl&67b1PO)%7$g`C=y)mYCI% zafPXazSAN%OkbH5Z>`$9cqPEtc8TE_2N{({fl;7lKf<~jy3VX=p)k>6=yl8Ac>xJ( z`^e{W=7H~o2cHQ}Kk##6-L)&X=%?pv0*m9P>B=A0>WTdO{L$j4jLRwh^0a}g^qX9< zu?v@B^0mSjjYfCAm%3HQl01By(>p1Vf^ybC_SS%5kO2cl!c~m@>5Vld%E30zT8Zge zEhATcd|%tquys?{rvi3ivrZ25IKzfPb2*(E>P)t(mtVKvf{0btaQUC9E#Xvj6z~_+ z=4pU~X28|DWPLGeZZAL8U0>#IvknCbldk{A?J<<@yEp49As^BhI7RLB9ll|FxF1w(|nH4hij)J=g@S~LD zY@K!=3KZ1EYLq8xg<H9o{sun%gMUqs8nXf0%cl<#*y(sHXj|1n~VU|6czYQN13zzUpz$@Xg8 zZ^9Oz8Od~poW8*0=CTtl@tYly>Jme0ox3_2G@Hy)Lx4R8qDaU~)d80Z+4R>bhj9Xg z?Ox)@5EiE>8!W~xDNUxIUdu+&!Bkox#NZz~l`9ZMZ~fqI~hb!!=>Qu0+3T^nT1-ZQWR zhvsbhQcn5ODOu~^C0fO1;yNzeC%+0eyWq`fa3ow_*Bb8?S1XtQ(`roS9l15+Bg!1` z%0P#*0#x9&tb$%4kY?R*!GV83no{Q_>fByl#0wCQ%Bw<2xOyDy zaJ;AI7sZpZE|wa#SvQqR`)VrLAgSkY~XR$#&Eus3}?R zy#lXl;NtDobfO_MGH>MGneB$v-Rgw1oMjc(s{X)=XO=5ppOv$S?-?jKDt94!1#A&K z97}O{;ap{LluJJyGzZMR=fn&i2zrfA=Da}RA*!B=Pu=FWjI$K!vx>U}3s`FZ-lozE z**HDi@1NXuGK;3ClvzZvvthdjE`^j4&!jJGc%ry9+ z$gip5GZ<2$SZUEN*@p933QIwYNOkshKW&-tB0vOg9==Dit1YBql&0C}13GgLst6qF zI4I~mQ0osq!9AQtI$V4Zs}Qm(-fzw6UuBNFJC4!oWm6Ei6LzLNVEFZO3V*- zU;|hj=pDO!(n;EnMHi27P}i8`A&y8e;a0wP2x!f!66TAJEU?`BO%4&QyiPh>wdj%l zaJB&$)7y(W*F|r7`)afM9!i_R1|Y~r6j%%%tJ7-fU|_vy=>EuVa4`rq$<#XI+rc*5 zJvMYL*yo8P8{bUPi*Ms}y?-cnFY*b1w)i})ajLmb$)~4Z;2YTp6|I5b9<#VUbxYsK z@wkzRL#geWDr=Y{5Q{4~>h35LalC^)cRH(juGGwywqf>6HXJQ+iOD8jNv5&IF@)Kj zj4M9;o(p*{|M?)SVpcPrJfiKjN0hx$Be3z9K?y8tah<(^ItRWYDmC*g0Ye|)bV{aQ z(R=SxWJ>=y_n@I|OjJ%yN3c^a`TTs<%K>Fyl+yPRIgKp1Sa%rmtLyYfx@X7Dz4!9V z;*416Qt0b#^vFAu?wVeId(+zf8A!hpq`)L6d+~&zjX0xmzsTwJ65sh$&2zcKWIo9h z=gKkHBR&2F^Jp)vN0^2Kxf^BgWi#hAv-ghnt7MZZUAfeYZ}AK2H&Qvh?BCLv%gWjWTk!9#hqn=jwpn* zLAwEN>S7dixtzb*pUXen3y)ZrNSI_VW14cb);K`w9WhxWI+=33`LNW_bf6bYp;>&A zKAd%H#$fDM52-G1d0(E(nR(uArfTHR7IkijNG3>{>r2=~^K zO)N`uWoPOgJ%Z}&8t&6ny$=apqj5qs)0bHdCUP3sx4Ht6FnEG8DO0XC;^A1;bo~!m zqT6LiRdk%Di$~A#nheMPI8O}NbyK*M1^i6wSQEz0=-!Ml9f9`aX0SVbFzZ0yr0Ubo z(7w2FP@nV8W%FHN5B3(g3tnb8+m6xXmfgm~$=T{pO8(g0LF%fj&ZzEO4$Nf10)T%c zq~^rc4DD7ooH2#r^JYJ0`yEof47_aFkEy>A`MH`&>mLt1l0h6#z3 zJ3T3e|GdL{qvd@$w&HGZfPOErb=4vnI{prA-!L+}=F3%cF7zb9gqHH)-sy(mF`3%% zJG}-WZ=G@O=DWy6u67^OZ5@AuM`ZA1GW%Ba%enQ6AW^3Ggb7GGeP+)pk35MuX}N;Q zKJR&!5VwS)6_dM@sD}!FmR8geKgThSwUDJJt=gtTlW?7xCeg#kb7a%SUL|^WlhWO0 zg32S$XBx?3!IcC+7P){sM&kp8eYO~lpEX;@qa59$tEI9tTdk;ZJ*@givL0&61+Y@F z(=3W8swxIvY&u+DVP^v-tjLOrwP^udCbjL`_}X`_(^b9V*y33VXjU553t}h=xT!7Xc3-#40_FA?#VZ`~M92J2Zg0R?Gkv z)7A4Y0X0+k@t?O1Rr6TxQ129K=Pzrhs-Fo>jp0t_y(wLx?XA0#-LCX2PE|erD=Sc^ zt}n24+x>~{!+BnS{?QBQJd8Gh9fXxPFL~m3h>Vkv5T4hx6Ip>5*}1!9m1!FZ`i=RQ z#~xyw`X6czYn^F&3bdEdZ0bdI$~LGJI-|#=F2tf1ghp+j3x|+*lLpm}3C_=M-i{V= zPhDxgaIKPbPCHSlpWdLyNIbZIoBEyJsM$lj>ytuyKA+QA-`n}z+_u*nT${aK<8kE; zU{vc`p@l z-yZ8&0Nhm3)1~ct>PZ0?mS(Dza$GpG;q7-(=g`_R$){(g=2wZf-ydDYiF3baigA-l zAG_rnkgkMo##ywoh1HCCj99G}EsQMSJnBwihyQ*M-P<8ES0QYWoibBC_SkMr$?0c* zNeWyDpp^ZJWYv+~!8y^pe+cEtan%8PQ4w$Xq)qwGq=Rc_qSYfG3k8)EEaEQs^{hV- z0(y5BBU;zDuY@;1UY}svIY3B&?d~Eyg-Q9e#PjU#sC1Ts?k7CxzX-BFv0UiT>K3P-MA{o?*d5osqof0()> zkhSqPzNSm4yRG2DVDeS@ zovSu#c6#Bu!*ueFWQHhZ?h!-X(i?W?K;w+`&GmK9!R9*_zYfaoQc_8MQYNLNdpZo?kjUA^3&0tyq(9a&G(6jBCJTYrYYu#@4VDd zgw`2BNIT+36U>d~f`8P30?`F{Xp9rh7@ba>t~@KEAuZ-mgjxYbZUJj5M#!6MVv`%Y zRRTz{**r6!HIu~sr3qO31)b|j0c{v<_tOgsHQw)NJJ&tC`Q0^yV%P(zSGo}CN#&Hw z;^OjEI=tdx+pt~*UR{M6w~JET=V_=?xRk^kR?K=h$G-4Z^w|>oFyoQ~HOm#;*W6 zr(w~{2V3TIKxJ1Yf5GxHUDqLj7;m#T{l^D>>xMR4_|79r!1b|qcaKAOPL8r^zH-Q2 zr@exGW2m*e^JWbCT9IWGf;y2mV2kA30%nB)t$BEGV=V&euNUJ^&o;Ji-t`E% zJArxCWWdxy{U*rm?Udc5?x3Q=Vu9&p*VPUAM#FI%$2+H;3ryC7%yhk$T`g zx#^04+RKKE2p`8RlCb{YwECUbd6>zKJD~-AUU6Z@mTt5g$!7EU$I$FPepWS0e18LA zkM3^vB_a}9QcqQ+0f)hc@qq0FwsV?$CeuIAZtf^dOG8G(XsIpmKj7rz!*AV`8OQF*Dqk&^8Yvf@38#8 zOS^k}#0N!!q}u!_oZdyQV*+e3MP4bWo*tCTRH~EFKSOt?0Y<;U!n%Fbbsw6;jlp6v z7W+AU?cd;4%DO7Ho^C-i02a>U;t^(zz8^K?1;^-g0+!f7p`IqOyQJcbews31c;Z;! z#Zqi|(g3-nu2F{4{+^O<{w>a-!NG{9AZyI3n!UL=o_*f$>yjV-Khsyx6xnt=+u(cC zq^zI`2F5CO*dA5^%9bdQ$%5n0tqT!#Hv|vAHnae=3PJ1z*W!;`-%zi0zlH^y`6SDq zLQ+lWO!i{T`J`aK%DKbWGyc?(vcZx|JO9$HB#qLZ6vhz7&cISuWa0Z>hw`0DJxTHh zrTwEiNBj|fGpZ;D-R8g3b?pZjy#@T}Ly=T4BN6d;?L$ayH;52XVr~nZc$VsaDTe4wXI(wqT&Y2cLP)_ z4Y=fSmrECoB!A{tp_Zp!|KK&Ls^I(mbDv`?)Hk9{(jvCA0RJi!XpUgW!EMb|3=KhK zhD_v6ki-Q@%}5sQ1hU#Y$qmf4o(@N81>ZaD#w9D8(09XzG#3(kbsUjLjSH^YY!)NQaP=SKZidK28bM*+oy~Aj&rbIHfw-S zSa?E_v}c*9^H+&r_TYE>%=$9foxX2oJo8?4j>Uo@E@tKA�lSi;@9`;3H1;=}|wW z$F_JK+6aymhZEL9D}iqrkIk^H0Jzv>Cu~i?pS9Lg2l8m4GhOII?k%z|#8$i%%~rXL zjNpQAIWEe^hzCl1_!QX=WIppaFjJ*nKAZ~MJnK)bqZwn)j~Thw0l+%%^-^+wpA^2pw(YY9FDq?qg3I8+|oO%rROgA=ku z3e#W0Yi7*OLZ9|~MP$nPAY&3zLS7#pLzAn4tpvh$wq+5`xhK;AK^V zlwtfV|FPyMU%&LXz87%*ZUY)`0xEtHJ(2FxEOz)}|&Rj@9CF zR0T^J{YJ#F9wBFVp!F-)|#j5|a|*nrCW}6gctNF%oB-Em8z{vXQ|CT3|QP7`-CLJIN(P3=BB3)3>#r z1e%!4?59D*_?+NruUP)v6NT>Z6p&RSGsUt))DdDN%bKl;1R8&KN&8S0URD&z!ICR+?g_Q_=BUgwx5({m6EuCKtdN9N5pg&wCI&P( zy?)abbv|x^=#=ciz*wv?B4K&H(U$j6GxMx6n~c->azw(flARidZ7F0b9DuRvr>~^A zAIZO?h{N9cp=ESJ-dUSV5XO>^f{Pic3XNobu*;^9>_D^+sgn~IdQ_?aF<9MeT9-au z6k&za#G*@+6nRcmLy?#?U02&dKydYq0$f)m@Xa1g40_1f>6c~Y@AxUA$dc{Z4*Po0 zf{lW?I4kCEwp5QfY*v^Qno-;1HnP-6Ll9ntz>YV2=3tXqRz}3QbN0aeBN7{=F%6*$ zgY*ESg}~~#=tb$;Yzibz|1}Rx;1lYI6oVvu=@JZq{EAmbh>|k?z281^3N|sG5O>wv z1JyhEZWbAy5LYnP?}TCO8BQzM`=fy26e6k9(BqEwQgtqdkI}Ey+J$l}9mq%&DuV|J zot2Dhe#SI})zuqf0-I01AY&+amJXj-RJbGP#(yt#vyTogT*vK&LGp&q-2c5>!>BNk znC%_prk>>}2jA;0a$cjJQK(PFgP1dsmA=F^{dxAj7&meH8_ec(7nOh(87wX3qp^K4 zt@g7z*XxWN%M+vm|A<@-NnY7o>0E)>Ga{|rN?r>oVS1v!_L|isq`t_2*v~uJd4pKi z1hoqf7M7wuPB$p<0R5?+HtOd zwlqr7BlL_MF5cXnT$|aaR<8FY_6fZ5Ou^S;`vacvYezVh1>16DsU$!~9@lr~oZaBr z+XW_7&pd=2Z^*h$jvx#m%$NWi>@%mQaaws1vn>UbDn|GAs%qC6@vgV)%HQJ6=S7;B z$`xs*ikG1f>|q6#wgfG`OrTOLVaTFSfAgMZkfiVOOn;vKz1>xYo-u?R9>&NJmxs@) z;tYkEqy%M@+tFXmeOE(s%C@3GL=a+;_)b!_Hnuo6-9gJob^{r)p{W|TCfYb8>XzJK z(DTwa$9CS!nCSkN|Ei<)_3?zRO2XJAAw2Z{S@>Vy*TG1Hj^!{mMwKTC=*ET?^~USxY($Fgu;7jqU@I6WqG zE=6SbM1=8)I2?ZSyhEjOl7`I1m|V)f`B#Kdj=vW6+;rY=%M*4r2ECZx8D^E_q+g>i zkA;!FU|J6^g?J5~zwb}XxM{^l;OjDpp@YbShStSLDNUwuh1*#8xkOJ;aKyw({W`Mt zdE)ErUkxM)>nwj=BPxXgZ%8~vv8KZW#lBF;k=1CrS9`@-R$K;2f0nD>k#j2IZcBgx zCME+Wy)x6Rs*TKiSO+)Jh?%=V?r%f!8@MI!7Ko&|(+RC^?B5tsifruV6JyBelzecT zCSM*}3$@dUtZ$5VP&&>Wws>z^}6AAm2*2R)S@x%Xu>65VO&Y zk%hjg16Xx6egh*(h;1W7S$HO#`4#VFBgKw>!r#li#q6(|AA-0c2@V z`)GkfaJNkt!HX7Uta$cxbhoj)2>1fv77Jr6F_JX*&6rt;L%I^5(thx^H<2KPMn2M~ z%oWHecmZ2(+I0&Sd`d1xBm*R=$(n_hdIfr)W^o3XPK$(6*0@3tbghW}KN*`Y^djyf z0K!3y)C+cf*R#rIwCqcnT52+~Zpg_On?F0K5a#v0gYnsjxN$5}BKAp0ID78sPgN(P zKEGb4zA9wxkrZ-~frt)J$|7kf17+`^g}2zQ&=JP|#xA*QN>-v8Ao#50$&}4jdOt*C z^?$YZO;M6P!JE^zZQHhOW7@W-ZQHhO+vc?0Jw457PutjTbmQyO!gw^ac`-ibgwMsGA#`g>_DBH`ckups+!ksd#PW zrTNC`3RiRgn7QZG(}gXz8Uf%g;feIiMH`Nxrk4Ci`(z5?EGJ6QmL8vc_z699(%3QN~Fa4Jvy%fpStgne|tl)F7T>AM)d6_dN^;YZlJ z8nwJyi9XpHiB0__Te~db#AH6}vBVv@wF$GS&KrbitS`}UIp1SV`9X+q+t(iXmt>uM({;LyXLCHQn%-#LlhZ~UDLxat_mMVd(z z%ta_Ad>_MO`+UdR2iQ8-;BK0=CRP~xt>zT_;UVLOZ`Y(LS&thN-n_3zSSc{~EgE{G zD#p!|bt_X{emL)GZFRd^AQ@Ul#c8cZzvOwf4VVJJy{}emqLuEy+a3m#^iFTxn^3E0 z#@X)>>e_vIhv?rd;&U-g8HWJ8=Q~1R`gtqW16&QPL8O7WR>t5$`M3Sj-4qe8Yw;!> zkzEoW14I;?az|UYhxP}ZfxqSiCRCS8LE&GrZR&0S%^NbXC=`MxgQlz`NoG|ms&n;cy+6pgY&QD zy+kM%+~ZXicR!3pr*CBhq+6|s4NgsacHtHi@bXBN#Gz@Ad-)13o#jg<} zr^oTQqOliZA)AcwN2Zcq5({{MKB>eZi0caWqD#tvqurl=t+l!bvVBY=xF%^|mhxVY z9*gzhcOEK^#ip)?FPf)pSMx*Smau_asC|9?IVn}G^icQ$N5XNfa)X>gLlNIu*?+3; zYy8PH4Xe@~uZG-nWv9hE3Wpx2z;@624V7<(T&Jjj=MFE3&mL}UBKkeuZ*s5|gZ+~! zmz-hVN6S8(W{gLY0AwMt%s?lvYMe(kN=h8Vy;`mNDHt$wG$`ioYer*m6nVbzfM?8( zH)x_$biEj%zqCmmKdbBz-nES}(a?UGFZj5M%ZVtOeOz|n;-+YQzsWREhPzbit-(G> z?Nsw~)LMR((>G%eCO-Y?sQK)~b>o_`Jtd$sjKyrFWesf3hhYo&ZP!6m{y3-&+GccP zVfL;#LWci+IO9+cz)6pXX{wWyFl!FFizt~;XF>^00uX895=3ta{z76|kj_0!=RBZE z0Ni@yK9oRKIfyQ^^&vPdum1jAD{Vif0YRn6_G>f)GAoCny->xSLUv>XWs|W8;>FT; zdOU_%f%rR`gq*0scAaY5(ez&1s$OdW&FDl*q^sTUvIjB}cVT7*E9z8q^cQm^_gAz? zHhBTPX4YoC2P^?PtzZ~7NZGunm_D!oIXD;E1bspwD(#Fgr2ZdGu+rPR#B=_p@Sd{Ef3 zxjZ_jO{b9&Rk_(in^LV}L?z88V~r zzSR#z;vp}s^z1hsb%|(C{KF|sct_TC6FN4+$aG7e(A~NpNnWaFw~O>;L2J0W7e0W~ zVcb&cJGq8OGdma8Ia_}R8_?GK#4%&_9>Oegc737{+3*N^Z!@1)wq5fZQu99H7V>M+}3NN9?Jgx`0~zDmwxOo#0Xf^V9^B>gXVLQOj=`R zP+YIKOe}X?(P#D@#D01-(_`FfVdF6S+{1|MMGd>uR@QRun#;kCx49yAJ7zjn9pRBG zXyZJt;9d-C(ftukOU9XnD{?+7^EVbIv0J@F9TGNO9oaMkVIe@Q6Jib1B9uZnnB4`= zj|(LYBw^*tEO~S?xlo7HNUW+wg{>H&Se8K3ofxHGN z>h{ng8eb@TeUi}#zg>RLhgXIg91vK$5k==_UMZ%`oM&l^0NW(T&UQO5bouNTE?*WB zM1Fi$q>6gXDT^KDO=~c*Qx4#SBMflAh9ZQRAg#eY4kyQScD#I#98`KkbLtuBmfF5^ zk*<;MV}mx#sN`1f9|>dJd={frHLvHMJ{yHRV}RI5J`aiml(FP%>CX;R&n$p=oA9-OcAsQvxEqrgsY7VpGj0 zY^LkV3|6lF4CSkU`Y|*QkKj06Axgx0ceo$-{zkO2gx3N5ut%}q9 zhQS>^5I;4MGgaXn$si^cE=8X>SL3gbBUsf9EWz%K;~R_06pFb3y&h#ll4|RXT*sMy zY#c$wZ$82+@0Cam0rt9AAs{ba&5Rr)a#^w?s){Y_@B2aZ)r(g-Who-buz+riTC6cp zW%;hn_^u(Qn7aT`!tf8yZ-MB5XDm7Cflcvq#@2C7)=sMD!B^d#k>7^~ifP4%j!l}( zgo|ZJ$xxPWOmxp;V_y@ClDyI)_y>4(v>&e6XU(zYy2P1<$HUD?M;Ov=or11P`dEptuN(lOT~LD2H%2aF|xbsEdtuAuiD#>ShDrHGnmGy6AHpPg^hMQiBN zIB08NL8gu0w~vc{(!SFspKj5U@c#{TaSHXb`L+nF%!}((bi$&{Sh0qW)-t@`CH^+Z zno?kqgU~J37i?Glh9+mUqlEMV*MBu|GoI;P5aY+AmCNSEH1Ui1T?^zsCfMTx;{}%(}O8^A5ay8F%%>L-?FDQyg2FB%s0~7$^{xNP*070ws zh?eiBX8%HVXn>FyHLmyIKNswO8vkDl46xAGR5cEQ3u>iGDDv8|fK+lO z_*mI91V4EQHn4Z3CR|cX%bR)cS?} zSI(Ine%T`wM2v(0H<}|f+BJ2E*h8(2ld#g`i)LB4{yzA#cD`aFcp*_Z88x*qv>HI1 z!6X+89>8FuWbrU;X5eFUkwD6;$1bK?Xxb5SutreU-skyxQ#wg2t1y|rHb4Gh!*zo$ z3+4lc*u#x7MFP%66;kvExx)wU*-UCLT9}l35|qpfg&=LvGuvEM)d)6?;t;ZXI7uB7 z#H=7<$*5G+XRt;@%m_{Za#Xi?-#e8N*WCVX2m{X0op?==$pCh%= zOOu52)c{AqBJ41#tfcLE_o`A@-;I&f^AenN_I3s)j+PsjQ4kaFtPUHybH>%dh6O}U z0LL&@g-*w{atWA=$(i%P85o{3l9NuxIClD85pHFopT)-B(EP)!yEnId8aT;N97ura z4Pf69(Z8Uk;4sBwlk9vsg;N%o=kzQOp8tsv6_h7tB=ZJqqB50Izw0v%!`y~^AkW>& z7vq`C6QA7&0(Fv+jks9p41$#Q;k5WBX8f#3 zyP;L@85&9?>!d72qj16CJ-9-XE(4volaqDL%47P|5qtY<*j}Lgx-XMK;xc-%VS&fz zn@&$~EtDkcqR6cQ+z>8{(}|kQ!e<#P}htuuNT(tM^x5 zo)7G3NHT?SK|@fgr_hLBTwjD9GxL&pJ`I8SlKf!+c22>-z*RXy;@C%bs4~mXfGj{`^pWNssD zI-zucM@IxAyf4XGi;9J2(`!D}U3$Ri1dlObf*Jm^o)HrQT7y1Dcflh*uSP~mLp{8^ zyQsX=7Y77H7zqy#Ou(ASV!AF`r)xFKpt356Df*HvB|%<{vaaAZoO2j-(`4Pr?Q&ek zxhiDQ9ja^Ge^eZ4AUnxc;_ky8?1FE=6mwh3WtQu-t z1bNt!(h#m#&spNoGi9-3)%dU`Y-N-2$!hT6mN6w&U2vK{=yfw=(v-VyazcAhw6kV> zGSFlteF8nHBRlf_moGHQe{uozefMWH+7hjfMN640Mq&^h9!cD74orlRH697Obs9G| zASMxV0yshbu%Va~c#;gV5A$M$Ls{%nmVClVNM;oBoraLY%B1nqzmc3W>WZWmpde$R zhX_5Pt*EW9Y^6$2-<3VMsQK{wU4k&8_2h=f`Fm02K15#dXJ!W)7Cdzf`p@e0mD66zv88M$eK2o8Z9dq6N3IL5F z>F5hQt-lT-#Vsd@J6Pg`CC1n*V4}-DoYqy#h!VAUd(d927&>OVl(lb?;oWfX^4ZjYi|HS5e|XfuoIQko9qov-+kA5vysuH==` z_!_QDwg;q^U!#w`gso>tD07ki76u(1IEL>Oqu9MSLW?mi+8+tACsl67 z6$gGbq8m%32VQect-R=RW3D7@MbdjDI3hQ})f;hy*hR^K_ON{LNVc!g<5bTK0A$Ne zsvm5tSoj-*<_3_XnSi5^jx}BQdZ1H#uxAnw(^C7nJQSNgixD1HmdQE{85YdEKOQ37 z`4i=^m>8kmvl(f`>;3vTO%k4^oGDi#(H*4RK&OY&Qqb3sJFJ^cubWtqCt2oT!S!C$ z2}E$xx$}v`i16^pk3KnETrHQaFzPg)ZVQ;V$7VWLd-$>u&v6z z6~au=sj*@D(@v3HqOmeZRCc=L%+vMVu=rM~_i~ay5@KfgNw!%u7I|fvEm-xmiBU03 zy~8GxkfkUNE?LY8Z?-?NuH$PHXYS-mzb56)YhIaa^5`b|Z+|6A?Hb=Cg)M+cJ=c@q z+n}uWq|lv&0Gd$lrGq09<5*Uy(}z!W%1}@v&?_=#WEe$I&Ipl5hR(>qL_s~=$R=EM z95nmJRgp`89DTkg6PP8PKn!arh}?roC!s2e$~5lp;Eb=?gKv6gNj;MkZMCohcULV& z}-B?2a&HU4zaLmS{aZO;WJZ^XsDIjRGijMrDfJml}@CY*=m7wEQ^j$(4;UV zRIwOKaN!|{Di>zwc@H5#F+h2=p~3OBWF$D@Ls_G1nfJYbkHz1n1~#%Kha7*FTr2DA z3q-@m3OavjIlg~hOKwFXn`BaP%AjU#o4moRbaYYl$4&DTay%f%!%K_B%VMc_$<-mp zk+Hg>>)jDD3{SlXRcqzMJfKKZa!GjEI5;Ub7)~TpS}6n{6R#>t@KV&X`xW-3!;5}9 ztvv15xcDl4h_f{MTmsUPv~Xr3kKS1tAjC!A`}f0Dx!0G=aq%Dx<96m9x(kbxvf2ssOJy}oi-bGN1~Xv78`>; zXa)e z=Maw8)Ro_8(<}`;#Cb>sOM~T?2$tBDGd<=vc(Kh{!_a9<&RSVh-S-x;H9V9&Xw3k~7|I${ z3+-ArkzL{xvAa}6Rq+#Lqu8Yp8kwcdarNtvF2OS2I;fyj4vA#c*o`7W)0oorQW}-? zlLIi!O$>fMS&;T62M>E3XdM9@4SyNLV|Kow&fm0lt@-HUQdz8WUYlX?I z*V6o4uBzSLTUCU8bF%t9AnO?!Ydu~Z?^B|s&+fSn+6a;TAKTVQmdV?T_d7?1w$i|R zs{}n7(oXz;AWq@_i|B$9h7x)WyoVkQQe9?pQJ$9LZj&ja>Y38}=tYgi_HFQCMGR4E zh_nJAqn@G!vxk(TW;06VMYo?#HId@$X_pb%XO`*~fFnP}Nf6Hv_uQ7Ql1EkkXI<&f)_AzfKcx2qbTU48DHj^mhvCIQ8VQ?vEC0tC}$Ik#4mSSgH z_U$nI4=~0G)W#B;#`@4rJEg^-5Q@bKa&p8(4-}b6k)Z+8mjM;>tn3Hh;K;6#QexO7 zRySO_1j1Uu1kW&|9UcPnYrYYr>zaK?F*;4}scO8Y%+658$*K6QXnH?*AtG0LGOKZA z!*Ax~;=)cP#x~Tvd~HM!R9Rv{^63;+Nb5oHSF2NG)uuOj3wFx-k6%Xsa&aI zDY+Y8V-;_?o!($~NHaX6e23^rq0-cB{lVeUkLxx`Ii4+MU|lMmzArm3;)MN~4P2S; z9cES|V&C5UA(_-d*<;okv&@*PL{55BG!>f4DxEZp2GG~P?TYQUE8VIajv?Q0&bd21 zlf7oDPW@y7m>8FEK#z=}&7m^U1QGFh89~g<;R`SIlgQ^XQDq@3Vpo`X{@W{LNKRXm zP8~p%1!S-fa6QG>zP0L(bQsv6!?G&=s}#HKW^2 z0T)XzT2yF;jl4*6rBhqV<#1Ma1XE9m-SS-*%p|THN;v{f;q7MD5Pc;sZ(n@yAX|8a zzzUPr26u6}N!MO(7*cl)3M{msKe08Tl~-iSd7HkV90yInQf zXrvo1kIhBH9;v1hQQu(QU|EK-<`|nO%_G;HSQgBywCmAI4rA-6x@*2kQb`p zql1gczb7NR15Q*H1#gvB?F}%5@=m~4-!{!=(Z@*_fggV?90 z*u!=Dnh!q;txL(B?&du%0Tek3o^(+eX5^Hvp}C_q%h@^N(@i?Ri~QPB@r{G8(F9*j zU9E_+5#{+(u$@vo=WVpo^n1laEvT`GnWU&xxY%Vzs;A|OI>*btyK+A)if`70kSp0u z)X3kjAH5)U9kM3Se60>x=IExzI~J=5{g?*<)1Qj;b^%>dnoY0@97Q`!V_vr92Y`eC z8oF~<37VUjBCFOzOrphGacf<)D=Se&vzJUYAYVu{Z0}9<@{2z@iw49zD6|W~eJ$(R znyAV7Mbvr&mUDLVq_Ib0{mDc#Ty~D8zQDvult1C~;-zbp%5~zt#OEcw`#fnnducHT zoPL-+4(XyUbzzLyuVdN%ZK(FKbi*{o2NBUPrrta_b+#D$k!ED&zchtWT$v|G*!j5z zDl)2c3wyK7PI0IeEV$znLxo4y3M)!M&(feY>?jjyUt2pYvA)^@)RIn|;H+y>t2zNI zdUA^;U+XU)YaDGp50ffpxK*}`=LPykp#p54;7#P1_ z4j2B??*DhqN9(;-8Pa0^fs5IM{iAbGlDHxNVT~LBuyDJ}x5N1#nD`SEP?i_mqx=tB z?D>N&{ z|Br_5$%8aTR=8#LgivXXGrzSJK02z0$wiN-M_+(NGw`ohK+3GCn1YH%)RHv2g2(qB zqGZcn7noy$a0%eosx>|STQ;XS-#7y7kwd+3{ER?}HS9{vYp8z%+QJK<=LlWJsl3*m z?^Apq!s`Gnm7|X6OKgF;=6cYb~s*lHNKS^m&+yJ9}9%MUVr@h#ppe_|D+a=K#zep zm_V|==I+Xz%FmGiSD1qOhm;D)3rHS7@0P?psONF4drl_uBzRnRby`(tbW-OFlpcm& zb0WLUsrL?2tIr=HopfKhmk%TnmtAxVfyhk;Tl6MwXr#j{u8eUjznsQdkRhIs{f{sq zo4<+TpliJ5jSdk>uR?KE_OzU=q%3y#A%$5w9u(CYc?~@nJ%M7eFtdnR#?`fi!q0E= z%o~=U*Rr_|(^F!62A0LkZ}fL^2H;Edo7N1_X*peksD+j3#}^TaMmh=rQ;ZTSww+#% zC38`w7q1{M<&L~q)zkLS1FOZOaI;m-Ti449fk!S`TdoEaUd}RF z&9cY0qk_h)nQkzcG?~Z9>&gVa==lD7QT|o3#oe*mi9Xiiws7P#j6bMHR%!@}5@dfh@6az}a@h0-MAvXi@oUTy ziT}KTGP$5n{I$!1k)01SuwG-NKx3cM#cRo;hdH3Mhe;Q*E@(+tmgW;|wRHnSgMIaRZqHa5-$22ga zbUhrN4C3GL4S;RQexi@o*M#gn{cG3{x*^=}vWnGOf{L5=PdTLv@&MG04Fs?J(zG*dvXI3X!%aT!|1)F#j$-S|bc1oDHJ z+VYACrM(UGDdg_Q&82*YO9PY5=sL=$ut-z&=sUlFSbUys)7(*L)6;4O_+795TcZz) z-TdTRflyq(0&VNBzq%Ko!t#S4ojcSl%irKVD5_>gxB|6dQuh)*j#N}YdS74S--5cG zPXdSpMoju7a6g{xAsh{v{u2zK;WcRH4|kK7D0i0!6P6qCgPts~4HR+c9={t%J)Pvh zv9P(5D+}68lrTq;t}WlJmVJbO<2iVcC8{qHQEQvWq#5HZB|#y8aowr8NYWbpW*d=+|;nL;{FmXsDbGh zW{?H+cM#^A$oHyxJf3!6gT|@xA~>hw;1+VX5boMy$o5wJ;@a(I$cecKtcI4;hz z8w|bCgQ)&i<%ER$QyJ&uzWmcZ^^L$gJW6hQI8gFexewrAd)>&a=h=4n*RHUBDu5u4 zL4j-MS(2f}`}8@3w+a`UtyBXMC=@hfN}NT0DS!n! zwttY@{pgN(`SuBH7E&~O_RQVTb<{Z5;P3pVv~bPHpK}k%U#aMCAE)&w5bVA2(rOG# zqf)d; z@dzF^I&{M6&Et-gr+Z9R-~`I3(aoZYLB>9b*wQ=87m&+7g2%-^pbwO*ml;39n@P$8 zm^i%qN%d*HfYr1gVXx%p$y;7%`WM5&ugBRRa_Kz?Y-Sy8)Hewhz5HHh{5HkTI~f?I(cXZ4_t&D^L@`{HS9kV+qRG2FOR*+?8Vo#+I_ zu(%rj?pVE!??~eMSzzvPNr2U^B_tTqD=cstQ=5)SO6FBO3wlnXDBM?4T!w2^Z+`;% zHS87nx&n-}WRq*ti7#;>LV6FNRs3(Co!I4wlw8I9c*gg8 z|Hi$rIMPSE6j8p4bC7HByC5Bt1rH@CG_uMTVM#>`5f--&aRunfYBg_H;FZ|Umo00{ zjct7A5wBG**^3Xy$K3El0u40^`!PW&UDHAS6t2d%9K3JmKE=kS_Q?1rNuBY&*y;Ma zJBl_%Z>%8dnI6y(N%b?eBPzn=vfzBG~ekl~TOUp|hV>Ay$4 zbQO-hq9KWnzv_M3i08V*~Q4c{Dfth+NyvOn$ku;P644zU}qa;EBiIc_gJmlk_U z2N3r!B?T=_b;`X(kOU~OaoUawVs)}0Bw70MHkN4kuITysJ+OL075DjmgL(J7`*_w-Qlcut~9jPBRJS{C(_>h(LYsUDJ8xL%H|Lwq|`7tMql7G-7~n9$!n{Z2ud!|>6# zhh;ep`+;(OX=2#iJoNrJ)g$srVYY~QdiLZjM4EfO8cU9O#(#NEQb z{VZ-B3+idfOl&4_`Y?sWaPJ%z7BK-gc{Y3Qg(#ve*AhfQS= z7}}d!kM)wGCn4f@?WIWZC(FU8o_`FAp2Wehq>awJr=8XM9~!?ufc}z@Td-B8^3G}h zDZxmgg)fl2opDpXIUaC8LQTTA$8aN|2QXhIglb#K6$1igU1pWoA~vXhv0ZMf8; z$h44->V0xBlHzEy=+b93(YLE%76n4)L|B78W$!x#zv+0L%C=%}8|tmX-l~h}>h#{Z zuJ)p2GrBxwcq|*g(-G*na^|g0Euq!qiWIk&*r13S2Je#{e;@=yV@oP>WdIMY9aUh( zFBs}^HNMN4@KW2#@!o3Ur!`;;cjf@5H-wcl?;GvliQ)9Ui;e`0n|43!)6dJC08K4p z?7Gf>2o}~p1HKn*4Jm9Pd&zs#s-aOVip2KoWot-F$L5FHdz;^bzQ=dZ#%~*iE!z$? z)z!nYK-)_<_m~|vrX_t6Pu3Zn-(J7Bdzc)?%=T%I7OJT^I%bT#O1}u9QL(eZy|H zmY=>UALIDGx6gLyD|9|Ef5Xur55HVa->v4CT2fC)71TVm6**=7oQQOT^cecHk%u(!y8tJCs9o0p;~YtMjOVTB`fDv zbi-x*Tkgv(s$E0 zmXt&b@{i7kRn7Re#@`0fZDOfbi;V|gK&Ks2f9Cu(VQATU{AXR{j=U3mAX7J83;$Q(`nj6aT z8_T`9TekYVIfXgI+6`_vLXq8Pp^`TOlZ`|?N=b-yoNKHvEU#cjtm*$-$Gv?!E z2-i|GqZge_W=ok74XlLWX8>)O>zc`-BL_ZIwoby)Z{x#8fS@JxDGF5bXC^5ko_*(UrEkPsDVADiHuijU zVOq$$Hv)dgDRp*d5i-GxI>%-3Uln+?7{=dJh8ae%ytN-&r$BJ!%{2>@^pW41`pUIS zE%nyVm_1X>&!i^}W@+XWlqQ|5YWFQsT`rG#)GD@A5ego6NM0+xOy3XV*R2_2ntbnu zz7BZCSW0-RR2RP>_7zyB9g*Qe)AGCG1o!A4CPZqd{)B*-U}wi!2Mu*M;}qm{bXsJF zDyTe^b-afvklxIp(vW~uGj^0OE-t=95$?&m5-z`~l|FV0Lf`2j+c>vBQTCt}!asPd z*2N+XuG|?w60SKELKXIV1-Vj4IfogPkB=%K<}n_P z4hPmzDiAnDvQjNx$FkZHTu8gIC3N{3`ltI^HDDy7P$s7N1{W+kSG}rF%@Yi$_%Bef z=mFt~BKN7G7LfBs=B)L_F@WbLMU(<17KSY{9Yv#a6<-iw+zA^P(h<%)`__M;3O^RdYDh zePVC;mXBMx9CH@Kn#_529VACx+KK5dl2tlQ7<^;4eqLz#At_irTMpY(N*w0tQSV^Xr}8}?8a%n$Z^ zD>565?8qWHLIo1IpIXU(u4vo!@8SX2GI$8SW#<8Zgjkp0V z>3tgqH$1g&q(EH~;7R)pkix?=43BS&qg`ho40n#UCA&W1+f8<+xF&+4U(9rpUHaUe ze;RmD^;(_#*L9)rk8y6j{uGY3+KOn={(#7$tsthtLBNn5TgBNK8%VX=gRe?{XFalFqqN-BGaDb&H7JK7BgC^;iM^a;)))8 z?N+s+glp^RtYpG4P3{D?S9T;yoKm_@7^s|v^cHs{@fEv)(4HOR%l#=u&34#t60F9* zLz%PTP6Wc^sSI0{MrN})s}9L0dd)0yS-gNg9Q@#oy45JR{eY#K(2K4n${bXbc^=X( z12s;~w|ogoi(lrpJ%P>l><3U3_^2&^zD~Y#7OguYb**>@SGM9@4L4F;KXqSQ)a}H9 zl+hQOO=%$wvhsFTBZf@j3s*Kb6r5Z4;l02zE|I60{aew;3WUU$u{}LKkRMnfAquo3 z+bm59)P-y7I$?ZSpD}Hdl`T#~5(=ZqR2}W}D=@z^;C<|;cf^nIzO``l_}z~f)|`is zK+Lh((c3xQ6~4?l62+6+C)5eKxWIX;h{*IICL$)zy;HGy5V-`N=X!(U1 zlEH;P-8mniXOH4(x=;zbve{@Tn#dV0yTwDJ@*R@v@UU^8bUTo|;l${I-q=XrS zRRhnHPA*Ig#7jXwxqJ~RjL3@~rqpF$ZCej=!m1mkkHvL;`1X99uqo_d?J}96iY`F3 zzT<$tFYmdM+=LK^R@Oof^#G5NX|v4l*qE(CM^t^oT!B8`EirW z6C`po<+A%d_{yYR9 zEaXx6J})m-PwFOQbMg-ti}mkMcHR#k+{0wsfm@=>zQna@Qii%R)K1^Nna*BJisZiw z&LrQ_W*o5PHy9CYl>Q>&iZ9^zvby^5I_5BIyRAtv8ryek$V)uBlG+=f5c`aBNYRny8xF-ATkuX5RaW=hCVKu zue(O-Ib`B zoUPPA`phVC@_?jRxz>&yNt1bsJ8XM1pwCW;&sOkh-VXrzFtM^jaYV<6+1f_g=yo#s z8R4|z&z+5QmhR4X^mm;hj0@L-ZfYK2@cZADG8}H`UF#z>tnNfhq)m%B%~IKTzJg%Z zt}(LpA+j_Od~Rq~JeF;^-vF7UAARn6-*U_#{ILt_X#>JhMT}WJ9X@1}&Y{SOe2R%I zsr!BndN@BBC1h9Y|2{nh^s#81R^zFHcB51 zQVY%<+4bneKY}NNf<5@)IyP8R)_Y>ar7999A(K6FFqfWl>DtCGT_U4j&ynm1+zU{r zw=JVK#LzyZP+WWC(s^Mqg~iYg%ewVrt>uh{)}Ext^$nyk+}soUJ2>iq@HLiZYVQ}h zze)uW3zXQ~3==CJSY5~043lz1;ZH5X01Fa9rtUzbB1}CXT6D5M-%t`GA{l9_tD~ch z7mj={_m?91v)d2`Lc%^GMBxPqKG95fa*5D*ZYq=bkP5YV^TKYtZS@IN&%;T?BCKxpXZ!omuY!oma! z4z?!dR>nX;8o`Mg5DKb2ahaZa`!{%;rX)uhf)10MVWY&RF|cu6D>N9o`-TznU~B!3~7jgfgk!*K)}F# zLgn`j%{Vxj%?x!w;4FSX96(9OXjtXu`uf116;^V<$F5&W=S>y9{FlC{7OnsVb|3;6 zBzOk|XBdJVIiy8<7q`DH&gNZ`+WG~i}Gs1wQ1c}ox?$s-VLNlhY15WH^Qabl|Trf(NH z+sBCb^j8dYvT^9V&9ERF{h}@Tqy!|M>XwOM$D2JJ@MDRApb`K%1}6Rq zZ{v5lnE=%&07n5RLXfid>k41}Mm>h8havvSBLh*__g)QJ4r$ptSPkce^B5rC!)OQX^^GoodRxm5 z`5hF`k9?c+nYrB`2+{!*BmkQ*L_x%ic>KE@q`U|u5nil6g@_8l>Gz5-zJBR`90Syv zKoMf|SZxW$eCSyq^GGM*ETKW-x|o4sEF<6yq1vnV4|F51tJRL1j5m82f+~{ z1-a0Q3&mn8^cKJkVXGo}Gq7gg>Va2*F2Wu~v&Bq*k4?iJ%iU9W;C1--{7hja!eITy z84?E7mv2C4Xrs@?V3;C0&X$BT7M?hGs-Icyzf599_(;}>%N?TAdl{=3dlO3;pBmp1 zFB)$guNvDB2NzEpcd=7!56r=u0XK>63a%bhHuSK&xw|+rG6IO9j@62Liy@CgkKH2l z75mKcf{+hHAGF-dyxDn%dB%R0d$)Y&@)y`9H$%*T)DMCQ(iCFXPpXy`lqQtZm)Mbu z6;KqK5n&X&NsRjy2T+Q?1vQ2>COq&S)gM)*Vxsb)vZf+Z{~tkwDW&lTMOIqNeGfDJyp>rz*E8$1H!+C|dc+ zrq4#*IA@h;6=;Qhj&uHc-gBP3(zc?`iNV3b;l+8&xyq@=Va^F~c(prpbg}c<%{`jk zzdfSbJ>AjVGudO?hCk{Y^@Y?iBetvy!dw8G>K~P7qbWo`1&+qQv@ne}{6%`YTR~m z+L7dtT9CYvx=0R4K1j<*wj^dGFeOPP8>BvB(2`u@>0Bn?9KSPhN!i4A-8+|GzxuUwd1!mTW=jjaQ%bspmP?f0kmi}wfj@@KAC zIk3Or9N-FJSKu~aE#a1aq5RtYc9O_v$}5y1}P5ySTI?(yF8d60drW2wt3N1PtG0R z-5bf#`2P4O9R<2aI(D7M@WX!S-H@{1mL+Ft>5XfoO;eXxmoJypcoul*yh%I@JoFxP zo+a)F?iFrjp6DJ`uV!y3Z(dKV*R)R?x6Ds%JFdsJS6hgFaCT5;Q29{zFy~OakP*;W zaA;6+a9P|1UZvafnql@5&J-vfJoTKvq7%Fz`oQ|8Lb?DPSc*tBxaR2Y{1IGK3>FNU z99+B}lw$OUujc#aO>;Um>oukZTSMl9I+3BfI(uzMZb(WjM3o@I z)nI;hp>%fjS>k;ritVy7Zs;CRw`PAqc@c`sh>M-slUXL;o;B{8dG0ZHG0nSaxWYVd zx&C%uvN?CjH_;hwYB9B%Ma^$}qJHknLBK!FLczZLEOaTl7xS(#SKVuO7d9(#R(xvq zmh!qBpUg#{9gQ80Ad@2dOKw%JGtD6@&GX>X;-%s1>}u}&oTn|)R_>?T13CZGbI0Uc55gk;=6KtLuP&s{vYyO~#Ir_oe~U^RO~-m;ZWGh($#T)aR8RJk znsS$dFXac-^Ft4Nlx?6Tyk+E;a3}ufu%@YQ*NyU{=~BqR;JHcn;ilRk+nviq^sd}i z<;Uf$?mnMM*RjBH&O`D|Ra5A<(9oWK#NBKqAVG`jB61*p8z2EYP(PO-6=j9@ij_}c z#Qa?lvImzKj(f~YK@#E$MJ%&#urNvCzmSW>Y(k!h_Z8|DDwQH<+@{rLCzv6b#h9I| z6>3-ORBNgnOC1XAy0(8GHtcdw@e@D>83pl*(uF@pT1!GoX-bhwEse+w_uMK$51}$A zq$O;XAMf_lW-WzKUgbhm1s7oHD!a9dYOTk$Qn9|ZM`MJ12=mUr<KH@ zWJQG*x}xoiDPr#<)i2CZFi1Tj@etuzSU{s52F5$e6Gz>usS8o`aC#e^ioTZGbsBHaypIrjfTFV%eh~Js^sIai&E*STM1G$4 zJzu-OQxp$%nWm7f;*2R`amggo&W?05(wpmv8i%bht z6I^{{V{CnN1AMDJYcqqAM=7m!oAyP>vE(q?mxyiJZyO#P*t}A_@}4W6(y!azYTn}S znje-RQowbAaRI_|oS|kx4k4GpvO!zX5>ZZ3vr$REc6cZ7#&E>(A}i^_2{kj3aQknplB-S zuv?k*Ivt#ER@)+$67y82Dx1`sHjb-a9OBz9pDSk9s<4kQQ#NFYGj+M6c4aRSq|=5p z6#+(Ta(sMix*Ic#E1&x&>T<5y@!vL&<}vZQ|QAXgeq?7nsvcp1*Ih#5oM`0MUNcp4-HTT6$HmXL@wI6M3k2UaO z(f83;85YrCvA187H$&t|@)m7Bb;QC8Dt&B9FWsKZ0oYkZ?I<0O9o$|>-mLF_dPQHU zKoz*W#w*6Xq0RCjR(_k=GyE+#?vypu=!DWbWQ1+{m5K(^y9-7f(!y7 zBq#(BrHz&8P08!yvwN2CP?ltV$qvShbVac#PG>|X?#uXA(_;9t_T}61W-B-b5+lBw z>T)D$4d%BVN|N;w*1u&Bq=5)jtq6SG;sJEF1TuVe&VL6XLX@R}bYujSApkiXmr@92 zM|87G5hG`i&?LZ(0fOJdCjtT`h(+Rq0i8*H)1zyK7xL3a1I8tEDpq3?qdjt4Fonnf zku{8x1g+#3tbiJkUY?o4Ac@#wRLC^ev4|5ocrat{{!d-~mYUCHG$zh+mMy#eJYGK zmo}!E&Lw~@%XL%@t|81s+|HN@)l^cRn(Ce-+G(7=kPFwNwm3P%H@Q=42$+jwez6}x zb|E*^DGd{@T)S+?Tg)=;SZ#OpZup>ky8>+mi^`mZF^7qVvkgOuY{ky=@F1b1@TawB zqU0agKR;}FcbfUNNdthnU%7J7+n+$eL9<7tPE6D0bZ2edwOF`^t642;A~`#{)b+I6 zC3KheUb}&hrJL04Fhvb~*6*2_xLK#{S<17mYHz#OKhGN*okUNwZSwKUj!T!)3gyOZ zoABIw1He=Hg5guWbMoi#yTY^hp-^J)dIAM$NbSq4@{c06eu|3~f*sB%>+EGwAv796n*lniF=rxtpg zo1K|mZQQ0fSzz6fQBX$d81{Q{T#WaC1kw}Y%(bnooX4lCAehVK>{> zWvO>)pDTHbVfZAyoLvU2Bc{uN{hbs2wb?z+t>*RSo$+=2O%qfYBn|v2>?cYuMkzYl zcOPN{t_Z4C7P7bdGLFyZ=Aaj5-4PYaj}m?J<9o-{;qrQz@|BGiNq2a#)npaAvV`IU z%0w6)VKttLh+>nDo94xa=+8wN@2kumPwXfq1Vb(GRf;v|KMS-{Pqo+jtS#&WEGpbo z%s0+YZ-0NWuJMIvQ4CQoEu zAajO~!kB^F`J`=Rqt)+(BJHbo?%#KoM`1wnfg;W3GOufT)#?p9e>I+hD>BrWqyJMf#-bCTk;h|dp;%MXD<8}0-+ycJg^i8p@Am(f<$n?X%k#(odNQ*x{I}k7o)21yW4{{+NB~GuL{P=;+j$3!it19s*VhHYe$K4~4?F`2LGE^re;7!y;GBRF zs3ysJ1Qe8*ElXNyIIAwJ?EL0;+@`_9s*$Kck%>GD+59w6&!|-xTr8Qqeqdo54W9s_ z0Kpx4w&NbVYlhc!%d0z+tGk#$9HUCYTKqG{B~$Cib<2vD!`GQE3O^9!pTIJHPz>M5 z?6g2Xr>qNhMgA#vgQob2_@PqrL;k1iA?Sx{PQPuhME1u9^vADU;sx_R-qSFDik{y9 z@l4gp#cZ@&g`v4&7S>5iv{Qm%H#NIOh z3n7z(4yqCR2#iN={BJkABNDRz0|DGY&>c~ae$7Go9~Nr)@38+uARmK$Q_Ju08LZ2rE8ArUu~0U2&;@WX!-G0=328`Y zLN;-IU{`j3?1jW)hV`S=u23ygM#CFM?Q>G53kCjskzj(o88;HLAVY=H#j+y>r&jFL zlRZz#_;^o{Z}e*U?20va@)`=IZM1T$5MqWyw=zNY5D$&d_PO8WwoQ;b*F8WjE!%Q3 zuOTCJ-|ercMI!Fi^ChG`v*Srae-l2xN9hqbOuuJt3JeqtXk4>8!+7C$t6v!tP74JB zz$w1bXA)cYpqKHrSd&t%=3dN-?!OPoC1iAP3Z#b&m;g5k`|$}peL_io-Iz*-N8k{J zHgmvwat}PPO(0ab-ST$|fXL3QU;KU%fkLC9h)FCirfG=GexA_pM!psjUHz3Q{RMHR zgE{0J(FH@jxfvSaQuLh@7#ZUkv{Ge99p)J1-s}vhOd31ueFN$kB4xfZaxH+jj89;) zQd6ZlE6fm{09dzB0*>NkL(uA_2U8F~-wfn<2tm_SaV8i{OP(WY;Co890C`T=?EZ@W z5;xSo6020&aKwoXEPK}wBftsvQjEh@JhOe&LS4@rl$wqM=nUI0iXKupm!V9;gC&Dv zz(ZWm6TQ@acT}FiJwaV{sTAI87?ek#TUA;U0mV35)I}FujSMVj%qJ|V+~vVYXUqAH zthDnJTP?Y4jRytKT;MRn{_zLG`yJsn;ky4;1ia<8Xxaf;#8dGah{aI<_TADf3fUoR zSVl(3Mf~3NfiJ4T1?j=-H5qsg9tZ?sCKq{CMo3rEm@uUZI)4B~u|3 zHa~nkGW=c*AmK}bdNQMEXTv_ionp~4M_XmDYEc)YK$oT{)$fU7wh+2p75meT031Rh z++y5-8uwQ}@)&+k&)2h^4z{x&iR}M^iFi~uFmP^8?5&~{- zh}XS;4=NIU{$nue)pxr;_Ku>Uq24;dd0PSBOnf7-9z|0M5#2;N9*;cY_IaoCMqjMa zgGGHY=N@#SLl%IoVyo~Oo7Wo?n-%sp{x*ly`|QO|ntfVzKlJRt-mbUkpmI93d^7~Z)5-V*DOg^`s}>XUKT#;|1| z>a~vJ#+g#xM4z87c&>gxijTKFJdO+N=@*k3t#W zB3`hWra8xDqYoS<9PY;1x>YglN<$876(sC&>bLRTn#>jU4Xjef}ZZ$iEYG!ZamiXJCqHep>K z+nxlsvNCx2V+rFiIQVW8x5;(*m;H4IyASisR@!eov)VXG6&_!P;{^{t3UlDFB7UVH zV!`79nvKNid9aB1lmeQd>2v3UOVavNX574E_YPQ1`QKAcjbcTUMj*0nvO|YYku`4U zc&o_-QGJSJQvTdka&daI7p6Chwt(N;twJJmq*$+;pR2GWAx|pZL=lGWpHjCmNUR41 z*Pi!(Vye?nI^2-bEHe017XgF)Syqvl1=hP6&P>H(96ZbBXoo`Bd3mButAsyvy_9?&qIp8Hsld(fYpaZa#d6By9@5Z$a=$T{Kz=fK;f; zgOb-KJ|~vwuK1Jdy#BqZgws_G{PX84_b_#LoWyM5?z9R`9MAGX#|L96b;VmBMzstz zd^Glh*e^3^G=A)=$?HRYhCnXt$ElU$gp%b{J3N4OLzm$=XV|Jq;9eu+2m^+%XL!vF zoXVUB`+xvk%5E+a>WN|2GgMMR|IeW+pXjPa9zZT!UCn#2%xkVgj)*O*{t02+u_Ie!uQ2gBveip{f9QN=iKvBrN=`{c8ad?g-QxV z&Z&mB&tI77xLR4@RP71Kfo%#8CwTiD%DK5IXBBRbOKpnArooj7RV_r&5I%H1kd!13 z-K4x03!jU)qYJK6Dk%mPIP|iLUhtIomW>wnD3N)Q5n~CJpCDyuD6RP-qMcxR$p)jd z{J#Yca0!yuDHfg#Rv39o3PmWl`Y|qJp*t;lxKU0j&=QL8>u>9j7rH7@EDE3iL*tz0 zVE~w-9cp#4N-c@-PfRV9QFV&m!`W59Cxj(5wpAr3-%0OUK}B?)#zu!*D+=J_(Fs5= zQAXhs%KwwDV_FA+|L4WbSf%(7g2uInARxJg6a<8d%{PG5RE6&s&39A)yw3+5lkb!I zQ<6}WXO{tul|ia!^av&qXnSqUVpNK4#-@o4(@eWz|0)*eP7pfz7Qi@iH3T zww1=jG+zY7^sV7_lUq&<7vk=miMCNARJNQXoh5Ggn0_9&5qt{h{IJ>62nZA%c+S8l6;Pl zn@|*~9e;2MIM~MChgbV7d{sK{=1WkZX|lhc#g`T1FRR^S^vFk8omA0}41Ae;(29(G z-K1xjg|ot>M6RZx_lE^#G1^uMSGE0=eFzkqbfH+Jl}b+fGAl;cyI&M6@65R$T8*kh zw~4`5UOFtNAyWRF`ap?~zY5gzq?US`YcE-K0IRtKB%!Q~>%=2zwhal|dYUmT9*l@d z>!@R04|LA4+*?v^ycXx)W5^i+hKyYOl)xzw1`Q6zMVPiR!Syo~WiD#fV!vM-8)HwP zuAuqX_DCV z2|#jRvAn8VP{73Y$kv*5)Gp3KQ^ds$F&}PQhl|Z3m2|@2YJ)t-2gPo7q?F+sNt->@ zs*ebuADh!hsrV)UeELghvpV!{h2{B9XA0>IXp#2FK259Fjl1uK2)D|30wk0QznvOJ zl2mVAN4pFX2>}MJ7e{wBsUP?A*qftz2P%?qX4o#jg8>=Bpfmr4`{4K1L$(@$^$UqIyxDTq zCt(c74*BxCL4a|Jj|xQ+xs1@`W{2BjvFg)k26nZJI%z}_xrUCtm)VpGGEOwP?i+hO zEv<^vE#s`u58#garechCV`a~Z8k?%?o0K|2*i}_9=*7d_CeJ?Fz%1vnEa5}9F?HXc zDm+P5U~=!RD)t&%vz?t`QxhWX0*;N4TAP=g{h28-5_7nFIDKbJZ9YaM$(7Hwmsh5x z>>6TZUkO>?VueAZ&{3Y=CEz`PB9ACAuh#``ijor|eF)HozV3>Wy7Kh(hrR6Ch+HoR z>k4=iPayObXFu?%j|%Kqvll_=X} z7j=(!&jJPPB)Y?kQu9iK5=y!)8a(q31Fyw7#e)MaytHUq9SO4TW_UP}D0AT(R|yH? zG*a_k^eEvFgwiu7 zfGx3b%>%~IlcE~$00-Pvi!$w}9;rV0F_e^mK}aS%R&Q?&RGCmX>&9RA4fW;2Y!O~! z?$izFw0ynDcZP{dF*8H%17}j`;{4CZ*rXQG$T*RDrR{xKnjUn{GjmMf0|FhmRdAg> z%bhN0NT_hoZ!f90C@ff)YOwRV5lNu+JKcf8wX_ z`#Dt>N=(+23XpUQRL?=8D(9)s{#!8XY|c#b*^e3MCG&6erP}LG1dN1Y&Kf${!hLDb zJ&(db%`(CrQi8D7EAT*C1G%w51JGBgjfH4s0NAo;=ul=n)g2f;P43e71(#giax1)M zL2ecx>N_R-_l_df1d4@Q@Q$$ zw}{QIsy+28tQS2GTTJ~NE6VXztzwWVhK;B#L69`cz|K8W`P5mu& ztuYQorCNVz)ke1oJP9{xU^Dh3Xpa=W@HD|k=NGHBCg`d!N%$Qhdm=xzk12>z9} zQ&8-b*}_k~LdM+FHx*XmtCrYXGpbE*mv&|U*SAy$s_o2ZyACuMpQR9t0b?O>lqISt z9;X?Hy!0@6yGMf8*oy%HpVCVw!{wwS+z6GMo*1x&7}uyy$Ta=Ym&X)#WvYz!35q94 z9hO@~cTOr)QoTHW#FK&wygYW-3@XCgTO?t5so-Ai@)qp{@)1;HQTqT2^5C6v`Vs6| z9CVs!qK459xjHX8oOMLqa+O}exV{d7Ph%Y^0eneKRX4hWZMax8{$%M3Cxm-;-Yg5bYglm?#2vpGG%2u=ZXbU&<4YX(kp}vH&48*sfc0E7)vVImbcBT#Ll$r zSAd1PK!V#99;;}@lx6$K93Hn7IMWR zdnP8Ej0VzqEvM9;99#(`?)Y2;B459}>s_0o z6wkN(+!EA$duzW%3)Ov-De-+SQJJe4^PvI{x`ylVXE#fYNkgqRpu~D^F)+-%eJV;J z)jJpL=Jv=ZS$xipx**Ir39xh7-fmk!ftwIF`_}d{{wTmrmgMzAvog4(BPUp$fc$Y6 z?u}aIkn$2UhJGrt$UHS1Ocs!bomh`811Q_=Rk*W@3GuQgqZ%|9?qM7fcrcaUzR23* zSF(xCI|eDs7WT6xXrTW1g;Vm5T<$dW0-?&Ueg=<Z2XC+E7KN(5%` ziBTV`8T&Q%0NtS*+wxkA zmY&;jEfR|G$W}Zo8cqGEqtwZMk2hvFT`gf$JdTZi&bcd~s5gLaAxB~MVIqUCNxi0i z+KF5PO+3;A zF@untutBvMZW?julDP1WP^|Vt=X+;>z~!s*ALm*FN93E5-c#jRZEmm)N9IW3#^au1_G_i;8~L zx^J;~>Qid^Q@-9Zo31Llk3@{LJ;T-PUwCY2FI15m!BtBcTc|sw8+Jo*r<}AJ6_-Lb zEB6{tTHVr0DEPF6wEL4Ql8*5%_A5orG@>HoMZX=QI0qP3n-r`!!`OCoWR(-o9c!BWd{P*z*Uek zXi2zlJiz7)5zFgD4aEd)%rLiQuBPmm{P?I6nF^ zif6_{QtZHHVJ*t1?x@B}YuCxFE;%BWfz*)8;*PTF9V&f1d3))P^Xl(*C!1gRxr$xedIS2?C4m<0}oRCu>@rzcagfR z+1mJD^1LG5Whf=Z%Da*78c%v)8r~z!tTOISR4sbSsa4Qll&Qz;JCYD<8n`@;D`0|V z!q%F|>~2B4dPmvYNW(>MbOdIy)_OiW;iNd--drA=@OVe%Q=$UN{lgG zn%T~iDDBtnTU=N+0Q~W*J(d)eRUWqXEoj$B_c$JCY>uMEq@^(^e$Rr6YiYHu_~b}& z5KDGtB6%c>c~SVL%?qS&xKf&mU=yBG=2;_Jv*BKynU12{_x@;Ktz};YaT%dI@iednz^^;*9Kn z;uYwQ3~`ZdfD$?Mo$MWiz?FSW-{tzG#VP1I+ZT-Rasf|0ekv>nI@d^M|Jn7Lk6xva zYvZK^)mO3P*oV4fIcT~okaeq_X8;@=Nquxw>ibU7|8!npSN<{qikkdqb3-H@rajGs zb^k&N3t<2XL0t!6tsGFg&>~yT$BB7m6!vrhfPZ43IX^SCF!G2Pjp-~xj4`cdtlT%| z-4#{VsizFi+p#m{q)Y$m_w%ObEK6_NcoGt&LWC1ujdQ;j^654h-$moZZ~t7Ms>yW0 zw#Q>J%H@YyQ^iT=mg4sqH+#Q&ObvTVP&Qp4Bw!sA5}$2xk-yhPG88kcS-mgRVGBnl z+wQiE4yEmz_4WVqwyA#`4QqT`t$E}eS6G!BlY^Jfq$xjQD;$Dj>^~b$%E9gO z_`>H^dbnUl4LRrvcYM(y<|EZ=rcP zWm@eRZ8WtFuXt=P(P_%xCuRlKEtN2~@0+bts3%2VW5yR4RcN5n&?)l1S3BelsA`<* zLyk}Mlu@gxfM?z3_%KiSa%E%Vm(l~sd6;Tepr!jh*go$z$PD!Xs4n4H6;8e(%oM*f z&hbP?1mmlWPJ{m#_baC=^(rRSYqI4L$4AyoyroQ~zfk4kPv?`%Xm(~!VsLOE>s-zP z$lr;TY2Kv;|87@5lpVNn%@TX3Aa^LUgLK-@3~#0ar>&?_ZWk1`%$M2Pkek|6Ihq2= zKZ@S>wIxI9QytB9NYJU~G}9tnQ!s{FSY^LG;ql^9{l#1yIMM+Wp8C_nT;_`LQbSeRn$%`psvA|#j1Hx!{=Ck#PNkIfZE|$tyFX`gK%974w zL64RQf1@$kdTJQDb7<=&#%_H5nujl2at=%mwRCyQ3HZ}>jGl4M0!Cs@NM$wVvl3^1 zoehTXOmJKLD|dRYG+B4LNiTT0W{>IR1oXvsfHqB;;W?(p4=oQLvQJ`ld_`H%w*fPm z-W$;Ph&??wUG%I8Ljs_Bih?SV&0Ek*%A)F`zctU{g~?V~u47=NL|xOvu%)>rOPiXd zV`I@HKBX0d=p7cIV4|v5CpxiJT3d*0eDl9WU2L15yX}C`SKJAMMXwXu#JyM7I(9c> z=0_0Hl%3`sJnC_r$~>Z2Zp<5W#Q+xjZoBG75W_~+g)NlLt9)P1HXo-Ld*4*`+l9<` zcy_CUe04=2z4y;%ddKtItni*RzGKfWCv?y7PxM>zl{D+m=wnVCDaXAX!e)9eqc0iC zbvOiN`ZI_2*=-P0eT*yE|b0ESgjH~!eo77e}jfZ{Kkzo5+a zWpyBa|DVr)7Cy{U!yC^%K{cudNa)$)^RyY-T#E>z$Noaa5CL_286&W;s-*e{(=7`K z;ld+}@@V*a2xrlXwyDA(NtMBNcih^%btiT{YzJo0|1 zB}b_a(f@RjA?yz&T#={=)qfS~DdeA`r|yLr#Q(s-68#avAruWARsWHlyYK!`{{Qg* z&yxQPpU`^h#Pws|4+s<%^mm)nv@?|82O{D&J0gh*=07>#W`lHd2dISZ`L6r558)5p zpUfTLbLlo;0?b%WRTsEi7k&~Bcz@>2l`59o&cE9e;`w?J%5je^amDu5T&~+&X=H^C z6=5D^^1%U2Y5VcVuuu)2K9!adnQ(YE+1=ZSGRH66jcs&_HY`BYNB21XzA|iyw+DD< zEuW8HifWp|V}gtHXU_k8jYBY?*^K=r%{SN{H~0KZfA)RH@7V4n%d(?~5V3|EXaDeh zv0?6N?*#R&Ak2IYozQSp<2Wta@Tu_Q*=>O*!{^1Ye9DES=8nnA08*6I6SY!iE$o~U zZ+xi`k(}J2NsBe^IDtDnH!aEb@An?SfxlI$<{y1FODW|VW^aaB-;t;MkdyF%#S9*+ zF|*`cRIt5!QhOSY?f2KC*?b+-v!dhV!h9OndLCnrHsELx=iOF~L-K~ie(DN_D!e&@ zLcZ1*G}Pd;h8ktB=sBt1(z@gvnLV-Qe<9XKLBQn}{i7xS^?HT3Xt#8zOV!V>p(B4n zOpUx8ilKwf0CU43A{S5s51uH9rJWb&;CU?_@xD61-pvvF^z;>{l^Y+z8GIIV?c7e; z(-I+lJIsxbVpOW7;deMfaC#@%fn+{_(~jl zP|08Qs#W(Y3HkGSKUm>*5C&GArsVLw#IYKaMu$D{@P8o8xIn$2?{1$sQmkILD@N1M ztlJ@~i<~(5>TDu~!FwWmYiNx5TsVDCI>J1AaYI}5cEU;eeny8!XA-Eg}^i4?9R6$^l+*!CGVLm6J9npfC=p zobuZxTo?LRJ5!L17nj1^z5FrO!Om(eoV#1zGa6nR8^WEzheD?-^`otJfG_y@;3;L^ z^o&ZNFWbp9VMiT+*mefH+4)L1<>{8^S%-3HvE!{~_XPg@bBsEIsbLlO_itJp68G$vjakpaKKA$4^{YbIh;5#W+$UWa?7_G3Au>i;}l(LPYC%cE)je}lD7!h?JJh@c2_tl z3*EubrrHsOG8oyTsl5DsI7B)`I;Glg{blTep_b~Eg5n)^d#;eiVw|V@^a#pFIQLN3 za+_8P4FxX4Iad)M*!+WO?xZZe)%Y!Y60OnHW)@U~*p?KLo_+qlaZU+>Gow6KG+m@O z9-PF$MI|4Poi&gLN3_Ifa;dtGT{@n^!E=AcbOsJcw*sOC)6;gR?ZbKm)_o(+4+`fMITA z$$b2ykKfW+S7*PSohYc2$sCPkXZJb_Ku?ZG)!j1dM>^&4w+lmYNSTj=x-_y$`NTJ5h6j6h)y{^DwM_?UcNlT?z`mNTOyGEw7885vj_pt)JtLxq=vj-U`6isUjH1PO;4=5^7f3jBqMqCO^y@iOC>=6hk z!CZgVPjE|DzOq{E_1#T9!IY57@>>W+pf*9btIC-AjaoO&_RL$YOv@UVi}!sx*zxFC!|Z}k7?Ht0!PA{nYVwT1ro24rK}WNb7$&j-E;M0<=-s%xe2FNFi%sqP2hH$^(#YD-pRZ#q z`Ld6iVv@&LBg^(!*u&GKDEqo?3j4Gi>T^VlITnV!!Xz78k&1a^1)WVe4%w+h)QViz z?{D_6*(hH;Kf*^Dfnz$tP$(y)vkPN`pjbi(EzZJD-q+0jOte3<|C$cu$aQn0o-Au9 zMWWz1B~`}cc84iqkPd#x2(}NP&OH-)UZ`bg)j)?%CM#SOiOAX8A}v~JM^S!Pa}VSG zzOvl9i=$@E6BPHMbs`@9IepKn@wSTs#)|I;B}sDQ9#N#hr*qXB;8-tZJm0Ly;oGh~ zdd&mZLbpnNWc|_AkXV*!6ow&vpyAqBfpj{FpX_nV@x_=l{BLY6q9FI7@6jr1P>o1FIc2bQ zt&+$T{_n@w5NNwnZ10tBP~7@K@IbTBpct>!(M#Jk!m{tPs4~snm3^vo4Zx?8b#dG2MSb~g#^-dpvIoELd??Z+ zUfa>KP9$CYE(&z0M}?1%5N%lz`+*~O*T`3p`S^0& z`n+;dCFpbpoil$Vakc%G*fdK+NyKauge3VyFqIU!PW@MY^@jz|j!l~;RiF6Z z{EdNiEgG=>-S5m|uGDJk`v-LI(|RlNMa&tVPJGoBY9DJ(GHA4u_L@7?mw?Ovg~UlS7Y!vu^ns)j9l)F=$pI@VIeF`!1dj&FICi7j?g#2tZSz zYJ|;A8h*+0=h4`x)@lq9S%6|F45Dq|!F^FmgrsNk*DO2*%B_T`Aghnrk|BzV;pnN7 zAU(&K<5?ARG#Y&e_ZF)@XfY;kgIw*S&5f}Q@tx=zgK|P^psf0L^{)^OZ2Q(@?{@l= z#$~)wH|@BT$hKfsX||m5LmaHB%)vM8PXg2goMFR6Y+OgqDYq#Pz^?q7{{q;A{Gu~bSTC^6bEO9z*VvF z>C=J%om^33rx)lp8o)KPl#d4lqtwkLr{BhE3ZJtseWS1K61<0m{s?zg=)K&aq zaW~nDj8FW|FHK?U4ksl8}Dvg)3$Bfwrx$@wr$(CZQHgz zZTs}>{eQ2{2RJw9GFPq4m06XDUpx_6;(m$G`Dcc82H!hoTULn0MkWURA6Bk}dO#{( zov4&j=nD#|$Qdi^)i%sW`jh9)KI#sNqe8Rs8+=$&z0F%TdIP`gn{S69@43zd7gT09 z?|}`?)#)_H32Pm9Mg}A1<=&GllM14z)B;&`5G37&Z2iuxnk%$0zGwcTl^n@Ufsedg z_mQ-!+1eO$7E{Tws9?h}>b+Iys_^u+)4V7C(ScH$TpN<^!(7Clox*NMI?4+Gi+O~IxJEmxI z$PW~Lk<#%YnSBQsK>YiWekL;+!p%Cn02S z|3ARn_yNMlW)yw5|N5ZEhoC3Sk((Y7^nZZ(|99a3{RVnhFpHLS*+b%KWeaYkFfpvt zh#vS27QIsA(n1GY=2S*iiJGg5dt0*gzS+F3^|Fs`|qQ8P4U5nl}#*xwf9RCEq zVYbf6n5Uza6IgBL=X|GU_CWUJ#T+Cz6la@MQ^M zzg;cdE5{cCZ<&c3=I`+<@&Ty*{ zM5R)^IhfEvm7^a9C)0aOoIrJH4wo?V?-#`(+64(u)X7g`vC;gXU==9}_e;Ii0G$su zMPQ+rWtpb#Dnwc@tkj@?-cs3kX9~p>8*jKoAxBdfM2#9>#X1`oH|q9YSE)<2QTVv9 zQoFtS*1L6ROJ#H`Jc=&4Z#cAcaBO?1pK|*`gka&8zsR_CsK0$h-t8`x12LWt{E2Fh zq;4KPI^;dAb-(!D)f*>tb(xN-YG|zOQVJlJw2;e-?cP0QE&c3++c=2?D&;mu-uF!` zmD^@LZNah@%*G`%oC{9u8(PQUQn#2Kf4Ml9Yldzn?l<|nDu@AUQVE-~)}Z(bRkV97 z`UyQK=N&!f>&&z}qacZsn=I3o{OCo~@mHoxTNX$bdx&$svk&Ao;16uiTsa30NR_h>sG&M4Zzpofyh7JT4juj;5`5PXr52UjCzl4WRi&-g$VtI+*99rHqypZ@gs#?i zbPDmxp;B-zu}3gWi|OuSy{BM4{+E)!CT~qV+cScH`NT#g_5+o+2)AI3pPqd@uxZ+C zbzz35k`=MbHjIvgsaDi2w?Cse;=)+*;?okgYXm7*NKOgv*<5q_p^vEyY_qU~>W#E> z4aOkF$TB|K!f8C(cGw0KQ_x#-Jy}8sJ}!Hy*$xjbgJt+6hz9F8<}4@dn-_%~-VU@2 zpM~PSafin=>f5)XaxJrTz6AapvmI%C-#vEL+kuz4MJBcuBZK;G)m&U@uLgyhX*yi@ ztVCT(VIPNeqhjGgMo-XKKF+EAbY&K6Pdq&|rnS6tyP=plnOx+2u%LPg9uuZ)b55=unSf*SpDmgG%j?uy?kf+9NWcy_oOtV<4?M;Y&4@W1D_d8lb1C+GgP2Oxnv^`aBq-B|_-cMj?wAyGN=YO=}tHF3X^f;q6K zdc%Z@_k=p2m1IVGZX7Bd=`LMw-8q-9*u%*y!gF~%Ovg4CUd^nWP%+Xilk$s7=BL6aM4w14DN10OxnO4!p<_OmdF~()GaTDx~hSygR`4;SA z9P-+u3!m7>8=?!qsS%T&Na3^1!c`QSg3h+FKup(P)4KQQ;ZvviGN8vB8 zpP1hZD-HvI(C5%!%zQgv-0SO(t(%KMFRzU9Oq0Htsx$?AQb6Idi}}0p!hT9iin7#O zDl8j}vL~X9aZE~CYL1ip#Hamcp7Jco(EgRl`{4MaZ9^N&f{Tvi)>5HWuEPyS5x;xg ziQ(2W=4Our-uungBB#jw4D4fcA6VSDboi%Z|1OPqUsN&$K15dZiC~>Zd$!zxODun zuLI16h0r*e#K@BS1YknSRb%lYl#q8vyU(BCGLC!14|{j$M!`|jib}wVF}Rwegg^q2 zD3SDALqY}D@O(F2MYTI;gl>WmBqLtQJP=ORxW_6tuS>Z*0j3Q~Ab%nLIa`%fI>KEHn|J)JYxrCX{k z^7qB!Ry2@agD|Aj*8`J8h`Sp)mqgf)crecBd}L2dC@epq&PHoK7$GOeVcEnkScYOW zT)nQPMM@WSN*d_W#{wr?ieJh?v{oJT}8syJslklhirUk!`lDN zEqD&#GS7YC_-nuKvOu`{)y2u*-Hfr_WaQut6@|}kp4NE#iDjfTNFhl zPRzX3Skx`cgzfvOIl#@Z_&uhT+%q0wM;~2(U`=4538xu^@4Tidj*V155}nd<-DW5m zX^Q5%tpKhsEdKb9ViGSS5>Irk;@fTQbrojX)Z;22q!>T1(cP#RM`*wY<^NsFI3&B= z;fWN*5VE};8xD18!3s-`!rtS+AJ@rlqfGB+$|U)AL-C6e2o}R7doS%}YUqTK?nwSM zxGKle!mmCWk2ik`+&FmOKZgFwjh+W?p4qGzVH5`t*f|17_)h`^elv^PI9AK>;q5!oB)|M(GurCSJNkWI`iSTY^BNom=gm%4m|EvcFWQh+se_`z38`E4D@=m< zHFE3h(t*rKxhUYE4jr5R-BtihfIHRVI1sb08UHUq^VA1Whq-a%n@tVyKX%dsy!wHo za~#^}ssB?5dxL-I3lqz;|9@rfAKKbF7^?dZu6!X@e-uIUfB@P50bZ-fU}bv)@xSu(4~{v-ppN|O+xXc=^aOt@z`*kShkpPhyEs35cXhkJ`fs0q`epf3 zp{cKr^nc~ezre_?gO%|g52pIU{8V6J`+E}pJ1*ZJ;W4g#B*O52!>q;ssQ?O=^WWot z5N%_A#`NrJXZgQDv;0(8-`z$0U-|!wm(aU%Z0VatME#O0OH8x#HNi8L!)WrK27 z>rn{Q1Jefj-z%7n0S0x9X~b=NtTq)Sbp-VRetD+J@XK!Rszb0E6xhiNAt6AK@8iZD zdAdHID`xG@T@j2y2#xB(-)P)FY zN^fU?w4~m>BJ=D?OtbvF2=0=9yg`7~VJjUDpN-&G8rJ6=$0_e|#}>W9obU@-ADY16 zUJrMIB<_kclS4f${n+C4X%3Hy10un|b8ZnOa+NHE+^W7UE1{nIde>BuHQzx;z}m9+ z(x}huXP%+?{{6sfrr0a#w)LH`*b40kq0!6vRdui{gBjbT!0b>b{d=5?xuT*iVpNH> ziDSO6H3e<3BNQ2UVQ{#CBSi@WNkcX^l_GXd6?HTik>a@?uolNLA@@3b0!uuW9G?81 z5oEwVL?_cC4Cl9d8996DF|abm9|ZGPq(TmjbGufRUu0@cTK2`h@syADL7CX;oF#9V|H^VCjUnxvU8w zc|$ln9+pt|?0CnYKM&+QxD}r?N|pjhA~$ifj4FDWd_5LP*o$g1KUqjG_O z#xX1aJE*lk1|Dpc6vOu}*(5HIDLR_Ujzz*B`D4oXq=NhlgZ344Cnj_jph$QsiGF3Z z{Hi#Ego-K8to<-=XS(}&U0zFwTj;z-W{R0y-f-@#PArCmdeaf$5+@$?>nj&4FK>sX zFNG(XKns1lMSSS*8i%$8oZglL>U8Iue6X~Xg%jL`mruHuZ#rQzf6rC<-9>N=ei5U0 z;fH|%cu7Q<9tM6<%J1X=CL+Wgxkp`M8}%lcl{G+bMGpg%z~sS0QEb7qSP|BnXu5kU zo`*CDZVY&5VnVREDZ$~Xspf0wbk~^=2cutnd`!qL&^ZfJ%3co#Hl9(~*lSB<#2qyG zf+kij`oFsXT$&O!x0^x*7^4>C!wB z9W`Dui`KsLwY>rnQsG0rrrn-*Ig1y65-Bz$`pw+z#gd3i1FnZHs=vdW2coP9;j8Fl zFj0iLPdi=Oe{%E)%I^Uv$$L1uC=wX3J(3%^_VAv^{OR+fnB!nF$Hav3k|s_s!hgpj z`bpMtm!iXve9EnzXEV`s0oQEC0RYS|!@iJTl6iH)FpYNP+0TH}(>-DahFgiHPXef8 zr^VyW$LVOn3YHOEX$OjB_F)mAZJijdzVrOaw&&|XY`yR(YYqQKlbPoJ{dYRWGks9U@FEP~w&W)y?o5Vqw8jS;S+^Cg*5O zsyM?}@z<7w=`$R5Mk5~azogyIiOHqE3gO*!mOuFQqp7gb+K+H*NeI$;pxr@tLZzs5 zvqhgd>`XUEONjz<%_3BHmr@+)1n52@6ETS+B&PVy1L2x9!DxOm0j|n|)KYW&Vy`a9 zc6wlhqq4x$Qlm2;T-C`#1_>=RQ0f(MMa~u5Lg83q{R`P`&7VU>?ZxcgcGsETPQzS* z&*X_ZZJ>)!2KV0{VY#@xIQlWRj29ZLJ%fI>k}p!*6-tHJC@bnu$43AQFKq;#4_nG@ zPX|m>b9lq}V#B9_XGQVuP;u$_knenl*o?G@5(b61TO|$wK|^}-aCbEYsxwr7!(u#% zNaQym!`n$mp)Fj$#!T}0iT1W?`EVllw#B}_&_c6N)OG*F+}QyGv?aY#V!<5Pmq_uF z?4(Moc--U@+KVq6M#n09oGE7J`1vj$1002dqil0Zau+$>x?&MBmh_9s31LUIT1DaT zWeO|~&woN-vE#jAv3LR%tMWBXu{rE2QyZC4e<04+eiO@xnO?p%Ck5}LI(&Moq$lLB@ZLWKOjQue#=Rv8DVXs z){)nQwJj93J1;8tk>Rh?GD$djq^^%?v&6%H;QrVwI--0>m^&AT4-$T!0tRtu2w=GG zX2HSp6N?%W2WmBqT*1|%(w?iHEgd76JNW>Uq7TO{(>2{9D#7b?dBJ3}n>+nMgt^ai z{ViXNoOKfd6t$&9HJ*6OcKXaPOjHeQ8)CkQxXyt z1={gz-i^)O!)yF#)SLp$X^3efD@zJ51a8L)M40RH$_k-2lu^seg__d# zXpuXBpk~>s#k-Q+TL`6t%oyVEUb;Sp?`tV05*Fm#fMs_4tGZi(2h1EAzZU!ojO+paJG7cNaJ;LLKsw?#POgP-=Y6*WdIvdyi=4k| z+_P?ze@mexACu2mO>6Uj?clKa-?fuyS(J~^sHK2{jpQ-VXLJNy_^E)jtGb!T^ z6{ka`HW0ws?@V?p9klt+pOfeDU!BRvIPQgO4L#-*IZ^NQu|9Zfu{8pLnWja@r21s@LXq;m0W)b_vAvjQdaIQh!wU{{r=S10wH2dL zax6?C()`!*3#1R;e$j$iF5Vqp{2djlA3t3qCD8Llge)kCvB6Gf7xi)?50^%^iB)C3 zQ@l!E0@rurg1ZR)U71Zo&W0twv=x*&RExn3xkgJGCt`#d4U-RrI+OfPdG+h}NFKGO zow+Mj@sy|EF`@48qA7-R@ng!=6UKD8)Y&Xi>ZcROGqV{B1_unHzf()zkcfI5P)NGF zS?XHiW}^TTmrAvXgLJ}K^61=o>q(xER4~^=gbEV!7`H}-T2{%;_B5cDDQA$NKv=Ns zPhNYZ7)`N3tb{ik& zpLMwJu$Qd(q&R?MW2T=h2=cWFG!JruU*u+a9#UsO28e~PEZi_VC@N!&*6qW;EME^9 z7o9{VXfH03R<)G~;kf2+jOUiKjC_Sqii2U9u(t$NiUFck2!lMTqiW*HxW`C{EF1>^Enucz0O`eLxkSigjJ6EQxsBPm1oInX%L zLPyUIE8fSVNI#ushvHWQ7ydSOFL?Cr&{r`a>a4Z8jO6ju_=IyYck}K!vJ#LGXQbSA zWd&J<-|06>RGF`I>l06UC-Q9}tXyQ^*ef-JWbPC?qte4=+?u0RS*fEB{Bp6h>WSwF z(kRVsA_sU0YK8Gc75e%&Mz8~B5K{(j5L5X30t<=BbX?I_(u9)gK;^KP!}<*?gyH!R zBZ^Qa@k{6Umg~A!GK>V)96G5egewjuYQKoUa&qCJuT6)X%C@=PG8pI@mGp7dcO{nS zwF`IljDT4fwJY(gNAloW^41e?Z)}MI&*arfPbX+F2WXM@x$W8TL2~xM?=E|ty5RB~ zeiN>=CW;y8e_{a-;d7QFgHcXZnVyi;V!w~#N$1qTH&|`rl{bVbyvD|X9Q@o{iFiZu zL!j7=!7kPXzxg~QF&|4m@|sv}^V`uJjRplFM?@JjGxs-OxSg8|f|5&Lz$_3fU1}P- zKnxxwYLkz(FXP$y4&SH)U@zt_`??xZAj@EU&cEfnd=FnrZqybG>8{PcF_6;+e&l@!5*2;@jhPLRd6jJ{zPy6 zHcZKu{psbYDxlZx_@5QXtMIa|@iEmq%T%ToRuI1#c>GLSJ_@z-Pp$LE?j zV~1MJSI+7ZLI5Fc)1z>6@Z9(1^0l1QH2)qm_XOxjPw~A9&fH&^$ZGRx^E=BnEo+-9 zyDT55yp=kx62O*JjuBgE%L4&rij~wiTj`El2dj<6PDCfIbSbn8;I%F@-`+5%k z=PCG<^bK)-PvK3O{;v#_`4iR)uCn{Plj zK9X<~9GdbwH{)rR2MY`1zsT^iQyaUQoX9(7tW-a7XJ4Dk=GC`@u9&Vx2V-rKN~Hzv zT~6IZg~v5FQ*PYDR`p#rYcj4Y(x@IhN{y-h1x#?@tA`6)JUTlXLiBtsGTvaQ`jCI@ z0dZlfdH}4VP;I4O1i>LiRjhILsWHPiW)>z49G#g8KGcflApGHmg+}^Y8ql2%V^o2S zOJKZIA%NTn<3H%xY)Ovl=3$~%TcWfe=P~AEPlV9TXuqQVsiF z7-&<0L_7;(o6E*Ag4wU3IrNzMMJaHRqkoS8r}k&rA1?Jc(kf;tlu{hvPCAU>3V-RDR#^^yFTzI3ca@!M^M{G<~_}-tdA81WPaB0 z)!&@TTBBi(jk8h_C_RBzat5*PP?9jAyE>6vmK#Do-Ab*zvi?jA7Z5*w2GQ~%2e&dc zRv(JxsSgMRu6f5~@6e`+E#FkB$^59&u>wjNZ|B}W_e+Gr+h)C^04#Xe=dKL+ec1gdp+=@POa~L=*KseVfZNhhLn+tS{p$;` z@sInz$5jJ$Z!&}N-^)PEOhgh6WeDOBr!vm~!RFmte?r0j0bB~}Z^@irQ#=kjWD zp&SW_I?~|(f~LRDX;#zfecX+vw6qp0k7w-K`eW!+lZyk}0u5;N0sf(JL` z03ls)eGPB@h*ry~85BKrJGuuC7u74!)gP>AvqM9+$g{);kN)v2HImH-4P>Cv+U(OIuyXSg1aFbq6}?VJ2Wo3SrDR+ys}E zFo|$vRLcMxru{R@{Gk=!_$^KOHJK=3D~v2g+}kNIIWebSgzu%Cfz+BYv0z`Ox%aVr|D;g@Ab1#v9afi@$ z6v2KQ8{1u|NJh}pmh@q((FvWL z-byIev7x(M9)seuu=UqlsF_;bzOqydrr&bAfr89kG(meh(5kG25+`|1GrI?}x;&qS z1*HI~F#%!NlXxCXeoMC~XYXl&Y3ZY~8D*pRx(XKcY9L|MV$4HKUt^@2LZ|y_O`L%Z z?66|P9X+`x+e1|no5A|8VFXAo&U15dd{0Tp{RZ=w$k5_0t`c#tmfebO) z?6hby35l#QFYdfg0e9&0zy(43M1f2i;!-l%({WYGW>z1Kp^7k@;;0t z%;Go_MO${i6Ml7kf2k?x9GYeK2Z`i~Z;1akHz{|CXIepzR5J@$gf;EYcZWqxpjVD) z80l{XE35G-RkxPUzPZLk#>Rj2XKvi{P!dA=1Wqt+vEo8#`5HwyUwX%5Bvrp+4v`V+ zd}%hX;_ph8MdnC|>@wFFY;fSULSTi+!$1^|0|NVdiiY)WeXqC`Bh7SM3uQAPZ}^C) z5U^_ATvbPSt^XKoUF6dD#v)x}l;VRK9B7ER-fA?wyZTgKNzELDyfr}{-OQRp>46dO znC`l!0?N{y`w0Pa=1O{f^KXdQs;O9vK+SdT155Dj83kDHOY{Y1HG%*}_>mSxD$E zCny@?Ji>~l8>ksH<})VfuY4$yPf`P>mYMrPVej!hAMrfJinDDbGw>MvoqOm@YO!7t z@Da%^*2QJ&WRgSg{Fj&nTJ}UN(7_mz=~~M7c$81;&`DBZDO6*{YX=J(gj8- zI?+R1to!w+zz3zrgsjs)>h#AGe11fNU2b5iYx3*3GB_f)e=fWef+uZpl@hZC{bSxt z?H8%spvZ;VTu`v6o+l?;{=ltQ)EaK+pL@LG`5gnF4CV|@58PoDhhlKqk<`;z_U#pH z)Hd0(RqI~xsVTrR41JW)8Q0I_Cszj0YdvfuU8@^}5u)acK~UXZiFyXYrPDYTly^oW znRQwP(`2G6hd|M5M;OFanS6vXnjG{eXR)J7M!g!E8$Y}Z3RJ7 zO=XlOV(b10^0_$>rJXWw>J+jl-@CH5dg6fn)?P9Bh*Ps$?V|PDm*yRTP45=mit*S( z$qeZY1(`udCdEs45Jmmv;o(HY98UPuWx3jI&?0f3UQy@4G@gnp{KF&;v4X+k-QCNy zH~$DNxSC*BEtwX(^|&gkXQ9rLap>?56y?bl*-Nkd5n|PLe%a82FKZVrQGpea{++z0 zZ!XGeBRiBnC^z2L(2eDU%|DthC?dNU@!WJ)w_XCyXYS5aZf1CGaU@(S>y;PMUq#^w z7ZMksdS4k8XL-c(SbXV_0#*bBZ?W_nu`2nlab-oI#TRF9j369aQY-W2cv_B@0 zpsK*{JnUTa@R2IA=0_8<4FTVLbSNw%kBj|%6TBHPImSC2xp+G&g%d&=k8?_FP=F8f zc&3qIJb<^ZjLA&wQF~9O?j0}u2dW`q%GeQ2drUn>AUq?>sFWaa{;^r+?Z=8Zc-&`L zmmVf&q9HR_#NLjw+HlspSca=J9I?jAr|uRC%^`q`Rl#{3-t4Gk_mslmiIS8}g7!D< zj~Yj)gSi9GcO>&Ltj7&TYLV*W>(GEI%f0SpE~vLG;|Mg+x0j-DA4h6qJ?GWBa$;3k z5@TpwMB0m03l%r9x-9<6_lG91fka`kr`6F)h)g8wGFw$$A%NBUuSf#gmHv#ZK1q?KqOqgP2uLy?z+`2zCR)3Vo5>Eb+bjjwvc1@E7m zrUm5ykEQO1uKevA6kzi0QI0g8Ykk)RapUg++{Qx5%T8Uw=0idv`6%;n-(BXiZ{SH~F{6$>YsQGIh7X(kxU?Q{fAmtBRZ4ONQt{0m zY3?C3#W(3$v+ZYMCjPzvtInfiq483Ailqsg3h) z9hYXsr8Z2>V7(S2!7t5@DpI4d79)r`crbv$*c3fM%}w-O4+X8T^-Mm5pEcG^g?e$< zcOS472$QGau$49t2%pA5-z z((c7+^YF|oH+0!0^BWivx>1Oqkl|ynUf%3wMI6D~AcM}fCQyjRV5I_5%IR?qN7K@j zbVE+8iz($ZxHUl2OEX7#?DN1O2W&TV0$TL9V-lrhW5aQUqE7dtU7QS}=Lq8L|EF7@!U4K`-lcr`jvN0QIFj1C zi{I-|=u%!~R>Pdthbsfaex1k#RG2BF5pjl_%ayVwBe-pKNHWTo9r|$iM4Oz9<#qs6 zMMJ9oat;l?8`4iGYiRQBVoHJ<3##$FDQ!({Sg;7)#-)H|(hocd+|6C_SpQ9GSZH2wU6<%I?r2&-@|Eyd)UxE6^w`o7)ep@_$5VC4!4dc57#}o1S^NVMu9bxyA>; z1*e&MoiiTSbWaw^5rYdv!4CH`QhLH8Plu(4NqI$qIBAKskqqTi3wFRT;*(wZM_~?T z;T)TJTkGfrJGx$qg_m1<=MpKDk-eylsW7QJ1gj(FplrKDIC0Dv`eg$WrZ_PT%qNF#Xq{F-4DznblAoSWq=Iy)*lrPDyecP%~jPS~Y0{ z?=7NEa>3g5WBT~Ee}IKzaekRO#?fq%3GvJFuT(dm(biLxmlq=_0$np)nJ73S51)3r z7NG)&JlzzoDB#p1BXD8k4E@4paeZ^19-c>T=P-6<3ZIBS7qKXkPTUmRwD*4%ilxPjj4tG!$EEJwr^r-&>2 za-nmZguLBvhlON<+xD?R%D94bWU$OG3Jjx;+3Vt8_|!L-g!|Z;Ul85I7`EK*#ui}T zs#x)(jD;4!69lXYt&_+9I^&N@4f*!c$~Mda&r;8bv;pc2ME0DK1jlKG-+>1d61tKx6lE znghOYuF9aAQW6HRB)RYZNQT^|JwDQqVg6o_NZ=OKI|rfm{5B`~HlBQ=4gFmL>gjN_ z@=~EYcr*Nrc_aEG-FWbN`t}Jnv$ww_HemjqrV!QU7-4-~x@k9w1aojic;>|@u2Dr@ z*|ndw%aRvcMCEM{uglY)q|YvW%DJEsaBzv)lTG@vyY^w4=0X}~N@qI*!I8zxTiSFC z-f`%LdG#Yb#Z6zTV?3M3!S!+tp=W}c^$zRSbMdIHlo`Oi-gTtIu9yUtxY%4!QWcyHO?nEnD!Sx?WG#y= zLBNB}+vIDJowAf};));`Ab4YgMj=B6s%^x_DieYDOwUzPW|lLMa$tT+mkq<+Z&)2w zo>+u+d{IZY(J_S*&rR$yQ6AE*sh6i`x<`9d3qV%5( z-9xLP*Xs7x8#w@QXB!hFS;#-zKhLya#@+j5D^gd1 z;-Iy8fFUL>D<7`r6DpD6&xy z4QkrU>H8gbo49fF4u7n18G_4o2qg|eL#L~|lVM6m6wtSksurD>A4ab_)rnwFr+|d` ziEE0lvEwDZva%p$l{jg!tE#Y+#IoLtx58EO345N`aH6WQBJ6NxZPmj!{8_grkQ zNjqLZ3Ejvo)<8eb^Yofv2MTfHxQoJ`RYt=%%Nwnq!#uE4leNaSv=xK_im|h~|JD}$ zPhu2FbV;|YE3K4FWnNtgY8H$!77*xbcI{#wlJ7H)d?-r3s9ndrM3-~yMdy&|wYkWe zHLW~J$kZsP?rFc8s{lV11o85pXY`oM=R#TqzKMT|QF%n#>7itwNm2OmgmmX4X6PpM zjyM2yKia!`z&f^hzZpZXZ@p_4Sbb2;)7R&=*QV2|=iHor?&Fa*AlVm|wP7uXs=x97 zj-ma7b>^yg7y!=(2rvRQKW0Mtaw|okwZAUa^kYH;FXC zpvY$G2|Md6&TTJoF`Yj)p}eSl5pH0g$!OeM_ZdjfOv@u*gIml0jru1VDoOfLO^Go)vQ8!=YQaRq>HBx^2)q-$HR*l1ibi?gDg$mb6OFua zlM))_&OG8}<|nE4U`z)oC}9p--_0nv$iobs2+1!5qe{=YA@Rw3?Xu1)>>~GGi8-}` zL6LuSlbK>%-xrA_u63 z*$2+Xs|UQQX@_q&rQwAUhtraxY_}lCZpt8Tk#+NwVZfDJs+3LnmH2UsZAXD0z$^^N zX)y@##CkVyJ^jWAT=5~RqVv0~q@l=FGBl=8_ShLj**`9RqA|MY8`GU<2uvOLAku`R zPku+KZaLMzff1Y@DP#R3_M+-!(^-6m%*H`QT}~ycxta#;wtr!<2r%@*;NxXC%LTny z3e~I=+P1ks<|xA=R%LQFyj=w6sM1_1%V|ImYTk96dR~CJcee~ul;xgerJb#%l=e}{ zF4?(M$gqG?^M`m$Ku0sPX#b|*gJystd=Z^J99sD>^G@s( zw5zCJq+BDTYz4=bT$RdK@6n?3rlq%ICr`ha(>+L7Q$VE%t4W`?`xM4iNdm6<*WXPv zqwG||4#xVH5b3QDPmU7c*<=94W$O;8o+?zAEt+;jEQVGdrS>g$MwdWEb8zd^Xj;-^ zY@g6lM;KW3)b7LogrjI(Tl6_x!C~o!<(>6YGhG>=TwtD!+<3yPn@`;<&=&K)1zx12 zF_R5U#6uR8+ZliuOPkCNlGnOl{Wcc9eb^(UvU;N*Qdh}{PgWAt?Q{cB96(IHth@F^<=h$rPR#3yIdVIiU!?{E7i<(aoTcM0@yzkz;=px)I~l>8}GYdh?gMY)N4 zi4^qYsqq{)PB?;OG^LM*8Thf={r<;^*1~058(T?P47Z$l*ZZ77YfaSibqy)2fxclv z?KThW2KSW9GJb5BF$1Uq$IKh746qlRKkU|KGS<3I@|ThiUNy_(?D)2}fYGRhHklqk zKCcCeb_`H6Uo|S2-VHYww}xQfu~S`cm+N|@bgvM>$MHer0sI$wQ)TAjN6ezqO^xYc z!;I!CtwU>p^NvAgAf2Va;8AhE?1=%*+0rJ}bG}Ry&C0}=@ITL|oJ!Y>F&O5ubi$9N zbZdk2L^pqaoEUt$-`@C^W9GDn0z+R+hR0%tR)6=xV>(foP$B}MAfxoi6o;#Xs&GCo zENF!QXRYU|H;GhCPZjy-ARRd@%q6I(kVRcI#iiviF9$g-<5@gYA?a0+z#;1-nUGh! z$)rWE=H^g=(YU8J$Qw)=5gasuK^+X^Jg5B}Uym@(mP{V(Di$vn%OMRxF4jtdU^jvW1?g&%@`}L%YekK6upBEJ&3jWr-EdG@8!%%N2+4PY z_oSMppJ~0*u>@kVSsrHXdaPoU#R?~U8fG4a`cjTCa#!8waIU<7b1(Nc z5DKkVq^3%>-GoGauqO771=r$J%GZYYGtou$Wp{Kl)(IGt}p+Trhut7qBN=NmBbXIrO{3-CzK^ivCdZkon_a2KrmBtVu-Vpk=Mv6FfP zc1?k?XvK6bJg~2wllEGC-Z4Mka5qcI-$__}8vK2pO>*W7CceyM`OS?_Hg3+}KwDaj z=BBjp!xZ5y}6<>-G$IS)_hjX@fwgi<=&E?`u}z@D zQd0AtjqE;fXw+=2?;VY_lQi^%pvO!~Y+sfWdcnPHLD>agO`p8{QSrk<1*A>m+vog_ zr+ljq|MvW&n2Gfc|FYE9;S~N! zEpw}slvVsavNP@LEX4oalvFlZF9qV(-qh!6!tiFBdOKRWt4+%>|LnWNZLu*?jXVm0 ze-jVErW1?t@dfI0yKAGvAVIDJ-suUbti_w1dml35vg5a-8SzWQ!|LUviC;|}u?rXb z0&{8NI%W|MIFoPJMWg8=5FnNZ+z$vbSHo@Ydc?X`=c%*Vo~Ukj7J*e3l9${&^rc<)$=(t7C`ES2q?e@4(>;r(@R+| z@^%!kT?K;AA*&l>2S?g6)yl10DhE(P9LI-L5z%;jL^3XoOytXBTyg3(#!-yb=tv8_Bhms0NDW04rDNzFrI%2oio^iYgGeWY8Y3V*mvipJ_kJJ0b>?+u&%><$ z-ZQ_wX6;?&=H~^8=fm_E%cb}G?IY-*>fsmGk2`B@Fh*<2mteMyNhMCbUImPSqqcJ zM!lg*;8UJ*jbpOT8AfKb!&U0(rURj@ABYozR0>V|z8zu=vk|RAUdn;PFOFs0+ZAx~ ze<*mMJL>4iHzL#FOYb0eKRMCVMaxJ+8^0@!<1;4ok2|}>nTmhoSV~8*_zyc5&d);V z4(L#QwaXQbU?2Pa&*yw~ZA8fv8gGv+(%035^%Av#%%J7u+eiu%Bu7~dFnH%F9Ce}} zK}*b!qq&tX_r0I4yPEl)i{vWoh8D;NSl&54G4X0t!Mn&-YoUm zDc9!eHVT(|TZO*26ZU6`M)Qqme5uGna3<0iVOZmU(EIzJ?R(3Vj5E~iaO)wOj!l>b_G8q3qSN|r8p zuJ*EhxJRkBEf{rW1l%hGYycr&ar&LjJW}B)Ji2;z5PoWY9WMxQ!>k4VUadJ(at<5c z5Bdv#GVgei4oBU2|CBq4o=s!eJfx!tMj%v2Y#5spz{=LX-5p_b2}pbz;c6BOx7`{*t~$h zY9SJ;j~bEVUJqb5)`-bEwBqreKJk?=T>mbK0KEDP*Dk4e?`!e)zp-(>Kl{0n zvfz$(N}?UAoIgfyi5v8x;ntoi)fGHgHMf z?Q=n~ms9ZejZG`%|A8%`tL5W6_e}-+ ze_(LJtxz%-<+^tH8mGNrP+ExuCR`;t+hhc_T&2JE7PI^&y$!NA7>wAX)aY-x6n@dt zQ_k(|NuaT_{&~Jkon#d{K507&u3*dJ;*gUgsSXAJ63uPW>i$4{ZjEU(&OI^`;;NAJ z|8yNpvl)Y($*>DPtsi`UMK0Ih_FaG?fBO<}UWoI3rM7SJS=9(?u(u3jP^GC3^P4p> z&$n!Qo3KwOn#zu0IQTxH?=U^*p-J+sTj3YZ@Y>0Qj_B2gQ|pyO&th8y>m(@#qr5%;#KFX7(P3P7QC%f;e5(1>yJ?#AU=x>uu zhsqOcP2Eh&f}Fd>O9pxo_= z@Tpn03AB7~_OchOgVq4rK!2ShFNJiRHw*pTrxSgJ%*yfhrnP`rKgxUuQtj<@G^-EP zzfJjo1gt0MeJCf;1dRVDYhYfbpD9j55D;SIJ^zW%-$aFpGkwpKiw>?L_cU#LZPeGg zJ9aAdPFMFgh`nQ#ra8j1G(0$|@gwuxIuc498oW3tqH}h<;jhFrk}Vq+(S-K8+<;$K zJOftzlA3Xu)-@^e$qBmOO3IRAEGU(%?>+gw{R5rwLWeKf$IS+9s~Q=Z^G=Yx>qq3+nEm_^27fFL(4F2+WzKQ*-8DpY zvX3_8o3+SI!m8cmfFRS|R4#3mbVfO)WOUkZ6jvB`qQm}(gaASEQtni-Y`OT^lZCsW zY(v?DJxm5c|0=KhooACZBJt+F-j(N2d`b!nkOz@cIztPv0_UkDbFq-9FMlE9szYD0 zddnmzT&?W1onpF9L?bOD3y~3og_G+RM1M`b{$)WfLcH3CO;$E|JX+g(XLYA=e&box z4Ib-Z%dc;w;i zNWjho?vnCLo%=xh=3 zV-Mt>%{++dy|6i5+NVB}YXp0qD=o>g*=n|5_q@bcVq@obXG!e?9UGM`4Y zG-{20d;K4fukq8TAKpQ}ea}=CYKoU;_u>TTK;@j6&qHCDRNveq%c_4*Iqdo#pmJx#ZZVzb}2H9K*Rcx+Mk zT_+B8)9lORG`bj2ub4u(qp{^Bce3Vcqg*i|?=uI7ukCQa*$2gQutnu#vv>!cs)>8W zf_}BwpLwSIN^j&gXUwtU0E!p}%qhq);d>56_o{Cb_Di2ZU_e6n+J`+R|0*kk5kQ%+ zzNmfY%MsyU;!-Mb$YzMETji8inMb75GfSP@M6jJHpY9U!V2L5oASY)o4VASH&yKt) zjWMFFjMyl~;1Dv~_AN=D%M;2I!Hb(mK6(&MIj=)D)Y<+b&t|cd=!WSUdiq9J%_ip= zWB+Clt%@?XrH)=#kd!@NL7BhOb6+O#?@D4DOg|z9;y-57RE;hBYYWY6f}{WseW)y< z_bKU>-yep)_gUwO!_=Y!3~cO3mSA?`W?lJ&n-iaU`jRrnEfl{5XyF`W8NPL~xe+;6 zuwjDSlI@orn>8)w%UbUF#eEwSSKGrv^6JF&RA6)HfU1^ZrUy-kGiwVC29#flS!KzA zzr0sz!?va88RV$>tH>4z%raBJU>`MPVRoEXB%m3iwiYQ9v3RSu{8u;WGKEbUhXivXGw;>)nS;OE)(-IeT%QQ5q&uyIT|jR*BL{_fuD%8lBT3 zj~VVZ_q24f?T@J47cwuwkB8LVaQx#&kKAhTebil7>|0nwAiENb2+W zpyy+eQSuiwM}$p3(4$G3?=b(e_5|5>gII=c2?cyWron>bAmb`B>2~^?LJv{j=Vj)A z*yjaeCGKEVL2Q#UbAV9hD8ggMgxf{9PN#0a*GmV5AYgn&O31U7gn32fRccpg6Xl2{Bka*fuem0j_nl}ew2&0?eAF*f)&D?H`7mYEs<})0RO9y>9L_{Q9 qI+|)Ge=F~Q-|1iL|CjE#Odvh7sKW4bCcufVhmO`$%{ujG(fWrA2naai`{sax`0hz}(y#{t!oai=5mA&9 z5g}A`b}+ZHH3I_D3`^C7R8;Fr%JnfgxWVVLAU)0za-Qaj94E0zfJ*`sO#(p?4W=Xv zrpyo&1S5?ENg}0$DGUrOER=+JQP}(l@URK6v(u29YS(k|Ig)?M1+V}yW+8=yd>By! zfq)DMSKl|c;o;@BF*X80um%Eg0;Qc`;8a@~8G(G(*vf;Pczh{ewAKU&00PjhJ>nHP zfCynx5S$U+U z4@+l<76JX)`#Ffj0OUwT%BK;UjX8!;3j@R|SJ0_I2&6hi>bo$NE$JO^l+7y6N=O(P zitQz(`S+oB<>u9aUGK{(S@Qms;`5CzAXJ}cRDd#cLR2S0Ci~=SA4eGO&haY%F!e;fj%7E(w#b4Gwg3P^`U}ti%-f`3Gu1nO5s73+f=_JHwB}0~ax?Ieg0x z8O%WlK|f$C1%@w~5eEpMMiii@>WzL8;?FbxPRs%z1Vs?;KeACA_;Y7NfvgFT)PkTV zAS8wewt*y^z#D-aP=qx+D1*T)gy^Qhc#1$#LR{rwY&-02kodvu*I>NhpoUKM9SlE^Vu$OQr7H*s${7qa7?&tqQPh%T5?LNfK@^G@KQV|>RF&`yxh9f-P-YO% z7`;A3l*B4gSCXk1W)8?I+EpY^c$lOyVQ3V`6tw~J1?2_5J^Ve4xL`$*n9?kTXdL)3 zEK0Pb5JqXSTwImG8l*XLO|)nh&Jwr@WDV#t@=+{b+~U{7U-%RGdrEKo?w~%y3?^bM zwivGPNa%rLV|o*NBW^~M46#Y}G`xwQsl#VRxxa%}NNtH8$yyLi3myGUQ{T-D&h;$-FY<+|ls<5K6e;)-{Ebv$x$cl6&Y zJf1taJ*M6}+tuDT-)G-JIPMwd8|?NF-HE(REGB`MF!yxijpEJYec{#Pwdu;~D($N8 za_gG+HT8}1-SSO;etm9v27kVMnYj@-Fu*WGVML2WE=TpGkwj9(~Rz(qZ4R|GHE>lv)hgBF#kg|h#oCIgABWs$&i7}tTyFMmh2CMWkns5M9KLmiFY68ByAXZK6@hxZES z9ykSXG4RgtrEsh8n{YPp%Q0v%dokWIH^WQAL&F5Jp>o2q+HyuJB=fxUt>(VwLFR~4 zLG8c1@?K)X0*9!gCDJTqU?)%};?(%|1nwBVP9JC$QELTm}yXw)K;9D;nike(n zs+!jumg{>h1&#@Kk&YR6M)ywkS1v-G8eA&f*Emaks&`fj8*^ML?+%=T_LWBR^9{Ln z1NLsD#*+t=pY#;zAL%*t9)BJU!t8}t{j#Yz&&qCDCu^Mn-~e6#H2Bu|n0#rxi@Xfp z^gb0{hh8m*F>xurkOSZYGvU4QoH$A-^*^jIy#%7TsTr*q zwK=)@ys5+)j$W+}tXk*w>Nn~wjJHRuhV`N&_Vo5UQ9MzUQ7}*+P;I7nrk``Y5=k>% znNBSl{G4rIe58%X-?cs(-73&3h$>W$Ri{(Sh~|Cg!spE97|OoJ9cNBvQYL99H)fnC z&IB0TdQRSV!DnDaR&Q4|od0qKaV58(wXYQPyOe9mUUhTS^V}S#JJum- zb+hMKj$SmdF|-`*0tJL_zql?R0uK20ee|Btua*UNd=%Ft*E43p*u*$$`0o8VmoHX$ z*NhkD7Axo0o+aOBW7z>MNhA01jq6UARF@Gyn10~q_T^S7bmdKY#+I=`Anp7(J;*)H5NpH!Sen{Jp= z??UxnW~2~!dhVWn>qA^3*qZE|3ebnrTQQJ*k$l!{8*EqYr0w2lDQsoFJzXgqn(51b zQdj9!450d;etziVh;<0DL9mJ57U?1Q9M!ha@4ZoZv{()w8on_9bF`&C%zo!S6}Kn9 zUHbu;(?8%h?>!MbDR@Y~scVe@j)>?RMB2+&1`@LVT}A;UU=Jkd2o~rbs;Z*+UbFfs zf>gW*O8(%Uz-krGZi)qpMV!U$ zw_?Luqgs8POQmy(WADzdqvk!H83975P}5L8G5Vj6(RNZ$(%RBw(#vDAqkXr^FeB(J zDOoAoRVWK+@g3!5HXDn+Rk4eS%Wm@%vkvSTY{4;Ja`$q6Qw>uDnq3VWE#|)y>)Bdi ze+yhGUUBZ+f39TRE!}h{{{fdUbw_uZcWu4pJU!hNyKi|^dN{ldc|UsR0jY%`hxCHf z$x(*eg&7L>hs}m_h%f&+866e>81KYuhgF49hQyFxkW%h7%sIxtNPUi|Ge~hD1zUTsHetZ;vdr-q`|P9KYs+0DTk;YvDNI(c;1q%_C4I3qX4vzm3q_W zrr*BqV#a2>DpSXQ)G`-i8Q={zdz1ofbQ?9_p7|aj_v6dXR|P;hBD3>~Iki_V`H%#7 z-}eLXPY^Dm6U1prt_o3R5wO^*u`+?=1K*+alL};wq)x@r74+oiH?5Db>B9%1PZBv@+-3Mj->*p z_Rd1m2dn!P;>WIYvU5MNEtu;p`1k~Tc5NQTr_}+&Ll0fe?+oBoVFnC#2Bp;M)X=mw z^tc_&20hMhH*1|y%c(_bGqtT6t(zxxFV4xGfajXI^*Y=WK*pvVNv=Lm?4BF|Q6_6d zTPfajU7nwRU4L_SY4!8KTtnVNSHaX_Z~mgE!6J30?%n_kilE7#h&>c93%`dWiR+BV z{6*PA*Q4Kg&W-wAZT#G2-pPS?+j{2rWc74Q7Z1nrwf+U@lI{^9_=bg@z?%8KFKJwutKM|Kd`&B1J=c(1L71BM&z2_qCVjr>e>)8P8 zUU2v?%?fCcxG9NP!azAz6PP!+%a3z8a-o)xa|(tL36yHeVk#<1jtYGhkGX}pquHTZ zA0|zvN+xKgd6uh2+Qzv0=Eh|gRp&HEbmwD&u_LL&*d3DFa~MZxTUZ2`RM?0ptVrkR zK4Y3a6_goLof3O#%rVmOj!~+yqQeMu7_=WL8L9d-=@o5N(pA3}&EwfCENnb&&Ma?i zR8E0%-8RX(r9LDe!ou;zeZ^gd#mJ9JvF7a?O*cQT*860}aZ) zGJ!4yO${CXt{P75T&lPc#TDo1;hN(=vUE`jvl+89Gez;8IW@_^iA>&~cB~w5MtJr; zPlW;oyIAz4xX1dbWG%*2gwAGM?yMN*aG4vJe`+-xGaZ*PY>Z8h-b^g^O1j)wZPj-z zzGr|;3D?M2rPmK(lfjxzY7|eT)>7*wS0$9ARqypo>&p3oYKW-INJWu0>(IB(ENR zb|k*pqfC%DPH7e7!2%`d;}->m7Q!L*$AZbFxarfk#1A*L*MxPCm`T*!!s?3N5y~Jo zMq-PkBE_hPffH0GHYl=G93~ZCiVgpZb0X@B2@%HBe_*I@)L#F&g24=z$)^RsNXTDkhp_VA(>j~H(~N1+|2Z8LuKw!mxadh2-N=n0b%0}YuN zss>sik{6|$7=r;o`-@bHqMiIf__b8Fqq;RGv8xTFyZ_f7W{K7zQ>y=>esf-t-(*tQBlByh9{fbO&ycw>K$0We}Yc zGnK&5!NpPgyX$Ps7HvH2{pyvo!NC+79)=S-O=^}dmls>dp7r8AeEnKgE9v<$K;Or4 zkH|~LZ~X=#k$zgg+X6l0*{E-J>SlwgZ@I{!uB-Fj=%Q$1d>S*$q18VyKPg*UCxQpN zbIND`Egpe70GxpOolBrVzypCb5d9j|ssKSYhy@Dhh7eOV2!jz0qYroxNJ>yVfg%M? zO;Di#kr4$WP;LjQ4GR$7OSFPC9H}V^Y79IU+$3yH?4yJv4ey5Y0M#6?E8#}m&%%VE)dYG=T^ z*`3`p+xwV&$`FwFqoODisgNNKMiYfH5TzpdS5jHVsKmWE-K^B~?J#dtKb5-IJ3~COv^6cHr6(?_wmPq{r>9S9z_Z9^*pJ-Cy!xmE!@oEu&B1T1^bh+s zpwcg5z=NXQr z>^H7YKj+iM_xs!R{HubeHm?q`EwYf*ezh0;CP#kR4P}h@XO`icqRxZo>J75Sow(AyvCpU~K(JiNPnLc!X*ROrz=t z{L-kYL0Q7Ezh(+77$um{HEG$Qc;rh()x$%adfK3!f80uVlD(q_gYS}vp^$NyQKYgg zlDi?qVokxW337wz!FOYP=!9E}BMcLj!cNxGYFGE$y4w0&u;5MQV77y_$;CLtxgaZ~P$t`^c~f=MPY_#B<`@613Ds~{Z!ZcbTCBXxl4!bh z#d1A=$c3wj6_<;e3Z}KKDXuBA%e{d30f%RRf9JZzpLhX+9HK|DfzB)4J=!(%y!TEG zDjOnrJ&;hq7QD32YY&s`AKf+?ys7_ye7d$terFg|_Gz4*a~(Y)`*-YS0ffTIn7+3LIpTE|*$+RoV;|FS%A zQjYLFme#O}e^D{rE;{}NN*n?!q9Kkqe4-yGXR3hR&7ITpu;gq0qW8Sf7f}p8Xgr6~ zmGch$!e#VuuF>r_13fNKlHg3G}U)$5NUwWYyU$yq9uYO;7wpbMf~-uhDsk6XyIaams8dFw%WdLdM{i{6U~ES3Y3KNTgbW14>&g9HwKH=yBJ{MgwRhq6wDX@bK`U z_h6xSaJFDz;^N|BU}R=sW~Td=pmXuEcQx{)vv(o+56J(EBWmVi;%w#UYUN;0_z$j; zv4fi{A2IPihW`8d&pgdMt^UW7y~}^O_3a?TKO+oG^o$Jujs304`%f>oqLrtat){4z zoteGMw+(()Mo!*;<^Mk;|6}ogX=?qCCJPhO|JM9pBmbqz%kYl_|I4BOMC;$)?{M+M z@G|^&==ot-wVsxMfCPc0M1@p6fiH7mHPzI%zIwYix&q6eHCTnv28`wk1hjw28Dpd< zqjGzlGJDx93^P$!QRhBk`)zgISH@-~t8<@fZkY?0Ed=AE`l!(C{E)<*6IH?!{VF7u zKpVXIT7TO>^vQSm;}SReQY*pr*0AJI^Pu%seWkzbvhL&KWQ8McHNf(g{f_xV=EPl}c z)bxo2gKl8damfC~F8Fhe{jUj>YZzdd7>(a^l>eY60D*_k{EMFur~##D*cF^AF7+=k zC8ICIzm~wdgabkL(W_ad|G_5}4BBP+*AnRt`nR<@!xE+c%oYYN|G&JbLn`>=2~HE6 z^e^zY3vmBOE(G<6DTdsNm{ERwqDj+KI#qt+I6mN1)`1w=X%}7PZvH)<<{T7lxv^`& z!i9c@5As&cuMxH5LqfsY(XUOts@UV81nU#(gR(;1)8~A>^#N(s!#uWwX-1bwXgt)Z ze%=a{<{*x?#Ee_clNXXU#^mswhlOsk1zCiIRZ`quWZ90WiePkJ!^i6tGDWTlN!+Mn zQ6@NvC?2GIE;-2I3%)3{k;Gj)hOlbc*wM$xz(K3t3?F-gmm|iS?S|aS&kVP>{mc53 z0CaN?%zFHKY+NtHrwsua`ibN%EPu;0T-4B?1f=n6m`;nX2@ume6#&BIf5%rN-WS1@ z@m|tJ59vMv5P%oSNQH>Eh4OTQJ7VR}dJsw;5|c7H9NYJNZ?#GEDIX>u<0TDBlNZ#V zWOoqx+V-!EicVV3Amr$5w1>!=u(*!i_77D)J+nWp^);X;SJ<*d!z61|rtcf4$R!76 zfR^Q2nttZNXqzV}&7@tAb{q9|frY8Gt-Hwp)20lH0)3t`^h$#8G(u}57`^iI7BW0b>~!Q&*L5Fa2O2~Ebt`~{T-#NMkgNf4IgQ4b z+)<}c)KNNG1<)9PaCsrMn=$(okac9iuIwjb9;HD^2q@s^i>doKVlu~{N<{uqr1jUw z{&Qu%Ux88b_Gl8+*cxI2Szot@4;ORqnPfNDCxX&82DXvAdKhL}8ZSL$^C6;iys}8v zIBIRyVxcDokKp@4XMTJhUtxYpEw(?yidR=>nb0ES^F1Xp&*^!+ ziV6qRm?#oEBiIAtafsq8HLRVY*`)!Hi~{GI$HLxpdTkv|NQjw-|goU6Mn~K@K}Hv!PKV4uU%t!&ytEp~2rFf=GNw{J7p*9 zp;q;a5{O3I=@Iq4vU!kFt$QhRXE?}28v#)VK}_^{a%@nQ6ViuX%=lFSbxS0i%rKji zhrSQhU5A*26m=*in6VcFrXP~q<)Q`K`sPnEpV ziphYjj70B$3T1@lnjp>$v`Ia5swB zWVUkkp10l0Un_DrJ8!24__?LNC*94S+y*ae?5@$r@`6#>n>vtN`XM*Wy&D(AYt7=; zx)!JE=OI0yIci{Yi!C&mG7WJiy|{XPQcir=5f#&ALImCpu?J&W7$#XD*SkEZ$S#fq z%-c!9tQ4yIEL=pu(FSeHnqF!@`jeKQ4EM$0N{`U9n$Wce!hNEC{SptF|+Gz;m3JdU(T2J$7pvr zCTx`K^_jIbxd0u@cytx;3upTpl=Oo3@SXN16^Ly9Nru%hcM~_}%tMteHa#(%1EJvO z?U>Mu18LUNQ<@w@)=5P#{oFPJ=#v?9^8Dh6H-3tO9@W36HRsPKhq(~dtxYq!oH)OZ zrUU$pMp5W9GQ+v=d?vkWa;`iTHa&C}!7Qk~!afkzO>umSj=El0hdh9Pz>Rs&g>_N_ zS-@p{d7$God`qj=<>0!!2iw0sQeYenYojEOBS_{|(1{O*iO`oGWF=>q6bU~+E1%TzSNNmWz!{DI)x1{~jsf=QMYZE<~nwX`2NP%TNzI##?`X;{1~!p_xQ$dUJd%+FxsnxJ!1y0CwD z7J!&q30KbL7RbNhgG^K|*b{#Zxwh{L=bNm!1? z>2l)qY~<>Wxlx{NzoIt*V3ut>#Z6?qN5sNYb5#X-qtSi=&G#;Q8U6NN;9dJX)R5G9 z7KqJm(DuUX)vUQYD#3>RZTLW+a=uZuRThJa=V5aUrGq-sD-bEv*sustT|b|Wb14?a z`YJi+P^p5a+BWB+nd@$5U-W9vsJhcTpH-4ct1L4Tg&;r0Pawg?Ez87>vn(`f>Z zz|$AKpDbr_GGi7mNj`HP{Hxi$qu&W&3aX&vsaR*5SA#(4K2CvL&b6AIR{71x14-~> z!N<%Ie~HE;9^J?5GQKA=ceC+Fa<9iG*%9q_YSQPa4I~;0NX7w1BcSXRxV-a+a~mwHyo6lS_LEwdF7h;@sSCy{u0;PUrRAazdce68Qi zkRf09VBBnxVqe16&LH|Ysg$5DM9lRCNR3<1>Kc}@>e?n-3%|}-FOjSs%otYVR!5rf z_iQ*_tF<4!oa+=evV`luHf9(d1vS7la{E4OnCXi+YE-pa2~~P8hlh)u^E&&a&a2%x zk7AkSG0Lkbha_~Oieaa4Ixm&_KKWMCw;(}rK~>>Mx3S}w^Q4o4?${L}#9WGXkF1$N z_^GN>>Y?7C5d6x&O5_3gfdag_q=)E~n`sf(v$uR%blW)>ei`h>P39V*cKAQyM@q@| zHR1;+j%t`41Ddd|=(pozOQpac{m*U3Ik21%@BhfmQI{w8y`yV;p#vDmT3X?5pQ7i^ zI-28u)mz|l*p3Xt$HJTK8w?xZyHLVD*t2+++A6P>4@3@X%8I}T*QxKxP2D5|#mE8T zu#hptVu&F$H69i*J`pian(mQie*|Rb8E>q#mg242co?}S4u?25Xf9!pkHeKn*$ijS+;g*i`+98ys*Nw62NWZe3? zvY4IW{e!yzZdF&hzf<=W7mMS7Z-3=(BQJDb`|LSuvIP7tuO#X9N#%?8^fLz0(&HE1 z^KT$3mMb_>9h4q*WGFyIM{G zS5q7m{IC)I4=!p8Q!Dzd%L7h7Rq94`ZdAFslCGnbG!0dP7@Y-ps(#g z-W;0bWpIntgZ7UsZX}xA@XwjNpiyDU7x_8!*N63b9xV|Ifx3@5}SPZK3{hh zOIJ$S_L4rkT7%Vk@nugOXqg@YT(nOCm3A`wXPR0wtS*)@r*RkAE$u+RL^^Gr??1`n z-4ahJ)Xpz;w>^pgs;N7Axvdr@g$?MKRh#n474d(XmX>H*Byby}H}QBP|FC9{kK2+Q zOly*6E8y`bCttNjMIY*87T?bT-uNB0DO}QiKYjHfP zV^lWX51znrvD268VsL0!Jb$+6Mn2dbpBj$NEi*ND6>t$+Xi4NdNq`{`-8N|KFP zM@4CJ>%RFp$iU6?hDAa#SK=|bfJ$C4`DS>Q{J4xuu`)aLX6>ps^dBA-yYG2e5@37C zw{me1;D3EGvT_GcwO$I4>@iLe(~s9MlE%sl<;(M1%B+-$^4ZMa0YZxB=+Zb> zJjl5T7>ndQ#h-J01cA;;qGzEib46b9C|-R|N;_tay)rOcwZgq=zNvHKyaoQz1C`Ru zu;#$>7Dr9fXs?Gk%Z*kSixblwfKx+4pVXTDF8dN(yVTnHSYGWh8`YIt-8b)tRK%!! zE>`miBHyls9wT>te(zJ6O6s6L|E%rB%{{LvT*jz?o5pW{$zT~DDmvH}NoOmFm$Z~S z=LvPT5a!CX#xRLd#nixF=2XkpVcoOKHXW6BRXjTF-MVm2q@?oT7cH&_j}$&)tlRmK)fi39K)sEyjLNr{)daQhqN?iR{uq!M!j*~)<>Kq5I2~f$ z6s9)Vs++Vm;x;!c_qZ_c7Uz`3d$z>V5uP;@djJWsUsLwhCi{2Fzf_m}?=n6;{_sIq zYUF&*v|fD9fHvJCcP55@i2u)8{6RzPbvu29)MGGl)QtLjVNt#E#vizlz zj*C_%+==nc6iZ1ut%E_Giu>QcPT(WdYzFtP zT~+Cun`V9P@bN4@JsrpO^bHC6OdTeO;M@6Dy8hIrN_z($OwLOZqgxLODOEbjmYIJs zuu6dRcvd?^Dv+{If`34!XIqY#^y%6st>8P=>IdHIqtLI%&7YKTg83CT>9_%URNCLj z=465<*ZYCH!2@4|a<-i2={1{}75!1T;Bvhm6790d_Z$#I&q_OY ze6&Qnx)h&!y!XGqYSXC4-JOSFvDJ6HNhyq?ZLe`Yr1(#cb_;sb6a$j>Fx3x?!!`@N22x zIXeQrZM%W>des^eiAA#=zn@Gz%=r@O4Ew7sxFs6q0Z(hFV8MQmxB#OQ%;P-L6Vv|P zhE6)H2*cJ3E0JF@UfyVFBc~Q8&rjRNW3|qHh~9J`I!BpvGg*y1n}8;H4fms&qNla6 zj+=Q3{MgwNrcH?Ii3E7w&|g=%w}(qv#M%KcTn&*SPsqD`U;NWGVR)E>4~j*F#v!Yzz4_{p{Hzd%TpLT8b?L z6}*W(u=Mh2m32QWHq&fK+UJM=b5X9PA#!%iCyq?_gp3ZN924 zMeUmY=pogf?(Zq2U4V=_^+>cS_iuE$kfJl;RlW8;wL@VWnMQ8WM{4Q0dzGKDJ~^N@ zd`*ZB?7j?&HAAA~(Iay1zk-aEYj1m1C@#NtwV!l*EjJEqUnpNGWqqiot#s!xk1QXR zpARyVq84wHOw*+=>0OI3KQM`TQ1kc`yWs~|^V#lPu*r>$`Pl=)*{U*)VukjUf`k_M zGRl^jQ^aE8zg|gFtm{Tp=5>24DDbxn1^jQTBwkk!>10b`Y&0U58Eu-A=`c(K3czt{ zNQc@!?@c<(vv+?2U)j?yN~P0EZaOQ!>7PF?nY(3U6`#e(*lqlt_!*cxB;g$`WA-7H zgK06tWnO91;BIs3IosNS8>xPLDf(q~{?`EeDYdHhS* zy;R@ZM{XCTE`LRLcN{|=6*kXYTJHpBIm_bqDy&iw%<56tGP|xMLGFWN|7mi+wNBmA zekCaLV;4fm0hercJ%&q~Z?FRUm57j0MYhddb!pZ_q6N6PE4x{eyHXW)ZTj}*=Vqs7 zLpzcM9q3atr_Tux`};DEmR+q1G*%$ z#)noEFDjCr_7u6I`NTW1xOde)3~16ViaZ< zbx;a*w6^R97r_lGOHH~p_4qbNi#(Wbd<=SK^4yCq4IWmu1!vI~)F4jW4C1itmR*)h zczsca@E$UjD9zCg;zP2J4{G|g1CIk` zrl{*7w=OsB>`tsysT_0($s;9JRxqbzy|S5#!DH;b$9tAm`&3DGO?9;32 zZ+;6+l$~l@XsOvcZ2z=C+&l|UL~Ke^d&c>2YxsGXU{IGXRy5Y&=H;`H%Nygdj6diO zUngy>pIzL&wo1_^DWB@pUD;c{iM(Di6VclXH*G?A9|}9a>b(ccrI)v;duxJz5rLv()A4qX z&4h3G5hj6+mRWt31^A_IizWy(F@;_xo~`8r7!FI|Z6@QSb6E1_ zTx&qUcx>n>qTg7~r_LhP1S7RvYBF)LOE2d>Gfjn+z`SMxPS~>kS6sP!4mGTL2}ZTn40o}~Wpg_}V}_gTPr8t$pRob)WmYzhz2?L@e=Ud5u4 zu9lV=c0O+bEi?XF3YI->%q_@^(UmCKtw`xoPlR*85a!!q@4V(==|$SL ztAj>f)}dmw>|p-CJ6L zx@1%v>z+%?u4Cg>t` zcK(M>3m+-7DPi_1_qn>O*-eR5{AR;LQW6IPbc}HaymF~RN>pX18ow^D!eJYw>2=9x>%LY;-$mn-L`~B6FM<2eVq6w!F>HYu-Cfd4Lboca?oM#3m3mP+msha+%!7}(O)Yj z@URo!gE@t2mVGd8C())xgkGMbmOii03vl)?F633H+-EY;f_L@FVpn84%yplP7!RC` z@c1q4XheyJzqxwmQV}cub_*f5J{Lu^40B=~Zk(Z9>#>4u)*Vn_$h>H0Ui?w>QXv3muP3H4wENJ&(}gFdX-n+qEsffa*oWn zax>1M^4!hF(5EG?a_6wSH-#WmdQIJrvQ$4~a3U|fLT;25C`?U5roCoLh;{UT8@u)x zEafZxo@t+hS?5!GWNhlS4Ipo1#`T>EDZE}NgnnLEnY%nwwoKVhm-=Ht;~!RL>u){C zkCMxra+R8#vz~oDyK1*Q^g>C`mbF&dsObKOkL(Rg=y9Z9?Xi%R4KKDSP zl=skjCT)LV47R+wQoP2Mi0TZVoF=k!e5S+wyx8EUC$+!B3RUWM%yZbVgE;8}L5xS< zl}S_s#9@S~hUF=u`fW`UdFR+4U)ef(j+Ejx9IDPD=~X?9&T(62FBU}Gc>C@`B-E07 zZVm?xpT{O%#MHE7At^h_&d1W@K9`x?W6G6u6G=ndP;nTC)izdHf5sXz&N@Do+v+s@ zv_9X5P6FaX+P9&KZ6Adcm+p7XO({J7O5a{E)8Y1p@_83;t|4m(+Ea_P^+lwCa*)8ln&e zVF(tOO}g0vgYVj71eDItX$wQ;eQy|+Hd++_kSrC{9y&g3Hc8f z+D0xI_+N^3C+pi4Hj>x>@U@m8z%a7^*Wmx3kRqL|MIZZO z!9f(&|5Xh2p00kPUBoslSDAz)VP#$Mx%tcd&!RO6g791RVg2@)Cyw!cHZnCe#rm4K zN%6{d>@Vi%&^?c05_^}|)GIz8dKAAYrSg2|ckl*&z92eY$x6N{w=_1G&S_2zL%KCb_Ef7;&;E zz|2))O8K*+RuqwQsvlOeIw4S9qJJOVfk(Rcchq>#bT5e@p>3z&~uY<+iIm zWF#@6SA-ZFQLaZnOtctJRsW>)c7n$!=8>sC=e+QxM1O8Dv@K+9_A(V2Xx$)V!?_}cASiT)V zi1bex&x+|=@sOT&s{;)B$iFKT3{L7taOOZ6Nx&)| zTFLvW_e_{ndTU7R9`+bLXL|Wb5SZl767kLueFKcGo(c$9iE&(b;645gbNI+GaSusB z7g7ESKO*Xpnbf&?o~sLAOaujO5`7biCaV$Jk)42Xq4gg?>#@-SV|(2*HXFEu1*T49 z{%Be)C$xv?501oE07>V~8rtcZ^85G~Rb6*%p$oi4okqlkmkJ|;4M)Qf_NBaLN{zGXB>QUnvLf2uaYDCi zY1sL1=)2#`rM-=SL3h~%=M_3$it-Bz!ne>h1Y!NO`p$)Zo7Q&QnhN)E)h@Oc-I_En z(eG7}0ok(Y!;%-Ncr6kyCRS#VNX)3WPCcA1i9$&^JTjK2|4UQ}I;{aV_V<+xEj>44 zH?)48#$lFna;811GhAVC@Y(RdLH}n>blJY|iT5Nv+D{p?Ax;DHKV;4H>(NRo$NSb1 zos2g_KcQ+zN5-dg61iScmI6K-%(LV%X>L)-^whYi@R>ma@QtOIZ`0!XtA89LyDmGL zmOc%8WTzY5<@}_~>p+nazsCSpnllK_nXEve#K1-7)B1WdV z{N!N82Ynq8u^P>p(21IDbdTheSz}QNx+?auzr#Dg=#8wAnKKI({V^^rosi8#5DXhE zGf1K8xf#i_qdUZfRlI0EXTd~{0WU7b&T&LI*XFv=m|$CVm_Y5_>2`xNnVCUDH&=r- ztE22u0b*vx^_{>d>lz6%Eps*~_-Iq~oAax3{CsG^5>4vGE>8gcg=`62eu}oNsM-8 zX~_em>9ty(Dfp5Lc3m;~i=NgW9FeLRWP z>8FKWE0Hm9g+5s7?S!%t`+m~$((cU>xgoT4@k%}<=aHK@t1yf5mVmPw!$K^!o8zpW zI5(3 zC0i05(~AL}cxbrdk~&i-;xX8!Xqa4lH=Ft|G{Ky+l=R{Rza;aiK}h!X#pZ5h6WHsL zbSz{k*na88I^8gQZzSrVJrxX%_r>T3xxCtI6TWlxNsue<^D}alJFUW@#a}m4Ig_|x zd8C~W?YNe)3Pl1YwRmwu3hituJqqXRneU*?>9&G4YG@97XW#U&T^OIjgm7*#qe4HE z_E2uhuzPjus{SBn%Hgf@ppg08sfCcuxv{x5&bC|{tZQi?P>Hx!51OoVHbPrcu2!|Y zD>gvPQ`CMZuJf|4;MhApiPMW3OTHpe+EMx}E9DAV*pf)oFlbmE0%u#uNetMoBRXn@ zNxP0aN(qm>Qb@FvN+CqawPp-+wCJKwxPC7)M@Zl@7)0NXzhcfQ`Kci=*ar@rl};cN z-I$&7v~cG}k5Bh8oCAK%hl%O52Q|h-LNOf4o}MjzmK%qdU+I zoD7{aQSmQu$7)mvmYBnR;Z#6ZFn7 z@ft!){v&J?z2)jkyFRlvvnwoX`=EqC(Ml}k5I0-dypwWF8MA_ZjZUsS`=mp1Le=UB zJs(zGY$1c6kVXZgBrYj4fZHni$ASSMWtV~Lv2pme<+z;4xHGh4sEO*ZGMQAL92n)A z8JGbkrpqcWGi3L+U#EdfWq9w{=ncSoa5*)stVJfExAbR}mvr*AMA@i)H@JvNbnw7> znwEBaJh`?Km2%u4*P+VI-xoCTY}4TMyf=z#9+Rl<8A=|Hs((HDv+(;b0a}dCMZ1Yq z5|1aPQU_2>%_&tvT1o0C5m&QKshz{CgA#c>!zhmesG+=Zj?f za(l#4NKHsWh*L{raOFeAZnV-GaU2}R#l`d--j&(9P-ePXaKz>)G;-3zPUlkr%x2-) zTUe>MPF{ax9FUF1*uOKtA*wtucSD;H8ZqP|m`V7??W@Q58+M+N&l;~c$19k-xe+O- zP0t?JS(qq}y9E7|Jb%h}_BBZzTIZwXeZN~gM+QE1j4r^9svg*#&%RxXX||AHP8=O; zH=t)TBRA^fflgpGuW?;HFF92E#(q4GV@(>PS@eYGq&6D*UZooCufSo)V;kYI*Eb{c zflL_i24zmT8!ovGYYQ=&ruHB5OYo^i zirzRV1IIvy|+lS2br2&IvedC>Oej;4WPM2sX7s#U}%oYrjQQu8~t)NkE{MDwXoAs zVbin5p-7%Cop*Jgf&NsW=oA8@4I7JN>f%)Slsi4I_7GR9s zDuI(v$yoW12O@A$iq^m+A@^r!`Xs}S(!GkiJyk_FZsbwgRr;-AQ?wQ}XbeTj{Ng^7 z-ZcVIDpiDvxKJv(&oy@xkIP}U54&s7qiEcX_UJGxnl2zdquAI^KalaR@jo#X$*)p? z(-4v6#>`9XMk2Z8EvH|p3DE^5B!nkh{Q=N>#UYp^ey7x(hZ>#Mp->0J2J1g=Y?2<- zhmDhLYY4yQ#E(e@mHePe%W$-z%u)y*u#f-ZND5Hr2mRx}btIVCdrbHQuEftsNSrrn z6GsGy{|S$ci7>|SG=^Sve*Sl-Pf*ZKOTW}dfC_p2WR|{xPMJB;;S`=Rvqao0o*lA= zmZ!$*S)Cr8)A4iVNj(DE;IUqCmo9t;OiF z^k8Fw%OBmnTrJx;&;6pa*Npn*NGck>gCepVloB@@Lp1-bD zn++pTGT#)KwTg6fx?(mVz`gD8HT97xsxkjvpum!W>Sbu7By=o;r=lu`uh?#z%)lK z%LH8_SVmu`ZI7JbeSU5e$36GxXn6l7A7hYkq3s z%m2useW+s}XFYGJ?E|HSU%0$bL$0o|%-J^rCwsr3fw=WNpB87>esW;n+nJjmy#4cL zi~O6<2O>T+ae&V0CF6?i1A{`ipq5gMC=W_7l_JdPaoT-uF{@C5Ut%a$(E3w(BRSgN z$1lc{EyGP9&&;XY>^tN-btISoaQmLfi;oV+y*TBd0Hc;~&;H3voXD{Z#eToND*rvj zYCdd=S2ay&S+bF&%l@qO>L;!0PO|n1d$)7TeOV)WyoSJAgE?1witLx`okq@M64uSd zv<1DM%Bx;XJc2()Gg6(>TK~{&w!g2;vdF%Baq0{xP#Rpv5x1zn^k$rE?xpjNQ-+62 ztPZqc7i@Vz1rhW1HIs>23Kj7wuN*aex;N?*_+GG+D>}hshH{yKsoIbDY|%LWS6ut| zPtj?|avWxE?uFAy)@^)etIO_GLb&SoOY@;=zH@$xGK-!)eJAvaV#-ouAXxeQ)#INl zOEtvIxCM*_MPyele`LI-#tLJ;#W-$qPOT*x(OZ7|J9bI}rv(5pH#j~%rri*ZP#=X^aK)uE=uX_wPj zGJ}0qX}ueqf=K<`SavHrcCl&esQ-e8wp}ew{-qVc%Ya(~(1u()AtMN73+t3H&B@cI zZr}jmBZzUP*gM+>s;`3rVpj!bg%u$crNL%9hDHM0Je>ExQCCOg64AK0nALk}%~NVX zL8|)QJu?H4nl8~-iI?og-977%xk%d`y-Dzg$?;jtSwHN?ocUYRS1dzJ-M@U1GqT`% zP8tJct6kYF&=D(Wza(7mj9B18-&^O7w4-!cUypd0++r@hdd9cXy*E}&8V*T^wT&xLito%B z-MlERdjwSWp2iGr1})`+Rl&}l>CBt#Xe+RkhuzA?AG^btX|aGE9jV?q{5wk2U{^cf z7exp&^Y}nkPpl~81RFM!9+knzK$5Mo^XenEM2su%k!9;>tqA>i@#EoAW`Xer1N9c9 z8aLLs$X9%Yq~O5m=^?9OHC=V}-&4vCBdrod8#b=($QMAhcD|l7zIf)oqO0=OmzsIh zbv?tqh`ZCYktKMWnO|N2FmF}_&lYwomqI?48QkNot%1~E%u6rA5ja0ATYR2r2E1rV zc@M?=E;;EtD3M`pca#ih=YK@smSJUD_wI}&rPbUvN>A&fag~nbCze=|1=BdLy{Al~HOpshjW)GPdtr1ny6ja!u$-MJ{qE>dD2+o&zZ@ z;+9=gf~3&i(O{D_Im?r0z6_s)-rsv`WH7*En8muRo|V8O$y@ov`DBnU3UsBa!Tbpn z8N5M80>>?j)CEcM#E23zmzv#s$h+Xt#i@@4-7pA+0uEGIe-a-=3(PLHluE@hCeB(p z-#$p98qA=|9Ka$4gMa1MS%H2>fGqYK%g^VtuQ`eQR)HJq3;CBG;w#7%E*ZI!VV>Fp zccG_4?PwI?T1I}npmtM)DrS}WpRR$BT&3OlC=JsPRAs}9vhd`_W-KLmjR-%afOn;)TH9Y znl>djj^Xq<3XtcDEOvi&=B_ibAtJ<=l3}Pc8dO9F7<`d$O?!BJmz!ja6TJ8>#wpt< zA^1;?PDzp{>mX5gM@^1lv8Jd9B9`sak#Ka7!Otw#BmVw^~$QHN0YqT?< zKx2%R9UHn&*f|RSwb_pX?izfkv?yd=TKY3I#yOToLCvFdp{I9^|B0bs)|fiphuCqS zpV$uuW3WfZubE~Y2~DK|xHT#AOG+NRdk0PU-Ut|xYECI%jxK*3wS$3z+N&fF{%UB( zuhmcJz_S3EwWsdg+cs9~gJjr+qkW^Pxc5FhM0qq-UcC6o*;3Z@UQe7rVUZ~J*PH-Z zZby-c%vFgZc*b#fHMhXn^aT#i0VHB9@fGAdX`orvn=sb*cR6iu$&Nq5V7da{`~f(P zdOv6#Clg!TFVe*Qfx6GN53xPvoIO;gvN+_^e_P!~#Z+5rgovH&T1o;G?RYvqK6?j9 z7Qo+O_Gf?Wi4$6v5<q$rRN={Iz!=dk|{ zEy?Ma_&s-Vp>N~yLQCNN0Ip%ZBjpWhuQ;1a8Glb}XCr_62nYfBU5Gsa(D?)D2@peJ z1U5Dr^4f`)o1bgX9P|M|w2^e1hC6hBI^bO0iJUgAL2HFF{+ zw`?B7^?V77`+AGa69h=~GD-VCNXo8kaaXAl6Ql2;#OWqh>-&hUhf^`Zq2gHaR&M3& zpg(coAzeN$gNVOe*G%kBY_FZoFD2bU<0UHqe*XJ-6GRsjvh!9u&>D$nCk!6q7GW(n z?cE>ac3kuF2tG-HagzF#A{$&PnVtwgoS@PlJt+@!mT+PfrbAB(@d3>*-?4F(ZW89E zG`bf~8fca?)8IIN`j#v5vN_JY4J&ay)_Zj8d+bDQgBsak=N~$C%NCx~BT}9WeoApB zsZw&G3E4XAm=u>}@MpteqjuU*C2>ugv99i(=AzA*d!9|vWbn6OdCq=6MnFvJ7RL#m zB?wzBs}{sZEEuI>Mp{HL7N+s+g*3Ku4^v&a(u5?~`xShfm1Ozla@4ZA0QiQen-llqW0Ii%IqJ6)b;D$yAl1eg zU!=U)A7_my?wO|+NOd$x6-y3c;%@^_&x*wb{<>5omiF*RmIb!ntoR1D++3<_ecjP& zyO}uE@ro)z{kF+pJ%3nM;jQWKb*+teJFZx1a-DP8?QxL1R~ZOi+B`>`&eDr~2>dm1 z+jf&b&|S)RV-kCm3qLYzG^}{sDq~bHeslS#Z^Xc^#XevGVryGtYz5_$0sE>T!?4%S&Ib2>2}iNbr>q!I2id!bYBe_0pC)4Zz z^>_@Qy2-Ppi;=kiC7{ql?35Cxy;OZ2b$$8;o$DeNl>D^vts7KHE5*~tV;q#7Tj)rvU^GrL*R zfI75Q1so|x%>-9~fB)pbFH+_sQMD5Gr%(7bT4ttn=jQf4F{G0g4@VFA_yFv97sB$! z83ER$vN|3_^sz&=ik8`E--MhHi>nTHuNPJNq@e1x?N`$0MpV&CCZhv@$aSWCYNFoE zE@~B5NJr~QBay8gp^&oWlNuT!6=?{>-qyL~o2-7tXItlvITi-Daf0$3SyJuY;ifVK zuRWoliY!FgcjQ2bW=u3XSimRrCBM#;!XPEHcs{dm zDJHt!OPq5j+q;7-B34fk#HNuIe>AExz!ExEy%{d7q@uE*Vf6wzczExf@&h{l-lkp^ z90YqthP=37H7vbbI9_UTGd1Gw=nlos2#4t=0Ze$9Xlg8V?D9MXzU6mZSVgEcV~Q^( z+bNU0KfFl+v{FUOeoU3DS7g;O@!Vua`&}!wApiPuc|9r}PvJ5s21~NnE`_ zB_d@fM@<*ObK@rP076$|KH3K&+`SGF9K-raW4&ARqAdTg{5!Jabl4Pd@P*a;@YS0~ zz;Q8-4Qd<;d%m8je_c zEq7x+LRBC-=Dr5=A7?cd*}Dy9M1H&`0l4)AZ>=W!9k^%md zwj+w$gQnuY8LX*yru~Nwsikr8*$7`kiwJtk5(NBfV+S~RZvDigZNHDG6}}W}E{Wo< zcC?iFpk->^#*(9L*m^pqDo6Uk)`m%Xk%3+Sg-n(Da zoc!R2BIZE>$Prc7_pTNI>dNCV)Rk}wmReK<{r|e}fBu@>7rqm4;jRS-Ds9-`|FNSJ z)_AQ2t%860yVo{5sl z5b*A^Lpc=KFyiYhA+L8Ihb4go?L)aSsB&UuOSo2o&)uB_9CjZ-IldAF#>Tt1DO?mf zJ$Udt5+UyZkYQ+nlk#Ju2m2VL^1$bXW%+Ng@OvgceEL8*GjCLC(8q??dX==ODxx}H ze)OB?gwyZk!#5E>e_4sxO0{eqei-g}pk614lC*WQi ztc31U55eb!jNg6|ihZl=9EYa^95+sW&0aWqn>JouNe)}r!n+m!ZO%%vzeV+wH7?Jvq*ul!oY;vWKUO+1xhhlOyc!Z$$JjIJH zh7qOZe{KzuEBLOizKt3GZ0pNW>P-X!mKteB>5zc8t&Lb2iW1*qCvfjxC5({l_zTRm zlhPAqNVvw*!}9c`4s~Ws%r8j;N2I^9)wk{5JG&_vW+D&ND=Hl^h^}^=#zk08bJ4mM zJviNgfKAI3nmwSU-USF&OmblU`g^%@M;?5(Q;9U4j7M8?^#*kqh zDmtMEZSp=@^mar=MVMSsg+|&U_td5xbj=;YdCfXSB>GwI8xSxt=RTk`dkqnyoePpZ z;8Bztd(}@nJx1~Op;y1puskrn`8+*cwRxFYVj<0D0u=^F;d5z>oaxqzPUxDK6IMPW zLZ6A3u(G9;Q>{dmX{bRrp z%c{*Z!=8)GO8B~)tVNB2Me-VmX+1#n-`35*#~>bM za^f|zl0ct|C{YI%Mow&paKvy+;)jqBOz+l-czP05HMKvXrh+jnsM6vT0K$fHL*Xxo zdDgbq2%}&js5#>rMsR801lFyb-uDUJvPel1dY3F>eG5;D+b5>Bm*QLRO%tZm%+`;d zdX(ViojoM`uY}4mHb(r^A3gQ}xzP?co%d&JgGs=qMJd+#7vc16^MyAgY3sQzJCgiQ zF5eW(s%}R?CUE|JVk4|;!SXk9OOH)zTLs@#akAIIOC8 zDvG5K4lt9-a}rCXwf;AKS2Y+GrghC~VdZHb%rUV0vK-5cw9%0!Bu+bea6BE)l;d&z zBKDMDRu1|tkCQ#{sp8DtznCT}wLa>arEzzK_ht2S9Y&GDi{OCy*&3H7PiGv1oACYe zc<>kGCnP~l7~yXSZVqh>Mq^`Vaz3=`a>J_H`@T#5k%|@)YZdu=DMEI4g=gz5GTByf(vM4EV@bk@=xpU`_+>WA7Q6ls z=}An1{=w?4kL#1j^sRJ8;!?#ut81Q|>f$zBJi%M?ZYDW5N?cL0HaJ#1oRzbB7%6My>%E4=8iTa`Y*Rxo!mh%r{p3gV zDt!w=i1kXz>4Q^~Q|hqX>rQa#8TBZ#3D@@L`9^wm7YQY1(m+wV`b|;{uVSCoewETZ z=!EIa2H3@!Kuu)-DmhYp2RBDMFz?+`sI<0u6ZxL|ZDG-X>)#*p6GQ5M18^vXp*`OoP`Mnrk1&~LZoH!FAV z())prp{31kn40Ru%*SekGahUh|-XMRg{VdWEYridL?M;ZsC1et24f56v6s z^BeY2*lZDvLBL!XxRST0jI-C*sr?3{xvV!G`M8_djxN%f^>KW?s&41dZDDhvV@7hy z;;fTB3Vogeo$w!!Mj*Q%%oNS#+~jB?|e=LjoJ`3nskm1 zqQ8R%o|vG0rdqAN<^10DzCtJPz7^xj*mtb+#+q0z60GcuV2o3}Cm%DzEAa!n#kczS zlzD8J1M_u~)WF+X;`_9881uCjyqwvTwl!+0)Q5utpI<;n0=jcn3?cUt1@!88^-3S7 z9K(2<_*|O8Jjax+h#OoM!g5qS3Kyx?8~FmFhX$i`57Z@>V$-hsT(8>zx_;junnBy5 zt!Go2UUFS~zD>$Q{P7%a{unc3woz@_h=8^|Y_4qRO>)s<@YWzO)+_It>lApxM`PUh z6+s>EaS)YeoeEdFQgG(h=;mw&MLpzct>A7bH0@36e+i)x1gVc%sHpjpri8m6d;Vtj zv3bR-A25SqFq8eLBT+^$s04yXI@1vi zv%S`r^$^+^7=gLCG9_zsa57##IA?xU3umMAzBT#wU^up)#1?5u7b;cpH$5&5wAt#g zt5ZAyA#pC`=l>J)VNctysMn4xy)5@oZnmD{jhC*gknk7O2GKgsrXTfF)_IcxV#5sd zqnZF?M>LHO@pRgI?~?*Vc&8uT-XSY*JfEtV;W^W)tB$H;sDRA$6Oi@(rJx8W!7YqP z*)$KNw2cs60&zVir?W2$YUs;YDJ-kVoV4|-AS*tYQl$!|qObQ5(!1WXa6O+*=jI2* zOTiz!e5s_{I}B?;<+j7qJrql+CkE{Zl;g;gh`1A>R^lPQ5<`VbLrm*I1J$2(Ri6~b z95fJZ9CwB5M@B_abO>HK#dC(wf}Ni-aXp;PQ`}qR*^r-^>#lXPB6}oG#=h)3lLX{L z3&c?FICKQO*Yz(AEmS|I^Lxa>C)$9*Lw9vI9gsu`4r=z|kmCY)E-{uKYUed~#=eUrizo*p?0PEn~By)VD z7-9(`mVtexG};Zr%*U_~R2CktKTpQ*U#=s)GOXCV`yTnuRXg46b=OH|{rn!E;< zz(nKnSAWuNXD;FQA5nX@_)tC?z>$0?%3~M})+%6tvnNaf?cEI2s=a=*)v0N8JaOpR z4|237nE9Ga6@*&#n3d&-)w9Ql6G1*e^|h|-G&UL#Jhrn28) zEx^k`+6%w-*R_OvaAtx>}#I7%)Q%)!U`^u!X;w!QNs+-f?}6Zdf*bg<;;^c=1y1H%iT0$}ZzlOJQ>>lw%|kw4lIO@g8&foKE;q6vkYlR2cL zPh?aEjoK}7n#%!7+= zaxDY{)zdo?&0?tzvwoa*bA7eA;3C?0aUn>U5qH-!YzJG4jsF%-Pdf^K_gg>#%?D5! zAE>_#zJc963+iz!+13PtU*Y#clI{SH9Ogrecs$5kWB&U7TMyhgU9;Z$wbwQf1aP5> z_Fr@;gB5*;HU9SIN=5%oN1eQpt5X<`Y3NTkI%980FO~ywzHeeuuE-%!hM>`9Ir3<9 zT0Sa~S$5=4vsE5?#xUPg_j7q5z_Sv}-1{q-S>UqNUO@DKy~*zoyGC}t?9h2h_{L>i zK)A_49vJ;^D)!h?Ga(bZO!&^$OVx*)?hSZ0w(Dy1EB z)wkt0`;5-3H4i`x1UQ zo>otIJt+dHeiXEcB`OD?tu4x4MF;hL;Gcq%*lKhiwrfAsq&(=z{_Ns&ex&>$jym$0 ztQP+z^d&^AT{^DHH>ca3ob6}vD;&S8-v&*2bBJ>=QpAb)tFKJh4!Z{IW17-uxG%_^^&^Ef^_R`#6j&a1^Sn;)*I+;0O zCRu9ZUcgnAik=U;XZjUk(RvFO|L{CO%~(2@8eS$78?|Qfk5=Z89Y1?yGX(tA1c2-%9?L3kZPz#80rpA}0?Jl=<`ugW9iHuDXVronMcVo`J4kZT zA=7{4AqxJLgha&~D<2YkV1a@6~?-)o;(a+|=F8A5b@9o!> z{gF*U{7S2!AaZuzd#_|W5IdmG@J_n9%V~j_SWVey%Dr^O@Exsa$g7aID!rA0FQC?R zUZ66Z1@^TI`v9Dc&DYjdW3sojOW#&QKB6V&XorzGIiS(~MIhdzLTLGOsF&kVL0bdW zET#g96^QQB)$NfV;erQ3_O(;nb^{odF7?3h?_Hb@#4;YnWg>aT=B;u+oJnfQQK&?Z z8{0?=qj|O2z2txrgw6p&X(}+Wr9^Su@i&v7-9>!Kjv0e9S3}^h?0}T$>mP%TP=Q{* zz6=4hs4&Qa^f(RXcQ$Vya6c~nUkOcDO&D`+|7VpBDEfg>+CtT!P~?r_?y%6Ec@IJb zmvKJ=@830;QDI`)6p0g!JMN7RE@RmIvw*1o!rX{29F@9DO(RB+c`sf2?g3;`Noxq} zQlYWC1;IjbS9&=+in~TUT9Nqwhx%{X|DP`4@ht{#&OM5aaFRWAncip0no8dkEJOYe DU`E0- literal 0 HcmV?d00001 diff --git a/docs/img/guide/heroes-list.png b/docs/img/guide/heroes-list.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7143c7949d5203755785ed1226d2c6d9947f11 GIT binary patch literal 30607 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 RY4Hm3CnKRKUM{Nd`yW5?zUBY` literal 0 HcmV?d00001 diff --git a/lib/grunt/utils.js b/lib/grunt/utils.js index 204db413ecf2..8bec36769ac9 100644 --- a/lib/grunt/utils.js +++ b/lib/grunt/utils.js @@ -287,7 +287,7 @@ module.exports = { rewrite: function(){ return function(req, res, next){ var REWRITE = /\/(guide|api|cookbook|misc|tutorial|error).*$/, - IGNORED = /(\.(css|js|png|jpg|gif)$|partials\/.*\.html$)/, + IGNORED = /(\.(css|js|png|jpg|gif|svg)$|partials\/.*\.html$)/, match; if (!IGNORED.test(req.url) && (match = req.url.match(REWRITE))) { diff --git a/src/ngComponentRouter/Router.js b/src/ngComponentRouter/Router.js new file mode 100644 index 000000000000..0c7a5330cacb --- /dev/null +++ b/src/ngComponentRouter/Router.js @@ -0,0 +1,122 @@ +/** + * @ngdoc module + * @name ngComponentRouter + * @description + * The new Angular Router + */ + +/** + * @ngdoc type + * @name Router + * @description + * A `Router` is responsible for mapping URLs to components. + * + * * Routers and "Routing Component" instances have a 1:1 correspondence. + * * The Router holds reference to one or more of Outlets. + * * There are two kinds of Router: {@link RootRouter} and {@link ChildRouter}. + * + * You can see the state of a router by inspecting the read-only field `router.navigating`. + * This may be useful for showing a spinner, for instance. + * + */ + +/** + * @ngdoc type + * @name ChildRouter + * @description + * + * This type extends the {@link Router}. + * + * Apart from the **Top Level Component** ({@link $routerRootComponent}) which is associated with + * the {@link $rootRouter}, every **Routing Component** is associated with a `ChildRouter`, + * which manages the routing for that **Routing Component**. + */ + +/** + * @ngdoc type + * @name RootRouter + * @description + * + * This type extends the {@link Router}. + * + * There is only one instance of this type in a Component Router application injectable as the + * {@link $rootRouter} service. This **Router** is associate with the **Top Level Component** + * ({@link $routerRootComponent}). It acts as the connection betweent he **Routers** and the **Location**. + */ + +/** + * @ngdoc type + * @name ComponentInstruction + * @description + * A `ComponentInstruction` represents the route state for a single component. An `Instruction` is + * composed of a tree of these `ComponentInstruction`s. + * + * `ComponentInstructions` is a public API. Instances of `ComponentInstruction` are passed + * to route lifecycle hooks, like `$routerCanActivate`. + * + * You should not modify this object. It should be treated as immutable. + */ + +/** + * @ngdoc type + * @name RouteDefinition + * @description + * + * Each item in a the **RouteConfig** for a **Routing Component** is an instance of + * this type. It can have the following properties: + * + * * `path` or (`regex` and `serializer) - defines how to recognize and generate this route + * * `component`, `loader`, `redirectTo` (requires exactly one of these) + * * `name` - the name used to identify the **Route Definition** when generating links + * * `data` (optional) + */ + +/** + * @ngdoc type + * @name RouteParams + * @description + * A map of parameters for a given route, passed as part of the {@link ComponentInstruction} to + * the Lifecycle Hooks, such as `$routerOnActivate` and `$routerOnDeactivate`. + */ + +/** + * @ngdoc directive + * @name ngOutlet + * @priority 400 + * restrict: AE + * @description + * + * The directive that identifies where the {@link Router} should render its **Components**. + */ + +/** + * @name ngLink + * @description + * + * Lets you create links to different views, automatically generating the `href`. + * + * ## Use + * Provide an array of {@link RouteDefinition} names and extra parameter objects: + * + * ```html + * Link to Child View + * ```` + */ + + +/** + * @ngdoc service + * @name $rootRouter + * @description + * The singleton instance of the {@link RootRouter} type, which is associated + * with the top level {@link $routerRootComponent}. + */ + + +/** + * @ngdoc service + * @name $routerRootComponent + * @description + * + * The top level **Routing Component** associated with the {@link $rootRouter}. + */