From 90bfc3b1dfecd1245510b4146b5f365bdc88906a Mon Sep 17 00:00:00 2001 From: Damon <126731021+damon314159@users.noreply.github.com> Date: Fri, 1 Nov 2024 19:48:10 +0000 Subject: [PATCH 01/13] feat(CS): Add new graphs project --- javascript/computer_science/project_graph.md | 138 +++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 javascript/computer_science/project_graph.md diff --git a/javascript/computer_science/project_graph.md b/javascript/computer_science/project_graph.md new file mode 100644 index 00000000000..0e617406087 --- /dev/null +++ b/javascript/computer_science/project_graph.md @@ -0,0 +1,138 @@ +### Introduction + +A graph is a way to represent connections between things. Think of it like drawing points (called vertices or nodes) and connecting them with lines (called edges). Graphs have a wide variety of applications, and we can use them to model complex relationships. For example: + +- In a social network, each person is a vertex, and friendships are edges +- In a road map, cities are vertices, and roads between them are edges +- In a computer network, devices are vertices, and connections between computers are edges + +![Basic Graph Visualization](example-image.png) + +### Why Use Graphs? + +Graphs are incredibly useful for modeling relationships and connections. They help us solve real-world problems like: + +1. Finding the shortest route between two cities. +1. Suggesting friends on social media. +1. Planning computer network layouts for reliability and speed. +1. Analysing and managing dependencies when bundling code. +1. Ranking pages based on connections to similar pages by search engines. + +There are a handful of types of graphs used to solve this wide variety of problems. Graphs can be either *directed* or *undirected*, and can be either *weighted* or *unweighted*. A quick explanation of these terms: + +- Directed: Connections go only one way (if A connects to B, B doesn't necessarily connect to A). Dependencies in our code are directed, since module A importing B means that module B cannot import module A without introducing circular dependencies. +- Undirected: Connections go both ways (if A connects to B, B connects to A). A computer network is likely to be undirected, since connections between any two computers are mutual. +- Weighted: Connections have some numeric weight that specifies something about them. A road map is likely to be weighted, where the weights are the distances between the cities. This allows you to calculate the distance of your journey by adding the weights of the roads along the way. +- Unweighted: All connections are equal - no one connection is more important than any other. A social network is likely to be unweighted, since connections signify only that a friendship exists. + +In this project, we will be using the simplest type of graph, an undirected, unweighted graph. + +### Representing a Graph + +In our code, there are several ways we could represent a graph. Two of the most common representations include *adjacency lists* and *adjacency matrices*. Read this article about [graphs and their representations](https://www.geeksforgeeks.org/graph-and-its-representations/) from GeeksforGeeks to familiarise yourself with these ideas. They have some example code, but don't pay too much attention to this, as it's a little different to the code we'll be writing in this project. + +In this project, we'll be using an adjacency matrix to represent the graph. + +### Assignment + +
+ +You'll build an undirected, unweighted graph implementation using an adjacency matrix. The focus is on understanding how to store and manipulate graph relationships. For simplicity, you may assume that the values of each vertex are unique in the graph. + +Build a `Graph` class (or factory) to represent your graph. For now it should only include storage for a list of `vertices` and a `matrix` (or 2D array) to serve as the adjacency matrix. Then proceed to create the following methods: + +1. `addVertex(value)`: Adds a new value to the list of vertices and expands the matrix + + **Hint:** The adjacency matrix should always be of size `n × n` where `n` is the number of vertices. + +1. `addEdge(value1, value2)`: Creates an edge between two vertices + + **Tip:** If you would like to visualize your graph, here is a `printMatrix()` function that will `console.log` your graph's adjacency matrix in a structured format. This function will expect to receive the graph instance as a parameter. + + ```javascript + function printMatrix(graph) { + const row0 = ` ${graph.vertices.join(" ")}`; + const otherRows = graph.vertices.map( + (_, i) => `${graph.vertices[i]} ${graph.matrix[i].join(" ")}` + ); + console.log([row0, ...otherRows].join("\n")); + } + ``` + +1. `hasVertex(value)`: Checks if a vertex exists. + +1. `areAdjacent(value1, value2)`: Checks if two given vertices are adjacent. This means that they are connected by an edge. + +1. `removeVertex(value)`: Removes a vertex and shrinks the matrix. Any edges that were connected to that vertex are now gone. + +1. `removeEdge(value1, value2)`: Removes an edge between two vertices, if one exists. + +1. `getOrder()`: Gets the order of the graph. This is the number of vertices in the graph. + +1. `getSize()`: Gets the size of the graph. This is the number of edges in the graph. + +1. `getDegree(value)`: Gets the degree of a given vertex. This is the number of edges that are connected to that vertex. + +1. `getNeighbors(value)`: Lists all vertices that are adjacent to a given vertex. + +1. `getCommonNeighbors(value1, value2)`: Lists all vertices that are adjacent to both given vertices. + +#### Test Your Graph + +1. Create a new JavaScript file. Import both your `Graph` class or factory and the `printMatrix` function. + +1. Create a new instance of your graph. + + ```javascript + const graph = new Graph() // or Graph() if using a factory + ``` + +1. Populate your graph using the `addVertex(value)` and `addEdge(value1, value2)` methods by copying the following: + + ```javascript + // Add some vertices + graph.addVertex("A") + graph.addVertex("B") + graph.addVertex("C") + graph.addVertex("D") + + // Add some edges + graph.addEdge("A", "B") + graph.addEdge("B", "C") + graph.addEdge("A", "C") + graph.addEdge("C", "D") + ``` + + **Note:** We're using letters as the vertices here, but they could be anything we wanted. We could be using strings, numbers, or even a custom `Vertex` class or factory. + +1. Now you have your graph populated, try out a few of the methods by copying the following: + + ```javascript + printMatrix(graph) + // The matrix should now look like this: + // A B C D + // A 0 1 1 0 + // B 1 0 1 0 + // C 1 1 0 1 + // D 0 0 1 0 + + console.log(graph.getOrder()) // Should log 4 + console.log(graph.getSize()) // Should log 4 + + graph.removeEdge('C', 'B') + console.log(graph.getSize()) // Should log 3 + + console.log(graph.getNeighbors('A')) // Should log ['B', 'C'] + console.log(graph.getCommonNeighbors('A', 'D')) // Should log ['C'] + console.log(graph.getCommonNeighbors('A', 'B')) // Should log [] + ``` + +1. Lastly, experiment with different combinations of all the methods you have in your graph! Make sure everything is working as you expect it to. + +
+ +### Additional resources + +This section contains helpful links to related content. It isn't required, so consider it supplemental. + +- It looks like this lesson doesn't have any additional resources yet. Help us expand this section by contributing to our curriculum. From 31cc83543dade39c43316f8bed1fb09df472a4b3 Mon Sep 17 00:00:00 2001 From: Damon <126731021+damon314159@users.noreply.github.com> Date: Wed, 4 Jun 2025 17:35:38 +0100 Subject: [PATCH 02/13] Expand on reasoning behind representation choice --- javascript/computer_science/project_graph.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/computer_science/project_graph.md b/javascript/computer_science/project_graph.md index 0e617406087..55dd973e3b1 100644 --- a/javascript/computer_science/project_graph.md +++ b/javascript/computer_science/project_graph.md @@ -31,7 +31,7 @@ In this project, we will be using the simplest type of graph, an undirected, unw In our code, there are several ways we could represent a graph. Two of the most common representations include *adjacency lists* and *adjacency matrices*. Read this article about [graphs and their representations](https://www.geeksforgeeks.org/graph-and-its-representations/) from GeeksforGeeks to familiarise yourself with these ideas. They have some example code, but don't pay too much attention to this, as it's a little different to the code we'll be writing in this project. -In this project, we'll be using an adjacency matrix to represent the graph. +In this project, we'll be using an adjacency matrix to represent the graph. We've picked this style of graph because it gives you great practice at adding and removing vertices, and making sure everything stays in sync. However, in future projects (like Knight Travails) you may wish to go for an adjacency list approach, since you have a bit less manual work to do keeping the state in check. ### Assignment From 444c46f4e139392328316f54687daf237dbe4abd Mon Sep 17 00:00:00 2001 From: Scriabin Enjoyer <197675111+scriabin-enjoyer@users.noreply.github.com> Date: Tue, 20 Jan 2026 02:56:57 -0500 Subject: [PATCH 03/13] Graph Project: Add images --- .../computer_science/project_graph/00.png | Bin 0 -> 59213 bytes ruby/computer_science/project_graph/00.png | Bin 0 -> 59213 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 javascript/computer_science/project_graph/00.png create mode 100644 ruby/computer_science/project_graph/00.png diff --git a/javascript/computer_science/project_graph/00.png b/javascript/computer_science/project_graph/00.png new file mode 100644 index 0000000000000000000000000000000000000000..7d462303fd8c72b57a324377cd62f24d2587a79c GIT binary patch literal 59213 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 literal 0 HcmV?d00001 diff --git a/ruby/computer_science/project_graph/00.png b/ruby/computer_science/project_graph/00.png new file mode 100644 index 0000000000000000000000000000000000000000..7d462303fd8c72b57a324377cd62f24d2587a79c GIT binary patch literal 59213 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 literal 0 HcmV?d00001 From 1a196e3d2e580e4ad5bb8829fa8d89352b2de113 Mon Sep 17 00:00:00 2001 From: Scriabin Enjoyer <197675111+scriabin-enjoyer@users.noreply.github.com> Date: Tue, 20 Jan 2026 04:38:02 -0500 Subject: [PATCH 04/13] Graph Project: Update Why Use Graphs section - Includes Khan academy article from the Knights Travails project - Adds a description of simple vs nonsimple graphs as this is somewhat necessary for the semantics of the addVertex, addEdge, and query functions - Removes various explanations about graphs because the Khan academy article allows us to offload in-house explanations --- javascript/computer_science/project_graph.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/javascript/computer_science/project_graph.md b/javascript/computer_science/project_graph.md index 55dd973e3b1..6330a7077b0 100644 --- a/javascript/computer_science/project_graph.md +++ b/javascript/computer_science/project_graph.md @@ -6,7 +6,7 @@ A graph is a way to represent connections between things. Think of it like drawi - In a road map, cities are vertices, and roads between them are edges - In a computer network, devices are vertices, and connections between computers are edges -![Basic Graph Visualization](example-image.png) +![Basic Graph Visualization](./project_graph/00.png) ### Why Use Graphs? @@ -18,14 +18,13 @@ Graphs are incredibly useful for modeling relationships and connections. They he 1. Analysing and managing dependencies when bundling code. 1. Ranking pages based on connections to similar pages by search engines. -There are a handful of types of graphs used to solve this wide variety of problems. Graphs can be either *directed* or *undirected*, and can be either *weighted* or *unweighted*. A quick explanation of these terms: +There are a handful of types of graphs used to solve this wide variety of problems. For a more thorough introduction on what graphs are, read [Khan Academy's "Describing Graphs"](https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/a/describing-graphs) lesson. The following types of graphs will be of particular importance for this project: -- Directed: Connections go only one way (if A connects to B, B doesn't necessarily connect to A). Dependencies in our code are directed, since module A importing B means that module B cannot import module A without introducing circular dependencies. -- Undirected: Connections go both ways (if A connects to B, B connects to A). A computer network is likely to be undirected, since connections between any two computers are mutual. -- Weighted: Connections have some numeric weight that specifies something about them. A road map is likely to be weighted, where the weights are the distances between the cities. This allows you to calculate the distance of your journey by adding the weights of the roads along the way. -- Unweighted: All connections are equal - no one connection is more important than any other. A social network is likely to be unweighted, since connections signify only that a friendship exists. +- **Simple vs. Non-simple**: A simple graph is one that has no self-loops (an edge connecting a vertex to itself) and no multi-edges (multiple edges connecting the same pair of vertices). A non-simple graph is permitted to have these properties. +- **Directed vs. Undirected** : In a directed graph, edges have a direction that can go only one way (if A connects to B, B doesn't necessarily connect to A). In an undirected graph, connections go both ways (if A connects to B, B connects to A). +- **Weighted vs. Unweighted**: In a weighted graph, edges have a numeric weight that specifies something about them. In an unweighted graph, edges do not encode this information — no one connection is more important than any other. -In this project, we will be using the simplest type of graph, an undirected, unweighted graph. +The computer network graph at the beginning of this project is an example of a simple, undirected, unweighted graph. This is the type of graph we will be building in this project. ### Representing a Graph From 712ad2f936578034368ced807c225b0f4df885d8 Mon Sep 17 00:00:00 2001 From: Scriabin Enjoyer <197675111+scriabin-enjoyer@users.noreply.github.com> Date: Tue, 20 Jan 2026 04:46:39 -0500 Subject: [PATCH 05/13] Graph Project: Update project to use adjacency list - Replaces old G4G link with new w3schools link because it is much better and has a nice interactive graph visualization module - Adds optional article comparing adjacency lists and matrices - Adds requirement for learners to implement toString() method because adjacency list is easy to visualize; don't need to provide a complex function to print something like a BST - Updates some of the language in the interface descriptions to be more explicit about the semantics of each method - Updates 'Test Your Graph' section to reflect the use of adj-list instead of matrix --- javascript/computer_science/project_graph.md | 51 +++++++++----------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/javascript/computer_science/project_graph.md b/javascript/computer_science/project_graph.md index 6330a7077b0..a1256e6e013 100644 --- a/javascript/computer_science/project_graph.md +++ b/javascript/computer_science/project_graph.md @@ -28,41 +28,37 @@ The computer network graph at the beginning of this project is an example of a s ### Representing a Graph -In our code, there are several ways we could represent a graph. Two of the most common representations include *adjacency lists* and *adjacency matrices*. Read this article about [graphs and their representations](https://www.geeksforgeeks.org/graph-and-its-representations/) from GeeksforGeeks to familiarise yourself with these ideas. They have some example code, but don't pay too much attention to this, as it's a little different to the code we'll be writing in this project. +In our code, there are several ways we could represent a graph. Two of the most common representations include *adjacency lists* and *adjacency matrices*. Read this article about [graphs and their representations](https://www.w3schools.com/dsa/dsa_theory_graphs.php) from w3schools to familiarise yourself with these ideas. -In this project, we'll be using an adjacency matrix to represent the graph. We've picked this style of graph because it gives you great practice at adding and removing vertices, and making sure everything stays in sync. However, in future projects (like Knight Travails) you may wish to go for an adjacency list approach, since you have a bit less manual work to do keeping the state in check. +In this project, we'll be using an adjacency list to represent the graph. We've picked this style of graph because they are usually a bit easier to work with, they use less space for many real-world graphs, and they are often a better fit for modeling the kinds of relationships you'll encounter in practice. If you would like, you can read this GeeksforGeeks article about [the differences between adjacency lists and adjacency matrices](https://www.geeksforgeeks.org/dsa/comparison-between-adjacency-list-and-adjacency-matrix-representation-of-graph/) ### Assignment
-You'll build an undirected, unweighted graph implementation using an adjacency matrix. The focus is on understanding how to store and manipulate graph relationships. For simplicity, you may assume that the values of each vertex are unique in the graph. +You'll build a simple, undirected, unweighted graph implementation using an adjacency list. The focus is on understanding how to store and manipulate graph relationships. For simplicity, you may assume that the values of each vertex are unique in the graph. -Build a `Graph` class (or factory) to represent your graph. For now it should only include storage for a list of `vertices` and a `matrix` (or 2D array) to serve as the adjacency matrix. Then proceed to create the following methods: +Build a `Graph` class (or factory) to represent your graph. For now, it should only include storage for an `adjacencyList`. There are several ways you can represent this list. Some common ones are an `Object` or a 2D `Array`. Then proceed to create the following methods: -1. `addVertex(value)`: Adds a new value to the list of vertices and expands the matrix +1. `addVertex(value)`: Adds a new value to the adjacency list. - **Hint:** The adjacency matrix should always be of size `n × n` where `n` is the number of vertices. + **Hint:** The number of entries in the adjacency list should always be the same as the number of vertices in the graph. -1. `addEdge(value1, value2)`: Creates an edge between two vertices +1. `addEdge(value1, value2)`: Creates an edge between two vertices. Remember that we are building a *simple, undirected* graph. - **Tip:** If you would like to visualize your graph, here is a `printMatrix()` function that will `console.log` your graph's adjacency matrix in a structured format. This function will expect to receive the graph instance as a parameter. +1. `toString()`: Returns a string representation of the underlying adjacency list. You can use this to print the graph and inspect its state. The string representation should look something like this: - ```javascript - function printMatrix(graph) { - const row0 = ` ${graph.vertices.join(" ")}`; - const otherRows = graph.vertices.map( - (_, i) => `${graph.vertices[i]} ${graph.matrix[i].join(" ")}` - ); - console.log([row0, ...otherRows].join("\n")); - } + ```text + X -> ( Y, Z ) + Y -> ( X ) + Z -> ( X ) ``` 1. `hasVertex(value)`: Checks if a vertex exists. 1. `areAdjacent(value1, value2)`: Checks if two given vertices are adjacent. This means that they are connected by an edge. -1. `removeVertex(value)`: Removes a vertex and shrinks the matrix. Any edges that were connected to that vertex are now gone. +1. `removeVertex(value)`: Removes a vertex from the adjacency list. Any edges that were connected to that vertex should be removed as well. 1. `removeEdge(value1, value2)`: Removes an edge between two vertices, if one exists. @@ -72,13 +68,13 @@ Build a `Graph` class (or factory) to represent your graph. For now it should on 1. `getDegree(value)`: Gets the degree of a given vertex. This is the number of edges that are connected to that vertex. -1. `getNeighbors(value)`: Lists all vertices that are adjacent to a given vertex. +1. `getNeighbors(value)`: Returns an array of all the vertices that are adjacent to the given vertex. -1. `getCommonNeighbors(value1, value2)`: Lists all vertices that are adjacent to both given vertices. +1. `getCommonNeighbors(value1, value2)`: Returns an array of all vertices that are adjacent to both given vertices. #### Test Your Graph -1. Create a new JavaScript file. Import both your `Graph` class or factory and the `printMatrix` function. +1. Create a new JavaScript file. Import your `Graph` class or factory. 1. Create a new instance of your graph. @@ -107,13 +103,12 @@ Build a `Graph` class (or factory) to represent your graph. For now it should on 1. Now you have your graph populated, try out a few of the methods by copying the following: ```javascript - printMatrix(graph) - // The matrix should now look like this: - // A B C D - // A 0 1 1 0 - // B 1 0 1 0 - // C 1 1 0 1 - // D 0 0 1 0 + console.log(graph.toString()) + // The list should now look like this: + // A -> ( B, C ) + // B -> ( A, C ) + // C -> ( A, B, D ) + // D -> ( C ) console.log(graph.getOrder()) // Should log 4 console.log(graph.getSize()) // Should log 4 @@ -130,7 +125,7 @@ Build a `Graph` class (or factory) to represent your graph. For now it should on
-### Additional resources +#### Additional resources This section contains helpful links to related content. It isn't required, so consider it supplemental. From 0c8d22ba7b7c18da35dcbdb4d6672207bd17f8a6 Mon Sep 17 00:00:00 2001 From: Scriabin Enjoyer <197675111+scriabin-enjoyer@users.noreply.github.com> Date: Tue, 20 Jan 2026 21:16:54 -0500 Subject: [PATCH 06/13] Graph Project: Remove Additional Resources --- javascript/computer_science/project_graph.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/javascript/computer_science/project_graph.md b/javascript/computer_science/project_graph.md index a1256e6e013..d80e45cdf14 100644 --- a/javascript/computer_science/project_graph.md +++ b/javascript/computer_science/project_graph.md @@ -124,9 +124,3 @@ Build a `Graph` class (or factory) to represent your graph. For now, it should o 1. Lastly, experiment with different combinations of all the methods you have in your graph! Make sure everything is working as you expect it to. - -#### Additional resources - -This section contains helpful links to related content. It isn't required, so consider it supplemental. - -- It looks like this lesson doesn't have any additional resources yet. Help us expand this section by contributing to our curriculum. From 0c23271a7ec243b1ab49557a1d6d0a6d135c9467 Mon Sep 17 00:00:00 2001 From: Scriabin Enjoyer <197675111+scriabin-enjoyer@users.noreply.github.com> Date: Fri, 23 Jan 2026 08:48:22 -0500 Subject: [PATCH 07/13] Graph Project: Remove old images --- .../computer_science/project_graph/00.png | Bin 59213 -> 0 bytes ruby/computer_science/project_graph/00.png | Bin 59213 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 javascript/computer_science/project_graph/00.png delete mode 100644 ruby/computer_science/project_graph/00.png diff --git a/javascript/computer_science/project_graph/00.png b/javascript/computer_science/project_graph/00.png deleted file mode 100644 index 7d462303fd8c72b57a324377cd62f24d2587a79c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59213 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 diff --git a/ruby/computer_science/project_graph/00.png b/ruby/computer_science/project_graph/00.png deleted file mode 100644 index 7d462303fd8c72b57a324377cd62f24d2587a79c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59213 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 From 052c0fee8dd99eee3509ed9023c5c3c5504dae52 Mon Sep 17 00:00:00 2001 From: Scriabin Enjoyer <197675111+scriabin-enjoyer@users.noreply.github.com> Date: Fri, 23 Jan 2026 08:51:02 -0500 Subject: [PATCH 08/13] Graph Project: Add better images --- .../computer_science/project_graph/00.png | Bin 0 -> 53189 bytes ruby/computer_science/project_graph/00.png | Bin 0 -> 53189 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 javascript/computer_science/project_graph/00.png create mode 100644 ruby/computer_science/project_graph/00.png diff --git a/javascript/computer_science/project_graph/00.png b/javascript/computer_science/project_graph/00.png new file mode 100644 index 0000000000000000000000000000000000000000..a5d49bd93ab3188e50c6f2b01c8f755c853dd8a2 GIT binary patch literal 53189 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 literal 0 HcmV?d00001 diff --git a/ruby/computer_science/project_graph/00.png b/ruby/computer_science/project_graph/00.png new file mode 100644 index 0000000000000000000000000000000000000000..a5d49bd93ab3188e50c6f2b01c8f755c853dd8a2 GIT binary patch literal 53189 zcmeGEg;$kb-!%+xL=+PXQB*+1BBczFP*L1~bf=260@4j8C<=-orJ&NS2-0Gs(yg>2 zx#@1+xjgUZ{k}22zu(@!vM;{hZhuD0Ue(&f-sz&PF~!u%`l>Onosq4v zv6Y>fwfzu%kpy0Jh`i{ut?@;Bb89OOHS?>+l(V+x9D+g|vKOs51P==y;W&IuR9IM4 zc>E;dbbzE!um(C_R!@ zlZ`bSdBZ%g`;Z)`+~;kwlPw2L9`@gPEp+@*7IzfBOA!_vxUrZAKY63jh6rvKWg$WZX#i-?zuczW0#@ zC12A{d!?8E_s@3U4Om+8<-PaR|M_J9|Ic6T`QI1*@ACXxf&aUL!u?I&G79CghMwNj zkDop{47Z>B^7X4lU6Q)C{ywCh=;GpHV9djZ8<_bG^h7LbmCl_zx3yt4#U|BQ=xb<7 z8nQ=o4l6vyrp&@H8^O32k?4obTB(Jl0Ta9!BUh2IE57hB*oouVrqpi++ z{VZ2da-NXvIvO-QY%|eQbs8VUdd!AHd>7I(WEB%r1M-;jZd4s*nEjM5BPHkJ=PzFp zHBxm}uUl95{yP1eJW-USU8oGKf|q??zI>T!+xa6UZ9S!(l>@2Te7N!LRc`9)HET-# zgyTv|?)v$uHod*dylK-%{v}Ggq<38yKKxcf!ogIXEZLSkhmyV|yl(CA)RbnnRm&D; z=GcUUgnw_ywQa#&6_D z-rQ=@XV>9fxssFVC^@pXd@0^LPN}H{-DBa8tgAx|g-PLtj!Lwpq~V+G8(CNmczG>Z zx|YYpaNfRs+k9bmqOr)U$Z?=CHZxP0`H+hAmwU{r(Ptlwf8MNk&~386VLUHK)Q5?^ z-Y7sk&fA;fv9vJtyAFKhcbV316jvy4T945{r&6x_}?YauUzlkFXl0u={VGy z%FL}{)>oT2J4;Jv-nPxTEX`xDsC~~v+rQs-OG*}{q}^Mb?qJ#_YJbjW{jTbj?C#I$ z=vN$j65#Kzaq85KOP4OCQGK^<-n_RYBZylwEm=ZS!`9=4B>r0cwr@!Ye*^jjpYC9U z^}DJj>!MWuU1BD)Iyr)-sH9R+N7~^{mzF`QBir014-sJapq%PW%qFZ^D|?0>4uWbTx#bcj#}4en%89H z{m||k{{0Dg^aKkLotc@LlI9<=YV&@x@~6j_eomN_KTW)|Zby=3L)y|$k)?tA0{>ET zpslEFprWfRf_dxKxcEp{SuB0s+)z=vudi=P>hSr$BgO0uH<=_7CTI<&4(f|z<V0{7bR;pWOWIrS8Z-gZ~Ad0gh^ z=6&_45em;l_myM_TQwgGXcheM;lt|n>ot%c!Y-qi#V3CnX{$AP`F#E?9UB{aNI*dO z`}gl5yCmin-MXJSsl9V|X>n-KZ&=X5+CSoaChE|aXGkmJFns5pq#S+6qBdbSb@sOp zyRb>=wz_0ZeoJo0$2M82jkJlWneHgE2S37u;_ooAr_D~#@&~4-rb3E}ituMIG!0zN zJbLsfgNNJCVhu&At8(*3ijAsvrrD#nSAOlGvYv2$)nSv5b*IIK7*y|aY93KkXVT<2 zc1&xRm}6~kP5i`Y2|xFtLx+-+m#-`f7kSKiwIxr)&vKcb?y6O*!jD~h$(e|yXQTTQ zD;vU>x_+1F{AP7}N_+TAM0b1KAJ$pdp~5K>*GqG^ZY@6_c|sc-Uy0RKOHkUao}@+% zI5FzGdMi(l@**w0s2&(c_`-V%K0+PwT3es08!YMNsh*&8vMl1L=JjO^K~JBiN*95Ay@G4e#>;=)|A`^+f9}k=x{}gEl<(Np z%v?FUocezXtlM^23gvukmcg+iQhfH0A3rJsz4&ZTw9e~Gx6cN!U7dROIHo(&P2pFD z@ncRAvr4H7@u{bU72Bdw9M4Egn+>%V{&*&qy=>XC+9Y-E0D~JOUcWusJ5j5ucnC19 zqc}j***WKuk&(!?Kho-HddE)>ok=$+97haVc6@!ndia93#B}@3wY!{N zE}cxXyfqu|vr8JF-l#@Ncmy3#WD8jM{rk60o_*r%)KL1z+iRMd(lg5z=Eo{@3Y=fJ zx^(aAtcWtaxss{AI#zClC_XwYm)zCWrG^MX1IreBWl2y*K23 z0TUl;lN!>RyyF|w3X8Azx1)JI3k(cY!wuple_2`=V-Nd2-`(tr`pdjyN3x>if|_N0 zit<2XmWX|iQof#wN+8lQzRhb%e286Q0D$fhOA9CabYyLuvZ?!bV@$E+9c= z&z(aZy?t5x37h-yNrcOHn#a#KrU51uk*T4f+hXJ5lAK5Wxc0p8Axn{Mo7P>3hUeN9 zW;$NNUu5>_&bmoc-{f6e4k}4i-*)LHmyHD6CF!YGecQkm%_GqMg-o*#yXQf}wl#+I zX@7Gae!aaKK`K0=zo$ZSNo{7dv+m^?Kl!r4(7?c#QC^GMa!+`w@ZZEMzcLc>>0E~I z3XuIY2Z_d@pe+m29RZCQ#(w^6;z{UJGjnsvdbze10OohPxm&WWqxLICru6ifks_d( zrpKk3_H^*woR#=^<>^WByr+oO-sW7pNz;=i#xWiS=Fjw_vd~zQG}9x27*fypZ8dLu z=fS0s68hr_Z}N(DtO;7LFZI^b`hUG4yZY9uB}qTuF;V*NraT01ZO*k0uYsrj6mQy1 z0C}W+zGEt9BI;C_s3&63buhO(=;1>Sc6N4>ieiram9>eg6TR_K7C&EIWc&T)Xq$U9 z_Wuyd5UaRrX7OvrDo^%$1=txPwMV5a|>T>6rP!#wfOt(kt^bMpaV7N-e0_e}Ie2cYv_WgBZq)yu73T*9g}?M6d;Y2Z0yj0F5vTr7h&p#=P-@buUVR1}Nm zoNHDuu1ZVaBH__wm49Byq?FvyJ}T&QnT$Ih(T7abJa^8wrGt0x zR$iT$2176XyLa!7j*Y2Sy*x8;yll^&J>wG%h9&qUR8UeFJeslby^~XoS(da&x4|l` zZxEsaHP>x9m)q2!IyPsYe$U;%yjQkiy>Pj;uZ?8Hq)X)^)}U{s7cD0B)g^QD@RSaE z(7L3zM0$!-t4r~KC=2@(a6;23cYXtHSJbt>pRc1yA$)q= zjtd37Xnxc$@bP02k6HWkVS;CFuV&6DkvV&|51Xluq(tV#j&_zHKjfwfz(4e_bHc086`;73V&y4s<4>nQR+1dHd zjnAYUp+=lcH~A1-l2uV!`)fiwLfp-f*YKTQo5$2ML~q=lGxrYe*>eh=n^nR+2btV2 z@=DxoG6jXYGi&8FzpcFeqVyE2O)G$Hy^Xc^3kr@Vl|Op&#Du3r@QHC4nyKLk`HDj? z`kKKr_F*M^=;i|oKj%zJLodn(a~YHW1GP8%Co8?U@tUV3h*!6M?Jm*U{+9fPr^l{+ zEPZ;shWt$Hi7{yor%sjtV&cG0cmxkS5 z!xH}Y?`5O=0#qus3-Kg^3j(GJpPqJ}%h@OQWLrswJOF>;yLZ&b`?up8z`mBZLycJ_ z@2tDapN$>kJ9Oy#iILBn$%UgigrP2MH@Z(%P&k4u5D4bhJc5QQgr=MsFoP{57xHdy zP)I#lLj-wflOLsk_GXHeShwRyW;U;0P9^T*M+m<)B9x}_4)Bb;Gx9C}sv-7q)!Mbf zKsra0HPep(Uwz$X4nUXUcfevzQ?F4s+2)Q~HJjo6$zLTV zCVmYq&CUhz`|+*_!62lptlWkCv*qqcDnYM#An-LNE-oAeuEt8Ns;bJsup{>D{cRWV z_ZST(@|J*zy5gfe1+g^3SSkUduQ>x1rE~2`Zn({|1m);bta`sko9A3=p%+FGgMfTg z+*0oJf=j5v7LsCLw{70B!xEL-3hmAOJ&=66V>zlvQ+kPd z>oy~dAXcQj33<*tXOBjCOom|xfq}n%{`$4CDLOj({2P<9`^MTPxS`2Ozo;p)fw;0z z1Yu}RykbOWNk|0J4|`dP;x=?`XsBq((@6WtU0>hfpCMu0lc*j31E|aQ;#6W~vEFYk zf8P{f>H04c*~DFQva->%gxsfX@JGmDf8CkwLM9|M9`8Tj965oWA3pSMuH3%=XVrim zzc>~y4*h073L5AB{f$jbY$wcEh0QKt6)#@AxZQQ#)y7N#te!!kt8s$6D_?_zkg92e z=~XP@c_98WRN;OPOfG^CSVc0LqO&{5Qn89yT*e(5uVU3z0f`uQyYKQ(F4zrD$9w78zRfI;x99wQy=kt-yg zPW!CS$~H{jQ01V9aiAd534I1jC*;_#wjMoGi@liPmCS= zfBt^!_1>F~WCfs5QBR;+_v}A#py}!e(rhdtVzZ{NR<5n_ z81QHAf_ZB}?jhB<`yQ#l|6kUhd+>dJu3fYZ<7H2l0_M@t#{K%m;$x*k1_5ph6Aj{# z5q^d9qa{`!Xb92)JA<8*F~t)+>gfh8yie`!`uiWjCi3a${cPg%Y(+JoT`NUjEtFvT zdd$Z+%*9H7Xri;x$VAeJUp-YvBzx}aeE}dv`J)L%8vEr#NjM-%%9Lhg*jzp%?j>ga zZcd+*T%0xvFpZWA;p?h=aoVc$UvzZ)Nm^!K`Ss^oGhk%Dp^5(d+C2X?>(?Ivr@>YX zO5_v%-gRp5*^5~a5bwR{*Cc~{U`45a<0EZilBLoxTsN*^={fn!bf5k<(QP|+&|Vjv zyt#s{NjB)IhFjRl7-TAm%dc8Xgg#b$2v=FQQ- z@5x5R{^8;M+Uj)x z8y>=M$k#hMFrouiD}-~`3FpezuJC+oOyu|O-p!3`usdW>kQ1|JOwQz%Wvf!d)5MTG z`!jPWQ)Fnj`c%r_mFi(o-r1-3;uJ%Gi|xKc92`=p0fC$Wz1*CK4j%j_G4)07bQEDW zzBn*YnsY+Q*jn@L32y{x#HavqbH){Sxj)-5c!lH*ylnz>ipPLC(2}o7M@MHh=eOn1 zpKJ1y{lED06$8toB%=l=3a;t9EiEn>Oc~0h@u%)Rd%qHp>%?S!mx&nQPVqarn>EST zM&^Ab=Z9}vG^9NnocB!=T|(;ht~g8B3i}tWCr_T-o^~3Q3lQX3S){lwx?AwL(}kY} zE_UiETFUHR^RGP@XG|T2TJ-_pR4-qSK^03uyU#6)bBQaqr)M7Q^kR*5$tzZ7Z#R-x+tBQ>0RruUtt%$M1gI zrkgM3I-XD-Db9`9Eu8I3HmGnL{Y#}*gR1GjnqDw^Z+3DZ8QsxxusPSY{rXBZWM*BW zstkf@a@IA3S2u2;Dch~^>qtkjLtpKoef#$1-c|%hHJ-OEfX3STQHAWY{zZecjUBQZ&5?zwg5x|);i1&o;NdxP{P1K7Q-yh#N3gJ+#Z5_3{9s@RLwce=hk&e9;xxN24I zm0$O5Q(w(t1WdMWdnb$SD)L!@Xbs5HT z0j3=~={F+6y6Y!Ajbp@3q;+({4P1NoiI`VQ8@i9&2KyFc*Ik}yR`oK;pfIn&AQKx= z4}ueMaG(VPzRs%)*IT`oJjj+2B4#U}Ug!(UbiG^^goJVco47D$gVCkPABa`{&++LYRhLVt6q}Qt9N{#^U`* zK#NZ`+fA~JB8YlI3_Yt-wBM+qJ(fjD8j_mN{~@*%f^j_*fp$S zdkNf9h2%`<)qUH8`Ks2Nj=tYRb53IC31=lRdu&Y|9UTK~+G*-({Ke`az)TOe3!Ob~ z*HvmG&gRxHAV!gJ><`sQ(@P}W^T%7OMDgue|DA_=huAE!cxo8VgxnWtyM-#Qg5Lm~ zdc8KQ_&%t~%KsF+=TV-s-#ZF*-d+i7xY&rXNg1RLr+&}XJeM&O!ZsUyy|0W$EaEnK zCBPs(1R}w62!P|DvT2%Vv8WaIS;i&4p1mL|51bHwF!^FYS|AqA1@p$7Yi9k%r>oH6SKElcYflCbmvva#Hh}r)2ZOCl`Z`CuQ$HMe|e5)`alL7@B z^2c0fkm{xt0o&Nv24A;L7<~QwS+AIQT+BlGGW3`T=KNK7e&4S# zFR&1euaEx8`ZLRL({kJ77s0XSyc@YC*dN<<4e461U&?qpqav*>lj)<;k^#Z{QnOpD zv5tIHtFcFM#UfFcfUufB9-~5S(Y@0*^k--&9jN?VUgcLI+l5jrymf2AFUyCaK|z<7 zcIHlZGf*h4|6nW^=9oGeb`MS}GDi*ZJONVFb-dgUd_H!2qWvb5#q{v+z{T}<5Z8Y< zwi4za%E)6*pqIsat^)cGet+_DTN@Q2>X6h`8n%~eWw-3fA=R_*-o2BRm8}ktTd4Ev$&0ZKhTM#Bgme1iVw6dkZCMYD8y+@7?GjtTfRD(*oK6^X+)N^Hk=2@Se?b9} zut&BN?O-lcZejD)@@>&%A5s76$Uf%e9Lut5(E*E6Ry$LWh=NP#Yfx$)xV*_pvXS63 z*@jNr+h>Z$6ynX&bQQKKm7GSEU>?Z7u!_v_Wg z(+ta(n_-;MO1~NPR@WmT(3eUoSi;7*#YCz&T>v0QJq+0HdAQT(u2CGhftAOpD zth4hNq}&Ro0FY`hzl-~8gJx?mU#+5|(qAdCcg%GwkCswk^wB`5ifU`=Qp4ZehZFm#%^yw9Ap|1%*grd&F z&r!{c`Cl!gNV#q+UrWj9JpuSd7J3{xW&tAAk+ONqmKZ{DVY3`58@6pTOHb0vvQT#z zY}Q7O*N;_5rn^q`C7!yydURw&8LSK;B%vz&EKEzw1{s_T=F*}%<}R4ab5Y`otJJMul9ZDKCE?6#hS69{UeE z{B{lQ@(?%~MTwah)}vM_C>MkvBaPF;N>Wl1YEs*J6WzC0dao^zR)8G{wBKz;)FhcO zuZ%LVk$s3j^@cQk5tNxM^P00@WD5Sw{I0Iacd`~A{kE4hNdn!cPL*Q*uSOD(IAsza ze|Y1@ji8{Q7^`2pB+?BXp~#p+_u{5Wx{~ z0bG;)1gQgx&xnANCa#vSx?DR`UaePBYqs)KMh8eFL7*OJ&Q(=BF>(t_d@?mNK_N+r8CbQv>#|HvP5MZ83!ZxuLxo<=M zU@(1wYL)={8x*D4{d@PS!PheH+}S^&omabtzu>uq$E;cV`|Fc-pf2{`_VG!^9)(MK zEi$*zz@YVjZm&#Ef0qP?-3-NyP-)N{qJiuC>UFK_-d=5L-uf)J`A2Ua|#~ddtD~35T^ij>tpPiX_BDdZ0`3E~g$)<{IQ3evt45T}5K1CE_54 zHbc*u*wrk2DG>CDKGKmBV&F<80xPtlEc;#+!hs@|v)qab$E)S?fb2v-EP!=vzUq6q zw>oyB(K7v4VQ5TI_fScx?E5sMYF&}>OC&$@?0a8s+3VdR7 zf)zyM3yBWfg__L3h`P%bZQesJ*)B z#p#vjLl1vQow{PuwvtLjxMlS8wU*Hyhia*guu8ns^SSMZU_-fUJfhiNr)q`yU zr+~Sx(Hyj1T{u~|Fxh1FAv?Jx?+&|RlFjdrsC*-Nvx9|Gt;y($$zT{8!9pLgZsh?C z3(=fymaT@JLJcEm_M|f{H9H9^MPE~PI@I};LboZCo|#f)00@ldq>Pn3;Z=ox$EiPE zy7RbgjOYA_49a2NGfNEZLDl>cK%9Y8`UtK|UHUG$OZ22OdP&iQWZS^q4d&&PwS5)Xj28wsG z+DqwG;QTwo(>Q3C?pLAn*iR2%B+86ai$h2uKu;-Oo) zJj;~Wx9<$zUmfVb&~u~(;#+lfwOXFNxmy#8Xe|&9De8CysxfmLa{3^^4VUuE&&EDB zKuM}-P>?4RbZ3Cxj+grpFOA!~0yH=m{ktN^k896O4QYZbu_{_{1k>+QTRf46O7Hch z@EWH%mYhp3$L7xIZ>hT3Twn#R#a3Z@+;z-G3LOCg!@TiLU(mI^5bA;g0s=4y{Bg+Y z$4?I7B49lkcJ;?1nPK!~yLie~u(3-4DlvpZ5L@CcZwtJZJfVR~w$#}-q#LHA+>;)o1JzuQWcWUYU*$RA~3G+kew@1X*v%Rk__{ozvkc+)Yg&&dP`7K5R zD#!0%u>pek}^h6Lf%S z_7X}r4Z-rtE!;#6L=OHs4#t@lTsL`Za@)8Vw{=RYDk@uc?Mf|LoR!0UXrN_v+?!B< z@gokuPllK{Dc%hE^4^w1w(5SDF-L2_QbX7*)Bp!mI+V1-Epx8>285y=2;L$p5&G)S zG5g5lc4tZHc;?g^Hb|4h@GCDbpJ$gE7aMDizQd&&S85#PMkQK1kpZFVjb<3rQI`JI z?;Rf})^4;GZapR4ZenZh%lKZ*diNy_c$U1ER&3SyACuxgH=@mHn30I9DkG0|X?5D} z2d#I+mmQ^VurZFLdml#YKI3}&_tGKox|cb@4zGOmYBi<(PW#m=?+A6U&UNvM?7=+R zg2~CtF5e|?A0X2_T3UWa9@qOK9e7v}+_fl|JgG8Qu3X8p`viN(&eFSZTJ0W(9SciN z%v1kNQQS(PYSEw0L!Z^wXQsSYzd#Hwca#d8uK`XOJBUyy@0or5{5raiQs!m;qpANh zN!73zx<9H@$8Bw|Ep&6LOHjUP;0sF^aX{tlo}QbtMEk_>#wyN=v5Zdo%o%fBJD`HD zh9(2WX5GK{+O~W5?os%%AlET7GY8kz;q7{-vAX{ZQNqGO!C`dmk~eOvV;&CzxJDzk z{Pu7+oMK=TQsEMP-&Y2Y+iU!anA`9xN2brjhL)VnK*>4#&xRI5K>5|CdbY;?)f-oB zrlU-o>gPGjf~gY*h2puN{=L`Q-LQGw>6)$n!`fQvewRX-AN%K4S*yRod+9KIVE=vj zYiVK1Az$AA>m>buUAO=1pZ#BZ@qbzIf0uvu|KA+qpGC$nF>~|r@ez0Gzba+P6Cv>R zvctaNp|_X5tOov22>c6<1jbT;2YvW0;`O_rfe|ML#_AZ%JeSo;MW;Aln;kbN2DZRV z%LYC|#ezT9*5jruF@sJ8iGzd9vuP6thT$Q{p32>rvJ{9r0WFymEDjSIAl=06V`~Cs!F%l|h^dR}&TGB?q`B|VrO|}8*(56e4aJ|H? zOeTEY?(4KpaMl?-w2V#+lrJ$9^?;C5@B9&*?p7#BtaR|&sXc1%qBt;oF%fu=g*(zqsC+-B@c90M1^n) z{G2Fy5b104ca~##Vj(|qdUiGmL(wd#iY&wd@i=wlfWN-l_D&znX9I+Q!PkFq&zWPTD0R99+;v?V~6CpH!(PNr0+|;LNM+1z)ypn_~vg(HA zoU)jDXZ@}u*c>cy{{&xR+;`AV2S3C^B}mRFx0uaM9z+0HqtY;dnt?&((tVp^+g&~|5uUbDI%Lhpe5au_=y76C zj$^v_oatm4`1M8x1V7~1IIG;wt=WRe*~Xk}(T;=7@Ixp-nmosJV%S@EdxJm-8|^%y z))SQX77G&lHLP6@p#Flvx8lClpmYu_5JNhy;U(zobAiOr4YEmG)lNFk)w;!NX(5Ey z@_rS>l1$j;*=<>Z72;|oUzk51+{ zK24MZ{2B!1y%|)6GSuYrHa4$Z5Dv|KBOuQr1dV@$!k)xxbRV*X0GP?6;CqS;vdIyt zoc+Y)fg$GdeStU_8@nJJWKLcE`RW5~29eHxR;j|7jkm|A+4od_Kw|vr1Q$i@8idv) zCM7r{K%mYQguv`}6yJb(a%)*aR{m* z>K9y?n<5_y3w;>&f)&1#?}7WuV81PltoaU$5?nLHp<@DT*M44J-j)o+0deGjk_+Qf zPYMN5>fGE0t3nve4&PGr^Xtid!p-|@pmqPgePQ4bg`9^k1dK^8&5y-la?rFd11GPV zahY24##B+r_{SF55_X^u9>R5PM;T&nW70DumN0w@t~`4H)&ycU!?@Yll-4Y;q85zMGq%1O*5zuARY}TUc3>pl@jk2naZa!4GQ*e-IHVE$UMe(J9DD8l;Nd z4$pN6xcMeB%|Y2A{gE>fZuQ1j7jG6W{W)F?_g*skb`p%Gcsut|p;+(SkJ%9@$^~a9fT@d?0pJ(B`*n-<}AcvH1M( zr*I)te_|~Q*&*Scvz6Z<1;xk=-5-na1Thc;U8BjE7_7;;j6iajkoXsfF;ga;&>uWf{QuNKPEWuAhK3BF2JQ2oeP5pyQVEIYD)$s$d<}kdqH~9tVjU{G)b00B*G! z95G46u$+jMBp#ed*Sk+)^-%xp30=Afwe#*CqfK zsDU2m=iPG7QVjC;e*ngb-n38FY<_xV@~!2}JlQ8=xdYvn2KAMSA-S5c=wKu*v42($ zgkmFwkXXF2K}tY16S)1xDD?vhPn94bsDp$glq9xA1>$4y!-vn|9{kyWEnu1eHt7Rc zsQ>z42kCOe1&s~2N?$-H3x)@t+&Pe$8RqbC36DHD>+R~Mc0``jvC)Qj$13Sr(6mwo z0!=?VUv(S13GT>lhm{@s5ZNhA&6L_ ze?j>Wg;V60>T0SATp;#v#!>^x86Kj6pb*s9Rfu;xz5_+fg##IZe7B6?Kd6J_K%KCx zwjsI&vG4*C!Ga*si=XZgqK?g&oZ&$wv#gGx5^aN%_{)Rsf441F-)bqnea%C>ZE`Bb`C5|B3#Oo%{JIWP1v0? zZGNA^!pXts+X;=}}lOo!feM03?F26(AH+_Wj?oSoSXUhhKAfiMvAIqDyor#)g3pUtc)6m9FYa=t<=*^fxZhG2QjP z&bfgjW?}K0oxc#(n?jBIJGSVz*0ek~{#n?ZXoG_x(H}8`*jJrlNzBXB0gFDO9k}}X z2Oj>Z^-6LgLw;~Q=>7WjE0A?*YzoR_5^Q<|Vx>f`Bu7S|Ag0<$O)QD1ZO1{w;9AlP z7G^5E{t1sL21NfM@&eeh;NW26UHlRf27xIaR1uF&d4ODN_;TKhqI?RG!(NsV06HZd zBW6&OMQ8p#R@c!<0%TGNJjY|P=S1?cmzx!iog~UnTEVESy1IHII8%v}QoRA(;aL$W zw{G8_(Hr35=2nH_xq>B@6V1IsNA5Q!o+NyYy%+)m@42+#6dV$gj3z>ic%0@aUH>MM z05;zI76a2O2zMzCs-hxst8;$;u}qLOioEt4Yf_2|h5TXOwQn?!pIIK<*OZ2c!e|wY zV**V1Ex$vHvMiUZLM$>48eO`Sa<_aZady)_ zDk9~dGz7Z`IVwVo{lq8+Kc^N^yFfr^!o*5G8)$sWoK0Ix3l_q&+H}%XVw|sdO>FTv zRFkX6w~v!E0XxnYB8OrSsd!4}w12MKloeIvm!8QhQ63(7psNqck}J(zyYg`Tf1b2;t(A%a_-)2l-sLBSxs^x22O}T0%l4t|+x=4&&*cKbN>^N`XhN z{CtioLc1?i{%~BT=1HGU>Tfa3=1EChWMB+j%#po@Q(WH=YM5e0p>Sq74H=LFRK;_z zFuHs1S4QXoeE&0a5M>*hJ+Tc0E{1N2urOVJ7U#a;Aat1Q_4qAu;)EU%y}7x?x&*@K zlKFc=qoUGLO(ZFupZ<>*VAtD?pU5yqz)u zuePLPGYQ(p%s=`+}75Xk>kkj8@|Vgp2y6>!tS_ZtR#MNRbom?XD6QJfC_iqmy0*P-V`*R1jwD-{t#p zyX!Lsf{$;=!xpTBQiz#`Gcm5ZN-XhQpu}v?-Y5^mQ!fgJ63ifr{Xu4 zxu*Bp!fIWD_W~}}z@if6kR15~&r+22m5L9$awI}=Sb28uSmoR#36-Ly#e9ssah7Sh zXL0KB9kI#5{j5!Uj$Nf({{tpYlS;jtmhET8(SDN+J&?~dZf+Rcvw)ZU9dXA0G93qWsMQb!ue6w~_=_$u4)?@&tUf$rIKSGQ zQ`K!vB_1buaLG|a+D~AHYM?W#;134wBVUMUOSS@%m?g$tV&p{30yY2LJT6S{ju&U# zaE4kbadM5_PPPCU=r2$N9~O61fgwxj?jgxb%#&V=?x>YG2dJhHuZq!V*rgo4aoTbL zjB5M8AEo@-08pP#ki)`wjbgpsfX%US9P+gQB-NmFA+GCjKE=q`7yfD`0>_E)i@VZO zDYN{AseHx0)8qZWR583%!I49TvzZ{t2v%EpA=NUT^Jgvywb62Ob0tcc3jpdyoloEh z9CFV&+H(Y|hMB3qj`^J<&cf(72vcGe)!6?B zJDfH@?`~{jl2lNj=e0D~mdf#R<~ZItqiJBaTXM<#0mj6cfW@(>B{Li#)X?}FwK#s@ z3;3oDrx zjvv$>?|xd-KB0!7^6tuX9=RlrRVJtS>Nr1;2-$bw01d-IElv&N84d>>dMZz%dT1ys zKN=k!wf}va#R3ctIHo6@#0sn^J`sd^OT5{ZV5$gB0zct;;*$xq5L^zE%H(PPUL3`! zAq*tO9CMgDeVWVlN>Z@@4F+zhBEOH425nt1a)()73pO%fLsJHxa`7oW@^jM1LHqVS zRz8jc;{=CG%*_=`F22CAEhxpamp9dS*^3hHiz+haOE{nSTqE$a2vk#sapF29r-WTx zTxjA}@20eN5Md9$rHLic|9uT(ud+zwo^}#_w#3%&sbqHU<@TpY&d<`6* z&HEcDCv4XxA5~38V_jlj4xY$|No``N&2VY9p(sUqpD^1E^7J3dh6@B6z)8{r9#<2o zxdrw_BmlH(7l|ga*5M~yG6-FbxH*V60z3P|G83`>#WiczWZ_^UF0U5{Yt(_qkkJ~Z z=g$&vzv8Em>S`5_;SVcG3eAr9Mq{{{5uP|q&M^W7-NSODs-%7Vcxqw5+N%cTRzLn; zFL~So6yO*5te(G*73<56wq03h!!*7=_iG0xpMf{)|KJ?$IQA?78DRSK+8sDsJ!E;t z#>UjOw6x;sf`SudjRChvx}j8SSP$L! zIy+CTCI?uF^8~FV4~tfZ)4k**X@j2KgSvh0Kq!4R@d3d6WWu!!yVD3<5gZnlh(%hr zT~L}u&*nNnfAqb3t4T!(w5UHod{_kUgDBDm{VMS+tdJmYat4$cZtOSZqH^S{hnU^w z-O$F(1OT@tn(Zpc69+^GGHYsKuZ;TgC88Q#u?|Zn>Q_ilQHsJb3}v*@T*5LC3xrSe zAhGCfRy^^7aP~VOND#3iTP4gvFOP9z4A zFwQ%!rAYN0ma`71z5J>4t+|=%CJM!$`GI=7=6avgP|l-C1V9Mtxv_@t;iuojQ?Dqu z62QU0Ce#N=`><)C9z!8B>=%T?&u($lEqpe}TC(cE(+jD4=_&6Yg`WJpm)Spz#^ric zma;)Flx45h2I*Ud+wQ!8B}!Q#zQ(jA7@7E^*PaVcm$`Fs`r0kZDPry8)EnK1a>2J^_+I z@$AWJFsQ*<51Kq1Hy2mtg%8W3${*nIDzEddE~A_}4U?PwFXND1Z(sOwK67j|hcJ_X zQM^um?;4)vh8s$8%|Bo5-xID6suo~y9Cdq_Z3LVPb}#cXf#)WdP`${x?n zFh@}%hwj15#=^KYd*28#&kB#HHLwyP zh8(dV3LkNS6B8ZPV%Sv+drIh_38RUa#|qV<0!GlOZW%eBrK6a6-nj?@mQD2X-cS^< zZ=JRRAyQKL0Od?GY)`NP!w>KJnrQ0jx&NfRR1%04O1Bfx*Q{l)9m;Vlqvc4X?K zMdJYpRhc*GD*x=nU_u@NfU!9fiY8p&vVp|Tx{}RVDi9AJlHGpi1$2`nRG0cCrk%%> z$ioxRfj|X#rN|hQ;Z9pSj5869ob;Y2eELb`K@b2zX-;}D@zlb6NzPi4@_`zRfF|?1 z;`Yq#(l{+q2`76kOs_<3g-f~CJpP&E&*Ij~RVA;W;gkJdwa`-1)u+BW!-k! z;J(x;gl0>X-a5SP0Zk@4;Uw_L%v-jYp@0%TAR{A#*qqVtn|>%YXPQ6eG{=L3B&IM) zr7P}tKyxiDW@KVYuZh8Pkj~*qvCqy1)WdXmy7643bHHW=e1+pGL~kL!I?!6?S4~%J zG{l)4;>->t!y9sJ=aJ#!IxC7)0>|_XrS}EfKKRN@PwOKKKs3yYuch!xqqz{_2Al=A zxVS!;d1CyebI|rMx6$4>6npz=luz52dKKe<>)0jq0&79sP^*cu1@u5oTD7ICvvbD& zyYS8XfP2K|852IS0auug={2eYGw@r5S5-~uXgpN%WQy^IqD6J2+!IbBD`8}*MA@-? z(6+Op>cU3`idiD0=y~zw?Kva)Yp;8AVAGI*#2v|9)2&3Fmjz$lyRfqi&tngAbJw8y z@1sKDP&F}$1E`9JKtay=u;|-ABHKY8q(y=hj$4QJ_jC(@r?qgr1%-!O43x|Z95pT9 z*cH*c~qi;2=UfBpIuB!?xA0_2VU;3mxow3gOMYD8Hacx%Pu$B&c8ju5hZ z0iD+sXA~xIcRhh}e9F)QQ$$$({QS@#8@il-P$-NCvmS3MsIzk1Pu14eJ}=JMo{*~b z`qV#=wazI8>{-!=urmZPdjcDDTyfg@k98^&sQdFyS$Y&wY7~%Av0ie)PN-#j<;S(=mKPBd2#k~w0EQpiVp||=A7yA(+v!g{zocsid zw-?A-8Ei%Qv5vJEryI0yya4w>iZ&M)m#|H{6s}YES!l#lbxMjn_674%S`G88(%Mgz0EUU=Fz3mpY}hie z+$Plw6vlI1dLPB6Z4(^og@lA=Bu>A#_*M`)b$HpTlhV@-MdfXgOpTMHho~Zb!%^#-*qXe4I58>C=l(i%?&MG_WmO91hm5+9V4|7RA=(n z*$?m>xU*+hNLtWQJUbopgK<_EVp;OV)gM?WW^BthZd5BRW!?XV(oQp@_mmO(JzCD# zeQG`By&>`i_;Y`LOWOFjy%*C;iq6g(zKo)+kALC&`s3&jE+KqJ>s+eD&ix81rlUNU zfNd7*WKw8A8QzPR$_5>!mpV_?1YB7A$?PpPSex%^TKcyc7D{C;9xDVWU>3BD;&~Q# zP$o8aCytwNQ#>_x{5`?c}R(3K~pZ!I6X%R`HyFrG2#&Di1` z<|S-EM-h&j6+KM<@9j>l?kuC6df?P+%VEg*Vq`Vtxj^Oh?UZFK_|u(&mngSxTv+#` z${DuIl%Dr%Dc5-~p#;~=i!(kKfEsW1*>__gXMD{e>Pdl-6_m%Hek;MWg8;*^jR``l zBViWVG;YF$^35tcIVMIL00?Lt8p~53I*JcQpBQLJ2Ze+livE}T17kK|($;<=(3Ro|4uEJ_IXO8G=LhM%m8AFY z(bzNPhSdedeX@x^BAPl`Wt2T)+;KXmZp{9=83LKd_h>k zX*Vs;jqL2!4sG_L&v2qH0u@8Ie~ga8dlJx1kB^0X=s7IR)-s+0LDE>9{WU6b*z!3& zd5t}kTWr`#DKidV->nrqy!QDm@&`!gQrC>trKurJTI3UOC;+QR8rd7(A7B*pFLv4S_B2ORTZ zsm{%zr=0X&UrN~!&bVip&xOTl@<>Lc;$}_CL{i}s_SljK0bjW(8&3R}3_)RG-=}s{ zZf(2a`~Kpq4Z_}^M)-2~<R z+PM-v>%0s%TDU}4)a}8IDbC4#j3k`Ev1-j5#=t&p2~!S)+=tv4LFP+ z)L(zT%aZ4s)e7(EGuY`1dwdy%GaAGAm9tWcjLzeaSDeTS{nD!qneOg@Q5DUV>=hwHdVev4*7g~ zfhQYKRjjP|=wh~hD|iKe1M)Z#Kg?~h@?u&;S$4J7w8VLYSjzkC|rJl1?g;eJhZHRmmpQnqO{`K z#ce@+9S=$DyptRG+toGec8uapA-8e%&c$!N_JBu1$_(KTXS7So%gLis1qB5en>$_= z>_{Juq^qnZb*Xa0@{QL`G~8bPU=n$L&BaMyK~XV&%Nm*6*jpXeF}E5NWpVKq5(3K) z-|+R0a#mDZWlt#%s5TbfI^-w5JeuxS28s+Oks9)L9LqP-NeUiF;tTP+&(gjv%97PO0_&llNj5%41f3@U;`6cnPgNjZ-&BXo_&& z|4CWOPHh~XgadOo)mHRbptLu`?oa*Oa{qr)wmqRvLNi~F4@UwZJB;KrZs(+;(I36Lf}TAieSs`O_*!y(%7Q)@ zWO@a4R*T-JH?uHVX~O!5juO79vsCKg%YyA62+aQf%GK?=iCFBIudh-z;|jKlJR}#F z9woDaV+;IOgarnvky(!86~YXt8XMZtrhq}HK}Yvq0NQwb==zg;Jhqevw@Gew0XZ;k zOewrAWxVYUw)v3$ibchNisdX`l%2do>r0=Wrclam+nR7lqXlbS-;Ucli1LKvy$AJI z6ohtL=C|H(auGfM)D0B(zh$Uh2#0Hd5bOQ1OJp!Qq z6{A~+ha9p&Za_5b9NNA6mW!z>ie>fgO~+QWKFIhcyZi!_<-p<&WfPPAEO!9fP9rPn z3Q8i(Ev|nxSs}jm({uanX3KFw7hci}Q8*r=Z0a!Dsr1?AezQ6meR%C@zznGS5S>Z0 zxxW7SMwgXL$E@jjnMmAUzk^EmF?3)2au1sm1#%(Z?^D9J$}v!Q1DXajY;6Tgs(_tV zqq8xL@>!dlx)=Sy^{Tg*bI7r#0Y_Y??M6mMWwH*-xsZix&bSEq-_h3S9dQo*e^`4H zXe#@*efTm|lGq!SWZWSkQ$mu+rf5P)Qc(!EN}3Ro!lo#ql8RI}8IvX&C`l1fsiX`c zG@=qo{f|@k{k-pg_=feZ?_JMY@AHJcuj@CQ!*L$xaXw{2xeD?^8$I9Z{3Rm5@U!t5 z5nnV9ufHk#)baXlfpb-1zhN|mmW=$h5y0Ev%9IDbdmd0~Jx9-^Xwmg%)^%(lH&?GbSk~nD(Ui3bTUgA`0ol?mRUM+*;Kp zYy5WBnDC>M7bY6+7TEL9MR(-yj$wgqv_9udG!l%|oayQ-H9CJLi*sLXH2)M@(AzNz zoUk(8MH`RtA}5wrCY zyP-^|96RnPOgUmR+(+G+GslVwC{}tFBB(M4rx6$WS*M)omoGIxr-cbILXO)ujP~Ph z+blZX)3F;}Z8>>W+qR6FpVDv}G4LW{ktS=YRqRowOXIjLWUg6psBa5JnMUa{GtU*|=Y4y6YG8`x2_(>_!N**oBd?`k2GjJ+h~5!wy&Y zgsab{j$#xfYn?{n_cj&xp&Ul{ZEU7Ik`)qW1OX!9Ecxr`abZ)9?As>Pw3XJu&=Ejk zEO!uVlG_X!>V3kxY(72d!fn$4kWQXF*Bc!bbiqnf}Zlf411 zWy1#RX~JkyW?T{_z=So!6_jpP-JECkeK~Wx=K90KIoy5XU#`Zy-n1epsCeXe*0Q;R zEh}c+l&P6>=%u*)ys+9geunM-MM{?+ZZ(>}2J|C`WxX}*xJia`#cM`QKW`O z%=}wFeD(*tV&>C@cr-iYfAR-1C(+_aJ@(1T$WKKZN2{5Y*y>nQ>x2vjbV28)aYMr{0Ixx!9VUNg@TNpj2YhG z(XKm_yF4sC`;~Aq{Q~sX>?uJ`gaS6@f%`-7YYcwPtPH>A)lvO6Xsz7AX)OXL8J237 zli2Pw90sNWCOj-{-BQEVnk!1(^K6O{#75my_tG3e2=>r-$?W}4aFBKyQl*mUdq;#m z`{dFt>&RaE|Ns7QdJ0+Z;0wg@CG9I+o+1owYvW5Qe~L0J6y>rE#cS8E=HKf0#6 z*An0X)l!l0b%XHO|J@JRmytWx)w!vox;mM!YjyF%;wYx}n%9l+zYqOapx`G%i|F7Om!!=79_JB2P1OCT(C|6YZ^mPXMNfE?QW zwYouR@$PX#*>uKSXlsImk_3KSlj_0E5E=UcqUmM8(NvfM_-%ypHEBr$V4YQ|!!U-9 zt-s`O7ADSIqzru#cy!UIGd24Edo3z+=N$MPKSPrGwL+%v!4XzS16HPv&L85{!KXkA zC5za?;E7VJ!8V}YDs%c#nM%V#>NouQE45idTpW?zjPq}UL!h9D8kF-MyZ#*QDUqj@OCpjsr$Eb7?>jLZ`gMh_vH)Iv~ z>k=!ObcIoRs|Spl1A?F_YL;=-We=8jhHV^dS1<4DcU10l8hrKDUu@Vh@UXHnL5b*a zCK6)Z2Olf|!0DoSl;|ei{>u~R@tH0cf<^(*SiFuIm6DJP)}t5u9Lns@gpUI*CNaRj zhQJ#jf)lp9_I$>vEHnla)8*Ok6%Gy$v=105*FnRD*q)rJzXv8y1~vc7_tS{Yh)z=r zz_}hIenQ1TM#bOQ+jjvztmCn#K7}NL)nm|7zM{1CKButeF&MSL1#?v<6T2AY6!2+_ z&E>X&JY0b=nZ}I|Z=P8JuXVtOo;-=*=ai6@dB9 ze78|t!#bi!S<$ml^k)9=@4tVg5>*lx8BEixy8iKh@(l&0WQl56Oqi1M>FM)9SZGwd z+Kk#11^DOyIG>gl_Sl0ln~r1A+PYivI2Uv`e5>=V;G$c-xVf%-KJw?nhnj zFsveYf4Lz|z|@OB6~EU*33Vg7uh1*=80-mUE3_cQD^a5mk$9xfES$v$PsF8?Gx*Jq z!DpbpA4Eo(5K&7wO8_aVSPsy2#+zoq0$Dc)e~CSNTq740?kB}g#5e*m(HjJ~sF0<& zSVTz2%NO^J2Ke-$Y&7fK@#l2)A+tWueau@h=Bc!S1^a>aknQ&-Z}0*Sk^cK-)Y)*m z1_d8a5&x=xbroJ5q@T0+19hY%FfwzqDh6;wy+H$@lDf2{=}&N1NDi6g?TR7M6Jl~E z;VY;qr0`e#;bN6iy^G`kJ{ncujjvIM* z22~IX0pzbfIW(*N7!%fl1jh8fZdEfCv*GO8FEk!WN&=m3@w5|u;fN6*IP$R)v$C_P zdiefxcsM_-Hvs-j5Ox!M_yy7A1v>soqCOMDg;<1yJ;L@-)il99Y1uQ)`kbt+$Edq0 z*XJzQiHiJtypW@XMFbK5{<;ndVPj_~(Nl2LXMxj1#W)g4giL-e#FqYoDl0xGp$3d* z+#)-F|BISM?c!901V@T!mbt@lCqsh4q8S%2+M(FvReMFqcxgtVStHSTv93`f6H{S3 z6MUr8A>>%)SxC|kKfuApc$5zkT|NtIuj4NhsF;N#ZH+p}b8tSgQTHM3HWEUc@>8l> zp#{teZ;#Qbes{)x+cZR_&pl)0Z1B^1T*Tov`QNo`fAviwEz4*6)V>4y7l|Q&i%})-#1`x6FK?us(E`?>xLYdz@$FNJyjl~YPVs@9*had$+ydB({%h-LY)^G1$Wn)v@(&>pcar|3p{&LhD zvG3E$wBHSD8tmoa@K-*1v;t?D=%7@50afzqueCl-wb!$%Mn!H}1udqQMn5?i9R{?&VM zcNf(Co`W3eJNF()(o}9F(}Axt=#H4Qrf2XWcfo@9ks|zJpdr(nv@w!0p zsV6aY{IpKA#U-AR=hROWn^+o)Lajcz*(9%@jJ zVdnFRAA|17Y?Am*-E_^9)k`(}i`R%ecH+c|sdK*?z58oNZ^`eW5|cd~!6;bd_svZm zcbjmB#Rhl(4MxGjtg&~gj}d;Vn3^jfGQ9*Rfmq*XBgfpV{(fwyeiKpaR_|!=fO#IY zomT_d&v)Qd)#7imz_arKQj1F5X{a?R0(r$zBHAAI5J?e!7K;)DR#N#vhDb4r4n)bM z!31FMJxVwWF59!tfUB?k_fuSQ6J4~=I{jcGsZ)u1;{Nj92QexK^GK08bFsNfR?c9$ zQ-37p5DjXi)*kxzHq3A|SCL^@i=ia8m+HOqEi|!f@l7Bbf6*d@F{u~KSAr7RTELu&hEVUv%vt!1O4@!Z^ zfAB98IA>}@BA#9F-_q%zQWn3<%FcP@OEgX#YEpq;v3mOmJA^9vR8A%>B+!XgRb4#+ z8ric@+--_|)sIcHg6Hm?{R}$n+0etX8KK_v9W5d4cmiEwV)|AdcSRIk47rY3ps;~v zP61>cWRPiPQok%Tj~mMfZE9W6B*=s};&WDg{um{!kPsoH;Pg*ro>-sg-mFK5IJUcH zTG<6OCM2AN+*EmSF5Ek~3P8>-Z<@JR07v!NMp#-}Wrus+H$S!-)t?IPdysIJnmoZ@ zr9dNj!>RMQPVc~o{5rX0_NhpznVyUH7I#C;+9WIa} zv}WZZ3F42?Sb|f5ZzrqYCpa?oK-;@_K41l0HM>24LOyXjh%^ExOyN;C6#EPKv+y=V z1fdEqD9f1$nS&6Nl2Bx7&Bp~>7c-_kz~dF#A+o!7ZS!| z7%gfM)4DY zX21I4|E1c%z$;bAI4bDmU%Rgwv~T}}_Bx7k`uhA4<)UqA89Ca};cqLli>%D|Hofir zYo{;dzaJqe>|FkC7ZrRl2dd^HjVMs+25fTF{&2DsoEjNuY{XGy;yC-%yN-Bo^Rr=G z#wn5qO2BE@{-ZmCdiah*H(H6JF^;$;!tW>#rlr*3oqA{UcIQ_w;H zJ8FS|WFepzSP~3F%HJ8Hv3X>DD=V#`%GUVfI>K!F%+aVZp=E4Q0M$ln z##zr@&Jb%1zVs>NvvOKaCzrPmOU2#2vFu}l-RDNYLQr#SZVBOBc;TxLY#mgPGffA$ zpP&C)c=E)u*&UL(7&(HJjM^G$It-|Zc+3aFCk*tuHp-FkFepd(&j`N*zM%^v8;r9m z3~@`*#&XB`cOl{u03=7t{||5?>5P?N0*)dcIOgdL1mScj%F^2@VcE z`7jT+Ed;HWpkUUbXNuy~?d$ShUx1MLT#}!~{U?&tYrnGbCLM7J7}t}Jh724((kP-J zIQZECb#z}L`9hD;`)v_<)y5T#zWUVP29k^kALtN9RL?zn>HLEC z&m|B5VO&A|LS=-{@E7$&;{? zi|3&5<$k$WCnv$Mf(g!;9qHx;C1dO~AfC&*?s0m97aDxCa&n%cOELrU9`7zaS-KoK z!TX=bHmOlpJ{;B*kMYWkkVBMFMau6D96zaI(eFl6BDdT%eS;f)7Wvbv$(ND3rO<2{ zv@556jFbGDhmRzcM8v`?(WhOA+)y*6ddI`hH*ucnZAiYt0r>`Q^TQ1%?I`S{8Aos& zG&YT*oTYQW*{5!#RtzkMod4>smo%COzwkrPtq-7O7L+2@KqD0xEm8|!{ql?_ga7rS z)6xBd-e5rV*2|XV8x;2V9X^O<0*T*=kQs2Tl&sL0^&FH`(%T5C>X3%u1I5tbmxim% zL8YMZ<>a@5!nUcAg5t>Z>((zpFkJ?Q0yv^j{s(9=*WLSKva(I{Sq{WD(0Enc7B>e3 z1uB~W%6N~&^U21m=obzPSU;zApF~ci5EC{J;4!MC$OTcA5SO~+2AleRZbD+B5@0uQ zAQ+Z7?NgBFy*=OC`Y;V);aR+yE z06Tz8O7-r{@u9Dd4i4wQ+gz08{mK9TV@~U#@PE!}Q3nw;{(M>N;I!*9xY3R+wZ1u) z3T!59J?e0#wK{XQN=MdtHAFT2Uu1vJA-Ab;{%?WPfAT-Dw_S&S!}wlC{G-nEI$}T> ztVsp$|95umGpA(|jGhsyJRWNghw$!k>7m;e;Gu0E0J{bj|0umXb_NJ@$lNL1C$m6< zK~O0C(%^}lBH=6q(}!L)0r5iA`tZl~8#it=tp|e~By2l-`?J8aWc^*>pKqe}b_S^& zb$(LQJ}FthL-1BN^`P;(|05~3`?LTG3L(6|^+Eh0jL&8XJ>Hp-HC;GT@AU5bkcd=f zE{0xG$b}LE$rjMOF$&Hv$0l36Knq0b(5L2-weadDLkaeqC6W-Bq!J7KDGG+>aa9j} zPR!YvN1{#W`UEKD*)L4m<;TglHaCY_W_m!<>%$ z^pN2{DhUz&yAP5`TwG11Z4L^v6_@GU)kOC6J!X`ztWP@DZS$JS(mi z(VaM9!pf_NUcCtl%F61Sy$K)xUU16Ilm8C^xf~2c+mx_Md=!@GiR*l`uyEaWPm8*O`ujjq<`@nx>dQI&<}^*gXS<%52+99iLbK0z9SL_$U)FOBtkkkxv3%4M}y8u zTYQL8H~j5$Y;rmvi&Y*E-%7{6ZDv?r0GY|6AQy!ptvp)y;h~4E(#lC{u=cGH4$n`O z^MkLElA*U?(0?P!O~r4I|Mhj=?=SP7ZG=;Ng0KxU9Oe+&72%QU4M;ZTXja)R*-?fj zb{g+xHLKd@Q_1g8_5C_%-yvlq5MrOAnS**|pM@A~ZpwjVb-7PFr`}yY&!y<`k6plN zNPh@T$D|5Ldj!vdpmwB^Of&;3hf$q&zh-gf*i(v(p+2JRIdf7ji?Ovu%D}KpP@2`? zTt!t!D(}QKe!NoI2;-HaJXG6A_!JtSoI1*A&PFzRz$o_J-uS;a_8=U4yS3#1eHcdi zC6DysYG}o`Y$+HmDwDajW_HB}*?ZV<7-=+C6fIrh#q>1=P zp5sba(ywcqk%!di5(|dOj8Nb(CF>K$GN;Rj?ywr7geJmm3CkFrTx!KR1n)Zui}JHl zW34Cs%ARrNLOaN}XUYR73vIp0n|*jOBNVE!XphZ&dbVPCVy_)YkI^%9xZ3l~I8gVP z&tHrtMY7Z&!K(n?HJlJ~_t==RjOqRbJ3X0dwdvENH6}1ZY+P7nkQ%^xK@5Um;Tsj6 zdQ$v$i!r8EuD=+As-wwX{HA^&D!siCH}UqI0Iyq}D9c6Dm-^#cbqbq!Y+_h9{%k8M zPIwQ3gH4GTb4dvX~+hxCR7<_beP3(}n2;!eQ&FE{F}uUUa(J^9voDim(sn zX}y0UE*uq@CnAh7dRZg8&|?LKFMJ4?E=egVix~DuCPRz{EIBdTxGjdDpj1Da2s;~& zGVXX!sYq}hm8|ffiN$=ThwwCB&P^rBnJ@k=^YfB(*R63Q%ERqwe0O(p)y;*oCdjxe zp;3tsr!2~2jnz)0lN5Z1vIH2=_P)%nvSpT3?Rwn>)NO=3Hx~X+Tn9Oy_b)lYuu_UB zf#Fy^#vC`!_1B*|A=Mcd@rOk>;VGdOB~gNxgg_*5{1%CGU}ZJ7UWN%vo6rr8ths&61qwsI~ zSbnnlf8W*%lA~Ay|MSIZUX3SZJFZ^6`r~Ia$juf8H)xCC%pIl^h(-W)1e^&-DHraL zUyUsyhub@7C4H}>?F}*EXdlU;1=px?V9c; z1=b?NL|LeCYUiWSRA-EXDAf>U>eaKRB2i@_6K0BfhL_uo-I;bUFSnyFi|whU`_B?l z-7wmj^@r=29UKWVj^HH3sA#7{f7Nu1ELJKG8lUOv2RgNfCBy)VbVcYZnTGoK}>Z2Z*cGGe^E zPvYoM*2&>2W%0F_FEkAmA58FIGLLuPfqr3XUysL{0C9GpT$3OtJ;6&)S|~gW1PwZVk(V?VLN2alP!k`qdN;CoB5K>eqanAVbf> z$v&5*(^c=d>*|=|+ZFmd{m#_gXX1I*%0l56ZB7L@Dd5+wv08nu&bddD)VW+aUVRkz zYuX2O@g*t}f@XeO(EpM7x2rNIevG(9{K#*_&~IqB$8gP9Y4tuU;}>$d4v~tS_^7(~ z-)yq$@nVkINo7Z|n)_Vlo_*5InlPb!t08-?wi$~xX;KvW1-&jiAFK9Uu@mzSeVDwO z#qElQUt@Xqw|0LEk`fu6cVjVkf+b53OTdKPb`4XF`5B7uNQ%LCjKLmb{7y^xGv#oD*5Ysl)y@gDRmP84Y}<2gyoK#=+utQYV#&k81bea@8&NkbIiCUhqX*+NsliXV6y{-9OcF1=ddl67UzzjoWz)ZSh)$5CDDe)Rp^2L^L6=>wbRR@mV3TA9P?voQez_UU@wCqdgK zXP&>;L1+(wIX+Z0W&mC4ey53BHMxDO0TT=*(Eya+R==9c;dG+COdhjs7zW#R_T0HG z-vT%sHG{P)c7|oDwEkR)rHty_#K{sBGz+sl!^dC=n3h3w1Xe~Ua%?9QjO=BYf{?a! z?2VyC+;+b9BC)-D_s-sy%ricvAY|?5r7gv1FI2)e>EH(P_fI;la`-|0Yei1F?)|Ou zG3ocQC|NtCl*HL}dtG@8?V}9^<9PSKNZ#x%qo2e<#z9etf18o4=Gt2aaA`)C^3{od zw$NU-L2PYYY-~r52Zv)YZ3Ub`K!D-qpDf#0g&59LpILb9dY|pvcjETN2GUm6$FIp> zz~u_+Nsq@`3gF5cWITT_tC>DoLELtUo4j0By$>(F>x~?n9e;hDGRJmQLX_72k;mkS zxfV90J?UmH{5Zt((I4{hUD^RNq>S@wZ}!l0CLU7ItYwlGha*;Mk(A zmz-xzTBgY9W06f!lU?u(2i+S+W3J%P^~*mKEV%7WT-$vOzMkI{X`8;BD__@IJ(0t) z8z{y@pNc7K;qi>4sy)r|=y<0(ul6PK_-x!%>DbYXYk?CJM&|}=tfm#n8xy4^!7iGI zBh8*GWyVVUT=b89OFtfmZJT`|0XJuB&xs}6uRXN%@dt1e5C1W>FILF==t%={FD_n$ zgFeH^2=_sCza70yR`RtA!nTt~esL>)(f_tOE~E0uN^j1RVAtC;<$Yq}=M*;hk{PjJ zTb_yMMCp~N03MJuiCf9LXO7+{3OQF18nN#<>&gXKD zry|FHD{YX!7EG?Me%ZPL1!LnAogSQYpNHgY{AUfFmcl#1xNtXB`s$l!Ji+Zgl^@M} zweNrNI9bypdG=@im_xxaW7H+M672Y0ZrI-VU9ift4W@{U9&t@sQ}K&ad&3i9%kCTO zBHz;fi#Ek!vk3eAy+1dsWz=+b{FJt8IS%L1UD&$JA8+oc*`M(n&}GLD73P~9z!jh$ ziYYZ;d;X7a!x7Gcitl)C(tAghj1CZmbknrpn{Jk|1ZBHP2S^ zbUk|6{%h^ODoAncE-S4~#MK_WgkO~G#DZqc{!o%S6DO!|F<$DWPD*uc_coT`p0zgk z4HkWrkBY6Nn|_L0ffJm~s94Lkk-eEca{MP)W!LwmC-USLhK8D$473Os15<{i!n9go z5SjK_YP0)+pV~l^7G3`t)^VNI{q<4sUG>~|VJEEuvm3Bp9Fzh?Fq~oxb7^Da#NEU1*Rtj0MCIjEt>^SZ4C>JF<1r{@I=s|z ziKX2alpG!1*E|wm{7f2zQ8|f!(RML zE5s4*pgA`F@Zsg&6~Lu2y6u{+_t4H+LrF(-VcI7~^Mv5E(D@t%x49;N=ZNJRE5d%T z{y{wjDZpB^lNVEr6sWDGr3GA^0rv0JbYnJ+`w9jEEj4F{21s;ndeX8lr%jvI259{@ zsL4I3k4;rquWIcDam59iC@;1k(2a-Y(uL~A#woXMd5DSLuc^6*tocIlp#O(gMG_Vn zvudiU${?ZR*I6U$u_`FY2wH-6Z*Qra*L~3=6BBNMT}Tz^>n+yQ?cI#=t#k-unG(7bg3$AWk)!QBqM^hlzbX{r#5U;BCRkOYn(A zF_NkRYLLQde(^LEYn*<{c(muQ=pRHA-#W+&pgnoCrpq-56^vGx3NeRTU=oZeh(4@| z6Gxw1n(=eZjve}tg4zPL+->ikj)hW#1^6Tsw*aC=|BZ}c7>Z?Oc%q7f@)hVLKL9A2 zj{%e)mzI`RxvMwkP^XEAsHkTELY8wVibUdScW=8EJgAF;+G=vPYNO1#eTMy${-(er zM#)MX;;v_*h*LQM@AL*jo?fr6=`acg29uD#cs0kL0!M7*3zZcDMpEA!?@Ufs`5U>eoPT2E%}pQ4aa;os2266t3-E zpgq_HfsS4j8{RG0vbDEGUeP(!Z(S-<#W$9VY0D7RXFURPV&UR*Fm1qEi3)|$JhM1sGv%>HSWeO9_b zAX!CjO+u%^bDzubEI;SW=e9>maS|4^!0~4ZL*(t6e}^!T>Ig7WXegKkl!?t#K&4_B z3>o@x;U+%&1sHgJTQ_am6kUNcr+H=JA|D?$p!&`}CD7-LMjtH(m9K;T$cszf56JN4nm~sU;TJTUpLO4ih5>!hzpHdWa0Z%U4`1$qqF}ru~ zjtb#Z-NH`#`Sa(xpU0potcJ(;I=^6FIsR9yE0;q`64 zB@5$u4<$8OH4*U5w=kukQ6+7}`7_+{L5c)Vd=H!7LwB{uDl;=aumhrCL8988!PGjv z@XCh-I1`4IQq<95qkY@b#)gG@=>@Q9qkdHlpGS^89wGI_{i9&IPMkS{F#Ukc|LlR; z*vJ&!lYMU%-47I;~;X)J9uybJOXOZ zZrW0Q!#}n|qH_9BLeyG}yb(vchSSwevIx8&B)P`7APItf3V24GZF9gNsB-v0uQe)! zw5qV9^7s@!2I%EoG!<)uedQrlXuROe&#fNu>UUSt@k_E`3EnL)S2Q*T@+KN|v#EYH zQmN<-GgKIMiE)`ZsoTLIs56)haOIMjJ#vwC5XOnob2wgAPO*@fDWd zQ^dvJTqyR3l3Ohf)Um}X_zx!1OjS`Cjrnw2oJ2-32!0XYYok2vu?k4=A@m6UGzRqo zWvMryIxYaW)$hX#ou}C=#0V9?V;(3~IJ`A;A=Vs^$grkN85e80e0l|$WZ}Ks!OgMd z>-d;8@(7s@9kstC6Mo;~!?d>tV`DuKmpBxGE_ViNUfJW;0CRLGIk}r9jXLNgAkwDR z*1}-2SiyRff}GX*UCHVWnNDaHV5TY?6r1Ia>okj97r{w@o)Uq_xl>g&4$P%J*5~}a z4xc!20EVO$Ji@LQ1yex|dZ#V69)^0ciUg9Tm|Wpu?UDF*hf^T(=}fhez$tQQqIB1{ zpbxLFPeP+6R3n!hSJ2f>xIL9^I|@bGWMlp^KmQGI|Bnr~_DNWMX36lS=hZb(y?`9YXgK6J-V(uV>s-x=>TREIHp5$aa5B_it zJ{G4Py7rZK)IDIVZ`1re!GqjSk^lL-*@MuZZ^1pv*`&zH;`gt&TnT?r z>_JBFZ_pR~4yV8jA_~h(NQ)f&owS5qmiD0?gL(I~Pq;)YavW4QEDL2oWg0^%T@s~p zb`*6Nyx3utkXY{8{=2`w{~icre_n2vzs0&hr(8$JE%A-hKVEmXl8QX6PC1eNP2_$V zFRc>x(P#z#&F~;$%hy_WXcwfVF{nM|d_eBVo~swR$9}cp6b1fL*o(^gQ<Fcvw8v3(s8Mi&C-vNjT_f$Hh6GfL#Px|&f=SI?gF8Ax4NFF8ME_LH_5?-wJ z>wPPVtUCr4=!D@GexT8e%_y|av183Zh4zC0_qu}( zQCh&yju~#@bpBMn`t@qb@OV&3Z0__t9vB>S0}J2bse1YwTxN$%JQMycsiEf4BQfdN zzlDR~Bew!*Md17jw*k6eYK0-NI}j!wl~O$#sl?4SYe(ILe+}|O#*d^yTl>O`?K~x` zp59(QW&|N=OdvN87%-iHtn+thjUeBOmx3_lCsqu)RrSb3NG`xtZS-tbw`P|41@DM zWlh2`m(87ka2K`0HiSIol?5HA{f!5KDu~)jqMsZZ2wVhhibh5+TXhN>ME2fhTE36V z!E1Zz9bZ>=)WUY3BPLVf&*yyDkHlHFp?ToVC7E{bn9vmhbO{rGtd7mh(&3)9zI|Ap zZCn53{WonX5g}1gOBWZH^PSE}3LLWwK-bdktS^|CIxd_!{NOI|BOnmU>!g-`0u1D! zcIqcwLGy5y*rF%Ua`bnIC{zQ6gS+q9c7ivn6da6wU@)l7`-Ia*p4W^erGTVJJg`?1 znS!3Q`ixhHvsoQQ;vMS&7~-R=OReupyFv{SgBeN@KV*Ns21wl$J|2s(;#`F?Cu@3p zYZdZkRJ}TWyzX=4ygaNf-!a>7WfF3(*{CN`49b+E1(iKzbUmgyWLi3mf_v;}_RoXi` z+)$uR+HnA~{Oh1kUHJ&4k|{Vl4n9NJ;i+&*pvfYF4?Op6(T?6X7D#Ax8^Punj~i4@ z+*1r#Irn&|BL@TvTwj;sZDY}+$An?LwvC+qns!j zjWFjP3WRU$8_{<`aX0cb@V&u2{Mpho0GHYeiMLjCN8Eq-@a}2zC_m6W?GCfZ>`nWC1~qw}5Sczu{>+-g%6J=xLGJCVB}r$_oi z5X;w~n^iv$sC9#~8VzlY7SP;Gp>=ysb^|Uo#B2Bwc8z7gHv1LQ_#14Ya%j~>k=kX_ zvuVk}xdrG-&~4Ooy1;-2X<=_~f9`t~@j)w6fB)PdW3){OL1!5_^ZTcr3gCx?)wb== zGo`Nueo<)({<7rZiP;ixk9U%1ZcuYCK}Z?g6>?(UZaHY*PlSVV;G4_Yc@GDs6nVgQ z$mtiZ#u5U>4+D|g$X6ao)Z3bq5}=lGcamV}tL z9-7T~J)%q2}L~AnRR#kTSgo>T|hI+fe)A zSCyH&Z5}v!dx4!Ne0~kuK0lLTIg^H*Qe1;b#IfPEe1-jD#E&Tsq9OlgRd zN`ZXz=E4kJU2#~$u#%GB0w2Gi1RMZWkRGUzz5ye4SIaFZX`u^h)tYY=STR$`tf;Zk zZ?&9~MCdmHVJip4xeoeZNLyCu`YcSs#uZe0UHZGQUz4ZlZqUU>v@NlfVCa~ zvRU0lk43oO3W#6fKC}xuK z(}#nNvJPzn*RUcMHx~nusRH6NE*U5Bsz{ffbZprjb)%DUGLwB z(Bw(1K9YM*Zfr5#$oJxZWAl$6-NdXU!eh-;gIr3xc zoU+>5crF*x1d*=`}*!T$JDn-mRwTgoJpfow7 zFjvV6)Qb7R!N!YKmPdbn0@Gc9E|`u^MAM*2)U@8z%FRdosnKunB6yTpdDd z9z3{>i<%V1!`$qd63hkcVKCM&0G!eSXsaTlL*G~Dp8l1mT7HEZ+FckOpZRhMrUyfW z;_1*8kj3Ibz)%9?@3GqudYsOob5DKVZiwF{Sf5KEX5&VDPm;Y_lHSfwE>X=;!1XH_ zZfFE;>a5-Qvrtbm^c5R7?l6rk=;$o@*`Y+=a-VP{r#HZy)&=5y`VIWFvi1?nu%QOlC5txP^S|uoT0DOl?5tqU?a)o8lw_@Z-d@cc^S10z6MMV~hLE26UYx8t`njC(O*G3WX?WuHFK?I7 zAA(b>+1rcsUcG`I13}gz-<_BeM$-vIHzK_1s#O6|k@%ppFEjDc)VH33hnlqO2JG5n zw33~Lv6=qyp=Y6a3eEn#8wv}59{*+s&dFKuGwExnuWD2Ct=vn2=zXWBT&Xb;bJW++ z!y#duN@8HjpT2}rYXe?@`n-tihV};=pGGJ!Td5^k6S;uIFsBfBr_iwWPSX-J9kH#O2h^qV-${!PZ%P@WRhGzQnofNuMKi7+3?^Lg)Zi z`j^Pr_u^J_@Wnu5u)bEH7(E7;jQT_tqKifSnF-c_+OU+*)Txp*@k^-X73dQ^oc0_Y z8i|2F!Ed)9ViM{3dIO)aLl0ly3viN@@xDZLMA1B*sQlB>v4t5I+oFexLx+pMg2ZP9 zrx6dQI}N0sqc6a;-jz`AlSG|u-sH+)VPh^MpttSc4#70t)G>2q968Sz%zyGYVjw@; zpIcPrt%VBdWJlj+x3-RDAZKex$VPj6yT9y;Q)Q>I8={Tyj+|0wXN!1*<++DhW5%nmz^Dz#o0+P*PHA zLDn3AaY+Rbu03J2-P*hJAuj`x;(S!hW689pigg;~e9U;}V^k}Yo~s#IBp*FG3B1H;oLV=GQ9(yr zRNpaUhXy3JJy26?1*}*BP3%ZaR8ieXFeeCEd<=$`g`-L3H2A@QL)3_{rMq~dt_%5ydJuRYke?@qL%0`< zh1HRbO9q&PYu<(?(mNCmAf6q06ksE={okO4dK#Sy*tFDxp>zM`0vHr*X|oiO))NAv zaDDRx{kbxc2sF|4SmmPF-PcjY*l1`!tf|r5;;~^!OSX?+4dHru==adF%#MDGWs!)D z)F+xu98Q?3^}_D!G2}9PZUn?wp4l?^X1bX5DRop3=8u#KHE+!4+J}ST%nv?N1zHPw z345J8R~9jfM*rNM=uilNax>x8i;wG#1-cnkzHa)J5>UIwn3o`HPJ7^uAoZ_aY(4mc&yz2Nd-I(BBD5+b34ku;mmUb0V#QP#6-vB`k zR}cz#cRquKg8)xyB(v<)PTMneuILk?9Y7P(2fv%Opni80AOJl2f)*NeY51BmW_w37 zVQ_TmFo^>o;U?|?F{$UVLs5+ zs&CFV9fz9Lhiau50IYj)2;BfqR9=Y@`2>yZ0;uf5n+TwlyF!N6( z!A%M(F*0iwyux1e>b6pMW{m-i%RR7NYcYN<7=DvN1=9V+pbnP}iay zl}nwSonx45+ut9#_z?qJM!+{vCw&ihPAizVg&MCA>72S47Lxe*_o+T-{4`SWZ8xahPru7sr z6rEo+6(}#&EwxdkJ|H`1B4*LeMqas(P%~Wb0IV|7N6v?rm&d_R;2X-Juq%7#F}jpQ zV2=?}ued_ev8_&s6r2EjBlkhESIH{8eBEuJzq$KjnG;5DasButBXz-u774qvdjpQD z=J&r$lgv+*T~;9Msz z7#I9Bs_7IqT)Oi%?F9I7wu3hzAm!lwu=Ydlp7&R1o(b)^Zt-6&UXRXd)IGwPtSCm&H>bF zF08K*MNPtN@D?QS+iS0ME!mE0n)sy2+dS{u1l}J~pT2GJ(xsNLXrHgMtOG5LA3T?; z(GZ?~RqOoPnz#UP>+B~UIrLyS_(gO5dj2^(y5UZR zp5qY#_3cVfQbbt@%Y6OwFIpXtY}X-3yasd8|LOI9lmw7-SbDd8(CKJR^^iU6vf$T= z2dNUf!WF2T1Xk(<=~uXkD3F}S;)s@@<7wjSwRMlSA^u||9k2067|7u$e_}cPosluA zafQ3P67DZq5&}Z;I_6j@wxs0QOYx85;W5jwUA+%yJ_0V(Le3H)!=hjl)ZHIBZtWZE z36XFobiZGG4X}v<9W<|wPwNr54nwsVTGP{4e1<8cydF4vD{g@oT1x%xP)0`~;#xp2 zM{~^$9?d*>adJNrM)Y1qiTVA3ikY+??qvu=qk1_Sv^(3E2!>o?P%9t#9~!Jw&rgGy zHw+%o1`@7~{wv)mZ*T_Y*h(fPX@O2|?DMItZ=C~&UH2KUhq7!fD86vS9@k4s=Aoo= z01X)}u?9^xw{|y1@e-6;F?vk2`E=FHb@y+DtSmd;u|s)OJaWeW=GwoUiZmRLHbd=1~9VMJtz{Fx&& zvTUfGp2nmHDiy+&)a9(4`4dwxwq$O*whFqw{upMVjF1QvTB9)< z?+n0!?;j;7xTtqQ`zDqyQELqFbW2xP1=Q;Pwx3Xm2DpO=%xb}RR8UqP zwajEt2^p8n4=l%iywd#a`Zu^SQo8O!1WlL#a#aK3cXH_%Ggel0Pshdk4$&~g2yhXm zk>2*R*6D0pEA+jO0U2oexG68j!T92-51l%d=i<~j#u}!;Zqxh+CnoD8;-54wVmPTR z6ERK#g-?D4xPHt6xj;cA9F*&#$;K|8(l7i_O>r7yj1C2YBqnOQ@K8PCpgszXf>NAn z_8(SR6nhz=1?Yg%Mz<0ESKrn|fm?`-sVJhBBut1nmYU6CrF}IQRe@Llz+I}jQmtY4 zk0+@uI0f2orfX=3Ao>_UPdrtH5F1XyCkP4uT6b;BdZZsMXxkQ}r$_(0B(C{h_(-TXXWm%w z{mG5MttiW^!+nOEmV*?HT~6%GibR2FMRyLoIw4$7 zKWTdfii_)UPM9zV>P-IfI6!ugAwZM*RI5?X6&4`CqC57-s7|f^gHPYHP^y-(Q z<(WzI%M5|_26$O_!Oh&G=^nw17;RWt@aV+sy+|;Ab}!ql);qh-+`s!}ZTl7^H|od? zyJ3bLc044y1PZj-7u$diUqQ}kMe{gdN53M=xPDd)c`8~k{2mm1qy|AsZ_%&SJ#iR? z3pFsya*>>J@cff@eLzp9osG?*ZCK)NBnkAZuo4>7X-KV2lvm<%EFw|j&pA-!rrh1j zE0YF~OxM%1r)(XDDp8-haPiC5!_DY708j5MLWriTudxTp_#arJ^YG8*a!3=;CZ?pk z?{Ps~m1}GQ^V^M>Hvx}Mj}X;qfT_Bg)0;?|b7NVqDch{#B5G!K-^?Rs8wkok zoh1=uVk+5F_MwcE0IvDs=%E zQ0W=jW^MuL7o`r@nGymb`_neWc-v?~1Rv+zx_iZ=gj=3fGoj zK%ljwBLYKnjZwc9{YafQ50B3p2NaWHgP+60i)3}&wO|qf{c=%g#DwpIh{WA-SW^z$ zlDD|fvdGg@MSpYC0hGPcz)bMMpxCl>xr-!R^@5i{9H0Q;JD3kE5p@M?eh1K5d{R=x z#2L=6r1ZWXvFW**-WO<=iwb1HIPYp^FT)lrw6dDMWA#=PW{okdz2nrTsQ~V1!~Oc& ztq>fJL2IY#mblw!&mmM1e?ibOY^U>wSqm2~G{sz5>);uS5)K^-gPnQmc5O%CL2vM) zq@^nZ*{`3X|1gF+aPMZ_CKZVQw0tGS??uZog%(MzKd{o~US6tr%6+e|@0_zZLL0IQ zn6))YbZ7`Z3=uP5+66TObnl+G2K`6}v_;A%&%H+ESc_o;U*A6$!%bLja)z*0ux20U zgVaHtkmJ$T;+2ennl9E#Y92o`E+4` zVLQkZwhNdW#HDbsQA!bIp==!-ojMpJ{E4px<5!66K_L)aJkiRI&E2I>eLfFmgIe#5 zy5v(YjA9E4kO#`1j_D_+fu1zNb!<=O3t3Sf`baOCg8|Y7`Y3`bUYrnR(cjtVg;Vk3gwEa zoGhk#C!N*AezNDz^-}WY32eI_J84C>v#+WqpY{5hjj&|7Ebv@ryF;@5})<-W zW37lkJ3@PQ{dRhc@Yu0ioB}LBQkAq=u@j|SeCbqBgh61NpJ$>cCBln|34h@3zx`+z z--E5na2m)Tz;hSff?cCE8ClH_Ao^>bvKv1(yu~I-wWI=jhWA8xi~l!p^M_5w6Gb(( zn6jhUibGjkCg;yisEwhY+qVHcca(po@bACQ8~InF#o~_@3=NOfN6q4eIHW5G{rejN zbo#R5uLTJ6MYyel_yUeXwddCDSLx|_uS7?FyyeeZGN9@E5BQJYur^6bT%7;p(uyqn zF%B;W%xbo6tgYR*(+WaZ^`fz8T$nPY>YpEr)0U@8@7bSmsIWcjF4`IJH2<6jA$sS` z(T652tMk%xF^)LF5!(WSc|`fTJvfoau*F>Ntm9M>#_O%bk%akV0ITX6pY?y@r6)9Y z?4AbSNB}*ESlDQraOR|fw_h15mzn?Ak;A5iR3eKMso@q34SLDpr7?-Ti1FtG~5Zvd^%O)rqe|4+0X=NTQkGfrF`2hLipn*d@?*=1KKg$8$VIG@LwCzH*$jR&wy{lQ!*%yqB$X}-w7N8{NJg4 zWQdCFt?Hv({K9>Nab?U{|NLyz{*j-FVDZ(Ig!tdQc_Wi0zEM9V`#L)Px!kiOi>9fl zbt=8i3-^N^vqJgZHlu%5s&V9}4%T@lNQr^F{?p#{%GzqH@;^t+1q~;Nv?l*^2E~)i zMr;_B>i_J^{c|Jt=A1gLBu6d9`0i|d{fS`i`CLBkhQGvf3)1xqQULlxg$X1_#J&Y$ zc=N7b8Gyz887RJLo|^xaq4Fzh18fxVgo=~H#v>GsxvE--C0FbWr(Ootm}7e0;>f10 zgN?PdS@;@;^&f7Ej`21LdPYEx-L&r!F-8_<*hlGo_Ht+zgcVM#D1 z=Kk#YJcC|uE_L02C7WFRc4#z@fof_j!m2aK)Lo3rV_#{R3Wg!ua04++)ZG0+2n?dV z>M{Hh{xNB?{>UpPp)H2Zo?YFbKq)C;^Q2c({Erm2YL%%xdh=ly=FcC*2rK(d8_1ev zz8pE;OVyVpy#&j}ss62sl)l5VpChYf>#%Ob?N#ge(t+iqN0rkJK7mZ|s{dsSh2bVe zr7obKWLb~gN^fX&^nCfEUU)J!RbEee30OuaZeKVb^rjPk2HPV}d*|=GaG?;`%J!bu z5!8vuo7@1ssmAq%{oLL!BL~z0#4^0V5->V6CJK%oeMHI{bTx*7&jqlMRlLhyIC4q7 z#Jqze>z;H2sf5exvFJb27-^Z9lk=ky@iL;t`Dg0<40EQS^8+rB!b8AFvT|Q~d%9cW++h^mw6CQfR`hzL-$(zu{Wd`EeW-h-qiUV^ zNtiwYAF`fSK&=$Hj}G*YFv^Jqm;en8mI!3khp(YVM%RAAutqVG}hdZq68MG zPBc>cH(>7(_6vCrwT~}u-KsfRi2yDZIhCXHyv%hjMgF6Z$C@GO?1`H9^Yn{00(jP7 z$XUks?;vGQqF8snxj6u_Lc7KpF4tHwTYgNvuTMb>x*(#Z-fl#i^`iEATU{7eH_Bz9RWAIcmc>r ziO+dhWr_cbPw3aSZ$TMj-W#BY17-5R2-=tECB&shcH(XGhdtR(R zm{hdZKMtr1I%BEY0^)=ysy;B5ZcpV&6(x5}gs?3n65c5SKy)}?cpw6DoXWFAaO0IUJBYsDL|g44c#7HPtQx# zoSM5I7D-W4Qxt3D*dGsi6@Wq@fU`f~G&cdwWrX*d?V|1nFzmHSm$eZ%5#eCK5?q02 z6Q)UJaC}TFfY(wKO86MCw2v8WSEI5i@$td4!I*N_597pAahi$v{0+ceFSsqlh{knO{~nq$>#s;u0N+5u9Eeq;`M3WpR>e^k+kpwZ zwgwtAW&LETpS86Et`$!OP5)8F7!5fz$pGSD21Aex$(1qQhK>F{3C50aT3n1p;#rsdMF;`2@&;J~fEd)KH zEf4}lHAiFB6%j(I%G&&SWc@#v{FWn@94LpV(tQ*EKCPtU`#5$XZpG$i6OFaEWRQ4j z6zuNXknUBxWP*8~_T_xd{%_wb7B5CwDrQ~7|H1^yySrNeP{(ad?2ZE=pcP1*R{sF_ zVu>NBOSA!JA;wd5$hIp#22p1%MKq9b9>se%Yvy6TmH7#Yqp)TQsPH(GAhh#JKS<3MpHarZR92^RQ_B<&M& zad?}sH*VurJh{j)qA#tuX7>5UGs1_B_kmJS2J#1y@P5KM+yg{O{CyD_Ll&VxkMnTE z24GDY$XLidjBgP6{#v~zk zspjO~%)UPT7w38QCyxh@?|i=R&-?azy_cSbi;(^i+ycxkR!DB3cFef~?m4ss0oQ6$TzNZJ;`WhN9ih;@8DN?q z^v6|IoiA}_Rxj&Np0o!s7m;Zz$WBNz0x*sOF{^DDS?YOPgWiS{ZU+GE#HOaE07b;S z%ZhwMAnODu?uzQw#(3%%h$;k(knQmPn1gv5!kz$l-~@6Y;kKYh+Y6p+oeHXT?8#h` z0h#HNoZl?g=R+Eg=R3NU^SU2V`$S-%8U>&IG5~*n7#X0og^L%PO+=%)^t*TX{mbyz zJ$RiKPl}Ev!xaTU`HFNhV;{s0LR0=XGeZPo6zMy067Y;PZV6$H zObF?&C8wrLSyd7+{hbXS@71YqX({r&Ox?HI)52G@0!@=C?D(dvnEwRR3QNY5>Fv1V zU5%B5O9ZXZKfu5}8X|Ul=^ZUS{5VN(+v0(iTxe`769xwd59n&=$0L&d8|{075E7yW zB>Cc@yQ~F}u5PVr%IP+?1nY%$)qbM!fPVsons^=E&X)+Xz%)(5pB3lT{eBh}_$Q%d zVk5z4BD`UVf0ky@y<8|Opg~3k=m@rxZ`w2Zyo{nx_2-S*eoDSJlMHU9onXG%#!&|P zmv(j(OjQ+XSiu!Mv{k;-3EUe1`zA0I_KIlQy>e8L;uyRDoRw)_H(-odbSkMv`Nj-1 zN(MWtEJ!O6G_-Dz$%q7PYk}K8Z|kskM2XGH(8lgXm|N0`csHNo{JBy5ZAbe;Fdla4 zC!67>AH9;E;FP5QB|h+c9mCP$-R9=n&^|s@GT}&lLRxTm`UQl~GC9er)a5;G^J{gM z!CAaQFAxl*oKj)@D4;m7lJ}_BIrjla14C$6Q?(4O(M_JkzvlVE=858_#u>^MP=XIk zQeSFqoaw>>@LmG7VVUPLXm-G}L=3lYjIWe>U@9SUp_-Z+61{quWeJobF@T#UxdhXh ziJN62oA{rqv!?1F_lEZ*J$#w@^#)pYqdLdbg%<4mXPtW97mfwGD;b`_4!+Og7O%VY z*`o)WYJOh$!yqNmbD!as1Y_z~5e=KJ0KngfV@6Uqn!^X6Wx? z%mM%of`J3>J8Kv{T9U)*&pb3+Sy`$4&v8Wy1chy|E|>-0(2uyvC&3#yB0S^Y5rkpU z)H(dA4H9bi8KF~*SXFyWikH>a)pb$6Zn>VGUMY^EaC}JOYP*&mwFR-KfrvmZY6C*x z2iNhTNU)X?o8-T2Y4-}y@0^B*hfBfpL0HHS?gT_rSWph*yX%^5ZH|P}4TRw~xjY9V zZm&_#I@{aZbNdSK2^t|<$VT(L4+3IMLAl@EkjZ3nXkb=jc-E{QAkdkPwQn+f&mDmp z_;WA-cO&0_WN==d+LxSS1!F|cOG9d1IBE;cc>=dGl%Cob5C$_b<`@`_R2d@iEgoU! zbiF%Re9Z%<9*9Rd9Tp}9fM;I#_{-su5oT2OTWuT5d#)DD?!uUSfdMd-7r7II9}KQ1MP3t$MCFy0hgTJC9Gg7fBAQbu z8A-EqNf+al`nvdh^75*xAUsX_mAC?f%(6n;FY(+YFWF9XL z>`B@mgYK&JMFhK3?j=VC0Y@bY%3HTqm}L(3~!zWxi(XVWkgTi zCSQ@28+6Sk?_*;#2eRYeU?6P((a~mTWC7);-VXg~g*Z*E+ad%Z9s_A-Q79eEWZyde zg8j(+ba;3R*q6zjm0&-}QM#lLtVWSrjff0n*p!NF}|HYGja;Uv&VUsu^{o z-?UbCR+ib-;G7183Lfei69%fZd*qt&`TRp^fyP%wzA_sLQX-Fs0hiNn( z12yrY+<0t1%;E?*s9=Tv0E@h~dTahL=lt9*;?S|;=LV`H-AQlQyC`yqi}FMHdJh@; zKz4iKK`3r)3kXEqxe}ptO;FDMvr_oj5MV(#$9n!?Ej~tXL2mL#0r-%{sLh-4>e^sT zT84BXTM)zkNTEd1moAM>n*b*&2w5WspOXe&y=w9`1&VUE0cTHA+`T~Hu>?kmBUFkl zG%1u=l~Gy(eonDVWjK(pKkaqUAYT(5{{Hsw)A)ZjhT(~^S^jb6K2|m&RphWowv;z= zz}vemZ$OV=XCu5 literal 0 HcmV?d00001 From e3b8dfa4b26e8b6a7d3d43f78d5dc192a97a79da Mon Sep 17 00:00:00 2001 From: Scriabin Enjoyer <197675111+scriabin-enjoyer@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:17:17 -0500 Subject: [PATCH 09/13] Graph Project: Update interface spec for testability The specs for each of the methods on the class are updated to be much more explicit about the semantics of each function and what these functions should return if they should return anything meaningful. My idea for the mutator methods (add/remove methods) are for them to be idempotent and effectively silent. Other methods are more or less self-explanatory. This commit also removes a little hint about what data structures to use to represent the adjacency list because the w3schools article is actually quite sufficient for this, even though it doesn't give a concrete implementation. --- javascript/computer_science/project_graph.md | 26 ++++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/javascript/computer_science/project_graph.md b/javascript/computer_science/project_graph.md index d80e45cdf14..654d4338b71 100644 --- a/javascript/computer_science/project_graph.md +++ b/javascript/computer_science/project_graph.md @@ -38,15 +38,15 @@ In this project, we'll be using an adjacency list to represent the graph. We've You'll build a simple, undirected, unweighted graph implementation using an adjacency list. The focus is on understanding how to store and manipulate graph relationships. For simplicity, you may assume that the values of each vertex are unique in the graph. -Build a `Graph` class (or factory) to represent your graph. For now, it should only include storage for an `adjacencyList`. There are several ways you can represent this list. Some common ones are an `Object` or a 2D `Array`. Then proceed to create the following methods: +Build a `Graph` class (or factory) to represent your graph. For now, it should only include storage for an `adjacencyList`. Then proceed to create the following methods: -1. `addVertex(value)`: Adds a new value to the adjacency list. +1. `addVertex(value)`: Adds `value` to the adjacency list. Does nothing if `value` is already in the graph. **Hint:** The number of entries in the adjacency list should always be the same as the number of vertices in the graph. -1. `addEdge(value1, value2)`: Creates an edge between two vertices. Remember that we are building a *simple, undirected* graph. +1. `addEdge(value1, value2)`: Creates an edge between the two vertices `value1` and `value2`. If either `value1` or `value2` are not in the graph, creates a vertex for them before creating the edge. Remember that our graph is *simple*, *undirected*, and *unweighted*, so you must take this into consideration. -1. `toString()`: Returns a string representation of the underlying adjacency list. You can use this to print the graph and inspect its state. The string representation should look something like this: +1. `toString()`: Returns a string that represents the underlying adjacency list. You can use this to print the graph and inspect its state. The string representation should look something like this: ```text X -> ( Y, Z ) @@ -54,23 +54,23 @@ Build a `Graph` class (or factory) to represent your graph. For now, it should o Z -> ( X ) ``` -1. `hasVertex(value)`: Checks if a vertex exists. +1. `hasVertex(value)`: Returns `true` if the graph contains the vertex `value`, returns `false` otherwise. -1. `areAdjacent(value1, value2)`: Checks if two given vertices are adjacent. This means that they are connected by an edge. +1. `areAdjacent(value1, value2)`: Returns `true` if the vertices `value1` and `value2` are adjacent, returns `false` otherwise. Recall that two vertices are adjacent if they are connected by an edge. -1. `removeVertex(value)`: Removes a vertex from the adjacency list. Any edges that were connected to that vertex should be removed as well. +1. `removeVertex(value)`: Removes the vertex `value` from the adjacency list. Any edges that were connected to this vertex should be removed as well. Does nothing if `value` is not in the graph. -1. `removeEdge(value1, value2)`: Removes an edge between two vertices, if one exists. +1. `removeEdge(value1, value2)`: Removes an edge between the vertices `value1` and `value2`. Does nothing if either `value1` or `value2` are not in the graph. -1. `getOrder()`: Gets the order of the graph. This is the number of vertices in the graph. +1. `getOrder()`: Returns a number that represents the order of the graph. This is the number of vertices in the graph. -1. `getSize()`: Gets the size of the graph. This is the number of edges in the graph. +1. `getSize()`: Returns a number that represents the size of the graph. This is the number of edges in the graph. -1. `getDegree(value)`: Gets the degree of a given vertex. This is the number of edges that are connected to that vertex. +1. `getDegree(value)`: Returns a number that represents the degree of the vertex `value`, or `undefined` if `value` is not in the graph. The degree of a vertex is the number of edges that are connected to that vertex. -1. `getNeighbors(value)`: Returns an array of all the vertices that are adjacent to the given vertex. +1. `getNeighbors(value)`: Returns an array of all the vertices that are adjacent to the vertex `value`, or `undefined` if `value` is not in the graph. -1. `getCommonNeighbors(value1, value2)`: Returns an array of all vertices that are adjacent to both given vertices. +1. `getCommonNeighbors(value1, value2)`: Returns an array of all the vertices that are adjacent to both of the vertices `value1` and `value2`, or `undefined` if either `value1` or `value2` are not in the graph. #### Test Your Graph From 7f4d25272c9e75956d5a1e4c47a6ff0ddd246c49 Mon Sep 17 00:00:00 2001 From: Scriabin Enjoyer <197675111+scriabin-enjoyer@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:36:16 -0500 Subject: [PATCH 10/13] Graph Project: Add ruby version --- ruby/computer_science/project_graph.md | 126 +++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 ruby/computer_science/project_graph.md diff --git a/ruby/computer_science/project_graph.md b/ruby/computer_science/project_graph.md new file mode 100644 index 00000000000..fd021562be0 --- /dev/null +++ b/ruby/computer_science/project_graph.md @@ -0,0 +1,126 @@ +### Introduction + +A graph is a way to represent connections between things. Think of it like drawing points (called vertices or nodes) and connecting them with lines (called edges). Graphs have a wide variety of applications, and we can use them to model complex relationships. For example: + +- In a social network, each person is a vertex, and friendships are edges +- In a road map, cities are vertices, and roads between them are edges +- In a computer network, devices are vertices, and connections between computers are edges + +![Basic Graph Visualization](./project_graph/00.png) + +### Why Use Graphs? + +Graphs are incredibly useful for modeling relationships and connections. They help us solve real-world problems like: + +1. Finding the shortest route between two cities. +1. Suggesting friends on social media. +1. Planning computer network layouts for reliability and speed. +1. Analysing and managing dependencies when bundling code. +1. Ranking pages based on connections to similar pages by search engines. + +There are a handful of types of graphs used to solve this wide variety of problems. For a more thorough introduction on what graphs are, read [Khan Academy's "Describing Graphs"](https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/a/describing-graphs) lesson. The following types of graphs will be of particular importance for this project: + +- **Simple vs. Non-simple**: A simple graph is one that has no self-loops (an edge connecting a vertex to itself) and no multi-edges (multiple edges connecting the same pair of vertices). A non-simple graph is permitted to have these properties. +- **Directed vs. Undirected** : In a directed graph, edges have a direction that can go only one way (if A connects to B, B doesn't necessarily connect to A). In an undirected graph, connections go both ways (if A connects to B, B connects to A). +- **Weighted vs. Unweighted**: In a weighted graph, edges have a numeric weight that specifies something about them. In an unweighted graph, edges do not encode this information — no one connection is more important than any other. + +The computer network graph at the beginning of this project is an example of a simple, undirected, unweighted graph. This is the type of graph we will be building in this project. + +### Representing a Graph + +In our code, there are several ways we could represent a graph. Two of the most common representations include *adjacency lists* and *adjacency matrices*. Read this article about [graphs and their representations](https://www.w3schools.com/dsa/dsa_theory_graphs.php) from w3schools to familiarise yourself with these ideas. + +In this project, we'll be using an adjacency list to represent the graph. We've picked this style of graph because they are usually a bit easier to work with, they use less space for many real-world graphs, and they are often a better fit for modeling the kinds of relationships you'll encounter in practice. If you would like, you can read this GeeksforGeeks article about [the differences between adjacency lists and adjacency matrices](https://www.geeksforgeeks.org/dsa/comparison-between-adjacency-list-and-adjacency-matrix-representation-of-graph/) + +### Assignment + +
+ +You'll build a simple, undirected, unweighted graph implementation using an adjacency list. The focus is on understanding how to store and manipulate graph relationships. For simplicity, you may assume that the values of each vertex are unique in the graph. + +Build a `Graph` class to represent your graph. For now, it should only include storage for an `@adjacency_list`. Then proceed to create the following methods: + +1. `add_vertex(value)`: Adds `value` to the adjacency list. Does nothing if `value` is already in the graph. + + **Hint:** The number of entries in the adjacency list should always be the same as the number of vertices in the graph. + +1. `add_edge(value1, value2)`: Creates an edge between the two vertices `value1` and `value2`. If either `value1` or `value2` are not in the graph, creates a vertex for them before creating the edge. Remember that our graph is *simple*, *undirected*, and *unweighted*, so you must take this into consideration. + +1. `to_s`: Returns a string that represents the underlying adjacency list. You can use this to print the graph and inspect its state. The string representation should look something like this: + + ```text + X -> ( Y, Z ) + Y -> ( X ) + Z -> ( X ) + ``` + +1. `vertex?(value)`: Returns `true` if the graph contains the vertex `value`, returns `false` otherwise. + +1. `adjacent?(value1, value2)`: Returns `true` if the vertices `value1` and `value2` are adjacent, returns `false` otherwise. Recall that two vertices are adjacent if they are connected by an edge. + +1. `remove_vertex(value)`: Removes the vertex `value` from the adjacency list. Any edges that were connected to this vertex should be removed as well. Does nothing if `value` is not in the graph. + +1. `remove_edge(value1, value2)`: Removes an edge between the vertices `value1` and `value2`. Does nothing if either `value1` or `value2` are not in the graph. + +1. `order`: Returns a number that represents the order of the graph. This is the number of vertices in the graph. + +1. `size`: Returns a number that represents the size of the graph. This is the number of edges in the graph. + +1. `degree(value)`: Returns a number that represents the degree of the vertex `value`, or `undefined` if `value` is not in the graph. The degree of a vertex is the number of edges that are connected to that vertex. + +1. `neighbors(value)`: Returns an array of all the vertices that are adjacent to the vertex `value`, or `undefined` if `value` is not in the graph. + +1. `common_neighbors(value1, value2)`: Returns an array of all the vertices that are adjacent to both of the vertices `value1` and `value2`, or `undefined` if either `value1` or `value2` are not in the graph. + +#### Test Your Graph + +1. Create a new Ruby file. `require_relative` your `Graph` class. + +1. Create a new instance of your graph. + + ```ruby + graph = Graph.new + ``` + +1. Populate your graph using the `add_vertex(value)` and `add_edge(value1, value2)` methods by copying the following: + + ```ruby + // Add some vertices + graph.add_vertex("A") + graph.add_vertex("B") + graph.add_vertex("C") + graph.add_vertex("D") + + // Add some edges + graph.add_edge("A", "B") + graph.add_edge("B", "C") + graph.add_edge("A", "C") + graph.add_edge("C", "D") + ``` + + **Note:** We're using letters as the vertices here, but they could be anything we wanted. We could be using strings, numbers, or even a custom `Vertex` class. + +1. Now you have your graph populated, try out a few of the methods by copying the following: + + ```ruby + puts graph + # The list should now look like this: + # A -> ( B, C ) + # B -> ( A, C ) + # C -> ( A, B, D ) + # D -> ( C ) + + puts graph.order # Should print 4 + puts graph.size # Should print 4 + + graph.remove_edge('C', 'B') + puts graph.size # Should print 3 + + puts graph.neighbors('A')) # Should print ['B', 'C'] + puts graph.common_neighbors('A', 'D')) # Should print ['C'] + puts graph.common_neighbors('A', 'B')) # Should print [] + ``` + +1. Lastly, experiment with different combinations of all the methods you have in your graph! Make sure everything is working as you expect it to. + +
From da64d3859a871e17c076529b7ba6d470ba04ceee Mon Sep 17 00:00:00 2001 From: Scriabin Enjoyer <197675111+scriabin-enjoyer@users.noreply.github.com> Date: Sat, 24 Jan 2026 15:31:57 -0500 Subject: [PATCH 11/13] Graph Project: Fix syntax errors --- ruby/computer_science/project_graph.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ruby/computer_science/project_graph.md b/ruby/computer_science/project_graph.md index fd021562be0..fc97524d2ba 100644 --- a/ruby/computer_science/project_graph.md +++ b/ruby/computer_science/project_graph.md @@ -66,11 +66,11 @@ Build a `Graph` class to represent your graph. For now, it should only include s 1. `size`: Returns a number that represents the size of the graph. This is the number of edges in the graph. -1. `degree(value)`: Returns a number that represents the degree of the vertex `value`, or `undefined` if `value` is not in the graph. The degree of a vertex is the number of edges that are connected to that vertex. +1. `degree(value)`: Returns a number that represents the degree of the vertex `value`, or `nil` if `value` is not in the graph. The degree of a vertex is the number of edges that are connected to that vertex. -1. `neighbors(value)`: Returns an array of all the vertices that are adjacent to the vertex `value`, or `undefined` if `value` is not in the graph. +1. `neighbors(value)`: Returns an array of all the vertices that are adjacent to the vertex `value`, or `nil` if `value` is not in the graph. -1. `common_neighbors(value1, value2)`: Returns an array of all the vertices that are adjacent to both of the vertices `value1` and `value2`, or `undefined` if either `value1` or `value2` are not in the graph. +1. `common_neighbors(value1, value2)`: Returns an array of all the vertices that are adjacent to both of the vertices `value1` and `value2`, or `nil` if either `value1` or `value2` are not in the graph. #### Test Your Graph @@ -85,13 +85,13 @@ Build a `Graph` class to represent your graph. For now, it should only include s 1. Populate your graph using the `add_vertex(value)` and `add_edge(value1, value2)` methods by copying the following: ```ruby - // Add some vertices + # Add some vertices graph.add_vertex("A") graph.add_vertex("B") graph.add_vertex("C") graph.add_vertex("D") - // Add some edges + # Add some edges graph.add_edge("A", "B") graph.add_edge("B", "C") graph.add_edge("A", "C") @@ -116,9 +116,9 @@ Build a `Graph` class to represent your graph. For now, it should only include s graph.remove_edge('C', 'B') puts graph.size # Should print 3 - puts graph.neighbors('A')) # Should print ['B', 'C'] - puts graph.common_neighbors('A', 'D')) # Should print ['C'] - puts graph.common_neighbors('A', 'B')) # Should print [] + p graph.neighbors('A') # Should print ['B', 'C'] + p graph.common_neighbors('A', 'D') # Should print ['C'] + p graph.common_neighbors('A', 'B') # Should print [] ``` 1. Lastly, experiment with different combinations of all the methods you have in your graph! Make sure everything is working as you expect it to. From 6d5ad29b4cf2d777153d76447b5be77d7ce10cb9 Mon Sep 17 00:00:00 2001 From: Scriabin Enjoyer <197675111+scriabin-enjoyer@users.noreply.github.com> Date: Mon, 26 Jan 2026 13:38:44 -0500 Subject: [PATCH 12/13] Graph Project: Update formatting for better compliance with layout style guide --- javascript/computer_science/project_graph.md | 60 ++++++++++---------- ruby/computer_science/project_graph.md | 59 ++++++++++--------- 2 files changed, 62 insertions(+), 57 deletions(-) diff --git a/javascript/computer_science/project_graph.md b/javascript/computer_science/project_graph.md index 654d4338b71..88109d57542 100644 --- a/javascript/computer_science/project_graph.md +++ b/javascript/computer_science/project_graph.md @@ -2,13 +2,13 @@ A graph is a way to represent connections between things. Think of it like drawing points (called vertices or nodes) and connecting them with lines (called edges). Graphs have a wide variety of applications, and we can use them to model complex relationships. For example: -- In a social network, each person is a vertex, and friendships are edges -- In a road map, cities are vertices, and roads between them are edges -- In a computer network, devices are vertices, and connections between computers are edges +- In a social network, each person is a vertex, and friendships are edges. +- In a road map, cities are vertices, and roads between them are edges. +- In a computer network, devices are vertices, and connections between computers are edges. ![Basic Graph Visualization](./project_graph/00.png) -### Why Use Graphs? +### Why use graphs? Graphs are incredibly useful for modeling relationships and connections. They help us solve real-world problems like: @@ -18,19 +18,19 @@ Graphs are incredibly useful for modeling relationships and connections. They he 1. Analysing and managing dependencies when bundling code. 1. Ranking pages based on connections to similar pages by search engines. -There are a handful of types of graphs used to solve this wide variety of problems. For a more thorough introduction on what graphs are, read [Khan Academy's "Describing Graphs"](https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/a/describing-graphs) lesson. The following types of graphs will be of particular importance for this project: +There are a handful of types of graphs used to solve this wide variety of problems. For a more thorough introduction on what graphs are, read [Khan Academy's "Describing Graphs" lesson](https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/a/describing-graphs). The following types of graphs will be of particular importance for this project: - **Simple vs. Non-simple**: A simple graph is one that has no self-loops (an edge connecting a vertex to itself) and no multi-edges (multiple edges connecting the same pair of vertices). A non-simple graph is permitted to have these properties. -- **Directed vs. Undirected** : In a directed graph, edges have a direction that can go only one way (if A connects to B, B doesn't necessarily connect to A). In an undirected graph, connections go both ways (if A connects to B, B connects to A). +- **Directed vs. Undirected** : In a directed graph, edges have a direction that can go only one way (if A connects to B, B doesn't necessarily connect to A). In an undirected graph, edges go both ways (if A connects to B, B connects to A). - **Weighted vs. Unweighted**: In a weighted graph, edges have a numeric weight that specifies something about them. In an unweighted graph, edges do not encode this information — no one connection is more important than any other. The computer network graph at the beginning of this project is an example of a simple, undirected, unweighted graph. This is the type of graph we will be building in this project. -### Representing a Graph +### Representing a graph -In our code, there are several ways we could represent a graph. Two of the most common representations include *adjacency lists* and *adjacency matrices*. Read this article about [graphs and their representations](https://www.w3schools.com/dsa/dsa_theory_graphs.php) from w3schools to familiarise yourself with these ideas. +In our code, there are several ways we could represent a graph. Two of the most common representations include *adjacency lists* and *adjacency matrices*. Read [w3schools' Graphs article](https://www.w3schools.com/dsa/dsa_theory_graphs.php) to familiarise yourself with these ideas. -In this project, we'll be using an adjacency list to represent the graph. We've picked this style of graph because they are usually a bit easier to work with, they use less space for many real-world graphs, and they are often a better fit for modeling the kinds of relationships you'll encounter in practice. If you would like, you can read this GeeksforGeeks article about [the differences between adjacency lists and adjacency matrices](https://www.geeksforgeeks.org/dsa/comparison-between-adjacency-list-and-adjacency-matrix-representation-of-graph/) +In this project, we'll be using an adjacency list to represent the graph. We've picked this style of graph because they are usually a bit easier to work with, they use less space for many real-world graphs, and they are often a better fit for modeling the kinds of relationships you'll encounter in practice. If you would like, you can read [GeeksforGeeks Comparison between Adjacency List and Adjacency Matrix article](https://www.geeksforgeeks.org/dsa/comparison-between-adjacency-list-and-adjacency-matrix-representation-of-graph/) for an explanation of the time and space complexity trade-offs between the two representations. ### Assignment @@ -42,45 +42,41 @@ Build a `Graph` class (or factory) to represent your graph. For now, it should o 1. `addVertex(value)`: Adds `value` to the adjacency list. Does nothing if `value` is already in the graph. - **Hint:** The number of entries in the adjacency list should always be the same as the number of vertices in the graph. +
-1. `addEdge(value1, value2)`: Creates an edge between the two vertices `value1` and `value2`. If either `value1` or `value2` are not in the graph, creates a vertex for them before creating the edge. Remember that our graph is *simple*, *undirected*, and *unweighted*, so you must take this into consideration. + #### An important graph invariant + + The number of entries in the adjacency list should always be the same as the number of vertices in the graph. + +
+1. `addEdge(value1, value2)`: Creates an edge between the two vertices `value1` and `value2`. If either `value1` or `value2` are not in the graph, creates a vertex for them before creating the edge. Remember that our graph is *simple*, *undirected*, and *unweighted*, so you must take this into consideration. 1. `toString()`: Returns a string that represents the underlying adjacency list. You can use this to print the graph and inspect its state. The string representation should look something like this: - ```text - X -> ( Y, Z ) - Y -> ( X ) - Z -> ( X ) - ``` + ```text + X -> ( Y, Z ) + Y -> ( X ) + Z -> ( X ) + ``` 1. `hasVertex(value)`: Returns `true` if the graph contains the vertex `value`, returns `false` otherwise. - 1. `areAdjacent(value1, value2)`: Returns `true` if the vertices `value1` and `value2` are adjacent, returns `false` otherwise. Recall that two vertices are adjacent if they are connected by an edge. - 1. `removeVertex(value)`: Removes the vertex `value` from the adjacency list. Any edges that were connected to this vertex should be removed as well. Does nothing if `value` is not in the graph. - 1. `removeEdge(value1, value2)`: Removes an edge between the vertices `value1` and `value2`. Does nothing if either `value1` or `value2` are not in the graph. - 1. `getOrder()`: Returns a number that represents the order of the graph. This is the number of vertices in the graph. - 1. `getSize()`: Returns a number that represents the size of the graph. This is the number of edges in the graph. - 1. `getDegree(value)`: Returns a number that represents the degree of the vertex `value`, or `undefined` if `value` is not in the graph. The degree of a vertex is the number of edges that are connected to that vertex. - 1. `getNeighbors(value)`: Returns an array of all the vertices that are adjacent to the vertex `value`, or `undefined` if `value` is not in the graph. - 1. `getCommonNeighbors(value1, value2)`: Returns an array of all the vertices that are adjacent to both of the vertices `value1` and `value2`, or `undefined` if either `value1` or `value2` are not in the graph. #### Test Your Graph 1. Create a new JavaScript file. Import your `Graph` class or factory. - 1. Create a new instance of your graph. - ```javascript - const graph = new Graph() // or Graph() if using a factory - ``` + ```javascript + const graph = new Graph() // or Graph() if using a factory + ``` 1. Populate your graph using the `addVertex(value)` and `addEdge(value1, value2)` methods by copying the following: @@ -98,7 +94,13 @@ Build a `Graph` class (or factory) to represent your graph. For now, it should o graph.addEdge("C", "D") ``` - **Note:** We're using letters as the vertices here, but they could be anything we wanted. We could be using strings, numbers, or even a custom `Vertex` class or factory. +
+ + #### A vertex can be anything + + We're using letters as the vertices here, but they could be anything we wanted. We could be using strings, numbers, or even a custom `Vertex` class or factory. + +
1. Now you have your graph populated, try out a few of the methods by copying the following: diff --git a/ruby/computer_science/project_graph.md b/ruby/computer_science/project_graph.md index fc97524d2ba..4fc479df360 100644 --- a/ruby/computer_science/project_graph.md +++ b/ruby/computer_science/project_graph.md @@ -2,13 +2,13 @@ A graph is a way to represent connections between things. Think of it like drawing points (called vertices or nodes) and connecting them with lines (called edges). Graphs have a wide variety of applications, and we can use them to model complex relationships. For example: -- In a social network, each person is a vertex, and friendships are edges -- In a road map, cities are vertices, and roads between them are edges -- In a computer network, devices are vertices, and connections between computers are edges +- In a social network, each person is a vertex, and friendships are edges. +- In a road map, cities are vertices, and roads between them are edges. +- In a computer network, devices are vertices, and connections between computers are edges. ![Basic Graph Visualization](./project_graph/00.png) -### Why Use Graphs? +### Why use graphs? Graphs are incredibly useful for modeling relationships and connections. They help us solve real-world problems like: @@ -18,19 +18,19 @@ Graphs are incredibly useful for modeling relationships and connections. They he 1. Analysing and managing dependencies when bundling code. 1. Ranking pages based on connections to similar pages by search engines. -There are a handful of types of graphs used to solve this wide variety of problems. For a more thorough introduction on what graphs are, read [Khan Academy's "Describing Graphs"](https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/a/describing-graphs) lesson. The following types of graphs will be of particular importance for this project: +There are a handful of types of graphs used to solve this wide variety of problems. For a more thorough introduction on what graphs are, read [Khan Academy's "Describing Graphs" lesson](https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/a/describing-graphs). The following types of graphs will be of particular importance for this project: - **Simple vs. Non-simple**: A simple graph is one that has no self-loops (an edge connecting a vertex to itself) and no multi-edges (multiple edges connecting the same pair of vertices). A non-simple graph is permitted to have these properties. -- **Directed vs. Undirected** : In a directed graph, edges have a direction that can go only one way (if A connects to B, B doesn't necessarily connect to A). In an undirected graph, connections go both ways (if A connects to B, B connects to A). +- **Directed vs. Undirected** : In a directed graph, edges have a direction that can go only one way (if A connects to B, B doesn't necessarily connect to A). In an undirected graph, edges go both ways (if A connects to B, B connects to A). - **Weighted vs. Unweighted**: In a weighted graph, edges have a numeric weight that specifies something about them. In an unweighted graph, edges do not encode this information — no one connection is more important than any other. The computer network graph at the beginning of this project is an example of a simple, undirected, unweighted graph. This is the type of graph we will be building in this project. -### Representing a Graph +### Representing a graph -In our code, there are several ways we could represent a graph. Two of the most common representations include *adjacency lists* and *adjacency matrices*. Read this article about [graphs and their representations](https://www.w3schools.com/dsa/dsa_theory_graphs.php) from w3schools to familiarise yourself with these ideas. +In our code, there are several ways we could represent a graph. Two of the most common representations include *adjacency lists* and *adjacency matrices*. Read [w3schools' Graphs article](https://www.w3schools.com/dsa/dsa_theory_graphs.php) to familiarise yourself with these ideas. -In this project, we'll be using an adjacency list to represent the graph. We've picked this style of graph because they are usually a bit easier to work with, they use less space for many real-world graphs, and they are often a better fit for modeling the kinds of relationships you'll encounter in practice. If you would like, you can read this GeeksforGeeks article about [the differences between adjacency lists and adjacency matrices](https://www.geeksforgeeks.org/dsa/comparison-between-adjacency-list-and-adjacency-matrix-representation-of-graph/) +In this project, we'll be using an adjacency list to represent the graph. We've picked this style of graph because they are usually a bit easier to work with, they use less space for many real-world graphs, and they are often a better fit for modeling the kinds of relationships you'll encounter in practice. If you would like, you can read [GeeksforGeeks Comparison between Adjacency List and Adjacency Matrix article](https://www.geeksforgeeks.org/dsa/comparison-between-adjacency-list-and-adjacency-matrix-representation-of-graph/) for an explanation of the time and space complexity trade-offs between the two representations. ### Assignment @@ -42,34 +42,31 @@ Build a `Graph` class to represent your graph. For now, it should only include s 1. `add_vertex(value)`: Adds `value` to the adjacency list. Does nothing if `value` is already in the graph. - **Hint:** The number of entries in the adjacency list should always be the same as the number of vertices in the graph. +
-1. `add_edge(value1, value2)`: Creates an edge between the two vertices `value1` and `value2`. If either `value1` or `value2` are not in the graph, creates a vertex for them before creating the edge. Remember that our graph is *simple*, *undirected*, and *unweighted*, so you must take this into consideration. + #### An important graph invariant + + The number of entries in the adjacency list should always be the same as the number of vertices in the graph. + +
+1. `add_edge(value1, value2)`: Creates an edge between the two vertices `value1` and `value2`. If either `value1` or `value2` are not in the graph, creates a vertex for them before creating the edge. Remember that our graph is *simple*, *undirected*, and *unweighted*, so you must take this into consideration. 1. `to_s`: Returns a string that represents the underlying adjacency list. You can use this to print the graph and inspect its state. The string representation should look something like this: - ```text - X -> ( Y, Z ) - Y -> ( X ) - Z -> ( X ) - ``` + ```text + X -> ( Y, Z ) + Y -> ( X ) + Z -> ( X ) + ``` 1. `vertex?(value)`: Returns `true` if the graph contains the vertex `value`, returns `false` otherwise. - 1. `adjacent?(value1, value2)`: Returns `true` if the vertices `value1` and `value2` are adjacent, returns `false` otherwise. Recall that two vertices are adjacent if they are connected by an edge. - 1. `remove_vertex(value)`: Removes the vertex `value` from the adjacency list. Any edges that were connected to this vertex should be removed as well. Does nothing if `value` is not in the graph. - 1. `remove_edge(value1, value2)`: Removes an edge between the vertices `value1` and `value2`. Does nothing if either `value1` or `value2` are not in the graph. - 1. `order`: Returns a number that represents the order of the graph. This is the number of vertices in the graph. - 1. `size`: Returns a number that represents the size of the graph. This is the number of edges in the graph. - 1. `degree(value)`: Returns a number that represents the degree of the vertex `value`, or `nil` if `value` is not in the graph. The degree of a vertex is the number of edges that are connected to that vertex. - 1. `neighbors(value)`: Returns an array of all the vertices that are adjacent to the vertex `value`, or `nil` if `value` is not in the graph. - 1. `common_neighbors(value1, value2)`: Returns an array of all the vertices that are adjacent to both of the vertices `value1` and `value2`, or `nil` if either `value1` or `value2` are not in the graph. #### Test Your Graph @@ -78,9 +75,9 @@ Build a `Graph` class to represent your graph. For now, it should only include s 1. Create a new instance of your graph. - ```ruby - graph = Graph.new - ``` + ```ruby + graph = Graph.new + ``` 1. Populate your graph using the `add_vertex(value)` and `add_edge(value1, value2)` methods by copying the following: @@ -98,7 +95,13 @@ Build a `Graph` class to represent your graph. For now, it should only include s graph.add_edge("C", "D") ``` - **Note:** We're using letters as the vertices here, but they could be anything we wanted. We could be using strings, numbers, or even a custom `Vertex` class. +
+ + #### A vertex can be anything + + We're using letters as the vertices here, but they could be anything we wanted. We could be using strings, numbers, or even a custom `Vertex` class or factory. + +
1. Now you have your graph populated, try out a few of the methods by copying the following: From f633d54ae0bc62baacefd1d7a58c5d2ec404edc6 Mon Sep 17 00:00:00 2001 From: Scriabin Enjoyer <197675111+scriabin-enjoyer@users.noreply.github.com> Date: Thu, 5 Feb 2026 13:10:15 -0500 Subject: [PATCH 13/13] Graph Project: Update language for better phrasing --- javascript/computer_science/project_graph.md | 10 +++++----- ruby/computer_science/project_graph.md | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/javascript/computer_science/project_graph.md b/javascript/computer_science/project_graph.md index 88109d57542..90f309c1b6c 100644 --- a/javascript/computer_science/project_graph.md +++ b/javascript/computer_science/project_graph.md @@ -59,15 +59,15 @@ Build a `Graph` class (or factory) to represent your graph. For now, it should o Z -> ( X ) ``` -1. `hasVertex(value)`: Returns `true` if the graph contains the vertex `value`, returns `false` otherwise. -1. `areAdjacent(value1, value2)`: Returns `true` if the vertices `value1` and `value2` are adjacent, returns `false` otherwise. Recall that two vertices are adjacent if they are connected by an edge. +1. `hasVertex(value)`: Returns `true` if the graph contains the vertex `value`. Returns `false` if the graph does not contain `value`. +1. `areAdjacent(value1, value2)`: Returns `true` if the vertices `value1` and `value2` are adjacent. Returns `false` if they are not adjacent. Recall that two vertices are adjacent if they are connected by an edge. 1. `removeVertex(value)`: Removes the vertex `value` from the adjacency list. Any edges that were connected to this vertex should be removed as well. Does nothing if `value` is not in the graph. 1. `removeEdge(value1, value2)`: Removes an edge between the vertices `value1` and `value2`. Does nothing if either `value1` or `value2` are not in the graph. 1. `getOrder()`: Returns a number that represents the order of the graph. This is the number of vertices in the graph. 1. `getSize()`: Returns a number that represents the size of the graph. This is the number of edges in the graph. -1. `getDegree(value)`: Returns a number that represents the degree of the vertex `value`, or `undefined` if `value` is not in the graph. The degree of a vertex is the number of edges that are connected to that vertex. -1. `getNeighbors(value)`: Returns an array of all the vertices that are adjacent to the vertex `value`, or `undefined` if `value` is not in the graph. -1. `getCommonNeighbors(value1, value2)`: Returns an array of all the vertices that are adjacent to both of the vertices `value1` and `value2`, or `undefined` if either `value1` or `value2` are not in the graph. +1. `getDegree(value)`: Returns a number that represents the degree of the vertex `value`. If `value` is not in the graph, return `undefined`. The degree of a vertex is the number of edges that are connected to that vertex. +1. `getNeighbors(value)`: Returns an array of all the vertices that are adjacent to the vertex `value`. If `value` is not in the graph, return `undefined`. +1. `getCommonNeighbors(value1, value2)`: Returns an array of all the vertices that are adjacent to both of the vertices `value1` and `value2`. If either `value1` or `value2` are not in the graph, return `undefined`. #### Test Your Graph diff --git a/ruby/computer_science/project_graph.md b/ruby/computer_science/project_graph.md index 4fc479df360..78823111ae4 100644 --- a/ruby/computer_science/project_graph.md +++ b/ruby/computer_science/project_graph.md @@ -59,15 +59,15 @@ Build a `Graph` class to represent your graph. For now, it should only include s Z -> ( X ) ``` -1. `vertex?(value)`: Returns `true` if the graph contains the vertex `value`, returns `false` otherwise. -1. `adjacent?(value1, value2)`: Returns `true` if the vertices `value1` and `value2` are adjacent, returns `false` otherwise. Recall that two vertices are adjacent if they are connected by an edge. +1. `vertex?(value)`: Returns `true` if the graph contains the vertex `value`. Returns `false` if the graph does not contain `value`. +1. `adjacent?(value1, value2)`: Returns `true` if the vertices `value1` and `value2` are adjacent. Returns `false` if they are not adjacent. Recall that two vertices are adjacent if they are connected by an edge. 1. `remove_vertex(value)`: Removes the vertex `value` from the adjacency list. Any edges that were connected to this vertex should be removed as well. Does nothing if `value` is not in the graph. 1. `remove_edge(value1, value2)`: Removes an edge between the vertices `value1` and `value2`. Does nothing if either `value1` or `value2` are not in the graph. 1. `order`: Returns a number that represents the order of the graph. This is the number of vertices in the graph. 1. `size`: Returns a number that represents the size of the graph. This is the number of edges in the graph. -1. `degree(value)`: Returns a number that represents the degree of the vertex `value`, or `nil` if `value` is not in the graph. The degree of a vertex is the number of edges that are connected to that vertex. -1. `neighbors(value)`: Returns an array of all the vertices that are adjacent to the vertex `value`, or `nil` if `value` is not in the graph. -1. `common_neighbors(value1, value2)`: Returns an array of all the vertices that are adjacent to both of the vertices `value1` and `value2`, or `nil` if either `value1` or `value2` are not in the graph. +1. `degree(value)`: Returns a number that represents the degree of the vertex `value`. If `value` is not in the graph, return `nil`. The degree of a vertex is the number of edges that are connected to that vertex. +1. `neighbors(value)`: Returns an array of all the vertices that are adjacent to the vertex `value`. If `value` is not in the graph, return `nil`. +1. `common_neighbors(value1, value2)`: Returns an array of all the vertices that are adjacent to both of the vertices `value1` and `value2`. If either `value1` or `value2` are not in the graph, return `nil`. #### Test Your Graph