mapwright 0.12.0__tar.gz → 0.16.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.12.0 → mapwright-0.16.0}/.gitignore +1 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/CHANGELOG.md +63 -1
- {mapwright-0.12.0 → mapwright-0.16.0}/NOTICE +20 -1
- {mapwright-0.12.0 → mapwright-0.16.0}/PKG-INFO +80 -3
- {mapwright-0.12.0 → mapwright-0.16.0}/README.md +76 -2
- mapwright-0.16.0/docs/gallery/age-old.png +0 -0
- mapwright-0.16.0/docs/gallery/age-old.svg +1 -0
- mapwright-0.16.0/docs/gallery/age-young.png +0 -0
- mapwright-0.16.0/docs/gallery/age-young.svg +1 -0
- mapwright-0.16.0/docs/gallery/archipelago.png +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/docs/gallery/archipelago.svg +1 -1
- mapwright-0.16.0/docs/gallery/arctic.png +0 -0
- mapwright-0.16.0/docs/gallery/arctic.svg +1 -0
- mapwright-0.16.0/docs/gallery/continent.png +0 -0
- mapwright-0.16.0/docs/gallery/continent.svg +1 -0
- mapwright-0.16.0/docs/gallery/desert.png +0 -0
- mapwright-0.16.0/docs/gallery/desert.svg +1 -0
- mapwright-0.16.0/docs/gallery/highlands.png +0 -0
- mapwright-0.16.0/docs/gallery/highlands.svg +1 -0
- mapwright-0.16.0/docs/gallery/islands.png +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/docs/gallery/islands.svg +1 -1
- mapwright-0.16.0/docs/gallery/pangaea.png +0 -0
- mapwright-0.16.0/docs/gallery/pangaea.svg +1 -0
- mapwright-0.16.0/docs/gallery/regions.png +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/docs/gallery/regions.svg +1 -1
- mapwright-0.16.0/docs/gallery/roads.png +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/docs/gallery/roads.svg +1 -1
- mapwright-0.16.0/docs/gallery/template-atoll.png +0 -0
- mapwright-0.16.0/docs/gallery/template-atoll.svg +1 -0
- mapwright-0.16.0/docs/gallery/template-isthmus.png +0 -0
- mapwright-0.16.0/docs/gallery/template-isthmus.svg +1 -0
- mapwright-0.16.0/docs/gallery/tropical.png +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/docs/gallery/tropical.svg +1 -1
- {mapwright-0.12.0 → mapwright-0.16.0}/examples/gallery.py +17 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/pyproject.toml +5 -2
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/__init__.py +6 -1
- mapwright-0.16.0/src/mapwright/atlas_renderer.py +359 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/config.py +4 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/terrain.py +281 -73
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_api_contract.py +3 -0
- mapwright-0.16.0/tests/test_atlas_renderer.py +163 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_terrain.py +60 -0
- mapwright-0.12.0/docs/gallery/archipelago.png +0 -0
- mapwright-0.12.0/docs/gallery/arctic.png +0 -0
- mapwright-0.12.0/docs/gallery/arctic.svg +0 -1
- mapwright-0.12.0/docs/gallery/continent.png +0 -0
- mapwright-0.12.0/docs/gallery/continent.svg +0 -1
- mapwright-0.12.0/docs/gallery/desert.png +0 -0
- mapwright-0.12.0/docs/gallery/desert.svg +0 -1
- mapwright-0.12.0/docs/gallery/highlands.png +0 -0
- mapwright-0.12.0/docs/gallery/highlands.svg +0 -1
- mapwright-0.12.0/docs/gallery/islands.png +0 -0
- mapwright-0.12.0/docs/gallery/pangaea.png +0 -0
- mapwright-0.12.0/docs/gallery/pangaea.svg +0 -1
- mapwright-0.12.0/docs/gallery/regions.png +0 -0
- mapwright-0.12.0/docs/gallery/roads.png +0 -0
- mapwright-0.12.0/docs/gallery/tropical.png +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/.github/workflows/ci.yml +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/.github/workflows/publish.yml +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/LICENSE +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/docs/gallery/citadel.png +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/docs/gallery/citadel.svg +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/docs/gallery/dungeon.png +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/docs/gallery/dungeon.svg +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/docs/gallery/port.png +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/docs/gallery/port.svg +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/docs/gallery/town.png +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/docs/gallery/town.svg +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/examples/benchmark.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/_geometry.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/_graph.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/_serde.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/dungeon.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/dungeon_renderer.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/names.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/regions.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/rng.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/roads.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/settlement.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/settlement_renderer.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/src/mapwright/svg_renderer.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_config.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_dungeon.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_dungeon_renderer.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_geometry.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_graph.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_names.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_properties.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_regions.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_rng.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_roads.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_serialize.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_settlement.py +0 -0
- {mapwright-0.12.0 → mapwright-0.16.0}/tests/test_svg_renderer.py +0 -0
|
@@ -8,6 +8,65 @@ 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.16.0] — 2026-06-02
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
- **`AtlasRenderer` + `ArtPack` — hand-drawn / themed atlas rendering.** A new
|
|
15
|
+
optional renderer that stamps symbol images from an external *art pack* onto a
|
|
16
|
+
`TerrainResult` to produce a hand-drawn (or any-style) fantasy-map look:
|
|
17
|
+
mountains (young/mid/old by `land_age`), hills, forests (pine/deciduous/cactus
|
|
18
|
+
by climate), dunes, settlements (by marker kind), and sea decorations + a
|
|
19
|
+
compass rose. mapwright ships **no art** — an art pack is a directory of PNG
|
|
20
|
+
symbols plus an optional `manifest.json` that maps mapwright's neutral concepts
|
|
21
|
+
(`Biome`, `land_age`, settlement size) onto art "slots"; a host (e.g. an
|
|
22
|
+
image-generation service) produces packs in any style and this renderer just
|
|
23
|
+
places them. `ArtPack.from_directory()` reads a manifest, or auto-discovers
|
|
24
|
+
slots from a conventional (Nortantis-style) folder layout. Missing fine-grained
|
|
25
|
+
slots fall back to a coarser sibling, so partial packs still work. Requires
|
|
26
|
+
Pillow — install the optional extra: `pip install "mapwright[atlas]"`. The
|
|
27
|
+
core library stays numpy-only; without Pillow, `import mapwright` is unaffected
|
|
28
|
+
and only `AtlasRenderer` rendering raises a clear install hint.
|
|
29
|
+
|
|
30
|
+
## [0.15.0] — 2026-06-02
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
- **`land_age` — geological age of the terrain** (a mapwright-original idea). A new
|
|
34
|
+
`WorldMapConfig` knob: 0 = *young* (jagged, tall, snow-capped peaks — think the
|
|
35
|
+
Rockies), 1 = *old* (worn down to rounded hills and lowlands — the Appalachians).
|
|
36
|
+
It shapes the hypsometric curve (a gamma on land elevation → more/fewer mountains)
|
|
37
|
+
and, for old land, applies weathering passes that smooth the relief. The default
|
|
38
|
+
(0.5) is neutral — terrain is byte-identical to before, so the feature is purely
|
|
39
|
+
opt-in. First slice of a broader age/era/wealth axis (forests, settlements next).
|
|
40
|
+
|
|
41
|
+
## [0.14.0] — 2026-06-02
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
- **Heightmap templates** — an optional, controllable alternative to the default
|
|
45
|
+
tectonic auto-generation. `RegionalTerrainGenerator.generate(..., template=…)`
|
|
46
|
+
builds the heightmap from composable elevation ops (hill, pit, range, trough,
|
|
47
|
+
strait) spread over the cell graph, and `TERRAIN_TEMPLATES` provides named
|
|
48
|
+
continent archetypes: `continents`, `archipelago`, `peninsula`, `isthmus`,
|
|
49
|
+
`volcano`, `atoll`. A template sets the *pattern* of high/low ground; `config`
|
|
50
|
+
still drives sea level (percentile), climate, and rivers on top. Clean-room from
|
|
51
|
+
the documented idea in Azgaar's Fantasy-Map-Generator (see NOTICE). The default
|
|
52
|
+
(no template) tectonic terrain is byte-identical — this is purely additive.
|
|
53
|
+
|
|
54
|
+
## [0.13.0] — 2026-06-02
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
- **Tectonic-plate terrain.** The heightmap is now built from a simple plate
|
|
58
|
+
simulation instead of a radial/noise field: the map is tiled into continental
|
|
59
|
+
and oceanic plates (Voronoi over plate seeds) that drift, and **convergent plate
|
|
60
|
+
boundaries raise mountain ranges** — so continents get organic coastlines *and*
|
|
61
|
+
believable linear mountain belts, with no centre bias. The `continents` knob is
|
|
62
|
+
the number of continental plates; oceanic plates interleave between them, so
|
|
63
|
+
multi-continent worlds (`archipelago`, `islands`) fragment into scattered islands
|
|
64
|
+
around an inner sea rather than one blob. Sea level is now **percentile-based**
|
|
65
|
+
(`sea_level` maps directly to the water fraction). Rivers form reliably across
|
|
66
|
+
all presets (a flux-quantile source threshold). Clean-room from the documented
|
|
67
|
+
ideas of Nortantis (tectonics) and the Fractal Worldmap Generator (percentile
|
|
68
|
+
sea level); see NOTICE. Regenerated the terrain/roads/regions gallery.
|
|
69
|
+
|
|
11
70
|
## [0.12.0] — 2026-06-02
|
|
12
71
|
|
|
13
72
|
### Changed
|
|
@@ -198,7 +257,10 @@ Initial release. Domain-neutral procedural fantasy map & world generation.
|
|
|
198
257
|
polygons, coastline, rivers, labelled markers. `compute_cell_polygons` rebuilds
|
|
199
258
|
convex Voronoi polygons via half-plane clipping.
|
|
200
259
|
|
|
201
|
-
[Unreleased]: https://github.com/sligara7/mapwright/compare/v0.
|
|
260
|
+
[Unreleased]: https://github.com/sligara7/mapwright/compare/v0.15.0...HEAD
|
|
261
|
+
[0.15.0]: https://github.com/sligara7/mapwright/compare/v0.14.0...v0.15.0
|
|
262
|
+
[0.14.0]: https://github.com/sligara7/mapwright/compare/v0.13.0...v0.14.0
|
|
263
|
+
[0.13.0]: https://github.com/sligara7/mapwright/compare/v0.12.0...v0.13.0
|
|
202
264
|
[0.12.0]: https://github.com/sligara7/mapwright/compare/v0.11.0...v0.12.0
|
|
203
265
|
[0.11.0]: https://github.com/sligara7/mapwright/compare/v0.10.0...v0.11.0
|
|
204
266
|
[0.10.0]: https://github.com/sligara7/mapwright/compare/v0.9.0...v0.10.0
|
|
@@ -14,7 +14,9 @@ copied from them; this NOTICE credits the lineage of the techniques.
|
|
|
14
14
|
https://github.com/Azgaar/Fantasy-Map-Generator
|
|
15
15
|
Ideas: jittered-grid Voronoi with Lloyd relaxation, flux-accumulation
|
|
16
16
|
rivers, temperature x precipitation -> biome matrix, Markov per-culture
|
|
17
|
-
name generation, single-seed determinism, SVG cartographic rendering
|
|
17
|
+
name generation, single-seed determinism, SVG cartographic rendering,
|
|
18
|
+
composable heightmap templates (hill/range/pit/trough/strait ops combined
|
|
19
|
+
into named continent archetypes).
|
|
18
20
|
|
|
19
21
|
* "Generating fantasy maps" by Martin O'Leary (mewo2), and its C++ implementation
|
|
20
22
|
FantasyMapGenerator by Ryan L. Guy (rlguy) (Zlib License)
|
|
@@ -31,5 +33,22 @@ copied from them; this NOTICE credits the lineage of the techniques.
|
|
|
31
33
|
subdivided into Voronoi wards. mapwright's settlement code is an independent
|
|
32
34
|
clean-room implementation built on its own geometry primitives.
|
|
33
35
|
|
|
36
|
+
* Nortantis by Joseph Heydorn (AGPLv3)
|
|
37
|
+
https://github.com/jeheydorn/nortantis
|
|
38
|
+
Concept only (NO code derived — AGPLv3 is incompatible with this MIT
|
|
39
|
+
project): the idea of shaping land with a simple tectonic-plate simulation
|
|
40
|
+
(continental/oceanic plates whose convergent boundaries raise mountain
|
|
41
|
+
ranges), and the general approach of compositing a map from stamped symbol
|
|
42
|
+
images. mapwright's plate model and AtlasRenderer are independent clean-room
|
|
43
|
+
implementations; AtlasRenderer's optional art-pack auto-discovery merely
|
|
44
|
+
recognises a Nortantis-like folder naming convention (mountains/, hills/,
|
|
45
|
+
trees/, …) as a data layout — no Nortantis code or art is used or bundled.
|
|
46
|
+
|
|
47
|
+
* "Fractal Worldmap Generator" by John Olsson / Torben Æ. Mogensen
|
|
48
|
+
https://www.lysator.liu.se/~johol/fwmg/fwmg.html
|
|
49
|
+
Ideas (clean-room): a percentile/histogram sea level so a target water
|
|
50
|
+
fraction is met, and elevation built from many random "faults" rather than a
|
|
51
|
+
centred radial field.
|
|
52
|
+
|
|
34
53
|
The name lists ("namebases") bundled with mapwright are original, hand-authored
|
|
35
54
|
data, not derived from any third-party generator.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mapwright
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.16.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
|
|
@@ -16,8 +16,11 @@ Classifier: Topic :: Games/Entertainment :: Role-Playing
|
|
|
16
16
|
Classifier: Topic :: Multimedia :: Graphics
|
|
17
17
|
Requires-Python: >=3.10
|
|
18
18
|
Requires-Dist: numpy>=1.26
|
|
19
|
+
Provides-Extra: atlas
|
|
20
|
+
Requires-Dist: pillow>=10; extra == 'atlas'
|
|
19
21
|
Provides-Extra: dev
|
|
20
22
|
Requires-Dist: hypothesis>=6; extra == 'dev'
|
|
23
|
+
Requires-Dist: pillow>=10; extra == 'dev'
|
|
21
24
|
Requires-Dist: pytest>=7.4; extra == 'dev'
|
|
22
25
|
Requires-Dist: ruff>=0.1; extra == 'dev'
|
|
23
26
|
Description-Content-Type: text/markdown
|
|
@@ -65,10 +68,19 @@ produced by [`examples/gallery.py`](examples/gallery.py):
|
|
|
65
68
|
<tr>
|
|
66
69
|
<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>
|
|
67
70
|
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/regions.png" alt="land partitioned into named territories"><br><sub><code>RegionGenerator</code></sub></td>
|
|
68
|
-
<td></td>
|
|
71
|
+
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/template-isthmus.png" alt="isthmus heightmap template"><br><sub><code>template="isthmus"</code></sub></td>
|
|
72
|
+
</tr>
|
|
73
|
+
<tr>
|
|
74
|
+
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/template-atoll.png" alt="atoll heightmap template"><br><sub><code>template="atoll"</code></sub></td>
|
|
75
|
+
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/age-young.png" alt="young jagged terrain"><br><sub><code>land_age=0</code> (young)</sub></td>
|
|
76
|
+
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/age-old.png" alt="old worn terrain"><br><sub><code>land_age=1</code> (old)</sub></td>
|
|
69
77
|
</tr>
|
|
70
78
|
</table>
|
|
71
79
|
|
|
80
|
+
The two right-hand maps above are the **same continent** at `land_age=0` (young, jagged,
|
|
81
|
+
snow-capped peaks) vs `land_age=1` (old, worn down to rounded hills) — a mapwright-original
|
|
82
|
+
"geological age" knob.
|
|
83
|
+
|
|
72
84
|
Regenerate them with `python examples/gallery.py` (SVGs always; PNGs when
|
|
73
85
|
`cairosvg` is installed).
|
|
74
86
|
|
|
@@ -76,6 +88,8 @@ Regenerate them with `python examples/gallery.py` (SVGs always; PNGs when
|
|
|
76
88
|
|
|
77
89
|
```bash
|
|
78
90
|
pip install mapwright
|
|
91
|
+
# hand-drawn / themed atlas rendering (adds Pillow):
|
|
92
|
+
pip install "mapwright[atlas]"
|
|
79
93
|
# latest from git:
|
|
80
94
|
pip install git+https://github.com/sligara7/mapwright.git
|
|
81
95
|
# or, for local development:
|
|
@@ -112,6 +126,18 @@ WorldMapConfig.from_dict({"temperature": 5, "continents": -3}) # -> safe, clamp
|
|
|
112
126
|
Presets: `continent`, `pangaea`, `archipelago`, `islands`, `highlands`, `desert`,
|
|
113
127
|
`arctic`, `tropical`.
|
|
114
128
|
|
|
129
|
+
Terrain defaults to a **tectonic-plate** simulation (organic coasts + mountain ranges).
|
|
130
|
+
For a controllable continent *archetype*, pass a `template` (Azgaar-style composed
|
|
131
|
+
heightmap ops) — `config` still drives sea level, climate, and rivers on top of it:
|
|
132
|
+
|
|
133
|
+
```python
|
|
134
|
+
from mapwright import RegionalTerrainGenerator, SeededRNG, WorldMapConfig, TERRAIN_TEMPLATES
|
|
135
|
+
|
|
136
|
+
print(list(TERRAIN_TEMPLATES)) # archipelago, volcano, peninsula, isthmus, atoll, continents
|
|
137
|
+
world = RegionalTerrainGenerator(SeededRNG(5)).generate(
|
|
138
|
+
80, 58, WorldMapConfig(sea_level=0.55), template="archipelago")
|
|
139
|
+
```
|
|
140
|
+
|
|
115
141
|
Save and reload worlds (and dungeons) — JSON round-trips losslessly, so a reloaded
|
|
116
142
|
world renders byte-identically:
|
|
117
143
|
|
|
@@ -169,9 +195,10 @@ Settlement presets: `hamlet`, `village`, `town`, `city`, `port`, `citadel`.
|
|
|
169
195
|
|-----------|--------------|
|
|
170
196
|
| `SeededRNG` | One seed drives everything; `.derive(label)` yields independent, reproducible sub-streams (unifies stdlib + numpy). |
|
|
171
197
|
| `NameGenerator` | Order-k character Markov names over hand-authored culture namebases; reproducible across processes. |
|
|
172
|
-
| `RegionalTerrainGenerator` | Voronoi cells (Lloyd-relaxed) →
|
|
198
|
+
| `RegionalTerrainGenerator` | Voronoi cells (Lloyd-relaxed) → **tectonic-plate** heightmap (organic coasts + mountain ranges at plate collisions; percentile sea level) → Planchon–Darboux depression fill → flux + hydraulic/creep erosion → rivers + inland lakes → latitude/elevation climate with **rain-shadow** → Whittaker biomes. |
|
|
173
199
|
| `compute_cell_polygons` | Reconstructs convex Voronoi polygons (half-plane clipping) for vector rendering. |
|
|
174
200
|
| `RegionalSVGRenderer` | Shaded-relief (hillshade) SVG: biome polygons, coastline, rivers, roads, labelled markers. |
|
|
201
|
+
| `AtlasRenderer` / `ArtPack` | Hand-drawn / themed PNG: stamps symbols from an external *art pack* (mountains, forests, hills, settlements, sea decorations) onto the terrain. mapwright ships no art — a pack is a skin. Needs `pip install "mapwright[atlas]"`. |
|
|
175
202
|
| `RegionalRoadGenerator` | Connects settlement sites with trade routes — an MST whose edges are A*-routed over the terrain (avoids sea, climbs/crosses rivers at a cost). |
|
|
176
203
|
| `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. |
|
|
177
204
|
| `DungeonGenerator` | BSP-partitioned rooms + minimum-spanning-tree corridors → rooms, corridor cells, and a walkable grid (with `Dungeon.ascii()`). |
|
|
@@ -182,6 +209,56 @@ Settlement presets: `hamlet`, `village`, `town`, `city`, `port`, `citadel`.
|
|
|
182
209
|
Everything is neutral: `RegionalTerrainGenerator` returns a `TerrainResult` of `TerrainCell`s
|
|
183
210
|
(each with a `Biome`), and you decide how a `Biome` maps to your world.
|
|
184
211
|
|
|
212
|
+
## Atlas rendering & art packs
|
|
213
|
+
|
|
214
|
+
`RegionalSVGRenderer` draws a clean shaded-relief map. For a **hand-drawn** (or neon, or
|
|
215
|
+
scrap-metal, or any) look, `AtlasRenderer` stamps little symbol images — mountains, trees,
|
|
216
|
+
hills, towns, sea monsters, a compass — placed exactly where the physics put them.
|
|
217
|
+
|
|
218
|
+
mapwright bundles **no art**. The renderer is the *engine*; the art is a separate **art pack**
|
|
219
|
+
you point it at, so the same world can wear any style without re-generating anything:
|
|
220
|
+
|
|
221
|
+
```python
|
|
222
|
+
from mapwright import SeededRNG, RegionalTerrainGenerator, ArtPack, AtlasRenderer, Marker
|
|
223
|
+
|
|
224
|
+
terrain = RegionalTerrainGenerator(SeededRNG(7)).generate(80, 56)
|
|
225
|
+
markers = [Marker("Eldmoor", 40, 28, kind="settlement_castle")]
|
|
226
|
+
|
|
227
|
+
pack = ArtPack.from_directory("path/to/my-art-pack") # needs mapwright[atlas]
|
|
228
|
+
png = AtlasRenderer(pack, scale=12, seed=7).render(terrain, markers, land_age=0.3)
|
|
229
|
+
open("atlas.png", "wb").write(png)
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
An **art pack** is just a directory of transparent PNG symbols plus an optional
|
|
233
|
+
`manifest.json` that maps mapwright's neutral concepts onto art **slots**:
|
|
234
|
+
|
|
235
|
+
```jsonc
|
|
236
|
+
{
|
|
237
|
+
"name": "my-pack",
|
|
238
|
+
"colors": {"parchment": "#ecdfbf", "water": "#b5cad1",
|
|
239
|
+
"coast": "#463c2c", "label": "#2b2218"},
|
|
240
|
+
"slots": {
|
|
241
|
+
"mountain.young": {"files": ["mountains/sharp/*.png"], "width": 2.0, "anchor": "bottom"},
|
|
242
|
+
"mountain.old": {"files": ["mountains/eroded/*.png"]},
|
|
243
|
+
"hill": {"files": ["hills/*.png"]},
|
|
244
|
+
"tree.pine": {"files": ["trees/pine/*.png"]},
|
|
245
|
+
"tree.deciduous": {"files": ["trees/leafy/*.png"]},
|
|
246
|
+
"city.castle": {"files": ["cities/castle*.png"]},
|
|
247
|
+
"decoration.compass": {"files": ["compass/*.png"], "anchor": "center"}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Slots the renderer asks for: terrain relief — `mountain.young` / `mountain.mid` /
|
|
253
|
+
`mountain.old` (chosen by `land_age`), `hill`, `tree.pine` / `tree.deciduous` /
|
|
254
|
+
`tree.cactus` (by climate), `dune`; settlements — `city.castle` / `city.large` /
|
|
255
|
+
`city.town` / `city.village` (by marker `kind`); decorations — `decoration.creature`
|
|
256
|
+
/ `decoration.ship` / `decoration.compass`. A missing fine slot falls back to a coarser
|
|
257
|
+
sibling (`mountain.mid` → any `mountain.*`), so partial packs still render. With **no**
|
|
258
|
+
`manifest.json`, `ArtPack.from_directory()` auto-discovers slots from a conventional
|
|
259
|
+
folder layout. Because packs are pure data, a host like an image-generation service can
|
|
260
|
+
**produce them on demand** in any style — the generation stays the same; the pack is the skin.
|
|
261
|
+
|
|
185
262
|
## Determinism
|
|
186
263
|
|
|
187
264
|
Every generator draws from a `SeededRNG`. The same seed (and parameters) reproduces an
|
|
@@ -41,10 +41,19 @@ produced by [`examples/gallery.py`](examples/gallery.py):
|
|
|
41
41
|
<tr>
|
|
42
42
|
<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>
|
|
43
43
|
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/regions.png" alt="land partitioned into named territories"><br><sub><code>RegionGenerator</code></sub></td>
|
|
44
|
-
<td></td>
|
|
44
|
+
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/template-isthmus.png" alt="isthmus heightmap template"><br><sub><code>template="isthmus"</code></sub></td>
|
|
45
|
+
</tr>
|
|
46
|
+
<tr>
|
|
47
|
+
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/template-atoll.png" alt="atoll heightmap template"><br><sub><code>template="atoll"</code></sub></td>
|
|
48
|
+
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/age-young.png" alt="young jagged terrain"><br><sub><code>land_age=0</code> (young)</sub></td>
|
|
49
|
+
<td align="center"><img width="240" src="https://raw.githubusercontent.com/sligara7/mapwright/main/docs/gallery/age-old.png" alt="old worn terrain"><br><sub><code>land_age=1</code> (old)</sub></td>
|
|
45
50
|
</tr>
|
|
46
51
|
</table>
|
|
47
52
|
|
|
53
|
+
The two right-hand maps above are the **same continent** at `land_age=0` (young, jagged,
|
|
54
|
+
snow-capped peaks) vs `land_age=1` (old, worn down to rounded hills) — a mapwright-original
|
|
55
|
+
"geological age" knob.
|
|
56
|
+
|
|
48
57
|
Regenerate them with `python examples/gallery.py` (SVGs always; PNGs when
|
|
49
58
|
`cairosvg` is installed).
|
|
50
59
|
|
|
@@ -52,6 +61,8 @@ Regenerate them with `python examples/gallery.py` (SVGs always; PNGs when
|
|
|
52
61
|
|
|
53
62
|
```bash
|
|
54
63
|
pip install mapwright
|
|
64
|
+
# hand-drawn / themed atlas rendering (adds Pillow):
|
|
65
|
+
pip install "mapwright[atlas]"
|
|
55
66
|
# latest from git:
|
|
56
67
|
pip install git+https://github.com/sligara7/mapwright.git
|
|
57
68
|
# or, for local development:
|
|
@@ -88,6 +99,18 @@ WorldMapConfig.from_dict({"temperature": 5, "continents": -3}) # -> safe, clamp
|
|
|
88
99
|
Presets: `continent`, `pangaea`, `archipelago`, `islands`, `highlands`, `desert`,
|
|
89
100
|
`arctic`, `tropical`.
|
|
90
101
|
|
|
102
|
+
Terrain defaults to a **tectonic-plate** simulation (organic coasts + mountain ranges).
|
|
103
|
+
For a controllable continent *archetype*, pass a `template` (Azgaar-style composed
|
|
104
|
+
heightmap ops) — `config` still drives sea level, climate, and rivers on top of it:
|
|
105
|
+
|
|
106
|
+
```python
|
|
107
|
+
from mapwright import RegionalTerrainGenerator, SeededRNG, WorldMapConfig, TERRAIN_TEMPLATES
|
|
108
|
+
|
|
109
|
+
print(list(TERRAIN_TEMPLATES)) # archipelago, volcano, peninsula, isthmus, atoll, continents
|
|
110
|
+
world = RegionalTerrainGenerator(SeededRNG(5)).generate(
|
|
111
|
+
80, 58, WorldMapConfig(sea_level=0.55), template="archipelago")
|
|
112
|
+
```
|
|
113
|
+
|
|
91
114
|
Save and reload worlds (and dungeons) — JSON round-trips losslessly, so a reloaded
|
|
92
115
|
world renders byte-identically:
|
|
93
116
|
|
|
@@ -145,9 +168,10 @@ Settlement presets: `hamlet`, `village`, `town`, `city`, `port`, `citadel`.
|
|
|
145
168
|
|-----------|--------------|
|
|
146
169
|
| `SeededRNG` | One seed drives everything; `.derive(label)` yields independent, reproducible sub-streams (unifies stdlib + numpy). |
|
|
147
170
|
| `NameGenerator` | Order-k character Markov names over hand-authored culture namebases; reproducible across processes. |
|
|
148
|
-
| `RegionalTerrainGenerator` | Voronoi cells (Lloyd-relaxed) →
|
|
171
|
+
| `RegionalTerrainGenerator` | Voronoi cells (Lloyd-relaxed) → **tectonic-plate** heightmap (organic coasts + mountain ranges at plate collisions; percentile sea level) → Planchon–Darboux depression fill → flux + hydraulic/creep erosion → rivers + inland lakes → latitude/elevation climate with **rain-shadow** → Whittaker biomes. |
|
|
149
172
|
| `compute_cell_polygons` | Reconstructs convex Voronoi polygons (half-plane clipping) for vector rendering. |
|
|
150
173
|
| `RegionalSVGRenderer` | Shaded-relief (hillshade) SVG: biome polygons, coastline, rivers, roads, labelled markers. |
|
|
174
|
+
| `AtlasRenderer` / `ArtPack` | Hand-drawn / themed PNG: stamps symbols from an external *art pack* (mountains, forests, hills, settlements, sea decorations) onto the terrain. mapwright ships no art — a pack is a skin. Needs `pip install "mapwright[atlas]"`. |
|
|
151
175
|
| `RegionalRoadGenerator` | Connects settlement sites with trade routes — an MST whose edges are A*-routed over the terrain (avoids sea, climbs/crosses rivers at a cost). |
|
|
152
176
|
| `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. |
|
|
153
177
|
| `DungeonGenerator` | BSP-partitioned rooms + minimum-spanning-tree corridors → rooms, corridor cells, and a walkable grid (with `Dungeon.ascii()`). |
|
|
@@ -158,6 +182,56 @@ Settlement presets: `hamlet`, `village`, `town`, `city`, `port`, `citadel`.
|
|
|
158
182
|
Everything is neutral: `RegionalTerrainGenerator` returns a `TerrainResult` of `TerrainCell`s
|
|
159
183
|
(each with a `Biome`), and you decide how a `Biome` maps to your world.
|
|
160
184
|
|
|
185
|
+
## Atlas rendering & art packs
|
|
186
|
+
|
|
187
|
+
`RegionalSVGRenderer` draws a clean shaded-relief map. For a **hand-drawn** (or neon, or
|
|
188
|
+
scrap-metal, or any) look, `AtlasRenderer` stamps little symbol images — mountains, trees,
|
|
189
|
+
hills, towns, sea monsters, a compass — placed exactly where the physics put them.
|
|
190
|
+
|
|
191
|
+
mapwright bundles **no art**. The renderer is the *engine*; the art is a separate **art pack**
|
|
192
|
+
you point it at, so the same world can wear any style without re-generating anything:
|
|
193
|
+
|
|
194
|
+
```python
|
|
195
|
+
from mapwright import SeededRNG, RegionalTerrainGenerator, ArtPack, AtlasRenderer, Marker
|
|
196
|
+
|
|
197
|
+
terrain = RegionalTerrainGenerator(SeededRNG(7)).generate(80, 56)
|
|
198
|
+
markers = [Marker("Eldmoor", 40, 28, kind="settlement_castle")]
|
|
199
|
+
|
|
200
|
+
pack = ArtPack.from_directory("path/to/my-art-pack") # needs mapwright[atlas]
|
|
201
|
+
png = AtlasRenderer(pack, scale=12, seed=7).render(terrain, markers, land_age=0.3)
|
|
202
|
+
open("atlas.png", "wb").write(png)
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
An **art pack** is just a directory of transparent PNG symbols plus an optional
|
|
206
|
+
`manifest.json` that maps mapwright's neutral concepts onto art **slots**:
|
|
207
|
+
|
|
208
|
+
```jsonc
|
|
209
|
+
{
|
|
210
|
+
"name": "my-pack",
|
|
211
|
+
"colors": {"parchment": "#ecdfbf", "water": "#b5cad1",
|
|
212
|
+
"coast": "#463c2c", "label": "#2b2218"},
|
|
213
|
+
"slots": {
|
|
214
|
+
"mountain.young": {"files": ["mountains/sharp/*.png"], "width": 2.0, "anchor": "bottom"},
|
|
215
|
+
"mountain.old": {"files": ["mountains/eroded/*.png"]},
|
|
216
|
+
"hill": {"files": ["hills/*.png"]},
|
|
217
|
+
"tree.pine": {"files": ["trees/pine/*.png"]},
|
|
218
|
+
"tree.deciduous": {"files": ["trees/leafy/*.png"]},
|
|
219
|
+
"city.castle": {"files": ["cities/castle*.png"]},
|
|
220
|
+
"decoration.compass": {"files": ["compass/*.png"], "anchor": "center"}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Slots the renderer asks for: terrain relief — `mountain.young` / `mountain.mid` /
|
|
226
|
+
`mountain.old` (chosen by `land_age`), `hill`, `tree.pine` / `tree.deciduous` /
|
|
227
|
+
`tree.cactus` (by climate), `dune`; settlements — `city.castle` / `city.large` /
|
|
228
|
+
`city.town` / `city.village` (by marker `kind`); decorations — `decoration.creature`
|
|
229
|
+
/ `decoration.ship` / `decoration.compass`. A missing fine slot falls back to a coarser
|
|
230
|
+
sibling (`mountain.mid` → any `mountain.*`), so partial packs still render. With **no**
|
|
231
|
+
`manifest.json`, `ArtPack.from_directory()` auto-discovers slots from a conventional
|
|
232
|
+
folder layout. Because packs are pure data, a host like an image-generation service can
|
|
233
|
+
**produce them on demand** in any style — the generation stays the same; the pack is the skin.
|
|
234
|
+
|
|
161
235
|
## Determinism
|
|
162
236
|
|
|
163
237
|
Every generator draws from a `SeededRNG`. The same seed (and parameters) reproduces an
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="576" height="396" viewBox="0 0 576 396"><rect width="576" height="396" fill="#183e56"/><g stroke-linejoin="round"><polygon points="0.0,0.0 13.2,0.0 16.3,18.3 0.0,27.9" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="13.2,0.0 41.2,0.0 41.5,8.2 24.3,21.4 16.3,18.3" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="41.2,0.0 70.8,0.0 66.9,20.2 51.0,19.4 41.5,8.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="70.8,0.0 89.5,0.0 95.2,15.0 90.7,21.5 66.7,21.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="89.5,0.0 117.5,0.0 111.8,15.0 95.2,15.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="117.5,0.0 133.2,0.0 139.4,21.5 116.3,21.5 111.8,15.0" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="133.2,0.0 157.1,0.0 154.5,18.1 139.3,21.1" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="157.1,0.0 177.1,0.0 175.9,19.0 153.5,25.0" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="177.1,0.0 196.3,0.0 198.2,17.1 183.9,24.0 175.9,19.0" fill="#8fbe78" stroke="#8fbe78" stroke-width="0.5"/><polygon points="196.3,0.0 220.0,0.0 221.2,20.9 210.5,23.6 198.2,17.1" fill="#ced6c5" stroke="#ced6c5" stroke-width="0.5"/><polygon points="220.0,0.0 245.4,0.0 243.9,14.4 221.2,20.8" fill="#e5efdc" stroke="#e5efdc" stroke-width="0.5"/><polygon points="245.4,0.0 267.8,0.0 267.8,21.4 253.7,24.2 243.9,14.4" fill="#ecf6e2" stroke="#ecf6e2" stroke-width="0.5"/><polygon points="267.8,0.0 290.2,0.0 293.3,14.2 287.5,21.5 272.2,24.0 267.8,21.4" fill="#e4edda" stroke="#e4edda" stroke-width="0.5"/><polygon points="290.2,0.0 316.8,0.0 311.7,16.3 293.3,14.2" fill="#e6f0dc" stroke="#e6f0dc" stroke-width="0.5"/><polygon points="316.8,0.0 335.7,0.0 335.0,21.4 314.5,20.3 311.7,16.3" fill="#c7c07c" stroke="#c7c07c" stroke-width="0.5"/><polygon points="335.7,0.0 350.5,0.0 357.6,15.9 353.4,20.8 335.0,21.6" fill="#ffffff" stroke="#ffffff" stroke-width="0.5"/><polygon points="350.5,0.0 374.5,0.0 374.0,14.0 357.6,15.9" fill="#9ea1a4" stroke="#9ea1a4" stroke-width="0.5"/><polygon points="374.5,0.0 398.2,0.0 398.2,13.9 395.3,16.3 374.1,13.7" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="398.2,0.0 420.2,0.0 415.8,17.5 398.2,14.0" fill="#7c8177" stroke="#7c8177" stroke-width="0.5"/><polygon points="420.2,0.0 438.8,0.0 438.8,20.2 418.0,20.2 415.8,17.5" fill="#7c8177" stroke="#7c8177" stroke-width="0.5"/><polygon points="438.8,0.0 463.7,0.0 466.1,14.0 464.0,17.5 442.6,24.1 438.8,20.2" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="463.7,0.0 494.1,0.0 490.2,15.6 466.1,14.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="494.1,0.0 515.3,0.0 516.2,17.3 508.7,24.0 494.4,22.8 490.2,15.6" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="515.3,0.0 535.5,0.0 535.5,21.6 516.2,17.3" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="535.5,0.0 553.5,0.0 553.5,21.0 547.8,24.2 535.5,21.1" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="553.5,0.0 576.0,0.0 576.0,23.9 553.5,21.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,33.3 0.0,27.9 16.3,18.3 24.3,21.4 29.9,35.0 21.9,45.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="29.9,35.0 24.3,21.4 41.5,8.2 51.0,19.4 42.8,35.9" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="42.8,35.9 51.0,19.4 68.0,20.2 68.6,38.4 49.1,44.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="68.6,37.8 68.0,21.5 90.7,21.5 93.6,36.1 86.9,41.1" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="93.6,36.1 90.7,21.5 95.2,15.0 111.8,15.0 116.3,21.5 113.3,36.7 106.8,41.4" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="113.3,36.7 116.3,21.5 138.9,21.5 137.8,45.7" fill="#ffefba" stroke="#ffefba" stroke-width="0.5"/><polygon points="137.8,45.0 138.9,21.1 161.6,16.7 161.9,40.4 155.6,47.5 147.5,49.3" fill="#f4dfae" stroke="#f4dfae" stroke-width="0.5"/><polygon points="161.9,40.4 161.7,22.8 175.9,19.0 183.9,24.0 185.4,42.7" fill="#efdbaa" stroke="#efdbaa" stroke-width="0.5"/><polygon points="185.1,39.8 183.9,24.0 198.2,17.1 210.5,23.6 201.5,45.9" fill="#8ab673" stroke="#8ab673" stroke-width="0.5"/><polygon points="202.2,44.3 210.5,23.6 221.1,20.9 230.4,39.0 220.7,52.7" fill="#96c67d" stroke="#96c67d" stroke-width="0.5"/><polygon points="230.4,39.0 221.1,20.8 243.9,14.4 253.7,24.2 246.5,40.9" fill="#ecf6e2" stroke="#ecf6e2" stroke-width="0.5"/><polygon points="246.5,40.9 253.7,24.2 267.8,21.4 272.2,24.0 273.3,45.7 266.1,51.3 248.8,44.9" fill="#f1fbe6" stroke="#f1fbe6" stroke-width="0.5"/><polygon points="273.3,45.7 272.2,24.0 287.5,21.5 297.3,41.1 290.5,49.1" fill="#e8f2de" stroke="#e8f2de" stroke-width="0.5"/><polygon points="297.3,41.1 287.5,21.5 293.3,14.2 311.7,16.3 314.5,20.3 310.7,39.6" fill="#c9c17d" stroke="#c9c17d" stroke-width="0.5"/><polygon points="310.5,40.5 314.5,20.3 335.2,21.4 335.2,40.5" fill="#ffffff" stroke="#ffffff" stroke-width="0.5"/><polygon points="335.2,42.8 335.2,21.6 353.4,20.8 358.9,42.8" fill="#d9dce0" stroke="#d9dce0" stroke-width="0.5"/><polygon points="357.9,38.8 353.4,20.8 357.6,15.9 373.7,14.1 375.1,36.6" fill="#b4b7ba" stroke="#b4b7ba" stroke-width="0.5"/><polygon points="373.6,13.6 395.3,16.3 393.8,41.1 380.4,40.6 375.1,36.6" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="393.7,42.2 395.3,16.3 398.2,14.0 415.8,17.5 418.1,20.2 414.9,36.0" fill="#7c8177" stroke="#7c8177" stroke-width="0.5"/><polygon points="414.9,36.0 418.1,20.2 438.8,20.2 442.6,24.1 442.4,31.9 425.3,45.6" fill="#7c8177" stroke="#7c8177" stroke-width="0.5"/><polygon points="442.4,31.9 442.6,24.1 464.0,17.5 470.2,37.3 464.8,43.6 452.4,44.5" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="470.2,37.3 464.0,17.5 466.1,14.0 490.2,15.6 494.4,22.8 487.5,38.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="494.4,22.8 508.7,24.0 515.8,41.3 512.6,47.3 491.2,46.0 487.5,38.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="515.8,41.3 508.7,24.0 516.2,17.3 534.7,21.4 527.3,38.7" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="534.9,20.9 547.8,24.2 548.8,41.7 537.6,47.3 527.3,38.7" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,23.9 576.0,44.6 555.8,46.3 548.8,41.7 547.8,24.2 553.5,21.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,58.5 0.0,33.3 21.9,45.5 21.9,58.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="21.9,59.4 21.9,45.5 29.9,35.0 42.8,35.9 49.1,44.2 47.6,57.9" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="47.3,60.2 49.1,44.2 68.1,38.5 71.7,64.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="70.8,57.4 68.0,37.7 86.9,41.1 85.2,60.5" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="85.2,60.8 86.9,41.1 93.6,36.1 106.8,41.4 107.3,60.8" fill="#ffffc6" stroke="#ffffc6" stroke-width="0.5"/><polygon points="107.3,59.4 106.8,41.4 113.3,36.7 136.9,45.4 123.9,61.9" fill="#ffedb9" stroke="#ffedb9" stroke-width="0.5"/><polygon points="137.3,44.8 147.5,49.3 147.5,74.1 131.7,78.8 123.9,61.9" fill="#5a9454" stroke="#5a9454" stroke-width="0.5"/><polygon points="155.6,47.5 161.9,40.4 181.4,42.3 176.4,65.4 172.6,65.7" fill="#568d50" stroke="#568d50" stroke-width="0.5"/><polygon points="182.2,38.7 199.8,45.3 195.2,65.1 176.7,63.8" fill="#8ab673" stroke="#8ab673" stroke-width="0.5"/><polygon points="200.2,43.4 220.7,52.7 224.1,68.9 195.0,65.9" fill="#cbeb99" stroke="#cbeb99" stroke-width="0.5"/><polygon points="222.8,62.9 220.7,52.7 230.4,39.0 246.5,40.9 248.8,44.9 240.0,68.3" fill="#65a65f" stroke="#65a65f" stroke-width="0.5"/><polygon points="248.8,44.9 266.1,51.3 266.6,63.5 258.8,70.9 241.4,64.5" fill="#d4f69f" stroke="#d4f69f" stroke-width="0.5"/><polygon points="266.6,63.5 266.1,51.3 273.3,45.7 290.5,49.1 292.6,61.3 283.2,71.9" fill="#ccc580" stroke="#ccc580" stroke-width="0.5"/><polygon points="292.6,61.3 290.5,49.1 297.3,41.1 311.4,39.6 316.6,61.7 311.3,68.1" fill="#cdc580" stroke="#cdc580" stroke-width="0.5"/><polygon points="316.6,61.7 311.7,40.5 337.5,40.5 333.6,59.8" fill="#cfd2d6" stroke="#cfd2d6" stroke-width="0.5"/><polygon points="333.6,59.8 337.1,42.8 354.6,42.8 358.7,58.5 353.4,66.1 340.7,67.6" fill="#847f52" stroke="#847f52" stroke-width="0.5"/><polygon points="358.7,58.5 353.7,39.3 375.1,36.6 380.4,40.6 372.5,58.5" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="372.5,58.5 380.4,40.6 394.6,41.1 396.8,49.8 392.6,61.3 379.7,67.8" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="396.8,49.8 394.8,41.9 414.9,36.0 425.3,45.6 426.2,56.6 416.8,61.5" fill="#7c8177" stroke="#7c8177" stroke-width="0.5"/><polygon points="426.2,56.6 425.3,45.6 442.4,31.9 452.4,44.5 446.2,57.6 434.4,61.3" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="446.2,57.6 452.4,44.5 464.8,43.6 471.4,62.3 464.2,72.3" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="471.4,62.3 464.8,43.6 470.2,37.3 487.5,38.2 491.2,46.0 487.7,59.1" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="487.7,59.1 491.2,46.0 512.6,47.3 514.1,52.9 497.0,70.0 496.2,70.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="514.1,52.9 512.6,47.3 515.8,41.3 527.3,38.7 537.6,47.3 534.9,59.3 525.3,64.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="534.9,59.3 537.6,47.3 548.8,41.7 555.8,46.3 551.3,67.8" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,44.6 576.0,59.6 551.7,65.7 555.8,46.3" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,81.3 0.0,58.5 22.5,58.5 22.5,78.8" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="22.5,73.2 22.5,59.3 50.4,57.7 45.4,81.1 45.1,81.3" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="45.4,81.1 49.8,60.6 62.9,62.6 70.6,88.0" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="69.2,83.4 60.7,55.3 85.4,60.6 82.8,79.0" fill="#ffefba" stroke="#ffefba" stroke-width="0.5"/><polygon points="82.8,79.0 85.4,60.8 105.8,60.8 104.7,81.0 92.9,85.7" fill="#5d9957" stroke="#5d9957" stroke-width="0.5"/><polygon points="104.7,81.0 105.9,59.2 123.9,61.9 131.7,78.8 129.3,83.3 112.8,85.6" fill="#5c9856" stroke="#5c9856" stroke-width="0.5"/><polygon points="147.5,74.1 147.5,49.3 155.6,47.5 172.6,65.7 157.2,78.8" fill="#568d50" stroke="#568d50" stroke-width="0.5"/><polygon points="159.0,85.2 157.2,78.8 172.6,65.7 173.8,65.6 184.6,89.3 183.5,91.3" fill="#589052" stroke="#589052" stroke-width="0.5"/><polygon points="184.6,89.3 172.8,63.5 195.9,65.2 195.4,82.7" fill="#ceef9b" stroke="#ceef9b" stroke-width="0.5"/><polygon points="195.4,82.7 195.9,66.0 217.5,68.3 214.4,89.9" fill="#d8fba3" stroke="#d8fba3" stroke-width="0.5"/><polygon points="218.5,61.6 236.2,67.1 238.2,85.5 234.8,90.0 228.8,91.6 214.9,86.8" fill="#d7f9a1" stroke="#d7f9a1" stroke-width="0.5"/><polygon points="235.7,62.4 258.8,70.9 258.8,85.5 238.2,85.5" fill="#d8fba3" stroke="#d8fba3" stroke-width="0.5"/><polygon points="258.8,85.9 258.8,70.9 266.6,63.5 283.2,71.9 284.1,83.9 272.2,88.6" fill="#cdc580" stroke="#cdc580" stroke-width="0.5"/><polygon points="284.2,85.2 283.2,71.9 292.6,61.3 311.3,68.1 312.0,75.3 302.4,86.4" fill="#b8b173" stroke="#b8b173" stroke-width="0.5"/><polygon points="312.0,75.3 311.3,68.1 316.6,61.7 333.6,59.8 340.7,67.6 335.6,83.3 328.7,86.1" fill="#878254" stroke="#878254" stroke-width="0.5"/><polygon points="335.6,83.3 340.7,67.6 353.4,66.1 361.5,79.0 353.7,95.9" fill="#8c8657" stroke="#8c8657" stroke-width="0.5"/><polygon points="361.5,79.0 353.4,66.1 358.7,58.5 372.5,58.5 379.7,67.8 378.3,77.5" fill="#878254" stroke="#878254" stroke-width="0.5"/><polygon points="378.1,78.8 379.7,67.8 392.6,61.3 406.0,78.8" fill="#7c774d" stroke="#7c774d" stroke-width="0.5"/><polygon points="405.2,77.8 392.6,61.3 396.8,49.8 416.8,61.5 409.5,76.6" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="409.5,76.6 416.8,61.5 426.2,56.6 434.4,61.3 436.9,83.9 425.2,87.8" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="436.9,83.9 434.4,61.3 446.2,57.6 464.2,72.3 464.2,73.4 442.7,86.6" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="473.7,85.3 464.2,73.4 464.2,72.3 471.4,62.3 487.7,59.1 496.2,70.0 488.6,82.3" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="497.0,70.0 514.1,52.9 525.3,64.0 525.2,64.2 506.9,75.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="506.9,75.2 525.2,64.2 530.8,89.1 512.1,86.4" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="530.6,88.1 525.2,64.2 525.3,64.0 534.9,59.3 550.4,67.3 551.5,77.1 532.7,88.1" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,59.6 576.0,79.0 551.6,78.2 550.2,66.1" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,101.3 0.0,81.3 18.4,79.2 23.2,97.5 19.8,102.3" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="23.2,97.5 16.2,70.9 45.1,81.3 39.3,96.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="39.3,96.2 45.1,81.3 45.4,81.1 66.4,86.8 66.6,92.1 46.6,105.8" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="66.6,92.1 66.3,84.3 82.8,79.0 92.9,85.7 91.6,101.4 87.1,106.0 72.7,102.6" fill="#f4e0ae" stroke="#f4e0ae" stroke-width="0.5"/><polygon points="91.6,101.4 92.9,85.7 104.7,81.0 112.8,85.6 110.1,104.3" fill="#5a9454" stroke="#5a9454" stroke-width="0.5"/><polygon points="109.1,111.4 112.8,85.6 129.3,83.3 132.5,93.8" fill="#589153" stroke="#589153" stroke-width="0.5"/><polygon points="132.5,93.8 129.3,83.3 131.7,78.8 147.5,74.1 157.2,78.8 159.0,85.2 154.1,103.4 150.7,106.2 139.8,102.1" fill="#589153" stroke="#589153" stroke-width="0.5"/><polygon points="154.1,103.4 159.0,85.2 183.5,91.3 184.0,107.5" fill="#599253" stroke="#599253" stroke-width="0.5"/><polygon points="183.9,104.5 183.5,91.3 184.6,89.3 195.4,82.7 211.4,88.8 206.8,104.5" fill="#d8fba3" stroke="#d8fba3" stroke-width="0.5"/><polygon points="211.3,111.5 206.8,104.5 212.2,85.9 228.8,91.6 225.2,110.9" fill="#d4f69f" stroke="#d4f69f" stroke-width="0.5"/><polygon points="234.8,90.0 238.3,85.5 259.3,85.5 254.4,105.3 244.8,105.0" fill="#cac27e" stroke="#cac27e" stroke-width="0.5"/><polygon points="254.4,105.3 259.2,86.0 272.2,88.6 272.2,110.0 264.5,116.6" fill="#aaa46a" stroke="#aaa46a" stroke-width="0.5"/><polygon points="272.2,110.0 272.2,88.7 285.9,83.2 288.1,107.6" fill="#898355" stroke="#898355" stroke-width="0.5"/><polygon points="288.1,107.6 286.1,85.4 302.4,86.4 309.5,104.7 292.3,110.3" fill="#726e47" stroke="#726e47" stroke-width="0.5"/><polygon points="309.1,103.7 302.4,86.4 312.0,75.3 328.7,86.1 323.2,101.7" fill="#78734b" stroke="#78734b" stroke-width="0.5"/><polygon points="323.2,101.7 328.7,86.1 335.6,83.3 353.7,95.9 355.3,101.5 331.9,110.9" fill="#7b764d" stroke="#7b764d" stroke-width="0.5"/><polygon points="354.8,99.6 353.7,95.9 361.5,79.0 379.0,77.5 381.7,98.1" fill="#9c9661" stroke="#9c9661" stroke-width="0.5"/><polygon points="381.7,97.6 379.2,78.8 404.2,78.8 399.2,95.1" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="399.2,95.1 404.5,78.0 409.5,76.6 425.2,87.8 418.4,105.3 408.3,105.1" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="418.4,105.3 425.2,87.8 436.9,83.9 442.7,86.6 448.6,101.5 437.4,112.7 420.8,108.3" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="448.6,101.5 442.7,86.6 464.2,73.4 473.7,85.3 471.0,101.5 463.5,106.5" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="471.0,101.5 473.7,85.3 488.6,82.3 499.6,97.9 484.9,107.1" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="488.6,82.3 496.2,70.0 497.0,70.0 506.9,75.2 512.1,86.4 500.0,98.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="511.1,111.4 500.5,98.0 512.1,86.4 529.4,88.9 524.6,105.6" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="532.7,88.1 552.8,76.3 559.1,101.7 551.9,106.1" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,79.0 576.0,101.7 559.1,101.7 553.3,78.3" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,123.1 0.0,101.3 19.8,102.3 23.3,121.6" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="23.3,121.5 19.8,102.3 23.2,97.5 39.3,96.2 46.6,105.8 47.4,112.4 40.3,121.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="47.4,112.4 46.6,105.8 66.6,92.1 72.7,102.6 63.7,116.4" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="63.7,116.4 72.7,102.6 87.1,106.0 88.6,116.2 84.7,124.0 69.6,128.9" fill="#fde8b5" stroke="#fde8b5" stroke-width="0.5"/><polygon points="88.6,116.2 87.1,106.0 91.6,101.4 112.5,104.7 116.8,123.2" fill="#52874d" stroke="#52874d" stroke-width="0.5"/><polygon points="115.9,119.5 113.3,108.2 132.5,93.8 139.8,102.1 119.6,120.7" fill="#52874d" stroke="#52874d" stroke-width="0.5"/><polygon points="119.6,120.7 139.8,102.1 150.7,106.2 150.8,118.0 129.0,129.5" fill="#52874d" stroke="#52874d" stroke-width="0.5"/><polygon points="150.8,118.0 150.7,106.2 154.1,103.4 182.1,107.2 182.4,119.2 173.0,128.6 157.7,127.0" fill="#5f9c59" stroke="#5f9c59" stroke-width="0.5"/><polygon points="182.4,119.2 182.0,104.5 206.8,104.5 211.3,111.5 207.7,122.7 199.0,128.5" fill="#d8fba3" stroke="#d8fba3" stroke-width="0.5"/><polygon points="207.7,122.7 211.3,111.5 231.9,110.6 234.7,123.2 221.3,131.8" fill="#cdc580" stroke="#cdc580" stroke-width="0.5"/><polygon points="221.7,129.3 228.8,91.6 234.8,90.0 244.8,105.0" fill="#c4bc7a" stroke="#c4bc7a" stroke-width="0.5"/><polygon points="234.7,123.2 233.3,117.1 244.8,105.0 254.4,105.3 264.5,116.6 264.1,121.4 240.5,127.7" fill="#c3bc7a" stroke="#c3bc7a" stroke-width="0.5"/><polygon points="264.3,119.2 264.5,116.6 272.3,110.0 288.1,107.6 292.3,110.3 292.0,131.4 285.9,131.9" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="292.0,131.0 292.3,110.3 307.9,105.3 313.8,131.8" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="312.9,127.8 307.6,103.9 323.2,101.7 331.9,110.9 331.3,120.9" fill="#79754c" stroke="#79754c" stroke-width="0.5"/><polygon points="331.3,120.9 331.9,110.9 354.0,102.1 359.6,120.4 349.9,131.1 339.2,130.1" fill="#9a9460" stroke="#9a9460" stroke-width="0.5"/><polygon points="359.6,120.4 353.2,99.7 381.3,98.2 383.0,114.0 372.1,123.1" fill="#b3ac70" stroke="#b3ac70" stroke-width="0.5"/><polygon points="383.0,114.0 381.2,97.7 399.2,95.1 408.3,105.1 396.8,119.9" fill="#7c774e" stroke="#7c774e" stroke-width="0.5"/><polygon points="396.8,119.9 408.3,105.1 418.4,105.3 420.8,108.3 417.6,128.6 411.8,132.2 399.0,126.0" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="420.8,108.3 437.4,112.7 441.8,134.6 417.6,128.6" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="440.3,126.8 437.4,112.7 448.6,101.5 463.5,106.5 463.5,118.1 453.5,129.4" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="463.5,118.1 463.5,106.5 471.0,101.5 484.9,107.1 489.5,123.7 481.5,131.6" fill="#ae9f7c" stroke="#ae9f7c" stroke-width="0.5"/><polygon points="489.5,123.7 484.9,107.1 500.1,97.6 511.1,111.4 507.8,124.2" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="507.8,124.1 511.1,111.4 524.6,105.6 538.5,119.1 532.2,130.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="538.5,119.1 524.6,105.6 529.7,88.1 532.7,88.1 551.9,106.1 547.7,116.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,101.7 576.0,127.8 558.8,127.2 547.7,116.0 551.9,106.1 559.1,101.7" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,142.3 0.0,123.1 23.2,121.6 20.7,144.6" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="20.6,145.2 23.2,121.5 40.3,121.5 46.8,135.4 39.1,146.8" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="46.8,135.4 40.3,121.5 47.4,112.4 63.7,116.4 69.6,128.9 65.8,137.8" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="65.2,139.1 69.6,128.9 84.7,124.0 96.5,140.5 87.0,150.0" fill="#ead7a7" stroke="#ead7a7" stroke-width="0.5"/><polygon points="96.5,140.5 84.7,124.0 88.6,116.2 111.7,122.0 101.4,140.0" fill="#568e51" stroke="#568e51" stroke-width="0.5"/><polygon points="101.4,140.0 113.6,118.7 119.6,120.7 129.0,129.5 130.3,138.6 113.0,149.7" fill="#4a7945" stroke="#4a7945" stroke-width="0.5"/><polygon points="130.3,138.6 129.0,129.5 150.8,118.0 157.7,127.0 150.1,145.8 141.7,148.5" fill="#447040" stroke="#447040" stroke-width="0.5"/><polygon points="150.1,145.8 157.7,127.0 173.0,128.6 176.5,143.4 160.2,151.3" fill="#477543" stroke="#477543" stroke-width="0.5"/><polygon points="176.5,143.4 173.0,128.6 182.4,119.2 199.0,128.5 199.0,139.8 190.5,149.5 185.1,150.0" fill="#579052" stroke="#579052" stroke-width="0.5"/><polygon points="199.0,139.8 199.0,128.5 207.7,122.7 221.3,131.8 219.9,147.4" fill="#b9b274" stroke="#b9b274" stroke-width="0.5"/><polygon points="219.8,148.3 221.3,131.8 234.7,123.2 240.5,127.7 242.0,146.0 227.0,150.7" fill="#b9b274" stroke="#b9b274" stroke-width="0.5"/><polygon points="242.0,146.0 240.5,127.7 262.1,122.0 262.1,139.7 246.5,148.6" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="262.1,117.9 285.9,131.9 272.4,147.0 262.1,139.7" fill="#6e6a45" stroke="#6e6a45" stroke-width="0.5"/><polygon points="294.2,156.7 291.5,131.0 310.4,131.7 314.8,141.8 306.3,155.3" fill="#6f935d" stroke="#6f935d" stroke-width="0.5"/><polygon points="314.8,141.8 309.3,129.2 331.3,120.9 339.2,130.1 328.9,146.4" fill="#739860" stroke="#739860" stroke-width="0.5"/><polygon points="333.9,157.2 328.9,146.4 339.2,130.1 349.9,131.1 355.2,144.3 342.9,156.6" fill="#aca56b" stroke="#aca56b" stroke-width="0.5"/><polygon points="355.2,144.3 349.9,131.1 359.6,120.4 372.1,123.1 378.4,140.7 371.6,149.2 368.8,149.7" fill="#a6a068" stroke="#a6a068" stroke-width="0.5"/><polygon points="378.4,140.7 372.1,123.1 383.0,114.0 396.8,119.9 399.0,126.0 387.7,140.2" fill="#b6af72" stroke="#b6af72" stroke-width="0.5"/><polygon points="399.0,126.0 411.8,132.2 411.8,147.5 401.8,154.3 387.7,140.2" fill="#625c55" stroke="#625c55" stroke-width="0.5"/><polygon points="411.7,147.5 411.7,132.2 417.6,128.6 434.2,132.8 434.2,143.9 423.4,151.8" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="434.2,143.9 434.2,125.5 453.5,129.4 458.8,143.0 455.5,150.4 446.3,151.6" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="458.8,143.0 453.5,129.4 463.5,118.1 481.5,131.6 480.4,138.5" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="480.4,138.5 481.5,131.6 489.5,123.7 507.8,124.2 507.4,146.8 488.4,152.6" fill="#bbab85" stroke="#bbab85" stroke-width="0.5"/><polygon points="507.8,124.1 532.2,130.2 534.2,141.7 516.2,152.0 507.4,146.8" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="534.2,141.7 532.2,130.2 538.5,119.1 547.7,116.0 558.8,127.2 550.1,144.6 542.2,146.6" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,127.8 576.0,142.5 558.0,148.5 550.1,144.6 558.8,127.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,166.7 0.0,142.3 21.3,144.6 18.4,164.8" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="17.1,173.8 21.2,145.3 39.1,146.8 44.2,157.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="44.2,157.5 39.1,146.8 46.8,135.4 67.1,138.0 60.6,157.9 49.4,160.9" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="60.6,157.9 66.5,139.8 87.0,150.0 87.0,159.8 70.9,167.2" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="87.0,159.8 87.0,150.0 96.5,140.5 101.4,140.0 113.0,149.7 113.8,162.8 96.2,168.6" fill="#d6c599" stroke="#d6c599" stroke-width="0.5"/><polygon points="113.8,162.8 113.0,149.7 130.3,138.6 141.7,148.5 140.3,153.5 120.9,168.1" fill="#406a3c" stroke="#406a3c" stroke-width="0.5"/><polygon points="140.3,153.5 141.7,148.5 150.1,145.8 160.2,151.3 164.3,165.9 149.6,174.3" fill="#52864c" stroke="#52864c" stroke-width="0.5"/><polygon points="164.3,165.9 160.2,151.3 176.5,143.4 185.1,150.0 175.1,169.4" fill="#568d50" stroke="#568d50" stroke-width="0.5"/><polygon points="177.9,174.5 175.1,169.4 185.1,150.0 190.5,149.5 205.5,168.4 201.2,174.5" fill="#5d9957" stroke="#5d9957" stroke-width="0.5"/><polygon points="205.3,168.2 190.5,149.5 199.0,139.8 221.1,147.8" fill="#b2ac6f" stroke="#b2ac6f" stroke-width="0.5"/><polygon points="232.7,176.4 227.0,150.7 242.0,146.0 246.5,148.6 250.6,158.6 239.7,175.7" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="250.6,158.6 246.5,148.6 262.1,139.7 272.4,147.0 274.5,156.9 266.8,163.7" fill="#6e6a45" stroke="#6e6a45" stroke-width="0.5"/><polygon points="272.4,147.0 285.9,131.9 291.5,131.4 294.7,161.2 274.5,156.9" fill="#706c46" stroke="#706c46" stroke-width="0.5"/><polygon points="292.9,178.4 289.9,157.2 306.3,155.3 319.1,169.9 317.7,172.9" fill="#7aa166" stroke="#7aa166" stroke-width="0.5"/><polygon points="306.3,155.3 314.8,141.8 328.9,146.4 333.9,157.2 329.4,165.1 319.1,169.9" fill="#a59f67" stroke="#a59f67" stroke-width="0.5"/><polygon points="342.9,156.6 355.2,144.3 368.7,149.7 357.8,171.5" fill="#a8a269" stroke="#a8a269" stroke-width="0.5"/><polygon points="358.2,173.5 357.9,171.5 368.8,149.7 371.6,149.2 383.5,165.6 375.1,176.2" fill="#a09a64" stroke="#a09a64" stroke-width="0.5"/><polygon points="383.5,165.6 371.6,149.2 378.4,140.7 387.7,140.2 401.8,154.3 398.6,165.6" fill="#8c8758" stroke="#8c8758" stroke-width="0.5"/><polygon points="398.4,166.3 401.8,154.3 411.8,147.5 423.4,151.8 427.2,167.3 419.7,176.2" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="427.2,167.3 423.4,151.8 434.2,143.9 446.3,151.6 437.7,167.0" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="437.7,167.0 446.3,151.6 455.5,150.4 464.4,165.7 464.1,167.0 450.7,178.4" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="464.4,165.7 455.5,150.4 458.8,143.0 480.4,138.5 488.4,152.6 487.6,155.0" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="487.6,155.0 488.4,152.6 507.4,146.8 516.2,152.0 518.7,166.8 509.1,176.4 493.7,171.6" fill="#9c8f6f" stroke="#9c8f6f" stroke-width="0.5"/><polygon points="518.7,166.8 516.2,152.0 534.2,141.7 542.2,146.6 542.2,163.1 531.8,170.9" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="542.2,163.1 542.2,146.6 550.1,144.6 558.0,148.5 561.8,159.8 553.0,168.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,142.5 576.0,162.6 561.8,159.8 558.0,148.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,185.7 0.0,166.7 21.6,164.5 25.7,177.6 20.7,188.7" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="25.7,177.6 23.3,170.1 44.2,157.5 49.4,160.9 47.2,180.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="47.2,180.0 49.4,160.9 60.6,157.9 70.9,167.2 69.1,184.5 50.8,184.5" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="69.2,183.4 70.9,167.2 87.0,159.8 96.2,168.6 94.0,183.1 86.5,187.5" fill="#e5d2a4" stroke="#e5d2a4" stroke-width="0.5"/><polygon points="94.0,183.1 96.2,168.6 113.8,162.8 120.9,168.1 122.7,173.2 121.5,179.8 108.1,191.0" fill="#c7b68e" stroke="#c7b68e" stroke-width="0.5"/><polygon points="121.5,179.8 122.7,173.2 148.7,176.4 149.7,183.6 134.2,195.0" fill="#579052" stroke="#579052" stroke-width="0.5"/><polygon points="122.7,173.2 120.9,168.1 140.3,153.5 150.6,176.6" fill="#487643" stroke="#487643" stroke-width="0.5"/><polygon points="149.7,183.6 148.5,174.9 164.3,165.9 175.1,169.4 177.9,174.5 174.9,187.4 157.7,190.6" fill="#5f9d59" stroke="#5f9d59" stroke-width="0.5"/><polygon points="174.9,187.4 177.9,174.5 201.2,174.5 202.3,189.2 195.8,195.8 177.5,191.2" fill="#63a25c" stroke="#63a25c" stroke-width="0.5"/><polygon points="220.5,196.3 202.3,189.2 201.2,174.5 205.3,168.6 230.8,177.7 225.5,193.7" fill="#c6be7c" stroke="#c6be7c" stroke-width="0.5"/><polygon points="205.0,168.5 220.5,148.5 227.0,150.7 233.2,178.6" fill="#a8a169" stroke="#a8a169" stroke-width="0.5"/><polygon points="239.7,175.7 250.6,158.6 266.8,163.7 266.8,183.8 256.0,186.8" fill="#726d47" stroke="#726d47" stroke-width="0.5"/><polygon points="266.8,183.8 266.8,163.7 274.5,156.9 290.3,160.2 292.9,178.4 291.0,182.9 271.3,186.2" fill="#678856" stroke="#678856" stroke-width="0.5"/><polygon points="290.8,183.2 292.9,178.4 317.7,172.9 320.3,189.0 310.5,195.0" fill="#9a9460" stroke="#9a9460" stroke-width="0.5"/><polygon points="320.3,189.0 317.7,172.9 319.1,169.9 329.4,165.1 344.9,184.2 330.3,193.9" fill="#a49d66" stroke="#a49d66" stroke-width="0.5"/><polygon points="329.4,165.1 333.9,157.2 342.9,156.6 357.9,171.5 358.2,173.5 350.6,184.3 344.9,184.2" fill="#a7a068" stroke="#a7a068" stroke-width="0.5"/><polygon points="350.6,184.3 358.2,173.5 375.1,176.2 380.3,190.5 374.9,195.4 355.2,192.3" fill="#a6a068" stroke="#a6a068" stroke-width="0.5"/><polygon points="380.3,190.5 375.1,176.2 383.5,165.6 399.6,165.6 393.2,192.0" fill="#95905d" stroke="#95905d" stroke-width="0.5"/><polygon points="399.3,166.7 419.7,176.2 420.6,182.8 417.6,190.2 396.3,195.0 393.2,192.0" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="420.6,182.8 419.7,176.2 427.2,167.3 437.7,167.0 450.7,178.4 449.3,186.6 447.2,189.0" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="449.3,186.6 450.7,178.4 464.1,167.0 480.3,186.8 471.1,194.6" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="464.1,167.0 464.4,165.7 487.6,155.0 493.7,171.6 480.7,187.2" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="481.1,186.7 493.7,171.6 509.1,176.4 510.8,188.2 493.5,197.8" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="510.8,188.2 509.1,176.4 518.7,166.8 531.8,170.9 535.7,184.5 532.3,190.5 513.8,190.8" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="535.7,184.5 531.8,170.9 542.2,163.1 553.0,168.5 556.7,178.0 551.8,184.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,162.6 576.0,179.4 556.7,178.0 553.0,168.5 561.8,159.8" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,204.9 0.0,185.7 20.7,188.7 23.6,199.7 12.4,208.3" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="23.6,199.7 20.7,188.7 25.7,177.6 47.3,180.0 50.9,184.5 44.1,201.3 32.5,204.1" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="44.1,201.3 50.9,184.5 67.5,184.5 67.5,209.2 59.8,215.4" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="67.5,209.2 67.5,183.0 86.5,187.5 86.5,209.2" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="86.5,209.2 86.5,187.5 94.0,183.1 108.1,191.0 110.0,201.7 107.6,206.9 90.0,212.4" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="110.0,201.7 108.1,191.0 121.5,179.8 134.2,195.0 133.0,201.7" fill="#e3d1a2" stroke="#e3d1a2" stroke-width="0.5"/><polygon points="133.0,201.7 134.2,195.0 149.7,183.6 157.7,190.6 156.0,210.5 136.0,208.2" fill="#5d9957" stroke="#5d9957" stroke-width="0.5"/><polygon points="155.7,213.6 157.7,190.6 174.9,187.4 177.5,191.2 174.8,208.4" fill="#5a9454" stroke="#5a9454" stroke-width="0.5"/><polygon points="174.8,208.4 177.5,191.2 195.8,195.8 195.8,208.1 183.4,214.3" fill="#558c50" stroke="#558c50" stroke-width="0.5"/><polygon points="203.3,213.8 195.7,208.1 195.7,195.8 202.3,189.2 220.5,196.3 216.1,211.6" fill="#c8c17d" stroke="#c8c17d" stroke-width="0.5"/><polygon points="225.5,193.7 231.2,176.5 239.7,175.7 256.0,186.8 246.6,208.3" fill="#948f5d" stroke="#948f5d" stroke-width="0.5"/><polygon points="246.8,209.5 246.6,208.3 256.0,186.8 266.8,183.8 271.3,186.2 275.9,217.4" fill="#827e52" stroke="#827e52" stroke-width="0.5"/><polygon points="275.3,213.3 271.3,186.2 291.4,182.8 291.4,211.3" fill="#71965e" stroke="#71965e" stroke-width="0.5"/><polygon points="291.4,210.7 291.4,183.6 310.5,195.0 308.7,203.3" fill="#a9a269" stroke="#a9a269" stroke-width="0.5"/><polygon points="308.7,203.3 310.5,195.0 320.3,189.0 330.3,193.9 332.7,210.3 319.1,215.7" fill="#8ab774" stroke="#8ab774" stroke-width="0.5"/><polygon points="332.7,210.3 330.3,193.9 344.9,184.2 350.6,184.3 355.2,192.3 352.6,208.6 334.7,211.4" fill="#b5ae71" stroke="#b5ae71" stroke-width="0.5"/><polygon points="351.6,215.1 355.2,192.3 374.9,195.4 373.6,211.9" fill="#c0b978" stroke="#c0b978" stroke-width="0.5"/><polygon points="373.6,211.9 374.9,195.4 380.3,190.5 393.2,192.0 396.3,195.0 396.8,204.3 378.3,215.9" fill="#a6a068" stroke="#a6a068" stroke-width="0.5"/><polygon points="396.8,204.3 396.3,195.0 417.6,190.2 423.4,204.7 420.7,209.8 402.2,211.5" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="423.4,204.7 417.6,190.2 420.6,182.8 447.2,189.0 443.9,203.6" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="443.6,204.9 447.2,189.0 449.3,186.6 471.1,194.6 469.1,209.9 466.3,211.6" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="469.1,209.9 471.1,194.6 480.7,186.4 493.5,197.8 493.8,205.2 483.8,215.2" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="493.8,205.2 493.5,197.8 510.8,188.2 513.8,190.8 515.7,209.5 509.8,214.6" fill="#8f8366" stroke="#8f8366" stroke-width="0.5"/><polygon points="515.7,209.5 513.8,190.8 532.3,190.5 536.7,205.0 533.0,211.0" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="536.7,205.0 532.3,190.5 535.7,184.5 551.8,184.5 556.3,202.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,179.4 576.0,201.1 556.1,201.8 551.8,184.5 556.7,178.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,228.1 0.0,204.9 12.4,208.3 12.4,222.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="12.4,222.2 12.4,208.3 23.6,199.7 32.5,204.1 32.5,225.3 24.5,230.1" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="32.5,225.3 32.5,204.1 44.1,201.3 59.8,215.4 59.4,218.7 45.8,229.1" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="59.4,218.7 59.8,215.4 67.5,209.2 86.5,209.2 90.0,212.4 90.0,227.9 88.6,229.5 68.1,229.5" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="90.0,227.9 90.0,212.4 107.6,206.9 116.1,221.3 109.3,232.3" fill="#efdbaa" stroke="#efdbaa" stroke-width="0.5"/><polygon points="116.1,221.3 107.6,206.9 110.0,201.8 133.0,201.8 136.0,208.2 130.2,220.8" fill="#f4dfae" stroke="#f4dfae" stroke-width="0.5"/><polygon points="130.2,220.8 136.0,208.2 158.1,210.7 158.5,223.8 152.2,230.8 134.7,229.2" fill="#65a65e" stroke="#65a65e" stroke-width="0.5"/><polygon points="158.5,223.8 158.2,213.0 174.8,208.4 183.4,214.3 182.8,227.6 177.0,233.4" fill="#53894e" stroke="#53894e" stroke-width="0.5"/><polygon points="182.8,227.6 183.4,214.3 195.8,208.1 203.3,213.8 200.7,230.4" fill="#b0aa6e" stroke="#b0aa6e" stroke-width="0.5"/><polygon points="205.3,236.7 200.7,230.4 203.3,213.8 216.1,211.6 224.2,221.7 219.8,232.0" fill="#a29c65" stroke="#a29c65" stroke-width="0.5"/><polygon points="216.1,211.6 220.5,196.3 225.5,193.7 246.6,208.3 246.8,209.5 241.4,218.9 224.2,221.7" fill="#98925f" stroke="#98925f" stroke-width="0.5"/><polygon points="241.4,218.9 246.8,209.5 272.0,216.3 271.3,236.7 267.8,239.0 246.4,234.7" fill="#789e64" stroke="#789e64" stroke-width="0.5"/><polygon points="271.2,238.8 272.1,213.6 290.9,211.4 299.2,224.2 297.7,235.0" fill="#8bb874" stroke="#8bb874" stroke-width="0.5"/><polygon points="299.2,224.2 290.7,211.0 308.7,203.3 319.1,215.7 317.4,219.0" fill="#91c079" stroke="#91c079" stroke-width="0.5"/><polygon points="321.5,235.2 317.4,219.0 319.1,215.7 332.7,210.3 334.7,211.4 339.4,230.6 330.1,239.9" fill="#bdb676" stroke="#bdb676" stroke-width="0.5"/><polygon points="339.4,230.5 334.7,211.4 359.1,207.6 355.6,231.7" fill="#c2bb79" stroke="#c2bb79" stroke-width="0.5"/><polygon points="355.5,232.3 358.1,214.1 373.6,211.9 378.3,215.9 381.8,227.0 372.6,235.4" fill="#b2ab6f" stroke="#b2ab6f" stroke-width="0.5"/><polygon points="381.8,227.0 378.3,215.9 396.8,204.3 402.2,211.5 400.6,221.5 388.5,229.0" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="400.6,221.5 402.2,211.5 420.7,209.8 423.3,223.5 413.0,230.5" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="423.3,223.5 420.7,209.8 423.4,204.7 445.2,203.5 441.6,228.9 438.7,230.7" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="441.6,228.9 444.9,205.3 466.3,211.6 460.7,231.7" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="459.3,236.6 466.3,211.6 469.1,209.9 483.8,215.2 487.3,228.2" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="487.6,229.5 483.8,215.2 493.8,205.2 509.8,214.6 508.4,226.5" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="508.1,228.7 509.8,214.6 515.7,209.5 533.0,211.0 535.8,222.0 530.0,230.8" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="535.8,222.0 533.0,211.0 536.7,205.0 555.3,202.6 555.3,226.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,201.1 576.0,230.6 555.3,228.6 555.3,201.9" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,240.9 0.0,228.1 12.4,222.2 24.5,230.1 21.6,246.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="21.6,246.5 24.5,230.1 32.5,225.3 45.8,229.1 48.5,251.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="48.4,249.9 45.8,229.1 59.4,218.7 68.1,229.5 65.7,246.8" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="65.7,246.8 68.1,229.5 88.6,229.5 87.1,247.3 74.1,252.5" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="87.1,247.3 88.6,229.5 90.0,227.9 109.3,232.3 112.5,241.4 104.8,252.8 98.2,254.6" fill="#efdbab" stroke="#efdbab" stroke-width="0.5"/><polygon points="112.5,241.4 109.3,232.3 116.1,221.3 130.2,220.8 134.7,229.2 129.2,244.4" fill="#5a9354" stroke="#5a9354" stroke-width="0.5"/><polygon points="127.3,249.6 134.7,229.2 152.2,230.8 153.3,246.9" fill="#65a65f" stroke="#65a65f" stroke-width="0.5"/><polygon points="153.3,246.9 152.2,230.8 158.5,223.8 177.0,233.4 177.0,236.2 165.8,252.0 160.2,254.0" fill="#619f5b" stroke="#619f5b" stroke-width="0.5"/><polygon points="177.0,236.2 177.0,233.4 182.8,227.6 200.7,230.4 205.3,236.7 203.1,245.3 194.0,251.3" fill="#5f9d59" stroke="#5f9d59" stroke-width="0.5"/><polygon points="203.1,245.3 205.3,236.7 219.8,232.0 232.3,247.7 220.7,259.3" fill="#a7a168" stroke="#a7a168" stroke-width="0.5"/><polygon points="219.8,232.0 224.2,221.7 241.4,218.9 246.3,234.7 236.7,247.2 232.3,247.7" fill="#8b8657" stroke="#8b8657" stroke-width="0.5"/><polygon points="246.8,258.4 236.7,247.2 246.3,234.7 267.8,239.0 263.0,254.3" fill="#7fa86a" stroke="#7fa86a" stroke-width="0.5"/><polygon points="275.2,238.2 303.3,234.2 303.3,247.7 290.1,262.6" fill="#bcb575" stroke="#bcb575" stroke-width="0.5"/><polygon points="296.3,244.4 299.2,224.2 317.4,219.0 321.5,235.2" fill="#c0b978" stroke="#c0b978" stroke-width="0.5"/><polygon points="303.3,247.7 303.3,241.9 321.5,235.2 330.1,239.9 331.3,246.0 326.5,256.4 319.5,259.9" fill="#b3ac70" stroke="#b3ac70" stroke-width="0.5"/><polygon points="331.3,246.0 330.1,239.9 339.5,230.5 356.3,231.8 352.6,252.5" fill="#bfb777" stroke="#bfb777" stroke-width="0.5"/><polygon points="352.6,252.5 356.2,232.4 372.6,235.4 375.2,251.8 356.0,258.8" fill="#847f53" stroke="#847f53" stroke-width="0.5"/><polygon points="375.2,251.8 372.6,235.4 381.8,227.0 388.5,229.0 396.8,244.5 378.4,253.6" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="396.8,244.5 388.5,229.0 400.6,221.5 413.0,230.5 409.6,247.3 405.6,248.1" fill="#708154" stroke="#708154" stroke-width="0.5"/><polygon points="409.6,247.3 413.0,230.5 423.3,223.5 438.7,230.7 435.0,246.0 418.2,252.2" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="435.0,246.0 438.7,230.7 441.6,228.9 463.3,232.0 465.1,246.6 462.2,252.2 444.8,255.8" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="465.1,246.6 463.7,235.3 488.7,227.7 489.6,249.2" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="489.5,247.5 488.7,229.3 510.4,226.2 509.5,247.5" fill="#8f8366" stroke="#8f8366" stroke-width="0.5"/><polygon points="509.5,246.5 510.3,228.9 530.0,230.8 533.8,246.8 529.1,249.6" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="533.8,246.8 530.0,230.8 535.8,222.0 558.4,227.3 545.1,250.4" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,230.6 576.0,255.0 547.5,254.0 545.1,250.4 557.5,228.8" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,266.2 0.0,240.9 21.9,246.2 17.1,264.6" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="17.1,264.6 21.8,246.5 47.6,250.8 47.0,266.8 22.5,270.8" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="47.0,266.8 47.6,250.0 65.7,246.8 74.1,252.5 73.4,266.0 58.0,275.6 51.7,273.1" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="73.4,266.0 74.1,252.5 87.1,247.3 98.2,254.6 93.9,271.3 87.5,275.1" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="93.9,271.3 98.2,254.6 104.8,252.8 120.7,267.9 111.5,278.7" fill="#fce7b4" stroke="#fce7b4" stroke-width="0.5"/><polygon points="120.7,267.9 104.8,252.8 112.5,241.4 132.4,245.0 130.0,266.0" fill="#61a05b" stroke="#61a05b" stroke-width="0.5"/><polygon points="130.1,264.7 131.9,249.1 153.3,246.9 160.2,254.0 158.4,260.6 149.6,268.1" fill="#65a65f" stroke="#65a65f" stroke-width="0.5"/><polygon points="175.9,280.9 158.4,260.6 160.2,254.0 165.8,252.0 185.2,261.4" fill="#65a65f" stroke="#65a65f" stroke-width="0.5"/><polygon points="165.8,252.0 177.0,236.2 194.0,251.3 191.2,258.7 185.2,261.4" fill="#d8fba3" stroke="#d8fba3" stroke-width="0.5"/><polygon points="191.2,258.7 194.0,251.3 203.1,245.3 220.7,259.3 220.1,264.8 203.2,272.0" fill="#b9b274" stroke="#b9b274" stroke-width="0.5"/><polygon points="220.1,264.8 220.7,259.3 232.3,247.7 236.7,247.2 246.8,258.4 244.6,273.6 224.5,270.6" fill="#739960" stroke="#739960" stroke-width="0.5"/><polygon points="244.5,274.5 246.8,258.4 263.0,254.3 268.4,264.2 263.2,274.5" fill="#a7a168" stroke="#a7a168" stroke-width="0.5"/><polygon points="268.4,264.2 263.0,254.3 267.8,239.0 273.5,235.3 290.1,262.6 289.9,263.4 287.0,265.7" fill="#b2ab6f" stroke="#b2ab6f" stroke-width="0.5"/><polygon points="289.9,263.4 290.1,262.6 303.3,247.7 319.5,259.9 316.7,266.8 305.8,273.6" fill="#a9a36a" stroke="#a9a36a" stroke-width="0.5"/><polygon points="330.8,284.4 316.7,266.8 319.5,259.9 326.5,256.4 339.3,268.3 332.5,284.5" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="326.5,256.4 331.3,246.0 352.6,252.5 356.0,258.8 354.8,264.1 339.3,268.3" fill="#6f6b46" stroke="#6f6b46" stroke-width="0.5"/><polygon points="354.6,264.7 356.0,258.8 375.2,251.8 378.4,253.6 384.0,267.7 375.5,277.1" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="384.0,267.7 378.4,253.6 396.8,244.5 405.6,248.1 395.0,269.1" fill="#708154" stroke="#708154" stroke-width="0.5"/><polygon points="395.0,269.1 405.6,248.1 409.6,247.3 418.2,252.2 420.1,266.1 404.7,280.3" fill="#708154" stroke="#708154" stroke-width="0.5"/><polygon points="420.1,266.1 418.2,252.2 435.0,246.0 444.8,255.8 441.8,270.3 429.7,272.0" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="440.2,278.2 444.8,255.7 462.2,252.2 467.5,265.5 463.8,274.9" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="467.5,265.5 462.2,252.2 465.1,246.6 488.2,249.0 488.2,265.5" fill="#8f8366" stroke="#8f8366" stroke-width="0.5"/><polygon points="488.2,270.4 488.2,247.5 508.5,247.5 508.5,266.4" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="508.5,266.4 508.5,246.3 529.1,249.6 520.4,273.6" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="520.8,272.6 529.1,249.6 533.8,246.8 545.1,250.4 547.5,254.0 546.5,265.9 536.3,275.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,255.0 576.0,277.1 562.3,277.7 546.5,265.9 547.5,254.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,292.3 0.0,266.2 17.1,264.6 22.5,270.8 22.5,289.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="22.5,289.7 22.5,270.8 47.0,266.8 51.7,273.1 38.3,290.9" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="38.3,290.9 51.7,273.1 58.0,275.6 61.7,283.6 59.0,298.7 49.6,305.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="61.7,283.6 58.0,275.6 73.4,266.0 87.5,275.1 84.9,289.4" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="84.8,290.3 87.5,275.1 93.9,271.3 111.5,278.7 112.0,287.4 102.4,296.5" fill="#fff9c2" stroke="#fff9c2" stroke-width="0.5"/><polygon points="112.0,287.4 111.5,278.7 120.7,267.9 128.4,266.3 138.8,300.8" fill="#619f5b" stroke="#619f5b" stroke-width="0.5"/><polygon points="135.7,290.3 127.8,264.4 149.6,268.1 151.1,285.5" fill="#5d9857" stroke="#5d9857" stroke-width="0.5"/><polygon points="151.1,285.5 149.6,268.1 158.4,260.6 175.9,280.9 175.9,281.1 158.5,289.8" fill="#65a65f" stroke="#65a65f" stroke-width="0.5"/><polygon points="175.9,281.1 175.9,280.9 185.2,261.4 191.2,258.7 203.2,272.0 200.1,284.0 182.3,286.2" fill="#c8c17d" stroke="#c8c17d" stroke-width="0.5"/><polygon points="200.1,284.0 203.2,272.0 220.1,264.8 224.5,270.6 221.9,290.4 203.1,287.5" fill="#8a8556" stroke="#8a8556" stroke-width="0.5"/><polygon points="221.5,293.3 224.5,270.6 245.3,273.7 243.7,293.1" fill="#6e915c" stroke="#6e915c" stroke-width="0.5"/><polygon points="243.8,292.5 245.3,274.5 263.2,274.5 268.5,285.0 264.9,292.5" fill="#a8a269" stroke="#a8a269" stroke-width="0.5"/><polygon points="268.5,285.0 263.2,274.5 268.4,264.2 287.0,265.7 283.1,282.9" fill="#b0aa6e" stroke="#b0aa6e" stroke-width="0.5"/><polygon points="283.1,282.9 287.0,265.7 289.9,263.4 305.8,273.6 305.8,284.4 291.8,293.4" fill="#a29c65" stroke="#a29c65" stroke-width="0.5"/><polygon points="305.8,284.4 305.8,273.6 316.7,266.8 330.8,284.4 316.7,291.2" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="332.5,284.5 339.3,268.3 355.5,263.9 352.8,288.3 339.9,291.2" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="352.8,288.3 355.3,265.1 375.5,277.1 375.2,282.1 359.9,291.9" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="386.0,293.8 375.2,282.1 375.5,277.1 384.0,267.7 395.0,269.1 405.4,281.2 396.2,293.9" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="403.4,281.4 420.1,266.1 429.7,272.0 425.3,292.8" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="425.2,293.2 429.7,272.0 449.3,269.2 446.6,282.7 430.7,294.6" fill="#577349" stroke="#577349" stroke-width="0.5"/><polygon points="457.2,301.9 446.6,282.7 447.7,277.2 463.8,274.9 470.2,285.3 460.0,302.9" fill="#72975f" stroke="#72975f" stroke-width="0.5"/><polygon points="470.2,285.3 463.8,274.9 467.5,265.5 492.4,265.5 488.9,286.6" fill="#a19373" stroke="#a19373" stroke-width="0.5"/><polygon points="489.1,285.3 491.7,269.8 508.5,266.4 519.6,273.1 515.4,287.5 501.8,292.9" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="515.4,287.5 519.8,272.4 536.3,275.2 543.2,293.1 526.8,300.1" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="544.2,295.7 536.3,275.2 546.5,265.9 562.3,277.7" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,277.1 576.0,299.7 551.4,301.5 545.9,294.1 562.3,277.7" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,306.9 0.0,292.3 22.7,289.5 23.5,316.3" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="23.3,309.4 22.8,289.8 38.3,290.9 49.6,305.5 49.0,308.3 43.5,312.6" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="49.0,308.3 49.6,305.5 59.0,298.7 77.7,304.9 79.0,311.6 67.0,325.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="77.7,304.9 59.0,298.7 61.7,283.6 85.7,289.6" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="79.0,311.6 77.7,304.9 85.3,290.4 102.4,296.5 104.6,309.9 92.5,317.3" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="104.6,309.9 102.4,296.5 112.0,287.4 130.9,296.8 131.3,303.1 110.0,312.6" fill="#599354" stroke="#599354" stroke-width="0.5"/><polygon points="131.3,302.4 130.6,291.9 151.1,285.5 158.5,289.8 159.6,308.1 153.5,312.6" fill="#e3ecd9" stroke="#e3ecd9" stroke-width="0.5"/><polygon points="159.6,308.1 158.5,289.8 175.9,281.1 182.2,286.2 182.2,309.3 179.6,312.7" fill="#b3ad70" stroke="#b3ad70" stroke-width="0.5"/><polygon points="182.2,309.3 182.2,286.2 200.1,284.0 203.1,287.5 201.2,306.3" fill="#807b50" stroke="#807b50" stroke-width="0.5"/><polygon points="201.2,306.3 203.1,287.5 224.7,290.9 217.8,316.1 213.8,315.7" fill="#827e52" stroke="#827e52" stroke-width="0.5"/><polygon points="217.7,316.7 224.1,293.3 243.3,293.2 245.6,309.8 238.1,317.3" fill="#6098b8" stroke="#6098b8" stroke-width="0.5"/><polygon points="245.6,309.8 243.2,292.5 264.9,292.5 269.0,302.9 259.9,313.8" fill="#9d9762" stroke="#9d9762" stroke-width="0.5"/><polygon points="269.0,302.9 264.9,292.5 268.5,285.0 283.1,282.9 291.8,293.4 291.0,299.8 282.5,305.8" fill="#97925f" stroke="#97925f" stroke-width="0.5"/><polygon points="291.0,299.8 291.8,293.4 305.8,284.4 316.7,291.2 315.8,306.1 305.1,310.4" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="315.8,306.1 316.7,291.2 330.8,284.4 332.5,284.5 339.9,291.2 337.5,309.7 328.2,313.0" fill="#7c8177" stroke="#7c8177" stroke-width="0.5"/><polygon points="337.5,309.7 339.9,291.2 352.8,288.3 359.9,291.9 364.8,308.5 349.9,317.5" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="364.8,308.5 359.9,291.9 375.2,282.1 386.0,293.8 372.9,310.8" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="377.5,317.3 372.9,310.8 386.0,293.8 396.2,293.9 403.4,310.5 397.8,318.3" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="403.4,310.5 396.2,293.9 404.7,282.1 425.9,293.1 414.8,310.5" fill="#345631" stroke="#345631" stroke-width="0.5"/><polygon points="427.5,323.9 414.8,310.5 425.7,293.4 430.7,294.6 439.7,304.9 434.1,322.9" fill="#447040" stroke="#447040" stroke-width="0.5"/><polygon points="430.7,294.6 446.6,282.7 457.2,301.9 439.7,304.9" fill="#477442" stroke="#477442" stroke-width="0.5"/><polygon points="460.0,302.9 470.2,285.3 486.8,286.5 479.4,311.2 475.2,311.9 461.9,306.0" fill="#5e7c4e" stroke="#5e7c4e" stroke-width="0.5"/><polygon points="487.5,284.4 501.8,292.9 501.8,308.7 485.6,313.7 479.4,311.2" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="501.8,308.7 501.8,293.0 515.4,287.5 526.8,300.1 525.0,307.8 508.2,314.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="525.0,307.8 526.8,300.1 544.7,292.4 551.4,301.5 550.4,309.7 533.1,319.3" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,299.7 576.0,319.5 556.6,319.5 550.4,309.7 551.4,301.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,330.9 0.0,306.9 19.0,314.5 18.2,327.6" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="18.0,330.8 19.3,308.8 43.5,312.6 39.4,330.8" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="39.4,330.8 43.5,312.6 49.0,308.3 67.0,325.0 66.8,327.8 56.8,338.0 45.2,337.1" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="66.8,327.8 67.0,325.0 79.0,311.6 92.5,317.3 93.6,333.7 86.2,340.6" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="93.6,333.7 92.5,317.3 104.6,309.9 110.0,312.6 116.4,329.6 111.4,336.0" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="116.4,329.6 110.0,312.6 130.5,303.5 130.5,328.1" fill="#999f92" stroke="#999f92" stroke-width="0.5"/><polygon points="130.5,331.8 130.5,302.0 153.5,312.6 151.1,322.8" fill="#ced7c5" stroke="#ced7c5" stroke-width="0.5"/><polygon points="151.1,322.8 153.5,312.6 159.6,308.1 179.6,312.7 181.7,325.2 167.5,338.3 161.0,336.4" fill="#b1aa6e" stroke="#b1aa6e" stroke-width="0.5"/><polygon points="181.7,325.2 179.6,312.7 182.2,309.3 201.2,306.3 213.8,315.7 192.5,331.4" fill="#827d51" stroke="#827d51" stroke-width="0.5"/><polygon points="196.5,340.7 192.5,331.4 213.8,315.7 218.4,316.2 220.2,338.1" fill="#959c8f" stroke="#959c8f" stroke-width="0.5"/><polygon points="220.3,338.9 218.5,316.8 238.1,317.3 245.0,335.7 238.6,341.2" fill="#6098b8" stroke="#6098b8" stroke-width="0.5"/><polygon points="245.0,335.7 238.1,317.3 245.6,309.8 259.9,313.8 264.5,327.5 256.6,336.4" fill="#9ba295" stroke="#9ba295" stroke-width="0.5"/><polygon points="264.5,327.5 259.9,313.8 269.0,302.9 282.5,305.8 282.5,328.5" fill="#807b50" stroke="#807b50" stroke-width="0.5"/><polygon points="282.5,330.5 282.5,305.8 291.0,299.8 305.1,310.4 301.6,328.2" fill="#6a6642" stroke="#6a6642" stroke-width="0.5"/><polygon points="300.8,332.0 305.1,310.4 315.8,306.1 328.2,313.0 323.6,329.2" fill="#7c8177" stroke="#7c8177" stroke-width="0.5"/><polygon points="333.1,340.7 323.6,329.2 328.2,313.0 337.5,309.7 351.3,318.4" fill="#7c8177" stroke="#7c8177" stroke-width="0.5"/><polygon points="348.8,318.1 364.8,308.5 372.9,310.8 377.5,317.3 373.5,337.5 361.1,337.5" fill="#475131" stroke="#475131" stroke-width="0.5"/><polygon points="373.3,338.5 377.5,317.3 397.8,318.3 401.5,338.5" fill="#a9b0a2" stroke="#a9b0a2" stroke-width="0.5"/><polygon points="401.0,336.1 397.8,318.3 403.4,310.5 414.8,310.5 427.5,323.9 419.5,335.4" fill="#a5ac9e" stroke="#a5ac9e" stroke-width="0.5"/><polygon points="434.1,322.9 439.7,304.9 457.2,301.9 460.0,302.9 461.9,306.0 451.0,327.9 445.3,329.3" fill="#bcad86" stroke="#bcad86" stroke-width="0.5"/><polygon points="451.0,327.9 461.9,306.0 475.2,311.9 469.6,337.2" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="469.5,337.4 475.2,311.9 479.4,311.2 485.6,313.7 491.3,332.6 483.9,340.0" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="491.3,332.6 485.6,313.7 501.8,308.7 508.2,314.2 508.6,331.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="508.6,332.2 508.2,314.2 525.0,307.8 533.1,319.3 532.9,330.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="532.9,330.6 533.1,319.3 550.4,309.7 556.6,319.5 551.0,331.9" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,319.5 576.0,339.5 556.0,338.6 551.0,331.9 556.6,319.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,350.7 0.0,330.9 21.6,327.0 20.0,356.7" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="20.0,356.7 21.4,330.8 39.4,330.8 45.2,337.1 35.9,355.7" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="35.9,355.7 45.2,337.1 56.8,338.0 63.6,356.3 47.8,365.9" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="63.6,356.3 56.8,338.0 66.8,327.8 86.2,340.6 85.5,348.2 76.0,360.3" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="85.5,348.2 86.2,340.6 93.6,333.7 111.4,336.0 116.5,361.9" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="115.6,357.4 111.4,336.0 116.4,329.6 133.6,327.8 138.9,351.9 123.5,359.5" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="139.0,352.2 134.1,330.2 151.1,322.8 161.0,336.4" fill="#c5cebd" stroke="#c5cebd" stroke-width="0.5"/><polygon points="139.2,352.0 161.0,336.4 167.5,338.3 173.4,358.2 154.8,365.8" fill="#dde6d3" stroke="#dde6d3" stroke-width="0.5"/><polygon points="174.0,360.1 167.5,338.3 181.7,325.2 192.5,331.4 196.5,340.7 193.8,353.9" fill="#adb4a6" stroke="#adb4a6" stroke-width="0.5"/><polygon points="193.8,353.9 196.5,340.7 221.1,338.0 217.1,360.9 203.5,361.5" fill="#939a8d" stroke="#939a8d" stroke-width="0.5"/><polygon points="215.7,368.8 220.9,339.0 238.6,341.2 240.2,363.2" fill="#6098b8" stroke="#6098b8" stroke-width="0.5"/><polygon points="240.2,363.2 238.6,341.2 245.0,335.7 256.6,336.4 263.0,352.6 242.0,364.0" fill="#7e8479" stroke="#7e8479" stroke-width="0.5"/><polygon points="263.0,352.6 256.6,336.4 264.5,327.5 284.7,328.7 282.0,358.7 274.9,358.9" fill="#7c8177" stroke="#7c8177" stroke-width="0.5"/><polygon points="282.0,358.8 284.6,330.2 305.1,327.7 308.5,357.9" fill="#7c8177" stroke="#7c8177" stroke-width="0.5"/><polygon points="308.7,359.6 305.6,331.4 323.6,329.2 333.1,340.7 333.6,343.5 324.3,357.1" fill="#7c8177" stroke="#7c8177" stroke-width="0.5"/><polygon points="333.6,343.5 333.1,340.7 350.0,320.0 361.1,337.5 351.4,347.7" fill="#475131" stroke="#475131" stroke-width="0.5"/><polygon points="356.1,364.2 351.4,347.7 361.1,337.5 374.4,337.5 377.0,360.9 367.3,367.7" fill="#6098b8" stroke="#6098b8" stroke-width="0.5"/><polygon points="377.0,360.9 374.5,338.5 399.2,338.5 399.9,355.6 389.6,363.1" fill="#7da568" stroke="#7da568" stroke-width="0.5"/><polygon points="399.9,355.6 399.1,336.1 419.5,335.4 428.3,357.2 417.1,362.8" fill="#72965f" stroke="#72965f" stroke-width="0.5"/><polygon points="428.3,357.2 419.5,335.4 427.5,323.9 434.1,322.9 445.3,329.3 442.1,352.3 432.9,358.0" fill="#a89a78" stroke="#a89a78" stroke-width="0.5"/><polygon points="442.1,352.3 445.3,329.3 451.0,327.9 469.8,337.3 461.0,355.8" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="466.0,364.9 461.0,355.8 469.7,337.4 483.9,340.0 491.0,358.2 480.6,368.4" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="491.0,358.2 483.9,340.0 491.3,332.6 509.3,331.4 511.0,359.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="510.9,357.8 509.3,332.2 533.2,330.2 533.2,357.8" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="533.2,357.8 533.2,330.6 551.0,331.9 556.0,338.6 547.9,357.8" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,339.5 576.0,361.5 555.0,362.7 547.9,357.8 556.0,338.6" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="0.0,382.3 0.0,350.7 20.0,356.7 18.0,368.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="46.4,396.0 42.9,396.0 18.0,368.2 20.0,356.7 35.9,355.7 47.8,365.9" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="60.5,396.0 46.4,396.0 47.8,365.9 63.6,356.3 76.0,360.3 77.6,365.6" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="100.9,396.0 60.5,396.0 77.6,365.6 98.0,378.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="98.0,378.2 77.6,365.6 76.0,360.3 85.5,348.2 111.1,359.5" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="133.5,396.0 100.9,396.0 98.0,378.2 113.1,356.7 123.5,359.5" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="148.4,396.0 133.5,396.0 123.5,359.5 139.0,351.9 154.8,365.8" fill="#cad3c1" stroke="#cad3c1" stroke-width="0.5"/><polygon points="185.0,396.0 148.4,396.0 154.8,365.8 175.6,357.4" fill="#bcc4b4" stroke="#bcc4b4" stroke-width="0.5"/><polygon points="194.5,396.0 185.0,396.0 176.1,359.4 193.8,353.9 203.5,361.5" fill="#abb2a4" stroke="#abb2a4" stroke-width="0.5"/><polygon points="220.0,396.0 194.5,396.0 203.5,361.5 225.4,360.5" fill="#7c8177" stroke="#7c8177" stroke-width="0.5"/><polygon points="254.8,396.0 220.0,396.0 224.4,366.8 240.2,363.2 242.0,364.0 254.3,385.1" fill="#6098b8" stroke="#6098b8" stroke-width="0.5"/><polygon points="254.3,385.1 242.0,364.0 263.0,352.6 274.9,358.9" fill="#7c8177" stroke="#7c8177" stroke-width="0.5"/><polygon points="287.4,396.0 254.8,396.0 254.3,385.1 274.9,358.9 282.2,358.7" fill="#6098b8" stroke="#6098b8" stroke-width="0.5"/><polygon points="309.1,396.0 287.4,396.0 282.2,358.8 310.9,357.8" fill="#6098b8" stroke="#6098b8" stroke-width="0.5"/><polygon points="336.4,396.0 309.1,396.0 310.8,359.3 324.3,357.1 339.9,374.0" fill="#475131" stroke="#475131" stroke-width="0.5"/><polygon points="339.9,374.0 324.3,357.1 333.6,343.5 351.4,347.7 356.1,364.2" fill="#6098b8" stroke="#6098b8" stroke-width="0.5"/><polygon points="371.3,396.0 336.4,396.0 339.9,374.0 356.1,364.2 367.3,367.7" fill="#687848" stroke="#687848" stroke-width="0.5"/><polygon points="398.9,396.0 371.3,396.0 367.3,367.7 377.0,360.9 389.6,363.1" fill="#6c7d4b" stroke="#6c7d4b" stroke-width="0.5"/><polygon points="409.0,396.0 398.9,396.0 389.6,363.1 399.9,355.6 417.1,362.8" fill="#b7a882" stroke="#b7a882" stroke-width="0.5"/><polygon points="445.7,396.0 409.0,396.0 417.1,362.8 428.3,357.2 432.9,358.0 446.2,391.0" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="446.2,391.0 432.9,358.0 442.1,352.3 461.0,355.8 466.0,364.9" fill="#3d7ea6" stroke="#3d7ea6" stroke-width="0.5"/><polygon points="487.7,396.0 445.7,396.0 446.2,391.0 466.0,364.9 480.6,368.4" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="509.4,396.0 487.7,396.0 480.6,368.4 491.0,358.2 509.4,359.0" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="533.2,396.0 509.4,396.0 509.4,357.8 533.2,357.8" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="551.6,396.0 533.2,396.0 533.2,357.8 547.9,357.8 555.0,362.7" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="576.0,361.5 576.0,396.0 551.6,396.0 555.0,362.7" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/><polygon points="42.9,396.0 0.0,396.0 0.0,382.3 18.0,368.2" fill="#1f4e6b" stroke="#1f4e6b" stroke-width="0.5"/></g><path d="M175.9,19.0 L177.1,0.0 M438.8,0.0 L438.8,20.2 M113.3,36.7 L116.3,21.5 M116.3,21.5 L138.9,21.5 M138.9,21.1 L161.6,16.7 M161.7,22.8 L175.9,19.0 M438.8,20.2 L442.6,24.1 M442.6,24.1 L442.4,31.9 M85.2,60.8 L86.9,41.1 M86.9,41.1 L93.6,36.1 M93.6,36.1 L106.8,41.4 M106.8,41.4 L113.3,36.7 M442.4,31.9 L452.4,44.5 M452.4,44.5 L446.2,57.6 M69.2,83.4 L60.7,55.3 M60.7,55.3 L85.4,60.6 M446.2,57.6 L464.2,72.3 M464.2,72.3 L464.2,73.4 M66.6,92.1 L66.3,84.3 M72.7,102.6 L66.6,92.1 M464.2,73.4 L473.7,85.3 M473.7,85.3 L471.0,101.5 M63.7,116.4 L72.7,102.6 M69.6,128.9 L63.7,116.4 M471.0,101.5 L484.9,107.1 M484.9,107.1 L489.5,123.7 M65.2,139.1 L69.6,128.9 M87.0,150.0 L65.2,139.1 M489.5,123.7 L507.8,124.2 M507.8,124.2 L507.4,146.8 M87.0,159.8 L87.0,150.0 M507.4,146.8 L516.2,152.0 M516.2,152.0 L518.7,166.8 M518.7,166.8 L509.1,176.4 M69.2,183.4 L70.9,167.2 M70.9,167.2 L87.0,159.8 M94.0,183.1 L86.5,187.5 M86.5,187.5 L69.2,183.4 M108.1,191.0 L94.0,183.1 M509.1,176.4 L510.8,188.2 M110.0,201.7 L108.1,191.0 M510.8,188.2 L513.8,190.8 M513.8,190.8 L515.7,209.5 M515.7,209.5 L509.8,214.6 M90.0,227.9 L90.0,212.4 M90.0,212.4 L107.6,206.9 M107.6,206.9 L110.0,201.8 M509.8,214.6 L508.4,226.5 M87.1,247.3 L88.6,229.5 M88.6,229.5 L90.0,227.9 M98.2,254.6 L87.1,247.3 M510.4,226.2 L509.5,247.5 M509.5,247.5 L489.5,247.5 M93.9,271.3 L98.2,254.6 M488.2,249.0 L488.2,265.5 M84.8,290.3 L87.5,275.1 M87.5,275.1 L93.9,271.3 M102.4,296.5 L84.8,290.3 M492.4,265.5 L488.9,286.6 M104.6,309.9 L102.4,296.5 M110.0,312.6 L104.6,309.9 M486.8,286.5 L479.4,311.2 M479.4,311.2 L475.2,311.9 M475.2,311.9 L461.9,306.0 M116.4,329.6 L110.0,312.6 M130.5,328.1 L116.4,329.6 M461.9,306.0 L451.0,327.9 M451.0,327.9 L445.3,329.3 M139.0,352.2 L134.1,330.2 M428.3,357.2 L417.1,362.8 M445.3,329.3 L442.1,352.3 M442.1,352.3 L432.9,358.0 M432.9,358.0 L428.3,357.2 M133.5,396.0 L123.5,359.5 M123.5,359.5 L139.0,351.9 M417.1,362.8 L409.0,396.0" fill="none" stroke="#283640" stroke-width="2.0" stroke-linecap="round"/><g opacity="0.9"><path d="M387.0,348.4 L412.2,347.4" fill="none" stroke="#4a82af" stroke-width="3.9" stroke-linecap="round" stroke-linejoin="round"/><path d="M235.5,262.5 L232.7,281.6" fill="none" stroke="#4a82af" stroke-width="3.0" stroke-linecap="round" stroke-linejoin="round"/><path d="M252.0,247.5 L235.5,262.5" fill="none" stroke="#4a82af" stroke-width="2.9" stroke-linecap="round" stroke-linejoin="round"/><path d="M256.5,225.0 L252.0,247.5" fill="none" stroke="#4a82af" stroke-width="2.9" stroke-linecap="round" stroke-linejoin="round"/><path d="M286.9,226.1 L256.5,225.0" fill="none" stroke="#4a82af" stroke-width="2.8" stroke-linecap="round" stroke-linejoin="round"/><path d="M283.5,198.0 L286.9,226.1" fill="none" stroke="#4a82af" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/><path d="M196.2,30.6 L186.4,10.3" fill="none" stroke="#4a82af" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round"/><path d="M279.0,171.0 L283.5,198.0" fill="none" stroke="#4a82af" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round"/><path d="M304.2,167.4 L279.0,171.0" fill="none" stroke="#4a82af" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/><path d="M306.0,213.8 L286.9,226.1" fill="none" stroke="#4a82af" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/><path d="M457.5,286.5 L475.5,297.0" fill="none" stroke="#4a82af" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M301.5,144.0 L304.2,167.4" fill="none" stroke="#4a82af" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M216.0,38.6 L196.2,30.6" fill="none" stroke="#4a82af" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/><path d="M187.5,54.0 L196.2,30.6" fill="none" stroke="#4a82af" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/><path d="M319.5,202.5 L306.0,213.8" fill="none" stroke="#4a82af" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/><path d="M325.5,133.5 L301.5,144.0" fill="none" stroke="#4a82af" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/><path d="M435.0,282.0 L457.5,286.5" fill="none" stroke="#4a82af" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/></g></svg>
|
|
Binary file
|