From 82d691ccbd581aab4b2dda3322d1b3792dae1bd1 Mon Sep 17 00:00:00 2001 From: johanmy Date: Thu, 12 Nov 2026 00:25:20 +0100 Subject: [PATCH] Update Community Clusters to 1.0.0 --- modules/CommunityClusters/MANUAL.md | 240 -------------- modules/CommunityClusters/README.md | 308 ++++++++++++++++-- modules/CommunityClusters/pom.xml | 2 +- .../src/img/1-communityclusters.png | Bin 0 -> 287711 bytes .../ClusterColumnEditor.java | 92 ++++++ .../communityclusters/ClusterColumns.java | 82 +++++ .../ClusterForceSimulation.java | 102 +++++- .../communityclusters/CommunityClusters.java | 163 ++++----- .../myrberger/communityclusters/Leiden.java | 7 +- .../communityclusters/RepulsionTree.java | 221 +++++++++++++ .../src/main/nbm/manifest.mf | 2 +- .../communityclusters/Bundle.properties | 14 +- .../communityclusters/ClusterColumnsTest.java | 80 +++++ .../communityclusters/RepulsionTest.java | 187 +++++++++++ 14 files changed, 1147 insertions(+), 353 deletions(-) delete mode 100644 modules/CommunityClusters/MANUAL.md create mode 100644 modules/CommunityClusters/src/img/1-communityclusters.png create mode 100644 modules/CommunityClusters/src/main/java/myrberger/communityclusters/ClusterColumnEditor.java create mode 100644 modules/CommunityClusters/src/main/java/myrberger/communityclusters/ClusterColumns.java create mode 100644 modules/CommunityClusters/src/main/java/myrberger/communityclusters/RepulsionTree.java create mode 100644 modules/CommunityClusters/src/test/java/myrberger/communityclusters/ClusterColumnsTest.java create mode 100644 modules/CommunityClusters/src/test/java/myrberger/communityclusters/RepulsionTest.java diff --git a/modules/CommunityClusters/MANUAL.md b/modules/CommunityClusters/MANUAL.md deleted file mode 100644 index 1d58163fe..000000000 --- a/modules/CommunityClusters/MANUAL.md +++ /dev/null @@ -1,240 +0,0 @@ -# Community Clusters — User Manual - -Community Clusters is a layout for Gephi. It arranges a network so that each community forms its own -visible cluster, with the clusters themselves placed apart from each other. Inside a cluster, nodes -are arranged by their ties, so well-connected nodes sit together and weakly connected ones drift to the edge. - -The layout is inspired by the Clusters view of SoFab (see [Credits](#7-credits)), and is built for Gephi 0.11.3. - ---- - -## 1. Quick start - -**Using communities you already have** - -1. Open your graph in Gephi. -2. Run **Statistics > Modularity** (Run). This creates the node column `modularity_class`. -3. Open **Window > Layout** and choose **Community Clusters** in the dropdown. -4. Press **Run**. The layout stops by itself when it has settled. - -**Letting the plugin find the communities** - -1. Open your graph. -2. In the layout settings, clear the **Cluster column** field (or enter a name that does not exist). -3. Press **Run**. The plugin detects communities with the Leiden algorithm and, by default, saves - them to a node column called `community_cluster` so you can colour nodes by it - (Appearance > Nodes > Partition > `community_cluster`). - ---- - -## 2. How it works - -1. **Find the communities.** Each node gets a cluster, either from the column you name or from Leiden. -2. **Give each cluster a home.** One circle is drawn per cluster, with an area that grows with the number of - nodes in it, and the circles are packed together without overlapping, largest first. - The centre of each circle is that cluster's home position. -3. **Simulate.** Nodes start close to their cluster's home and a force simulation runs: - - **Ties** pull connected nodes towards their resting length. Ties inside a cluster act at full - strength; ties between clusters are weakened (see *Inter-cluster tie factor*), so they do not - drag clusters into each other. - - **Repulsion** pushes nearby nodes apart. It only acts within a fixed distance of 140 units - (multiplied by *Scale*), so distant clusters do not push each other around. - - **Collision** stops nodes from overlapping. - - **Cluster pull** draws every node towards its cluster's home. -4. **Cool down.** The forces fade out over time. When they are negligible the layout stops itself. - -The layout works on the visible graph, so active filters are respected. Nodes you have fixed -(locked) in Gephi do not move, but other nodes still react to them. - ---- - -## 3. Settings - -The settings are grouped in three categories in the layout panel. Defaults are shown in brackets. - -### 3.1 Clusters - -#### Cluster column (default: `modularity_class`) - -The node column that says which community each node belongs to. Any column works, whether numbers or -text: nodes with the same value form one cluster. - -- If the column exists, it is used as it is. No community detection is run. -- If the field is empty, or names a column that does not exist, Leiden community detection runs instead. - A name that was typed but not found also writes a warning to the Gephi log, so typos are easy to spot. -- The name is matched against the column id and the column title, ignoring upper and lower case. -- Nodes with an empty value in the column are grouped together as one cluster. - -**Tip:** `modularity_class` is the column created by Gephi's own Modularity statistic, so the default -uses its result whenever you have run it. If you have run Modularity but want the plugin's Leiden -instead, change this field to something that does not exist, for example `none`. - -#### Resolution (default: 1.0, minimum 0.01) - -Only used when Leiden runs. Controls how fine-grained the detected communities are. - -| Value | Effect | -|---|---| -| Below 1 | Fewer, larger communities | -| 1 | Standard modularity | -| Above 1 | More, smaller communities | - -If the clusters are too coarse and merge groups you see as distinct, raise it (try 1.5 or 2). If you -get many small fragments, lower it (try 0.5). - -#### Save clusters to column (default: on) - -Only used when Leiden runs. When on, the detected community of each node is written to an integer node column -named `community_cluster`. It is overwritten each time Leiden runs. You can then: - -- colour nodes by it (Appearance > Nodes > Partition), -- use it in the Data Laboratory or in filters, -- type `community_cluster` in **Cluster column** to reuse exactly this result later without - running detection again. This is also a way to freeze a result so it does not change. - -Turn it off if you do not want an extra column in your data. - -#### Cluster pull (default: 0.14, minimum 0) - -How strongly each node is drawn towards its cluster's home position. This is the main control for how -separated the clusters look. - -| Value | Effect | -|---|---| -| 0 | No home position; ties and repulsion alone decide, and clusters may blend | -| 0.05 – 0.1 | Loose clusters, ties between clusters still have visible influence | -| 0.14 | Default; clear clusters | -| 0.3 – 0.6 | Tight, round, well separated blobs | - -Very high values can squeeze nodes into dense balls where collisions have to push them apart. - -#### Inter-cluster tie factor (default: 0.03, minimum 0) - -How strong ties between clusters are compared to ties inside a cluster. At 0.03 a tie between two -clusters pulls only 3 % as hard as a tie within one. - -- **Lower (towards 0):** clusters ignore each other's ties, so the layout shows clusters as separate - islands. -- **Higher (towards 1):** between-cluster ties draw related clusters closer together, so the - overall structure of the network is easier to read, at the price of less clean separation. - At 1 the cluster ties are treated like all others. - -### 3.2 Forces - -#### Repulsion (default: 40, minimum 0) - -How hard nodes push each other apart. Higher values spread nodes out within their clusters and give -larger clusters; lower values pack them densely. Repulsion only acts within 140 units (times *Scale*). - -#### Tie length (default: 24, minimum 0) - -The resting length of a tie, added to the sizes of the two nodes it connects. Longer ties give a more -open layout. It works together with *Repulsion*: if you raise one, you often want to raise the other. - -#### Tie strength (default: 1, minimum 0.01) - -Multiplies how hard ties pull their ends together. Internally each tie's strength is divided by the -smaller of its two nodes' number of ties, so hubs are not pulled apart, and capped at 1. The result: -increasing this setting mostly affects nodes with few ties, and above a certain point it has no -additional effect. Lower values loosen the layout, with *Repulsion* dominating. - -#### Node spacing (default: 2, minimum 0) - -Extra room kept around each node by the collision force, in addition to the node's own size. -Raise it to keep node labels or outlines from touching; set it to 0 to let nodes touch. - -#### Scale (default: 1, minimum 0.01) - -Multiplies all distances in the layout together (tie length, spacing, repulsion range, size of the -cluster circles and the 140-unit repulsion range), and keeps forces in proportion. The plugin treats -Gephi's node *size* as the node radius. - -- If your nodes are large (for example sizes 50 to 200), nodes will overlap and clusters will be - crowded. Raise *Scale* until the layout looks right. -- If your nodes are very small, lower it. - -### 3.3 Run - -#### Settling speed (default: 0.0228, range 0.0005 – 0.5) - -How quickly the simulation cools down. It decides how long the layout runs before it stops by itself. - -| Value | Approx. number of steps | -|---|---| -| 0.1 | 65 | -| 0.0228 | 300 | -| 0.01 | 690 | -| 0.005 | 1,380 | - -Lower values take longer but usually give a more even, better untangled result. Higher values are -quick for a first look at a large graph. - -#### Random seed (default: 42) - -Seeds the random starting positions and the Leiden algorithm. With the same graph, same settings and -same seed you get the same result every time. Change it to get a different arrangement, which is -useful if you want to see whether a feature of the layout is stable. - -#### Reset positions (default: on) - -- **On:** every run starts from fresh positions around each cluster's home. -- **Off:** the run starts from the current positions of the nodes. Use it to continue a layout that - has already been run, or to refine it with different settings without starting over. If all nodes - are at the same position, leave it on. - -Fixed nodes always keep their current position. - ---- - -## 4. Recommended workflows - -**Presenting known communities.** Run Modularity (or use your own column), choose Community Clusters, -leave the defaults. Raise *Cluster pull* to 0.3 for cleaner separation. - -**Exploring how clusters relate.** Raise *Inter-cluster tie factor* to 0.2 – 0.5, lower *Cluster pull* to -0.08. Clusters with many ties between them will move closer. - -**Tuning the number of communities.** Clear *Cluster column*, run, and adjust *Resolution* until the -number of clusters suits your question. When satisfied, type `community_cluster` into *Cluster column* -to lock that partition. - -**Polishing.** After a first run, lower *Settling speed* to 0.008 and run again with *Reset positions* -off. Then run Gephi's **Noverlap** or **Label Adjust** if you need to clean up labels. - ---- - -## 5. Notes and limits - -- **Isolated nodes** (nodes without ties) cannot be assigned to a community by Leiden, so each one becomes - its own one-node cluster and gets its own place in the packing. A graph with many isolated nodes will - therefore show many tiny circles. Remove them with a filter (Degree Range) before running if this is not wanted. -- **Directed graphs** are treated as undirected. Parallel edges and edges in both directions are added - together, and edge weights are used. Self-loops and edges with zero or negative weight are ignored. -- **Leiden quality** is measured with modularity. Like all modularity methods it can miss very small - communities in very large graphs. Raise *Resolution* if that matters. -- **Speed.** Leiden takes a few seconds for 50,000 nodes and 250,000 edges. The layout itself takes - tens of milliseconds per step for tens of thousands of nodes. -- **Gephi's own Modularity column** (`modularity_class`) is produced by a different implementation (Louvain) - than the Leiden used here, so the two can give somewhat different communities for the same graph. - ---- - -## 6. Troubleshooting - -| Problem | What to try | -|---|---| -| The layout is not in the dropdown | Open a project first; check the plugin is listed in the root `pom.xml` and the build succeeded | -| Everything ends up as one cluster | The cluster column has the same value everywhere. Choose another column, or clear the field to use Leiden | -| Far too many clusters | Lower *Resolution*; check for isolated nodes (see above) | -| Clusters overlap each other | Raise *Cluster pull*; lower *Inter-cluster tie factor*; if nodes are large, raise *Scale* | -| Nodes overlap inside clusters | Raise *Node spacing* or *Scale*; raise *Repulsion* | -| Clusters look like perfect circles with no structure | Lower *Cluster pull* and raise *Tie strength* so ties shape the inside | -| The layout never seems to stop | Lower values of *Settling speed* run longer; raise it to finish sooner | -| The layout stops immediately | The graph is empty, or the previous run is finished: press Run again | -| A warning about a column in the Gephi log | The name in *Cluster column* was not found, so Leiden was used | - ---- - -## 7. Credits - -The layout is inspired by Fierăscu, S. I. (2026). *SoFab: Network analysis for research and practice* (Version 0.9.0) [Computer software]. diff --git a/modules/CommunityClusters/README.md b/modules/CommunityClusters/README.md index 301625fde..57a3c680f 100644 --- a/modules/CommunityClusters/README.md +++ b/modules/CommunityClusters/README.md @@ -1,47 +1,295 @@ # Community Clusters -Gephi layout plugin that gathers each community of a network into its own cluster. -See `MANUAL.md` for usage and a description of every setting. +By [Johan Myrberger](https://www.linkedin.com/in/myrberger/) -## Build and run +Community Clusters is a layout for Gephi. It arranges a network so that each community forms its own +visible cluster, with the clusters themselves placed apart from each other. Inside a cluster, nodes +are arranged by their ties, so well-connected nodes sit together and weakly connected ones drift to the edge. -```bat -cd /d C:\gephidev\gephi-plugins -mvn clean package -mvn org.gephi:gephi-maven-plugin:run -``` +Any categorical node field can be used as the **Cluster column**, whether its categories are numbers or text: +a community number, a department name, a country, a type. Or let the plugin detect the communities itself. +It is built for Gephi 0.11.4. -The module must be listed in the root `pom.xml`: +--- -```xml -modules/CommunityClusters -``` +## 1. Quick start -## Source files +**Using communities you already have** -| File | Role | +1. Open your graph in Gephi. +2. Run **Statistics > Modularity** (Run). This creates the node column `modularity_class`. +3. Open **Window > Layout** and choose **Community Clusters** in the dropdown. +4. Press **Run**. The layout stops by itself when it has settled. + +**Letting the plugin find the communities** + +1. Open your graph. +2. In the layout settings, open the **Cluster column** list and choose **(none: detect communities with Leiden)**. +3. Press **Run**. The plugin detects communities with the Leiden algorithm and, by default, saves + them to a node column called `community_cluster` so you can colour nodes by it + (Appearance > Nodes > Partition > `community_cluster`). + +--- + +## 2. How it works + +1. **Find the communities.** Each node gets a cluster, either from the column you choose or from Leiden. +2. **Give each cluster a home.** One circle is drawn per cluster, with an area that grows with the number of + nodes in it, and the circles are packed together without overlapping, largest first. + The centre of each circle is that cluster's home position. +3. **Simulate.** Nodes start close to their cluster's home and a force simulation runs: + - **Ties** pull connected nodes towards their resting length. Ties inside a cluster act at full + strength; ties between clusters are weakened (see *Inter-cluster tie factor*), so they do not + drag clusters into each other. + - **Repulsion** pushes nearby nodes apart. It only acts within a fixed distance of 140 units + (multiplied by *Scale*), so distant clusters do not push each other around. + - **Collision** stops nodes from overlapping. + - **Cluster pull** draws every node towards its cluster's home. +4. **Cool down.** The forces fade out over time. When they are negligible the layout stops itself. + +The layout works on the visible graph, so active filters are respected. Nodes you have fixed +(locked) in Gephi do not move, but other nodes still react to them. + +--- + +## 3. Settings + +The settings are grouped in three categories in the layout panel. Defaults are shown in brackets. + +### 3.1 Clusters + +#### Cluster column (default: `modularity_class`) + +The node column that says which community (category) each node belongs to. Nodes with the same value +form one cluster. The setting is a drop-down list that shows the categorical node columns of your +graph: columns holding whole numbers, text, or true/false values. Columns with decimal numbers, lists +or time-dependent values, and the built-in `Id` and `Label` columns (different for every node), are not +shown. + +- **A column is chosen:** its values are used as they are. No community detection is run. +- **(none: detect communities with Leiden):** the plugin finds the communities itself (see *Resolution* + and *Save clusters to column*). +- Nodes with an empty value in the column are grouped together as one cluster. +- The list shows the categorical node columns of the current project. +- If a project was saved with a column that no longer exists, the layout falls back to Leiden and writes a + note to the Gephi log. + +**Tip:** `modularity_class` is the column created by Gephi's own Modularity statistic, so the default +uses its result whenever you have run it. If you have run Modularity but want the plugin's Leiden +instead, choose **(none: detect communities with Leiden)**. + +#### Resolution (default: 1.0, minimum 0.01) + +Only used when Leiden runs. Controls how fine-grained the detected communities are. + +| Value | Effect | |---|---| -| `CommunityClusters.java` | The Gephi layout: properties, reading the graph, writing positions | -| `CommunityClustersBuilder.java` | Registers the layout with Gephi | -| `ClusterForceSimulation.java` | The force simulation (pure Java) | -| `CirclePacker.java` | Packs one circle per cluster to give each a home position | -| `Leiden.java` | Community detection (pure Java) | -| `Bundle.properties` | All user-visible text (setting names, descriptions, layout name) | -| `src/test/java/...` | JUnit tests for Leiden, the circle packer and the force simulation | +| Below 1 | Fewer, larger communities | +| 1 | Standard modularity | +| Above 1 | More, smaller communities | +If the clusters are too coarse and merge groups you see as distinct, raise it (try 1.5 or 2). If you +get many small fragments, lower it (try 0.5). -## Tests +#### Save clusters to column (default: on) -`mvn clean package` runs the unit tests automatically. To run only this module's tests: +Only used when Leiden runs. When on, the detected community of each node is written to an integer node column +named `community_cluster`. It is overwritten each time Leiden runs. You can then: -```bat -mvn -pl modules/CommunityClusters -am test -``` +- colour nodes by it (Appearance > Nodes > Partition), +- use it in the Data Laboratory or in filters, +- choose `community_cluster` in **Cluster column** to reuse exactly this result later without + running detection again. This is also a way to freeze a result so it does not change. + +Turn it off if you do not want an extra column in your data. + +#### Cluster pull (default: 0.1, minimum 0) + +How strongly each node is drawn towards its cluster's home position. This is the main control for how +separated the clusters look. + +| Value | Effect | +|---|---| +| 0 | No home position; ties and repulsion alone decide, and clusters may blend | +| 0.05 | Loose clusters, ties between clusters still have visible influence | +| 0.1 | Default; clear clusters | +| 0.2 – 0.6 | Tight, round, well separated blobs | + +Very high values can squeeze nodes into dense balls where collisions have to push them apart. + +#### Inter-cluster tie factor (default: 0.03, minimum 0) + +How strong ties between clusters are compared to ties inside a cluster. At 0.03 a tie between two +clusters pulls only 3 % as hard as a tie within one. + +- **Lower (towards 0):** clusters ignore each other's ties, so the layout shows clusters as separate + islands. +- **Higher (towards 1):** between-cluster ties draw related clusters closer together, so the + overall structure of the network is easier to read, at the price of less clean separation. + At 1 the cluster ties are treated like all others. + +### 3.2 Forces + +#### Repulsion (default: 40, minimum 0) + +How hard nodes push each other apart. Higher values spread nodes out within their clusters and give +larger clusters; lower values pack them densely. Repulsion only acts within 140 units (times *Scale*). + +#### Tie length (default: 24, minimum 0) + +The resting length of a tie, added to the sizes of the two nodes it connects. Longer ties give a more +open layout. It works together with *Repulsion*: if you raise one, you often want to raise the other. + +#### Tie strength (default: 1, minimum 0.01) + +Multiplies how hard ties pull their ends together. Internally each tie's strength is divided by the +smaller of its two nodes' number of ties, so hubs are not pulled apart, and capped at 1. The result: +increasing this setting mostly affects nodes with few ties, and above a certain point it has no +additional effect. Lower values loosen the layout, with *Repulsion* dominating. + +#### Node spacing (default: 2, minimum 0) -## License +Extra room kept around each node by the collision force, in addition to the node's own size. +Raise it to keep node labels or outlines from touching; set it to 0 to let nodes touch. -Apache License 2.0, see `LICENSE`. +#### Scale (default: 1, minimum 0.01) -## Credits +Multiplies all distances in the layout together (tie length, spacing, repulsion range, size of the +cluster circles and the 140-unit repulsion range), and keeps forces in proportion. The plugin treats +Gephi's node *size* as the node radius. -The layout is inspired by Fierăscu, S. I. (2026). *SoFab: Network analysis for research and practice* (Version 0.9.0) [Computer software]. +- If your nodes are large (for example sizes 50 to 200), nodes will overlap and clusters will be + crowded. Raise *Scale* until the layout looks right. +- If your nodes are very small, lower it. + +### 3.3 Run + +#### Settling speed (default: 0.03, range 0.0005 – 0.5) + +How quickly the simulation cools down. It decides how long the layout runs before it stops by itself. + +| Value | Approx. number of steps | +|---|---| +| 0.1 | 65 | +| 0.03 | 230 | +| 0.02 | 340 | +| 0.01 | 690 | +| 0.005 | 1,380 | + +Lower values take longer but usually give a more even, better untangled result. Higher values are +quick for a first look at a large graph. + +#### Random seed (default: 4711) + +Seeds the random starting positions and the Leiden algorithm. With the same graph, same settings and +same seed you get the same result every time. Change it to get a different arrangement, which is +useful if you want to see whether a feature of the layout is stable. + +#### Reset positions (default: on) + +- **On:** every run starts from fresh positions around each cluster's home. +- **Off:** the run starts from the current positions of the nodes. Use it to continue a layout that + has already been run, or to refine it with different settings without starting over. If all nodes + are at the same position, leave it on. + +Fixed nodes always keep their current position. + +--- + +## 4. Recommended workflows + +**Presenting known communities.** Run Modularity (or use your own column), choose Community Clusters, +leave the defaults. Raise *Cluster pull* to 0.3 for cleaner separation. + +**Exploring how clusters relate.** Raise *Inter-cluster tie factor* to 0.2 – 0.5, lower *Cluster pull* to +0.08. Clusters with many ties between them will move closer. + +**Tuning the number of communities.** Choose *(none: detect communities with Leiden)* in *Cluster column*, +run, and adjust *Resolution* until the number of clusters suits your question. When satisfied, choose +`community_cluster` in *Cluster column* to lock that partition. + +**Polishing.** After a first run, lower *Settling speed* to 0.008 and run again with *Reset positions* +off. Then run Gephi's **Noverlap** or **Label Adjust** if you need to clean up labels. + +--- + +## 5. Notes and limits + +- **Isolated nodes** (nodes without ties) cannot be assigned to a community by Leiden, so each one becomes + its own one-node cluster and gets its own place in the packing. A graph with many isolated nodes will + therefore show many tiny circles. Remove them with a filter (Degree Range) before running if this is not wanted. +- **Directed graphs** are treated as undirected. Parallel edges and edges in both directions are added + together, and edge weights are used. Self-loops and edges with zero or negative weight are ignored. +- **Leiden quality** is measured with modularity. Like all modularity methods it can miss very small + communities in very large graphs. Raise *Resolution* if that matters. Leiden repeats its passes over + the graph until the result no longer changes, with at most four passes. +- **Speed.** A run takes about 230 steps. On a graph with 20,000 nodes and 80,000 ties a complete run + takes roughly 3 to 8 seconds on a single processor core (less on a multi-core computer), whichever + column you choose. Leiden adds a few seconds for 50,000 nodes and 250,000 ties. Very large graphs + (100,000 nodes and more) take correspondingly longer: raise *Settling speed* for a quick first look. + Repulsion between nodes uses a Barnes-Hut approximation (as in d3-force), so big, crowded clusters + stay fast, and it uses all processor cores. +- **Stopping.** Press Stop in the layout panel at any time: the positions reached so far are kept. +- **Gephi's own Modularity column** (`modularity_class`) is produced by a different implementation (Louvain) + than the Leiden used here, so the two can give somewhat different communities for the same graph. + +--- + +## 6. Troubleshooting + +| Problem | What to try | +|---|---| +| The layout is not in the dropdown | Open a project first; check the plugin is listed in the root `pom.xml` and the build succeeded | +| Everything ends up as one cluster | The chosen column has the same value for every node. Choose another column, or choose *(none: detect communities with Leiden)* | +| The Cluster column list does not show my column | Only whole-number, text and true/false columns are listed. Decimal-number columns are not categories: convert them (for example round to whole numbers or bin them) in the Data Laboratory | +| The layout takes very long | Very large graph: raise *Settling speed* (for example 0.1) for a fast first result, then refine with *Reset positions* off | +| Far too many clusters | Lower *Resolution*; check for isolated nodes (see above) | +| Clusters overlap each other | Raise *Cluster pull*; lower *Inter-cluster tie factor*; if nodes are large, raise *Scale* | +| Nodes overlap inside clusters | Raise *Node spacing* or *Scale*; raise *Repulsion* | +| Clusters look like perfect circles with no structure | Lower *Cluster pull* and raise *Tie strength* so ties shape the inside | +| The layout never seems to stop | Lower values of *Settling speed* run longer; raise it to finish sooner | +| The layout stops immediately | The graph is empty, or the previous run is finished: press Run again | +| A note about a column in the Gephi log | The column stored with a saved project no longer exists, so Leiden was used | + +--- + +## 7. Credits + +The layout is inspired by Fierăscu, S. I. (2026). *SoFab: Network analysis for research and practice* (Version 0.9.5) [Computer software]. Available at . + +--- + +## 8. Version history + +- **1.0.0**: The *Cluster column* setting is now a drop-down list of the categorical node columns (it was a text + field). Much faster on larger graphs with big clusters (repulsion uses a Barnes-Hut approximation and + several processor cores; before, a 20,000-node graph with a few big clusters could take minutes). The graph + is locked for much shorter times during a run. Leiden stops after at most four passes. New, rounder default + values: *Cluster pull* 0.1 (was 0.14), *Settling speed* 0.03 (was 0.0228, about 230 steps instead of 300, same + result), *Random seed* 4711 (was 42). +- **0.1.0**: First release. + +--- + +## 9. For developers + +Source code: . Licensed +under Apache 2.0 (see `LICENSE`). + +```bat +cd /d C:\gephidev\gephi-plugins +mvn clean package +mvn org.gephi:gephi-maven-plugin:run +``` + +| File | Role | +|---|---| +| `CommunityClusters.java` | The Gephi layout: properties, reading the graph, writing positions | +| `CommunityClustersBuilder.java` | Registers the layout with Gephi | +| `ClusterColumnEditor.java`, `ClusterColumns.java` | The drop-down for the *Cluster column* setting and its rules | +| `ClusterForceSimulation.java` | The force simulation (pure Java) | +| `RepulsionTree.java` | Barnes-Hut tree for the repulsion between nodes | +| `CirclePacker.java` | Packs one circle per cluster to give each a home position | +| `Leiden.java` | Community detection (pure Java) | +| `Bundle.properties` | All user-visible text (setting names, descriptions, layout name) and the long description shown in Gephi's plugin manager | +| `src/test/java/...` | JUnit tests | diff --git a/modules/CommunityClusters/pom.xml b/modules/CommunityClusters/pom.xml index 7036f5cf8..b97eaa896 100644 --- a/modules/CommunityClusters/pom.xml +++ b/modules/CommunityClusters/pom.xml @@ -9,7 +9,7 @@ myrberger community-clusters - 0.1.0 + 1.0.0 nbm Community Clusters diff --git a/modules/CommunityClusters/src/img/1-communityclusters.png b/modules/CommunityClusters/src/img/1-communityclusters.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e4211109226ac0e0a614dd81c952b78b0fc208 GIT binary patch literal 287711 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 z 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%0D@1ZGe!#qS5Sz?S>U1v)%pu?(iAvWbyx&iF! zl0)+;_)ryh-BT5RY~;x2@}(&uy$i*Q{0Pb?#EFXZneV&I%JRcseXA=Eb&=U3GD&ug z*r}YgdFRzT=lXLXK71)bXcj_go0K`;GhlV@*kVT-MUX6jd{v~_VGQ(H=1~t{kFooL zMBe!!2&YaTF34=}m#zbyHlbMopb=ZyQNM)Brmaoz3n9-FunpJA24ydeY;wSm?__5j z$$u*ALS>#iYXF*9bwzr;I9t+K$qx|GXDR2{lD49eynY9(3xY) zw!zP4e$JeF`fF?%Zb$uN9RZ@4A>e{vv^Qd?^TCBUrl8pmEyF|G8Sp%TOz3}+Kwl%k zRiT2Iqh6}3A8g(rS7F*!+2JLhRVEgk@keI<;%kbFVfcOCpPp6xR}b<^W)*_lBP!Uz zl~ENB8YfiVsf_3)Q&rL59_YE!lGp&XU^`R}`|Jo1RQQz+DV6Oe_N2xadj~99`Ad85 zqI_1@7?6zICmH>Q)xavP4R#0T^Gq)Ng-rL1ozw} zBm*cdeVIF;BcMS!(KFe5VZ-EGihqWPbvC=U5R11@N|`^fvUR|ecDaKfn^OHuHt4$T z8S<#|2S;p2d6uJ_FR>Zd>63*AOnk&1Q#fVDTWvWdeE~Ycw*8KRD*StC8~po^&bI@G zINAjqxBT8A_BS8GW3PZz{CjC{XmHYXKfLV{bIv*Q%{~*SSzC}x?dWJ3UfN{>TM;rT zyJT|2^|Se32>jC*32-T2Bk<8wyWJ){Vpc7Fk^P^-N!Klrh8cyWrkL5|(q(4DWgpJh zwVpJ`oOwt-edxl=FAFXgupI&K`=k6z0u@kzXeZenVJQG|Qm9KtDjG}$Y!m7 zic<<&9)Qi?e*IsWUqADp895F6Y0$K6j!b#y zH|&Od3oN~;Yhb3tO}}xkmIdr@hNd^WzgPLCh8LA+;^^iVrNPIRKWVNVGohT)PeZVb zGq!<_vLj&}wKi{b{EuJd&s#q-UD&S+Jel3#*pl)O&#(hIP!5;rk==`Y+=qN6PM9u! z8ma6Lfvi<_=Kk*Hdl$cK36(XJA!G0BT$Vzbxar}_>_2ZiZyS`ubxUAe2(xU+XJL%~ zS?6*N=rOg-$0n5Sq4L#b(8~k}^XcWw&Da^8I!}qCPcQH1Uh5mY zBS~x3d4P16+%X&2Q9vikGde0Cadh7`vdx=re$;+FpbmD|XR7|5&*XJ)Y|hme4dzsT zGzH(cOWFr&BXGQL^E$J~-X~d^c_+L3^?dDy+s(3>2{UdUbJ@A=A!3A%FS)Toynl}bkc)r-8fIr*VHZTf|{X!L5J z&;S~SjsStpkVe=lm8BH)Oe)L{0G^3GR~5cHJ0J$O<4*-oULKGLjV{7*^Vy2O`QcCn zzDH=>AnS_RCzu1)j&`lHBmhuf9 zPv`7w%pWfuvIpXfZI+|MnU2<9dB1%|wtCGW_FyUFj4sh@L1-xjGX(UVa;w*@F&wlR z&o39^Kpt*dZurO!k)J%{Q^E>i)6xqol)uU}FX%PA zI!N=pvn`&thJ&E3W%Of5g9ce}*qqL>bsXuT^XEI*C;5^ic~#{bNAhiKioVbIH|A64 zN&9jZlY>9CK1S+&@WB&KDbBh#?rp+5-+fq_-fp^M2kL+jA)9C$_uB_;XTUH+V_%=k z@HfcN8ki=Hdi4J-uE7A{kbHoutx^6;D5BQB!L)(_|88JQZyYBh$jk#P^<)Qn|u}dVfyoZyn z)e)jjfpuf|EkFAwko}Y;`FTg)Dasiwb#n6>GXC?_Mdsm)KVtv4do)yZMuk95$zS!p zLcTh?k^cQgLPwsgV82X%K1v54WUZ2SkRU&4D^hLKy)RV(xvMC zGn^<~^sRH`QGIM{+06Ei@)gUJ_;Sdiho;na2rzyAA7|fDmIEwtQ#pmM(K%D=tJdNJ zVQks|5&JCfS(VE^?mL*WB~<_5)8WC-hI`o0i#No#Vg6^s@;ZoLXjwzcU}%>K3^O#? zt9Hp`YRqT9@GnV5j$em9dy0L=b?n}G?z!`A58EJj+GHv_FQsytTv0jI^d6>vk&&Od zX{mYUfhPd$Koh_0wPmyNdziXAYR24h+LWzKJ-)7M=W@O>An*%6gbIz&G626Kv8~~I z*rV5d+paksHR2(wGp35wO)+$dO{eU2+FlIn-_-E5>l8Hoj459$cAef_HY(zpUh7V? z-AWw+0{d#ZTtI2W3pX@1G|w~nOBnw*OxR$*EKmjEhrY;wenU2a{*?yUmphfUc6k6a z_?iT9Df3#EhiR1clJC%$zKFmyew|YhLHEc{d|myKHkN>__=gUt@VMy^N=NjHeqXli z(#qulF(hLZgyE-O6@I$f|5vTZ5;tEG;7>mffvzZTR1PyecjpH`WA0dSoq2l7Nb}I@ zWoFETkyhV6G@kwC1$9ta)pUPVR{aVm@z8X8?)P;?cjJg-?e6R2)_vBDKKk^|@+E_`Qy%-T$5)u&KXkU$^XA{&Z95~-ox21E>{RUs zmzfI=c*oH6-@vi}`@a_+{)HMxc|)pu8a{DJu`%x1%?wTbb^WP&AG+mRC{1Flzu;;! z=6}4h_%98Ai9k#jV0H1c8*To^9{nW(A?$sQ&HB2mMQPap!owcia@NJ4jy(vTTzp+{ z*`WV_9jWg&m&NyQGW%>Cn(j}YRvMyjWN0eK^BKNa@~aUyncv)!FRPW!qodgejxI;O zFS+dNb{fCyxc~j1{X?_*!8zu4#xJrqw(lc1m{0urP39%bHkyxZ7-{}sZeIVLG-aY~ zD^Tb6$s5Y2nm3&BrraKPnQm?J3*Y;Qb^q|yKe5MK@B67)_3H=CYiDQWS^@Uqmp@GV zKlj$GTsx>@slb=!+fIX#_cEKPvt0AvZwz>9iS)8%%WUTc_sF(bR`9j2U1-0A5JK^5 zXAuk^ZD+tRq6`qqye|Cy^!P_A8}f|)(-9B@Kd!#GgoAd_|Qu_s|1Z%e3u#X;yuln!n2Dj4fhQG(rdlhGCxQ%w? zlgwP_f8s0M6A$#a{0B?S#MwhH{RLmU*36tUBr|bMS@-TjIrPz;v->muQ_|VRl`#dk z(Hx^AuV=RZ%;?>-a`Z)w>|eG9_(eJ`ooH+$_JQ@^G{^7tx7JQWkhVBA&Qr=P;=|qm zq$i_S?C;>?#!K;+KIX2?I}qI208JXF=tiHH6z{oogSm01k+y?C_PSxom(1v=r&F*=@RqOV`iBJyG)3en_ilg>FPlkxKO76 z^3|24=-d6osEg~DkK55$XO}L-W5ts0ihhhxr%LRd*3o&9>Cbiqc(Z@Pok>F-Soo15 zmrGCYs|@l7`NZw46mD5OD7HNKt**}tLen^>#FuolXki-FcI^J{ z+>^`)FU>z)__=5IG@ts5*O;IGYN72&;8S~irtiV0@3nr-JuTnh7a9Kjmw#z4%o^7Z z9{O$b-1LXdl%qyj$N5d)x!>M*%)uwwBk$AKP9FL+BIP4?bKz-o%!u0-*iQ)ZDZviD zG~ZnFw`bYU3SuWX><8J2zw$k8pud0TM{V1MK})%hUGR_DJdL;fqU6gfVlac zCi)bi;@2`fw4DLN2ps__-x!6ehCCVStLJ~Swo{>>?{F^o{Drmy;Qf;hHFKWb)o$>I zqa$GcH?zVZqukh!h8v@cRDzsQEIJeZ-@}iYy>GkPEPZUHxoG2&=53?02G>`Al8-QW zl_r+~O{hyMW%0+?n-wDtOwM<1Cjc_~ofYmmadJBZ zMoyS!zmsqCRVMSyx1DT%XM;feWTe~IdkFcdjtwe0G>nG3Lx6DV8eF6)GpguJB@fun zfP`{SsKF|vZbZ^% zE?2MUgxOxqJg_r}#!rZs5tLz+WeFgspO5e}sr<=o_rD%n(bW-S^Ju_+sGyI}!jiwW z`W2KF#io^R8B|5+p4f9Xy_gk{g<!@=Xy=gZy_29{6 z9o?2gnZFYs$(Jep?M<7_Yo7bIxna+_X4RCr_MP{(qu*-FCCbn%7hY<1JMCR&>bzsj zU%mG==7>XQn`4fDsr6IvE_meUn{7ux2s#B;j=Ra;v)ew-%&|-k?1i+~(j*%D*<~~D zsb#iPfa6)atTosC-C1__fD8ISPb;sdqi;7mfJwV0G&7pE%y+K&Mn`+)?u*x$6aVmV z+i9YXle`n4`9|n1&1pLWhMC{opH`|??UI?=sXzv!moVl}6&Jqe17`m0@XP}`1^5EM z%-trM2@kB!D?MH(05b{}eBo>6{SR-l9SGn5?&Y=uHD=O_%)uj`vJD9prWBqOvMOLz zpr*dudl?bv1qxs)%D6R)m)cH%-DjU@8+j>}=cdFeP6K^8XBA{Bwf*?#b_Rqh8?~qt zKo$0F&=DYHlh|sLxbV#G8>iaofo??*onSZa$Tpn-Rh>jT@&|a&;?*tHBr=k>_!9cudtc|=S z4^Mg=dHjj?*<07IFgI_SYe#ld!A}~QFl(>;InuY+4gvJv)ZSx_T$TjT`8noykFt3o zmiJ@04S4j!dU7??X=u@@+OaEs1@ec+R&412>BjyJN>l01kDqK+kcL15n|p8}omBnS zL8hxQo1e5J*4T;O8#rwBf}Ka(F9X*hZ9qgzd!Q7%`UqPEy3emss^14eq#r{ z*sWVmAX|!UhHNc#O>(I`vgzY>RAL9dy#3A!0CeW3T@%PFq?eojhNCk8|3jStP0Id^Yi!}yOE%m0xu(SfjafgRst(KyB;1o* zZZ#W!_!s7~OaH^%f9ZMV*(KMRf4qB(*}VTq^P35C?UGDp2#_|DZ^=8jzx|&dGpqKV zYiDyP&8}E{vH6#8{F80;SMh^OeqyKR&z^ds{hxGS{!I7RJLnL=u|L3BC(N0(VA%`?)|nv*6Kn=E8r!z|4Ht8_bNC=hLTD&{AOVQVmsN>TnB; zL88VKm11P0V#rc}UoYRwjLRy6s(cO?ennag^yPfr9Rr;i&`YDL>;#}PNT<>^g!EJe zOO26~O0%BxX9r;0`ZSOW9RdDw0nPYf6H!g0`@vWL#Vo$`YWutLF}6rp{&EJwbsN`I zAl*u82aH@M=-Q6bIgLRzRH&${q7)+52_Ph+It4-yFB*cx6Nty1-}-Yi^2JBkX^hxf z)4V`hQi*aKLmYeQ5U}?)l!351?1^+JI>6l708K0Tj83v70G)%oY(i;w0I|Hd{x@UIE)TElnoU93$^Bfj z743(2=~z~9;DK|^{r4|4Q|`Oete-N?>~`M`cE-TwtG;1Aw(E<`4HNSY3m0T($~LnD zY*?9JGcUi^mZ7o(Tghj3L4(-=0-5oba)VBsHB-7f{am=8-<}#VG%G9i-q1Dfqmm!e zWsr&)M8q{_tD$S5d&^k?Z#p?IZ@eV}q`SYtA@=0%_YsP3Doyfl2y6nU`U3f5Yjp`^DNni;?2{OCW#YDs$uw-a*V7Ae~O0 zcD&tV;3WsnESD3Ux8SE{zgPV%52OM*3tl(jZ1amTGpt|C2B3_n>yWGio!)f&by@vp zX>HqwWdPK3X!w_Pjh1af`!#`K1S3yrnAh!+*|c%r6h`!Wg=b?k3V`1heEw@iWhX0f zGPG8Zf|u){Bj`RK_ntw)3!Msy3sVuP#3BbWB5yC97ER%^PQ%WjGm4XK1Qlj|MPOUY zQb5|u=BR}7GE9Nz#@#W;HpqJ+^pz3Laqd?}2q*Mq0kEUOnFDNAU;pSrI&XmN-!=|1 zLU};p(-2i-)Wz3L-6xD#`;GpszZafoj(GFuN`EzVF*SXZuX&EIUbxSZ&i-cyQ)ntf zNoM!w{y1}Nb{}bIHDT$5E#>a=G2IKwvqzTCX;glqyPsWtraiCnI|OAa_@nGTqydf! zuC3&H_zgmkO^%;FDw-#N&jUU%C;tk8EprN}EPvvFv+XAq0iEn|+JWXH6Q)LGVG~{Q zRry}Z$}PT}gDw2cjhk#({lYs2ho9@0SHJ&Ak11R7&$?dp!}!L5E+Jh;srb@}$|B#E zO5N1JbFRF0+J8lO!Y$XD*l~!aUlfReeaqGdO=VeLfX;E~L+5$kaCZ6cq0?kg`q|!) zjmmypeaZC$)8bEj^3S_Q!}*_2iSxdf3@%sy$4AW4JFYWlzbc%Me{a%l_8uS~Q%1<~ z2~^4_-bb%{UH*yLwQJMsBcHhSI(x(~!Fl8NTLHS29(_H8;GRX_Us9$;NIxxGhqg0d zn5p}$h<3>&6IH$Bs{9b#^V0pBRot4uasU@*1*E`p&+dAEu&`CdfTQ9c(?d$7rw+Zm zsqAvjOIPas9KHeT7O_wqFtl)Lu& z@Toy&2LKg^s+T3dQF##h{tS{b$emd9tn(z^AUm z#Py$s4ja@R^0L4>;w=8XR91P;*BuqBUONODJy$eF&w15M>-s@@=SwZju<&&st4v|1 zxYWkWiX%@jN1uLKqmF>NYw}OgvNr%O71ANr5C>f&Zlz6TL!!EsRam7YEqyd8qRaO8Q{R%Jhf(iiYPrvtx=*B$j%vtYr3;=duT z{*Uvb9RY&Qf(J6^GrzE9z2DA$YN7e3SARdhn1G)1;hM^z1@|p8=YD^IIpq@<+9NIo z^^{osy=D8R?F<-Z7}Y=flkcfPd@-D!{SPe{f$IgM6tz-)Y<^Q$@L`Om8nU1AsJFg~5Fhrts7w&zZOW z&8g-+=fBq6H2Kr!XGh;+&*>Bhaq;E#6$hY0;NPwf&kmqLC};09{kCb4HR4>&NYD#&2Mn z#}HO-E;)Ym1Ec#kIYd z9-7dPPD0QzHymgN1~!M2z7Kmxz7!=z|1T7zBiV=ag~R4_K3p&*K4m1F`&>c|{19{& zEWM+9fWhZ|`{lNH`p5!`d^?;cY8SJ8RcGVHXS0b2oe2>i)kzuP=E^>*v{9~W8zpn}aM-(fS{ zA)t-`Ej1uBs?wA4@|<~0+Pdv|@B1UOd0bZGDJr+io*L?*u4CDv&RGRjr~n7W15)Aw zs=Ufk0d`0Kh5Pa#oZ);~Y)|wuvKpe%2!a|#+d0a2u}ZcN4gSBm^momicaODBa8Ad- zocE0Fm?gmM04mlg6$e=VouN(x%?@DXe1VgOexnc@cPr4nK)#sv-j@{rHR}WjQPn9x zoPIX*bN0OSJF^!*4cvHDrB6!S-Dhcl^g2Tz_zbqLPMCOs-fz1AObW4L=c{T>=H1D{X=G^g_ z%buGu<973w!*4gUZqMURyzTqJNh{Zec!rq{(z)dEvGOtVV*oRrkeN|`-b;iRilfrY zw?mtEi}xooHKMRvW+maC_~Gv56zBK6n&nGZ+238*1-ucNp0OjVbEhM~rfC4zt`x6+ zs46?Q6-r;_NB*btN%fK!O5G$C*5&jsy2yAp8b2 zpA4*P{MmcgE?8hY0L**6ZRN86xlShmNdKVDzk`oFAlSAE z!F{9`{wT=1nYbZh|VGk@_l=BzJYP<~d2LTRs&bIjgLep%cRhiB)_ zJ0<@T0cZm`*LfQ+Q7|Yz+8x`CiyJ2@ZfxX3p~fa8R35a+56%a_wTtU;ZwlCi&}K`} zcqiy8_$1^@`rAP8np^+U9C5@4(>5BSVMO|>qOG*v4m$_Xy_*KauP%&Y1g$#g%+B!KPmsq4LT`P}nWsGiEn&S2lkGD{J@YIAPO3@{hYY7wEHJ;fVCjSY*c{N`oH4c`pud@%|G%INXQN9#ou`cmUH?P)8w^U< zZez_a!=xADSoxKJ0DKkT~j~dHP?=r&?vq> zvaPZAZ8R@_eYZz^S>WM`i)@;?HcNV=Z^BM0qg}E*N2CAD!{5`f`4{Inz5xzyMW6R5 z4HCDmB4iJ?9C_^4vdk~P3_#~Yan08ix_9l(edqT}W4%=1ZXl?#sSfHO=!X1BUIz4} z_;LR02PX&P%X5A{i_uFw2dSGu;OmNW8jsQ!#}r)*7sz+zcYl(!Q8@K>2JK`gHX%ZjqB{!7@+;Cz}BIi8L%BgC0sq7f`Wv70W`C~on1ho6heOR zGVOqhOy-ywz^Ffs_7Ju)pZ!h;z|YqYjZ%!yGJotDpRc|04R#dZvfaL!zx;iNEL02% znHXKM;c&hra|MbEqdN~@oKM46yxgh(G4NA8$XmPjc)MT#Q}Yj4Thw0aAnkzk-9bxL#3oD&-mp} z3U&Jf0J2Knt}w70XT(r(#{u%vP(b$3C|_L}AQ&}8hZ>R8|Gs~9lrkW<%CiO#u0Kma z`cX%UJ6d0rX8y=Z)kq6|Ts?D(UGvOFn6dYV58SRY|EAMG}BF^ZYq!kSD6k)o+j_wSpmH7oqXY#57>(fI#HVGe{2XxoOJHv`y)d4KA(^cNncQ>t8InS((N3pgBe*WHxK#U zzqiLa&i`?)3xC#@i|u$Xen+kg-uXjw{9_+5J70ga?Et`W{=PFlZ2tZ1D{Yy_y9>wW zgIkU@X6ox7v+sjTpUnL6X9NUT@Qb|cBW?T{3g|?$nceyh=PZ$CrnF`=1A3%v`M1w} zIcY{x%V23|25coL*cgTG6`ohGXviOW;$ovfqT{!$0<+@!4Q7wi4zmBwJa&$Cw~zdd zx$yGK%!1X+th-{5yUnD(oMC=<=6Lh$>fbdp4m#0hT6!NR?3;h?ko#k^3T$V=JO0QV zHSHyKgo6=4jTUx{8Zx>&(V8XN5f|1;wQ|8$G>GpELmwtn$J?XgZ70Kw+bVRL^Okc~!Pw1=X|JTnvX!hQ_b7Z;;RgnFL zk!A+yxEc8uBz z!mA1sV);p^G2p-Fls+`XJIch&UOsl~3Uk!X`8&Xe#wW7?%God3{U_aXy?MzA**h3#2>m({sOgVfCy4 zaoYkj@1U7x&!@)*+a-C2z-#Q0GK2WfJ?$8KZR){AAyq)xGiSF~cj%CFTxdp8%V23| z25cqB1pT01QC^BT9}0zYZ+eqmql|mc`KN_9Fr)H{%U;CO-g}t6B>$KpFy$Qwn)!EJ zW9EF~Q1iNr{=t0clh>Q~zwsNkFp>;{LTBykAC1l`;M!SV{;k zC}Lf=t z_bt-BU$kLTbks@Vgu>E#+5xPq9Zu9B5&no9{N(B%7iaa*aUk$}-n@C0vjg~zUUe5n z0cm7^dgq}p3xv{uPx1ky4|QwHLnFJk;?A+hGRw`^E|eEI8n{&>9JXN+fRR>r(%8&K&mQ z+YHa)Af=o|Pe6M4X{L8kl|Q5p&VBxzee<=mzMsg<=6|ltc|1-i!y>I22}38s>L9a2 zD(boqdzQc^WTpjW$z(8!bOg!9)8x=^FRBkfbZqa|ka>M3?TGRHlC zHp}dH*qpL(rXX@hr0%@)q0Eo04%8&{YKfAJP``g>0_ zpB;ak?SZE!e)%(5!I7Q2x+tf?X2)+We1kd2OgFb*|5s-6F4N5JvrjS;XXgcM?T8<7 z$|_*Y5Loy0IJ3vmlQTW-W}X?nd+u&pYQ`+SYv^7o@~lgS?PQcX*4sa@p86u5{rXq- zD2GN*Q#u@^>+L}2F*Hg+dJxBu&ghL#nHj+JJf`K*KxQ`1OO8FL>=mcS+aFC(M}R60 z-KKGtFGiPSboO61*8wfFj;Wv})8bqo2CXwhr6d*r( z41yi$gOXuK1*p6v;Z$2r2#^EK}$wR~B zA9vPK>5H~uCTB-=cXxW)h=lsUbL!P_ zg6ps#f66=hjX6g72N(}!p*z{owoDf)6O|UIe{uGD$?ceH?%RDsJvDkMQh)IQX;+c8 zzVF6uk8~p-N~;@qL3>dTolOU{k(S?XuOku2w5{N|y8lP-Et8!s2FVZFwN2?u#%J$FzKk=B3El{S$EVMef}9u|i_guMQD+TFL^#Bw zNx#UmxDiPcXS{COxdLU6tb+~`-z!jtP!E=V;t?zB5Elj{J=Z*J?K10x9y#-&q>>Nw zqYSF@&Ub{i?QLd;-8Sk}80k?c*+s4ql=Si^U@I{8EP#3`ZLc%4{wRKUJH4|vD!7>S z=;s(gQPA=uu)~x|o>QbehtkGub@B{+>wjRiMR|d;`IVivD-&0!Nd5~fhItqGG-{V91Ck$Fnl`p{0 z_*5RuG#`Lb#jK~&A9W-OVs=kg-lWiFny~3QB_EXuAkx{SpQ8P<$zQMz(sL(0<@Oo=>-LOURN8KwoWl>dV>xb{lcuo*m=2!WBK; z`dD&^GH9d?`vaIdGY$fetb&KO$WP69LzI9S=bW^VucVR8uM~1FO8(e@_xcq4%zW41 zhy(~*|F1_It6`3=f>Ivmq!Ug=%B`H2%nQSvGt`6L<@sUl=9kbHz!^VzP;PGLKP%{U zjFu(h(45LDg&$o<@fEb<)o3HwLrLs1Eju~vatoV=dsIr?iv;TXt@?`Uh#5(8%bcV6c-j;IP z(^tx_&ub)wthWty(Bb_kPcy&kMSD_4GrPgsPn0%$)>{A986J%!@cv&$kp=cFi;Xh# z);r}a?S27Z!-i?{c}@2$cmr*VsGaL=#kdUGtGtnd1wM~AAi zU`eq|nt7)@`t((@vdfEZG*H`xCR*YCJ0CUAvxbma3ltqbNvq!aRnns4g(YSKz=n0z zUH#LB!=I zUcev7Df*hV*Cs+>VS&pxF-~XTIi-~#UZb7XtS>OLx}cr(4{j3&_Kb46kpauIW*WJl zjxtIf0OgbP;?e@;BG0cD{KKKS#4Kd21d%RBtPNFQV$|ZF9=^ z)P!9!=;Tyo8jRaHP)2rj$3WWixqrSX!*b70{OS*)1$MtPP8$F8JLdm%_Am9vz6C)Q=gQScjb8b9ANCDhE5kmYChbODRQ9P}p>^c) zgWuX~8_Fv{*9FEx`a}DKvhy7$ zCj4Bd`yj*5nU)_qgDdh-aBB(`~ziC}S|Vu?wb`u=!uZ^D-r7uX4c5_!#&=+=}&~CIJhPVP_ z8>MLC8&@2~u zPXGL_z^EX~f|EiOg3nftm937wf+QSQ8?|l?hk>FGR_uD)$)X9*T zp^OXYZ;WH8SFV5PXf+q0mExfTF_scJ;BZZZ@4Du;&kZICe>*h1XYxA0+0u@n#e`XkN)!u^Rz*p zICS-&L>438DS@)I<*x5%$^lDVX*yew}^W546jSkfTIh2q`9B0Ux+b4BB z`q29`&A5q~=mIccauf=`8ci4ddKn34`QZSY3no1X`NmDBfP0 zqMX^{D*Vt9#(5m&dg8WEQuL9y$AJwTk(Vr^yWaP_#1p}Ic2d5HSlaOHLdhEJ9)N*6c+zB=K<#DBqH{I9gKh0#xd zmp;+0bx99VJ&miimT9x{WnjNUjyd)MfGvzeU~aza6nNM%7g-w6Qsl88yZQ=8t)5Wu zkK{P<;BQWqllG4}jG6aKS6j9@KXI)Vy1npH2 z)^1)A%NYO=3`1I9V1&6w0fY*@gyA;kwln1VVZnw04F2T!cct%$i_QNCze?L@nn4ev zUmYXbCi)$x2=KN8bp+J&cNgDL;=E(P|1V8?#>{waY(6_9kE<8#w)4xcEDU%9C(qJG1~7`u-98h0jwRybO2r82w>LO zZbJr8cIqwsXrHv&eZ0BOXmFkU@#a5E)3qe6c;5!;aJ{!`m8`1aUpEvo($T!wd79{|sI&pR4eW4c=tXDH_)dAX%t7+eTNe~@ zzbFB(BftxcwYcrAWoO@rYWsGWy<^xrfId*8UPJf)_!-WW*2!oD14kCI*({%x+8%BC zji?Yc*7KLUv;MZsQsV-8GYY>`XA@!O&<>Gx-#vYZsr$_{r>8_J_#x?dNIc`mBgh}d zZOY~y6LRP8GV9iX${6ps>4%9kUP}qVuUcH&>AwSJd}SuzPQwn_r!49)BtM+=Q6RmX zoOV*XRa;XJW)$~Mig!MHX=eoej9CmcXn?jheHVjA{1C?(0H71{j_VMhjA70Iuj9`T z>FN&pyglZT2W7F1L{~A)r_U^3wp`x&^uMv30sU%RXbk6d^=Bu&lzJhgP`XkEHOE++ z_{IaWZ2lC(z+qs+6PUZ&l4p%lgrLI_5at-+zF+ts^+d^d>d&u-hB@*+!t3n8m&m4? zpC^qG6?mnA4zRSf4u<-fG1O>QWzzm1$AHt`dzWr8ifr;;!dXxjq5TF<9;Ho-fwm~S zwd`DYz#ONRtWR9%^R{E)2*)8_JYZ-*mGOq_Q;i`8-i|f;OSkNSW?2A0*{Ip3o#9z# z>);7H%0-tC4IPwcq66BuZesoi>I_ht=97EyYyRZ?STh8K3!d8jA`=}zNPY5nH7}gL zfX0>o;==2whzdmyS6V6c1i9O;uza>;V;LL^ZwQH;RheZDyP?J5e3ze)ZhbNW7dy< zGC^Et00`nGKTv+gj-Y34`QZoT4v14nZLhKWDw}8tQF~sKKr6!?FP!0DLN_-xseHIkKmA;*Q9}xBVp2Uf}o7cQ;Q)2T(UQRE|2D5gC_` z45&bQsBi|9AqcsNJFxX?H_!+P7|Om79xx!+$A#0(j^(>*t&=XjJ0uxXe{YxD-h>Iq z5eyhAoG*$%0w{_Y6)26mu9pkJVVneOK9-`*+vL2)bKMt00CVr{aDg=I_x)t}WtkOWZFhaSvv;!R3*);td$xVK+a{>YdcD0@?OGOP%yv1ot27+ zEQo}oq%zCtr;Nr0G`n?qf$ThHaQcdrlYdHCp$a$kp8D=C$?KbXt}b-p zRWNk6;(>eL5{}OC(lr0$6u>do`P7cd=m6kHzwjvcDZ{qjYx*yYChs}QX-9N}g{~8T z=sJvTWCfqdi^uP9)waU+xn{2b1!FhM02jQ!L^?F@nz$PbJM7k$aX@F`7@u+2+fI9% zpNT?<>kPQ&;sH``L`V6oT@C40udX?5AZnZkluOI$h1c-syXsMtkxxH*{5qTgiXdLH zp?swD<%Rwp1nTFv86fS&d)kNmuk8ihr9{kpji7yW{ERc(9|f(a(nNVcql2*pplzIY zJNIli`v=rt^t|ls6dX0DPCxjGYxDXo<|K_tmF_VUc#Iw0TMjbIgV`S_46Szemmx!j z8XX_{L}!Q-xy*0qA|21E6-m>yp+-aj_7-D*fGB4G;M4?-Cgy!)3;c~efPG|_k%)i_ zM?m?bQsT1$hZztzg2{UUcbD=JCJdN!L`^vG6*Z0F?*-mJjQub$Tgh_(fuag2JAd;X z!x^QO3z%otw364S+-d%ggRxKDX5Qb`W1dMb6EHZ@E*d@^2MAjmy6d{`)($c)j~A*a z@kv>MewHh63UINWT4&Sk|1n~?FsS$h-v1L|XY`EWq*Y~?qd{vKz6F35iBc)tw#q0I zfX|U#t0ZS$_@7JZ!v>1W8~MA8BOna?zV^MPGJEw>@zSgECKsn`JTdLhNnVWu3@`3Ys(<;Ec9g45VYe*`(D5!?7)v<%=+dAV_}s zLC0ypd+Y-cm6sRPkM;^O@NIb0*1FpAinJ(`tw%+HGDPukc>>xgA&Wim(ytBb8TPw^ zXSirD`+4odxb0P*&~{MSqW{xITzaBHAiw)S>#cPz?|N$ZJv`T`gKmj=iJ zP6}Wt5~q($m^;>dy7wv^0p*Q~$bd3LoOLe%4|x!AWAOj+v8$x%Ih&F*{(N#V6FABd z4rJ(dTW3QRLT_ETuSbpn z>fn7h4(LDXchih%GPP2;45AEX=~ZI603csxkX2rv+Pbna5^yq*mibI<7?{(lzRW2) z6dj;Y`FU$`{p2zO?HBT-t|m{PNGLYuC1POx%ATeSx>SK>1a^BMf5LXz2aJ!*q#;}E z89HVIIh6!3%jY+aVqjy$vk5P=>FF3sl$$zgxOMw}%_4Ol@mRmVy%t)&AmuVjKuA_Ej&UbbQA*QxKp70(Cqins3c3-8c3TeGX0rEIhp z&(U6dhP79uu2BX+{;2%W$QqSJ)RQ*RD-+nXsdX=JgoWP&c;neglZ~!w(+gw8tM|e|KJEOHWlm6G9}BL+DNCGjy}H>GsdD|+lGCq)IWZtkWI%C;@0B=-OhH|_PWs+) zDfO;E`J%!ZP=<&zumKbzh};ixHU)ca?7PX$01>9j_y`8p2)i4Z^*8$j+;-V$vz$N` zpg1sLMQd7_LHoW3AB$w}>C5-Y1vflo(q|w#u%V_odN8UT0BaU|Hy9!78qAhToi@ts zz0VoupFVD3toP&YE~<_Jgs_>hbK0#mgSZWCS3XPQ7@#lx2Ch;M(5jFQ?&SGLzrr&pEgu_$j(`N?4Mv#*$3Fra3hyb%jaSTZM1D?THS7R}^ zsaxmd#(SElUTJ{$G2%4JM)_0Q$94jEdq&wk?!@X8C7 z{i=kccxS3;D|p|pFQ|hWBiirK6$o+&xwC=sjv>@KuuFfKBf!AvSKUld+m;!u=7Tz# zGTBRdG%YpmG4wwzZX-t@94m#D++`U_KrfCg!)d^?w1w>$q5h^n6Uzls=qn*xb@>AC zb3OdVG4e+98cC->T*V!k(fYbGQbW5FV;gz_v^I0Xlg81g7h~>aH(Vf71|FBJ_uPMN zcKXWQlgNvqe;Xr@PoF109y4AhFDj4)A8nA4!#kS3)#ovC*cjQ*`Jj$~k$D}HOM$dK zYb@cI;Q@i~QPyj2|AEOzud;+Xfl32gww5)ZBaGT0enrnfZ%|zjAj|0+*|d2$z{Ek+7!R*DZ_q}n<$P(zi5A=QMxAoc@M0dY44b2lmLlw=fy!^nX@Gy;N)?;14# zR4HR0fE=s74y;#c>9psGooBX(nx@oiMc6C^CB7OM%e=%oN}Z z#BreIQaV5I*i%VofEtTo`SC75Ht=0PqZ|PslJ*m{8HKn8BQP}X^oQ3Wu;kTeWL4{K zDI39M0@8$+SS~wrN=UsKl-aO8}=nIJP<%wz?XM`;D8z%4}u zGOplQv(E}?r=*YkvJCw@jvAPBB+!q^{`AT@{`aBxetm10jQ~08{Pvmm%IXQLW6KOS z6WrOLVX}Pi_=Gu6m40$5=OrC5!n2`In z0ls-^zH~hCBI)0Auq@p_JGo&YPJW^%%RM|eh;GtAl)e!cUOocQk)9}^#*rHSd{^F5 z`EAP(TlU38rn-if9mgJJ!{`TU_}f=mLfb_7&94990wMKrB3b!;eU(MVNrw(fS*MR% z6x-=%?=!aMwRg>|eYIVV{+wM^8XeV2)-HTTa<^s4mbM>CgFRW&w@t2@$yY-@?qntW zH~jcB4NXx_)fv`MRuq5krRk4`S?L+oYUdsIcaLYR-pV*;S4Ba z1bN8S%gy?iAjI7ijG6!QPydlo^5X(VzWv2(WM-3l%xoeTd2tbGP*iob6jfQB3@Orq zTSIyL90E83hF@}{TzvfmsrJrY^4jX_40AI$9_;mn%zH1~A%Fs+gFS)=VZuPi0C(Dz z1B}8EB)Di#W*dI^^9zjvg98C)0z!*Rm1Ue84EQ==>wUd+^F+XJJdXe@3#bs&x*^!q z@bW{D;42en0C4&*mjAs^KHKjDo}rAyal=DROm zoGdNAGt$fqaC{&RLT|X>A5Okhj_Y@kxd)WyDO=^W2h5TW&R5283vyW5MyJ+E(*brp zy@=%mgLYzW92m!7v|;Gn;r*mi?Btc(w6!tr25t-Ayeke!U)x9jx7#TU@F6>QtFj(f z=|LG>lI7;-bvW2*P!{swYUGS7dh}CyfOORe;JcOsnTITAc>uq~sb5f(0QU(+^>b#> zhSXO>?!5+(9UZ`lAaOP?G-)`pYVz`J@_z?kmz_K=g2YLVVrmSUDn@3>M^b(%ZQ+A*~vX2rReF|a%byYxonv` zo4w_=JEi$WH<_|gZ{Fjg-kp2qCf_Sh*mchoDpN}fc*k}KKtEvjiWSC~gRi`Xf2iDW z+Bn_1MYRXz(;0qsOma{8lK&~cUgZT_SENk>+u$$&M*t@T#R1MPjbx<`&y0RP(l`h3 zd9R*ZBs=>{;~e@@`k4r)Mb7xsA#bQlADwcfRkIxVpvEdQo6p$JX%vb$la&CyoC!LW zO9cf5#tHD?D}OP|m(_Nd_{L;oS73*5L5p8)Xl8i(*-81n_CjIZ{&K+$qYa&KA+w<$ z9Q9t@`f9%X{;7B6>X%+M--$|Ev3XmH1F`~ThpdAR65lIO#$c8aDD&%Q5ZE*@PGkV+ zzwuWodj~{;4G6=QAF#K;BiFx`_|E}KgJrNye8SzlkT4*S+hdS9PLNLkLo=&k&$zri zf5JO{Jfm&qNBjI1 z#S=m4rV9)~-9Rc6 zGJDgYf596?j$C$>y13=a6y(Q-Qv2Kf(){nO5A*=y(uC5dewGGB_e?bW;+46v;K;9A z>$jm;6XdST)TMj`_y|*UvblRQ` zB^R&iXEr-kY=3KsL#R0^V=W3fOJ0;dprc>kKT-a3{u%C#5Db|-Mkf9CQkT~^&Pmn@ zo>e+9WBYEW4IG(&cjcN%D)aC3>pZC{QP|L`$JQg$z^Q{<){5^J9=8M>B&o5nrG0C@*X<$!mkhf4E;F$a>dE+F2GUnIs-sh z+eRt(C<$KW_NB24q_soGeOrY)5p7@q^r~0Y^iyDYEJI}3({Gz+ZC=s#^tPAs0>4MK zrB?|FM1)ZUqU25>pevA|dqVncV-APFfUVQhPTNawc3Y4Sh{Lb6(cA`Z8)3wSwHIxV zBcNNiXeXQ+rK+^s`IK6Y#6Vd&fv5*cb0&T7XW$mU^^7#W(nrCJgM`eomDVIIdFG|n zBp>+6JO_HDrx$S@h;_d+T3imOCBw3j5Q_e z6CP()udVKPaQ3s$_$%XHILi6K(WB(kr?;AVXnHoZ{y0=p+ARju3Bae_7StUbz-&qw zG075zFu5HEapa*FN*Bs2NjgbDbts)+333Ji@4Je)^-_5OCVnzqPCxzn(EJWJsGq{G zo^fEO5d=Tl^@Emyen-z>OpK#9K(p8Vvb%9+Y1?Mv^t0t_5bZrT?QA)J;LFK+d)rMX z*%a^)KRI8v<<2tyhrzZTg6J{mz8CCK5-NKfnKS7(msUgwlrbun2^?XF zvqLz`1Wq~gBqM|fPvgSy;S=FthsN{$Z=?SdnI<4z_8Ks-!Wco6Le5~ld;Qzev{Mh+ zla*&e+t{>(kW5$5gi|Q+~?s7jj2^!+U|bK6TJ5|+>eVeEBn&Ww@lXll|Z6D zL&E?Q3TjZ;Hlcxp{`u{&9SNJBJhWxLqbT#~xfWLY)SPV5c-B_84cB~J;^H|5M7tl9 zAM7g*;)e7Swugsb`v}mkC}4i=+po)BnKN&k37_*WAA&yFE5M7EbsNaDGd_?Lj_sJZ z;{fB?HYyTeprtHZHasU));Bj{gF)q4*m8|&4|s$A%x*g`8PbUYz`A!o1%vj7c0p8o z+VmTU7>)p-q1S0aX*tnWrVX63d-o6^Vjz1_$zAb-VA_CBM+x+6C-_T0{pi33ZNz$Q z%EUR+LC=#X@}~CU@HLjufZyH#nokftlr;z!ubDMFG)x%U)3xbAK;BgEexVtA(%CNp z(8tsh=9zj#iC+X5>(2iM_kT`vS-w2UaISKCES-HeB z27EeluxR(8vC0Nx9PRVcq-T7?h>;to4XGu+`t9XOdS*Or_QE)M{O$bYI{*CIIp(_i zvA>w~Mt;Aa`>+Grf%0Mmb#7MKoc#}-aG%WrSqcz|x%qPRh9=T)Xtq)GsmoUj{$ZA- zKzB*y->K{5YVL9h;2OKp{mHrO7)#zZ;D6+_y|G%Rh{LO4(6KxW@Fwk{>-_=ktbOmL zN!o@me3rE!%WazSB1qQy)e9q^bZCF2Re-$U{+euev&=BwJzSv8zId(3`Icpt0|4r3 zU)rAD``!yWq>aKZ`oizNUdyv)O3SA0%oxd7g6voQ5cyQ6Ql9x91kykG%I})+eJyv( zPK_hi@x$x3)613@%N8#+8w@Kb8{@^XZQM{5D97$p^jQA@12SnYumy))SGN z6a(9K&^GtxNuBMo`vE8Bn6Bp}{tJL3mma_W9upx@fwDtIWWW&yX7Ra#!g7cT&`kni zd>GbGakmi_=A$6(d5~PdKeWN@@#vUU-_ii%sz0h{Y9r3h49h#wajdR z*V_rGSKK=K!S+Pj>6Zm47mfk_Oc%CMp#w^bZF%O5Xu$ni3wlbuHdUlBYoJkPONE5t z6*ybqF`oROeOVTf0T`rSXj{C}_B!*V9e=g0LAGd-)Lc z9NP9m^S?JO0Nt){S9mBoAb>BG)}MdsYB^=_eaW;^`r9(T$(OdB{pvy!&bMr9wz*H4 zm?7{+DJb;4!-0%vrvlmt&>opY2q--&!rDM*kL{UhKiKjK+34kQFAs#Z2fty|afZJa zc0Ry&cDoFq`KYYb+0C#%Xw%Vz2VGU|H|?7EX~;al~k^_9n(|I>w`{WUEmzg14M zU$re|VS(Jz!ufRQ&g(e$w!gx(Q{#=H@(Cxq&Wui}6{EDbMsWg=}0 zl&*vNKMpwkf_4pykO|Ul=*xjy-RK$(^N-@Gl<^`1Xx+o0bQc7E2VUCzIzZp*>_6Xi znU=~n1^4`xv?@3=|Brv~lk5w-AO3p(EoM2b-+Sr^fWH0u+3%jMo1SrSpvfx^4f>^( zj_q*I-3i;lfnTIsoHF1H7?mBv$ghYFD05Ue1CBrhIRs$1N3MTUI@ai)6qqn?ltEe+ z&H%511Hy!#EyQ>iLBRWjtLDwSOSZ^QjUzyh=kg9fUcp2i)o2Fk7$l?xNY78;l@{9m zUZo&i_z6qWB!u&f_niv^D%C${9d`C9wvzlid9?`ZcT+!3F?MWL%DPpC8w=VjfvZWL1AN4#u1mdP= zXTaspy)KXZ_0Zk|wv0>Cfy0|c zweXa<#;xtJA}^j%ISN7YIxbk6#TaZGxtY?J7qkzNTVXt*{O^U| zo-ux)pA_gCeo=_FfvyNL>NBakU52u1yG()X{rKa*nk88n{{UX5oukGhbYh|lbu7kl z*RFnHax7)phgU|EAJ1nk&o=tB4d@!42i~!j_n1Jk+e`IiWR#8}>cB|yV*tGAgG_7( z_z9q^uG_XMrB1d^f>R!-4FGO^D83W2!WmGusBi{+4NyU$gS#@j4V(dh-8w<-=9Nt} z08Adm)C^9|xAjX3>R*pLE7rz@DVqpJ7>Hqx00lmJ)V$Q<37+>0Xtn|>8f{rUCe{u&DM!e}tj0kc+@FrMQ&vJd(@UA%3g zMu6T6k{=-GH=Wro&CIAb?XYr$f&D80QDfx+E!VB@I`q;x{q^ernlRA;PCr3!-hL%* zHmX#k7XdYh)lo>60szYR^3Pfhpk4Qpl8 z=rQ5W1t+a1k2_y3zC1P3BDn$B;sSHp01EqwLx!Yfm{J~26AF`03fj@Te@i;BM)km-^i#0J!-nt6GsG~ zomCIwlYEFW@+()|P0dSeK<)r%9_f2|I7Kh&tG6HBfuK z_BYL#CO3XH-3X@X4F;H9uDxNqUTFRNgq023Xh~-lue^XzPNy7p-`NNopjBDWPhVJl zsm6wFKrwL8c7Cu8eFjUsHXLU~8b;0w1ftNwIQ`MuS z(}gFw<+maWnDwIH)Cu4>c*0-*zTl6>Ie?;J57;1V7K}0u{nc=}=!}x`A!_3y-Zcit z(nF2}@{V(A0`H!6OE)=t&?P0xd&HoWv}DsV-vJQ+b!fjVur{{thz{=m zX~OV=XSqNMob)w9;F`?_@N<<`t(9+FUWxp{bN5I80ww?pn5+bU4VmwdVjX< ztYj3Sro;P`gEX`}ii~Ur2b48zi4S?&Q4iWiI1WY zHfS$Z=G9T4g5O()@`MWHD8oYg*^9UXwARU6H$q$0=qIghGk@x~gU5*S4vJcC1;0PI z+C7quy2PC=Hn8cblm=WTh?)ua4o>Nyh~v7PIt~8h?8rfL_8%vjnFzbhq6SU?AJsm; zom|s@MB+}o_rTOC|B&k^+-bhkrziri-uiJY{$)LG$8%~$_Ho+$6hH%B$D=QJ7nBhV z+58240}YjpMcXmpC*xEBg6E0m!ZE7(`SHB1(E1tGLGlBH{iaAKN{8RHi3}%eH;?yKPdwB_d zRp<;J^#oeibe#bshg+MHI)L8%obp2_708gC1!jqZg4uqY05}x1oRs;J51tDzgOhhU zp}mJ|nE+6J({@$RzTSIYFc#X8m|^gvO{IV34TYDU^*KL&@uPb`84?9Q=Tlk1Zb!d% zC<~}80J^k-dpi5CC@Z;6or2_`4W7dYM+X6nz33bOy`Ra5pa>KD-LNq`XzvW<73tCr zVa~}Q9SFN2%62%T!FA?;+Cd{6qx1{qTV#jLJCP@uIC7-oc)_wq#c2YE2`KI-G(Io! zUrDf==-Ba38b-8t%U5B;OvdKDE8QJJo3(S8$KCnVyK5)U+xIZo*odx9^GdR###)*A z(h}nsurKx@NS-2~NbLAddTU;L*X(H9w0jMcF3QRDx95cJfU1}{U{FQagJm;gGP3t+1a1Ap>6G5RLdIV zt7SnjYdN%R3cnp#LC|i;qy;_brFEhnU(RYI>l)0KkKS1*$8BvWjeEN1yB3U{ET?uk z!}))3vRrz3VgFWRmb>Hn&a5_4TUMFf&Gk2LIqZAM(-Yo#Em;Pot-}cv%do)-TF!K5 z>S{+fl6&VoA(hXVm$>5(PV~5Y+!z_zaF9720W4a(+3c7d#Y^x}XGb;^JL7SSx~_ac zIf!%e!Nf178iW4%jjLq9mwB>c-lkAlWP?)^It^)N`ZNsejO<6dzF>(!z=;)+yT#QJu#x{oDRr?9q8c&t}_Ty7`*&CbsXEt5Wr zB8PHYxqj;sh5$fLhbh=Wvc(1t5Wn@pUXT}HJn%zUUi2+Hn6pzl-~9|58_4=7+04%8 zTw!g%$u^8(ifa9HjT3J~uSTZM7(r&&{}}a$E|6=TbI*{1`2|u?*F9k%iNr|(uTL+G z$DfRmr}s8O-WQ+RJFsp_9_wr%J3DEA8bL6p8drIZcs~E+f{-f>hSuj1;F5oNP z9xs;;=oxDaZ=BsA)=ul)y7Z9lgHxRwst1K#>{QP#_3U!KVy{TeMSGIF)+=}p(ALnj z-v$5XcFgtt&AvG41KJOwfBsim<^tr;yFl;psqL=t+o?UHQxYusR92ubC?9RB?O0k+ z|Dd+i_FLA#F*qGQtz6%2Ck$eEw=Cp3bwV#bxbiti4pvX;3qRa<+rx&3p=G6K{f^$B zlhaOmbnl(i4;AnUayCkT0ct;Ns`+_R4+HxB^_Le$+8};95X&6FYh&LlVLRv~BDAOU zS5Qz8OTR$wx%N&2W8)}&pP7Clo&7{H+P;RJj1{@~9%qj$e!0(?dTp$gyS|*Q6 zfjN}X7<4$^#5N)ktOzC*uzc!Zr@z5u?K>VVr*^+cvU^pLdww{1^1r^ZbtquYGvBXyQWcAh;qa!4h>GhM^^^nvB`JFI)bO^`s3uX@BP&^W*y~! z`n@m630*Er{2B~+ZOhtKQl(*CX?(Drp_OMwKOc(+G3Xn0t|E1_Mo9M#RpryCx5=~9 zN5^`%Mu)vJuwTj0MH{NHq=f)y5K5gdm~F+0gcBj)-AnS*d3nM?ew@S=G0FcX|Bb$ugv$#}IdD z^s&3f#pcgWC-;#DJ}r`0*4H$rO8okPw`KW*&l&?j)8Lb<){bm*y(S)M&-k8H`VY8(U9n|B%(x(*up z5+3=}`^(HxhEXV(INm7petk+GLOXiZsezn35PG~KGpfw2+V61z+JyGeOYf`UK^auP z8oRHuX?Od1`wD~Kn5A+9dQ@5mYOE@K2Jy3kGHd>}EYfz@|H;E!PGm<~H0>ZG2SNa} zKY>mpr3>n48~tHzxg^W&2c7UiH#($$gtv1XP#>HcM!sx+Q5ts7m3o6NitI!54;%qO zfVLn0@BL=d%u7o+LJPO8iZ%Jh?<;qIZpLdn9X?;4@`Sv4-;BsK0(GETE#+!eu`wx%@_GF-^dJ{m_#T&cIi3BnOK3c zM};%sFd&_o^v||@Ag5h9z%Yg~2SSMNhPfRf=M@+TT-!6O@A4k76*q(I>qt>5@3yf!!be&l@GeDm9DJ|5{=bUmrxzsRta?^Fm^UEn47qjuFHc2)5^@;=f z5q#9KspQUc+bG?(VgNRD;Lsn2Q{23ha16P|t-4F&9d*r&nztVIpsnp=I|%g3#AyKk zp+H9gr5t+A#2N6%$F4Fn|52DbacRnO93lhalnrb>xK>UY)K}{6S}WBSd?JgA_s1G^ zsn-pExZXJ8UiqY0`m||iW*DR75&R49D*px{?Wh_bW8Mvs^(l`!0TRxWvV_u^0v=O` z02jtmZqt&paHRoq5BW#ll)xti2jp-0uNoP2 zX}kJz>w;}Eq?aSWtRxs4EulKRbVL|9O8wCrnn+IL`i4&I3wRB9o$+VZlXgO8A(!}$6X5)7PfI>a8v4Gb zsr{=o!f*Vq?WEfXUc`rWX8nl#)iv1j|!0d>%FYWfO0J^Q&NGN@B&odLA7w!Ph# zQJ~G@82#S1M2@PCraFP@5@iMI1RXIk)_hP$6JexfiG#QkfgdfOW(;}iq~(WJu^rNh z~_)be)qJ!{o2^RH+|fq*h)Ec9cBFbfi-n;oB@Q^UEXs@ z3QtAxkz#-AjV5YnNwXbNulOCAy|7xWdeOJ4R4>}FU;5>_v-nX?2%CSykQT2&3qJkt zyF8#AmINrE9UJf@fX_54K);uzLx6mVtf^jopfRwHKj_MAuTrJTafc2A4bKtAOgVxO zW$gRS9L5F4@hhJeCudHh;HMxeaQd*+0Y?C!O?CD(s(m$0x$^XALsydf#i##M@w z(Q^*1Uomc%G+r}5mg3HgIsB>Z&02h?8C{0}vuf7G=`WA{_#8QZc^gwk905chEEwm% z4jFl*;ma*MH8$@+hwLlB=ZMya+KYCbyr>{nWB_G(@s{tI^7>tVKps=i<_+3N{k~tB zw!(R0%W3EU5c^9P@=^-anS;z^6%}ZfC!ZSLa zE8^72i%i}DYA~y_FsQvVHTo5*6M1L<0r$%aS|5!9Kz`Kep1w|+&O{*khnb9U>fzPN zzFZQoQ;6hatS5>X{gr;uzDOqxo42x@Kb9s^CT|3wAKjrt#mS5M!pAm9OY^X4-!GpE zlr1Wp0fzzUI0L+l2vQiq5rBC1y@HS5F#K@<5R!xvLVg{ZcQr~s$MgX20E)mvAhV0< z8%2LN!q%J#4?>**?(8WFgSTFI{7`UycwwvLyS6gQfb*|2YRMH{H_O2GhXfwqxt<*V zp7}o$hX6o`+6rU3;2p|J8UUk+Q2VOuvrXgx2IeDQT$`NP=R2R?8GSB4gEk1-M)u&w zpjY4+0vXN5V|Y!O?-)~UO<#HkdhHMD3oRgggNzEDl^~6@%VIkKVmJfhLfbRSX)tZc ztJ1c(U*fG`FgRWR_iGaWr3ZH1jk8Rk)$aasN}Vc6#WC)Z8+ZzZn1Qy@!Fn?HvuET7 zzZqrtI_zEEJOA2KrRvxZO@G(iQe8e;zg9-<*=g!KcIvCX@3Xm&ccAvdtFXj^p~sTO zeTpNXoR+~$2D4mpbiM~G<@i!g>#084O{UcAB<(qhi9MK=X`gb zH}Cntmal%W(@z(@x4DjhxCqM2I8=Q0JfQE@I7p#`06=ppvw|D}fV8-3X1P1F`}Uhd zUwdaRGf@IwU;uj^0cImTcDmMCa6X+Ye_rA!y}mt@eH6!G4u9?&&{v*Y?u;$-cgbft z)n)I$9+ft2k54=i4EUGv+@4u84uRf7WYR@LBs+VJ07sr znJ@@)1Slx?`=7m$oSdLu>J%caB}=Bs152~zt=0RbaMj1LodL}Bd4bVHgaUe!E>-aA zK?gR}koNtWN!8-o$*~H$=eru97!nwyART(AKKA&iMyqYGs)k-7e=fo}2iuB-A0$x`9*Q zPA4SprUz9RqnrY29N3r6DkF?pD!{!iPP zO&INd`8>1C6LLuFz-zKfotmhd{>;1Cxqvy2>GWdmRs?i!)$djmpw|&;H~F zV}3H1eFIoV6~w=OvcpEy?_sdtixWccmlyr4Mt~o*1fK>hB3**F(0{m)b5-oj!{xQ43zc^WH_iHGpRPJmxBZO{P|F87-(A1@Jam)Do zsC-hZq1h~P_KNCegUw?L_Q-bz=9+9pTQc0*kf`A zuz5-Ksi3lWowMcX4A4G7W>t~3<|?hxuTb5#yl4Lv)P*sXC;&DDL@%z{rd{mvh9T35 zKsJNcy2iC17`xSh&%4@==KnNo5PL#o&g!L-*Xn5VJ!lN!p3;LN$`R_FZ19^{@aE_D zOa;mg70!Uegec~)6?Z?_jDe7308#-7;%t&e-gx@^_V1PA1n{C@&U`7ZURUNdS)Gzc z5D;KoC?>XYf*@sp_)_vxnE0XJoR$(1;0JzRT%}*e(E$Kqh*0HXSA8}L^cs0Um2|zR zb5e*V?rB?54=x0g*BH|G^df&%6m($Ydk}(ztq#!Mbk$p40_q5`XJ8#gH|{`B8T0}O z`me-Y+e~P)cLTv#P(}Oea0Wyu>X(;GojonhhHl!{df9zzx4+U;)jE~T=ggOu z_&Nmi2%hzQZZd|Qtz@VI;8#A%#UOvtRo^x3&#W=WPZ1sP?2HfO>|y=QNdc?Yu1Xs9 zJg-hUl_$Kb^a>5Aq03Qa>`{XAj&u(8`a%XCH`JW`uI}}mB`@yT=0q<~aTOOlAJh)2 zxT|v+dL}PFd2E9aU((d211XLNhwj)g*DpFi@%UT$QgE(&d{!VZgg?!foNkAr1K@4S zHev2K!=HMwDcCi)|Gj$%2h|Z&Hx)k1;ovR$c3tVYs(iORFad=t1EXL;~3^k?v-ZMT-kDW<*HKX&@fR6 z`40#00)Bb@JbB=z(^AIIzufpY-w6!lpgIL`f&%UHbm$m*QF>Im(g+`~(W=h2AleH8 zvL%i@$pkhpQLZp&0CmDR*Wc511|VC4jv}P(c5Tl#ytjMmU8WC9YxLVtImtMy?P=>_ z%vs-b`c794G=OY{(ryD_ zpL?&+wz1(YPrC57oA>`H(1u!0%51l%-N!b<25H)XdM5h@M}TcmS&o6^tWlbU49)t_@D^fVcICp2Dnw(x~9C zQYB%KD4kM1fbyWATqp>XhqCE;>FkKTtA~4(p}r3-aC1yLf4kQ>14eaE-9>rSf=M#u>L1CFYc6%^YFC0F%ZVnu za>7q0#06~zXgA8PJNySh^A5{%+0$>Ec6_5KPwqads!Zyf_`w642mSgkNOmZqe)l5I z^T-q6l_~bScDd65G9TFOOS*B+^tJ&{WVf9cs|*}9Sa(E+#DA&C`pKx^r~n&|(fjf* zZj`!?!rOamYI&*C>bmD9m2CxOe6)C@+|t7N$KeBbF3wS6e&>oC8hvrHEXr*q*$1b| z(6$#EW8K?FmtXlqxuX5w6aNJR`G}J=Z{K=Z)ugX1?ODsz3(Rd$HDyeJCi52+$mGQZ z?sAF*IFgW~z;G7W;5_o&%Knod3i8*p&*RcCG^c<^x5!V;z4jM{?|+i%_^4xWc_D7S z^*QP~t--)RogoM+SCnT}?}CN_-{X`c4s5-JF{eD+&xXnn_5diWxbLnNm9IWx)Ev&QmeWTFu!>X|F}Ro01RxPa79m}ET)TP zPfwIqC)7%&qXQ;`Ogg|JfY3gF;LBzcNA_;;3UEK=-w)#_{#4Ex{;$;jv5fDy>3D%s zfKtx;D42jU(zjaQPyu}yoB<3Z?&TWN7_HE_cYp-?tp4WrOj+Q)iSNou!-pmQJ2W`c zj(HBxsiC8TzSp5e`|j%Q825>Ljpy%6(i^|g=Ih%PO5aw823YQqUak2(Q}_;ua-|g!xRU5koF?~-(zIR^p%PKN&<(#rN6ySa%$B#GnnN8ZBvDpr!ob7 z2UKbHa|meOQF+2w``iA~^cj7JaW!9t(r>dNX!Eb!95%s%`be{DC@7IvokSa_M`MCHEv( z!PLP%3OZOS^nc#R8Q|xL(K>4#ct=rnHwtj#$VjKG$?s_*sNd5yTH_8V)Ct&qsSz~p z_bF!9pBew`UR6?f0sc7Y;B_ha(3gOL90i&4y>$>aNQCz)>~caUxBl~W$tuW}bz2XG zyi>oTzJ*e|PNAIiLN8f+najs5w&j_3)j;r*4ca~jh8}V_sPYihrZ#+MCjUJ~@*jM> zL_~lWW2$bIOaF7X>l_NBi3}V^DjSst%3A59@6=eQU({d)+Q(seD$hgD+Q<4y+89%$ zuLf3-%(Kf8MbrEaqMnIsaC>1#2@t)43@9r(ooTsv4<7C~=(E^m36kAI|K`y3iI*n+ z3kJvcP5Q0-+$+y7k&)j`jWjTQnQ#b@*Q4!g$z{u2r>f~2%UK%4gBZs|8tod=S&CM; z8~R1@EAQluy4uhS4yOw@EtT1$qN5LPE!A}q?vR9p8_`wzH`d>k18JD)ogp{NMbr)DJ8^To3-{)X)tC!Cmj}G78V>H@{wD0Ax@DK_2o<;b;8Cf%btH=?bo(bRJwi z%^2b8Q3pvuj`9eCj3(#z@wJ~d?`Ep(C{Xw>sN+9~*wA_>>u(#m9)mXy=>H&~0KbvH zD^RI~-U)v@^~6K{K-j1^8bpW6z7Kyd+j{6d8~4ontNh{O9@3`A1%`g$Nt^*|>(7?ge!MYM;U@pH zZs}%ZirueqB8}`pS`if$pddP6)ci?_|3Z+4vp{)65k;q^ftQz{(WUjH^YqT_DbL%y zPud*ec4A#Ok1zv3%MnM`1j!e`Z>oTn29%X_Sjtispj-fDJ`*Kgm(@f;#}pzpfc6QX zK96pjEu*rd(-~EmZ$jdEmq-ujcSt`s^dGQaLD!=PneVUcZ(;Tbz!{K~myI_jX`25( zn(&OFeT{gk`<>xZ*e=&NUHF}_eQ0IXkD~b%!~P#XJ0)rK{q>)t+@nqd-h;pE{^@qP z{PoY|`D@(0J`O%T#yA0NXCJ%_SpL)dj33A-XPn?DLx5p{L%>T{nK%PTCy0L2f%dCk zTA7TIL55XXf%3+wH@rt1RbFwg%xZrcVu7xsRbV-cC44goEzU5_~95YTsjec4U1WPsl?iVBo1Dx3jF zC?I+i0Pk8F+jwBZFBQBXN`bc-S%Gmgv&r3w|HAR}hA+zMnlnon{=hDWA8aK!&Qbwy zR6uz-0Q`VJ1L-QpLGQ&CU_sBJpa5G*F~a(Zrt#HMEs9$EGqx$YO;r2V!mLl?`pX3Lvn z>ckqP*Y5w9ktvGX&$>A>DgfwGftF2Oo(V#6O?S%Kp3zDHjsl0K7Peet=rT#y0nUT6 zR1DQ{AWx9HEjWF62zY;2TJ+K+X{$p3r9Q0OJd1JXCp&ET(LJzfv@}pTVMhs+2HtX| zI|lGRh7r%lk?A~-@wEP}`qKI*$C!I|n?ywi5Ebyt3pU7c@4HLJnqPF2e1F1Hsr8Qs z&Hpx-ZLfRdmC5jVkgV^nwMIs&?DUhDv@!io8?U}MdhI<^P0U`p1Uvi^NA9jD5nuO;rdAZ?s_9G?{i9q<&iHElNT?&tv%{#Iv#_EDzMLMQ}LWmQa= zJ66v6V>k01T6*!;|C39L8<_vYU?Ky?K9=~;fj#^0HGZI<0BBu9>C#DiU#*0N>P^eX z&X)X1bO^&{ z4L9qw!=TEt4ekN^epx8crB&L3_|Z0oqCgtnhyqPlVYi9qWyTn5ZNH6MU(I(n$Fuhj zczBfAB=5!^RiyQC?mN)K3x6IJ7_|h?*#@`5wA-$=vTCX$E3Z7(z3GwlIvxO=0=bXA zE|)im=M1nNj=bBh;Lmc&z?+RMC3HEverxmF$v^LIKG`c^>8+=ma z)px>-T&)j%YwJ&>r49j}QM$M5?tLc+)YnFN)IAQAm+d;FBOktQXkP{CnOZ-;J-zgF zq9}blj5hro1#xu-udZT4>!sfn+|&P|KaL}htH0Sx67BRWPT_(_ML!Yz^xiHTp1Mj|<-1XN)3p8oaU$ze!CYPPyhEYbr zHd4zILBhJM5hmnPloXG07z8tDJI{7L?jq9<>|%d)EB}FkXM>_UjB@M@u9P9&$bgix zTHm!zOVhUL7_Ii;71YjQWr^bq0DjQ{nK&)z59oW%=ARl~jyqto5z)H(vy5RLcjgT_ zqMm+0L{iwMJ~r$@nljJ))${S40YS?Ipc5O=4EHRD0g(WTsHmh+*y;M@6UJu`uAXN2 zDae3`qnIi!2GJyGV@NTx8f2vKt_ewZkn)VD9gAwUaA%zpU{k2NZ4NmBk`5C;&?W(} zofYcjpiCHif2lms{H|f+DF{fjaAgl;{M6{Y(fl766=K6Dt?f=3NQb>t)ajx;ZaV?| zu>Gwia#YRnrtiG@|7E`GKw*PCcE~@mV@`6Xe3m6l&6y=#wwxEq^Y9%r-i*z5-y2$( zGo!?EDrkXd5rEN#@dj%CBfitmb_TriNwIWnGutdFvW-LX2ZW8|lo)wzRayGUbFr8I zT=d8DrNenYHS$Y$@+V!=_wquR@j-cY0z=nRV?ZDek*Rju+Rv5-aSdV{VFp(msGI<5 zuEegPf)+0>+iJGkQ(>J^b zqEGGv{f*NDKD_yz*gC^M9(8qhV9Qg!voRomPZ?v7Ib1d^r=u5DI0MQb70!So6mi0z z0mj3@c7?vo4zu|=0BjI`bj4k##+voi69sG`hH|A!1n@JcFhs!_2M3lA*!BQKx+t~! zf7syU1q0-^r@tfhFM6rm2ZeMDSifh3-VYOU$+kej4>3?mz*?hE8Y~lFKv#I_Mh6ac z;@FA@@0XP`z=pO*I_(Oe?=2JJ5r{pQgtb5L_CZ`80e*vXx=ssb3*jk3oL`!JOso)K zKpkrx-C8>Cch4r~eBZc6LhHxxN>PI2F27I(T-$EThR8y1Z?QLlmP_EOgoRT{Nh557(aQNY5KH>J)VRi$|z!t!dSpi@Jo-pfUnGP z`Z+CUi33%Lp%L{_vIFTLuzP5=x=ep^~?lXPx& zwk&KgPkL?LC(|b^k&&y{nRlab->}oD)b0{aU9T(~h zh&q8FY{oJS>Cl}QLB^IB$}hmr=nsOIm!jU$_EtF%_kCN2siCMyYs@bPPzU8N>Ovj< zSDgShplePL@I#!5I-R8R?&W18j6Tux*yvc1&IE#YBXR`>zMr!W$LGa2pOLuZBFq`6 z@a6@trlTiTARa1@a*+65fg=PM4<|G}FY#YECeCH>DFxK=B14HBL?tT8}w}yK} zUM+He=l$BUssx>dV#@qOW!~hJKT#GN+6H`To5X3`&Fi?N5qbz}bl5BXMs_h}fPVRmQ%8U|zSW7% zB&+QglG`y?roTN$+SKfl_%#^2>#mmpBl?>DwfV8u4)^$?Aduggr=D%v69tX3)^Fjy zGv@X2GNf5M^W6(ViO>1d?+i`Zw5W8a-=V)vdsi9y6ekb;#MoL`^;2ows=I7zU&(wL zKwI{O;SS9~gMjaP={+BMOaZ?`zlrA-R{PZCdBQQ*n0qq%oyZ z8<{<4kGwN>qP+9zMmeYJ6^4hoy4A>&Ki%`FX}{CIe~zK8JB}JCzvct zwU^85tFooe`X;h#d$v@|Z6sedt0XHNW1-v7k+OC{BYC`67ioWNH`%Z_Us`vsDidl} zmfipUi}b18F_BU@zHDABTTkgHJvz8;3oWdxQCT{67$^svHl&^k`fSh-k2MZOhDSGufOJcDNT(nvB?!_W-5n!F3NO;#CEeXE$cPaF z5~HPaG>rV_@B15eKYOm{zRvSFKvtQeE-J+)^5P9|MD1S>;p_vReXnN&XC$>w+hr8! z>xj?LueU!*%Hz3~ko-|QZpHlfaC%bax%ArfRm6{3Q*J8*yMeH!qeJ8of*8frLGM+3 z;SJS8*_Xj7C_Xg84GL32zrGk#Mk9KqC5F*Am3#LshU#u`C|9oFq~P1TBb;Ic_96toU))KPccex((H7%J}OaNeEvH2(KOscUb?%zAu#7Z=8(IzI-V|73n&7aLd?e%7$ST;Y0dA&;(&?k(Z{SUcrj@%nqx zkc?2_OyQC=v3%WEac@&A4<02u+%WuCn7CfJDGR}cUb^3;a33d2!m^(UbfWO=4Pz)Q z%C8~)gl6O$CKd#|(+;NP^wtcbIo>ER9(YyG!ZpaF&hI+pVzSal?((kbZ@$cio{3sy>o?j# zT;4jPsKF+{lHf%g#{^&ak%2J(t?ueWC$7}4=lX3&<{F|ud&V#7}t&PhjF}4vQ_~h*M44(L@44WIdcK-p-#BXT)t}o~UX-&Ls8k{7mE$wIxfq_){lV<=c2myb z3=b^f{1^>(gqjq0d)1=;CLp%}e=gJSr}o)70uYv7#qHBxD5j?Q65K8ZUWroO!H}%e z7~@Ti558H}vZ!fxgibz|0uTQ*>WgO@Kjs{-Bys_3;=Damxe}8B!OGEDAC{OU58tnM zUte_1SOxjYZw!&2f>c`F;u&9I(73C?DSnShB$NUO9Jrr~cbg)cGDi?&4MICT0_A|gd#+LFIyJLHM88Wtp?J5al@>C%eKUszB zm;j>ztxERvJLz9S*tir_Tj4*-!!T7GGv23Tl}B>DdV>CnXpO{s%15dXw?Nt&kd<{- zzdz~kN;{{veCu1Nj#L{rqmX7{8RK|hB-?e1|lZAKiY8udlGQ-bYe^)D5S8M$zWNR;=%(z(Y$>_fag`egk*hZ&#k)T4tA0C*a#~wy50(5iz1a2gL^6^b&{) zolQL~d@y)jKW!ROAs3eOdgCe@A?eO+1NPRRoxlrehC@aQ4IGLue(PR^iZSFkz#vwQ zJ_m0Q!@V`S*f0H!N9QTzEWup&tygBskz)#VE1P-wD_0ll%>96wrE^~S^Gs?cfJ?U9 z0GQD1Qu2CRd@51MYcshV-~znkvPb_DkwzlwJZ?6j9mMkJb=A_B0#=;jm59BFaXfEz zS|Jy@Q}!cBM8tuUOhvYC1Gj8Ozmq4+0dv>?!we{MF!iyEmt$G&^b{VuL-5j6x~l?u zoi}(#E5xORU1#|Gwps3@E=c_9nB51doI$9YPZx} zMS0XjWGBf(KI($qwN6OXQdcWo?uU#TD$kLZ5IbCWi$@Hk_O$t6Wb^z7-aaBr1>$Ko zCMKime9KAXOO0fIb@WkMaKI;cv#%vWDLO8aL1B!-BsaLb2j0&z%}QzkNF+0P#u$;w z72&^_N=kIQ4!c113XT`VE||H=EbVcV7)}&@QLTT_d6EIKTJh%2?)~m?fqrQea2-^ zCSBXR3QCQo%jI_<2TFIHbbtDtAIe{|+&Oj@zn)Ru?Lb-Jb}O)HJ9+6$V|C%XlN`wJ z0~ZwSV}+V4w|&AHL) zPR4k~eEMmKaT3!JGc*asFx9FO1afR`ha9 zqwhWviJVAps#Zn@$sqOBv7d&qM1Wrg!q*HzV~LZ; zT2!`_bStcVp!*P;mV8@9iNC%Q=ie8Wd*-PI%1*Kq7xKszmhUDDxV+xHA58i)SWQZZ zJdJbPV-9_Ej-j`fMG$OXH)omz3ppqJ`84_b+x0-Iz35!bgKx{YrQKWQ0esCm%K`!L z$sAl#NXmr+)_i*mPEL8+jD-xi#SawPCZ#k9+SYNUyCHmqq@HW+)m0zZnjWGaD@gmR zCL!sQ)3B=6+3=$-f#lkA9jibO^2ac$%qG8zW{1_GX%d)4wWmZ`nvwU;jx}?GdaPfm zq>4ocuPM6M94KG`j$~Yr!ebGUx#S<53wo!;RL%U!Tn|<)mha6T^UtH+plg-1wB;n3o*lD%2 z=2C_;uu#!bvV68@dyV>_KMm<$si_IHPH@%~aT7U3`$#}zNXqhIwLR;;5P$b)w*|6}kxw+1 zw{oht2u3UVQwby zNM(Q}p1=)cu1M}~VjhJGQ!5cE_^LZmeA+dm_83iq@^%S(=zkE67+!*0ALjRx{jw(Z zWOyaCJ2WB0+n;g#`Zx#rQFQkGZK~PUuVeQ{_YF=B=(|@sF2|;b%6}u@>(gL5czh$L zq8{u&Hgh6B@5Y&_m5vBWRcFo%av};8<_;HT19Q0%5C)mutB-Q=6Rdlo!-P^QeI)1i} zil|J0{RV<<^|G-QkPN%`{x;*-(e(@)%)v<7`7PAAyqWtzIE^{F|Co)6J8 zLHkdGwv$YoQ7#Ue>02N%Hl5Sn+CzmcjS)A=rfVikB&b~k?Q8z?NibAOLmkn26E3Zf?e2iGg? zt>AZ6HWR-Sk2%#dUPw+}@_gCJ&K9rra+q_uB}UsMZ2~1mr-__uH-v|w0g+Re;^E@R zxHL3O$siBA?}fDoaX^>6=A1hok8nDH1A<$3D}&ANdCHl5S1!MQW6-gS$s8yY_5HM_ z{VdF&68*g3{X2J$#Qf^x`ceSupKg}PY5;#2I?iuin4iT_?<|jBo_+-o_z83Wl@|yr zAd>#%nS+ViqKC$>_z%v4D@|ZL1#4A-1eCI~h!xQaHpP>wNyZ2K{CMc*or-na=Gn7S zTx7S;=}nx`qnw#IrIL&F>j*r|ERWNzb>#yu@GXcrK1|b>EZKU~idF^9?Uy`ITm z;ITW&qKQD_3{N{QT$Mqi>F}AiO)NNTrVO+o-UZeq2U3@$&`{)cUf~@qbn-)Lp=1@f zhJ8N8g;SW=Cuwm5WTqNK0iPNTl%fCAb>=osK*GdgG^p5k?E`;Z`Qo&s)6*juHXbUf z!Bj-}$u@8-U}-rt@I8LUeTTqZORU>7WS_Ly6|M_3Ur}uwguitUp2cFV%OjSh)DpH$ zBtpvg115AG=&yo6mN(FiA(MSR(!1g&Mb`vJd*+aJN)u1ltM{OjaII&aD$Gf!c6&-0Z}rJQ~$Q`?ULY$H(( zK8pGDjenDYNy*6;`*#zuv&AMiW|x7WTu1m@|8P!6#7p@g$H_W1-RTQczB5E9@q>iN zQ4m;Bffn!sMIo2uF=rl2|MeT{0`(DrsZ-9+mNf{-6bXfy^DWY)3&bNzR2Wm*ct0hbiN5dGWU)i~-nk9grs@=rtD`8=17p z8Ng!xr0`QjQ%)(KUOAF2gyO54Ifwn)K)O3`!e#~YT&&o+I8d$9GoH}h{;Gnod?#Mp znHU9+=n7xHQn29eGRi|H7p(-%s;D}pBV23B&q0wKJTmLIG&QY2^@sSbmsaHfw_ft* z3Jr!Xn*Fms!f}@xJhH#C9{XA|Y}^}>8cRlsx;eXKwb=hk)zt7t@l&Dv;ki&hO@h*( zZu>rp*UDm{S9P7C$Jqz%XI3*_BC-4yiRGL-b2DozkB|3a84Uqw6k#xs(7h*o%R-M_ zu|Ma7HiQPv<4q4wY-O`|t?n*x?d5L^gJMJZY3YF=#ju1z56y=N*+~|!lGrJjXV{X~ z7g@2nSf9r@WMqoxm2O$e3hl5}u<@3&;&sc#VW0r=U?~ZO7&WnOxu#z*z6@}(5l!}B zy3TYH#qt})8#koBeh-sgM!aoW?DN)>IHdh)>VlwxK;Lf~+!s#sb5Eu)ZS`f*>B4zk zU@?fNqafG+@4!(Fy7GiEt#V1oL(D9o*8=6!&mpW|!sCRzcb|oDy>aE9Cd=eZsY+~w zPAg~DQyFip#0g$&8brhwaO}(Dfu4muvwbIp?7RE1G$|ATbS}8~smAQ%0>3PLQdd%@ z2*~#J@WxVisz99nQZy{l*Qj(PvQtgij^7i_3&vs8;mQs2ckbkTJ?vgpD6VY79 z)3u((DVk0LOL+?Z$E#<&bXfIG_7v-gx6{~K;y;h-Q`&LDu*$p)a*iLk z_%p`6=8)nBdY z9&@|d9>?THQz*a0UA}FrIFi`)3>BFKq;ajx6{(ofE^Ybsar^JABFbrcyXt%=YU1W* z?SYn`{Zs7>Is@L8p(0joZ_O zN%O#;!Wks@@4Xz+ScF`Ctt1P=K)HSqB?kuZ&x%!^q~2WgOtqe+jqIg|L=>Jhq(BYa zV#zA#q z!bQri>8Ha4%=|n^_@#L$K+FA{^%7NEz`5d`EoROx`3iL{<|+H6S!Wx zMuU1MAqfGQK&xc-_g^lZDNnmZ>3La5wx3PJOs;}l=2u`v++CEf8>bWB^wr;=5jg6>nW&8ShaDwj#*1ekFNUG$6u{ zK^`1nHrkH}mu3E(sXPvIUh-m;kHbIeX;~zDa}#(sQ!B1YQ*L^bV9jl}lzevkW-GT5 z^vUs1sqZ4D$IfEK3OOrY?dU!iRP^NeabX=PQ4_#eWv$g@X^1Kdp6NfI3DsM#FXY#m z)yl2lG`qw+crWZ&i91z#W*csFcOCN;4n98z;w^fWt|qFQ19b|HH&YX}nn_CH3kNx! z3X{LL*mLf{<(LN}-;*Uw$TQx)Kgdf!z!!@t?{?M=72xkJ zVbO(SQ(2bSDsk!S6rlT%3yj9d-a~(?cZd>f)S#sM z)dNk%tTH^?Q2=gCD#o%H3vV`<6NKL!)2w3^4tmt82JMfpa^Ms{7esGwj%q~I;=Pr3 zJw2?mlwY7Fvy!zTNBDx`7u{?C)(j)9Jo4V6PQ*esL$K(-EqA~$u<=ec*+rZdP z5damE=*W^9m(r%2-(fb#x4>S%nwd={qe?bHX@Dn2YJ zb-F`^W1d0q_~qEO*WbR)T93Q%^sW>Swtu1UQ<&PAu|VcqOpIPDnE?H_tlnRWSU>&q zA-cS#+6|5pu-fM>{P7X{(yd{M@F<1Q6ZElSicixQ&j<}A3*R2{b1{s^?(h?mfQ;zN zkxYqMfes2ntYj++@R|;Zh8cK!=f*j#XzS*AN$y2T3B3RLWxlnFGd{=~_d5RRqgiX|}*!SXiMV@Gb zJ(b(8gMLHFz(vufc0r{||KL&e_;6WA(vCx6+YniSwxQarTM- z>74W}BJJ6DQPcXb)c#glQ-Ki$J6pv(cFg@_q<5psDe96$+xKSap5#PT#!IoR9YAp) zqSTdYabvC8lhsu+scb{8|8Db##ZJ#b-Mttx@#9VZHczp|9&GfpqMnc!)w||0OSeh@ zA@Z8$GvW<^#-f|Z3^rwuBkgFj#jw5ydrE@67|!B6&I7H-jVf9_zsKzF&8vd(sIZcA zuLg7Q9cg@Deye^QLWj{UxFSDZ+c0hqw&f=!-}JpDc)GvlGy?T@iKRKhG(Hp(xUQ9 zEk;IHSow#jcdguLXL4fWCST8tya)s#?74+uXd8}KcFj!NLe7;5sq<@4jGXtM2XcK z)n?ZFl_on@waBjXMFC4)Cd&ZdWr$<$;}p#wmJwhPhwO!F#v z&D(h$&{iF;0PFg*G~h2SHa&LYHyG`k(mo3K1->)y#DX7L8U0b^Co;5|V;tstk)gM1 zEH24oHV^>>1X&*AdjLhY*W|%l0G1Fp3X$8GS+fZ+ z|MewCtmC3i8*63+(t{mcU3&t_NKCi|Vkh45DF;2R2{2tpW<9;s`Rf$jp&4yhTHw)9 zK3Xdp#cVO10o>xf&=>S+MZsi!ldMkN->%Dc8R@fS)Zuv%5HEzt|)Yzv;5kp?b z(ce9`S-Pm`fRqZai@C|BUqSmNRP=JEn|mD6WPWFfAUi|P3TJq`P71}uhW*lJhnLGH zlYZ*gjUixWGhfG0E{1r5=xuK7ETM-NR$bc{QXTwPnE|7)Ky`+eq<(r$!DlB?wyx>3 zsn)V7zN@Q23rgjkl5rI=Y8u3Lp=+m_ex~7;TzSpnUCitUVjjFN+b2EkKbWigS7IZ;Zq)UXj5DxVl*NoafaQ0ZAHn(s`ukf&TW z+9<|Yeyu=14@KxzMfRZ`JBO`HDiPF2V*Hnf?9ROq1GgITz3Ky{K~$44q32)|=t|&e ztD~`HQY-2u)La}TbpOmX*biKy-&ON(Y)4e4%r(RQLyF{}9*%q9L@D>FiNltV^6KB{ zlA?V3>hop`i7p^48UK3~0)5fA>4iGvh7aJP1oCTlv2aXbl5^K6l68lf+BO5QxiNWT zoHni7nD*oxmR<8XAZ#1&dbikxg*=1X*45HWld!wuFKE!--F57b>*WO)mc|=e3SE6g z&x>v;9)38MC<>hL0YzI>f8B@DpKUR#CzNm%Ei7(w+O`iC#-qdD4z6rXHg5%!%?aq4 zK+k)dlbl(UGL3|Ev1cZ`$IA)}jEk667;T=o+6_ozlIp0e4`}uFM3uIoNXiL?XR+{s z6R%%O0h6K@;brigXY?1>pzyA|b6`ht)^^U)FUQ(e`mS6yy$2|c)k%|hv8@l6 zh3B86*&*Yvd{(`lV!!!1bNK^x{p%#SuSu-{(Vz3ANB&3@J~st z4NQPv4J|F4J`Q9O;`@(GJG+7DS>!3IC-xH+6-e6iAGZJdj00Ez^u60KHD%Im2);G$ z`?Ud51x0hUH3G8g&;qacBVtWWb#CHj=rzuS8RA-qv0Tug|5@-qS5yFOW5DMk8{r4F z)69UL1`u$n{=Cy=Vi-&Oi}6|L*k{%qeGwlZu0n^>?Y9hW^u0iD3X>dbHW8aG-L(B) z&sgrbFJ_8Hi9Sp&Ase5iw%sVZz`V>zjWP5s=q@Ug@UKWm`obC$Ou9qFJrhvgRUe-t z__)3OQ3pYY*xhd`58#9F*?wQvOMBzB>iu`MJa^n{K6wW%+)q!us%ur4%8QE++ej4|E<`)1^O4@0ytO~PrEwsIDvQ+4;cTS?6OztSa7*%vhG zA}cvCdk%ZEMeY$*KhW&dqb`u?0O}rj>^NhLJ@1$djg3y)nlI|QMa)#EzQ1b? z(sG&uqN9WgxGvIN1csY9J!5|NEJGS%2K~H*`zms@^(*-EUfgC}<8jC>-rw?w{t9?; zj$d=1(NKK56Xz`QTD>kgy$CU!T#xA+}dvI|V1LU{brX^zgRxtGn{+u^4)2%|?L>j8rw_-t#6o%to>(g z+B)t?0#i^11<=Gk_?l_s^E_WCxn?&y2YfM%UvK(T2(Km!6>_txm^#wfQ1E!>FIHih zqgrgnd=RoSHQ?~o;_Z#VC$FIoiA`IeFe%>(>(5PmUo=6LBg~1sL)UBnG?Ro0_(@|C z$@#6o;Yq+Nty{W%>tF<8n|;1jOM}%v$E&y7qu#i%B3Ue!CeYQh+RIx6rE?yZb)^pW zlG(tWwne>=tau`ToQGgQ!#S>VSY6>SJr?)xFFk?#GTTerXVm79ab2e*F8vRm{0*IE z6{Zz+?wZ&*;yCC1SO7h_YnMdup$02pzE~nUY{QJ))r+IdiNJ|$8_(zMdO@_G8~o{w z7rf^dVTiW+5*a-K^)Wm>{=)l$+MxfHMDPCqKaX*Bj zQU${={_2W`GVXQbBn{FCej0fq>E1;4xTCRa^J{7+YapBJCr!%Dm6*@3~;)I#5VQ5?j_$? z&!>%dqV}*LrZStjCd#jT>slX-e&{Rg^JF&G<*?;8Dm1WUDP6F(7rHUQoCq>T&If+Gp+(4Bd+3_B?|BE>FFC4%B zxgAeiU~U;PCa@iyMhz_10$hFm@K#2opipFTnhs)m4Z;F@5yyON;$CE}C+Q}tHb4bmrl6NwT2voiW9o`UDpJIb`tMg&6 zq7gLy%N`DI0-tA#RCk;GlNkB!WVn(IVC`yiFD?b4^{|8z8CdBZiO@f6tLi(|vu)Ta z>Jxm&?JF_Ws%75QWAis#M*($@Y~GLD5(s^*1o_mM=Id$J&c&^WcxwqwAot}6|> z_e~oUPap0 z7>?nKcd%rL4~pfNuLLN)Q?~O;rIU4EskpZ59xCf&*i_H~zSUNfGNSc`5ru^j7cOwu zaZu*VoyN}h+U#V9on(jIDy|e3a36;_hLPhB3GBo9bRK*v4gphm8C(+AaeARxHprrQ z!LVCrcft9sgNdJPrKcljQQcDs@#iB34*cCwzOcx#aFtoe1z>-0|FwF)WUp}EF^w)f zI0~?lf-5X$*14pl{=%ZxLx$3E^&;vbO|neh--~2o(~nrryRSPDWS8S|8>=81G(xyz zQ@0abLK0&yAer82sm_lvPYwkVVZ(394S1*mrWdUYP*u>*mhBs8t`Kg3-{}2TP~lx?2cW?!BWoq!;kf?AV}Fh2r#1 z<(dCN@nSi;?#v4nu+4YyZFJ}2y^&<<4I55&G4j6)DCQj5_v9kn0+&=M2E=1Y2WH;f z#Ax$1&ZiQK5R(dXJTe`9L<$#EJtLd&4Zd!+ptz&+X*+u z&{!jI$3(>k2=02}49Cd22Y zFdpTblRZ3B-u$&phhFX5;zEazki=M|!5=8DsE;>4#&^=o@?E-NJV8RsB51BMh-PKN z%XLs+sr&;Kx^#_a=#B1vOUCO)3=`x5ZL~J+x|fR zih8;+j}oDQ-SGg4v)auOaSe!fsv96t*UuZps%3*J9*(o(RpM!SCY}O0N=F-y;J`g$}-J`tX2ed?k&3gviTeukIxV-c#b^SjcnTMQTmE;RnakHtCyrc@RY6 zx+iHHD@8~9#2&kC|7RjX5hvYlnwQ01lxdRo}lyEI)_O3=E5=`=Kezh0& z4&5G#;#y$u`!^)8cxrmoe6_ViCZenbUVl=FtL#~Z1xTH-HfK{jIeS^%G9y^HlCeWw zlE!auM<%j=vBQ7+p{>u{78`>s5pWxu&qOOiN~q`PJmOxpy&IwKk9V9dlJ*BKWw9G} zG2GO|c#CVM-LKr&GZ*j;-p?)(~+Vm!R!9mzVdLC zH8bT>=TFsif!iIz`3Qx(h|28VG;!dYc^_FB1rk_It|#iEnFgTNK36)`aPlF#yEPzW zyG2awyh?gz=63AWwB<^t&5Sw;YZSIkzwj&GI(#Eu52}bb1BO=%+UZzkmJ$^;l`XvV z)wumDvk!PUx0wjiOs>Glc?`aH=1;=~kx3-<56b{-l+B_)^R;ORX0=+^LI1eVp;pUD za4|p|CT@p;g#e4S6;2(N-4MYSj%MdpP}Xi+cz|nD(XqVqNb7OKO8%~_R+fOcV9%-M z1<*E8WIx`*n!S{RuAMEe$ve+5sDb1TVwG1C{_mtK=C?1ghJUU)N$L4)GhRI9LjmsR z;pv-Z12?}W#1cUgK|jk{4l={F>3X{MUsn%{9WcF19K@j&O8@z}1riama9f(GU>eup_-2!MIQN=`Vbb2LvUC(iHRSJ$mW(O*?}* zvdj=87`^HrtbxF1=`Vq$OR4z|H*0$z^H0aQKdudq>;Vx|5&^0wq|=rGnUyGx#S-%h zJ@7pDL6%hfU@KuGS>Uzkq}l6DW6=k4rM?F1J7gzj{d5+NxDA5#iZtm9x;6svF`^ z1o4LTn&rF@mXB2XtYtWEMb@Qp|LePZz3{6Tv6;`*$OdKYW{{Pph1@5X2Fa;usgr^Buj6mxQ04Lc z?LHpVaRPe$XA!*+&D=qpyFZj@fc1KpZ<059bdrl(Ks!P`Ya~yCA4r|T2lO8RH^sB71|X?rSxUzLt?W=zI?2)SzQYmqlF1y;lJ1JZ7)N$#bl0DU*jm+H~#$3%D% zWt2l`iAbD8nBrZg4GlXI7MK{aaG9f53eplNCjM51qInp&`w=!h>9E=^74f6_s{}-> zR#jKF)skyU{gHj9cfjw!Z=OIckM+F2)PoDh6Af=JS3quig@~xHbJ~5juSgh@!T{dr zJn1&KZlVVrEqIkz(Dv2UNH3G^Y?r{N(if+L>JKfv;;umeX-Ypklm>6 za%M3|^3-MC{f^ZIa5A;;{l#K_`9bo_+Pd{ut3)yj`kzfB!^*(jlBq#zyaew3hjC_P+bdMY4!i+ya6-T8tlU_>a3RJWiTH^C8K3Gw21mwoO`bj^Fx5h5M8&1LymT zt7B36_~lb^GLf0Z;fZ<)0b9Md6!-kTLhb$dTSR;SlRtXynvz2JC!sj zAH}wWnp3pucB73BGNu1!^v8*gmIHo~u$a;=p>LauqtZN1R21S99zHMltTd<)rpCWN zB1TVbh#~ogPiuC!>1n-1NuwbT9FeJ?E^KWbf zk$bVc!(Hrcs#+Uno?9e!L97%qeGZw;0VP~4*EVO0guKYSe1pf4{j5lEn^cBqu2FWzYS2UBT@-$1cNe3R+e_PU-JPOMr~!iOb=<`e&Xjw6)?e8WxD#_Ss(? zl%$(%;#aS$mlk7|L?thCtkCF6R_8Kzt`;nkVJWG`CY%kPAuk<>td{(}H^tjkLwtUx ziYBl;Rz3HN>jZDb&#$x0Du;<=c)=fwTt1sL>;_Gbw&2ARo)1_dj53+P2y%&^T@}$i z0T_1^WIz3_)w<<)a@wXSeAB3=g~D$brTIKZ;{E*|X>3kjT2p7$@q2zH3bSWF5%cxA zn?oE@2oI`IkZnyQ27Ua2GB77+DGGWSP;pIDmQknU`#vJ_esou(n~Ui3@m&q>G`mNO zUr6xtjPqK;kLBH7B;6vz&2n|RV3qlwB-Z+0aw)DMU9u0UWQzSvgH|K(y%8Jn=#pPr zWlG7qtJ_cMFQ&)5@JZ?CvbiPbd!gDY>mLd?x)oc^6G$G1GF4FUSVSo}>*oG%m`Z8x zJh$yzwZ06dx}MA8oD6?sh7z-V8cwfU5I5J&ZF)tl_1GUEDS2kcQ%PHi>wFc1$K?cH zNW8HhVvjM6e!CCJ`t^`v`YB0sHb)a?;K-=m$WTUg6e^?h-Pil%ERn1(DeA9EVxZz`)r?D2_ zq(g@voBr-EH%V}B*j*9wxfUT}v8EtK(^GFlJ~TG7Opc09Y=+Llq9N0ZsZZQfu*66y zf#ciTyrWPs9Q9f$&0lXk#=6hR*7#anz%K{sc`n@8{rtdg?ic^C9fpggjLtHr|Gm>J z!P@QD*^~wHgbce$R4wxYnIhz76Ss%FJ@4xbo1YsMq}N>{JkN<~xhuNOxmy|AA@770>6A0B_ZGV7vr|PR^-&@h z+xqauZJ??YH+ad^dS4a<0v+E7Jl(*tXZ1uV+K>MONK?IQiI;GHGE|0sbGavegfvTc zYvna5G~=Dk6mzNeI+uTJw8>2chp1JF5#fVcUJ^L9HF+#UGi$tL1knReK0n$L^a<7P z6zSz%NN?mltr8T=1%~>@h|!Ce3YwcIcfUxLN%`4h+i|FUkj=j=YAf$V4Y_p= ze7An45w+w>S)KYaQ8LqImJgwx9@q{OV7zTuSoM*l%i0K4H3G8+R`_1^N{@c)S(TLh z8EhVK!bSOyo~BeYyq>JFH=k_5Q|SVY5h}mk^aPe{0Y-DDULtdRy?p9Y^{lz#tVF^h z%3ukI>fWa*po@9*A7u*0e1v1otQR9>5Zcb3&&e$!n$e{RWzC|wh>Vt5W3Dx3bI)3OK-G6HydmV(f-4=aS7lV{m z#ASI}XB^{gSZ-FIUp-z;(D|J!p!gCBagyyTDh_ z&T*K48V5?XMlP;NXeP>90;ctk3NnROxo8)!!@P^Ezos2$vZb%^zb_5C>+R-$V!Mn& z!tIXe!OH;z1st{U5T2$mrsRHFbdxqfCt>2xF%9zL48(AZybKh`8f!FT*VNa&O6*~G`!SXcvR1;UDw7gsWg^Nqf#8!ygV$a8S zrdNmWwiOBJAe~665Ii|{S#isY>j-oR6T25h_9YM<^p{zJQSp5{K! zX(c&p{rsv~eQg9wCMzr7IF3$J>ac$}JiafL2W?LQQhZC!@K1Y_+baMWF;VBG%PO>q z=W^d&%H2uHGb{#%&GSEw!N$@X$z$vAwwkyg5ek)vaPbQBhvw)#ffa=FH zwF94k)}>o?lU+~DZ7jR@D4kO%POuUwPH1}td( zn$V6x-Vyl0yXFV)`2w6sCEYnr++zmw4tq-V&^guMfZgxUgYi~ncpY=JWQyGEpb816 ze-&Y8I(^-8T7dfs{*b*McY1D@@DRbz&mii?+arXu+kTL2pGGoSuqTif92{Be^t6ui z6#HLjy(CJKtMBH~fB2X`{CTGJ{z~YDnEhMIj=GY4$s|?4|7v~x`ksEazV+iku>44t zB(D}aw{=XC>){)lv-cT?A0&06ra9sOx7c&Udw_`BQm0QHF9rPMfH2$u^dk$g?F_L5 z0{oCLjyz%WoyuUQqb;JOsfU}%5t&#km%P@ptwyJDYp_^0JrOXhBJvWT5WA zEsE1Tc^N?9N(5C$i;=kQbeD4r6O$kEhrYgXpN2eOjH!{yrWWFV>mkZqSM<-)#|DHW z6$O~}(KDO+W|iQ>IlyCoM=2Rntw1a>t+U?-U!Q#b0FrdJw9G3wD+(;_MMRqUPjCY3 zE8eK0t!(`olL{xMnJb~fzCeof@K)K0q96biq4^bYIr=rpzLb9~&1L@F$x`7;{iQ+Y zP{)PkB)f%AfzAAJn$By-ejWndp5$YGy1;aBF+8Q0bBY8^!^mXU*30X}kgtTri}PQA z1dLjj(|e0Y-@5r86WJWm%d^Q9TJ*?RlPSJmg_y36=0`V%lS@6~LlVE?Bd+w)P~{8E z{`vyjO-U*`MHfbPCpfa0r(nW?&6`9XSNqU-N{aip&}et}-({?Oz(31b0vCg6*sn-j zR}zkPGK{@S492CE>XN&Z#<}z_+Qh*WD35~#Qb~v)hm#Oyc;o~`>Njh4E9KsCx@x5g zV%--t7iylypR=YxL2#1VzIFKeg9{HI?x=uO8BMUZ%Tm||b^Oo&10X@)z7UiyM~`ZoXj=3O z^o@MLS%8kfyJ0e+ESv#=JjgSM55I}RSqk)m2H zjFO=J=Qr5%8yC;1!-fBC&%XU0zdth%(IieeT3BWaPjfCKZ7#Gpj}Bsh~}^H~P#d!mRtpFu}PI1)Kr5 zT{b#}b}2jS(=|GvtY(YUh{h41K20yY_`-BVN zfTf+_J9~DYHfytIRnjRMG(%5aIX7OThd><1i&w^whssqO+{3`v->5&1fJfWcGIi0g zV#?-ymsw+uOk~!7_8j-fLY~9;xB0OwVAm&#&L{^m&D*Bbk^Ab^BECR$R%h; z`3}$qLv}pdIXTDcENTnzDa` zj+@N7%g`cwg#^88!%siR6zC=2CWk(-tmxaeO6QCT~o7uqR%INpa zb;C;eKWM2yI-q`Euh{9uD@SiC^KaELgL^Ck%J8SpL(0Ob)4pbCc4xf&sS=f3Hi zgzThjUV~qaeJ*H6zw4z?Wm5B_PSgk9Q@#&!2z-^*!Waa|Of^2E;3s3q!)y4EH~FsE z>$U~IVUYP5|Gdjg|D8Kshg+|$`{a8A-Pu+9D8urAovvTlv=@}!ZcD}yb1&iC(0<@^ zX5lI+$m!|+5CS&R`{A*TjKRP2gFVuqc_XQOba(R`2J_m*n@wZ@X+lFdajImkNjeK~ zu)h1n(~fK%BE8NUX5M4NylKn#$>+P9OL2$qnRWABYOa&2HIJ1nN1n2g-M!a7WgG!P zV53kB?zOF-FdG#@Yb+xOlL^eCU;p=O68{~->{l1c?c@I})5k3|4n}o0AlHD++c+~h zJ}^w~nCOE`hD+let0b%K`NsIi5rE-t^BI>t7DK;WI2#*RZzBtuKW_MovUu|&4~P328kIH(k}sJ8 z9<WP^qu&dq+qg>wcs6K4vAh7?#^EELiOX{p z@JEF+;F}I-;7~!}ClEl;{n84#Ou>v;%k`-4pj$6)hNxZ~85JWQJ+rt>S07u4) z55F6kFX4^sub{Mx@xyWmj0QcupiZScqpX8;9RjqSZCnGLQB`BAEPyhhvW1I{`N)^0 zF?@37zHRISbxcq$`bz0b%NYk4Xz-!VcG?OwycgsUP{WevL0pGOkc=S@_+9fMU&7^I z`Lx)4=h#S<1?0`S|Ms(ljPsq(C?l&ZVasOnjY|*I)i{?AxJws!m$uP-$uX-@OL&_J&LHEB1TkezwetILY_Xbee6xxRY@S{&)8}@OQ3K%%$2uiQK5VxH( zZJ!FbsBi{+!vWLUoEU?9kzmkW}Ro1y0v0G84sTc|wJdesZ33 zy%8Nt2q+b*UZ((qU^)X~kU)!4NK%k6zR6eDVlG)SEg5ZL*NMESiw-ubB&iaEvX28s z5qlu89RPlt2_9z9FLr1-q5g4s&e7g14C={kI|MjQz;nj_bMGuPYxvn8L=9%WSOUP(4mK5}FPI4@U+AfXd_{&PWGN1E z!oC6J#Ym2`1c*Fqb}W`2+nhXl4l?O)Y(Co<<0qXmOx`YhM0&NXX_f`_Z&)Zf!_O`; zzCC#JGocX(2-%C#V-f<1_^7393Kc=N$qyfr>Zt+cY2t+w~;=)fS#}Q!f4M5+;p&vhxwqG9h#7^9$ z0z7}XqXSg;k3y#HQvnwh&VX+LZ02R)@(x~J=8nU7 zyAVih6o?}Lke?3RltYy#uaLBz13G})_3|QU(9Xme0CWH*+Jbe2eo+dPn>_WRUML}4 ztETRf=3gF24t!yXPYS#a0Cfx;W-tg+X4??}*!4f|dU!(MZN#0WZ?*e)6B(fG)i}FB ztdM<-gKi@)G2c-NYHzD;jQq!+d?GYo=xo)o<7LjYp3iH*;KOsa z{PL3#v@u4z?GRvjfY%V9jl$YSjem`*@-yghvNG$x>-nwnQG=>7#(Dl1eVp>4lsWI2 z2!KRLeGr1=SXsk1TD=B`%4hlRo-cv-85sGOs(XGTXUif`__uRnDIglS>z8+0`h03o-*fj+FOFoRhg%3=p>6@-ev0O*N)^B=2)a( z)uA2Nm{ zlWYI0ps&1+t4v|jjxG!E+Z&)XbnHi;(5=#L+@%5rPC26Jy(|&8&ZXt^Z#ycS0pA8# z%*$s9&z|+WcShjr!k>4xk%8L|4RSEKGP=E20Ltms>_g$J(i*INX5x9Db%ZFHs%(}}Iup>%2r0+zPBqMtUnnQk z=c9KPN|WmTJD4k68gh(QbpY5=0*47|1lpnHHr8%l8Eb}LL*Nz6(#LTmU@&v`K6$G{ zXu{HeN%gI*LKS!nbJpvs;al&Z`|PCRWm2c^dYSpsk`fL9@@loazx?Z(H%)nWN^2=@ zJ6=A0W~&@r+{7p?D9jk(D9<`W$Hj45H~itZ(rJjh9kwya`@1W=azrLeAfOqCspVbRKgAdniD3H(Q zEJ3uHy%XAZJlfDKG>qZTcR#u~Tu{ZIzVXg5`N;>v`%Y!lfS>ruG^t+b?h&^7)?}XFEArOr{j#h_ZMo`b*Kh_r&!y>w8AvJz!{kI+K(`kp^wjIk%DAaq%$8nwxL-29OW) zC1=Gvd8~VV88vc<6jZBk+6B3X0fzz0Om-OHk@r7)L%Mb8UZRbbHAq#qca6WvEDZn) zmh4M912(VUVhrLaAX6~LYixZXDesX-rr$qUW@w>t&%qAeOqVXs{a1@z{oswFze|rc zgJt~RrpOt6+=zrIP$&4>FWg^e>B)!R=`W>I_?T!UXcWFD|GR$kVC0dg?5~28!HxjX ze$%BFrKQ0zItR#|bYzJ-DQw!Myy`sRzS1ydho5(^SYdwmbA)>3g`chvWhnW*QjDF?ccv#P5S;Ssz{RJ2_YSgUf)^*dhOEaC;0J_|UX;NoTaIw5 zv!|soNKmepWUVqzfgl74v$O|mkMV84uWcIS5I}KYz}B!~tqiu?U*a0CFGt`%Bd4B6Mlz8h-Pt3mGt4uP=f0N!(rXV;0)Vtby+vtPHN z(&+fTvTE%rW0ZT1=Bb-rG&5%?w!5}xOBGpbHYB5MaRgkP_j}pCxrrQou)CR=$1vw& zCw~ld?Sq<&_Q>5wRh4D+FO;U;YRJS1Z%d19{iNT>F76Cn)uT*EaKrDfkZT6tAv>Bc zHt*41v$j7X@2z=F&K!8HX)C*5sW)|Mm)kzI&mDS!zBo=U?wQ{x@peeD!rON!kDsj^ zE8DZ%m^1b<_EmoAvn{senb3YVVZ)eV)*l)rGC~diBMG!CK=B80oB;s-Rihrm^`nL* zouKe6%Ym5XW`}zCmuHZtd}`jR%<})-235@lqlErr_(MOZI-h*kCG?zvL&<5(D=2_OY$K?US=xa7!Wr=GfE^8BGqHUi$5E!)V0b0K!pvyu?C!w3*Ww_p5g_B;j7W6d6%D7MNFwOyH;Jsn{L4$T$ zgSBTSp7y~g@PpS8u>Q)0~UH#eSg8u65cKUBH0@M41+DcZ__8mM|3fzj?>+ zn|9;Ev4V3AW0nXNzH8f3Z_49W-XjHGdI0R8ZW~WQ>uXV>2OT_gmS(nc&@^XaFyw`Y{a9 zD0!yPszYb`e>zJAeA6mNP+!$=!cdm|^KCl(~U_$9dxl%>W z7KHYI$3W&C%n%Bts*iPIKv{vZPGG!rh^Jqe5ebKBg#GZUz?3Wt|6KAYVMYzFKZ_2vSCu8*_AjAN~BDWN07%Pn(r5x4(Fe{QcdZ%fkHI&BlYY4Kw;U1fXXe z3v8MPXfNI?C@3%+{~cTV5@Ue$$#RblyYrqundj7jq2L`9RGpdS|3b&GlyxgYmq934 zp1{%s=t-S!?CSt+F*Dh4j~FKa5fZeY4)WwfUn(#8we67#`pxSI0L%{BMuBYzC{Ui+ zHGF2f3ytAAbfL&qx$e4uE}hY)ebjK~Z2PL)Uo;#4^~%dN$NsUbie&;Ay2u1uE>J!{ zKH-^690HUjo&HgtvFiYW`Wu>{-88ys|Mpd84}~d}+L*BehlpRf0QI5l{N8)(Ap^~i zUvab$2@xiLSddS(w^ z;HCv1gSxz7W`)?S@1h%xk>%|R+Txb*4dGq*ls#@+0gMi9Z{EwBcbEB22q~~>$crQm zv9#jc6BBnGIR6**Jw914mKd};p;lV-h7*9>$OU_Oy{*UahOXr#Nj$EjjPzQORck&oh97tPOLF@!#|E zn&y8SL@fOFsy`T~0E)=(j(s`ti+gO?L-+nCaDA>C6}{TAv6vePLB2L`(QczZ&65+q z8Y{2f`f=!5U(%y4q`5TVYtuGIDF%*uZ}LjF|Bh6I$swCwZ2nUq8~$?C0J;76fhoNF z$|uD#va5R>=+d6Gj8Ut3@Z97gS7xxk0EVol>sOYr@+pGkh>1#Y;FV8NY4STzxe)d| z?E-L!RBb!Je1}H#d48YPz^z}DtfL-)_Ht)jOGjtqUAUsBsRL;jz4W%3*^k1;mh((> z4E3guXYbF8e9uqTfv5ibx>JWLMsDbDL zI~6EqcqY=G%;l$bfGVyh{Z%ESK+P* zVDrGZUVnRrfp;hum-fMmcYa~kwE975h!Y5i1hBy}0i`b#9jzA*5N70}`bUqe^8>R- zx^7hangPL^9>z7{r>sTwD$@#h0p-s2c-!x>k!0tKFEO+DN3Fcqw2eaZ)>&ST#X^DR zJucV4UnT>0ISOCG5#TMaeUz3xW5>mjWMEml@zQWbAJcBUgD3yPx#I#I0f6NUZ@)H4 zI(BVu>Ne|>NpklZ*Re8p?7Gkm&&ZpZ$MAEc(eRyXFP9lpooBjTWFi%6X3dtZ3ziukVBC94d2+80ea!0omnQ(ql3GSoREK=sYkI_d4UXtuQlRF-`DnyDxZS<{A8}l z$H~(xXS{jvU1gf)$vv&R-QOy2bk?8pW9;yq`&@SV_L6`gPEXp{h( z+p4T&(?T`g4DC10m38k1pWXpnqy8H6o&1U7h_m@7za#7R4LB4X02*YqboT_QUCr!E zl2vz*oYdKQz!?jw?slwL=d<0$E>i8isdCq%b&>h7pF#g0o+6xpLOq)fJkiKZ^5!>v zpL!7C(BZlwNB-uyr?xn>fJ~rYkq;9Wj*UDTmER`5k#CkgK^xk)Q5z&`J8E>2w=b2p zN)0D{FWoEb8B)rwQ2>-hFB{OdE(P#9{wS}OS$Rc4{et+^9=C(W`>>hSpmz=jZ2j&? zh03qeqAZNQY08X%V`DGA zdzFL|@GNaeXP~#03S05ldqvr;rN%6`KfHsumZ@m&Mk(6u8vOdd-<|>djxtWau)DM> zbl$$gK#p@<9qZKz7xfMV81op|7~`x%)lgXA=M=DcM2&NO@BSAaH|a2&*uKGf(+>2F zDr%ZHP5|CPX|^xQdF!)dOun4M4QvH3Z1#=!F|yAde2Ely{z48cYAWj*%r*o2@9w)Y z&=H_m`F^on-0ydCQu`m6Ju6PD`x|p?*oSW|F=>Z^-|KHVM!t8}kBuV$p!l+my0mDDbWt4LAZ;RGDV>&S=(bplL500e~eC-$Z!n(F>db_Z;QWfJ6W6 zlR|hqYtYTnfrUNIrg+ep(wAPGm(LOamE*<`cE0-=#PBKng)F6==`YgIbmM|P_HzjE zzsea^#?&ZM-T=ze{H{QbAa~S2;=3A2D);@21=80|6xmzGyQE1$c^ND0r4%-=rURS+ z?At*3k}}cjNO$V6vq1w{GWT^~hk(6ND8S*d_F&6c8|DFw@$MI%l5B6rgXB!IGk$HV zyF-?*>mc15>^3J6EOUl~#ep z!#G?IwkwpmTi=qJO{$v6h5=W%l5@KKG$}Xv)T>SPLiyK|S4;CBrLK+l1ADjppy&0; zzG1(Tne(Pd!%F^B^6FSbmMXoa^n(MH&6)JIjj%CP4J+~jK@KLRbKqSH;0JGA?0R_X zW$Q>mW%Z_KBOM)~tU)^*=?;O?(oi~^1eQ0TReNGkKmQlt$Kzg<1;2kAQL#+mTLwF% zO~0qB5FSpT$PL`;hKQJ z9FVWJv)_B(kVu{#v9H5DN3sk_#Nmo`aXtxoN!T;Y(i*lV9aB@ zhlRI3@{YR{LZM-F80LP<5`ZeAgyI659?3H*+&8GKal(uBU2RX+++K0lsgceAu=|5GXJwr!k`^LGvA{yVeVLyuU%K04govU146LDtXCGA!J80fly>L`KtsN? z^9_RXvKR0&AdLUSx+1yraPGOYrYw^nI)ZlL(}v0b_)_0fUa{pvm>g8OLWn)^D_Op6xy#fu;Lr8yUxjo~;*5msQ=}zVaFm{O)H^Koj7s$D72GO)M37R2kAyHcy+?B8>MNNZ!;<)1HNUj zJ%V_&xpXJ-BN2G3@fh2lZ}s{yfY~1HxSnlq7^JjOcc))Dp78wdb}_%} zMxj;Ld?nTP?JzQ0XRx&FaW@|1_&$@T)1D0r56RLwl~&3hANz^y+j&r4T{&H9)+v+@ zg|($~aaZFMFiXe=_lUhQ->3D)%Sk(`$d2Asq+Q-cQh)LD=2QEb^3$$MYPOSu)n^(# zLVx3;TwFLS!;WxO;F$bHhaZ?_LN=%?a-FMrgEn%}Ro|79zIR-T>;%Z&p0!UlZAksN z_>P@?LcRcfO^Ck^z4C;!I~=yczKPdR~-RI zI2a&r-|Sig>Vd_(Yy+jtz1-OY*Pt#o*WrN9?((^7>Rm|%TA}69w&#ECM=z57;~?mn zAZR`SgFenoo6aIB;0Nzalpjdj`&`^S0q<%bF;nj?M;LUbQNgTQ9GoL@>E(YFvY+h*hGayYOxpq4;>+Z@`%`t}bHFAN^(#-tXZQ?f@5A0`XYb|dkpe|fmZuk>} zlZyx*y_nJOeaG9TzqO5MGs>vrR}zj<&QYs&nMfNM4=)mN6b61*qn0|-4|5!2x91f# z<^C<_%2y|RD4+FtK&rRDTW);u7I|>VQ?4Tb@cH=)_j?4$=j=h3m}mkWbLc~*8S1BX zn7pV!@}0{@6m12;jxO;--dUX!-%^3x4T|DI9@9@elPTy|B60YP1Nu~HzN|oBtIV)L zKg4bCAYLF!=|})=MkGb1^iv-2Yx5`s&90kcbIS-(yb=YX6Lf4Y%W{<`px+=GR`7dV zKCQqZR5$~^Wnf@e0f3M*{~y7EK*K;8RCR!`g`ll$p&Z2;)NleM904dbs_Y)AV1S(6 zGu6OEkmC^WIt5hOqi=1&sdeNtNKn$gs=TN|oe654;3`3;znt=*=xTYiz4@OjtnI1W zt{(GZ&*<=+=0hFv=*NX^h^z9O3DTK;LiwkxYwOQ8S32*a6e}Mz+tAy5MnN40Pp_Sn zqys)#n;Qj;19t4T`wPRLQwVY^=gAfA|DIwTsp3r^(woZ-*)#NSV=kr zOU(CMUv=xF?FOzMc~hjblHYlb_q09Yg1(94yycm69IiI#t4G_r{OiTO71PWZmu|UB z1DpNgiV(Uq=dUUWw*oIbVI>F z7)O9(Fb{U4A~e+QNP!*tYeU<>RXSLM=onb_+>1d5L7a^G@Yz6+aAZJTNgsjAcl`u$ zHX*W?nFN9p8Jsd`s9)7SXP9!6Hk-wtBIk(dxWR1SzlmI zHXyWo;v17gckE`sN8#R8?`T60PwoCvPUzavwA-Ec{3)=^v~9<8YRdH1FUWTWo@?6n zxqrTC+Se}%f^=q1c+!;dgpOw!rOplySJ1agPZ~mgB!!2D0l7q2J{$e9i~p|Yx60XF zU0Fhixbm4FFYCL=D)_9O)8)hKu1)UxAEyn1LLoKHu#jK)j%LrrEaBrYI=$E$k zqlWwg`m{rbf#z&~?*@LP%La!S#8G7mf*R6n{%6CMla%Mp9eMKos{5r=(~{+miy%4$ zdcsE#p!t_3J!5G8f&C3lgoiHKpzZ|)1@hxDaF!HRT`i4Ub(6*I zXG!PWGfeorm*?Si@?wKSGgc_d1b2LsG8%+Bx#4dmfb`9dl$) z)lZFV%h`XNDKF&+l20m|Kok#n!=sVaQ5(zx>RO{iaf#&xUcevZQDQ81{Pvy@Mlt$hGi;r=@Yvk~^~d zwS@{w{d9$A6?04$_k!9m#p&ROM8riB3CDnznZ8pc%HBPmJatgQ%gk|eS~gYQ{FGOq zGiKiX0yeMT5_vQgaNp+`EjJ%NnMLx;%L_Hk6}%f~?XTv^T6&E{;9cq%_O8D7(T8)S z#kPJ@XHQEx`pml0X>XQUYa66+A2qd)+;-V$^L@#ZX|k$D8#zDsXhU!BPG2ZLIO|-q zVVK>P%r9|Lo#_{6Y7^h(`Ht+P%8@?#H_-pUlj)Bg4!Lcfx7ea{V;&$bMJm7bX&EeH*%ZS#8%JTTz`Nj$0 zHJ&k?*&Ow&tQK;7cI#wcurJ3C|8RzpD`u~OHce#YZ_YP+Z?K%`z~ZJxHoiCUU75W4 z*-!@{;P-wtE|9A28cMwbJLK5j*O&+a*|c3Ie>zXz|Ll#V!vQBiQjR8Mw-@&;m@fGz zUYhvN2Tt8qyggoil6$I=PoT}-ex}UGC-w%QOhg0l{iK7}$&XL`U9$h6E2Td_*v0_# zjiV)woCmhk*M>dzb5T~!L!o1$mW>NuSdw*kj36za4a%wGBu=I0YUY^bJJiSfEbvPM z1nNv*BWPdx`s;ECXuHNi(6Rsp6ES<)0U*eCxUkNoIPfS)9Ya+%}{56SAq0VC{>Bl zXn{p{jFOLvicLOh7;B!IzbbGTtKJzi6j;u<_8TDL%+iyF*O36?oN-OLyvk*qNCun; zjgBu))>py1FN}LhIyCQ^xN`{P#|(X^Aw&T zv(@hYjv;WNT-o7n^E_?Tv~Y#YUD6~;6YX0!HpXFb`^s|l&o6M=b($$3hRA`T^JGW% zA{o}AA^eN+sXU*K(i^mS6#YwjZ1Bgidl=+E z9Tj?c<%}A{L>-}k1Ladb0&2Tp6HdIfgS)G{^4EmhQcqnpjh zhVH1bR`$$p=(Ozt`KaXUa``W!?g>jPbU1#a_H=y518)r>iXMjdyDX0_aBmcZSYy&!3wqcdIh=j3m zxMoCycwTXE<#T3P4!mRYwhiw4jgv>BGXTJohua~bGBl_SZP?KOVKeEWI#VeTMHf+k zb{U_&r-EqR(uoj=6**c4h^n(6jaMKX70!TfAqanZZr`s{)(J779j-wwZ8(F04pa;b zIzS|u-TEE)Is$M4c#Kj%kS5pHB}{?_A-}?`KqJkibfCvHt zmmy&YG9*97Y z0OfZ9uW58$MsR5K-*2~oa%vP>{3_X&2QrTMP7X8jBcq@HNtam+%D+I`%trXroNwDU zsJw7byqW<}2BfLFQ2w}g9ki~)zy;5db1Vr6{SK~wY@VL*8eC(0*QFM?P)+?U8(VV^aLAJgKb#P=TZKR{eeP-{G<4oV% z?lBLHyWc*~0uDir?6U?Haj{hHo<~jJcOGF+pm}jqo4IyCpZdPjNf#c2*Dt#_M|nU} zrtu3OF$cZgR^wHcreJjM*?VtuXxnsqY4m8Q%UbaH=euYQ`uc~S7!jAeM(N1l}kk+ zzQ{t>YycPP-&z5;FDMJk!_MF!D6>?6zOO6VgU{1G_>FenNS(aVu*(_n1_Yf14c1l4 zX}n$K)hi0OqoOmQQ$R^jW9K(t!L0r7Pg~Ck;*}Aa)&VygF`*votf`N>4l-bP_v<&^ zJo2KquRs8<_uWm8{3x)`1WQcFr$VRvx_L-(23SWx0!GJ4m%Rj3*P1l|cqYY0^pL@= z_hk@~7Yti<78(VL8RneV%{zV?n^xRswtnzWX7RP{=K6>3uKSknc=tVj^Y-eK&LB?C z6n}Wl<937`qnLo>;m`vQ>s)75sC*n*$jCfSgFTOX-5h*mC%e_eg6QrbhgXIMcCYmFXBX*t{@iPqT38DzhxPLKA+!?4AyD=jf#0O#a77wyb|5`;)M+ zqr)z5$b%VcJIooUPO{}8Alu|T^FydFfleXX`tQ;g#$}3q8+hC(CWTHZ7d7)iDw=(HMgQDm#L*24$s#5TEZt9J`zWZ!pw^UDC01>co;~UD2r(g%n10Rx(;$0q8Fcu>UV9 z=Lis}r>+(zF`=HPvtD=Y7tN;iPt=TPfp3`^fPn6_*`Na{Kftd~0iN;Cla_&E^S&t| zRE9Hv^sO^$P<+3N4LzpTja-s1(IeDh>wkV@wc?&Jp!n|P)DY`t9))f z4SjtZZNN7_d$IZB{STWfuX@0)XGYOR!DU@B-%@_o>#AO;!<&A3nYrwed+kPOD9#u+ zTyd0;7fuy$^CX%cfAIeH|2yWbHRm4uVSArX59UcnqD_9 zHT~8vHm_atL$mVtH`_3!?*=n&{v&3_^eMLO9zC_c{RUk2y^C^{31`5J{VV;iWSa}7 z_v2{6F$phkd2v7;zlab0{)~6kW&~s_@;&6Fgf2K~&iVMeYtD!e;1SYe?}*s4kx;+b zRn7pv%s%7{5S^$?$qVr#_rC0)O#*$_odHcG<5~eZ<6~epz;#c|HlIB9wCa;=gl5Av z8){X{cTWH(!EV zFR?ZUT$vRDzjI7knR2*!pq+BGV66S9?YaC8IBqYxUx14rTwu0dQh85hthJX!uCLy0 zRIS`RXV0GlmW(#HfA`1c?>BujdZGZc0?tk7{0|qd49o5$?)FcA#k4Q)Fc(Zdx%#kz z3+CKmW_;qqX2vJCEep8#`I+XE|CY$xtTH9#S#<8_Z2rkFaN9mdk4kP+r_>+t>oBd| z_&g4N{?*^r$<&G?c-wJ|p>K*H)Gr3>wFStN|63oMX-++)b6%hUd@Q)}#QOSOs7H}y z0YXU6Y89Hn-_6QzSC%`5X4JdwHRl}BD923rRoTPqVC znjJk~&|&|_DCSwSyxsD$w;D0;f1a5E?kGHpypAB$F;_0+sYa232j1BF+6XkM`BP$zWQD4jySo~yfdw=WiZZW4HbzUK!Q@t-=G{ri9IGPapKla<7nQMRl zpj9X}(#@z4hB9D(0lvf2pXKeZLt@0=`rK1?4};ZhW9%rtzGVu&re*`^gi?!;46&Z{kI>ODFfe98=+UA4D2w@n%eP$52+i;?roNu|NPHiMhz0a zr~F5saey7oWb?ZTlPXIfzVqF=sg3}^uHt(Q8Ea=32&C=v;TEOpWnF7{ANHOyURa@F4JYTCqiC1fXra@ zkI@Z)l1$s-dtZj;g$!28LLAhmMm4x+)En%%&r5d6M=TBEAr9I$vX3>@idP|~0NL^< zWm3B)T}GkVHzHOy$c{#4X+T5j-<8AM3)C&osb9TA{;!_7!G0GS#r1hHEpIX;iyr$% z9yA+4d0+++1|=H=vX6)O9zJKr5X+6m4mhaB*TS9iJ50y8@aZ)!E?C`RN8thK(MC4+ zf7)F8FaK$-{qFyndw=nB)A8V=X3>3%&Cwq@)(l&)#XNBJWoF2f&zR4g_pj!~_PfnZ zH$7cjGJq4{ndQftpMK&J^X?D)uYKmrUE1bN|9H2}zwZbDGe(X#;})+n?aQAtzu#+} z`PX}&HAgNx(wu+jICJIC{yRQ9;0G6&3*I%uE)f98U!ajXWajWCQ))5~=w9;MI#d%t zw-Aj(qk_<_ZSYt-OMoR@I2E|p>@U*h9j@?3nb|L)ez7Y?L4nWvA+W)rf5a!CuK1RE zd-iv0lK*?x;>x94?BsC!Bp(_b&)Os~1h@ZdH9~EoD9EonW3M!lI9lBoI{esMK9_3T-t+P`RzVjYzkG$QS2w+m2Op_i zXFp=bO`T%K9hE5KNgXa8ew3Ywu=ucP_IKsor;SFpLiun<3aL|T^j71MGMolK|KQhO zy}*p>wQb*k82I+%pZSof%?_}NLV^h^?Zqru(PsYj-~ZR_ z{z{Kp+?1Q;1|Ry;>Gn!}QGO5`De(C~Jf=4813G~A)fL|U_HmVU@tN%-0DXt7NE`i+ zwaYZ<8hswju50zJjtP8g;LUHBEqgzhBpH+9{h0*n*Gd0}&kcObN+;n;O`o~!6 z(%YU85JMiBp}Gt4P8P@qNUKLio!yaVLM&hH^E)d02BeLoC&u%tFMYubTDP<&JKO*F zC#L=4%YsJwPx`D#4CiTP$cgW;GX$8u)NA2)%y0Vr$=vYN7W3JoPDskJ$@Dz-6f^aa z_zWA`*_9`JDVT-}W(bV?um3XVzj>R?`pR$H%>_y5RIaKc;LAw}^%ZF{Q$U7jFBid= z1wOCmp&Nis$o8@`Uc|?4d&%q*n*_hiA!M~>fqDS&Y~F9WBVv6-QN-GBnb`nBSC5Y8 zZ3Ah5m;D*TW$U0T%AcoA>_R^5nk=1#UlZQ@_BUD@0qGJ61*y>;5=x7LG}1_k|- znd~Q*>nXAFssR1Bf1(3TPeZ>aM*JCxzPTZrmlk;OMq&}&Sl#>flSrS4>vrYf@eQK1 zf>dBY zEX_p6L-E9EgvZ`2b+L%$dNHn$wAiI<2b~6-{}j@C3K%}CAI_>I=FesPFuQh~Y|nSi z9^`{s{=@QHZ)?^t6X{W~kh9J-rRAQ|G~~`dHk80&bW`e8I2y!q#N{#kR{WItmSYy; zrY%$AFKF1_B))bozLL2+aohJ*`VAkFr~b2Q@I=IdA&+3a%@a9yZCK}SeD!lZ`#Uds zDmgczictmMzMB9UKj=#IUoPn<{rISBn*!6HF7@7fJn48(yy{*CQ&OIO}joAg{LiM!+9F-)N(Qp^!d~WQ60Q(>5ZXQHt zJ4VFFjcPE|#4VO&iwgM~+IW2+5DQqZ+Z=aJrhGNlMjYJEb>NB@H&@G?-2&+Gj*Fa& zxw2|n1RUQ6@|069-#Sni0}p)aB=mN7Ipg#mOZ+1yHXv<)V}I^6aqF!t*YI;W|Kiv9 zC_}Vso3nM<53LwLwLu14I=xvv6b3m0&+A-9Nq|hIbUJu!4Ojvp{R4R9 zjYg3XV(23^`emzYGjA`z2LF3}Eyi+1eZ!N7-9-zH;ayLfr5pnAVWZL44TT=}LHlG= zd;_K!+s=MmWPOx9D0oaQhn=mOzO3{m(GWA9N4jAB(wX+Y%pw}MD?`Q8eXT9v#gdI= z5{@A|=R~eF+T?xqLoEWq!NE7IbRd=15*T-_~s?zqIvDJ)E8A|?(u!3tl^yqlYi+3-U!Kcy&sWvu(x2kND~{s z*-Tv(Dul?EcE1K~FU8)*V)M#S(ZLe0Q<()*;2F5EwD$Cd;Y@Qj`0}eE7i*`%NVczK zHg@#aVd-NMcdKE)ef!#}ED#aIQH{Bil}=uI;iTM_xbPo#%LkB_gh~Bvi65)kgEAhA zzJX+g^}WsN``MIp9TUJ~e^-g7rJsxn7P|Q&cshW4#pdcD)QPVy@(xMpLcb21W!fS^ z4i4dsNaZDx_3eZ<>IMAhF7rKMyH=3O9+G{g8ij>@6&oauH2KY&VEpY^JI!rN+i6(> zp@evkt-=v7`}dtH1QKmY7kvGxA}REmQuJjeR5HVA;P?t0F{{Ui;JGz@YF^=o!guz$ zsV}!}>)QH+7(F+qy_G+}r~ph89KN%DNLVsFG-;ZyMzjgFaKi%&{Y_{x4)?2&` zn>J_uOFXyiv;4uXjLM%euWtG{?K{5?VLy*AKhy|NRps&-KMAmY-j_Q>6$#120w+vA zA`eaag5}TiF`MI5NgnJpzeT|ix1CsMe`0)tG1I@R921O)pBAW70oU**e>ofScv>Hy zfW6=VH=OZ16G_2KYU=TZh`usaQpbV=1!QO8Yv@4pL{(X6BU z@k!OicpOB>2|)@@)Th9zG|ZwTv2b>QR*TANf!D0rU@F&srEdu<(_$DUJFJ~G90;FF z<89o+`N?YP_@FBE8k_H63~58Jm0zE zeRDhfLG|x$Mz-hynMc~WBT9JlTyLAP&t z%P|IQ_f7$K?oqo>K1qQg3lle={Jvmaq7yNOUjI-b>qT>EIn5#=`g>HSz|_=SI*aEp z>*H8Fd)}>2y7iuHT=ML(fZr`1_C8H&QbY>?{Ki}nWA7UFS@(27I6>lSoc>(ex zr~1ciPPBU-N!O5B~7 zkCE+3O|raCtl9Jk#BXwl9n!rBgy+-;nJ7~+Z%D4m)+5uZvB&riYr{~ z>kHNxF8V?PgKa87>th%FdFln95okPnOwW%)fOW7f;YM&jzK|D#Cl*1t-8)f=dyU9E z0uo44InBC)nz<9_*ql2B^hBk*LI&H*lJ!W*G1orx&?swWyBM={uHx*>kiT3OBlkJe z^hSSP4Dbxow1=!O4&DDH;zm%U*fj0;wfw5jWO}P&(wqD`RwVIW^6jqf-l3&KJ5gC& z(qGj`eAH(f)63r?-%{2O4VN=rMtF59HAaWwUd$VKg>N^EZclkOZ)0X1kssKb&@+AX zhJ9sT%VV6b%;HERM|0<5aqDuZ=VT&u??P~ZOwui45OMj95{s{iSNB$LNNP)p7^5^S zK75ZT!n}pwM2vcAz9ba6p$!|GDl+9KOS8jE|7Y84b&(N!9y*w8u;{AoxXgeH^8pC& z<*1^!vQ(q@>0Dz)#+N*rq185J4Xfc&0|7EfYpo^M`o-hyntN}j=HX`NOAkk3S+wOc z?`9a6Sj|fiWpS3%)ZIszj2MeqJ~KGg>)`N~Y`AOcK2n}Jm&;jy?^d@!MdL8_Xh{A> zYbyN}mG%_7!PK}m+%C!LtG(%$teUcd?~nVJ2*5hC{5jq_wKTxv&#NK)EDggypn(mq zzMs@Fz0!5$p8#D9;5c$UqEk|g;#NK4~Ulg%6PfSxFZdP&)Vw*3m-2z zL{Jpoz6`P~xk8%XxAo=lO2c<>K|49)gJz{g=>{~WpR!(e9)O8lMEdVnS#~eD)DBab zyb2o77jmFtO_&89?}6O~@`FU#V46hSoD9L+V>>SBbGz2T6p^V)2eM>!{^mZjgt)S; zpp%kf4w_0~7C%OY;F`lFlfia8KOx>WPuh~v=* zkT3Y0-gh@-d-XUcy}vnJbRE8u8nZhYbzxB_5kDs-@7pFiC>X8MrSdI z2P{Vh)sIwM*ogxCuz8t1Y8TzvMCrRvqQ=a13pkzWtSVgs68RkOB<8-<4Z;UcjDwu* z9@!g-`{@BvBkQLzE-iZanYn{ySm#XtDKEAgeXcY0``jL$9uj!F3G(+ImA-6;BQ0da zL5fZj*?x6QHCXEmo#+oZ^arH910!(S(=3$}(|Get08X}6AblJ-sj&KUa1?MFh^?PIqza6hC=}_~QhD zibH&5FshhjNht`@)*pSl8$>NhZXzI)?Qos`S9_WHYGwGTA|9LT80+j-UQbmSue|nd z3&pxKgVc+7k_o-9ON&hD!QuW|9q8l!PjF!R1_5B+*fqk1WSEp-TRL4vmnyeD{ae|2 zrf8`nP3_0&0SJs%*Y!i(P?JBNHaS6aovC1Dhld8O!B#Rp|I!f%ezQ(ligBKQ-W*ZD zcrRuOlpM{2<5;5XhKRpL|FsLSQx(9EE4j!ko}e)^!*yKXl-6@6Y~%OSu4skk;DWFL z>?+ZpyH%nDKI?MpO25w@vCLlUN^8Fuu56`_q*@M$EuDB|lOJ7CC&NPqD7=WTi~F6Q z>k|2ssYfaQ^x=z!!*X?dW=PymKj>c!^RTQjhv zdMg)_y132wKxXHNWGJd*OV0H?>l%D>H+GIs8Gb)p`X@|bDJWplbwIb9*+t4)g_PE< z;7$-7_cyv-5Nyc;@>ogO3{Zvr54YT%8xUoQj7J#kDoDR#?&0r$`_sMEZnN!XYfzY7 zRZEP^#ng#Z?o-Id;A@`wfsa;oHDH<~YNG~Vyy|X}?~&@`%Lt@tj>e~n>`{CO+ivW2 z6KQZ2Yfwg_N0lv}+Db4>R8JDEn!y<)^Js(f%&B-sbsc!R(zL_#S1JwJ>;s44{?&k_ zNk3fjZEsA_D1h#)E&kZ^*go=-{3nk}*foc9z}K~ zPRxG%bzG0g^(&Esx2svmq9M|4TF^{0s>xhHto%Mj!e%vcpCZD%Ay+2wJcyd9&djmZ ze?lB&H6hv%UFK+hpLx}bs?e-ps*$H>xkB_iWvx)|LLeIN>raNf+?O|xs_+J%8Z~?T zNfyCEa|)~XrUvkRmcFhM!m(zndP(#`kFG7$1@VGzp1P+`?5a;vLT%)$gPJNUi3D){ zC}gXD%FrMb?V9oD{jgZl-j3P#g8&c=00~s@e^JL(rP2>)h2ggrnQy+q1TIp-9Rqy4 z73a2t*q!fU!c2!CFe<_Ja*8)B!u~9aT@-Cq0OEe^Zcouu${dYy<4Jv?%dgwldJuq z5Gx?~=&znZ`fFRK#k%P84c%6WsH4N3?hm09W(@Vah9~VUJSwgIO6$fu`S!#IpkdxU ziN%G}qd}345Px*E=ula3jZ9ZMN#(FGk3m3(zded9*9KNbKm|F~bYK{3a^#chxum9>n97rsx9;9HC@9O>{R zU{wcmvYUIj*$AM>G2IvaLtJi`q(Ix?>OsV>+WnCFa~54Uft{B4JhGRjT=EINtHxux zEk|-g;wdrP4I%yJw`A7Kpcln{?ULy~0*S4HX2;{8HFXO%_db}8UX0`5cCM??cXMVJ z-)B|mGufsLHg?ilzW|HONbAW5c}QR!DLA?h9+^mYYTRE^)wp>*uX27~Pk4YMqk0HzekSR_f%MCKvn{51?PLt~kMElFVaP z9*YN)toQPP*QmSTz`CZv4NvLHKZ}8HS2(K_lEPU48S zM0HB;(?5;y&ic|%Ctu&R^+9T^yM@R{shJXXp1i&Sc~m@a+^_D42j#kvT@uO~;})B~ zrxY{dI9fzuKuxl;VF~!}H`%(AoGk2c{{smAc~n+m7C!v6mKqrR3ZVxLfBu^&{qc{t zP4;)vpaV+340i1ddnO<)a8;cqDE-9Qaio+OWIG_>8i*2{k}tOM+rFtx3mty_*el0J zz*i~1r{eF)@@>-q!tB~$v&q1Ja*02{CPAXQJkSeUIL}`%7K4)X?I;B&`G4MP5leH$ zAnJ^kp5<5wCJPkUCx`}91Y8ni1?C|GQ{<3W@*51ckB{U?v2AhNq{Cs;}CVJdr|qr5pRs zzk{Wo6ljmP&;rb9&mOSf(@_ZgN^?FJFPGiSuateg5#|2IL&pqUF-y3X=$GvpjKYcE z_f&GCGFOpZ-i=%BAMsxM%!C~#GsRyXgT8>Bqy^Mo=cYQDAX~2W-S0HX(y+Pi!e`4- zz)e3yEALfMZ6QCN5I8cm<|9jNuOmxqrRZA(I_+-I5QCI6d^lu+C78Bn+IjE}NIk40 z+ozB5)YrKDwxS~+{e^=9x^U^EQ5U4n34}P-ja4e!w z3k+y#64UVpN=IeJ)x^x4n9fA}_qGzh{gJOGdHJE6+MUWtj4K#LpeElH> zv^$D2EikELbA&msUg&r`z(SJtm=!w59rt?W z>K71LcQX)Va*CO~?B#Dd0WnyN^bF6~y=7EOJw4ItCyD9I(i7pdIM1aAOC=E zYBE#^W4uP1b}y;S*!VR<&HRTY-T!{Q$l&;<&}kdO?NxhES%20qmeg*b4>pgG!y~m8hoCHUzCzdpHT>a-#)T&rY@e;-EHm!C&l+6^tCE*q{^tK z1|Sn@aD75c18J<6PfS#*ZpvHNS_C`Hs_+oWEvyMaQ`;;eU9m@qOGP<&_dI9%WF?6} zXe{GL*|Tqz)1qrs^;`nJT8$O#l!lXj2ZEa|NK6>?bC2J^>!8Hygmvg#ldHeUxo@lC z2iLutnM}9c0wbuv>4v;6UGMk4LCgeyd$}=V1X%Pe-@o5)SS&yGz*QxV)_htN=$1g5 zQ$D8UK-Qr(Q+q2Pixu=F1;XA2qe#IWQ{UsNVpRof^9=#!2%X0dhR1UxeR6~T^`_uX z(o~loy|Q@{tKNS|$OvShT#~ezXfjGc>hFlz;*%*6)r>n#!>W36M`vZW9ZSpn!u5D16t{QsU&&Sg z+avR``{~*3@xz5&lG~Z@fPV(;7W^jnBJgR6Uifd9S;f-j?D^b@@1pD(9L$-|niEISlppBDtK zWCuxJO8RN8vDp)uwKgp>w{&qAxHfOCP_RVRL1O{(vJ&6ghP8Vr0DbE+Vbwk+5`aZ< zt(V^;d=ZvqT5!*7u56ce`*c2ArLs_jH))v@tjW_DKS-9o(?A3wOSsYDs*Kf2>cv8>)TuF zt>{VglL5iYMwk4ab2)`)B9i-M9n0fee>FZVYj(HLr?CJw{d4Kh^QyLpnO9-kPr0>~ zHn<$sQs5r;)X5dC~ z(sSIP7ww?ti?<-qMn3jFK@)>Zc+i}U+wp@0Au?pSZ*oY+#3{Vui@qq-CwBDem8(Che{)O< z;c`NQjd%$Kjb+{h$IS={5b3L-d9IqBisMGEsO|Bfo4y^qy!U+n$B z>QCC7K4I#{?zR6MK- zJ-OQ@@vRIz#cR8h!lHZ9{A<9pa6k*fq?qX@dp{a(!!zkF&H~%^r z08Ftu>JhK!sY1bo;jZ`lk&izUZ|~HT&l>L~8n|=$r2}lZLhDE?jk ztoNH49{$L-ZMX5k`h2dbZLP~g#2xD{0r`hg#Ko@TfSD=+e%+bY&~FQsW5RUr2DwRl z?7=rnR-KU-<^_pR*2RiY>Yx9Pg&-?h$9UCdVqF7l;_N6n zHGlV$xU?KU0R`^4d3I?qSNjV0dgJL}Dirqfp>H&~`9>de0Svae(hWN#b5k=_2ew&B z#g6zu*xZz)M$rK|LT4tP*|UvD2DaPlkET9$fW+!^`0V4PyWL*hD4O+xbHu5a`7eS( z!igUm_dscYi}w=$-UUYc7hQr{vYGA{NAGnOz`>(Zdnx#!7+c6nbg(*9Bu^D_K4T@8 zo{@^Q4!qrF^1{Sr58pRl4Lm~DA=opZ9D*)07HU>=LC1+hq{06K+2jktI4Vnq=>;3a zIGJ&oghv@t6$1GeEM|@;8jBBM;5F|czE)SEA{vjGEjz}t1Fb4Ng*BM(IN*N6C8GD0 z{)Kr_jS(`)h-E&K{D2feG`$G9Jws3b;U+Nvyoa5>Zpz6Tc4_X6oz<5gSxcV|M zB*7Q%mgm(r^sl9t{{#)PG9V(3k8u6ibW4U2z$P89R}tO~o{kF2-Vj{fuGGK%~J z#px86&UbZQb&K7bcFW_eih!dsW^><03PwUM+3~iIO4POD9(WET*7w6Xds%dxTvZ>9 zZ~@5>CXPts2Iifvt!b_s03v3@Lfqf!+3uU6w6Sp`D zSL!azT`ur@{#HebK@m{l#pvwcu3Sr>NpxfWHWZ64%vd$-G=Q_fH~-89GP+1WG)sTl ziQnw1=XcP?M&Eag<1d1NgT!Z@twTw>fD0xpl;w^%eX${EN3j(e?A1PT<#rjm2G``90p zQMq_FJT+Q;Cnrj5YRUJLemIh&E7O`j|DN_vhWV2id#agBgj{W#zughwXcTv7RuHEOOSisqO<~@n_G?cqU`;L(Bu}p0`_(Z;uZ`yZkZPXy_qnWdW6Oy9D7Smp zsk`(1%tYwb z9H*1ew*@*e-y_j{Bam;_ii-R~0AT%#rq;<$xqfSxpv65hN04i#dD=By4Q@~=j_(x)oJ=7POu``h7<$0ep$WkX1V`L zcR9few~4cI_7!Iw(_(!XKA}nrtm@xX`I1ET6`keyJ1+zSN~qNwZ(NWEq)`RHz_t=q zV?Jy&R)FGlu}^vF@-QCY2RPSX_^;SQHDg9@Wi??Eg7@Vu^zV_x@V0k9A2lGCu4ho5 zzNP;>!#{mj@;JCky2Nh8Dc;jE_ z399z&x5J7C=wo3?_|qJ{XSY{eNa)dL)LhXA!x`@$A;0kMM~9L}KX(g!eo#QDH_( z5z(;{fditjooOdF*h~9{hUJS5_INejo7;#rp=WS=u02w}&M~TjWLP0F7y^e_z57$!=-Huh?QH(sx7|aeA(8o`wLzP=~>}2s2Tk+1zp1whuUgTxkXhXw})V&lC4tGd^T8rzf5& z`>m1hW8V#6p`OPb9YQ9P6DD{q#0MCK2FHlAI8A=6hmK>7wV|@bt>&NO6&!fwbVeSN zVLrY~;36(d{Ba3Zji6>|+{xe#lyU0+0&<+vE*~p==ndYD^+|b|X_-7rP8LODq6TGU zX2cT569+F>o5SAf3H2nR8L-@*QvS1QR$oftmn=&`=qpwAiM?^UGYGwpd}5Ldy^-2D z3GF+;r%CbtA=#Z{z> z%ZSd7%JE3a?yNXwLKg*Mu@`G0Gc^l%j29uIj-xmfitl>WAYm_mo^y{1qa@ITU1s~td&6aG~Q5_aY^+$~@KgO59BJj=joGClOT+f+pUinQKvhRLP zrpEqWl0U)H6d)&J7re8*{kys6)O3yvkG=UH$omC<6g7CPD!R7Zaj-v>OvtK>(Kh=# zvUAPE0lrThv{7VM;!G(EiCi&1&i6?pi5ZgF?l@l$Mq%z%i%@}aQ$CzAL7i6XH?v_j zTv{@-FQ~vNX4K(x)mVC4VzYxswKI|badapk7D8~#Pl^%of$e5p(6Bw;z8(HqyF56<;a{M>I$m5#1x5nHH@Nraq7 zvjbY!vi8svWE*qjRKHCe*1xMx9g_zSs<}4o1DouC=s0=0?idF1ZdKOdUO*0}bGrPt ztf1x}@wVW+mO9PgWGm3wQxj2G3wtuFmau_WVfAd-*SrqNA5!HJUb$QuT(p<+NPhf7 z;9_f*Z;vqzoMpix6-$KZhg+cR6~YibvBC<#KNGt)4#DEHiii+L33E z%Q7Zg?pP0gd=^}oN@$M>wyk5br{!@qx&h}~Js<{rJVGUkm2__yX$<_mqi-43*W8(} z?5seh?D?xl9|7X_u{i}nxAp%$@za-^^H@&@t$mmRf9y|NJwp}zoxM!j?Na4{q&B=uTpO6 zc3zdQ$f%>_kB&a zYo7{^VJ58J4eHQ~II%eH!}$Sw-x?nG@Wg&6)4IxR@ZH37Uo*QaZ|~mJrClk*O;zN+ z*Sq`EKknD2#gX4&%N7h*xYhc7@hz8T;{<2K#Dj+a zF@llY0`t;p@J35^a6!c`bs>^$oB ztiT_%x^v_5!;jd=Rrkec0t0*cVc!_70|Y$mtlFZmf0++H`X`u3JKdU#!nz{QAKpIa z8Q8SjN-yOM`r8aXcR!!q8*cq{?egYvN^>_Gl z+P>;W#(hfT8eVq~g`~Y4DMlHAPG)TiwW)IktN#u`inlR} z&B>fd59`(X8sN%Y)5;kaRR8j zTMk=!M9YCJO+SsMAczGMOIPER0^Zy)+=QWIhg-K?`@)YQ5A7dMRK$zz>sg(Nu^-$^ z^FD^7AcgI*jiUiY3W)S-D~F?=}$|N z87xOKpjcvB&I z7!5Iuh&(+A90KS}*A?d^kl!H{Oj>SZ!jGOh|-~Esd;3GGs zrVc(y-zFfpWS^ZNc@vcsG9tC;St4HsFHS^k)fSlaV=>uv(pgBA23j5H1`B@N^YUfe ziu(R8*K`mY_Wa|x(nH&#e3MF?(~2-X1X%>BFwz*IZu|TADK@R(?>f= zJ~;3pu|Czwmnh43s%!@_acXEL!KoR+ElfXG8z*tr%%5&J>?{n*p0^J4MuBW+bF2oJ zQ1@9oCwAt-h=ZCqSX4}|kZj3?Qmo{t)3)GbbkIQ{d^buC6q)5#A+ge8HxIjwW1Q=6 zK7pg)ghEV>V`IH^zA6^GR{`IGFA@s^7(aKu@;hb8$L!w*olYFl-CU>mwk3pEW=G6t zr&*nRnV88HQBp^CL$GMR5Y!{xY@k?ppHhxh?$!t(=j^H)V*ioIsu5g*QN04Y#HQj5L`%5?5 zwPm;?shah_!Rd#*jH$jAc@sb83*T}SD@j&(>{F`GVfE@bVQC>K_DTv~o%^>ckJT>o zr1&TSU~MW3FIsf&yDLyUHP`8YlHPU9URD~+5#~#=rATl@DxLH`$W-~n_NgnwmxQ8= z(F?EU>gSUZiFm8d|Mnqi&H6!egl5S9nY2Umezx(|{B9nDB>rc3IdI3x#t8NPb&n>pk3|uCMy| zX_O&dTRu)E*2q~hm)M3;Mjz^dyj3y;6R!NExe!o=c~(FLHv=|hP~r%$XDo#4t%>LG zGohQa(!q~b9Smez;`^`QUUQKHW8VIwd@LVitXV)S34Pc8^04olI6f&cXUoX53lsZ? z-3>-ReW~HsdOoWaUhaz=LC!9imBP&ngS!}Tt5r(Fap9KcydUyY@g1cJyMU%`{9(F; z_k77c^1hD2eG+D?-zJ8ml3JDYX$pL;`uMo@hRIXcx;p9_vjPgTI%hm)9=|9F_nHlx zONh2VJO;S} zJlZMRsxiXFJSv#g!taBp`E?RI9#pv~kIxrc1ZH0+|(ZF;qk)tc`+|J_X+<|3hHM75hs-P z`#4l~(Yi%~H>l&F^ws(n`BnwB4-FgP_+@Tl76HnyE3tB8ENq?-ctlN797#1+dn-`b z0k&(9>n6m{154NSeCq_C9X#j%R!-qgw5(Xv7VIzwtISB6PQT# z>A5?cS8(2qq4!_EcDFP}WL>H#Tx~>YtU{wVvq}$%4(Z6Tkwtf;%QArB*~`aP8Y+P| zF>(6#HNH0CX8Bz+@XLTu^LRz&s}J|^-K>7ixPT=+h6nEV=s;w7>-*)(Eb<)_)*t`K zXt6O8x@Cu|R|hW#N9qt9)jht$%K8CY%IP4jjY+8&R!(H(A&cFTR#3QDB^(V^>hr7f*#(}L?WC>NC@%Za>SE(EEcw^34hc)8v ziSjJqbt|(Tw&jz@u@I&WDjkla|1us2t0FtdE_T*S`5I`!L*67IyQz~IR>O>!*#9AcLoKHbZ%r)#mWj;U$ko|v17Z+qxW*D<7GczL^6XewmPzR~o#0(k zj%*I%0tGsU?_gW}WrBL=DQS??9&_!`qh%2c{rE4O$9ktz*vFFxwGf19UPK}-nbKTDpb-^H{9uDta4{N~PazroDy^Wi>z zR6{=z1f7T81=HuDo>irI-d11G)h!vWH2lJrkGMAwB^6yOdN+mc-{x{&rNX%K4A+VR zW(1k%_TBzUz|gF7P5u>^Wr?g;eCoCGWZq(~8~u^|aFdzSMC7W)H{_==k6zbhDpBx~?a>I*0@Uk2>N9D)C>USZ{`pvz^$h}Q=Hvc=A8jL=a zN*j}(MOVwQ91T~R89Ak{dg4x~D1pzeWVNq0#P@~Qe&a%1!pa&qnHYf<>+a4C+b@%H zKhpn{%TC>9sbcJwVi?;8q&yOql*)Oi@S{bJL<(nUd*SVW!P~cxk57T(QR{skZ@Y28 zvk=xwqKuxPEPlsQO)B_Lo6tlPtWg15>dzH-AzMG#564fDaY|{P`KSfG%$4;0nID&2 znV3iZiyePdOJM!<7>51mQwCA(h=hExOaaE|q-if};N3gjh*=OIpCM=a7k0@c!T?Vp zB5aBcn@TZD2Js@`HR)-~RpWe~o>Q;b9vJ#p>U_In5OZiK;c@^Q*A}Ma(h`%qsv8e| zxXAn30=8DB$(_Yw%H-fciyJs!g zU)1Pi2GSGeVZCfVcq`;M>4Plp8*SIvh zk^Ajr@qnCQXfkI*=D(=JKrF~@&u_h!OO+&6RSq|-e+dzjVsfT*y{XZfBlin$P8K6Y zp=8l>EpH8$xaFD&orhTTXQkvfShLq@413?79o7Qp68q%@$>oACzZq0NV?wVpAlY#}$aKyX47@9eqzy=p@ZscSNr0`zUgp4F=GXu&&Xo9P z_2_12YpT7z8op1oq$*_v=Ii_IKDy&EN|6md)!Y(i=lx2#!c%_o{68L(4oqJjs~_@F5BnuFXnw8gCDF zdAw&HR(qnxqy|4kYRUOtPTSrd$&PwgwRzh(B?)(~yQK35vgg~KH4;e?&^GM7DR|WS zAjwY^P6IipGXvgk%vmlpH2SUuCrCmbe0lx9n-*csbT$?}w(MD!oSeJMyw))N+6R z-qlw_x@x-ZRqShW`wl}#=c@xu>j`_tLt^|r78&MT)Nc@LDCGRy>m(ie=|OOPt8T0V z6;$-l2HddJR<;!7uBy>l&C^BEy1`{(gM>EH|HgDijC6wST$ph&bUVN$Z-qrY)Ta{w zd-gKAaaS?;a;f#wAJ_%v57fyC{o!M(^WWD7I@jaB2;F{WxTAQcZ2Gv$ zV$HmMw3-Y3;q+XA;n?Ok*?LD;IQ*0F`O26e-dL`A&l`1uWOKEfm;CRLf?o~lR|R6) zQ(+HUujRn+)K3ofgn{(-2-j@gT)EQ?<5jC&x!fw2wwLE-34J;3;FNELu?~u?Y-+m(X&h(Oxk=Xmh_%n0LM5y@u{BnA|8J@>xAKT z*J3QzWYac1rN0Ar9=8YscZ)-mE1d=R$VVmbB7{)5%qF>o-TrI4!a5G*Wp_`Tz;pn; z^@lgXY}y`eBVPyMV~jvP6C1`;F?gx>mAtRe(1M?Q)~$SCiP$a|Nd-GD_q{ZpImI$g z!~GxUC?asDyj~;Q5vk{(C)!kR;Fw9(xcF<|&*m5PXQ5UH%{%5*$NM6ULg-jMK)!iw zIJu(G5C6w?m8V9}s;Vv;Uw{UUKQv$&MCg;;&jma#=q%xluBWUwkersQ9W{wRa{lQb zCOi@`5sOx|3DqYfE6I$dP%?{@pO=jje#SDP1(#ncp+v85sUt)}c(GMHxjHioe-SOw zzDSuY-zOsdOyo|$sq?2kR@Wrw9(l{oKFNr1w?W_BLf#}izsx|iwpc*B-4!~ zt%!b(E~Cm~;ai;`o|DY&iq?4G?(3<~y0C)D{5g)Zp?AvnTx4ZdK_7dZGDs1Q^a6N+ zQ-<>pht^@)D|V2Z32N?ihq|8z8i_*mACkm}r{3H{>8gB+W*>aC@c)cXXn@aNDa#Fu zd-vo;hPn9}!}#c*k+Q|#eN)unXF(=pGM}p&Pzg;3UvRw}1^eWpQk&MquD*bu$PT)j zP>&Pcon0sU{=&rS2@AKFKKO^VSGKAFD#vl+r;I1X5=c=cF74k8?2ogH&bFAsC;a-5 zOea(6?qv7BlZ#t5-Zec`W5PCYQ^+VAdN{KK#L5M~{~t?d;nwu~w&5{S8U>L~r9nyQ zl2D{X=}^giN$E+AM(Gw17}8SGHECfqjBW%*!^Y^`JAcRfH|#k+d!G9~uk)(1cr%Ai z##N?FNUjEq{3UJ}nkv0jC`o?B&}gi%wyk-@y@M92vldgF-VX9tfh`B1g$}4$Lp3n` zuz_R*aUH!;4yHBm!9{GtLq~%;E=k_7O4C<(UuF1e5O@PjsIjx9!Z(3!gB=#a_kkci z%XwO&Ag3>YQE)tx-V`x@FNb-0A3}Tx8)GH>x^LaBV6%cFd#C%4XZrzl0SDG=D9mUk zw!9Dsj~)%!OFqk~LwF|EmBNKrqhWP<0nKtLL`NR_Es9ModuQZ;YPpD$Z{;YXtxV(UX~Esblc&ig94^9?0kNE0whi`ZEvNkUq#_0GQOKeiI6dLDRT%v+E{2 z7$S8;hNo5q7fPrl_8M_q+**h!x5xPNPMi&}8=g_;+NUnu7CB@~l3Jb76J8Qpq}u2D znDrYh(SQ%4U?^u@Pl+lN$*cr!_o1Z5Cpg*^`+31(QMpR~Yu}*2aB_aS_)@+RLAAcK z4?!NB)&KUkRx7}bfb(e*3GZH*hCnTW|J{+4A!#iC1zcXN1FML?5qcA*{)~El zGEyCa=ar8s$-%_jKri%kVgWx0I>}PZY#S{PUSt%l+j|=2*b*x7s9Y5sAYP&;I(e7p zQEl@?q3okXR=ks9cHfVNjNQx<(&-*{J#JZMCHY67DZ6*Kn^??S=X&~5>d$8xn- z^>}tuka4@7tcCq+;@8iAW3q^kgb$MPIi=Nt?H}Ew=)d|pFe3Ve&iQx6gAPS1a~P3` zeZ3VMZ|x+Nn8rt@vv8#=6LEHt4WR?L=>GGb=i6u)elsQ#qZxOo{Ys7%>+iyw{VUaXLsh;1s5Nh zyI`1UO7dR>urrYi$rvj-WKh5~wz);_-?>Co>Ur9TJR$Z^8LxkC`b$8H=EajRU(U%$ z+}W6l{CFhE^c?S_2GJXA<#HO4uM!i~Zny(PTbI19G3okB>$hohN@!J!fVoK)VSjYp z8JRPa{C~gZNa{hpzsoKHG&=tUs{!INGRpWa1j-_8aexHg&IP~q1i5P>0D+H#5Z_nM zJlU?eS5Ho@dM94}?vUlUo6EtGqL9ddV};y?lcb~}d2wz%qNP@)FLBD^woC0XK%iX5 z6!Ffp8m%iQUSg|jroPJ^vL4i-2n2r>C21r%h2PD(WV3Et5FdNKI9~JU(YvgxN_?5Z zK?g+~Ty?{NzWK(GTQD;sQES% zRABVum;=QDVKY5b^B3nkdt_!vBbY7!hM3tSE)|R)zhkcezO%}}T1c!A#W59>=QZ@Y zy08E$8Bgh5@f%~t;_I<~Jnicws~KjBYba`w;$RuzBt@`)ap$lPO@hdL+uJ`bt~G0&Y2bkW$sS0ndLt)`X5?!R8_ zo{uOPp>&&>k9hj`*Q=$Q{rQFA@-4}!t{UaO%=5sz`(n4h*&0qSZshld=HEGQCZX=0 zdprTY_jJ7iX}rUhp-F8KsWk#oE(>ZkPWE>8Z4X9eYDISZ7y_jYjTdBOIN3|f+g0rUV zEcB>iXs;p?Z9=HVWuv`8kh3~mf)SH7?-I2M1dqyg?Wr6MazH&*;+T}0ne-n{46vgq zajUK)`E#&t#Q}*)->)vKAAH+Vm$wVMPm0MS;_a6(?+>|vi4@gy%HYJp_>FO+5}y7- zyC1J%@QjrThJ|1Fd?G3s-J1jaK#~DP4$$>~Sv?G2TTR9={6UfsDn$DJ>p?Qq1&O>P z?HvZdHYwyhJ5%aSP=X!N@{oO=ijb^t*U3Lq%3o=PI&oMg9X68D;U);49^$rF28dNA zXJg-8Cwz-vf4)5^p5$ZfSsLm!qpcL(>2^kwv{f@b%(}AH{rm%h-BJvO)IYbxS24A6KaVr_^8Scsd3lgbr!eT^+?0%7ZnJ;Y6R<7 zyaRe3NEJ6!Pb{RjA82HGEmr0r@N0Y~$nq|HH|x`hNk9Skyxsi0J?XyR?3c}eT&$wU zB#2E^b%DQcR6i1*SVRm5idqK-ZMB$>0E&RR2NJC=6Us^f+xx!b1BF>;>5F7ztGT(e zPJ4nByit{^5MRyFSTZG#-6d@vyA95=oc-%2hRXqm+8qpvM_h9N=z4zx_Ua;K=f?Y$ zqFfdthXC;~chT*Sww(*sD$9r2y$A=&N{Tt|IBte(XANgox7Ryg{;FPJHs#fSQ^4B1 z<$54W1Z{d$_<=j%_!<7NG7HntnC)o|cJoixL2rz(>lWT=D3^GHG&`vEv>YR`MnD}! z{Q1vDZHFsNOrg0KK|cOmgjSL0!ARFw8<|Sf*4IfN!(5Bfl>#>H4nK}Qo*M23Mc|3K zjJ>WHv~NH2dug%=+D*qE;A?wX)+{NmCRu&?J|8Z6a!e_lqQ7ZCvCe;UmOz*_6S&}$ zp_D16I2^ngWK_2g#tklTD%kofZZ>$Nz!u@vkzmWQ&O{m|_szFI(I@qAW6ub|yImcq z3)#4whJ_NUzniM;&WN%=8Jm%6Xc=ZhSofb~6$(CE{~F4KAN-K%H=K;|Z3f?_LR5F} z1BNdy>Wmc-SvAeC1+v*@N`JYWbd|~s@d(My{K!IP>|Dt?FCH!NHv%dzjh9ihHi zxrnnCmkoXg8vSV)+l*zO*w=51l#KZ5IQk}@~MSDsKCh_%r{>I z+aHPx4YfSW{5$8=dmoRCHaaGeh%u;E4y;DQGGy4=)bmdvxAVuS(r8NY7SbzMvhq95NJ5AM!z^Ji0f}0zW(0#dc|5GyZxfEoH)&v zrTx*zek$_js?H*T~-|U1j@M zmg*Rya+f{Yb}jsn-3XcwanwU%bdLxJEKpj@Brz(LW>a>T5m;-e!qVB33#OIur*23k zkJ|@S^YR1)gS!62xsPuYTuxt21g__&Rn74poGynB9l8b@A#LYF=2cH~uGENB%4VOL zx%{TE@GX#jn)mn|V4HFh(Ds+A7ac ztmeGnfXDYJf zBFm#0uB)?lr@B~?aIAYH!B@Q@HjsV&};6@6aDd({^ImX!kXS^cnR3hbkr=>5X) zwPUi97NKtyO&0Xu{bj(oV9}M}-=B@OIA_m)nqhvbvG*Q-m-x%0Q_4_LeUZ88%Ntto zy?SH}wfGGERPgq^F`Wz0w7m6A6j9nes&|5*C6Eays_M1|r#>3D1Wxj|<4-SGOxlW1 zVX{^4c`1KS$?EXj#@Xm4|Dj}{ki-)nv3W*P-tpJfO9Ae-+~!2>AsD?u4Wg%ad{|q% zU+=nf7h7hTC-gH8`;zW6u;XGJy~J|ydBj40uy4*LIx5d~&!ZZ7B=@e0scs{s_Y&ew zR9V%s1q?o8_Ygsipcp2pN<&v+3X)X0w{dHO^Z5WMTFiiBBL%ux(CN7;Iv|b}YhiS> z9?PYxFao}<0_TE5a&-^Fj13Bz~q+*5BLS zZ*(3HX9Jj4EgW83D#N$!W81Y1IyWVPag43`=O2$~j79toJJ}jWd-jGT=fr(sNEEm# zXi&jAmz2G&=TdEf+v-L*{5cT=oYbUb!!}w1QoCDCZf*%>el+pSMBCC~G;c-4Ap5dC zM)f^hRL6eXI-dIEILVHD?mTJ58uP~4@`R4pUXL|^vrIlrDZ5BJJJN9MX)m$DHoY|8 z6IaD~-bKmB1=6J|a@-f-Cx?1BYGd0@5NbFT(t+F6gc3Iheo%dflggML_-K40p#^E= zbyBgR0Xk5@NXv(rAcL@hS>7ttYaCIvUBt`Pq~cJ(VX6lFg>%-gy^0l~fy7GQ)j$oR zy?O&fH8jQM_kD8SbhQ3ZHR5^jbK)Chck-`2@8{|os8VabQxB7D2(@N&z{j(RX((`G zw9W54zup8O@to_;)iec(t=GQjO;FNCFdrf&=KiCXIiKGKT?-QdQSP<|a*|u!yg~v! z5?8wN-@8h%A#C3as9usE{5;Yn)`?^_fT}>dImh(hY=#!;{JgtQ1PV>$;*a<*7wMe6 zyS>tm9-hnx{G%_&{wLL$ ze@9*qE9uxfuYBqdhux41Crg||jlMFJBoY8_**YrTUj{Y~-!$xGPcrl>oY=YINwV0y zy*U?oT$5*I`!I&A9*>@%$Frm3NMqD`Rdy|(c`e-#BEH!4HyGwVuU0OEF}EF^u*_qN zqsj_=j7ix>a}x>V-7$&GgI_d-eg69I854X2W@**K`w0 za49+5y-cn|1FTsLT9CwX`_?U3jeR#=b(T9XH3u!@!D$U2t}sPr=OvLp^8xNjz$2X42sbV z@6YW{v3(|?h_K`_8*Bh^9##=O-1FsSaT*$&%O$YY*+*N%3C-^*Y0ckK^UAif2zY${ zT@=zaihT~mrJa42=Ui$=?s`kwPnTEb=74X$mWotzJiXFb?E&~qsKnl|d|v%9?n;=d z3?0$)7B_=RIsz{LKDv20g=Lsylal$n5awfqlKe00=q=JVNK6@#KhpG3@B{j5BY31S z-m0yuSM|>S?yoFR_Hx~y51;({&w05RE=^eSC!26v*Z2J)%VvYUaAPs4Afw#k=5$8B!(T4Ui9sO<40~9Oka?DVbUx!^P?{}>&N{Mcr=gn8*lEv^s8fopdgNR0AwM~Z zoqBNV=Td+dF>d?8{v<`#YmwoVC96H)vB{aV2~K z!{0P9(De(aoHFp5R7gsodYHcPb3fMg+$BUG&nO-Js$T$o=$@@c9%XE0;*VyQLCqLDxx}m-pR(7ZLuvC~t3wSj&qn$h08YDr+R-G~QV}IavTYqAaMOXUKuq zI-KzamzwW+@UOk2{E_<)As^hu#2XB+18tcQMk4WR4TU5`GRlVg1L7+d#5%G~08xWN zOgB|DHfcAI^1D!!>gjsll3>qT_+6VSyAaBR%jqVqk7M-=A99jMhG%bMy41|hdO_XR zt=VtjlR|aJLE)PL;~&i&PfR-(oL5&~$j{zP^m=K@2;xyo=$jo#PKT+-knKtjYZ@*L zs~RDz1#mx4N|mt{6|eOWJ4Jv|or0M(lM-43(_G9tFt)6=Z{{m@@Vt{#vkZGku%X8q z7&&uXrzL#?uHp!7dnx**<`NkiiD@{_X8GTlh$U&DCY55B26D2ul|QeAT?(mkihpGJ zu>xZMW<3%*R`QN30bh-Yz>Y&QyuzR_dxC-ek9zjj*XGgr+O3zwwrM_1uc{v>D4?{) zALG!-I!Q4okqFhnXoWaSDACNW_sGO)uOjFrhan71z5DtZfaE5^I#PVj!R-^a+IyOK zXJH&mkS(+3cqk~o_oqU2D&KM6;7Lwt+aiX>vuBYl$j9(NQ<}{)%`+2yR9==dgd~4& z!`9tKuD%~+TyeK}MT44(p>j=W?^C}1HiI&Ik7KnNzglnaI6blvIYE!LTia*+xh@;VdrKB63Z<_D44l&yR=c4h;i)gOUBa8`{2 ztZ2q7*J@7_*#eGgGt@OP{(yLWk!M`-Ez}ei2?|-HIq0+#1Hgslfu%njOaGhi zi&!Cw26|76mj58ny(`jTyD^a(vCH#-?>3C=qSl1#Q-|RM}IxkGifD% z@Onxf!s$0hgkIJw4O_?xeD+b62o{m@@07B>@OFZJ`vvxsE{x zurhqI@G6Cs`H0@U-5EQPClyACwZtb5w3?epRSe^U<4dn& zG_OGXmW4D0j$L90xBR_|tv93CQ`JpqptJY9;>t(#Q3V1s0mqloXE!~<9z@e;HC!5H zR0&FWADm8V2#Ze`4%G~JWxjda4GWjBG-9ChSIvcBs&1~49Br$PEY(%D7T|CUm)WqIZ*d-gJa{-acwb^AF&RnX@YMx+mW}6Ik#MMYAG|&~Kz0Im zI;Sb9&xd&lb7{c7|H+T#oGe0kvg!3OBoqsOB7hjm0x<}v;4LA7Jz?1k$E?Fp2|<;2 z2)TkIQy=9t*h7`uTq>VZz(GDoD|Fsfia%MU#jEz9l7;Snrve=Fg%iHyt9M^XM+1=U z@!z8Me@$wM(+rVei^F17qFVDsKA+ne;s8_n%X0u=cBZUEF1z*1-sFJ0{W7~T9P4Gf zHXzGe4)K{jSXp7bT;uz_CqM)mp=#4tFdltvQnHRxs2i_5xAH%@?=ky{tDFmv-(Qrz zp|v7On&L2Ws1~d~cXw19eNY#qj^)w*?ji*U3*?;;mAutSmwCrPB65d$IkDa|aOE3_ zUsowA~hEHBwZeJMyDZH9CNW-X#BMML@f*@jFoM zMrr^RV&fi|gB26<_tlb0W5WFn&WaJn;DHpPU0%=cP)^JF$ZSwoD%UeCO=FP)q_52KB3U?VG;Hc=2 zg$*sN45FezytOu|T9mOPz@I;&peHj33?^Ru%uY>+ffyT6cYcFly z=LZd@N3D9bNj&P`fo)f3s`Csp7;`a()4+aY z+ut9h#DZ4Op}1yZD@uj=#=~aB2;GQ6=^d6}GJqV-fu}&da_=X8$lwfG6dKpOb^U>7 z=&4`!v6^gFsQ1I4Oqk#Y5U73$^(wyKi|@n;Tom;slkHFMa+rVaA9~pFW<_qbpYpav zf2>G+r8!~Fp45zS7_rVW#^>w~2V8+UT#LO=etDt03mp%{`e}W8kxUrQ%!|vk8#HJ- zyTg+6SwJ7~@~#xwuk_yK8pISATJ9nJ;JxM{uO{S$qZwWasYtlcx>VVcM;R@pqaA zc$Pm@CsQm3dgL{FZ~Z5X9WQE+v7N4$-?P2+vS<wbDQfoz>g4I=)S|v2S#L3F?y!e=rxQ>g%#xW$^3yPkikT36^8-uI@sUu z3VQ_%^ia*Q^zDeJP|o~NQ3t(L=20vNtr-&DmDG`R9fVqGDx)ccBrlSagHO+SiA3G& z;vpES-|rO2VxPBOu9|RL6~w;bTxWZKqj-7s_IPM7-}!yMGDc~s;djHIo6^1#(?Hs{ z?Jj6#9wzZN1B?+7M>l_1IjBQ;(r%05wqDxf;-%gA55M8m^P7eVeaOTpSgTNwfZ>*u z0s>Ph#to;w;a$hn+IoW7J_BqX#sLD0Il_1Gmj8TU&unHF_9a)a?I#xRe%=Mx{3)ZF z;a1Fq$!4OLI~1rdNT2HD$~6{V<+uIMkwa5BiVaVl50p$ijcvuGt?*{Gn|I{a2&g6R zL0D^tA4FG*Q#CMnpl6+n<9L@In^jeVpx@WoSMQ*u$!`XCx{D3MBmL;Va*6nxhC^lO zSpqVcGuMVt!)_$2BprI^EPUwuBM@Wk>e)<>HY*aQFEfz4&E!r}Bz;fW@-m4D9`Sty zqE36x3C~~MdPcxlDzISze?PL$?QsfC_^{;EQ5@Jhuue{rDpDl!(g;xl5u?g9y)AT9 zns>PzVAr~fq&95;-u}V2U5nw+7IxO%5Vq>#GO6iAwJN7AC46ND*#%=RJ%=WA5BC2} zt%w|^N?zCf74Kx{TrO9iBNwsMALHwl=}l0Mr-?yqG2THE-F&QZVc{t%UM=>$rVerT zZ<1wtf`<$VPzk=GIqYWo% z9E#4G-vu{jig>yI6Q{LW`VW6^JvhzmQ~y@zJW>9)-Dd?C8to@LeeJf#pel|#`oSMe z3|g2r{Mbymh?-^n=DEEzO5!kVzmDE}j0QGlRv1Wq6H~Y`JVsbjeRK6cZMDPgV+ zT#s^n6EMH}*~A3libmr-#l%>#pI?>3MGvPVk&WS5LxCt}+LTZJgR)~R-CySL7$1il zx|1YCBISvu?MSv;TVUJ=y<6w2ew3^BKuX+`n?nOI+TT83sFV}zx_>MusRbD8waC%S zKJxFFJ+j+?JNvz2w`z)%ObPYFOxO>;IqsKclgj!WQ|UbUcG`{0IsI%n?1En%fAucz z8FFI0N(8sCe@?Kf<@+cqt>&T%N@SPMK%B%~%sAfPfynVez!)pa+ zpuUc~*s6T#%dKoAL`I#71mp+aDDY9hM+N081%v(oH-bm0!)=2x^y_@ zuiW1SyXU;OZIyHZE0mEHt-lODF8}oV=|h?0>#{d()o6qTF}ItXMQ#_0Vf@8i>Zw59n?)G+BF{5-APRnoBj_C*E<>g~~C} zFB{P7T6|~Ne!I*~#gBh9e~oRi-P7_}sy@JSCq(Ru>V9@aU8$c|esSPj*&_5(D#6R- zOJF<4l8;T7V9O=biN-?#R@)|Gt9|PYicrr0bc{@kt&6iJ6E8Kahw zUO-o^!o`RPF?((v?CWUlz~2yT?(OC9nSxO6GqCdA%IDLp#z5@yic#*{96IEKKUy+t zv3Be!_H218?;-;O!V?TvK(_s6I_X6l#Fr^NRuJ(E1@4KO4Rf)bv3t@sabt7=zRTi_ zi9sfiB90cjqpI9<@j$1CH*(=NR;*zd8NVYjGwjpjFGKE)q{Ewj1Bu0gYQE8Ol47}P zHm{7>U9*v(Ms#w#y3H%GjYO*kIoqYV|A}yZB)=a7;p`!?qGcb_oSW{eyC_{mGSx9dh)+^rhmFk^HwH$EX zl94wQMZ0QZNjRgMB^SQ^jtGPVR(qD<{QnZ_=Y4^9{}rF8g>te7N;_k^DpcEa_tG24 z++{RtH?+kP(sgSw2;R{MUoL@>$`Up<1>LQ`6?$_w-l2b=tP7Pb9lnMS1}Q8`F7qaM z+1ePCB@~;3!R@WG1WiF)M}8!@_lzvxE~8d5d7_<9%(_SkU^315WCdmB*#DdAml zEfR@*@@f=ZOK3SPr-i3!;K_Nl3|f}Sj=bsUq7LA%`b}(0(eeBtr7qv?yY?Xd%rkFQ zrJd8gJYHV=3JaR{!)zJQ<5kt|(8NdiX0?g$>_I!Nmk(%juLYxh%nLaSE#gA zgTCJ%D2_MI`YInEd~S(5c|2PY|l9AudC}_x=gVWYuEreJPTv=u)0Zk-W963 zbcHJVqkU_iI#`@)XNDwrv{zn&_5UC)1bK@C4 z(I;Y`};^V)&gM?<&Z_ z>jwOHf+gqGx`5&e7+gSeaoL}27n7SlYBErlh8OE zaY5#pE=lE00$x(Vjq06v>P*Mx)zfP8>ip@5FaMD3fM9 z=IR*C85?;EOG%|rTixQ(%?!-A*zDrzQfG81SbC^tR79v*^$ye(6pLZ68{iUX!AH#h zh)z(2xE=?tIMpQ)d%xJ1(Pj_1j8|~9G->M^YC$Sr2Z{Nh>>?)&nI9W>!zjg^hN0Ww z-F@1h7CCfv-8I+bzx*Uyzw-ZDFS^EVC$2kds@-=@-+#5w?(DNPHj=jw9BMwp$#uOS z*!3X@b>$u7jJ*p?U^4__o?zSJPwkWgDy{WhWIufl-i}lvzuR=^Tw`x~>?Wixu~BrX zT=OGrE<={lRuWa`rOc*>2#rhN`QsH283>to1>w9z1~$D;Tk3)OTkoDTpV~s55{-kB z0L_&@n@imSsM(fNU2(TN9+5y6dk#nYgEwQ9bHPhj&8T`%!j8wrPO1-yblmnJzfq2R z*ft6S8MOWZA~`&4*%z;}*lunhMSr=7^c(o$UnZC*cO2+iJNd8i^(q_tj%R;uWbUTg zy5+e(B>!|aZ}ygQwnZ27s|joDClegxnYC*&mgxRdgGIvEXSCW*9noXX@Z)S%F+SM$ z#^T2k*2}b`BvpgQb~a^0pshBbTu0f-$My)&M}rypf5hDFpm~%B1R_yDwR*9sn!-$E zBfE7Q+LFp_WI&wVw-YP`%j3d#95RVdimd=^Ta#ah?^%32Nb^~|u|MKDV)GxN_CxiV z2V(P2mX9=t+llL zpy2oZrT~C|b3Momu3R3@7Onqjo}y~o&&8$+QFmc$l}~&ZQBzC`Xmi|{tTtXrCsv?J zDV!P!!DT}LmDnAjO$1pGhy|~Y>e}P@cXWG}T;v;+z^e?br77dH?c2JB#D}h? z8KoK*gzULi+be^JPWce=2#!I?495rHFU-fF-o_vLRh`yDE>ZXomW5R)RRhdlU)95c|Ly&3N#jN(R4bx?e6 zioD7BYn_te=M=)rV|1qW8TJF$lY&6i8(SL{hJq>AvOI+rI;4}hPA*j=aSgKsI2L^6 zbhW3WxnX6}j3|+FzZP;J6!9c%_tC(8kbOI7p8EIGdi1nSI0IT%oVBx>G4r`|9&Llb z&54p1tYIq5y7dKS&;GQTp%HYXC9k;a7}@fo4N`t?8V z2|uH>bYilXbiF8)UK^vD+LC%)N&TYM-o-fEym7LN_4=f;EzxuJ%MtcJGd2%o(Ey3U zS7H0x{B3?kg={z4$rN4PPX>`3geSOF>O8K${P_E7Zhp*1?SvzdP>tU9c=p%;LQ$yR zS1M~wv5wHF7|a5@YVMYO?%QS~H~_3UsFA6PpIMdd*N97_%$jcXi;a&{S>UyYx-@tw zA&*n(2Krq2dE~x~Kkgp6wK(PDg5OdG#?;HEkV@mP7Y7wcF^e7-?L#9!v0w>7s_4dkda#^YpxQr~ZCYE`$61 zOE$4CCc;k-zeo*}+&lW9-$C_X6+HS8TjbRr@jE9Xb1*bemTZW~7P^S z4P2h^Sj&7?<(^BQy}eZ>FxJ`TaVfRHgV9TM4V^1q6?$~I$@%1&`WK|yYBr~%SATSC zBxK;QFOiPt$Oc(~g!74+&BfC%NwKHV`<5^`KcNx{!z9>SeNkUc6Vmm2zd}9VY?dRp zQlH7w$TJ%0TfrcgOw`{X3g5MA;K2-pjgOr~WE?XU_JwO)UFpi8YsF=vM&a z)8W9o=&Xa(&qSDkH^rFp^>;nBK^@SY%@Sp6M=s4h!}=*$SdY(N9F6){fInvmCmz#} z))J>Z@O=DqzJ!MDP-2%7A%|%rHsLa5+B7^D_XQX3;G75Za6`ED{^#4&c&T^>Gd~@L zrXpmw2FtBnPA&Xd&5LG|NzmxK^Ni&^byucT(pU`snkPyO@pNXwnvhPZb zWiwT+`#|2AzDb-o#o7;ipsIPCa?H%ws~%qqSaOiPixNiKzfF~SV*&H`X=Mo)0Ukwc zJgK!6?_vv4XMhr~e4@Kh_jA=GBI&urO}&PWLe;Yrhc6qPwT9k*lkjW-yLs8VlAkf7 zHQZI90it^xvBdC&pRH9-{~-#(@k;LMGt|x}X8Ja~1EHctCE!>%&-P%K#-XTo!P2!~Oa%ns4!35uGndreE zViIDJ42rH68|V& z$ioy{^E=V#VNV($^*K7at){ecQsyV{#-%nuzw^mK6CZ zf&8@`NGi#itEcVyz~qubVe_Zn!{dkE|2=rtA@X1Q8r~sZZwDlxHv>=JE(<6B&cL(o z^Z6m|McQJZkzMQ&78fR`BiG4TM<%6~F8yKOxcJ=^Uq{ltT|`x_AezEC=InKA&h^QY z)`BO!Rhgf+i`4=@k?7Vyua~T2z%6|r#b7JnGC5Z9 zTlN~|>UgZ+iDRt;jg>!Q$=aQ8dnx$(&8Jk(wuvXPw#w!NQkL{7U!dNRi<|PP6S*}g zpd|@zxpe7L)@Hx%0SdjjK2&8Ava;=$Z&SXTI6NLpyD;t|Je%)u|21Me?9Si0RaaIH zt7m2ih#nhKSR_1p_*FK~<8^Tq14<2W`zI3pwuB-AF>37~1vFyqL8u7Vr0fob78&MF zo*OWhXyPA~#w_-$l&uYuZTvN{R++)IzkQX8^4O<*7;jx;V;1&$B!1|qdqk2=9_dlvafi?5H@LOGL-6cz z3+>ZiD*3hda?Ia7(`&gOQ~m(w)QsJXjd-P$;7<3paSVuFSaGg|?X^`YDQuIUv`rtE zdF;E|Ev&q-m&7E~aG(|O^0Ue$TCx*}AJGx0KejavS<<=q?gezn_F{SJEzipa#0G&q z0~92MzrXuk2J!g{)tM#2ywCk2^6biss;4++)(G|Pe5|N6YKWBN2*}PRTtNpwso?KY zGKNzZjC)5oJHG78B;73a02_uncy&-2;0GZZNw6N*@{ z8?H49=u53z@*YfGZO}!0+yX24>9;P_xfOvWtH1bXmQ|=P*wGcB(ksYwmC|wYivMES z27xjUqD0gkZJ^go`CmY&t#F$%EyYHc$wU9B_>Yi?9~IlcVKr5@6@|+9W)H81MK0Hk zeoQb|@&r1OFx7;5RA*;V;iEejg$dY+Az?UajsebPH2@`PFWg~9XRiZSmATsh(|7w%+c#SJ$Bcz7hD>?7niva17hlP1U@f}g3rHk z4iy>rUS8Zavz}*2+@{TE0Gu91xUI`}T*EYc-)}z`t9ISu`-v%NdA~^eoLH;xNU03A0NXTuw z%nt(H79&F9$eTl>B8=D)5&R6V$@Rg%e?1pTCL zl+|0q_8|acj8vcZXUm5@^vUA|Rkpw}wq<3|X231mwIl^Uy)%so#chvnwR^KDC&kzU z8PRpn%Io1JttwaxR zrCR&Tsf3hfO<1+RQny__(=d>;P^=Q#HHV6{3$9TulLm)g5?xhK9 zLwJ(^e2)JSd_j`K{;8A*8>H#ua;~-ra^U^)gfe?k~Pk*2FP(=xY`}q1^jQCz_Igi*oe1b%e zEOx=HZy+k8e`n~N1NIew`wPM5de^oxvR|LZ;avphUqR-7h2)IKnQuXmEbUA0kaGzX z@=kNlLv#-2q|n^0+-53K+I~hYopRg>KM+yMtRbWHF7pM-=xiW#8-tfh=5QIAWvF@i zb&3vB%x#dEH%846o5zL^g0F4{`0{aM;mKB56H*_+LztgVj}2>$MVz4Y=T-u^o1OO` zBBr0b0%kRO;>&gCDzJA%Yr%TgF*|Y`cmF+H4M3{y^x%Y*P-b_cjbW?WT|HhzUn5Wr zS*(jP@ye7A~)9Y{Er0(gZCe%^XzxLO1*=D?cetGi|J2V#1!d-1+Mnh+pDkLKW;_Lj3};nx(S3js~rzIEL(W)`mK8D_wmn9AuLQrU6n z*KZzIztOF3<`GC;Y#mgrGm>2Bhzx};AK7j{z`4_A@98h|k{-Pw*$DD@gKNXSJp^2^ z=EsfHXll&agR}m5uMVnxJjb3jf22#oX)ilGoPITZ909gsRY=x+*nZRl6i2}=Yl}=C zT^)?L4gzqzkQBbrehxe?(A$vOS*g}%@}Yx4hdd=^LR&7??tk&f=!yxAgGj*Ar$9H` z21)FcI>>`Gc?uLP~_%r895%rTT`XAVV^% zQwA@o#)QYsNQOX(5*&xIFvQbUtvz{k!TZE&fSuN;{HCHHBa6!S0-2r@J3@r!FiD%X zG}pWnC$pV57So@eO|hICYC-2Uy%dO_Ado@Ohi}*lBp7;MMZuiUT6pXU@#ycm|LAK#pyL;~=(g$Kd+eeVg6d8&r;)i?plo1eFgAZdxNZ<% z;k-h37W;nyR6(o0VHo0MX~7@we>kTz;0ANXd2g-$R}gXpWFZj>WdvQbfIt|vik;Xi z#v1{}55b1OV$^@r$Yr(z-FMP{mKF-oL?H{Re<_^Y*BOUN94rgCf8%t!Gk6Gm!-j!u zG)SjS=cwuS7!AjEbRL~j2k#sIAkV0O8supB=O>bmJ~1v_Lxx~G@B0&@JqI7uDIy8) zZ0WPc^jf;5V)Q59w?EKfqLNq04b_jJVLxKQpK_?z5uxVf( zkcTurR5|E~vvvya4xodiqs%KGpoQ8K-x5NdJ?%hFuNe4k>!Pcp3X5p&*SFd=&&3;T z28f|AC00Da?^_=2Yo0%8kZsRHmu;-uJXDS~wW$!44$ceL_y_u5(E0bf?K949Scfwp zR5llW9D-Z+P(6g6xyE^;5PctAbeEaE@#@<5b$mJLD{hu3xZffdmbOg~ z=Ep^zH2GeAQd(S11#&!xJa1G1k0Pg>auG5h;6K0ZGy-G;Ck?rAMx7x^8Cpdz$pjp7 zvtC|d-aR4zvRKW!$>L2RB!9|)wvxr`U4f!}C6IUO!k1^Q0Pz!$m09UQOLwMJt3jSZ z{7^&&q%9Qyr5%h(9hCi6^-S4fW!#yu1J4Y&HTP)zo8NnkC9H@{gH8)WdW=q(qPKM< zJp9}&yDR`Be#VR$wRdEojNX4(?!5SW4djBRYv(j{$_lz7aO;o;B&A&eBcH2)qO9q> zTt|-_A5}U-2&D(0ff_GCkWygl!t0PxsAMQ(RA4a3Xm;PzJ5oduvM6}H6Tv%r`8ERx zLCm$R5O(vU&iS~lo9!BDAGOXqq@elJ`YE?Y{S)4?W!P_WjgRaygVE`Vo{v;#K!&qQ zBdH+9KS1ruof(peCLAT`0;MHntN^zhfP3;U9_h}Yz2$WXgz8=GRZamp0`h=*;<&ax ztFEc5KR{X`g-6dZnB0+f+JURc!cXAYDFdx?eD0FI=75nEnUKc`AW)vI3x8!c4nEtS z93dc2MvkbI7aGGKu1upmF716D0cmvw@2kGudm;3U`X`XL(u$J@_h`X1h!41)d(el? zyoFbq8*h5t%v!MA9Dnd6`XiC?wSre8(?F=X)Lk>`FpuM_)hIH0 z9RhVg8JfvcX;6Aupug!Vhd@kz7wL<#mI{<<|A6<)Iw##Sh5Fo`9XsS{0&E&s1TKk5<4aVApWKJ!$wr+55ugnRW+xcL#oU z73Q0~22cp(0kFn3l%L$tZv8-pxPo@ra15QpMZS^bkdiXbg5 zo416Xd1;Ua(owmy;^RH>(0S9pWd8Z%pEUpY-gnyl1PCs4nt-4_BL?aWUfJuMFPdcw zrvzoR3w~FelBF(OT81#;k#**zLDjusazJfe>H6h^_TnS)UWo6?qM31JLVZjM#DmR7 z(KyvkL&)NRynyyY&G)PSWuq0e!ibukgh^Y*RG;h^$ZGek1~M({6oI@*lgX_D@+OUs zC3DpGvG^pd&_ijBX z9XIVP5Eo(a;LqC*SjM(%XuC#%z!8GLRo?0FXAYTeW>5K?6|gdTguF_lp!~QXU!nZe zU>!k8aF6IC$hdco=!+TrX+ZgH7ApL}2wA=J2#9|Bo>R~JMWFW;XD2kdjij}Ab+{qG zCuv6zb{9w?@;glGH;Xp356bAa3F}};;>t206}R7>0Kef(6b}LDKnNXaMBBOkv5n?} zq+Jc#r%zp5V#@kA=RIrAIHY%a8%rQ#-EHT79aw%|xX~;fJi8_@vLHSo&PMqm%J)@J z|Du6U)3OkcKvS2lE`6l@xxb%$&_H`6VaO>U=z9SgP)DK#5G}+5{x>fC_6p5qgyrFB zlv}c0|yQyQ*x+3;38cWAYHW#F4D6)IrEYj30_P z@Uk|cE$d_~`(3l;#Eym?a+v@-^5>tLzbyC2Jq;{0{e{M!Hf2O71o-<52si?mVGue= zK`%Hs!$uWmi1B%l~}ue(Qe| zn})1SWg$?^`nqyV_}Py{F-Oij9K&2)QQARRDM-2)Y+{B9M?Y7F>h@W=N7YXLJI+U@;&v4ToO;IPJLMg)GpK7s0-0~!2I}<1VDUR5@cm! zk~g=%h=K3Mz4Ji3?1l0u@6gtF7%E;Mx!mZKY2pYiiD(JbPo>CN@m^WJ3xT+hC57Tl z>Z95D@B#1sY0kH6JernXvz7|r1n`dxR9h{Y2E0n!Tim~L5=S1W&6WY*mHoC^KsL$2 z*-X%ep+nlzr)Gn6($a#y&?_WIn}rxZ#QOaZvX%;1lx@$+cV%RN`WMRP>kd0RcGx`w zFz~;3@pn@l0u>|tlhyyiV9CKN%U76Lw>)T;t*q=+>>KTQ7=!!}*rR}r0@-VTJpvZ3 zpJ)E_@-O5*QV>S~2A~?dm{Zq^(i}GSQP?o9$)|!C+YM<@{E8P~Bq%>w-vb(<9}o9{ z@0F)D{g)PQ=&qrSqQE_#K-c&eq_lGk+{B67rZ)3TfiHRnx|e;if(t`Jieo4vW7 z@>El%18J5;OhLDNlo%{-{pA6ML3iFD)yhWfUY2h^XODDZ>p5OCXjsO=X~G@&U$PSPT>6}ahBcG8A6wEHYY z&!s&;`Nkn&UR!0Zf9@$e5(Euod{c+ifnS%tta9PkgZjk~dOfhtJUeB#3^`ZNZ}#0J z{Vaz7-*JM#tLCrGz`@IEdxpf?JMqG&0RBDUE#+nfxKLk{$9d5Zkg?T`XVW0QE6Q_e zD7yZav_s#hP5W)DES|q-ouxZ8Pitq*pbax@Mkn&jKQd6|@%#EbfM1I^1IpH2TKnuu z6yc$wpk64W+gEfIVrfdYN(XK>NHdgn(e{5`%Bcb%)}FJ#cV%P|eUHl2)wJB+*kPRk zjf}<%98Y-Zg}*chZa&%Uwx-Pn91OspO^}B%NQ(^uwch~uMK%mvee=`i^-*K2;3ZU) zz~1&Ag^VlHb5N%EjVnTkyb&<2i!i@BNaB*gmpSSmfgcysbWkAOc>K8XG<1}ISK;A) z!|OB6A$=E{w+)|OS6&34JL)gPWl3A*h^LrPjCNQ_Irxt9NZAuK>QBDRlO6W#e*#LA z?O^2qa1DLW=#PPV4ApzB(@*&pP-pHGMe4;j;#8lan`oy_O{2s?{t79E5obV1F>Vy( zX^%hNo69MZ7nE5>iVv5Uih#1WqWsMQW$wLvFI(=kb}0TSqEslZm{UM}hl9c0jbC!e z=YO7a^2bYaH`wX_;!oNHQ?OZf<14l}1c-;U*aaNropSV<&<=_i;aR5& zSOnU09+dfp`a}=l+Fcx3U4kc{@rQzI0C?g#P&qMX@t!+SQG?0yfkGgrflmwMiJ>e@9sIaX8ey^ zQ!#!y_us}VLqDg%p9bnSlpovab3#ByyuNaPl8WLgK7nqmvmUy98{I@Z5K0@=30FT4 zo-@Fo3f&SU>BTz1q6l?tAmm6XgYGsY&mFdPkjNf@lgYi92Snk=}$= z#;jks&~)^;&pg;>%!y+@Zp(s^6B`lAtGv?oweDVR*X@HT6KTO0n&l;A_0^V_5}Jh^ z0>~R?1*}|kWGxQz%M7&52_L7m@d=MsW-GwAX?;>rG%KD|L>#^@(s-;4^6;(?-YsJY z6ajq25ra4xSM-aQ+wY6>LdycqJZNh5NoPnd#GF=XK-O~fW!}7zP8m6r*2Z>LAX~~f za2o;jOxPyJx79ncDX&Z|0?HWTi6SHUn!%Um5GdQ8dB2EbLQws^(RjDV)&$l29Ue^i z_eb)QE=+h zbCH(+7*uZJM)At3hcdYM`I%;UkLh-F4+Y5`)dmPMFlX+CX7ZuiHs&gVP`oZ`<#IMl zYJXs%Ir*TI%pF^kX9<1MzHcUCb=>|yhnaD7I-l?@yQ`xdz<TI zn}$(GKEHa;Fl^FB$r?hFj}nZb*<}zPH^aHm2qY&$JXWJ|0`l9;yuzD+jrbTbKCw81RzYvj{K-gXzO7xl$% zIb2=>dCM95F80039;3Iu6TgP|wh=TtzD@|q{%#0YjtTG!XtXT}#K(rB&kn9{S3Zi; z1mg(!%L06e|I5%EK4p{SBHzW@TL^jES62Y1Wh?dzNCR~x{cC4Nh|Zz5mxfRu5JJ&- zL78vF=UhRvgQ$%1P=^eDrJh>m2uK0-kk$5m6n(!DhRXNvJbcBbPL2S;dv1HA48%2U z+IgLhFd{zNW)^O=ZA2lBe@LJ20QpzGTSZ6O4*^FWY0EiK7UY?LJbhs99kp^&ZsHfx zoXIhWp5hxIUI&tA)E|xj-j#B`*XZg#Dh}8UI}7585G40pdP?3Q`+(lb0^bqz9iWWv z_bzQz?hs#)7k#HV#kX$!jlj=qOQ60p1@Kw3P$n*T(g*w!;b=h6$WO5J!+VClh(88hru7z82HCy7^qX(U{kRs!6{fA&9q%6#+kADfMbk2foJ zf0GS!UVF)WI9Q|s!cfF}7ZI}I=m?zDH&nXuO_ z57qXR0MJTw7QG05o~ToIiddOEOChsUuBca^Z>#$V$OvmGBF+fvAvSd_hO{LHt(wvg zE#RfDUN)c(F0F24#B_`sQ+Rrv5Akj+O{NmEWZOY3l&m7TYwJ;yc6OJ(v%FP?K3@i;QVYF zc9I(&-17KkAWl9M&<`r1C z!LwU`bG@1N=9A5sk$Y92rh{}5{9;W0_YJ}4dfb=l1>+l( z;7S}7Z=M_+Jd>lN8IXegKQAYZH|a2C{9|Ox_?Lpr{a%wkP*WliQV0?{f69|709=C~ zB?ahzIa`vzv3v^SMh~tjOXQ7w(Xq!AM6Jo=9oMj?Ohr54G>E_8CmB6Jv}WD({s--8 z@6%}IuOak}kuu5y^Z=F~)NR0twdu9T?X_7QO%TlFNKr&pH)=C!^#nqKz7eA!7-K~{^boT66!1F^0eJhOXTM=Sv3F%1E2n(?`o?y1$cSZj&klk2{SKOZ z(=N$3yzTQhO2)j$mYZQ)_vj?&LhlndA>1zLAxu%>bqEmraVdjD7xBoNl~4C+Ix_@>qK@$Po~83e=o30r=1L zKi|A}dVljm|H?iBMZqzJ>=iKdo&QvQk}fMKhZJwp4viF&k5)JYkpJ+t-xo9ukv>3Z zhWrr3uVvupA#cBs2gE^q>)R4NY_yPfjj_B<5nn&lRU*E&$Qb-sL^EJ!pb#( zX4O#?Irj=sy~TK0b>1C7`yjLuS$yQSO#ynVJ?25#`efuETy)Sj#f`Y`9`}IRxNugd zx}kmWJ9*Y`%D3C5f#`h7v;)mkJu40^7rY;vE{j|wz(e9Aw;rh<)(dB$kv0*VnoFF> zP?g`UBg!k;0%CGR?YRhz-8v`zSlP4`fVj1!BGeZ39-t5VU5{<=1Fa>+DIgG!`mPXE z?iko7!tJN>z)kb#H|Fmj^Uxk1BtP^s@M6)t#X!9D1F#b^w2cr#%bI|@ET9aUS&lrQ?y}kzNNby23F(yG0jiUb4D3pXe#oU5zm`EBzDPsf zr2<8D5~1ifl&8@$?P%C3X9j>YkIt~RA@&Httl0rHVApX#L-swM{O^t)&6@MDd3JO^ zd!L3UXU;aC{m@4(!{On@n@XO!N9dAw;^dm($`HlmXD4lEA6a?Ecp5HM=nEo z%|a(nuUqdpWfGb+%hMc0#*Bavs6({@AAX&?=*kg$Kzgl8Q#_c3813?S;l%36g zp?zv+f1b^GdZU>-M$bV!#BkZbI>L-iuQM%IJaof8;s+Kh}p*rD;k&iT~W00+Y6kt*av!&?Ux)>Zb`V zkA(VlAAHNKfLG05n-ktr*#L0(1Nk;OB>uL29!ae;_>cYx!;x#VW(W|6Th^u_(C_+y zc1@e6oz#bTp$Np=?zdUAE&}4B-EiD!Y^F}A?#nC-@PTY#Miuh244!^^X5Fl-Jc#Kg zAWu8$D&RaienkCprR@#sZF|>`Xa}vkWhj2v6Ph(Ez{RXN57{euB@V7J zMFx-_p`w)5k0zgb`dc%cbsf-CiIM&B}+%gE6?gTomH@qI|8k>b9$g zhg3%U`TvYVw#CJ$@q4CUXKo$0)y$py4VzyAr(d$>$n1tzfjp=`K<+{Zb~pz`_^38Zz?or2nTUg{FGGrg`a;fAS81TGG*ckd zcf51c@#co!_tec4aFI4z>h{wBy2B%S9+L|^4}E)Q0Xa(jrSS;yX%xTNGXwzfHy!H7 zQy`~KqbNHf2wa{9u8e3DHm*b;0?fb*(O7&2+}Qw)I0Bl1GW~W}&qgQ<$&l`fX7OKH zs4v^R&!^3T%WqAUO?lwkMrGQoztL|DjmUx`kWN!Xx7m@g)6NV4p|wjiLOS=eK6`?B z__>+p%4>gCH$&h@w_Rw~4_a zQJ}*muNnynA#L;zq>aL1yd1HzLX%Z@Ur{?_8ahD}(L=ltizg3ABlLa8A09R1rer%t z+;WCSD@4~KsL`c53&6#OJ1#bTjy%2kUkkvjfD@-w|0xIPBHH-tzyX~heB6kKycvL2 z@L|?E^fX9zq;+DHSL^JH!i~QupGzs$3?0dt{S%q8*M`n~&;O)%km+TH^&4xak+Zi5 z&t2K;=L!A~wRdI*1ZM~&b)F?3T#zp5kq0*8V>7|ny5X#m7q`9pGRXZc1b!ng?mJ3L zvjwx8pAm9+d zu+pr7kkJl!?zeXVdc%WUd53p>`QXk9Q2f;A0Y|;R_H7Jqo+wuu9f$`WBs6;u0U;~D zg~03p`h%2N0?@lzvja-UlhmQBSI|~Mx?vd**OC`IY`cN3F}V#*Uw*0a*#ItRS7rCV z03ENJ!ZQQXbfjj~=NkpoA+jN@KDz>>jblBu|4R{s%20F!pN)R=?wdi}MdRn)B6gB= zie|}*?v9<>8Q?cGh>NnwMtVGFb^u|~`gvykpk=nxo_^X5p(BL zNk^Pu+_1rg8-@>*1Suj+A3JgDVslJKML;n1AEN<5fnv$kHjYFQ*kizY(|5l;&Eg+C zZtoXA+1u=~erd&EL`fhd_rvy{T>GB}Nq%t zq6hbUC;k~Yc$uvSOOtBd<;_PHNQ-!V*fa_*69@|U(xzk+FDP1G;(m0|U1r}&`vv(k4QeB5w|WLJ ze0Zkz=f+K5*DqXXcW*C* z!;@y*$UdEn0rHwv&u)A7+rIlhb))k7WsO0OK=D&-Dl@;4cfy_{-(waHUTPg2jr1u3 zWpEWLXeb$vp|AT`UD01K(#N|jhtr8UzEj|o>D&5Z7a`}L3utd=swA}MJ%XG91oQ$% zQBj%&)nkaqT=;2=4l$!qe29#0g+oAPZCadi@Oyni9g?&f)lV#vc*?{P(ks&Vp(wUI zHKG=u=#Wx8|1MRA;GXS1N#|!ab8hrT#(wuF(5C?VU%f{^mWZ8;2 z3(VFTfc1HNOP#pN z9M6gx5@`r^xS-6Q0in*`{XH*gLex1{N~4YzY06-uXp$p9N{fOJGeWjEpj~B}cD^GB z;b$BHq0v!+_?Q7vq`Wdhaf0CpDB@jL8;0LBRavq}jsaJR&=s0saFJIW0q#50%N{qh zo7c?I_J157u2JcNbbNk~DjiAtFWNT96M5^o|4YH624hB_3%9-dZC`SUX9UTkG9Vx1 zP3@K|ajTx;3Em+OI5;G)8#UyJPY!q=F3n<&3cd5dV|SRIlU}m_yF4hTz<>Vo1~Yff zbG4ZQ0NSKE#%l0rFB$RtJ?qTox!)b<kGOgs5e&^*`DA8A87f^_kV1c;1$gm{8-nfyf&8y*X2A_ zz#@sis9fRwBHtjxsgq{Oitdb^)){d9Pj9h~0F3yt0}eD3_d3Mvwx-Se;1}Pszx#Uz z#E7jpLXbm%^)i!BoK*XM+T_E{k1xI?=n#-2fLQ@*Y&O|_DRAd6 zeqzp_7N1HjW#xR3iu5!4CLD&1>FYKAh{5K3$u7(+;D zdExS}nI8MRr*nOG6Hvb)1IY*c4YFng6q)u-oN@vXuj&Xs$fK0QYd|Ca{7)Ow|9~|7 z_V)7K?KVv}uW~LbPrFY(!R)r`d$vql2On$CuXm@D3#8+=2O%{2z&m9OB2brF$?zhX~6pt@c0pF;P71CxTsP1D9 z0XIJQvDpp*8&48n(;NahmJ5_N=yeWFZhi4u%)ykTX z3~Cg#(PQUJmzUvV1iA}@2`oDi~ zrVM;b^+_0tkEI2CW8+yq#Jv5T$C#mOHk(_2bG=;>pdd#;5kwsU4m!q7F+Cn?H#7FH z7*0|oF#Zwvug|@zqF5|hXeRX7-5UOk^7h(eOvRW3GW2s8{6+9wkNd2mjKYqfP(3Mp zeQl*fQ-`^7)i>-;;$U#7DGWrK4=`+gDeW-EsZs@s%r;NEuA@$v?4nLTOghm~M z2Iq?3&4)kQRyL0{W56-|YwvrqaEeAT~>YvSDnc8IAC2-q`@O zAsKM46Tn4UN3XUJTM{6Uj+!`5mcat3U*7bUa16om6EdOw6C&1$xW#=~>0nqvDPn>C=;V4i&;RKLV;Hh4Va*s4YbJys` zm}jp5HfEGzPd?za5L}*d^BV(oPnlypLVV)eRyhQSH`F!?BZot{5r>?lA! zQn%Z?PT>h;6a9tyvAjUm`+Y|d&>si;X_mR>Kfh-K_eC86HKaHK1RMq!|LcD6 zDeI}ea`dFV6i(7F2d|)~@^rbKXq@?*W%)q8oq)6&iNl>0E|M2)wJfePGweu=_mH9YJ0RF5uOy(c`?10OF!O0kxkrgm(3{vw9L} z_KDgH|LYlW+ba1}9tk{09t&=J^z+2~tmS4lfq<;h8gmz+cCTr?LfLlg=9xTcM}M~* zX;8iUyE6O#mw{F4s%;kjN#g~6mt5mJ7h2ktC7a7aCkbd|&!u0;u;#s=9QU$0vg1?c zU*5D&-TTz%CyzbN2Al$Up)=w6UTNx{I`s1)x|M}!(MhIO;kKDpoH791G)e>gA)_CN zE)6Vzkj%*oKYiqiD_a_Y_(1Yx+O+fP+7ETyY`QfAejCpNS0;tp<@N&YU$SFI1@%e& zHj6JCf!mM4-+5%6-#`0(a3176RRENcDOQGfCyb<_;s|KGAMWnh>6`(~3P^JVxR3!4 zAhs*mXpHk8T~Pfm8#oRwUwTJyr&t^VgtD-+0&?Qi7dM&Rj{lsQarC%~;oo9|KL!Z_ z8Xlb>MuOV_-DCe$?+6mYZjVl}?;?EEVG|^bxR=o3TYaZzX~?7aq$%*Oq2L?ZQY51+EZRgIluV%ila~MntMX1y{Y}W z`SbILJXZTx8DmNkzlDw&bd5^#;VS^h>X720Bi@RFx*N4}s;v)|M@odxQ>t^7NA;f9 zd5{OxEg&yhP5>9GOWudi+_nO}Mf1EyS>7`F^3+xALv$CYJDdVBLjZ>W$m;1CUMdF!C%U>#|U0mPX#0T!Q+eBFHn~D7+CI0bqx5 z2C$J|W%_?5gpj5%_`qR6obETeFVh(R_r6;SF)^nCIzf~e8eptLr0x{}@6rg>VY~EbR8VG({G~O1*WeE+*R4>}EDF#xt$YnD zB=Z(_R*Ko}znN&_J^@9Q7Pr&u&ft7t_|#Q4UATr|474@X4`nXXuHbjtdE3^RHs~1$ z@fv9|+91OxmOt{M_AhWBQ{H)(xI^_JCGit`SLBg9T7k?C%?>CF^2oX4$U!$R;;F|k zUy)kpuI!;a{_j~JP3o3w8tv2I=7F|OP+3Gb6flsbP*H|F?I|t4&}-@7$_P~mq#=+W zLMY9=P66n1#vzq@=bpII40WLNipm>-vb*){1D;g7YL!EPG;rFNju)Aoqc6zfnJhGF z^ttKh;ms@{KlVu4>7*_7dqhD~*Vxvqsb&IMQwGuzS}}8Qd!SLC>aK8Q+xCJlm-Dn4 zUnUm;&NRPIZZ@m~A*WMOeQ2h^ z-{?E{9-MLBspdzwr7Ho#{)g=woE6{#2f)eS{E6xDR~ML*zg4-iA3zbuKz9WS1f3m* z0ZKQDg@Ql>d|>V!HF}{qxwKP2*zm3tKnWkN`VN#;ycqc_3(A?MEM++wN~6Gti^>=B z`ZuCLT7@_?V&CLZ{H{P~l+OqJRhGwE4cZBvG{H9@vJ7oNI|8&RSLPLgc!@TSf==g( zBhYX60%>a6A@%R)PqIKDU+(`vM!yf<#Zf?!#z8iW!k5hm$ zQr2gulrt8~(w2JOo(=)UTiS4?FKF@XfM)QUi;z6Y3wJg^$We*0EqXShcZ5(@Zi7bh zLb|TQuseV@zcYfm?yh=BTE5g4)JNn6_MSWN%Y7b@1~OsRoQKTW|M)5M&7c3shBWxI z10I}zmkk$R|F!CqZHNs*>`dtP8wk3``nlkLP6uG~zN3ykyiPEF@8a)vdfx{|KAZmO zD8bMMV*JKZ0Zt=`p%Txj=0m4f6pR>jEMUjkpRp$ZD7eQ1YV$vVj-E|}#tj>6+JA6S z<(m{-kaXmJ94^R%@ej1cFBKrMHGtD7=7n^qvA6whZh7OiGC9nyWHuGcS z4xLlZh8$e|dKW^we(F2G)lVnSCLdXw`H%+jhVsRC{53d-MxWU1^4F=uz2t(%&d5$L3Lm(4<)b(9qvB5GCK=fG-AkDGxt&B|>}&jVlK5 ztP0Ijjt*3NL0*RVJ1=Pe7$@)<_wXE>em=kIN-GoG&3Q<3&78Zic%ah+0 zxR14SZC(U@*(fix*&_K>UXd*ri>u8%vo`5V{7s9ph)DyYUOdu8%fC`NwD_yrv$pgnJu5KF>+>|MASwgZ3P(N}8Lof9Q z(2aY3cX>hS=v|b(YoGsy&6~azLNoc4o_J^I@{Q)M#rK&5roO-WMmpI1i|<9-GMj-> z4{o300-lr%Z^fp9!1fPGoTd5-`hkr803LxZg*N?iz;}f=4RgS^?)POj>BI@JboC1B z1W;U(KQ5r5Ht{VhPtq{|#m#m@7{Y@*(irwF2=DhZj4IJ|h zLd&#iv)CAGmu)uh_@@KS^|O9%79Dtvx#7y&YYu^<_OBe-PT88dnQwPQw{`}=9LEpa zwj*l@x88e$J=RY~eI5fI&|!}qa8Ql7F+vY(8_42a?f7nnOfd%pGP`yDvxkN?6&rv0SzD{)kv5Tr@G zXj>jop*D0;z?Xt zoxb8#I_j(xcEWKRl6oBHklz*T0{r1zUY z{_ZU67?8{s?Xu#G86>gx2Cax&jsn2{zVnawIC%i$li<_X2Q;|ig*(i&>E~Hm!kcaL zuQLDfrsjTsLZi+A_^gOCfbtR2^rP*8taiPlL-oGB z0iXDeO367F31Ki8JUb=vQY=+@2vmIh>v@bf#y zy2~gS@M*IH?s@qd^O4WLua2-WMIYw^aXpVoQfDj%2K z`-nBfQ;`_x3vapB%s6UFO|f=y_TC4Xe$U=*4fwhl0zbIG%vjrDE8L?rRx93b8Er*(ETpa^JmfX;(alGDcYGQA$C9NUKjU|7GgL8G4#0-a{wQ31cx z&I31nf|OCNt`U*dDW^7iPw^sNS2&g$QE`A$0hCvZsxu&uGNE@uoqV3}eIWer@4wg_ zurV+z0Hv=<#=AumK%QhUrz%6<4Il1%@V*prza9974l)KM zpIHK~j4IMz$P>^k0LsT^d}+=AK%V&q9+Oi*{1z&s%9R#pBXH|5FUSwTA%J6Geo}uU zN3!org}zyFhMYE8Aa1)1AgL#4mFBF2z69QnIR#|QAN1UBY+i1>>2Y)5AtNjKO47*U zg;@GLz@0^; zc=$dR4}A~k`WKNWdC;gc0OXY;(xpJGoox^7%(DVQfXB+n=w<* z!z;^I)CQ`%J9=zQP`&SVU|)bdCj(&If9_kKsQ$MNVlo$@k$fp}c@$GYYsK<_y#ewZ z4TxdC^^(r-(ZJgFdBiIFjPf(RUpQ&fxYVisCtuNS+9#$jF93H8O5z-q#FZ%fe}C^r zyMfY#M`+mF)`n3(G;Gkw8ZCr(-c5k4;?~6VU{d&ge&agxp?AdBgTfPO{D2`5a@sTl zo%pe8aQg;X2<|&t_bQahGeRHyuE$Js*6d>{r&G9SmNS4E0e;*iAsV}IjpasBMqZQ! zX)&_ymq!qNnpHL*KF?+GAo*eaH%9Qot2df;lOL(Ib(IB~Qnc>;_UQlbBJDR9etYmo z`~b3wJqAMM%_p)= z|2GqUTgiotzM&bqL?dwZkWioDA|x9GS4YW;r&K+r00)ycyDS1XAHJRtgIl&{$%sZ# zM3>x|04+coueBO!GF$mm-gQ6Olj z8wCU}4Z6|JyNDOJ*@}XM=ib$;=0tQ5d#9fMR?9cY4b_!oN>TXjF{^!s;MW7?ursKt2+4F5O*Tf9@#rI~JjgG;4IO=$ z2AlwIT6B@Uf7SeTQ~5UwW$HGBeb1@%wTlm%R@)#j#EU!&l`n7m;yvgjqd-Px8r=8A zpU{%_0^|h8NYaLb^B%uBx@lkDyux!24XNjstZ%8CP`$Y)+kjSWDhMP43dfB@AOhM( zBgX{B+GJk1dPq#hqU%ZD%cJwf;t|UB!7&VK!U%od69wF|HA_b9LODPS!uF&Aaw(=? zD1Ycl})%T?FManU&OBM zYIIv?K-Pv4F7Udffw=O-CkBS#F`}~raZyJ=k)r`!(1=h|&LCRC3uu4Dj@Yf$Z^U;J&1pS>d6IVO>19ibwPS% zL7kIt*8wl!6gYkBv*zN!DFj7ifedRQ4}Dc{KK!^^?GPvwcMh43L0-0hFEXeQg0F}8 zG9zs^Kn%p;$K#@rUHn66hMoa$rJ=jZ9h^bU(n)tzG}@;&3gjj7JJz?!soE?$u@p;f zjBv={L#n@IW7?rd)O}kN)ODJiXNE)COm=?rXR3E6bnBx9vy6O@_vk+tS&RU|Lmf1o zLud!$X5oT&)lcWg7=;0)(7RBl;wnBaqm%Cw;J!;L8YE|f-DNO|%3JIlaf1df>w z=S}}o?h#3ixFI|F9(f+30fwiX6x3r3d5p&H4tRhvLWiJ?sX|I*2$WxS0YB*82Xx9q zD~>KC4mLmJeRwuT2Moh2Pd&|ibKbMHqY2BRqxuROc?X2d^_q0f8W zb#_3v-awGie0GtHoeZGe{AbLVQD|d_&`zka@AV#zfZ5MKW6nINe!3^?LuTFbpt(E>WrnpKwm?U6n6Z&Svpi8uHX}8mN1hhly|Wi1D@h zLY}bMAP_Aiv;1#;xaCjFCv+lU;FD&o|Io&N!T$ zT2yL~KyA(CEy zdR`j*&C#HpPd5QM^F*SzPMlai&n}v=fgp0ql~pcii~b260`=91jM#W-Os zu$}(Tae`^UVep-IeWR{!Mh)A?T=Kn3Yo`drfYXT$1o@Uc1L<9~59#ox1JdQSnL1N=tnxu0C11>li~nj@*r*0A%?~GtTX3~I=T8^#lxfZAzCBC zHMTb7j(pi{Pr)1cb#+IfiPx70D)-BGx7X6;o!FY)?LG3=DyY6(0LMT$zdnE# z)CKiI{in?uaFM4Cpv-9$(dRvQ7rCzV_@5adyq{-g!S1gfZaTB}jSt6yf+APcT{JciIL5`nX$iQ}+|+hz{%uC9%Y%GB{= zftdkHGvw*dbL1g{-1qDPJNog!iq50>jm`{c(yV~kC|Xy8JjD1V4alQ3!v+I#>)>N+ z@}N;*ATUBTZN)4zsX9uEPV>V5-j}1$UVJcg!?sawuJF{b6K2$85q0OwvYL!72%qO9H$({A1~VZYi;fuhR^;Wy$4wL8fZzr5r(G!o~>)yf$Hg+M=% z(pQv~1>&Ky-vj8yk)o4_A7*-Y3@FT3{>%XQK27c{?myPF%`bkGW(XaxC;D-NGXp?u zWJZB01we`iJy>LmHv8*)e)E-=0d+uK5>%$pPAt93;~<~%T_Kn zpZwYf&E!dOCmp8*tb68pdxRiI2?Cq|hYc8RzVr8AGVeR}bo&gbeZ#x&dB^$o=)fDU zyuEIQ08W6t*B@*C?IV|%$)hU{1NH5rRvsOc5wAU+Przcs`m@Ko19k{!0AN~$oC4g( zrdiMsP(-qn8UMGm_uVsPVS+pFY&Tg`LSSeZ8>fYfBl?drAAkFi=A(nBn)9bmF&{Yi zP@6VNJ|j~{Pwj7duDZ|cKKaDd{3Faayq?_&q8RkpYg}bo-!Fb*49@D-;J(i8)}b30YNJD|sGYh({T}Sxb0~!V6mp@W@FYUkSLVt(1Dd>Ppj*E&helU}&L&F^39)yGW62G- zCGy~eRA)h6!0%cTz*N;)L#NkxCd3;UV(=1Pf0v)g*E2V)HX|nYi%ug=1MRqMd#0}3 zdgU5ZN<;PU(uDx;Aanh5z?q83lwnu?XUPj0kk>u`4fAx5M5b01R_YF(T#;1Ontn^o z>R&x+hD@#~1b!a%e<<&1C~F{xkmdx<1ONNj^wm9RBk5yt0+ewI5JwtssjM!I zsTUM!-yr}GyN+M3Jac)w*~n@awvTZ7u@K72gGQDLKqIhV!_791G7dQ3835ASu4of8 z!1IDSC!J;7XrWQx6pfZ6s{sD zuuni1(E&3V*zbUbK>P$L^f00FNgywbOfgzFVZ@l!PJ&K=5xhK|ARQ0W1sVBg27sLf zFln6m$zN2Q0MBpvy*Ylw2TFCqje<0bC;)W2p^mo^WGP5lJQVt#jumGPG^YMJ2UzhC z@+jJ!(ySWXS^3rPAw?tWTM$x&fvxv7i3Z~v{uv5hD#|z!JorirM#JW$?6GomC7_>Z z9^)TZ2D#ulP5{=Ix1BI4`h5`~HvoDt)KqC%{qV3-W z_2JfCtd8CHly`S;1A#J92ji3axVz_ATQA6d-xqh)Nz^y^{K>9 zeo)4Te#SD7WF=oawlgxo_ z?=gq&+1pG$>|ORfAEY~U)&6#N0BuI`ufjUYv*o5EXBR__OYr zqd@s-`Oxpaq9F%T3|XV;FF$g(88+p_>VF=J8uiQyI5B%u%RKNqI?Byd_U;1FJOp^a zH%isH_FQ$pHMZU9yedjMUf9f&H z{_f^UW$}3bwT;57iOfXE<*VUJ!>X310mX{ z(obZ}BrD_W=lvp11lluBK6l+Q-%7U#@oySJd4?}z?ML+wtz;~f0rBj$pat5?_{Ll%`bkt^d8-sq$Nhp5jXd(m=S%5YRhz<0WV0Jxh_} z_tDEcZ(f$=^vF_#UtTiT4BLBh^*;w?mI=&T*pwv#v}tz)62;0dcXt9b#(5z+yT+b6 zSPbnUgCDXpOUf#VF5J<7-zngNx?@u^j9B2NO}^y-@bkSrLHm%BLvWRNw?36`+nzE& z8=!6$ytvrPVvsgFfO?Z6P2hX3?no_=%#z{x!)N}+oIK)0^UA^zHji%J>e_z;P+f@c zVlpg*y!91AD4ke*E}!uo^+a$-;9a=Jhw56$a%j2;)kofM0kaqUe8LaN*-)QS#3_KB zj>QuLWnrcXdkyKdico&IA_KDek+QIHCh0}vr>~$-i}V?)Q=jfx$U8`&WdXrW0+W2B z8x8L_rV#IkoB@0<+2q5mf8Pi%0^%s^4DfkN`AE}sLTE%zltEFx*o6ujp^^AlI%<|v zU7)R9as6-1v!nY}pLB*C0@EfRUN;yE+=Tx2C$g`rbRk4D>g@{!QP$x4Ubv zb55PA!o|MH+7f-}t@%#yt4Ay6tDdtErRlLE9ag zF!ErBcif{lseg{RRGragsw!Fgu0H-bp4Fwx)ILX~3nh(om_dL}VA1OE&d+r(LJL&a z0)alzi4rcmGY!J`cfOb%a}ZITqs$i#B1#blXO} zo%_UVYTfD*9Y&sGhlg{ng@v;acqT`n3=?HQPQ^K{hd`Jt1g1AY&>#=*!>G`&^AWnO z^DX~DVKw_F6G?ymQ%1weY8X5tUt@rs_t|iy+Os&%qh1%%R>UD6BT+&wv|Xk_H3-VT z$@0y{Wd-`9Y3$~+}qif03 z0Wk((2;k^{abtbm1f#&x4vW?3r`}MMjb9@gVz z)q4JcI=qB|Yw1Pq56THwF%TUY0|k00;SgP!@U$sumDl@f)YgJTl2Lb8;&YAfu!!Uf z0wM<<0PT+ZUgm0L`0n)I{yg)kGEv)L0N=X|0sR->sjfLXR}kUzzVoZpf*M8FJqRmWxM`jeuxgMYK=^cZS{d<$xD<;p*Li`4kt2wpEeb`+irT`^g$S#i z_CO*`H{wt_EqWWbpsmVWAUu1~t70LQf+*5ff?x~uHQ6fwqzn;m@{|2`p&CU$3eQ8X-7D>cDX{eKll2q^3OFnuS(+9Z8LnbrI#z5`G(zWPi0h* zG#l1uu$t08y&ay7q-hkmyK;C=4l+uJ)fc*t|~O$`JZ#Acb5I z{m_K?1Q`NM-v8_^^~P&&R7#Tx6DN4T*X+MseTE5B6fPNYtUkn8;Y*l~3~X<2r-Lsw z#u$K-9~Mb)Wq4d}eLUO{Ae7DcP){Xrfs!9)5O6INfgxbrqc>+hxxrh2-$7VsjdJNy z>iMnR0ZYNGiADe+A8T(h4FXY}YE*;h61D)hYY6(@i;NO34b7bX>3w9S;c_+VK8gsS zw8SwS6ou1|%$($pE6za+f7KMoGoT!Cj>05+?V3t?A?UfrDWtqfdtkQ-=KEalw97l& z8rGYCXXaDYq7?y;x-E5p{}NXIldh81g(B&OLfLEHDAjM-hEiz>e>VTBdIOH?P5QcBP-BA=%=G&DapJ^AQe9}JfU#`n< zf{-@KHURk6u^`A_*YUzz>1hB_m;=SDQ}IE`_W@%;`JVN3+|7DlXI}2Kg&=sZnO@Ro z*v4cr0^Ie@>FT?~KG4TIZEufd5Qx%|f$-!rXkMd?0a1~Jd?Ol{D1!lWKv4K6tr(@1 ze>wPk&7UvR-di*mY}7dxrNS9Uu<%uEocY7te_x8|5n$po^0%Wg%Z_xq(s__q zC_>+=!se49aLedF=d=ZO`@y?7$a6E_rR=!iI(xoXr?DlfJ&>?c_9Y$7|HT;91JY{X zv=OSTRYg5El{M1WrRaze&I* zCpqtkm@1Y}A1`?XQcv?$Q1UJRCekLk2=dh0kX&=JM zDo~%yHVL8(0JhtI7=!j7p!3&t)R~vw0lVBaYJs02{)HQ2;|hG01n&yhcqE@Ied)6zZTugd5j)VeTk4e|hEE%$XY$ zeiZ))UT5#fivRZX0AQg&Uoad9B5>lRz|;kfvwt*5J$l!C?d1S;w4%^b=%@@*k!lOE zJN`Vp2?`-u^ppTtKdG|uDM!gk5y#ucY@>;j8Ez3IcBD}tF8QQ;oce4ESaBh4 z?K)4-d`g#P(@P)>EFobFr%OizvUp!P*U)cJh91dHKC5k*zE zfjcu&KFqeAwm|w&uDi;R7y!)Ce~44BSQs#h<*&Y-IdkLEr-B&T+<(sAZ1EbU0*D)+@SbeM`%7*U;W*fV_JQ78ypbk1g(r?JNvA&q`M%G|z- z_sX2*0bT(`STvBZ+j&r(Bi3<|u$mpOKpr3figGS_6;;LrDNCjx&$)aSB(Jqnn|YU{ zqr5W+*LRZM)oBnQ9IiBUA@Pa}@d+|?NScyo~X_*cKVYd|s z+H+qev=F4<1XFOVD$Md2hJ?u`pER-C3)aRELz(;!f^d)*aq@%T-qHJ7b@r^udOd-- zm_`9HILGZrNN2Omp3^c zDC4g7CyadBI_WEF3)HjPDAVppXjAPrJg5(~+kDY&!~l@5Q4Ov>_u^1xpYQn1)#qKD zxl);){kmt)!ogEp2Ergm!4JVU7_4cM-tITfd!z7~27s|Zen%YS5V<`LzF{}1F~)#6 zfp=}!=L?pqC`*)pn~PKksTAgCFpUFJiOlmt!6P7S!9%XU|62iYUnW zVCF%T;J%}w@eV38l!qXNQSv7!ZxG~6VNL`}Te#yL@*a7YbS&TsmoM_nxPq$>cIQXC zfH3G&*NIcy(L6~fFbyU)q%TSg-%qbwqRPr1&3uzqa7@9z&~zd0E`vZECA3g%0nrC3 z^S($r1>IwoR~M2dKJXlStpM_ycZ-35|3L;JI~;M|4eT;-VW0FOgZbp4$Q!dhNqY*I z<;@4mtr<5{8I`=2X#{bf9S7cvQ6T3XVQU9?$^{~8E!zH^{$D7(cS*}B*>db6o#~y{3lN&U&GpD(O3A*@@~uYy`t+B19YfSf4WPRF4Aw$yMnI>`G8%Ee@zYEDfIV4VTJQebx z#ux)gP!cu@A1h246i#1jRTQ>yKq`@(0~PI0{~WDa9d(u(@kX>@HSB`xGG}R6$S`XC z0=xu*7CWp>rn1Ot(;%IN#49R(mGGFt zpsAuo18W+lKqMWK4V_+;&_}*V-U#HON-X==}d#-B57o%lcZG`qQua~Pp{i9b2Xg@X8VzkyD!Rzcn1)F!tM&c zD52G15CAEMRZ;&)r?BT@5V7k)5IzdF?G@m9w-|)T2avKI77m|sDfLv8V9CRLi~<-0 zMyBKnd6qB4jWn0IfjLS~95D#6?o8Zg$Hi{9q6`8-pv-WHELP0vgS0tujf*z4Lt*W$ zjal}hsFa2=vD=t9@2)PWA90LsyBg#l?HK=EeP<9dSSk7na30og=1bZjaJSZ}&flZA zHVoV|^jvKu5RU-LUYIN)>$AC#b=quNq~dbzFK$qWesyKwbb;L_9jJc!i!oWFqn&nP z??qqby~R$iu>2!DQF^kEfx<<-;VClbI~*(@ca8ju-Z#-jI`J>he9E6bE&J&GGROVv z#Y%f%VhEs+o;B>m%oTr_zVP+(mDxQW+2^w7w$7@@*3PO=kN#@Y>TT+u<0q)W-QAh} z+=>C}n1`M~?w*Vkv?W9m3{J*ti1IZ}S*zd#yo zobj~YOWRH-U!;E1HnW#;+f}pD&q;+V`(38K`y%0Fzw$4aPgaeWZ&R)NrbhvS(#3A` z5Sojr2!WY?Quo5J)7!-L-J(hBRo9bxWj^IXx%D*!0C5kBKhMG|K*}lYVAR5al7HO8 zzWuFI`9b+{<*SrO@&JJ{C>)dx+G4)vJZnTqm6tgE7<+jCuyk+r?A$r3Y{g17sIC8= z(!_^$f}?cL+;R)#bKiX$sCw_AU{tiZRR!%?*N&+^(QHu@wfo+C=zGlfPF2sT*I${a-`i-POZGoH)u>zUu2e{)7;)7|_3((NRoQFr>qAy@B;#l#0fGF0 zlaJQtk3IjUDx0?@YZSm^0IU63*WRZqDF?zPqy2Ba_l}=2VDgmEc{jBII#gGuA4;n6 zD24z)2WbjLE+~6J${uj9>wdFyWhBNW0NCgbeoLyiw*;i9FqUspX(7)fl}6mNWkFe` zM%IS7N&INwi0`Hb&D7%M<*M1Hj=6D<5a2XLno1yzEdqI5g}SQHX_FDCq-?m9X~GO~ z!;P@FvZR5Y<16J8gMgX;wt_22*nErt5ES+}pkzgrF$tHHvnWBv1i{ePAYjKw$_-)5 zN7xled-4SZ3}K^Fr+zx#-BQ;d-_ltPUKPK5N_r5dw>M8#omX|#`APVRhfn&5&|FNT zKwJSo?DrB!f&6H5_|VL!%3vs@h%1gVdu5-%+jmx&e&B*4dy$3oKnqt)f-Zy3QGpfVtfuUt3$`}x&R0YWa zzU`CbnO(P{;698!uKJa)F`%l-M?$*Kl(tp!n)9$cNAZ7Q<`mr~h*B(v5Av?6GV%mL z*>kn6(hs6jam;GCSzY^^bF|J#IKi$55^w1B<-6)vzkFF;cFOfBW&3b#1nAM|Q2qOr zGv=zsUApQzjC|4Ut6o`SfWSNV*tdZiw(r^M`2QHB8m}qQ>B8Y_G+ET-oy?gVycZt0 zCU?gM7h(`VM;`a~X#Jl99r;gBT$h(20P1W{kvXqXFv`v$5$C@x;N?Rxo?&vyG1mlc ziHH&7wuf$VzKfSGH1+o_nlyI^@VAM1LSoz*3s@1{!>GR7Dsc;by0b$Cb zFS6&RCB3FWN4}%n!VpRdb-hE`51K9jzVFca|Nh&RT za#XBm(EQka(&sjK1Qcm{fQ;bft5g>o@&=?{+n-I+-WY>og_-=q?Ofc_IcJKA%;^nF zkFc-=A#F`n!aFd+Qg#Y`7YY-Exeu>+Yl7Y?D=h5`iML&+$cu3wm!;k{NDb=~uYB6! zc<-a}TA7h+W*zW>HWUhNN5j&`4pUTG+TW92)lrWLCtd;O6oEMD8T4D~HP4j)aVfY> zHjp-A&xL70Qrv!{AP<-}K=|pmXk%P`2hjG!DT8s*?_XT5h8!I39l!#C5GKQD!%9fo z5C@(`85nkAu-mQA`&{)StPJ?n54k_8?%8l(P=4lHp5ulgAso^(&NL~Mf9eEAGUWW4 zEaQhEdLIkQQwRE-e7?SJy1kP&v+FL*i6hszr+Mf4`hHlO(&x|3)Z3tPE%l81m#$o> z2XeP>d`Inj$T?c)6#WzEm-Q|MDWts1eHfgVu3VtMv+onwI?%PXAYcff zd)!m{dm0dNcg2DxZbVoV&Fj@l9wYs9#&Pd)5#+XKLIn)9lx9ZZUC{7U8nq7~Yvr^? zO6(CF6FT|9D=WLQ&U|A;rKtmPSLvL?-IOqKjZWJ&%0hk<-Z&#IB78Fqz&t0rTvmw&aa3#cmS? zI$t`-@9K2OhDpj!p->JPjdQtHljf9@CSAI!%`Hz?jXMXs_!1W4pHG-%G1Hvb?WTwTlma%Jd`*uR=(J1kBR0jL;GOr{N_zfBNZLe zyI3*-&zStxKUBZY!LGYeo&n&hAEYO3yq)Gi-q4l>)f15Xiqkd#X^gj-i=c8G1@F(d zEe)br9v-y?(vNaN9?&O8)iaUTIe>nMI$sqsd$IG@1^U#(BmSv%s?Lpjsc!9$RZZ5G zXisry->Q=?>!ghx$FVQGp`N_&S=DRnP<;=_s3+6+p+~yB4FFkT-l~$+z0aw(i~H;M zc4@(V^$i5vIK-$S6-pE*;sK&u zNaZ)f$&`hMM&1`XRY0$EaLe79Pq~c(2kvy@Qb)tVcNhbJ{~ROVeNBJvnEDL|(CG#l z2&&3(kWWWWXYA7!>2MRbdF=xvN$msOqaFs%gt*c?p+M=(3oqi?-6l zyC^68_er08(~f*0k8stdEu`(^o#fHnFEjJ8J+Z^kV0npJ-gTL3u{`av%Xj&NlXM}S z@)fFm-YIoFYJNG-GM^WuRPr2-VvIubjvl*@R(lPs@Q|Qv1ijlv`s*m9yh;7UI3R76 zw3*}q{hFN*c3&ZR#&69dD*yB|QuP5v4}$=Gyo?ftL3kzXlv!8bC1stX-#)qN=9`v2 z@SY)y%hiO2Epx&kvPR#w{nUG_AMh&6af~TZ?4D}(sgprv!AJH8k{j%_Ho-^}=C&_} zlQ?Yy`NjG(LGR6XngIBQ!3WCxVSD~K^J(Wq+86S~GysI9BXt3pJ1xVn)G|7KPcdZg zFwAfkGoJ;~r(9mv=vWv8n43TF8SI@tm}{8I7W?q;Z5gzF)G|}!|<%`CoF3Gj=JOgm-SSIgBzWtP8ocjy6lwS zscxm+z55#>ADJMGT4xL(^2JVse84p$%qu{kU^Loivud!pX;$!-3NJ?(vVMVUu|trZ z4_KJP2WdE{MCO69fd4cwOew%1z&Tz8?=PN{`u<>jKi{GJOC!WR^2}lx4&rv?RL){_ z{s=o^oimVMQI$4mbc2ReceJVhQSZ`a+?uxpVfXP}x72rbXU<&aDC0vYZCh3rcv$_} zu^xaH3}?+(Esonqr<06`+dGef462r9Db@IbXIa)z9DeY-E_ny*(z! z5FurnMFr&$NZUAdInHl=sCC8wAOU-~##HcauL6t&7zAjfRG$0pQrg3ytbsWtz??(M^AHBj#Q`M^Md6Oy zwwd=AgQ&Cu$~|SVSotXF40;+y%V1+5;USE2?n2kKnCU1`=UBvT`keG=4dJSr3J=#i zF84En*zZSRN9cHI%~Ps$bw#@&amhEVf}~TFQ6NsbhyqWUBm`BWO3&lBY#$|xXV z4KoPX&lX5iX$y*xzVA=_KrPvQdyX6dq=k>7$nQv}LS+J>(&D)WKE?pV%7F8I5fsaaM;YIlwi7h#h1vH8rIpCW96nP7*$iS)?14s|wL0P;5T-)va{l2%o-ir=*@F{71kNCg(z}xER(lhnvFz^gF z-y7EFlD58mE@i4%GMrE=jR8Q0kRavd<$60m=52hv{F|J`6c7k#{HlUBC9SljC<@v0 zvCw%PvLy#Q1`O(ZfV%Ulv=Jcg&Ig4+<&%cVJc7ImSexL*SyQr~Me&#C$g|{J-hn${ zv*ye7e?EsA4l>uRE4}@YdwvZ+wuu?ARV1tBz zDRYF|70$5lq9D)6%QH*&*6mTr_H|mBqAoHI8zTtm6ee8T0zft&Q}?meVCzj4_uF-) z5TcYz-}kusS;Eg@mP-jcqxCL>nNK0sJQ{GW{S*sV*kuof!`KFXdI&`&3>> z^*w|cL{SP7EaiE2e?VUgVMYNdXFMaWL4dro^E@Bk-}JRMG-C*G_M@ry`zYYW99<@E zLG6o|r$P#s+z^%L!#J`}56B7c3-vnJ!}BOxe#=sS>OO?g<3 zno7QXrVWMwAB7$mY45&bY^tnn)9VraKl8_W+T|G# zUJ2n$OTq?fOk0O?_RM}!Hgl+Pf6UE&{VcaUyT?+R-VrCd_C zsn?VnJ1zK5^2I#Q7oK5y1xQ&lpDXdMP9)C!rw+7j*h!Za(thK{$*N()@b=owE6RD; z=qb;TGH5?f3<30su09Z`clme-fSKoUjRJ%z>kTlgTy^c(Qn#7BPr^YN^-;i!oxgKu z&v8x_@HGaw(!r;Hro50JcH1ZS`m_gpFTaU;r|Vrl5RO9ICdzhgTq{7@Ny@xw00>G8 zse3N>|Js7Yw-Cdh;4`oa?C*cj`TtKZpuBzlvwF_IuTp;bP3Pz^%TagryXu{HmwOol z=C^xO4L-PHD_jg1zVF3|fHA<=I7!%|`rWYa@}<@q1ELn3V4erA`Gtd$}IZYtMBfu9r6yhz4 zCVP#u$G3E_#clw}Lmx#O_^oS1UJFjv9{(;7s>wU11du1>lRYH>0ZfiKVY9J2Xr7g? zAwa?*=`TkiP&TD}MnPKeTVLUnGU_r2qy^Qqk;xT)t`XOK<3`@DUp`B%Zd8(OE2ORx zcHSH0?rRIsW*CXbXQ}v@-T{S%)dfNd@3KdmeS~|T-%u8b*B7JL=-;xQgdk;=a$Agr z19_h56%e&mnkd)BRvyDJ%QWxpG^0$-Y&co{=iGES!ukfjm#_vIzXYD+Qs}|#(`*PE zZPLOr8uYyl+id!xjjvwRikxk%nP4-83P)(ZJ=hg zelA-+@j?&N{R9~drjLm;^(AhdE(W#M7~r$u1O?1BPo!8-C|Q_-`6zaQ5<@^$zJF)J zY#2F?FCD6S?zLGf_B5P6UIlDBGS3SJ8I;hA>8rR!ccR@#jB>Y!wJRLp%Y5xM8y) zZ6tkoRw0G}$Tu85Nc>4d&Jjd?>PHxqQ(I9W{3wYS1cJ&=Ap#Bg`PutVt0wJwW!nI* ziJ(t>g5qSqSL%Skws^KOkd9Ar4FX`donZ^73BKuuAz;6ATj^1qB{TNW`C*n-(+H9; zv<)t=fG~*jj#felBL;zA4Z2phYr&C23KC16w>|{(uURsXmh1~mbeDxD~JIA+0Y#Qr+?U42#dcD46L#hUzAe6 zq4{z(?0YBWlx3!C`xp|Cf9yfobf4NOQmIFmyXMcA>-NX2>v7&2w+$jagZg)_Ba;=I zT4@ZxE5K)t304_0qN=G_j`ynCk+F;v2L$U?H8W!1L0s@%6pqT5K!{>D>D;(Ts-&<^C;j|z{lk{?V%(xIk z4EfDo|B?^XU(S7>6Nc#(Kpm5*JHBnij_?u?#AtybVBE)(o!i6)LAZf%yW&6@^fd@b z*~KVu$bLh$L4dvmF9G|0{W+C)Q3e5!^p`p&2KMZ<02lN#nZAa1nenjegNtJ4Yy2S`<+r3OlS+Y%%80G-#^#Y(DmD5Vuno=PO}~G zO)tU;QpbtAPrT#6{iaudOcAK+G^$EI`sfxlr=?QE%Iic|AEMMyWur_Gh=-zF&H zLDQ|Jyt$^0ql|OU0o?}a|8{uHKG=LO&yagv?=|at*n5jHMV$Cy?6~*N2QydF6zlmW zi7_CdMw5?0AkIC~kOPYNJ@1ay=NJt5EDE}-fsg9=d^+8r4tLGi&sFnd_sM*!K!hmM zZ~&WA&ninPBIf%Da~wg#Nk$M0GzOSPfdUZ0#b=JM59AG?_(7bGN$$1tmi%JJfS~Y^ z)PE^AecA_OPE+Up_^Zq}{@C#dDvwe8`PO4p-{Wr31_2j5*T*1$aRJ52CN!TM z{fwD5am!*M@IH`t#(lqCr{d&?*~Z8{LG?cFM?}-axfw=8aCHbP7ku)UD;urve zWW!yZe9D1Yju{1q?yZ)2l|$N;qZ;k4K7Q#j{keYUv;ko49!mAt)=6J82LbHzEp-Lm zl3fRyuV12io_$p2+sa6t=f3s*rm6S;vMLq!`dQ`NRMHD6+b&~+AYKc_(r;^}F@S;+ zwPpaM-83#Ms`VtHddasU6(S&*ouz3ku)$U7=s~?gJA<%}7iC~d|8yC)e-mU32zuVC zCr(q-PI*4(JHpQIo29v?QxSG!mdxtMPBX_NUbY2wW**h9n*>RN{8&@AF z{b^8njH0aUQN3%;e;s>4=1ML+H^?9$hU~EZlKg^7c@|)F#`~___Q~q9y@K16Vk?@2 z5d}cfHmo7xrP)r@SR<0QkXTgcYE1;HB$8T<+O(6>hne!5v>qX=5I+!2# z(b{>s!Qo&*Ls_eU&&(Mcx4CuTd_d-)$)4o)Z-Ukg2%4L@b@f8Eq$GD0YQoN9i0pyR zdDuaCnZNmhu@Is@=FU?~cHgch&q=Ryz%_oKT{9r0!SsQKm-$cWQPTYK%Lj9w9|xTW z*W^D)r(iG6LWcydPKk2D985q64qF_M=Tm0rbgE*`S2`}04FSBDIghe4fyB3}k@!m* zFb_4(TvW=0?-qnU(1FvIkoK;5`9k{p_;Vl4xwe#nTW8J5t_Kn{PnX|stTRy6UHwk> zUdjmA?6_K8 zE%kLjXriB&%1^tWqJM!XC5rswpe@U(qsC%_CcI)y*MK86pVE>)M7(vd@gO zW&qgrlr)Q)$8SPA^U$1y>gZ1Cce?7mtf%9`=Us*L$8p=CLKLRBNMA_W5JpKOS9mG2 z$U~HIk$X7T@=t;{BKJrdi<0~Bh^O^`4(d9)zuC}^BS%Pk9t8Q=cI7O!d_n(gyTN_S z>onE*wWz#I{qels>VwxF&mQ9*y;a3x!fEJp&-hJ0S52*m=+uD&{DEKKGdTSkGzXqO8e0 zhmm;~bSy!_QIKbVy$%7LHlsr{eCB8Y_{1R+hi8Bm>~8+MnsUM5tT0GCMBp>0FhmJ| zl7kER?~?Pd_wydG)0TT6Zn(n;3kT)Lm43ExFTdki zE8d!*x}RHNpbvY#FFaqo0^+tKL2;;Q*li4u&LC->R^Wo`9A*F0)syw_r5@zlM@Sui zw0>Xx*>?Nqxfn-J-0o)t2!i~{wrc_20U+=5U9+H=#FaH%Wj<~`u)w5D*N9v1ecola zWpSu!b&B-y?SGMB68Hb&BlY;+J0DVqwK+X=HJ3>%MrobR#8m=*nes#2f3?unVqB9oJ{BqzRJ0O?ZcR2+;;?eW|xD_fp0RHF8~Y%r%k500>IA zxYSx>0ALWns>FXuv|=vakWe$IPRp_2v-ltQ2(zxvS2`V7-y*Fz&zd<_$>N6RzEfAt z{$ck@9a4}n0POd~6)>DQi~(UnnN5&^fa?nQ8(GD_Q=xc^r@K5M<@yT%)B-K=hDBZHZT&)qm& zy*puq(-0tF5V-WuuV$wWXd+}>yZ*0Rx>b#Q@h0{DXK(3iaM>x>>mwh0r@{j|?*p%= z*IFusS~*QXV7dVA5h(p^=SSx7nZi_++X*IAGevgu^CI<5AGf_QcRa!6G@S)oRPEdK zhaS2^Kth!6?o_%{xF=ohF^IgfB>XLC9mh@Lw^Qb}TQ6eL0^iJd*e#BpE zEGg`Ln~=H4SFy^(G#6pey~zoP7-=p{Yto?+Xtz z5)cusJFx)tx7f!8pvfjz$C|k<{J<141LWXwySv8-FPJvHazB5ni2`uTvzoC=dpAm4=p%Ez}t4%#!x4=VHf0rMpRGQabl%>d8{K%~+lQeux z4l;DKaL5bn0mZP4_FkA7ra6*=d;bd@Wu?489ul3-J zBwF-P>(^O?pK7|QiTe=_))uL8*jYOAs1UL?5+>X@Zo(g2r=q1D5pJ(cBa@ZpMbAb@ zx+$5ZU_ouKR*~f!l zC4VKHZ}7XP$r@(5g2=!Y|-g`V;+z$+g14vPO%9-#-)z@l}n0KD|x?4 z{TtgK)$!)|Y)Ovv^VB-w0>GoLF{QAd*f9OrDMOxxA zZ|jl#&<9osV3z6&eq1#1yyh?_ri zmNP;hV97ec2_O^vPQk*Xl91#5*;#E!kVOl7be!emc;G3PlwML|PJ>3a9;@}%@5XY# zz>f76*1jlqWR%W8hs#&lU+eT3r(uW-k{n5lWCLP0=Sn};~(IgLXNpK=TkTa~lbRXQ`dqSsJe*S{+evg2Emg8wd5xuiq z6!j|PN3z;EMN-wsRS&%+T3C^ODw#`Po5|se#OnRT;-&K3#fYPv)`PD6aW# z)^1ZD38M$*HwUhWvA?%wLEU+FoIm+LoM5zgsnHiYyR-%cL}0pzyj=0}+9|1m4_tDt z5>=t{@Z(}QNTIzY@`@Y!6b6VkNRG-RmZIN1P;n6lkH0JL{IgUCY^@}9OmRfP#JCSY zYUg5Exc*q1xK5*}p%LbR1SM}^9y=e!r8n39Q_YUSku_k3msBXf`QwPl1n<7_NUDv` zUz(la;Ywjm-++}8a4>qR#(FT=Mq|xLSK<#_>?;jrA0X{$UE^{C@sq&=NplpbPFzg! z3#N3iL8HVz6zgIThxuWU$mpq4MjkK#(|*~^n+<1v)&7S=nIU9Co=#P^YO-Fwi^V78 zT|PWpP_AC0)Fv`erH`QipPg(yS?gIBnDnw051WKy+=!z?akgOOYa`(K{wNqUBE{+e z-d+}kux#B^PVAJF1s1lW6g<8YE!I*Ms_Hq_N6SC{CONe2h>*H4z!Ew(D_!BT)3K&( zBR$RoXS+21ikQH2Av-gD!FLHN?%a`*tR>>%TnWh1Y9Tg4h&-16nG2$az>{Q7b-(ea zX+N&M7_$SZZ0m`B@?Yo$IMuoyoUwUkZVJSp^Pkbbn``58)^5aXG28R(xPEfJ<|@Vf z!?=?U!HNP%qIPwvSzYM4mFQtYq0Q?`8Q%>NmEVG~FA1#LLt-kWIL=FXNo-~1D;SP7 zB@LR-ecsuUiK>3eCCv-R*?-vm)GcmFEeIdQQDegZ>xDavII1dr6p0nIY9ctx0@{ME z7A5xKY*=w`qEIJ9JGp_|1i-o8NvhDl)M%-%WYLU6_yCM>kF1NJ4ISm31P(A9%FxDNYbD)uQoj-?PZErb?lYIG1REt7R#*t11nFuzHIDSJ{NV&!JaM5FE(N z|3+3k#)gg7swiAtriA@7S{MwNN(HcEmxVLE>xnu$CLvgtZ{@)!y9>B$cmwE73 zHcJj=xDizRat`!6Yknc;H$rDFxj-xrq4Wz;_(ct+3d#O&gz>sJB?Xj{2D6`19oCa^CUXgSM_~m1RA}R;R)~l}h7iV(`qQsMZ=}Y?;PcZwY)3vRD`37S4U+9bqO{kBA zAIY(Wh#qxW`*-;fT|xANrYX*xHq4c2l*Q;~d|D01!FMKixI{B9UA6W>J*wBjv6De_ zd+(p&ym;O3K{h)bb$e~K>~=sM=MCu@?r4v*@dqvm?=ha+X|I**n>r`CxAlYt#@djS zz*|D=QDXmhgKxgv2gmjJ$w?aHX`NZT=YJG#X9D!g2VW5Y!qmxgG`a<>tlI0^Ui8+* z8*NHzrTo5BW3T6N$bvlA2A8QR(o%}QlkGhcfNX4^`-0zvUakjhfqyKalR>6225LG+*L46iO6Pw;oit z6<`cbX-LnzMqzorKb(-g4lkIgplm?z-?Xe(YHzRr+%ZOS#0V`eknheN+HewMFNbVyTn~o?ZUkRA#HE zsCOu7%&QwOs%N4UYy&Y<6PYWUds% z4N%PO_xd8S;~iBa`l`Pq`U|9jis@CsJCG$2(PykpQY`eqD}2n>3SK32*8y0=B=@DGUBovVy)K4>3{wt5_Se!U$=Jk z9)||zEt}Ki()JkVBwS$7YvDCi)6~_da~+7VnzA$no2!<{RQdH#;|oVPoeZo75Q_|j zMz{*G>f2}QE%TxajH>PV${A^1@98{a+OkL5b)Aq3z42m#lI((E^zP^x zt$C2+@F@5Cu;cy9i`JA_QNu%seD_eY6~QB7psn#mIro2$+ysN17wR8;8$f>Z{@*XF z@%OWat{JR@GCyzf#S7Pe>NbEz0ZD-Ji^`LxO3K2C6rGf$&icH-rLW$8vArR&QLXXs zehBY=Ycrajn!y*uvcQN<5|DrL$(lm6R<6K4X3aZf8`8dA<=r9r@iX>mO9yoq_Q4as8)y_^UlqnqZ--Skvg7L24`WpO~2Xaac}x zpc#>oB1XPq7*V-PO$uNwVF|4z3VHJOaW(tM}&v-zPpSm4D>a$ufQs^n3!00 zB!#x9zZAK7)<^Pq@*D3&Pdr`jEqcJS3<(?#*vts-blYz?S~EX4&mwTXe{l4Yv@`qTAKi~Uplt`f@^%Hx z0(blTa>1%M!z;jkta0eyT^aOCOYC|y574u_MH==0=<genfq>z)7dPr>`1<~&vJ<;;yn;@h6uo1S;$5~ z7Wz;L=|BR8K9cY4@KM_;-1Spfp?0AVX^B6BkxO@8D37wqcMIkM@|C~Sri-S@**Ngg zpPtDScDRJNdu?LmT2DW+@#Pi2`}Po1skqJKDn1M~Fqg#d2s9cZSf1624J3`0W0b0gB^{ovt(9BD>f*vx9Ps-CPYcQ-hUTTOx<+%cr8s` zCG7nYhFLyTB|RHUbDnPD_L}}hH+S?n_ghBO#q_P_0=4-vwjqhm>s!=A_1W_-2K8~r zv>omO84}yE%GvAJo9nGy4EgsdkGE4p#ezwVTT4iI`CRoP7<#7vG>aQx9(HzJT)GB{ zcBm|RA#K~nF6QVaw0VZhF?Cvfh%pfrVq}n@7)?=FQL6gioGcIYkQimn%U0S6Jl}aa zm3+TRjaH!GyOfY4Rro9MHXv)(Lw8U^VR#ib zz_M2Gu?NzK|CLhl-F#jXCKaW%M=4Gh*^Z5Ds~dL!0(Whk4voOxa2{o#OmZd`%SZhz zY~OcrxAu$=7}BW2kfVj8H}6&j;eb%-O)3lO*Gq|sXHZcU6ZR46$*IK$z>z%(4lz4jiUUKD6Zc(|dT)fojku72J@ie}H-a5Lq>og3$@gaHcqKIo7>j6+fhT3~z8iC+A#BXBM)& zw&+tcxH;PE5n}za+EYo*cK-K*x1nzhOHvJ zcnpnbf4ObzQ4gH-(WjI#+T-#Yh5eSWy16(_)B3nR{hTge6JjM_!Q}copY_aGIgw!A zagcsy-9Xs8H#g>{{Cy#!4pd6FFs|~l`D{+r^knYZfs&`}N1)V*yqqRcd4SJ9T!Agl zShDI*Ik?EIYC9*d8||G}ay`9dpF`>#a)l`p*Q_|o^!9m-(9(spqYp&%IWjq|ZvK2f zMda6SnE)CHDR|G!>povow#??dj22DorA3aQ`N%6?k#M7=Iiy$|5t)f&EIWdgtr2w3 z$<2BzcQ@!i=5rSEF2s(H&6tRFH-L(>lDxi?LfhfDy1;-;7PwEU)d03rQ}1X7JiZXq z(_d&PL}ayGPF^<@HqWW2)PRN8Kvku9x*Qf78mEPh95> z?_U;3`4k*K%^)6fCE<13Z0!b&(7hkCzKQTj1IJHvE6v&Xb-1)t7(kYtWcLfLN%Phf zkwNU^@1no(8SQ%-xzN@ZIW9S!c-FaJf0({x6;l|fS?b6D8O-Jddo{V% zoXUVPZAJ`kA5x4Te3!e(OP{5@O&cBV%h@@Ou_fpbt^N6#gYu1L8vwE(_)gB#pjfm< z*>`RP4->s%cq`V7TpKEZ_*Gjb7p5EJLC&WKBvR_z2hkE*YSkOzJF?_K_`M9eDV@6> zF+SJ29Pk;1F(QSkY@(qEr0;OQ^9g1jy~;%b+3%QSYJCDD`=Qwb4ECOw995Nix015Ws_T!GsMQyr*mM~cxDAWh|1*eWm?pFkyC+* zvErB7f!nGykP?$~aq%wukh;{nozlK4k@&j0NgpGE^6TLnqGI~Q0Gq&#&+D$&8FHh( zJ&|A<_<;A-4&LfRbUhAu*^7UGh2S&wktlGA0vrFZ=08`fZm(9?hVonM&G``_wUvu3FP zf#wFq>R0TdYAat_gScCZ_2KOOSUO=%Hv9sVFxD&zCmfyI4YXr${=vj#Euw7Bhw=ks zzaVYuKnbA(EtpSY6FhE=J_yqWe_|%PZ|*@wG4wT{5@c<+Y;h6=n$mu|8?y_T-!ey7 zGA0@l`ncs877uiSR@72L!2{v4sSaR4`OBr}^s(wwg3kd7FMj5@6Gt-?s*JO)h^B2# z%uoR?h+S=aRgZ5;E)M1+v@98L%&EBF$b6LP7HHb}0}8Lt6)u0ek#7C2!_djF$|2CS zOk+r}+3aw81xc}5rXhEmxvp&4QZDA{gBt5n|py6twi+)*$hyenQNO@ zsQzI9P+{<*hJb(}$P5oJWQNBD{JBs~7=}zekT_>E;5qWQi`FFlboy_mj!`xiAWVf( zd3$a@SMj1O4EeYdS3|3;*3m{$cg~T>Ps7^X#5xtXDo+#@?l9(-x@9YUo@+(gYqWhSGFFrZ3kI)Kuf?$^IwvS05zTAcxlO zdwhIzSt5nb#KEAvMoPR_AKNLp#kSLB6+(EOdRRe3CG7u`a9^*evY=zL$=%?*!N84s zVV^PLKi=mDBh~B&F&wxnD}gMo@ykecuJ8+GSSn)oi%x9UNz`Ge{)DIRW?$BM)?^d1 zWzi@CEVra$dF9wF-&WgLApV61Y*7)IeSLGv_6L`N+hLi)q^Ox52S#athl8D}`X#9< z=f-PEIN*z?JvD*)(Ej%hNi17{o~Gu~m~7liqo~j40Gj$KhMTrQPC{XwEd}@}i{^H1 zcakEdZ`0S@q!V>ujGIP;Fv(C5qoqPfOo?=K9hSi379E_%(1N8J6te&oD<-t#y{}m@j3nimB@8X5oj8yWB4r!eA?l(}h{7xlGYn zhU))3X}EW73vBx6@{Z*_9uwf0wE?B`ZT7J$hhDB-OLxy<25j$gevkNrY#Jw$!pBna zV*HpMk(`zu`@&7)04ZKgZJ#ivahxWCDN@tj`%hW+&MWAL2Q+0u!RPn+3FGJOxI(~) zEld3@$7MbzvP%L==;Mm})OiQYA#Owdj&L2%U}>6Iv0o&U`2u&$+vhYE5TP|q3Z&K$ z$>rf|MAY50^L@l(`?XwfR~5Jn(J&8M(-NR$|7=UN+HNgD3vjYJVrKZGgEw?%-#1k$ zQdtLtndZ@cFM3dHc#U`0?!-W18?vbaM{nm~lrE|vZ0PD>N_u3ldxB$^-C9DHd(yNb zcQc&J-?MSCDj4KOm0zIX&zo%lm*Q!sLkVd;};Xz%jBM{WMS zDS6t6Dt9BiWMuSGk_!OwsW$8_M5~X(yn>ADWX#0aG`Uluc`rH)8x1EcDOvjIO!We~ zPS*QOCo_XI>Q=GU@c~7KWD21y1P1o#fOR4}AV4p~D>RWg8=W;q#{$D3wBXxnh9UgY zR!Lq8J&Cw9`fR0$YRf!3jxS^nXp2aKaWrnjM}=u;XS0FdpC`>5sL4Y4)ZgQMWjZm} zPQ!0axUh~U^|S`TUtaMZMy z*6)z}#%WBU5x$&-Yt`WOvw{#X!csnHlG$D+wz~QL3JkF{%j74x0vgBIMW7K%bdPXY%8X>5#>D8mY6nGPZXq@Km5r$JE0IjM#e3RVXsOc_z2 zZJ4!L-<$4;w#Zj;^x&WQO@G9pA~&r`>uq<@R2RY56h2DFE=()L1)n#DZH^-tK^sX= zd+)5<`R@1@SOK@dV_{#(p&Fu{TixvZGnW2Yw+1HPU}j_o)5Z(=EEXy79a`;EZ)BZ^ zzs3P9@uzHnYFcI7KoFHQj(?I|i1ZL=ewewTIYf5yRak>j$fS-@AX#xo7tx3*{fpHGc!~In1UhXt5hfA(z3NI#DmJvu` zw-P~F5#7NZAolpv^X(IfUndPukp2VKh04yI>JLPBkjIOn$&D_wkEXy1t0+j>fyD-N#4_NJdpO zz=^6KzDf#*qojLSd5cMNrMXupyWcELM&vjSHc?`a%4#!G#StgAnyyv|2djd^G1(s$o*tQ4njDlM;Y)^^EJgKKQ!!{BcIJojv6~%)M|~>rQu_20GD`KM^(uU$RBpN+Y)$}d3_?4 zIzvpcxro~yC>z=N7VUED#vZn|99SZCFRbfA!}V7qzky4Dg}j=`B8I!?_~Z-jsauCf z8Db&7i%1r$wRvl=h3Q1aMXnFj+v`gAS7%B&Un>ALtgH8hmgBkh*)Q1MSX=#(yV#Id z{2LcT#7Y~l*Vm&QF+{=BrohhPMtBm&lUll0HpP360c>a)?0^jI%zgn8dG}$lIU_#C z*uwj%{-9vr1$is$an?dF-T$t**`3o+acO1`y<*1cs^vF0FyXW;!O)qf9)Ko^o#_wA zBiA(s69yUvjg!I6BmaK+b3o!eWp7wXOV@MY`*#&joLDn#ESYXu@K(g^bw*|lmq(n< z+z*j`AIut1{=4^Sr=VbS<=`;hRIL^HR8d%q8L4!|AH|4o4`F(NJ1s4}2>P=SPqkJJ zDne&E3;K(6v{KuRqQ8i_DhkAko`d)>t6sbAjHSuBzHns{Mwi8OK(+Jz^5;zHF>DC= zBkZ4}&PXY#t`Q65Hp$Q8{NpBI0A7%rMOa6iTj3+wlc9Q(|p+T5O>jyrHJuOk&?*xzXVKm>CJXoIjq- z>bT8nxocC?FZMmW^y4m|JBJE4bi=}@Zd&{z8VH#zkuLMm?iAQD!M!YKzfGUZ`7ECL zaWZ3`cPv+f5;ChSm6ETa!r?R1-%*0Hv~)~d6=LV|J0b$G>&^fr79+y7;`>H0-$$Ko zyCo8fBB^jB5^S42ajV>C+d{A{IT1bdLFRaJJt}*y9K&`Bwinkn&IHJMG~LN)1+-N>8TI%8y8s z3eFx2j9uOOGcf~9y7!2~M!uuY^OEcCC4A5E%HHOtFk7dpi-I1Hou_3KwQS{k0QV&_xc%pzTmnKuAcbg zy5P*8H-_tA$+a@o5Y#GunpI0Uw7`SpLk)}@Hs_Ld%5yt+7x>WICa$iKxj5>9?&0ZI zotO~rOOgJ-=z25@uy>|(3L6>~N)EdpG133#-(n&;uJ~08*WX`8wzdPpIm98|7%LxF zHVE!jn33*EWd*7J@Y@&-Kh z88=J8PAdq2Xa^GR#aIK=$&8oR&gPh@g zxbP9d6bw1wGI)#8hpk%xs|A` zJ7=db@Q6)*3zCFXZ0h(C1x2R6dYkU^-K$l7-p4|bG;f}Q*r5~rM5@-iF9u&l+WW0S zU)`=8hBzg+p$+{rBK=ae8J*du^WpHHi2%NN|2dkHzg~YOZbRs*rPlD+KJ^VX!C8+X ze1k*;AM(WoooJUQuVIvfY=U7G%{t7WY}^U5e)ZeL!z=kq&QpAYNFX7ElIoFita0y| zfGMF$2hfdy%bc#9^|OZi*rOi9!9Vf-J!?uSMP-XT*b$?E{*Q)K3 zVSLlTMhRxtXCzBl>??Ip?^6_0QtI3NvZ3Sy`pt%Noky#uE?v4hkML=D2Bbu{Wd z-|j9oRM6_{bOH_mXFqFHL|Mz~upECD4K}IhFNGoLRl{&2gL2As+{5rP={wya-;Adz zAva5DCJrK*zrkWDOvt{}p?}h-Uu9+rrDyH6w>L&_t~efLJ`WO#3A+<_fLR@G`LWCN zo^Mm0wcntzV{(OchOg#iM@!5Ql&HMUM!}ZA0Ak$6PliyaOCl}&UbkVu8g@*RIR!~H zKyL4%$zO0h6-plR&qA5r@!T*0(zR{YcbJ%NvA}cTT(j3#Rg8NN$rR-y`9cf`!$X;C zdK(+1kG1^)9ZAe=PDW&5{Iy)%(x^f;Y_Od6DHV4bw08Dyv^U_tqlqxyK7FVzu4qD3 zu*M;+=YL2yEd-8`Yxf(fJK1e|Opwv0Nm?rZ0X0N}PJ1b1rJ{O`RMMJ;@FFA}+6= z&4g|f7P*FZ?@#f7tx&!YAZ~!=PQ{>Ly=vp;JMj$wR znbfcmef+$o;z$s$+aM*}eF_U&jqO0EmSGov)Q9aSFFM{JH})Y|y2SO9D>diyMv`}Z)%{L| z3L|90&EMD3jbW}Z3Vb>JmczB^G>7WzcdKcpSd`6HV+*$K$~Hn|Ax@gr@}Q42Q|1@B z&c?&$%~Y3H*Ie0kHc1w#{k^WH?}^j=zwMnjUI4L7St3ChufH~zWhII>-yA$gm1RE* zNmfI!^=@LU@jizG|8aMt9B$1Ek;gDACU;Z|Vk>kJU4RE@|M2Pm;q%>znX^nof3bNe zo$@KUQg@_>*JEy{G1Q~sPMFOF{wTv#Xhn@N6gb?J2EsVGJ^taQ+wpLUe^-lt%eGaz z)J7u2cUgX}Sz=ZcZbt<5e0|+}h^%X3jLnf0oaj1O7=D`gvty2Zngjl4IGfGgb3m`b z3rvCt8YCm5(P;n-uBIJeYyq(C1-JKUdrm+y6&eYNGegmo6g~Kuki^cc30>caCG&8x z0t5ZGYs8RW#wcGT+BvP+D7J|@n_2{))gGzH9>(NZB=0&t?}shBL+Jr!ab=UVuCUeE zK7w9~L}wc+KZ+7HqQVmuI)EaoB$j$NfXtaSF+k%fBgRp+8J{1BUeD*yyk>Tk>=l8; z|0j{8YpblNbE~L%ao6YhMk*%RF;o@KuMu*xSNaq~!lRY+R=uMU_jzroT}N^3lvDWr zT<2r&oJ8=km_1)6q|j$BiFgTRvMR_j-X#5!|0dlzbFzvvA@DO}2N!OV`Xk!gzE_EHuBwHw0a*A%2VRtX_wvcoR zw50S&gv$mUwUhX<@#J?nKH-e4Smw zn18;cV6VLe{LvsrK`H!#7DfhKHqdJasGn*4h=4_c`S{NJ^~ceZYFKSUC4V?^>IMz( zL?vUS$jN5+No}`pi{YTjzw`liAp&V_WyeZXQW<4C8BRKdoC^CR%~KdzK_@t!WlYL1 zaMdQ#Kj0DV{^)G9%u}z_>`BHTF@Kvp%&;ECb$ewhYvoxXK5U!4+ktlI z*xY}^^9SaF!F=0{flPPe%K6IMyFYwB%#Qddl{-;WYY`8L{QBnkk3#tLgrXlHUGr^7 zoOl4FFY{tbY5Mj5J^||MO}eTIBti)HZkjE`wbBj_OQquHQq*p}V_^x?+HgN?9I^NL zPnxKbXsK?u!*I4xHp1T-f@o<~tg2+nwC`pamW6r%fC!F$AmB@)UVHxsQ|T@32{X15&)<8$G0`>2NV^Z0i7lfzq?&`WIV$>puvUdIn5pV(6nvLQpm+!@ z$kyV8fC<8COeV=iQlx}J;X&2nr!rD>}F*KT9H(rWu=!*c0;f;tE4@*UR(J2~ z3YuNM8Q=hfofS8*QQcBwEL%$U1>%I_nx*R&S3mW%Uk z59RgsSKWj>Le_g`q*!eLjRX()gwZ(d_)Yx_vP}HO2R4f2W9aX6pqWum6=v8+gh)kJ z7X3heFn!r^47MTS_1Y-iU8e6f*!D=HUY0^>rip}}fAji0eAAfBN!~N)Af}GusdQJ0 zC2f#JjYW~mXX6H9q0;T6(pG!MPzb+W<-=eghB?PjhG1J)VOuXJ=LV729wIQy^Pt-JRAk~6IPx`m!H?jM zj(PrI&v>~`WbSQhFF;^8j0{U6s|l+L0OZF+-+HG{H-(vZM{{PXi28*`Un#TaQ)lZ; zwzqRnPvZ5zDtW^M(5chjVV7L@!crU_0PS>&y4O>A0$yF$^GkX zl99U{2Wi%N?<+m$^MfZ?&x5hWsFiBx4phsq<1U~QF@B^y1#@%qtuiDA-V8Y(T$=cf z-1c8TOG#xTo67Oy!{m8_*aER^PV?@3?Ihg%u9T-Ev)sf@wGaCzSjw{f{Z-Qp-GC3J zw{|g}bjNoax;mcbEUm%pHshIm-Zu(Y7LC{~78zF2*ksx>bQgJ?ne!4-gL)!ti_W5uttyR|C%{ zMNqi_Zws0_+v?#=Pz4>`>1cn{heZin{TaqXgJVd`o(l;@Ao^=8O9epwb0QxmgV{Ga zd=a`#5^24GQ0v##Yme7jS>*wb_k2EQQ4MUldndG!X^Nka3E?fLj~{zMFcsBm=S8uX z(Jw=(0HRbcip#Mvi`oYbVUPHo?ht+8xe<8Q(zL4S(-~4Kra6=*Tc8OA78w~4JDDQ`Cm*n z$i;kzudO+WC2eMxANYB}eM9I?3%Bo)M?|{to)JtTq4x6nKbw~q10)s&OGMnXRbl=s z+o;dfn+Tp;u0y%jk%>$H#Jt~bzJ^tRP&nq6Uebh*i<)OBsIpTs#3hx zu}3p@neaQwE>@hlOstpIQQ?>whA>J;4VCudcv1wmNG6XN|z6H`;*1^(*K~PRp*Gd{O3leS>qY=@s#Hxc_sfh!7W!}Diu&c`Fhao zU*lyJ(jy2m(qZxxt3jxZgZ*Xd;u2FzB%?^%iV=g_Qz)Jjt*b(?dIaHUT1=b1$w zN*Lry<=QB?e9U+xCUiq5wim5P^mZ3!j|dPT1M*%8qptA$j4QNI1juleMqp?H5N z{#~2u!V4Jx<$sY|KHht2X_lA@ko6^-Pb)9}H?@%i z4R5JY(V_SGioEC%m{kPsJ?sX;m$=ArK!Bez>=umpAXM&%HU;}9z9bftNbw=(^FF!N z1I3!{S`o<bFV(;HUJ2oPskjCKIcEsRK^mYFifjF*S^fmyZGN{kxq8%n% zBG=T#Ar}jPGrVSw3Q5P_!nd!5DaQK4X{m01^6XYoHTJ-1#Zzv4WK9x(w9W`#t)m8B0**6+;5|_z%)z9WhC|Ok&APXfAifZgqrhF z`Dk6Iag~n3V>>Vn$U%!MJT%V41mt}TZc4cV%6?{yv$L}^@9r@^2Jn@@&#Oii@KHIF zy#LdoZsrsT^b4ltLUmo(&e^KK$(W6koLKV5mg`hKo;w0 zrdlvJW<=&q;ax3(<%M>|41GoKOuK@H<&E1EvX5+jp>iX8>7w;*>5pr**~n{ZF711t zCl5p8UYAbckC%uE&1a~PSGjZR&T>n~!Tq6tvwgn4G`D4H{()Du$o+SX%PE*vAIxv3 zN?FP+5i!3(bZNLWQW{j|B}^!tA#LP?>|7E4BD*Am_*#p4uDR?oZJd#_qW#g#zBked zul!J3m=){qhv#^v0o?df_wkiTxwL|3cCE`&4PB5sSzAnyLF|zP8WQzm{EZ^7P@=;y z4#6f0EM;U4e0ID4$Rwy{UP3w zcbsqId>A1k4OTdmIXNjO25iZa;ji=Pp%A5lw^x-L+7dWrK$1pdgqg0Xa<&pTxoUd$i55u5{fB* z&GvS&sUx9-@)4RFOYy}Gi?m%qpcPQG_*rP4BP2kxO=HLjwaMIOSF~dEjWhHL;!V@% zF+)RI=lSpc^F>}BJP|GtV-$kzAN7jyYci{`4& zH%Q&5JI~vs%}-wTIsZcx*D=c7Azh4?)Wt#PtNDmSsp;L8;nT7H`-@tM0||z{`{Vts zl}~^1CMl8rPCJVKjtJ#LuP~;z;sz%z>!A%OEI{SOch9%}i7hw|w|MMK*ap$8n^bMR z?NTPsD`Vhh=ekj59)%EWMQ7+8I@Rp||8q4bmZGkvcRP^?sdky5jQ^TPZU50&R7P10 zKC<764z5Zsq&_l*sa}_#;JH(?y5GyZ3JA^Rd|?~nG&HMQqh4>E@g0EA6snGGWge0* z;RD;m?rdhI=Kl_7!b4fd2qAjaW!P0I_e)XTJXQYJq?><&AuoR~N+pCZK*P}ZXOCPD z(25BYB_h@#ZgC$Iuk8e{{x;+zY;QS>-zZ6X=VtR##YD7yJwl+ii;WJm+}sMMj#d2u zDg~)DNq1)Y+0Z3*PxD_NA0qKF8c_{(cL>njL>Bnz4@xh7m%5sFFS+Y}cU>x=)ubIg zoZPFs^4YDbLLuvPYhI>L3t1Y^RDI}bfs*I?*^^QEndvcg6j)xM#;Aw_JR|8OvT9v0 zB1a}cnMYu2h4F|;=cE@V0mwcLNIe=Y=*xW3$E4+owCv z+BDXM%~Z!Bn|WH(+HRN)98JoGGcsV9tyQ>5OuMFU=iJ0wIZd~lM_POKV~-n);_DHD zSuFd8DJ5u_MdV)VGx}VUn7}UZ{stke51yT-*BClVg>m%U7lUYI$x3ZbH;nke)3u4| z@gx2W!SK*f<7OLt%+6%}>94#5QEAM$q9?)M55dDx0lYV};TMuY1S8Eq33Vn27}`It zUfW)p3T4@eghrrad3$R2kDxPuJKACkeW)Eaof6@}(zvS%iP~+59=}hoA?a|DS?82C z#db(NF>X#5Z8dv*+GL!kIzjHH>2$_kKCQ>k3jo&ak&#zZA<3o}S5beyG&TF8CyFxB z%K1>Eekwk$1n9ioHt*ubu;+lO&)H*c;pH`;kh;6IU3`tHxm3%3GayejXbCZmyPGg~ z)?PtL<47jXM<=42C!?CIfX{oMeuMQPD^lJevdTU2O@J01?}b2?JjEL799d4IDA@T0 z32ohuMrbn)T9OM_0C)4U;Z&wr>70V_;}5O|g_Mu7R!}`V@XDKxAA&Y11Ou;er*xTz zUjme`O&uY*Bg=j*%h<9zp}$NCAQpS)IWCEUjkL1Q_%7k-ZoTxwG>VlX*ate%Wr zMsEqYKx=7!3&+6iDN793VPIF>2ifvXr~kiFM;eixt#y%81y?7)t^;0D6=KC+AEADql`PPTH^OeLx`0Pp0YAf zmg6_l2Wqx?SdkbeKB0`vhWdOX_|~gIQ)lOqTS^>hLR-fR1$U)iu&OM^`|egGlwjBX zA5UlD*W??n@r_O?=@vy0B?Y8Glv27xS_A~7q(_$^jnds+(u|aruF)+aBLzlmjGdR? zIiK?{ynFY&&wbt3^}V!@Md|!b$=x)E1I0(gnN2Wi(fdCQ;l7se8fpEIj^HttE7A>l zZoZFi@?N|m6mnK30ZZUZ2i5Qu$ufl);L8q8J{mC6juXh)x{`|@!b%|uHvZbPm~tLI zz%Tr9FfPOUm1mNOCeEkpPH{vGi=o8+dE)uE#XRNpOtQ8t5d{LdLrY!mCRlWVb;ppR zQNAp@&Tebai7-Li)jzBD#AlYhPcJPkW6S&ullKp$xT^~!d_(#F3?GU)XIMOq z?V-t$`$eA9pKIHD5A3ibeJ z&~_&vGl&sIzAd?kQ6g1!4Br5)5X^lyqO{9kJ2@BZ*JamimaS~hLJTG74 z=Fnwl%U=keMSv$}@T~c=!(V1c_zS`R872+0(>G2uC%i5JDq96!R+}S0P0G6o=%o*A z1yokV*3>`vNqfg+eh~-X`4aXbQ~P}*6@OKJobV5t1YD2Io^W2D-sBmcmz>9ZFpkuM zxw>uGXmJ4y6ZOO%#-dQwmb7&2zj@-lz07u5nGm7<@A0~%IQ?GZFdOaBEQ)K z()hMyHEL;l;b(SCHHzw<)odzIr=B-dGbi7}`&t!b@=RWwF$sVC=K}*8Gz4i^23y0e zQ_KtA4N3qwF~ZU6koVCBYLVXztX|OOr_M;g%a5N2CKpQ=j?rn9L9->^#;OSNUH;K! zEgv3`iNAjR!V`}lN|qNek)(PBQ#3g?twlJNZEITZxfuSU+-i}F>RdU5ehwB`uT^}a z@LuD9PO9M>#8kC7MFGUPS4^Zi<+Fax^dUfY@(V&jH?%Dh8H$oYL^E^uvPrg^NL1dx zfTMk3WtPf%6wlikjnJ+l_s;vw&Iinj%daJ~pT}wic=fx9N|o-oeoASfB??d}<0!`gh;wmY)jf?B56t$cPy&dk)8!$q>rHLb@^nIL+K^$zW9 zFTr^p*=GM{chrh>}is@yA4Ep1n?n;Kp8K@8sXei5}_qsNch z2h9nlnw#p&Stje_4^gNn=T*gxUC8`>tY2>(TUE)`Fo)yq(crgK{7WoZ1J*XdM&llZ z_=7HaZAraSX+HGYkHyF2aQfC>3od5IX-GY6C46{LKcPtrEeG+Ohe-ufLzX&3AGlV3 zW_OKU8Bsyo6hZ@6yZ5}8n#y9NmH?Y&nzjDArSMv4wD>++1GC04Ue35krdg(_((=M7 zJZ+-BT$)oYJqLO;spV#G@fI@DRp&LUEhM8w6$99QghOUr$WZPL47JbP91b|mUha&PhTc{NQZ*YLZIEfdApuR9@FYoY!?374OPUdyU& zoafIvazW5;BU6ryb=41+s(L)3=-{mYMD$J>EvsMQlp2;uGV7O$tOsm|G4%pBkI|p} zKc$aU`ihwvOm(HoEQ?-*iq4qZj}00*_cYqi{L_n`-8&>dd%dVhD4KJ= zrlh2dcmsTk=WTL>?`duNZrt))fK*U9iPTF3Un#g;>Ag|IjRpk#51yxF7SUmUz1Jz9 zn0>oH0y7$Fz0f~1^)@kn!R3kb-58sn>5BiOaSOwgIJI<`K$lK<*$_F1z_Gwt7r@vH z;2fmokSn(fCHj^6H%`TFM1J`+`zFxtX7y(5cBD~}bu7Ii@sqZuRY(Rpet|J{jbm`w zx1w|M!}UvqTfWrHyk<4-6B0Tspce9jaL#U1+2?6-x0|eBSXVp#ConSgl-qVM-K9MW zd@$Lzn_CDy+;6rPwI?80qz~BrCYR$~ZV4r2i|#Rz+|Ec43{FqeOwEIv*y=~E8y?8osF-bR6oN(+kx90Frrqb0i(fL6KCmIpZA#OOiyIhbL>~BS0~SK9I8OJ@EMbBQWdJ|P z_it;t@Fdd5%oJZAnub{13K$Ff%kO)2THl3iKbek(hwl3&U+d6o){1#nd#Q=no0ynC zT!+?s_+R&+;}5acV!geiL?|2WXm6MJ2ZvjT^-F$67F+E<4d3K*^H!W)2?;Td{+I^n zbYPs8)fV!?mtEUQ`PRWJI^%V*Q$fMal&8zWXQJiW$gL{Q7;*$!*>EPr_rVUbn6Be< z&?=|Kx>#5EaE4T;mOSQ0>HK-%eWX}SDd5=Y))`^O-tvO|ykb*=KKvSBjQ`ukspS%1 zZXxQ)4=X8}5%H(|mY{dwj8G_@o6zo~At^~RPtLh4W2b5c^i*-#=l(D;Z9IOQ4A;{R zcyU;EH8qtxEq7*z$)Sfs`3T=lqpIL85UyUocTh)+b%{QxZ?Ns+Q-F_u?~g?v(;+t6 zhRU;BX)L}JX6~nvas4qH`Uukob+BtI zHAsV|Jm@{l5E+{~bwTJ2V<3 zD@p$9OjCr?R(h-2>5AZ&n$zkW7&veoKhHjfaw-|u z5<)x9zonmxgDyuLE0+ptV~cD#K=w1S$kl}W7e8TXdz{f58vwJ8g!<-CDk0nVMi2q# z7;Q@kwesyRlYX3?eXSFp)%vVi{`ky+xBufnbqe6^*U%ejAnYK)UEJYbKsFno{P$GJlqCjueV$YeD*Jw1{j|cY~Hun~x1=oF6mi$T}??TT>Wmc0Cuuvo3$f~|E{7fbZpuK zfp(!3jxT0M#7{GQm@GgMHy5ZNe^G~JDmZG~hvlYX2K`jUb2c8~5(Tz;m!r{_xvP_W z>iANUQod^p?8SY>h3*KaFmr%ogcbD@eo#18==bn8^G&zJe8dIxXH8;L~Nq3c%>QlDpk8w>uzZy}5MTe~#D${Q_X&VX;YGQpHerR}AjFwYg z^Im6bsMw#X@J2oJK$|dkT`Tx$HG-p1iA(+2uv1kGsGQ~ zsM?=#Tq`v9l9PwkTs{8(*LD5#t7z)@ z!=`a{nZS5XC8bJ~mki;`*Of={!nH`&zcDMrg(RTMhL; zzaQtlP-wyEQ)`;woPR46#qi9Kv)$FIN-gqbfeUhn`_^#sK@#AAa^8Svc5znw?-Oie z1D5s+{aHVfvt^&`u$dnIil}Ku4RL-3FFG1RjN@JsM0me^*&V|!fcNm=JcRqyIZkcu z=%eqqKM@{#)U?1Ye#6|m5Rc5SYDRfd0z7Yr_kvzn^Vw(bILIem2uh%liD{~?oMFc4 zCxgg=k?-NON45rv<%>fjHs4ov5D_)kY3SY4O^YUgYQR+d$vLXU)iNioYGK)O$mQ)%_Q%%_bYZsY8A=_F3paUIS zyEM^Gu0QC*lP=96>0TRaVqu_~I85>uFn_wX7($y(SMvw^IEUCYzTB|g4UzcaMkf;m zon`wDNX4!8WshHc&=Txnf0mS(DliEiewv4}_q7sJL6$O#-R%vzL1?YHgYxGG+lk2L ztU+;t>&d>4cWyJO$cz{s<|%wM4$h*!7;$D*pOs+MWDVZANXHWg zJ2EdmTj0jI8_T-KUe`95b@PI|qwV&yn}2{)(gFNTK7Ee zv$kD$7U&1?d#%#AP5j)olrEGjne{%sYl@YV(i8K1^W+&?5AF;&;ANOIg1=hAStPyjrNikKKAx&%=|7{Iv8t@H26+- zvn#$~A<@g|K*uugm)ljnFRq>GgRFLI?UrhsOt3yxyLf)w;Pz?9*3uJyi9&?|_FTi& zlI+}vze(M$)i&wLLWdgZr&(D{w#0STOkJmDJ}uvyhHOiu6wmvM*=!q`)+2u{cOGf6 zGORtGz2kWi^;>K&rOd+5plxfwidbe?-1z?Y$JQ593Y&vT?w^0P+Pa<4gh^oOXRnkR zdmrwwHq6P?o1ikq?dHENRN}Tc0>zGkYj}0Hk+0vkthEl9h(9}QJUU;yHBz0oFZ83? zSYN+cbBxj4PEQcGHtTyC(uLLv+pbH{ytnW@{@FM0gC7^4nVw%^!9E~^p^~YFSB2D= z*YK)KpRD?AFicA`OpEaOY?D zCNa>jI+7@>g#NwK7E~`M!NWDns$y~-$}<8TU!NDsls#6sk$ZOB@V3&&J%E|% zybQEHsVbv<_a|Ti_ZxeTEd{QS{_lzw6@PxWnWJoskPFM$j;~*V3aXIyI=JMzsUCbV zr^=js&dz+hyYZ%BilwiXtf?dz!cqlIbf4QpPuBi6x%}|zlg6b+!{yvzEh1Ag{)X+T zyWfey{UmHCsUDz3PMTnSrsl#wgprL)8)v$0hC;~xsmmBt%{Cboi#LAKEj>CLd*Pk- zLqV7@;c2)9K^GUibG&CO!D^6 zfaFDq16;$HWpH1gR$W(-?5J?9-3@t!T)r24M62!WFz-|&US*G<$I2r)_t`~~a-2%5 zpjRvB%2=e9{<=)n>$J{6u#h-F%thKT(s|`P8DoQ4>Y;5!CfE=e{-k|yB zh|AOLO_{r}ViOY@X)Je)}=1&K5g+r8Y-&&sm`f0ZcDg9N zJqo3%r?%}Nxmi;36Rvlb|8~imx@3LD_n~Vw%vdHvin^{0}&V5jt*#@ z`Ex4%fyo9?D@Gb2I^mIP_Hte)>*3WjfQY?|X<(&^4%|q!$abTv<@RW!j1eYs$NFf@5ZOx!9}6JYU*>&isBZ z^|uqD2!{tMmbB`->dAawGH9~kdJfbxX{NtP+HbU<-<4|NfPU)-o*tnBk2K|)#` z=4MqI-WM;;h>%X(Z>Cwx=rYD$DaiaNRRYAGT$P;${q_sTV#VleBXJX93{>r4PfH@L zwpI}~tCQipEvk5FS--}#K&#GmR>Dh%n-p&b1P4$M>Io}K8TjQcf=2HPM#i@K2SRSO zb@?_}!Dp}dqidS?>0#s_^5;m$2h(%}wEQ2){@fz+T%e$#s}h-&!mo&{T=CE2toz7X zrzuE7uCLVHZuXU$K=VzUMI8sKK6wVHh?4Hgh#^HFfSR~wU>WE3;?X#P#6Qo&_7>Y4 z(=0vKHdJnvwJ9G)!N0nA>ElOSS}is1PDak?3Af}9bfGZN>m=eYS>4oRv>r@<84?o0 z{GYnwHb~H%c>kK9*Os^WsF))r?Fp#4-S35Ctq4&HmH-R5dCA1}&>)q^rqJ#VptXxZ zsoT!>&cW=+Br7?iZd&~m=i1+wB{8dDt$mAwEU}u*9u18c_JbxX(LWc&hPejm9>3+s zX_GL2wPmz7kmaxKW~-~-u;-OR^T2jU2bA7RzCK=6b{;laRuG9C9t`6l>S0gL95B13;#7^vM?y>54F?K`WejGcYL%_zS&9L@uWgJ z_Cq!4+O#3n6phN#FPAiXc!~JYf@*et!M`qCHGa3dBVm3t7?-&@^Mmz$~nQ z|9XwJ=M2lWy~#$NWCd}ZJ4YRGRW^QM`KZH1)5bHxmQ&4$0KYOYm9fr6x}M&z47jvg z))Piut=YoQv}^IOJ$+{L%e;FmV6m|(jDLfo2y#dXo0c=L6E5oKE8BjGKyP-kD9SVk zq=eRRdg=_TSJH%ZL0K&h1;_)K=!`)y9}F#pk477FVDdWG+VySB7*akvre@*2T;MgX zboI>{Lk{AupqMG_o@`W2#6EmDgZJGAi;$3=jVtI7UK&cq4&erKc>6v`CyNdc}J7_7R32!6LbcoZ`rsS7i53=i^+P2(M!4%th;FuSICEsHmDQ|^01p(aZw;Irdc$uHp- zc$+4te^{p-HPzJ^bMJ7=XXQlvI5kdeVZTw?XhUE=c(E(Rx$Hk~fXVL=J&-|IJIB&o zng+fIZMmVGee`VFF#d~Uu$N6f1qnQfSAM5EkaPJBGJ~JZgF=td1$y7Ua!Wz-$sGprn)jO{*LaL6zVaSM7L6Yh%VBbail7BbtecgstB~_%XxgC^~sb?GXSmR}P zmC~IeTF5W)g7tGX=of-1+YK8hg#S~A-#4xHWfyeVB_sSf4gnnwbk(mFdQxJ<&Snc1 z`jzzqwQ7th&+@&EZCIsa!#b*pO5jsUxb2qP%alN`EpmLl=z5No5_beF%aDW6$3wh^ zf5Bc4wv&WGFFqT61<4%&GcOYomI&|F>zo~8==MW0z8y4x-DXrYyAC3_$eVa0E2x%b1 z$~V>=s-oK*lnA^L9OmP=&6C|&9QVl67Tx4zx=f}hQ}0KHc%-~(x=g;-3I?#Mf? zgP*%=1a9cpKV|;a@6N<`zTkB!462ELIn8Dkrs;XpFL1ZZOPmT9A$%QB&wkWgak&IF z;<>EXG~?B=WxyhOov`S0-(snY{NwYQ4UhHHFI@K}4qty0rp+q1)i_!+l~i=oDYhoX z9jU&{8Qr#3y|yX&VnUsQ2c{wZ_{!wstP{B$iMY(?>wM=g!an*idwk#bPL(dUDlvIn zq5H?WN_#YoZ+s^m=#Um-g<NLx2KHM1jf0Fe2DylbR5S9|+^V=ODRa~zxE=gi zi$0~}F>b2(MA(p=2pC=c@8iDv>?k>zRkg8(95Ry&!_DeWZq;>)G4p(9rC1@&io6|K z=&}Oi9Tk30e3EQw=`(K9h{3yEz7J6t_2}h$Ar<1ewX#5Xf8={FH{=BoTo^nxs`J8K zC%xakLluIC3zX5aJR1XBNHxs{_R5bhT7P4Cv@y? z$ zSAVmug`VCI>9bAvpws@O4d-t;=F6Y)28u40Z`NDr9Btk)0fM-%A&Gq$zyaamwtI<* zD|4)yq44(2FV4<+{=+&787vk0GR~(VTFR=OOpt(_SCT{l&E38eFv#kRLis4H_!bkg z(J~1>T-i}>wVKsktC=mxd<6_exOaws-muEvR^Zu$Z!bSglIz-_4$uHKW%_*ndmnt) zU;#EJE2E=7IduBjg+WGil#T!1-5+mD$Hno*K^vNw0%EHWe`x7qOz&$PZgcBzruLje zhDr${i@1_FA03{uh15xhi}58%(pZ|Ft~?zE_S!iUn+_vBewu3H6$~lYBF26iW&oA2 zqF>TqVJpZ?*0}T2jGeeieX7MOGC$3;2h%S?7okOFm60@hTz#k4+Q1|H$+@f_+l#%8 zu98v4T&i-=!h}^!sN?iDZ^y-4#=jBo1q(j;NBKyH;8e+p;$wIXN}AQk_c)T(QIECJ zc0J>R;%fK@RilIP>uwRh|D=afL9SKXt~eDItW&iqh{}_vKq8@#1%l9Wn{>W}*QD;_ z&)?Xb7nU7eVPoz7PT$TtN%Va#y#F(RVtu-OzdZ6Ds_-7RA%RM2?DU$V7oHN`fzPQh z$OO5opQ&Bq$$RxS_dmvxM*H0|-Z+MB-$xoq({NeH#(bH`$) zx|^XeZR~G#%v(3Zsx}ud8l~IR{1bA^r)IVR$ICaS=p$aYm36S#F~eeO>FrZ(T&2h< z-916xy$^E|*mL|7dcC2u+3mW*v(u|{XjsqfLS+ii)j~;&c_8%H%Y>;CKfo%8pR~r zbLct1z*#~5@p?_OSChg0K4t%_y)`j%3)#4JR-9|HqAotmo|{-Fbwl$QwxDs_B`)qI zJzfp`W0~g@bX^izZD;o#$3blY&G;!YZF2)Mv%8vGLWzTFu|9018YyOGD(v_B7DCo$ zI5|Lj8)+ERzXV>Y8?o6LW$zo6cyb<(?N<*UAv>nqqKT{4HfkLiiRPdDoNH8gcd!HH83$oZH_*Wd>X4cb2uM4SX#h<*XZXPt)Swnqlv+abNxm_O( z&-{3_mx)ghX`twX^rqRCJob2Os~)9|EI7`OR%UfUEXuv*Srl=7uXfc}9wx%4#CyWb z)(k`%?@-Ah3`*@A+=9D=gsmjat+R#=#=a+ue{3C8x^&B8R#`oUv1p2kXk=4{We)p( z!sqNEr2tEBFCR0j0FM_K-#>1>cW}Hsd?_=Il4)P-Bt_ZR(Vh%zXX`1VZ!6CG8lUM7 z$2@|^pcLV|__Mq1-^zickiHP~L<%4Jji z8U@saFTKe?So-Guot9QwSJf^$%hIi@%1$J&E9Kofz09;T>~H>W!%$><=z9! z6;@AE3xRa~(I>4Qw&i3OqcRXDK18v9jNV-&<<2vsT!8+p zxHBhA)%pxD?=<*JFlURG$|T4o7Zgk0_xRoV!k_Ewv-;NGt$vT@1iGIa!*rsnfsHH(xc-QudA(1I zYu{9UE;tuHp(j0FZcbiY+~YwU?zZmV+N9o= z-1`f`MiWwQBLJa!&hcZ2Upur^-p@7jR+=d4UK>w@0_ro7{qBETe}KANGb{j{4fWtI z*B=OHm&o@UtlLJJD5}bwbZuN8eUz{wd_%Oe*;LqnUwL;Cyh!e}pgz;9%{u~lkV4}V zGDtd_TuO`C_d_h~MEG{eDbS6s0cLzvttz`G-_;771*bY)f?xg`%$L&QbmKG~spZ)2 zABfg7iZBimY$Y?gn0k~ zzaqfcM2U)D5u?me1PA-_?^4Zi!5$V$VrQqvTrQ2Xj;-Z40W_3zDA*I7*({Ywwn+-w z5u1?auiO~<#rJpIS)pfK`tU~OUjj4P)GjNWne5$29L6d&PMl+!92frfjMYbm=SN%? z)nhfMqaF5%v6Own(2YN;+*ggxzwZZzguox&ZFRKF2nbwaNf#NyxWS&dub#n^GkeB2 z1L%3Lw^vrX1NIo2tPXa|u79FFarB17`;Qx`s=qN4KCRl#PODQ0r|LQMS}e@-z?U^D~#cK zQ#FwUjD;77U*)BH{DkdhZIre&(NX&FIYG|IbU%~VR$N7ny3~3mDawZl3VRo44%2~; zxX_wAjJr$FhjK+1ZHAbG9vR+Ju@LHOq?BPzX_Gw6hy|4E%9?i?t->-vkDUVYIe;q}$#Fa8o8sGj0;U`xsM zo=FxsfbwQ~NqvGiK*i^s61jYU-9Rv)x@xIoc1NLTHsg_wh*AYM1$mOE$%ncW3ar?n zj#80JEXa!NI8R*Q3&wXRL?`FQQ9Juyq6g?SZo`&f9L0JBhz<_y4;0C6__NCbYSrv! z9*qlbgjR{=gx+qj?r%4oJVuSzD#toq*53XOH4=_~_^o+)JV6Pmcwe5G0|-=*5gzEr z3l4Mhl@CVU*jM8>nImV^FWVa}aSCGt81@sF@mXFsW^{it{FD}Kz$q+(OaQ8~PX$Kh(K+$3E=ngojuOQG}J zrereD^>_b)UT~1XI8Ho0ztb%9+S>5ncZm^VELcxtB0R7LC4AtnfY|#_c@`LdEt@aP z{&4I@pwE0K=IWC+Uwz~%eP)mN|&Hf#BHdIf1(3>Fp{NW=U zd-#O%IHP6Emv$Ozmmk~SKveLF85;%b_s!=8tiv4}mDl)q1hV+MA{qz_L3Rr=~lsVRBM}`xYHa z^aT~UpVp!KOKL`6_PG~Mkte+}cjzKEVD+UvFsjV`EUf&V{nWmn#zhm$gf4oEwh6B3 zvx7B#M2cLsS3#^9COWEdGkO>8zC1Jh>*}e^yikdL_82rX|cweT0y zs^&Sh{PViZzDI50iv6k+*|o&|%RdhZxfVsb0FeATmBtx)__krJZ(f!+(lmaL{|KP8 z1b)({l(aTcKx$jJ2L&y=*M-!RVWe!neJF*4@p=WYN`1R-&7dHghI zUi)i`-T3vIegSXM=6Hkk?wF<}k6u~l+w{Dz&&%@}KEE$Lz6KmdM@x7O_LZ13!~2dM zn9t7G?Izu8R=3IUnZj(np(eF8<7z^=#r7s7xItlbXl$D-U%T}Jo*RF;=LR;)`MBl< zJ9h1;tHQnR7pDo?pYWHiSiM0hmu*j)mf2?}!!0y_c+3F7f|<(*^8mNk(r+60%99#m zh1Ih>YSp@df2Ml;Dsi@2R$deHLuoCM!it?ZBAIL1MGee5Mm8e2S-!7G*sOru?32?_ zYj@z*ka<1)r(s0s&Y&M37guBPA7F>1B51$v1eVg&snLU%Ri0=sHe{Mv0`*IWYf5<* zSP~0=bP5&d@|a`_u?Pudj~qrk2qG9Dh?naRIKAGsU2I7%&+q)4ODnMTx5diXU7+Vk zO2mrVUwr?o?|9YuQ}g~#8GUB&MxgQ6i%kQ?!1L;-6E`|f_FGM_S9cYVAfhq=qM^uBl#-^7ZckWEs#MWMCPJoUGI~lzI{^*teOpFXNcM z#C{)NbE`xm>SI1hD!J8>d3=|j;!*zMx#U|@Yq^F7(&SIUT|)l8x_sfDK-^8-fs37~ zNyew{wla!9rTyk=dJiI3$JKqGdNcU@=m+QPF0MMRT{=9C#XB9`G`aEBBJDkW#%{;v zn4pVE=$G~s_VG{iA4DsAhm_pyg+Sp!jx0sr9a%gpDzBbo(sG@Z)2eE&xU2Kra-q3q zWuB@Q3wMHVI{^rr9&)<_0O)rn`iKECdBdhUvz57&ocFmW9TsRiwE;Bi|5GU%H5ZAL zQS9uuhbbGQY~?|5YfK;RU-|rzfR8>NcZO_ebe4nx`I5Y%iW|MK!<>df`UFOvkSL9)_e3scYO^2|V7Mk~wxPjuIGO2Ke7 z;ABDkcuRG6vRtHa<`P>GHn$FK>c3nT#wJhu=#YDyC#D_CQdD&D7BSxr{b+onX?AFX zb$YOY{`&RnZaf|jtfdo^D=iw0wYmAW`E;ebLOkBJW&>(A)`}2jczE#sN)0>w!4Z=| z9CWtM)B~N0v`mK8c%5=yyv(nlK2cj*0uXv)=jA*uMyc#0uhF88j(R;3dNb8I&FOQR z0WyCfP40^K(ilm2ML({&QFW=|m#BDn|9c*Xc?o&d*rCR8>e}gISSmVXRZ63(26`)<`Af!$JdIn zC;E}FIYl@AO;5%aoD4u3=n`L3@ctuFQBs=!cSp`?C8@|cY|TuPQVlpn4XtHYDXz(1 z|B8o11iagnQ>dP27!ekiEso@$2%`3<9oL74*YiJ3a`Aqs7276x9u7>&S0z(ttR4B{ z$8}-0sP>3>k*8OZjw8g`aQjf;K|eJmf92`8V0UZ{L?u=^f}*3kA90`wuLIaYA0=vE zhX0|Ly|yx(G%*a@iHcft>TxpG8wFIHr*p>kA!adbY0DmSJ&=!rBn!H-MT7;^p?Hw` z#L0K}g=qA>AmgcWi%wY~wY+T7UDN1#9OX%-f?-)QEcyCuzZADJxunShrIa{g zSAE9>v=yy>b=MW+ZF<1vqj(B_lr8<{UV`FT9n<$&!3e%R_K4@%%8b9s68z}*lI?bm zw+MnfR6G$a;IANf9Ubmp+7kUm**I|@_8YS>d3gAV44El|!T6OQyqRytasZ9lu7yid!o~tTpDfnc{f@MZwTpcickysc z2RzO5gq_`d;6FkFy&i9NwaRQq`t=rGHHZX!P;5ulc-d+4qDK2o!?AFf-3Cq|vAIf| znl29b%*?gI<phrPSE=7S8 zVLW~YrBn}CU5k1#&* zyc8NaY^yf#6~cO9ZR+>Vf6jajET)oD&t7C#lgW8te)Q+aaU6|-Tn{NF+bS_?bXFfz zz2>#mX?mCAR68IsGzVauOV`>k0Z8bWEli;B%DH9?q>{t+Ax~p5!jfGl^!xG4D3+p^ zWFK4wNWq~`(B|aQ-+u5^@as#1GjT@}}M0W;U>4igvrDVAD%I(m_HHcZ7IU{&F8H5FP#R$Gbma+}b5UwC`OFd-!7dy*KcY1WAu?wr0OWKo8LC6pm zzwUZBzKe0Vud%bQ{=o&iZJ{g5nDR0N$MhqEEYsY&53mYfual6Cv0 z;WsIIW^YM8$Vcy-aXA}Ql+Ih8)Y`~LHQ#?w>Yt?hh3qlu$6~OA)MhiPN!q+JhC}1n zz+4h;lKOxx;*;(JdkPzo*3}@TOaFuqMHD!ps#B{Y*tv8^$ZOemxO%%Dp{CL(=%qgH zLZ++aFRqhe*0s3n`y>d(;$O%|ka$%WVm0=%m{fk|-5jvB^|S&bM;h4}gzM*Y*Db1e zsnpU9Z~rwV1~KC*d{V)uQy2QU97t}J7w^hYzvl~tilJ5s7dpPTi8b|TApVubBHH;s zVZcZkyN3ibbH%L2iN>R*i`t6>dGJU8fdIq=j z4Y`ge`K*|1h8YCXe|CRwFHd0#S84e1$mn!Ym zDJmV2T!kH+Txj!;q=#7(BK+IikAtiA9cNqQO{s#}iKN}|l0E9iy2Q}cnu?k3fztR< z4=<%pupKP|5^UsVdG>0atk8Z?Lg|s}jO^hLEg}7;&#$4vkHkmla5UzP5mfSBuw9di zG5D9p+qVXmX=Dl@@1DQVX(H<+C+ zY<3^#;}OP()5^LrfZhVXg|k9`kEGLxh#WkXt5hz^=a0Em_d>m|ai+)zoSN)DF%vK# zb!(dv%eP^(4YHXP;SYr#Kd|h?pq*B%l;&}!C9pn)y)z7LnbXZp`OaDJ3^kWN}?0-e%tzKR;|`>u5E?Ht`~Z?f3kL zUKg6F#NYzIOPhf{sE|j?b1R8%O{!_EQS~pyeiq5rMe`(Fy9_O0^~j^ydBX6FKGzZIe7J znNGPTLMs_1|1jtMD|Q>N5TtwtUd3`nQhmnv=~*f9YXw-#@v%;@mo_Y?1KZWaufw-w zv3ShW*l!h(j*%WJ(%%FRl%;m)InC`Os|7%QlMtO8e9DK~IKYX{`5P;Uu=V~9mfBOT zfhQB@#0wLFbp-Q0WU;!I+MN>-HS0!3j(tyHR@EKvov+Q8mP1|t5{$M(F}HiR!Z`;n z4XE$0Z8stsZ2?4zxTI;NkG}niZz%+^XIi4#I;ZKPJ%mrp5Yg2>VC`6{hC0a2qH}2y zud#_8nf~&NoPRyUMQ7aN-pE}$71BrVplI4bw>bYE)d}XVw;r9&l1~fz_>VotckyyE zGIwKV@iLs{eN9{_NNj%Yg{>UFnLr;`AK?89hW364uxFrgr0DYLA~+d1gOrn*cpGIJ zAQMfZ&Ve$S**U{R*GcaqVrQCei{7P+j@%XV0aAF(0aR{9g(qxJB+6wjYqK_B$=i-) zP+4eEtTdhAHbX|nvf};1XHm2--N7%v*&3>ujm#yx&_0u1RhoPG(cf`qgGBF_ zwA?O-QD*X<#Rd1s+60`qgU&!sT4gXYDxKM?nV zg!2KX?-;uCo{H{kTQmLcPYf@S?p8CDciJjc~TQRd^+c)X8tC-6%(0-D= zE@>J}m#-63vM2?^cSl~Z3GYuovxN_{mRYho{APJNaUB+Uq&+ZdhGAU|Gj%a1y46`;P8WJ zeiAvFe>q;|Y&zZhltLscV>hHA#^1ktzDKUPp5!-~{ z>>JxVH%Il$I)UGO&P-7qyT-Xv=)+6q_Ve-T9Z$lm1aElMAt{xJX_nVuy@Z^7Qb5o| z{k5R4Ls53U7nXM_3WE34`;n9?D3oEOarB(TEb`|zF|zb%*UywufTh#bgK7Ip3wocUpP2ZZc=(gDXObYAz^p=yROoW!&HAhBBurR*HtTXy}@~;M( zx%0CU&duG01N&OV@F7a2C>K)mOWpWoncDVns;j7T# zx75w+w8mKNUuD~B`032Hn)lQH-WnF^p4%npUD&I$*R1`Bi_;MLPa45#6p$4!%o!tO zr!kivXROX;k*@7=8h5+_l1+?nF$DJLdgP%620LZjA%!9rE*`3H(}1_f_>7c4=KRuzBY(qMlCt5FHD z7Gz@!t&C?08wjJf&*FVK!`U;W4c-4X7k+MAb?{u7szi!D{W9ot6Uy4ClX=fBZ#o7k z*Rpmq3J;0`zZJ^y`v#^dKqFROgY$o5&qa;;l)Y7b_5;Wh+zHOKuf>aU?me-+ZY%g0EjEWH*?zY~OksF&o_V!4Gm7knchYUN3h#khsx(2Ab!1 z(56lP`n}#$JblS*KtN6tX>VX@p<-VV{;-?Q!Yhvz!Y#&IIH-VQ>~i~bu%Y*zhIgrr z3D7aLhve%JI^(8G_5i80aP4Yca39Z*4M}2bg1LHTesSf~<2-vor#sL)&uM>OqxuMS zX%TNo9HAc&KwQQdM_!S85Gr>>uC_}exSypgWiE5jnwBc=k5XftH(0*_ORBg;w*=_XhR<;lbr7fgq9;B+b#l-Ht^OB}+$s_##*_(U~#-rwdFK}pUXO&{8%-%*Z)J)SH?B@{eN%d=+WIR-3kJuLy#0y8YHE=#s(rK zEl7tnh=3qnBLt+orAxXScF*tce?Qs7y{_wA=bTTyLyM>#Lhm!qoc4`54Df-Olu^f! z!6#M*=5s)H@Ec>RFaL#`2X~D3YfK&fR2A5HE_4bd13p8A4(~=+?5HOI$f>szZJj}n zQas7leui(|AwJ#|=?-S@;{!%CM90pCU&?LlKjcq@hd)7X9 zcQmEc+(pQ36yLUmsJ(*GeOxc>%F&~w_x5EU0dT?gKc2tE;C?Ly7>u2pVrKOvLm7+s zH#|qjpvJULM?2%i6GQ6`Zpi2XW+-ZxGQ3+YOW(mu{)(2fs)#-!|J@ags5=egvX$I3ICgUqMgfC+CgDZwGsNHqV+QN455siq91ndj__?8bmW8kI9fh6v?X$XmB{AL>GzaN z|7SC19$9Y#Z=omyMbI*Ry-QyLu+tm61ME8f`>yP47{;~DFi-!E0mnAg5rYZ?@Zr!8 z9VxO$0Dm4rNd(yHH%J;j}rp;zLYs2KgynveQ?%$ z<2Cf#mRM$5ChhisMC^PdPLUQ}cZFW?aW_glR^0Bk-Uyvskow@KNem8W-#s!P`(mCs zirbzoqT2DXlCW?YJ3um++8LyKUdWqnT`ex(KI`e_oT)i@-7b5YRTGVW)Y3zgE({*wd#ZxVbY0?%KF-4<$HT>0LD`QxiB1po1e z>C+PFof|BC&70*K(veIvOy)Gi@A~70Mve5U`x3}6mb#ru|7)ZCyS9rJF=))#r|Smq zaJMd@8bl4Q9^X)?!&G6xz}xG=Vqe@|obC4Vu=|a^av`QcKtfhJ*bf;hNDRL&P=ImINa@o_#7<`gXW!Jcj<{jZbu!kYdo44kN1;yS_>)ZmO|<_y7O zu3hi>IMC@QKF+UplOp`Bm$5TEi!FMXrpP z7E?WNvE&&kw^fq+JG1ep`o9yD`g~_-t#cf%V0Gl(n9Y*OjykzIbWRRY<3x3NL`Bs+ z+xMJ{Zt>MmkUne`z9H0xrwT#!DA-|nb&MQjxjD#f8UWYnckB&ZJbshuGMRHYJnaG! znQXirgh?MqHLYfev_u0xn?BQqo`gp!-T4YMgGJMp%=jEn-fWfWW;7Fw{tY%HR7QV? zJ)a>m6Iw4(_Z3YcgbG&(Vq9nFOj}tDP7aNGu)E==1CCT1y@w6&J5%3tOW z#{`seynk`t5dlnfzPGR^=>-EU?r3K8K?33X4}3F&tq8RV0b9q(J8n{yXB+8@^)(^K z&ruK;_sjaqgP;6rTFrj@HxlT3#rx;LNu5&LQ%1oj<;F5*PO}ZKYmd^zn{*fko4`|B zfc%^0t0z+dYn8nAxiYV-botVbgEpX}-$po0is#Tm+PuDG-e}vwpzbbT=Dcyy)`GO9%XKmalm(uECXO_Ult>e z+_VZGVV@f>W0q=i9`lv?WW5I3g9 zXvJ@s{mfIX`t8*ReJT>pyZDC2wwiUWaB9PNkA4YU0VEW1ax~f&*R+3aR!Zp9w1aNf zWjAp>;_#qzcMX&Di^?{w@ri5oOxLm9A(hRPcr!p{Lti+u@AlSe>bAk+V<7D!WY{h@|Rbe^!jIQ+qUb!?`U`hbO?;5CoFa*D_Ujjc&=m0XF6^~W@4fp zMXrMu7px{%tcb>QY8MllQu0gRmK>Uny)o-j6-=O4dOQhyx1cR^=qFa7VmMW+IWU;~ zk42&R53MpG$H^O2d<2rEuPLwN6RZVTFIZ1)U)kn(w@F?nE%LP~|2Z~-jlhc;4Bn@E zj^@0%c3Ffy=*JjIJo9`nw-{du3#e{7Y!((nSy?-DS}3pLOPHYQT0a^%(Z*OasWMlU6(|FAJ*WUq!Rt8Q~dnV zq9-l8^Oal4nO>Y2x-Pz%IJ0f6Ymy<{+(pNryiPvJw(hS~iB;2gf7nT8AKzUWE>4_z ztUKN-a*n${Zp*9(RHn4jb>7o@PcIvtffAi65rLoNEo5Dp|JLstdua3i=%cB{}X`s&&nB&(Y z7XpuiGhEW<-1)pJFphLX6mb-0@PQAbXRVVZ``1!XMJI8oWSXh{^1bFft9iUQ$2=AW zsr13N+1^E`k$bznF@5%1h0M4TpoNRXMJ`q%4XvCF7hIUvp%$#pUB`7rxd=!S{pfsOZgk_FY4l3 z0Y)GHbF!QNr(95yJen4X;LX2L2rH1H)B{Ia;e*~@6NX^u5{GOwQ;%rs*+Y;I* z0T?f!@`Acsjv6i>$}A0!(FA`ClqNwj9M!NPJIJb6=+Ze93iQie1G07`jnfDZ9;}jq z$9sp%xl=PTkJ5l;=;GV(U&+0pq+JT}#YAYWzDIp$bBS@p?%DO8oAOYBBax%x$L1nr zC?81}Gs5^;<`r?9N3RcWlMrB&T#4K|r{NfRsxa=c{!Mp`qA<-zmC7MK&*jM_$;$}c z{R2$USqJaHO`V#h9sc@BTAXs7!sIVhYyaD-J!gx0A4RY=BeVqT00u8xZfbnVI3BXy zwdG>)4aE`IhJC?^L-u88KMcUa~Jm-{QULo+9V8MwDN#bf_h_UN-JqDi7e&bWIYrG zcAy+^CpCRzFI^jD2I_p))&%<7xoUsu zw`j7zogM3M(2s^Y-il5Rle#?KXRD{ZwoA2 zF*<$!XlfOaJ&3(wH#1nW#gmzPqTTt%{XSRK3UIX?_z-td_J9Jfi0st=5@f+q*!%68kF9@?FR6>Y?V(f^3}kNJAt`p}i|blj1rF%3^6|WVH|~pn*AOS_!%RNOE1%;}spC3=2ezVN5LXWo z$NvK(id}4SUNmy;`CB8I70!1b%M6uN>}Y8>pr?!}RvupNk`@@C=NN5`e_UeF767Yz zLcqGOY=cipk`0d68s>%{dP&QOY6jD1H>rT+tD@?zm4CHuA)&_s%jx;)i{iRwpD(-h z{Xg{o@T0fx)S$d$FtY-n%ED)_s<-GbZVHyTfw0%?g@1a;Wh#P=RfylB+Rjc@C}##_ zB>TDtnG|Celf6{{2spx8F3=`pM1RUS^eR8{`_#_uXOC%Su=T-^n@h>^bEtcX4Li;fge;)MVN(WWkS)={#Dwut=af%9(gii> zPC4RI2%wU?0g(`?iIAOr;j5fNzBwig%k=qA`>!t&_n7JJLX!hQ2J8#{1`^7L?;*$w*4+ zk0`X}_L%C*JPh&VQQ&@u4$AMOnDqQY<1DHzr)qW&7p&tvlaG5wHt%;~^$$iU7vHD1YBr$0HG zlWiqA3Yk*BP_NXFmV+EVWme-IHA=Z zjDfasr?*XbHP=i|g;Y;KJgny$3D+HQce`T&I&Hq;T(cZ<`B^BaL>&ABR%Vt*4o|jR zD0hVXkK|pZ%{EE$J3)5SPFvbajlrrg>PNOk?@YYNxHsa3u^%_{sSTIj$09Ns);hQ( z^XKdRc|j23(S z@I9I3B?ItHSO-qL;B}iUipc!*U)}!}r8Me28Y1C2h}M7X*Dj?~>oUcyJE{n=Fk+JA zYu2lm;#<5^vJlLXT5WYl2}kO4KIbXKUnfT($xtGbLyx8y%)~)T@q()+Yt)Oo6xc0{k#o7OQ_+k2fEp(StLk;xd zxkL=QxX#6s=)j~vv%r3+Hm&8Fx`f`3ND(={tD|wSjrXc_HlzQ$d6+_5{Q!+c$W!&eSImCS z+pTzp3}`1z6{yrqSC3*uXZxxR68D_31!k?_BXf`p32?uR%QJbDQ@#~?YOc>3xSS-R zYb_$9Po#PKei{^vlBxLub>Fo}8Y3Q5l2+kYKU#39TaS6*JCRxuijAiJ}$}?_Aa~ELdk)Q;L$UarxT7mvyY#Moxzv}Ta7QIZHPzz zDXF*v<)VR()KMyktsCpNC&=r<-bo(P>AfT3$>#dEMYoxOZIVq3=jvg=PWJqZ(;Jiw z=H8i6j;}UKK?>e>$rx^yt2~pFgpy&5wXZK2-#DfFr8^#q^u>yA8)~b_&%t|tHCr)p zOf+LsA-f>xWu6ljzFYMvvG42|EO79B+4{cZ?ff10$As+_@{|MAkGTH*}!n3r3HdNvc^vB zBUbNNzcPWB$~pmXZ5&WEi@7rQO_FB(n00@tF)7-fUiQX&{CIZ()U2NQx$)xAn9~-Z zrq=NDi4jXZ1)XJ6^3i0@WNScN4*KT0JDzo zGFL|7_Srf+BJbmn>GGO!e6-;D*yL&n?&cThjMl<8%L*ZnzBKpa4>fnYBUD_1T(hh0 z(mWcCM7kxKzdZk>CuWZDPooHs>0)NtH%T_OIxA2&YQsFThZB*R(trNF(pXVrTdF1- z?E^d<`19#n2C#DemOFJ9D@0|`wm25xq`T_(bJ(16d|lw@P#~)ZDr6bS(N@z0GM78%}hVaV!2DF}gV$e?5F$ta$ zk&5IaRcw@z(8vi2&LtoY&Z~b!%Mvj%NlipI8BHfyth^-eQb#(F^zf$n2@Ljj%YlZ1 zc#wa`))#cWPf6Gk_cTf(q`QM6-f`1JnQ;z1>nJq?AGAc5cfVh2qt9;L74(J3EgJY6 zx9im>(0&_QBiA*@lyssNy|Bp`<^&v!y)3Sn^fG`<(xLMHpRiCx+c~WIuqBky3eile zdohKwtYC)MqQP%#9j7|`ZUqi9%DEv~HqzkhoQxx#tJaIxxq0j9*ax3E3VMSj81hGy zPL%(WV!GWQtjp&xACMp5ZGtfuG5gt<02WRa8!=QE8cIpkPC+k|d|{5(W@HaVLn+qn zBIMAF67OGuLE8Qq57m*;p_Ol{*k4t;FQ7FVNJ3lFCo0vv&0x8$Xw5@WBAN*C?72P` z|4@^8*4uFx)64f{PJSOx@6NmVg3k_xuof@RqP!!o>KabA?5rR?=y7))j#BJ@8Y#AL zAUO!H?Iu82cut%xq%CX?)e2bqhkJ7%@T}6||1Kxrf|C{B_&||`kB2sYH7a-7R&wBj zn6l7p*iIPb!?JFcnrnO1)JD^>}$XrL1I*YQnEZPKKBOJ@1<0~2!^@SuBorCXe&n9U~rZdM)nf(KT| zv@d6!x&VT!rzXYaxzMW=tiPq`Tmsmcfl0edN1%V=T6C-#F4tciA2OV`A<+S&f5%tI z$1&ZYUpy^$5!mek(p4txe3Epp#$=)r8#aH~ls(?O_ezbc^ay+8$IrH+Ayc$Zss6n! zd8Yo;qNA58J(}WHPeW;WDhO1EC)Kz6U@U8Ht<;*C=zr8bSToC^8x(HTf|paL+An&+ zJ?INXi9%KU)8@U|;OP6@gK3@OM7jx;sg6Q)W|o_=S-|Y3$m*F95QB{r?^vB%t|P!1 zgGlBYwcP;rn_tVi`>X`_s1UQ@5^;EjCpL(ZI3$bv&mSCejPLO^W>+*slIhM=rvy(3 z3;#$$)H4~@=X?|H1BvR*xhpWY0x-Rfe<}CrtjcwaC^j>V)bs=c`~kokH;~R)Rw=h& z5dJQik5K{8jY{PwFmM$@Jw2L>=gT%INr|gVM_w56pOcIaHL~WaRV2wJ0EIvP}_~ankbUH)6dK(nlG5U zpx9aN$Wz;!G7XOeT4mlcS_S-I@?9F`2`}Y<7H>ML*pT$T{v1tFv==xr_4oNZ0Vr9( zwBb{(_156TC>DXJHYO*`19<8E`mS>)SF@j{@~V=X&+39iYWEwsAmOA~hki)@GyzKY z2h8?;^L~0FC$4;;ZV{O9ejifS9*7z|xYzB_AHyn3iMEqpwMkqUz4>J}{^2?9=R!L( zP|Bo$5a_8i8eN|!2C4m(V%^#wnQBy_PW4DaQugKFYVXCr9OO`cdQL2AeaHLvXD7v} z$PX#r7PPP=zP>=*Fmj|o+xwpsy3^4Q#(aFGd(wIEPD^JeJCf-!yrO0y!6q(KV6?f6 z=QeV8uR&sc9KXoOg9?-}ujFChNE4LPtKN%>GGO9GO=EQ#Wq?7xxXKC16Vg`_B?I-+ zo_f=8z@!kWz}dsr2r&O3;}i2Ty$5i1_cT8;^yI2tYlaeM9f}MZ9H0WUiXT>_@3*GN zP+~Hs!%S4f?j)fvjhehsB)@*PRht9|f@dWFSz9baBwRHQ-a;`gpI$7U*Ol`Jl4F2G z!VW>k7n9*khTeiI2bxNZ)_OdrrA@;-ZP7a!QO)l|mw6}T8g4)D7L?(mo6}&=qST-3 z8K#h$`4E{fz{*@XDa#;=ivEt#F~vgp8tQ{ZwcKJ%U^mH}Q9RGeI<;(i`%A=O`GQ>G zrVpfYxnEY#Y`W}{&M%_#?fQe0Yv|L7M+4+xle$w$q)UL|#I7Go0qvgxL`m&v8c2s# zv5lSx?Hd*O&SJ`zP$CF*Ict#b_-iB2QA&QL#6&G?%Jh*OW z?*I2rw)8M90ae?y%Kq2|7~v*v5tNc z{(+8Cxu@__&$;!V$DELWAL}4blZm3F4@P_Nu#!tMG8}F{M>D5?HemV$SeKu z&D}}H#%p!2)h&ZGt<^sL;QhNt6lriRY3^&*g~(9xCNImowPq0WtOatXLT}P)q@B2t ze*R~yp&d~$6FM9xpC0t=C9@@`C&9tRnrmr?HUi&pI2yl3vP-w{?k2P`Xj zSJ<*6&LVw%R9NB^yJYL^7oVSXZq;C#{i0Dy#XQ$wU-B6conZ;#G7*k5hWto1@sYbs z_r(SuJ`8`iTUeudOXR=tlTK;6g7W!*ExC90ugkKcJWJAgXL59IDYUaS?4t1)WR=sV zy!4+CNevU_v6Nfhzttk#XTQ3|vm5YVe`N6*ekII-2%DU?b>=fb!AtFct!EKn#*?oT2%M;?V#$?%xE-w`Bw8uClya{oVd-sngeaCW1QUIx8w&3B7G) zQ93XB$X`A-GMHUIgGnE2WxgQ36QH5=1UmQKrNfEAHVy-M!LLd;R1$oF`T|9A5ObrB z7s_;$|JBdvGc9HHlo&-TybeK4-UGh|RCn1fUN;{xJY(CN`hX|nCE);+J|v*wJ9|Ur zv|3C%#VXrwBCsW14Exx*{$xOek?}i+4FwbCd^YmwJ=%rEw_EN)Z;NRs=pFi4GY&>= zvbYRZLYX^#U9ul3z7$;8PxelZG_n`te^c^bVVTxr&Sd_1|m(3Z0FMSJao#c3UNTp6p3x)v}xPcj-9^1u99 z`agVQNJ9?*<06-sW}=f3!w6@M9$X7&>VdCL^cqqS+9Vgp5Vbb#=wPm1Giy#pF>mjk zSyG`pe)a#~;8|lR5Esh|Q3wlqRT-8|#Bcpxy&wrXBKD(j6q?=iK!U(h0a1z^ zKmi2`ULyzScoDNV4zvFqt3&~i3zr&|G_xe$e7{LSmFhk*cd`n_E%+K+EEqT^^TW+l_?{NhQkj{VkYH%VZU zpND#KOnIbvNN=d4Rw~!6*k{WM5qLNOwA1T@M=@^d0q|n$LxqpwThQla)vVl1jO56w z#}SoPn14Fe{|Nu z&Ht&s{nzd%xqi|Is)%k%%W8@&{b{JXLeK!4BxonddV*?d?3%cQ#Kj16hxt@UJlAU_-oydM`>*y>|!&rZ8kj&Ixl%xSQD z^hN}6xQx0NncP)^pSPf)2GHKT|D9rBM+^8$Ptrb~aB(Vazy*Gk$}ecKvCQKKvQt1< z%c{BXq=sZ+q*t0HzIv>w+BC1MnDe=zL4WsF;dS_tuKXGm`oB?qS*n0VPm-WRO(G)( zn#~$!d{1(_yta(OtdCA^i!jXytY#PkryKDTI9r{oF?HlsWZ=q}b5qi$%%F=s^!+wu zg?_S&NsG0U>^y6T*1ASN?t50P8ys`Yl=`7U^07eS+=mLC>W0vxwCx&&U)P&CqM!2y z9Q2~xJCY_C!YpX`LVPWMUzfWtpKn<<^%1VW=9w%Q(D(}~N1pt_s#eM+aM~(+RbTRjk0%-!*WM!24A1>T zw8g^+dieqIKyE~ZN;oI^|HIuY#mfPL>4J?UWmEDTc#td@06etcs(GN+QzLvd?Z?OS zb7c0zO#6}N0*jl8vF$wUwl}NT zSAglYhPN`iEWQu`0!aXb5A`|eNs!$K}AY+1W^mX`-i z2~MH%A{+CcmkKyf%nb2-gaysnU5q_mZPs(Js=XNa#Xykkud&OYim7U6`#}=VWA#Kf zx~Es8wA1TH3hw!og>ZP2zUv?MD8L9r+0G31{pF{79rQS7v55^B*{x#L5R1?+FfsV; z$Mpgem$D3-z`~s%+}a;IM3Y(BB8d3Ok)A`n>xSD%o~Z*{WCP;0psdujp~w_oSB29M zEg=4B)z?Bo?=+zKR@Th7p%+W8*;3Jf%z%=YA>07vEf2ty`Xi&fDzhlM>J|i@A>+>s zwgzV4lC$aLY%rHm_|c71S!dki&+m6fCf zV-g88G6_inbb!@8esRRkK}A9%;hTSZ8f71!QjL1_wpD*!@I-ZueN3d8{bbFekz&`-6a&lzzXC}u{A&6mNgU{ zWrF2Hm7fVCZCN&Z`BhTC92*}wH^qK&=eiR#Bt_H^T-N&i?$~*hBPqg>1C>hKVSz0z zB>FDjgZ2v&YP312R|6>HoEFT!brF$5@PTk{G}`+2dQ3v4+ChXCeaTw8t`YI^30UP% zsw_J+m59-<+9efLFg#rt@Bjzx+motWwZQLDkS)R&HucW&sh4NxMaLOWb#B~87*Okd=+#8A+jcXxL*NfD9 z3Rzte52yV_#ss4Cq!AA>EbhAqE(R|F!M^utVt2-Z+w{E zceCneTdC=v9-=K#kU=3-i2I-p7RCb*d~hUgrsIToBGxjtH_SfX0nz$#PQi0yLU!Sl zd~aTl+Mvz+WLv<9kHCO8;q?OSJcJ-{VF3<6=xvh1?*rZ<#v%v`?V)i35 zz+X&y?zG*x>`r!2`ynPY__ZPRz-P7a9xu(rE&34mA^0VYP-UoKy_9Rg8GPr%s7Tjc zM+IlSVx@3M0QK5TCfYko8jJ`EI|k1Lis`RSX!JL8R~!9rHQvDCz%8yqfj2b6I2K6n ztdCYKUC65gE~f;-YvCv_hd6NrlbGV~xjG!mkrOP6nTSzX+n4(7?hT6ldlxLpVzejj&(Hx$+8; zz8eKPZNx(ly{8ui@Po-|r^|j=ect1t-Ou3=W3D9_0?6}f1Ur11`k4}{vxp+(k4l=nbOPQ@U)GidwEI6u z?BaUNL;9YJN*yuBZw%5oVOKbAb9_Cuk0PA(I{i~*D#>bRSuSZ4E8|iQ7TiTq>+8bs zirHhU=kvdD6s1|3S!omW1ds3v<`byiS>pL;u!&%&w(F$#!Cx%Fq9oTpnF;*HuQFVU zu$M@Yt}m%|Je2g#a(*Fyfdf9X_`~D%-3Bl`M@|fKobdk@CgyO?RA&_W4ksPRc9t9L zwFyQn!fLuAhaH}s*((tEjd3+?;D8h{K?E>6qXo*Z0XqPQqJqXuYl~9*m%=y-dY?o| zsF@54LKw~QM0)2VN3DgcbNd$3wRKvoCnj)yM!st3%iE7wklr1UpwNDpjC{$p z(0t_0Nr~=l@^Kk`pxP;L1i4k;aFX?&yYFb_*2GD&EcVC8Cx2QcN-c`TcdTOR-E|)6gS2I|9*bXGhypz}7`Ced zmS36( z{ZY&&nIwnOn3B(UGN^;k$}{U!~RucBOS#H~Ag zHLQ=~?op|+47o6ob;YA7&a$2ut!PMVq~08Pi|(Z|2uB;JDkZSPiq{|^0fhX4^aKr4wA-VMOw!j2x9}tWK5bCOv>E~!f116SZeXy@ zX;`9`A#lxZm_|sP&Zb2GwTIvSoqGAqlA#;Ks^<%_WBO~N68XsHDlov+kVL&0#}(ed zICKgMRE7f-%-6~{CEr3o)M#6^9RY68+xt>8!6%R^6@dv*cswDa@@Uhb{YxfEh3 z@QPNMcOo6=&dZxd#Y(4b7LzXgmcY07^;7|dWiifd(Z`rn4um*P;ADs&*ow|kCeZe= z(sDnbN4fvYn@f$2GqT5I%=~TeLh9p(CWT%6lt|F{&kW1)NNVsxMLtn*DSYJOu)>f; z_48hzIM#)OGCwOMml>iuq#y!+mndoj=Nk^DLKEjF{&Z76(vBMNx$*nbZhQ%Aut2DM z`a-U8_TX64g+Wg__~CH6e(5GVb$xc`=ceq9OR!@0Z@yrWreW0s#=<`cN2)8%an^ zxVa=N)blYd;(KB$R!CfIl+1CY8<=NjL1YawJR*u+HS}D92I~ZY53&3s>aneGP~;Tx zi5eh324vZBBl_d5=mRyi&kNo6uGjrWO)OtViMrW8LpF+V+_Y#4za(_82Q;fpvr!w) zj{!1tw4C$^DqSWL&~^(C_*&S)NYQSBwq(Xr>1D=(k3wEzN>XzC z*xrh&vJ)5_HsGEtOO0dyl*gF5OnU`tyF;kJzVkn=;7fWMx%K0UQiB`}b|SF?75t_? zzQLjV)-2GVTUiBP#t!YL>3{so8Kf-m3|07X&wz4%orW8|^oG{b(T%PEDEM8TGwD2kQ0|BPJ&AEHH8`Rk@M*-dHkUhmeh@w@ zZg|VsQ0yxErv_$n?x3u7;rKTPl?fGae5Hm6tEFqV&JsJ!NVaX&p<=$8d3)>9Y@vVl z*~$HvMH1VhQ~@!Pju|yzn@6`Tn+AzFtS@B$mY@Dv$}O>$xO0XN1vZ#rF8^w z2a2;FsVpVmJ_VgMM~zA-WqTrqj$&s#Dyd1Wu^LXXK(i9@gh3=!Za(Z1q{b{p_`w;- zb!M^Sp+lw3H~m7=|gE_69_Y2bg|c&{$NNF`arnxhy!Optj4I zqtuM2oxSPdOH_oNpe=2EIF967X1N{Gd6@(P<1GBY zlNZk$UX%tulUOo7dOp36lAr4Sow7T;dN&z2MJkZ9^<0)T^L@G8TAuVEz$kSgHOtI% zcI^r0}^A{g>4 zw3};fCR(L6ODOmHiUl#Jy_uj?;;9MAV=xUSl@}?D)dqKfEH_hm@lVK0E z=kMQHxh$R31-&%t8C)JyN@T*!g31oGZb!+09j(5;}tywcRvjO<(@yHKTTFf=KpK&9onpmv@o zohtiWAF0T57ZZ3pX6AOwQnOAgSZ;@o*xHLD@XxOJly-XE50$2U%=nt0wm4- zYCF)lF$7rI+XI|qdS`hh9aiqk3hEIY-Q|`A_{7ZD+;zFVpcSzNFpHt`;Y7bt)t<11 zJ2>Lkwniq1o8pL7ItOm9bRy$!`FG8Ip@#*6SaD#?> z@lLS;frN#i(q49zPX25_4nttV%#g-!)ckjCcm~%UfPfKPE}x zo%aK$FbghoyvBD;`+4Z!gK<<|CO`1E<%{*Xy>v{p||}Tg-X`*wzw;A z5g5KZDFS~JV5Ek=L4z)QVHW(Q_Vv@k5hKmrw|*%mYcaTjIDB|qUQuzP#EJ#b_-bs& z&yYu3TD+`RgrB3)sjzJPs`6h-HoqiO0O$pRhghv?C#>V+SWD>$vR(Cqam+n7cC|`# zGy_DDWmSu-4FDdxl_R{k;fErszY?(blf-Q@zo*)BN}Xjl-$EZd3S(gNB})%#Ozv>7 z?$p0q7e8=qv4_*SaMe48rJDxG@y&3^fRwY|QyA+~&&A2?ThrCInFW(9Zb$TL`m9J% z=KISlHPI)hW5nZ)T|bPEdIQGfxTipZ3cT;BiH8t$1n5&w?l&``@Be;yOMGh&NkU9t zXnlJuh8nahcS6o&>Jzx=fR@bMaw}@hOZpS-&t4&8_H37E5sTg^*V0lV7a0wo^8=wg9UuJ3oy-^Yh0-r6y=`gHu< zXOD_Mmt7UCMm-U3MVe0yvlbsBzGV0Hv8-BHz2pY`umQ+l57quwP{tg_<52qZ1B%;? zCW8(Bp{;(1;Tc#!`u5Y>IGOhp@9pOE8jkY;ApH*8ShM>W+rR#YB+_gf>*F;-0;&87 zyTi)`0Z>&Z2@~E)uO{oKG*2X>221S<9DU}>6Wz?3#F}D&!mAr^j}-p6K~bDyO;kU zlC&(rv}*L|dDwJ!?v~03kFP*SmEQeK2G2iHeHry5jd)0X>A4>mB<&z;5k1U$d`Ydc z>$H^wq&4~(8f!&E+urPwBXgDd7qh}HM7J|+EUjGZ$D5(N<>wN{Mz{~YgYRuw^E#77 ziB{5kKv?jEZt1x4p>}stJxcqUszUsEw3frg+v*{B{0(#Y-R292C3>H2v)WbRC#v4Z zsP9~N?4(uT_~IFZYf0sNU^ii_$*uzGWK3o)BDrRS#>BlF+b-scr&>LF6*GWa`oP>2 zwCKJtTAZ}g^ z1Bp-V^H>9Cn6Nw*3q)Rjr%!YseGrmooFQR-JoT9d;rQSAr*+>KsfDEoM9*U7S)2^{ za8%HN-%~V^c=TkdBr+4f-(^<4_fH?2h0(q3F9YijOx zFu*2ZoWa5uBg;-aGq0s{^+lM*Kwxu_@uQenbz#n`2v7q|e_ZOcoJ$Q+r9>44%+~Qe zsH_5~0B8G!6;^}fo$RfF+ruka%QxBj~Bw|1?$skEOj-C?R@7Q?}r$7$K_?!M$zwX z7d(@2SXbIqZt4dL-iI!DFmeh^ zrHz{8{SrslU{bu~$Lpn=-?j;-$oH6fqXVGlyWRA?9=@)4YGX)ztCrU`j{z<1PEtxa z!DLebnYzrjGe7Y&%p1d~ zN6$YQMeSbW)Mw^D9t|#Un31Eg0_5+{S}XbOWUX$=(p5zO-)L4=qjcjv{*_z*`Y6og zs75aB4Bcyba&5!Rsd|t~ewJv{7EMBQBrZ6;cd1flG$3^XA0hm4s|>v^KJM>Mvtk4l zprZWOft*T2P|j%YW6I981K0M8rOaKtVs%~Ufh;Ab~;KQ}WaQRm^mm%*YpTgkYh zS+MKE_uWmeBxfVX5M)SaKgiR*NxoPd3-RNB!b_} z+qaF$q8mzxf+dA3`Xq913*$||{RzT~CtVQ9tR2{_=&IAl)M#8Y5iK}McYwhuN=4uN z2jchx*wv4AgXJL40R8sP=%=DXzH^-O71R?&-wcP5kwICZ@0HNyRS)D)xiKL}3^h|4 zEI8|7MwH$djlnz}GGa}+Va9Hi4n!>G*kjH1hCBmg!~8Vgdxm=6GDBR0z|5$gS+O|{ z{3vrmTWw6>E+iG!+F0>wXWdxo-sk6NJ!WevAz&N3`nmctb%7AN@t9!S9YYx4_1&7s zZR6u4GduhKXD;>{{1A7Nv$;D_HDT((Bbp2mCefJS__t`AG}bhFE&vUHB8I-hEdk_N z*Li*$o>9NQxfn{YSE`JuH<)04r-zm%Kaq+>a^+*rCJP0KxfTxe=F7yhGKdf^O69St5YhySKONa}JBidY|e(5u3-p?kqr{ccQc0eq!y}MouVe z*!@sz%v+|IqUSq5SkIVU?hOlRYeKZre`ZC$4*mYE99IpA{uPOidT?D$0JCTrkpg58 z>zQnln?{V_h?tFRCJRK>-uz>pPR*7S0Z@Yoq6lCifT}h>_wCd{1&!Ze)X!h@L>foZ zWfF+6HJ}K7Qy`JI&pkWV9Q8TqoEO`#^?xa;R{ zzzgDkks*nvjC%(M-WNMWy+RwKG6&?>VYEtW)M&V55hp=geV~N?O=Lkwu>GB1J&O?J znrUES8_0ETIH-R=c?SDan8N2wbv%}f!xWK_l7tuyMIBKS^mJgTCtAl2fYl6wFNn$J z4w%)!kWl~-10S?#zj6${&0bFIk_e|ZZ(HAF<=07xp)zAqmd65w!k;tlnik(?rrkLv z?o|F9EzadkW>RJf@B9O0y>B}ZR|}J8k0dzK5-E$@tG9oczW-*N_bMF_s*g2EAd|lo zZZF@H4(vic|Hy+29>@F_b~wKplH2)_DS-+^(KH;HEtCldQ$6zMn}U*eYsBhp1T_E} zcvY-uRlK@(jUsA}9A^y7gTYQ{kU+*WO3z1+$X-Df&=`OT@bc+5Z9oK*7RfEM91+*9 zTEJ(~xFwB{6wz^)FNQ(`={_wc@t##Rk(&1@WdCMSgaz4he?D&H0E!Atv_2N$3O@P2 zBu0`LB@C*E4ZsKdK7WrE9Gl<|7lf|7;Qu089f1WKSYe3N!HB?peVwwrZOV3h*~2-x zmgezRsX4-vc*Feav(Z$=mvAi&2t*^@Ec01r{&@jKJhAg%a|O^{^xS0g6~)c}c9AB{%9+uKJSt{T;e;OTpDILN65n-#|<(@Bv(saj}1k zmHc5dQqX0&cAu)6WT6PMuUZhJA=dC-9%`u%hp(H#9xit04D0Mz&Bv=Ozn)|q$uQ8p z+R(LRdyyN6mNZtdgBD-p*cXHvKJAbn6()(Hn9De%jko~jDV%xeq{zQoxTl4u+V*gq zwpQqPzvva;8Z1;C@Kg-7G?=K7o+Zw8&65R8gd2ZwQUWB=zA5P4qhaL#| zxo{NxROOV3QmY(VDwfGO;v;=l5+u&}T8N2)4lfUjC|aX`xiS2X4#fP#Eom4d>ze9a zlN_jJB=i5xPJr2|L-9v!!fx3lVAESK>D8<)Uzrq_WIF&0IW4uc7P(-K3Bdse3r3gRp6Yv{=nn|0TX~evu7`Dr~UW;t<-d% zMY5%J#<~5PS`*q2q;q)8YZ4IP+;<^Knv2WnPr^z^>rcn(Ht+~K#T=3P-0+n{@n$oq zK6dh9Q2F4rN!R9aW9hETGnfRPNU%;(Wl1&==HTMEeEjEw9~Ew!j0`n>o>VAlF?`$p zeB#zulfKViZtvK&S{Uz7B^mv8-f&y-x99WbV#me(6XGqm zRi5#BY(0HRwv&gL!%dG<|K@M&Y5B&!gGE8{rt-4>rkD0D6W)O8Dz1i$-vg5LGIJCU zDDE?q>JRv*qS$w&;d%XUt@Vlx6RXaA+|D`IKb@nn#Es#Z*WsQ8oDLpO&u&`sH!=Q( zx}r+8$6bacbqRYNIDkWi9y1p-^7bBMe0fLy{%-$O6M^UdM%W3gW}Bffd%t#P{F|Qz zzKKq&n5RT4c(R^0J-xyHjdxLNLcGZX4n>BqOmac;8{!mHZi5?WNk`2!%w5EfF&K6C zTjod9c^jVKZkWTWnBZriGeN)!7=sgX4zV<~ToLfN^ZjI8^QZN9j;xUZ#VkYMXs_}mlt$i8j=+Fv~{K-0ECK@Kv^zwh-by&IX3lB_@CFFjNEU z0G0&Oz)B{>&`|OJp;zJJt1~yNJ&hNHIK4w&O+aNySLaDpXqYHwf?Our{NZ23r9IQZ zfgms`7r0s==;)G}xBFulAORyF1nOn3nj_)Nz{$c14oyWBF_1Nu5+C_HYxP7uAeMWA z)ycT9{orBDIjqHG!UT0x=7US1Xz>=eSvKE%?fq5r6NQ$X)P}hN)Z&BMG|AAyw*lf1 sV3bJ!BLpflp$C{S2cLw`!Yluomu!pOd+(UAHv ids, List titles) { + try { + GraphController gc = Lookup.getDefault().lookup(GraphController.class); + GraphModel gm = gc == null ? null : gc.getGraphModel(); + if (gm == null) { + return; + } + for (Column c : gm.getNodeTable().toArray()) { + if (ClusterColumns.isCategorical(c.getTypeClass(), c.isArray(), c.isDynamic(), c.isProperty())) { + ids.add(c.getId()); + titles.add(c.getTitle()); + } + } + } catch (RuntimeException e) { + LOG.log(Level.WARNING, "Could not list node columns", e); + } + } + + @Override + public String[] getTags() { + List ids = new ArrayList<>(), titles = new ArrayList<>(); + snapshot(ids, titles); + Map labels = ClusterColumns.labels(ClusterColumns.toArray(ids), ClusterColumns.toArray(titles)); + List tags = new ArrayList<>(); + tags.add(noneLabel()); + tags.addAll(labels.keySet()); + return tags.toArray(new String[0]); + } + + @Override + public String getAsText() { + Object v = getValue(); + String stored = v == null ? "" : v.toString().trim(); + if (stored.isEmpty()) { + return noneLabel(); + } + List ids = new ArrayList<>(), titles = new ArrayList<>(); + snapshot(ids, titles); + String[] idArr = ClusterColumns.toArray(ids), titleArr = ClusterColumns.toArray(titles); + int at = ClusterColumns.find(stored, idArr, titleArr); + if (at < 0) { + return stored; // a column that is not in the list (any more): show what is stored + } + for (Map.Entry e : ClusterColumns.labels(idArr, titleArr).entrySet()) { + if (e.getValue() == at) { + return e.getKey(); + } + } + return stored; + } + + @Override + public void setAsText(String text) { + if (text == null || text.trim().isEmpty() || text.equals(noneLabel())) { + setValue(""); + return; + } + List ids = new ArrayList<>(), titles = new ArrayList<>(); + snapshot(ids, titles); + String[] idArr = ClusterColumns.toArray(ids), titleArr = ClusterColumns.toArray(titles); + Integer at = ClusterColumns.labels(idArr, titleArr).get(text); + setValue(at != null ? idArr[at] : text.trim()); + } +} diff --git a/modules/CommunityClusters/src/main/java/myrberger/communityclusters/ClusterColumns.java b/modules/CommunityClusters/src/main/java/myrberger/communityclusters/ClusterColumns.java new file mode 100644 index 000000000..133cc6545 --- /dev/null +++ b/modules/CommunityClusters/src/main/java/myrberger/communityclusters/ClusterColumns.java @@ -0,0 +1,82 @@ +package myrberger.communityclusters; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * Decides which node columns can be used as cluster columns, and how they are named in the drop-down. + * Kept free of Gephi classes so the rules can be unit tested. + */ +final class ClusterColumns { + + private ClusterColumns() { + } + + /** + * A column is offered when it holds whole numbers, text, true/false or single characters, one value + * per node. Decimal numbers, lists and time-dependent values are not categories. Built-in columns + * such as Id and Label (different for every node) are left out. + */ + static boolean isCategorical(Class type, boolean isArray, boolean isDynamic, boolean isBuiltIn) { + if (type == null || isArray || isDynamic || isBuiltIn) { + return false; + } + return type == String.class || type == Integer.class || type == Long.class || type == Short.class + || type == Byte.class || type == Boolean.class || type == Character.class + || type == int.class || type == long.class || type == short.class || type == byte.class + || type == boolean.class || type == char.class; + } + + /** + * Display labels for columns, in the order given. The title is used (that is what the Data Laboratory + * shows); if two columns share a title, the id is added to tell them apart. + * + * @return label to index in the input arrays + */ + static Map labels(String[] ids, String[] titles) { + Map titleCount = new LinkedHashMap<>(); + String[] base = new String[ids.length]; + for (int i = 0; i < ids.length; i++) { + String t = titles[i] == null || titles[i].trim().isEmpty() ? ids[i] : titles[i].trim(); + base[i] = t; + titleCount.merge(t.toLowerCase(), 1, Integer::sum); + } + Map out = new LinkedHashMap<>(); + for (int i = 0; i < ids.length; i++) { + String label = titleCount.get(base[i].toLowerCase()) > 1 && !base[i].equalsIgnoreCase(ids[i]) + ? base[i] + " (" + ids[i] + ")" : base[i]; + // last resort: never lose a column to a clash + while (out.containsKey(label)) { + label = label + "'"; + } + out.put(label, i); + } + return out; + } + + /** Index of the column the stored value refers to (matches id or title, ignoring case), or -1. */ + static int find(String value, String[] ids, String[] titles) { + if (value == null || value.trim().isEmpty()) { + return -1; + } + String v = value.trim(); + for (int i = 0; i < ids.length; i++) { + if (v.equalsIgnoreCase(ids[i])) { + return i; + } + } + for (int i = 0; i < titles.length; i++) { + if (titles[i] != null && v.equalsIgnoreCase(titles[i].trim())) { + return i; + } + } + return -1; + } + + /** Convenience for building arrays from a list. */ + static String[] toArray(List l) { + return new ArrayList<>(l).toArray(new String[0]); + } +} diff --git a/modules/CommunityClusters/src/main/java/myrberger/communityclusters/ClusterForceSimulation.java b/modules/CommunityClusters/src/main/java/myrberger/communityclusters/ClusterForceSimulation.java index e829e0a75..32a741f5f 100644 --- a/modules/CommunityClusters/src/main/java/myrberger/communityclusters/ClusterForceSimulation.java +++ b/modules/CommunityClusters/src/main/java/myrberger/communityclusters/ClusterForceSimulation.java @@ -16,12 +16,12 @@ static final class Params { double tieLen = 24; // link distance on top of the two node radii double tieStr = 1; // multiplies the per-tie strength double spacing = 2; // extra room kept by the collision force - double clusterPull = 0.14; // pull towards the cluster's home - double cooling = 0.0228; // alphaDecay + double clusterPull = 0.1; // pull towards the cluster's home + double cooling = 0.03; // alphaDecay (about 230 steps per run) double interTieFactor = 0.03;// strength multiplier for ties between clusters double scale = 1; // multiplies all distances double repelDistanceMax = 140; - long seed = 42; + long seed = 4711; boolean resetPositions = true; } @@ -256,15 +256,88 @@ private void buildGrid(double[] px, double[] py, double minCell) { } } + /** Graphs up to this size use the exact pairwise repulsion; larger ones use Barnes-Hut. */ + private static final int EXACT_LIMIT = 400; + /** Below this size the Barnes-Hut queries run on one thread. */ + private static final int PARALLEL_LIMIT = 1500; + + /** Average number of candidate neighbours per node above which the tree is used. */ + private static final double CROWDED_CANDIDATES = 150; + + private final RepulsionTree tree = new RepulsionTree(); + /** Test hook: force one mode. null = choose by graph size. */ + Boolean forceExactRepulsion = null; + /** Many-body repulsion with a hard distance cut-off (d3's forceManyBody with distanceMax). */ private void applyCharge() { if (n < 2 || p.repel == 0) { return; } + if (forceExactRepulsion != null) { + if (forceExactRepulsion) { + applyChargeExact(); + } else { + applyChargeBarnesHut(); + } + return; + } + if (n <= EXACT_LIMIT) { + applyChargeExact(); + return; + } + // Spread-out nodes: the simple neighbour search is cheapest. Crowded nodes (big clusters): + // the number of neighbours explodes, so switch to the tree. + buildGrid(x, y, p.repelDistanceMax * p.scale); + if (gridWorkPerNode() <= CROWDED_CANDIDATES) { + chargeFromGrid(); + } else { + applyChargeBarnesHut(); + } + } + + void applyChargeBarnesHut() { double dMax = p.repelDistanceMax * p.scale; double dMax2 = dMax * dMax; - double strength = -p.repel * p.scale * p.scale; + double k = -p.repel * p.scale * p.scale * alpha; + tree.build(x, y, n); + if (n >= PARALLEL_LIMIT) { + // every node only writes its own velocity, and the jiggle is deterministic, + // so the result does not depend on how the work is split between threads + java.util.stream.IntStream.range(0, n).parallel().forEach(new java.util.function.IntConsumer() { + private final ThreadLocal stack = ThreadLocal.withInitial(() -> new int[RepulsionTree.stackSize()]); + + @Override + public void accept(int i) { + if (!fixed[i]) { + tree.accumulate(i, k, dMax2, vx, vy, stack.get()); + } + } + }); + } else { + int[] stack = new int[RepulsionTree.stackSize()]; + for (int i = 0; i < n; i++) { + if (!fixed[i]) { + tree.accumulate(i, k, dMax2, vx, vy, stack); + } + } + } + } + + /** Exact pairwise repulsion with a hard distance cut-off. Used for small graphs and as a reference in tests. */ + void applyChargeExact() { + double dMax = p.repelDistanceMax * p.scale; buildGrid(x, y, dMax); + chargeFromGrid(); + } + + /** Pairwise repulsion using the grid that was just built for the repulsion cut-off. */ + private void chargeFromGrid() { + if (n < 2 || p.repel == 0) { + return; + } + double dMax = p.repelDistanceMax * p.scale; + double dMax2 = dMax * dMax; + double strength = -p.repel * p.scale * p.scale; for (int i = 0; i < n; i++) { if (fixed[i]) { continue; @@ -301,6 +374,27 @@ private void applyCharge() { } } + /** Average number of nodes in the 3x3 cells around a node, for the grid that is currently built. */ + private double gridWorkPerNode() { + double work = 0; + for (int cy = 0; cy < gh; cy++) { + for (int cx = 0; cx < gw; cx++) { + int here = cellStart[cy * gw + cx + 1] - cellStart[cy * gw + cx]; + if (here == 0) { + continue; + } + int around = 0; + for (int yy = Math.max(0, cy - 1); yy <= Math.min(gh - 1, cy + 1); yy++) { + for (int xx = Math.max(0, cx - 1); xx <= Math.min(gw - 1, cx + 1); xx++) { + around += cellStart[yy * gw + xx + 1] - cellStart[yy * gw + xx]; + } + } + work += (double) here * around; + } + } + return work / Math.max(1, n); + } + /** d3's forceCollide with strength 1 and one iteration. */ private void applyCollide() { if (n < 2) { diff --git a/modules/CommunityClusters/src/main/java/myrberger/communityclusters/CommunityClusters.java b/modules/CommunityClusters/src/main/java/myrberger/communityclusters/CommunityClusters.java index 95c8e17e3..0202ff523 100644 --- a/modules/CommunityClusters/src/main/java/myrberger/communityclusters/CommunityClusters.java +++ b/modules/CommunityClusters/src/main/java/myrberger/communityclusters/CommunityClusters.java @@ -1,6 +1,7 @@ package myrberger.communityclusters; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -59,11 +60,11 @@ public void resetPropertiesValues() { tieLength = 24.0; tieStrength = 1.0; nodeSpacing = 2.0; - clusterPull = 0.14; - settlingSpeed = 0.0228; + clusterPull = 0.1; + settlingSpeed = 0.03; interClusterTieFactor = 0.03; scale = 1.0; - randomSeed = 42; + randomSeed = 4711; resolution = 1.0; saveClusters = true; resetPositions = true; @@ -83,100 +84,109 @@ public void initAlgo() { if (graphModel == null) { return; } + // Step 1: copy what we need out of the graph. The lock is held only for this. Graph graph = graphModel.getGraphVisible(); + Node[] ns; + double[] radius; + double[] sx; + double[] sy; + boolean[] fixed; + int[] es; + int[] ed; + double[] ew; + int[] cluster = null; graph.readLock(); try { - nodes = graph.getNodes().toArray(); - int n = nodes.length; + ns = graph.getNodes().toArray(); + int n = ns.length; if (n == 0) { return; } Map index = new HashMap<>(n * 2); - double[] radius = new double[n], sx = new double[n], sy = new double[n]; - boolean[] fixed = new boolean[n]; - double maxSize = 0; + radius = new double[n]; + sx = new double[n]; + sy = new double[n]; + fixed = new boolean[n]; for (int i = 0; i < n; i++) { - Node node = nodes[i]; + Node node = ns[i]; index.put(node, i); radius[i] = Math.max(1.0, node.size()); - maxSize = Math.max(maxSize, radius[i]); sx[i] = node.x(); sy[i] = node.y(); fixed[i] = node.isFixed(); } - - List pairs = new ArrayList<>(); - List weights = new ArrayList<>(); + int m = graph.getEdgeCount(); + es = new int[m]; + ed = new int[m]; + ew = new double[m]; + int c = 0; for (Edge e : graph.getEdges()) { Integer s = index.get(e.getSource()); Integer t = index.get(e.getTarget()); - if (s != null && t != null) { - pairs.add(new int[]{s, t}); - weights.add(e.getWeight()); + if (s != null && t != null && c < m) { + es[c] = s; + ed[c] = t; + ew[c] = e.getWeight(); + c++; } } - int[] es = new int[pairs.size()], ed = new int[pairs.size()]; - for (int i = 0; i < es.length; i++) { - es[i] = pairs.get(i)[0]; - ed[i] = pairs.get(i)[1]; + if (c < m) { + es = Arrays.copyOf(es, c); + ed = Arrays.copyOf(ed, c); + ew = Arrays.copyOf(ew, c); } - - double[] ew = new double[es.length]; - for (int i = 0; i < ew.length; i++) { - ew[i] = weights.get(i); + Column col = findColumn(clusterColumn); + if (col != null) { + cluster = readColumnClusters(ns, col); } - int[] cluster = readClusters(nodes, es, ed, ew); - - ClusterForceSimulation.Params p = new ClusterForceSimulation.Params(); - p.repel = repulsion; - p.tieLen = tieLength; - p.tieStr = tieStrength; - p.spacing = nodeSpacing; - p.clusterPull = clusterPull; - p.cooling = settlingSpeed; - p.interTieFactor = interClusterTieFactor; - p.scale = scale; - p.seed = randomSeed; - p.resetPositions = resetPositions; - lastCluster = cluster; - sim = new ClusterForceSimulation(radius, cluster, fixed, sx, sy, es, ed, p); } finally { graph.readUnlock(); } - if (pendingSave && nodes != null && lastCluster != null) { - saveClusterColumn(nodes, lastCluster); + + // Step 2: the heavy work, without holding any graph lock. + if (cluster == null) { + if (clusterColumn != null && !clusterColumn.trim().isEmpty()) { + LOG.log(Level.INFO, "Node column \"{0}\" not found; detecting clusters with Leiden instead.", + clusterColumn); + } + cluster = Leiden.run(ns.length, es, ed, ew, resolution, randomSeed); + pendingSave = saveClusters; + } + ClusterForceSimulation.Params p = new ClusterForceSimulation.Params(); + p.repel = repulsion; + p.tieLen = tieLength; + p.tieStr = tieStrength; + p.spacing = nodeSpacing; + p.clusterPull = clusterPull; + p.cooling = settlingSpeed; + p.interTieFactor = interClusterTieFactor; + p.scale = scale; + p.seed = randomSeed; + p.resetPositions = resetPositions; + lastCluster = cluster; + nodes = ns; + sim = new ClusterForceSimulation(radius, cluster, fixed, sx, sy, es, ed, p); + + if (pendingSave) { + saveClusterColumn(ns, cluster); } pendingSave = false; } - /** - * Cluster index per node: read from the chosen node column, or, when no column is given or it does not - * exist, detected with Leiden (modularity, resolution and seed from the properties). - */ - private int[] readClusters(Node[] nodes, int[] es, int[] ed, double[] ew) { - int n = nodes.length; - Column col = findColumn(clusterColumn); - if (col != null) { - int[] out = new int[n]; - Map ids = new HashMap<>(); - for (int i = 0; i < n; i++) { - Object v = nodes[i].getAttribute(col); - String key = v == null ? "" : String.valueOf(v); - Integer id = ids.get(key); - if (id == null) { - id = ids.size(); - ids.put(key, id); - } - out[i] = id; + /** One cluster index per node, from the values of the given column (called with the graph lock held). */ + private int[] readColumnClusters(Node[] ns, Column col) { + int[] out = new int[ns.length]; + Map ids = new HashMap<>(); + for (int i = 0; i < ns.length; i++) { + Object v = ns[i].getAttribute(col); + String key = v == null ? "" : String.valueOf(v); + Integer id = ids.get(key); + if (id == null) { + id = ids.size(); + ids.put(key, id); } - return out; + out[i] = id; } - if (clusterColumn != null && !clusterColumn.trim().isEmpty()) { - LOG.log(Level.WARNING, "Node column \"{0}\" not found; detecting clusters with Leiden instead.", - clusterColumn); - } - int[] out = Leiden.run(n, es, ed, ew, resolution, randomSeed); - pendingSave = saveClusters; return out; } @@ -218,17 +228,19 @@ private Column findColumn(String name) { @Override public void goAlgo() { - if (sim == null || nodes == null || graphModel == null) { + ClusterForceSimulation current = sim; + Node[] current_nodes = nodes; + if (current == null || current_nodes == null || graphModel == null) { return; } + current.tick(); // pure computation on our own arrays, so no graph lock is needed here Graph graph = graphModel.getGraphVisible(); graph.readLock(); try { - sim.tick(); - for (int i = 0; i < nodes.length; i++) { - if (!nodes[i].isFixed()) { - nodes[i].setX((float) sim.x[i]); - nodes[i].setY((float) sim.y[i]); + for (int i = 0; i < current_nodes.length; i++) { + if (!current_nodes[i].isFixed()) { + current_nodes[i].setX((float) current.x[i]); + current_nodes[i].setY((float) current.y[i]); } } } finally { @@ -254,7 +266,10 @@ public LayoutProperty[] getProperties() { String clusters = msg("CommunityClusters.category.clusters"); String forces = msg("CommunityClusters.category.forces"); String run = msg("CommunityClusters.category.run"); - props.add(property(String.class, clusters, "clusterColumn", "getClusterColumn", "setClusterColumn")); + props.add(LayoutProperty.createProperty(this, String.class, + msg("CommunityClusters.clusterColumn.name"), clusters, "clusterColumn", + msg("CommunityClusters.clusterColumn.desc"), "getClusterColumn", "setClusterColumn", + ClusterColumnEditor.class)); props.add(property(Double.class, clusters, "resolution", "getResolution", "setResolution")); props.add(property(Boolean.class, clusters, "saveClusters", "getSaveClusters", "setSaveClusters")); props.add(property(Double.class, clusters, "clusterPull", "getClusterPull", "setClusterPull")); diff --git a/modules/CommunityClusters/src/main/java/myrberger/communityclusters/Leiden.java b/modules/CommunityClusters/src/main/java/myrberger/communityclusters/Leiden.java index 1576c6da6..0e02d05f2 100644 --- a/modules/CommunityClusters/src/main/java/myrberger/communityclusters/Leiden.java +++ b/modules/CommunityClusters/src/main/java/myrberger/communityclusters/Leiden.java @@ -15,6 +15,11 @@ final class Leiden { private static final double THETA = 0.01; // randomness of the refinement step + /** + * Passes over the whole graph. Graphs with real community structure settle after 2-3; graphs + * without it would keep going for tiny gains, so the loop is capped. + */ + private static final int MAX_ROUNDS = 4; private static final double EPS = 1e-12; private Leiden() { @@ -72,7 +77,7 @@ static int[] run(int n, int[] es, int[] ed, double[] ew, double resolution, long part[i] = i; } // Leiden is iterated: each pass starts from the previous partition, until nothing changes - for (int round = 0; round < 10; round++) { + for (int round = 0; round < MAX_ROUNDS; round++) { int[] next = pass(g0, part, resolution, twoM, rng); renumber(next, new int[n]); boolean same = Arrays.equals(part, next); diff --git a/modules/CommunityClusters/src/main/java/myrberger/communityclusters/RepulsionTree.java b/modules/CommunityClusters/src/main/java/myrberger/communityclusters/RepulsionTree.java new file mode 100644 index 000000000..084ec045d --- /dev/null +++ b/modules/CommunityClusters/src/main/java/myrberger/communityclusters/RepulsionTree.java @@ -0,0 +1,221 @@ +package myrberger.communityclusters; + +import java.util.Arrays; + +/** + * Barnes-Hut quadtree for the many-body repulsion, the same approximation d3-force uses: groups of + * nodes that are far enough away are treated as one body at their centre of mass. Pure Java. + * + *

Built once per tick, then {@link #accumulate} can be called for different nodes from several + * threads at once (it only reads the tree and writes the velocity of the node it is asked about). + */ +final class RepulsionTree { + + private static final int LEAF_SIZE = 8; + private static final int MAX_DEPTH = 40; + /** d3 default: theta = 0.9, squared. */ + static final double THETA2 = 0.81; + /** A group is only treated as one body if it is narrower than this share of the cut-off distance. */ + static final double MAX_GROUP_WIDTH = 1.0; + + private int[] idx = new int[0]; + private int[] scratch = new int[0]; + + // per tree node + private int nodeCount; + private double[] comX = new double[0], comY = new double[0]; + private double[] boxX = new double[0], boxY = new double[0], boxW = new double[0]; + private int[] cnt = new int[0]; + private int[] kids = new int[0]; // index of the first of 4 consecutive children, or -1 for a leaf + private int[] lo = new int[0], hi = new int[0]; + + private double[] px, py; + + void build(double[] x, double[] y, int n) { + this.px = x; + this.py = y; + if (idx.length < n) { + idx = new int[n]; + scratch = new int[n]; + } + double minX = Double.POSITIVE_INFINITY, minY = Double.POSITIVE_INFINITY; + double maxX = Double.NEGATIVE_INFINITY, maxY = Double.NEGATIVE_INFINITY; + for (int i = 0; i < n; i++) { + idx[i] = i; + minX = Math.min(minX, x[i]); + maxX = Math.max(maxX, x[i]); + minY = Math.min(minY, y[i]); + maxY = Math.max(maxY, y[i]); + } + nodeCount = 0; + if (n == 0) { + return; + } + double w = Math.max(maxX - minX, maxY - minY) * (1 + 1e-9) + 1e-6; + int root = newNodes(1); + fill(root, 0, n, minX, minY, w, 0); + } + + private int newNodes(int k) { + int first = nodeCount; + nodeCount += k; + if (nodeCount > cnt.length) { + int cap = Math.max(nodeCount, cnt.length * 2 + 16); + comX = Arrays.copyOf(comX, cap); + comY = Arrays.copyOf(comY, cap); + boxX = Arrays.copyOf(boxX, cap); + boxY = Arrays.copyOf(boxY, cap); + boxW = Arrays.copyOf(boxW, cap); + cnt = Arrays.copyOf(cnt, cap); + kids = Arrays.copyOf(kids, cap); + lo = Arrays.copyOf(lo, cap); + hi = Arrays.copyOf(hi, cap); + } + return first; + } + + private void fill(int node, int from, int to, double x0, double y0, double w, int depth) { + boxX[node] = x0; + boxY[node] = y0; + boxW[node] = w; + lo[node] = from; + hi[node] = to; + cnt[node] = to - from; + double sx = 0, sy = 0; + for (int p = from; p < to; p++) { + sx += px[idx[p]]; + sy += py[idx[p]]; + } + if (to > from) { + comX[node] = sx / (to - from); + comY[node] = sy / (to - from); + } + if (to - from <= LEAF_SIZE || depth >= MAX_DEPTH) { + kids[node] = -1; + return; + } + double mx = x0 + w / 2, my = y0 + w / 2; + int[] qc = new int[5]; + for (int p = from; p < to; p++) { + qc[1 + quadrant(idx[p], mx, my)]++; + } + for (int q = 0; q < 4; q++) { + qc[q + 1] += qc[q]; + } + int[] at = {qc[0], qc[1], qc[2], qc[3]}; + for (int p = from; p < to; p++) { + int q = quadrant(idx[p], mx, my); + scratch[from + at[q]++] = idx[p]; + } + System.arraycopy(scratch, from, idx, from, to - from); + int first = newNodes(4); + kids[node] = first; + for (int q = 0; q < 4; q++) { + fill(first + q, from + qc[q], from + qc[q + 1], x0 + ((q & 1) != 0 ? w / 2 : 0), + y0 + ((q & 2) != 0 ? w / 2 : 0), w / 2, depth + 1); + } + } + + private int quadrant(int i, double mx, double my) { + return (px[i] >= mx ? 1 : 0) | (py[i] >= my ? 2 : 0); + } + + /** Deterministic stand-in for d3's random jiggle, safe to call from several threads. */ + static double jiggle(int i, int j) { + int h = i * 0x9E3779B1 ^ j * 0x85EBCA6B; + h ^= h >>> 15; + h *= 0x2C1B3C6D; + h ^= h >>> 12; + return ((h & 0xFFFF) / 65536.0 - 0.5) * 1e-6; + } + + /** + * Adds the repulsion on node i to vx[i], vy[i]. + * + * @param k strength * alpha (negative to push apart) + * @param dMax2 squared cut-off distance + */ + void accumulate(int i, double k, double dMax2, double[] vx, double[] vy, int[] stack) { + if (nodeCount == 0) { + return; + } + double xi = px[i], yi = py[i]; + double ax = 0, ay = 0; + int sp = 0; + stack[sp++] = 0; + while (sp > 0) { + int node = stack[--sp]; + if (cnt[node] == 0) { + continue; + } + // skip boxes that lie completely beyond the cut-off + double bx = Math.max(Math.max(boxX[node] - xi, xi - (boxX[node] + boxW[node])), 0); + double by = Math.max(Math.max(boxY[node] - yi, yi - (boxY[node] + boxW[node])), 0); + if (bx * bx + by * by >= dMax2) { + continue; + } + double dx = comX[node] - xi, dy = comY[node] - yi; + double l = dx * dx + dy * dy; + double w = boxW[node]; + // far enough away (d3's Barnes-Hut rule), and not wider than the cut-off distance + if (w * w / THETA2 < l && w * w <= MAX_GROUP_WIDTH * MAX_GROUP_WIDTH * dMax2) { + // far enough: treat the whole group as one body + if (l < dMax2) { + if (dx == 0) { + dx = jiggle(i, node); + l += dx * dx; + } + if (dy == 0) { + dy = jiggle(node, i); + l += dy * dy; + } + if (l < 1) { + l = Math.sqrt(l); + } + double f = k * cnt[node] / l; + ax += dx * f; + ay += dy * f; + } + continue; + } + if (kids[node] < 0) { + for (int p = lo[node]; p < hi[node]; p++) { + int j = idx[p]; + if (j == i) { + continue; + } + double ddx = px[j] - xi, ddy = py[j] - yi; + if (ddx == 0) { + ddx = jiggle(i, j); + } + if (ddy == 0) { + ddy = jiggle(j, i); + } + double ll = ddx * ddx + ddy * ddy; + if (ll >= dMax2) { + continue; + } + if (ll < 1) { + ll = Math.sqrt(ll); + } + double f = k / ll; + ax += ddx * f; + ay += ddy * f; + } + } else { + int first = kids[node]; + stack[sp++] = first; + stack[sp++] = first + 1; + stack[sp++] = first + 2; + stack[sp++] = first + 3; + } + } + vx[i] += ax; + vy[i] += ay; + } + + /** Stack depth that is always enough: 3 siblings per level plus one. */ + static int stackSize() { + return 3 * MAX_DEPTH + 8; + } +} diff --git a/modules/CommunityClusters/src/main/nbm/manifest.mf b/modules/CommunityClusters/src/main/nbm/manifest.mf index 21a2f3e35..e12f74415 100644 --- a/modules/CommunityClusters/src/main/nbm/manifest.mf +++ b/modules/CommunityClusters/src/main/nbm/manifest.mf @@ -1,5 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module-Name: Community Clusters OpenIDE-Module-Short-Description: Layout that gathers each community of a network into its own cluster. -OpenIDE-Module-Long-Description: A force layout that gives every community a home position and pulls its nodes towards it, while ties and repulsion shape the inside of each cluster. Communities are read from a node column (default modularity_class) or, if no such column exists, detected with the built-in Leiden algorithm. OpenIDE-Module-Display-Category: Layout +OpenIDE-Module-Localizing-Bundle: myrberger/communityclusters/Bundle.properties diff --git a/modules/CommunityClusters/src/main/resources/myrberger/communityclusters/Bundle.properties b/modules/CommunityClusters/src/main/resources/myrberger/communityclusters/Bundle.properties index dc3479ae9..f7963d720 100644 --- a/modules/CommunityClusters/src/main/resources/myrberger/communityclusters/Bundle.properties +++ b/modules/CommunityClusters/src/main/resources/myrberger/communityclusters/Bundle.properties @@ -1,6 +1,15 @@ +# Shown in Gephi's plugin manager and on the plugin's page (pointed to by OpenIDE-Module-Localizing-Bundle in manifest.mf) +OpenIDE-Module-Long-Description=Arranges a network so that each community forms its own visible cluster. Any field that \ + is categorical, numerical or alphanumerical, can be used as the Cluster column (for \ + example modularity_class from Statistics > Modularity). Or choose none and the plugin \ + detects communities itself with the Leiden algorithm. Clusters are packed apart from \ + each other and the nodes inside a cluster are placed by their ties. Settings control \ + cluster separation, repulsion, tie length, node spacing and more. By Johan Myrberger, \ + https://www.linkedin.com/in/myrberger/ + # Layout and builder CommunityClustersBuilder.name=Community Clusters -CommunityClustersBuilder.description=Force layout that gathers each community into its own cluster. Uses a community column if you name one, otherwise detects communities with Leiden. +CommunityClustersBuilder.description=Force layout that gathers each community into its own cluster. Uses any categorical node column as the community, or detects communities with Leiden. # Property categories CommunityClusters.category.clusters=Clusters @@ -9,7 +18,8 @@ CommunityClusters.category.run=Run # Clusters CommunityClusters.clusterColumn.name=Cluster column -CommunityClusters.clusterColumn.desc=Node column holding the community of each node (e.g. modularity_class from Statistics > Modularity). Leave empty, or name a column that does not exist, to detect communities with Leiden instead. +CommunityClusters.clusterColumn.desc=Node column that says which community each node belongs to. The list shows columns holding whole numbers, text or true/false values (for example modularity_class from Statistics > Modularity). Choose "(none: detect communities with Leiden)" to let the plugin find the communities itself. +CommunityClusters.clusterColumn.none=(none: detect communities with Leiden) CommunityClusters.resolution.name=Resolution CommunityClusters.resolution.desc=Leiden only: higher gives more and smaller clusters, lower gives fewer and larger ones. CommunityClusters.saveClusters.name=Save clusters to column diff --git a/modules/CommunityClusters/src/test/java/myrberger/communityclusters/ClusterColumnsTest.java b/modules/CommunityClusters/src/test/java/myrberger/communityclusters/ClusterColumnsTest.java new file mode 100644 index 000000000..eb3866b8d --- /dev/null +++ b/modules/CommunityClusters/src/test/java/myrberger/communityclusters/ClusterColumnsTest.java @@ -0,0 +1,80 @@ +package myrberger.communityclusters; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.Map; +import org.junit.Test; + +public class ClusterColumnsTest { + + @Test + public void categoricalTypesAreAccepted() { + assertTrue("String", ClusterColumns.isCategorical(String.class, false, false, false)); + assertTrue("Integer", ClusterColumns.isCategorical(Integer.class, false, false, false)); + assertTrue("Long", ClusterColumns.isCategorical(Long.class, false, false, false)); + assertTrue("Short", ClusterColumns.isCategorical(Short.class, false, false, false)); + assertTrue("Byte", ClusterColumns.isCategorical(Byte.class, false, false, false)); + assertTrue("Boolean", ClusterColumns.isCategorical(Boolean.class, false, false, false)); + assertTrue("Character", ClusterColumns.isCategorical(Character.class, false, false, false)); + assertTrue("primitive int", ClusterColumns.isCategorical(int.class, false, false, false)); + } + + @Test + public void nonCategoricalColumnsAreRejected() { + assertFalse("Double", ClusterColumns.isCategorical(Double.class, false, false, false)); + assertFalse("Float", ClusterColumns.isCategorical(Float.class, false, false, false)); + assertFalse("list of text", ClusterColumns.isCategorical(String[].class, true, false, false)); + assertFalse("time dependent", ClusterColumns.isCategorical(Integer.class, false, true, false)); + assertFalse("built-in column such as Id or Label", ClusterColumns.isCategorical(String.class, false, false, true)); + assertFalse("unknown type", ClusterColumns.isCategorical(null, false, false, false)); + } + + @Test + public void labelsUseTitlesAndKeepTheOrder() { + Map labels = ClusterColumns.labels(new String[]{"modularity_class", "type"}, + new String[]{"Modularity Class", "type"}); + assertArrayEquals(new String[]{"Modularity Class", "type"}, labels.keySet().toArray(new String[0])); + assertEquals("first column index", 0, labels.get("Modularity Class").intValue()); + assertEquals("second column index", 1, labels.get("type").intValue()); + } + + @Test + public void blankTitleFallsBackToId() { + Map labels = ClusterColumns.labels(new String[]{"a", "b"}, new String[]{"", null}); + assertArrayEquals(new String[]{"a", "b"}, labels.keySet().toArray(new String[0])); + } + + @Test + public void clashingTitlesGetTheirIdAdded() { + Map labels = ClusterColumns.labels(new String[]{"x1", "x2", "other"}, + new String[]{"Group", "group", "Other"}); + assertEquals("all three columns are listed", 3, labels.size()); + assertTrue("first clash is told apart", labels.containsKey("Group (x1)")); + assertTrue("second clash is told apart", labels.containsKey("group (x2)")); + assertTrue("unique title stays plain", labels.containsKey("Other")); + } + + @Test + public void identicalLabelsAreNeverLost() { + Map labels = ClusterColumns.labels(new String[]{"a", "a"}, new String[]{"T", "T"}); + assertEquals("both columns listed", 2, labels.size()); + } + + @Test + public void findMatchesIdOrTitleIgnoringCase() { + String[] ids = {"modularity_class", "type"}; + String[] titles = {"Modularity Class", "Type of node"}; + assertEquals("by id", 0, ClusterColumns.find("MODULARITY_CLASS", ids, titles)); + assertEquals("by title", 1, ClusterColumns.find("type of node", ids, titles)); + assertEquals("with spaces around", 1, ClusterColumns.find(" type ", ids, titles)); + assertEquals("unknown", -1, ClusterColumns.find("nothing", ids, titles)); + assertEquals("empty", -1, ClusterColumns.find("", ids, titles)); + assertEquals("null", -1, ClusterColumns.find(null, ids, titles)); + } + + private static void assertArrayEquals(Object[] expected, Object[] actual) { + org.junit.Assert.assertArrayEquals("labels", expected, actual); + } +} diff --git a/modules/CommunityClusters/src/test/java/myrberger/communityclusters/RepulsionTest.java b/modules/CommunityClusters/src/test/java/myrberger/communityclusters/RepulsionTest.java new file mode 100644 index 000000000..106daaaed --- /dev/null +++ b/modules/CommunityClusters/src/test/java/myrberger/communityclusters/RepulsionTest.java @@ -0,0 +1,187 @@ +package myrberger.communityclusters; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; +import java.util.Random; +import org.junit.Test; + +/** The tree-based repulsion must give the same kind of layout as the exact calculation. */ +public class RepulsionTest { + + private static ClusterForceSimulation simulation(int n, int clusters, long seed) { + Random r = new Random(seed); + int m = n * 4; + int[] src = new int[m], dst = new int[m], cluster = new int[n]; + double[] radius = new double[n]; + Arrays.fill(radius, 5); + for (int i = 0; i < n; i++) { + cluster[i] = i % clusters; + } + for (int i = 0; i < m; i++) { + int u = r.nextInt(n); + int v = r.nextDouble() < 0.8 ? (u / clusters * clusters + r.nextInt(Math.max(1, n / clusters)) * clusters + + u % clusters) % n : r.nextInt(n); + src[i] = u; + dst[i] = v; + } + return new ClusterForceSimulation(radius, cluster, new boolean[n], new double[n], new double[n], src, dst, + new ClusterForceSimulation.Params()); + } + + private static void runToEnd(ClusterForceSimulation sim) { + int ticks = 0; + while (!sim.isConverged() && ticks < 2000) { + sim.tick(); + ticks++; + } + } + + /** Mean distance from a node to the centre of its cluster. */ + private static double spread(ClusterForceSimulation sim, int n, int clusters) { + double[] cx = new double[clusters], cy = new double[clusters]; + int[] count = new int[clusters]; + for (int i = 0; i < n; i++) { + cx[i % clusters] += sim.x[i]; + cy[i % clusters] += sim.y[i]; + count[i % clusters]++; + } + for (int c = 0; c < clusters; c++) { + cx[c] /= count[c]; + cy[c] /= count[c]; + } + double sum = 0; + for (int i = 0; i < n; i++) { + sum += Math.hypot(sim.x[i] - cx[i % clusters], sim.y[i] - cy[i % clusters]); + } + return sum / n; + } + + /** Share of sampled nodes whose nearest neighbour is closer than the two radii (nodes overlapping). */ + private static double overlapShare(ClusterForceSimulation sim, int n) { + int sample = Math.min(n, 300), overlapping = 0; + for (int i = 0; i < sample; i++) { + double nearest = Double.MAX_VALUE; + for (int j = 0; j < n; j++) { + if (j != i) { + nearest = Math.min(nearest, Math.hypot(sim.x[i] - sim.x[j], sim.y[i] - sim.y[j])); + } + } + if (nearest < 10 - 1e-6) { + overlapping++; + } + } + return (double) overlapping / sample; + } + + @Test + public void treeAndExactGiveTheSameKindOfLayout() { + int n = 1600, clusters = 3; + ClusterForceSimulation exact = simulation(n, clusters, 5); + exact.forceExactRepulsion = true; + runToEnd(exact); + ClusterForceSimulation tree = simulation(n, clusters, 5); + tree.forceExactRepulsion = false; + runToEnd(tree); + double a = spread(exact, n, clusters), b = spread(tree, n, clusters); + assertTrue("cluster size with the tree (" + b + ") is within 10% of exact (" + a + ")", + Math.abs(b / a - 1) < 0.10); + assertTrue("no overlapping nodes with the tree", overlapShare(tree, n) < 0.01); + } + + @Test + public void crowdedClustersStillComeOutFiniteAndSeparated() { + int n = 6000, clusters = 2; + ClusterForceSimulation sim = simulation(n, clusters, 9); // crowded, so the tree is chosen automatically + for (int t = 0; t < 120; t++) { + sim.tick(); + } + for (int i = 0; i < n; i++) { + assertFalse("finite coordinate", Double.isNaN(sim.x[i]) || Double.isInfinite(sim.y[i])); + } + double[] cx = new double[2], cy = new double[2]; + for (int i = 0; i < n; i++) { + cx[i % 2] += sim.x[i] / (n / 2); + cy[i % 2] += sim.y[i] / (n / 2); + } + assertTrue("the two cluster centres are apart", Math.hypot(cx[0] - cx[1], cy[0] - cy[1]) > 100); + } + + @Test + public void runsWithSeveralThreadsAreRepeatable() { + ClusterForceSimulation a = simulation(2500, 4, 7), b = simulation(2500, 4, 7); + a.forceExactRepulsion = false; + b.forceExactRepulsion = false; + for (int t = 0; t < 40; t++) { + a.tick(); + b.tick(); + } + for (int i = 0; i < 2500; i++) { + assertEquals("x of node " + i, a.x[i], b.x[i], 0.0); + assertEquals("y of node " + i, a.y[i], b.y[i], 0.0); + } + } + + @Test + public void closeNodesArePushedApart() { + // 500 nodes on top of each other in a tiny area, no ties: repulsion alone has to spread them out + int n = 500; + double[] radius = new double[n]; + Arrays.fill(radius, 1); + ClusterForceSimulation.Params p = new ClusterForceSimulation.Params(); + p.clusterPull = 0; + p.resetPositions = false; + double[] sx = new double[n], sy = new double[n]; + Random r = new Random(1); + for (int i = 0; i < n; i++) { + sx[i] = r.nextDouble(); + sy[i] = r.nextDouble(); + } + ClusterForceSimulation sim = new ClusterForceSimulation(radius, new int[n], new boolean[n], sx, sy, + new int[0], new int[0], p); + sim.forceExactRepulsion = false; + for (int t = 0; t < 30; t++) { + sim.tick(); + } + double maxDist = 0; + for (int i = 0; i < n; i++) { + maxDist = Math.max(maxDist, Math.hypot(sim.x[i], sim.y[i])); + } + assertTrue("nodes moved well away from the starting square (max distance " + maxDist + ")", maxDist > 20); + } + + @Test + public void oneStepOfTheTreeAgreesWithTheExactForce() { + // spread-out nodes, so near neighbours dominate the force and the two methods can be compared directly + int n = 800; + double[] radius = new double[n]; + Arrays.fill(radius, 1); + double[] sx = new double[n], sy = new double[n]; + Random r = new Random(3); + for (int i = 0; i < n; i++) { + sx[i] = r.nextDouble() * 600; + sy[i] = r.nextDouble() * 600; + } + ClusterForceSimulation.Params p = new ClusterForceSimulation.Params(); + p.resetPositions = false; + ClusterForceSimulation sim = new ClusterForceSimulation(radius, new int[n], new boolean[n], sx, sy, + new int[0], new int[0], p); + Arrays.fill(sim.vx, 0); + Arrays.fill(sim.vy, 0); + sim.applyChargeExact(); + double[] ex = sim.vx.clone(), ey = sim.vy.clone(); + Arrays.fill(sim.vx, 0); + Arrays.fill(sim.vy, 0); + sim.applyChargeBarnesHut(); + double error = 0, size = 0; + for (int i = 0; i < n; i++) { + error += Math.hypot(sim.vx[i] - ex[i], sim.vy[i] - ey[i]); + size += Math.hypot(ex[i], ey[i]); + } + assertTrue("force from the tree is not zero", size > 0); + assertTrue("force from the tree differs from the exact force by " + Math.round(100 * error / size) + + "% (allowed: 25%)", error / size < 0.25); + } +}