From f78ef82f59ff3dd5b59fc6067de6f3a6bf109dd1 Mon Sep 17 00:00:00 2001 From: Saylor Berman Date: Wed, 23 Oct 2024 14:20:30 -0600 Subject: [PATCH] Update data/control plane split design With the upcoming agent v3 release, the design for our control plane and data plane separation needs an update. Much of this is based off of discoveries from a recent PoC, as well as predicted design and implementation details that may be necessary. --- .../connect-response.png | Bin 10874 -> 0 bytes .../deployment-architecture.png | Bin 36894 -> 93102 bytes .../control-data-plane-separation/design.md | 691 ++---------------- .../download-config.png | Bin 153052 -> 0 bytes .../graph-conns.png | Bin 0 -> 22038 bytes 5 files changed, 80 insertions(+), 611 deletions(-) delete mode 100644 design/control-data-plane-separation/connect-response.png delete mode 100644 design/control-data-plane-separation/download-config.png create mode 100644 design/control-data-plane-separation/graph-conns.png diff --git a/design/control-data-plane-separation/connect-response.png b/design/control-data-plane-separation/connect-response.png deleted file mode 100644 index 06a9dc4cde21715f765c7c17cb5cc36ddefcaca9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10874 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 diff --git a/design/control-data-plane-separation/deployment-architecture.png b/design/control-data-plane-separation/deployment-architecture.png index db5bbe393db8e37db8c5789fffd2b22fcf1a4a73..dee2126bc35bc76de20f74a07f4882632b9ca6f1 100644 GIT binary patch literal 93102 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 XX|#NQ&A9ap_$Pf=K|KG@hfn?w0bE^G literal 36894 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 Note: I use data plane and agent interchangeably in this document. +Issue https://github.com/nginxinc/nginx-gateway-fabric/issues/1508 ## Background @@ -14,6 +12,8 @@ the control and data planes and share CVE potential. A compromised control plane Kubernetes API server may be affected if the data plane is compromised. In addition to security concerns, this architecture does not allow the control plane and data plane to scale independently. +An added benefit is that this architecture makes it possible for the control plane to provision the data plane, unlocking the ability to support multiple Gateways with a single control plane. + ## Goals - Data plane and control plane containers run in separate Pods @@ -23,377 +23,118 @@ architecture does not allow the control plane and data plane to scale independen - RBAC policy for data plane follows the principle of least privilege. The data plane should not have access to the Kubernetes API server. - RBAC policy for control plane follows the principle of least privilege. - -## Non-Goals - -- Control plane can scale -- Support for multiple control planes per GatewayClass or Namespace. +- Control plane provisions the data plane when a Gateway resource is created. ## Design -Since the choice of a data plane agent will inform the rest of the design, I will start by proposing the agent. - -### Nginx Agent - -I propose using the [nginx agent](https://github.com/nginx/agent) as our data plane agent. - -#### Evaluation of Requirements - -The following list outlines all of NGF's requirements for an agent and whether the nginx agent meets them: - -- [x] It is open source. -- [x] It supports both OSS and Plus versions of nginx. -- [x] It can be deployed in Kubernetes. - - [ ] It supports readiness and liveness probes. - - [x] It supports logging to stderr/stdout. - - [x] It handles SIGTERM gracefully. - - [ ] Its container base image is scratch or something minimal. - - [x] It supports a read-only root file system. - - [x] It can run as a non-root user. -- [x] It can configure an nginx instance running in the same Pod. -- [x] It is loosely coupled to the nginx version. The Nginx version can be updated independently of the agent. -- [x] A user can update it independently of the control plane. -- [x] It can accept configuration from a control plane running in a different Pod. -- [x] It can report the status of configuration attempts to the control plane. -- [x] It should not crash because of bad config. -- [x] It can authenticate with the control plane. -- [x] It supports TLS between the control plane and the agent. -- [x] It registers itself with the control plane. -- [x] Many agents can register to a single control plane. -- [x] It can scale separately from the control plane. -- [x] A user can configure it independently of other agents. -- [x] It does not need access to the Kubernetes apiserver. -- [x] It has a REST endpoint for metrics in Prometheus format. -- [x] It should be lightweight. -- [x] It can handle frequent configuration changes (~ 1 change/second). -- [x] It can handle large configurations. -- [ ] It allows the control plane to access the N+ API securely. - -#### Missing Requirements - -The nginx agent is missing a few requirements we will need to add for our use case. - -Features needed (in priority order, more or less): - -- Add support for TLS CA certificate rotation for the agent <-> control plane gRPC channel -- Deterministically confirm that a nginx reload succeeds (e.g. check that new worker processes are running) -- Add an option to configure the server's token via a file -- Add an option to refresh server token from a file -- Add readiness and liveness endpoints -- Produce a container image as a release artifact - - This image should be non-root - - This image should be as minimal as possible -- Allow the control plane to access the N+ API to configure upstreams and the key-value store. -- Add support for metrics enrichment. Metrics can be enriched with Kubernetes meta-information such as namespace, pod - name, etc. - -Agent features/plugins that we'd like to disable: - -- Metrics service client -- Data plane status updates -- Config upload feature - - This is the feature that uploads the config to the control plane -- The nginx-counting feature -- The activity-events feature - -#### Benefits - -Using the nginx agent has the following benefits: - -- Saves us development time. We can drop the agent in and start using it immediately (with some caveats). -- Requires limited changes to the control plane. -- It runs `nginx -t` before reloading nginx. Which will improve our error reporting. -- No need to reinvent the wheel and contribute to the plethora of nginx agents. -- It supports the core features that we need. -- It is open source, but has a dedicated team from NGINX maintaining it. -- It supports additional features that we may need in the future. -- It has an established community of users (NMS) that are putting it through its paces. -- It is built to be modular and configurable. We should be able to disable most or all of the features we don’t need in - the future. - -#### Drawbacks - -Using the nginx agent has the following drawbacks: - -- It is not custom-built for our use case. It contains more features that we need. -- It was not built to run in Kubernetes. - - Violates some of the best practices for running in Kubernetes. For example, it runs two processes in a single - container. - - Metrics do not include Kubernetes meta-information. -- It is a dependency that we do not control. -- It does not support dynamic configuration of upstreams and the key-value store. -- We may need to replace it in the future if we run into performance issues or encounter a blocker. - -### Alternatives - -#### Write our own agent - -We could write our own agent. This would give us the most control over the design and implementation. There are few -different approaches we could take to design an agent. - -**Approach 1: Use the nginx agent as a library and build our own agent on top of it** - -Rather than start from scratch, we could use nginx agent packages to build a new agent. This would allow us to reuse the -agent code and build a more lightweight agent that meets only our needs. - -Benefits: - -- We can reuse some nginx agent code. -- We can pick and choose what we want to include in our agent. -- We can make the agent more Kubernetes-friendly. - -Drawbacks: - -- I'm not sure how feasible this is. The nginx agent is not designed to be used as a library. Some features may be hard - to tease apart. -- We would have to maintain the agent ourselves. -- We wouldn't have as much say in the roadmap of the agent. - -**Approach 2: Develop an API for nginx** - -We could develop an API for nginx. This would allow us to configure nginx on a more granular level than the nginx agent. -Rather than sending the entire nginx configuration on every update, we could update only what has changed, such as -endpoints, servers, or locations. We could use the [Nginx Controller API][controller], the [N+ API][nplus], and -the [xDS API][xds] as inspiration for the design. - -Benefits: - -- We can configure nginx on a more granular level. -- We have control over the design and implementation. -- We can add dynamic configuration wherever possible - -Drawbacks: - -- Time. It would take a lot of time to develop, implement, and maintain this agent. -- We would add yet another nginx agent to the ecosystem. - -**Approach 3: Use the xDS API and build an agent that translates xDS to nginx config** - -The xDS API was developed for Envoy, however there is a [CNCF xDS API Working Group][xds-wg] that is working to create a -universal data plane API based on the xDS APIs. - -Benefits: +We will be using [NGINX Agent v3](https://github.com/nginx/agent/tree/v3) as our agent for the data plane. Our control plane and agent will connect to each other over a secure gRPC channel. The control plane will send nginx configuration updates over the channel using the agent's API, and the agent will write the files and reconfigure nginx. -- We can participate xDS Working Group and help drive the evolution of the APIs -- We don't have to design our own API -- We could focus on the data plane and bring in an xDS control plane -- An agent that translates xDS to nginx config could be useful for other projects - -Drawbacks: - -- Steep learning curve. We would need to learn xDS APIs -- Translating xDS to nginx config is not a trivial task. Some features will not map easily to nginx config. -- We would either need to completely re-write our control plane or adopt an xDS control plane - -#### Modify nginx-agent - -We could modify the nginx agent to meet our needs. This would require us to maintain a fork of the nginx agent. I see -this option as a last resort that we can decide to adopt if we hit a roadblock with the nginx agent. - -[controller]: https://docs.nginx.com/nginx-controller/api/overview/ - -[nplus]: http://nginx.org/en/docs/http/ngx_http_api_module.html - -[xds]: https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol - -[xds-wg]: https://github.com/cncf/xds +Whenever a user creates a Gateway resource, the control plane will provision an nginx deployment and service for that Gateway. The nginx/agent deployment will register itself with the control plane, and any Gateway API configuration that is created by a user for that Gateway will be sent to that nginx deployment. ### Deployment Architecture ![Deployment architecture](deployment-architecture.png) - _Control Plane Deployment_: The control plane is a Kubernetes Deployment with one container running the NGF - controller. Initially, the control plane will be limited to a single Pod. Once we add leader election, the control - plane will be able to scale. The control plane will perform the same functions as it does today, but instead of + controller. The control plane will perform the same functions as it does today, but instead of configuring nginx by writing files to a shared volume, it will send the configuration to the agent via gRPC. - _Control Plane Service_: Exposes the control plane via a Kubernetes Service of type `ClusterIP`. The data plane will use the DNS name of the Service to connect to the control plane. -- _Data Plane DaemonSet/Deployment_: A user can deploy the data plane as either a DaemonSet or Deployment. The data +- _Data Plane DaemonSet/Deployment_: The data plane can be deployed as either a DaemonSet or Deployment. The data plane contains a single container running both the agent and nginx processes. The agent will download the configuration from the control plane over a streaming RPC. -- _NGINX Service_: Exposes nginx via a Kubernetes Service of type `LoadBalancer .`This is the entry point for the - customer’s traffic. Initially, this Service will only expose ports 80 and 443. In the future, if we add support for - additional listener ports, this Service will expose all the listener ports. Note that this Service should not expose - any of the agent’s ports. +- _NGINX Service_: Exposes nginx via a Kubernetes Service of type `LoadBalancer .` This is the entry point for the + customer’s traffic. Note that this Service should not expose any of the agent’s ports. + +#### Further Requirements and Implementation Details + +- Both deployments should have read only filesystems. +- Both deployments should have the minimal permissions required to perform their functions. +- The nginx deployment should be configurable via the helm chart. + - Downside of this is that these options will apply to all nginx instances. + - We could introduce a CRD, but where would it attach? We already have NginxProxy which controls dynamic data plane configuration, and this may eventually attach to the Gateway instead of just the GatewayClass. Would a Deployment configuration fit in there, and would it be dynamic? That would require us to completely redeploy nginx if a user changes those settings. + - We could start with the helm chart option, and rely on user feedback to see if we need to get more granular. + - This could also involve creating a ConfigMap that the control plane consumes on startup and contains all nginx Deployment/Daemonset configuration, including NGINX Plus usage configuration. +- nginx Service should have configurable labels and annotations via the GatewayInfrastructure field in the Gateway resource. +- Control plane creates the nginx deployment and service when a Gateway resource is created, in the same namespace as the Gateway resource. When the Gateway is deleted, the control plane deletes nginx deployment and service. +- Control plane should label the nginx service and deployment with something related to the name of the Gateway so it can easily be linked. +- Liveness/Readiness probes: + - Control plane probe currently waits until we configure nginx. Going forward, this probe should just be when the control plane is ready to configure. + - nginx probe...can agent expose any type of health endpoint? This is not yet clear. +- Control plane should not restart data plane pods if they are unhealthy. -The user will deploy the control plane, and data plane via Kubernetes manifests. The control plane supports a -single `GatewayClass` and `Gateway` resource. Following this model, it makes sense for the control plane to support a -single data plane Deployment/DaemonSet. Each agent+nginx Pod in the data plane will receive the same configuration from -the control plane. In the future, we may reconsider this model if there’s a use case for the control plane to support -multiple `Gateway` resources. For example, in that model, it might make sense for the control plane to be responsible -for provisioning a separate data plane for each `Gateway.` +### Agent Configuration -### Running Multiple NGF Controllers +Using [nginx-agent.conf](https://github.com/nginx/agent/blob/v3/nginx-agent.conf), we can configure the agent on startup. Note that this example conf file may not have all available options. At a minimum, it will need to be configured for the following: -Users can run multiple NGF controllers in the same cluster by leveraging the `GatewayClass` resource. Multiple NGF -controllers will be able to coexist in the same cluster as long as they each have a unique corresponding `GatewayClass` -resource. In this case, each installation of NGF will contain a unique `GatewayClass` resource, a control plane -Deployment, and a data plane Deployment/DaemonSet. +- command server is the NGF ClusterIP service + - tls settings for this connection +- prometheus metrics are exposed and available on the expected port (`9113`) and path (`/metrics`) -### Communication Channels +### Connecting and Registering an Agent The control plane and agent will communicate over gRPC. The agent will establish a gRPC connection to the control plane on start-up. The agent will gracefully retry to connect to the control plane, so the start order of the containers is -not an issue. The gRPC runtime will handle the connection establishment and management. If an error occurs or the stream -or connection is dropped, the connection must be reestablished. - -### gRPC Definitions - -#### Commander Service - -The control plane will have to implement the `Commander` gRPC service defined below. - -```protobuf -// Interface exported by the server. -service Commander { - - // A Bidirectional streaming RPC established by the data plane agent and is kept open - rpc CommandChannel(stream Command) returns (stream Command) {} - - // A streaming RPC established by the data plane agent and is used to download resources associated with commands - // The download stream will be kept open for the duration of the data transfer and will be closed when its done/ - // The transfer is a stream of chunks as follows: - // - header - // - data chunk count to follow - // - resource identifier/metadata - // - data 1 - // ... - // - data - // - // each data chunk is of a size smaller than the maximum gRPC payload - rpc Download(DownloadRequest) returns (stream DataChunk) {} - - // A streaming RPC established by the data plane agent and is used to upload resources associated with commands - rpc Upload(stream DataChunk) returns (UploadStatus) {} -} -``` - -The `CommandChannel` RPC is a bidirectional stream RPC that is established by the agent and remains an open HTTP/2 -stream over the course of the agent’s lifetime. The purpose of this channel is for the control plane and the agent to -send command requests and responses to one another. For more information on the command message, see -the [Command Message](#command-message) section. - -Commands can contain payloads, but they are mostly small (a few kb at most) and should not transport large amounts of -data. The message size is significant with gRPC because gRPC has a message size limit. For larger payloads, like the -nginx configuration, the `Download` and `Upload` RPCs will be used in conjunction with commands. - -The control plane will use the `Download` channel to push the configuration to the agent. See -the [Configuration Download](#configuration-download) section for details. +not an issue. The gRPC runtime will handle the connection establishment and management. If an error occurs or the stream or connection is dropped, the connection must be reestablished. -The agent uses the `Upload` command to upload large payloads, such as the nginx configuration, to the control plane. For -our use case, we only need the ability to send the nginx configuration from the control plane to the agent. We do not -need the agent to upload its configuration to the control plane. Ideally, we would like to disable this functionality in -the agent. +#### Further Requirements and Implementation Details -For the full commander service definition, see -this [file](https://github.com/nginx/agent/blob/main/sdk/proto/command_svc.proto). +- The control plane will need to run a gRPC server for the agent to connect to. +- When an agent connects to the control plane, the payload _should_ contain the hostname (pod name) and nginx instanceID of the registering agent. This can be used to keep track of all agents/pods that are connected. + - We need to be able to link an agent connection with a subscription. These are two different gRPC calls. `Subscribe` is where we actually send an nginx config to an agent. We need to ensure that we are sending the correct nginx config to the correct agent. Ideally we use metadata from the agent connection (maybe hostname, maybe we need middleware to extract token/uuid from grpc connection headers) and store that in the context. The context is then used in the `Subscribe` call, where we can extract the agent identifier and send the proper nginx config for that identifier. -#### Command Message + Process: agent `Connects` to NGF. We get its identifier and pod name, add the identifier(s) to a context cache, track that connection, and create a subscription channel for it. Agent then `Subscribes`. The context passed in allows us to use the identifier to grab the proper subscription channel and listen on it. This channel will receive a `ConfigApplyRequest` when we have a new nginx config to write. -Command Messages have the following structure: +- If a single nginx deployment is scaled, we should ensure that all instances for that deployment receive the same config (and aren't treated as "different"). +- Each graph that the control plane builds internally should be directly tied to an nginx deployment. +- Whenever the control plane sees an nginx instance become Ready, we send its config to it (it doesn't matter if this is a new pod or a restarted pod). +- If no nginx instances exist, control plane should not send any configuration. +- The control plane should check if a connection exists first before sending the config (all replicas, even non-leaders, should be able to send the config because the agent may connect to a non-leader). + - Different pods within an nginx deployment may connect to a different NGF control plane if the NGF control plane has also been scaled. So each NGF control plane may have a different list of connected agents that they would be sending to. However, each NGF pod should have the exact same internal graph of nginx configuration. -- Metadata - contains details about the sender and the message. -- Type - contains information about the type of data the message carries. -- Data - the message payload. +Scaled connections -Command messages act as envelopes, but they make use of both the type field and the `oneof` feature of gRPC to embed -different types of payloads. +### Agent API -```protobuf -// Command is the envelope sent between the management plane and the data plane, requesting some action or reporting a response -message Command { - Metadata meta = 1 [(gogoproto.jsontag) = "meta"]; // add metadata later with fields like timestamp etc +The control plane will need to implement the proper gRPC APIs in order to connect and send configuration to the agent. - enum CommandType { - NORMAL = 0; - DOWNLOAD = 1; - UPLOAD = 2; - } - // used as a dispatch flag to quickly send the command to the correct base processor that will then further sort - // based on the actual data type - CommandType type = 2 [(gogoproto.jsontag) = "type"]; +Useful references: - oneof data { - // common command status response - used by most command responses - CommandStatusResponse cmd_status = 3 [(gogoproto.jsontag) = "cmd_status"]; +- [Basic mock control plane](https://github.com/nginx/agent/tree/v3/test/mock/grpc) +- [Proto definitions](https://github.com/nginx/agent/blob/v3/docs/proto/protos.md) - // request action on nginx config when sent C → A - all action values (see NgxConfig) - // notify config details when sent A → C - only RETURN action - NginxConfig nginx_config = 4 [(gogoproto.jsontag) = "nginx_config"]; +The gRPC services to implement in the control plane are: - // request action on nginx config when sent C → A - all action values (see NgxConfig) - // notify config details when sent A → C - only RETURN action - NginxConfigResponse nginx_config_response = 5 [(gogoproto.jsontag) = "nginx_config_response"]; +`CommandService`: this handles the connection and subscription to the agent. This will make a `ConfigApplyRequest` when we need to write nginx config. This request will contain a `FileOverview`, which is essentially a list of filenames that are to be sent. - // request connection to a management plane, A → C - AgentConnectRequest agent_connect_request = 6 [(gogoproto.jsontag) = "agent_connect_request"]; +`FileService`: when the agent receives a `ConfigApplyRequest`, it sends a `GetFile` request to this service to download the file contents contained in the original `FileOverview`. - // connection response to the data plane, C → A - AgentConnectResponse agent_connect_response = 7 [(gogoproto.jsontag) = "agent_connect_response"]; +Some API methods will not need to be implemented. For example, `UpdateFile` is used by the agent to send a file that was updated on the agent side to the control plane. In our case, this won't happen since our control plane has full control over the config. Methods relating to this functionality can be stubbed out. - // request Configuration parameters for agent, A → C - AgentConfigRequest agent_config_request = 8 [(gogoproto.jsontag) = "agent_config_request"]; +### Metrics - // configuration parameters for Agent C → A. This message can be sent asynchronously as well - AgentConfig agent_config = 9 [(gogoproto.jsontag) = "agent_config"]; +Agent can be configured to expose metrics on a `/metrics` endpoint. Our control plane will need to configure agent to do this so that Prometheus can scrape each agent for nginx metrics. - // DataplaneStatus reports Dataplane metrics the Agent is aware of - DataplaneStatus dataplane_status = 11 [(gogoproto.jsontag) = "dataplane_status"]; +### NGINX Plus - // EventReport reports events the Agent is aware of, e.g. Start/Stop of Agent, Config Apply NGINX - f5.nginx.agent.sdk.events.EventReport event_report = 12 [(gogoproto.jsontag) = "event_report"]; +#### Upstream server state - // DataplaneSoftwareDetails contains details for additional software running on the dataplane that pertains - // to NGINX Agent - DataplaneSoftwareDetails dataplane_software_details = 13 [(gogoproto.jsontag) = "dataplane_software_details"]; +In the current implementation using NGINX Plus, when only upstream servers change, NGF writes the upstream servers in the nginx config, but does not reload. It then calls the NGINX Plus API to update the servers. This process allows us to update the upstream servers using the API and not have to reload nginx, while still having the upstream servers exist in the nginx config for easy debugging and consistency. However, when using agent, any config write will result in a reload. To preserve the ability to update upstreams with the API without needing a reload, we'll have to utilize a `state` file instead of writing the servers directly in the nginx config. This way the list of servers is still available on the filesystem for debugging, but is written by the nginx when making the API call instead of by the control plane directly. - // DataplaneUpdate contains details for dataplane resources that have changed - DataplaneUpdate dataplane_update = 14 [(gogoproto.jsontag) = "dataplane_update"]; - } -} -``` - -There are many command types defined above, and the control plane does not care about all of them. However, any commands -that we do not care about can be easily ignored by the control plane by inspecting the message type. +An example of what this looks like is defined [here](https://docs.nginx.com/nginx/admin-guide/load-balancer/dynamic-configuration-api/#configuring-persistence-of-dynamic-configuration). -For the full command message definition, see -this [file](https://github.com/nginx/agent/blob/main/sdk/proto/command.proto). +#### Secret duplication and synchronization -#### Nginx Config Message +There are multiple Secrets that an NGINX Plus user can and will be creating. These include: -The control plane sends the `NginxConfig` message in chunks over the `Download` channel to the agent in order to -configure nginx. - -```protobuf -message NginxConfig { - NginxConfigAction action = 1 [(gogoproto.jsontag) = "action"]; - ConfigDescriptor config_data = 2 [(gogoproto.jsontag) = "config_data"]; - ZippedFile zconfig = 3 [(gogoproto.jsontag) = "zconfig"]; - ZippedFile zaux = 4 [(gogoproto.jsontag) = "zaux"]; - AccessLogs access_logs = 5 [(gogoproto.jsontag) = "access_logs"]; - ErrorLogs error_logs = 6 [(gogoproto.jsontag) = "error_logs"]; - SslCertificates ssl = 7 [(gogoproto.jsontag) = "ssl"]; - DirectoryMap directory_map = 8 [(gogoproto.jsontag) = "directory_map"]; -} -``` +- JWT Secret for running NGINX Plus +- Docker Registry Secret for pulling NGINX Plus +- Client cert/key Secret for NIM connection +- CA cert Secret for NIM connection -- `action`: what action the agent should take with the nginx config: apply, test, rollback, return, or force. -- `config_data`: contains metadata on the agent and nginx instance we are configuring. -- `zconfig`: a zipped file with all nginx `.conf` files. -- `zaux`: a zipped file with all nginx auxiliary files, such as njs modules, static html files, etc. -- `access_logs`: meta-information about the access logs. -- `error_logs`: meta-information about the error logs. -- `ssl`: meta-information about the SSL certificates stored on the data plane. -- `directory_map`:meta-information about the nginx configuration files. The agent uses this for synchronization (i.e., - comparing configuration against previous deployments) and to interrogate the file system before applying the - configuration. +With the new architecture, a user should initially create those Secrets in the nginx-gateway namespace. The control plane will then need to duplicate these Secrets to any namespace where it deploys an nginx instance. This is because the Secrets are mounted to the nginx deployment. The control plane should also update the Secrets if the original Secrets are ever updated, meaning it will have to now watch for Secret updates. -I found that for NGF’s use case, the `access_logs,` `error_logs,` and `ssl` fields are unnecessary. For more details on -how the control plane pushes nginx config to the agent, see the [Configuration Download](#configuration-download) -section. - -For the full `NginxConfig` message definition, see -this [file](https://github.com/nginx/agent/blob/main/sdk/proto/nginx.proto). +This process must be documented so users are aware that their Secrets are being duplicated into other namespaces. ### Encryption @@ -410,14 +151,13 @@ names and mount path configurable via flags. For production, we will direct the For development and testing purposes, we will provide a self-signed default certificate. In order to be secure by default, NGF should generate the default certificates and keypair during installation using a Kubernetes Job. +Using cert-manager may also be an easy option to reduce the burden of installing and rotating Secrets. + #### Certificate Rotation -Kubernetes [automatically updates mounted Secrets][auto-update-secrets] when the content changes, but the control plane +Kubernetes automatically updates mounted Secrets when the content changes, but the control plane and agent must make sure they are using the latest certificates. We can achieve this by providing a callback in -the [`tls.Config`][tls-config] for the gRPC server and client. We will need to add his functionality to the agent as -well. - -[auto-update-secrets]: https://kubernetes.io/docs/concepts/configuration/secret/#mounted-secrets-are-updated-automatically +the [`tls.Config`][tls-config] for the gRPC server and client. [tls-config]: https://pkg.go.dev/crypto/tls#Config @@ -428,17 +168,13 @@ authenticate the token by sending a request to the Kubernetes [TokenReview API][ ![Agent Connect](./connect.png) -On start-up the agent will create a gRPC [`CommanderClient`][client] and connect to the control plane -[`CommanderServer`][server] using the server address, server token, and TLS options specified in the agent’s +On start-up the agent will create a gRPC client and connect to the control plane +server using the server address, server token, and TLS options specified in the agent’s configuration file (see [Agent Configuration](#agent-configuration)). This connection is secured by TLS; see the [Encryption](#encryption) section for more information. The control plane will validate the token with -Kubernetes by sending a TokenReview API request. If the token is valid, the bidirectional streaming `CommandChannel` +Kubernetes by sending a TokenReview API request. If the token is valid, the bidirectional streaming connection between the agent and the control plane is established and left open for the lifetime of the agent. -Upon successful connection, the agent will register by sending an `AgentConnectionRequest` command sent from the agent -to the control plane over the `CommandChannel.` This message is used by the control plane to associate the agent with -internal resources correctly. See the [Registration](#agent-registration) section for more information. - #### Long-lived token v/s bound token Long-lived tokens are JWT tokens for a ServiceAccount that are valid for the lifetime of the ServiceAccount. They are @@ -470,8 +206,7 @@ the filesystem periodically. That would require the following changes in the age loaded on start-up and never refreshed. If the agent reconnects to the control plane, it will use the same token provided on start-up. -I propose that we initially use a long-lived token for the agent. This will allow us to get the agent up and running -quickly. We can then add support for bound tokens in a future release. +The agent team has these tasks on their roadmap as of the date of writing this design. However, as a backup plan, we can use the long-lived tokens. To create the long-lived token, we will provide the following manifest: @@ -489,14 +224,14 @@ And expose the token as an environment variable in the agent container: ```yaml env: - - name: NMS_SERVER_TOKEN + - name: AGENT_SERVER_TOKEN valueFrom: secretKeyRef: name: nginx-agent-token-secret key: token ``` -The agent will load the token from the `$NSM_SERVER_TOKEN` environment variable and add it to the `Authorization` +The agent will load the token from the `$AGENT_SERVER_TOKEN` environment variable and add it to the `Authorization` header of the gRPC request when connecting to the control plane. For a good comparison of long-lived and bound tokens, see [this blog post][bound-token-gke]. @@ -509,210 +244,6 @@ For a good comparison of long-lived and bound tokens, see [this blog post][bound [projected-volume]: https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/#bound-service-account-token-volume -### Agent Registration - -![Agent Connect Response](./connect-response.png) - -The agent will send an [`AgentConnectRequest`][connect] command to the control plane over the`CommandChannel` to -register with the control plane. This command includes the agent’s system ID and nginx ID(s) which the control plane -needs in order to push configuration. During registration, the control plane will store this information and associate -it with the connection. - -In response, the control plane will send an [`AgentConnectResponse`][response] over the `CommandChannel .` -The `AgentConnectResponse` contains the connect request's status and the agent’s runtime configuration. This includes -the enabled features, extensions, tags, log configuration, and alias for the agent. - - -[client]: https://github.com/nginx/agent/blob/ea3a1b4df5d7ecf95bd3d9297d26e420f5e1dd57/sdk/proto/command_svc.pb.go#L59 - -[server]: https://github.com/nginx/agent/blob/ea3a1b4df5d7ecf95bd3d9297d26e420f5e1dd57/sdk/proto/command_svc.pb.go#L184 - -[connect]: https://github.com/nginx/agent/blob/ea3a1b4df5d7ecf95bd3d9297d26e420f5e1dd57/sdk/proto/agent.pb.go#L92 - -[response]: https://github.com/nginx/agent/blob/ea3a1b4df5d7ecf95bd3d9297d26e420f5e1dd57/sdk/proto/agent.pb.go#L226 - -### Configuration Download - -#### Building the NginxConfig message - -Currently, NGF configures nginx by translating the Gateway API resources into -an [internal representation of the nginx config][internal-config], executing a template with this data to generate the -nginx configuration as bytes, and then writing the bytes to the filesystem. - -The agent expects the configuration files to be compressed and packaged into a [`ZippedFile`][zip-file] message. -The `ZippedFile` message contains the compressed configuration files' contents, the files' root directory, and the -contents' checksum. - -To produce the `ZippedFile` message, the control plane will import the [`zip.Writer`][zip-writer] from the agent’s SDK. -The control plane will still execute the template to generate the nginx configuration as bytes, but instead of writing -the files to the filesystem, the control plane will add the files to the `zip.Writer`. - -In addition to the `ZippedFile` containing the nginx configuration files, we will also need to build the -[`DirectoryMap`][directory-map] message. The `DirectoryMap` message contains a mapping of the directory structure -holding the nginx configuration files. The agent uses this map to interrogate the file system before applying the config -and to determine which files to delete. Each file we add to the `zip.Writer` we will also add to the `DirectoryMap.` - -The final pieces of the `NginxConfig` message that we will need to provide are the [`Action`][action] and -[`ConfigDescriptor`][config-descriptor] messages. We will set the action to `APPLY` and fill out the `ConfigDescriptor` -according to the agent information received during registration. - -Note that we must send the entire nginx configuration to the agent on each configuration update. We can leverage the -checksum if we want to reduce the number of configuration updates sent to the agent. By storing the last checksum in the -control plane, we can avoid sending the configuration to the agent if it hasn’t changed. - -#### Static Configuration Files - -Static configuration files, such as njs modules, do not need to be sent to the agent on every configuration update. -Instead, we will mount these files to the agent’s container using a `ConfigMap .`This will also require us to specify -the path to the module in the agent’s configuration file and the `DirectoryMap` of the `NginxConfig` message to prevent -the agent from removing them from the filesystem. - -#### Handling User’s Secret Data - -The TLS certificates and keys specified in the [`GatewayTLSConfig`][gw-tls-config] field of `Listeners` are references -to Kubernetes Secrets. In the future, we will support other forms of authentication data, such as JWT tokens and -user/pass files. Users will also store this secret data in Kubernetes Secrets. - -Currently, NGF watches all Secrets, stores them in memory, and then selectively writes them to the filesystem. We only -write Secrets that are referenced by `Listeners` to the filesystem. As part of the separation work, we need to figure -out a way for the data plane to have access to these TLS certificates and keys. - -The challenge is that we do not want the data plane not to have access to the Kubernetes apiserver. This is one of the -driving reasons behind separating the control plane from the data plane. So, we need a way for the agent to retrieve the -TLS certificates and keys without having to make a request to the Kubernetes apiserver. - -**Option 1: Send the secret data as part of the `NginxConfig` message** - -The `NginxConfig` message has two `ZippedFile` fields, one for all nginx conf files and one for all the auxiliary files. -Auxiliary files are all files that are referenced by the nginx configuration but are not `.conf` files. For this option, -the control plane will continue to watch Secrets and store them in memory. When building the `NginxConfig` -message, we will add the content from all referenced Secrets to the auxiliary `ZippedFile` message as individual secret -data files. The `DirectoryMap` will also be updated to include the paths to these files. The agent will extract the -secret data files from the auxiliary `ZippedFile` and write them to the filesystem. - -This option, or a variation, is used in several other Gateway/Ingress implementations. For example, the Contour Gateway -sends TLS certificates and keys over gRPC to its Envoy data plane. This Envoy API is called -the [Secret Discovery Service][sds]. The `ingress-nginx` project is also working on separating their control and data -planes, and in their draft implementation, the secret data is stored in the JSON config payload that is sent to the data -plane over gRPC. Additionally, APISix sends secret data over HTTP to their data plane. - -Benefits: - -- The agent does not need access to the Kubernetes apiserver. -- The agent does not need to be modified to support this. - -Drawbacks: - -- The control plane sends secret data over gRPC on every configuration update. - -**Option 2: Run a sidecar container in the agent’s Pod that watches the Secrets and writes them to a shared volume** - -For this option, we will write a Kubernetes controller that watches Secrets and writes them to a shared volume. This -controller will run as a sidecar in the agent’s Pod. We only want to write Secrets that are referenced by the nginx -configuration, so we need to figure out a way to tell the sidecar which Secrets to write. There’s also an ordering issue -to consider. The secret data must be written to the shared volume before the configuration that references the secret -data is applied, otherwise, the configuration application will fail. One way to do this is to write a plugin for the -agent that ranges over the `SslCertificates` field in the `NginxConfig` -message and requests those Secrets over localhost from the sidecar. In this case, the control plane is responsible for -writing the `SslCertificates` field in the `NginxConfig` message. - -Benefits: - -- Secret data is not sent over gRPC on every configuration update. -- The agent container does not need access to the Kubernetes apiserver. - -Drawbacks: - -- The agent needs to be modified to support this. -- We need to write and maintain an additional controller. -- We need to produce an additional container image. -- The Pod will still need to have access to the Kubernetes apiserver. We may be able to limit access to the sidecar - container by disabling the automatic mounting of the ServiceAccount token and manually mounting the token to the - sidecar container only. However, the agent does need a ServiceAccount token to connect to the control plane. - -**Option 3: Run a DaemonSet that watches the Secrets and sends them to the agent over a Unix socket** - -This option is similar to option 2, but instead of running the controller as a sidecar container, we will run it as a -DaemonSet. The controller will watch Secrets and send them to the agent over an API served over a Unix domain socket. -The agent will be responsible for writing the secret data to the filesystem. - -This approach will require [`hostPath`][host-path] volumes on the agent and the Secret controller Pods, so they can -access the Unix domain socket on the host. It will also require a new plugin for the agent that can fetch the secret -data over the API and write it to the filesystem. - -Benefits: - -- Secret data is not sent over gRPC on every configuration update. -- The agent container does not need access to the Kubernetes apiserver. - -Drawbacks: - -- The agent needs to be modified to support this. -- We need to write and maintain an additional controller. -- We need to produce an additional container image. -- We need to use `hostPath` volumes which pose security risks and some Kubernetes distributions do not allow them. - -> My preference is option 1, as it is the simplest and requires the least changes. - -#### Sending the NginxConfig message - -![Download](./download-config.png) - -The control plane will send a `Download` command over the `CommandChannel` to the agent. Then, the control plane will -chunk out the `NginxConfig` message and send it over the `DownloadChannel .`The agent will receive the `Download` -command and then download the config chunks over the `DownloadChannel .`It will then assemble the chunks into a full -configuration and attempt to apply it. It will send the status of the configuration application over -the `CommandChannel` in a `NginxConfigResponse` message. - -[internal-config]: https://github.com/nginxinc/nginx-gateway-fabric/blob/main/internal/nginx/config/http/config.go - -[zip-file]: https://github.com/nginx/agent/blob/ea3a1b4df5d7ecf95bd3d9297d26e420f5e1dd57/sdk/proto/common.pb.go#L668 - -[zip-writer]: https://github.com/nginx/agent/blob/ea3a1b4df5d7ecf95bd3d9297d26e420f5e1dd57/sdk/zip/zipped_file.go#L36 - -[directory-map]: https://github.com/nginx/agent/blob/ea3a1b4df5d7ecf95bd3d9297d26e420f5e1dd57/sdk/proto/common.pb.go#L99 - -[action]: https://github.com/nginx/agent/blob/ea3a1b4df5d7ecf95bd3d9297d26e420f5e1dd57/sdk/proto/nginx.pb.go#L26 - -[config-descriptor]:https://github.com/nginx/agent/blob/ea3a1b4df5d7ecf95bd3d9297d26e420f5e1dd57/sdk/proto/config.pb.go#L81 - -[gw-tls-config]: https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.GatewayTLSConfig - -[sds]: https://www.envoyproxy.io/docs/envoy/latest/configuration/security/secret - -[host-path]: https://kubernetes.io/docs/concepts/storage/volumes/#hostpath - - -### Agent Configuration - -We can configure the agent through a YAML file, command-line flags, or environment variables on start-up. The agent -interprets configuration in the following priorities (from highest to lowest): - -1. Command-line flags -2. Environment variables -3. Config files - -We can either configure the agent with command-line flags or mount the config file as a volume to the agent’s container. -Some configuration options we care about are: - -- `server-host`: the DNS name of the control plane Kubernetes Service -- `server-grpcport`: the gRPC port that the control plane is listening on -- `tls-ca`: the path to the CA certificate file -- `tls-cert`: the path to the agent’s certificate file -- `tls-key`: the path to the agent’s private key file -- `tls-enable`: enable TLS for secure communication with the control plane -- `features`: list of enabled features -- `config-dirs`:the paths that you want to grant agent read/write access to - -For a list of configuration options, see [NGINX Agent CLI Flags & Usage][cli]. - -The control plane can send runtime configuration using the [`AgentConfig`][agent-config] messages. I’m not sure if we -have a use case for runtime configuration at the moment. - -[agent-config]: https://github.com/nginx/agent/blob/ea3a1b4df5d7ecf95bd3d9297d26e420f5e1dd57/sdk/proto/agent.pb.go#L320 - -[cli]: https://docs.nginx.com/nginx-management-suite/nginx-agent/install-nginx-agent/#nginx-agent-cli-flags-usage - ## Edge Cases The following edge cases should be considered and tested during implementation: @@ -723,68 +254,6 @@ The following edge cases should be considered and tested during implementation: In these cases, we expect the agent to be resilient. It should not crash or produce invalid config, and it should retry when possible. -## Data Plane Scaling - -Since the data plane is deployed in its own Pod, a user can horizontally scale the data plane independently of the -control plane. When a new agent Pod spins up, the agent will register itself with the control plane. The control plane -will have to keep track of all the agents. - -We will need to figure out how many agent instances can be supported by NGF’s control plane. As an example data point, -NGINX Controller can monitor and manage up to 100 N+ instances or up to 30 N+ instances with App Protect enabled. Since -our use case for the agent is much simpler than NGINX Controller, we may be able to support more instances of the agent. - -## Metrics - -The agent exposes a REST `/metrics` endpoint that returns metrics in Prometheus format. The agent also sends metrics to -the control plane. One feature we will need to add to the agent is the ability to enrich the metrics with additional -information. For example, upstream metrics need to be tied to the Kubernetes Pod name and namespace for them to be -useful. - ## Performance -The agent team has a suite of performance tests [here][performance] that they run. If we need benchmarks on larger -configurations, we can work with them to add bigger config files to the test suite. - -Config Push Benchmarks: - -```shell -cpu: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz -BenchmarkNginxConfig/../testdata/configs/bigger/1k.conf-2 1000000000 0.005241 ns/op 0 B/op 0 allocs/op -BenchmarkNginxConfig/../testdata/configs/bigger/2k.conf-2 1000000000 0.01087 ns/op 0 B/op 0 allocs/op -BenchmarkNginxConfig/../testdata/configs/bigger/3k.conf-2 1000000000 0.01492 ns/op 0 B/op 0 allocs/op -BenchmarkNginxConfig/../testdata/configs/bigger/10k.conf-2 1000000000 0.05086 ns/op 0 B/op 0 allocs/op -BenchmarkGetConfigFiles/GetConfigFiles-2 1000000000 0.0004904 ns/op 0 B/op 0 allocs/op -BenchmarkGetConfigFiles/GetConfigFiles#01-2 1000000000 0.0007442 ns/op 0 B/op 0 allocs/op -BenchmarkGetConfigFiles/GetConfigFiles#02-2 1000000000 0.0009297 ns/op 0 B/op 0 allocs/op -BenchmarkGetConfigFiles/GetConfigFiles#03-2 1000000000 0.002607 ns/op 0 B/op 0 allocs/op -``` - -Config Zip and Unzip Benchmarks: - -```shell -BenchmarkZipConfig/Zip_config../testdata/configs/bigger/1k.conf-2 1000000000 0.0001852 ns/op 0 B/op 0 allocs/op -BenchmarkZipConfig/Zip_config../testdata/configs/bigger/2k.conf-2 1000000000 0.0000663 ns/op 0 B/op 0 allocs/op -BenchmarkZipConfig/Zip_config../testdata/configs/bigger/3k.conf-2 1000000000 0.0000674 ns/op 0 B/op 0 allocs/op -BenchmarkZipConfig/Zip_config../testdata/configs/bigger/10k.conf-2 1000000000 0.0000672 ns/op 0 B/op 0 allocs/op -BenchmarkUnZipConfig/#00-2 1000000000 0.0000193 ns/op 0 B/op 0 allocs/op -BenchmarkUnZipConfig/#01-2 1000000000 0.0000132 ns/op 0 B/op 0 allocs/op -BenchmarkUnZipConfig/#02-2 1000000000 0.0000118 ns/op 0 B/op 0 allocs/op -BenchmarkUnZipConfig/#03-2 1000000000 0.0000140 ns/op 0 B/op 0 allocs/op -PASS -ok command-line-arguments 17.727s -``` - -### Performance goals - -- NGF can handle frequent configuration changes (1 change per second) -- NGF can handle large configurations: - - 5000 server blocks - - 64 TLS certs/keys - - 50 JWT keys - - 50 TLS cert/keys for egress - - 50 CA certs - - 50 basic auth files - - 50 OIDC secrets -- NGF can scale to X number of data plane pods (we need to figure out what X is) - -[performance]: https://github.com/nginx/agent/blob/main/test/performance/user_workflow_test.go +Our NFR tests will help ensure that performance of scaling and configuration have not degraded. We also may want to enhance these tests to include scaling nginx deployments. diff --git a/design/control-data-plane-separation/download-config.png b/design/control-data-plane-separation/download-config.png deleted file mode 100644 index b791b3100eb078c2448a6442f88a8b4cc98d64d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153052 zcmeFZWmr|)w>S(42m*qjZ~*BNDFF#-L>dI?-XJC2wdqzVrE>$)-CZIA(j5{TknZk! z=RU`C?(cu^{qlZzKfKTX@I0Hf_FQYuIcknE=9pvb4~nlPaqf}aLqbBrk(PR;goK0& zMM6UB#XtuwdQ6*nNJ!X%W@2KB(qdwiiuN`pW|qcCNKzkS)bDC2cM-z0BR`3}^Tm+D zY{Ent{*3=JL}gu{h8FoHCOe+WR`(Y_3!(?5=>^pHiqSrai+}I`qF)k%_Q+V5c`}BF zF>SN?py|As^Kg#S^u}RjCZWy+Nzr2Y{i~n3d`K_8dDuCY3e&JNCWu0@qkZ|(zD|8; z>my*#`0@>jxovx{XW9bkb9LNyrq1owZHc&l=fEP0&nwa7?w-XJ5f2Qc#*a++t9L}A zH{?y1LNfojH;CVcM5Xt%ecfJ%u07Ab5n@6>+UHkGhD7)1zGU)!pAEWP(}%VrRKXia z-|xSKiD3AU+$MYVE>(?MG10Bt7#{Pc3Xfgq}>{kM`-e$UPR7!vQPw%0=ewz_Y*fw z_Vjy6`+>xT?+r-HXthXMh`$ec7?idoQ!q&p+!bfqlC?hwS`D%4!z-nEcqZZ{VfkJ_ zSc5-~CWN9Nt>HTn$6}D%ncD}0Hiw1%J1ENzov?#IJNA39(=Q&k@6I)nsk_6KCKu_i zw)FGhsBc#r{r+gz5D=nZm3kozqwkLR7}NQI$i$xhRo7yxy6>~ED9Ap@w2DfitUplw z`fobC&S-ZrQ65vGulwL`JxpA9fLTsXRcI(ebw)rf^n;Xmm2Gp`A0_ve<4eqhGo}2v zHYMq2G;*=zJ1<4KJz{@IU`jT&`%5a)oCUkwf5;ljL;A7uc5XAcYVNsQE~fH3+BR}x z^S0RUB5#q{1O9kb*>P-3F@uHcUq$hdVTSDV4_GIU`!~avL<`6ZPt${K9TN3Fp9Mc@ z6UAM^Ra&AxzSNl~{4|1g+Sx?KZ`83~OJ3TRl1@RtgC*D?!Xo>i<~dU+MeQxO|1Lb} zTlkiUL|4WSFQWnq$^5C@`p{A-higx-rLyesr6jK5!wm0nm!GSx+((kKmW4f7R65Aey=7xH^$8%+pmC);u>$K)@#=P6JIuH#T z@`+(eq$A8UUE+-23;AkV8mM#0j?HkFfdMIVj_7>%ydMT*<99wEc<&24kmQN;A`70!Dk`!MaHcv0fX zA$_JKr1i~vc7a{n->#1ye}~ZTt>Qg3-{UkCOXTTR>r&juNMUJc$w)b^XttO-Xf+EP z>u3Y5NUm5yR2VN`=3?LsiHG7jd?&PfIrD&m77tVG%V%0zG-=6z_oxZ}%n~x6xunp_ zaq>jH#KS2WJ~>Dc*%Q=798r~gig*%~pQe?IZ0;K_KKq8ATB4)B8PVo*qcIGHLinnANBXC`q5Bq!@ZB z9};w9@M8vJ=FIDD&^6NGe{lRlH-xj(PWzVLj@#~q9YGmvQf7-L~OIOlE z>0h4?q}wyYGMh3NGp&`_)|(>BBR@w*DSc8Zk5n}KtduZJo@FRAE29uC^m(jn#Yn-P zHbD|5t|tu_wWf#Ao<<74dHy8!p^XePT~zrerPp~G$zNvD8`ad*xZj*8!g84v_0n{T z8zJX~2cFBgPZOVVKV^>TdWs+O=xKwBma27rW42Nrp^C6M2UlvnpO%=Qbd#iKiHvfU zx^cmQ%4&gHK6kEjL9-%FK|%rhSa$xS{Fpp4m4@8$lGkcAil%uEqpNx9`4n$jiiL7T zM{GymkNz0aC@zy+Ozu#YkIW7?EI8VE;^_>@E5H*QaV!QnB{-T5hjc#&2VMK*C%Bs6mwc}l0D<( zz~V_VRI_mINw(avh8Z-sUWK0XW66e~hR_j)5h}1aG5?GWjID}wDa=)CRvRhGFDlj` zD4H#*DCE(El#5#FSaMiCwPKz6Qe9k)GA&=NYlvYe(1FpZ5>aQJ^R}~+skES~!A7A5 zw*q1`_wM#>;m^sXvVu++@#R=+JJqy7aGRB+d?#jj$m1k3$cvx6b}3I&ibFHPu}FBl zbw+CA`m6grR{Q#Sbl$Npu*&L8=``2Y*L~F8)VZALol%;}pDAvzsFSQ?a}nMY-P=2j z-yQn3-#RkJId|x@3ej`c)6{csgoW2U9-wG3yb`k^un9lq-X*69QusKamP!sWgoN8v z?cNbq7KY8eZeftKFrjx~I}B{`Z<)L;z2%Q(uwX6VLc+qh{{(XldlWkqs}Q4+$Ou20 zT!r*G-WI+9e=S!49zIDq-xA-nPoMEb>0SC-`FQ?xK^3~^^p(^{qVe+ayoE0w zb6>p5!iPco z{>2&mitCEO3~pvI49j-UDUsjp+3S1Kvqn^k`p7RXfhs|pW6oIIWV@TB`}L3Ffj8aK zT`#CdADUoJJK#8&t~h_N6mS0mTZfHIC{W-9e{@-)a#KD?JgAzF@Cg1ca}c%U<*OiS z+&31I^({nkl_0;UVemktRIHGN_$S^XACHheAb zymtNO(He-92u)b7JU_R6;R=B>zt))1F;c8dTU$_Q6&@ojAPfm9VcXX#H)d>BDXnz) zS!+xh=gG1Vlg#GygoWw4F}dODY9L%V?pC0Z+Dd#?W+Em@{ee2Bx~}$i1N4+6j4RNB zych>ET^e3iY&4s6JTjijlP zY<8$&+G57s{A6ucQ!`{-#{BZ+HQe0{^0hgeuc6-R_~>HzTEE5UwgRH;)#OZhBr+{} z>hBcXi>peOO~z^_LSn*&{oLgF$#Xg`C$a?F%%YzK=X*9ME!*bo)_DT?o{r1x-DO`4 z#X7MfaH~IRT`FXzx=wNzZJ%^~k5ZpvsCI$f6LdOp99)kwjW-QXJrQP$LlA4`~m!QE@Qi~vm-6)*TKgW$AZOzlDl_jc3trf=TF3T z+EybD$US#hpmLr%C*Rkk`;>EXSUg2N<6!d8@k^bfD`oHfR1$Bsrc$Wg8e2;XA3FYB zDC8sLev{UX*6DFEPruC+dItJ#Q=i-Ax^9>I>}i8=tvBx>`@&+B0;f=vP@H$!&F~f1 z(Pm0|ayr!m$==V`_w*G9E1x6jZKL=kq9WnI2cASNoeFD;F1e@?qugTl?7lDmbx(xM zGP7mBPz~ustV{!`E?vrd!SEW1&wA!P_S~4!sf-!bH}|jONR0J$&fO?`VxQ+;w1ixC z5=v>Nv_@>VAUV8tcMh|hvIYBzkH#9(Ci3z~Pr*F~5-KtY5*oNe1|K10(tqwHke?vk z`Li7b2`ShN3HA3oufY}Z_X&Iueg3-Mi3~!z3%=olk82vr-*2Nr)9(CzkJbyGA&DxB zNlSyPvZ1}Pv9-fH8^=1{g&EL*X)C4afP_Ryhxi~%E79(O@h8nxG#oYL<@gM3tXK_< zY~C8Px>_M{Ktd95LG|D&tMe{^Mk&i$WV|Krhr@2cuxY%gYG1txVA`Y(q4?);w*e|HpML*V`&wD^nA zf3^Zj3*8f7`-f{n_smpsD*+=Po4ry{0aqYqh(DAS@bAfAS8$IkW*?ROvWAXZq{f`Y;4`@-CG4G4sLDirYCGz8M)ztBG&@>vN6eS|mcC>Rbz0>M{ z_a&tUC7$}Pn&$h0>j|6=**OZQDozvLFw+;Dg0o|)ExR*GFLqVbC$tMGKHf#ap!7ld zKmUnrplv)j%4`n8MnXo#6Zt>??V(~o&&2;*BjPIuwa8%9=a(GV|D%hDPg?NY{~Sq# zk_H7;keHFS?SB~!OhWd*H2+^RN$0mY-#{$Fg7y$1?Mcr10KgzxTE!BW`DCfy%din< zz^_k@J|2$Rwfb)k7=B>`9{Px*9FvYJA8#HK_kW3W)umc1%cOQ#WmZvU=vU^<8BoVs zAvn-bBCPjCLQ#GA3HKh0HkXPOAGcbcHh1B#gcpy%n0UJSQ%i2<7fa{nC%tGxqzh7j zmz3=&@`+rEMN`j}w)uGIkIFK`Q3VMfzC8%2+c<^Xl%_E_A_L}@ilwF8cjsf9?hWrB z!~*@&-haJv3mGjD?xmV%eA`Bkif5~wW{`1_-(%mW5;E>#V0yvhlh$dAM!(@>8hIbO zG*oJLXRK13W-Qn2j;aErA6dgk1w^4 z2o#mD7n14qm{YcIkiU%v!~9GTVxZbWDvj(!Q0EtXq{ zSJav3nV#)EV-OiM?APl{=7wBf&03b+?bG5`W0~S&pCo-921q_h^~|(GfXiYd5~
    bt9-7yUbG1udQ=#loz8L4OEZ?o57d2Q&toNjTa2g&w=DLjt%=guE zDKkw~%lB<&P7NkT_9N%qfopo7L9-J%-P3Q-bJI_$TJ_a=xd5R0F+Qk*_-8-v2EYrd z#w#8dZIGvkA|VH(ne=I-d6Dq<5WJf$OE8}am3{d5#z}t-Fbhwk@m*Qs!6vhfi9)b( zVs5x@5;}a@j0+6|nx99;8^_!%uv3r#kFD0#dQu1b{O3ylnu-El+0ESNjPcN48_%dS zAB$aYxv~c0Lxxh$8o~UP894$~P~gu+AA7Giq1e^Y@UD5xB&WQjOVmpYS0h^HUgx_94Ip-<)?ffeU!nY*D*=0 zpb-_>4~FrMo#N#n0q48P6%6P%nKB9#jM}FngNx?N#5^d@Sa?U1x)ji0pt%9DdnbSx zE8<{4v0ELqQ1PU~kVF;CWyB>P*vfzhdG?$dsCe%wMFt6wSysd_pl{J}rXPzcXfU3L zAt9@S{yIehixOY0fp|1*itPf*G$M&coRi=k{gIC>8bRgyIs^$N?*ZkSw0z#$6O`AO zct^ad*65(|0f3%5t=$7dRG~M`AcXa&0aef-YZ4b3 zRp$}qnqAdFC@FFS0C}qzw+TRh2nJZO0CVJ`qY4JizhFVZ$dvF&W8ljAl7YcX2k50z zM+}tJD?G}z4?cv4RH%aN{y|pZX$*xAFR6Td3PAs2HJBZZehmP5_Bh=IECfA3G!Fzd z$G{Dq0N}gtC>@jCSs;U=weOKsTHkFX;8cVy@)-qTwOnhIe<9^ zzQ70TxTDV_+48Dv&1a#|+w0F8aS$)H3X?t+d@0A>=H!iO7pJP53(^8rHBGK{YoqFG za>1#mnD$HiKWNzU`?#meJ2cw1lou(vjb0-RwlwB%gWb5Cqg!j6uI0Y1XMS~-Iy!CR zU96^M_Nd2Q?i5c7yvy)HTT24TcMX6uv>nN34{vna=pZc_hD4@lo;=jH;!>RTz8x_> zH4IKfF?gB$>~hpHfkl%5;l8~2+kLS)H-mUz8*{ntaqF=uyjZq$x>&z0ZS354vKh|& zuu;}YJ~)RrTSD$SPdxTTyyuK0CrbsG@XT^cM-pFzGcc+8HleCw6~>?YnPv`qtZcjH zHmUxwKUi#Adpl*N|5{A&_G)AU?rx*Zkm4B2b0=@gGk4qLFL0di!+U}dE*c;H-!58@ zg8L6D_xw%@?;o4So#82CtEsn{B+uXJyOnIho94VORTc7fU>0keCEm*0(=I=nRz4&F z{H@1R-q7ebfUyK0X;r@ae2Vrn$)-7RB2S)Y_T}+zOC1jk&rc&2Z4{d1R~gx_WEI-Z2rR#Llu<(Nk9J%I^D0lK&;KEi1XsQMy- z34QwOqm8K_?2Nf$csKyFC0A8lm)nLntJu4Ln(+?Xl2R4dxCRvuz8~yy;D`cnu~>!u zCBJF`sdAU0frNL(8Qo+U_o%@O^)*9s_NdYa8+OALuP>}r93L!vyOwX%bD519J)QI3 zOi4`Ze1*nqsspgIla{avPGhLoO$n!6%Oil$4<FlX$&8%}q{l$iCG^%7<@SN6BQXv`^;gf`mtMwd;JO!b1#l94N z_3LFe&nB}0QtR3eS_XkIu6{<+ouXjxI!q6IKgo9MmTP*ajXduGrRkI^Zcsa`&MD^QWaShz&-1@u3J>^xSs7iX%IJa z-g5R!d3J)QaUz9}CBqr+#>3^b@z7?P)TXhpBaF15-buT^LC$J0EycdGE2^aBM#*!p zwE=G0Y|}!P5vyGs3{!0mBHv7ec8mnMU7|w*>X?~&g<83d(MNuKrfF>UIP6ouINU5Z zUye~9N)^7$?cpU7^9vV-kzP#p~!&aqYqbz9|!Ax*l5(^fTtY0gt-ws7b3;N#qk`$snhz3w!7zj`^@6gwX~l$+1g zO6wO4*D!A9)4#szyX-vL?}WT@->&j^(H?0`x$&@Tf5h|Typ#8AZL;i&efRYl)Ppv~BM#h{+MRf!&Sy^drXokwbIe^6{-m3!9n)as&Q$N;{H!@X7_j0G2iv>M|jLY^1;t2 z$zw#kz(&ti!VmWH^V25!wLE-Bnb!n50h-O9BWS7sAz1H<+FB60WbC3e!z;-VXp-DNUqz1EkhS^}@{MNbmv01}s*c0A3d_`^u z;=2ju>{n+<^-zO11G%oey=lk=te`IG`$klSCTM>r0*I@7g`Zz%*NK7<@v5ivX(xrl zsC5I*JtvoP>)BY<0YRRZ0~p;9eh!3UOg%qb-PBz1Z%kNfy@`c--Cipc6jf^-1mR^Uu?fDLp}5z_2apx7?i%3(mQS~zaFGxC0=M{0dfy4^9?v)0@GMOo&!Yq? zXUm-w+r$ySIQWE%x|-@;7b%is+!L!u8mD&=(dhl2t#MDrY3Xz4WlpbW$g<5RT(le* zv>0aHSf_`Zn-2Z;A$aumdQS1yif$x$w|;YI#-eU9_R7C$vEtTZ~LKgrQzvD$n$~R_k|Kiq+m3sZcxl(Nw(Db+kUxNc!>&qS6(o zrmpK$;qp^4Ln3T6_YFnvVuUbr4dJKCYq&ck4<@MIn?er=)gdE{B~6hnmyn5$t-){_ z__Nf22kN<}Fq|o^OlIwL2+5xhCHKzIq4sWnG*PfK8#fVm*fOts!M4fSy;#3lthk!u zlGsvk+CJCCkXpnRwUOae9s;yM*w+t!4- z>btmbZ8E#>cChtK>6QYZ0;E&CF6`<~mk-y0SyC&~uGz1Cgf3WaCp~+!?Ad?4mT@|^ zHk4YR{Q3p|1iC^#6VNTXyKhZt))=#u0)95e@I0a`S#4$PYHt>d zObHjd5b<>R(9m>EH$%++i(stMjB~f@O7f;GI`H}mm+f-bJNIU<-0@_ftn>c1QSWgaR3oJdh?-?!%`??!WX zRjx0N4<+!fL?}7!04XyYPnQEdXbyJ0A-h()bKVY~>tj9eLkjOJJ+`z)$5=%xib$iC z0U0J1T^~i0nZml2dOiMDo3eX3<52#!+aD-H2P`qSPZ~Y>L?hVR2GT&FO3{B6sE`nZ z3Xz#{TkX3z$jh)NJ3m{rgA(=({~W60=@wvYL@li5(k*WB(tu+x+bw3VjH7;BtoY=} zbyinAvpt684^v8Q&7A$#?0qy;14UkWv{cj>%uF_zqfj$L6i_bor7&tuxI2)y98%}` zT3{bTu;Ow~FG}0GF6`#pfo97&i7@b?XJ(i)tZHUOXB`F>;X;9;3c75w1$J+_M>T<_ z>kn|U{_`?K0zB`P*s2VKv`sdjo4nn@r>nahBh+Tr?ODmo(VM^;u!@w#)0tbzPTCos z(A$kVZEmdH$PXD4Ct^vce>!*4c-S8YCW!NFy4bkn^2^jWy!*IR+j{CCjOV7aAt|nr zVx=w2gP{7LJH?^zk(ai_U{uC}G|;yUKCQ|i9t+}gogR!!tm>U)E>gubsU8QOVaG=H zHsc3Nm%A+^3*E!ArG5~jN91a?Hn!EWk5dDeJe)A0^m6g)hC$)N=$e(9epGI#cL;8; z=LhDS?HSlK=Z3tavFwam>@O|rmZ5O6KBGA*v2dlkj>nvhD z))}2*B@G4-uMTa@fR4sptr7*s)c?#I20X{Vf~eZgQ^0iU3Z5^~=#?ySC%VATZHt3L zh}gy}OrT4I<4lcPGS1j~aHlD=)%7a7{w}gzVN5Rv>Kfjb-DZZSntLs?`=_{vhkjVa zgD&fQL(^Qn!K8Ip1rDncb=g=%M)Yf4LwmG{fb7?KMidMU5VJFEen=zHSUeH0SzisY zs))4Mv|6CkZ)Kag7ZKHv?7TTHP@`!QC-sgxf>#Jjn*WVId0kko#|O2Ivg?zib+!u$ zR~rh4UPfpUEGsVm5jjEf8@);EIy}j#e5=%N#43TStfx~gM=j6R7?T{#SPfi@2Q#hD0`g|G)bdffyr-aD;(jQA8T3b-9<+#W=~G6N;IA`gS{!j4 z=n_4Ng7CG3s7+k6j$zm%d&py$L%;CxR0v28sF>GWFt!tonm?m(TN1DOX(HRk-I6eM z!l?6VTA039K~q-A`ZaaLx3txqRFjpWH^kY3C(^+DFlf#_DF8O<^~H+-r($r}W-w%O z&y+zOO5E^VYdTKvz)ML~p;TAXL9+Rb=@Py#>*JzgVL_EflyZ)_oCqeaUwH zc(dlsmg#i$wnM4`CiElb&#ExM0>Qsy+KqHMEII)%ENecpXt^u|nyybn^pvVUgs?SB zkU48SdtU!K#jYcAI@ioM#-nu5~o{jb9y&jVJ`DzU1eB z{Frf?$S?=~{l^n=Zge6;R-O#gIZqe00pZ)|3AH*!IU!QGeUB5o8ThU-(6#i{rqzSg zsh5wva{!mIdxCIVRJSVzL~qj5z44C%vN@`0L?hTQW_({6Z+~ z6n-glyjACD_x;(me(DxD^DrvO4#n_g2C?+XH|_2_b-EBg$9Kh?lH_iU^?To#97@^* z5}uoVfn_zySx-#u=p271z};;3KmDGj^aKRe0g~6ANKNq3&%09X2WJL$5X* z7ebI3$t9|wNxjGq&J);tssAyA$tPd$+}*Uuqd0`pRG1al{tAi|OyaW0zPOyj?QUYj zTI+fVy;*F&+&MB?=}msoHcfl$sQvC@`$r8o zuFzR>q-@1gx9|H4*?TA3xWZR{&19Dlrgij76GgD7{Kbu>FpPkT?+mBzPZfsDg;m<@ zgr^NN)p^K%`|uXGZbsI6Vz%0f-)XBXXT=#ah^aM6ZOQrUuZA!Bz;|0 z!)*d%_`pm1MC3c;{krySJd>YDt)ihS_(u=*zR-(Cc<3>EJoI|NNEI5uenZ0>BC`|k z^wU_@Oj z16G&QJL~p)ZQ^@`>#5#1WjBhY;XF^zgU`B|Yz_!BlK7lHUM$C@jzu#@9Uaf7jM?`T zeX4n1F<`r06<6SWWw`D%1=f8g-|0-qA)#ZeC&YEZZ1zO>`1yil)5+E1vZ)S*wci|4 zmoD?teWTXRrDay5o4fh*=WZ}vaPqS?9{ZWbP`=Bps8Lxq!Bs0Da}Vkg`T=sed~0d5_Erz|Hds4*`q=#zUM(bku=6C0 z3`{rnedqRLwdONT%bp)&i^Fi-#qp*)8xtnfsLQ91TU*xic#H^M#xbpJvLvOyEWFf| z;&M}v$h*&D6XgMa%>HYnap0}{7Q0l_K{pos(w^WGk)Eq|QKLOY3+AqAo##@IU;@`t zs$>TvEXlfFT#w&g?6WM}b+8NLEO4V^PRT_T$b)0pz?o!R;6LWnR!dVsa(rx`BCA<- ze=aVSV^%GD_5$}jSk+`x;Bt$={Px;qpJ!8i1G?;45#uf<{CT<})p_c6Ih(l0{a|}M zO*APtLI}!MQ*hj2ap%ZAq*1>uwTtGmq^yIF?-`VVsP;#7tq|5DIGS7sC1j~Dfm6F_zk>6Ax?|Qy$V4j6k>pK5D zzwo~Olv5|Ua3NxF^7+`$Xf|y=!~3>xEYYI4$UjTMyf=PmqmKvDcf5Li+A^Lh>%QvD z0Cut(mjOVtoBgBN7e>18MmmkJr!=%@p>iHXsMjSto%6mea+$53^Sn)5|5jynbt-!u z-C*1m95v4}wR|5#lFTXXW_+zrDR{YB*4y~{@$EFN8%;4T&q3eo7B8mNn>Pa~M*|ET zBWtybL4?*TPC>x?=Frgz3KIEFig*p~;gT%T1c_Nyvb{ zTT!)GlWeGU^Z8C=!ZUjjozy_1j{evDR+RHVBo+dj`S*|tTq4To;xTwwh$#8P;3`?Civ!u@|cbhL` zr>q;YCa8LhT>bDM>6jSpK~Z)LZr zPVu;CJKdhmS51OIV)>L&RNr;YfmdupR_+$FZ>-1QJuin99%`zH06~En5Cyf%84rEv z`y7~&NzEb`IB`1BNt4pRyc^T5L&ThRf*ZBPA@<|ij26b-91miKxJtk>Z~Kr3m;677 zbT4<@OHTup_sZ>WuX(|ySJ8eYfx$IBbguc9v-Xp{?TNy|Y}wUy$n|5v3x{jBjfclO z4K@>J_VQD8^L_?UoX)Y2WE)mdS;#>+4L>et)^;CaLyffKJ&juI7CSbGH*;J$N0*)U zsN&*4SWg0;C|giiZobE2Q(fa>w;|jSk(xomW4+a~l!FFL{YnUMS^he0Cle^ri30*( zuq;%$RWpa@$$z3PBlDwDx9+ueHb+VAFUUbL4x5`|ugwo03&YOvH(+CYVjVNp?Ah6< z`HDR?e1#dD>6cYLbHqaKL2x*=ju52sy;J<2?GKdKQgMPVIYGN^U1Is59yuZud-bdrYgtxTgx= z@qF8&x!X+?E`0OE^L$}|^y5*eQ=vG2XU8irC;l?d7_X?plk77W>a`DZqho}oz465> zeMtp;j%zBBl&-=4WG*wRvtF0}bf?QWsFr}2Wm)(~AhW~|P(u_4Mgwwg5E(D#i7M_` zq6$^*w*nL(Y2pkUc2e4Q@+Ly)0s>fdhXhkUNmaX^=wt=cN)I1Nx=TPNn%Pfr3C`5cW?Rn+%0{F)3`#|?4asSIGwhCcM9ZS{#nTUl|ID&D z>g(0{VUu?B?bV?|zUSr1ML$~4Mk<+V6ZCjvl=Uu+{!8F#1n{lCLh?nNDJ=)MQh@vr zM1ILF=|9r>Z!XBcxgh^0Ed86X^lw((zgczvX4U=wGWBzWen7e9=9whdI~7RP<}me^ z0U{L=gO}!+=dZ_HHvK4L%?<=(dD_aR9epAXM7~=4+GUvL*LgFmuuOBQ%4>6%H&h^! zFY$8AzkWjt8I6XRxS4J@nOlsNzG-@T>ND~II3nqD{&fz7`F4=Lqkg#BT|peD`8Gt} zu*kfEZ@Y{WW-y zj*0v~`O3!9B{Q4oq7ki$w|mEOT&5>4$1>f-#`5n_Jj9OmQ>O9pF-ED#?pJj%=~c!d z8C7mlwiL4wU1ONxC^T*+Cj#T--nF8kRjpd6p+M&4<3V=eKdl zt8^Ck{@^}#7acT|(Mxq%sXX6U-8FF+d^cWRWp%rdx4*Gq)kBsRGqD_*fo?UAE zp6i5&!M@V_rnaOMnY>Od*_bF<_0*gIiSJ4Ek`RE5Z$6e(?Vow%5XjV2nt|Y0g#yzq zRzto^009&@T|wRt=x+{!6Q3J&Q9Q>X0$#Jh|C%`up9(PuH>CjJQ8J-~5V8)Z&JyMeoAfJ( z9MPQ~tRYh8e+KpJ$dAXTb!OhAuEGlaVRL`;O#g#OLwK0#s&QRr%-mgY*q|=*%}lez z6ciJjI7h+|vx3qCC({Pz3Aw6weRM^tMr=^Tc9MB)?nwxzLJIFd5_+TlO(bpQMbmsJ zqN?GA?*&v47F$G;&&{`F29LzWSb5r-0DNhDWX*UtP^o|_6q8oQhJs-vlO|n(o*x5i z9VvD&+>IQU!(q+x2UQTIwpc{WY9YtQ*aCRDv0rV3Z_`cWQd0SKM^MHek9UE_?NXoPV8vB8%XQq-X|bOT7QU`10@hJHITYd;_oj1mAo7Up3on^;6aH6u}=*p3`7CPUo|@c z;FJ&(v)%gNVg9Af|EF@Jkgwpua_u zQa|qNuXgkOtpqpE{E5s2B^=Tft3@;vjPFdPZ+9>9y{=uSLmRmK$XR3t2~JBMZD+}Y z0JhbmjF#VJX!D5Thr<>Wqp4BqcX`gy=D8o?5iMv)D^%5^#D{WU4j4PU@U{1xwgu{3MY z!|AYKY6#>HWURc31?hzvT7T3B{!NK!PyoP4*XE3h527s6(LBu^n9yGpnOTmAJj4p? zBa+{UJO+^lyV^7C*-U`A^!2@d`9Wo5!Uhv1K$j?EW5wSfeliB|GpomyX)=R7ww;}y zE-3df-KnzGZ2EfW=rASdI0f5SwOAbawz8vcN4$#2Q$TIi`4N!~( zGtx18DXlYBW)K%q29v$?0_fAfssi!e05GT@2U98XfFAYds@w1UVEJzx zsAU1!nOU%BU;Zt4GJvGfkp}!I9{_^1-K3C3RKb1CVI@BB;;<$U6j4xx81p{JzU0;M z2(ktUc4m5^t%8Ijq!3+BM!?Uma*ijzLHtn;;EyfnnPf&(an$m*7C$&b<#OEt^p6Np zHSPVIEam_#mAHuh9CZLFT@}rmv~>EK$yC zp)B26Frx59`5>9-H#6|w1BFcRAiNDPHwpBZy~=lfE~+q=`{HvJ7%`SG$Qoh8{+v4t zkW{9tl+5?9I96DR9U{Hbj4=hgxL!!w^tUDt2KYZ_6%ykC2pTH2_&E?9sra-PCji~u zWu!^`@HdD?AWwjyXUy1=5YR_MCs}_21L{X2-~#C1*`Cj7@|!GDRRFB~9?8`aki`-e zIR(lzGZh^<*#TDH-48NaQZ*vW^IU47e=>!P(1V(0bc$33D6|(?bN}z?eR5;PHK;)bu1o3QHcOwGOP`uWu*hfK(Wj7h>Q04PrSE`yE<1V@ufm=^|!3an^>RZu(j7XhgO7_R~rpP_Dm97|=MmV7d> z+_=nN8|4AQWCf;c|CTEs5g-{bB@RnT$~WNVmD{34avFn>td>j;n3``>0uhQsjQQ07 z5GpuiU{D^696wqzKZ7dxNWaX29-zgcsfPZyKF|bW+-2`XoYW5JLrBCh$>j%2Lm$uu zRI)4E2qpdvpAx9pirP3BIzIx#Wo9~~3NkW2oRyOURAAR4`CFz?BY|?1?ub!)@B|>P zjQ%6G1`}$ThkE@CR0x6n82&cM z@>{M%(tuLG6`)nC;neXr=kfqqq@B*! zJfL7WB_)2KqaS{>rU%T4`hx}Mw@e|SbOG0gc2TAPBN`yic*m$`8U!;{{Ji3Ul4YkG zaQn>+B;WS{j0X$6*uM2Z9gX&tm`j4?7M4h$i8$&vGgu@1EmxF^Kr(Wov8NwM0ZK5u zfuE5utbG`Wj2%Ykq5k?Ii{FH?)c}NA_{Hh?mm9{!%Ok3Qrm>YM4WvRYHb(TfJ`jlo z@R#f8c9@g_`n0!WIs;3S+v-3Bnso~K41aUZR|SwIv);o|s0jedm`4V5^gVGN0>B*U z(Ac1V&@ckZCDJZS6}1~69*tbSY~@F;{Zv#~4qz1@x!U-Tl)eIBytjQEBr*$nY^Q(rRAV7JNE(Wq(I-(o%UNFQ1$@$HH%pdD-iVg^$WE@Vvt~TzAgkb zv#O=A|K^-XK7y^fLVT%u0MO`BQ2F<-`2|+`|Bd;jHPux7`?mo8HO2oIo8n}=cwvwx z$L^W0g($Eo)rTbtoV#2*c!ibmm`%w!y_?glvYL3qWj69{>$|=JiCi}6Q`PHfBpcjQm1a4hN@dL|;(+4C#1hD+1ywa~`VzTx!zhIN zNhSGbJ5RRb-fT~~DD^Op=yF+23CJ88M8$#y72EOKHk=xzBufsdqS|5ee5Xz4 zEa#r-X4?f6P$EOL@j3XmNa)tQG|E8;-Fj0yQ zgz+TjG+!OGm0uF>l-}Mjr*#UK8uyHw&v`~nAP>h@p;Ig8$f*nn zIHW>1@*1wh#ICny>KgcV&b;$MTJ?~DLX%?W!yQ`Wku^5SylLx(SJwwUxPdkk7tp== zw$T&*t)$7VFIo!yNnEH#+>_B=1joDAl2G(1m8x?>ex)Q58B3Ah?jBs?w}vsaiAiH{ zRw9v00P4H@o`ef0onl;?B&GA*wG`L8h9-M&+Dp*^P{*PkvP4mPkK)eVojhmwx&BzT z)g_7K>qK7BS*Horjae5+-o9QP4yX<(iqy~7Xjl%9IbF7|ju3jBUfgn{!({`H>>2*{ zcy-sIo3U+F%i>gBr(-!J{`|a?qGGJp4pN{Fag%F0U*XhaFzT3i%}=3W@%3GHP4Xk; z9$+At+3;q2K+(E_%v0I_wqNPKH_EkUHk_HjcfQo4I;VQ+MkS%^Prkkfb0;rCzdxlc zJ$++%al{BpwSo$G;I311DnkPq;d}~KGu}y37AVsC$L*`T1xzK6^J$;t9+l-+zqs0S zP|4}nWfF|OHUz<_T#4rEFGS;LNpy())MMX!Kv03hs*d^#i0+30j-gn@F?H7dLtu$B z)1(~P2~h0oJ}Mm_uiY^Paru23EWmjx z%l)IuDKIUEn+)y%YTr8ppK?l!pd7CB9h-1Ix1LccnzpH!NvV)Q6J&t7=D}@zcw{Aa z;^{WyJ)WdjA)7XofOZE+IPoDfdWrmIE zP`1Gk+M3Y{4QSqS>~4|Q%{sr+c9p67G_K&0Tvb=Leym?=lo71VYiB)@Gq<7=jFM&;2o2arigt%7!k~S z5G($`d64a7dKXntdBvs*o!9ua^h(D9@R0Pux6ST z^YZ<7J*?BRC1RtkSSui5FpDU%FZqT1U1yvlmR0@&IMd1T#p6ci*HbZz3^z9gJpQsK zUR|?Yd`=r*VuvcCzwZW9G`}%yzEP1+75aHe21@BtYD%kkD=o*eOD)79vhPkt6z1}6 zIy`o+!)4B%xKM8n8W4|VtU``-XVh}5Vp}DQx0JK5vb`?$wM%RcF4@9av?@=qp+_2; zPFtgWock$8VL1xIWO*?6otD<@(fZB%gPh;0M{Z9CpVu^r_o$f%K2qyP`%=f_>W74a z2sp%Q?P2>q1zQM}2Mw$_)N6Sm??&%Z5)>7@3?UIlUiNNr7&tUJ(AW*c1;T3b+r= zL_Rl!m^95e3~=d9&hymw^CjiC-RGB`YxW4L;SNV7X$@`^UiviRHwQ4_e|&_l+uBBp^jT4MTr_fe`V#k+qi()v zYk5bHjNf^vb@Ev6$>J{Q)z6yUdMN$y2k#&iS!*7)h5pVAiToZ`eyW-R9rKzYiRoO1 z)GLLq8);X^A5^BfV-p&4Sj+Zz@4}?QjKgTwSI_q6?!vpgr>Zs&%uAYXil?X2jOJ-t zXV3N*M;!*>C3-_xPbW@3+3nPCrswB0XDV#`;h4Y8>t-`;b*k8~?G@ni;%%L$8wIi{ zAayc};2jSKKco=IF-u`B|tNWmPSxatxqqZn=;#Lk7=toH4oN=A-h7o8VS~h zi;0&055#+3@kvxR~E7Ok;Alr8$EnWnl8Mb{m})!}v41T!pXZ3NewAO=SsS1>S%14QtT?y#X;9(&{1JaWV%uncOx*BSHAhS`2qWRM zob(~WrGy3D@sWg|_(gSHW?#UwRAOKjUE4jU2ds7X8YCig@{i9=ck@8L|C8PFB9Jay zfPBY!IBw=KsC2N_=J0q@EfH~~J#JZNKdDHTef5bns2A_^^dOQXSWe?uE)a)fV!daY2R_s`KSHb8j<%RI&l)0S zYta86_TB?1%B|@iR76Q4hyo&6a#oR?K_xTf93)GY3Bz zjSDY5^B76}KB_ZVCgH0Xp@znj<^3kwgWx339Q=dnJnP2Irw9GwSDkKGUvEHm3G_pF z(`gHf@z|QH#+n9`_?(ZtldY%SqPR;AyPtM0^^04pK!jkB52Q!qE9&LnZfRv7lJdIh zf9x8oSqNdO`w@1LWIS(Lecvor2WQvhK7Or?+~M?_@A*TV&?F*_S<`T`PI!Mhf>-Xl zIVuex?-#5!whM1>nSP@Te zoG0ID*c6yGNe~$N0(DXexTB+daqFP|MOGuxe*6j(uI(dqK2+=EuIyteqZuh(Xgt|ur-vxyDKj|po{F}=RVG` zidxb#i}{At&=tlEjm5xcj2CRvdq*rs_N}BxYJ98XTqSa${J{URa~=I?VVy^~VU%Yr;N3E}2 zoN5|C`k59jCx%7qOm;QZFa~;F%va|Zok6~bYk@K6G_`tdyY7c~^01no9yXDk=8Ul& zp7#g$vlosR2P?}Hv2?kG4PI)MBUTfu<>|@0CZ0E)!)iJ=g`iMIMoZHE$z%clHbZfZ&A+mXkWRo$sJ+qL>+UHOTt zY3AYWCfuiEcX~lGm;h*!<{K9*uRrQ_Ka?ALC#&roQxFCpOD%!yx+Sr zOMChTR%@fdN9)40JqtR>Pu~%6QKNI!V-?bLEceib+bv+P466t8bX}v74|7yrw0m@= zzzE-+#o1SCp)8f5T^E)xVQJ5=_rZzJD89VqDeF+-rwv84tV2fCnX4fwj#1j5h8o0H zUd4(EuyIIBG^H`Y5i%ymg_y(brR5RR&gqV?92IA7Q&tb3V?e_< zVonKGj;5WHpa;XP#z#|P-th-qV~QMEvyUsgJ)asbDDFgrDo5&gb0c)mNsA9G) zvD!(FV6pMXjW!yv>lm4QABI{*0`~XQN*f)YWYzqMtZ8Q;wIFR zZz)QdDrWVC3UyY`4o0t1bW@fVv}czj->}5haT&NPn7@P+>cSl3Y~ML!?Mp%EupmNb zU9h$J02_sYhO02?Vy9s&NN0wOUugX4mf{f{luLVFwAWSo-{#Q?fZiBpViO`@golso zqzgi|bUaSpxo);?4uaAd<>61pxqTv`&nRMFU=NmB(!weFJ=<=lE6LRlBuLV(ub!Xp zJ6~#rdy+ZyWkX4G*oG2pmh~#|m-Ym_liQ5vgi+rE9N@mQJ`)NCctd@gL~S40+hRaY z6KwkfnmnggQo^h@u6ysUvRcU-scgax;`K|{=ft9zA28#1F8?r&O-}s+Nr_muULV;! zpm`FT9j&UV(+kf&AIK+wwzM#0>ZaLbHuyK7W_lFpxZ-iZ!wru>Z~&_6Cf%I9B1R+W zt_nus)ykj)1M%L|qX$oovL@VvlJ-sV7H5K2C9{bh+l>#cn%-8kW6;dNsdis07PmQK zP1y^Lek&~+#8NR;4cDn#d|D6o^+~LNbHhb~Ww#C6veR|d+N@Ds*dvF&{Ut(jSCLRu zxl1bZKB^!u!k&tV)D@$8-9hb(Gakz^2G>&9`M%1jJ*bxNvv^jYA$Z2@nZ%$$C}q9E z8k^z=!~LWAnkev#e0>eLP=A7K&AUe)yT%$yaywqZMn|jGM>r?jbSgtsyFZq<@i`~55v+P9 z3X!SU-wICLFB>e}6@7|f#^~DCG;%b}6#Gmd##y~sI{%#1C@Fa*#Z7qD;F6cEYQJ*3 zq!X7Wh`bZ!hhL={+emU3{GAY-M^;ajt7SW)(j*L3VDO9FfW=zkXKyb>>rBj)Hp_HE zJ$LTyf%29Q3D8)w!_``l11PRo{vT+T45>!t^2EGp&hA2EVSnof1WUnEh-SLDXI2ZG z4;NqXaLA(IHVJj5nvLpHIFCYMc}c+?`{mx0T*7mmk~=c`d;uhO{*?qWJ6meNCvY4Y zA4A0-q3kFDp}wR z{=%|XwUf1Wu}3_^1aT}9s{N1(i+2{fPBXK_j`#E=G=#L)#rXy3&=PI$tN`$t=hdYO z*`1k-=b(*`pQh=wEMtvB>$dY)irwniFVyjp+tce+_2zkTtM2ECGAr^520##ssHID( zlWsTYy%b~Bh^!Tte5-IAHd%aibV-cJiwUr^k^D-HMclchTiCEy0+vXlD2$Ff$XigT0mY8 z$wy*=Qh(x5lTILmAx285HmBWG%C|jQ-7GqfDMLx_)560qr1Fobwv$|b z8bh7Bzv#N$H|?Xc>I{ydBWqL=xIj#w%Bf%(D{WC)9BeeShPzf?_S9#m1onDfx%pJa z?eEfQYdh@1=PvzvX~yP@O*ovH2F1D(EPNdgh0+_(C6JMf`Ncuy z&Z)*4!Lrq)ld>43R_dnd%M&a2y&~{JWJ!b6bCB~ zCNToErCA6y9L9!z@$U-55Ts5Gqj<6P9N!si4(Oh{Cjq>Vd9-8`IC)$&x2t{8N*R+7(bKGZL6nUqkJ z`)Yp+6Ap2`x)>cwa@NfrCDJUB`;h3C{-IJelJ+v^@}Lk4aVnXfq_AziN*=u4|6ztk*P@`jSPhbWrIs!<;(W|2+a33WV>^yxWUQ~& zP$RaWbBUESiu7~7^Q`NOTJ2n96t`Kl;4uRVVjDi3zV;gT-3VFczfWWG)(I&1m`3cwdVpDpG~H?iF#`z`_xBGkgiQni z-nR<+B*$2&TVpq@B#W<0dz`LVebud+Wbs&1pQ)?a)f3xItjTkQ2bI?S3V%WG-yx)VCo8%-&!KL+i=fa?HDfDu? zfjHl~Zl3>OzjqdY^2cPwg!#IgNUU}NVzW|jXbf^nS6Q|_Qy=SGJq!SU9m5oSHEk8E z+D$UvXXcwMB^QXnqs4st1#*hC{+5f%T@!5lQr3zpd(irdh8=1Y)7|{8F^g|ItlV*C zfW4UDSm(&2BRCm!GSls4)sk(8ih&H9JC2sZ0T?z2}`)Y}lx5Q-4tB>@f~8xlH6mNZD9XG{$@{;Lh;R?Q$XJe#17M z;=cxvq5TQ^Wpx*8U8=b z*nO%&6|lQgeOsI$`4a4Y=Sr&QO01Q8Liix;rO*_*&MT1&FJoWRy)g|+{D%YhaKra^0a zAg`yBdA&a7!0mH>lUC*EhzW=VhA9J*3l{42Bv1xV-b@gJN9Oc-R9uDeuXnaY{L%$XnFomr=?K6 zY6}&C`ekVvk`fCTU zQ#nJN#d5t#ER7WLkzEbjAH(+R$3qpK*+VH%7_Q}!P|KAz81tQ{U>jqPmD@AL8U z8nOv)Fj^J5svbzlS6oQ-#;K*if#B~E>0Ze-Dwx576b&yS|m)q1td5MT9YbndM!DiyS8QD~gfU;ltm zVCA~KKjyxlgrIRk%Q1GKr}c`t3gd8U3Axaowm*6Us~&B=T-Nlg7-dgEW(!GotO`J0 zb7_-lowk1WbP%dKY+Oz@nI53)wstIyARUa!cNCg={#64&q^8onU%P?Di#x!9f!1w( z${TS=5>+rkj6Mx3g++?{)x`q=i=Q;0r{iWH00Pfwc zILu&8ij+6)ORcZxvt~&rJd1u26(j&q=R7uXH=S9P4YGrv+p%J(EGiZ$ii9$o@T;@ok!o9NhD4^W#AvZ9>bdWF)gj30-Huem z$sBb-3n-hw_$k^;U||(Pg*?P(PGU*2>pIgHS&JMWi^dRr0gz6`Y zPK~6;*4Z+H1~c#c!e1&P*>*pF_B*DdTrM$#q)frcW~IhVaQLg%MI6KGE{o>C6}trE zyHmhHSIjLKVdD~`J~EL?mUv51sTa#f-M-mN$gDnhQws!NeV$X!hfVLAgmxB4CcJO% zA5_!jGAMbfm74VIpnNa^wYzsnV-&0=9Ck)xG28^rEKU*GP=N$9^V72I9IM(pIey7r z15#)&FQ=QEDvb9%@QT`|2SI?G2VkE~zsGh*Ppc=@t>)#5pR{jZ-L8MTpEu4v6xH6C z`=$G1?nwSb_VVfBKAwzUc0EE|G)pp)HtQBPaaM&DFZ3dCAjJS?M2r%TB-=T-5+x#8 zR)-_Bg{G(it|WDDK(mb2Z=cu~)lof&uIe8Oo-+&Nu2@{4+0&ID&9vrlj7$lan-6my zi5F;FBgQkg8LFF^s^|+gsGO-Hq^p|FMM$Ir%utb3JqkYX%j4NJRFct1U$x`K-}2V; zx3RiLN*|E9&zWrRr8Vh0ZH%eRT0_M+#CjLQJB{B9fS!#4j>mUb7OnMlEXgbWAd$%f zMr!0ZAF0;|}sa zVmqG;QlkB${257uOSKM+p8e_0<0EX%c*WWL^F$&n;DYBq4fh^h>h|z7wkBViVy+U%7;9A8GSkr zpDsF-+g@2A^1o>L3;L7(!C=dx1k2FJ7aLs}^t8-;*zqLMCzbBj^N+vTtJqj=EF()5 zQzdhIfQ$jHBxT!(m@?6^js#7uh_mF9YS(_m2FyT;*oka7+&*)PGMZXJ&q&gXAR+Ahlq5t^epgc+$_GUH(I^{3ZAQ$H|pOimw(Y z*|M>@CUUF|sQ~SiT%76;BDr=s4)}is_ev?C8@E=x??V zJy0wKa>~(sr|qE5f6~?nNmeRR5P$hsrOhgC77Kh=T%L1>626;#{7zT}#8o*Rq!&iW z9>&~HiIK)2iz@vOO7Jx=2XtQy=y`b5ZFh92`y-D>@}Sj!a*mz25RnMPfiI*BbPtAb zuC>wsMW!T00o_V21Il!N($Lvdubk05S4?ry*uQwH z*UxVHlhnCdCRxtp`AtBBl7{b0Ze?qhZ8rxej~SVvd;J6x^Ft?ZQmW5TM-na{ee*nZ z#ZQe)$$7@jD!R94_0I_aD`1VWug+DPLn1)H$7xKw-IAOP9MSLxYrnV>)Qa#iV1Gff zpp9>)*Zw&TZ-p_gW4MO!?`aQ%>F8}|!QJsmW)t_U`^<&CmJ9um zpxMV>^B3(O-3T)0jTI8?C|~b(sNjYpD084=FE#>yrxMeGn+3?jN`uWEET{siF@AC? z3SV)cc9~H>;u1iA#~vTL-vbXuv7K_1t{F64;uxMwx}ywJ)fikSb)J4-Eb+__JQlJM zLxmOK?B_p1WKMud941(C|MS~(CBgt^7le%{_#E6$78FqJF{FmKFU;LUc?V!t>ZXUD z>7eo=VZfjUh#OYXyvWmKTC9Qe{GAx6nDW5pQ|s}M5WSsC~3;X zg4I{E_QK{b?V3gbU1D6XhYC4(lj(Vf3nbGrc& zeGAfH3I4a*NRN;3#dJBR#6uk8oj*^_0TZOM6yovJI~ndo5|0g@#&RfJ;g_m|5+Ghw zOrPZUC}f_2r~(bB|Auy57lOaLzjG``4d12tca&ZG&1JYb;OIp;Cm^zPXyNY|TW!&Y zB*7%fxexQjrDj4$65EkYs`=JM3xBV~2rz0IGnX4))WDcT41FlJ@=kv6#EdZ-{5_kQ zIO#94e=PV|yFk#83zS9};x|$9}OCSxZQ4`LUiv>oA$fU>md?r&`PLFzKdA2 z-DyH5r>TU45$Knc9(3K-sa&2JwFKaF#8RP&5x4y1^a_r|y%P4PhC{>^qtZ`7OArnoOI z)^jberz5uzQ>*c-)p|m`6Ug)ThPPMaGaB4PTaJHhT4M^>igkNML|yYsrslYv`2vMn z_|I1wx;z}?h5w4=R~3}|Q0*VYwLJ`o<`5dUJ=*J-0yAaArm}xs9QF=F9^T&EvXV|0 z0eW{w~4#amIxr#5@--`C;=A_qzTZI=_T?E!ccq6NarTJUJt z9B5LC;87!n9w!p~HHK>#zK?{{=jt6 zg+bv^8r?nOl+a`e@I!c#v){(9?Yx;+EoRtyKO$pXpG6KXa6A#Qiz7 zV1lP8!JkMAHlk4nz&kop;dZ-tQAmlp_rAn^@Tl(|_1a4QB?$=%DR8GxsI8L{6o%kY zjDq#1w!ZY;;~FBNmqf}&@%tOi-(#T0eGg_$-pC~xRhtIfM5V5HJy8_0pwjn#FE<8CLJ+)Ny&?wg~U{ zDKYJ3i=dGvU{G8{X-{bkyD!*Sb)QjLxy1NP?aR-m0BpIrq3nBm-}2g@T8vm!+&Y@Q z(#uwBj8C-h;i=faB$rDOq^WhXilqv`>G2MUXE23D*6X zJdM&*>kB|nHvV?*Y}^sm-(b&OwO$agl=E`5y?Vu@G-)MZ3~#L3KB4aM)@+I6`YpXy zd?wXM(5nv+Z)*FTL(r%})86|~eq&ZSPDilTb^}=$5H8K~iC-+h99H?qkk-n~RnE$F zbl?Xq0hA>wiLcV16x$mzSt0P*q&s)$QJp-Wp)(T?1#dWN)Gm>?`Uqi=z#=|=BeFz-B( zwoTb0$Yrr1@%LphMuXycbrFl_RMCzw>+RfI(&KxW;k22XF}ZmoWUWXpZ1L1$z=4F*_6k_PB< zRHew9-wjgwyGlBFU3;EvHObjgwL(5P&n_2Gbugkkkmu^gvt73#XJdSJpK|UwTtt0t z&p5~^5%cWi;%JuS9ymzEcc?1QOPE;{K2m08xX5w*48`mH0$*xd+Dny7$NX=%^aU1gUIALJa;V z9v26u<0Z!Vd79|C;aWe`sXdIe_&7yI{!;>2H4=S$ zdOU7m5_&ZVBw^3f=(4-NxBu`08pbWWj7vnj1A6;+;7B({^`{4*BBJ@61y^TasoJ`w zX_)OD`n4hQY|4wL8>L4XGVwtfa?`Y{swyRpUvU`3De%(J$oTD7>KL}`*eT~uI%Dde z*U;b16!nvK+#&}h~35MW3{ImF*nfl0IV z?M{=JV+QX`HK-5n`Xztn#GxZZ1KRWRTD+K1+%-nB`pZ*^lf%iAiU#?9bmQXO(Jb;J zcm=0#08aC#H`T6vCbKg-dxMbmXs*6HJhnfp4qMuynF^zr)Fh>17z;a1(;aFZ&$KQK z-L4w+96#xzOKX%Esbo}0XP0cfSQ;y)DsdfrSbr>J`!ma^H(4p#osF4LCF>E5R8)UT zKcVk6>eK1t1xB7Xb868z%ViIlQleO4#Ziq}c5ew4AGMSTvWGlr)v2v$57|s`kaSc2 zBr3T(RlT3B+>k}fy>uySUjKfB32uPT=(KECubABM(uN*{Xy?p?59rTY1Ya&0Evp2JaJWuvgQA`6%Z&R5Sh%XjdH=9~CB5&QsUnb*j;0>zH+Q^9Dw~89MH) zo%;2}u9ej1v*y8R1j}S2;^cX-8LjUNA-wyI`#nJ=&fDX5!^<^}vt_H@12v9>(V1U- zS=b`(3Vx9x+O!D4RPl>`{0w%=%>zZGZr2^8+AV$TNcgfXBr2`CPBZ%iHDH)gd%Jwp zpQ+z6blV+@_7Z*q=+I01y(Zab0XL@xGJDw-OI4|?O5Xv4a-k?V@g`7+Ab*5!a{X^AnrSjd7*?Sdj@=v6}54Iui zTr*%S!{!7tkWLYU{hofE*e?g-#ou=d?w6=VZ&I#yC#9~r=(3&4RMLkFzM7L*5>V`? zeH6DIzA>*+;xUc0_cI7$4*4jtRsHilfmCWW#7!m@_PC!W!XvT5b>~}VhN@NI?G;)h znJz+C3yPleo$pP7nK+On-TD+|GQK64)6=E^75KX{F_%b$D)Zd*!nVqd?U>M&dYbJ9 zz9$1)?wi4VH@=}{49y=HPMZ(CPK{s^dIWauisTUZ7=NKs8d{Q`(|GiN4h9VOTaied zZ|s2YE(Ff6d}@Sx1;(^IP;IZraV6R?V%B?V`PMnIP$bT0qMW#Mvl1r^Wz8*+1@(ti>Mb)Abl7zA?u|?r(gGf8XCi?q2t` z62Vn3d!3x$x||~eJ-Z`7qgKFQu^;a7Rv6?+8HqUTiuNdY?yp+aOh>C#MD*y84N z;z7d@m5^D}@~`26Pj=_rl)cw?7p`)vZbIZqFdsD+_avPiKlcwtCx38*jE0nV%3@z$ zWGiW$TvmaMl`Y`o%d!2J@bPksTo1aiuE`p3To09<@%I?PLdNxSLeH-7ZEEu?pQ%*)$eF?+=%_o9x{GXKa2BI%k$#gKbPh*&VMu)FroydUh8pXo)A&I8*Q7 zq))9F?-SY1kDRXN5#SFQ(8~>S0Mo85))`{>{F>(na=vB#@nWj{kKwBXp5?7glZzrx zR;Z?_$a_IMYnEI!Pr_A}3a6u~{W$IZRKJH;Q*ZlNw7x&^c#HO9_`_tDpJPQ;s9BCU z>|$6u{@E&nIOHZ9I5@_CRa>fUAyQ$U3X**O^i7{cd0646dgxqyxxvXJ*R5*GoSzd! z;`ZzxC=o;Xqt8e3bPce+e|KC|1$CxT+U}AcuCYC`_pE}wOd*`%zd#G#aeea5-mIlI z(rBh`4j(SsebYd{@$$QaAaz-L7PtMopSCGK{ZD?BuytY2_JY$zTGTjjRuU}_qF8F3 zHVXxc;Qb4}B$H5o;D+?Zy}u{Rg7ggyAi!gIazAtRA+Uu7X~wNjDBhlvWEng&U!>4# zz^6_i<$hD9oUf|IQs=W`j={yBLj@~+-LNO;%AcwcNy{a@Pr%qKUaZLIwNG?n`&}xY z*D+Ym#lp(HohG)u{z$MOlJ#r_{$w*Jw~m)1gz zdpqZQoe*BMJE9JG#QcUePV1TXI9lCglw!zq1@6(FtHqM`#ukP_8wwQD3{=_^GT$bi zZu(lPH;M+xowy}{qnvaGPEUI@pJC9s4=M44eXNA1-n)C1ftrX-tV(Y}ywYM+Y-PB;aQVHtCORJ$!P8r5nNCR-M)5U*FEN5f zu-n5a5m8mC!3Pe_t>OGO3LLkZ?(c@6cH$VpbQgww7#$?kbqchN&C=qc6?GYTqUaru z+pgMUOMwp1I0QE-k)efl1d>W@cYIlshXE#7!4M9=+XorHu+|r=ku&iL_%TPB z?kH+_#n19Zw(5dXB?wj zR(~~<3-~ckcd2EC(YT5K>IDEd%RALf^U9_SG`f!shuf1GVuR=P#}xje zi{FlBYbfjXH!E8w8`O?<-c|*g3Z&wxDZz{J7Hp+}9goB_Srl^#MaB$c!AL3oFspe9 z#A)$*-1av5gI+&<#>QJxstMRZS}y8QgFM_Naf5d^Kg9N-tNd8+OM^AI$yd0gN^NOp z?-^g$6>SA)|DklNpZpBMfo&EaHyn)2n1{n6d*Ti9Yy4hzE3-!3shqOtq(tri>7x;8 zJd!u+eld6L5lRkE8l==}wm|_)8x3cRBU5?&a9}{sZ{|Lm0%KMmkf5p!0XphjoU{tL zSo=CDAE!ARb(iBp%dnI~8zBX{FtdoL+2V5y8h3DZ#&zcWN(Qy_+NVCBrGP~Eq57>rr- z(4sZ929fV1+^)LlK|;(Iiddv0tdycoiYl|gsXp5+X<}$Y`%43LVM^#UBgM0&D}*}U zB>EpNb>(&f&1UDxE_83*gNnj%DC~MJU*~kiJ!$7uTH(GgG=rit&K5jrruJ+6O(DUrw(iMOi?ABqN zT$=%?Nh_68I@pNCY(EwtBhH7KP9!%_TGCCAi!LX8zB$CRn_3g?^*zuFA+Q&WfMxkT z+p9-xT`0>JVlxlN8lpVf#!xjU*G=-n^s+7U~Y6jFXVttd} z80x;l(DH68vKV!WXLtM99n{ptJ~q=udcl2H@bSp|rCH2o!FAO}4|^3%_f!&vjIk8r ziz1e?J193$iy31_FmX4VFa*%eFqiv%`mzLJDZ45SB|TIThMB#!)|*d>1nW{{r+i;u z?`5-i=YUR`5LLu!*z%mlfjP*C(V!}goK6&{se_=)Qw=Nm_>R6$KwrL;yZK06QsU*N za1NT;MXwT)-OgHj=I-JNtZ%MzHjRMWrFgfM z^cP%ck?@uNYSXoEowsP3(JFnDyAwulxtxJ$B>r#_oxmJl4lYs<&ym}R1BcL&lI++*^yeGF zMTZQZ+h61NFx>m)hEn|lW&v&}wI*!gL-<}d*S?j&BXQ|gxuctluZlS^_bB7Iu7A{l z9bnsOt)Piv3Vhr9Lh8*yq`?Rn+@v+2i zau3Ytixl%?xg|Yhr$tdPly`h@nl^hd1; z{7AftuB%z{3mJG$vSNmRVk>taOTH>TX0I0Mb8K+Gxil}H92-HyX7>!Qsi@&BwNROEl`G9Fv=rUVW|w^$5)44{qCkIULehp^Mo(zJNZ4vIV`ELv`>*10f5=ed>1om=+A!?;7q&;`Up zNTMVenXQ&OY`R#WdewHaD!UsDS}!=Yd>)ed(+M-<1e49>&3Fd9CaTp z((@*?O_8C*Y>0+pOrOHj88{Ojy>lpCwp!8~?Rx@oB=Ls*HDAg#jV^W%*Q*b( zjSR?dkW6`;39C4+-Z}vV)U00@7!Vtmjsd|BdDJnUp}FsS_dRjhd0l-Rv38v&ao`?w zZWmvw&$~}4(|Vz3-W&HOSDs!Pf5LmlGzOMT2(w@E4YZ@SKGUZj}SEx>k>{mE31;XDN5ZfSaJ&T)d z1;ej^RYvk3dhCySxH-*I*ubl-T6if}6joskjvx-i%r;{fFS+Q1PB;fkDc)psr-12gGk~ha&4Fryk z^sn-K$z0?p$)h|C)*f;^Y!f)*H`(Xh%jp{|8}BaJZB@B0y1}z{Aw~lPwSLyj?0JJk z04fpIh(2SediEJZ;KE_t)gDr8km1m@g%@LPxBT#kdJY2_g6PxAJw5of8OZ(vo^B1h zM$nmk4yR(`Gcx+z3LQvu>c=35SuM55#_!linGWY2 z=|zIGe!de-1W3-fuHc%zSt{o&M%#BgN+K-ZgyDR;v(=$`eG!+u#h=X6kO zg!c5o3_Gqi1^RMFbgMJz5wp&zpG-3UfEo)H#`kr-ewlh3&-H=D!7m?*yLSs}$zpOJ z>X>$(-IGcM(hMff>rnT@9A5N7yQEtoWY|i;Y3^^24CpK|);sB$zvh|&o!Za3Q!3q( zqeVaL0iP4R(9x^3&i`Z? zfr#W1?93^fglYDc)oAU}m1MW38UtG*O%8Mj7a-_^6;3Dngo>0Jl}v?iBkU0H>nay3 zu+4dWi_d~nZ^XE&f!p66PL-LbUCa#xG*!LVF_higKC0JSo>qkz;2o%Qb*nGBbUf;1 z#MnP8(f@9zMeHujJuH^<-1X)Xw$D!1&HY)GLx)H1sDx0vY`=?|@=k;(*`tsvf9e4> zoncKZnbr`}f#Jlt;)O;HKQeT7txD^#T{eEQxdY>RoZgU#b$}V_Uf6&-6hZ&T{e@TZ z)jLgld+pvtcTz@^wOXUpgdAK_4qr~zy9HR)`C}JG-omCZH;!e|8eyVbmyMQ(#^z%S z3de1X+Qi}cNxc?Xk5)^L1~BPvxlhuqJ0uLzjCv;f?=fPUr#|eh;X>zB%8w@@WtlNH z1~ES7!)ub=A3t15p2Osqm`Ux?=I$Q?sfSjo!_WWlLJd)N9LCCQ%Y(_Ue0#;{K2oyQmsRW`TqNks zIFc#k&P1{X1Q;!`nj+d}<3-^j++Cx3-O=yvr8vCr93_kH=5?r2qv&atg16__y{Fi5 ze{50WemuY4P@G7n?ngF-RhYg_;K>MLYVu5-@d>I>a14=i^oyY7AJ5_KpPu8oq=Qqz zr#V9+aoTcGA)nYi&nesK5fr!YB|EU2%0)l~<5w5^9VP)xy`K2uhji3HO1PoLR^sYj z$lfAm1!efbH5zN3ua65}xwx=uAe|=F&NsRYa=&8Se>hEJfVS3uZ2KKE{_`boBS_PQ zh|{YTL^!NYsNt@m6nahPJnW5PNH;#&dvW*ZW@rHD86fKCuAMD#i$d7=Rwx;>_Ynh5 z_^2K^gV1@=V*}kwY(D2LDv7GI6Vp->O!996PzuDW$#lCXvhjP`L-zZG&_24l`UVX| zv7s%NzU2-kI401q3?K@A_X*y`i{m_hik=LP3EU1d-g^tn|ds&Y1~B zac=nw+_iQ*tyCh~yHj##>`Ru&SL7Mm)9CB28Ez?oJ5#;yBNbRL<%eZ*H0@2j#T1pw zXZush4&)|gT}kBO#q)D$g-8bzU)naA0T~gC-#+ZPKtfWGA8K;3IkjCUF`%wkU=GI3PKw zOl5{-#J4_;QIL|svRm_m<*=`OHD;NUw_{!WOe06jzT22G_mGYXT zx`tyiduDW^5NI#fc16C{Xs0;2TsVM|WI_!uAn7mjmp;;RtsZ$yR*)}sulD9nNiw<1 z2KTXp)Ib7k=XRSRzGMiQg9$z~Osvy<{q@t43KxN7-t^b54!NanJW_B#QovtY%{ts}DaoP*cPLjyj9e15^f< zo6JRYRMjf&BC&nLsLZv|y`fX*em*_Dt0Z%>K1a7D!yzO>UtXk=@YtJQf2`LaYU>H< zvfom}Xe(YC?TuHnTkf*D$49|QsxW((n&V2=brz)Jr7%MZ0{9r~v!~ju@^NMV9|Aja& z{{wOU7pdVZDVVaU`3_x43go+i>ru?H3<&BV8t%~N$doSq9!c!K_!6IxybP%~bstcl zg5?kS4<+V5l$igQC^79~b0cz&2qT~vRKWBglQozjI+K4;Mk0l|!CGzVm;7V__(yFI z5~W0e_aTYybVuqp$4V46xX+NR-SJz1XsAfH07i2(Nc30z4Doo3DbQcKkc1?GK+MO& zAtJxO!i{n%8XEu3!W+kr%qPwbFOUgDm$pAhFJ6I%G;QTm@&P|FR792H{g*~i*rEcH zZSwL7p*zUtmQ6(pYXj%t9n%&ZExqra0N+gfL!f`3{Yg*m|0esqqY6vzGc+M!|249X ze{*Dj24Uh)M1Z_a)W3O~Ic4}0_79pnX@G}n2SKp~G$gu$s&w*TQ3ztg#T1#bi+t#` zsPrd&>>37jh;SL0fMUa6BWwLPM@EDX?dqcXH8P|B(~$w&e^q+4)J5(YXw=PUXI(Mm z!Yz37FA~@_jApN|z`y?C5JkdcCz-2SDb=Y;dh;jb>&rB{YZ#C)VSXUncW6rwf<@Bk zZsCsmWn!rNCASZ@Kulb}JN6ae${IU@dqne3Mn+Vbh|PN>XZq83IWqLr_D zW4k(0o-&j(4Y$<05A7+LyNl6`WYuvu^|Z+YWJxsi=nKmA+`j$Y%aX>9`X^;Arz|ZaZjYwy;@~_L_;aR{hO0tj0=5)=h8)WNriB) zHS*#~e{YtUOH$g)bH;N^+_*zI0*^2%NCdLsjj9M1FTnG||BmNB`AZDKw3K0Y(^|v7 z8oGer3XVT6N<7&Q<{{pPWy;+EB$Y%)KE%^sU<=vb!4|{6B;X|@O7Sp_j?t@i2XPOY zqnvF}&}`JG|NYjN#y-M#PW~W;I~-9B+U;JMSQ1~Z0IHbpbaVJjvbDyEan}1VN9;db9d$saE@*@-T z{x?lUo@i(;N~r7e|G~(F;qQXJ8j=C2{o6|d3p6|^FdyRexR=^@PiTbX9V#=hLF%ul z_bL67jVkV}5a1xEL?qtue_6-3k!Fih#_0u0IPz;exxN)(!sX9N_%V={6@}^z=5GT= zJ?9IS5?$F?45|Ur3+R%snY`;q=6q6evY5?J1w~0+q?do?D~`#2q(V#r~3>wl8z~PJACFDP-yYMQKclHm&%oo zQ$l~6UL+nM$rHKfRfmK}xi+Z(VX&{`y$JwUI#-pb;YomZ$qv_O zI*mah#Q>v+N&(mm>i7JuG=CAWDZJ>BHUf{thRQ1#85unBu&qrHg-prYr&1$b3rXzn zX5qipUYH&j8PV{0SG+gC@gh^(Z7HzF6eu=qPp*?hs_SNp#_s_e8Gvh_7Vng2@PXn$o;&^TO-32X{*KP?G?hkvDPoL!B>NXwVQYf?D!XP<@9*7Y z&J0|^ZzU)UTTpMXm`&; z+oeGr_4V?iv7-}kqnOk@))U0jL|-g@6NE^g?5R*o$1peSuaYJTUL=t4IjLW^Tv4`I zc0O7$?k$+rp|gKCz9Tu)pW=DRARbB*#ctXIkH5TZwXu_ct=N(gH>}*mOlBJ|T?x~! z-jfO;sYaZ(RPQRVEP>kO)SQHx#ie6NoH^b>op zH8k78^Q^$M{o@O}m7dJy*g@x>t2vu;bODcz!1KdNh70}&bXpajCtUlm7Lrg>0cy|l z-2h(GmX1d&iS{9Y`RaJ-EJ@5|GiECrfMldY3q#vhXFb?65rUibU6~D38cRpBklZIY zoq93Ov+WNmLVVoY(2pplZwfdrcaiVy_i7EDIY{g+cC%$j=}@mEC$PNMvd7zhzj9{U zvLx67l%e?neJzz&8`7~3R%+5xfJ;_kaC@PG4LMT%hVYn1+3SL?#FLU&BKX!!S``sx zR&Gd=y{kW=$9&6t`6Au5v=u+wt8i@Mm@`@|kvDUx;URv>fPvAuZ%7^unqRb!sxjZO zZiKyk*09`C6m+H@yzm2@i(QALFQ2Yg-<56jxG)*W>OVkosl;btf!7i^3u3rtN$3(d z^Y8Gf?k{g|ztiFp?j&AU9;o`wnlc&+yq3m+h%+c0`r(&&~AxrZZ>-qlmMpK(c z4&CKmPw{tBH#4r@&g;*1`=A|m9PdKfCd#EPryVz38j}Hq*zn+l*k*%ubheK}=MJtv zl0N{Lt5)lU_A7#ba?f|6yERoU+Y;jX+-ZaR%<^Vb>P+QqUy*&ezFwWI5RDgk_|@%ou$Q>~AMCwlR9sEhEgA?;@BksWMQ{reXryrouEB!4 zli=gWC5=lR}y&pG%0ykp!mM*nD<-Mwp9ty)#J)|_)) zV2a27n>>JXr!u3^Ww}cPUqRq1_T-?fk?&L2>DB8~|IUzr^Wrkhc$*e&?0SVLdRpm( z#8T~>zF&#Ta+4M-1;-J|cO%L$fRf+o)7z(fLiLVY^cZF4Yd0QkTKRJ1FM+8y@8u;h z@=7+GL!f9(4ROJ2`ad5n9L#7tL2|E~mLK=m*elPmSFCPPmI z=g=&#FUTnYQVV_OjwteixxdQgwJOZ;LTPR&;l#l^?)Lavz>>i2%AkIU4A!Zmn#cFk z4enD^L|pp|bdIfLs@Of200fam$n#_+)L+%SI%{~vszIz_m{ZOJz?9c|0~tN^!+C7Z zv5DtBEqvY2r`*=#azFv}i|!wcyyiH_*{9iM8$JH04?oTn>K#S5^7(WJnHAeVk&$Dg z{ctBj2!?C6_+i17zfNm!ENCQb&SjyyfHitq+GD7!rJyBTfKuSTmTj~3FN#O+UbA{djJ*i$ zq{!%ReEMdE9?t(p@lZFk>uW^NXFP2zXna#{8omai1snsm=zH{KmaioSn+UjDCpoWcQjqF@&hccd#()A!dngi%bIJO>ax`y%sDi zaJQ)R)*rR*=Lz#uQEqV(f^31)lykfwCcw3kc;|nQ7j-TWJaTZ8HY( zwA@gSE1aGtNZr58^kkzJ+!W#s*6x0czk9)w0gcq0y+dTBC#H$HH*9;7njc%|`Ed6T z@7g9$NERkq6CSQwq}zNV8rQgnN{J@z$mBB9~H z^Y_M*)8#N6V=&-e$+@|!+iXsq2q@-T8)()NBB0UGWE|~_&@Q_hTa`v?*6dSp%{w;W z+7HGK3ApL%xLMVf3>eYLVRjDbeu+BZyVh#jb|d2amRUrVpsLcZB?8?V)V?l|(s${9 zt!-vmi2DN+7oc3=A)#O>2C!;r9Q@~jxxM#f5L3S*!@FyY*xuf;5rMcje|4zCI$s~^ zkj30+3=0-2-S9;5q_Xt^KZ|J+$+hjyUFBe8mmLMz6Jkd3AfO_Eoey3&&Fdksi-zHy z>|nb^&+>{7WRPvj_%z1`t6}>!x}G@**|?Ei2V;r?60uhnhT7Z7IJ1TCF6ne5&1wPi zX~Qm@@=|q;xWS=`uSl!H+3w#qTFpe-14am>CauoC_)2+rWlzy)0YE%TAEqNjNqSj2 z*uTh3g({YRP-tpx&wff<&&qV&cI2{Qq_&nSEpZiARKViP26rMxr9h(raW`$ziCeCd zN-U+|8K*k*KIZhE#3RUZei0rLg%GTzewkbzsFW|e8OoE&RidItdvi96{*+s{hF&Qz z+e*R0?|vuH>^xUjS`iKvkWW?uciEVV2b%F|-|-TqeQgWWFk6q6-ij1=gBIM7*#jONG=o1+_#yl@a%ydjwg-eH_YDf~A!nx;+{(P`!K^Zn!P_((N^*du#VDSBQ!9J< z)&Kf)g*6~49L_iVBK(b<8DKNK<$thDxDLB4_lCpqQ~*2}MivCE@I!=a zaU!GJ@tge2iJ(Swbp1HOPTkg$F#g+)h4=eBPWz4Za}y;3f2HZZx5%cug48{R(b@Ka zW5j29P-nVX!MeV#fk0j+^#eNVDRSG!09WRuii3>i&i!_AnOcZG?`t2u{FIYdsrey4 z=4cat%g;adh@V6y$kHfDMEIK4a%~<#XYrueZP$-ckEYO}8l$PQQel1H&vLLohrGr2 zqOGyIzv*4-JOe1^6ZDip`DYs1AK~9uQfss>E1wnMCZXvP{=<(W$%5bEbyA=1?7AgV zi!-U*nbd;qq{bt+esc72BLR2X95IaVkioS?t~l4Tlx`qaZOxlG9|UHkbiOQ>#ILa8 zD-pp5HyV4Hu_#G-{#AF;RB zypVNQ^qMT09P`i1YhGY>PK5}ZD@@he#s5e?sI^%zS+jp*f~Q)g7UG{Hjx_>bQ5OA{ zMNcP5lRFFf;tPknn-P0)zI^!tAy*8maDjcS8;hQRI<7H2FUg7%ncl~V1(&hT&lk)9 z*PiFLzXIchG)g#-;Ff~}wLwR8BRM#9msxRFUczTJM_)ce$!fl+s8Gc6+0iV%a-Hb%J0rcFPE(QhJS3+C87}I2A~m+-yvuQ z8<~1jaCNZf%Pr)4P>QK@=x6ci-Qpb=zvmXO*UloiOXt1#5l~?0Peg}J8T1Zdn~-JT z$k@PYkI@~3J3M?KlI>4cIULXx^3ekDT+KW@HojzV9@@L!ln@%--`14WY>v(!Qu(M! zacExb`>DV$wVEqCPbRoO1T51>(@3}Y(h;`G7YBZBMenXPjtQB zsJ(dS+RJGeO+_g20M|it<5Cv~3aWayj((LEFdOB#Yt%V>4(++1mFBNG^P2mZ9xve* zbPm07p4XJ}CpBr9|EA$q_tijduL<#hU=`*0+p5T-SI*NDgYM<30nnR|7Kw!{WzE&+ zfGaqbA#yk&BwBjvPj>p5<_x3MatZI+_pZ5?@^p8m0kHiJjjOD)Vpue17Hjo?nIC%} zJHksp41B)8B8!?`mH|VR=HtMPD*LA2lFp8;US6nXeD>rXXh z9lH3KfPJAz>J6ZeF#ArNznBooBf??aZ3=uqhy-N>ri*`heQH{aFoYv)?m8`_x?&(` z=%&^u$Oh9vbxBBktYvC+xq8O6xFxD)%%N*5oUH+Huj5|XrQ7I*@-LbB|2oGKVE8F6 zt_eoSIT8U~TgVwRW{W^2<~g)HxUM@O!8lZAVh zFE$#*aX9Hs@Jchq&w0BIioFn|$S*nKm~=~R8BQ-oWtWr#qj;UuDK0Q~Z})1@Eo(F# zPX90!V5u)YR2ik?DqL?5OYD4f?h)i5ftUwlPH{{wVz5aBsH)Uesmc%0jbXaoCb*w( z-Aq?vE#OtElz9g9cAS)Nx0LrbRf+^+9pwKabeJCLZ$!aV2xjvmMaKXc{Ygu$0yxVfz%oH`%i%WYH+`dIg|vzx5XV3?E}=me~6$$oSi7; zfgm&cclSC7O_9w)Dtz|TV0@-B#ePhyo;~S8?#Ba?6oZrzrx~i{nr_EZq0_#3@+&%&Yqur#GRKX z18AKYg_n^7i8WtH-Zsh+6#Y8m!{=OX@uB3i>eY2Dygi#FBIWcAAdL}9#kg`AZL}Lb zR(V!N#t<4wEIX_ zH?UXV$SOkOY~x3!ai-?l`c=ic zSj^&IrzV-r`Ry6=6`%6)P_Rfi6call#JH+x_UP>c;bPpWw3&63g z;>-`r*`&gf9#EQOFUA9x^I z&Qj!y7-s5&7Y~Q?BGjD&Wy~)qXv(_jM-3XHRdHV-mJ*rx{Xw~z$vMhS15jglTX7C> z)x9G*$OE)iSkAsnZax=(P&n^>S=Jo@F`6g4@!L0tI)ytVZ7*T9y^#R0Xa|tpR(q96 z4GQ0Wx2{;XZXS9zBv6B2`o_$@va~huAoHxI%=t*M*Uj8tw%sOOw+bp(aDk;)GRaXl zvYu{A8rk*#XtS?a8#i}cu9@d1M&t{TC57$ zjpPY}5S+pohN$dqvEP=nbmOw3uXS6JJ0w{E%1a@B%J#c+%{*-umQlEs<*&HHRQ}ikN?3J?1F-God) z|3`V3uitt;v7!)U*w9g$WJzgZRPrt?qQw{_$Qr-KkTn zm7OAY7cu_u*#hGZl24i9*S@oxG>I(agV{c20juJOfbYvzGv~wc2|%*={;pI$tLSw5 zE^f%8|61n0%h|J0?jDNK%#Mv6{hMdNZ*9k$L<-v_I@o=@=m4nwYVZ2()mYDcAl|2< z?Vr!b73rAi)lKug4AjzjVfZ?3c3I<^k|%c#mcZZhbEJjG`oHj*l8 zoua+32k%Sn7uk)MJM6{ocyrXsbhc}%E&Gv3xNX14rY#hX37#PrR>mLeb3Wpwf{Xks z(BJVN0zf5Y1`J39o;0j!x)*AJ_Z_`~`!Z6@uIHj;vkCn=C9h&7C`=N%l z-+^?H!eJ9ee6|6O)#|I-$xjBQKZU1p)=VOSyzt`^cj{zqPWNe!4aT{|3pOZFc8a79C2VZWa z3N%W)&Ux<0(fQA1W;ws0jWuB^Iw^K5_n)O*JE$h&Mgt*fD3DHGi$CR_?-|%V2wusn zlkJ{-vs8ljYZ}!i@JUqYQ%#S%P-PmMt$A3996Mf1Bo7@=MbDDln?8#IK_^<97Ko0D zgEK8^wb;p_u2r~0T&gTGN-|j?)oTz1=EZZG+Amy5RWesZP_;E&( zpg<1MSSj;(k9f1&8xBcXiRYVuPQ^F+DMqC%8DrsEgBt6{%1qf;55ab3YVxRPOU4!x z3?q&2+;&S`8V`BmhW!>orhk+r$i+Jm@9NJ{kjy`{dKm$Q8cw;l9Yq=^pRPTARz6V+ z`EpSZ#a+3kFn)H}fLp{-XBGtUoN2kd^?L+2hp}IdWzVssE#P_@W%C?Fm?yJBCG;`n z1W<$~N`(9@;xVpoJa23n-)Fu2eS>_!O>@iXgUB z@a?1DANk@56<41RCH43+RV-m`68;$l3O!1Ei_D*-FOj-&s^xB&-1P` zd=Qh4nJ1Xxeh6*kF?1-5c{=ucz6%DXijLneD+ko`wqWBS{u%KQdJ~A@@dop^So1`B zT@5!Qp<%$@2&vakQ5i;`cnJ-~&I?F`+-LB1D;S?uwclZ@AwPL$CQU&iyJ_aELXThn zk)q%wI+WC5W3UW2)oUv?AgYHQxYb7PJLNi zGqwj)m%4W=qZ{&@^r+FN3~9+AK0sXv@WRBNI2{R6vecnfC;7B#o5>-cC5B=LMsMYy z$57i;@4Yn&Zj_o$04_H)O>MV*BeiYnwK z(MvKxOWWlUKiS2(!_nOQ$57QnZS`u)EL@_&^~xiR?ZYo0cLv{9Fp30;sLZv;E%_Yp zvN!z@Pdvj}eC>ab;AK?N9uT%;*e~IkF;5T*X*7ruY*H?)I-bJjYQ8h}>BT?IJgryO z3yR!nluqJmzdqlG?C{|28v8p!4qG2Ac>(~v_3*aC=1-(RX^b6R9BY&R%)|n@bEe_% z9ORb0Hr%j=Hi$B=v9snlka3dbh|Jx@zPXLn(`?#qh5R+cOrY|5=+=KlDI>~xo}#9K zB*F$mST29|aP05(rPXC{bcwu)TG}eN|5fwey*wf>_NXY7yL;n{mdd(@ttJ_M2j}v1{|?9TMHQllf zfjl`c9haM1vwm8j3a-{u(txPkFXU&4?|K-4h)ymv|8=65-Wag!tmd(t4{YkUWIvWv zdJf9#3m1?;KERDwUsqKePnn#r4t5j!Mo~V}MqwjUSCF8*JA<_x%Kr)rsrl#p+3v@a>G__1QBQH_M_3ankoe*_&NI9x~ z0%cn7yM64q+gO&Bx<&ly;>id1toqCQfrm>g{8G+|>pzNssz{1t-tM1+f&wf&(jm;~?vX3xMR=cwACH`js|A`XbWK*g-Tb`;r%|EBAP(S1Vy;@A7lw%P)z4NfN%_O=)ngIfvCRT1B3rnr;h)Tg-@ z_lW4MpAD@oW8pyWvptHei4i;ny)81tRO+M%ptaVR3I4F&?|Rj3#bUOsL>E%j^pxX% z6pX4;46~PzIG&I-I>U7o$3)5`q9ki7r!+nF{sJYR#-ZBB9VjOHUIgjEsmO}LZ` zAlq>3x>*&JnB#C$@*(!5RABoCAs_@*VY9f!=yHKHpS8yi+X$U*4Tx)LEG!!_t2ewuvQnz#wF;@*MxLoC#+;@=1Ij*+sh4gxw{l))2pnzz{HiT^!i63dWDVtcia4f+lm2A?1T}HCkE=sMw5(v$m^1VCBBAAX z!{_5^zyKO{)rfj^rxRb+P51lHbCB@96S#9^*1W{?k3Qc!KrJYE8iI@w!$=*3>1j}& z0_AkW?KW2kViI}_Ho&<(Y1r{rqCJ}SDkRKq;z{Y z+iB214)=V{?k$GZC?5it0i$jYqi!uEa!FjdfEF%y9sb7`K?|f(x)2Mj9RalzqiAmk z50pEEi_ZP}14tv9*mXdNv`hGCO_1{+Q4Bx&ZARjQgs2+oiNwm)G<8`|1s| zCFQ#$twKfo+|1t3in*JJ&2=e$h6Jt@d5qxnPsF~i$37QzQ-x;9g-THQCk+kqA{-?? zJA#B~lNebqx*My~^-Q01G=S%;l}4QHi12%Dr_>e2VRaH%&`HYJT8?Iqn8Vl4RJev> z)Dy-kJ8WC^Rya&k<1j64GWHD^@Y(w!lw&o1a?6W~Zy)q&f`nzgSw2H^-Sz%9KpB2x zNgtPcg|89Yq>)#_jq*LBpo1KcdHdP{3Nrf-NCc3b`YrT)m2Ups;*h7iGminZF&otF zf}&bJG(%7;&yuMi&4=ywZwoo;*xus1Qn@@VlJ+tV!aA3TJBZqc155(G;})%SA zB_#&nyjbMc?|?OfJCdycDBowg-|1Dq<@H6*SSyo9t(bINuhH!;u@)-jSI`~IDJ3Fe zB~%gM+aqDf((_mk-1zaUmS}x*a8_>;TV!Mtr0r!?Xbk^?CQlb+o%NHY5$zW5&1Aud zU}9j6tI98>O&{b50C-SI-ng&+KH-c74evN^Ww6Zz{CHLp%o9tp1NX@WK=)^?nt|{y~%vM-o7i{&x1^@Ic)n;hH_csv86XM&UEWZ ziN)kSr<~{^dP41=Q!@m5ueR2ZVZUYyDT=LIP+LL29uTXsUBfrm2rlF$lRU827F+#0 z(-p(@@9ue$kWxEgDxm7oh5|H;!2kv)UW+@K1eII<FYMEdB3o{;iGsImQrhqC(i-arg`%R5RttAtr2|LyhzYAs!9CXiG|90{8c; zDGaQ9qrT?v6(GDAIJ%M{{_)upOFUF|$47P)%Hxc2u7O-=(3{)hH9>@*%Pop)eO6?; zZWOuU9x|RF0%+rjEsKQt{Ix^|dNkH2anI){Oyw<86r+NI&`f9K(HY?U4oe5qPx2b? z&M%|pa#kVjYqyBiAK+i~Iy&t-w(K>)$)T-!z(5w2wC%sxe^}3nmbPRS6P#0&lJUDw z_@U$ZdXI>za0tJlD_%rY(3_hkKc%X*TOn5I9%YPxctQEg*PyQ=(foBLlw065Dl>}b zlNaLU&vTBKUET%JXjos6QXMD=$D1=@@0yd&|4`pz^t8Wwn6OxU05seB_nBvW5qHIW$vXwp9AYl`P}?8Yi0A|( z+2p-3nuz9Ac66tU8IYFy>?Tq*Iy=p)kfpeJD)8Kz?gvc|IQ^nDeF9E_^XZ9@21AwX zt#2A-ztVWuiRtqHjH@kBATmI6KL(a#{G0>ImK7NZou6km8zsGpy>5Xx4BPen6w(Uv z1?*In$tq6aLjimNf=^6%J~&n7sBq^y!!p?d)9TLDPCqXR$<&NIY63|vN2PZ*TZSJ_ z$6RNi^RwQf3N81-fO6SPN$lyTkff`V6^%ds#w85;#Y=her+6!bUq(Kc6;JaF(e7JPl|qaO~tGI zbj8;>&XY>B8Vc~eYFEnDZPBy$jK*c9FT>12o`K@y`fHK5aWahVOxiF7py7`kV8+;X z6nE8Mp+n4E(&ka#Yxl2y4529#71Z=#* z(XZUcylb5qKrxwMWpgEw+O!*GMwqMK+pk`mm%RC`!8}BdgRP^|#tBZ|WC$IfiPexS zvWLb?W<<&lvDOj&k+LjF`jz^g`1%hW47iJ~_a_%Y@CRIiJ+&LoDj{KY1Yn27{1qgZ zwrAgUMWhc{;DrnubbfZUInKU2?n_8==yJnlKy}!g{ya{Ogf#7GQ*!dl#-<$2ymO^e zzAgJb%E`s6%Jb-XyYdU>CO2ou{~nTur~CNB2t2btq0XgTAd)o@v(S#-s(t^n@p_v@ z;|H2o-KT1yKeZ|U*^+EqT6#sbzePBeF* z<``bnA}bs-0>gF!^TRaT`_-U(C|1l**_2Z+p&NRI>?(q9Qm-NtPOD8psx0K_$eKyx z*rgR4=>KV57u^cKYO*?8M0t6N;E1~{GE?m&4I(3sYaESbhh#1q@pEFExnmgk`PL14 zLOtm(GsiSLs)q`O{jdi?&3HL*IyPDf5;`J2`CP<#o-HLsvWLWa)qIl?B~7QjesYgG zLCCl8LPnm_ekbvY3DmEMKSyXk2z>}VELo!yI`58tY?TOgd6cC9baVFo)X*E(6GC0k$inzT0fw^rKu;YAS$J|JWMb7W7)Qk~N1eD99 zgpTh_12Sw6GHocxYGLX(H{m?+s0c9L0ZN=9pJ>)gqLOx=U$MY{JCDi|qoZRppn&A? z=*Z$_kib3M!WSWQ(i9aDmC$yR)dL}2p!5=6+X6Dyed$gZBTJ~8gy=&O?NKab$KKB4 zIWN`r`M#U2n8zP%F7#3xJN<0DC8nygx;l=pii*~$CEoumvgt$E-ub!MF*w~T#PZ?D z&*PlXRo>e5x@tou$^%ag7fJ%Ai?qgZ^AjXs)Qh?_oU?-lhJPv2_y7-NFM}PA6A?Ur>j^eC~4KREj0bS_!n;k);^CMpG`VgB`VmJ zN+@HiEmB-a{d`fzgKy;e^>bH zzVMT_7%W0%GVqvRX)`!4QfzS_{QIyUS*u-1E+)f`Ai6MjMtZd;UUbhMw1_83m$Nje zqd=bZm9y~3Q%C`UKdE_Vk2tg$%>#k-^2|Ho&+Uz_k4GCt z-L$3V)6jne4YTWC3Z_N{&kA)TKcypLzixNNR+q<}T}@;&;JaKLQ!G9omy+P_N*lci zM}Yw8(($z%bV4TM9X#^kgK8_{we*^o1@=1&2wGU5mY2hd(YfQ*jF#>;h`u$&I)D`0 zVRkE3LnB%r$ANS$E6$4mbL&e_jaY`D2IP<)8*8`xY73g7@QaUYp*A0V9Zo?+)>_+Y zCr0Xxdkf?JiqMnfvwMrT`52`_&fc5q@&U9+GvUK{JqP{|ch1Pso3{aWkvGT68Z8bW zwaJq4L%=-(--$+#3s6SP z@QvrabE17Vt1s;v&M$0*?fN48p^TAS_GtO*>OJy3vFfIf7w;!af;j$~^&n^lb)(uZ zmCK|DusSJ~=_m<(Uq{0)zV5BMxv=1;zG6X8T@9YfhHCm+sY^^2Ps-5gXuU%xY@0Sb z)ha(o^~#h$3tz44&R6uJ0S51nWA?-UYgJ{b&xuAjA$P-2#-H%q8J`neGyKeV-1((4xf(-JF?vO-b?F$zD(buTe z-ehr=B|2<}Aq4h3wF`CmtmW~053`WO=x-cq`;D#@Vc67_dKE6KKt#a#Ls_XTLRLFzZ7FobY8Z>_Eu+f_j^+d~WkO;3j zu-z;FBbr3Q=eoG&jnOz=Rj2JX|ABI=1*F-cE`d~WLtmy>`UvNxrix;3W?A|ABQn{& zM-AjkP#_o+grDm7{?s>L7y!+bq5G{aS3_fAnM;yD@!H!p=tw8sZNKjAEjp!_3r7dX z0e}8bU^8}Lz(Psm71}Ggwy;r;mWaZI{Jj~j*CQKpfK&nhI{V(_r(ynz_$b*BW@PDt zvc0u4rqHX;KMh{TG>=&TsM=}g+L;UtD)EAajhq$6H}hz@;+NQwyQZKBxC5H6ueh0ac%mNVYcL-0W=ijY;q%wB7*1KQ8r0qFi$ep? z0dFC;g8K<-ls9aneAJ9_g^&RQ&r%!zU&Ie(;FCii^>#!81^ak*ft|J$tS>P9p6r~3 z@}K^?`@~ZdG>A~eAq|WM`!9^Bzlj6|ChYtTXU`A_Obk7Ax1$gI?L6h0#*0dW<#Xzv z@oCQ$V9ae4T!11(8b?4zl&P~1?5TFab$?tA@lbz;fQR7r8Qf$6F)XR53pYStBrDU5 zI(g}{O7SSm0`c!UDb0d(lk0dPV-ssRNSe(qRNO1u=6!as_?b zaa20dXiuw5M}($-v;_4e#SZPJ;ea3hm-lpuNbQ03TsJzb*Z!k81{*$H+!q1Y)hIgm z`$SyBW3=9Q@yc{Q7p=r?f^ntk1kvwCeJ@;&34%2xcTLv^++gfYic(mQ;d3EV!@&f| zD5FEh8u1$F9M(u+Fnh=7moSg~?C{>8up4l+l0&n>L z%}RcR$_*P1km``1)ynnuU4TI%Nr6yvD z|C=rz6$+Z1o2_ysLk0_jJr-+!`oAI|M|tytYim2=n_@sEEAXwyuQZsHHYEw9ZOKBY z76XSJj#pWGlG)|5$wF5CVaW=b!?-uo=WAoMj9_L+T0Fn``Ijvzty5!5XCcFb9IH+5 zY@JPSPGl2>QLk3omG^PTf0OaB0{uMuqW@l!;uZM5Pz4RF^g)ja-r%cd1bxa=bwn}} z1K?W)U^=MFH!LKd|II7}a}h>VPj2gV?*x@3vtFWp#iR_}sG)K!K3(NG z|6)e}-FvJs8eXU16e+3*i~?+!hC3e$m1}?3ib|6t$N`n(2GnTGe^I0Vrnv{Rg8Q%{ z_3lehz)-JLD{+UafB<3*FH6ye0J1*OD17U7K;Hm&_HSljlwdf_L|ElNiNi<396nLL ze+@{1*y7p3qrSin8D0@tWQ`PtiMIdcR$#X1ji3($>xKJ#=fw>U2ZP+rP1}eckl~-| zjVHn4V+)nz03>XZf03~NUA>0}+W<64|4H0jw4fmvHj&QPOF)XBW)>k$&=(Z}&sFyB zEWb?V?avHTAh|apzXJKYD`>Fcz;odU>f_-CL%_QVlWnO;VDxRhvJjD0y3;g1JFRt( z^NfCN7U67s=l&d}O;(!Pm;dl8pTWTX248j~5U2pQ@Fklpstq`OEWKDnz?FFf9qOSD zGMvw6H`;%R?Hti%2t;4?eWTO=8+RK9F7}ae4n%+@h2%&my7W;%E53B|H%bX^EMD1$ z_NPC{_9KvWPACon8h=y7Vb24GJ22*c9 z^lH>lSBHvaWloaKX+M<+bL4oG-J$fK#|M?{a>NDzr5{n)E+RPsc&o^yw124#bf&d7 zH#LAfeaLs)rQM{90nC3a)*B%k2E=py)EJ8}3!CKc>RERIpY(~|cX~P8KMfA4{Yh6b z?q>tHNrQkbwys#J^)>0dXYgM`{Fl>V$1YGQ#(}u9`DI;&XZ(fBeDSycXHls+C%sfL z?oS~BN*g^%+U!LCR6y$9MM%ndS=j>TevbfKzbFo6gFum(xMwqN0j=3(0#R=)nkBvJ zy>deCBdu>{Y+8D%_hvvzjJd4^;ygqcgT*=IzfB-0=y$QrBOTmeK)uZ<82NP}1_(`S z10&1gU;vkYIpmNXUMzSeYBzl9@p+7#z3m5;Q~u+O_m7+VUk2LQiBO(p<(rQeDdx+j z7vv*knVj!VNpZa2ExVr*p(8wA_Q{qx=bwNI!OX=ThZ8BF6j?s=Ih5rRty zS3j(Bl+$YfZ}BpI_${Eo}86`~P?Dg`beBbcQk8X5Jc^d_t6 zEh0IX{7)|a{>J}i@_S1oEHj?go<0MNzJDyQH4|957uBr{yd5lFz?8(!j}nj(&Tfd+ z1IW#C_R|5Ce;2Nz@Oc7r?Rx&Zz~W(7KQ~9M1qul8UmUvsYn3AL|L3=tVHua(WCsyk zdEkbeSKokj3#R5A0UMa`aISymy*C#ap`*Zb?!LHxnLaS!|8wR4>81Z;A+R3!|G@0H z@;V=U%pY2`(}BE23Vr7-?{`Wi>Z%|p1c%-f68|C{L8sya;+C(3ilDN*&`&WXL2S|J z7o%ZMxBR0XW$m~P{?ah!Z0H#@uAFMP-MBg0-|wGIW*?ezKd2dU+OKn6MO8o|g$pKo zr-(L^BbkkzX9bT9sgBlrgyQ}0*QU^;Z1G4w%HA*3kH9rjl&&0-Pur{BJ<9IlWP9=m z4*TCP2#Vn8X7o!DB1Z%YaLsFx$QL2dq-s>b(?4Q?a1@W=|LgSy8Qc(Z?ElIy;t{y! zb-?BbjRMLTC-`)xo8=LL;J;s|6yS#98Q4a{INsozuh@_j8Z^D>7mr2^h>4K?ZlJd} z8MxtTH(vIWx1jYYxlgmjV?`)sX27SG)E$rhZXousAGjfz3p7qh96VEO9Q4#Q=9Rx$ zD)`jO@Y&xDd<5@`4Q@y+7tFQ^p2;*u5p)o40E-o#_h!ZCCy)Pbpr9ZYxZ(dVI`JLq z&o15E%S-gr0|AkTW3Qju!C9BmgjaVh+aYWwJyLb{>se2T*c8u6>Rww-SEcY5KC}}6 z`Elzn06ML1J^f9C*L=7MIO@E=J3@+}BDv)qG+*6LW1Bq&iI|cy5|>OTbicU) z4PdX))A>CZM)EC&7b&-gvm(v2Q#V7Lx`mvyC|$p0i#HqK)6Yx4lqJamn%K10dnjU` zLilaHN&GiaqeLj4{J(uLg*+LR?YRw=-qe~eXd0>#Z$EB7v%0<$e_#F~w6AM(+yY^| za3(z8KG(tJR(5(T!h)q2O-^+##<;)K_4EnJB`4RpbwQD%VSEib;ow+ldaBv|Z4U!s zq-HZ)0D5As&tq`~Q+0(tPj?9o;74Bf5vs|Ff;WXIJg5;h9jt3U#j(HduqohK{zYn?pSCa&tac|^lep81j&>fA#-Pu znGPt^mqR5gr7)8H^)-#0r+7;wVEkzTYOTzOi5yRYOX5zqxr}I-Xsu;GeZ}3~g;3~P zt^I2Mz$D|A;@i3UbDZXL$-W=#MuX6Y!#Abc4Rkfx;Y935O;RTo#`sz-?j%ztq9Vau=D*ZKYe}K;vrn6 zHs7VRv8L0r$&+xU@nRR3k8&cBtm?XRdW~1nxOlK+VCMXz0Y!Om%3??q0gt1Al zEttJpKGAE?+^jaxR!Cx=Y+#)@*PYX=EpJ^O2|FIPGI|YNh@Oy}zX*0EttLW+dBDqL#?^`Iog_LODkXlWj z=B(7M4)|eJtBtEW&Bd$kC7Pvz_}JnGW9ZgL0>w-0axm-RIp3f#)c$1{y8jcysKtXE z2Tzvi=44JX=WmVa${qeZ7H*UpuTLO%W!)GYPI;p{vXLn#XWQ)3C5-h^wb;2QQeRcL z%H)DGh1>3#B(=H$K)N7fgpkPL;Nauk+VT^6q~ytx3h{ormBnp2#f~P=7)(WplH<>i z0ky=;cur5pI!uQ$N>0b*`hMR7b>^{HIkDGSXIC3z3>zr|9A?MQAjjQGQp!X(b9V1! zPJ_L1+YZ;3u{Jj{)t)6v9j5R&sBZr*WS-M3Mn%Qic*p%s^MVv84Ku{kZ>+2jea}|8 zyJn1QWI5n!A>^^WJS0oGSQ7cw<<3xXF&|2X^Bfs-_e+iVnMuz_&6Hs0u<$fNqdt|j z*@f*fha-KGyZR-!>($sE21BMgjC}jGx2Ky1ate|OBKvfMr8-SeUMI`!NP&!Q7w+BT z_f#LYCp@Ai%5>L*OLUsn0o#j0s-wvd5UQV-s2|lCSt|b)Dbo6yKyAG8MWVy$@`llV z^iL=uv+&(@lPDq@0q3VeHC?`Zi7}91kfv8-s?wUd>gd37`a1nFMR8xt1%EQr^ZmAa z=*-X%-wFI1(@X501x!wC6lXBs;WDWZo~42D<>;aR&rQ>FT-%p4xL{b50Of8iG;FDe zt<~A`>S(UQfZY6CkXOZrO5l&ER)0Es#Qp6F*GiR$ZWzJmFD9A9vd4a0=eIm55H}91 z+1gIFJhux8b9Y?}>3~3q7=dc5FLo<|Q4Da5sq|YkH<4s>at2~pRE2D;oP|(OUQP6U z^{&!%>vHS9YL1w}_Pj^1L7|J2)?5f#^lL!x(04gU5*1&Fps(QG{_W!Z)^T^Q;0rF& z4N%D+%WLk97Zk@MHs?{zmu24`HKMps>ou5SCKuVhYd#V$U3C4tuu$YEWgC-9+JghR zIkz$y8H-$d*SNAxr4c9+kpr+?^gT|YiB|+|pthfR7ms8U4vs?2{Np02KKD}PNe1nD zZvtk|g~pkj3*(WKE#HgHn*&0PPTCi)oe@Mom8c#*r7?dVFnXJ+aeBGT^A&12@h!T_ zKj<(T?gCb?bZKGt9|bWC>?M=%aP8I(T>b7A8k$?!iJhZtN4 zTa!^w;&ZPo!T`*!r-3n~mwL(M4G$IK*62jD=pGc}c&k0acIbY2Eq_ zitK+4R}M9s;@}+}5pGt>m5e{dAm*1zZ+KF!+!QQ7b=W7B!nS7AMQhY68AgzP6|}cf z^bp0BEzWe_&;F2eJsbBvZ=rT&Tk5pC&dp_O8+9e7HpohE|cUoE_Pqp54^ zH%ikrP22smw5)Iwy9@k--a74zze}lB7#k1Iq3Y+nYgScJA-dUZbftG)ZQiLXl3I;% zp;s?Q!5}%UPWkldd>1w4jRVcyQ5Vw5YqF+;nTvNt3YF10+ag7Q&FUOsqC@VHoxGWG zG1*;&L$4RE@cRT-n#B*^2JN3$DtD+9$j7b^q=HRC0xqVh99YV4o-V_k(!iGTd02n` zb71&uDUXiZjOJ$(DAAN+H*VB(*#={-a4=tXto(&U3c=&6;op#D0v;sL1y5&ZP2V3nwk@5VD4Gf(Yc>gLjc+%yxLY$Z;QV%_>Zn zWJ+b;FS@_a&J@jlvb@&!75TFz(wOAItz1cP{N@KPgl!&$Z=D2s4D_mrsV`Jq zNErXUbBuYpCBIryZ>Y)DanRc$*W8+Djz%VhY!XPT(pI~RRNC#L06B5V@%k*cM(N8Y zJ@em|-=1@Z*=lq{;u9QbgHK*SJoXzNaIEFEB*L+KIOz2#m6rS~DqN^s(Vo7N8U3m0 zI!yBhQ95r~rASNqjUSl+e@v>rE{FA3ov&C!z-228M6NZ^0`mEw)|nbup2#b$`Y_t% z96nCcoA;)!>EAAWDob(S9-i97t8$+*DH4dhnvKJTT%r3PDK|5&hHWq?RinLIZ5eZz zrSEGDq4=g=NO0HZ)yMWrF^|!D>KO0MVo{Z>))MXK>J|N=kzdjkx3igJMJizf9fb}X z_l^4RA4}cnvKwb}fStPW_<>~6YPpYKE7**qUOuI4UHr=ybpCI)P?Oy?SIg&uCjS6O ztzmx)4I>z+!j6vran1Me9G^~EOJ(^P^4Dz9=e!52WN+3>(B&G;f7jyQo$nMO#0$SM z=g7`?DTh29)AWzx%!I@7r3D*WJUIC+}e`B}3Pdq?zt zu=k!(QEl7Ss3IzuNFoYI4w5CuB1n;wgdz(n86@W-gGi7Z3dxA1A__>3Dp2HHf=ZGM zk|{v)o3;0LpL_1Pr+xSP_u6}>HUHSCwN}-fYtA`FAHDY>>>Mmq%H?FsESLhuJ=}CP z%`={<9jI@#6S?TD?)Yst>nH#8wY$AO@%}3e9bKG;88=ZIktT3oJX1{8;x%0{VdzOu zt&yYlNzoS@?V>H5f75`}&IqO2ts?Q7t}xT-S9f>q_TK2Jv`(yw-3JCsiniaxit=ux zl+oWr_|41CI4?%d|TQNjQNB{OL1K*EtIRF)TVl;=&Rkb^mNe0T;&>X_s1oP3XFj|)+9^EO(?*^)v~PQYFxShLL68ATvJ_eN{} zq;`=4!Tv7d$tp}+koYT!^VyBarQ@dU%6+dsQ#L`}s*d3Ii?JrtlaWU> zW$^#xFk*t2%)KwZ#b-Hq7sf(75ZG3iEr-yKo`*H}N`#ud4@H1YKq#OWzKVRtp08h6 z_$G%Ho^vFFs6%u!??yYgA0!-ik5(S;GVijQ8~4ang%!tLOJtfbk@sy?QZ;#=?diE) zTsW&h&f7!$bB8t3&n(Qv(+=6jZQqwt^{#pyUSLyO7!%h`5o>hlfppqkEZmHxJV;!Q z?M?|Xa8uXVY}@`^7~b2ck*KwaSvw5ZSMSk{?4g_vBMC{IcpW9aFwW7F``YEiXO8^n z6X2Y?80{#&2fEM)GPg4^YPG~;a@j+khJ^=>PWORqkitW+f_NMWM z;e`CxIYX&<`5OsX!HF)Fs45mA{zqg*`ajGEKg$rk1fJjyCRZWe=)IWh_N*DqELiJt zny~YPqjDa5fsGyMv6KPvE0Q>mA&G;1-m_)Sd$G30AqVXp0W zBQdj$FFZS+lvvw4BJNo>H|cEV4#bC|Hd~B4+0^xPUV^f&nNjjjDTM0^`K9FgR^i)jL_^5JQ#X^EInr!Y0FHfNB)|jSo82CG zhmQpli7)>XnCSlscjDAT1ss76zkC-S86{d|FCcr8%K9PCzBylRrx06b{^D5t^rHjp z9truKjd6=cZunB@%dmwEnhr$f!fWM*YuDK_p60R(=QAC|$1--v^tZLQ-~BvVgu&xJ zYL~Bilqp^|vND3wYN6f@F~sp#2F0HL!N_()l67dVNx^Ww8q%aK^Wal9CMYr!nCUc%`WYU zt`&9xt)WnOE8O&&DI1F&-}-&bCr(R#8DSc8;RDl+SBnLUjwZR*dW( z`ov86o!i>Q`FyD@hJ$qLZJb)2^bT@!Bn55E{ASkT-pr4XMo;OwWCsZ}^r$zPBuZV_ z`PKWo$&$laqE*mnEoTK%#IBaCT#Ud}r}Hf;9@&zIZlU>`ea8-sJx1D#N^Wbv8dI)3 zfO%9%Vcx9F_&f#xGJc`U>@y54HY6?mmyon3Tdu9Qv*w8L*R!)W66so;{DM`k=XQ75 zRbtK14DQ)WTR)mG`vqqR^!rDTc8bEOl0PxRn2gy|auGKLSzQf(AYgf>_;$%|nB4(3 z!}Qs4=0}Qoe!=ryW&4K)nA$iQVtLTirocJr%uXh{2;IL?m*1S?=DIawXHLD~A-hX~ z+$Tz=hf&dK3pkm@c=AFAgzdhGBJzilz33ENhX&tn>LLmSJDB7!ofZ3N-9^I|PR$>8 z7su|;x}4-_Z*N?rW1piO})jTbXel1SmLuiq@3U6q^5K)WACz2E*JvwKDzcyz5p}zHQmveX3?EY~dXAOfS;r!MQ)8n`%kL*S~vJ z?w#!391|+(eu&Jin@@=z7d+J-QYjpj=b_gTHGvlo#qaemUr zy{=lCDQGW6&gXH%&t1{UxB!NqXBRf{^K725J9%#Zni)_3DdN>-S$KWh&K4vio9SkG zBnQB`SB0Obs5}3;UADCRL>f$qTe#iv-ZAW8IwY>!8>!E=UQH>VK4JB9zH}u@+s}&- zV$S11tp$#xK-P4RyFP!^7ufy<%-KK{i4M^(Q476~*ZCN(__$BA+50Ap)_JajAAT^I zl;$hRJT=!2+ayJ5c!np{A*^w~s&0iV(b?akZswrr?c80s4tp-o>JKGXPTgl+|61AS z9X{8jEJNPAL-T0QPvPDEu>l6J=f2-r>C4y3b3E09gV~0se27PNJl&r0tVo&b7Q;2u zzH34Zk(mZHzHzKOw+q~vZkc>^^E%SZQ`WO=^{+ubYA3f|alOZI0H7ViX38=+f$j8J z(HzyzqA)_OV!jp+vb)GOL_ZcwItt}U_UvpjtvkGRKVxZPQ=wIfwZ*g^Hk3`Y_&(0t zFDj`zshNKfHf|cz`N*okc0-f?c=EL5jm&^WrfP2DL_>F@0;2(`9Udo7Pvd=2H+h(9 za(-uUh}@RD$L;im6;ry|Udl!v)m=#6rWtvba`4H<_h?Ig9YtY#*$KK!E&4oy0k>C2 zmiX-wCP(RF)5-z{Xb16<6vUwp#Z_+Z;bvEl2ZM3;)^-g=xZZ`Pq@hm zU;;+!iUNA8-m@>Ct)hwWTJCkCZy#tCWzNWbNaNC+=p89EO=I`sglW!o-2B0s{+%re zhSbox-;?~)tx8EFdx^93?3dH_3xoo-o{$_=iw-HkomYQv`v`yudpWTm=6|KyFWyUX zZ@fklYpkhD*R3V7`vs(Zc7>Be>gi_UOq((>_`FCv9^9z4T*y@fvWJ{ zm@B-qySQQBP6)BmtHl@8D}B<>FQ5ZJ#cfDK&Cv4DCD@COIy$(iNGf}oc-VQr_ja0- zt>>4Zt8VH-Jr9?drazf|8`Y`f8f2osvBx@6W7?gj%zaz+HJRU2VNRt=LF);gfM1nq zF9~P}JF!zGEE>uY`o~lm{!de-)$X#CnCY~HIO9LpcrhV-w6K);!DYoeNsZdJv z#}aM1*QD}-fhTp|f}!3pywzV_EAItN&NWEudgm&v(jvM#jg8tgd1aNKT-Y?^(l$5K_d8Pmx^ zL^14TdAKt$8tp~j92y!vTDiog_3%UJJC?1(Hi#%sUl@NM}4%Br0dqa9Y+f7ZF{340-Lianw z1F~2WGBOp3ldW8{F6TMJA72aiNW3%S3q?9T%_@%es6i_r2-r)-*6qlYaxWXkx=!5P z@JK|0*5HxP7N1RgUU;CAxt~&>dEzfOQEeOInvnM*pPu%#K^Ka`ign}7dp&~s(-eN)`0*pR_J<2Eqw~DT_v+K^ z6atE|SaI2Cv7_79qYc;;yAD=P59Ee{6#+X;$f=pHq6X zp`ydn?|Q)c{GHrDQdc8Sazi1T``E+H%_)e6%9ui`Kzd8QW zY;9h%;HTUe-hQ<;G$EuyB;9*Vr%eA5^-kQfo8YcUG)|;kiZcfpAtnAY*YNEYX&UedK$uQ}2x@AW61*((g_|NyNmSa~$DSQtz^0xRG zbW&;IP{K4J-#5qPD)ZLSd!?$bb!ys!tCPpDjRj3L$m{p9t6A>TKFP;JX%502@#*U7 zBuJ-3eZySG*yaUaUL{2DwyAEQa~wT3hEOTg3EMa>NacZs+(1g^PrXDw_4RJ|gYIxLMmuKnMJHOxfKpni8{__GjidJ`&5n`!T?(q4t(wnGzgp_B@iFRvV>w;t zMZE`DAu)@UP!Ho<1_G7KL?2yu+SJk0?VhZuW`lmzInNx%N`n$idCLMBM_dH#^-&|= zjjGtwH&)3ts%ZPt(*;5H)&6?kzCC=PPH<3pX(a9>jdF;dEQz%k0QdQqujet;j%ljh zT$mD!L?_U%2+prCsiaa&kBL0vCtI>&l*rc#|2o;5E!Pn)6jy78^lC`0T#nu5x$HRk zZBxsbQLW5EEFaSz$6`V4xHs}Ks6mW;s@hf!l%x#!+XuxY;fL&cJgLA8eY8>ZqgQhF zmuBfr+&Pl8(EBto-@u@1h+e8azpscL)Hdn=_R3yVlTq{BXrb?ezfO9f6#OY1d8IfE zpNjVySUJ?m8bn)j(bI1Tgr@+7B$iyjT7izbcchGx`OQ>kxc+pRVGirlPadRs;u9}) z^Em5X%aOPB&%m18*2W7`@N2BTe_n`wOa#gF=J`52!YCItFaDQustnIHT|wpUHzs5&cHMhwi(p9=4rq?P-?29+7Ui{GUu;nVn5rwK;A^U{EHGA3 zx-=!Kcqk>oD9p*NFio{ICE1^C(Z9xxPcA7cXoC2eESP+aaqjGwNsy=DK?O@LId4cv zlJ-d0my**j74waUriZFsJ8Lk{FlXcu&yjrcKd2t&{jZ`}vHj5?~CeOW;K=)`l6)v;;Y&S6ZmD zmdCI-n=`WWnD@@R6`c4dEe>kL#t0fqUAxJ#x{qr9{`%L9KOcY8>&UlC+m3~P(U?>g z?Z${67EZbu&WHI*hE~L%PpvCV`((dXE@Xo?siN9SimVK=m&(hR-k?kJ+JP%%Zt+*A z0;bRAQVeu*d2;Em#Y^%&2fup7n?Hyv)N7-5E%7cC=xFo4P%~N*6JniR-jZ>zkX}0oQoOPuV8JEMQ-NuCUe1dKXf^KF1p;vX7-N@ zcoQn319x2Qf3Q*Q;&si{L}dk|cAKcc9U{MBcaV zfUxRgoPyX@EZL7C6PzSF_hzrr5I)96+pPET7W@B1Oa2*a!qWW$vKYa6{Q=n?G>HTs z-WctjtJ6#dH(+IM9r-Se@ld?Bv;w}OTulV65%w#|3xj8|pzi2g3D5#Jjb|Nq)WmY^ z=0&l{!hho(;&K2QRh9||)tV}JjB~y@)j)bTcGnQTm@!3_jndQ*QWFICt2eu`9SCTO zlHEiO%y84XqyF?`6XERy>1ehf$!>6ag?pv7tauCnkY~o13~;)e&HR`rK*$?QT^xft zLjD-5R7vj>nJNb1p_Ztt3Q3$0E;g#WO1+|ipD4i3%mG8k02~1PC9h#`cd>xQQ6V%V zAuHSlgr}hylASouf3qLKr*8vjE*|HxqXMCP3K)yw2%Om)p&9=2mjdN4Vt@Vx(j?r! z>5>7G;L{{{dXhKXX|N$r+^v5dh(9Tg|9>Q48WAmzmgkY{08$ftt=yu(@X*@m32IJ? z5JL6tQy9&R5*W|soaDfhB)141?m#-?bKhVuA^hK7!VHgK#?)ai8Jzv! zJw;v-b60JZ_s69n6Pk85ykCice`@UL<;NRJwfXg#=~HZ_Z|#IeQgF$H%^y!``(Hk# zWSJXp{Ej#w1vn_0v8Yc%wx~Y=8<4qYTilyhb|wz$-MUF?%X4`H$~NGjkQEtYvB> z-<<_kh~v6E7}A|sws=%e2q~?5%7vHn5Ipbpm9?TCY0R&1hEftsTn!D3H;{h-Onpew z%e3v%Z%Xk694VPrTktK^9xvP@ct`L@4)M=Lh~IQ(u%>V+13+@3K9EuNc#r(1J?hGk zbL!=(0Do%i?X|pSqIGT!+go{unC3A_CNZrx@3BaIb;PXa z-}k^t^uIq8&;HTmg8ZxHm9a8vQa0`0T8#>0dU|?Vc$^9m*Ri5=~w zDV@h|pqx?>SO0!R11@0C_^dD~-H%|3T!w`Qv7{(`&$nP8xtOAKoj(FLHLr@{$F=oX-ag{y6Xb12-Vw z5%D<^deTI$2ADZ{FTOenJ*xGfMTj4o@|5W9CYoeYQa_xrWi==*9NW%-c*RX+^2b%% z9=AJA{>5EGns)7YPx3{bDl~;fx5#5jv(tW|XA9?{4TRF$Nt`>!e&|6g8NW2m^MUlM z2#~DXDW(dnuPZ&mOqj>EH2~qz$ciRvdF`v_Z8G;L)$}8S1s0%MPhiub>Q3cKUx=T zj^phBJa8D=U;Jk%@b9xwc?O6eF#T=MFbC6DA+zdrPPXvnxBa)(>xs>J-*mm>?t&=H zkK|`I%h`ih(IW~4Ko&!FWx^r!P zstJq{7-n_TQ4fP`RJy!_;pj@F*!1avgeoE($Cn2w&}d7{7!@mwM#B8bf?RO3F>46y@|kRsSj6Z2Gr`xffPtvcdq}NRZl`V z#Ou~8S?Voh{#vdH-iMS95x*VB+*0D`riQo{>1xyRE}3`w!;M7h6*UNd0?ox+^CIDMsG?Z~=8wg;6L$kZwJuub^@!ihibKnFusD ztJbPuwkVCcJ?D0~!+7MheHAMxVL#}M&(A6>#wXw+9nF@bs(1gk#%X}x%(Kd=22zn01N;b(s)iv12CgP%zxBR6jc~S{!`>=?p!Jwl%JWl5PRL;RLMD<*Y!Q>d;YF~wyiL5YgjD$`;M#MN z)^WV`iP0lPT|hCD)+bzfGR{a!qlsRFnTe^RmIGF5nEZ->nkpuHNl0f$Ipc)xzIfvp zQCYsdlLK{*R1j(l(-JN=5A-FNWyeEwz_Mc)|K}cPUn!T{fFk8-sAr`?C@(9 z&GrHC#87v25geUKsYlDL9aSjZuKHQ)47<+l){Rd=dYmMHT%3ab&5a^@f6L`L)MPDn2o}v zkC_G&;^anX-~=XwA%v;}3xk1wt?5dwnnUz-Gcy6{eCEA0M%73Aqf~kyE%D0iV2vL4 zsZZB?jrG|@h%GXXa!9?k<4S33wrTb=*9LX71;>`fts+4 z>DsSd_Y?tJ-1MdKUIUPcTD64|X*I!JckQZ(zl4!6Tb`et_F@Qi>e*q!1qL;oKtvz~ zyFkjK0fnS`W{I5x<6$lPjG(Io!=p&ez7S!uXQL$sf{U?o>zVvEhPkUWi(>zeOqk#;)ruD%Rij&N65W9K4 zJr~06;{f!oh4UJ(Zrtm8TOeeb_N@+j$DkWNJw_G!K5X*pb$>F^?=k zKXp%=%gg)16d3(>D+-e%hFpU{dh7geB+w5pie}5@H8(;ECAvP`!=n8OR|xJcy`ifF z?=k2^RTJ@fwMr@J;smBTGR53XoF>qGsuBN#-K2ZeB$&ImwBAhsEgzXz_^j7V=|IWb z!fiYP=#3f{_qo1ua(mPtf_f7B&byPPy&kJ0%oxc_fv2q(tS9TM;+_vndLHku^SN&r zeyex233Togh2DakVn)PZYjz-ZM>g&njam(WTn7CwzAJdtuCHhgI;zJYI8GC^ z%Z%cd8Fv=0zr$)_bGxf*FIK=j7(@nL9_K{Jzb`ildHB|bMXyPLltUlT^D6kmlKszn=#c)yk@C`MlMqKIA z;Y6_^_eRu|(Az+$=G?B4K8VYY5(`T= z>QFBLa{mtsq&S!VOs7G88z6YG)L{~(hbiK}W^9#C&_#k;5@Ke_&d7xKY;f}dDidUH zOn7i-C%z&kf|{(o2^OWhVc{)bx-9H`RBOF;^0Q3hZW3l0ZJaF^DBSL2##Fv`^s{Ud zG5)Q_zU*Zmx=6?B$ERS$9bHxVd1>G_yOOA5^fraxhV^Sa<&d*`ve&Zv#w4HXY7r+} z*+j6TO;wQqXVJ5XNbY@#zPhCWzcKZT^r%O_j+qn9WL|^Dx{Mu%8GopSzR{H(5qK!U zK7_4tLkHe)UsA{uB{x|A);F5KV-Jl!>9ZZ*YI0Dpz=bR|!meKY3z29cc3_0(&}HkC>5OWTBxex$9cCX%wS=Zli`etP@&Gl! zIwchFwKU5?wQi|88$~fR=dIE}3R%ilD>9M>J>gw_(-bv;wa=Tqk7YDP5I&oQpbw9$wp1^e%%%w}fz&)k)wmSeqOWmEF_i7{e_O?Mz0 zg)eflQD9Y-Lw0-5K~*?Ji~orRShm_!Gb_m?%s1XSFRAu8ptON^B7DE@hqe9!^>^PN z;e{WgOca`|(5v{?r}FOnk)SiorF9{wT9#RxiWnipuJvinKK5->qow+7oS+fx&o(q? zMbnq+t|c)OL0aR@0nckZuIS0FjHib~Gm3SaV^Z(8{9G~7@88W|Cd#1G08Ek3#L`eG zZqxoZ8?EnkpZ_(|{O$p%5Sbx-KtTDhnzn?dypZ0*!~6`^%s zCH;teeX^miFWqnxoLl&=OL<)#?x;OI{DbZT*PR?PEiRhfp`{G3SkO~x!*bA895H%4 z4_FjuPmKzj6wz?8bk4|>db65r=3GF{-{=(!3q_H=ZBd3zHK7Ev{sMqF3+-f6GPRmUD`)4(89fCh{y2x zuvi^}=x?|fPPnCw>C{SyN_9PmYlm;ut2buPo4EMR$<==Z(E zS4W6TJ55g1?WzO)e662~S$7IY$Z9~vYDoKs=j}@!w&)@WnP}yrICL(P@?GmNDO|8d zOlk#{Yl+1c3p1kbixyhxRj3^ufKyD4-(1|Sx8B7IT?k90=}r~os;q76i=V5d-4iDl zc4BBpp+q-y>Rqf5BBw$Fo@jAlPDj@jk%aKuEG6>+b%pubC3#v&NljdL$yHZsA3?Q= z;-?_}n)6PJH`Li06iDo?W`1@tq2+iYZ9n~bP<1VpTb5Owj-FYgU6H@h`Xu$uaxC&` zw8R-ZDVtHshGIP87S)6dwVzm6=Fb90uRYc#8!E4pd!_navw}k-^{(!vc{YX6Ud9c< zz3=u#o+7ghN`}K(@a4fUkk7=W7}YqnKXQ$l9~{qF&8IssIKqsu0RHorD`QTo=V$at z{k0cMeyF#w&4Qx9s`wZ&tNfRE%7~ulZ?&ddh0e@apR-|aIl#wHV+&V zOq^-h5DR?54Pe05-oo&h{|bUH;MLNApgmRz1hA>8L;Ja(f|UxW$D40MfaZ7aS4xKJ zWH?9{0VP`oG+Pe~h6dmSqqV9+he_< zA}5Yh1I=qcC5EoaS5D?BRH!U(#7f^-1Ox=6&}z-zhsz~3Q*_8%#6xt%WbJ?Y4cFrfGXN7v17tmkgz}lFSd@8tNQ&afSea-K8VDy;A+-c5R2j{TeQz}Dv-9PmlL~HK=jZ)dX`wcZu__yh zx=+DTzPEn-N?#Eqgm!UkL%YlG)Q}xRrG+jzD7DY$xKW0DixcS1~UmSKhMdxRp zQS)1R*o42Kj9GpAL{zXSP0)TQwxV1N?T8ILZ2n!~0SHD^7jjkb_ysWspdreAck;Ix9$tJJV=84xA4G9!P= zYc8t4lU2`EOiZ||2zJ{>ltZrE#)K!D;H2eTTwdK6nP~PBs;n?7W~t?%+%PiU08Gr}Xb`^$z6mVO|f zaKy>teouNWk!9a|G(K}l5{KgQ;^1UN2@qcEt z{$2cd;}2-yZ1i2xI#wOtr$?}iii*@PrKkF*S?*WHfTxPx%kM$?wx-u~hvvaJ^yhF92?Q}Ik_B!z)u=$>Dbmldp-ryCp`EbJyHCkMLF zRZt$gpqg{0BB&rK)}sZnFNWw3h`QdJ?W#>2FGEC}7d1EyvH99D_AITS7D94L>rBpnxUr3?4rKT&!93b#*-o!>IIPm7)D7hw-r7 zBwUL{_Dl#VM5E+jR8yM8`0V>M_dTxZuD;YS+b*9T9KLxPpP|HqE+H@LV4fWqvGT;{ zyiFqt_y`O{3c(kL;&0PZj$!MirODD0e}OJB_1MY_Kt>9wOZp|!xZ2V!lDAlZjleM? zYXOz6b@wG%WEQ|1=8*U8g`=)20zE-T$KGmHmfhr)xZR4eoeRh(L-ZrY&Bk?)RbD$? zSP(SpLFA4Z`=uxC_viZ#Zca6&PWc|&mSzZ>igR=wGy@%YyGowj>Dh4#!=_bQ%=p14 zA=DuZ8jV>_?u5K%06Gm)Dd~`A;CV7V2U`f84A0PHK3`lwg*Xu)ePr=&<7K1vM!UX0 zQVHAxq8Kp>K1=1mLfSf6L&Jy^oRx_d#i)C!m@BIjbrL$=lWKYuMPyDx$-;4qhqL^Ji{Ks5 z5pC>on$LS#Tn#{$`NYo|G%LHajk(p!b)7feBvJ$e*pSUtFWtcQxgEVFC6@bu?V$Lp z61{9h774SeZvXat5D-p0OcAxXVLQu8Aet(eEmz7l@`*_e9$RF!Z(s)uq475KMk0<+ zb1K&k<}X2`Z4_aiq}*1cX`&3qfh5@j8QJZxr)&5W)EtO63k(jVR>!wJ<8qf=Cjfb| zi~Qd~YM_!$bh!0n!V&mPDBVAqm-9*$fQ<5`84I2e0vH3EuD@8pIZ8`(v+rg}RzYru2 zNNLoR5iD8~BQzX06X_gpwu=uSOAqTGQ;|?y7sWVYHp(e)Y!LvQ zCxeDw?2kfW&~NSB?`rlL?Nc3$VZDnKEcpcJ!4VhCJQwb8h=88&MVB-%oqPr8BE(<_ zbyQ6#l^)9~zLDMoU^X(Mq*0lTDgY#|Su)u(+CO|TN+g;?ajCK6Psg{Am z=h3N~sHAi1W-5}-H#^m6RZ_SWd(fZiO%QS;S(21>YW3=Zw^)pXG#18CE(a>Dr!%&H ztF->w{#xyE*TOTL8yj~T;zJC43A+g-ty+&-gVvYFZWgg;%SE{^Z#9ZA6>Yu|^ee4r zWRpH^^u4T-F7k;I2P+NXD;P>>k)-YMJ&e%@@~+PSB(gfGEx<*KRfKhdALL%*DQu|bIrG6y@&xO3s^-t!iARu)q6rv#iq$8-xYxe>S3KqKhc`|H*$MJkit1zNF;Hp`^Nc6` zBj9d1trrPU_T2ioe{!kus#;N(In|@#(fxGyvwXyiz^%^iC$X_4lqyf3oO@Jh2h|eG zYADc+A$5_jtOwa7pk_xgyWuKMAcC5nH+xILyu2Al4j@9UoF7{NULeuxmM{MCJ0LEa z267HnfcU>(6BL(^Mp|haYZgf<7$ZT}d8~`Mo$GU4?VLM8Snu$o(b0f7ndfP10dA45 zLhuC69eU6@ZQQZ6aXWuGwq+7fg^?}swg!IMe(`i!y$0A27asX))gB5Oh}OOayg((- zT~aOfNM|nNW~eboa?f;+Fz_K_)%^L*eR;jYso&|jzYm}{ynk7H9T0i$-&-3?2S?e) zJ?P2rqf7)>j1)|Y3o5f^gwn3@=L9d4K{cf{Tn@A@v-*k1w44yKsgm(E%J$rfaTF`b z%bBAc$bd*??r2Pa6x4k!UeG9vYJ=j#)3e)lH*8MJPsU9K20wE&2(gMmCwkMi^N4X5 zQ@cN8iu)Lu)VV~Q8kL5bOUm< zlMM79iW<~uuYFF695lM~j-I0paAXAr;dDK>nUKv^Ab21a&=?v4du8cU;YaUeBWJIX z6s1vs+yd!hx8LksuIjklp zPJ#7R$L_Shr=r2P4_0+fFW5nT|NW!ES)O+JjAN;PY$`wv?jFRUdl>Qna_|-lbv{!E zUT2JjpMD+Ys10AGj(F~P6r!*9GsAk1vMCmNf$PvoKyB`*l?U(@13%|e55I3e8_U-j z-Fi+4A!oWt>xJcC&?^h!|K=98hJl>jBn>o?v_+Gc4P@AMa3+;SQb>F{pFT2TAchvI zGetyaFE48%oO8!eSeuF_$@!2L_7UIY{9GaXsZc6+AA|XCSQOf6p-{bQ^`?i2x+5dr zJgT`!rN8J&!@UE>u7QdQTK>m*V&D9~v#5 zT?epjikZBn<%6Dg8yK{XvExQ*jMiDPam$ob)V5TiFZg>Q{IIjR(qf>{>|5?Zv}aGc zXpQxmVV2~@(tQuPbe$$ReVpHB^Ktf}*527RD)ZgWLJ=}N`@X2aaD`c>ejfL|OF0Vm zC{-U4E%-eYi5CP|O<`+k9O}8S>-CivUn|`MyhRFux#&xp9gnz3i+}mYR)%! zL9|9Oow;|%_UrQnPCA*hD~bsAfg5TMIL!|i@WQ9>?zB^D)il-hv zo3nC>KI9|YsB8W^_6pFq4O>}6|A>h>!CX-5iEAlK7ZpUdP&nr%^3D04Y+Ee94H2#E z?0eB{+S(!~qt=?gtnL4AlOVvgW%i#(J&DfX+KwJ`vR(}-?yj=@aYMh(>22omG{MOxJ4aZO!ppOXGcR3n$M8|ku*P-&P%tb7(9L_)f_Q8kr^fM`s&+-1k zVy#Rak5xlqYuM}8yNl`t0J!Ay{^bB;WN5O6-Ut&*5%+<|je!G+-SwwH=p6^x7m!ZH ziA|&N^=g?Tlr6AT*4(&mbY1^(js_Oi7E{@R$puI43TJqOrsY>4dzgnJp0fo5KvGRv zvS7Zj@iLp)@!n4Rbhg~{_+Ng9o|l!{#@OE~Msp;8a{aX>zCpl`c49{o@I($9_9cuS z1~^e-IkmA+N?`qcDPih z;BYIksO9WP3AQKSlF?Qj6XPuwY>T7g?y!gQDr0afTzKQH2JO9PpsTA+E@T;z>sjf@ zj?}5^r!uPWS?m>Tii6M<)w@v?6#7=5Z>NHhYU3DbSnR(qXHcVG1fPJ!hYIYnJ_jil zL&q-nkhS91de>?FM^T{#1={NI-4Hd8$0Jc{EoT& z*t9z#IZ0tth2KVCkxJY%thQ@C=N^|XG&(}Ub@ldv(xHF;MGmDkCr~Np%y2`bf2FKS z16d|7V-$EK(~jw`xm7Jh_Q`jrij|<){OoqR<&aG>XS0FZBkE)JxkpNQZOJu(mp{Y& zfPKi5#W{thB*U}z$N(~ql!bDwSQ`PLq|mSO4b<XBs&_`XCo=IK8aGcO1kmmhPCe zR#9~bWT`5VEu@}YY~DVYA*koi@d&T3Q4SN{m+Lw1M)HI4O4@9^2PHfmweS+1GU2KP z*|o!3wWKHtkUHpLaf<)JN7f%dbUC?0DN1QNEvGt#fAbwHY!#~qTwLh9E?Vee7)kQX z0qDc^k0!m3R`PT4RjnrLMH4|$6&Mq|1WxByQI13`!-6t-yP*k=RnOzoUYvOFmz6R| zsG3=SIoj*7q*bHlwKoT-MJ`#_;hV}2z_e_`VwW~u)cu=xJ$zG9Sw6UL*T-0mXb6b7 zUF(-Jj3$q_w7PMf}PQt;i$yAd9S&`dzHm^4m?tq3+H2L4mX)6KlJgSu4kIJ3) z)$DVV2Up7+7>f-5FqdVoER&AC(uef{I~=#H@7$}$hvfVl+g z97EyV2VKvLDHnc@zcA*)A2KoA9L`mm@c4B@@KcmFn^V`>+3E4_XpTk)i=xAmS_i3g z`o1Jyv+f-D9&j`ra*W!RHBD!)@||tNUvx^Ruv*G3H$kyJ8_n%`c z`J2g1=m7K;sLQw4Z~_vTfdFDB!pG_ApL7eH7(jWwz;v1RZ_2B`Ki0?gS0G*KMVvpK zp%EgNfU+Y*bR%U4+*%`pd*i?OFe4vYzeNUl<5!0`6Z^@EiMkjx;wq-A^eI;=@^X6-B?-&fezI153=2y0~ zGTW}Z$HlqvnyP z^CPSZi$Uk#M7CIKb-vq>C6oSPV6XH*^y%`red6W`@^RPM_oo@7=PRqiwLuE3~@;6JmtQ`QBEn&c+Yt zxkXo0v(3aDvw%R#dAjDv=TQuI207EnXVc8aZvM3wSSAJFFiaCm5RvMhX?^;@C3@k~ zmLZmd7G4xX12Xys zok|2~3iY_TlLwo}@%tN-vR?ZqAJ3~R@EQ`9b14K~C=dv2`ZtS*X(*ls0k7=L zOVM=Te8VGA9R{aO^eYAF&cC8*@VjR411^w209h4KMF7vSxR!ZnI(CT?QlANed5Y8h z@2qzu{c6n~=P8p~e<{9?E}U#z7Z!?vV^5;!rV>$U%=o9^cz&$?k$MFo>u;sl1-x+} zVl)ZSZcS&4Ocy+>PVu5B$pg9VP+zJbahonMH(H(WyZ}S$Gk@e>lZSvGk3>yG1_DFIhgbo@!EgM zINGpL|C(IT_vN>$pJ9ph?4~E@fJ=7X+f+{vjn)}|D34_wk~84b{>3E&GvzM`2BPt8 zUi;k@_YY3(OBf((U!H9jQtJI$v4G_Y#$dKTB1EvG71FTY@aT_54=I1_DC&45|K;a_ z2&7y|xnWmk$GhATkuq$y@grWqR)1r1#JFTIcT)PY6cFpBFcAG8&i5Uu1ZFj=+-M1S z2)Np&P9NAq7wBvfA$)$t?BKc(Le8&VxNv?hWcy{|w=>3C`qeZN^u9lVib&7!Yd+H3 z@BOpr9?;ys9{K=bv3V1h1#z%;Irlr!w*BUFvY6+e1L<&Bv+(d9n6W6ysSln*$e0G$cdTzP`bvn)YBMPbL1<%~Yl6j3iWvu}I(rT$&3P@gy(c5QfJ3dqx~vpaeV} zCi*ID4mel7*OUSKMw+n>0FA{0#9je3uF3(t-MWmQOP@amUG3SJY* zH}1d5xOHd|zp#zk2G{iPZq8Tr0O5vC>S|rPt(BVNJ49UR;68L{gaB z7#rxZ79$Y+pnD0){{AWtXf8t4E?%tv>J7-2JZoncL65$U)|-@GFD&Y+H=k(a$cKLq zk!-Wuq=8d*QD>uKp+tH1IH6S2otA(782<~n6EyzIj`V8yp**5q=@Xu)g$lRzZpqE{ z?*}nGWxtGPAfjRP;K7vNYxg6T!`M_slxT5)%1`nCVehS@s%*FQ;a3DfLK>u7IwT|) zAl*nes5A&D-H3{GHwY-{l9HB|k_H#uA>Fm;`tIfH>pth~^X{?Ff4?!l{f}cf^m*3( z+%f08=XG6k-ui%;4e$c$Km6T68H?7~Tqhqp-3*4RDaUBg09O>}yp4F4I!);KPMsy= zePkR+@I2|UF)rkVtU@5O1c*CngQ+opPATFgIACDu?)WZ6jeNGg@skdHn%kzjSj}=1y zd@!Ggp7oUO{VEr?sXc%6^U?rn5Z$0_7lr?IiRQ0~1RWNsJ@KSRs(tw# zx)N-QA)OpAiksXvTyx*~HHoimx5U51g+!R4!xrQ+(FXYe8{NT-_vh^W+*bBDAd-mA zqnAGIXsPO0$?$tztevam;o&`ns$QVGM{ndaTZ0K!(3{SaT%O>`**#!1!ozO;9{yJ> zu&(_3aoJ47oL3L+>z96f9o}wOu@;`b0XLTmnxa3W&WY{Bvc(<;q^iEfC7{k3^+pnZ7=)>0-t=I&Ap_B5@D zcS)X#YU+dO#T45er60q`X^P-SJNf?g_LUFYhsoN<_KT*P6}$J`r&y}Fl8kjf^jQI& zU}PP`S6|Spy;(~IzKx%o^!L8K!4KAKszU=WtM0P0+YFZJaTLOs;a&9ZAj4O_?ySKH zbi|>nmigBkE?CXj=}^A(#e$Gm8wMviy;04P{J%Zw5N_LE2LNDL`{!fT?|49Uiq*h@ z+XDwKn5z5D(VJCyCSxGx1V=;SO@GcmHXAKiKRo%->V^zon=eYq`zhhI`V|x0%l`an zwWvBsh#@1!{;y^mXQ?mEuOnW^8P{hxJZBgm186pN8(wTs!0`Fwoa3H?Rbo!SY4-oU zL-v5z4knggIrrEehjCjEDEgn@GFgVY!uiR8atv4?6! zz52{mGoB@&S2>j*dQT%-OL#TyZhBfPE?_}L*cp1sfYzvtX*oFHmFNtw zAN{se;vxuJB0reiK*VvP4f5Kwla+S2Tc?VqJ008Nt8UGd#p;5|Yuyhw*a=Gi@*z8m z0AYYj-r(H%ZTW+U!CUL(gkb$*_hucG?s7WR?PXsa^w0VyMT*wEHXOY+W>(L(n!76; zjPM$4vtJG)R)fhDgcRIX+N19Gk8B^tXp5m0hx# zT$PCk`hH|HzL4yIl-qg5711Jc=JuW$6Bzg!E(`e zSGjfjU8cE2{mYN()pHcEK+*KLA*j=%ju$iZ2m|O*fZ@y_rRu*669@qBRTmI^bL&s1 z4ptXk;_E|L7WYc3UdDu)Fi76Xr@J*42dAeA`z1z-ddmW9tTj?_%J)Wf?*~J+*Kyfm z`AnihXH1Ty=z_8%cwJ1l@T`s`e36U-OXD5*wKjYy_rJD{ICUd3IWDB>(AC*9A;ZoD z7h+qc-31C+cehhDvie<=(4l5ZVnY-->fsiM0~OIP5akW#c#)@nln@tk+AKqd3Tzd* z93G9tUxw5F0!Qu%3?Dk9;%k3DOglqQ+8wac*}E!+|nZx}PI8&;nJybDR0Y z8dhotUi!!#9IJr#nbCM$NW=3NrIO&UcNjt+{kAMGsgRiOc|LeHMjg*G9DRCVDO*sr zurgBTG^h-}IGR*XKG<5}wjGfb)c(G|t!F~UCuCUT3ekwLn-)CbI{)R?J6JKLRE^)9 zOlbk9q{AaS^^a-5Mhal_thAfFm*I1id}#?v8+#ycT$_$E^qcryGKczIJtSg3Q}I2s zPWK7dd@huvRO^~2msn&e_xe^KGL?l`8<+)kHX2y-L%0-O%ZpJk?}q)B=g$Ws5 z4PKyECId7-jCy){YOh#No{UQMmzs-p7PBStwz^EyE){mXV&Vl8tMc&9}pbh{V~(XP7q4gOTO^w z?I~bc3g3l3qS5F|D13ax`t~9=I-2=>OGiBUDh!bVDYVdiF<+&es*B|SYX>V^7tP|a%nha8dyfnY6zfnZjnD({QObgjwM z(9w9Ln!st-P{TO5L(0v7Ad)_W%LgCiWMyP-{@#~!xBLl+Ae3Kk7mLy0-xHay4?pE2 zg5f(^zC-gD0ROp_#458!5>6k&c1iRA_>L!*FE{>iXpnKA12J?OXOh@t*mm`xN?S-g z=+mpM{!ZsE!d^UtP>o6f&Jd~cJH%yyRvG#BZ?k!U|6B^b8g8we)=pWkVbOm@pL;F^ zZ+#OSiyn-Kk-whTvt_n(-tTh@0MS>x5-#I!Q@$(zl?JvjJ)RxRISvI4cWh+f?yc_1 z(qLz3_9(nb!hztvf6l}XPW%9E_!RQ*=Q`vOmYToB`;?aCe2ilGaOK^xSp>BQ?bG?k z=)n7CKjL=802M*VC`6q=oZh~)i3@to{R-4O0$yfi%I?VJIo4lI;B$NIcMIC%z+!LS zMpX|(7;QW}c5*3IUT$)?H1OylCZ5>uM}s83J^|x}@t28~bbm%wU6O#iJG(0bBbTn( ztE3CkMqJc&%4FcLN^H^1XMW^g5o z9ay9J0tX?-3wl6y`x^%i<~3Xd*L(sjl|YR8zYbG_xVI2~PoDX2Pt?!bt5mWp7-vK_ z!QY;H#Py0XQ%M+jBw2O+q|CfUIDd?SwPpKYj3x2t*-@2%OBn}1ZuyqCy*aY|-N4`XHYie096z6Bz{?QktfA?4g}W`S@2zna5MQ~` zV4^wDe8$F^I~FRDSDDyh$z&`E&UQnSq5%Oi(!Jq3be`($bgc`C;^o&ZZ&&veV-7GR zz}r4k`wVC!!&<6moQ2EH3V)k+E*Oxi4$ zC+9P;ADjEc!$vukVECp%?{4{f<39E{^nQ|s`}i=JDn}0U`Scz%s z=2(f=)v3WE)j=`40e@G-)@09>*n@-t^Dc$9u&&ZsUxpm-03~Ma0^I>qr5p@EvAm;K zwydL9wtIvp&WNbjbnnu;=0_M#@zDuFcP{z%C|1p9+4*>nqU|H{Uf_{2thd1 zNa$U;(+bso%dtr}2B(OXRDXz}!&=?JnPTcfjUo!&w=qPRoXrm6(uv#zGDSP!euw&0 zsf7S31Vz|d1_XE(x0hT8B3_yRO!U2FKL)^pMO_ILclV^WZR^O&M!TB>oXj>xln1Wf zXk>%*eQ;g&me=G+@BWB^YG-RO=Qr=d?dkr6K~EDFpxNn%Sxi>4mzwQ)gI2c<<+g4i znnmi6c0qDP{0jggkOIu0MN(2l1a15OV}DUYkAdB1-PkBkfDproy^9aUXjrA*_f zcs5RZy4q4@_AM+p0n`j6R=}o9#e*m-6hmCPHueV;vCq4D0W`t1HIc!_ps;BD3xV;VK|%G+$bz9Dl&5bSkP>$a1SY@!k`OIgjAy#vY*E*%U;9+&|kOR3NK zNYuv4kxbq*EK(8mJ0hQ<=9z~P&hWkt+}CCY%bVgFgysN@zT*m(Wfc6XVfWp=+}nr{ zAz13ahX_%cNY%mVH7?jOud(g#9W47W18#N?UlFMB98=a;Bg0~$-FaAd;jNpLDJy%R zqVid1!g!fjyk41T}u}rsfqkpIfZ~hS(+XJUTd(I+4dBtM6(WbIA?=|=FtD@ z!L?}vz(r4=pQXAw558!3!&aJ#98{pC&ByrQYl&FG=45JM>^DXpmHnNV*FU$ zf5E&vp5NyIIvUZX_|A*LZ&;;I+n%0BMl`4~XI1#H=oE3dtW#RqVDbg&ZZIP9{x(B6 zr-!3${K#cDJ_ra^G4 zT#>$o&1A<;e=yJZQl_$=$luuh3)Jf1!DU_1{864B%4S~1@$adeuv(P(ne0%*cxAAqhdd|9_BhKpAO@cRBNBG{H zLT#L7>V#0OeE%mEgCizq9Tc><*me+D)v@ii=lbUu7 zEgEHO3hGA!2bdkT@`uBcu9#{g|n1sD;~mh_YW7RwE#j`}k>!8HAl zx)1pxgtER)A&gV>S{&3dDk6u0P9Ewhd=91oO%W6Z=6zKe-2hliUl}S^NmGf9RTb?Q zDHtuqKAdqWN83N>kL-MrW`$bgxNyks(VgV?8aE58So<-jVz8r;5e8 zgIgW*vgO=AKAO!L5<;*=p2yz#JxGZY^4O)G#K>(A-#_5sxvd!mtRnfY39F0+PlJgE9fb5c%z zK3$u^kS3JI!Dq8gMXU6qNsTl2nA-x5rOmtMRo@@0aux|{qk8R6yYU=8ieMj9LJ_&X z@K^8dcxSD_*f9hxUJ+;)e!g9OxyAB~#SfTfe|iMAaGN*LUz`b;Xr{Cir^>s_NRz=kx&yrwn%#=0n<LMF`Q)Vk-7jZQ47T7CRgY zU5uk#ktI)Cs^aVe7}8VV^@4BU<%v^YfkVG%nG!{b3%T8-kjE?z_7jpkH8R?w1a(SK zha%i6`bX8QrwkB)LZfCPA(f#dB!ecd+ZWSv3Bu+8i)c?X}64u!OySyfum3o+-r5pRv0Gr zSCebX*zo0Tm|sC@u&hy-nz`{69D+C<;)v7HoMVe7#RxvL?_Q25AmeBXq1}rBAN%5sybg}s zABc73gk|xWYW@*M=H@1+8BR*Up=06`2yIm7GkGPBAqX<)&kx@F7HrPccOM6(+fVn! z0sPfoc4GBo)I|`qf@b!{Eh^BkBrA#UO< z?&CpN#GO%!V7bc*yV_+I5E6msUkag_uO4rX2`e|vc~p))$L7h&eUjCZEpe)JdKtO3 zztCLmI_}7hNnQsP5Il`@>V-qqU77c1mG_n%8csDqT`&K+!EDJu~>uIvtow!swLYpd+d!$mrxlA8P1?q*}|@gd~k@pRVVx(Og=XX~r~3$|wT7VJun* z)Xaz*HTE&gRrRA=tlQ;B;Cx$?8Bb+StkmXc{Ua+*;74`_&(f&U6mqjZ)G5pE7`o3> zclH#lQ*a-KhsXznDH%M{Uy>__8UV3kA|<51N;)q75P&|WAsQLaNH%;Tsr($?t2)Rg zzHu16GV3h(vf{bHUy!giIP=-XvCgS(wCS}h>Kg+Q0U3OVz6emL7W2KJ;;8LKqh-H) z*^Ggm5-pcs{|KoV*c!WyT}>tv`3Gi}opIR4v8rM|oV(TAs~>YWdfgu7A(cM-1L-zM z=E!qBt_c)J;Ikcu>f212j7#bg;x7>3F1}oizxXS(MIE@5ZC<`ElpboU?K40s%!1~8 zmY@(dC(-RGJhM{c?Xl~+7~S5@kT_)}i?X)&imkW^X|a0cTTsNl6~LJ~Yz!ydK8Fn) z&*bts>QfHSpwqEi)!7U?dcZmYcl9ANr!)CQi!MzlHW?s zMd(!QNc2b3{g_p#Zb=B7>Ujq5Gxv|trqXueXZ0r_6kJ-%3q%d%q!3Q2k+U>rSn9GI zTj+8=-IuP^txynl7>sWP#g`bsfx@Mos_XX%_yhR|Ks51Xlblif$AD>lYN_?n5_BUb z6eCteaBh(12l$YGh*PJ04mOwSf9GJ?(GmSxGV`OgOgAREKy$<@4BJ`W&WD=QHsNe! zsa~f**Gwm>tIyaL`TMcO?On`dF+XiNswO@g`0H0elxbHLFBUv`p5}%SD%N<$a~u@8 z*g7+?Qy7(X21OJUm`K{}8hWnv4pdIdyWVyTf4K87Q9grrt&P09ZewNMAd-@Jj9JsT zWZ6A5{l?AhL^^}=3R;$viIo0RF>ksSCD_6o!?+8Hmr=dK#?BiDzw3GfBDSQotn_G= zCmMorY9%pgGCGeUqNO6g4L4q2x~8NM>tuW9y9+IZvF4lyTTVtB&s3)>*|&$+$}aa^ zP6?Zt0JQl-lD0I4bt@T~_*XFykosAazZ542NB+kj_eqQZ82T{Tmf#kcswa7Yx&or`d&%PI8J$OmhdhE!9I-xaKtCT z5w}J%KpuWY1s{*C8{ol`na8!}v?T?YQ1mezK9cX}koQ?VHQkj`&uY?$2+5@fbJ>>= zaj!yr{x~kLe!Hx!A@XR>ZBelSUl+RITghi!dpMAdk)qQ3z5p$c<{;clQt=a7dFShz zeE1x;!1w)pRG(WTPbmsWF~16v@9P7A+kh2xl$SX=0dViu{tts*CPoL_sS~;C_4UbK zxm41b4^cYtbn|?k&iYd?Z?s6rG`WYz9n|iK*lJ69$v9`LJgj_uM@aMRsD4tVIux~C zDmXpS#FJk3l3q&nA-Adl+6nNwdpANgXmG@Uxi~3NvQiC7fAb^fKmuf1nWat)Ns;d3 zbQG_STZCYM`LxnNJHCv{ci#4{f!}x0ERWiMrXhank7|#8Dw4pzhX)aYY>;TIm>+GD zlo&pEt^$A|;c>G0g9%$xJDBy(mt)Uy^XvG9$#kn+UBX27;B>jcw7QKov_vqfv7ku) zddX8?yYbRAL+?GT(rzWcP*hnd)dr1+l4#i+V5_Y!zwH=EL1aeZ|06Rh$Krnxl5XN> z#3s43Ww}0CfE}!Zfm|i_Auze9LP;i^9Ph;vz1{PRJ;n(&Hh_ro4%$oPNQp>AMm$UA z-DB|Bs%V$|aWJ#`F^MihU_@mL_7o;|B`|v4LB!ixrbn036#)jwlILF zk1!+o@A!qd`t3zoxD`bbRKvKxWXc0D4;Ifh0=sF#Q^)&Fxaky|t3o+QY1_-!nFxFE zR%@WtBs|Nv$~*`9{WTV7JT;}l$?xlq6iwHX#u~r(ICwB{4)2!A(^z97W7oY{W84X3 zlis$JiX<*S%3=)*Cv&TE>u7jjJEHHbsVc33DMXUlo?3G_^CVj z^QS1p7fk`xNwXIByRR)1xHxG{+h>wZokRI2EE_M6y57DDO4m>kG*Q`dQHyxm!k}1RL|3S z!W)P$dHXp^WwgQhd(YAPUVs4`?RGwV{P>v)UZXk7Vh{I1of0qeQ<(dt<; zX~_v`;$22fq5ZEIsEjQr_Vl$bGRjR-)`Ir4>ypO{c(R zmuLcZpWKk(tsCvYwUMh*&(|s-aDrv90skwsOdl`K3)5)4YI2+pcumh!mJ+-|HD1SH z&~WkelTr#?z4hddV0LwKrgPa)ftKosMPXbZRf9AU=M~L!`_p}rOja6-=a2E}a6`rx z^ab1pT8Wp!`O`7qwnzsM-4< z7t1xEH~^zDo-zFk|KbJWvIG~}!ZYBs>_7FAVTA1O7RJOM8q67n?-Z03MHfx?l`Cce zN|=_hherX_>ma4vVOFxn86s&j{K-LVP=>{$;d-0ZW3yzkkZDf{h_?4TS8gS|99=Wh zuVOmUulbZXBRME(a4P|6bi;1qOHAG2Vh+$y8JFqK9oLg;;0(STP!gUSWWNHp7M?HWqOa{D6YJ5wLyyH9z0fPR{te;WRt_nGsTcnOy0&h#)u&S>GA3(X3Z`(ur@ku5elj*#vGJ*vr^KF;dJ zdj>bb*=jlv69Yvb0<~LE|K|{Y4$KmA=^))z}CMug>umc*S5dg0|JNO@*WG zu8-0iElcTO-oH7X@fIz8uJ2YdOsH4Mh7KoH9F5a%w2SUUIf&gW#-7r@pA^*|9J+nVNOf&RR|sr zip&=&vfDpazBw-{Wr*sa*mSL;C9Y&pvGZ7}V36eCK|$>W&Nx#8x9GeKQhV*eF6J28 zirZocs_h!$*7xy=hC#upb(vD_Y$3QlShN+g-VDfd+rE&@_1^s?#iC9zQxy?ab2L%A z=vL;LWCF|bVJ_yMahJ$d_M)rX5Sbl?I=!zxKJS%-)>P^qfyQTAk0ZiUd5I~~c)iD7 zMp^qs=YCj2%L4g8EL<(2uJtgUqPT6wbZ}d+?|0mfOj=r$+|iJYq<|G@J&w~%=kL7@ zu2NSZuG()8*T(rp_`a79G}?OE)hean0LLi5+j#hu${*NEn_-*OHKW%{pIag;S#?oN zJfaR+|23*%< zpgHcOqcGoM+0(X=@eOxW+hpb^#3tTZb;mPK+-}>%GxJHt*utAug4eGeT7>98gjwXt z);h9heGO+lb}KU?oi`BhPwBjUI#1{EEm5DMgse!>huo}M zSV3WPUn@+~><@>ovC8tDQT&J+ikszRZJ1Xo$q!s!)m`k<&F3w;o7B4AWUFz_Sk4!d zjaZJ4iE+^dKOHZ(I;vhVwxm~`{Mtdn{@w6V#7)%j&x!rTtFUiE&7ruE60>M0>Zsq` zi!ne#D@&AC*a0xP5CmE0H(Mh{oLU<;I5ad1OX0=3W5rgXO!LDr_lx6~Ry1rK+0Rx_ z=GF#h!9w2l zgid5S@mPF;bIlO;tRDmZy|6^{ZeMiK-t7$6iJXC4Wqv?z`qXoJQ^K;oGpXcYzMLfn7uDe3?tndZSM8z8 z>IYeQnYJ!LM>3Ek`cRVl_zEB>0hxdi{DXjhHW`|Ll6XLWWnrrM1^BL&;p ztS{EMXJ&F)rJ%dxU##n&O_z2Ktw3po24wOy0~}bqok@uFBZc?s3>J|`h*YVT!{NmUnGK_g}&OQ}g`jLf##B1?$l8uw^qoyfDv z%5kE%97efeahy783aJvEHBvstKU9PxQQHk)FG_+d7&|yIRr}KA){+QM&hj6`ADEK= z5G8(dynhKD{t3GNN(d`^eD%zFpgdsb{J)T_$1H(kIT{~wTKFeItiL8PgvEWv-L#HP zm&@P`uqO2>COhvpzrpy;cl$;Ba~k(SQ0Sr^5P$qs9zj_=U!g?0Y3LZa)RNC0N$s!~ z|0bIKfm99L`=U%>KXnurIIC|yggdl@JLi6O)eudTO(tW^+@2MUrwCr%KM2rwfnR+3 zvXvPp2&5oXFOu(NgZrSw=K*VU963T*Z0g(|*T4S+(=!-;=>P2rHrRsft~=lHB}k0baiJLkcEj8S< zOh#7LZa237qPaq(r9iF+;7BA+e_#-?Mfvr7{4i009cP#qg>nc~MAIZN{MOgg@Sn7@ zVg$s95G1r3z};_5`CVUfyR2&hsJO9C62*6G{6IqRVpkhwJMhl$FBTWV`KSripUSg8 zo#%GneJo6|u~~+ySU7=tV%=4ZBWL?F&I$b$=OCuPH5gxdi;>|bEfL?@BwgK(05z_0!LCsr3Pk5c7=;a~= z;qB4sy@Bd#Q1Ku8z#Op;1kb0uXh6z}fYw_qQ3ihUp{<$&S1w_7FNr|vgxXUiD0R{N7T3G+$x!?r(gM)la?j4f<34%(UVJ+b)1*b=5P0RhmUy~3*neuoZG+g|+ zi~jqJ{0q2>dRST&othT;_czbo13Na=gU)6JOcJ>~&0p5?f7faLADOQIgEaA%Oychx z0*D^|7g6PZC}4kW>Hko`{x{j`|L-Yazt8-J;Xq+k?Fj5B3*yxJ-6*-V|@)d*+fc%}U`3y>r`Ccd$jHg~< zqXpPL*=A;DV>{`WbF+TR?*!Cxl~eD5a>)RA=ES}Vx}-)rJ5H^Cl2!l`GS6lkq_qq6 z?;+@E2oV!h-KDcYQ|psXF*_*Ge%pp2hGjM*>iv%knem=fVU4#~8&m^MqeVW8aGs(l zP-q~Kd5_sa1a_(6sIZ(#3rK#VIU@Xfll!U_>P}ngLHq;{LO;w10gm!KVvFi695b^ zbtiU%lKw0}rPf{64Su_;lQDyhLdcnGw*F=zG6;eq?2fmM5VCU*(`NV6?b_t(jAx>V zn9O?e$PB9H!*o{G0Tf@)~; zEMF_1{j#WbbZV039%uIg3#AWAOm-|TL>{Tv{O9yi`+&G$fWK-=PXR<9+0LFvw-P^P zt^he-oT{j=&ehKKHa7C)=lLfCRkIKvdkqIQB+voN3SYPd^sfROP>Ll`Par`iJVI$~ zh@J2T;A%zhG+yh2%#gKSm3_SC$0+94w<49s)$Bmhs?(`IJOR9$%k}+rIw*~(Be+v{ zBSx(RkIwThY~lP|^3Moz3>9%hY|3`(h9U?!=z2jkZ$T&oz>qGwT>GBpfZ1EynYtxE zxS!9V30?$g|Ez8C!WA7*NEaeAMnXYr=^{{`LEAIkGpF&}{q%a@OHvQ-O(SlAPlwa+RYhbyGki&;lO;bAY%14L z6;w287Q^tZ*R?Gya-oES+8~Q*BQxNg!8!zL%qiBoPA}CRILLMIvJgVRQB4I^zTb(H zgX^p_e404Jk2+G!SBH9Jj)J|ifY1Goz#NXoTupg_aeebenW05bl9lSbm|hpe6Cz*X3P>cYQnD7zI_SoED*Z>D*7By4)!WC!^v3 zX~t-7^RA_ng7>I~xDb6s+wszj#U@ny2W?e;-7h9BQ>^6}odt$fgfXrk$=>L_a7;0Z z&Igb`s`hNi@$vnO8t5)1VsWW&{ft(hBf!-)IBs1nIPVdQ9K%wo*|a_LOvTm9D%LK~ zEO~mfbWddck0&CD-VO(TU+N}KW+>;Mj3x#xwRr~Z@04btA{bZs7s#ZSwV-H`wqD7F zW$o0-xA2Y4nD0U!In{Bi=_~*B*9ginR4(EUdpqnND0n{p@>YH|%2 z+NYq@!2bD;*BLCc8mp%Rlh7U(@|0K#?mlX8ap3I*D38^H5i_3*t80cFo_~I##z~Fr z_!UDqYVwl-fb^QBBS(iRqf3-1y>}m;9!=H{q8%Q@FerBVT_0OTKsC>B8m$*@87LWI zggA`H*d3_XIP1aAzk5SJ4js>@CSGHajdYMXh>(=xrKEfH30`ixeK+t>$>SRNq-DaQ z1Em~@cN|>mIrJ((l4(Tsw6As~l$QMt1n=*yHL|{HP**&HBX~fG#-2=zXJ;~vViZE@ zDYgyp^D|%%#-c@MAkt@|Ha$8fPJ#8`GBX-@@a)5_s|L|Q#YEE1hp2qG-HS zeihDXRQmmD29dl>&u`>Ir5tL#npu_0o$HNUh0VSKU_7nC0|(6Q=53vhj`HduFP7CE z?T9|XUph@W#QjvW?@me1eZ+;nQ<)D)-O-!`x_;5vA_Nq~`-gEK@`$D}^^5Ru*I9R* zn?|fLfu@a>*rr1DQpJ}o#{kE{6{P(9nvBx<`v+Haz1UoK$JWnwlSHRB%e)?YZGmCr z-@cD>cZ7MVSn2PBzDdgQ>JWaL4PklWFv@026k8DVi zdF&vvH)-M!#qPc#hvc*}=qtHR@8VUs|}=Z`zY_7fSiP=mAY4Uez* z_b(1iH$N%DiVVsuj086dY!?Ai)2T&mb?zQSxg~4}I2utf;kin7+9w$zo4qH6{Df>hanmJyb8(!lS2m)ZYkh@&R%_1rt?^ehfx!8`#IZkBrbDDPVyx5Y%=TjHuMcZJ zw?t^Z5fsUFT;etZ2(nXH_V)vLqfO(%5zqd1ZU0;T(37jV*QuTHIx{TsEIP5pjc4D9 zUPib-9cwBzXH7!goOj%%kwup2Se48{PX|1AbYbDMNdWigO^}ZcM_7F?+dqgRt3U3@ zc;~q;?WhoWaFb49-%B|jGtuNqOt7?Vk0vX&Tudxec4=%;o--AfZGjGzeBP?c-clYg zlqR%NXuY3dw*d;OC5!vFNGb>Iubz`4+1L1AvK87fIPTJ$cO}Gv(iLox5Z6G8a6$o^ zND4yfwAy!+G1t*_w?He~#$}jee>;f35+1&m(Swyeu#Jz$DYNt=)i8j_%Vxv3+^Rev z->Wv&Zr^w7Tj6eQC2PRC`@HegxV)F*`_nUGRlSk)PBLB(VA?5a0K+c@luhZ0)46HIV3dirIXwY zUI|TujwcSphFss3FxCiZ@0R!0Rhvk8?_xUa)bGF+kjfkf0xV9~hq)bFscXY3j`i$| z0Vo~E8b-aJ;Azt6TM_2>)M`kLzxr^vY6s#t1oNU)!Pt*Vo#bm41I<^m$)Cs|uUfr( zWqcrX@W0wSA?N_x zo#r+}f|sc9dgBbcVlYqi`dO*SUMmDa3zm`105PbE9LGMVr#30fIgd@Bm$SJ0t#^@P z>V_O=TGy)Opqj3RsJoW2?`d>YBkUH|os#Ap&u}5%8jN=aQ9D@?n`>foqEM6T$E-zo zG@izQw;y$mg`D0V5%GR~aD_#3|09?3e@L(-wdDKK~>VkrNBj2KbggsTsE3hD6%iDpNsBs5oR)F zQaAhJ$w%r;S>efpDv!$3Nj3&3z2_?(WuDlou())D&I!Bvx-U&NQ8f4Eq1bZZX}k_) zEPz1KPC=P!rW&9ynb@i8YP-0yUs_GN`73{#2tWhFE~1iL+@F3$i4c~BJ)qC)F?Mhv6!eXiZIGsmPx&QD^YP1N0`R-iw0Q`G`KU72CTQAW)oqwnMt4B?ihWA93 zSersJzy%i%`WX#KvJcIRw!9Ka;x#nxDSLMg@sW^mv*+oRJ#duCV9i#y;2W>8i>0uG z1LE!&Gx_EDtiyF^%^qp#^Cog0bnDOT?quFi3R|22Hzg#5oV~8j`rsB%{R+NU+T4M& zN$95Qn&(>zJpy^S74BkLe}gvZ10h4#RMfK^MdA*Go-1Tv*%0d!s7+%>k&eE^+WB^q z&45jZ>f7roQj7AoLz$S>p)@P(5zBWk0?2)oPz_c+&MONm`#ObpMC>qHZXM^G=Vka- zzjNOAV>8|21RGV)!gHVndzMx)femd;v5>MRkFL;mb`<-fvL*6*;Qq zCn|-Rcjus^`d{V@&bbP@g%X+6Bxd|}P-?qivwl0t+_|FyS10&O-aOK5U${OM`5r)- z!wOuqG!s6)aqk>jI^Auls{6cY8+fNa?BYw0QXmx1(U7W7^z?+{9Ea+n3D<)3n|b2w zQ;edwq3I!n`D1HLSY(u>QToyD)_xSi=@yi4kCm`t$LZo;k9)$kc~|dG!ymrbjZz!< z2*a&Bd2zz$5>FSeH*CAvnCE|5b(E8(o$h6?6cK0}&+|IW{h(D1u=ivSteQ4=p(R6|A>CxFv6XhiZsZskH0POa9&S3bRUMR!LDD4<-Jnp{#rWBP08d~$cIliB$~jP9#1S_7fMfr9zl2!gJDB6;}7^7YAMd%^4% z2VXzZU5aw(aho8>qO^gmnjPh{(w7{Ce2(lhe4fpD_SO$KK$3-vHAM?;s)$I%_q;IA zu8=ESga6WZ)gfV|eE=o{7}hFT8r6l;oh|%@gxL~(sZXn%R(4LWrqOp&|AKc`fO&eS zNOB_&K`f^80OqL-D9+fK&K4q_kQU2*gH@Pe@y^a#BousEuf9$?-`;(=Ow*WqTD%H~ z&>%^2A?9&?Nh~3=ygKkrNLgMs&mG(JY!{@OHWY;PZ!%2~1R-v}H7;Ut>vR4U{P<}#I6F}KiIyorlA z8blfnCW6dY4+_9{G(zdcPUd=zb&rNwHw|-@#)C2$7Z>02%Tjv0yTrmM^2(mA0Gds1GD71Y(*saUd-E&7oYZqJ=G4&Dr2K>Wcn$#PRfWWk<5(Xv3|T z+06Tu&&Q#_dj0^|;h$j|v9AQTnbD@zj_nyLoox zt2BY;h=FNumz2GBe^82gi+5C?dSqeG3en176h_?j^^prtm&301l~OHNla+iMcHc!$ zKiMn72)c_!W>zqOJ-1LKMrs>N>1d zm72m}R6vih%?fOPBV8yFJ2z_~7N*`)qdX-nN|CODh7mSur0WyYK)oLqJQ~?2u%r+# zR$+%jc83~`hfG`oug~;lxFju> z7Q}FurFs)0bqV3e(;RHDEWsq<6~)`vb^=FZ92O)eO)|~#ks!+Dt?MJ$yh91gtM1s@ z(RQcw!2UBw|2zf+Q=R3w<>xkwiScOG_mH%(bN%Iuf}^f08G-+HxT5AZBah zC_Gl@u7gHaB>wdo?9_%cNn<%C(aSWND_I zds7p(;purjvx+B<+r%a!twTZUBzM!|45*?-4|p=W(O;KEtnOYD8*OJO_QOUho3ICkKMwmUxb9lIFGPBPk94TZ%{yQo{TZYjacgM#n)Ga){ zF1PB00+tn)tKtEX3L@k*o+3!8XZnT<@sjHAh`y=Zn^LbBk2)XZp_Ay^2o%~9QW>KH z>6weqmm%w?xTqmlQpoSsgf#C4W)i^L0d`vx&8% zO%m?jtcigys~@bq@cqXR7R(0@GgkDgsm4}EeBhQW`$;JsUTV~)xY6dGI&!Xdnj7%` zpp3@z=#j<;d^Ythx2<;#{7@(H+h&z1d~5)VrF^XEB@$7*0YAR)AKh4BJ?_ zS(U93p(1vPzBW-9X+$e}45l&HKAe=Vb7rF$G6zI{=$ztAt7G|%2xCQE!Iy~x3|5k;4P>ml^ zCsU7Ndq$ie=zv&^5PW0y=M<|avuVF19(Q$L8HX}Ok~qDFDjqt`4P6AKTcHG23~m%t z(a2T`aI`b!e?@T`e+UmE_jPAQfFOcQSa-R4oN8s*E9$cZATIK zm1leYt1O%4pB1LQHxodN?=Prj-5U4gKb6kSx3Nwma7fW{7h~~$;4neWW1-ZuM_q6| zY$$8yyf(r3<8@@jXBe|7=}azk^>ASjnvRJbe%Q(r~ALp^PJ~%&UwGzAdL5{d&RY`zP{H1CE}%T#S{~Q zuxk7L?e~oj`uespEmmv&KuPT>8ixr@+pP&zr#LJK*+8nLV)as3`s+_SK$OBz&be9a z_$yWBL=4dn9@hrpisqS2SWHYY{FNA8%gwr4M5azfY0+UX{+Cm|rfV2=TJ|A)>nrF_ z&vi9rCFg;5;h17DBjh}$<;XJ+1B#ZyA~hcBUZd-MSo4o98mLVy4geq?&0@s3h6?=DVrew+c|DNpwkYV!U{}HH{+9OWE1Xcpif-E0v{#AIJ|2Q=zwd{4 z_l4J9FoJRShm15_hwYy_DA7;%!FTy**L9BB=z&W3N9>wmpJhY0(oFTp+gkTIofm

    uNcFId=?#!${!B|^)JQWn=n6stKkL%aEi(O$%!UAMk#6olO4fUUnQu#v8->twGtM zfJ;xzabz^m%^jMM-dq!V)9PevfN3M=V;WmSPz61VD_YCP*t*WsVyU-K$1+O-aCYG` z)kVcGpq7?+hRH;zyGQOMEB|Dju>*x9<1}1hbM0>XTNTLmR(<&`PJ{awWa-Y8f(rQA z(}JbCtpKgkOs3I!b4{!NrkqJBUZkctRu$6C)aH)6VLRr($jTeGcp|mm7m{a!;rb$L zvGq+W>tlc8&wTAZG1ABEBn9bnt$B_y++rz_Q}wlZEIlW-{`QNV+kx#hsbdvlO^eZ= zLEX%af;bIyXJFuk&LUr;j`lL3$Z zYFlDd6Q166p>IM3!nLC;@{9M?{5!1p=M42AZ1)k-4Ss}9*Vh&H!i6CGt_E!NH7`*W z-AgPB7k(u>3}hpyQ;AJ-s{6%ZKH4?=^k92=W4U5HF$jlEj2S5>2{GSsZyjH6_WY>C zh3TUr8|MVRplIopc|)#o(6gW?K6?SmL^c9#_3grkV^Ji@MqGzdLzCt&xbFx_o5V-_UNL)DneeTLi)R zTUtN&%o7BhA|ynbIMj-8++~Go`2lAUUutEru^maug6hy)D@$Cb>0t2n{M&j+N8fzrd4;1}AAI>*>TYk@$ET3>) zv)W(NEHsiWvEPvp>5&k}eS{cyl;#hW-65uY&Yab1zF+B_UnqvF*~xMxJfxfcBIg9^ z-uAjZax?6O-Gx;W`D|?DJ}C21G=JNAPRIn6IB)yKTgEE;l}-0ja#c!N%dZ^Ag=cp$ z#puiqhA3>B9jrI6lBf#JL~phSAnOGm2r~iJA@h#@iaK?&*KZ+@>Bjzor1!h=i~xhc zoMC$cIWfdoy|ldxU3sWgQ%5THeFXxV5@-oleKGIRKmJ(X!KQO>+54MNH>Ep&*;Ish z%bPgqWfsmGo~$FC|E;R?g6?*{xZNBqPXcXcjEinL8-3v{r zeKs?D?iM*8Kf;8F7Ek5-i57wHPQPadB9pQFc>!hY-AB7qW8Iu%Egm#ODin&+BA=Mi zW?P-_2%o;Fq6lwqIDZryc((89HE7-(Umu9nUCBwkI9?j>8G)L6=O6GiS1W6I^E%9+ zMqcRCV9$8?#B$|Sb<%v?vV)}akz=k`Sm}*eeD{+_4kKphq|W$te|hT=dPFqQ;NGsV zZ;!v@cj9Oa3S4!chrnC^55C}=vG`Ekm->)Ta2g#D^-I6rd+nhx=5Fm1o8fY_JRtU^ zMwi|n*TlL`gpYT|PvWymF39fk?Weh6mz^%HFPzO(WTz9F@Wk1OpS`dUfE?$ggT~0H zDx&kQ@bJgLXHr&YJ4*S(%bl=7w#-F~i;cE5+h~%<6)#g# zSi0SozBJQ(tZe+5o$)@ta>PUzEp0QJE`Oa#v`~K4y*GgiSLmJ%e;NI@7SwH9)o!$%#`_W%}$hRdbJrZJr2;yW>7L0@#PFd;}w}aZoSfa{uHNBf^!v zVPrtrLU=zuJkW;zToXdK71RbBI;ZKnxa10jFS-<8rmA&-s? zrPtXm(>nl6pl4+F4YkhzP#1)@_f5`I9qWmG?C+PTqcY?@OCNn}*6}iNZBYRc7wDkQ z@Na&g#4qJu?in)LuSiHKcpw|`Bd_dpwrYaeJBbU;MNgIG?EQ}SrY9P!Rzgl3XAnG) zKiT=30C*P~QzC6|18{4nO|s-uDce8Bz+5}@fsU8F?4$x28-z~30b*RPiBYf#>Ee|vt&+I)yQ zMK#(AMSV>$b|C!b5-d#``_(!==smvMZvM@CVpW~ysV5M)ssH@71hJ#A56-3j#4MZy zRta`j<(P{?4_lKwmQ`bMsx`g+Iv2%d(NE`XEr{ML;bnHOOE+N%BXp_X$*7*LX3p)m z7PxLG3}IsSPG2tZH`=dBi$DMkwv?ZVboX+6vdcd4GkYtqcIg@n0qdwI`w6(M%s7B1 z@bsN&HI?ej)yOEk%y%viqf@Po!V6(xA_jFQ$9W&z8prXiYRwhPj*E9;TLF#soT+PW zLE|97VVG+Rg~UAC{S3f3tf4fk!dl$cJ(+P!R4pIE-Mlllyi3Eek{9SK&p83nG-P1{ zY9;H{!WPR0=&=vWIO9H_fxLQ0A7k^)a3#;t7{a3i!fTG{ZAo#QdSbuHOuz9Xf{N1a zWutsI>S)J<_qQlw|5ftEzu;dwUXXJIv^M+K{rJ!dyd=5FbWfF@{VNokWDlfM@V?nb zr9PRkFF$pG9&WSu(%J7(ZqhmIy0D{OXF~zzT~SW5k+jBKj~Jx&@5gbNeyJ)pp<1a9 zwundeKZ~_O;rdg3mT;-v?0c^f+qLT9Hhl^_Drpn)L6UOT_{P2WYU34c_d<5kR<{^U z-w|6u{mA##YNkStvA-iQdM-Vy2ocQ@u<4QFs#&UM%$t^>0Y#W{lrTyYh}B{vUTEwl z2LgD&>azv6Q6JUk;td`O^C&_FF^RG!cl;bIR_Z}rXEv(MoKcE(mv(gEqalc`m*Iv= zAB9!SpPlO)7@@vOgD|SUCCsE|cWVBVwFxJEQCQsqo3w#bc9wp>Nn8TCNdd>MsFS!r zx7#XaC(%aNXW^mu+=cr7T&?C_>xJjpR{W2i76oeOYBGI5hf+cxQ^AHz>>3WuGTUEX zoVq9WBJVaX-g>1P{lwH*=pBdFdF9PKj&NHF4Cra!=BMld40N~Lq2XIQRCb-n28bFN-3UT#mhXD zC^5FaHUK31ulhcKvvjF9r^oH-(VZ?g9m4eX=(bD*ss`jiBy4TT>EaRXTa}I%AS3O* z6{;1#cQ0z0vUx39zJ0y}D)tOn4CC~6?jh*;l&}{9;&jv(#`XBRr;OQsvv`htQmkxE zV25j*9=6Y&eL-eK7g=#jlxgSAs;+au(jR>BznI|({{M2h@%>7NCOjbox-G`4Y#cy_ z9W=BGj?%W2;jO_HXVf#jwAJl@)oL6MR!KifZ1~KyJ*>vVrhU^`qgBoLl5wYTQN0UJ z*oWG9!}#5p?$4i><%8u1)V3cYJwRprU6BT9J;qOZ^=UWE_MNMK^`7f~iW8QSn;Llf zt@UB#bStML-SSg?dn2n$lmkWMKes7!!)8_VoQH~;4E+VloV7pYPP3Y(Jw>@fE9TE%&#$U69@EY;nqK?4s_|`unu^r0+HJ>kQo6JQEkw3+LZ`H*7 zygh&CpDTJ*0OZMlCL#AocY!gvE}eH3t76ry_2x+xoa`!#GQh^FQ2UQANB?^+VF>s^%VHOb1&lBv)`be_skl!0OeMJ*`e^l_>PvD#i)Y5%p?F*jA?(3-GXGHr2^9CYdoDZ>l!V~|mz>zN$V+M@g7Rl*ZZ%^-Ru zGFjfUm#z{>n5V!}B~G0NKfaQm4x$%XkYRtP`XaSCGV(fjlqHe+$%|Cz1L_O^8i@GA zgY+t4Py=e94?jZ!i;a#3k4km7e+7R8wg6|$pV2-`gE7K|yIa#K8Sq~+Gr^-&Z!OQ? zWWZlk{&D)BX)(NbK?lC((Hp9J6M0H9f{BRbT4y(M1{m{_LMc zo;oc8##qXsEZ`6Z%T-cT1dpa!Tbi8?LVbM>@H+pyW&hu|>`pMsLg`l9r@l6enYR|j zAe~9StW{JXf?dzi$Ee=F00;rqM~)+A$HOd1kGvsUZl1sukgW|YK7dEMAnNE>x8>gV zsV@tpJ8D)q`hlwUFTI7v1ENk0?hAa*V|j)ZX?!+A4X_&#e+fnc4o)v!>yp8BcH-%^ zs{A>{aeS!XIR$K0bn@r7S5&BhkZ$m)1{sXp9t ztIxkz;0Vapb+P5w)iqX$t|>~krBPBuL*c0bY@CExFv`5~bpoT-)7R2EQB`hMiW|x1b%#u_|3r(#ongSOa~}!_-9AU(T2Dimx3lBnt{dRD;hOp5W$I?ELbd&9-%$ zq0Jka1F^`qv+(fL8|*6hX9%_<0*()~VY-kYv?(&DA$_ktX-p}O%cn)`fR<}?TkyrC ziT~sv#UEy&c#8qgIvS#O?PnC&ag>>xpFt4H=$&g_4(T-SzxvZ$l<;SB$rFa>TC{oe zWGX1x^yioH3BU{pUnGN>ds5Axb(;v6JBgo&N?T(0CH;@Rt0|8GZiYVaQ|r$<*!=9n z9DFN2IhIT6Ldzu_l$`x@$r(Oq0Ooe@3WVW<8aQ;{h1sZjJET-nFH+H0TZJmmORAAy6_UMwZiAZeo|^YZ zyDUycRdD^c{Fu*Rn1MxXFaTxYZV!l>j#B&4`uqDOo<}xC81fhZ-X!ZW>X7pO0G!w# z!kW0ofM0iBI}<1ccs!M2b@Biso)yXvBBu+MD4f;3=LbqC=@K4H(pjNW;GA~jbs5Q? z{^C}5=in)u^nXYB0H&y*zD5!#MFvLEtf3vai)Xz+AM)4$jFLFhoi#U(*gQuq;!z3i zcAd;Ucls1wY^{_*slDNEUXWGy=R|42<*XwmeR&t~UNWDxch?Cd0#l?!&YNzG=C{)o z3dG)Vx*TKCcGHK(5U7^`9VTkJ7snM_?S98gZ0g+K=`fJMd@o)ll?5-S+Mc+@gum$c z$A z_hJByLi%H+ABeFhT5RYv;lRz$=D{;aPm@T{LlsJ6nkID)IEXIIM4Q}tD`qAAcTM>2 zM$c1$&R`72x{}LBwp+vFuO3`Mvwo1H>7dvu~5?Z&q2f(B;Gp+T9DMW6zDaQRr z_AtCYL%@fccUR4@fS1dpk%k;!})*%`HhaGE(k$kHP2Git|+; zL916SkQe9_x`WuNmPa5F8vil>^TheH@KoHECC*=$NhOIC(UZESs{ziHN|qWo_ENR; z@R!x9P)c9X_>+}@2_4Xj<>`>0H|3vmc&iTHL;9|j^A`iqRitB-@BF8>(w=zsW_t>g zp6Mui_n2J~-F@Slhk9yfUjEqtsv5v1zv#suyvqT<$XtpV;s`=%Uo*M&j`+DY&ynAV zSEEp9Xu{6OrrA7hr;s4B!S&}#QKf)q*88GGiUAL5e#_IH(HzOs-Od5Xx>%wF|G_Gy zO3%b^%Le_u%(m}i2!z^BW6_4~&zGaY6+#>N(!Q4{2OIFK^~SCsf>BJfDV6aJ=8+qfrxHx6jFYC>y*RDnx?0~A-V<3EzX&dtm|JqH*E zD}zTMcbR1eTh;XM3;?#S(ix*BIB6s_)!s%nLdF&HhYzNKU3&Q#`)Z1ls2m^tFXUzd z*-94O>SaJc4xOO;t5 zpd2z1D83UIvgIWfK}MuXz8L4 zLS24P>wp0gV2eq4O14|D@CMecxTE_=X9vzZOfvbjl2RPrAo5_lUNLQ~G* zh;1}jL%MdD=8#mE78yB2pLi(ld)LDtNBipDvk5-em2!#l?ARM8{ZjNI?nI%tTkbO%g$mgxZ)=?<-JO+9tNR;hGMseS0lY5 z{>?o9&toJ7p=2-3walf|Ltzm@jf#s#0*LM181YHTpkB z)B>}Lzljl_OScC)d5R%6@IA zEYG58t$8|3;C1Vdushe$D}yc+du=)u3gG@+UtRzA$q_Hy)Ni*%b8v@V=0YZhNMNTw z5B9MIvYdy}EGZ*}yI+c|wx-K&Dti6k$N#GJj;h`Jaq_(BP4n}3d`ZdRmPbtLNWc(gm?g012~E?<{)$*6}&%lEiLbv8ys-8_u~s@6DN;#(<8}NVt%9o))@}uySN2MEFdp!i^$pfvnU1 zq2a58KzKI_oDNh6#3N-+;ja;dny{ob50PLDM!`3iNp#q@Q>}m@wgKd3%kH{UOR0@% zV!)f>-;AH0d`YKuY07m)tcr(nrFFjktCBt^s{8Vd7f7eIz}cl#3yFeTMgCAoCzE7@ zj?kOat-jD}lk8H5Ouha6Hi3A>#i+&mFM5`S;EMLe1z8OX4BV%?q}8G`B33xVXatn@ zqCsBzKUReV4WJ7?mfBYm$AD{XI3-81UnNYx{1_#p&M+W}{iKsO9ZVti0YHE2WGg4! z1#qRE^TxNNyEfanH=hqxn6?n+O_NMSqS|er;&^F*IO@FU3D63?ay7GTe;n=p)yuB3 z0PluY&`W`f}4_x({|mnErgKGBI>T?`Lx@5H`$8*hJR>9TV%_I~RJgkho);G~m8C2Ty;B zl(zc5!BqToMpM78U9|8)#OzjUOj~j@C}k8$>jZbtZ`^5Xfj{e6vtv)Lmgju0w_2>+ z4rg=tUuyzfvIMo;I?9AqrHAyj%BCi*Ag>P-HNb#O7#ZJa3PGXn8J|4K!@tl^RvW z57>-UR`EHF=^B(;vv(wx#r78ri$nk$jU3~^_m?)FG6UvO6698+0j#4?MW$Bk3zBNo z62A5Y5_Q2Sq{jlN8i&c8C#*uNhqS%RFL70>#&YOSUq%{~*;etw6+_etjH+teFNU|d zjZQz~ukB`hzHd79gELby_{YEO(2>l9Qk#-z8-=2Bf8W_~1NgWGQu3OC;nf`3LrL_a z2@x1N|6&0Ek6P+gN$f?a2?t;?(a@CJEK@%)H!H(dPFtun)jE#S=vOt6i08$&RF~OV zG`@BZoqV$LnZvI)%^*o&@j-z~v4gyx#b)h-Q)A7@oKB`~--2d_C1-cc=Y@WUiAS&G z{_ZKmKG@UlqHCNSMDd{1`q$GHD0L3z*!Tmp^GS4XT7vR0-*tTB=!tIE)Pc;>zirhf zNx%=tb!O@Bv4Ac7mY!*MT~bZ>#u)qgK&cBb+j8qkQEHH=Qlc4SDlJ7{uetPB&mcVn zd)}z`|G=egOGdC~NLM|M@E`NjU$`f!mMi)nwlPtYv1t$?rIG-uL$0C4_D6eUL#9a|mQJ@K392F(or>q>p|w2N|=`F~ul5~-PhPbpB2Nv56xCx1?& z^E(sZC22o}(ursI{Zkk7ze(c)ctA*Enu?SJn8z0#Z?;||fu((R>pnv?U`{0{{d>9Q z;DeWGo&49X0urht`TOqwx^e&O`TlRP;I9_--}uUZ<17CSN&Pp9M^s7v8~FVH6)R?- zI8&ckZ?BX8S37Hk{hkh+_UDSDR~oo zV730E&q|%iO>UD9l}o_K3%zCJh2e7?G2(+isd}0KA{%3(;~Z^q+_9h+SWt*_1N4-6?aSkzzsJQFh4h?fLvTGJxeJV4%21xJH@m=P@kG-NXl4Hs%6~z6 z5l>ORw`tje@0Ok^s4!tEu{c zRfZVt&m|?NS}hOtZEXC6f|ibqE6o;S^sYbG0nk-*E4hfrY>0n?0Zpa-$5)pu+lcWJ z00|!{emKb{w2`BQJN`9NYLlUSvSR0bymw%+PbgA?9caiQnL#w8W#sTdWXsa5)ROZ+t|6iy=#tejmc#fwYZcIm=1)-s`Km+%g zm=mbavR@83NY*ZwB_rB1dt?YBWFxtV0%*GAOL==;dYoUuua~ABDWXO1JHfm+8N%Ax zoDf8RMc>3{i`si82CAhNweCLCsxu8*SH+&C*hgv?nczxHyHe$LAUk7r8z4K;yEB8k zQ*eq$XaSE)mYCntzzRu5)QwlUc~;@m?_}AO=q zkv=(!Q$~q0u1}_%_?8g87|bsUlD*WVQRdPY+J>DXQc#oNl5G7 z+>YDpEvB*Qi)UVe1+bP14oH6m*7cX^cSOhX|D;k}Eq>9Nu+cfp-9l-3TlUfLdUMJ> zC<<u zcV$NK*^Y3mqgK!`Z-7HF+2r#}v}PBIF%G9oS+gvwI7*#gLsHN|fmHP-{;MX_z% z^*X{H3$eH9%K;*R_w>hMWv?xpr{f@2*)YEjx=(I3`G`uUrV`C0;6^8{1iuu@G(j#R z?wT+p#+3m(svk~!JLpAc3-9tUx5dO)J7lOKj^DigC_ECtZWz<>S^rk<{S;NUP)h^y z?s(k-w4?Hh>ZCn}{l?!@7G{e;S8v2gluJewlIqlWzWSRb6A;d8H7%+EQJSU;U?0@M@?S;H3X^&P(iElb_LJry3oYsvFUz`npNSS)vt^9R}d7XP{g?vAFW3fog z-Jf)O!Tlq8;6)8Z#QHTBwJx`X+_;|)>qWFi=xK%)r_m5}f1#pbMe5(B_VZ7>({v#Ifevwxn#&ytn^Cp94bmGeP$%f>im3QXWl2Y^!cbIE`0ho-h`RUJ7j@}* z4opt__54;S?XcKk0fEn+)?&5s<9K33go7oRfAd$!97rJJ+xnv$p&aC8#ukf$s z8k8Y&G2U?RZGCa<1Ii}V8%G+S@{aJuzlg4?Z4r2Mwu)hv@eTQttrMa{a)>_nbk+A^P(8rA79;vR|Hln9Vm*uW0mOB>y$%QSDaRP`zK8(PF4P-`V`;@z%Lf&z&7 z{NKHwbVRx*7`$;=*>mlC8nK*5-}fHor#MxNs%qj6Q;qEXomG>zvo@#nRt<})w&;Zu ze5?~HFCbU(z)#usettY&NZ#K?wFr|owA!UGRJJ&=_Ympp;8(blF8(v%k;(oz;L*uK zYQ0Kv3640A3pRbWKG;K+mboVuv6Uzxx9Vs4tBXDTAhBj*2>{<=H%3c~+BfDdbvz%= z>xh`H?x}Y7dDh(`~5X>8zXKfF8+j? z3vp!&vD8X+3roLRT~W zi|P^%6XvT1ikf5==a2(xTMx~(vh(_O%dLKk zuRio{*&GIf&86NSC|}hyh%4NA*8dkCS)cva_QM+FzGEUp&cJ!NgxvaVY&6i4$R zTd1_ja0nEWdp$7;INEEnqLJ8M7WqmUWKH^LBa1ORu9woX-T}5F3?DQGDchD%U&UmG znNWX$KE1~KSBxVo-f4K^QQBrScNjw$Y( zkp)gwt>@=Be-9_{+r1ufw}Q->E=4(Mg*>J6JcKB#h0(M)T|g9KGy$H|MQRvgn4+sk zH5JBvOh5<74>-cEi|_K`LDMJ^QE5#@5xGYx%XJ6->E8lH%pIyzp-G#u9`8Gy((|Gn z>iy)P@;Ezx%h#PS>(^*&ENT7lYDZVhy$InxE$9^lTx$9ivol$>4FwmSR7^Fz{J87* z_<*(Zt?JM-=AXK#RIBa=Z&eDaW#g#Y`JK$>(=cRAW@*KsHKpri$g%teSC-i7ug%Nd zeW?q5PWUBs;~SGlr{9cc{qP*C%G)&V>#Hxmh#;g7H7-Uf9Zz1C%mdlyxyv1dwAW6y z8F_j(EVGU^OFb&b_6C0I0EYeeOwDSYVl7$?exsx@La<844F9X8wo4o< z9Jm2QmY10D_MmwDXF^10$}eR}tV?ss^5yS$9;B*;j>&{T{NE;f>@$HB#Ism$EmMwo zaix{2x$|f%)Iq|weGO`L)3%> z7@;gLUL3RgRht`v-ZBp`r_UpF>n;w_9!(xLoE+OBMlWB2=aA=B?=RG3wiWsa!RW}Y z5v8-m2qk0)x0v(&0JB8;9j(_&2Ngz6UEi(O*8|J%R0W3w^it&!xVy(U9=V1w*t|7->Bbe3vbff~BGDNF zkK*wNb`#V-KD*m~xbZHchupLsj-pf*9MHE=_3_TSB)~%#x9@+nAC`=A6NzW^Yr)iL z?z9mMLTvqZzgbg@?%u?5(V&uDW-UVZ>_%v88A_kGG&I!>`PXmK&3h7-ziO!k5a1ti~H>6iU)l$bFQ@;J0V90*=wRsG@vSu<*1NHZAHa)Jgc^ zj)@N>arYP+@WYK{15kRDfPw0J2^*l5WX;Rqd4o`-H-fXLwSgQ)Cns~Lo!M`6XgB0e z>~lKrU6|_j)5yJ#PQS=D6Q=niK=d(a29<)^-1kevT!XX7mCP1osY|N0#V$`T*sbuv zK#fVVcE8iX(F(fJe}C&vG-+9Bb3-u2*i(d&SHR^s_d35Fm{g}oy=l6fjCT+{rvFPb ziV01qe(><6Qd~p-s{Dpby+s-8-llyJJ>A=^%}vpV&r|2WtvhVYD|6=kF6J>mJ?Z81r;CNe2ESK?{#Dyl}yoj#f* z4CP_tg+yL^y}q=J*)g|d!EISe{X*y)8;88POz&G#!dK#R=4d@vob6;SBv0AtBMhnV zA};=7pnGS$c_TgCQ%TeWF|T6T8J>}>5YKyM6m$i(dmaHJhx^NP3NVI_HS3vr>sj|u zE_CHnstKDK#6!}BQ$Qs9*-XI6o#e{c0~zVK(VCSxW$UE*<{I+7ZUwu=J_i=1IL=6y zRZQX|hOU+@EC2}NjZnI^dCw=RB(tn@FC$8_CTV-3%P(B8IF8qzxlAvDOQ6sV#16Z4 z*^<&=mu|MZ%>LM$j{35~n%oSmbwzPr)`Ig43(2hb?!HjO&ZA9S{Fr9hVy^%t54W>_ zd<0z$=lw29+tusKOlg$o(dDdr4Rpdw%tMCK(69ZFjm_B(xc^JEYN?@aSB67BN@j>x zCgg$N(H1)NVt!Q7oY=|HY7zW(9;aco{PAW=y@+({2$rC+?6Y%R;s!yOT#?RJIcV_3 zp7%kN;Oq8{SKSw6H{T0`f$d`M(Pa@~Wt=ev6GdA-NjLfuGWNr?U{F?1R+Pp3|PKu9c zfo=0pzFf9LyswgOfcN0lI(BC34vuG6ev8^hB-$x|owv$GEPu~XsvLJ8=u4MOu9=tV z6HbX!T`2hWWgO)!2l1=MU)88T5y?2cQMqFhB}cy}zSGnBY-6Wy^ECI>pJ<@3h`9?1 zocSloSZ48T5X!nQxPKbNwV(Y z=fuaCE?;ngI`u))s?)oWmX3+jLXL1An`Qp4hWzqrM?;^S%kVRh9he_{&aWGFY2Lrq zF2|)IbnbSXLz~bdg~RgX2T`Xmaz7korKK%kk<3^)qP;6^OuY>`E_3$cXsI4nOKp_1 zx|e_&rEon%H5WX79N}Ns2-ghxn&aS!bCU`fL|;PiJ+C?3FzlGFHKvR@u`PN7@T!04 z_bG;auQbFU!rHqq$DL&6?`~n^EbS5QK{BW%v7P9$gSqtlW8-24-80r&2f zm*c)}@ya}TSSEmA>5So>EIFXVsaq{XhlXQ1pJh@8Tah6&q3`-PKVkFr$J>rh_Cmaq zKl-xb-m!TVQNdEk9kf<;@?w2DJ(tTole%2To17mU@uo?ib^o3>?Es*DV%Q50E3CLu zrm;~eH3PW4l*q-r@lpQ)a`!?-0Rd~d;mNXx$i?z*vDkuE$%JJA^;QuV--Ru& zFp1nVv)J*QneVl8_-9+CVj z0p?kYK;VDo&IvM*1Qs-k(LZPuGa(om&vA82+;f*Q!KzZ5RAOENH$pEp*Y6dN%=t3c z>UoPajAEofMVtgk)JnD(8pS3GI870*=Qv4)^rp)BJR$IkFA@C)yNr3_Qv9Wro8fsd zaRmSEE_1W3jtEIloK7$?Qx2CW7lBjp8L*~cG!8eYfJ>@XLso@PubkaE(W*Q0FudCH z*_;v`61IKlT%jzkNg=xC*|`9qLC+)IEOPbxjRR_J-=v=I!CL0RG2vW$1$6)r{vpQ4 zQs`Tt&+&A5)+Geo+lww7-8dOp!DRWQf8v5uWJ?tE{+O;Q@+|rpx=@uOTx6xPwZy(c zH8Bq+=rNS5)L=^CVV5fTRgpKeyk>?CKR;9!lDrjCFQ}AhM?r1;1LnTPZLDGEM0s8J z)01Bq-`_4XpDa3SHB968ydnjzeDyzEH>BoY(2vL!#RDsOX#3XR;{A9l7Gea43S=S(^ynCmFt^G=wzNLT?pUPuPiNFh5j*M_VHAmv@n6|!r_dTp zg^osy0a*OdnxL3+Zjg~wF0n|1-RM174Je&Y>lxtnm2FH0cGQD5b@2}_q1(?Jr_1eD zqZlM3wx_8hf9K8hLpo_PF`L`+RvV+!i*z1?3Z2(y90h0mXV0JBBSpY($Cy;OMBQXI z`ZPgewlm^~nG=~RzlYB#^v%M2*7QlMn(H=G3c0;(gLr6jDsDuJ#kwow@z5n`ncjPH z0o+=?!!X@wTkKwZZd~|qFdnqA5|<_`gFxk7#Ay2bndn4icerd2DEG^ zEJbPYP*nJ0NoVM9N1Bzxts+mK*F04z^BLq>J&@EEj3U8rndx)JJbxsO%=BHn0&)?c zLUh~Bf%G9ri*SADHj8UTFVS46>g*~2*?|M2S?zMjf$zu)X6vq~T)nvSFp=fnU&@+? zm9>tqljkGsJ#lGTA@m+kL(MII0XNrU{Ff|;Tc(GeCCU5Uo&4_Okak~zv*!u?n53I= z9`Qw3zL&l9{M;BqC3VAA{rhI?HSd1?fQN45w5Z#4xA^egQFh#%R}eQj6XPm%>3FRo z$pd;Ol^q46b{{lSV#*7HwtBVB!Xyh`Lx-kRd>a*Q_qf+tb`^eRsQI;; zv*e;b1~NNQXMrpGpG0aG+A}jCr=Ine=_ENbo;8_Yk1ZeE19ME3fyWt|73ark+|OV3g1 zWVs`~eN|+28>Jcn>m7jtNt42&i=m93#5B)U7nViYx*+-^dQtP(5_<7tPBluNE!59P z`0j0pAKb}mFnOEjjxB;m1!P%L9`o7s@Z>hP-L#U|KRF&7(?C5w@0G@GZR13Dh1UJ& zPCCtv)M7#HI ze_f!#HDc%=P#&wI4s(6pZ01m2UZlP2LW%&e^&7*rk|$fYE4ktF5uE~=k_oC_hszbi z2;~`eyv;yiFt5EMID!#N!3e+%RAF1!yDx@sh3v;!lGD*Wj-i#uzd|xTV>Zjx$t$NM zT)y4a+^#>p{A-ZfE(*!4eFADfL{CPJ0O~ZimzdD*#ME^Axas8O zEoG}T5j#V!J={2Q3hug^60oiMxF9XPkPs^zqP_8o53eAwq_UGHr&dgby#z9?wXRxn z1xb7Y6#PkE#*~sEQ~H1}Zv%JplRR1L}9(ag&PGt}&{Ql56MJ(&#+!@o_?k^!^OFI9o_peaiilUA=dX zqX>>U$ro9cpkxY*ko1fTGyH4CYw9_wvMmGM?aD#Ux!3*+#mIn z^eocJE2Iw33h=0H{K}{92YM2#M0{~UmDs-Unon`MPPd^mlzqC-p~85QgMW1e?N0-Wur&xCIP(Rm5A#SXFF~7j^H$EuyFJ zv#TaaE0KpNvD{4oTb_B9@7^5Pav|u$yn!RStyM?3)&A+#YJvo3a zbj)7QB{cetaNOPEt(VXjd%RPB(mMF15r(;}m^2_eXIM3=-(ofFe3|aN>lVLd6B{oRGUkM^ky}G0 zkA0joJ13*_QsuB2Z6Cy)Ps9}ohh1M6x%Ebw4cko_Rs>Q`)*5@C^H^z4IQr1WKam>S zH2->QD163}JauOrGLyd+<6F56$4wfBB%ol`i814;a&xVFgs3mB<9-23V#v+8rMK)S zOw~il<0@GGHcj3G0gEs!FR9 zB{V|VGkm_d!maQ;Yn$An(3tPD_`NjW z6sr>ubQ+yUrZxU_#ndA9Ki@yebF@f&uMbT}3aKsd&tp1V2}4?UtMqjC%jeK? zYH`LjBJBKE=zZUzjrW5Os~1;Uubr7?!*{=%|C~uIZ_+F(NSP;laslF6TPwP85jTvN z^<)3CY%Ya*$GvCxV~lm*Z$M{^=8^q^zK-hnKv#}G=7*(4(JbnPOrtWUA5`95ALxe4 z(RR1lw1q&zx9JGhKht&yTLURxoimru@osrEUd4t0J$!S;n&Q@xNoCS`fuUe7Z*TXb z_5$o^aA6da(#`4`k%*djAp~%#>e}>HCd~QyrAdp{BZXVqG49BOJ67Jm-ImSE7Yh%5 zLb!MHK$u>1%2&4f>Cijn)fbQdUl|;-K}?uh64X&lYOSy7&yAZ4djoc*aM4Y*|HuDqlX#7O4Fv@C}nI?8gV=hEd|KsJx_Oy>X6LsM>kV!sj%i%SNgR z_*U9=N6r|%0$1mB@s83ctsC`SA0h~YNovXFN)wa-@?kKB@c z>r|23(Qep9_5uTk6#TWU12w*=U;wX3XEP_=qws+rj_VuaOI8}lfC7ucZsBb}hKY}^ ziPvP>G_xRf)ZB#TJ~6y^i&D(5IpHkFp5OAhEG66p>f$(GQS7y!is10sACXI?))K|g z4UVpL5c&<8<@uXp!V&Uf+j94?#6?vwYM!rJIHGeVO}rQ#@60SD;~de=^ohF~|2S8( z>=UoeBFNE2ymp%R-{;;2B?Fn8(wcE*0!cf zyB~y>p85a?#t++{H}JiuY7>>+{DXOKHt8Y{g3xtcNon!)&^?(DEgKfVAFXx@4-)rW zbz9bMK|Bf>0d|dz2vJMd(J0 zq=k$P+{qr$-{6O9E&;GUzR98ajj@^{fbW$tCpi7#|7!0&qnhlxwNd3k#e#q+C|$bJ zr1vHYQlrwOBT}VF??h0kLQr}O2m&HV?^Ogur1u^=B(w-5gr0BZQJ?qSdw)On9^;I0 z&K^g9#c=0dYt1#+Y-`SIQr_{oiprkGdQAJZdOFa;KcH8=B;405k0&Qh*_n4_?Nnhy z>bg&TzP&Vx=75aue|5y`#=k~8$@N@ndV^Snfg3#hB+etpDtbA6+8B5_3jA1~_mohp z@tv{dXI6TymDKm6fMUpXIVQvrI}xNBcI77!X-IFlasqj`xuVC861|5?bDWfiA*e?zZlLmlBn2h_-^;CfO7kwz;wKL$Q zR~E0@rZLq?wmT+{>dTaeInY!feZ^^RnwPQ#-<0>pAj?5>Tic+Wqrw(C@%=IJWy2?N z7>5naOBK@lnC%jgO3|>3>NH3D+W`IZFAMs)J>S(IA2uu(^WH}D`?zz@zbY`R7(oPk zd*frA?#(?R%{HdltfEX{Kl4C>?#H)G4Xm2LI>Y;bcHs8CsSu5+h3LU(UZPq?Y7?Tq zuM1xWUd+zQIjb5Kla*lrl4m(Omk56xPC!BcNfZx*$e^snwZ;bv(R@))V3HjmZF)++?R9Kj%P@HjJ+1y^Lg`Ka_HO! zZ64-0_*re~9PuYg(Br zq3@n^ka)eaVq3A}{;jnaI9p|Hp~ufhDx`O3)Vn8z$GKPuS4K*OnJz0*hrNv!D}$l% zj$wdklbGOjT&Jh^ii+TjU(0sO5^U^(9&dYq?pZyjRJ@#8D005#T6(_Qd8R6Am>Z*z z3UjSWm4JJ%w6gaiQ?Ih?3_InfStUj3#Y^Fv$8_TpZcRuV2W!+z@30Bp*qYifXkZjx z=+kZmRrHP!*t>LjnDKqQsMToinZ@-=lP$wW_w}0o97kx5)f@jaZU!JLOt8fjSo5hP z8~DD^1l;I$ddn>-oF4-da#$Mv$M2R3^A<%wj%`Xrha^>aHZ=>MDXQI5$`?+MD zDVz`)@m^dkHaP9rbePego$}1;BzxLx#?}0!ELrZ3an}!>n;a>&L0v-1Yx*D3mH3c5 zfxXN7^U_$QXEki4G6vlWS_EU zxkr$O`O)Dvt~S`hcW_qNW$6&PSLd}|(G7dzCwQ+{&<<%TxUd3+yP*1a9C|Yut$E!1 zFB`!pAUx5KVM4M}%LTUYLQ1fWyjgg6d(7dHQ_s7{LEV&s*1hE$2BB@h2f3@kzkL<; zc2S>?^wpuAM7|0Ki37l75S;DIRl6@n3sFyG7(Xn}X@$ z-M-BmD>R3|y1RilUZ~POv^%Y6;iX1|LW6z9(wUH|Zmhyax@R2X&UANdR^N_YA;q z@LFC%C706d#EG4S{5Q0}x14*zji;(KMCu}30`=B`XHu<2-6R1vL6#B>s1QxcM4?TEWu=DkS?!f zT!#eEr?w|@qe);i*!%{JorD(}1hoZJ-|@WxR`7%#J=fUilwL5=Q&{PS5B=K9XA%KL zwWwRnN8QlMTE_goP-3I|~~xI*x9J$7k$)-iY4mBVuQy8g7v%)J zd6ZA6CLziNQZAR7!cV=IvhPc8zB8e4CmHCnJ900A7dxmVx#&I_R1WX;J<4&Awi!*& z9sD$Mi(fW4ZE2-ihuh>Pmo85%$j=PrEjR8sG#!p&F}k;~oYGnYJGM41@qAZWqZg4> z{yvf)K(ok)GVtv;8?Kg)uI0&tJQDg#?;gn5m*L(7J?n_$b6*PR+Zp;aQFP~ie2<8^ zMCCZDWQt3N`%Ss+@IBB;Gj-3v_1}GA?1*F^e%(h}sAP7*K5?{b+7t&wAu=FJ{I0rWY zG(|Hb7US7}-9_SY$?1<3j^R|@g3%%-XjGQ_T4D=ALcvy@oKWE- zLQ-!o_wRzOf54nfQ{}V*8Pkvm@YuINvK^nEwO>wMv|E3B#Fk z(UAs+$lDry;=xMi#=vA0`_UrLJrrl>o#EmLdMDOjKu#+G;8g;|hd-iwg>h1vRueDbML5L0!lrCi1LwrE1qpEAdJ)v)8`3 zZB+X$7Bxe*gk>KLeseP}>?@SzBUGzfkGFG}Ff~f<;I73-Le{=f5^sT0`)G(!cZ8fG z*n-zWefz+6)yJj_SA&$a_Ea`2Lg`z^&6(5Exm@Z-o{t|dBb9gbO3dF}5akN4KiX04 zp4fQm?9ZN|Ap^M#x9!~qwQT02MQ2i%Fl%E5t`2Z-EUn@@ud?gifILnGGB}0|aAZPu z<$1wLxfAYZ50+P)t6z2nWV3(MU<#9mAwqZ7yq;igUE`m7a3d}~#{;dp_=Ck;86*&u za#1N=|5YUF%uDPGHg`AsoQF~%{Mk{p_c36aEvt@13b_*jA4rg_-?+L2wn5)kLG|%1 zgVLJ`i<7ou9VNOS?q4sis)2mtU&65i%pWSfv zUfY&^pFb)_=;s$$7-7TengHm7v8e;!M?iuHpVU-pK{|(=r=Ae_?_Et5hu_8L|UQTY;0{e+?Du(ckHfzCwHE z`h8=-gg0-!Yh&?Q8uq+|d4SC|#IVmj9!#i2OoOdB~1C-8FkKp7luZ@bzD% z*qbDToYC4YQN`_dPml{TL`Deg;%;a@ChmU0B>k2vN-co?>znotzXw@A9 z3=*9<9)s(k*r8+0OPt~t-Iz@CKG%84F4v*5PRrbo?>R+n7&Wj;MreiRh~Tz@k3sY+ zo~8}BxCjv2{hi6~{X3H#m}#HS?2DPset9KeJIu}KQ*!?IJDdM^Zt(6)#j*{&D^bwE zvU8WWi=*zN%Fsj#>CCyf!9K z2u$|a%p0?tX;zp3M9HIv)<4hRHhYo9k;EHy+RD_%hitj`>z67zH zud!P0&LmoGw4*-hh(f6)cScK9PD^cQ`=9rojNgCs&YSd&N^JD>oH!B50s%U)Eqzad zULMk5E?&q(*!PM_+VwkxLLowJ@44$ydF=^;J2T4lXa9!qVfmF}7LR8J;zV@ef;(Wg zQ6pJ>*sqn&o{telZqom#s#NKnSNZW@n3GT=d?QlAnfe#Ak;6e2I%MW~Tm9WY2Hn8_ z!kknDXc?!$H?=>Z4o-mTguv6%dS|3IcrIb8F8vqgED-}@H!L%9@;64;OO6>)k%tA7_xlR%g>d!x7iCo6dP0$z9Of3kwp(q3f$g9*)iIe#(w zNu;=D-!gCDPD&E9_3yG(wk}7IS8wOK^}ZmykQR@-cAL>%m_6>;Q}tvzXc2-iK|sh zeWR6`Q1~Bq_h(%Of}o5QJ3@gn{+s;*4gsYX+G0zY?*{=UxF+{tFCm@dW^6kBPdJnw zw|}1G1`@F3<@_z;?*Lj;Q>HPHUcFcI)>Gcg4}k0pp$fA6B|A_2a)N)z5P1PMXyu*Fs!yeq$0r@o$@7cuYVnkpU`14G>(M?ty(^iZnd+<6IT{z z$sFYqK$#bIvCfC1!p@7iuyEJMR2zOJ}^`_A-cPGu&Di2$h1{MEu z4yW`h3z)8OE$yUK%NU&6mL+GUtJYccC3(bt3%^`m;@ci{C(m{;pVeM+P@`_??7yU3 z88Hx&%z_QZvo=~C?!s9bet`^R=lIA&-T_Kq2=C@$i2_O@`sNqg-v$KJKYETy4Upy* zwpxUUf`D3a@4EHr-!Gm4#A@TXTzmZ=Bp^j5Lh7FO%YPw>lmR+r7%}Px%OwC3JzjCK zCuRmZm-5Z+-V476`%Ksk0MVlWAn5=E4!1<*>z~(kB!&O%`9Eqd;1+n}m%-(6k~??6 zSj?}|ul?G@=g$FbB178!wII0*;2E<=t`64%w7~2E7#Yh?Z3?LSk3Rm1;L}r15km0M z?wpes{I$s^P7;7s0FoVPz*V5kTZ)jA0>9k1I>q0zG6P^FQLgXzN)UemSP^G6(`;GD zDG2O$IneSSxB?k44d2_vv_$;i83NRv#jjLd&xqfu;?6(n_$A;q%50etMJ8r2JjD&- zu3snPB(X0c6XK`09Pw51QY0Tu232MA@psDmlsDEbLbhA$JEH zG3JLPNx#7dNp`_B2>5y=EdcP1Bk1mO9K}6C%-S(ku|mV9{xHzX+&>KThk^b-A%SGO%0(S^wMFvr+7*X2Y+X43>dK!uj(42N zR>xi?rS55YSpRzqECIqW$}s@oklnkoT|arv(yo(P~jKbWg~ zmqsLyeaQBb&{Bd(-T-i%TH_{OfWf)A;vDX!l-+JUXLjtA{P(M4<+fn&lghbN33}|I z#c|s$9TOr4DlmXf;VA32zcCBVP8BUaV;xwdCy1OVdf#vwR2=oB3khcu(Imhv>}G-B ze7VZE?XS}{TMNlXdMVAKVP&KPg-KSqn~rCoK{QpIwY3dpg9XDxd3YtqzRSIVF?yW zODh7x)cX7;T0%D!xBw9Pm4v;in|x$B_?vKlc~CWsV6GsxAh<9o|847JM^1DP{@7eDza;$87q5SI_RjSom8GX zdlaSnvlOu$ce~xlpSB{utC85t%adSHetTP;m(s4DoZQGdCUBlwH(3zK zf;^XRSf?{wIA;FUQ#U&M!gQF!JL_vi{FJ+Wm~RMEZ}SnGM^l|0%|!4p9F|q zok)+`B&NnaKC);hKr1d3ANs2GMl+5G^wgNodg}>!q-y0FE3XIxYnAdfJ(!6*(S{h> zn>0^lyTbJ-Vv71Xts+wfksy2FGoA7NYOjyOAL#mY`niF%!Xy=7V)@CH7vT^;{;=y1 zVZl`gbmVMTD%T~3o_ zdU=@1jU9y(0aXO^qI_#o^xw=9l9wO>fYP57fa-lbDG#~#!;tDEaXz7>Ia^EUa=;@{ ze%JDGa*~^f#2gsf(Wmqy$*v>Y`9Dm9bF&+3CQCSeU}QtC9zT|UDf8!YyI>BpBS7uH zrvaq?Guc0s{lf--4%i=Q@JG)6Q40URR=0}~)1i;CC7}DkG7)G;8}mJuE50fr%}<4{ zg_h8}hSDGOuK8t)P#L=K{#dr?e}C3__0wP6);#KWn4rM0*ehM^Bw>mI=+od1V^79; zZ_5ItZD%f&_I&NA^KvoAu4rcj+{x3if3KNiWC7ZH#T&V!QqY!{*Y_sM^Y~~MkRraj z2F|_m!Le1kvIj9@A);Y~db~r>_UEM*sL+d=VeuaW4G~l;9o8*2CdUA%@botg$@NQ{ zR0C4PTVR^evIgBC`Zfk4)aH)yg)E|WqfBHnV&4u~#z-xU=RmRj_wAlWohARZ`wu@u zLguZ~-dZiCnt|)FvyBoHxg818*x(l=-Dxe);YHhR&I~R!YWZ4)Jeeq@SuUleXW?I zof1-qw4J_pGl5bLEIbWRKor*1UYRl9tMv|EAf!sml@V;b4}=kN!%H zN#`Kf-Ee0I*T5FVDK<@kUj5ZBwms|SH2Af#ToQnuQa9lb$*dP&GPMK_ zb}>|9F-DMiOd$jS3w)%)^MhEl$&(H8leC20dLWz{Z`F7t!4XJ7>ZKUrJ)P((PQ!Bn zaqe&UV+wT;(EG7^yO;7I!5j~SAuXag9&6ao!DM-3CEQlB8;s_#Wj2}%ARSu3$iMOO zI{jeAT`rqxe-82WveJd(Hij4g1Yjg2R)a$*4IHZuXR9ZJyE^C*mUV9>FSNw}$a~Cd zSwo|88I*a;RZKV>TpAe^h5NaO0PL`FHRdU!okJD>7BRIJEM{WmH>A!0867`1_Qmua2zYH#cTc~x^3P!Ku9DG4a*R+zS{OAKO9RxM59VN_E~r4m1jXb^qf^HN`+8V zzI6zS%HaV#lJ%#Ba#Du}Y_On~a8~N+XvPHC40eFaQ?M;Hg&!+=Tu(VS>9x#*lHuJ% zJb{r$Q)(a=y-e_ot6A~z)k9guo-@jP4pp-{)rVU$56hpHzxQb6)*QbLfRWy9SQYY+SxI=dbdN9$r_%W|QRp#|FKVhTf-&Efv<|dqC z#lD@foJ_&x$O=WDZ2+d#;ni8;Mw5~PJw}DPWW$vTH+vO&zCBQ)Pu_n}jpud!dadny z0)M7zis&9GsWeDMj%YCe2RLD`w(oBDs^1Rk@iFgi)LFM3b>h1lkz}%m`6<3z!?X4@ zhNN`6jyKlPuQ^g(lQ3v}`e5PoXX(3heS{OwDE+Qt@m=snEc7tbWbQB*QsZ`j-`OBW zy#3ff>DecwUdqD6oKeEL@!>)@Clk}`6V{vlmqO=1JZHKPa_)&-Xf4TU3YvMM57sf{ zeZF#iR7yHmQbg>|Wh5xREV{wWbgxvnO8{HAG@R#iQ13rf>Bxf{s+3`@pU8F5@Pj1l z?hWN?@~Iy9IB#W8*O#Gl#2o$hIyiV4cnv)bybJ2u1eS}Py00z6EA~$jOJkGCDmanX zF6W|3({tF7{5IKDBrb+;!njoGC#sB(w{+R9(vG5Uz!rWqlW8;@WBJtgd^Up%{jt-f zTr#a_(9ag14W;Yg*`emRM6uKfmzFHdpvJUNJ6&>}_6y&dX7_PvIu*~(=hg1M2LVNj zUy@IrlkfiZgif@kLImFxaae>6mgdlJ^9w7xdVXR#b0|5*Q-Fr4r+CktcbCN^m^3d4yt@1iiu6> z9Nn=TJ}cvQsf`kiLQ*~&PwR3pA#=Mc?79H#^FtP14&*g{&OaqG1;6u1IvYRkI1NS~a9hiIj~$&12Iw!fu290A$}rh{9_48V|?K!+GGbqM8@H=Q^%PgZ@gBemJA{ zZb`>vlUvE6=!JZ;dPN-*KL;8I`|*Q>%T^dn!)t>DaAn`JU<2_{^p?bXjeWuw%RI3& z+5NKF-X`mRr_kDc7G2aVlY(H!)-4PhII5&6x<3_gL~v|RPw!M5_3PcvSxB2#PbAM# zOYHIA8D030DU&dA1UknTE`0urtX&OVvl_X;AzRI~*9Mhh#Y=ZX_-gGQmu%FmT1=Ck zmfl?KcRG0J4)zdh-{<3zFK zNr%+4GK#|1iLrT=g|zuP;pmDBuaWjthpTO9u~iTb>z*#=d)f8 z_1+TTKUkJVkMSKeGgv&q1KY_wu`Q`h^X5fqSA3meO#R-HPqgreAs1rjlr(?q4rZV+ zzNLPymB*5!)oG_f675@t6Y(j(>cSXI1|b2()0#|j=@CSM@Fk_ijBwsghCIY-`^>9+ z1P-*>eHJqFu2Nm(JnQhKN&f?C%gT>R)m8Nwc1q7soz^3;9ODH+iwv@0$^=D>d5+kbz+#M1W0qNL}*2aq4|;5gq&9-{Ds z328&pV9|Av_luz+Y`JPa@;fzWB$ooI$f06W!(3NkvZL6;4%^C zKkyHxcUN|-ues#|?cfp3I?oB|yrhp%e%N{FwNuJL#q|1`D4+i(v}5IlaVt%Velmbv z1K(f7?BseZ(eEwtIjUI|t93?p zLlc&|W_V0H3|_qa0~k5@<7rgy*MN(5fW_k2gxRH`*MJhA~2P=&I<^;94{mYuGENWSNpgP?uk z9CN3WUE{%2>K>2ECMHj}{;3&Ha%oQkr;(>an@r%`zKF@;oDHge#1VBME#tc+*v6W6 zxX_=Q=TyE7O40-)K(XhuJST}h{Y|mUn=yF`7rm4aZ-6YdNyM6OF~)B%WhWnVk?OKLG~G1* zMl)$&Wam`T!P)&PqdxYmw?pI6tc4{K6M3D=KGKx4!pyY)png}Mn-;PahNbtJaJ{Y( zlU&eQP}{)mlc5(g<=E)Key~>RDv#Qgssf$mVbL&ObChQ3T!z(a7dt?q>g8kZ@&m>f zwFi^wU~=+@97$9dA)(WO@SqukVbG=H*l+6y4dqzXmQn<@c8#gHADeBA5UVabIA6Y~ z=Y;lUZUn-ug@O?>@^$ZC0~D>k`CVCR?l5`!(0^xOW+>HoPoPkV-pzMErT}Mow;GToIJsr5V?9q7e!}Sw9)L`f|?nXB!W4=cXIme2= zabnXotrzwXT(!q4-n3UxOw+f<`_Q-^EZch?rB9Ag{GOF zym3?%l>bNeRWmxDwdH7!y7`&>7Q((~JbnT94Eajt|7=svkweCzv`cXNd@$qQH`y#( zJ_i2H`OmdY6LVqgt@HS9k8X(jxDB)2s&;9ez>9Ee+|G?{8e8SB&B|u97rY(nu?-Ev zH#-J%)XIU3d+OIQ$cwy@sU?3+9&+l#6P?8w$}@9hm?T>Od*>tu`j{(kfznn<*%D0+ zacRGgE%;7Z6X$lksxhu6b-Snd>QN7gDzN_21C5igiJTnDX@=^olc1I>)?zZ+lq zO@`WPzr}TQK*KY;<-W) zB)47&Dwy$4KN|G7TZ#5VcM9bviWTn9Gg5PuTJ^xolA6Zaxx8t8v})?YjW>O?LH{sRyV)>r#76NU~4 zb2Oy%KC1B*)~tk?S5C1HyH_tI8ARtuE#^jVNbD|roLe``6r&DP3=inE$w`d`$BrR- zhpmB|_p8*@Yj|Y?mbATk8J;>MY{W^m9F&u?^(uc26o1C0cr8_r9qbk^z7ngy-N7Yz zHO_Ct#Y7#k6<3LK=Q+BGyrDkyNM0WD1mo2V&RPaSG!X7xKQTN$!`#W$-`I5O%skBU zQ2w|#IIbX3@R9DMiL@i4z1@AHz7Cz!bkP5|PG5}c+2GP#YUb2%IBkV7^xrFQr!r9E zj(n8O_`OpKNY+kTO{F`g>_B~v^M?W1JJN3uwbLW%0s3PrHj)y+d1$q6&{_( zGWbK)bHeI%5iZ|7F?-k%yvTv`t;;uq#EO@m&*hb`C9A)fy zup|oUvLqDAW~}Ay{?&lWhN!|fUw1{@S015JHL{K=t~6Wp9+PnC+oie?!*cQY*Di0X zgl+FuJV=?mAk%O(F)hRAM|WWI>7HmzY5+KC*Tgjfrfx~dEsMbuDD4T59bN{M#x6PK>^19M?^Hh zm`(Hx7sFkZ!SBt#Wr3wsL42nD$W&zZ`=0Dmxki>Or{Z3eZ9r9W&Zflpn|v7Z5892W`##VY4kW zNuik%)M2mQJqbXL&K<75RrQZPrCHy7*TfPaU-}uoN#}^WFlv(%&pKj!kZd=duud=N z%v`i$zd1pR_@UdL>T!JI;AXcdHTSOeboFR5qReM2lQA{^h=J^+IJyphuL7~}Re!T& z1oge8wLU?3(3T@oP|9TQyDoN!lI*fL@Ha{gP!}cF6#N>`dhd(r@5uv~tcb*$hUPE8 zr$2bCMTQ4L-Q2tv@igzS^ZS9zXLh88L=V97q_wcj#!~GT0+S zC3{L8P$>Cwr&-c9whny)P=fr`Ti-jjGd9nN4ik<0Zu69K2pM`UUfCPUs>jJNosZu7 zf=YgnI(eBoIC6hpMYB_&W^ajhKq<&L!FQ)LX932~Q-MC}1fsZeve?a>_^Tf98sUB6 z+X=V^95m-$Ye^-(Wv^4mKw1)-?^!(JBzUD}KwjDJ1L~kGfHgFpDNd zM|Mcev}LmWz-MH?)U!~uq8qQ!?&Tt}psFa`%nLGB07a9zCdEm0E7JZhXm81QeFPW| zp&j%@dVOY43L+F+XjfHtDkL>y-uef;Btf=-snlEozy-y2H+B)c7eDneQVND&w*8x>vyQUpja<^Ox;S!-@PAsh15GE?Zqlht4Fjwzk(F+2B|}F%4ZG9de_A8 zuvVp__#2d1;3;!tQ8P^oj<&o{J7aYpcw81whvI>26RglX(0diIT%cpsSO@Qc-j*m- z(23D`(uW>r8b9Vfg|%oO(#11#(da&QsN00E9R;4E&ayqEi!~0dVLq>H_HljKKvuLq ztlZ7{V7-#fsnN~R+ivaIq!S0bQ@D;(IAwSt^hmWGbPz1+WJFgbm34{mDUa-r3D$qa z3?CM+)E|Z8%%HehYIcCgrHamJ7(p@Ipn1j88%FtQF1FN|jbiK0=#$k*V3|oiS-*Go zbu{>tn(2nhI^X}w4|31y$6-FYE@xyS!RwOkcHNS2A=+;UM?*b77q{c+w`#K88sc+m z?)Hembd95XQ?93h7aI2fe*W(LttPVLH0~JG(6kQ^?|Z|PBf(wQeB-@#V`|7{G+8g{Xv((2iyI^bS7eB1!Eq?LLjR@t+Sif=T(?I#8)?4Ev9z!>*~O@)nF^Z z!Fd;_@QDuNof2JhTV82gH6Q13OxI52`JDQ7GN|XRL_sSJbmj;ZP>)HBph4F!UG$>s ztKZm!BmT?b`$c=l34*@3p{deRHdO_Y%odPc)$2jkiu!&}RXkKM)T=$-Uw!K~VkGLL zwQ`!)ZcsGbx}__(APcCLxQnkHD3DcvKu7o!V9kY4KR0(?O6o?ldib2(0xFW}OB|y5 zerHhRc{?{p9O59J^>!lCLrO%3;Xp?3n~+`OoD`n}43; zxm4)ZndK4!+Z0I>#jVc=v zT^?}B@iAP!!0LSO$xSBYwSj;Edm=$Y5PNApGdfGbRMZd16U%OhI!7$cr7mU&oWI%0 zwIRM+!1{Z&syvqUBn8_h$>J6rfQPhqn$7u0L-8~9~-!S#9zfDw3K7D||75G+kyGr(?;WO8q z-VMZVO9qG#?4n!e_T`>`1|F8x{T3@CViL@G67PNKq+M2|&24FWO(2I3FW89;BgL_U zd>j<}hAv%09dwVmnLLs2l+0o6lh2wX;`XMfiO0c0ZC1Y_sRJCq8)~GFBjG0kP(Y*% z&}tijzNqCtE@RJoXFuP>s+=!MwGOUM}TSIy>iQ}8AD zu^{nyhzAAc_0=*vH$uGbI|Wm(HrQNUC4>{DbtQOqYChA0m_&$RhxuOsd-}I!;n{VG z>6QqfXYsY0^lZI1z%O!wCYr#PF9Cf>$|%sxAna#7wn8jzkrl%tm!1cnEr_g}XYX|Y z&(^jnp-ITCjltv(2}10r-b`YXGqnR&_Y*-a36*qB@Cyyn$`{~E5-@pkYZk=aUO}_o zlA*KS-&JlXJ(tr3G&7?2YEw_20?)d`UO=!?!Zs~S6KD==TWeGUoAhl#>nM> zx2MuLoB>~wgP&aQRjdn7w`xhZ$fLx>#6FBX5l{fQrAA^aGFh&cAmkYs>%ru`z?8QM zK^kiU0h(;%P6QMK=l^xreH3Sa27ptM5T3jUzPt`zuaF+$NiE+KBHy9IfxN+$MR$_O z2&iFKw*`990C%wADAYjB^2oRYwB9>-3&0~<7o|7NrOibdc4W={n#$%Fr zoChoxw~M4dNz?_VoWw}5YyOT>8J7~1yp8~SY!{@Wbk_;98y6SA10eE&}vrm$UIEk9zA`;>gf2;354El#b|1jtu z3HnEZ{<{RNsl}Ix?F}$8sOTiuJ}p5+k8sx}11U|8d<{gZpu)P`+1Ih3u_KeoQY8zU z=2H>F_m=Ycee(AUfQTmlU^uhMTD?7dS5MGD$|Kdhdr~h}G&jHkXo!xa!L6=(4?bmw zT2z4f@S0xxX^2r?oQUx4=O+T3F70;Eld-EZc(acExRJ*}EA6%+=4NC942&is(W9M) zg?DEd)Q9yQvE~tO%bhbUZq{J5M@|7s4F25J%R2|9^l8{HZqeFSg(Y*bqffHHfPWiq zs{QzrlRuKPl&w0Ep^4HWzc^n?U zTj=rN)&NdwYHWS6-q`xpEA`+{JVdzZQZcV*ea-EY!n*44YV5c@N@schI@0FZHz>6E zuXaBiuTw_v%vI~869Mk$xNBD5nQ#83`c^!zN2S6OA+f&p-WXU4$^i*ol%?Kg20lmC z?UQagtM6aDU?*63pIOLcle(9@m=3(>b3VP1LbY2;U!)nr>h)^IV_4TOLoUxTpv%*Q zL=($D=GsT!-wQhtaPcf=cqvo?;kqpx?KX_V-*L0vrN0?aOujqtiHzN2dhgk=?&F?E z7ZNotG2Jiz{5F_Do$6@s9jm29a+fB*d+5q3X||}3+*|Rr3>wFt9WV4K^YTknO7`_j zqlcFAlkx>rXEd{FYtE8e$A6wjeerX;V!inn%$$RyuQoy?G1;!FePw;+1A?4MZsu%& zL1Ck8HMEaqET<~MwtI4{{bQb<>!2(-FdNti6z5Q-l6{-n-1??R1CO4uG$=^SZwSg# zPCASSYX2cVv;uw5@pb`%IzkjXz#>in3x+x*-Dh5XnSIsKyvA_^&m-nfWKYf6y=LQM zf`x$xw9mIBh0!|3$-KE$k3|gU0}j>0Hw>edb52Y{9g~8x2M`QU?)o}=7CB(I5%)i{ z>Q2#X*I(_{7@jbVH@^6oWzdZ#8*C6qyYro&{`&Dv7z)bu2Y6$Wl9|z}48C-%=mRbI%kqML_@%~7q zBm4Uezo(GS4va|k-lXgQX=D;DU~BzZ#6NWWvlIV;)&8*4zn_;s2m3z=y8pG(sXfx( z?8J$`ZYbZ8*ZOx+{J(ZVe-`ma@%=jwocMoKQsEidgB%%h!Z{~TfPcz&HSQGLHVyng DbGxPW diff --git a/design/control-data-plane-separation/graph-conns.png b/design/control-data-plane-separation/graph-conns.png new file mode 100644 index 0000000000000000000000000000000000000000..bb41cd488e53fa54f625eef29454e2f44d8c5a5b GIT binary patch literal 22038 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 literal 0 HcmV?d00001