mapwright 0.20.0__tar.gz → 0.22.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mapwright-0.20.0 → mapwright-0.22.0}/CHANGELOG.md +45 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/PKG-INFO +15 -5
- {mapwright-0.20.0 → mapwright-0.22.0}/README.md +14 -4
- mapwright-0.22.0/docs/gallery/fortress-town.png +0 -0
- mapwright-0.22.0/docs/gallery/fortress-town.svg +1 -0
- mapwright-0.22.0/docs/gallery/grid-city.png +0 -0
- mapwright-0.22.0/docs/gallery/grid-city.svg +1 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/examples/gallery.py +2 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/pyproject.toml +1 -1
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/__init__.py +3 -1
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/_geometry.py +43 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/settlement.py +319 -45
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/settlement_renderer.py +22 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_api_contract.py +2 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_geometry.py +21 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_settlement.py +172 -5
- {mapwright-0.20.0 → mapwright-0.22.0}/.github/workflows/ci.yml +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/.github/workflows/publish.yml +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/.gitignore +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/LICENSE +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/NOTICE +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/age-old.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/age-old.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/age-young.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/age-young.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/archipelago.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/archipelago.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/arctic.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/arctic.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/README.md +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/city_castle_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/city_large_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/city_town_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/city_village_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/decoration_compass_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/decoration_creature_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/decoration_ship_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/dune_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/hill_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/hill_2.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/manifest.json +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/mountain_mid_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/mountain_old_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/mountain_old_2.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/mountain_young_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/mountain_young_2.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/tree_cactus_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/tree_deciduous_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/tree_deciduous_2.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/tree_pine_1.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/atlas_pack/tree_pine_2.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/citadel.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/citadel.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/continent.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/continent.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/desert.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/desert.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/dungeon.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/dungeon.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/highlands.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/highlands.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/hint.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/hint.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/islands.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/islands.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/metropolis.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/metropolis.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/pangaea.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/pangaea.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/port.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/port.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/regions.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/regions.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/roads.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/roads.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/shantytown.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/shantytown.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/template-atoll.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/template-atoll.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/template-isthmus.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/template-isthmus.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/theme-blueprint.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/theme-blueprint.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/theme-citadel-neon.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/theme-citadel-neon.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/theme-dune.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/theme-dune.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/theme-dungeon-blueprint.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/theme-dungeon-blueprint.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/theme-neon.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/theme-neon.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/theme-parchment.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/theme-parchment.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/town.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/town.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/tropical.png +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/docs/gallery/tropical.svg +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/examples/benchmark.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/_graph.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/_serde.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/affordances.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/atlas_renderer.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/config.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/dungeon.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/dungeon_renderer.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/names.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/regions.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/rng.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/roads.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/svg_renderer.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/terrain.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/src/mapwright/themes.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_affordances.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_atlas_renderer.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_config.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_dungeon.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_dungeon_renderer.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_graph.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_names.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_properties.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_regions.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_rng.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_roads.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_serialize.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_svg_renderer.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_terrain.py +0 -0
- {mapwright-0.20.0 → mapwright-0.22.0}/tests/test_themes.py +0 -0
|
@@ -8,6 +8,51 @@ All notable changes to mapwright are documented here. The format follows
|
|
|
8
8
|
`tests/test_api_contract.py`). While the version is `0.x`, minor versions may
|
|
9
9
|
make breaking changes; these will always be noted here.
|
|
10
10
|
|
|
11
|
+
## [0.22.0] — 2026-06-02
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
- **Settlement `purpose` + landmarks — what a town exists for.** A new
|
|
15
|
+
`SettlementConfig.purpose` field (`"general"` default, or `"trade"`,
|
|
16
|
+
`"fortress"`, `"religious"`, `"harbor"`, `"extraction"`, `"transit"`). Anything
|
|
17
|
+
but `"general"`:
|
|
18
|
+
- promotes the central ward to a purpose-specific **landmark** kind
|
|
19
|
+
(fortress→`citadel`, religious→`temple`, trade→`market`, harbor→`docks`,
|
|
20
|
+
extraction→`mine`, transit→`plaza`), recorded on the new
|
|
21
|
+
`Settlement.landmark` field (a new public `Landmark` type);
|
|
22
|
+
- focuses the **main roads** on that landmark (they radiate from it to the
|
|
23
|
+
gates);
|
|
24
|
+
- **biases the ward-kind mix** toward the purpose (e.g. fortress → more
|
|
25
|
+
garrison wards).
|
|
26
|
+
- The renderer draws a star glyph over the landmark ward.
|
|
27
|
+
- New presets **`fortress_town`**, **`pilgrimage_site`**, **`mining_camp`**;
|
|
28
|
+
gallery `fortress-town` showcase.
|
|
29
|
+
- `"general"` output is **byte-identical** to before (no landmark, unchanged
|
|
30
|
+
ward bag and roads). New `Landmark` public type; `Settlement` serialisation
|
|
31
|
+
bumps to `mapwright/settlement@5` (back-compatible — older payloads load with
|
|
32
|
+
no landmark and `purpose="general"`).
|
|
33
|
+
|
|
34
|
+
## [0.21.0] — 2026-06-02
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
- **Grid streets — the organic ↔ planned layout descriptor.** A new
|
|
38
|
+
`SettlementConfig.layout` field (`"organic"` default, or `"grid"`) chooses the
|
|
39
|
+
street pattern. In `"grid"` mode the town gets a geometric street grid aligned
|
|
40
|
+
to its long axis (PCA over the footprint): two families of parallel
|
|
41
|
+
thoroughfares clipped to the footprint, the central line of each marked
|
|
42
|
+
`"main"`, with gates where the mains pierce the perimeter (plus a harbour gate
|
|
43
|
+
when coastal). Building lots are also bisected along the grid axes, so blocks
|
|
44
|
+
come out rectangular and street-aligned. Walls splice grid gates (which land
|
|
45
|
+
mid-edge) into the wall ring as real gatehouse gaps. This is the *Layout &
|
|
46
|
+
Geometry* descriptor from the imaginative-realms taxonomy ("Hyper-Grid Rigid"),
|
|
47
|
+
generalising the `era`/`wealth` shanty↔skyscraper axis.
|
|
48
|
+
- New preset **`grid_city`**; gallery `grid-city` showcase.
|
|
49
|
+
- The default (`layout="organic"`) output is **byte-identical** to before — all
|
|
50
|
+
grid logic is gated behind the new mode.
|
|
51
|
+
- `layout` serialises via `to_dict`/`json_schema` (new enum-field support in
|
|
52
|
+
`SettlementConfig`, via an `_ENUM_SPEC`).
|
|
53
|
+
- New reusable geometry primitive `clip_line_to_convex` (Liang–Barsky line ↔
|
|
54
|
+
convex-polygon clipping) in the internal `_geometry` module.
|
|
55
|
+
|
|
11
56
|
## [0.20.0] — 2026-06-02
|
|
12
57
|
|
|
13
58
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mapwright
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.22.0
|
|
4
4
|
Summary: Domain-neutral procedural fantasy map & world generation: Voronoi terrain, hydraulic erosion, biomes, rivers, Markov place-names, and shaded-relief SVG.
|
|
5
5
|
Project-URL: Homepage, https://github.com/sligara7/mapwright
|
|
6
6
|
Project-URL: Repository, https://github.com/sligara7/mapwright
|
|
@@ -97,7 +97,11 @@ produced by [`examples/gallery.py`](examples/gallery.py):
|
|
|
97
97
|
<tr>
|
|
98
98
|
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/shantytown.png" alt="poor, dense, irregular shantytown"><br><sub><code>wealth=0.08</code> (shantytown)</sub></td>
|
|
99
99
|
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/metropolis.png" alt="rich, modern, grid-block metropolis"><br><sub><code>wealth=0.92, era=0.95</code> (metropolis)</sub></td>
|
|
100
|
-
<td align="center"><
|
|
100
|
+
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/grid-city.png" alt="planned town with a geometric street grid"><br><sub><code>layout="grid"</code> (grid_city)</sub></td>
|
|
101
|
+
</tr>
|
|
102
|
+
<tr>
|
|
103
|
+
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/fortress-town.png" alt="walled fortress town with a central citadel landmark"><br><sub><code>purpose="fortress"</code> (fortress_town)</sub></td>
|
|
104
|
+
<td align="center" colspan="2"><sub>A <code>purpose</code> seeds a central <b>landmark</b> (★) the main roads focus on — citadel, temple, mine, … — and biases the ward mix toward what the town is for.</sub></td>
|
|
101
105
|
</tr>
|
|
102
106
|
<tr>
|
|
103
107
|
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/roads.png" alt="settlements linked by terrain-routed roads"><br><sub><code>RegionalRoadGenerator</code></sub></td>
|
|
@@ -226,8 +230,14 @@ open("town.svg", "w").write(SettlementSVGRenderer().render(town))
|
|
|
226
230
|
```
|
|
227
231
|
|
|
228
232
|
Settlement presets: `hamlet`, `village`, `town`, `city`, `port`, `citadel`,
|
|
229
|
-
`shantytown`, `metropolis
|
|
230
|
-
|
|
233
|
+
`shantytown`, `metropolis`, `grid_city`, `fortress_town`, `pilgrimage_site`,
|
|
234
|
+
`mining_camp`. The `wealth` (poor ⇄ rich) and `era` (ancient ⇄ modern) knobs drive
|
|
235
|
+
the shanty↔skyscraper axis — plot size, ward-kind mix, and block regularity. The
|
|
236
|
+
`layout` knob picks the street pattern: `"organic"` (winding ward-to-ward roads,
|
|
237
|
+
the default) or `"grid"` (a geometric street grid aligned to the town's long axis,
|
|
238
|
+
with grid-aligned lots). The `purpose` knob (`"fortress"`, `"religious"`,
|
|
239
|
+
`"extraction"`, …) gives the town a central **landmark** the main roads focus on
|
|
240
|
+
and biases its ward mix toward what it's for.
|
|
231
241
|
|
|
232
242
|
## What's inside
|
|
233
243
|
|
|
@@ -245,7 +255,7 @@ knobs drive the shanty↔skyscraper axis — plot size, ward-kind mix, and block
|
|
|
245
255
|
| `RegionGenerator` | Partitions land into named factions/territories: spread capitals seed a flood fill over the land graph (sea divides them); each `Region` is Markov-named. |
|
|
246
256
|
| `DungeonGenerator` | BSP-partitioned rooms + minimum-spanning-tree corridors → rooms, corridor cells, and a walkable grid (with `Dungeon.ascii()`). |
|
|
247
257
|
| `DungeonSVGRenderer` | Renders a `Dungeon` to SVG: walls, carved floor, room outlines, optional tile grid and per-room labels. Takes a `theme=`. |
|
|
248
|
-
| `SettlementGenerator` | Self-contained town layout: an organic footprint divided into named Voronoi **wards** (market, docks, …), each subdivided into building **lots**, a **street** network (MST over ward adjacency +
|
|
258
|
+
| `SettlementGenerator` | Self-contained town layout: an organic footprint divided into named Voronoi **wards** (market, docks, …), each subdivided into building **lots**, a **street** network (`layout="organic"` → MST over ward adjacency + gate-to-hub roads; `layout="grid"` → a geometric street grid + grid-aligned lots), an optional defensive **wall** (towers + gate gaps, opened at the harbour when coastal), an optional **`purpose`** that places a central **landmark** (citadel/temple/mine/…) the main roads focus on, and optional coastline. |
|
|
249
259
|
| `SettlementSVGRenderer` | Renders a `Settlement` to SVG: sea, footprint, kind-coloured wards, building lots, streets, wall with towers/gatehouses, labels. Takes a `theme=`. |
|
|
250
260
|
|
|
251
261
|
Everything is neutral: `RegionalTerrainGenerator` returns a `TerrainResult` of `TerrainCell`s
|
|
@@ -70,7 +70,11 @@ produced by [`examples/gallery.py`](examples/gallery.py):
|
|
|
70
70
|
<tr>
|
|
71
71
|
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/shantytown.png" alt="poor, dense, irregular shantytown"><br><sub><code>wealth=0.08</code> (shantytown)</sub></td>
|
|
72
72
|
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/metropolis.png" alt="rich, modern, grid-block metropolis"><br><sub><code>wealth=0.92, era=0.95</code> (metropolis)</sub></td>
|
|
73
|
-
<td align="center"><
|
|
73
|
+
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/grid-city.png" alt="planned town with a geometric street grid"><br><sub><code>layout="grid"</code> (grid_city)</sub></td>
|
|
74
|
+
</tr>
|
|
75
|
+
<tr>
|
|
76
|
+
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/fortress-town.png" alt="walled fortress town with a central citadel landmark"><br><sub><code>purpose="fortress"</code> (fortress_town)</sub></td>
|
|
77
|
+
<td align="center" colspan="2"><sub>A <code>purpose</code> seeds a central <b>landmark</b> (★) the main roads focus on — citadel, temple, mine, … — and biases the ward mix toward what the town is for.</sub></td>
|
|
74
78
|
</tr>
|
|
75
79
|
<tr>
|
|
76
80
|
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/roads.png" alt="settlements linked by terrain-routed roads"><br><sub><code>RegionalRoadGenerator</code></sub></td>
|
|
@@ -199,8 +203,14 @@ open("town.svg", "w").write(SettlementSVGRenderer().render(town))
|
|
|
199
203
|
```
|
|
200
204
|
|
|
201
205
|
Settlement presets: `hamlet`, `village`, `town`, `city`, `port`, `citadel`,
|
|
202
|
-
`shantytown`, `metropolis
|
|
203
|
-
|
|
206
|
+
`shantytown`, `metropolis`, `grid_city`, `fortress_town`, `pilgrimage_site`,
|
|
207
|
+
`mining_camp`. The `wealth` (poor ⇄ rich) and `era` (ancient ⇄ modern) knobs drive
|
|
208
|
+
the shanty↔skyscraper axis — plot size, ward-kind mix, and block regularity. The
|
|
209
|
+
`layout` knob picks the street pattern: `"organic"` (winding ward-to-ward roads,
|
|
210
|
+
the default) or `"grid"` (a geometric street grid aligned to the town's long axis,
|
|
211
|
+
with grid-aligned lots). The `purpose` knob (`"fortress"`, `"religious"`,
|
|
212
|
+
`"extraction"`, …) gives the town a central **landmark** the main roads focus on
|
|
213
|
+
and biases its ward mix toward what it's for.
|
|
204
214
|
|
|
205
215
|
## What's inside
|
|
206
216
|
|
|
@@ -218,7 +228,7 @@ knobs drive the shanty↔skyscraper axis — plot size, ward-kind mix, and block
|
|
|
218
228
|
| `RegionGenerator` | Partitions land into named factions/territories: spread capitals seed a flood fill over the land graph (sea divides them); each `Region` is Markov-named. |
|
|
219
229
|
| `DungeonGenerator` | BSP-partitioned rooms + minimum-spanning-tree corridors → rooms, corridor cells, and a walkable grid (with `Dungeon.ascii()`). |
|
|
220
230
|
| `DungeonSVGRenderer` | Renders a `Dungeon` to SVG: walls, carved floor, room outlines, optional tile grid and per-room labels. Takes a `theme=`. |
|
|
221
|
-
| `SettlementGenerator` | Self-contained town layout: an organic footprint divided into named Voronoi **wards** (market, docks, …), each subdivided into building **lots**, a **street** network (MST over ward adjacency +
|
|
231
|
+
| `SettlementGenerator` | Self-contained town layout: an organic footprint divided into named Voronoi **wards** (market, docks, …), each subdivided into building **lots**, a **street** network (`layout="organic"` → MST over ward adjacency + gate-to-hub roads; `layout="grid"` → a geometric street grid + grid-aligned lots), an optional defensive **wall** (towers + gate gaps, opened at the harbour when coastal), an optional **`purpose`** that places a central **landmark** (citadel/temple/mine/…) the main roads focus on, and optional coastline. |
|
|
222
232
|
| `SettlementSVGRenderer` | Renders a `Settlement` to SVG: sea, footprint, kind-coloured wards, building lots, streets, wall with towers/gatehouses, labels. Takes a `theme=`. |
|
|
223
233
|
|
|
224
234
|
Everything is neutral: `RegionalTerrainGenerator` returns a `TerrainResult` of `TerrainCell`s
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="630" height="630" viewBox="0 0 630 630"><rect width="630" height="630" fill="#c9d2bb"/><polygon points="112.4,390.5 112.4,361.1 117.4,330.8 127.1,300.4 141.2,270.5 159.2,241.7 180.9,214.6 205.7,189.8 233.2,167.8 262.9,149.2 294.0,134.5 326.0,124.2 357.9,118.7 388.8,118.3 417.8,123.1 444.0,133.0 466.6,147.7 484.9,166.7 498.5,189.2 507.1,214.6 510.8,242.1 509.6,270.7 503.8,299.9 493.9,328.9 480.0,357.3 462.7,384.5 442.2,410.2 418.8,433.9 392.9,455.1 364.9,473.5 335.1,488.5 304.4,499.5 273.2,506.1 242.6,507.9 213.4,504.7 186.5,496.3 162.7,483.1 143.0,465.2 127.8,443.3 117.5,418.2" fill="#e6dcc0"/><g stroke="#4a4230" stroke-width="1" stroke-linejoin="round"><polygon points="133.8,286.2 141.2,270.5 159.2,241.7 180.9,214.6 205.7,189.8 212.6,184.3 240.8,218.7 215.1,296.2 163.9,301.6" fill="#b3a684"/><polygon points="360.3,475.8 335.1,488.5 304.4,499.5 294.4,501.6 285.4,464.7 307.5,438.2 343.2,445.0" fill="#b3a684"/><polygon points="492.7,179.7 498.5,189.2 500.5,195.2 438.6,261.5 413.2,261.6 395.8,245.4 388.9,204.9" fill="#b3a684"/><polygon points="215.1,296.2 240.8,218.7 285.3,232.4 273.6,299.8 230.6,307.4" fill="#b9a98c"/><polygon points="480.9,355.5 480.0,357.3 462.7,384.5 442.2,410.2 420.8,431.8 390.6,401.4 421.6,345.9" fill="#c2b48f"/><polygon points="420.8,431.8 418.8,433.9 392.9,455.1 364.9,473.5 360.3,475.8 343.2,445.0 368.3,400.1 390.6,401.4" fill="#c2b48f"/><polygon points="386.9,202.0 388.9,204.9 395.8,245.4 337.2,270.5 293.7,231.0 334.1,182.5" fill="#c2b48f"/><polygon points="230.1,481.5 189.2,452.7 189.0,451.2 192.4,439.8 239.4,422.6 254.0,455.7" fill="#d8cdb0"/><polygon points="332.5,298.8 366.1,329.3 343.2,374.1 322.1,374.4 296.7,344.9 298.9,316.8" fill="#cdbf9e"/><polygon points="229.5,506.5 213.4,504.7 186.5,496.3 173.4,489.0 189.2,452.7 230.1,481.5" fill="#c2b48f"/><polygon points="343.2,445.0 307.5,438.2 296.9,407.4 322.1,374.4 343.2,374.1 368.3,400.1" fill="#c2b48f"/><polygon points="337.2,270.5 395.8,245.4 413.2,261.6 400.2,323.2 366.1,329.3 332.5,298.8" fill="#c2b48f"/><polygon points="192.4,439.8 189.0,451.2 131.4,448.6 127.8,443.3 117.5,418.2 114.5,402.1 167.3,392.4" fill="#b9a98c"/><polygon points="296.9,407.4 307.5,438.2 285.4,464.7 254.0,455.7 239.4,422.6 247.9,398.8" fill="#b3a684"/><polygon points="415.9,122.8 417.8,123.1 444.0,133.0 466.6,147.7 484.9,166.7 492.7,179.7 388.9,204.9 386.9,202.0" fill="#b3a684"/><polygon points="294.4,501.6 273.2,506.1 242.6,507.9 229.5,506.5 230.1,481.5 254.0,455.7 285.4,464.7" fill="#dfd6c0"/><polygon points="499.4,312.9 493.9,328.9 480.9,355.5 421.6,345.9 400.2,323.2 413.2,261.6 438.6,261.5" fill="#b9a98c"/><polygon points="421.6,345.9 390.6,401.4 368.3,400.1 343.2,374.1 366.1,329.3 400.2,323.2" fill="#c2b48f"/><polygon points="212.6,184.3 233.2,167.8 262.9,149.2 294.0,134.5 315.2,127.7 334.1,182.5 293.7,231.0 285.3,232.4 240.8,218.7" fill="#cdbf9e"/><polygon points="296.7,344.9 322.1,374.4 296.9,407.4 247.9,398.8 237.5,374.7 241.1,366.7" fill="#cdbf9e"/><polygon points="163.9,301.6 215.1,296.2 230.6,307.4 241.1,366.7 237.5,374.7 181.2,375.8" fill="#b3a684"/><polygon points="315.2,127.7 326.0,124.2 357.9,118.7 388.8,118.3 415.9,122.8 386.9,202.0 334.1,182.5" fill="#b9a98c"/><polygon points="230.6,307.4 273.6,299.8 298.9,316.8 296.7,344.9 241.1,366.7" fill="#cdbf9e"/><polygon points="112.4,390.5 112.4,361.1 117.4,330.8 127.1,300.4 133.8,286.2 163.9,301.6 181.2,375.8 167.3,392.4 114.5,402.1" fill="#b9a98c"/><polygon points="500.5,195.2 507.1,214.6 510.8,242.1 509.6,270.7 503.8,299.9 499.4,312.9 438.6,261.5" fill="#d8cdb0"/><polygon points="273.6,299.8 285.3,232.4 293.7,231.0 337.2,270.5 332.5,298.8 298.9,316.8" fill="#dfd6c0"/><polygon points="237.5,374.7 247.9,398.8 239.4,422.6 192.4,439.8 167.3,392.4 181.2,375.8" fill="#cdbf9e"/><polygon points="189.0,451.2 189.2,452.7 173.4,489.0 162.7,483.1 143.0,465.2 131.4,448.6" fill="#d8cdb0"/></g><g fill="#7d6c52" stroke="#4a3e2e" stroke-width="0.5" stroke-linejoin="round"><polygon points="238.4,219.9 236.0,227.2 228.0,224.6 230.4,217.3"/><polygon points="234.9,230.7 232.6,237.6 224.5,234.9 226.8,228.1"/><polygon points="210.1,214.4 211.2,211.0 226.8,216.2 225.7,219.5"/><polygon points="213.6,230.9 205.7,228.3 209.0,218.4 216.9,221.0"/><polygon points="221.1,233.9 217.1,232.6 220.8,221.7 224.7,223.1"/><polygon points="231.8,240.9 229.1,249.0 224.7,247.5 227.4,239.4"/><polygon points="221.7,246.3 215.7,244.4 218.3,236.6 224.3,238.6"/><polygon points="212.2,242.8 202.0,239.4 204.3,232.4 214.5,235.8"/><polygon points="223.5,207.7 220.2,210.4 211.8,207.6 212.9,204.3"/><polygon points="217.2,193.0 226.7,204.5 226.1,205.0 214.5,201.2"/><polygon points="229.2,207.1 236.0,215.5 223.9,211.4"/><polygon points="205.5,192.2 206.7,191.0 212.4,186.4 214.7,189.3 213.0,194.7"/><polygon points="197.2,201.3 203.2,195.3 211.2,197.9 208.9,205.2"/><polygon points="201.8,206.8 208.1,208.9 205.8,215.9 199.5,213.8"/><polygon points="188.0,210.0 193.7,204.2 198.6,205.8 196.3,212.7"/><polygon points="199.2,234.7 198.0,238.1 181.9,232.8 183.0,229.3"/><polygon points="202.7,224.8 200.6,231.0 191.9,228.2 193.9,221.9"/><polygon points="195.5,215.7 205.1,218.9 204.1,221.9 194.5,218.7"/><polygon points="188.0,213.7 192.3,215.1 188.4,227.0 184.1,225.6"/><polygon points="171.7,229.4 182.4,216.0 183.4,215.1 178.0,231.4"/><polygon points="190.6,239.6 196.2,241.5 193.3,250.0 187.8,248.2"/><polygon points="199.3,242.3 203.3,243.6 200.4,252.6 196.4,251.2"/><polygon points="199.4,255.5 198.5,258.0 185.8,253.7 186.6,251.3"/><polygon points="197.1,261.2 195.5,265.8 183.5,261.8 185.0,257.2"/><polygon points="184.2,249.0 183.2,251.8 172.6,248.3 173.5,245.4"/><polygon points="181.8,254.8 179.8,260.7 170.0,257.4 171.9,251.6"/><polygon points="177.4,235.6 187.0,238.7 184.7,245.5 175.1,242.3"/><polygon points="161.6,242.0 168.9,232.8 173.5,234.3 170.0,244.7"/><polygon points="155.1,252.2 159.3,245.6 168.6,248.7 166.3,255.9"/><polygon points="174.7,270.6 172.1,278.4 167.3,276.8 169.9,268.9"/><polygon points="164.2,275.5 157.7,273.4 160.1,265.9 166.7,268.1"/><polygon points="162.6,258.9 176.7,263.6 175.5,267.2 161.4,262.5"/><polygon points="144.3,268.9 148.1,262.8 155.8,267.7 154.3,272.2"/><polygon points="149.8,259.8 152.6,255.4 159.3,257.6 157.1,264.4"/><polygon points="163.2,278.8 171.0,281.4 169.3,286.6 160.7,283.8"/><polygon points="167.6,290.1 164.5,299.4 164.3,299.4 155.6,294.9 159.4,287.4"/><polygon points="146.7,273.5 152.8,275.5 149.8,284.5 143.7,282.5"/><polygon points="137.6,281.0 142.1,271.4 143.9,272.0 140.6,282.0"/><polygon points="135.9,285.4 136.7,283.7 149.0,287.8 147.8,291.5"/><polygon points="156.3,276.6 159.9,277.8 151.9,293.4 150.9,292.9"/><polygon points="185.5,295.4 184.9,297.2 169.2,298.9 171.9,290.9"/><polygon points="180.4,265.0 194.1,269.6 192.6,274.3 178.8,269.7"/><polygon points="181.2,289.6 173.0,286.9 175.6,279.1 183.8,281.8"/><polygon points="176.1,275.7 177.1,272.8 186.4,275.9 185.4,278.8"/><polygon points="191.8,278.0 187.2,291.9 184.6,291.0 189.2,277.1"/><polygon points="205.6,295.2 189.4,296.9 191.5,290.5"/><polygon points="196.3,274.5 197.4,271.0 207.1,274.2 205.9,277.6"/><polygon points="201.3,289.5 192.9,286.7 195.7,278.1 204.2,280.9"/><polygon points="216.4,285.9 213.8,293.7 205.2,290.9 207.8,283.1"/><polygon points="219.3,278.3 217.9,282.6 208.6,279.5 210.0,275.2"/><polygon points="206.2,244.6 212.7,246.8 210.7,252.9 204.2,250.7"/><polygon points="215.9,248.3 227.6,252.2 225.9,257.4 214.2,253.6"/><polygon points="222.8,267.0 220.2,274.9 212.7,272.5 215.4,264.5"/><polygon points="225.4,260.8 224.3,264.1 215.9,261.3 217.0,258.0"/><polygon points="209.1,271.1 199.0,267.8 201.2,261.3 211.2,264.7"/><polygon points="202.0,257.7 203.3,253.8 214.0,257.4 212.7,261.3"/><polygon points="300.3,498.8 295.6,499.8 293.5,491.2 298.2,490.0"/><polygon points="312.2,494.6 303.8,497.6 303.7,497.6 301.7,489.6 310.5,487.4"/><polygon points="292.8,488.0 290.6,478.9 295.5,477.7 297.7,486.8"/><polygon points="299.2,477.2 307.5,475.2 309.5,483.6 301.2,485.6"/><polygon points="327.6,489.1 321.9,491.1 318.2,480.7 325.1,479.0"/><polygon points="318.8,492.8 315.6,493.9 312.6,481.6 314.6,481.1"/><polygon points="312.2,478.3 311.2,474.1 323.4,471.1 324.4,475.3"/><polygon points="309.0,459.4 311.1,458.9 313.8,470.2 311.8,470.7"/><polygon points="314.3,458.7 320.0,457.4 322.5,467.5 316.8,468.9"/><polygon points="295.8,463.1 306.2,460.6 307.3,465.4 296.9,467.9"/><polygon points="308.4,468.4 309.1,471.2 298.1,473.9 297.4,471.1"/><polygon points="289.9,475.6 287.4,465.2 292.4,464.0 294.9,474.3"/><polygon points="345.6,481.5 334.5,487.1 331.0,488.3 330.3,485.2"/><polygon points="335.2,470.2 342.4,468.4 344.7,478.0 337.6,479.8"/><polygon points="329.7,482.1 327.2,471.8 331.6,470.7 334.1,481.0"/><polygon points="357.4,474.9 349.2,479.0 346.5,467.6 352.5,466.1"/><polygon points="338.5,453.2 344.4,451.8 350.2,462.1 341.2,464.3"/><polygon points="326.6,468.2 325.1,462.2 335.7,459.7 337.2,465.6"/><polygon points="323.9,459.0 323.2,456.2 334.7,453.4 335.3,456.2"/><polygon points="321.2,442.3 326.5,443.3 324.6,452.9 323.9,453.0"/><polygon points="329.6,444.4 342.0,446.7 342.7,448.0 328.2,451.5"/><polygon points="318.3,445.5 320.2,453.1 309.2,455.8 307.3,448.2"/><polygon points="305.3,443.1 308.1,439.8 318.2,441.7 318.2,441.8 305.7,444.8"/><polygon points="299.5,450.3 302.9,446.2 305.6,457.3 301.4,458.3"/><polygon points="290.1,461.3 297.0,452.9 298.6,459.2"/><polygon points="415.3,200.4 419.6,199.4 422.8,212.6 418.5,213.6"/><polygon points="423.0,198.3 433.3,195.8 434.4,200.1 424.0,202.7"/><polygon points="435.0,203.6 436.4,209.3 426.4,211.7 425.0,206.0"/><polygon points="437.3,212.9 439.5,222.0 433.4,223.5 431.1,214.4"/><polygon points="429.6,224.2 421.7,226.1 419.6,217.4 427.5,215.4"/><polygon points="416.4,221.1 417.8,227.1 407.0,229.7 405.6,223.7"/><polygon points="403.3,215.1 414.6,213.2 415.6,217.4 404.5,220.1"/><polygon points="395.3,233.0 394.4,227.3 402.4,226.0 403.7,231.0"/><polygon points="393.9,224.0 392.7,216.9 399.8,215.7 401.5,222.7"/><polygon points="402.5,203.7 411.5,201.5 413.5,209.5 403.8,211.2"/><polygon points="392.2,213.4 391.0,206.3 398.7,204.4 400.0,212.0"/><polygon points="400.5,247.0 397.6,244.4 396.3,236.4 402.2,235.0 404.8,246.0"/><polygon points="405.6,233.8 409.0,233.0 411.9,244.6 408.4,245.5"/><polygon points="415.2,259.7 414.0,259.7 403.8,250.2 412.4,248.1"/><polygon points="414.0,239.3 412.3,232.2 419.3,230.5 421.0,237.6"/><polygon points="416.3,248.9 414.7,242.6 421.9,240.8 423.4,247.2"/><polygon points="426.3,259.7 419.1,259.8 417.3,252.2 424.1,250.6"/><polygon points="436.7,259.8 430.0,259.8 428.3,252.9 434.7,251.4"/><polygon points="446.7,250.5 439.7,258.0 437.9,250.5 446.2,248.5"/><polygon points="427.8,249.0 426.8,245.0 443.8,240.9 444.8,244.9"/><polygon points="425.7,240.9 423.0,230.0 429.3,228.5 431.9,239.4"/><polygon points="433.3,227.6 440.2,225.9 442.8,236.7 435.9,238.4"/><polygon points="458.7,205.5 457.5,204.5 462.8,198.8 467.7,203.3"/><polygon points="465.5,196.7 472.6,189.2 475.4,200.8 471.1,201.9"/><polygon points="479.4,215.5 474.9,220.5 471.4,217.2 478.1,210.0"/><polygon points="469.1,214.9 466.2,212.1 472.5,205.3 476.5,204.3 477.1,206.4"/><polygon points="463.7,210.7 460.4,207.6 468.5,205.6"/><polygon points="449.8,197.8 444.1,192.5 448.3,191.5"/><polygon points="455.5,201.7 453.3,199.7 451.4,191.8 460.0,189.7 461.4,195.3"/><polygon points="463.0,188.2 471.0,186.2 464.3,193.4"/><polygon points="490.0,204.3 481.9,212.9 480.4,206.6"/><polygon points="497.8,194.2 498.0,194.7 493.3,199.7 480.2,202.9 479.2,198.8"/><polygon points="491.7,182.0 496.6,190.1 496.6,190.2 487.3,192.4 485.2,183.6"/><polygon points="483.7,193.6 477.8,195.0 475.6,185.7 481.4,184.3"/><polygon points="465.8,229.3 456.1,239.6 449.4,233.3"/><polygon points="454.0,242.7 449.3,247.7 446.4,235.6"/><polygon points="457.4,223.1 454.4,210.7 458.2,209.7 464.4,215.6"/><polygon points="472.4,222.7 471.3,223.9 459.0,226.9 467.4,218.0"/><polygon points="454.3,227.7 445.5,229.8 443.4,221.4 452.3,219.3"/><polygon points="442.1,217.9 441.0,213.5 450.8,211.1 451.9,215.6"/><polygon points="440.3,208.5 437.2,195.4 441.5,194.3 447.9,200.3"/><polygon points="451.0,202.3 455.7,206.7 444.3,209.5"/><polygon points="219.2,294.9 224.2,279.8 235.5,283.6 229.3,302.2"/><polygon points="241.7,285.0 249.4,287.6 244.6,302.0 235.5,303.6"/><polygon points="251.9,260.9 257.7,262.8 251.3,282.2 245.5,280.3"/><polygon points="226.7,273.1 232.6,255.5 245.4,259.7 239.6,277.3"/><polygon points="272.4,285.3 270.4,296.6 252.3,299.8 258.6,280.7"/><polygon points="263.0,264.6 276.1,268.9 274.3,279.0 259.9,274.2"/><polygon points="274.6,233.1 281.0,235.1 276.3,262.0 266.2,258.6"/><polygon points="240.7,230.2 243.1,223.1 267.7,230.7 265.2,238.3"/><polygon points="235.3,248.2 238.8,237.5 262.3,245.3 258.8,256.0"/><polygon points="397.0,394.5 404.3,381.4 409.4,384.3 402.1,397.4"/><polygon points="413.5,386.8 420.0,390.4 412.9,403.1 406.4,399.5"/><polygon points="406.8,414.2 393.6,401.0 394.8,398.7 410.6,407.5"/><polygon points="414.8,422.5 410.2,417.9 416.8,406.1 422.3,409.2"/><polygon points="433.4,415.6 420.8,428.4 418.4,425.9 426.4,411.6"/><polygon points="428.6,407.2 419.3,402.0 424.4,392.9 433.7,398.1"/><polygon points="444.7,403.7 440.6,408.8 437.1,412.4 432.4,409.8 437.9,399.9"/><polygon points="415.2,363.7 423.2,349.4 431.5,350.7 429.0,365.9"/><polygon points="425.9,387.8 415.9,382.2 422.3,370.7 428.5,371.7"/><polygon points="411.5,380.5 406.2,377.5 411.4,368.3 417.7,369.3"/><polygon points="439.1,395.2 430.9,390.6 432.9,378.1 441.7,379.5"/><polygon points="454.0,390.9 447.1,399.5 444.2,397.9 447.0,380.5 455.5,381.8"/><polygon points="458.1,365.7 456.4,376.4 443.9,374.4 445.7,363.7"/><polygon points="447.0,352.3 460.4,354.5 459.4,360.8 446.0,358.6"/><polygon points="433.7,372.8 437.2,351.2 442.1,351.9 438.6,373.6"/><polygon points="475.9,357.9 461.7,380.2 465.6,356.2"/><polygon points="347.9,442.8 352.8,433.9 366.4,441.4 361.4,450.3"/><polygon points="355.4,462.8 347.4,448.3 359.7,455.2"/><polygon points="367.8,459.5 364.7,454.8 371.2,443.2 375.5,445.6"/><polygon points="389.5,454.1 372.3,465.3 371.1,463.5 379.5,448.5"/><polygon points="368.6,468.5 363.8,471.7 361.2,473.0 357.9,467.0 362.4,459.0"/><polygon points="403.2,444.2 394.4,451.4 390.7,449.3 395.9,440.1"/><polygon points="416.6,431.8 406.3,440.3 399.1,436.3 407.0,422.2"/><polygon points="387.0,446.6 381.7,443.6 390.5,427.7 395.9,430.7"/><polygon points="377.1,440.8 370.9,437.4 379.6,421.8 385.8,425.2"/><polygon points="399.3,413.1 403.8,417.6 398.7,426.9 393.3,423.9"/><polygon points="382.1,417.0 389.4,403.9 389.4,403.9 395.7,410.2 389.5,421.2"/><polygon points="368.2,404.7 369.5,402.3 384.3,403.2 379.9,411.2"/><polygon points="366.1,434.8 355.4,428.8 360.5,419.5 371.3,425.5"/><polygon points="362.6,414.9 366.1,408.7 377.6,415.1 374.1,421.3"/><polygon points="369.4,253.4 360.0,257.5 353.8,243.2 363.3,239.1"/><polygon points="381.9,248.4 374.8,251.5 368.4,236.6 375.6,233.5"/><polygon points="390.0,227.4 392.7,243.7 386.9,246.2 380.6,231.4"/><polygon points="384.4,223.7 375.6,227.5 369.6,213.4 378.4,209.7"/><polygon points="386.7,205.0 387.1,205.7 390.0,222.4 389.2,222.7 382.4,206.9"/><polygon points="381.5,202.6 367.1,208.8 363.8,201.1 370.1,198.4"/><polygon points="370.5,229.8 351.3,238.0 349.0,232.6 368.2,224.4"/><polygon points="347.1,227.1 340.5,211.8 350.2,207.7 356.7,222.9"/><polygon points="354.9,204.8 359.4,202.9 366.5,219.6 362.1,221.5"/><polygon points="338.0,206.3 331.2,190.6 335.0,186.0 345.1,189.7 339.1,205.9"/><polygon points="350.3,191.2 363.3,196.0 345.8,203.5"/><polygon points="297.3,229.4 305.7,219.3 310.8,223.6"/><polygon points="309.6,216.5 318.6,205.7 329.2,214.5 314.7,220.7"/><polygon points="321.4,201.3 327.2,194.4 334.9,212.5"/><polygon points="326.5,251.7 343.1,233.3 347.2,242.8"/><polygon points="338.1,268.0 337.6,268.2 325.7,257.4 332.4,254.5"/><polygon points="354.4,259.8 342.3,265.0 337.4,253.5 349.5,248.3"/><polygon points="319.6,251.1 311.8,243.9 320.9,233.9 325.5,244.6"/><polygon points="307.9,240.4 299.9,233.1 317.3,225.7 318.5,228.7"/><polygon points="339.9,224.7 341.1,227.5 329.3,240.5 325.2,231.0"/><polygon points="321.4,223.3 336.9,216.6 338.5,220.3 323.0,226.9"/><polygon points="225.2,472.9 193.5,450.6 195.8,443.0 212.1,437.1"/><polygon points="243.7,442.8 249.1,454.8 233.6,471.5 225.5,449.4"/><polygon points="218.9,433.7 237.6,426.8 241.5,435.5 222.1,442.6"/><polygon points="354.4,346.0 347.9,358.6 339.0,354.0 345.4,341.4"/><polygon points="334.1,351.9 327.4,348.5 334.2,335.3 340.8,338.7"/><polygon points="323.2,346.8 319.3,344.8 326.5,330.8 330.3,332.8"/><polygon points="338.9,308.7 346.9,316.0 334.8,329.4 329.6,326.7"/><polygon points="356.1,323.8 362.8,329.9 357.0,341.2 349.2,337.2"/><polygon points="351.4,318.9 352.6,320.0 344.8,335.4 339.0,332.5"/><polygon points="325.6,322.2 324.9,323.7 307.8,315.0 318.7,309.2"/><polygon points="332.2,301.6 335.1,304.3 328.5,317.2 322.8,306.6"/><polygon points="301.7,335.5 299.8,334.6 301.1,318.3 302.2,317.6 309.0,321.1"/><polygon points="322.1,328.5 315.3,341.8 306.5,337.4 313.4,324.0"/><polygon points="307.7,354.2 299.1,344.2 299.4,339.5 311.9,345.9"/><polygon points="321.9,369.3 312.0,357.8 316.4,349.2 328.9,355.6"/><polygon points="345.3,363.6 341.4,371.2 327.6,371.4 334.4,358.1"/><polygon points="181.9,491.0 176.4,488.0 182.4,474.3 188.1,476.8"/><polygon points="188.8,494.7 187.3,494.3 185.8,493.4 192.4,478.5 198.4,481.1"/><polygon points="184.6,469.8 190.3,456.6 198.8,462.6 191.6,472.8"/><polygon points="202.9,464.8 207.7,468.2 201.1,477.6 195.6,475.2"/><polygon points="215.1,502.4 213.9,502.2 193.7,496.0 197.8,490.1"/><polygon points="227.5,504.1 225.2,503.9 219.7,500.0 227.8,488.5"/><polygon points="216.3,497.4 212.9,495.0 223.7,479.8 227.0,482.1"/><polygon points="209.0,491.3 201.4,485.9 211.3,471.9 218.9,477.3"/><polygon points="358.7,410.8 351.4,423.8 341.0,418.0 348.3,404.9"/><polygon points="335.6,415.3 327.7,410.9 335.3,397.3 343.2,401.7"/><polygon points="345.0,380.3 356.2,391.9 349.4,398.5 338.3,392.3"/><polygon points="360.4,394.9 365.8,400.4 362.2,406.7 353.3,401.8"/><polygon points="321.7,379.0 323.3,376.9 340.7,376.6 335.2,386.5"/><polygon points="305.7,399.4 308.5,395.7 323.9,407.4 323.0,409.0"/><polygon points="312.6,392.0 318.8,383.9 331.8,391.1 325.7,402.1"/><polygon points="306.2,425.3 300.2,407.9 303.3,403.9 314.6,410.3"/><polygon points="319.0,438.5 308.9,436.6 307.6,432.8 309.4,429.6 320.5,435.9"/><polygon points="312.6,426.0 319.8,413.1 329.1,418.3 321.9,431.1"/><polygon points="339.1,442.4 322.8,439.3 325.4,434.7"/><polygon points="329.0,431.0 334.3,421.4 348.4,429.3 343.0,438.9"/><polygon points="363.6,270.7 367.0,278.8 353.7,284.5 350.3,276.5"/><polygon points="346.2,268.8 360.8,262.6 362.4,266.2 347.8,272.4"/><polygon points="339.8,272.5 342.1,271.4 348.6,286.6 336.5,291.8"/><polygon points="362.7,309.9 352.8,314.2 349.2,310.9 358.6,300.5"/><polygon points="345.7,306.9 336.2,298.2 353.7,290.7 355.9,295.7"/><polygon points="373.7,294.0 377.7,303.2 367.0,307.8 363.1,298.5"/><polygon points="369.4,283.1 372.1,289.5 360.9,294.3 358.1,288.0"/><polygon points="369.0,326.7 366.7,327.1 356.1,317.5 363.6,314.3"/><polygon points="379.4,308.6 385.5,322.8 373.7,324.9 368.7,313.2"/><polygon points="408.1,271.6 405.3,284.6 386.8,280.7"/><polygon points="401.0,306.8 398.0,320.9 391.4,322.1 387.3,312.6"/><polygon points="386.8,306.6 385.5,307.1 376.2,285.4 377.3,285.0 390.8,287.8"/><polygon points="404.6,290.2 402.4,300.5 393.1,304.5 396.5,288.4"/><polygon points="407.3,259.5 410.5,262.5 410.0,264.8 393.8,271.7 391.5,266.3"/><polygon points="385.7,252.6 395.3,248.5 403.0,255.7 389.5,261.5"/><polygon points="365.2,261.3 380.9,254.6 383.4,260.5 367.8,267.2"/><polygon points="385.3,265.6 388.7,273.5 373.6,280.0 370.2,272.1"/><polygon points="188.2,440.2 186.1,447.2 157.1,445.9 157.5,437.9 187.7,439.3"/><polygon points="158.0,430.0 158.6,416.8 176.0,417.6 183.2,431.1"/><polygon points="157.9,409.7 158.5,397.1 165.7,395.8 173.4,410.4"/><polygon points="120.6,411.8 119.4,405.5 151.2,399.7 150.5,413.1"/><polygon points="127.6,436.6 120.2,418.3 128.4,418.7"/><polygon points="149.1,445.2 133.8,444.5 134.9,420.8 150.2,421.5"/><polygon points="267.0,404.1 275.8,405.6 274.5,412.9 265.7,411.4"/><polygon points="254.6,401.9 263.2,403.4 261.9,410.7 253.3,409.2"/><polygon points="245.9,408.5 248.8,400.3 251.5,400.8 250.1,409.2"/><polygon points="244.2,414.6 245.3,411.6 259.9,414.1 259.4,417.3"/><polygon points="244.3,429.7 241.1,422.6 242.8,417.8 246.9,418.5 244.9,429.8"/><polygon points="250.4,419.7 258.3,421.1 256.6,431.3 248.6,429.9"/><polygon points="263.6,414.9 273.8,416.7 272.6,423.3 262.5,421.5"/><polygon points="271.9,427.2 270.7,433.9 260.6,432.2 261.8,425.4"/><polygon points="256.2,454.3 255.4,454.1 250.6,443.1 258.8,439.5"/><polygon points="248.9,439.9 245.9,433.3 258.9,435.5"/><polygon points="261.9,442.6 263.0,436.3 270.4,437.6 269.3,443.9"/><polygon points="266.7,457.3 259.9,455.3 261.5,446.2 268.4,447.4"/><polygon points="303.9,434.3 305.1,437.8 298.6,445.6 292.7,440.6 298.8,433.4"/><polygon points="289.5,438.7 284.1,434.1 286.9,430.8 294.9,432.2"/><polygon points="281.7,432.9 276.2,428.3 284.4,429.7"/><polygon points="273.2,440.6 273.3,439.7 284.9,441.8 280.7,446.9"/><polygon points="270.6,458.6 270.2,458.5 272.7,444.5 278.4,449.2"/><polygon points="273.8,436.7 274.9,430.6 284.5,438.6"/><polygon points="285.3,462.5 284.9,463.0 273.7,459.8 277.2,455.7"/><polygon points="296.3,448.8 292.4,453.5 284.8,447.2 288.7,442.5"/><polygon points="290.2,456.3 287.2,460.0 279.3,453.5 282.4,449.8"/><polygon points="295.7,408.7 297.8,415.0 290.6,417.5 292.2,408.1"/><polygon points="298.5,418.8 302.2,429.6 289.5,427.3 290.5,421.5"/><polygon points="278.4,412.3 279.5,406.2 288.8,407.8 287.8,413.9"/><polygon points="285.2,426.7 276.4,425.2 278.0,416.2 286.8,417.7"/><polygon points="487.4,174.6 489.6,178.4 475.1,181.9 474.1,177.9"/><polygon points="479.2,163.9 483.1,168.0 484.9,171.0 473.3,173.8 471.4,165.8"/><polygon points="470.6,154.1 476.9,160.7 469.9,162.4 468.0,154.7"/><polygon points="472.0,183.3 469.6,183.9 466.9,172.6 469.2,172.0"/><polygon points="466.4,184.1 460.8,185.5 458.3,175.2 463.9,173.8"/><polygon points="457.4,171.6 456.2,166.5 466.8,163.9 468.0,169.0"/><polygon points="455.2,163.0 454.1,158.3 464.9,155.7 466.0,160.4"/><polygon points="447.9,188.6 439.7,190.6 437.8,182.9 446.1,180.9"/><polygon points="457.4,186.5 451.5,187.9 449.5,179.9 455.5,178.4"/><polygon points="441.2,161.4 450.7,159.1 451.9,164.0 442.4,166.3"/><polygon points="452.5,167.6 454.3,174.9 445.3,177.1 443.5,169.8"/><polygon points="437.0,179.0 433.3,163.8 437.6,162.7 441.4,178.0"/><polygon points="455.8,143.0 465.3,149.2 467.4,151.4 458.4,153.6"/><polygon points="453.3,148.3 454.9,154.5 446.3,156.6 444.8,150.4"/><polygon points="447.4,137.6 451.2,140.0 452.4,144.8 444.0,146.8 442.1,138.9"/><polygon points="442.5,157.2 432.3,159.7 430.6,152.7 440.8,150.2"/><polygon points="429.6,148.7 428.0,142.4 438.3,139.9 439.9,146.2"/><polygon points="423.7,126.9 429.6,129.1 426.3,137.8"/><polygon points="432.5,130.6 443.2,134.6 443.4,134.8 429.6,138.1"/><polygon points="408.2,193.4 406.2,185.2 411.7,183.8"/><polygon points="406.1,181.8 403.4,170.9 414.2,174.8 412.2,180.3"/><polygon points="433.5,181.9 435.8,191.4 430.1,192.8 426.8,179.5"/><polygon points="426.3,193.9 419.2,195.6 416.6,185.2 424.9,188.2"/><polygon points="415.9,196.8 409.6,198.3 409.5,198.0 413.5,187.0"/><polygon points="415.7,181.2 417.8,175.6 422.6,177.4 424.3,184.3"/><polygon points="406.5,198.9 401.0,200.3 398.6,190.3 405.0,192.7"/><polygon points="397.4,200.9 389.7,202.7 389.0,201.7 393.8,188.8 394.6,189.1"/><polygon points="395.2,185.2 399.7,172.8 403.5,188.2"/><polygon points="419.9,154.6 405.0,158.2 408.0,150.2"/><polygon points="417.0,124.7 417.4,124.7 420.3,125.8 421.8,132.3 413.5,134.3"/><polygon points="422.4,135.7 423.5,140.3 410.3,143.6 412.3,138.2"/><polygon points="424.3,144.1 426.4,152.8 411.4,147.3"/><polygon points="428.0,159.9 432.1,176.9 423.0,173.5"/><polygon points="412.7,170.2 402.0,166.2 403.3,162.5 410.5,160.8"/><polygon points="418.9,172.1 417.1,171.5 414.4,160.1 424.2,157.7"/><polygon points="268.3,473.7 264.9,485.4 259.7,486.7 257.2,476.4"/><polygon points="253.7,460.1 254.9,458.8 270.7,463.3 269.3,468.3 256.5,471.4"/><polygon points="276.2,465.2 282.9,467.1 285.9,479.5 271.1,483.1"/><polygon points="238.6,475.3 249.6,463.5 251.7,472.1"/><polygon points="240.3,479.8 252.2,476.9 254.7,487.4 242.9,490.3"/><polygon points="231.8,493.8 232.0,482.3 233.5,480.7 235.6,480.1 238.5,492.1"/><polygon points="239.6,505.8 231.4,504.9 231.5,497.7 237.3,496.3"/><polygon points="259.4,504.0 244.2,504.9 242.1,496.3 256.6,492.8"/><polygon points="278.6,501.8 272.8,503.0 265.5,503.5 262.5,491.5 275.4,488.4"/><polygon points="291.3,499.7 284.3,501.2 280.7,486.5 287.7,484.8"/><polygon points="416.4,266.9 416.7,265.8 437.0,265.7 450.0,276.7 440.8,287.5"/><polygon points="412.3,283.5 414.1,275.2 436.2,293.9 431.4,299.6"/><polygon points="408.4,325.8 404.8,321.9 411.0,292.6 425.9,305.2"/><polygon points="422.2,340.5 414.2,332.0 430.8,312.4 439.6,319.9"/><polygon points="440.3,345.4 429.7,343.6 445.9,324.4 453.0,330.3"/><polygon points="477.8,351.4 448.6,346.6 458.4,335.0"/><polygon points="486.4,337.1 482.0,346.1 467.7,334.1 474.0,326.6"/><polygon points="495.5,314.0 490.8,327.6 489.1,331.0 478.3,321.9 489.3,308.8"/><polygon points="449.5,289.3 456.3,281.2 472.4,294.9 465.6,302.9"/><polygon points="451.4,319.1 435.9,306.0 444.9,295.3 460.4,308.4"/><polygon points="462.9,328.9 457.4,324.3 478.0,299.9 483.4,304.6"/><polygon points="418.4,346.3 409.7,362.0 404.9,359.4 414.5,342.2"/><polygon points="400.6,357.1 386.3,349.2 389.0,344.3 403.3,352.3"/><polygon points="407.9,334.3 411.6,338.2 405.7,348.7 401.2,346.2"/><polygon points="391.5,340.2 399.4,326.0 404.4,331.3 397.6,343.6"/><polygon points="382.0,346.0 365.5,336.9 368.0,332.0 379.8,329.9 382.5,345.1"/><polygon points="384.5,328.0 394.1,326.3 386.6,339.8"/><polygon points="350.0,366.0 356.5,353.2 362.4,356.2 355.8,369.2"/><polygon points="366.8,359.1 376.6,364.0 369.7,376.4 360.6,371.3"/><polygon points="359.6,348.7 362.9,342.3 382.4,353.2 379.3,358.8"/><polygon points="362.2,389.6 346.7,373.5 348.1,370.9 366.8,381.4"/><polygon points="376.6,398.8 369.1,398.3 365.1,394.2 367.0,390.7 377.8,396.7"/><polygon points="370.2,387.2 377.0,374.9 386.0,379.9 379.1,392.2"/><polygon points="396.5,385.5 389.1,398.7 381.9,398.3 390.8,382.3"/><polygon points="406.4,366.7 398.8,380.3 389.1,374.9 396.7,361.2"/><polygon points="383.9,372.8 379.2,370.2 387.5,355.3 392.2,357.9"/><polygon points="293.7,190.2 288.3,185.7 297.7,174.5 303.0,178.9"/><polygon points="300.3,170.8 306.6,163.3 312.5,168.2 306.2,175.7"/><polygon points="313.5,186.1 307.5,181.1 315.7,171.3 321.7,176.3"/><polygon points="330.4,183.4 322.1,193.5 316.9,189.2 325.3,179.2"/><polygon points="318.0,197.0 311.8,204.4 298.3,193.2 304.5,185.8"/><polygon points="319.7,148.2 323.6,159.5 313.3,163.0 309.7,160.1"/><polygon points="325.4,163.7 330.1,177.4 317.1,166.6"/><polygon points="312.1,149.5 305.1,157.8 296.9,151.0 303.9,142.6"/><polygon points="313.5,130.6 313.8,130.5 318.1,142.8 315.4,146.0 306.7,138.8"/><polygon points="285.5,141.4 295.0,136.9 304.6,133.9 293.0,147.7"/><polygon points="292.2,153.4 302.2,161.7 297.5,167.3 287.5,159.0"/><polygon points="293.6,171.0 284.5,181.8 275.6,174.4 284.7,163.5"/><polygon points="271.2,148.1 280.4,143.8 288.3,150.4 282.4,157.5"/><polygon points="270.9,154.7 279.0,161.5 271.0,171.0 262.9,164.2"/><polygon points="253.6,157.4 263.8,151.0 266.2,149.9 267.7,151.2 258.9,161.8"/><polygon points="259.2,168.2 268.0,175.6 260.2,185.0 251.4,177.6"/><polygon points="238.7,167.4 250.1,160.3 255.3,164.6 247.2,174.4"/><polygon points="250.1,183.9 256.6,189.2 247.2,200.5 238.6,193.3"/><polygon points="244.1,204.8 238.3,211.8 229.1,200.6 234.1,196.5"/><polygon points="230.4,173.1 234.3,170.1 246.3,180.2 240.3,185.1"/><polygon points="217.0,184.8 226.6,177.1 235.6,188.1 226.1,195.9"/><polygon points="250.0,218.8 242.3,216.4 241.7,215.6 251.8,203.5 258.3,208.8"/><polygon points="260.9,222.8 254.3,220.8 262.2,211.3 267.1,215.4"/><polygon points="283.8,229.6 265.4,224.0 270.2,218.3"/><polygon points="272.2,177.9 279.5,184.0 275.1,189.3 267.8,183.2"/><polygon points="271.6,192.4 261.4,204.5 255.3,199.4 265.4,187.3"/><polygon points="282.5,187.2 294.1,196.8 289.7,202.0 278.2,192.4"/><polygon points="287.2,205.7 284.6,208.8 272.5,198.7 275.1,195.6"/><polygon points="281.3,212.0 276.7,217.5 265.3,208.0 269.9,202.5"/><polygon points="295.9,224.7 292.4,228.8 290.4,229.2 280.4,220.8 284.8,215.4"/><polygon points="297.9,201.0 307.8,209.2 298.8,219.9 288.9,211.7"/><polygon points="251.8,364.9 258.2,362.4 262.9,374.5 256.5,377.0"/><polygon points="243.3,382.0 240.2,374.7 242.9,368.6 247.5,366.8 252.1,378.5"/><polygon points="257.8,397.7 249.8,396.3 245.7,386.6 255.5,382.8 260.9,396.5"/><polygon points="259.9,380.5 264.6,378.7 270.3,393.4 265.7,395.2"/><polygon points="274.5,402.0 263.4,400.0 272.4,396.5"/><polygon points="274.7,392.9 272.7,387.7 284.5,383.1 286.5,388.3"/><polygon points="292.2,404.1 278.6,401.7 276.7,396.9 287.8,392.6"/><polygon points="299.9,399.4 297.1,403.0 288.8,381.9 292.5,380.5"/><polygon points="316.3,370.4 319.8,374.5 316.0,379.4 308.3,373.5"/><polygon points="312.4,382.4 303.4,394.2 297.5,378.9 304.3,376.2"/><polygon points="296.1,347.4 299.4,351.2 290.3,359.0 287.1,350.9"/><polygon points="301.9,355.7 311.7,367.0 296.8,372.8 293.1,363.3"/><polygon points="292.0,375.4 284.3,378.4 279.7,366.5 287.3,363.5"/><polygon points="279.7,380.1 271.5,383.3 266.9,371.6 275.1,368.4"/><polygon points="265.2,366.5 263.1,361.1 282.9,353.4 285.0,358.8"/><polygon points="209.8,350.4 215.2,349.1 218.0,361.3 212.6,362.6"/><polygon points="201.0,365.2 200.7,352.6 205.8,351.5 208.5,363.4"/><polygon points="220.9,373.1 211.3,373.3 211.2,366.9 219.0,365.1"/><polygon points="207.9,373.7 200.5,373.9 200.4,369.0 207.8,367.3"/><polygon points="179.2,358.5 178.9,357.5 196.7,353.4 196.8,358.2"/><polygon points="185.3,374.0 182.5,374.0 179.8,362.2 185.1,362.1"/><polygon points="196.8,373.3 189.2,373.4 189.0,362.4 196.6,362.3"/><polygon points="233.7,372.6 225.0,372.8 223.0,364.1 231.2,362.2"/><polygon points="238.4,359.8 239.6,366.5 237.2,371.8 234.6,360.7"/><polygon points="228.1,358.6 222.0,360.0 219.2,348.3 225.4,346.9"/><polygon points="235.2,344.5 237.3,356.5 232.1,357.7 229.3,345.8"/><polygon points="222.0,343.8 214.4,345.6 213.0,339.5 220.6,337.7"/><polygon points="212.2,336.3 210.9,330.7 218.6,328.9 219.9,334.5"/><polygon points="232.0,326.1 233.2,332.6 223.4,334.3 222.1,328.4"/><polygon points="234.0,336.1 234.8,340.8 225.3,343.0 224.1,337.8"/><polygon points="229.7,314.7 231.0,322.1 220.5,324.6 218.8,317.2"/><polygon points="228.9,308.1 229.2,308.3 229.7,310.9 217.3,313.8 216.7,310.9"/><polygon points="216.3,325.6 210.6,326.9 207.5,313.7 213.2,312.4"/><polygon points="218.0,299.9 226.2,305.8 219.7,307.3"/><polygon points="216.5,305.5 217.1,307.8 205.9,310.4 205.4,308.1"/><polygon points="203.8,299.2 214.4,298.1 215.4,302.5 205.1,304.9"/><polygon points="206.5,327.2 207.9,333.1 198.1,335.4 196.7,329.5"/><polygon points="205.6,321.3 206.3,324.0 195.5,326.5 194.9,323.8"/><polygon points="194.6,336.3 190.3,337.3 187.7,325.9 191.9,324.9"/><polygon points="208.7,336.7 210.9,346.2 204.8,347.6 202.6,338.1"/><polygon points="201.0,348.3 193.6,350.1 191.4,340.9 198.9,339.1"/><polygon points="189.5,350.9 178.2,353.5 176.6,347.0 188.0,344.4"/><polygon points="175.7,342.9 174.1,336.0 185.4,333.4 187.0,340.2"/><polygon points="172.7,332.4 172.0,329.4 184.4,326.5 185.1,329.6"/><polygon points="169.5,318.0 168.1,312.1 176.7,310.1 178.0,316.0"/><polygon points="180.1,324.2 171.3,326.2 170.2,321.3 178.9,319.2"/><polygon points="185.4,308.3 186.9,322.3 183.5,323.1 180.3,309.5"/><polygon points="166.5,303.5 184.5,301.6 184.8,304.2 167.6,308.2"/><polygon points="203.2,313.9 204.2,318.1 190.8,321.3 190.1,315.3"/><polygon points="198.8,299.3 200.5,299.1 203.1,310.4 200.0,310.8"/><polygon points="188.6,301.0 195.5,300.3 196.5,310.5 189.7,311.2"/><polygon points="403.1,124.1 411.4,125.4 403.6,146.8 395.8,144.0"/><polygon points="384.4,121.9 388.5,121.8 396.2,123.1 389.5,141.5 378.6,137.5"/><polygon points="400.7,153.3 393.9,171.9 381.7,167.4 388.5,148.9"/><polygon points="375.1,165.8 368.6,163.5 376.0,143.4 382.4,145.8"/><polygon points="352.7,122.7 358.2,121.7 377.7,121.5 374.3,130.6"/><polygon points="352.1,129.5 371.5,136.6 367.8,146.8 348.4,139.7"/><polygon points="365.7,153.3 362.9,161.1 342.9,153.8 345.7,145.9"/><polygon points="320.6,130.4 327.0,128.3 340.7,126.0 344.6,127.4 336.2,150.3 326.2,146.6"/><polygon points="336.4,179.3 328.1,155.2 343.2,160.8"/><polygon points="391.0,179.1 384.5,196.9 370.1,191.5 376.6,173.8"/><polygon points="362.4,188.5 343.5,181.5 349.8,164.2 368.8,171.2"/><polygon points="263.4,355.5 256.2,358.3 252.0,347.7 261.7,346.0"/><polygon points="251.7,359.9 243.0,363.3 240.6,349.9 247.3,348.7"/><polygon points="240.2,344.4 238.9,337.2 258.8,333.7 260.1,340.9"/><polygon points="286.2,345.8 268.3,352.8 266.5,342.9 285.1,339.6"/><polygon points="265.1,337.5 264.2,332.3 283.7,328.9 284.6,334.0"/><polygon points="295.8,326.5 294.5,343.3 291.4,344.5 288.5,327.8"/><polygon points="275.6,304.4 288.1,312.9 280.6,324.0 279.1,324.3"/><polygon points="292.4,314.6 297.0,317.7 296.7,322.1 286.1,324.0"/><polygon points="248.2,317.2 250.3,329.2 237.8,331.4 235.7,319.4"/><polygon points="233.1,309.1 247.1,306.7 248.1,312.1 234.1,314.6"/><polygon points="271.7,315.8 273.3,325.0 256.1,328.0 254.5,318.8"/><polygon points="252.0,306.4 269.8,303.3 271.0,310.0 253.2,313.2"/><polygon points="161.2,308.4 165.4,326.7 147.4,330.8 143.2,312.6"/><polygon points="137.0,291.2 157.8,301.8 140.4,305.9"/><polygon points="126.6,308.7 129.0,301.1 132.4,293.9 135.4,306.7"/><polygon points="120.5,337.3 121.4,331.8 126.7,315.0 134.8,313.1 139.4,332.8"/><polygon points="116.9,354.1 118.3,345.3 137.7,340.8 139.6,348.8"/><polygon points="124.5,359.6 140.6,355.8 144.3,371.4 128.2,375.1"/><polygon points="114.9,379.6 114.9,361.3 115.1,360.4 118.1,359.7 122.3,377.9"/><polygon points="138.8,379.4 146.8,377.5 150.3,392.7 141.6,394.4"/><polygon points="116.0,390.2 116.0,385.6 132.8,381.7 135.2,394.7 117.4,397.9"/><polygon points="174.8,378.9 165.8,389.7 155.9,391.6 154.0,383.7"/><polygon points="172.5,356.9 175.8,371.3 153.7,376.5 150.3,362.0"/><polygon points="145.2,340.0 167.3,334.8 170.6,348.7 148.4,353.8"/><polygon points="503.7,278.6 499.8,298.8 497.4,305.7 475.4,287.2 491.9,267.6"/><polygon points="469.0,281.7 459.8,274.0 477.0,253.7 485.8,261.8"/><polygon points="453.4,268.6 444.6,261.2 463.5,241.0 470.9,247.9"/><polygon points="504.4,226.0 506.5,242.2 505.5,268.7 483.5,248.3"/><polygon points="498.8,203.2 502.9,215.3 477.4,242.5 469.2,234.9"/><polygon points="296.6,265.2 313.2,268.1 311.7,276.4 295.2,273.6"/><polygon points="310.8,282.1 309.4,290.1 292.8,287.3 294.2,279.2"/><polygon points="279.5,284.6 283.2,263.2 290.7,264.5 287.0,285.9"/><polygon points="289.8,292.2 294.9,293.1 292.1,309.2 282.7,302.8"/><polygon points="275.7,299.0 277.4,289.4 285.4,290.8 278.6,300.9"/><polygon points="300.2,294.3 308.4,295.7 306.0,309.8 299.0,313.5 297.1,312.2"/><polygon points="325.6,300.1 311.3,307.8 313.0,298.0"/><polygon points="331.6,286.2 330.0,295.8 314.7,293.2 316.4,283.6"/><polygon points="318.8,269.0 334.2,271.6 332.7,280.6 317.3,277.9"/><polygon points="284.2,257.0 286.1,245.9 304.0,249.0 295.0,258.9"/><polygon points="286.3,240.4 287.3,234.5 292.9,233.6 303.7,243.4"/><polygon points="310.8,250.6 325.8,264.2 302.1,260.2"/><polygon points="189.9,378.6 203.7,378.3 203.9,389.6 190.1,389.9"/><polygon points="204.4,395.1 204.6,402.6 189.9,402.8 189.7,395.4"/><polygon points="174.8,386.3 182.1,377.6 185.0,377.6 185.2,386.2"/><polygon points="175.9,402.9 170.6,392.8 172.1,391.0 184.4,390.8 184.6,402.7"/><polygon points="205.8,433.0 193.2,437.6 192.0,435.2 205.1,428.3 205.8,429.6"/><polygon points="190.7,430.6 185.3,420.3 196.5,414.4 202.0,424.7"/><polygon points="200.0,411.2 205.5,408.3 205.8,422.1"/><polygon points="182.4,415.8 178.3,408.0 198.0,407.6"/><polygon points="225.3,424.5 210.6,429.9 210.4,416.2 225.1,415.9"/><polygon points="240.2,414.5 237.9,421.1 230.3,423.9 230.1,414.7"/><polygon points="227.3,409.8 210.2,410.1 210.1,400.9 227.1,400.6"/><polygon points="244.9,399.8 241.3,410.1 232.8,410.2 232.6,400.0"/><polygon points="235.9,377.3 243.5,394.8 234.4,395.0 234.1,377.3"/><polygon points="229.5,395.2 224.5,395.3 224.2,377.4 229.2,377.3"/><polygon points="219.2,394.8 209.9,395.0 209.6,378.2 218.9,378.0"/><polygon points="153.9,470.6 145.5,463.0 137.9,452.1 154.7,452.9"/><polygon points="183.5,455.1 171.4,483.1 165.2,479.6 161.1,475.9 162.1,454.2"/></g><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M192.3,251.5 L227.9,257.4 L251.7,265.7" stroke="#6c604a" stroke-width="3.4"/><path d="M251.7,265.7 L279.5,266.1 L303.2,277.0" stroke="#6c604a" stroke-width="3.4"/><path d="M251.7,265.7 L252.1,303.6 L263.7,330.1" stroke="#6c604a" stroke-width="3.4"/><path d="M263.7,330.1 L268.9,355.8 L280.0,377.8" stroke="#6c604a" stroke-width="3.4"/><path d="M280.0,377.8 L272.4,403.1 L272.9,430.3" stroke="#6c604a" stroke-width="3.4"/><path d="M272.9,430.3 L246.7,439.1 L223.7,450.8" stroke="#6c604a" stroke-width="3.4"/><path d="M223.7,450.8 L209.6,467.1 L203.0,483.2" stroke="#6c604a" stroke-width="3.4"/><path d="M203.0,483.2 L181.3,470.8 L163.3,463.8" stroke="#6c604a" stroke-width="3.4"/><path d="M163.3,463.8 L160.2,449.9 L153.0,423.9" stroke="#6c604a" stroke-width="3.4"/><path d="M223.7,450.8 L215.9,431.2 L208.6,402.5" stroke="#6c604a" stroke-width="3.4"/><path d="M223.7,450.8 L242.0,468.6 L260.9,485.1" stroke="#6c604a" stroke-width="3.4"/><path d="M280.0,377.8 L309.5,390.9 L331.5,409.0" stroke="#6c604a" stroke-width="3.4"/><path d="M331.5,409.0 L355.7,422.6 L378.3,435.1" stroke="#6c604a" stroke-width="3.4"/><path d="M263.7,330.1 L235.9,337.0 L203.8,336.8" stroke="#6c604a" stroke-width="3.4"/><path d="M272.9,430.3 L296.5,451.5 L319.3,468.9" stroke="#6c604a" stroke-width="3.4"/><path d="M203.8,336.8 L172.5,338.7 L143.9,349.9" stroke="#6c604a" stroke-width="3.4"/><path d="M280.0,377.8 L309.4,359.7 L329.2,337.4" stroke="#6c604a" stroke-width="3.4"/><path d="M329.2,337.4 L354.6,351.7 L382.1,361.5" stroke="#6c604a" stroke-width="3.4"/><path d="M382.1,361.5 L406.1,373.6 L432.1,383.6" stroke="#6c604a" stroke-width="3.4"/><path d="M303.2,277.0 L315.4,250.8 L347.7,226.8" stroke="#6c604a" stroke-width="3.4"/><path d="M329.2,337.4 L349.3,314.1 L375.1,288.2" stroke="#6c604a" stroke-width="3.4"/><path d="M432.1,383.6 L451.2,350.7 L446.2,311.2" stroke="#6c604a" stroke-width="3.4"/><path d="M446.2,311.2 L469.0,287.2 L484.1,255.9" stroke="#6c604a" stroke-width="3.4"/><path d="M484.1,255.9 L469.5,228.4 L439.5,219.8" stroke="#6c604a" stroke-width="3.4"/><path d="M439.5,219.8 L440.8,192.3 L434.9,166.6" stroke="#6c604a" stroke-width="3.4"/><path d="M434.9,166.6 L401.4,162.4 L366.0,153.1" stroke="#6c604a" stroke-width="3.4"/><path d="M347.7,226.8 L313.9,206.8 L279.1,182.6" stroke="#6c604a" stroke-width="3.4"/><path d="M192.3,251.5 L148.8,293.9 L143.9,349.9" stroke="#6c604a" stroke-width="3.4"/><path d="M319.3,468.9 L289.9,483.2 L260.9,485.1" stroke="#6c604a" stroke-width="3.4"/><path d="M439.5,219.8 L392.4,225.1 L347.7,226.8" stroke="#6c604a" stroke-width="3.4"/><path d="M439.5,219.8 L404.5,253.5 L375.1,288.2" stroke="#6c604a" stroke-width="3.4"/><path d="M439.5,219.8 L425.9,261.6 L446.2,311.2" stroke="#6c604a" stroke-width="3.4"/><path d="M251.7,265.7 L263.0,225.5 L279.1,182.6" stroke="#6c604a" stroke-width="3.4"/><path d="M347.7,226.8 L366.5,257.9 L375.1,288.2" stroke="#6c604a" stroke-width="3.4"/><path d="M347.7,226.8 L387.9,203.5 L434.9,166.6" stroke="#6c604a" stroke-width="3.4"/><path d="M329.2,337.4 L315.7,307.8 L303.2,277.0" stroke="#6c604a" stroke-width="3.4"/><path d="M203.0,483.2 L229.8,494.0 L260.9,485.1" stroke="#6c604a" stroke-width="3.4"/><path d="M329.2,337.4 L127.1,300.4" stroke="#6c604a" stroke-width="4.8"/><path d="M329.2,337.4 L466.6,147.7" stroke="#6c604a" stroke-width="4.8"/><path d="M329.2,337.4 L364.9,473.5" stroke="#6c604a" stroke-width="4.8"/><path d="M192.3,251.5 L227.9,257.4 L251.7,265.7" stroke="#e4d9bc" stroke-width="1.8"/><path d="M251.7,265.7 L279.5,266.1 L303.2,277.0" stroke="#e4d9bc" stroke-width="1.8"/><path d="M251.7,265.7 L252.1,303.6 L263.7,330.1" stroke="#e4d9bc" stroke-width="1.8"/><path d="M263.7,330.1 L268.9,355.8 L280.0,377.8" stroke="#e4d9bc" stroke-width="1.8"/><path d="M280.0,377.8 L272.4,403.1 L272.9,430.3" stroke="#e4d9bc" stroke-width="1.8"/><path d="M272.9,430.3 L246.7,439.1 L223.7,450.8" stroke="#e4d9bc" stroke-width="1.8"/><path d="M223.7,450.8 L209.6,467.1 L203.0,483.2" stroke="#e4d9bc" stroke-width="1.8"/><path d="M203.0,483.2 L181.3,470.8 L163.3,463.8" stroke="#e4d9bc" stroke-width="1.8"/><path d="M163.3,463.8 L160.2,449.9 L153.0,423.9" stroke="#e4d9bc" stroke-width="1.8"/><path d="M223.7,450.8 L215.9,431.2 L208.6,402.5" stroke="#e4d9bc" stroke-width="1.8"/><path d="M223.7,450.8 L242.0,468.6 L260.9,485.1" stroke="#e4d9bc" stroke-width="1.8"/><path d="M280.0,377.8 L309.5,390.9 L331.5,409.0" stroke="#e4d9bc" stroke-width="1.8"/><path d="M331.5,409.0 L355.7,422.6 L378.3,435.1" stroke="#e4d9bc" stroke-width="1.8"/><path d="M263.7,330.1 L235.9,337.0 L203.8,336.8" stroke="#e4d9bc" stroke-width="1.8"/><path d="M272.9,430.3 L296.5,451.5 L319.3,468.9" stroke="#e4d9bc" stroke-width="1.8"/><path d="M203.8,336.8 L172.5,338.7 L143.9,349.9" stroke="#e4d9bc" stroke-width="1.8"/><path d="M280.0,377.8 L309.4,359.7 L329.2,337.4" stroke="#e4d9bc" stroke-width="1.8"/><path d="M329.2,337.4 L354.6,351.7 L382.1,361.5" stroke="#e4d9bc" stroke-width="1.8"/><path d="M382.1,361.5 L406.1,373.6 L432.1,383.6" stroke="#e4d9bc" stroke-width="1.8"/><path d="M303.2,277.0 L315.4,250.8 L347.7,226.8" stroke="#e4d9bc" stroke-width="1.8"/><path d="M329.2,337.4 L349.3,314.1 L375.1,288.2" stroke="#e4d9bc" stroke-width="1.8"/><path d="M432.1,383.6 L451.2,350.7 L446.2,311.2" stroke="#e4d9bc" stroke-width="1.8"/><path d="M446.2,311.2 L469.0,287.2 L484.1,255.9" stroke="#e4d9bc" stroke-width="1.8"/><path d="M484.1,255.9 L469.5,228.4 L439.5,219.8" stroke="#e4d9bc" stroke-width="1.8"/><path d="M439.5,219.8 L440.8,192.3 L434.9,166.6" stroke="#e4d9bc" stroke-width="1.8"/><path d="M434.9,166.6 L401.4,162.4 L366.0,153.1" stroke="#e4d9bc" stroke-width="1.8"/><path d="M347.7,226.8 L313.9,206.8 L279.1,182.6" stroke="#e4d9bc" stroke-width="1.8"/><path d="M192.3,251.5 L148.8,293.9 L143.9,349.9" stroke="#e4d9bc" stroke-width="1.8"/><path d="M319.3,468.9 L289.9,483.2 L260.9,485.1" stroke="#e4d9bc" stroke-width="1.8"/><path d="M439.5,219.8 L392.4,225.1 L347.7,226.8" stroke="#e4d9bc" stroke-width="1.8"/><path d="M439.5,219.8 L404.5,253.5 L375.1,288.2" stroke="#e4d9bc" stroke-width="1.8"/><path d="M439.5,219.8 L425.9,261.6 L446.2,311.2" stroke="#e4d9bc" stroke-width="1.8"/><path d="M251.7,265.7 L263.0,225.5 L279.1,182.6" stroke="#e4d9bc" stroke-width="1.8"/><path d="M347.7,226.8 L366.5,257.9 L375.1,288.2" stroke="#e4d9bc" stroke-width="1.8"/><path d="M347.7,226.8 L387.9,203.5 L434.9,166.6" stroke="#e4d9bc" stroke-width="1.8"/><path d="M329.2,337.4 L315.7,307.8 L303.2,277.0" stroke="#e4d9bc" stroke-width="1.8"/><path d="M203.0,483.2 L229.8,494.0 L260.9,485.1" stroke="#e4d9bc" stroke-width="1.8"/><path d="M329.2,337.4 L127.1,300.4" stroke="#e4d9bc" stroke-width="3.2"/><path d="M329.2,337.4 L466.6,147.7" stroke="#e4d9bc" stroke-width="3.2"/><path d="M329.2,337.4 L364.9,473.5" stroke="#e4d9bc" stroke-width="3.2"/></g><path d="M112.4,390.5 L112.4,361.1 M112.4,361.1 L117.4,330.8 M117.4,330.8 L124.3,309.1 M131.0,292.2 L141.2,270.5 M141.2,270.5 L159.2,241.7 M159.2,241.7 L180.9,214.6 M180.9,214.6 L205.7,189.8 M205.7,189.8 L233.2,167.8 M233.2,167.8 L262.9,149.2 M262.9,149.2 L294.0,134.5 M294.0,134.5 L326.0,124.2 M326.0,124.2 L357.9,118.7 M357.9,118.7 L388.8,118.3 M388.8,118.3 L417.8,123.1 M417.8,123.1 L444.0,133.0 M444.0,133.0 L458.9,142.8 M472.9,154.3 L484.9,166.7 M484.9,166.7 L498.5,189.2 M498.5,189.2 L507.1,214.6 M507.1,214.6 L510.8,242.1 M510.8,242.1 L509.6,270.7 M509.6,270.7 L503.8,299.9 M503.8,299.9 L493.9,328.9 M493.9,328.9 L480.0,357.3 M480.0,357.3 L462.7,384.5 M462.7,384.5 L442.2,410.2 M442.2,410.2 L418.8,433.9 M418.8,433.9 L392.9,455.1 M392.9,455.1 L372.5,468.5 M356.7,477.6 L335.1,488.5 M335.1,488.5 L304.4,499.5 M304.4,499.5 L273.2,506.1 M273.2,506.1 L242.6,507.9 M242.6,507.9 L213.4,504.7 M213.4,504.7 L186.5,496.3 M186.5,496.3 L162.7,483.1 M162.7,483.1 L143.0,465.2 M143.0,465.2 L127.8,443.3 M127.8,443.3 L117.5,418.2 M117.5,418.2 L112.4,390.5" fill="none" stroke="#3c3628" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><g fill="#3c3628" stroke="#1c1810" stroke-width="0.6"><circle cx="112.4" cy="390.5" r="2.6"/><circle cx="112.4" cy="361.1" r="2.6"/><circle cx="117.4" cy="330.8" r="2.6"/><circle cx="127.1" cy="300.4" r="2.6"/><circle cx="141.2" cy="270.5" r="2.6"/><circle cx="159.2" cy="241.7" r="2.6"/><circle cx="180.9" cy="214.6" r="2.6"/><circle cx="205.7" cy="189.8" r="2.6"/><circle cx="233.2" cy="167.8" r="2.6"/><circle cx="262.9" cy="149.2" r="2.6"/><circle cx="294.0" cy="134.5" r="2.6"/><circle cx="326.0" cy="124.2" r="2.6"/><circle cx="357.9" cy="118.7" r="2.6"/><circle cx="388.8" cy="118.3" r="2.6"/><circle cx="417.8" cy="123.1" r="2.6"/><circle cx="444.0" cy="133.0" r="2.6"/><circle cx="466.6" cy="147.7" r="2.6"/><circle cx="484.9" cy="166.7" r="2.6"/><circle cx="498.5" cy="189.2" r="2.6"/><circle cx="507.1" cy="214.6" r="2.6"/><circle cx="510.8" cy="242.1" r="2.6"/><circle cx="509.6" cy="270.7" r="2.6"/><circle cx="503.8" cy="299.9" r="2.6"/><circle cx="493.9" cy="328.9" r="2.6"/><circle cx="480.0" cy="357.3" r="2.6"/><circle cx="462.7" cy="384.5" r="2.6"/><circle cx="442.2" cy="410.2" r="2.6"/><circle cx="418.8" cy="433.9" r="2.6"/><circle cx="392.9" cy="455.1" r="2.6"/><circle cx="364.9" cy="473.5" r="2.6"/><circle cx="335.1" cy="488.5" r="2.6"/><circle cx="304.4" cy="499.5" r="2.6"/><circle cx="273.2" cy="506.1" r="2.6"/><circle cx="242.6" cy="507.9" r="2.6"/><circle cx="213.4" cy="504.7" r="2.6"/><circle cx="186.5" cy="496.3" r="2.6"/><circle cx="162.7" cy="483.1" r="2.6"/><circle cx="143.0" cy="465.2" r="2.6"/><circle cx="127.8" cy="443.3" r="2.6"/><circle cx="117.5" cy="418.2" r="2.6"/></g><g fill="#3c3628" stroke="#1c1810" stroke-width="0.8"><rect x="124.1" y="297.4" width="6.0" height="6.0"/><rect x="463.6" y="144.7" width="6.0" height="6.0"/><rect x="361.9" y="470.5" width="6.0" height="6.0"/></g><polygon points="329.2,330.9 330.8,335.2 335.4,335.4 331.8,338.3 333.1,342.7 329.2,340.1 325.4,342.7 326.7,338.3 323.1,335.4 327.6,335.2" fill="#3c3628" stroke="#f7f3ea" stroke-width="1.4" stroke-linejoin="round" paint-order="stroke"/><g font-family="Georgia, serif" font-size="8" text-anchor="middle"><text x="192.3" y="254.5" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Slums</text><text x="319.3" y="471.9" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Slums</text><text x="439.5" y="222.8" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Slums</text><text x="251.7" y="268.7" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Garrison</text><text x="432.1" y="386.6" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="378.3" y="438.1" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="347.7" y="229.8" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="223.7" y="453.8" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="329.2" y="340.4" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Citadel</text><text x="203.0" y="486.2" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="331.5" y="412.0" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="375.1" y="291.2" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="153.0" y="426.9" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Garrison</text><text x="272.9" y="433.3" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Slums</text><text x="434.9" y="169.6" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Slums</text><text x="260.9" y="488.1" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Temple</text><text x="446.2" y="314.2" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Garrison</text><text x="382.1" y="364.5" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="279.1" y="185.6" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="280.0" y="380.8" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="203.8" y="339.8" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Slums</text><text x="366.0" y="156.1" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Garrison</text><text x="263.7" y="333.1" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="143.9" y="352.9" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Garrison</text><text x="484.1" y="258.9" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="303.2" y="280.0" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Temple</text><text x="208.6" y="405.5" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="163.3" y="466.8" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text></g><text x="315.0" y="20" text-anchor="middle" font-family="Georgia, serif" font-size="16" font-weight="bold" stroke="#f7f3ea" stroke-width="3" paint-order="stroke" fill="#23211c">Caldwingate</text></svg>
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="630" height="630" viewBox="0 0 630 630"><rect width="630" height="630" fill="#c9d2bb"/><polygon points="81.8,367.7 85.2,334.2 93.9,300.7 107.5,267.9 125.8,236.4 148.3,206.8 174.7,179.7 204.4,155.7 236.9,135.3 271.5,119.2 307.4,107.7 343.8,101.3 379.7,100.2 414.2,104.5 446.3,114.3 475.2,129.1 500.2,148.6 520.5,172.3 535.8,199.6 545.7,229.7 550.1,261.9 548.9,295.5 542.2,329.7 529.9,363.8 512.4,397.0 490.0,428.6 463.1,457.8 432.1,483.7 397.9,505.7 361.2,523.0 323.0,535.0 284.5,541.3 246.7,541.7 210.8,536.0 177.9,524.6 148.9,507.7 124.5,486.1 105.4,460.5 91.8,431.7 84.0,400.4" fill="#e6dcc0"/><g stroke="#4a4230" stroke-width="1" stroke-linejoin="round"><polygon points="137.2,221.4 148.3,206.8 174.7,179.7 195.1,163.2 204.9,173.1 217.7,215.1 196.3,253.2 192.7,254.4" fill="#d8cdb0"/><polygon points="319.2,444.5 349.3,451.3 361.7,488.1 300.7,496.8" fill="#c2b48f"/><polygon points="435.4,234.2 430.3,235.4 404.9,216.9 403.0,197.8 416.9,189.5 454.6,205.8" fill="#d8cdb0"/><polygon points="387.2,258.5 368.8,303.9 345.0,289.1 339.1,253.5 360.2,235.5 377.5,241.6" fill="#b9a98c"/><polygon points="495.4,144.9 500.2,148.6 520.5,172.3 535.8,199.6 540.4,213.5 494.2,223.6 466.9,200.2 468.2,187.2" fill="#c2b48f"/><polygon points="405.4,356.6 376.6,307.4 420.6,298.3 437.4,319.3 434.0,348.1" fill="#cdbf9e"/><polygon points="549.5,279.5 548.9,295.5 542.2,329.7 531.8,358.4 497.0,341.7 485.1,297.9 488.4,287.3" fill="#d8cdb0"/><polygon points="192.7,254.4 196.3,253.2 240.6,275.4 249.3,301.4 239.0,322.7 204.4,334.3 170.0,314.8 168.9,310.0" fill="#cdbf9e"/><polygon points="247.0,429.8 273.2,435.3 277.2,502.5 216.9,473.7" fill="#b9a98c"/><polygon points="249.3,301.4 240.6,275.4 268.1,244.8 297.0,250.4 298.4,298.9" fill="#c2b48f"/><polygon points="418.4,109.2 419.8,143.9 378.0,160.5 361.2,145.5 364.3,131.3" fill="#d8cdb0"/><polygon points="423.4,414.1 412.5,432.7 400.0,437.6 369.7,428.6 364.2,407.6 392.9,375.1" fill="#b3a684"/><polygon points="445.3,472.6 432.1,483.7 397.9,505.7 388.0,510.3 386.3,507.6 400.0,437.6 412.5,432.7" fill="#c2b48f"/><polygon points="298.4,298.9 297.0,250.4 305.3,244.9 339.1,253.5 345.0,289.1 300.5,300.5" fill="#dfd6c0"/><polygon points="349.3,451.3 319.2,444.5 302.2,422.7 304.1,415.6 334.0,395.0 364.2,407.6 369.7,428.6" fill="#c2b48f"/><polygon points="392.9,375.1 364.2,407.6 334.0,395.0 335.3,352.1 339.9,350.2 393.0,373.0" fill="#c2b48f"/><polygon points="468.2,187.2 466.9,200.2 454.6,205.8 416.9,189.5 428.1,160.2" fill="#dfd6c0"/><polygon points="204.9,476.7 185.3,527.1 177.9,524.6 148.9,507.7 124.5,486.1 111.9,469.3 178.5,449.3" fill="#cdbf9e"/><polygon points="310.1,213.6 305.3,244.9 297.0,250.4 268.1,244.8 256.6,218.1 274.3,191.1" fill="#cdbf9e"/><polygon points="425.2,280.8 415.4,262.1 430.3,235.4 435.4,234.2 476.1,267.0 476.2,267.5" fill="#d8cdb0"/><polygon points="284.0,541.3 246.7,541.7 210.8,536.0 185.3,527.1 204.9,476.7 216.9,473.7 277.2,502.5 284.0,510.5" fill="#dfd6c0"/><polygon points="273.2,435.3 247.0,429.8 230.9,399.3 272.9,365.0 273.8,365.1 304.1,415.6 302.2,422.7" fill="#b3a684"/><polygon points="489.1,139.9 495.4,144.9 468.2,187.2 428.1,160.2 426.6,151.9" fill="#cdbf9e"/><polygon points="504.6,408.1 490.0,428.6 468.9,451.5 444.9,408.0 459.5,391.3" fill="#b9a98c"/><polygon points="300.5,300.5 345.0,289.1 368.8,303.9 369.0,304.4 339.9,350.2 335.3,352.1 309.0,343.2" fill="#d9c08a"/><polygon points="376.6,307.4 405.4,356.6 393.0,373.0 339.9,350.2 369.0,304.4" fill="#cdbf9e"/><polygon points="368.8,303.9 387.2,258.5 415.4,262.1 425.2,280.8 420.6,298.3 376.6,307.4 369.0,304.4" fill="#d8cdb0"/><polygon points="387.2,258.5 377.5,241.6 404.9,216.9 430.3,235.4 415.4,262.1" fill="#cdbf9e"/><polygon points="105.5,272.8 107.5,267.9 125.8,236.4 137.2,221.4 192.7,254.4 168.9,310.0" fill="#d8cdb0"/><polygon points="361.2,145.5 378.0,160.5 380.7,185.9 352.0,205.8 334.3,198.1 324.8,161.6 328.6,155.2" fill="#cdbf9e"/><polygon points="195.1,163.2 204.4,155.7 236.9,135.3 265.4,122.0 274.6,170.2 273.0,173.2 204.9,173.1" fill="#c2b48f"/><polygon points="468.9,451.5 463.1,457.8 445.3,472.6 412.5,432.7 423.4,414.1 444.9,408.0" fill="#d8cdb0"/><polygon points="435.4,234.2 454.6,205.8 466.9,200.2 494.2,223.6 476.1,267.0" fill="#c2b48f"/><polygon points="388.0,510.3 361.2,523.0 323.0,535.0 284.5,541.3 284.0,541.3 284.0,510.5 300.7,496.8 361.7,488.1 386.3,507.6" fill="#c2b48f"/><polygon points="268.1,244.8 240.6,275.4 196.3,253.2 217.7,215.1 256.6,218.1" fill="#cdbf9e"/><polygon points="419.4,106.1 446.3,114.3 475.2,129.1 489.1,139.9 426.6,151.9 419.8,143.9 418.4,109.2" fill="#d8cdb0"/><polygon points="437.4,319.3 420.6,298.3 425.2,280.8 476.2,267.5 488.4,287.3 485.1,297.9" fill="#dfd6c0"/><polygon points="423.4,414.1 392.9,375.1 393.0,373.0 405.4,356.6 434.0,348.1 456.6,364.1 459.5,391.3 444.9,408.0" fill="#b3a684"/><polygon points="360.2,235.5 339.1,253.5 305.3,244.9 310.1,213.6 334.3,198.1 352.0,205.8" fill="#cdbf9e"/><polygon points="306.8,107.9 307.4,107.7 343.8,101.3 354.2,101.0 364.3,131.3 361.2,145.5 328.6,155.2" fill="#d8cdb0"/><polygon points="403.0,197.8 404.9,216.9 377.5,241.6 360.2,235.5 352.0,205.8 380.7,185.9" fill="#cdbf9e"/><polygon points="89.7,316.8 93.9,300.7 105.5,272.8 168.9,310.0 170.0,314.8 137.2,350.1" fill="#cdbf9e"/><polygon points="239.0,322.7 249.3,301.4 298.4,298.9 300.5,300.5 309.0,343.2 273.8,365.1 272.9,365.0" fill="#b3a684"/><polygon points="152.1,392.8 94.0,436.2 91.8,431.7 84.0,400.4 82.5,378.1 136.0,357.8" fill="#cdbf9e"/><polygon points="354.2,101.0 379.7,100.2 414.2,104.5 419.4,106.1 418.4,109.2 364.3,131.3" fill="#d8cdb0"/><polygon points="416.9,189.5 403.0,197.8 380.7,185.9 378.0,160.5 419.8,143.9 426.6,151.9 428.1,160.2" fill="#cdbf9e"/><polygon points="81.8,367.7 85.2,334.2 89.7,316.8 137.2,350.1 136.0,357.8 82.5,378.1" fill="#cdbf9e"/><polygon points="274.3,191.1 256.6,218.1 217.7,215.1 204.9,173.1 273.0,173.2" fill="#c2b48f"/><polygon points="265.4,122.0 271.5,119.2 306.8,107.9 328.6,155.2 324.8,161.6 274.6,170.2" fill="#d8cdb0"/><polygon points="309.0,343.2 335.3,352.1 334.0,395.0 304.1,415.6 273.8,365.1" fill="#cdbf9e"/><polygon points="178.5,449.3 111.9,469.3 105.4,460.5 94.0,436.2 152.1,392.8 179.9,404.4" fill="#c2b48f"/><polygon points="434.0,348.1 437.4,319.3 485.1,297.9 497.0,341.7 456.6,364.1" fill="#b9a98c"/><polygon points="361.7,488.1 349.3,451.3 369.7,428.6 400.0,437.6 386.3,507.6" fill="#d8cdb0"/><polygon points="170.0,314.8 204.4,334.3 204.0,391.3 179.9,404.4 152.1,392.8 136.0,357.8 137.2,350.1" fill="#b9a98c"/><polygon points="230.9,399.3 247.0,429.8 216.9,473.7 204.9,476.7 178.5,449.3 179.9,404.4 204.0,391.3" fill="#c2b48f"/><polygon points="531.8,358.4 529.9,363.8 512.4,397.0 504.6,408.1 459.5,391.3 456.6,364.1 497.0,341.7" fill="#c2b48f"/><polygon points="204.4,334.3 239.0,322.7 272.9,365.0 230.9,399.3 204.0,391.3" fill="#b9a98c"/><polygon points="277.2,502.5 273.2,435.3 302.2,422.7 319.2,444.5 300.7,496.8 284.0,510.5" fill="#b9a98c"/><polygon points="324.8,161.6 334.3,198.1 310.1,213.6 274.3,191.1 273.0,173.2 274.6,170.2" fill="#cdbf9e"/><polygon points="540.4,213.5 545.7,229.7 550.1,261.9 549.5,279.5 488.4,287.3 476.2,267.5 476.1,267.0 494.2,223.6" fill="#c2b48f"/></g><g fill="#7d6c52" stroke="#4a3e2e" stroke-width="0.5" stroke-linejoin="round"><polygon points="143.4,220.2 151.5,209.6 165.4,195.3 182.2,218.1 163.3,232.0"/><polygon points="187.1,224.9 198.6,240.5 193.5,249.7 193.2,249.8 171.1,236.7"/><polygon points="171.3,189.2 177.5,182.8 194.8,168.9 201.2,175.3 207.1,194.6 186.5,209.8"/><polygon points="209.7,203.2 213.2,214.6 203.2,232.5 191.5,216.6"/><polygon points="307.4,486.2 314.7,465.6 321.9,475.5"/><polygon points="331.9,489.3 308.2,492.7 325.2,480.2"/><polygon points="320.6,449.2 332.0,464.7 324.9,469.9 317.1,459.3"/><polygon points="327.4,449.0 347.2,453.5 347.3,453.8 336.6,461.6"/><polygon points="348.7,460.3 351.6,468.9 334.2,481.6 329.1,474.7"/><polygon points="354.2,474.8 357.9,485.7 338.5,488.5 337.5,487.1"/><polygon points="432.9,230.5 431.2,230.8 408.9,214.6 407.4,200.0 417.2,194.2 448.3,207.7"/><polygon points="348.0,281.4 343.6,255.2 349.4,250.2 363.8,269.7"/><polygon points="355.9,244.7 361.1,240.2 374.6,245.0 381.4,256.8 370.6,264.7"/><polygon points="378.2,269.6 366.8,297.7 352.3,288.7"/><polygon points="470.1,195.5 470.8,188.1 478.2,176.7 484.3,185.0"/><polygon points="492.9,197.3 479.6,207.1 472.4,200.9 487.4,189.8"/><polygon points="494.3,168.7 484.2,176.2 480.9,171.8 488.2,160.5"/><polygon points="496.0,148.7 498.3,150.5 506.2,159.7 498.2,165.5 491.3,156.2"/><polygon points="507.7,186.0 497.9,193.3 488.3,180.2 498.1,173.0"/><polygon points="509.6,164.1 518.1,174.0 520.0,177.4 513.0,182.6 502.9,169.0"/><polygon points="489.2,215.7 483.8,211.1 498.6,200.2 502.7,205.7"/><polygon points="511.6,217.3 494.9,221.0 492.9,219.3 506.0,209.7"/><polygon points="519.7,203.1 511.9,208.9 503.2,197.0 511.0,191.3"/><polygon points="523.0,182.3 530.4,195.4 524.2,200.0 515.3,187.9"/><polygon points="533.0,200.6 533.1,200.8 536.6,211.3 517.0,215.6 515.4,213.5"/><polygon points="386.1,318.4 380.8,309.3 399.7,305.4 401.1,307.3"/><polygon points="394.5,331.6 389.6,323.2 404.2,312.4 410.0,320.2"/><polygon points="406.0,304.4 419.4,301.6 425.4,309.2 415.1,316.7"/><polygon points="404.0,347.5 398.0,337.3 411.6,327.3 418.6,336.8"/><polygon points="406.6,353.7 406.3,353.2 422.8,341.0 427.6,347.4"/><polygon points="416.5,323.2 429.2,313.8 434.2,320.2 433.9,323.1 422.6,331.4"/><polygon points="434.1,329.3 432.1,345.8 424.9,336.0"/><polygon points="518.4,311.7 497.4,327.1 489.5,298.0 491.6,291.2 502.3,289.8"/><polygon points="545.1,284.3 544.8,292.2 525.2,306.7 511.9,288.6"/><polygon points="532.2,345.1 529.5,352.6 500.6,338.7 499.8,335.8 516.4,323.6"/><polygon points="542.9,304.0 538.1,328.5 535.6,335.5 523.1,318.6"/><polygon points="186.8,309.2 177.8,315.9 172.5,312.9 171.9,310.2 177.7,296.8"/><polygon points="182.2,293.7 180.0,290.7 186.5,275.5 193.6,285.2"/><polygon points="202.6,297.7 191.5,305.9 185.5,297.9 196.7,289.6"/><polygon points="195.0,256.9 196.1,256.6 208.6,262.9 192.8,274.5 189.4,269.9"/><polygon points="217.2,286.1 207.2,293.5 197.0,279.6 207.0,272.2"/><polygon points="214.9,265.9 233.1,275.0 222.7,282.6 211.9,268.0"/><polygon points="207.7,329.7 204.7,330.7 184.0,319.0 194.2,311.4"/><polygon points="204.8,315.7 198.7,307.4 208.7,300.0 214.8,308.3"/><polygon points="226.2,324.0 214.1,328.0 208.2,320.0 218.0,312.8"/><polygon points="230.8,299.5 220.8,306.9 213.4,296.9 223.4,289.5"/><polygon points="238.6,278.2 242.8,290.9 235.5,296.2 228.0,286.0"/><polygon points="239.1,316.2 237.0,320.5 231.8,322.2 223.9,311.6 231.5,306.0"/><polygon points="244.9,295.6 246.8,301.2 241.8,311.5 235.3,302.7"/><polygon points="249.9,462.3 231.4,475.9 223.1,472.0 239.5,448.1"/><polygon points="248.8,434.4 269.2,438.7 269.8,447.7 256.7,457.3 244.5,440.8"/><polygon points="268.6,494.0 239.5,480.1 251.7,471.1"/><polygon points="270.7,456.8 272.5,486.3 257.8,466.3"/><polygon points="249.0,292.3 243.6,276.1 246.6,272.7 256.8,286.5"/><polygon points="250.6,268.7 255.8,262.8 267.3,278.4 261.1,283.0"/><polygon points="251.8,297.8 270.7,283.9 279.9,296.4"/><polygon points="259.8,258.4 269.1,248.0 270.7,248.3 276.8,256.6 264.9,265.4"/><polygon points="280.3,261.0 285.5,268.1 273.4,277.1 268.2,270.0"/><polygon points="278.7,249.7 294.3,252.7 294.6,261.4 289.9,264.9"/><polygon points="295.0,290.9 295.1,295.9 288.0,296.2 277.2,281.6 284.3,276.4"/><polygon points="295.4,266.8 295.9,283.2 287.9,272.4"/><polygon points="402.1,146.4 378.8,155.7 365.9,144.0 368.0,134.4 387.4,126.4"/><polygon points="414.4,115.4 415.5,141.1 410.2,143.2 395.4,123.2"/><polygon points="370.0,421.7 366.4,408.1 367.9,406.4 376.0,417.3"/><polygon points="371.0,403.4 375.0,398.8 384.0,411.0 379.2,414.6"/><polygon points="377.8,395.3 384.3,387.9 389.4,394.8 381.6,400.5"/><polygon points="391.8,397.9 395.6,403.0 387.6,408.9 383.8,403.8"/><polygon points="387.0,384.8 392.9,378.2 398.1,384.9 390.9,390.2"/><polygon points="400.5,388.1 405.9,395.1 398.7,400.5 393.4,393.3"/><polygon points="384.6,430.8 371.4,426.9 371.2,425.9 379.2,420.1 386.2,429.6"/><polygon points="382.6,417.6 388.1,413.5 395.1,423.1 389.6,427.1"/><polygon points="403.5,434.1 399.9,435.5 389.4,432.4 397.7,426.2"/><polygon points="399.0,420.9 391.7,411.0 397.9,406.5 405.1,416.3"/><polygon points="401.7,403.8 408.5,398.8 415.9,408.3 408.9,413.4"/><polygon points="414.5,424.7 411.0,430.9 407.4,432.3 401.7,424.5 409.9,418.5"/><polygon points="421.5,414.2 417.1,421.7 412.7,415.6 418.9,411.0"/><polygon points="392.2,488.5 395.4,472.4 401.9,481.3"/><polygon points="410.0,494.1 396.3,502.9 390.0,505.9 392.0,495.2 404.2,486.3"/><polygon points="399.0,469.6 396.8,466.7 399.8,451.6 408.1,462.9"/><polygon points="401.0,445.0 402.1,439.3 411.8,435.6 415.7,440.4 403.9,449.0"/><polygon points="418.7,444.4 424.1,450.9 412.1,459.7 407.1,453.0"/><polygon points="424.2,484.6 415.5,490.2 403.4,473.8 411.7,467.6"/><polygon points="422.3,471.3 416.4,463.3 427.4,455.2 433.7,462.9"/><polygon points="441.8,472.3 430.6,481.7 429.9,482.1 425.3,475.7 437.3,466.9"/><polygon points="300.1,275.3 299.6,256.4 308.8,268.9"/><polygon points="301.2,292.7 300.9,281.4 311.5,273.6 317.0,281.1"/><polygon points="304.8,296.9 320.7,285.2 325.4,291.6"/><polygon points="301.3,250.5 305.7,247.5 318.8,250.8 307.6,259.1"/><polygon points="325.1,253.5 336.0,256.3 336.3,257.8 317.9,271.4 311.9,263.2"/><polygon points="339.5,287.4 330.8,289.7 321.3,276.8 328.1,271.8"/><polygon points="338.4,263.3 341.4,281.2 331.8,268.2"/><polygon points="317.0,436.2 305.9,422.0 307.1,417.7 312.7,413.8 324.9,430.3"/><polygon points="317.7,409.8 323.3,405.9 335.8,422.9 330.3,426.9"/><polygon points="335.9,446.0 320.5,442.5 319.5,441.3 327.9,435.1"/><polygon points="348.2,447.9 343.1,446.7 332.7,432.6 339.3,427.8 351.4,444.3"/><polygon points="328.0,402.5 333.1,399.0 345.5,415.9 340.6,419.6"/><polygon points="340.5,400.2 357.8,407.5 350.0,413.2"/><polygon points="361.3,433.4 355.6,439.7 344.2,424.2 350.9,419.2"/><polygon points="362.3,410.2 367.0,427.9 365.4,429.6 355.0,415.5"/><polygon points="336.7,369.2 337.1,354.0 344.2,363.6"/><polygon points="337.4,389.7 337.9,374.7 346.2,368.5 353.3,378.1"/><polygon points="345.1,356.0 369.1,366.3 358.5,374.2"/><polygon points="354.9,401.4 339.4,394.9 346.3,389.8"/><polygon points="371.1,394.6 363.3,403.4 351.6,387.6 360.9,380.7"/><polygon points="388.5,374.9 375.8,389.2 366.5,376.6 376.1,369.6"/><polygon points="425.8,190.7 420.0,188.2 424.9,175.3 432.6,185.7"/><polygon points="427.5,169.9 429.5,164.6 445.6,175.5 436.5,182.2"/><polygon points="451.2,201.4 431.4,192.8 440.2,186.4"/><polygon points="464.6,188.9 463.7,198.0 458.1,200.5 445.5,183.4 450.7,179.5"/><polygon points="126.0,483.2 116.8,470.9 128.2,467.4 135.0,476.6"/><polygon points="133.3,465.4 146.0,461.6 149.6,466.5 139.5,473.9"/><polygon points="139.5,495.7 130.0,487.3 139.9,480.0 147.3,490.0"/><polygon points="144.2,476.7 152.4,470.7 159.9,480.9 151.7,486.9"/><polygon points="152.3,460.6 162.8,457.5 172.6,470.7 164.3,476.8"/><polygon points="168.6,455.1 177.7,452.4 186.2,461.3 177.8,467.6"/><polygon points="158.5,510.1 150.5,505.4 143.8,499.5 152.1,493.4 162.3,507.3"/><polygon points="156.7,490.1 163.3,485.2 173.5,499.0 166.8,503.9"/><polygon points="185.8,516.6 183.3,522.9 179.3,521.5 164.7,513.1 176.8,504.3"/><polygon points="187.3,486.8 177.4,494.1 168.4,481.9 178.3,474.6"/><polygon points="201.1,477.0 192.5,483.3 183.1,470.7 190.1,465.5"/><polygon points="197.6,487.1 188.7,509.7 181.0,499.2"/><polygon points="265.0,230.1 260.0,218.4 265.8,209.5 275.4,222.5"/><polygon points="268.6,204.2 275.0,194.3 283.5,199.7 271.7,208.4"/><polygon points="287.8,203.0 295.4,207.8 280.2,219.1 275.2,212.3"/><polygon points="273.9,242.6 270.4,241.9 267.8,235.9 284.0,223.9 289.3,231.2"/><polygon points="300.3,245.0 296.5,247.6 281.1,244.7 293.4,235.6"/><polygon points="306.9,215.1 306.1,219.8 294.8,228.1 288.9,220.0 300.7,211.2"/><polygon points="306.1,226.1 303.7,241.7 297.1,232.7"/><polygon points="422.7,267.1 420.2,262.2 433.0,239.0 434.4,238.7 447.2,249.1"/><polygon points="427.3,275.9 426.7,274.6 454.0,254.5 467.5,265.4"/><polygon points="201.6,529.3 189.6,525.1 195.9,508.8 207.7,524.8"/><polygon points="198.0,501.6 204.5,485.1 211.9,495.1 199.8,504.1"/><polygon points="214.9,500.4 224.0,512.8 213.1,520.8 204.0,508.5"/><polygon points="207.3,479.2 216.6,476.9 228.6,482.6 216.4,491.6"/><polygon points="238.9,502.0 229.4,509.0 220.2,496.5 229.7,489.5"/><polygon points="234.7,484.9 252.1,493.2 243.9,499.2 233.9,485.6"/><polygon points="221.2,535.6 211.3,534.1 206.4,532.4 214.5,526.5"/><polygon points="227.3,535.3 219.2,524.3 229.3,516.9 237.4,527.9"/><polygon points="247.5,539.7 246.9,539.7 232.8,537.5 241.3,531.3"/><polygon points="238.5,519.8 233.6,513.2 245.8,504.2 250.6,510.8"/><polygon points="246.0,530.1 241.5,524.0 253.8,515.0 258.3,521.1"/><polygon points="249.5,501.0 257.1,495.4 265.0,499.2 254.1,507.2"/><polygon points="269.7,502.1 275.4,504.8 277.2,506.8 262.5,517.6 257.6,511.0"/><polygon points="269.8,538.5 252.7,538.7 249.5,534.3 260.7,526.1"/><polygon points="280.4,537.8 277.3,537.9 266.2,522.8 280.5,512.3"/><polygon points="236.3,406.1 232.9,399.7 237.2,396.2 241.6,402.2"/><polygon points="240.1,394.3 247.5,388.3 251.8,394.2 244.2,399.8"/><polygon points="243.7,418.8 238.6,409.1 244.4,404.8 250.9,413.6"/><polygon points="247.9,402.2 254.1,397.6 260.6,406.5 254.4,411.0"/><polygon points="250.2,385.8 253.6,383.0 260.3,392.0 256.7,394.7"/><polygon points="256.6,380.8 261.2,377.1 267.9,386.2 263.1,389.7"/><polygon points="270.1,389.9 274.6,396.0 264.1,403.6 259.7,397.5"/><polygon points="264.8,374.7 272.9,368.1 278.4,377.3 270.8,382.9"/><polygon points="280.9,381.0 285.3,388.3 278.3,393.5 273.2,386.6"/><polygon points="255.6,429.3 248.4,427.8 245.8,422.8 252.8,417.6 259.3,426.5"/><polygon points="255.6,414.9 258.7,412.7 265.8,422.4 262.8,424.7"/><polygon points="261.6,410.7 265.8,407.7 272.7,417.1 268.6,420.2"/><polygon points="270.2,433.2 259.5,430.9 265.4,426.6"/><polygon points="268.6,425.1 274.9,420.5 281.5,429.4 274.2,432.6"/><polygon points="268.6,405.4 275.7,400.2 279.4,405.3 272.3,410.5"/><polygon points="281.5,408.1 285.3,413.3 278.2,418.5 274.4,413.3"/><polygon points="278.8,398.2 287.5,391.7 290.7,396.9 282.3,403.0"/><polygon points="292.7,400.1 295.9,405.4 288.2,411.1 284.5,406.1"/><polygon points="294.5,423.7 285.5,427.6 280.9,421.4 288.6,415.7"/><polygon points="297.7,408.8 302.0,415.9 300.5,421.3 298.5,422.1 291.9,413.1"/><polygon points="445.2,168.4 430.6,158.5 429.8,154.1 437.8,152.5 448.0,166.4"/><polygon points="444.0,151.5 458.5,148.7 463.2,155.0 452.4,162.9"/><polygon points="468.6,181.8 467.4,183.5 449.9,171.7 457.2,166.3"/><polygon points="475.5,171.2 471.6,177.2 461.3,163.1 466.7,159.2"/><polygon points="481.7,143.6 468.4,153.4 463.7,147.1"/><polygon points="489.7,144.2 491.4,145.6 478.4,165.7 472.1,157.2"/><polygon points="455.9,420.6 449.3,408.5 458.9,397.4 468.9,411.0"/><polygon points="482.6,430.5 469.7,444.4 460.1,427.1 473.1,417.5"/><polygon points="498.1,410.1 488.2,424.0 470.3,399.7"/><polygon points="356.1,351.8 353.4,353.7 343.0,349.2 348.2,341.1"/><polygon points="368.1,341.8 359.7,348.0 351.7,337.2 357.8,327.7"/><polygon points="374.7,309.6 377.5,314.3 362.9,325.0 360.8,322.3 370.1,307.7"/><polygon points="380.1,319.5 385.5,328.8 373.0,338.1 366.6,329.4"/><polygon points="371.6,360.7 359.5,355.5 372.6,345.8 379.3,355.0"/><polygon points="391.6,370.2 376.1,363.5 383.0,358.5"/><polygon points="388.7,334.4 396.0,346.9 386.2,354.1 377.7,342.5"/><polygon points="399.5,351.3 402.5,356.5 394.7,366.9 388.9,359.0"/><polygon points="374.1,301.9 384.6,276.1 400.8,298.1 377.0,303.0"/><polygon points="388.3,267.0 389.9,263.1 412.7,266.0 420.7,281.3 417.2,294.7 409.8,296.2"/><polygon points="387.8,252.6 381.8,242.3 393.7,231.5 401.7,242.4"/><polygon points="393.1,256.4 405.9,247.0 414.3,258.4 413.9,259.1"/><polygon points="398.6,226.9 405.1,221.0 419.2,231.3 407.9,239.6"/><polygon points="424.7,234.6 426.8,236.1 417.3,253.2 411.0,244.7"/><polygon points="110.8,271.0 111.3,269.8 128.5,240.1 150.2,269.5 131.6,283.2"/><polygon points="133.7,233.0 138.3,226.9 176.9,249.9 156.9,264.5"/><polygon points="170.8,294.7 166.9,303.9 139.5,287.8 156.5,275.3"/><polygon points="184.7,254.5 187.4,256.1 174.7,285.8 163.3,270.3"/><polygon points="332.9,179.0 328.5,162.1 330.9,158.1 335.7,156.6 345.4,169.8"/><polygon points="336.2,193.5 334.2,186.0 349.5,174.7 353.8,180.5"/><polygon points="363.5,193.9 351.6,202.2 341.1,197.6 357.4,185.6"/><polygon points="360.6,148.2 361.4,148.9 345.8,160.4 341.1,154.0"/><polygon points="365.0,153.4 372.2,159.8 355.5,172.1 349.9,164.5"/><polygon points="376.1,185.5 368.7,190.6 358.9,177.3 366.1,172.0"/><polygon points="376.2,163.4 377.9,179.6 369.6,168.3"/><polygon points="199.2,163.4 206.0,157.9 208.1,156.6 217.1,168.8 214.9,170.4 206.0,170.4"/><polygon points="213.4,153.8 224.7,146.7 232.3,157.1 221.6,165.0"/><polygon points="236.2,161.3 243.1,170.7 223.5,170.6"/><polygon points="229.2,143.2 238.1,137.6 241.1,136.2 245.7,142.4 234.7,150.6"/><polygon points="248.8,146.4 253.2,152.4 242.0,160.7 237.5,154.7"/><polygon points="247.3,134.3 262.8,127.0 265.7,141.9 257.4,148.1"/><polygon points="264.2,170.4 249.5,170.4 245.4,164.7 254.9,157.7"/><polygon points="267.7,148.2 271.8,169.8 271.4,170.5 271.1,170.5 259.2,154.4"/><polygon points="426.8,443.4 417.6,432.3 426.2,417.7 442.8,412.9 450.1,426.2"/><polygon points="463.7,450.9 460.2,454.7 445.9,466.7 432.1,449.9 454.2,433.7"/><polygon points="440.1,233.5 450.1,218.6 459.9,231.9 448.5,240.3"/><polygon points="453.5,212.6 456.5,208.1 466.4,203.6 472.2,208.5 458.1,218.9"/><polygon points="476.6,212.2 481.7,216.6 465.3,228.7 461.4,223.4"/><polygon points="461.6,251.3 453.4,244.7 467.7,234.2 473.8,242.4"/><polygon points="480.3,250.3 475.1,262.8 465.7,255.3 477.6,246.6"/><polygon points="486.1,220.9 490.3,224.5 482.4,243.4 473.0,230.6"/><polygon points="286.2,533.7 286.2,516.7 294.3,527.7"/><polygon points="288.2,510.8 295.1,505.1 305.2,518.8 298.0,524.1"/><polygon points="315.5,533.1 290.3,537.2 308.6,523.8"/><polygon points="309.3,513.6 300.3,501.5 302.2,500.0 319.9,497.5 323.9,502.9"/><polygon points="316.6,524.6 312.5,519.0 328.1,507.6 332.2,513.2"/><polygon points="341.7,526.1 322.4,532.2 322.3,532.2 320.0,529.2 335.5,517.8"/><polygon points="338.2,511.3 327.1,496.2 339.0,494.5 346.8,505.0"/><polygon points="345.0,493.0 360.9,490.8 363.9,493.1 351.7,502.1"/><polygon points="362.9,518.6 360.0,520.0 347.6,523.9 342.1,516.4 354.5,507.2"/><polygon points="382.8,509.1 368.9,515.6 359.9,503.4 368.1,497.5"/><polygon points="203.8,244.1 212.3,229.1 216.5,234.8"/><polygon points="212.2,257.5 201.8,252.3 218.7,239.9 224.8,248.2"/><polygon points="241.2,270.1 239.9,271.6 218.5,260.8 228.8,253.2"/><polygon points="218.4,229.8 214.9,225.1 219.1,217.6 229.6,218.5 231.1,220.4"/><polygon points="230.1,244.4 222.4,233.9 233.8,225.4 241.6,236.0"/><polygon points="237.0,219.5 254.6,220.9 256.6,225.3 246.7,232.6"/><polygon points="253.3,256.1 245.5,264.9 234.2,249.6 243.5,242.8"/><polygon points="264.5,244.2 258.0,251.5 248.5,238.7 258.8,231.1"/><polygon points="422.5,111.3 444.8,118.0 445.2,118.2 423.5,134.3"/><polygon points="453.3,122.5 473.0,132.6 479.2,137.5 428.2,147.3 424.9,143.4"/><polygon points="428.6,304.2 423.4,297.7 426.5,286.0 435.9,298.9"/><polygon points="430.8,282.4 443.1,279.2 449.7,288.2 440.2,295.2"/><polygon points="438.1,316.1 431.9,308.3 440.7,301.8 448.0,311.7"/><polygon points="445.2,298.8 453.3,292.8 462.3,305.0 452.9,309.3"/><polygon points="449.6,277.7 474.7,271.1 475.4,272.3 456.1,286.5"/><polygon points="475.5,299.3 467.6,302.8 459.2,291.5 466.1,286.4"/><polygon points="478.8,277.2 485.3,287.7 482.8,295.9 480.6,296.8 470.6,283.2"/><polygon points="398.3,378.8 395.0,374.5 395.0,373.7 400.8,366.1 405.9,373.1"/><polygon points="403.6,362.8 406.8,358.6 410.7,357.4 416.4,365.1 409.2,370.4"/><polygon points="408.9,391.9 401.1,381.9 406.6,377.9 414.1,388.1"/><polygon points="409.6,375.2 419.1,368.1 421.8,371.8 412.3,378.9"/><polygon points="424.0,374.8 427.0,379.0 417.6,385.9 414.5,381.8"/><polygon points="415.4,356.1 433.6,350.7 434.7,351.5 420.0,362.4"/><polygon points="425.1,370.0 422.2,366.0 432.1,358.7 435.0,362.7"/><polygon points="440.0,369.4 430.0,376.8 427.3,373.1 437.3,365.7"/><polygon points="438.8,354.1 449.7,361.9 443.1,366.8 435.5,356.5"/><polygon points="417.5,403.6 411.1,395.3 415.7,391.9 421.9,400.3"/><polygon points="418.7,389.7 423.1,386.4 429.4,394.9 424.9,398.2"/><polygon points="424.1,412.1 419.7,406.4 425.0,402.5 430.7,410.2"/><polygon points="427.9,400.4 431.5,397.7 439.0,407.8 434.3,409.1"/><polygon points="426.9,384.4 434.4,378.9 440.9,387.7 433.4,393.2"/><polygon points="443.7,391.5 449.4,399.2 443.6,405.9 442.8,406.1 436.2,397.1"/><polygon points="438.0,376.0 444.5,371.2 450.9,379.9 444.4,384.7"/><polygon points="447.6,368.5 453.4,364.2 454.8,365.1 456.0,376.6 454.4,377.8"/><polygon points="456.3,381.4 457.2,390.6 452.6,395.9 446.9,388.3"/><polygon points="309.1,241.6 313.1,215.8 324.0,230.6"/><polygon points="338.6,249.9 338.3,250.2 315.8,244.5 328.0,235.5"/><polygon points="329.2,226.4 318.7,212.1 328.7,205.7 338.7,219.4"/><polygon points="333.3,201.9 334.5,201.1 349.8,207.7 350.8,211.4 344.0,216.4"/><polygon points="350.0,240.3 343.2,246.1 332.7,231.8 339.8,226.5"/><polygon points="357.2,234.5 354.5,236.9 344.2,222.9 352.3,216.9"/><polygon points="312.9,111.0 344.2,105.5 351.2,105.2 352.2,108.5 322.0,130.8"/><polygon points="355.1,116.9 360.0,131.6 357.7,142.2 330.9,150.1 325.6,138.6"/><polygon points="359.3,221.2 355.3,207.0 362.0,202.4 370.0,213.3"/><polygon points="382.9,231.9 376.7,237.6 363.1,232.8 361.6,227.4 373.3,218.8"/><polygon points="376.0,211.4 366.9,199.2 376.1,192.8 385.0,204.8"/><polygon points="380.0,189.1 380.8,188.5 396.8,197.1 389.7,202.3"/><polygon points="394.8,222.2 388.0,228.4 379.2,216.3 386.5,210.9"/><polygon points="400.6,200.3 402.2,215.8 398.9,218.8 390.7,207.6"/><polygon points="95.8,302.6 96.1,301.5 102.9,285.1 108.8,293.1"/><polygon points="92.5,315.7 94.0,310.0 97.8,307.2 106.4,318.9 101.8,322.3"/><polygon points="102.4,304.4 111.5,297.7 119.5,308.6 110.4,315.3"/><polygon points="104.9,280.0 106.5,276.0 119.2,283.4 111.5,289.0"/><polygon points="123.4,287.1 137.2,295.2 124.3,304.6 115.6,292.8"/><polygon points="118.0,333.4 106.4,325.2 115.7,318.4 123.7,329.2"/><polygon points="120.3,315.2 129.8,308.2 137.6,318.7 128.0,325.7"/><polygon points="139.7,343.6 136.8,346.7 122.5,336.6 130.4,330.9"/><polygon points="149.0,333.6 143.3,339.7 134.5,327.8 141.1,322.9"/><polygon points="143.3,298.6 155.7,305.9 142.7,315.4 134.9,304.8"/><polygon points="161.6,309.3 166.1,312.0 166.5,313.8 152.6,328.9 146.4,320.5"/><polygon points="241.1,322.4 246.7,310.7 251.2,316.7 241.9,323.5"/><polygon points="248.8,307.1 250.6,303.4 256.9,303.1 261.2,308.9 254.1,314.2"/><polygon points="246.7,329.5 244.1,326.3 253.9,319.1 256.3,322.4"/><polygon points="261.5,329.6 252.3,336.3 249.0,332.2 258.3,325.4"/><polygon points="263.7,312.6 270.8,322.2 264.6,326.8 257.4,317.2"/><polygon points="261.5,302.6 276.3,301.9 266.4,309.2"/><polygon points="279.3,305.0 284.5,312.0 274.5,319.3 269.4,312.3"/><polygon points="282.6,301.8 297.7,301.0 298.6,301.7 298.6,302.0 288.3,309.6"/><polygon points="263.3,350.0 254.7,339.3 258.1,336.7 266.3,347.8"/><polygon points="261.5,334.5 266.1,331.1 274.0,341.8 269.3,345.2"/><polygon points="269.4,328.6 279.3,321.3 282.7,325.9 272.8,333.2"/><polygon points="285.2,328.9 287.6,332.1 277.3,339.7 274.9,336.4"/><polygon points="268.8,356.7 265.7,352.9 275.8,345.5 278.7,349.4"/><polygon points="284.0,356.6 273.7,363.0 271.1,359.7 280.9,352.4"/><polygon points="281.8,347.1 278.9,343.2 289.7,335.3 292.5,339.1"/><polygon points="298.5,347.3 287.2,354.3 284.2,350.3 294.9,342.5"/><polygon points="286.4,324.4 282.4,318.9 290.0,313.3 294.0,318.8"/><polygon points="300.5,327.6 293.0,333.2 288.7,327.4 296.2,321.9"/><polygon points="299.5,306.5 303.1,324.3 293.3,311.1"/><polygon points="304.1,330.1 306.5,342.2 302.0,344.9 295.7,336.3"/><polygon points="87.2,402.7 86.5,400.0 85.4,382.3 95.7,396.4"/><polygon points="89.4,378.6 98.0,375.4 107.0,387.7 99.9,392.9"/><polygon points="105.4,423.6 95.3,431.1 95.0,430.5 89.4,408.4 92.5,406.1"/><polygon points="103.2,410.0 97.4,402.1 110.5,392.5 116.3,400.3"/><polygon points="124.1,410.4 110.6,420.5 106.3,414.7 119.9,404.7"/><polygon points="115.2,387.9 104.6,373.5 118.2,368.4 126.5,379.6"/><polygon points="123.7,365.4 134.6,361.2 139.2,371.2 132.0,376.6"/><polygon points="137.2,400.0 128.4,406.5 118.8,393.5 127.6,387.0"/><polygon points="148.4,391.8 142.2,396.5 132.4,383.2 141.4,376.6"/><polygon points="359.9,105.0 379.5,104.4 409.8,108.2 366.9,125.7"/><polygon points="383.5,180.3 381.6,162.8 391.2,159.0 398.6,169.1"/><polygon points="403.5,194.7 402.9,195.0 385.7,185.9 393.1,180.5"/><polygon points="413.6,188.3 407.7,191.8 397.3,177.7 402.8,173.6"/><polygon points="396.8,156.1 406.3,152.3 413.9,162.6 405.9,168.5"/><polygon points="411.0,150.0 419.1,146.7 424.4,152.9 424.8,155.2 418.3,160.0"/><polygon points="424.5,161.8 416.4,182.8 409.2,173.0"/><polygon points="85.8,356.9 88.1,334.7 88.1,334.6 97.9,348.0"/><polygon points="84.0,367.7 84.4,364.3 88.0,361.6 95.0,371.1 84.5,375.0"/><polygon points="92.5,359.2 101.4,352.6 110.2,364.6 99.5,368.6"/><polygon points="89.0,327.6 90.9,320.1 100.5,326.8 92.7,332.5"/><polygon points="104.0,330.3 115.0,338.0 103.8,346.2 96.3,336.0"/><polygon points="125.1,358.8 115.8,362.4 107.3,350.9 115.1,345.2"/><polygon points="120.0,340.9 134.6,351.2 133.9,356.1 130.6,357.4 119.0,341.6"/><polygon points="211.8,187.1 208.3,175.6 223.1,175.7 224.6,177.6"/><polygon points="218.1,208.1 213.1,192.1 215.5,190.3 224.9,203.1"/><polygon points="219.9,187.7 227.5,182.1 236.3,194.1 228.8,199.6"/><polygon points="235.9,214.4 219.3,213.1 219.3,212.8 229.3,205.4"/><polygon points="251.7,214.9 241.9,214.2 233.7,203.0 239.7,198.6"/><polygon points="241.0,189.8 231.4,176.7 258.8,176.7"/><polygon points="262.9,202.5 256.9,211.7 244.9,195.4 253.2,189.3"/><polygon points="271.3,190.3 266.8,197.2 258.0,185.3 270.3,176.3"/><polygon points="270.2,124.4 273.0,123.1 304.5,113.0 308.3,121.1 274.3,146.1"/><polygon points="296.7,162.8 277.5,166.1 275.4,155.0 285.5,147.6"/><polygon points="311.9,128.9 323.9,154.9 322.2,157.8 304.9,160.8 292.1,143.4"/><polygon points="284.0,375.9 278.2,366.2 292.1,357.5 298.1,365.5"/><polygon points="290.6,387.5 286.9,381.3 301.9,370.2 306.2,376.0"/><polygon points="297.3,398.5 293.7,392.5 309.6,380.7 313.7,386.4"/><polygon points="322.5,398.9 305.1,410.9 300.8,403.6 317.1,391.6"/><polygon points="303.2,362.5 296.9,354.0 307.8,347.1 313.6,354.9"/><polygon points="323.0,367.9 312.7,375.4 306.4,366.9 316.7,359.3"/><polygon points="315.6,348.4 332.4,354.1 332.2,361.0 327.5,364.6"/><polygon points="331.3,369.5 330.6,393.1 328.0,394.9 317.0,380.0"/><polygon points="106.5,455.0 98.2,437.3 105.0,432.2 116.4,447.7"/><polygon points="109.5,428.0 124.8,416.6 128.5,421.6 113.1,433.0"/><polygon points="131.7,426.4 136.7,433.2 121.8,444.2 116.8,437.4"/><polygon points="129.5,460.9 113.1,465.9 109.3,460.8 122.3,451.2"/><polygon points="132.4,455.0 127.0,447.7 140.3,437.9 145.7,445.2"/><polygon points="153.4,454.5 135.2,460.0 134.8,459.5 149.3,448.9"/><polygon points="135.3,420.9 129.8,413.4 144.8,402.2 150.4,409.7"/><polygon points="142.2,430.9 138.5,425.9 154.3,414.3 158.0,419.3"/><polygon points="150.2,398.4 152.6,396.7 174.9,406.0 162.5,415.1"/><polygon points="153.6,446.7 145.2,435.3 152.2,430.2 160.5,441.6"/><polygon points="156.1,427.1 161.8,422.9 170.4,434.6 164.7,438.8"/><polygon points="175.9,447.3 158.1,452.7 156.8,450.9 173.2,438.8 176.0,442.6"/><polygon points="166.2,420.1 176.9,412.2 176.2,433.7"/><polygon points="438.4,346.1 441.2,322.2 449.9,318.3 459.2,330.8"/><polygon points="464.1,337.5 473.4,350.1 456.8,359.2 445.5,351.2"/><polygon points="457.5,314.7 482.5,303.5 484.7,311.6 465.5,325.7"/><polygon points="486.9,320.1 492.2,339.6 480.7,346.0 470.5,332.2"/><polygon points="360.5,471.5 354.0,452.3 371.0,433.3 395.1,440.5 393.9,446.9"/><polygon points="365.2,485.5 363.3,479.9 391.5,459.1 383.5,500.0"/><polygon points="168.4,354.1 146.4,370.3 140.4,357.2 141.2,352.0 155.5,336.6"/><polygon points="170.8,320.1 195.5,334.1 175.1,349.1 161.3,330.3"/><polygon points="155.0,389.1 150.0,378.1 174.8,359.8 181.8,369.4"/><polygon points="197.1,390.2 179.6,399.7 163.8,393.1 186.8,376.2"/><polygon points="200.1,341.2 199.9,379.8 181.5,354.9"/><polygon points="181.8,423.4 182.3,405.9 184.1,404.9 192.1,415.8"/><polygon points="192.9,444.8 184.2,451.2 181.3,448.2 181.9,429.9 181.9,429.9"/><polygon points="205.5,435.1 197.5,441.0 186.9,426.7 194.9,420.8"/><polygon points="196.6,411.9 189.9,402.8 204.4,395.0 215.2,398.2"/><polygon points="221.4,423.0 210.7,430.8 200.8,417.4 211.5,409.5"/><polygon points="228.7,401.9 234.8,413.5 227.0,419.3 216.7,405.3 223.4,400.3"/><polygon points="197.4,465.2 187.7,455.2 195.1,449.8 203.3,460.9"/><polygon points="199.9,446.9 210.7,439.0 218.2,449.2 207.5,457.1"/><polygon points="224.1,457.5 214.9,470.9 205.9,473.2 201.9,469.0 221.8,454.3"/><polygon points="233.5,443.8 227.9,451.9 215.8,435.4 223.2,429.9"/><polygon points="237.9,418.8 243.5,429.6 237.3,438.6 228.0,426.1"/><polygon points="460.7,380.0 459.1,365.4 463.0,363.3 470.2,373.0"/><polygon points="469.6,392.1 462.0,389.3 461.6,385.7 473.0,377.4 478.8,385.4"/><polygon points="467.6,361.0 479.2,354.6 484.5,361.7 473.9,369.5"/><polygon points="487.6,366.1 493.7,374.4 483.3,382.1 477.2,373.8"/><polygon points="492.1,400.9 474.9,394.6 483.0,388.6"/><polygon points="494.0,395.0 487.3,385.9 497.0,378.8 503.7,387.9"/><polygon points="510.3,396.1 503.7,405.3 500.0,403.9 496.6,399.4 507.0,391.7"/><polygon points="497.9,369.6 485.1,352.3 493.9,347.4 505.9,363.7"/><polygon points="500.4,346.1 519.2,355.1 511.3,360.9"/><polygon points="519.0,377.5 512.5,389.8 501.8,375.2 511.8,367.8"/><polygon points="528.9,359.6 527.7,362.8 522.5,372.7 515.8,363.7 524.3,357.4"/><polygon points="207.8,376.9 207.9,348.4 221.5,366.8"/><polygon points="237.1,388.8 230.0,394.6 208.2,388.1 208.3,386.3 225.7,373.4"/><polygon points="209.4,337.1 237.5,327.6 244.6,336.4 221.5,353.5"/><polygon points="250.9,377.7 243.6,383.7 226.3,360.2 233.9,354.6"/><polygon points="249.9,343.0 267.1,364.4 257.3,372.4 240.6,349.8"/><polygon points="278.3,468.6 276.9,444.0 289.1,460.6"/><polygon points="280.8,501.1 279.3,476.3 279.6,476.1 294.9,496.8 284.4,505.3"/><polygon points="285.2,471.7 292.8,466.1 303.0,480.0 299.2,490.8"/><polygon points="280.3,436.6 300.9,427.6 307.2,435.7 289.3,448.9"/><polygon points="312.1,442.0 314.7,445.2 305.6,471.0 294.1,455.3"/><polygon points="276.7,186.0 275.8,173.8 276.4,172.7 287.7,170.8 291.1,175.4"/><polygon points="286.8,195.6 279.4,190.9 294.3,179.9 299.1,186.5"/><polygon points="314.1,207.3 310.1,209.9 292.5,198.8 302.4,191.5"/><polygon points="314.9,177.8 305.4,184.8 294.6,170.1 307.6,167.8"/><polygon points="323.3,164.1 325.2,171.5 319.9,175.5 312.8,165.9"/><polygon points="326.2,199.9 319.4,204.2 308.8,189.9 315.3,185.1"/><polygon points="326.2,176.5 331.5,197.0 331.0,197.3 319.4,181.5"/><polygon points="484.1,274.4 479.5,266.9 485.4,252.8 495.3,266.2"/><polygon points="487.4,246.1 494.1,230.0 500.3,238.4 488.2,247.3"/><polygon points="502.9,243.4 511.1,254.5 500.4,262.4 492.2,251.2"/><polygon points="506.0,282.3 489.8,284.4 487.0,279.7 498.1,271.5"/><polygon points="508.1,275.6 502.6,268.2 515.0,259.1 520.4,266.5"/><polygon points="530.3,279.4 512.2,281.7 511.0,280.0 523.8,270.6"/><polygon points="505.0,235.7 497.7,225.9 517.8,221.5 520.1,224.6"/><polygon points="529.1,237.1 514.2,248.1 508.7,240.6 523.6,229.6"/><polygon points="538.4,217.1 541.9,227.8 534.2,233.5 524.3,220.1"/><polygon points="536.1,254.8 525.1,262.9 517.8,253.1 528.8,245.0"/><polygon points="543.6,233.6 545.6,248.3 540.9,251.8 533.2,241.3"/><polygon points="546.7,275.6 546.6,276.9 536.2,278.2 528.6,267.8 536.6,261.9"/><polygon points="546.9,253.1 548.1,262.0 547.9,268.8 540.0,258.2"/></g><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M118.4,249.1 L311.4,107.0" stroke="#6c604a" stroke-width="3.4"/><path d="M83.9,347.1 L413.3,104.4" stroke="#6c604a" stroke-width="3.4"/><path d="M88.1,416.6 L476.8,130.3" stroke="#6c604a" stroke-width="3.4"/><path d="M113.0,470.8 L519.6,171.3" stroke="#6c604a" stroke-width="4.8"/><path d="M155.8,511.8 L544.4,225.6" stroke="#6c604a" stroke-width="3.4"/><path d="M219.6,537.4 L549.0,294.8" stroke="#6c604a" stroke-width="3.4"/><path d="M320.9,535.4 L514.8,392.5" stroke="#6c604a" stroke-width="3.4"/><path d="M84.0,400.0 L174.1,522.3" stroke="#6c604a" stroke-width="3.4"/><path d="M91.1,311.2 L260.8,541.5" stroke="#6c604a" stroke-width="3.4"/><path d="M118.2,249.5 L327.5,533.6" stroke="#6c604a" stroke-width="3.4"/><path d="M154.6,200.4 L384.2,512.1" stroke="#6c604a" stroke-width="3.4"/><path d="M198.0,160.8 L434.4,481.8" stroke="#6c604a" stroke-width="4.8"/><path d="M248.0,130.1 L477.7,442.0" stroke="#6c604a" stroke-width="3.4"/><path d="M304.7,108.6 L514.4,393.3" stroke="#6c604a" stroke-width="3.4"/><path d="M371.3,100.4 L541.5,331.5" stroke="#6c604a" stroke-width="3.4"/><path d="M458.7,120.6 L547.3,240.9" stroke="#6c604a" stroke-width="3.4"/><path d="M118.4,249.1 L311.4,107.0" stroke="#e4d9bc" stroke-width="1.8"/><path d="M83.9,347.1 L413.3,104.4" stroke="#e4d9bc" stroke-width="1.8"/><path d="M88.1,416.6 L476.8,130.3" stroke="#e4d9bc" stroke-width="1.8"/><path d="M113.0,470.8 L519.6,171.3" stroke="#e4d9bc" stroke-width="3.2"/><path d="M155.8,511.8 L544.4,225.6" stroke="#e4d9bc" stroke-width="1.8"/><path d="M219.6,537.4 L549.0,294.8" stroke="#e4d9bc" stroke-width="1.8"/><path d="M320.9,535.4 L514.8,392.5" stroke="#e4d9bc" stroke-width="1.8"/><path d="M84.0,400.0 L174.1,522.3" stroke="#e4d9bc" stroke-width="1.8"/><path d="M91.1,311.2 L260.8,541.5" stroke="#e4d9bc" stroke-width="1.8"/><path d="M118.2,249.5 L327.5,533.6" stroke="#e4d9bc" stroke-width="1.8"/><path d="M154.6,200.4 L384.2,512.1" stroke="#e4d9bc" stroke-width="1.8"/><path d="M198.0,160.8 L434.4,481.8" stroke="#e4d9bc" stroke-width="3.2"/><path d="M248.0,130.1 L477.7,442.0" stroke="#e4d9bc" stroke-width="1.8"/><path d="M304.7,108.6 L514.4,393.3" stroke="#e4d9bc" stroke-width="1.8"/><path d="M371.3,100.4 L541.5,331.5" stroke="#e4d9bc" stroke-width="1.8"/><path d="M458.7,120.6 L547.3,240.9" stroke="#e4d9bc" stroke-width="1.8"/></g><polygon points="81.8,367.7 85.2,334.2 93.9,300.7 107.5,267.9 125.8,236.4 148.3,206.8 174.7,179.7 204.4,155.7 236.9,135.3 271.5,119.2 307.4,107.7 343.8,101.3 379.7,100.2 414.2,104.5 446.3,114.3 475.2,129.1 500.2,148.6 520.5,172.3 535.8,199.6 545.7,229.7 550.1,261.9 548.9,295.5 542.2,329.7 529.9,363.8 512.4,397.0 490.0,428.6 463.1,457.8 432.1,483.7 397.9,505.7 361.2,523.0 323.0,535.0 284.5,541.3 246.7,541.7 210.8,536.0 177.9,524.6 148.9,507.7 124.5,486.1 105.4,460.5 91.8,431.7 84.0,400.4" fill="none" stroke="#3c3628" stroke-width="1.5"/><g font-family="Georgia, serif" font-size="8" text-anchor="middle"><text x="183.4" y="214.0" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="331.3" y="475.6" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="426.3" y="214.2" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="362.4" y="270.1" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Garrison</text><text x="501.5" y="193.4" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="411.0" y="328.5" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="518.8" y="317.1" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="209.3" y="299.6" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="253.2" y="467.4" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Garrison</text><text x="272.6" y="278.6" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="392.9" y="139.4" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="393.0" y="413.8" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Slums</text><text x="411.9" y="474.0" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="318.4" y="275.5" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Temple</text><text x="337.3" y="426.5" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="357.9" y="382.0" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="442.5" y="188.6" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Temple</text><text x="164.5" y="487.5" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="284.0" y="226.2" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="440.6" y="262.7" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="235.7" y="515.8" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Temple</text><text x="267.9" y="407.9" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Slums</text><text x="462.3" y="163.0" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="472.3" y="420.3" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Garrison</text><text x="332.1" y="321.3" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Market</text><text x="374.2" y="344.9" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="398.1" y="286.7" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="404.1" y="244.6" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="150.3" y="267.9" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="352.9" y="177.6" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="241.4" y="157.5" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="441.0" y="441.7" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="466.5" y="234.3" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="329.2" y="516.2" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="233.7" y="245.7" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="444.5" y="134.3" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="453.8" y="295.1" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Temple</text><text x="428.8" y="382.7" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Slums</text><text x="332.6" y="230.0" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="338.2" y="128.9" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="378.6" y="216.3" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="126.9" y="315.1" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="276.1" y="330.3" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Slums</text><text x="113.7" y="396.4" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="381.4" y="115.0" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="403.4" y="173.6" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="103.7" y="352.7" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="240.6" y="196.0" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="295.2" y="143.8" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="309.1" y="379.0" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="141.5" y="435.5" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="465.1" y="335.2" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Garrison</text><text x="375.8" y="466.1" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Noble</text><text x="174.0" y="364.1" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Garrison</text><text x="209.2" y="434.3" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="493.0" y="376.9" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text><text x="231.8" y="364.3" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Garrison</text><text x="293.1" y="465.7" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Garrison</text><text x="304.8" y="188.7" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Residential</text><text x="515.9" y="256.0" stroke="#f7f3ea" stroke-width="2.5" paint-order="stroke" fill="#23211c">Craftsmen</text></g><text x="315.0" y="20" text-anchor="middle" font-family="Georgia, serif" font-size="16" font-weight="bold" stroke="#f7f3ea" stroke-width="3" paint-order="stroke" fill="#23211c">Pelmoorhill</text></svg>
|
|
@@ -214,6 +214,8 @@ def main() -> None:
|
|
|
214
214
|
emit("citadel", render_settlement("citadel", seed=3))
|
|
215
215
|
emit("shantytown", render_settlement("shantytown", seed=5))
|
|
216
216
|
emit("metropolis", render_settlement("metropolis", seed=5))
|
|
217
|
+
emit("grid-city", render_settlement("grid_city", seed=7))
|
|
218
|
+
emit("fortress-town", render_settlement("fortress_town", seed=3))
|
|
217
219
|
emit("roads", render_roads(seed=7))
|
|
218
220
|
emit("regions", render_regions(seed=4))
|
|
219
221
|
emit("template-isthmus", render_template("isthmus", 0.5, seed=5))
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mapwright"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.22.0"
|
|
8
8
|
description = "Domain-neutral procedural fantasy map & world generation: Voronoi terrain, hydraulic erosion, biomes, rivers, Markov place-names, and shaded-relief SVG."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -38,6 +38,7 @@ from .regions import Region, RegionGenerator
|
|
|
38
38
|
from .rng import SeededRNG
|
|
39
39
|
from .roads import Road, RegionalRoadGenerator
|
|
40
40
|
from .settlement import (
|
|
41
|
+
Landmark,
|
|
41
42
|
Lot,
|
|
42
43
|
Settlement,
|
|
43
44
|
SettlementConfig,
|
|
@@ -60,7 +61,7 @@ from .terrain import (
|
|
|
60
61
|
compute_cell_polygons,
|
|
61
62
|
)
|
|
62
63
|
|
|
63
|
-
__version__ = "0.
|
|
64
|
+
__version__ = "0.22.0"
|
|
64
65
|
|
|
65
66
|
__all__ = [
|
|
66
67
|
"SeededRNG",
|
|
@@ -102,5 +103,6 @@ __all__ = [
|
|
|
102
103
|
"Lot",
|
|
103
104
|
"Street",
|
|
104
105
|
"Wall",
|
|
106
|
+
"Landmark",
|
|
105
107
|
"SETTLEMENT_PRESETS",
|
|
106
108
|
]
|
|
@@ -278,3 +278,46 @@ def inset_convex(poly: list[Point], dist: float) -> list[Point]:
|
|
|
278
278
|
if polygon_area(out) <= 1e-9:
|
|
279
279
|
return []
|
|
280
280
|
return out
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
def clip_line_to_convex(
|
|
284
|
+
poly: list[Point], px: float, py: float, dx: float, dy: float
|
|
285
|
+
) -> tuple[Point, Point] | None:
|
|
286
|
+
"""Clip the infinite line through ``(px, py)`` with direction ``(dx, dy)`` to a
|
|
287
|
+
convex polygon, returning its ``(entry, exit)`` endpoints — or ``None`` if the
|
|
288
|
+
line misses the polygon (or the inputs are degenerate).
|
|
289
|
+
|
|
290
|
+
Liang–Barsky against each edge's inward half-plane: the line is ``P(t) =
|
|
291
|
+
(px + t·dx, py + t·dy)``; the valid ``t``-interval starts at ``(-inf, +inf)``
|
|
292
|
+
and is narrowed by every edge. ``poly`` must be convex.
|
|
293
|
+
"""
|
|
294
|
+
if len(poly) < 3 or (dx == 0.0 and dy == 0.0):
|
|
295
|
+
return None
|
|
296
|
+
cx, cy = polygon_centroid(poly)
|
|
297
|
+
t_lo, t_hi = -math.inf, math.inf
|
|
298
|
+
n = len(poly)
|
|
299
|
+
for i in range(n):
|
|
300
|
+
ax, ay = poly[i]
|
|
301
|
+
bx, by = poly[(i + 1) % n]
|
|
302
|
+
ex, ey = bx - ax, by - ay
|
|
303
|
+
# Inward normal of this edge (oriented toward the centroid).
|
|
304
|
+
nx, ny = ey, -ex
|
|
305
|
+
if (cx - ax) * nx + (cy - ay) * ny < 0:
|
|
306
|
+
nx, ny = -nx, -ny
|
|
307
|
+
# Keep where (P(t) - a)·n >= 0 ⇒ base + t·slope >= 0.
|
|
308
|
+
base = (px - ax) * nx + (py - ay) * ny
|
|
309
|
+
slope = dx * nx + dy * ny
|
|
310
|
+
if abs(slope) < 1e-12:
|
|
311
|
+
if base < -1e-9:
|
|
312
|
+
return None # line runs wholly outside this edge — no crossing
|
|
313
|
+
continue
|
|
314
|
+
t = -base / slope
|
|
315
|
+
if slope > 0:
|
|
316
|
+
t_lo = max(t_lo, t)
|
|
317
|
+
else:
|
|
318
|
+
t_hi = min(t_hi, t)
|
|
319
|
+
if t_lo > t_hi:
|
|
320
|
+
return None
|
|
321
|
+
if not math.isfinite(t_lo) or not math.isfinite(t_hi) or t_hi - t_lo < 1e-9:
|
|
322
|
+
return None
|
|
323
|
+
return ((px + t_lo * dx, py + t_lo * dy), (px + t_hi * dx, py + t_hi * dy))
|