Compare commits
12 Commits
740c420900
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 6ee33eb085 | |||
| cded317a40 | |||
| c6e0b95d81 | |||
| d19913a53d | |||
| d4844ded67 | |||
| b29b3b22d4 | |||
| 4a059f32c5 | |||
| db69f3498d | |||
| f880ae1c97 | |||
| dd84293c36 | |||
| b4f957a028 | |||
| c42aae7c49 |
@@ -72,8 +72,10 @@ the same layout:
|
||||
|
||||
The GA cycle and penalty scheme are read directly from `$PLATZ_CFG/zyklus.cfg` and
|
||||
`$PLATZ_CFG/strafen.cfg` (independent of `--indir`). There is no `platz.cfg` indirection any
|
||||
more — it was removed; `zyklus.cfg`/`strafen.cfg` are loaded straight from `$PLATZ_CFG`, and
|
||||
the GA profile is chosen by the `--zyklus-art <name>` switch (default `Adaptiv`).
|
||||
more — it was removed; `zyklus.cfg`/`strafen.cfg` are loaded straight from `$PLATZ_CFG`, the
|
||||
GA profile is chosen by the `--zyklus-art <name>` switch (default `Adaptiv`), the penalty
|
||||
profile by the `--strafen <name>` switch (default `default`), and the SVG colour profile by
|
||||
the `--farben <name>` switch (default `grosse_gruppen`).
|
||||
|
||||
- `cfg/zyklus.cfg` — defines the GA profiles. Two flavours: **static** profiles (`Easy`,
|
||||
`Simple`) give an explicit sequence of actions (`e`=erzeugen/create, `s`=selektieren/
|
||||
@@ -84,10 +86,30 @@ the GA profile is chosen by the `--zyklus-art <name>` switch (default `Adaptiv`)
|
||||
with a shrinking population (`Start`, `Schrumpfung`, `MinPopulation`) and a convergence
|
||||
stop (`Geduld` generations without an improvement of at least `Schwelle`, capped by
|
||||
`MaxGenerationen`). Static profiles run via `Farm._LaufStatisch()`.
|
||||
- `cfg/strafen.cfg` — the penalty ("Strafpunkte") table: cost of splitting a group across
|
||||
tables (by group size and number of splits), cost of a lone person, per-table
|
||||
under-utilization penalties, and (optional `[Abstand]` section) a penalty for the spatial
|
||||
distance between split-off parts of a group.
|
||||
- `cfg/strafen.cfg` — the penalty ("Strafpunkte") profiles. Each section is one complete
|
||||
profile ("Vorgehen") in a single namespace, chosen by `--strafen <section>` (default
|
||||
`default`); this lets several scoring strategies live in one file (the shipped file also
|
||||
has a `locker` example with cheaper splits). Keys per profile: `Anzahl_Trennungen_N`
|
||||
(`{groupsize:points}` for a group split across `N+1` tables, i.e. `N` splits — recursing to
|
||||
smaller sizes when no exact entry), `NichtNachbar` (no group-mate at a neighbouring table),
|
||||
`Allein` (a lone person), optional `TischWertigkeiten` (`{freeseats:points}` under-utilization,
|
||||
with a nearest-lower-key fallback; absent = free seats not penalised, as in the `locker`
|
||||
profile), and optional `AbstandFaktor` (per spatial-distance unit
|
||||
between split-off parts; absent = distance not penalised). `Strafliste.laden(FileName,
|
||||
Sektion='default')` parses one section; the old `[Trennung]`/`[Globals]`/`[Abstand]`
|
||||
three-section layout is gone.
|
||||
- `cfg/farben.cfg` — SVG colour profiles, chosen by `--farben <section>` (default
|
||||
`grosse_gruppen`) / env `PLATZ_FARBENART`, parsed by `Farben.Farbschema.laden()` (in
|
||||
`libs/Farben.py`) and passed into `Sitzplatzverteilung.alsSVG(..., Farbschema=...)`. Two
|
||||
modes: `Modus = palette` (a `Palette` colour list cycled per group by sorted group id — the
|
||||
`grosse_gruppen` profile) and `Modus = kategorien` (the `hochzeit` profile — splits groups
|
||||
into **Familie** = members mostly share a surname, coloured along `FamilienVerlaeufe`
|
||||
gradients blue→green / yellow→orange, one gradient bucket per surname; **Verein** = any
|
||||
other named group, along `VereinVerlauf` violet→grey; **VIP** = fixed-table people with no
|
||||
GA group, the start of `VIPVerlauf`, red). Gradient syntax `"start -> end"`. Anonymous bulk
|
||||
bookings (all members identical, e.g. an `anzahl`-expanded "Gast Musikverein") are *not*
|
||||
treated as a family. Absent/invalid config falls back to the built-in palette
|
||||
(`Farbschema=None`), so the SVG always renders.
|
||||
|
||||
`tische.ini`/`bestellung.json`/`TischePersonen.txt`/`PersonenTische.csv` are fixed filenames
|
||||
resolved as `os.path.join(indir, ...)` in `platz.py`.
|
||||
@@ -100,6 +122,19 @@ solution's ancestral branch highlighted and labelled with its id. Every solution
|
||||
running number (`Farm._NeueId`, `1..N`); the ancestry is not encoded in the id but recorded
|
||||
via each node's stored predecessor (parent id) and followed back along the highlighted branch.
|
||||
|
||||
Pass `--seed <int>` to make a run fully reproducible: `platz.py` calls `random.seed()` with
|
||||
it before any GA action, so the same seed always yields the same seating (for support
|
||||
questions like "why is Aunt Erna seated there?" — rerun with the same seed to get the exact
|
||||
same plan). Reproducibility needs more than seeding the RNG: `Person` defines an Id-based
|
||||
`__hash__`/`__eq__` (each booking has a unique running integer Id) so that the `set()` of
|
||||
people in a `Gruppe` iterates/`pop()`s in a process-stable order — otherwise the order would
|
||||
hinge on object memory addresses (and, for string-keyed containers, `PYTHONHASHSEED`), leaving
|
||||
the run non-reproducible even with `--seed`. Integer Ids aren't affected by `PYTHONHASHSEED`,
|
||||
so no environment tweaking is required.
|
||||
|
||||
`Farm.TopN(n)` returns the `n` best solutions (descending), clamped to `[0, len(Pool)]` — the
|
||||
list generalisation of `Farm.Bester()` (single best), for surfacing several good alternatives.
|
||||
|
||||
Run the test suite with `bin/run_tests.bat` / `bin/run_tests.sh` (or directly: `python -m
|
||||
unittest discover -s tests -p "test_*.py" -v`). A stray global `PYTHONPATH` entry on this
|
||||
machine points at an unrelated project that also defines a `tests` package — this shadows
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
# Farbprofile fuer die SVG-Ausgabe (Sitzplatzverteilung.alsSVG).
|
||||
#
|
||||
# Jede Sektion ist ein Farbprofil, waehlbar per --farben <Sektion> (libs/platz.py,
|
||||
# Vorgabe: grosse_gruppen) bzw. ueber PLATZ_FARBENART (Web). So laesst sich je
|
||||
# Anlass ein anderes Farbschema vorwaehlen.
|
||||
#
|
||||
# Modus = palette
|
||||
# Eine Farbliste (Palette), die zyklisch je Gruppe (nach Gruppen-Id sortiert)
|
||||
# vergeben wird. Gut fuer viele/grosse Gruppen, wo es nur auf klare
|
||||
# Unterscheidbarkeit ankommt.
|
||||
#
|
||||
# Modus = kategorien
|
||||
# Trennt die Gruppen nach Art und faerbt sie unterschiedlich ein - gedacht
|
||||
# fuer Hochzeiten:
|
||||
# - Familie: eine Gruppe, deren Mitglieder mehrheitlich denselben
|
||||
# Nachnamen tragen. Jeder Nachname bekommt einen Farbverlauf
|
||||
# (abwechselnd aus FamilienVerlaeufe), Untergruppen desselben
|
||||
# Nachnamens laufen den Verlauf entlang (z.B. Blau -> Gruen).
|
||||
# - Verein: jede sonstige benannte Gruppe (Freunde, Kollegen, Vereine);
|
||||
# laeuft ueber VereinVerlauf (z.B. Violett -> Grau).
|
||||
# - VIP: fest gesetzte Gaeste ohne GA-Gruppe (Ehrentafel, Kindertisch);
|
||||
# bekommen die Startfarbe von VIPVerlauf (Rot).
|
||||
#
|
||||
# Farbverlauf-Syntax: "Startfarbe -> Endfarbe"; mehrere Verlaeufe kommagetrennt.
|
||||
|
||||
|
||||
# Fuer grosse Veranstaltungen mit vielen Gruppen: reine Palette, zyklisch.
|
||||
[grosse_gruppen]
|
||||
Modus = palette
|
||||
Palette = #e6194b, #3cb44b, #4363d8, #f58231, #911eb4, #42d4f4, #f032e6,
|
||||
#bfef45, #fabed4, #469990, #dcbeff, #9a6324, #800000, #aaffc3,
|
||||
#000075, #808000, #ffd8b1, #f58231, #46f0f0, #d2f53c
|
||||
|
||||
|
||||
# Fuer Hochzeiten: nach Familie / Verein / VIP getrennt.
|
||||
[hochzeit]
|
||||
Modus = kategorien
|
||||
# Familien: abwechselnd Blau -> Gruen und Gelb -> Orange (je Nachname ein
|
||||
# Verlauf, damit sich verschiedene Familien unterscheiden).
|
||||
FamilienVerlaeufe = #1f4e9c -> #2fae5f, #f2c200 -> #e8590c
|
||||
# Vereine / gemischte Gruppen: Violett -> Grau.
|
||||
VereinVerlauf = #7b2fbf -> #9aa0a6
|
||||
# VIPs (feste Platzierung): Rot.
|
||||
VIPVerlauf = #e63946 -> #8b0000
|
||||
@@ -1,38 +1,56 @@
|
||||
# Strafpunkte fuer die Trennung einer Gruppe:
|
||||
# Aufbau: Anzahl der Trennungen = { Gruppengroesse:Strafpunkte, .. }
|
||||
# Deutlich hoeher als frueher, damit eine Trennung teurer ist als der Gewinn,
|
||||
# einen Tisch dafuer teilbelegt zu lassen (sonst werden Gruppen getrennt,
|
||||
# obwohl daneben leere Tische stehen).
|
||||
[Trennung]
|
||||
1={ 2:-25, 3:-22, 4:-18, 6:-14, 8:-12, 10:-10 }
|
||||
2={ 3:-40, 4:-30, 6:-22, 8:-18, 10:-14 }
|
||||
3={ 4:-60, 6:-40, 8:-30, 10:-20 }
|
||||
# Strafpunkte-Profile ("Vorgehen") fuer die Bewertung einer Sitzplatzverteilung.
|
||||
#
|
||||
# Jede Sektion ist EIN vollstaendiges Bewertungsprofil mit allen Angaben. So
|
||||
# lassen sich mehrere Vorgehensweisen nebeneinander pflegen und speichern. Per
|
||||
# Schalter --strafen <Sektionsname> waehlt man ein Profil; ohne Schalter wird
|
||||
# [default] verwendet.
|
||||
#
|
||||
# Schluessel je Profil:
|
||||
# Anzahl_Trennungen_N = { Gruppengroesse:Strafpunkte, .. }
|
||||
# Strafpunkte fuer das Aufteilen einer Gruppe (N = Anzahl der Trennungen,
|
||||
# also auf N+1 Tische verteilt), gestaffelt nach Gruppengroesse. Fehlt ein
|
||||
# exakter Gruppengroessen-Eintrag, wird auf die naechstkleinere Groesse
|
||||
# zurueckgegriffen. Mindestens Anzahl_Trennungen_1 sollte gesetzt sein.
|
||||
# NichtNachbar = Strafe, wenn zwei Gruppenteile nicht am Nachbartisch sitzen
|
||||
# Allein = Strafe, wenn eine Person ohne Gruppenmitglied am Tisch sitzt
|
||||
# TischWertigkeiten = { freiePlaetze:Strafpunkte, .. } fuer freie Sitze an einem
|
||||
# (teil-)belegten Tisch. Fehlt ein exakter Eintrag, gilt der
|
||||
# naechstkleinere. Teilbelegte Tische sind am schlechtesten
|
||||
# (dort passt keine ganze Gruppe mehr hin), daher steigt die
|
||||
# Strafe mit den freien Plaetzen; ein komplett leerer Tisch
|
||||
# (hoechster Schluessel) ist etwas besser, aber nicht gratis,
|
||||
# damit sich das Zusammenziehen von Gruppen lohnt.
|
||||
# Optional; fehlt der ganze Schluessel, werden freie Plaetze
|
||||
# gar nicht bestraft -> mehr Teilbelegungen moeglich.
|
||||
# AbstandFaktor = Strafpunkte je normierter Abstandseinheit (0..100) zwischen
|
||||
# getrennten Teilen einer Gruppe. Der Abstand ist auf die
|
||||
# maximale Ausdehnung der Tischanordnung normiert (100 =
|
||||
# ein Teil ganz links/oben, der andere ganz rechts/unten).
|
||||
# AbstandFaktor=-0.2 kostet den Maximalabstand also -20.
|
||||
# Optional; fehlt der Schluessel, wird der Abstand nicht
|
||||
# bestraft (Faktor 0).
|
||||
|
||||
# Wieviele Strafpunkte bekommt man
|
||||
# wenn zwei Gruppen nicht am Nachbartisch sitzen
|
||||
# wenn einer aus einer Gruppe allein sitzen muss
|
||||
[Globals]
|
||||
# Standardprofil: Trennungen sind bewusst teuer, damit eine Gruppe lieber
|
||||
# zusammen an einem teilbelegten Tisch sitzt, als neben einem leeren getrennt zu
|
||||
# werden.
|
||||
[default]
|
||||
Anzahl_Trennungen_1={ 2:-25, 3:-22, 4:-18, 6:-14, 8:-12, 10:-10 }
|
||||
Anzahl_Trennungen_2={ 3:-40, 4:-30, 6:-22, 8:-18, 10:-14 }
|
||||
Anzahl_Trennungen_3={ 4:-60, 6:-40, 8:-30, 10:-20 }
|
||||
NichtNachbar=-3
|
||||
Allein=-30
|
||||
TischWertigkeiten={ 1:-3, 2:-3, 4:-5, 6:-6, 8:-4 }
|
||||
AbstandFaktor=-0.2
|
||||
|
||||
# TischWertigkeiten sind Strafpunkte fuer freie Sitze an einem Tisch, je nach
|
||||
# Anzahl freier Plaetze (fehlt ein exakter Eintrag, gilt der naechstkleinere).
|
||||
# Ziel: teilbelegte Tische sind am schlechtesten (dort passt keine ganze
|
||||
# Gruppe mehr hin und die Sitzenden haben leere Nachbarplaetze), daher steigt
|
||||
# die Strafe mit den freien Plaetzen an (1..7 frei: -3 -> -6). Ein *komplett*
|
||||
# leerer Tisch ist etwas besser als ein halbleerer (-4 bei 8 frei), weil ein
|
||||
# leerer Tisch als Ganzes fuer eine Gruppe frei bleibt - er soll aber nicht
|
||||
# gratis sein, damit sich das Zusammenziehen von Gruppen lohnt.
|
||||
|
||||
# Strafpunkte fuer den Abstand zwischen getrennten Teilen einer Gruppe.
|
||||
# Wird eine Gruppe auf mehrere Tische aufgeteilt, ist ein grosser raeumlicher
|
||||
# Abstand zwischen den Teilen viel schlechter als ein kleiner.
|
||||
# Der Abstand wird als normierter Wert 0..100 berechnet: Bezugsgroesse ist die
|
||||
# maximale Ausdehnung der Tischanordnung (Breite oder Laenge). Ein Abstand von
|
||||
# 100 heisst also, dass ein Gruppenteil ganz links/oben und der andere ganz
|
||||
# rechts/unten sitzt.
|
||||
# Faktor = Strafpunkte je normierter Abstandseinheit. Bei Faktor=-0.2 kostet
|
||||
# der maximal moegliche Abstand (100) demnach -20 Punkte.
|
||||
[Abstand]
|
||||
Faktor=-0.2
|
||||
# Beispiel fuer ein alternatives Vorgehen: Trennungen sind guenstiger, der
|
||||
# Abstand wird nicht bestraft, und freie Plaetze werden gar nicht bestraft
|
||||
# (TischWertigkeiten fehlt bewusst) — so sind mehr Teilbelegungen moeglich.
|
||||
# Nuetzlich fuer grosse Saele, in denen sich Gruppen kaum ungeteilt platzieren
|
||||
# lassen. Aufruf: --strafen locker
|
||||
[locker]
|
||||
Anzahl_Trennungen_1={ 2:-12, 3:-10, 4:-8, 6:-6, 8:-5, 10:-4 }
|
||||
Anzahl_Trennungen_2={ 3:-20, 4:-16, 6:-12, 8:-9, 10:-7 }
|
||||
Anzahl_Trennungen_3={ 4:-30, 6:-22, 8:-16, 10:-12 }
|
||||
NichtNachbar=-2
|
||||
Allein=-20
|
||||
AbstandFaktor=0.0
|
||||
|
||||
@@ -2,18 +2,21 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="251.2" height="90.4" viewBox="0 0 251.2 90.4">
|
||||
<rect width="100%" height="100%" fill="white"/>
|
||||
<circle cx="45.2" cy="45.2" r="35.2" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="45.2" cy="32" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="45.2" cy="58.4" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="45.2" cy="45.2" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="45.2" y="45.2" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<circle class="person" data-gid="1" data-gruppe="Gruppe 1" data-name="Vorname1 Nachname1" cx="45.2" cy="32" r="12" fill="#e6194b" stroke="black" stroke-width="1"><title>Vorname1 Nachname1 — Gruppe 1</title></circle>
|
||||
<circle class="person" data-gid="1" data-gruppe="Gruppe 1" data-name="Vorname2 Nachname2" cx="45.2" cy="58.4" r="12" fill="#e6194b" stroke="black" stroke-width="1"><title>Vorname2 Nachname2 — Gruppe 1</title></circle>
|
||||
<ellipse cx="45.2" cy="45.2" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="45.2" y="40.4" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<text x="45.2" y="53.6" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">2 Pl.</text>
|
||||
<circle cx="125.6" cy="45.2" r="35.2" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="125.6" cy="32" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="125.6" cy="58.4" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="125.6" cy="45.2" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="125.6" y="45.2" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<circle class="person" data-gid="2" data-gruppe="Gruppe 2" data-name="Vorname3 Nachname3" cx="125.6" cy="32" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Vorname3 Nachname3 — Gruppe 2</title></circle>
|
||||
<circle class="person" data-gid="2" data-gruppe="Gruppe 2" data-name="Vorname4 Nachname4" cx="125.6" cy="58.4" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Vorname4 Nachname4 — Gruppe 2</title></circle>
|
||||
<ellipse cx="125.6" cy="45.2" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="125.6" y="40.4" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<text x="125.6" y="53.6" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">2 Pl.</text>
|
||||
<circle cx="206" cy="45.2" r="35.2" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="206" cy="32" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="206" cy="58.4" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="206" cy="45.2" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="206" y="45.2" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<circle class="person" data-gid="3" data-gruppe="Gruppe 3" data-name="Vorname5 Nachname5" cx="206" cy="32" r="12" fill="#4363d8" stroke="black" stroke-width="1"><title>Vorname5 Nachname5 — Gruppe 3</title></circle>
|
||||
<circle class="person" data-gid="3" data-gruppe="Gruppe 3" data-name="Vorname6 Nachname6" cx="206" cy="58.4" r="12" fill="#4363d8" stroke="black" stroke-width="1"><title>Vorname6 Nachname6 — Gruppe 3</title></circle>
|
||||
<ellipse cx="206" cy="45.2" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="206" y="40.4" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<text x="206" y="53.6" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">2 Pl.</text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.7 KiB |
@@ -1,38 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="251.2" height="412" viewBox="0 0 251.2 412">
|
||||
<rect width="100%" height="100%" fill="white"/>
|
||||
<polyline points="125.6,353.6 206,286.4" fill="none" stroke="#e6194b" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="125.6,380 45.2,286.4" fill="none" stroke="#3cb44b" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="206,125.6 125.6,32" fill="none" stroke="#4363d8" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="125.6,58.4 45.2,125.6" fill="none" stroke="#f58231" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="125.6,353.6 206,286.4" fill="none" stroke="#f58231" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="125.6,380 45.2,286.4" fill="none" stroke="#4363d8" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="206,125.6 125.6,32" fill="none" stroke="#e6194b" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="125.6,58.4 45.2,125.6" fill="none" stroke="#3cb44b" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<circle cx="125.6" cy="366.8" r="35.2" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="125.6" cy="353.6" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="125.6" cy="380" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="125.6" cy="366.8" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="125.6" y="366.8" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<circle class="person" data-gid="4" data-gruppe="Gruppe 4" data-name="Vorname10 Nachname10" cx="125.6" cy="353.6" r="12" fill="#f58231" stroke="black" stroke-width="1"><title>Vorname10 Nachname10 — Gruppe 4</title></circle>
|
||||
<circle class="person" data-gid="3" data-gruppe="Gruppe 3" data-name="Vorname7 Nachname7" cx="125.6" cy="380" r="12" fill="#4363d8" stroke="black" stroke-width="1"><title>Vorname7 Nachname7 — Gruppe 3</title></circle>
|
||||
<ellipse cx="125.6" cy="366.8" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="125.6" y="362" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<text x="125.6" y="375.2" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">2 Pl.</text>
|
||||
<circle cx="206" cy="286.4" r="35.2" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="206" cy="273.2" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="206" cy="299.6" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="206" cy="286.4" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="206" y="286.4" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<circle class="person" data-gid="4" data-gruppe="Gruppe 4" data-name="Vorname11 Nachname11" cx="206" cy="273.2" r="12" fill="#f58231" stroke="black" stroke-width="1"><title>Vorname11 Nachname11 — Gruppe 4</title></circle>
|
||||
<circle class="person" data-gid="4" data-gruppe="Gruppe 4" data-name="Vorname12 Nachname12" cx="206" cy="299.6" r="12" fill="#f58231" stroke="black" stroke-width="1"><title>Vorname12 Nachname12 — Gruppe 4</title></circle>
|
||||
<ellipse cx="206" cy="286.4" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="206" y="281.6" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<text x="206" y="294.8" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">2 Pl.</text>
|
||||
<circle cx="206" cy="125.6" r="35.2" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="206" cy="112.4" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="206" cy="138.8" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="206" cy="125.6" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="206" y="125.6" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<circle class="person" data-gid="1" data-gruppe="Gruppe 1" data-name="Vorname2 Nachname2" cx="206" cy="112.4" r="12" fill="#e6194b" stroke="black" stroke-width="1"><title>Vorname2 Nachname2 — Gruppe 1</title></circle>
|
||||
<circle class="person" data-gid="1" data-gruppe="Gruppe 1" data-name="Vorname3 Nachname3" cx="206" cy="138.8" r="12" fill="#e6194b" stroke="black" stroke-width="1"><title>Vorname3 Nachname3 — Gruppe 1</title></circle>
|
||||
<ellipse cx="206" cy="125.6" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="206" y="120.8" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<text x="206" y="134" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">2 Pl.</text>
|
||||
<circle cx="125.6" cy="45.2" r="35.2" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="125.6" cy="32" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="125.6" cy="58.4" r="12" fill="#f58231" stroke="black" stroke-width="1"/>
|
||||
<circle cx="125.6" cy="45.2" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="125.6" y="45.2" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<circle class="person" data-gid="1" data-gruppe="Gruppe 1" data-name="Vorname1 Nachname1" cx="125.6" cy="32" r="12" fill="#e6194b" stroke="black" stroke-width="1"><title>Vorname1 Nachname1 — Gruppe 1</title></circle>
|
||||
<circle class="person" data-gid="2" data-gruppe="Gruppe 2" data-name="Vorname4 Nachname4" cx="125.6" cy="58.4" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Vorname4 Nachname4 — Gruppe 2</title></circle>
|
||||
<ellipse cx="125.6" cy="45.2" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="125.6" y="40.4" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<text x="125.6" y="53.6" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">2 Pl.</text>
|
||||
<circle cx="45.2" cy="125.6" r="35.2" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="45.2" cy="112.4" r="12" fill="#f58231" stroke="black" stroke-width="1"/>
|
||||
<circle cx="45.2" cy="138.8" r="12" fill="#f58231" stroke="black" stroke-width="1"/>
|
||||
<circle cx="45.2" cy="125.6" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="45.2" y="125.6" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<circle class="person" data-gid="2" data-gruppe="Gruppe 2" data-name="Vorname5 Nachname5" cx="45.2" cy="112.4" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Vorname5 Nachname5 — Gruppe 2</title></circle>
|
||||
<circle class="person" data-gid="2" data-gruppe="Gruppe 2" data-name="Vorname6 Nachname6" cx="45.2" cy="138.8" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Vorname6 Nachname6 — Gruppe 2</title></circle>
|
||||
<ellipse cx="45.2" cy="125.6" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="45.2" y="120.8" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<text x="45.2" y="134" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">2 Pl.</text>
|
||||
<circle cx="45.2" cy="286.4" r="35.2" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="45.2" cy="273.2" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="45.2" cy="299.6" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="45.2" cy="286.4" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="45.2" y="286.4" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<circle class="person" data-gid="3" data-gruppe="Gruppe 3" data-name="Vorname8 Nachname8" cx="45.2" cy="273.2" r="12" fill="#4363d8" stroke="black" stroke-width="1"><title>Vorname8 Nachname8 — Gruppe 3</title></circle>
|
||||
<circle class="person" data-gid="3" data-gruppe="Gruppe 3" data-name="Vorname9 Nachname9" cx="45.2" cy="299.6" r="12" fill="#4363d8" stroke="black" stroke-width="1"><title>Vorname9 Nachname9 — Gruppe 3</title></circle>
|
||||
<ellipse cx="45.2" cy="286.4" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="45.2" y="281.6" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<text x="45.2" y="294.8" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">2 Pl.</text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 5.8 KiB |
@@ -1,26 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="331.6" height="90.4" viewBox="0 0 331.6 90.4">
|
||||
<rect width="100%" height="100%" fill="white"/>
|
||||
<polyline points="45.2,45.2 125.6,45.2" fill="none" stroke="#e6194b" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="206,45.2 286.4,45.2" fill="none" stroke="#3cb44b" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="45.2,45.2 125.6,45.2" fill="none" stroke="#3cb44b" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="206,45.2 286.4,45.2" fill="none" stroke="#e6194b" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<circle cx="45.2" cy="45.2" r="35.2" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="45.2" cy="32" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="45.2" cy="58.4" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="45.2" cy="45.2" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="45.2" y="45.2" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<circle class="person" data-gid="2" data-gruppe="Gruppe 2" data-name="Vorname8 Nachname8" cx="45.2" cy="32" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Vorname8 Nachname8 — Gruppe 2</title></circle>
|
||||
<circle class="person" data-gid="2" data-gruppe="Gruppe 2" data-name="Vorname5 Nachname5" cx="45.2" cy="58.4" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Vorname5 Nachname5 — Gruppe 2</title></circle>
|
||||
<ellipse cx="45.2" cy="45.2" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="45.2" y="40.4" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<text x="45.2" y="53.6" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">2 Pl.</text>
|
||||
<circle cx="125.6" cy="45.2" r="35.2" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="125.6" cy="32" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="125.6" cy="58.4" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="125.6" cy="45.2" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="125.6" y="45.2" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<circle class="person" data-gid="2" data-gruppe="Gruppe 2" data-name="Vorname6 Nachname6" cx="125.6" cy="32" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Vorname6 Nachname6 — Gruppe 2</title></circle>
|
||||
<circle class="person" data-gid="2" data-gruppe="Gruppe 2" data-name="Vorname7 Nachname7" cx="125.6" cy="58.4" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Vorname7 Nachname7 — Gruppe 2</title></circle>
|
||||
<ellipse cx="125.6" cy="45.2" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="125.6" y="40.4" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<text x="125.6" y="53.6" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">2 Pl.</text>
|
||||
<circle cx="206" cy="45.2" r="35.2" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="206" cy="32" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="206" cy="58.4" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="206" cy="45.2" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="206" y="45.2" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<circle class="person" data-gid="1" data-gruppe="Gruppe 1" data-name="Vorname3 Nachname3" cx="206" cy="32" r="12" fill="#e6194b" stroke="black" stroke-width="1"><title>Vorname3 Nachname3 — Gruppe 1</title></circle>
|
||||
<circle class="person" data-gid="1" data-gruppe="Gruppe 1" data-name="Vorname4 Nachname4" cx="206" cy="58.4" r="12" fill="#e6194b" stroke="black" stroke-width="1"><title>Vorname4 Nachname4 — Gruppe 1</title></circle>
|
||||
<ellipse cx="206" cy="45.2" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="206" y="40.4" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<text x="206" y="53.6" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">2 Pl.</text>
|
||||
<circle cx="286.4" cy="45.2" r="35.2" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="286.4" cy="32" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="286.4" cy="58.4" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="286.4" cy="45.2" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="286.4" y="45.2" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<circle class="person" data-gid="1" data-gruppe="Gruppe 1" data-name="Vorname1 Nachname1" cx="286.4" cy="32" r="12" fill="#e6194b" stroke="black" stroke-width="1"><title>Vorname1 Nachname1 — Gruppe 1</title></circle>
|
||||
<circle class="person" data-gid="1" data-gruppe="Gruppe 1" data-name="Vorname2 Nachname2" cx="286.4" cy="58.4" r="12" fill="#e6194b" stroke="black" stroke-width="1"><title>Vorname2 Nachname2 — Gruppe 1</title></circle>
|
||||
<ellipse cx="286.4" cy="45.2" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="286.4" y="40.4" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">0</text>
|
||||
<text x="286.4" y="53.6" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">2 Pl.</text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 3.8 KiB |
@@ -160,10 +160,17 @@ Die folgenden Grundsatzfragen sind entschieden und gelten für alle Meilensteine
|
||||
|
||||
- [x] Python 2 → 3 Migration (bereits erledigt)
|
||||
- [x] Unittest-Suite mit Kernszenarien (bereits erledigt)
|
||||
- [ ] `Farm` erweitern: `TopN()` statt nur `Bester()` — Grundlage für "mehrere Varianten"
|
||||
später. Kleine, risikoarme Änderung am bestehenden Code.
|
||||
- [ ] Determinismus-Option: `random.seed()` als Parameter durchreichen, damit ein Ergebnis
|
||||
bei Bedarf reproduzierbar ist (Support-Anfragen: "warum sitzt Tante Erna da?")
|
||||
- [x] `Farm` erweitern: `TopN()` statt nur `Bester()` — Grundlage für "mehrere Varianten"
|
||||
später. Umgesetzt in `libs/ga.py` (`Farm.TopN(n)`: die `n` besten Lösungen absteigend,
|
||||
geclamped auf `[0, len(Pool)]`).
|
||||
- [x] Determinismus-Option: `random.seed()` als Parameter durchreichen, damit ein Ergebnis
|
||||
bei Bedarf reproduzierbar ist (Support-Anfragen: "warum sitzt Tante Erna da?").
|
||||
Umgesetzt als `--seed <int>` in `libs/platz.py`. **Wichtig:** der RNG-Seed allein
|
||||
reichte nicht — `Person` hasht im `set()` einer `Gruppe` sonst über `id()`
|
||||
(Speicheradresse), wodurch `set.pop()`-Reihenfolge in `Gruppe.teilen()` pro Prozess
|
||||
variierte. Behoben durch Id-basiertes `__hash__`/`__eq__` an `Person`
|
||||
(`libs/Strukturdaten.py`); Integer-Ids sind zudem `PYTHONHASHSEED`-unabhängig. Auf
|
||||
`work/hochzeit` verifiziert: gleicher Seed → bytegleicher Plan, anderer Seed → abweichend.
|
||||
- [x] Rechtsform geklärt: Betrieb über die bestehende **MiSta GmbH** (Impressum), keine
|
||||
Neugründung — Ausgründung aus der Holding erst bei Erfolg (Konzeptentscheidung Nr. 7)
|
||||
- [x] Namensfrage geklärt: **"Sitz & Platz"** für Deutschland, **Sitzwunder/SeatWonder**
|
||||
@@ -201,11 +208,22 @@ Session-basiert, nichts wird dauerhaft gespeichert (schont Datenschutz-Aufwand i
|
||||
- [x] Einfache Browser-Testoberfläche (`web/static/index.html`): Tisch-Tabelle mit
|
||||
Presets, CSV-Textfeld/-Upload, Berechnen-Button, Kennzahlen + SVG-Anzeige —
|
||||
Zwischenschritt, wird durch den Konva-Tisch-Editor (unten) abgelöst
|
||||
- [ ] **Interaktiver Tisch-Editor** (Frontend, React/Vue + SVG):
|
||||
Kreise per Drag & Drop platzieren, Kapazität einstellen, Nachbarschaft automatisch
|
||||
aus räumlicher Nähe ableiten (statt manueller `Nachbarliste`-Pflege in `tische.ini`)
|
||||
- [x] **Interaktiver Tisch-Editor** (Frontend): Kreise per Drag & Drop platzieren,
|
||||
Kapazität einstellen (+/−/Direkteingabe), Tische hinzufügen/löschen, Nachbarschaft
|
||||
live aus räumlicher Nähe abgeleitet (gleiche Radius-Logik wie `_NachbarnAbleiten`
|
||||
im Backend, Radius per Slider). Umgesetzt als `web/static/editor.html` —
|
||||
**buildfrei, Inline-SVG + Vanilla-JS** statt React/Konva, weil das bestehende
|
||||
Frontend keine Build-Toolchain (npm/package.json) hat; das State-Modell
|
||||
(`{id, plaetze, x, y}`) ist dasselbe wie für eine spätere Konva-Portierung.
|
||||
Backend um `GET /sitzung/{id}/tische` (Layout-Round-Trip) ergänzt, Session wird
|
||||
per `localStorage` mit der Testoberfläche geteilt. Nebenbei behoben: fehlender
|
||||
`import configparser` in `web/main.py` (der `/tische-datei`-Upload wäre sonst mit
|
||||
`NameError` abgestürzt).
|
||||
- Baut direkt auf `alsSVG()`-Geometrie auf (Radius-Berechnung ist bereits da)
|
||||
- [ ] Undo/Redo, "Variante neu berechnen"-Button
|
||||
- [x] **Undo/Redo** im Editor: Snapshot-History (Stapel je Vor-Zustand von `state.tische`),
|
||||
ein Drag zählt als ein Schritt; Tastatur `Strg+Z` / `Strg+Y` (bzw. `Strg+Shift+Z`),
|
||||
`Entf` löscht den ausgewählten Tisch. "Variante neu berechnen" liegt bereits als
|
||||
wiederholter `POST .../berechnen` in der Testoberfläche vor (jeder Klick = neue Variante).
|
||||
- [ ] Hosting: einfacher Single-Server-Betrieb bei **Hetzner** reicht (Konzeptentscheidung
|
||||
Nr. 6 — kein Kubernetes-Overkill für MVP)
|
||||
|
||||
@@ -225,15 +243,28 @@ verarbeitet werden (was bei jedem Webserver der Fall ist).
|
||||
|
||||
**Ziel:** Nutzer bekommt mehrere Vorschläge statt einer festen Lösung, kann vergleichen.
|
||||
|
||||
- [ ] `Farm.TopN(n)` nutzen, um z.B. 3–5 unterschiedliche gute Lösungen zurückzugeben
|
||||
(ggf. mit verschiedenen Zufalls-Seeds parallel starten für Diversität)
|
||||
- [ ] Vergleichsansicht im Frontend: Varianten nebeneinander, Kennzahlen sichtbar machen
|
||||
(Wertigkeit, Anzahl Gruppentrennungen, "Alleine sitzende Personen")
|
||||
- [ ] Performance: bei sehr großen Sälen (200+ Personen) ggf. `Zyklus`-Parameter
|
||||
(Anzahl Generationen/Population) an Problemgröße koppeln, damit Antwortzeit
|
||||
im Web-Kontext (Sekunden, nicht Minuten) bleibt — Lasttest nötig
|
||||
- [ ] Optional: Hintergrund-Job-Queue (z.B. Celery/RQ), falls Berechnung >5s dauert,
|
||||
damit der Webserver nicht blockiert
|
||||
- [x] `Farm.TopN(n)` nutzen, um z.B. 3–5 unterschiedliche gute Lösungen zurückzugeben:
|
||||
`POST /berechnen?varianten=N` (1–5, Default 3) nimmt `TopN` über den ganzen Endpool
|
||||
und dedupliziert über eine Sitzordnungs-Signatur (`frozenset` aus Tisch-Id ×
|
||||
Personen-Ids), damit Mutations-Verwandte mit identischer Sitzordnung nicht als
|
||||
"Varianten" zählen. Liefert der Pool weniger unterschiedliche Sitzordnungen, kommen
|
||||
weniger zurück; ein weiterer Berechnen-Klick startet einen frischen Lauf.
|
||||
Seed-parallele Läufe für noch mehr Diversität ("ggf.") waren nicht nötig —
|
||||
ein Lauf liefert im Test bereits 3 paarweise verschiedene Varianten.
|
||||
`GET /ergebnis.svg?variante=k` rendert jede Variante einzeln.
|
||||
- [x] Vergleichsansicht im Frontend: Varianten-Karten nebeneinander mit Kennzahlen
|
||||
(Wertigkeit, getrennte Gruppen + Teilungen gesamt, allein sitzende Personen —
|
||||
letzteres via `LeuteAllein()`, zählt nur Personen aus mehrköpfigen Gruppen ohne
|
||||
Gruppenmitglied am Tisch); Klick auf eine Karte schaltet Tische-/Gruppen-Tabellen
|
||||
und den SVG-Raumplan auf die Variante um.
|
||||
- [x] Performance: Lasttest erledigt (2026-07-12) — `work/innenhoefe` (300 Gäste,
|
||||
88 Tische) rechnet mit dem **Adaptiv**-Profil (Web-Default) in ~1,7–1,9 s
|
||||
(5–7 Generationen, inkl. Python-Start), Easy in ~0,3 s. Beides weit unter der
|
||||
5-s-Schwelle → `Zyklus`-Parameter-Kopplung an die Problemgröße ist **nicht nötig**;
|
||||
erst wieder prüfen, falls Zyklen deutlich vergrößert werden (siehe Risiko Nr. 2).
|
||||
- [x] Optional: Hintergrund-Job-Queue (z.B. Celery/RQ), falls Berechnung >5s dauert —
|
||||
**entfällt nach dem Lasttest** (s.o.): Adaptiv bleibt bei ~2 s, der Webserver
|
||||
blockiert nicht spürbar. Entscheidung dokumentiert, bei Bedarf reaktivierbar.
|
||||
|
||||
**Tech-Debt / Modernisierung (Code-Review 2026-07-11):** Beim Umbau bereits erledigt sind
|
||||
`eval()` → `ast.literal_eval` (bzw. ein sicherer Mini-Auswerter für die String-Ausdrücke
|
||||
@@ -331,10 +362,14 @@ parallel anlaufen — eher ~4–4,5 Monate bis M4-Abschluss.
|
||||
nicht erst kurz vor Launch.
|
||||
2. **GA-Performance bei großen Sälen** — erster Datenpunkt (2026-07-11): das Beispiel
|
||||
`work/innenhoefe` mit 300 Gästen an 88 Tischen rechnet mit dem Easy-Zyklus in ~0,4 s
|
||||
durch — weit unter der 5-s-Schwelle, ab der M2 eine Job-Queue vorsieht. Offen bleibt
|
||||
der Test mit größeren Zyklen (mehr Generationen für bessere Lösungsqualität bei
|
||||
vielen Trennungen) — die Lösungsgüte bei 4er-Tischen mit großen Gruppen (Wertigkeit
|
||||
−384) legt nahe, dass hier eher mehr GA-Iterationen nötig sind als bisher.
|
||||
durch — weit unter der 5-s-Schwelle, ab der M2 eine Job-Queue vorsieht. Zweiter
|
||||
Datenpunkt (2026-07-12, M2-Lasttest): dasselbe Beispiel mit dem **Adaptiv**-Profil
|
||||
(Web-Default) braucht ~1,7–1,9 s (5–7 Generationen, 3 Seeds, inkl. Python-Start) —
|
||||
Job-Queue und Parameter-Kopplung bleiben unnötig. Weiter offen ist nur die
|
||||
Lösungsgüte-Frage: bei 4er-Tischen mit großen Gruppen (Wertigkeit ~−560) legen die
|
||||
vielen Trennungen nahe, dass mehr GA-Iterationen (größere `Geduld`/`Start`-Werte)
|
||||
bessere Pläne liefern könnten — das würde die Laufzeit dann wieder Richtung
|
||||
5-s-Schwelle schieben und wäre neu zu messen.
|
||||
3. **Wettbewerb ist real und etabliert** — siehe Abschnitt "Marktübersicht" oben.
|
||||
PerfectTablePlan verfolgt seit Jahren denselben GA-Ansatz, allerdings als Desktop-Tool.
|
||||
Differenzierung muss über Web-nativ + DSGVO-Hosting + detailliertere Regeln
|
||||
|
||||
@@ -84,6 +84,11 @@ class CSVConfig:
|
||||
VIPGruppe = Gruppe( 0 )
|
||||
VipHash = {}
|
||||
GruppenNamen = {}
|
||||
# fest platzierte ("fixierte") Gruppen fuer die Anzeige: Name ->
|
||||
# {'tisch': Tischnummer, 'anzahl': Personenzahl}. VIPs laufen nicht
|
||||
# durch die GA-Platzierung, sollen in der Gaesteliste aber sichtbar
|
||||
# (grau hinterlegt) erscheinen.
|
||||
FixierteGruppen = {}
|
||||
|
||||
# Gruppen entstehen beim ersten Auftreten ihres Namens;
|
||||
# Einzelpersonen (leerer Gruppenname) bekommen eine eigene Gruppe
|
||||
@@ -126,9 +131,13 @@ class CSVConfig:
|
||||
PID = PID + 1
|
||||
P = Person( PID, Vorname, Nachname, Titel )
|
||||
if TischNr is not None:
|
||||
# VIP: fester Tisch, keine GA-Platzierung
|
||||
# fixiert: fester Tisch, keine GA-Platzierung
|
||||
VipHash[ PID ] = TischNr
|
||||
VIPGruppe.Person_dazu( P )
|
||||
Name = GruppenName if GruppenName else 'Fixiert Tisch %d' % TischNr
|
||||
Eintrag = FixierteGruppen.setdefault(
|
||||
Name, { 'tisch': TischNr, 'anzahl': 0 } )
|
||||
Eintrag['anzahl'] = Eintrag['anzahl'] + 1
|
||||
else:
|
||||
PN.PersonAdd( P )
|
||||
if GruppenName == '':
|
||||
@@ -155,7 +164,7 @@ class CSVConfig:
|
||||
if G.Anzahl() > 0:
|
||||
GN.Gruppe_dazu( G )
|
||||
|
||||
return [ PN, GN, VIPGruppe, VipHash, GruppenNamen ]
|
||||
return [ PN, GN, VIPGruppe, VipHash, GruppenNamen, FixierteGruppen ]
|
||||
|
||||
def laden(self, FileName):
|
||||
"""lese alle Eingangsdaten aus einer CSV-Datei ein"""
|
||||
@@ -179,12 +188,14 @@ Einzel;Gast;;;;
|
||||
"""
|
||||
print("\n-- Parse Beispiel-CSV:")
|
||||
C = CSVConfig()
|
||||
[ PN, GN, VIPGruppe, VipHash, GruppenNamen ] = C.HandleGaesteliste( Beispiel )
|
||||
[ PN, GN, VIPGruppe, VipHash, GruppenNamen, FixierteGruppen ] = \
|
||||
C.HandleGaesteliste( Beispiel )
|
||||
print(PN)
|
||||
print(GN)
|
||||
print(VIPGruppe)
|
||||
print(VipHash)
|
||||
print(GruppenNamen)
|
||||
print(FixierteGruppen)
|
||||
|
||||
else:
|
||||
pass
|
||||
|
||||
@@ -0,0 +1,165 @@
|
||||
"""
|
||||
Farbschema fuer die SVG-Ausgabe (Sitzplatzverteilung.alsSVG).
|
||||
|
||||
Laedt ein Farbprofil aus cfg/farben.cfg und ordnet jeder Gruppe eine Farbe zu.
|
||||
Zwei Modi (siehe cfg/farben.cfg fuer Details):
|
||||
- 'palette': eine Farbliste, zyklisch je Gruppe (nach Gruppen-Id sortiert)
|
||||
- 'kategorien': trennt nach Art (Hochzeit) in Familie / Verein / VIP und
|
||||
faerbt sie ueber je einen Farbverlauf ein.
|
||||
|
||||
Waehlbar per --farben <Sektion> (libs/platz.py) bzw. PLATZ_FARBENART (web).
|
||||
"""
|
||||
|
||||
__author__ = "Michael Stangl"
|
||||
__copyright__ = "Copyright (c) 2026 Michael Stangl"
|
||||
__license__ = "Python"
|
||||
|
||||
import configparser
|
||||
import os
|
||||
from collections import Counter, defaultdict
|
||||
|
||||
|
||||
def _hex_zu_rgb(h):
|
||||
h = h.strip().lstrip('#')
|
||||
return tuple( int(h[i:i+2], 16) for i in (0, 2, 4) )
|
||||
|
||||
|
||||
def _rgb_zu_hex(rgb):
|
||||
return '#%02x%02x%02x' % tuple( max(0, min(255, int(round(c)))) for c in rgb )
|
||||
|
||||
|
||||
def _verlauf(start, ende, t):
|
||||
"""Farbe im linearen RGB-Verlauf start->ende an Position t in [0,1]"""
|
||||
a, b = _hex_zu_rgb(start), _hex_zu_rgb(ende)
|
||||
return _rgb_zu_hex( tuple( a[i] + (b[i] - a[i]) * t for i in range(3) ) )
|
||||
|
||||
|
||||
def _verlauf_liste(start, ende, n):
|
||||
"""n Farben gleichmaessig ueber den Verlauf start->ende (n>=1)"""
|
||||
if n <= 1:
|
||||
return [ _verlauf(start, ende, 0.0) ]
|
||||
return [ _verlauf(start, ende, j / (n - 1)) for j in range(n) ]
|
||||
|
||||
|
||||
class Farbschema:
|
||||
"""ordnet Gruppen Farben zu, gesteuert durch ein Profil aus farben.cfg"""
|
||||
|
||||
# Rueckfall-Palette, falls keine Config / kein gueltiges Profil geladen wurde
|
||||
Standard = [
|
||||
'#e6194b', '#3cb44b', '#4363d8', '#f58231', '#911eb4',
|
||||
'#42d4f4', '#f032e6', '#bfef45', '#fabed4', '#469990',
|
||||
'#dcbeff', '#9a6324', '#800000', '#aaffc3', '#000075' ]
|
||||
|
||||
def __init__(self):
|
||||
self.Modus = 'palette'
|
||||
self.Palette = list(self.Standard)
|
||||
self.FamilienVerlaeufe = [ ('#1f4e9c', '#2fae5f'), ('#f2c200', '#e8590c') ]
|
||||
self.VereinVerlauf = ('#7b2fbf', '#9aa0a6')
|
||||
self.VIPVerlauf = ('#e63946', '#8b0000')
|
||||
|
||||
def laden(self, FileName, Sektion='grosse_gruppen'):
|
||||
config = configparser.ConfigParser()
|
||||
config.read( os.path.expanduser(FileName) )
|
||||
if not config.has_section( Sektion ):
|
||||
raise ValueError(
|
||||
"Farbprofil '%s' nicht in %s gefunden (vorhanden: %s)"
|
||||
% ( Sektion, FileName, ', '.join(config.sections()) or '-' ) )
|
||||
self.Modus = config.get( Sektion, 'Modus', fallback='palette' ).strip()
|
||||
if config.has_option( Sektion, 'Palette' ):
|
||||
self.Palette = self._farbliste( config.get( Sektion, 'Palette' ) )
|
||||
if config.has_option( Sektion, 'FamilienVerlaeufe' ):
|
||||
self.FamilienVerlaeufe = self._verlaeufe(
|
||||
config.get( Sektion, 'FamilienVerlaeufe' ) )
|
||||
if config.has_option( Sektion, 'VereinVerlauf' ):
|
||||
self.VereinVerlauf = self._verlaeufe( config.get( Sektion, 'VereinVerlauf' ) )[0]
|
||||
if config.has_option( Sektion, 'VIPVerlauf' ):
|
||||
self.VIPVerlauf = self._verlaeufe( config.get( Sektion, 'VIPVerlauf' ) )[0]
|
||||
return self
|
||||
|
||||
@staticmethod
|
||||
def _farbliste(text):
|
||||
return [ f.strip() for f in text.replace('\n', ',').split(',') if f.strip() ]
|
||||
|
||||
@staticmethod
|
||||
def _verlaeufe(text):
|
||||
"""'A -> B, C -> D' -> [(A,B),(C,D)]; ein einzelner Wert wird zu (v,v)"""
|
||||
ergebnis = []
|
||||
for teil in text.replace('\n', ',').split(','):
|
||||
teil = teil.strip()
|
||||
if not teil:
|
||||
continue
|
||||
if '->' in teil:
|
||||
a, b = teil.split('->', 1)
|
||||
ergebnis.append( (a.strip(), b.strip()) )
|
||||
else:
|
||||
ergebnis.append( (teil, teil) )
|
||||
return ergebnis or [ ('#888888', '#888888') ]
|
||||
|
||||
def farben(self, Gruppen):
|
||||
"""ordnet den Gruppen Farben zu.
|
||||
|
||||
Rueckgabe: (GidZuFarbe {Gruppen-Id: hexfarbe}, VIPFarbe hexfarbe).
|
||||
VIPFarbe gilt fuer Personen ohne GA-Gruppe (feste Platzierung)."""
|
||||
GruppenListe = sorted( Gruppen, key=lambda g: g.Id )
|
||||
if self.Modus == 'kategorien':
|
||||
return self._kategorien( GruppenListe )
|
||||
return self._palette( GruppenListe )
|
||||
|
||||
def _palette(self, GruppenListe):
|
||||
pal = self.Palette or self.Standard
|
||||
GidZuFarbe = { G.Id: pal[i % len(pal)] for i, G in enumerate(GruppenListe) }
|
||||
return GidZuFarbe, '#888888'
|
||||
|
||||
@staticmethod
|
||||
def _nachname(G):
|
||||
"""dominanter Nachname der Gruppe, wenn ihn die Mehrheit traegt (bei
|
||||
>= 2 Mitgliedern) - sonst None (dann gilt die Gruppe als Verein/
|
||||
gemischt). Anonyme Sammelbuchungen (alle Mitglieder derselbe Name,
|
||||
z.B. 13x 'Gast Musikverein') sind keine Familie, sondern gelten als
|
||||
Verein - daher werden mindestens zwei VERSCHIEDENE Personen verlangt."""
|
||||
personen = list( G )
|
||||
if len(personen) < 2:
|
||||
return None
|
||||
if len({ (P._Vorname, P._Name) for P in personen }) < 2:
|
||||
return None # anonymer Block (alle identisch) -> kein Familienname
|
||||
namen = [ P._Name for P in personen ]
|
||||
name, anzahl = Counter(namen).most_common(1)[0]
|
||||
return name if anzahl * 2 > len(namen) else None
|
||||
|
||||
def _kategorien(self, GruppenListe):
|
||||
# 1. klassifizieren: Familien (nach Nachname) vs. Vereine
|
||||
familien = defaultdict(list) # Nachname -> [Gruppen]
|
||||
vereine = []
|
||||
for G in GruppenListe:
|
||||
nn = self._nachname( G )
|
||||
if nn is not None:
|
||||
familien[nn].append( G )
|
||||
else:
|
||||
vereine.append( G )
|
||||
GidZuFarbe = {}
|
||||
# 2. Familien: jeder Nachname kommt (alphabetisch, abwechselnd) in einen
|
||||
# Farbbereich - Blau->Gruen ODER Gelb->Orange. Innerhalb eines
|
||||
# Bereichs werden ALLE zugehoerigen Familiengruppen ueber den Verlauf
|
||||
# gespreizt, damit verschiedene Familien verschiedene Toene haben;
|
||||
# Gruppen desselben Nachnamens bleiben benachbart (ein zusammen-
|
||||
# haengendes Band). So laeuft z.B. eine mehrteilige Familie Brandt
|
||||
# ueber benachbarte Gelb->Orange-Toene, waehrend Familie Peters einen
|
||||
# anderen Blau->Gruen-Ton bekommt.
|
||||
Nachnamen = sorted( familien )
|
||||
Bereich = { nn: i % len(self.FamilienVerlaeufe)
|
||||
for i, nn in enumerate(Nachnamen) }
|
||||
GruppenImBereich = defaultdict(list)
|
||||
for nn in Nachnamen:
|
||||
for G in sorted( familien[nn], key=lambda g: g.Id ):
|
||||
GruppenImBereich[ Bereich[nn] ].append( G )
|
||||
for b, gruppen in GruppenImBereich.items():
|
||||
start, ende = self.FamilienVerlaeufe[b]
|
||||
for farbe, G in zip( _verlauf_liste(start, ende, len(gruppen)), gruppen ):
|
||||
GidZuFarbe[G.Id] = farbe
|
||||
# 3. Vereine: ein Verlauf (z.B. Violett -> Grau) ueber alle Vereine
|
||||
vstart, vende = self.VereinVerlauf
|
||||
for farbe, G in zip( _verlauf_liste(vstart, vende, len(vereine)),
|
||||
sorted(vereine, key=lambda g: g.Id) ):
|
||||
GidZuFarbe[G.Id] = farbe
|
||||
# 4. VIP-Farbe: Startfarbe des VIP-Verlaufs (i.d.R. Rot)
|
||||
return GidZuFarbe, self.VIPVerlauf[0]
|
||||
@@ -14,6 +14,8 @@ from random import *
|
||||
import ast
|
||||
import configparser, os
|
||||
import copy
|
||||
import hashlib
|
||||
import html
|
||||
import math
|
||||
from collections import defaultdict
|
||||
from functools import total_ordering
|
||||
@@ -30,6 +32,16 @@ class Person:
|
||||
def __repr__(self):
|
||||
return ' Person %s: "%s %s %s"' % ( self.Id, self._Titel,
|
||||
self._Vorname, self._Name)
|
||||
def __hash__(self):
|
||||
# stabil ueber die (eindeutige, fortlaufende) Id hashen statt ueber
|
||||
# die Objekt-Identitaet: sonst haengt die Iterations-/pop()-Reihenfolge
|
||||
# der set() aus Person-Objekten (Gruppe._Personen) an der Speicher-
|
||||
# adresse und variiert pro Prozesslauf - das machte selbst mit --seed
|
||||
# den GA-Lauf nichtreproduzierbar. Integer-Ids sind zudem nicht von
|
||||
# PYTHONHASHSEED betroffen, daher prozessstabil.
|
||||
return hash( self.Id )
|
||||
def __eq__(self, other):
|
||||
return isinstance( other, Person ) and self.Id == other.Id
|
||||
|
||||
@total_ordering
|
||||
class Gruppe:
|
||||
@@ -427,21 +439,45 @@ class Strafliste:
|
||||
return self.gibPunkte('Trennung',Gruppengroesse-1, N_Teilungen)
|
||||
else:
|
||||
raise IndexError("Bezeichner gibts nicht")
|
||||
def laden( self, FileName ):
|
||||
print("-- Strafliste laden")
|
||||
def laden( self, FileName, Sektion='default' ):
|
||||
"""laedt ein Strafpunkte-Profil aus einer Sektion der strafen.cfg.
|
||||
|
||||
Jede Sektion ist ein vollstaendiges Bewertungs-'Vorgehen' mit allen
|
||||
Angaben in einem gemeinsamen Namensraum. Der Aufrufer waehlt das
|
||||
Profil ueber 'Sektion' (Vorgabe 'default'); so lassen sich mehrere
|
||||
Bewertungsstrategien in derselben Datei pflegen. Die Trennungs-
|
||||
Straffen stehen unter den Schluesseln 'Anzahl_Trennungen_N'."""
|
||||
print("-- Strafliste laden (Profil '%s')" % Sektion)
|
||||
config = configparser.ConfigParser()
|
||||
config.read( os.path.expanduser(FileName) )
|
||||
if not config.has_section( Sektion ):
|
||||
raise ValueError(
|
||||
"Strafprofil '%s' nicht in %s gefunden (vorhanden: %s)"
|
||||
% ( Sektion, FileName, ', '.join(config.sections()) or '-' ) )
|
||||
# ast.literal_eval statt eval: die Werte sind reine Literale
|
||||
# (Zahlen und Dicts wie {2:-10}), also kein Code noetig.
|
||||
self.NichtNachbar = ast.literal_eval(config.get( 'Globals', 'NichtNachbar' ))
|
||||
self.Allein = ast.literal_eval(config.get( 'Globals', 'Allein' ))
|
||||
self.TischWert = ast.literal_eval( config.get( 'Globals', 'TischWertigkeiten' ) )
|
||||
# Abschnitt [Abstand] ist optional; fehlt er, wird der Abstand
|
||||
# getrennter Gruppen nicht bestraft (Faktor 0).
|
||||
if config.has_section( 'Abstand' ):
|
||||
self.AbstandFaktor = ast.literal_eval(config.get( 'Abstand', 'Faktor' ))
|
||||
for (k,v) in config.items( 'Trennung' ):
|
||||
self.GruppenTrennen[int(k)] = ast.literal_eval(v)
|
||||
self.NichtNachbar = ast.literal_eval(config.get( Sektion, 'NichtNachbar' ))
|
||||
self.Allein = ast.literal_eval(config.get( Sektion, 'Allein' ))
|
||||
# TischWertigkeiten ist optional; fehlt der Schluessel, werden freie
|
||||
# Plaetze gar nicht bestraft (leeres Dict -> gibPunkte('Tischbesetzung')
|
||||
# gibt 0), wodurch mehr Teilbelegungen moeglich sind.
|
||||
if config.has_option( Sektion, 'TischWertigkeiten' ):
|
||||
self.TischWert = ast.literal_eval( config.get( Sektion, 'TischWertigkeiten' ) )
|
||||
else:
|
||||
self.TischWert = {}
|
||||
# AbstandFaktor ist optional; fehlt er, wird der Abstand getrennter
|
||||
# Gruppen nicht bestraft (Faktor 0).
|
||||
if config.has_option( Sektion, 'AbstandFaktor' ):
|
||||
self.AbstandFaktor = ast.literal_eval(config.get( Sektion, 'AbstandFaktor' ))
|
||||
# Trennungs-Straffen: Schluessel 'Anzahl_Trennungen_N' -> N Trennungen.
|
||||
# frisches Dict, damit nicht der (mutable) Konstruktor-Default geteilt
|
||||
# wird und Reste eines frueheren laden() bleiben.
|
||||
self.GruppenTrennen = {}
|
||||
for (k, v) in config.items( Sektion ):
|
||||
# configparser liefert Schluessel klein geschrieben
|
||||
if k.startswith( 'anzahl_trennungen_' ):
|
||||
N = int( k.rsplit( '_', 1 )[-1] )
|
||||
self.GruppenTrennen[N] = ast.literal_eval(v)
|
||||
|
||||
|
||||
# Sitzplatzverteilung, bestehend aus den Einzelelementen
|
||||
@@ -571,7 +607,8 @@ class Sitzplatzverteilung:
|
||||
'#42d4f4', '#f032e6', '#bfef45', '#fabed4', '#469990',
|
||||
'#dcbeff', '#9a6324', '#800000', '#aaffc3', '#000075' ]
|
||||
|
||||
def alsSVG(self, OutputSVG, PersonenRadius=12, Puffer=10, Verbindungen=True):
|
||||
def alsSVG(self, OutputSVG, PersonenRadius=12, Puffer=10, Verbindungen=True,
|
||||
GruppenNamen=None, Farbschema=None):
|
||||
"""Zeichnet die Sitzplatzverteilung als SVG:
|
||||
|
||||
Tische werden als weisse Kreise dargestellt, Personen als
|
||||
@@ -583,7 +620,24 @@ class Sitzplatzverteilung:
|
||||
Ist Verbindungen=True (Vorgabe), wird jede ueber mehrere Tische
|
||||
getrennte Gruppe zusaetzlich mit einer Linie in ihrer Gruppenfarbe
|
||||
verbunden, so dass die Zusammengehoerigkeit sichtbar bleibt.
|
||||
|
||||
Jeder Personenkreis bekommt ein <title>-Kind (nativer Browser-
|
||||
Tooltip beim Hover: "Vorname Nachname — Gruppe") sowie die Attribute
|
||||
class="person" und data-gruppe/data-gid, damit eine einbettende
|
||||
Seite darauf ein Hover-/Kasten-Verhalten aufsetzen kann. Optional
|
||||
liefert GruppenNamen ({Gid: Anzeigename}) die lesbaren Gruppennamen;
|
||||
fehlt es, wird "Gruppe <Id>" verwendet.
|
||||
"""
|
||||
GruppenNamen = GruppenNamen or {}
|
||||
|
||||
def GruppenName(G):
|
||||
if G is None:
|
||||
return 'fixiert'
|
||||
return GruppenNamen.get( G.Id, 'Gruppe %s' % G.Id )
|
||||
|
||||
def PersonName(P):
|
||||
Teile = [ t for t in (P._Titel, P._Vorname, P._Name) if t ]
|
||||
return ' '.join( Teile )
|
||||
# Tischradius je Tisch berechnen: gross genug, damit alle
|
||||
# Personenkreise (auf einem inneren Kreis gleichmaessig verteilt)
|
||||
# nebeneinander Platz haben, ohne sich zu beruehren. Der Faktor
|
||||
@@ -631,20 +685,29 @@ class Sitzplatzverteilung:
|
||||
except KeyError:
|
||||
return None
|
||||
|
||||
# Feste Gruppenfarben: einmal fuer die vollstaendige Gruppenliste (nach
|
||||
# Gruppen-Id) vergeben - NICHT lazy nach der Sitz-Reihenfolge. Da alle
|
||||
# Varianten dieselbe Gruppenmenge mit denselben Ids teilen, hat so jede
|
||||
# Gruppe in jeder Variante (und ueber Laeufe hinweg) dieselbe Farbe.
|
||||
# Mit Farbschema (aus farben.cfg) kommen die Farben von dort (z.B. nach
|
||||
# Familie/Verein/VIP getrennt); ohne dient die eingebaute Palette als
|
||||
# Rueckfall (zyklisch je Gruppe).
|
||||
if Farbschema is not None:
|
||||
GidZuFarbe, VIPFarbe = Farbschema.farben( self.Gruppen )
|
||||
else:
|
||||
GidZuFarbe = {}
|
||||
for Index, G in enumerate( sorted( self.Gruppen, key=lambda g: g.Id ) ):
|
||||
GidZuFarbe[G.Id] = self.SVGGruppenFarben[
|
||||
Index % len(self.SVGGruppenFarben) ]
|
||||
VIPFarbe = '#888888'
|
||||
def FarbeVonGruppe(G):
|
||||
if G is None:
|
||||
return '#888888'
|
||||
if G.Id not in GidZuFarbe:
|
||||
Index = len(GidZuFarbe) % len(self.SVGGruppenFarben)
|
||||
GidZuFarbe[G.Id] = self.SVGGruppenFarben[Index]
|
||||
return GidZuFarbe[G.Id]
|
||||
return VIPFarbe # VIP / feste Platzierung (ohne GA-Gruppe)
|
||||
return GidZuFarbe.get( G.Id, VIPFarbe )
|
||||
|
||||
# Fuer jede Gruppe pro Tisch den Mittelpunkt (Zentroid) ihrer
|
||||
# an diesem Tisch sitzenden Personenkreise sammeln. Die Reihenfolge
|
||||
# der Iteration (Tische, darin Personen) stimmt mit der spaeteren
|
||||
# Zeichenschleife ueberein, damit die per FarbeVonGruppe() lazy
|
||||
# vergebenen Farben konsistent sind.
|
||||
# an diesem Tisch sitzenden Personenkreise sammeln (fuer die
|
||||
# Verbindungslinien getrennter Gruppen).
|
||||
GidZuTischZentroiden = {}
|
||||
for T in self.Tische:
|
||||
Mx, My = TischMitte(T)
|
||||
@@ -659,7 +722,6 @@ class Sitzplatzverteilung:
|
||||
G = GruppeVonPerson(P)
|
||||
if G is None:
|
||||
continue
|
||||
FarbeVonGruppe(G) # Farbe frueh (aber in Zeichenreihenfolge) festlegen
|
||||
sx, sy, cnt = GidZuSummen.get( G.Id, (0.0, 0.0, 0) )
|
||||
GidZuSummen[G.Id] = (sx + Px, sy + Py, cnt + 1)
|
||||
for Gid, (sx, sy, cnt) in GidZuSummen.items():
|
||||
@@ -723,28 +785,49 @@ class Sitzplatzverteilung:
|
||||
Winkel = 2 * math.pi * i / max(n, 1) - math.pi / 2
|
||||
Px = Mx + SitzRadius * math.cos(Winkel)
|
||||
Py = My + SitzRadius * math.sin(Winkel)
|
||||
Farbe = FarbeVonGruppe( GruppeVonPerson(P) )
|
||||
G = GruppeVonPerson(P)
|
||||
Farbe = FarbeVonGruppe( G )
|
||||
GName = GruppenName( G )
|
||||
PName = PersonName( P )
|
||||
# data-gid: -1 fuer VIPs/ohne Gruppe (keine self.Gruppen-Id)
|
||||
Gid = G.Id if G is not None else -1
|
||||
Teile.append(
|
||||
'<circle cx="%g" cy="%g" r="%g" fill="%s" '
|
||||
'stroke="black" stroke-width="1"/>\n'
|
||||
% (Px, Py, PersonenRadius, Farbe) )
|
||||
'<circle class="person" data-gid="%s" data-gruppe="%s" '
|
||||
'data-name="%s" cx="%g" cy="%g" r="%g" fill="%s" '
|
||||
'stroke="black" stroke-width="1"><title>%s — %s</title>'
|
||||
'</circle>\n'
|
||||
% ( Gid, html.escape(GName, quote=True),
|
||||
html.escape(PName, quote=True),
|
||||
Px, Py, PersonenRadius, Farbe,
|
||||
html.escape(PName), html.escape(GName) ) )
|
||||
|
||||
# Tischnummer zentriert in die Tischmitte (nach den Personen-
|
||||
# kreisen gezeichnet, damit sie oben liegt; ein halbtransparenter
|
||||
# weisser Kreis darunter haelt sie auch ueber Personenkreisen
|
||||
# lesbar, falls die Tischmitte belegt sein sollte)
|
||||
# Tischnummer und Platzzahl zentriert in die Tischmitte (nach den
|
||||
# Personenkreisen gezeichnet, damit sie oben liegen; eine halb-
|
||||
# transparente weisse Ellipse darunter haelt beide Zeilen auch
|
||||
# ueber Personenkreisen lesbar, falls die Tischmitte belegt ist).
|
||||
# Obere Zeile: Tischnummer (gross/fett), darunter die Platzzahl.
|
||||
Teile.append(
|
||||
'<circle cx="%g" cy="%g" r="%g" fill="white" '
|
||||
'fill-opacity="0.75"/>\n' % (Mx, My, PersonenRadius) )
|
||||
'<ellipse cx="%g" cy="%g" rx="%g" ry="%g" fill="white" '
|
||||
'fill-opacity="0.75"/>\n'
|
||||
% (Mx, My, PersonenRadius, PersonenRadius * 1.3) )
|
||||
Teile.append(
|
||||
'<text x="%g" y="%g" text-anchor="middle" '
|
||||
'dominant-baseline="central" font-size="%g" '
|
||||
'font-weight="bold" fill="black">%s</text>\n'
|
||||
% (Mx, My, PersonenRadius * 1.1, T.Nummer) )
|
||||
% (Mx, My - PersonenRadius * 0.4, PersonenRadius * 1.1, T.Nummer) )
|
||||
Teile.append(
|
||||
'<text x="%g" y="%g" text-anchor="middle" '
|
||||
'dominant-baseline="central" font-size="%g" '
|
||||
'fill="#333">%d Pl.</text>\n'
|
||||
% (Mx, My + PersonenRadius * 0.7, PersonenRadius * 0.62, T.Plaetze) )
|
||||
|
||||
Teile.append( '</svg>\n' )
|
||||
|
||||
fout = open( OutputSVG, 'w' )
|
||||
# als UTF-8 schreiben (die SVG deklariert encoding="UTF-8"): Namen
|
||||
# enthalten Umlaute und der Gedankenstrich im <title> ist non-ASCII;
|
||||
# ohne dies wuerde die Windows-Standardkodierung (cp1252) die Datei
|
||||
# ungueltig machen.
|
||||
fout = open( OutputSVG, 'w', encoding='utf-8' )
|
||||
fout.writelines( Teile )
|
||||
fout.close()
|
||||
|
||||
@@ -1016,7 +1099,12 @@ class Sitzplatzverteilung:
|
||||
except KeyError:
|
||||
Anzahl_von_Gid[G.Id] = 1
|
||||
for Gid, Anzahl in Anzahl_von_Gid.items():
|
||||
if Anzahl == 1:
|
||||
# 'Allein' meint: eine Person ist von ihrer (mehrkoepfigen) Gruppe
|
||||
# getrennt und sitzt ohne Gruppenmitglied am Tisch. Eine Gruppe der
|
||||
# Groesse 1 (alleinreisender Gast) hat kein Gruppenmitglied, das
|
||||
# fehlen koennte - sie ist nie "allein" in diesem Sinne und wird
|
||||
# daher nicht bestraft (sie darf mit anderen am Tisch sitzen).
|
||||
if Anzahl == 1 and self.Gruppen.vonId(Gid).Anzahl() > 1:
|
||||
Gids.append(Gid)
|
||||
return Gids
|
||||
|
||||
@@ -1035,6 +1123,44 @@ class Sitzplatzverteilung:
|
||||
return len( self.Gid_Tid[Gruppe.Id] ) - 1
|
||||
except KeyError:
|
||||
return 0
|
||||
def getGruppenId(self):
|
||||
"""eindeutige Id der Loesung auf GRUPPEN-Ebene (personen-unabhaengig).
|
||||
|
||||
Signatur: je Tisch, welche Gruppen mit wie vielen Mitgliedern dort
|
||||
sitzen. Zwei Loesungen mit identischer Gruppen-Verteilung bekommen
|
||||
dieselbe Id - egal welche konkreten Personen die geteilten Plaetze
|
||||
einnehmen (die Teilung einer 5er-Gruppe auf die Tische 3 und 4 ist
|
||||
dieselbe Sitzordnung, gleich welche Personen wohin kommen). Da die
|
||||
Bewertung (Strafliste) nur von den Gruppen-Anzahlen je Tisch, den
|
||||
Nachbarschaften und der Auslastung abhaengt, haben Loesungen mit
|
||||
gleicher getGruppenId auch dieselbe Wertigkeit. Diese Id dient dem
|
||||
Vergleich der Loesungen (Dedup), damit dieselbe Sitzordnung nicht
|
||||
mehrfach als eigene Loesung gehalten und bewertet wird."""
|
||||
Teile = []
|
||||
for T in sorted( self.Tische, key=lambda t: t.Id ):
|
||||
Zaehler = {}
|
||||
for P in T:
|
||||
try:
|
||||
Gid = self.Gruppen.GruppeVonPid( P.Id ).Id
|
||||
except KeyError:
|
||||
Gid = -1 # VIP / feste Platzierung (ohne GA-Gruppe)
|
||||
Zaehler[Gid] = Zaehler.get( Gid, 0 ) + 1
|
||||
Teile.append( (T.Id, tuple(sorted( Zaehler.items() ))) )
|
||||
return hashlib.sha1( repr(Teile).encode('utf-8') ).hexdigest()[:16]
|
||||
def getPersonenId(self):
|
||||
"""eindeutige Id der Loesung auf PERSONEN-Ebene.
|
||||
|
||||
Signatur: je Tisch die alphabetisch sortierten Personennamen.
|
||||
Identifiziert WIRKLICH identische Sitzbelegungen (dieselben Personen
|
||||
an denselben Tischen) - feiner als getGruppenId, das nur die Gruppen-
|
||||
Verteilung vergleicht."""
|
||||
Teile = []
|
||||
for T in sorted( self.Tische, key=lambda t: t.Id ):
|
||||
Namen = sorted(
|
||||
' '.join( s for s in (P._Titel, P._Vorname, P._Name) if s )
|
||||
for P in T )
|
||||
Teile.append( (T.Id, tuple(Namen)) )
|
||||
return hashlib.sha1( repr(Teile).encode('utf-8') ).hexdigest()[:16]
|
||||
def VIPsSetzen(self, VIPListe, VIPs, Tische ):
|
||||
"""setze die VIPs auf Ihre Plaetze"""
|
||||
#print " VIPsSetzen:"
|
||||
|
||||
@@ -61,6 +61,15 @@ class Loesung:
|
||||
print(" lade Loesung " + repr(self.Id))
|
||||
def speichern(self):
|
||||
print(" speichere Loesung " + repr(self.Id))
|
||||
def getGruppenId(self):
|
||||
"""Id fuer den Dedup-Vergleich (Basis: jede Loesung eigenstaendig).
|
||||
Unterklassen ueberladen dies mit einer inhaltlichen Signatur, so
|
||||
dass gleiche Loesungen dieselbe Id bekommen und nicht mehrfach
|
||||
gehalten werden."""
|
||||
return id(self)
|
||||
def getPersonenId(self):
|
||||
"""feinere Id fuer wirklich identische Loesungen (Basis: eigenstaendig)"""
|
||||
return id(self)
|
||||
def __repr__(self):
|
||||
return ' L '+ repr(self.Id)
|
||||
def __eq__(self,other):
|
||||
@@ -493,6 +502,9 @@ class Farm:
|
||||
self.Abstammung = Abstammung()
|
||||
self._AbsZaehler = 0 # vergibt fortlaufende Loesungs-Ids 1..N
|
||||
self._Generation = 0
|
||||
# schon gesehene Loesungs-Signaturen (getGruppenId), damit dieselbe
|
||||
# Sitzordnung nicht mehrfach gehalten und bewertet wird.
|
||||
self._GeseheneGruppenIds = set()
|
||||
if getattr(Zyklus, 'Modus', 'statisch') == 'adaptiv':
|
||||
self._LaufAdaptiv(Klasse, *Arguments, **keywords)
|
||||
else:
|
||||
@@ -580,10 +592,27 @@ class Farm:
|
||||
self._AbsZaehler = self._AbsZaehler + 1
|
||||
return self._AbsZaehler
|
||||
|
||||
def _LoesungIstNeu(self, L):
|
||||
"""Kontrolle nach jeder Erzeugung: True, wenn die Loesung eine bisher
|
||||
ungesehene Sitzordnung hat (Vergleich ueber getGruppenId, also auf
|
||||
Gruppen-Ebene) - und merkt sie dann vor. Duplikate (gleiche Sitz-
|
||||
ordnung) werden so nicht noch einmal gehalten und bewertet.
|
||||
Loesungen ohne getGruppenId gelten immer als neu (kein Dedup)."""
|
||||
Hole = getattr(L, 'getGruppenId', None)
|
||||
if Hole is None:
|
||||
return True
|
||||
Gid = Hole()
|
||||
if Gid in self._GeseheneGruppenIds:
|
||||
return False
|
||||
self._GeseheneGruppenIds.add(Gid)
|
||||
return True
|
||||
|
||||
def LoesungenErzeugen(self, N, Klasse, *Arguments, **keywords):
|
||||
""" Erzeuge Loesungen"""
|
||||
""" Erzeuge Loesungen (bereits gesehene Sitzordnungen werden verworfen)"""
|
||||
for i in range(N):
|
||||
L = Klasse( *Arguments, **keywords )
|
||||
if not self._LoesungIstNeu(L):
|
||||
continue # gleiche Sitzordnung schon vorhanden -> nicht behalten
|
||||
L._absid = self._NeueId() # Wurzel: kein Vorgaenger
|
||||
self.Abstammung.erfassen(
|
||||
L._absid, None, self._Generation, getattr(L, 'value', 0), 'e' )
|
||||
@@ -603,6 +632,8 @@ class Farm:
|
||||
for L in chain(self.Pool):
|
||||
O = deepcopy(L)
|
||||
Kind = O.mutieren()
|
||||
if not self._LoesungIstNeu(Kind):
|
||||
continue # gleiche Sitzordnung schon gesehen -> verwerfen
|
||||
# Kind bekommt eine neue fortlaufende Nummer; der Vorgaenger
|
||||
# (Eltern-Id) wird separat in der Abstammung gemerkt.
|
||||
ElternId = getattr(L, '_absid', None)
|
||||
@@ -659,6 +690,15 @@ class Farm:
|
||||
print("+ speichern")
|
||||
def Bester(self):
|
||||
return max(self.Pool)
|
||||
def TopN(self, N):
|
||||
"""die N besten Loesungen, absteigend nach Wertigkeit sortiert.
|
||||
|
||||
Erweiterung von Bester() (das nur die einzelne beste liefert): gibt
|
||||
eine Liste der bis zu N besten Loesungen zurueck, damit sich mehrere
|
||||
gute Alternativen betrachten lassen. N wird auf [0, len(Pool)]
|
||||
begrenzt; bei N >= Poolgroesse ist es der ganze Pool (sortiert)."""
|
||||
N = max( 0, min( N, len(self.Pool) ) )
|
||||
return sorted( self.Pool, reverse=True )[:N]
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
@@ -11,7 +11,9 @@ __license__ = "Python"
|
||||
|
||||
from ga import *
|
||||
from Strukturdaten import *
|
||||
from Farben import Farbschema
|
||||
import optparse
|
||||
import random
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
@@ -50,8 +52,30 @@ if __name__ == '__main__':
|
||||
parser.add_option( "--zyklus-art", dest="zyklusart", default="Adaptiv",
|
||||
help="Name des GA-Profils in zyklus.cfg (Vorgabe: Adaptiv). "
|
||||
"Weitere mitgelieferte Profile: Easy, Simple" )
|
||||
parser.add_option( "--strafen", dest="strafen", default="default",
|
||||
help="Name des Strafpunkte-Profils (Sektion in strafen.cfg; "
|
||||
"Vorgabe: default). Erlaubt mehrere Bewertungs-Vorgehen in einer "
|
||||
"Datei, z.B. --strafen locker" )
|
||||
parser.add_option( "--farben", dest="farben", default="grosse_gruppen",
|
||||
help="Name des Farbprofils fuer die SVG-Ausgabe (Sektion in "
|
||||
"farben.cfg; Vorgabe: grosse_gruppen). Fuer Hochzeiten: "
|
||||
"--farben hochzeit (Familien/Vereine/VIPs getrennt)" )
|
||||
parser.add_option( "--seed", dest="seed", type="int", default=None,
|
||||
help="Zufalls-Startwert (int) fuer random.seed(), macht den Lauf "
|
||||
"reproduzierbar. Ohne Angabe laeuft der GA nichtdeterministisch. "
|
||||
"Fuer Support-Rueckfragen ('warum sitzt Tante Erna dort?') mit "
|
||||
"demselben --seed exakt denselben Sitzplan erneut erzeugen" )
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
# Determinismus auf Wunsch: den globalen Zufallsgenerator seeden, bevor
|
||||
# irgendeine GA-Aktion laeuft. Der gesamte Algorithmus (ga.py und
|
||||
# Strukturdaten.py nutzen 'from random import *') zieht aus demselben
|
||||
# Modul-RNG, daher genuegt ein einziges random.seed() hier.
|
||||
if options.seed is not None:
|
||||
random.seed( options.seed )
|
||||
print( "Determinismus: random.seed(%d) - Lauf ist reproduzierbar"
|
||||
% options.seed )
|
||||
|
||||
if options.indir is None:
|
||||
parser.error( "--indir ist erforderlich" )
|
||||
InDir = os.path.expandvars( os.path.expanduser( options.indir ) )
|
||||
@@ -68,6 +92,9 @@ if __name__ == '__main__':
|
||||
Zyklusconfig = os.path.join( CfgDir, 'zyklus.cfg' )
|
||||
Zyklusart = options.zyklusart
|
||||
Strafenconfig = os.path.join( CfgDir, 'strafen.cfg' )
|
||||
Strafenart = options.strafen
|
||||
Farbenconfig = os.path.join( CfgDir, 'farben.cfg' )
|
||||
Farbenart = options.farben
|
||||
|
||||
# lade Eingabedateien
|
||||
Tischconfig = os.path.join( InDir, 'tische.ini' )
|
||||
@@ -84,8 +111,16 @@ if __name__ == '__main__':
|
||||
Z.laden( Zyklusconfig, Zyklusart )
|
||||
print(Z)
|
||||
SL = Strafliste()
|
||||
SL.laden( Strafenconfig )
|
||||
try:
|
||||
SL.laden( Strafenconfig, Strafenart )
|
||||
except ValueError as Fehler:
|
||||
parser.error( str(Fehler) )
|
||||
print(SL)
|
||||
FS = Farbschema()
|
||||
try:
|
||||
FS.laden( Farbenconfig, Farbenart )
|
||||
except ValueError as Fehler:
|
||||
parser.error( str(Fehler) )
|
||||
TE = Tische()
|
||||
TE.laden( Tischconfig )
|
||||
print(TE)
|
||||
@@ -104,7 +139,8 @@ if __name__ == '__main__':
|
||||
print(S)
|
||||
S.speichern( AusgabeTP, AusgabePT )
|
||||
if options.tosvg:
|
||||
S.alsSVG( AusgabeSVG, Verbindungen=options.showconn )
|
||||
S.alsSVG( AusgabeSVG, Verbindungen=options.showconn,
|
||||
GruppenNamen=GruppenNamen, Farbschema=FS )
|
||||
if options.showdev:
|
||||
F1.Entwicklung.alsSVG( AusgabeEntwicklung )
|
||||
print( "Entwicklungsverlauf geschrieben:", AusgabeEntwicklung )
|
||||
|
||||
@@ -10,15 +10,17 @@ Endpunkte (siehe auch /docs — interaktive Swagger-UI von FastAPI):
|
||||
GET /sitzung/{id} — Status der Session
|
||||
POST /sitzung/{id}/tische — Tisch-Layout als JSON (Ersatz tische.ini)
|
||||
POST /sitzung/{id}/personen — Gaesteliste als CSV-Upload (Ersatz bestellung.json)
|
||||
POST /sitzung/{id}/berechnen — startet die GA-Optimierung
|
||||
GET /sitzung/{id}/ergebnis — Ergebnis als JSON (Tische -> Personen)
|
||||
GET /sitzung/{id}/ergebnis.svg — Ergebnis als SVG (alsSVG aus dem Kern)
|
||||
POST /sitzung/{id}/berechnen — startet die GA-Optimierung; liefert bis zu
|
||||
?varianten=N unterschiedliche Loesungen (M2)
|
||||
GET /sitzung/{id}/ergebnis — alle Varianten des letzten Laufs als JSON
|
||||
GET /sitzung/{id}/ergebnis.svg — eine Variante als SVG (?variante=k, 1 = beste)
|
||||
|
||||
Start (lokale Testinstanz, siehe bin/run_web.bat / bin/run_web.sh):
|
||||
python -m uvicorn main:app --reload --app-dir web
|
||||
"""
|
||||
|
||||
import ast
|
||||
import configparser
|
||||
import math
|
||||
import os
|
||||
import sys
|
||||
@@ -35,13 +37,14 @@ CFGDIR = os.environ.get( 'PLATZ_CFG', os.path.join( BASISDIR, 'cfg' ) )
|
||||
if LIBSDIR not in sys.path:
|
||||
sys.path.insert( 0, LIBSDIR )
|
||||
|
||||
from fastapi import FastAPI, File, HTTPException, UploadFile
|
||||
from fastapi import FastAPI, File, HTTPException, Query, UploadFile
|
||||
from fastapi.responses import Response
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from ga import Farm, Zyklus
|
||||
from CSVConfig import CSVConfig
|
||||
from Farben import Farbschema
|
||||
from Strukturdaten import Sitzplatzverteilung, Strafliste, Tisch, Tische
|
||||
|
||||
app = FastAPI(
|
||||
@@ -54,15 +57,49 @@ app = FastAPI(
|
||||
# Zyklus und Strafliste einmal beim Start laden (wie in libs/platz.py):
|
||||
# zyklus.cfg und strafen.cfg direkt aus dem cfg-Verzeichnis (PLATZ_CFG bzw.
|
||||
# Projekt-cfg). GA-Profil per Umgebungsvariable PLATZ_ZYKLUSART (Vorgabe:
|
||||
# Adaptiv).
|
||||
# Adaptiv), Strafpunkte-Profil per PLATZ_STRAFENART (Vorgabe: default) —
|
||||
# analog zum Schalter --strafen in libs/platz.py.
|
||||
ZYKLUSDATEI = os.path.join( CFGDIR, 'zyklus.cfg' )
|
||||
STRAFENDATEI = os.path.join( CFGDIR, 'strafen.cfg' )
|
||||
ZYKLUSART = os.environ.get( 'PLATZ_ZYKLUSART', 'Adaptiv' )
|
||||
STRAFENART = os.environ.get( 'PLATZ_STRAFENART', 'default' )
|
||||
FARBENDATEI = os.path.join( CFGDIR, 'farben.cfg' )
|
||||
FARBENART = os.environ.get( 'PLATZ_FARBENART', 'grosse_gruppen' )
|
||||
|
||||
GAZyklus = Zyklus()
|
||||
GAZyklus.laden( ZYKLUSDATEI, ZYKLUSART )
|
||||
Strafen = Strafliste()
|
||||
Strafen.laden( STRAFENDATEI )
|
||||
|
||||
# Strafprofile werden bei Bedarf geladen und gecacht, damit sich in der GUI
|
||||
# verschiedene Profile (z.B. 'default' vs 'locker') auswaehlen und vergleichen
|
||||
# lassen. Das Default-Profil wird schon beim Start geladen (faellt frueh auf,
|
||||
# falls die Datei/Sektion kaputt ist).
|
||||
StrafProfile = {}
|
||||
|
||||
|
||||
def strafprofil(Name):
|
||||
"""liefert (gecacht) die Strafliste einer Sektion aus strafen.cfg;
|
||||
wirft ValueError bei unbekannter Sektion"""
|
||||
if Name not in StrafProfile:
|
||||
SL = Strafliste()
|
||||
SL.laden( STRAFENDATEI, Name )
|
||||
StrafProfile[Name] = SL
|
||||
return StrafProfile[Name]
|
||||
|
||||
|
||||
def strafprofil_namen():
|
||||
"""alle in strafen.cfg vorhandenen Profilnamen (fuer die GUI-Auswahl)"""
|
||||
cfg = configparser.ConfigParser()
|
||||
cfg.read( STRAFENDATEI )
|
||||
return cfg.sections()
|
||||
|
||||
|
||||
strafprofil( STRAFENART ) # Default vorwaermen / frueh scheitern
|
||||
# Farbprofil fuer die SVG-Ausgabe; faellt bei fehlender Datei/Sektion auf die
|
||||
# eingebaute Palette zurueck (Farbschema=None), damit der Server trotzdem laeuft.
|
||||
try:
|
||||
Farben = Farbschema().laden( FARBENDATEI, FARBENART )
|
||||
except (ValueError, OSError):
|
||||
Farben = None
|
||||
|
||||
# ---------------------------------------------------------------- Sessions
|
||||
SESSION_TTL_SEKUNDEN = 24 * 3600
|
||||
@@ -149,17 +186,14 @@ def _TischeBauen(S):
|
||||
return TE
|
||||
|
||||
|
||||
def _ErgebnisJSON(S):
|
||||
"""baut die JSON-Darstellung des besten Ergebnisses einer Session"""
|
||||
SV = S['ergebnis']
|
||||
GruppenNamen = S.get( 'gruppenNamen', {} )
|
||||
|
||||
def _VarianteJSON(SV, GruppenNamen, Nr):
|
||||
"""baut die JSON-Darstellung EINER Loesung (eine Variante)"""
|
||||
def GruppeVonPerson(P):
|
||||
try:
|
||||
G = SV.Gruppen.GruppeVonPid( P.Id )
|
||||
return GruppenNamen.get( G.Id, 'Gruppe %s' % G.Id )
|
||||
except KeyError:
|
||||
return 'VIP'
|
||||
return 'fixiert'
|
||||
|
||||
TischListe = []
|
||||
for T in SV.Tische:
|
||||
@@ -193,14 +227,38 @@ def _ErgebnisJSON(S):
|
||||
} )
|
||||
GruppenListe.sort( key=lambda g: g['id'] )
|
||||
|
||||
return {
|
||||
# Vergleichs-Kennzahlen (Roadmap M2: Wertigkeit, Gruppentrennungen,
|
||||
# allein sitzende Personen — LeuteAllein zaehlt nur Personen aus
|
||||
# mehrkoepfigen Gruppen ohne Gruppenmitglied am Tisch)
|
||||
Kennzahlen = {
|
||||
'wertigkeit': SV.value,
|
||||
'variante': S['varianten'],
|
||||
'getrennteGruppen': sum( 1 for G in GruppenListe if G['teilungen'] > 0 ),
|
||||
'teilungenGesamt': sum( G['teilungen'] for G in GruppenListe ),
|
||||
'alleinePersonen': sum( len( SV.LeuteAllein(T) ) for T in SV.Tische ),
|
||||
}
|
||||
|
||||
return {
|
||||
'nr': Nr,
|
||||
'wertigkeit': SV.value,
|
||||
'gruppenId': SV.getGruppenId(),
|
||||
'personenId': SV.getPersonenId(),
|
||||
'kennzahlen': Kennzahlen,
|
||||
'tische': TischListe,
|
||||
'gruppen': GruppenListe,
|
||||
}
|
||||
|
||||
|
||||
def _ErgebnisJSON(S):
|
||||
"""baut die JSON-Darstellung aller Varianten des letzten Laufs"""
|
||||
GruppenNamen = S.get( 'gruppenNamen', {} )
|
||||
return {
|
||||
'lauf': S['laeufe'],
|
||||
'strafen': S.get( 'strafen', STRAFENART ), # verwendetes Strafprofil
|
||||
'varianten': [ _VarianteJSON( SV, GruppenNamen, Nr + 1 )
|
||||
for Nr, SV in enumerate( S['ergebnisse'] ) ],
|
||||
}
|
||||
|
||||
|
||||
# --------------------------------------------------------------- Endpunkte
|
||||
@app.post( '/sitzung', status_code=201 )
|
||||
def SitzungAnlegen():
|
||||
@@ -212,8 +270,8 @@ def SitzungAnlegen():
|
||||
'erzeugt': time.time(),
|
||||
'tische': None,
|
||||
'personen': None,
|
||||
'ergebnis': None,
|
||||
'varianten': 0,
|
||||
'ergebnisse': [], # Varianten des letzten Laufs (beste zuerst)
|
||||
'laeufe': 0, # wie oft .../berechnen aufgerufen wurde
|
||||
}
|
||||
return { 'id': SitzungsId, 'ttlStunden': SESSION_TTL_SEKUNDEN // 3600 }
|
||||
|
||||
@@ -227,8 +285,9 @@ def SitzungStatus(SitzungsId: str):
|
||||
'tische': len( S['tische'] ) if S['tische'] else 0,
|
||||
'personen': S['personen']['nLeute'] if S['personen'] else 0,
|
||||
'vips': S['personen']['nVips'] if S['personen'] else 0,
|
||||
'berechnet': S['ergebnis'] is not None,
|
||||
'varianten': S['varianten'],
|
||||
'berechnet': len( S['ergebnisse'] ) > 0,
|
||||
'laeufe': S['laeufe'],
|
||||
'varianten': len( S['ergebnisse'] ),
|
||||
}
|
||||
|
||||
|
||||
@@ -262,8 +321,10 @@ def TischeSetzen(SitzungsId: str, Layout: TischLayout):
|
||||
'y': T.y,
|
||||
'nachbarn': Nachbarn[T.id],
|
||||
} for T in Layout.tische ]
|
||||
S['ergebnis'] = None
|
||||
S['varianten'] = 0
|
||||
# Nachbar-Radius fuer den Rueckweg merken (GET .../tische), damit der
|
||||
# grafische Editor dasselbe Layout inkl. Radius wieder laden kann.
|
||||
S['nachbarRadius'] = Layout.nachbarRadius
|
||||
S['ergebnisse'] = []
|
||||
|
||||
return {
|
||||
'tische': S['tische'],
|
||||
@@ -271,6 +332,19 @@ def TischeSetzen(SitzungsId: str, Layout: TischLayout):
|
||||
}
|
||||
|
||||
|
||||
@app.get( '/sitzung/{SitzungsId}/tische' )
|
||||
def TischeHolen(SitzungsId: str):
|
||||
"""das gespeicherte Tisch-Layout zurueckgeben (fuer den grafischen
|
||||
Editor: Layout aus einer geteilten Session wieder aufnehmen).
|
||||
Die abgeleitete Nachbarliste ist pro Tisch enthalten; der zuletzt
|
||||
verwendete nachbarRadius kommt separat mit (Vorgabe 1.5)."""
|
||||
S = _GibSession( SitzungsId )
|
||||
return {
|
||||
'tische': S['tische'] or [],
|
||||
'nachbarRadius': S.get( 'nachbarRadius', 1.5 ),
|
||||
}
|
||||
|
||||
|
||||
@app.post( '/sitzung/{SitzungsId}/tische-datei' )
|
||||
def TischDateiHochladen(SitzungsId: str, datei: UploadFile = File(...)):
|
||||
"""bestehende tische.ini hochladen (gleiches Format wie fuer die CLI,
|
||||
@@ -330,8 +404,7 @@ def TischDateiHochladen(SitzungsId: str, datei: UploadFile = File(...)):
|
||||
detail='tische.ini enthaelt doppelte Tisch-Ids' )
|
||||
|
||||
S['tische'] = TischListe
|
||||
S['ergebnis'] = None
|
||||
S['varianten'] = 0
|
||||
S['ergebnisse'] = []
|
||||
return {
|
||||
'tische': S['tische'],
|
||||
'plaetzeGesamt': sum( T['plaetze'] for T in S['tische'] ),
|
||||
@@ -350,7 +423,7 @@ def PersonenHochladen(SitzungsId: str, datei: UploadFile = File(...)):
|
||||
Text = Rohdaten.decode( 'cp1252' ) # Excel/Windows-Fallback
|
||||
|
||||
try:
|
||||
[ PN, GN, VIPGruppe, VipHash, GruppenNamen ] = \
|
||||
[ PN, GN, VIPGruppe, VipHash, GruppenNamen, FixierteGruppen ] = \
|
||||
CSVConfig().HandleGaesteliste( Text )
|
||||
except ValueError as Fehler:
|
||||
raise HTTPException( status_code=400, detail=str(Fehler) )
|
||||
@@ -364,23 +437,34 @@ def PersonenHochladen(SitzungsId: str, datei: UploadFile = File(...)):
|
||||
'nVips': VIPGruppe.Anzahl(),
|
||||
}
|
||||
S['gruppenNamen'] = GruppenNamen
|
||||
S['ergebnis'] = None
|
||||
S['varianten'] = 0
|
||||
S['ergebnisse'] = []
|
||||
|
||||
return {
|
||||
'personen': GN.NLeute,
|
||||
'vips': VIPGruppe.Anzahl(),
|
||||
'fixiert': VIPGruppe.Anzahl(),
|
||||
'gruppen': [ {
|
||||
'id': G.Id,
|
||||
'name': GruppenNamen.get( G.Id, 'Gruppe %s' % G.Id ),
|
||||
'anzahl': G.Anzahl(),
|
||||
} for G in GN ],
|
||||
# fest platzierte Gruppen (fuer die grau hinterlegte Anzeige)
|
||||
'fixierte': [ { 'name': Name, 'tisch': Info['tisch'], 'anzahl': Info['anzahl'] }
|
||||
for Name, Info in FixierteGruppen.items() ],
|
||||
}
|
||||
|
||||
|
||||
@app.post( '/sitzung/{SitzungsId}/berechnen' )
|
||||
def Berechnen(SitzungsId: str):
|
||||
"""startet die GA-Optimierung; jeder Aufruf erzeugt eine neue Variante"""
|
||||
def Berechnen(SitzungsId: str,
|
||||
varianten: int = Query( default=3, ge=1, le=5,
|
||||
description='wieviele unterschiedliche Varianten der Lauf '
|
||||
'zurueckgeben soll (aus Farm.TopN, dedupliziert)' ),
|
||||
strafen: str = Query( default=STRAFENART,
|
||||
description='Name des Strafpunkte-Profils (Sektion in strafen.cfg), '
|
||||
'z.B. default oder locker - zum Vergleich waehlbar' )):
|
||||
"""startet die GA-Optimierung; jeder Aufruf ist ein neuer Lauf und
|
||||
liefert bis zu 'varianten' unterschiedliche gute Sitzordnungen. Das
|
||||
Strafpunkte-Profil ('strafen') steuert die Bewertung waehrend der
|
||||
Optimierung - so lassen sich z.B. default und locker vergleichen."""
|
||||
S = _GibSession( SitzungsId )
|
||||
if S['tische'] is None:
|
||||
raise HTTPException( status_code=400,
|
||||
@@ -412,41 +496,79 @@ def Berechnen(SitzungsId: str):
|
||||
detail='Tisch %d hat %d Plaetze, aber %d VIPs sind '
|
||||
'dort fest gesetzt' % (Tid, T.Plaetze, AnzahlVIPs) )
|
||||
|
||||
try:
|
||||
SL = strafprofil( strafen )
|
||||
except ValueError as Fehler:
|
||||
raise HTTPException( status_code=400, detail=str(Fehler) )
|
||||
|
||||
try:
|
||||
GAFarm = Farm( GAZyklus, Sitzplatzverteilung,
|
||||
Tische=TE, Gruppen=P['GN'], Strafen=Strafen,
|
||||
Tische=TE, Gruppen=P['GN'], Strafen=SL,
|
||||
VIPListe=P['VipHash'], VIPs=P['VIPGruppe'] )
|
||||
except IndexError as Fehler:
|
||||
raise HTTPException( status_code=400, detail=str(Fehler) )
|
||||
|
||||
S['ergebnis'] = GAFarm.Bester()
|
||||
S['varianten'] = S['varianten'] + 1
|
||||
# Roadmap M2: nicht nur den Besten, sondern bis zu 'varianten'
|
||||
# UNTERSCHIEDLICHE gute Loesungen aus dem Endpool — Farm.TopN liefert
|
||||
# absteigend sortiert. Der Vergleich der Loesungen laeuft ueber die
|
||||
# getGruppenId (Gruppen-Ebene): dieselbe Sitzordnung zaehlt nicht mehrfach
|
||||
# als eigene Variante. Der GA-Pool ist ohnehin schon per getGruppenId
|
||||
# dedupliziert; das hier ist die zusaetzliche Absicherung fuer die Ausgabe.
|
||||
# Liefert der Pool weniger unterschiedliche Sitzordnungen, kommen eben
|
||||
# weniger zurueck (ein weiterer Klick auf Berechnen erzeugt einen frischen Lauf).
|
||||
Ergebnisse, Gesehen = [], set()
|
||||
for SV in GAFarm.TopN( len( GAFarm.Pool ) ):
|
||||
Sig = SV.getGruppenId()
|
||||
if Sig in Gesehen:
|
||||
continue
|
||||
Gesehen.add( Sig )
|
||||
Ergebnisse.append( SV )
|
||||
if len( Ergebnisse ) == varianten:
|
||||
break
|
||||
|
||||
S['ergebnisse'] = Ergebnisse
|
||||
S['laeufe'] = S['laeufe'] + 1
|
||||
S['strafen'] = strafen # fuer die Anzeige, welches Profil den Lauf ergab
|
||||
return _ErgebnisJSON( S )
|
||||
|
||||
|
||||
@app.get( '/strafprofile' )
|
||||
def Strafprofile():
|
||||
"""verfuegbare Strafpunkte-Profile (Sektionen in strafen.cfg) fuer die
|
||||
Auswahl in der GUI; 'vorgabe' ist das voreingestellte Profil."""
|
||||
return { 'profile': strafprofil_namen(), 'vorgabe': STRAFENART }
|
||||
|
||||
|
||||
@app.get( '/sitzung/{SitzungsId}/ergebnis' )
|
||||
def Ergebnis(SitzungsId: str):
|
||||
"""das beste bisher berechnete Ergebnis als JSON"""
|
||||
"""alle Varianten des letzten Laufs als JSON (beste zuerst)"""
|
||||
S = _GibSession( SitzungsId )
|
||||
if S['ergebnis'] is None:
|
||||
if not S['ergebnisse']:
|
||||
raise HTTPException( status_code=404,
|
||||
detail='Noch nichts berechnet (POST .../berechnen)' )
|
||||
return _ErgebnisJSON( S )
|
||||
|
||||
|
||||
@app.get( '/sitzung/{SitzungsId}/ergebnis.svg' )
|
||||
def ErgebnisSVG(SitzungsId: str):
|
||||
"""das beste bisher berechnete Ergebnis als SVG (alsSVG aus dem Kern)"""
|
||||
def ErgebnisSVG(SitzungsId: str,
|
||||
variante: int = Query( default=1, ge=1,
|
||||
description='Nummer der Variante (1 = beste)' )):
|
||||
"""eine berechnete Variante als SVG (alsSVG aus dem Kern)"""
|
||||
S = _GibSession( SitzungsId )
|
||||
if S['ergebnis'] is None:
|
||||
if not S['ergebnisse']:
|
||||
raise HTTPException( status_code=404,
|
||||
detail='Noch nichts berechnet (POST .../berechnen)' )
|
||||
if variante > len( S['ergebnisse'] ):
|
||||
raise HTTPException( status_code=404,
|
||||
detail='Variante %d gibt es nicht (letzter Lauf hat %d)'
|
||||
% (variante, len( S['ergebnisse'] )) )
|
||||
|
||||
# alsSVG schreibt in eine Datei -> Tempdatei schreiben, lesen, loeschen
|
||||
Handle, TempPfad = tempfile.mkstemp( suffix='.svg' )
|
||||
os.close( Handle )
|
||||
try:
|
||||
S['ergebnis'].alsSVG( TempPfad )
|
||||
S['ergebnisse'][variante - 1].alsSVG( TempPfad,
|
||||
GruppenNamen=S.get( 'gruppenNamen', {} ), Farbschema=Farben )
|
||||
fsock = open( TempPfad, 'r' )
|
||||
SVG = fsock.read()
|
||||
fsock.close()
|
||||
|
||||
@@ -0,0 +1,472 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Sitz & Platz — Tisch-Editor (M1)</title>
|
||||
<style>
|
||||
:root {
|
||||
--akzent: #2f6f4f;
|
||||
--akzent-hell: #e6f0ea;
|
||||
--rand: #d9d4c8;
|
||||
--hintergrund: #faf8f3;
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
|
||||
margin: 0; background: var(--hintergrund); color: #2a2a24; line-height: 1.5;
|
||||
}
|
||||
header { background: var(--akzent); color: white; padding: 1rem 1.5rem; }
|
||||
header h1 { margin: 0; font-size: 1.3rem; }
|
||||
header p { margin: .2rem 0 0; opacity: .85; font-size: .85rem; }
|
||||
header a { color: #d6eade; }
|
||||
main { max-width: 68rem; margin: 0 auto; padding: 1rem 1.5rem 4rem; }
|
||||
.werkzeug {
|
||||
display: flex; flex-wrap: wrap; align-items: center; gap: .4rem;
|
||||
background: white; border: 1px solid var(--rand); border-radius: 8px;
|
||||
padding: .6rem .75rem; margin-bottom: 1rem;
|
||||
}
|
||||
.werkzeug .trenner { width: 1px; height: 1.6rem; background: var(--rand); margin: 0 .3rem; }
|
||||
.werkzeug label { font-size: .82rem; color: #6b6557; display: inline-flex; align-items: center; gap: .3rem; }
|
||||
button {
|
||||
background: var(--akzent); color: white; border: 0; border-radius: 4px;
|
||||
padding: .42rem .8rem; font-size: .88rem; cursor: pointer;
|
||||
}
|
||||
button.sekundaer { background: #8b8577; }
|
||||
button.geist { background: white; color: var(--akzent); border: 1px solid var(--rand); }
|
||||
button:disabled { background: #cfcabc; color: #f3f0e8; cursor: not-allowed; }
|
||||
.buehne {
|
||||
display: grid; grid-template-columns: 1fr 15rem; gap: 1rem; align-items: start;
|
||||
}
|
||||
@media (max-width: 48rem) { .buehne { grid-template-columns: 1fr; } }
|
||||
#leinwand {
|
||||
background: white; border: 1px solid var(--rand); border-radius: 8px;
|
||||
overflow: auto; touch-action: none; min-height: 24rem;
|
||||
}
|
||||
#leinwand svg { display: block; }
|
||||
.circle-tisch { cursor: grab; }
|
||||
.circle-tisch:active { cursor: grabbing; }
|
||||
aside {
|
||||
background: white; border: 1px solid var(--rand); border-radius: 8px;
|
||||
padding: 1rem; font-size: .9rem;
|
||||
}
|
||||
aside h2 { font-size: 1rem; margin: 0 0 .6rem; color: var(--akzent); }
|
||||
aside .feld { margin: .5rem 0; }
|
||||
aside input[type=number] { width: 4rem; }
|
||||
.zahl { display: inline-block; background: #f1eee6; border-radius: 4px;
|
||||
padding: .25rem .6rem; margin: .1rem .3rem .1rem 0; font-size: .85rem; }
|
||||
.zahl b { color: var(--akzent); }
|
||||
.status { font-size: .85rem; margin-top: .6rem; min-height: 1.2rem; }
|
||||
.status.ok { color: var(--akzent); }
|
||||
.status.fehler { color: #a03030; white-space: pre-wrap; }
|
||||
.hinweis { font-size: .8rem; color: #6b6557; }
|
||||
kbd { background: #f1eee6; border: 1px solid var(--rand); border-bottom-width: 2px;
|
||||
border-radius: 3px; padding: 0 .3rem; font-size: .78rem; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Sitz & Platz <small style="font-weight:normal">— Interaktiver Tisch-Editor (Meilenstein 1)</small></h1>
|
||||
<p>Tische per Drag & Drop platzieren; Nachbarschaft wird aus der Nähe abgeleitet.
|
||||
Sitzung: <code id="sitzungsId">…</code> · weiter zu <a href="/">Gäste & Berechnung</a></p>
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<div class="werkzeug">
|
||||
<button id="btnUndo" title="Rückgängig (Strg+Z)" disabled>↶ Rückgängig</button>
|
||||
<button id="btnRedo" title="Wiederholen (Strg+Y)" disabled>↷ Wiederholen</button>
|
||||
<span class="trenner"></span>
|
||||
<button id="btnAdd" class="geist">+ Tisch</button>
|
||||
<button id="btnReihe" class="sekundaer">Preset: 4er-Reihe</button>
|
||||
<button id="btnRaster" class="sekundaer">Preset: 3×3-Raster</button>
|
||||
<span class="trenner"></span>
|
||||
<label>Nachbar-Radius
|
||||
<input type="range" id="radius" min="0.5" max="3" step="0.1" value="1.5">
|
||||
<b id="radiusWert">1,5</b>
|
||||
</label>
|
||||
<label>Raster
|
||||
<select id="raster">
|
||||
<option value="0.5" selected>0,5</option>
|
||||
<option value="1">1</option>
|
||||
<option value="1.5">1,5</option>
|
||||
<option value="2">2</option>
|
||||
</select>
|
||||
</label>
|
||||
<span class="trenner"></span>
|
||||
<label>tische.ini <input type="file" id="iniDatei" accept=".ini,text/plain"></label>
|
||||
<button id="btnIni" class="geist">laden</button>
|
||||
<span class="trenner"></span>
|
||||
<button id="btnSpeichern">Layout speichern</button>
|
||||
</div>
|
||||
|
||||
<div class="buehne">
|
||||
<div id="leinwand"></div>
|
||||
<aside>
|
||||
<h2>Ausgewählter Tisch</h2>
|
||||
<div id="inspektor"><p class="hinweis">Kein Tisch ausgewählt. Auf einen Tisch
|
||||
klicken, um Plätze zu ändern oder ihn zu löschen. Ziehen zum Verschieben.</p></div>
|
||||
<hr style="border:0;border-top:1px solid var(--rand);margin:.8rem 0">
|
||||
<div id="zahlen"></div>
|
||||
<p class="hinweis" style="margin-top:.6rem">Tastatur: <kbd>Strg</kbd>+<kbd>Z</kbd> /
|
||||
<kbd>Strg</kbd>+<kbd>Y</kbd> Undo/Redo · <kbd>Entf</kbd> löscht den
|
||||
ausgewählten Tisch.</p>
|
||||
</aside>
|
||||
</div>
|
||||
<div class="status" id="status"></div>
|
||||
|
||||
</main>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
/* ============================================================ Zustand
|
||||
state.tische ist die einzige Wahrheit; das SVG wird daraus gezeichnet
|
||||
(state-getrieben, nie umgekehrt). Der Nachbar-Radius ist bewusst KEIN
|
||||
Teil der Undo-History (Undo/Redo betrifft Tischgeometrie/-kapazität,
|
||||
nicht diese Ableitungs-Einstellung), wird aber mitgespeichert. */
|
||||
const state = { tische: [] };
|
||||
let radius = 1.5;
|
||||
let rasterSchritt = 0.5;
|
||||
const ZIEH_TEMPO = 0.5; // Ziehgeschwindigkeit: Tisch folgt dem Zeiger halb so schnell
|
||||
let selectedId = null;
|
||||
let sitzung = null;
|
||||
|
||||
/* Undo/Redo: Schnappschuss-Stapel. Ein Schnappschuss ist ein tiefer Klon
|
||||
von state.tische. Vor jeder verändernden Aktion wird der aktuelle
|
||||
Zustand auf undoStack gelegt und redoStack geleert. */
|
||||
const undoStack = [];
|
||||
const redoStack = [];
|
||||
const HIST_MAX = 200;
|
||||
|
||||
const klon = (t) => JSON.parse(JSON.stringify(t));
|
||||
|
||||
function pushHistory() {
|
||||
undoStack.push(klon(state.tische));
|
||||
if (undoStack.length > HIST_MAX) undoStack.shift();
|
||||
redoStack.length = 0;
|
||||
knoepfe();
|
||||
}
|
||||
function undo() {
|
||||
if (!undoStack.length) return;
|
||||
redoStack.push(klon(state.tische));
|
||||
state.tische = undoStack.pop();
|
||||
nachZustandswechsel();
|
||||
}
|
||||
function redo() {
|
||||
if (!redoStack.length) return;
|
||||
undoStack.push(klon(state.tische));
|
||||
state.tische = redoStack.pop();
|
||||
nachZustandswechsel();
|
||||
}
|
||||
function nachZustandswechsel() {
|
||||
if (selectedId !== null && !tischVonId(selectedId)) selectedId = null;
|
||||
knoepfe(); zeichne(); inspektor();
|
||||
}
|
||||
function knoepfe() {
|
||||
document.getElementById('btnUndo').disabled = undoStack.length === 0;
|
||||
document.getElementById('btnRedo').disabled = redoStack.length === 0;
|
||||
}
|
||||
|
||||
/* ============================================================ Helfer */
|
||||
const tischVonId = (id) => state.tische.find(t => t.id === id);
|
||||
function neueId() {
|
||||
return state.tische.reduce((m, t) => Math.max(m, t.id), 0) + 1;
|
||||
}
|
||||
function snap(v) { return Math.round( Math.round(v / rasterSchritt) * rasterSchritt * 100 ) / 100; }
|
||||
function radiusPx(plaetze) {
|
||||
// Kreisgroesse waechst mit der Platzzahl (analog alsSVG im Kern)
|
||||
return Math.max(18, Math.min(48, 15 + plaetze * 1.5));
|
||||
}
|
||||
|
||||
/* ============================================================ Geometrie
|
||||
Grid-Koordinaten (wie tische.ini) <-> Pixel. Bei jeder Zeichnung neu
|
||||
bestimmt und in Modulvariablen abgelegt, damit pointerGrid() umrechnen
|
||||
kann. */
|
||||
const SCALE = 72, MARGIN = 34, PAD = 1;
|
||||
let viewMinX = 0, viewMinY = 0, curW = 600, curH = 400;
|
||||
|
||||
function grenzen() {
|
||||
if (!state.tische.length) return { minX: 0, maxX: 3, minY: 0, maxY: 2 };
|
||||
const xs = state.tische.map(t => t.x), ys = state.tische.map(t => t.y);
|
||||
return { minX: Math.min(...xs), maxX: Math.max(...xs),
|
||||
minY: Math.min(...ys), maxY: Math.max(...ys) };
|
||||
}
|
||||
const px = (gx, min) => MARGIN + (gx - min) * SCALE;
|
||||
function pointerGrid(e) {
|
||||
const svg = document.querySelector('#leinwand svg');
|
||||
const r = svg.getBoundingClientRect();
|
||||
const sx = curW / r.width, sy = curH / r.height;
|
||||
const X = (e.clientX - r.left) * sx, Y = (e.clientY - r.top) * sy;
|
||||
return { x: (X - MARGIN) / SCALE + viewMinX, y: (Y - MARGIN) / SCALE + viewMinY };
|
||||
}
|
||||
|
||||
/* ============================================================ Zeichnen */
|
||||
function nachbarPaare() {
|
||||
const paare = [];
|
||||
for (let i = 0; i < state.tische.length; i++)
|
||||
for (let j = i + 1; j < state.tische.length; j++) {
|
||||
const a = state.tische[i], b = state.tische[j];
|
||||
if (Math.hypot(a.x - b.x, a.y - b.y) <= radius) paare.push([a, b]);
|
||||
}
|
||||
return paare;
|
||||
}
|
||||
function zeichne() {
|
||||
const g = grenzen();
|
||||
viewMinX = g.minX - PAD; viewMinY = g.minY - PAD;
|
||||
curW = Math.max(480, MARGIN * 2 + (g.maxX - g.minX + 2 * PAD) * SCALE);
|
||||
curH = Math.max(320, MARGIN * 2 + (g.maxY - g.minY + 2 * PAD) * SCALE);
|
||||
|
||||
let s = `<svg xmlns="http://www.w3.org/2000/svg" width="${curW}" height="${curH}" `
|
||||
+ `viewBox="0 0 ${curW} ${curH}" font-family="sans-serif">`;
|
||||
s += `<rect width="100%" height="100%" fill="white"/>`;
|
||||
|
||||
// feines Grid an ganzzahligen Rasterlinien
|
||||
for (let gx = Math.ceil(viewMinX); px(gx, viewMinX) <= curW; gx++)
|
||||
s += `<line x1="${px(gx, viewMinX)}" y1="0" x2="${px(gx, viewMinX)}" y2="${curH}" stroke="#f0ede5"/>`;
|
||||
for (let gy = Math.ceil(viewMinY); px(gy, viewMinY) <= curH; gy++)
|
||||
s += `<line x1="0" y1="${px(gy, viewMinY)}" x2="${curW}" y2="${px(gy, viewMinY)}" stroke="#f0ede5"/>`;
|
||||
|
||||
// Nachbar-Linien (aus der Naehe abgeleitet, wie im Backend)
|
||||
for (const [a, b] of nachbarPaare())
|
||||
s += `<line x1="${px(a.x, viewMinX)}" y1="${px(a.y, viewMinY)}" `
|
||||
+ `x2="${px(b.x, viewMinX)}" y2="${px(b.y, viewMinY)}" `
|
||||
+ `stroke="#bcd3c6" stroke-width="2"/>`;
|
||||
|
||||
// Tische als Kreise
|
||||
for (const t of state.tische) {
|
||||
const cx = px(t.x, viewMinX), cy = px(t.y, viewMinY), r = radiusPx(t.plaetze);
|
||||
const gewaehlt = t.id === selectedId;
|
||||
s += `<g class="circle-tisch" data-id="${t.id}">`;
|
||||
if (gewaehlt)
|
||||
s += `<circle cx="${cx}" cy="${cy}" r="${r + 5}" fill="none" `
|
||||
+ `stroke="#2f6f4f" stroke-width="2" stroke-dasharray="4 3"/>`;
|
||||
s += `<circle cx="${cx}" cy="${cy}" r="${r}" `
|
||||
+ `fill="${gewaehlt ? '#e6f0ea' : 'white'}" stroke="#2f6f4f" stroke-width="2"/>`;
|
||||
s += `<text x="${cx}" y="${cy - 1}" text-anchor="middle" font-size="15" `
|
||||
+ `font-weight="bold" fill="#2f6f4f">${t.id}</text>`;
|
||||
s += `<text x="${cx}" y="${cy + 13}" text-anchor="middle" font-size="10" `
|
||||
+ `fill="#6b6557">${t.plaetze} Pl.</text>`;
|
||||
s += `</g>`;
|
||||
}
|
||||
s += `</svg>`;
|
||||
document.getElementById('leinwand').innerHTML = s;
|
||||
|
||||
// Kennzahlen
|
||||
const plaetze = state.tische.reduce((m, t) => m + t.plaetze, 0);
|
||||
document.getElementById('zahlen').innerHTML =
|
||||
`<span class="zahl">Tische: <b>${state.tische.length}</b></span>` +
|
||||
`<span class="zahl">Plätze: <b>${plaetze}</b></span>` +
|
||||
`<span class="zahl">Nachbar-Paare: <b>${nachbarPaare().length}</b></span>`;
|
||||
}
|
||||
|
||||
/* ============================================================ Inspektor */
|
||||
function inspektor() {
|
||||
const el = document.getElementById('inspektor');
|
||||
const t = selectedId !== null ? tischVonId(selectedId) : null;
|
||||
if (!t) {
|
||||
el.innerHTML = '<p class="hinweis">Kein Tisch ausgewählt. Auf einen Tisch ' +
|
||||
'klicken, um Plätze zu ändern oder ihn zu löschen. Ziehen zum Verschieben.</p>';
|
||||
return;
|
||||
}
|
||||
el.innerHTML =
|
||||
`<div class="feld"><b>Tisch ${t.id}</b></div>` +
|
||||
`<div class="feld">Plätze: ` +
|
||||
`<button class="geist" id="plMinus">−</button> ` +
|
||||
`<input type="number" id="plaetze" min="1" max="100" value="${t.plaetze}"> ` +
|
||||
`<button class="geist" id="plPlus">+</button></div>` +
|
||||
`<div class="feld hinweis">Position: x=${t.x}, y=${t.y}</div>` +
|
||||
`<div class="feld"><button class="sekundaer" id="loeschen">Tisch löschen</button></div>`;
|
||||
document.getElementById('plMinus').onclick = () => plaetzeSetzen(t.plaetze - 1);
|
||||
document.getElementById('plPlus').onclick = () => plaetzeSetzen(t.plaetze + 1);
|
||||
document.getElementById('plaetze').onchange = (e) => plaetzeSetzen(parseInt(e.target.value, 10));
|
||||
document.getElementById('loeschen').onclick = tischLoeschen;
|
||||
}
|
||||
function plaetzeSetzen(wert) {
|
||||
const t = tischVonId(selectedId);
|
||||
if (!t || isNaN(wert)) return;
|
||||
wert = Math.max(1, Math.min(100, wert));
|
||||
if (wert === t.plaetze) return;
|
||||
pushHistory(); t.plaetze = wert; zeichne(); inspektor();
|
||||
}
|
||||
|
||||
/* ============================================================ Auswahl */
|
||||
function auswaehlen(id) { selectedId = id; zeichne(); inspektor(); }
|
||||
|
||||
/* ============================================================ Aktionen */
|
||||
function tischHinzufuegen() {
|
||||
const g = grenzen();
|
||||
const x = state.tische.length ? snap((g.minX + g.maxX) / 2) : 0;
|
||||
const y = state.tische.length ? snap((g.minY + g.maxY) / 2) : 0;
|
||||
pushHistory();
|
||||
const id = neueId();
|
||||
state.tische.push({ id, plaetze: 8, x, y });
|
||||
auswaehlen(id);
|
||||
melde('Tisch ' + id + ' hinzugefügt.', 'ok');
|
||||
}
|
||||
function tischLoeschen() {
|
||||
if (selectedId === null) return;
|
||||
pushHistory();
|
||||
state.tische = state.tische.filter(t => t.id !== selectedId);
|
||||
const weg = selectedId; selectedId = null;
|
||||
zeichne(); inspektor();
|
||||
melde('Tisch ' + weg + ' gelöscht.', 'ok');
|
||||
}
|
||||
function presetReihe() {
|
||||
pushHistory();
|
||||
state.tische = [1, 2, 3, 4].map(i => ({ id: i, plaetze: 5, x: i - 1, y: 0 }));
|
||||
selectedId = null; zeichne(); inspektor();
|
||||
}
|
||||
function presetRaster() {
|
||||
pushHistory();
|
||||
state.tische = [];
|
||||
let id = 1;
|
||||
for (let y = 0; y < 3; y++)
|
||||
for (let x = 0; x < 3; x++) state.tische.push({ id: id++, plaetze: 8, x, y });
|
||||
selectedId = null; zeichne(); inspektor();
|
||||
}
|
||||
|
||||
/* ============================================================ Drag & Drop */
|
||||
let dragId = null, dragMoved = false, dragStart = null;
|
||||
let ankerPtr = null, ankerPos = null; // Zeiger- und Tischposition bei Zugbeginn
|
||||
|
||||
document.getElementById('leinwand').addEventListener('pointerdown', (e) => {
|
||||
const el = e.target.closest('[data-id]');
|
||||
if (!el) { if (selectedId !== null) auswaehlen(null); return; }
|
||||
const id = parseInt(el.dataset.id, 10);
|
||||
auswaehlen(id);
|
||||
const gpt = pointerGrid(e), t = tischVonId(id);
|
||||
dragId = id; dragMoved = false; dragStart = klon(state.tische);
|
||||
// Anker merken: der Tisch wandert ab hier um ZIEH_TEMPO * Zeigerweg
|
||||
ankerPtr = { x: gpt.x, y: gpt.y };
|
||||
ankerPos = { x: t.x, y: t.y };
|
||||
e.preventDefault();
|
||||
});
|
||||
window.addEventListener('pointermove', (e) => {
|
||||
if (dragId === null) return;
|
||||
const gpt = pointerGrid(e);
|
||||
// halbe Geschwindigkeit: Verschiebung des Tisches = halber Zeigerweg
|
||||
const nx = snap(ankerPos.x + (gpt.x - ankerPtr.x) * ZIEH_TEMPO);
|
||||
const ny = snap(ankerPos.y + (gpt.y - ankerPtr.y) * ZIEH_TEMPO);
|
||||
const t = tischVonId(dragId);
|
||||
if (t && (t.x !== nx || t.y !== ny)) { t.x = nx; t.y = ny; dragMoved = true; zeichne(); inspektor(); }
|
||||
});
|
||||
window.addEventListener('pointerup', () => {
|
||||
if (dragId === null) return;
|
||||
if (dragMoved) {
|
||||
// den ganzen Zug als EINEN Undo-Schritt ablegen (Vor-Zustand)
|
||||
undoStack.push(dragStart);
|
||||
if (undoStack.length > HIST_MAX) undoStack.shift();
|
||||
redoStack.length = 0; knoepfe();
|
||||
}
|
||||
dragId = null; dragStart = null;
|
||||
});
|
||||
|
||||
/* ============================================================ Tastatur */
|
||||
window.addEventListener('keydown', (e) => {
|
||||
const tippt = /^(INPUT|TEXTAREA)$/.test(document.activeElement.tagName);
|
||||
if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === 'z' && !e.shiftKey) {
|
||||
e.preventDefault(); undo();
|
||||
} else if ((e.ctrlKey || e.metaKey) && (e.key.toLowerCase() === 'y' ||
|
||||
(e.key.toLowerCase() === 'z' && e.shiftKey))) {
|
||||
e.preventDefault(); redo();
|
||||
} else if ((e.key === 'Delete' || e.key === 'Backspace') && selectedId !== null && !tippt) {
|
||||
e.preventDefault(); tischLoeschen();
|
||||
}
|
||||
});
|
||||
|
||||
/* ============================================================ Backend */
|
||||
function melde(text, klasse) {
|
||||
const el = document.getElementById('status');
|
||||
el.textContent = text; el.className = 'status ' + (klasse || '');
|
||||
}
|
||||
async function api(pfad, optionen) {
|
||||
const antwort = await fetch(pfad, optionen);
|
||||
const daten = await antwort.json().catch(() => null);
|
||||
if (!antwort.ok) {
|
||||
const d = daten && daten.detail
|
||||
? (typeof daten.detail === 'string' ? daten.detail : JSON.stringify(daten.detail))
|
||||
: antwort.statusText;
|
||||
throw new Error(d);
|
||||
}
|
||||
return daten;
|
||||
}
|
||||
async function sitzungHolen() {
|
||||
// Session mit der Testoberflaeche (index.html) ueber localStorage teilen
|
||||
let id = localStorage.getItem('platzSitzung');
|
||||
if (id) {
|
||||
const ok = await fetch('/sitzung/' + id).then(r => r.ok).catch(() => false);
|
||||
if (ok) return id;
|
||||
}
|
||||
const r = await api('/sitzung', { method: 'POST' });
|
||||
localStorage.setItem('platzSitzung', r.id);
|
||||
return r.id;
|
||||
}
|
||||
async function layoutSpeichern() {
|
||||
if (!state.tische.length) { melde('Mindestens ein Tisch nötig.', 'fehler'); return; }
|
||||
const tische = state.tische.map(t => ({ id: t.id, plaetze: t.plaetze, x: t.x, y: t.y }));
|
||||
try {
|
||||
const r = await api('/sitzung/' + sitzung + '/tische', {
|
||||
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ tische, nachbarRadius: radius }),
|
||||
});
|
||||
melde('✓ ' + r.tische.length + ' Tische, ' + r.plaetzeGesamt +
|
||||
' Plätze gespeichert. Weiter mit „Gäste & Berechnung“.', 'ok');
|
||||
} catch (e) { melde('Fehler: ' + e.message, 'fehler'); }
|
||||
}
|
||||
async function iniLaden() {
|
||||
const eingabe = document.getElementById('iniDatei');
|
||||
if (!eingabe.files.length) { melde('Bitte zuerst eine tische.ini auswählen.', 'fehler'); return; }
|
||||
const form = new FormData(); form.append('datei', eingabe.files[0]);
|
||||
try {
|
||||
const r = await api('/sitzung/' + sitzung + '/tische-datei', { method: 'POST', body: form });
|
||||
pushHistory();
|
||||
state.tische = r.tische.map(t => ({ id: t.id, plaetze: t.plaetze, x: t.x, y: t.y }));
|
||||
selectedId = null; zeichne(); inspektor();
|
||||
melde('✓ ' + r.tische.length + ' Tische aus Datei geladen.', 'ok');
|
||||
} catch (e) { melde('Fehler: ' + e.message, 'fehler'); }
|
||||
}
|
||||
async function layoutLaden() {
|
||||
// bereits in der (geteilten) Session gespeichertes Layout uebernehmen
|
||||
try {
|
||||
const r = await api('/sitzung/' + sitzung + '/tische');
|
||||
if (r.tische && r.tische.length) {
|
||||
state.tische = r.tische.map(t => ({ id: t.id, plaetze: t.plaetze, x: t.x, y: t.y }));
|
||||
radius = r.nachbarRadius || 1.5;
|
||||
document.getElementById('radius').value = radius;
|
||||
document.getElementById('radiusWert').textContent = radius.toFixed(1).replace('.', ',');
|
||||
return true;
|
||||
}
|
||||
} catch (e) { /* neue Session ohne Layout — Preset zeigen */ }
|
||||
return false;
|
||||
}
|
||||
|
||||
/* ============================================================ Verdrahtung */
|
||||
document.getElementById('btnUndo').onclick = undo;
|
||||
document.getElementById('btnRedo').onclick = redo;
|
||||
document.getElementById('btnAdd').onclick = tischHinzufuegen;
|
||||
document.getElementById('btnReihe').onclick = presetReihe;
|
||||
document.getElementById('btnRaster').onclick = presetRaster;
|
||||
document.getElementById('btnSpeichern').onclick = layoutSpeichern;
|
||||
document.getElementById('btnIni').onclick = iniLaden;
|
||||
document.getElementById('raster').onchange = (e) => { rasterSchritt = parseFloat(e.target.value); };
|
||||
const radiusInput = document.getElementById('radius');
|
||||
radiusInput.oninput = (e) => {
|
||||
radius = parseFloat(e.target.value);
|
||||
document.getElementById('radiusWert').textContent = radius.toFixed(1).replace('.', ',');
|
||||
zeichne();
|
||||
};
|
||||
|
||||
/* ============================================================ Start */
|
||||
window.addEventListener('DOMContentLoaded', async () => {
|
||||
try {
|
||||
sitzung = await sitzungHolen();
|
||||
document.getElementById('sitzungsId').textContent = sitzung;
|
||||
} catch (e) {
|
||||
document.getElementById('sitzungsId').textContent = 'Fehler: ' + e.message;
|
||||
}
|
||||
const geladen = sitzung ? await layoutLaden() : false;
|
||||
if (!geladen) state.tische = [1, 2, 3, 4].map(i => ({ id: i, plaetze: 5, x: i - 1, y: 0 }));
|
||||
knoepfe(); zeichne(); inspektor();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -47,18 +47,38 @@
|
||||
.status { font-size: .85rem; margin-top: .5rem; min-height: 1.2rem; }
|
||||
.status.ok { color: var(--akzent); }
|
||||
.status.fehler { color: #a03030; white-space: pre-wrap; }
|
||||
#svgBild { max-width: 100%; border: 1px solid var(--rand); border-radius: 4px;
|
||||
margin-top: .75rem; background: white; }
|
||||
#svgPlan { margin-top: .75rem; border: 1px solid var(--rand); border-radius: 4px;
|
||||
background: white; overflow: auto; }
|
||||
#svgPlan svg { max-width: 100%; height: auto; display: block; }
|
||||
#svgPlan .person { cursor: pointer; }
|
||||
#svgPlan .person.aktiv { stroke: #111; stroke-width: 3; }
|
||||
#gruppeBox { position: fixed; z-index: 1000; pointer-events: none; display: none;
|
||||
background: #2a2a24; color: white; border-radius: 6px;
|
||||
padding: .5rem .7rem; font-size: .8rem; max-width: 18rem;
|
||||
line-height: 1.35; box-shadow: 0 2px 10px rgba(0,0,0,.35); }
|
||||
#gruppeBox b { display: block; margin-bottom: .3rem; color: var(--akzent-hell, #d6eade); }
|
||||
.kennzahl { display: inline-block; background: #f1eee6; border-radius: 4px;
|
||||
padding: .3rem .7rem; margin: .15rem .3rem .15rem 0; font-size: .9rem; }
|
||||
.kennzahl b { color: var(--akzent); }
|
||||
.hinweis { font-size: .8rem; color: #6b6557; }
|
||||
#gruppenUebersicht tr.fixiert td { background: #e6e3dc; color: #555; }
|
||||
.varianten { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .6rem; }
|
||||
.variante {
|
||||
border: 1px solid var(--rand); border-radius: 6px; background: white;
|
||||
padding: .5rem .8rem; cursor: pointer; font-size: .85rem; text-align: left;
|
||||
color: #2a2a24; min-width: 11rem;
|
||||
}
|
||||
.variante.aktiv { border-color: var(--akzent); background: #e6f0ea;
|
||||
box-shadow: 0 0 0 1px var(--akzent); }
|
||||
.variante b { color: var(--akzent); font-size: 1rem; }
|
||||
.variante .zeile { display: block; color: #6b6557; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Sitz & Platz <small style="font-weight:normal">— Testoberfläche (Meilenstein 1)</small></h1>
|
||||
<p>Session-basiert, nichts wird dauerhaft gespeichert (TTL 24 h). Sitzung: <code id="sitzungsId">wird angelegt…</code></p>
|
||||
<p>Session-basiert, nichts wird dauerhaft gespeichert (TTL 24 h). Sitzung: <code id="sitzungsId">wird angelegt…</code>
|
||||
· <a href="/editor.html" style="color:#d6eade">grafischer Tisch-Editor</a></p>
|
||||
</header>
|
||||
<main>
|
||||
|
||||
@@ -78,10 +98,9 @@
|
||||
<button type="button" class="sekundaer" onclick="presetReihe()">Preset: 4er-Reihe</button>
|
||||
<button type="button" class="sekundaer" onclick="presetRaster()">Preset: 3×3-Raster</button>
|
||||
<br>
|
||||
<label class="hinweis">Oder eine bestehende <code>tische.ini</code> laden
|
||||
(z. B. aus <code>work/hochzeit</code>):</label>
|
||||
<input type="file" id="tischDatei" accept=".ini,text/plain">
|
||||
<button type="button" class="sekundaer" onclick="tischDateiLaden()">tische.ini laden</button>
|
||||
<label class="hinweis">Oder eine bestehende <code>tische.ini</code> auswählen
|
||||
(z. B. aus <code>work/hochzeit</code>) — wird sofort geladen:</label>
|
||||
<input type="file" id="tischDatei" accept=".ini,text/plain" onchange="tischDateiLaden()">
|
||||
<br>
|
||||
<button type="button" onclick="tischeSpeichern()">Tische speichern</button>
|
||||
<div class="status" id="tischStatus"></div>
|
||||
@@ -91,9 +110,10 @@
|
||||
<h2>2. Gästeliste (CSV)</h2>
|
||||
<p class="hinweis">Spalten: <code>Vorname;Nachname;Titel;Gruppe;Tisch;Anzahl</code> —
|
||||
<code>Gruppe</code> hält Personen zusammen (leer = Einzelgast),
|
||||
<code>Tisch</code> setzt VIPs fest (z. B. Brautpaar an Tisch 1),
|
||||
<code>Tisch</code> fixiert Gäste an einem Tisch (z. B. Brautpaar an Tisch 1),
|
||||
<code>Anzahl</code> expandiert eine Zeile in mehrere Buchungen
|
||||
(anonyme Sammelbuchung). Datei hochladen <em>oder</em> direkt hier bearbeiten:</p>
|
||||
(anonyme Sammelbuchung). Eine Datei auswählen (wird sofort übernommen)
|
||||
<em>oder</em> hier direkt bearbeiten und übernehmen:</p>
|
||||
<textarea id="csvText"></textarea>
|
||||
<br>
|
||||
<input type="file" id="csvDatei" accept=".csv,text/csv">
|
||||
@@ -104,16 +124,27 @@
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>3. Sitzordnung berechnen</h2>
|
||||
<p class="hinweis">Jeder Klick startet den genetischen Algorithmus neu und liefert
|
||||
eine neue Variante — die Wertigkeit (0 = perfekt, negativer = schlechter)
|
||||
macht Varianten vergleichbar.</p>
|
||||
<h2>3. Sitzordnung berechnen & Varianten vergleichen</h2>
|
||||
<p class="hinweis">Ein Lauf liefert bis zu drei <em>unterschiedliche</em> gute
|
||||
Sitzordnungen zum Vergleich — die Wertigkeit (0 = perfekt, negativer = schlechter),
|
||||
die Zahl getrennter Gruppen und allein sitzende Personen machen sie vergleichbar.
|
||||
Variante anklicken, um Tische und Raumplan umzuschalten; jeder weitere Klick auf
|
||||
„Berechnen“ startet einen frischen Lauf. Über das <em>Optimierungsprofil</em> lassen sich
|
||||
Bewertungs-Vorgehen vergleichen (z. B. <code>default</code> vs.
|
||||
<code>locker</code>): Profil wählen und neu berechnen.</p>
|
||||
<label class="hinweis">Optimierungsprofil:
|
||||
<select id="strafenWahl"></select></label>
|
||||
<button type="button" id="berechnenKnopf" onclick="berechnen()" disabled>Sitzordnung berechnen</button>
|
||||
<div class="status" id="rechnenStatus"></div>
|
||||
<div class="varianten" id="variantenListe"></div>
|
||||
<div id="kennzahlen"></div>
|
||||
<p class="hinweis" style="margin-bottom:0">Im Raumplan mit der Maus über eine Person
|
||||
fahren: Tooltip zeigt Name & Gruppe, ein Kasten listet alle Namen dieser Gruppe,
|
||||
und die Gruppe wird im Plan hervorgehoben.</p>
|
||||
<div id="svgPlan"></div>
|
||||
<div id="ergebnisTabellen"></div>
|
||||
<img id="svgBild" alt="" style="display:none">
|
||||
</section>
|
||||
<div id="gruppeBox"></div>
|
||||
|
||||
</main>
|
||||
<script>
|
||||
@@ -139,6 +170,23 @@ function status(id, text, klasse) {
|
||||
}
|
||||
|
||||
/* ------------------------------------------------ 1. Tische */
|
||||
let geladenerRadius = 1.5; // zuletzt aus der Session geladener Nachbar-Radius
|
||||
|
||||
async function tischeAusSessionLaden() {
|
||||
// Sektion 1 aus dem serverseitigen Session-Layout fuellen (z.B. was der
|
||||
// grafische Editor gespeichert hat) statt fest das Preset zu zeigen.
|
||||
try {
|
||||
const r = await api('/sitzung/' + sitzung + '/tische');
|
||||
if (r.tische && r.tische.length) {
|
||||
tischeLeeren();
|
||||
for (const t of r.tische) tischZeile(t.plaetze, t.x, t.y, t.id);
|
||||
geladenerRadius = r.nachbarRadius || 1.5;
|
||||
return;
|
||||
}
|
||||
} catch (e) { /* frische/abgelaufene Session — Preset als Fallback */ }
|
||||
presetReihe();
|
||||
}
|
||||
|
||||
function tischZeile(plaetze, x, y, tid) {
|
||||
const tbody = document.querySelector('#tischTabelle tbody');
|
||||
const nr = tid ?? tbody.children.length + 1;
|
||||
@@ -190,7 +238,7 @@ async function tischeSpeichern() {
|
||||
const r = await api('/sitzung/' + sitzung + '/tische', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ tische }),
|
||||
body: JSON.stringify({ tische, nachbarRadius: geladenerRadius }),
|
||||
});
|
||||
const nachbarn = r.tische.map(t => 'Tisch ' + t.id + ' ↔ [' + t.nachbarn.join(', ') + ']').join(' ');
|
||||
status('tischStatus', '✓ ' + r.tische.length + ' Tische, ' + r.plaetzeGesamt +
|
||||
@@ -216,6 +264,7 @@ async function tischDateiLaden() {
|
||||
'„Tische speichern“ ist nur nach Änderungen nötig.', 'ok');
|
||||
berechnenFreigeben();
|
||||
} catch (e) { status('tischStatus', 'Fehler: ' + e.message, 'fehler'); }
|
||||
finally { eingabe.value = ''; } // damit dieselbe Datei erneut auswählbar ist
|
||||
}
|
||||
|
||||
/* ------------------------------------------------ 2. Gäste */
|
||||
@@ -236,29 +285,63 @@ Gast;Kollegium;;Kollegen;;4
|
||||
Karl;Einzelgast;;;;
|
||||
`;
|
||||
|
||||
async function gaesteHochladen() {
|
||||
const dateiInput = document.getElementById('csvDatei');
|
||||
let blob;
|
||||
if (dateiInput.files.length > 0) {
|
||||
blob = dateiInput.files[0];
|
||||
} else {
|
||||
blob = new Blob([document.getElementById('csvText').value], { type: 'text/csv' });
|
||||
async function csvDateiGewaehlt(ev) {
|
||||
// Ausgewaehlte CSV sofort sichtbar in die Textarea laden (Single Source):
|
||||
// dekodieren wie das Backend (utf-8-sig, sonst cp1252), BOM strippen.
|
||||
const datei = ev.target.files[0];
|
||||
if (!datei) return;
|
||||
const puffer = await datei.arrayBuffer();
|
||||
let text;
|
||||
try {
|
||||
text = new TextDecoder('utf-8', { fatal: true }).decode(puffer);
|
||||
} catch (e) {
|
||||
text = new TextDecoder('windows-1252').decode(puffer); // Excel/Windows
|
||||
}
|
||||
text = text.replace(/^/, '');
|
||||
document.getElementById('csvText').value = text;
|
||||
ev.target.value = ''; // damit dieselbe Datei erneut auswählbar ist
|
||||
// direkt uebernehmen: die ausgewaehlte Datei wird sofort geladen (die
|
||||
// Textarea ist bereits befuellt und dient gaesteHochladen als Quelle)
|
||||
await gaesteHochladen();
|
||||
}
|
||||
|
||||
async function gaesteHochladen() {
|
||||
// immer die (ggf. aus einer Datei befuellte) Textarea senden
|
||||
const blob = new Blob([document.getElementById('csvText').value], { type: 'text/csv' });
|
||||
const form = new FormData();
|
||||
form.append('datei', blob, 'gaeste.csv');
|
||||
try {
|
||||
const r = await api('/sitzung/' + sitzung + '/personen', { method: 'POST', body: form });
|
||||
status('gaesteStatus', '✓ ' + r.personen + ' Personen in ' + r.gruppen.length +
|
||||
' Gruppen, dazu ' + r.vips + ' VIPs mit festem Tisch.', 'ok');
|
||||
' Gruppen' + (r.fixiert ? ', dazu ' + r.fixiert +
|
||||
' fixierte Personen an festen Tischen' : '') + '.', 'ok');
|
||||
// regulaere Gruppen, danach die fest platzierten ("fixierten") Gruppen
|
||||
// grau hinterlegt
|
||||
const regulaer = r.gruppen.map(g =>
|
||||
'<tr><td>' + g.name + '</td><td>' + g.anzahl + '</td></tr>').join('');
|
||||
const fixiert = (r.fixierte || []).map(f =>
|
||||
'<tr class="fixiert"><td>' + f.name +
|
||||
' <span class="hinweis">(fixiert an Tisch ' + f.tisch + ')</span></td><td>' +
|
||||
f.anzahl + '</td></tr>').join('');
|
||||
const html = '<table><thead><tr><th>Gruppe</th><th>Personen</th></tr></thead><tbody>' +
|
||||
r.gruppen.map(g => '<tr><td>' + g.name + '</td><td>' + g.anzahl + '</td></tr>').join('') +
|
||||
'</tbody></table>';
|
||||
regulaer + fixiert + '</tbody></table>';
|
||||
document.getElementById('gruppenUebersicht').innerHTML = html;
|
||||
berechnenFreigeben();
|
||||
} catch (e) { status('gaesteStatus', 'Fehler: ' + e.message, 'fehler'); }
|
||||
}
|
||||
|
||||
/* ------------------------------------------------ 3. Berechnen */
|
||||
async function strafprofileLaden() {
|
||||
// Auswahl der Strafprofile aus strafen.cfg fuellen (z.B. default, locker)
|
||||
try {
|
||||
const r = await api('/strafprofile');
|
||||
const sel = document.getElementById('strafenWahl');
|
||||
sel.innerHTML = r.profile.map(p =>
|
||||
'<option value="' + p + '"' + (p === r.vorgabe ? ' selected' : '') +
|
||||
'>' + p + '</option>').join('');
|
||||
} catch (e) { /* Auswahl bleibt leer -> Backend nutzt sein Default */ }
|
||||
}
|
||||
|
||||
async function berechnenFreigeben() {
|
||||
try {
|
||||
const s = await api('/sitzung/' + sitzung);
|
||||
@@ -266,20 +349,25 @@ async function berechnenFreigeben() {
|
||||
} catch (e) { /* Session ggf. abgelaufen — beim Berechnen gemeldet */ }
|
||||
}
|
||||
|
||||
let letzterLauf = null; // Antwort des letzten Berechnen-Laufs (mit Varianten)
|
||||
|
||||
async function berechnen() {
|
||||
const knopf = document.getElementById('berechnenKnopf');
|
||||
knopf.disabled = true;
|
||||
status('rechnenStatus', 'Der genetische Algorithmus läuft…');
|
||||
try {
|
||||
const r = await api('/sitzung/' + sitzung + '/berechnen', { method: 'POST' });
|
||||
status('rechnenStatus', '✓ Variante ' + r.variante + ' berechnet.', 'ok');
|
||||
knopf.textContent = 'Neue Variante berechnen';
|
||||
zeigeErgebnis(r);
|
||||
const svg = await fetch('/sitzung/' + sitzung + '/ergebnis.svg');
|
||||
const svgText = await svg.text();
|
||||
const bild = document.getElementById('svgBild');
|
||||
bild.src = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svgText);
|
||||
bild.style.display = 'block';
|
||||
const profil = document.getElementById('strafenWahl').value || 'default';
|
||||
const r = await api('/sitzung/' + sitzung + '/berechnen?varianten=3&strafen=' +
|
||||
encodeURIComponent(profil), { method: 'POST' });
|
||||
letzterLauf = r;
|
||||
status('rechnenStatus', '✓ Lauf ' + r.lauf + ' (Optimierungsprofil „' + r.strafen + '“): ' +
|
||||
r.varianten.length +
|
||||
(r.varianten.length === 1
|
||||
? ' Variante gefunden (der Lauf konvergierte auf eine Sitzordnung).'
|
||||
: ' unterschiedliche Varianten zum Vergleich.'), 'ok');
|
||||
knopf.textContent = 'Neuen Lauf berechnen';
|
||||
zeigeVariantenListe(r);
|
||||
await zeigeVariante(0);
|
||||
} catch (e) {
|
||||
status('rechnenStatus', 'Fehler: ' + e.message, 'fehler');
|
||||
} finally {
|
||||
@@ -287,15 +375,32 @@ async function berechnen() {
|
||||
}
|
||||
}
|
||||
|
||||
function zeigeErgebnis(r) {
|
||||
const getrennte = r.gruppen.filter(g => g.teilungen > 0).length;
|
||||
function zeigeVariantenListe(r) {
|
||||
document.getElementById('variantenListe').innerHTML = r.varianten.map((v, i) =>
|
||||
'<button type="button" class="variante" data-i="' + i + '" onclick="zeigeVariante(' + i + ')">' +
|
||||
'<b>Variante ' + v.nr + '</b>' +
|
||||
'<span class="zeile">Wertigkeit: ' + v.kennzahlen.wertigkeit + '</span>' +
|
||||
'<span class="zeile">getrennte Gruppen: ' + v.kennzahlen.getrennteGruppen +
|
||||
' (' + v.kennzahlen.teilungenGesamt + ' Teilungen)</span>' +
|
||||
'<span class="zeile">allein sitzend: ' + v.kennzahlen.alleinePersonen + '</span>' +
|
||||
'</button>').join('');
|
||||
}
|
||||
|
||||
async function zeigeVariante(i) {
|
||||
if (!letzterLauf || !letzterLauf.varianten[i]) return;
|
||||
const v = letzterLauf.varianten[i];
|
||||
document.querySelectorAll('#variantenListe .variante').forEach(el =>
|
||||
el.classList.toggle('aktiv', parseInt(el.dataset.i, 10) === i));
|
||||
|
||||
document.getElementById('kennzahlen').innerHTML =
|
||||
'<span class="kennzahl">Wertigkeit: <b>' + r.wertigkeit + '</b></span>' +
|
||||
'<span class="kennzahl">Variante: <b>' + r.variante + '</b></span>' +
|
||||
'<span class="kennzahl">getrennte Gruppen: <b>' + getrennte + '</b></span>';
|
||||
'<span class="kennzahl">Variante: <b>' + v.nr + '</b> (Lauf ' + letzterLauf.lauf + ')</span>' +
|
||||
'<span class="kennzahl">Optimierungsprofil: <b>' + letzterLauf.strafen + '</b></span>' +
|
||||
'<span class="kennzahl">Wertigkeit: <b>' + v.kennzahlen.wertigkeit + '</b></span>' +
|
||||
'<span class="kennzahl">getrennte Gruppen: <b>' + v.kennzahlen.getrennteGruppen + '</b></span>' +
|
||||
'<span class="kennzahl">allein sitzend: <b>' + v.kennzahlen.alleinePersonen + '</b></span>';
|
||||
|
||||
let html = '<table><thead><tr><th>Tisch</th><th>Belegung</th><th>Gäste (Gruppe)</th></tr></thead><tbody>';
|
||||
for (const t of r.tische) {
|
||||
for (const t of v.tische) {
|
||||
const gaeste = t.personen.map(p =>
|
||||
((p.titel ? p.titel + ' ' : '') + p.vorname + ' ' + p.nachname +
|
||||
' <span class="hinweis">(' + p.gruppe + ')</span>')).join(', ');
|
||||
@@ -306,24 +411,89 @@ function zeigeErgebnis(r) {
|
||||
|
||||
html += '<h2 style="margin-top:1rem">Gruppen</h2>' +
|
||||
'<table><thead><tr><th>Gruppe</th><th>Personen</th><th>Teilungen</th><th>Strafpunkte</th></tr></thead><tbody>' +
|
||||
r.gruppen.map(g => '<tr><td>' + g.name + '</td><td>' + g.anzahl + '</td><td>' +
|
||||
v.gruppen.map(g => '<tr><td>' + g.name + '</td><td>' + g.anzahl + '</td><td>' +
|
||||
g.teilungen + '</td><td>' + g.wert + '</td></tr>').join('') +
|
||||
'</tbody></table>';
|
||||
document.getElementById('ergebnisTabellen').innerHTML = html;
|
||||
|
||||
// Raumplan der gewaehlten Variante — inline einbetten (nicht als <img>),
|
||||
// damit die <title>-Tooltips und das Gruppen-Hover funktionieren
|
||||
try {
|
||||
const antwort = await fetch('/sitzung/' + sitzung + '/ergebnis.svg?variante=' + v.nr);
|
||||
const svgText = await antwort.text();
|
||||
const plan = document.getElementById('svgPlan');
|
||||
plan.innerHTML = svgText.replace(/<\?xml[^>]*\?>/, ''); // XML-Prolog raus
|
||||
gruppeInteraktion(plan.querySelector('svg'));
|
||||
} catch (e) { /* SVG optional — Tabellen stehen schon da */ }
|
||||
}
|
||||
|
||||
function escHtml(s) {
|
||||
return (s || '').replace(/[&<>"]/g, c =>
|
||||
({ '&': '&', '<': '<', '>': '>', '"': '"' }[c]));
|
||||
}
|
||||
|
||||
// Hover ueber einen Personenkreis: alle Kreise derselben Gruppe hervorheben
|
||||
// und einen Kasten mit der Namensliste dieser Gruppe zeigen. Die Namen kommen
|
||||
// direkt aus den data-name/data-gruppe-Attributen der SVG (vom Kern erzeugt).
|
||||
function gruppeInteraktion(svg) {
|
||||
if (!svg) return;
|
||||
const box = document.getElementById('gruppeBox');
|
||||
let markiert = null;
|
||||
svg.querySelectorAll('.person').forEach(kreis => {
|
||||
kreis.addEventListener('mouseenter', () => {
|
||||
const gruppe = kreis.dataset.gruppe || '';
|
||||
const gleiche = svg.querySelectorAll(
|
||||
'.person[data-gruppe="' + (window.CSS ? CSS.escape(gruppe) : gruppe) + '"]');
|
||||
gleiche.forEach(k => k.classList.add('aktiv'));
|
||||
markiert = gleiche;
|
||||
const namen = [...gleiche].map(k => k.dataset.name || '');
|
||||
box.innerHTML = '<b>' + escHtml(gruppe) + ' (' + namen.length + ')</b>' +
|
||||
namen.map(escHtml).join('<br>');
|
||||
box.style.display = 'block';
|
||||
});
|
||||
kreis.addEventListener('mouseleave', () => {
|
||||
if (markiert) markiert.forEach(k => k.classList.remove('aktiv'));
|
||||
markiert = null;
|
||||
box.style.display = 'none';
|
||||
});
|
||||
});
|
||||
svg.addEventListener('mousemove', e => {
|
||||
box.style.left = (e.clientX + 14) + 'px';
|
||||
box.style.top = (e.clientY + 14) + 'px';
|
||||
});
|
||||
}
|
||||
|
||||
/* ------------------------------------------------ Start */
|
||||
window.addEventListener('DOMContentLoaded', async () => {
|
||||
document.getElementById('csvText').value = beispielCSV;
|
||||
presetReihe();
|
||||
document.getElementById('csvDatei').addEventListener('change', csvDateiGewaehlt);
|
||||
strafprofileLaden();
|
||||
try {
|
||||
const r = await api('/sitzung', { method: 'POST' });
|
||||
sitzung = r.id;
|
||||
sitzung = await sitzungHolen();
|
||||
document.getElementById('sitzungsId').textContent = sitzung;
|
||||
// Tische aus der (ggf. mit dem Editor geteilten) Session laden;
|
||||
// Preset nur, wenn die Session noch keine Tische hat
|
||||
await tischeAusSessionLaden();
|
||||
berechnenFreigeben();
|
||||
} catch (e) {
|
||||
document.getElementById('sitzungsId').textContent = 'Fehler: ' + e.message;
|
||||
presetReihe();
|
||||
}
|
||||
});
|
||||
|
||||
// Session mit dem grafischen Editor (editor.html) ueber localStorage teilen:
|
||||
// eine bestehende, noch gueltige Sitzung wiederverwenden statt jedes Mal
|
||||
// eine neue anzulegen — so wirkt ein im Editor gebautes Layout hier weiter.
|
||||
async function sitzungHolen() {
|
||||
let id = localStorage.getItem('platzSitzung');
|
||||
if (id) {
|
||||
const ok = await fetch('/sitzung/' + id).then(r => r.ok).catch(() => false);
|
||||
if (ok) return id;
|
||||
}
|
||||
const r = await api('/sitzung', { method: 'POST' });
|
||||
localStorage.setItem('platzSitzung', r.id);
|
||||
return r.id;
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<line x1="1606.7" y1="60.0" x2="823.5" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1660.0" y1="60.0" x2="849.9" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1713.3" y1="60.0" x2="876.2" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1766.7" y1="60.0" x2="902.5" y2="150.0" stroke="#c04040" stroke-width="2.5"/>
|
||||
<line x1="1766.7" y1="60.0" x2="902.5" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1820.0" y1="60.0" x2="928.9" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1873.3" y1="60.0" x2="955.2" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1926.7" y1="60.0" x2="981.5" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
@@ -74,7 +74,7 @@
|
||||
<line x1="1606.7" y1="60.0" x2="1876.7" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1660.0" y1="60.0" x2="1903.0" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1713.3" y1="60.0" x2="1929.4" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1766.7" y1="60.0" x2="1955.7" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1766.7" y1="60.0" x2="1955.7" y2="150.0" stroke="#c04040" stroke-width="2.5"/>
|
||||
<line x1="1820.0" y1="60.0" x2="1982.0" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1873.3" y1="60.0" x2="2008.4" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1926.7" y1="60.0" x2="2034.7" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
@@ -82,375 +82,375 @@
|
||||
<line x1="2033.3" y1="60.0" x2="2087.3" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="2086.7" y1="60.0" x2="2113.7" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="2140.0" y1="60.0" x2="2140.0" y2="150.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="902.5" y1="150.0" x2="60.0" y2="240.0" stroke="#c04040" stroke-width="2.5"/>
|
||||
<line x1="1955.7" y1="150.0" x2="91.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1766.7" y1="60.0" x2="122.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="981.5" y1="150.0" x2="153.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="165.3" y1="150.0" x2="184.2" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="297.0" y1="150.0" x2="215.2" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1218.5" y1="150.0" x2="246.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1350.1" y1="150.0" x2="277.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1429.1" y1="150.0" x2="308.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="797.2" y1="150.0" x2="339.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="2034.7" y1="150.0" x2="370.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="139.0" y1="150.0" x2="401.5" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="849.9" y1="150.0" x2="432.5" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1192.2" y1="150.0" x2="463.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1903.0" y1="150.0" x2="494.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="220.0" y1="60.0" x2="525.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1660.0" y1="60.0" x2="556.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1086.8" y1="150.0" x2="587.8" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="2140.0" y1="150.0" x2="618.8" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="454.9" y1="150.0" x2="649.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="639.2" y1="150.0" x2="680.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="744.6" y1="150.0" x2="711.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="770.9" y1="150.0" x2="743.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="928.9" y1="150.0" x2="774.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1508.1" y1="150.0" x2="805.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1692.4" y1="150.0" x2="836.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1797.7" y1="150.0" x2="867.2" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1824.1" y1="150.0" x2="898.2" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="273.3" y1="60.0" x2="929.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="540.0" y1="60.0" x2="960.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="860.0" y1="60.0" x2="991.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1446.7" y1="60.0" x2="1022.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1500.0" y1="60.0" x2="1053.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="560.3" y1="150.0" x2="1084.5" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="902.5" y1="150.0" x2="1115.5" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1955.7" y1="150.0" x2="1146.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1766.7" y1="60.0" x2="1177.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="981.5" y1="150.0" x2="1208.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="165.3" y1="150.0" x2="1239.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="297.0" y1="150.0" x2="1270.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1218.5" y1="150.0" x2="1301.8" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1350.1" y1="150.0" x2="1332.8" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1429.1" y1="150.0" x2="1363.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="797.2" y1="150.0" x2="1394.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="2034.7" y1="150.0" x2="1426.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="139.0" y1="150.0" x2="1457.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="849.9" y1="150.0" x2="1488.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1192.2" y1="150.0" x2="1519.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1903.0" y1="150.0" x2="1550.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="220.0" y1="60.0" x2="1581.2" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1660.0" y1="60.0" x2="1612.2" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1086.8" y1="150.0" x2="1643.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="2140.0" y1="150.0" x2="1674.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="454.9" y1="150.0" x2="1705.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="639.2" y1="150.0" x2="1736.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="744.6" y1="150.0" x2="1767.5" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="770.9" y1="150.0" x2="1798.5" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="928.9" y1="150.0" x2="1829.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1508.1" y1="150.0" x2="1860.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1692.4" y1="150.0" x2="1891.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1797.7" y1="150.0" x2="1922.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1824.1" y1="150.0" x2="1953.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="273.3" y1="60.0" x2="1984.8" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="540.0" y1="60.0" x2="2015.8" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="860.0" y1="60.0" x2="2046.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1446.7" y1="60.0" x2="2077.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1500.0" y1="60.0" x2="2109.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="560.3" y1="150.0" x2="2140.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="60.0" y1="240.0" x2="60.0" y2="330.0" stroke="#c04040" stroke-width="2.5"/>
|
||||
<line x1="91.0" y1="240.0" x2="97.8" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="122.1" y1="240.0" x2="135.6" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1115.5" y1="240.0" x2="173.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1146.6" y1="240.0" x2="211.3" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1177.6" y1="240.0" x2="249.1" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="902.5" y1="150.0" x2="286.9" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1955.7" y1="150.0" x2="324.7" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1766.7" y1="60.0" x2="362.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="153.1" y1="240.0" x2="400.4" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1208.7" y1="240.0" x2="438.2" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="981.5" y1="150.0" x2="476.0" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="184.2" y1="240.0" x2="513.8" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="215.2" y1="240.0" x2="551.6" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="246.3" y1="240.0" x2="589.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="277.3" y1="240.0" x2="627.3" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="308.4" y1="240.0" x2="665.1" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="929.3" y1="240.0" x2="702.9" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="960.3" y1="240.0" x2="740.7" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1239.7" y1="240.0" x2="778.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1270.7" y1="240.0" x2="816.4" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1301.8" y1="240.0" x2="854.2" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1332.8" y1="240.0" x2="892.0" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1363.9" y1="240.0" x2="929.8" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1984.8" y1="240.0" x2="967.6" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="2015.8" y1="240.0" x2="1005.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="165.3" y1="150.0" x2="1043.3" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="297.0" y1="150.0" x2="1081.1" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="60.0" y1="240.0" x2="1118.9" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="91.0" y1="240.0" x2="1156.7" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="122.1" y1="240.0" x2="1194.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1115.5" y1="240.0" x2="1232.4" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1146.6" y1="240.0" x2="1270.2" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1177.6" y1="240.0" x2="1308.0" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="902.5" y1="150.0" x2="1345.8" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1955.7" y1="150.0" x2="1383.6" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1766.7" y1="60.0" x2="1421.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="153.1" y1="240.0" x2="1459.3" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1208.7" y1="240.0" x2="1497.1" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="981.5" y1="150.0" x2="1534.9" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="184.2" y1="240.0" x2="1572.7" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="215.2" y1="240.0" x2="1610.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="246.3" y1="240.0" x2="1648.4" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="277.3" y1="240.0" x2="1686.2" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="308.4" y1="240.0" x2="1724.0" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="929.3" y1="240.0" x2="1761.8" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="960.3" y1="240.0" x2="1799.6" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1239.7" y1="240.0" x2="1837.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1270.7" y1="240.0" x2="1875.3" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1301.8" y1="240.0" x2="1913.1" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1332.8" y1="240.0" x2="1950.9" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1363.9" y1="240.0" x2="1988.7" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1984.8" y1="240.0" x2="2026.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="2015.8" y1="240.0" x2="2064.4" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="165.3" y1="150.0" x2="2102.2" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="297.0" y1="150.0" x2="2140.0" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<circle cx="60.0" cy="60.0" r="5" fill="#3f7e4b" stroke="#333" stroke-width="0.5"><title>Id 1, Wert -90.3</title></circle>
|
||||
<circle cx="113.3" cy="60.0" r="5" fill="#7b5c40" stroke="#333" stroke-width="0.5"><title>Id 2, Wert -120.0</title></circle>
|
||||
<circle cx="166.7" cy="60.0" r="5" fill="#3f7e4b" stroke="#333" stroke-width="0.5"><title>Id 3, Wert -90.3</title></circle>
|
||||
<circle cx="220.0" cy="60.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 4, Wert -83.7</title></circle>
|
||||
<circle cx="273.3" cy="60.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 5, Wert -84.7</title></circle>
|
||||
<circle cx="326.7" cy="60.0" r="5" fill="#706342" stroke="#333" stroke-width="0.5"><title>Id 6, Wert -114.3</title></circle>
|
||||
<circle cx="380.0" cy="60.0" r="5" fill="#716242" stroke="#333" stroke-width="0.5"><title>Id 7, Wert -114.7</title></circle>
|
||||
<circle cx="433.3" cy="60.0" r="5" fill="#7a5d40" stroke="#333" stroke-width="0.5"><title>Id 8, Wert -119.3</title></circle>
|
||||
<circle cx="486.7" cy="60.0" r="5" fill="#84583e" stroke="#333" stroke-width="0.5"><title>Id 9, Wert -124.0</title></circle>
|
||||
<circle cx="540.0" cy="60.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 10, Wert -84.7</title></circle>
|
||||
<circle cx="593.3" cy="60.0" r="5" fill="#407e4b" stroke="#333" stroke-width="0.5"><title>Id 11, Wert -90.7</title></circle>
|
||||
<circle cx="646.7" cy="60.0" r="5" fill="#7c5c40" stroke="#333" stroke-width="0.5"><title>Id 12, Wert -120.3</title></circle>
|
||||
<circle cx="700.0" cy="60.0" r="5" fill="#7c5c40" stroke="#333" stroke-width="0.5"><title>Id 13, Wert -120.3</title></circle>
|
||||
<circle cx="753.3" cy="60.0" r="5" fill="#3f7e4b" stroke="#333" stroke-width="0.5"><title>Id 14, Wert -90.3</title></circle>
|
||||
<circle cx="806.7" cy="60.0" r="5" fill="#457b4a" stroke="#333" stroke-width="0.5"><title>Id 15, Wert -93.3</title></circle>
|
||||
<circle cx="860.0" cy="60.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 16, Wert -84.7</title></circle>
|
||||
<circle cx="913.3" cy="60.0" r="5" fill="#746041" stroke="#333" stroke-width="0.5"><title>Id 17, Wert -116.3</title></circle>
|
||||
<circle cx="966.7" cy="60.0" r="5" fill="#716242" stroke="#333" stroke-width="0.5"><title>Id 18, Wert -114.7</title></circle>
|
||||
<circle cx="1020.0" cy="60.0" r="5" fill="#587046" stroke="#333" stroke-width="0.5"><title>Id 19, Wert -102.7</title></circle>
|
||||
<circle cx="1073.3" cy="60.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 20, Wert -86.3</title></circle>
|
||||
<circle cx="1126.7" cy="60.0" r="5" fill="#487949" stroke="#333" stroke-width="0.5"><title>Id 21, Wert -94.7</title></circle>
|
||||
<circle cx="1180.0" cy="60.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 22, Wert -86.3</title></circle>
|
||||
<circle cx="1233.3" cy="60.0" r="5" fill="#3a814c" stroke="#333" stroke-width="0.5"><title>Id 23, Wert -87.7</title></circle>
|
||||
<circle cx="1286.7" cy="60.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 24, Wert -86.3</title></circle>
|
||||
<circle cx="1340.0" cy="60.0" r="5" fill="#4b7749" stroke="#333" stroke-width="0.5"><title>Id 25, Wert -96.3</title></circle>
|
||||
<circle cx="1393.3" cy="60.0" r="5" fill="#84583e" stroke="#333" stroke-width="0.5"><title>Id 26, Wert -124.0</title></circle>
|
||||
<circle cx="1446.7" cy="60.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 27, Wert -84.7</title></circle>
|
||||
<circle cx="1500.0" cy="60.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 28, Wert -84.7</title></circle>
|
||||
<circle cx="1553.3" cy="60.0" r="5" fill="#6f6442" stroke="#333" stroke-width="0.5"><title>Id 29, Wert -113.7</title></circle>
|
||||
<circle cx="1606.7" cy="60.0" r="5" fill="#716242" stroke="#333" stroke-width="0.5"><title>Id 30, Wert -114.7</title></circle>
|
||||
<circle cx="1660.0" cy="60.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 31, Wert -83.7</title></circle>
|
||||
<circle cx="1713.3" cy="60.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 32, Wert -86.3</title></circle>
|
||||
<circle cx="1766.7" cy="60.0" r="7" fill="#288c50" stroke="#c04040" stroke-width="2"><title>Id 33, Wert -78.7</title></circle>
|
||||
<circle cx="1820.0" cy="60.0" r="5" fill="#82583e" stroke="#333" stroke-width="0.5"><title>Id 34, Wert -123.3</title></circle>
|
||||
<circle cx="1873.3" cy="60.0" r="5" fill="#716242" stroke="#333" stroke-width="0.5"><title>Id 35, Wert -114.7</title></circle>
|
||||
<circle cx="1926.7" cy="60.0" r="5" fill="#696743" stroke="#333" stroke-width="0.5"><title>Id 36, Wert -110.7</title></circle>
|
||||
<circle cx="1980.0" cy="60.0" r="5" fill="#7a5d40" stroke="#333" stroke-width="0.5"><title>Id 37, Wert -119.3</title></circle>
|
||||
<circle cx="2033.3" cy="60.0" r="5" fill="#4a7849" stroke="#333" stroke-width="0.5"><title>Id 38, Wert -95.7</title></circle>
|
||||
<circle cx="2086.7" cy="60.0" r="5" fill="#517448" stroke="#333" stroke-width="0.5"><title>Id 39, Wert -99.0</title></circle>
|
||||
<circle cx="2140.0" cy="60.0" r="5" fill="#696743" stroke="#333" stroke-width="0.5"><title>Id 40, Wert -110.7</title></circle>
|
||||
<circle cx="60.0" cy="150.0" r="5" fill="#39824c" stroke="#333" stroke-width="0.5"><title>Id 41, Wert -87.3</title></circle>
|
||||
<circle cx="86.3" cy="150.0" r="5" fill="#7f5a3f" stroke="#333" stroke-width="0.5"><title>Id 42, Wert -121.7</title></circle>
|
||||
<circle cx="112.7" cy="150.0" r="5" fill="#3f7e4b" stroke="#333" stroke-width="0.5"><title>Id 43, Wert -90.3</title></circle>
|
||||
<circle cx="139.0" cy="150.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 44, Wert -83.7</title></circle>
|
||||
<circle cx="165.3" cy="150.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 45, Wert -81.7</title></circle>
|
||||
<circle cx="191.6" cy="150.0" r="5" fill="#4b7749" stroke="#333" stroke-width="0.5"><title>Id 46, Wert -96.3</title></circle>
|
||||
<circle cx="218.0" cy="150.0" r="5" fill="#38824c" stroke="#333" stroke-width="0.5"><title>Id 47, Wert -87.0</title></circle>
|
||||
<circle cx="244.3" cy="150.0" r="5" fill="#427d4b" stroke="#333" stroke-width="0.5"><title>Id 48, Wert -91.7</title></circle>
|
||||
<circle cx="270.6" cy="150.0" r="5" fill="#527448" stroke="#333" stroke-width="0.5"><title>Id 49, Wert -99.7</title></circle>
|
||||
<circle cx="297.0" cy="150.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 50, Wert -81.7</title></circle>
|
||||
<circle cx="323.3" cy="150.0" r="5" fill="#407e4b" stroke="#333" stroke-width="0.5"><title>Id 51, Wert -90.7</title></circle>
|
||||
<circle cx="349.6" cy="150.0" r="5" fill="#736141" stroke="#333" stroke-width="0.5"><title>Id 52, Wert -115.7</title></circle>
|
||||
<circle cx="375.9" cy="150.0" r="5" fill="#3c804c" stroke="#333" stroke-width="0.5"><title>Id 53, Wert -88.7</title></circle>
|
||||
<circle cx="402.3" cy="150.0" r="5" fill="#3f7e4b" stroke="#333" stroke-width="0.5"><title>Id 54, Wert -90.3</title></circle>
|
||||
<circle cx="428.6" cy="150.0" r="5" fill="#3f7e4b" stroke="#333" stroke-width="0.5"><title>Id 55, Wert -90.3</title></circle>
|
||||
<circle cx="454.9" cy="150.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 56, Wert -84.7</title></circle>
|
||||
<circle cx="481.3" cy="150.0" r="5" fill="#3c804c" stroke="#333" stroke-width="0.5"><title>Id 57, Wert -88.7</title></circle>
|
||||
<circle cx="507.6" cy="150.0" r="5" fill="#38824c" stroke="#333" stroke-width="0.5"><title>Id 58, Wert -87.0</title></circle>
|
||||
<circle cx="533.9" cy="150.0" r="5" fill="#527448" stroke="#333" stroke-width="0.5"><title>Id 59, Wert -99.7</title></circle>
|
||||
<circle cx="560.3" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 60, Wert -86.3</title></circle>
|
||||
<circle cx="586.6" cy="150.0" r="5" fill="#427d4b" stroke="#333" stroke-width="0.5"><title>Id 61, Wert -91.7</title></circle>
|
||||
<circle cx="612.9" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 62, Wert -86.3</title></circle>
|
||||
<circle cx="639.2" cy="150.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 63, Wert -84.7</title></circle>
|
||||
<circle cx="665.6" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 64, Wert -86.3</title></circle>
|
||||
<circle cx="691.9" cy="150.0" r="5" fill="#4b7749" stroke="#333" stroke-width="0.5"><title>Id 65, Wert -96.3</title></circle>
|
||||
<circle cx="718.2" cy="150.0" r="5" fill="#3f7f4b" stroke="#333" stroke-width="0.5"><title>Id 66, Wert -90.0</title></circle>
|
||||
<circle cx="744.6" cy="150.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 67, Wert -84.7</title></circle>
|
||||
<circle cx="770.9" cy="150.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 68, Wert -84.7</title></circle>
|
||||
<circle cx="797.2" cy="150.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 69, Wert -83.0</title></circle>
|
||||
<circle cx="823.5" cy="150.0" r="5" fill="#38824c" stroke="#333" stroke-width="0.5"><title>Id 70, Wert -87.0</title></circle>
|
||||
<circle cx="849.9" cy="150.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 71, Wert -83.7</title></circle>
|
||||
<circle cx="876.2" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 72, Wert -86.3</title></circle>
|
||||
<circle cx="902.5" cy="150.0" r="7" fill="#288c50" stroke="#c04040" stroke-width="2"><title>Id 73, Wert -78.7</title></circle>
|
||||
<circle cx="928.9" cy="150.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 74, Wert -84.7</title></circle>
|
||||
<circle cx="955.2" cy="150.0" r="5" fill="#38824c" stroke="#333" stroke-width="0.5"><title>Id 75, Wert -87.0</title></circle>
|
||||
<circle cx="981.5" cy="150.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 76, Wert -80.7</title></circle>
|
||||
<circle cx="1007.8" cy="150.0" r="5" fill="#4f7548" stroke="#333" stroke-width="0.5"><title>Id 77, Wert -98.0</title></circle>
|
||||
<circle cx="1034.2" cy="150.0" r="5" fill="#447c4a" stroke="#333" stroke-width="0.5"><title>Id 78, Wert -92.7</title></circle>
|
||||
<circle cx="1060.5" cy="150.0" r="5" fill="#c83232" stroke="#333" stroke-width="0.5"><title>Id 79, Wert -157.4</title></circle>
|
||||
<circle cx="1086.8" cy="150.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 80, Wert -84.6</title></circle>
|
||||
<circle cx="1113.2" cy="150.0" r="5" fill="#39824c" stroke="#333" stroke-width="0.5"><title>Id 81, Wert -87.3</title></circle>
|
||||
<circle cx="1139.5" cy="150.0" r="5" fill="#3f7f4b" stroke="#333" stroke-width="0.5"><title>Id 82, Wert -90.0</title></circle>
|
||||
<circle cx="1165.8" cy="150.0" r="5" fill="#3f7e4b" stroke="#333" stroke-width="0.5"><title>Id 83, Wert -90.3</title></circle>
|
||||
<circle cx="1192.2" cy="150.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 84, Wert -83.7</title></circle>
|
||||
<circle cx="1218.5" cy="150.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 85, Wert -81.7</title></circle>
|
||||
<circle cx="1244.8" cy="150.0" r="5" fill="#39824c" stroke="#333" stroke-width="0.5"><title>Id 86, Wert -87.3</title></circle>
|
||||
<circle cx="1271.1" cy="150.0" r="5" fill="#38824c" stroke="#333" stroke-width="0.5"><title>Id 87, Wert -87.0</title></circle>
|
||||
<circle cx="1297.5" cy="150.0" r="5" fill="#3d7f4b" stroke="#333" stroke-width="0.5"><title>Id 88, Wert -89.3</title></circle>
|
||||
<circle cx="1323.8" cy="150.0" r="5" fill="#527448" stroke="#333" stroke-width="0.5"><title>Id 89, Wert -99.7</title></circle>
|
||||
<circle cx="1350.1" cy="150.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 90, Wert -81.7</title></circle>
|
||||
<circle cx="1376.5" cy="150.0" r="5" fill="#407e4b" stroke="#333" stroke-width="0.5"><title>Id 91, Wert -90.7</title></circle>
|
||||
<circle cx="1402.8" cy="150.0" r="5" fill="#3c804c" stroke="#333" stroke-width="0.5"><title>Id 92, Wert -88.7</title></circle>
|
||||
<circle cx="1429.1" cy="150.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 93, Wert -81.7</title></circle>
|
||||
<circle cx="1455.4" cy="150.0" r="5" fill="#3f7e4b" stroke="#333" stroke-width="0.5"><title>Id 94, Wert -90.3</title></circle>
|
||||
<circle cx="1481.8" cy="150.0" r="5" fill="#3f7e4b" stroke="#333" stroke-width="0.5"><title>Id 95, Wert -90.3</title></circle>
|
||||
<circle cx="1508.1" cy="150.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 96, Wert -84.7</title></circle>
|
||||
<circle cx="1534.4" cy="150.0" r="5" fill="#3c804c" stroke="#333" stroke-width="0.5"><title>Id 97, Wert -88.7</title></circle>
|
||||
<circle cx="1560.8" cy="150.0" r="5" fill="#38824c" stroke="#333" stroke-width="0.5"><title>Id 98, Wert -87.0</title></circle>
|
||||
<circle cx="1587.1" cy="150.0" r="5" fill="#527448" stroke="#333" stroke-width="0.5"><title>Id 99, Wert -99.7</title></circle>
|
||||
<circle cx="1613.4" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 100, Wert -86.3</title></circle>
|
||||
<circle cx="1639.7" cy="150.0" r="5" fill="#427d4b" stroke="#333" stroke-width="0.5"><title>Id 101, Wert -91.7</title></circle>
|
||||
<circle cx="1666.1" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 102, Wert -86.3</title></circle>
|
||||
<circle cx="1692.4" cy="150.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 103, Wert -84.7</title></circle>
|
||||
<circle cx="1718.7" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 104, Wert -86.3</title></circle>
|
||||
<circle cx="1745.1" cy="150.0" r="5" fill="#4b7749" stroke="#333" stroke-width="0.5"><title>Id 105, Wert -96.3</title></circle>
|
||||
<circle cx="1771.4" cy="150.0" r="5" fill="#c73232" stroke="#333" stroke-width="0.5"><title>Id 106, Wert -156.9</title></circle>
|
||||
<circle cx="1797.7" cy="150.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 107, Wert -84.7</title></circle>
|
||||
<circle cx="1824.1" cy="150.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 108, Wert -84.7</title></circle>
|
||||
<circle cx="1850.4" cy="150.0" r="5" fill="#626a44" stroke="#333" stroke-width="0.5"><title>Id 109, Wert -107.7</title></circle>
|
||||
<circle cx="1876.7" cy="150.0" r="5" fill="#38824c" stroke="#333" stroke-width="0.5"><title>Id 110, Wert -87.0</title></circle>
|
||||
<circle cx="1903.0" cy="150.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 111, Wert -83.7</title></circle>
|
||||
<circle cx="1929.4" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 112, Wert -86.3</title></circle>
|
||||
<circle cx="1955.7" cy="150.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 113, Wert -78.7</title></circle>
|
||||
<circle cx="1982.0" cy="150.0" r="5" fill="#7d5c40" stroke="#333" stroke-width="0.5"><title>Id 114, Wert -120.6</title></circle>
|
||||
<circle cx="2008.4" cy="150.0" r="5" fill="#38824c" stroke="#333" stroke-width="0.5"><title>Id 115, Wert -87.0</title></circle>
|
||||
<circle cx="2034.7" cy="150.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 116, Wert -83.0</title></circle>
|
||||
<circle cx="2061.0" cy="150.0" r="5" fill="#437c4a" stroke="#333" stroke-width="0.5"><title>Id 117, Wert -92.3</title></circle>
|
||||
<circle cx="2087.3" cy="150.0" r="5" fill="#447c4a" stroke="#333" stroke-width="0.5"><title>Id 118, Wert -92.7</title></circle>
|
||||
<circle cx="2113.7" cy="150.0" r="5" fill="#8e523c" stroke="#333" stroke-width="0.5"><title>Id 119, Wert -128.9</title></circle>
|
||||
<circle cx="2140.0" cy="150.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 120, Wert -84.6</title></circle>
|
||||
<circle cx="60.0" cy="240.0" r="7" fill="#288c50" stroke="#c04040" stroke-width="2"><title>Id 121, Wert -78.7</title></circle>
|
||||
<circle cx="91.0" cy="240.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 122, Wert -78.7</title></circle>
|
||||
<circle cx="122.1" cy="240.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 123, Wert -78.7</title></circle>
|
||||
<circle cx="153.1" cy="240.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 124, Wert -80.7</title></circle>
|
||||
<circle cx="184.2" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 125, Wert -81.7</title></circle>
|
||||
<circle cx="215.2" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 126, Wert -81.7</title></circle>
|
||||
<circle cx="246.3" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 127, Wert -81.7</title></circle>
|
||||
<circle cx="277.3" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 128, Wert -81.7</title></circle>
|
||||
<circle cx="308.4" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 129, Wert -81.7</title></circle>
|
||||
<circle cx="339.4" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 130, Wert -83.0</title></circle>
|
||||
<circle cx="370.4" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 131, Wert -83.0</title></circle>
|
||||
<circle cx="401.5" cy="240.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 132, Wert -83.7</title></circle>
|
||||
<circle cx="432.5" cy="240.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 133, Wert -83.7</title></circle>
|
||||
<circle cx="463.6" cy="240.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 134, Wert -83.7</title></circle>
|
||||
<circle cx="494.6" cy="240.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 135, Wert -83.7</title></circle>
|
||||
<circle cx="525.7" cy="240.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 136, Wert -83.7</title></circle>
|
||||
<circle cx="556.7" cy="240.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 137, Wert -83.7</title></circle>
|
||||
<circle cx="587.8" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 138, Wert -84.6</title></circle>
|
||||
<circle cx="618.8" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 139, Wert -84.6</title></circle>
|
||||
<circle cx="649.9" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 140, Wert -84.7</title></circle>
|
||||
<circle cx="680.9" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 141, Wert -84.7</title></circle>
|
||||
<circle cx="711.9" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 142, Wert -84.7</title></circle>
|
||||
<circle cx="743.0" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 143, Wert -84.7</title></circle>
|
||||
<circle cx="774.0" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 144, Wert -84.7</title></circle>
|
||||
<circle cx="805.1" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 145, Wert -84.7</title></circle>
|
||||
<circle cx="836.1" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 146, Wert -84.7</title></circle>
|
||||
<circle cx="867.2" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 147, Wert -84.7</title></circle>
|
||||
<circle cx="898.2" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 148, Wert -84.7</title></circle>
|
||||
<circle cx="929.3" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 149, Wert -81.7</title></circle>
|
||||
<circle cx="960.3" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 150, Wert -81.7</title></circle>
|
||||
<circle cx="991.3" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 151, Wert -84.7</title></circle>
|
||||
<circle cx="1022.4" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 152, Wert -84.7</title></circle>
|
||||
<circle cx="1053.4" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 153, Wert -84.7</title></circle>
|
||||
<circle cx="1084.5" cy="240.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 154, Wert -86.3</title></circle>
|
||||
<circle cx="1115.5" cy="240.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 155, Wert -78.7</title></circle>
|
||||
<circle cx="1146.6" cy="240.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 156, Wert -78.7</title></circle>
|
||||
<circle cx="1177.6" cy="240.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 157, Wert -78.7</title></circle>
|
||||
<circle cx="1208.7" cy="240.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 158, Wert -80.7</title></circle>
|
||||
<circle cx="1239.7" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 159, Wert -81.7</title></circle>
|
||||
<circle cx="1270.7" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 160, Wert -81.7</title></circle>
|
||||
<circle cx="1301.8" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 161, Wert -81.7</title></circle>
|
||||
<circle cx="1332.8" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 162, Wert -81.7</title></circle>
|
||||
<circle cx="1363.9" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 163, Wert -81.7</title></circle>
|
||||
<circle cx="1394.9" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 164, Wert -83.0</title></circle>
|
||||
<circle cx="1426.0" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 165, Wert -83.0</title></circle>
|
||||
<circle cx="1457.0" cy="240.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 166, Wert -83.7</title></circle>
|
||||
<circle cx="1488.1" cy="240.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 167, Wert -83.7</title></circle>
|
||||
<circle cx="1519.1" cy="240.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 168, Wert -83.7</title></circle>
|
||||
<circle cx="1550.1" cy="240.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 169, Wert -83.7</title></circle>
|
||||
<circle cx="1581.2" cy="240.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 170, Wert -83.7</title></circle>
|
||||
<circle cx="1612.2" cy="240.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 171, Wert -83.7</title></circle>
|
||||
<circle cx="1643.3" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 172, Wert -84.6</title></circle>
|
||||
<circle cx="1674.3" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 173, Wert -84.6</title></circle>
|
||||
<circle cx="1705.4" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 174, Wert -84.7</title></circle>
|
||||
<circle cx="1736.4" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 175, Wert -84.7</title></circle>
|
||||
<circle cx="1767.5" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 176, Wert -84.7</title></circle>
|
||||
<circle cx="1798.5" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 177, Wert -84.7</title></circle>
|
||||
<circle cx="1829.6" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 178, Wert -84.7</title></circle>
|
||||
<circle cx="1860.6" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 179, Wert -84.7</title></circle>
|
||||
<circle cx="1891.6" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 180, Wert -84.7</title></circle>
|
||||
<circle cx="1922.7" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 181, Wert -84.7</title></circle>
|
||||
<circle cx="1953.7" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 182, Wert -84.7</title></circle>
|
||||
<circle cx="1984.8" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 183, Wert -81.7</title></circle>
|
||||
<circle cx="2015.8" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 184, Wert -81.7</title></circle>
|
||||
<circle cx="2046.9" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 185, Wert -84.7</title></circle>
|
||||
<circle cx="2077.9" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 186, Wert -84.7</title></circle>
|
||||
<circle cx="2109.0" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 187, Wert -84.7</title></circle>
|
||||
<circle cx="2140.0" cy="240.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 188, Wert -86.3</title></circle>
|
||||
<circle cx="60.0" cy="330.0" r="7" fill="#288c50" stroke="#c04040" stroke-width="2"><title>Id 189, Wert -78.7</title></circle>
|
||||
<circle cx="97.8" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 190, Wert -78.7</title></circle>
|
||||
<circle cx="135.6" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 191, Wert -78.7</title></circle>
|
||||
<circle cx="173.5" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 192, Wert -78.7</title></circle>
|
||||
<circle cx="211.3" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 193, Wert -78.7</title></circle>
|
||||
<circle cx="249.1" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 194, Wert -78.7</title></circle>
|
||||
<circle cx="286.9" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 195, Wert -78.7</title></circle>
|
||||
<circle cx="324.7" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 196, Wert -78.7</title></circle>
|
||||
<circle cx="362.5" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 197, Wert -78.7</title></circle>
|
||||
<circle cx="400.4" cy="330.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 198, Wert -80.7</title></circle>
|
||||
<circle cx="438.2" cy="330.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 199, Wert -80.7</title></circle>
|
||||
<circle cx="476.0" cy="330.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 200, Wert -80.7</title></circle>
|
||||
<circle cx="513.8" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 201, Wert -81.7</title></circle>
|
||||
<circle cx="551.6" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 202, Wert -81.7</title></circle>
|
||||
<circle cx="589.5" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 203, Wert -81.7</title></circle>
|
||||
<circle cx="627.3" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 204, Wert -81.7</title></circle>
|
||||
<circle cx="665.1" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 205, Wert -81.7</title></circle>
|
||||
<circle cx="702.9" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 206, Wert -81.7</title></circle>
|
||||
<circle cx="740.7" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 207, Wert -81.7</title></circle>
|
||||
<circle cx="778.5" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 208, Wert -81.7</title></circle>
|
||||
<circle cx="816.4" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 209, Wert -81.7</title></circle>
|
||||
<circle cx="854.2" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 210, Wert -81.7</title></circle>
|
||||
<circle cx="892.0" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 211, Wert -81.7</title></circle>
|
||||
<circle cx="929.8" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 212, Wert -81.7</title></circle>
|
||||
<circle cx="967.6" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 213, Wert -81.7</title></circle>
|
||||
<circle cx="1005.5" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 214, Wert -81.7</title></circle>
|
||||
<circle cx="1043.3" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 215, Wert -81.7</title></circle>
|
||||
<circle cx="1081.1" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 216, Wert -81.7</title></circle>
|
||||
<circle cx="1118.9" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 217, Wert -78.7</title></circle>
|
||||
<circle cx="1156.7" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 218, Wert -78.7</title></circle>
|
||||
<circle cx="1194.5" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 219, Wert -78.7</title></circle>
|
||||
<circle cx="1232.4" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 220, Wert -78.7</title></circle>
|
||||
<circle cx="1270.2" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 221, Wert -78.7</title></circle>
|
||||
<circle cx="1308.0" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 222, Wert -78.7</title></circle>
|
||||
<circle cx="1345.8" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 223, Wert -78.7</title></circle>
|
||||
<circle cx="1383.6" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 224, Wert -78.7</title></circle>
|
||||
<circle cx="1421.5" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 225, Wert -78.7</title></circle>
|
||||
<circle cx="1459.3" cy="330.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 226, Wert -80.7</title></circle>
|
||||
<circle cx="1497.1" cy="330.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 227, Wert -80.7</title></circle>
|
||||
<circle cx="1534.9" cy="330.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 228, Wert -80.7</title></circle>
|
||||
<circle cx="1572.7" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 229, Wert -81.7</title></circle>
|
||||
<circle cx="1610.5" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 230, Wert -81.7</title></circle>
|
||||
<circle cx="1648.4" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 231, Wert -81.7</title></circle>
|
||||
<circle cx="1686.2" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 232, Wert -81.7</title></circle>
|
||||
<circle cx="1724.0" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 233, Wert -81.7</title></circle>
|
||||
<circle cx="1761.8" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 234, Wert -81.7</title></circle>
|
||||
<circle cx="1799.6" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 235, Wert -81.7</title></circle>
|
||||
<circle cx="1837.5" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 236, Wert -81.7</title></circle>
|
||||
<circle cx="1875.3" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 237, Wert -81.7</title></circle>
|
||||
<circle cx="1913.1" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 238, Wert -81.7</title></circle>
|
||||
<circle cx="1950.9" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 239, Wert -81.7</title></circle>
|
||||
<circle cx="1988.7" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 240, Wert -81.7</title></circle>
|
||||
<circle cx="2026.5" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 241, Wert -81.7</title></circle>
|
||||
<circle cx="2064.4" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 242, Wert -81.7</title></circle>
|
||||
<circle cx="2102.2" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 243, Wert -81.7</title></circle>
|
||||
<circle cx="2140.0" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 244, Wert -81.7</title></circle>
|
||||
<text x="60.0" y="352.0" text-anchor="middle" font-size="12" font-weight="bold" fill="#c04040">189</text>
|
||||
<line x1="1955.7" y1="150.0" x2="60.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1766.7" y1="60.0" x2="91.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="966.7" y1="60.0" x2="122.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="507.6" y1="150.0" x2="153.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1560.8" y1="150.0" x2="184.2" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="112.7" y1="150.0" x2="215.2" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="139.0" y1="150.0" x2="246.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1323.8" y1="150.0" x2="277.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1508.1" y1="150.0" x2="308.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="486.7" y1="60.0" x2="339.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="860.0" y1="60.0" x2="370.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1126.7" y1="60.0" x2="401.5" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="86.3" y1="150.0" x2="432.5" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="349.6" y1="150.0" x2="463.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="612.9" y1="150.0" x2="494.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1192.2" y1="150.0" x2="525.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1244.8" y1="150.0" x2="556.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1402.8" y1="150.0" x2="587.8" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1771.4" y1="150.0" x2="618.8" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="113.3" y1="60.0" x2="649.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="913.3" y1="60.0" x2="680.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1553.3" y1="60.0" x2="711.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="533.9" y1="150.0" x2="743.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="902.5" y1="150.0" x2="774.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1666.1" y1="150.0" x2="805.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1745.1" y1="150.0" x2="836.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1876.7" y1="150.0" x2="867.2" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1086.8" y1="150.0" x2="898.2" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1534.4" y1="150.0" x2="929.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1606.7" y1="60.0" x2="960.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="428.6" y1="150.0" x2="991.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1020.0" y1="60.0" x2="1022.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="297.0" y1="150.0" x2="1053.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1350.1" y1="150.0" x2="1084.5" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1955.7" y1="150.0" x2="1115.5" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1766.7" y1="60.0" x2="1146.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="966.7" y1="60.0" x2="1177.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="507.6" y1="150.0" x2="1208.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1560.8" y1="150.0" x2="1239.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="112.7" y1="150.0" x2="1270.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="139.0" y1="150.0" x2="1301.8" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1323.8" y1="150.0" x2="1332.8" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1508.1" y1="150.0" x2="1363.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="486.7" y1="60.0" x2="1394.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="860.0" y1="60.0" x2="1426.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1126.7" y1="60.0" x2="1457.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="86.3" y1="150.0" x2="1488.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="349.6" y1="150.0" x2="1519.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="612.9" y1="150.0" x2="1550.1" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1192.2" y1="150.0" x2="1581.2" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1244.8" y1="150.0" x2="1612.2" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1402.8" y1="150.0" x2="1643.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1771.4" y1="150.0" x2="1674.3" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="113.3" y1="60.0" x2="1705.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="913.3" y1="60.0" x2="1736.4" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1553.3" y1="60.0" x2="1767.5" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="533.9" y1="150.0" x2="1798.5" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="902.5" y1="150.0" x2="1829.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1666.1" y1="150.0" x2="1860.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1745.1" y1="150.0" x2="1891.6" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1876.7" y1="150.0" x2="1922.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1086.8" y1="150.0" x2="1953.7" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1534.4" y1="150.0" x2="1984.8" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1606.7" y1="60.0" x2="2015.8" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="428.6" y1="150.0" x2="2046.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1020.0" y1="60.0" x2="2077.9" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="297.0" y1="150.0" x2="2109.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1350.1" y1="150.0" x2="2140.0" y2="240.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="774.0" y1="240.0" x2="60.0" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1955.7" y1="150.0" x2="97.8" y2="330.0" stroke="#c04040" stroke-width="2.5"/>
|
||||
<line x1="1766.7" y1="60.0" x2="135.6" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="60.0" y1="240.0" x2="173.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="91.0" y1="240.0" x2="211.3" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1146.6" y1="240.0" x2="249.1" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1239.7" y1="240.0" x2="286.9" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="966.7" y1="60.0" x2="324.7" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="960.3" y1="240.0" x2="362.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1177.6" y1="240.0" x2="400.4" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1674.3" y1="240.0" x2="438.2" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="507.6" y1="150.0" x2="476.0" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1560.8" y1="150.0" x2="513.8" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="618.8" y1="240.0" x2="551.6" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1270.7" y1="240.0" x2="589.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="112.7" y1="150.0" x2="627.3" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="246.3" y1="240.0" x2="665.1" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="867.2" y1="240.0" x2="702.9" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1922.7" y1="240.0" x2="740.7" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="139.0" y1="150.0" x2="778.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="277.3" y1="240.0" x2="816.4" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="370.4" y1="240.0" x2="854.2" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="401.5" y1="240.0" x2="892.0" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1426.0" y1="240.0" x2="929.8" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1457.0" y1="240.0" x2="967.6" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1323.8" y1="150.0" x2="1005.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1508.1" y1="150.0" x2="1043.3" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="486.7" y1="60.0" x2="1081.1" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="774.0" y1="240.0" x2="1118.9" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1955.7" y1="150.0" x2="1156.7" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1766.7" y1="60.0" x2="1194.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="60.0" y1="240.0" x2="1232.4" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="91.0" y1="240.0" x2="1270.2" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1146.6" y1="240.0" x2="1308.0" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1239.7" y1="240.0" x2="1345.8" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="966.7" y1="60.0" x2="1383.6" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="960.3" y1="240.0" x2="1421.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1177.6" y1="240.0" x2="1459.3" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1674.3" y1="240.0" x2="1497.1" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="507.6" y1="150.0" x2="1534.9" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1560.8" y1="150.0" x2="1572.7" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="618.8" y1="240.0" x2="1610.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1270.7" y1="240.0" x2="1648.4" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="112.7" y1="150.0" x2="1686.2" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="246.3" y1="240.0" x2="1724.0" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="867.2" y1="240.0" x2="1761.8" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1922.7" y1="240.0" x2="1799.6" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="139.0" y1="150.0" x2="1837.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="277.3" y1="240.0" x2="1875.3" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="370.4" y1="240.0" x2="1913.1" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="401.5" y1="240.0" x2="1950.9" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1426.0" y1="240.0" x2="1988.7" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1457.0" y1="240.0" x2="2026.5" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1323.8" y1="150.0" x2="2064.4" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="1508.1" y1="150.0" x2="2102.2" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<line x1="486.7" y1="60.0" x2="2140.0" y2="330.0" stroke="#bbb" stroke-width="1"/>
|
||||
<circle cx="60.0" cy="60.0" r="5" fill="#577147" stroke="#333" stroke-width="0.5"><title>Id 1, Wert -83.7</title></circle>
|
||||
<circle cx="113.3" cy="60.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 2, Wert -54.7</title></circle>
|
||||
<circle cx="166.7" cy="60.0" r="5" fill="#5b6f46" stroke="#333" stroke-width="0.5"><title>Id 3, Wert -86.3</title></circle>
|
||||
<circle cx="220.0" cy="60.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 4, Wert -57.7</title></circle>
|
||||
<circle cx="273.3" cy="60.0" r="5" fill="#36834d" stroke="#333" stroke-width="0.5"><title>Id 5, Wert -59.3</title></circle>
|
||||
<circle cx="326.7" cy="60.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 6, Wert -60.3</title></circle>
|
||||
<circle cx="380.0" cy="60.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 7, Wert -84.7</title></circle>
|
||||
<circle cx="433.3" cy="60.0" r="5" fill="#36834d" stroke="#333" stroke-width="0.5"><title>Id 8, Wert -59.3</title></circle>
|
||||
<circle cx="486.7" cy="60.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 9, Wert -53.7</title></circle>
|
||||
<circle cx="540.0" cy="60.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 10, Wert -57.7</title></circle>
|
||||
<circle cx="593.3" cy="60.0" r="5" fill="#3b804c" stroke="#333" stroke-width="0.5"><title>Id 11, Wert -63.3</title></circle>
|
||||
<circle cx="646.7" cy="60.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 12, Wert -84.7</title></circle>
|
||||
<circle cx="700.0" cy="60.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 13, Wert -57.7</title></circle>
|
||||
<circle cx="753.3" cy="60.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 14, Wert -84.7</title></circle>
|
||||
<circle cx="806.7" cy="60.0" r="5" fill="#3c804c" stroke="#333" stroke-width="0.5"><title>Id 15, Wert -64.0</title></circle>
|
||||
<circle cx="860.0" cy="60.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 16, Wert -53.7</title></circle>
|
||||
<circle cx="913.3" cy="60.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 17, Wert -54.7</title></circle>
|
||||
<circle cx="966.7" cy="60.0" r="5" fill="#2a8a4f" stroke="#333" stroke-width="0.5"><title>Id 18, Wert -50.7</title></circle>
|
||||
<circle cx="1020.0" cy="60.0" r="5" fill="#33854d" stroke="#333" stroke-width="0.5"><title>Id 19, Wert -57.0</title></circle>
|
||||
<circle cx="1073.3" cy="60.0" r="5" fill="#5f6c45" stroke="#333" stroke-width="0.5"><title>Id 20, Wert -89.3</title></circle>
|
||||
<circle cx="1126.7" cy="60.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 21, Wert -53.7</title></circle>
|
||||
<circle cx="1180.0" cy="60.0" r="5" fill="#537347" stroke="#333" stroke-width="0.5"><title>Id 22, Wert -80.7</title></circle>
|
||||
<circle cx="1233.3" cy="60.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 23, Wert -57.7</title></circle>
|
||||
<circle cx="1286.7" cy="60.0" r="5" fill="#36834d" stroke="#333" stroke-width="0.5"><title>Id 24, Wert -59.3</title></circle>
|
||||
<circle cx="1340.0" cy="60.0" r="5" fill="#3b804c" stroke="#333" stroke-width="0.5"><title>Id 25, Wert -63.3</title></circle>
|
||||
<circle cx="1393.3" cy="60.0" r="5" fill="#636a44" stroke="#333" stroke-width="0.5"><title>Id 26, Wert -92.7</title></circle>
|
||||
<circle cx="1446.7" cy="60.0" r="5" fill="#38824c" stroke="#333" stroke-width="0.5"><title>Id 27, Wert -60.9</title></circle>
|
||||
<circle cx="1500.0" cy="60.0" r="5" fill="#5d6e46" stroke="#333" stroke-width="0.5"><title>Id 28, Wert -87.7</title></circle>
|
||||
<circle cx="1553.3" cy="60.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 29, Wert -54.7</title></circle>
|
||||
<circle cx="1606.7" cy="60.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 30, Wert -56.3</title></circle>
|
||||
<circle cx="1660.0" cy="60.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 31, Wert -60.3</title></circle>
|
||||
<circle cx="1713.3" cy="60.0" r="5" fill="#686743" stroke="#333" stroke-width="0.5"><title>Id 32, Wert -95.7</title></circle>
|
||||
<circle cx="1766.7" cy="60.0" r="7" fill="#288c50" stroke="#c04040" stroke-width="2"><title>Id 33, Wert -48.7</title></circle>
|
||||
<circle cx="1820.0" cy="60.0" r="5" fill="#35844d" stroke="#333" stroke-width="0.5"><title>Id 34, Wert -58.7</title></circle>
|
||||
<circle cx="1873.3" cy="60.0" r="5" fill="#5a6f46" stroke="#333" stroke-width="0.5"><title>Id 35, Wert -85.9</title></circle>
|
||||
<circle cx="1926.7" cy="60.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 36, Wert -60.3</title></circle>
|
||||
<circle cx="1980.0" cy="60.0" r="5" fill="#447b4a" stroke="#333" stroke-width="0.5"><title>Id 37, Wert -69.7</title></circle>
|
||||
<circle cx="2033.3" cy="60.0" r="5" fill="#8e523c" stroke="#333" stroke-width="0.5"><title>Id 38, Wert -123.6</title></circle>
|
||||
<circle cx="2086.7" cy="60.0" r="5" fill="#89553d" stroke="#333" stroke-width="0.5"><title>Id 39, Wert -120.3</title></circle>
|
||||
<circle cx="2140.0" cy="60.0" r="5" fill="#36834d" stroke="#333" stroke-width="0.5"><title>Id 40, Wert -59.3</title></circle>
|
||||
<circle cx="60.0" cy="150.0" r="5" fill="#577147" stroke="#333" stroke-width="0.5"><title>Id 41, Wert -83.7</title></circle>
|
||||
<circle cx="86.3" cy="150.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 42, Wert -54.7</title></circle>
|
||||
<circle cx="112.7" cy="150.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 43, Wert -52.0</title></circle>
|
||||
<circle cx="139.0" cy="150.0" r="5" fill="#2d884e" stroke="#333" stroke-width="0.5"><title>Id 44, Wert -53.0</title></circle>
|
||||
<circle cx="165.3" cy="150.0" r="5" fill="#39824c" stroke="#333" stroke-width="0.5"><title>Id 45, Wert -61.7</title></circle>
|
||||
<circle cx="191.6" cy="150.0" r="5" fill="#427c4a" stroke="#333" stroke-width="0.5"><title>Id 46, Wert -68.3</title></circle>
|
||||
<circle cx="218.0" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 47, Wert -60.0</title></circle>
|
||||
<circle cx="244.3" cy="150.0" r="5" fill="#547247" stroke="#333" stroke-width="0.5"><title>Id 48, Wert -81.7</title></circle>
|
||||
<circle cx="270.6" cy="150.0" r="5" fill="#36834d" stroke="#333" stroke-width="0.5"><title>Id 49, Wert -59.7</title></circle>
|
||||
<circle cx="297.0" cy="150.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 50, Wert -57.7</title></circle>
|
||||
<circle cx="323.3" cy="150.0" r="5" fill="#6e6442" stroke="#333" stroke-width="0.5"><title>Id 51, Wert -100.6</title></circle>
|
||||
<circle cx="349.6" cy="150.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 52, Wert -54.7</title></circle>
|
||||
<circle cx="375.9" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 53, Wert -60.0</title></circle>
|
||||
<circle cx="402.3" cy="150.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 54, Wert -84.7</title></circle>
|
||||
<circle cx="428.6" cy="150.0" r="5" fill="#33854d" stroke="#333" stroke-width="0.5"><title>Id 55, Wert -57.0</title></circle>
|
||||
<circle cx="454.9" cy="150.0" r="5" fill="#36834d" stroke="#333" stroke-width="0.5"><title>Id 56, Wert -59.7</title></circle>
|
||||
<circle cx="481.3" cy="150.0" r="5" fill="#3b814c" stroke="#333" stroke-width="0.5"><title>Id 57, Wert -62.7</title></circle>
|
||||
<circle cx="507.6" cy="150.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 58, Wert -51.7</title></circle>
|
||||
<circle cx="533.9" cy="150.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 59, Wert -55.0</title></circle>
|
||||
<circle cx="560.3" cy="150.0" r="5" fill="#805a3f" stroke="#333" stroke-width="0.5"><title>Id 60, Wert -113.4</title></circle>
|
||||
<circle cx="586.6" cy="150.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 61, Wert -85.0</title></circle>
|
||||
<circle cx="612.9" cy="150.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 62, Wert -54.7</title></circle>
|
||||
<circle cx="639.2" cy="150.0" r="5" fill="#5d6d45" stroke="#333" stroke-width="0.5"><title>Id 63, Wert -88.0</title></circle>
|
||||
<circle cx="665.6" cy="150.0" r="5" fill="#5f6c45" stroke="#333" stroke-width="0.5"><title>Id 64, Wert -89.3</title></circle>
|
||||
<circle cx="691.9" cy="150.0" r="5" fill="#676844" stroke="#333" stroke-width="0.5"><title>Id 65, Wert -94.9</title></circle>
|
||||
<circle cx="718.2" cy="150.0" r="5" fill="#636a44" stroke="#333" stroke-width="0.5"><title>Id 66, Wert -92.6</title></circle>
|
||||
<circle cx="744.6" cy="150.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 67, Wert -84.7</title></circle>
|
||||
<circle cx="770.9" cy="150.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 68, Wert -84.7</title></circle>
|
||||
<circle cx="797.2" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 69, Wert -60.0</title></circle>
|
||||
<circle cx="823.5" cy="150.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 70, Wert -84.7</title></circle>
|
||||
<circle cx="849.9" cy="150.0" r="5" fill="#3b804c" stroke="#333" stroke-width="0.5"><title>Id 71, Wert -63.3</title></circle>
|
||||
<circle cx="876.2" cy="150.0" r="5" fill="#686743" stroke="#333" stroke-width="0.5"><title>Id 72, Wert -95.7</title></circle>
|
||||
<circle cx="902.5" cy="150.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 73, Wert -55.0</title></circle>
|
||||
<circle cx="928.9" cy="150.0" r="5" fill="#3b814c" stroke="#333" stroke-width="0.5"><title>Id 74, Wert -62.7</title></circle>
|
||||
<circle cx="955.2" cy="150.0" r="5" fill="#3f7f4b" stroke="#333" stroke-width="0.5"><title>Id 75, Wert -65.6</title></circle>
|
||||
<circle cx="981.5" cy="150.0" r="5" fill="#5e6d45" stroke="#333" stroke-width="0.5"><title>Id 76, Wert -89.0</title></circle>
|
||||
<circle cx="1007.8" cy="150.0" r="5" fill="#8d523c" stroke="#333" stroke-width="0.5"><title>Id 77, Wert -123.3</title></circle>
|
||||
<circle cx="1034.2" cy="150.0" r="5" fill="#6d6442" stroke="#333" stroke-width="0.5"><title>Id 78, Wert -99.6</title></circle>
|
||||
<circle cx="1060.5" cy="150.0" r="5" fill="#4a7849" stroke="#333" stroke-width="0.5"><title>Id 79, Wert -74.3</title></circle>
|
||||
<circle cx="1086.8" cy="150.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 80, Wert -56.3</title></circle>
|
||||
<circle cx="1113.2" cy="150.0" r="5" fill="#36844d" stroke="#333" stroke-width="0.5"><title>Id 81, Wert -59.0</title></circle>
|
||||
<circle cx="1139.5" cy="150.0" r="5" fill="#36834d" stroke="#333" stroke-width="0.5"><title>Id 82, Wert -59.7</title></circle>
|
||||
<circle cx="1165.8" cy="150.0" r="5" fill="#36844d" stroke="#333" stroke-width="0.5"><title>Id 83, Wert -59.0</title></circle>
|
||||
<circle cx="1192.2" cy="150.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 84, Wert -54.7</title></circle>
|
||||
<circle cx="1218.5" cy="150.0" r="5" fill="#9c4a3a" stroke="#333" stroke-width="0.5"><title>Id 85, Wert -134.0</title></circle>
|
||||
<circle cx="1244.8" cy="150.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 86, Wert -54.7</title></circle>
|
||||
<circle cx="1271.1" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 87, Wert -60.0</title></circle>
|
||||
<circle cx="1297.5" cy="150.0" r="5" fill="#547247" stroke="#333" stroke-width="0.5"><title>Id 88, Wert -81.7</title></circle>
|
||||
<circle cx="1323.8" cy="150.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 89, Wert -53.7</title></circle>
|
||||
<circle cx="1350.1" cy="150.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 90, Wert -57.7</title></circle>
|
||||
<circle cx="1376.5" cy="150.0" r="5" fill="#4c7749" stroke="#333" stroke-width="0.5"><title>Id 91, Wert -75.5</title></circle>
|
||||
<circle cx="1402.8" cy="150.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 92, Wert -54.7</title></circle>
|
||||
<circle cx="1429.1" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 93, Wert -60.0</title></circle>
|
||||
<circle cx="1455.4" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 94, Wert -60.0</title></circle>
|
||||
<circle cx="1481.8" cy="150.0" r="5" fill="#6a6643" stroke="#333" stroke-width="0.5"><title>Id 95, Wert -97.6</title></circle>
|
||||
<circle cx="1508.1" cy="150.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 96, Wert -53.7</title></circle>
|
||||
<circle cx="1534.4" cy="150.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 97, Wert -56.3</title></circle>
|
||||
<circle cx="1560.8" cy="150.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 98, Wert -51.7</title></circle>
|
||||
<circle cx="1587.1" cy="150.0" r="5" fill="#417d4b" stroke="#333" stroke-width="0.5"><title>Id 99, Wert -67.3</title></circle>
|
||||
<circle cx="1613.4" cy="150.0" r="5" fill="#3e7f4b" stroke="#333" stroke-width="0.5"><title>Id 100, Wert -65.0</title></circle>
|
||||
<circle cx="1639.7" cy="150.0" r="5" fill="#36844d" stroke="#333" stroke-width="0.5"><title>Id 101, Wert -59.0</title></circle>
|
||||
<circle cx="1666.1" cy="150.0" r="5" fill="#31864e" stroke="#333" stroke-width="0.5"><title>Id 102, Wert -55.3</title></circle>
|
||||
<circle cx="1692.4" cy="150.0" r="5" fill="#3b814c" stroke="#333" stroke-width="0.5"><title>Id 103, Wert -62.7</title></circle>
|
||||
<circle cx="1718.7" cy="150.0" r="5" fill="#36844d" stroke="#333" stroke-width="0.5"><title>Id 104, Wert -59.0</title></circle>
|
||||
<circle cx="1745.1" cy="150.0" r="5" fill="#31864e" stroke="#333" stroke-width="0.5"><title>Id 105, Wert -56.0</title></circle>
|
||||
<circle cx="1771.4" cy="150.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 106, Wert -54.7</title></circle>
|
||||
<circle cx="1797.7" cy="150.0" r="5" fill="#9c4a3a" stroke="#333" stroke-width="0.5"><title>Id 107, Wert -134.1</title></circle>
|
||||
<circle cx="1824.1" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 108, Wert -60.0</title></circle>
|
||||
<circle cx="1850.4" cy="150.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 109, Wert -60.0</title></circle>
|
||||
<circle cx="1876.7" cy="150.0" r="5" fill="#31864e" stroke="#333" stroke-width="0.5"><title>Id 110, Wert -56.0</title></circle>
|
||||
<circle cx="1903.0" cy="150.0" r="5" fill="#437c4a" stroke="#333" stroke-width="0.5"><title>Id 111, Wert -68.9</title></circle>
|
||||
<circle cx="1929.4" cy="150.0" r="5" fill="#477a4a" stroke="#333" stroke-width="0.5"><title>Id 112, Wert -72.0</title></circle>
|
||||
<circle cx="1955.7" cy="150.0" r="7" fill="#288c50" stroke="#c04040" stroke-width="2"><title>Id 113, Wert -48.7</title></circle>
|
||||
<circle cx="1982.0" cy="150.0" r="5" fill="#5f6c45" stroke="#333" stroke-width="0.5"><title>Id 114, Wert -89.7</title></circle>
|
||||
<circle cx="2008.4" cy="150.0" r="5" fill="#9d4939" stroke="#333" stroke-width="0.5"><title>Id 115, Wert -135.3</title></circle>
|
||||
<circle cx="2034.7" cy="150.0" r="5" fill="#c83232" stroke="#333" stroke-width="0.5"><title>Id 116, Wert -166.1</title></circle>
|
||||
<circle cx="2061.0" cy="150.0" r="5" fill="#8d523c" stroke="#333" stroke-width="0.5"><title>Id 117, Wert -123.3</title></circle>
|
||||
<circle cx="2087.3" cy="150.0" r="5" fill="#6a6643" stroke="#333" stroke-width="0.5"><title>Id 118, Wert -97.6</title></circle>
|
||||
<circle cx="2113.7" cy="150.0" r="5" fill="#666944" stroke="#333" stroke-width="0.5"><title>Id 119, Wert -94.3</title></circle>
|
||||
<circle cx="2140.0" cy="150.0" r="5" fill="#5e6d45" stroke="#333" stroke-width="0.5"><title>Id 120, Wert -88.3</title></circle>
|
||||
<circle cx="60.0" cy="240.0" r="5" fill="#298a4f" stroke="#333" stroke-width="0.5"><title>Id 121, Wert -50.0</title></circle>
|
||||
<circle cx="91.0" cy="240.0" r="5" fill="#298a4f" stroke="#333" stroke-width="0.5"><title>Id 122, Wert -50.0</title></circle>
|
||||
<circle cx="122.1" cy="240.0" r="5" fill="#35844d" stroke="#333" stroke-width="0.5"><title>Id 123, Wert -58.7</title></circle>
|
||||
<circle cx="153.1" cy="240.0" r="5" fill="#587046" stroke="#333" stroke-width="0.5"><title>Id 124, Wert -84.3</title></circle>
|
||||
<circle cx="184.2" cy="240.0" r="5" fill="#35844d" stroke="#333" stroke-width="0.5"><title>Id 125, Wert -58.7</title></circle>
|
||||
<circle cx="215.2" cy="240.0" r="5" fill="#36844d" stroke="#333" stroke-width="0.5"><title>Id 126, Wert -59.0</title></circle>
|
||||
<circle cx="246.3" cy="240.0" r="5" fill="#2d884e" stroke="#333" stroke-width="0.5"><title>Id 127, Wert -53.0</title></circle>
|
||||
<circle cx="277.3" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 128, Wert -53.7</title></circle>
|
||||
<circle cx="308.4" cy="240.0" r="5" fill="#567147" stroke="#333" stroke-width="0.5"><title>Id 129, Wert -83.0</title></circle>
|
||||
<circle cx="339.4" cy="240.0" r="5" fill="#567147" stroke="#333" stroke-width="0.5"><title>Id 130, Wert -83.0</title></circle>
|
||||
<circle cx="370.4" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 131, Wert -53.7</title></circle>
|
||||
<circle cx="401.5" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 132, Wert -53.7</title></circle>
|
||||
<circle cx="432.5" cy="240.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 133, Wert -85.0</title></circle>
|
||||
<circle cx="463.6" cy="240.0" r="5" fill="#33854d" stroke="#333" stroke-width="0.5"><title>Id 134, Wert -57.0</title></circle>
|
||||
<circle cx="494.6" cy="240.0" r="5" fill="#31864e" stroke="#333" stroke-width="0.5"><title>Id 135, Wert -55.3</title></circle>
|
||||
<circle cx="525.7" cy="240.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 136, Wert -84.7</title></circle>
|
||||
<circle cx="556.7" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 137, Wert -54.7</title></circle>
|
||||
<circle cx="587.8" cy="240.0" r="5" fill="#527347" stroke="#333" stroke-width="0.5"><title>Id 138, Wert -80.0</title></circle>
|
||||
<circle cx="618.8" cy="240.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 139, Wert -52.0</title></circle>
|
||||
<circle cx="649.9" cy="240.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 140, Wert -60.0</title></circle>
|
||||
<circle cx="680.9" cy="240.0" r="5" fill="#32864e" stroke="#333" stroke-width="0.5"><title>Id 141, Wert -56.3</title></circle>
|
||||
<circle cx="711.9" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 142, Wert -54.7</title></circle>
|
||||
<circle cx="743.0" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 143, Wert -55.0</title></circle>
|
||||
<circle cx="774.0" cy="240.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 144, Wert -48.7</title></circle>
|
||||
<circle cx="805.1" cy="240.0" r="5" fill="#537347" stroke="#333" stroke-width="0.5"><title>Id 145, Wert -80.7</title></circle>
|
||||
<circle cx="836.1" cy="240.0" r="5" fill="#31864e" stroke="#333" stroke-width="0.5"><title>Id 146, Wert -56.0</title></circle>
|
||||
<circle cx="867.2" cy="240.0" r="5" fill="#2d884e" stroke="#333" stroke-width="0.5"><title>Id 147, Wert -53.0</title></circle>
|
||||
<circle cx="898.2" cy="240.0" r="5" fill="#35844d" stroke="#333" stroke-width="0.5"><title>Id 148, Wert -58.3</title></circle>
|
||||
<circle cx="929.3" cy="240.0" r="5" fill="#5e6d45" stroke="#333" stroke-width="0.5"><title>Id 149, Wert -88.3</title></circle>
|
||||
<circle cx="960.3" cy="240.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 150, Wert -51.7</title></circle>
|
||||
<circle cx="991.3" cy="240.0" r="5" fill="#527347" stroke="#333" stroke-width="0.5"><title>Id 151, Wert -80.0</title></circle>
|
||||
<circle cx="1022.4" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 152, Wert -55.0</title></circle>
|
||||
<circle cx="1053.4" cy="240.0" r="5" fill="#3e7f4b" stroke="#333" stroke-width="0.5"><title>Id 153, Wert -65.0</title></circle>
|
||||
<circle cx="1084.5" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 154, Wert -57.7</title></circle>
|
||||
<circle cx="1115.5" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 155, Wert -55.0</title></circle>
|
||||
<circle cx="1146.6" cy="240.0" r="5" fill="#298a4f" stroke="#333" stroke-width="0.5"><title>Id 156, Wert -50.0</title></circle>
|
||||
<circle cx="1177.6" cy="240.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 157, Wert -51.7</title></circle>
|
||||
<circle cx="1208.7" cy="240.0" r="5" fill="#587046" stroke="#333" stroke-width="0.5"><title>Id 158, Wert -84.3</title></circle>
|
||||
<circle cx="1239.7" cy="240.0" r="5" fill="#2a8a4f" stroke="#333" stroke-width="0.5"><title>Id 159, Wert -50.7</title></circle>
|
||||
<circle cx="1270.7" cy="240.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 160, Wert -52.0</title></circle>
|
||||
<circle cx="1301.8" cy="240.0" r="5" fill="#527347" stroke="#333" stroke-width="0.5"><title>Id 161, Wert -80.0</title></circle>
|
||||
<circle cx="1332.8" cy="240.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 162, Wert -84.7</title></circle>
|
||||
<circle cx="1363.9" cy="240.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 163, Wert -84.7</title></circle>
|
||||
<circle cx="1394.9" cy="240.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 164, Wert -84.7</title></circle>
|
||||
<circle cx="1426.0" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 165, Wert -53.7</title></circle>
|
||||
<circle cx="1457.0" cy="240.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 166, Wert -53.7</title></circle>
|
||||
<circle cx="1488.1" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 167, Wert -54.7</title></circle>
|
||||
<circle cx="1519.1" cy="240.0" r="5" fill="#527347" stroke="#333" stroke-width="0.5"><title>Id 168, Wert -80.0</title></circle>
|
||||
<circle cx="1550.1" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 169, Wert -54.7</title></circle>
|
||||
<circle cx="1581.2" cy="240.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 170, Wert -84.7</title></circle>
|
||||
<circle cx="1612.2" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 171, Wert -54.7</title></circle>
|
||||
<circle cx="1643.3" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 172, Wert -54.7</title></circle>
|
||||
<circle cx="1674.3" cy="240.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 173, Wert -51.7</title></circle>
|
||||
<circle cx="1705.4" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 174, Wert -54.7</title></circle>
|
||||
<circle cx="1736.4" cy="240.0" r="5" fill="#36834d" stroke="#333" stroke-width="0.5"><title>Id 175, Wert -59.7</title></circle>
|
||||
<circle cx="1767.5" cy="240.0" r="5" fill="#37834d" stroke="#333" stroke-width="0.5"><title>Id 176, Wert -60.0</title></circle>
|
||||
<circle cx="1798.5" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 177, Wert -55.0</title></circle>
|
||||
<circle cx="1829.6" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 178, Wert -55.0</title></circle>
|
||||
<circle cx="1860.6" cy="240.0" r="5" fill="#31864e" stroke="#333" stroke-width="0.5"><title>Id 179, Wert -55.3</title></circle>
|
||||
<circle cx="1891.6" cy="240.0" r="5" fill="#31864e" stroke="#333" stroke-width="0.5"><title>Id 180, Wert -56.0</title></circle>
|
||||
<circle cx="1922.7" cy="240.0" r="5" fill="#2d884e" stroke="#333" stroke-width="0.5"><title>Id 181, Wert -53.0</title></circle>
|
||||
<circle cx="1953.7" cy="240.0" r="5" fill="#5c6e46" stroke="#333" stroke-width="0.5"><title>Id 182, Wert -87.3</title></circle>
|
||||
<circle cx="1984.8" cy="240.0" r="5" fill="#3b814c" stroke="#333" stroke-width="0.5"><title>Id 183, Wert -62.7</title></circle>
|
||||
<circle cx="2015.8" cy="240.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 184, Wert -54.7</title></circle>
|
||||
<circle cx="2046.9" cy="240.0" r="5" fill="#33854d" stroke="#333" stroke-width="0.5"><title>Id 185, Wert -57.0</title></circle>
|
||||
<circle cx="2077.9" cy="240.0" r="5" fill="#88553d" stroke="#333" stroke-width="0.5"><title>Id 186, Wert -119.7</title></circle>
|
||||
<circle cx="2109.0" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 187, Wert -57.7</title></circle>
|
||||
<circle cx="2140.0" cy="240.0" r="5" fill="#34854d" stroke="#333" stroke-width="0.5"><title>Id 188, Wert -57.7</title></circle>
|
||||
<circle cx="60.0" cy="330.0" r="5" fill="#517448" stroke="#333" stroke-width="0.5"><title>Id 189, Wert -79.0</title></circle>
|
||||
<circle cx="97.8" cy="330.0" r="7" fill="#288c50" stroke="#c04040" stroke-width="2"><title>Id 190, Wert -48.7</title></circle>
|
||||
<circle cx="135.6" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 191, Wert -48.7</title></circle>
|
||||
<circle cx="173.5" cy="330.0" r="5" fill="#517448" stroke="#333" stroke-width="0.5"><title>Id 192, Wert -79.0</title></circle>
|
||||
<circle cx="211.3" cy="330.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 193, Wert -55.0</title></circle>
|
||||
<circle cx="249.1" cy="330.0" r="5" fill="#298a4f" stroke="#333" stroke-width="0.5"><title>Id 194, Wert -50.0</title></circle>
|
||||
<circle cx="286.9" cy="330.0" r="5" fill="#2a8a4f" stroke="#333" stroke-width="0.5"><title>Id 195, Wert -50.7</title></circle>
|
||||
<circle cx="324.7" cy="330.0" r="5" fill="#2a8a4f" stroke="#333" stroke-width="0.5"><title>Id 196, Wert -50.7</title></circle>
|
||||
<circle cx="362.5" cy="330.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 197, Wert -51.7</title></circle>
|
||||
<circle cx="400.4" cy="330.0" r="5" fill="#35844d" stroke="#333" stroke-width="0.5"><title>Id 198, Wert -58.7</title></circle>
|
||||
<circle cx="438.2" cy="330.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 199, Wert -52.0</title></circle>
|
||||
<circle cx="476.0" cy="330.0" r="5" fill="#2a8a4f" stroke="#333" stroke-width="0.5"><title>Id 200, Wert -50.7</title></circle>
|
||||
<circle cx="513.8" cy="330.0" r="5" fill="#587046" stroke="#333" stroke-width="0.5"><title>Id 201, Wert -84.3</title></circle>
|
||||
<circle cx="551.6" cy="330.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 202, Wert -52.0</title></circle>
|
||||
<circle cx="589.5" cy="330.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 203, Wert -52.0</title></circle>
|
||||
<circle cx="627.3" cy="330.0" r="5" fill="#38824c" stroke="#333" stroke-width="0.5"><title>Id 204, Wert -60.7</title></circle>
|
||||
<circle cx="665.1" cy="330.0" r="5" fill="#2d884e" stroke="#333" stroke-width="0.5"><title>Id 205, Wert -53.0</title></circle>
|
||||
<circle cx="702.9" cy="330.0" r="5" fill="#527347" stroke="#333" stroke-width="0.5"><title>Id 206, Wert -80.0</title></circle>
|
||||
<circle cx="740.7" cy="330.0" r="5" fill="#2d884e" stroke="#333" stroke-width="0.5"><title>Id 207, Wert -53.0</title></circle>
|
||||
<circle cx="778.5" cy="330.0" r="5" fill="#33854d" stroke="#333" stroke-width="0.5"><title>Id 208, Wert -57.0</title></circle>
|
||||
<circle cx="816.4" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 209, Wert -53.7</title></circle>
|
||||
<circle cx="854.2" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 210, Wert -53.7</title></circle>
|
||||
<circle cx="892.0" cy="330.0" r="5" fill="#38824c" stroke="#333" stroke-width="0.5"><title>Id 211, Wert -60.7</title></circle>
|
||||
<circle cx="929.8" cy="330.0" r="5" fill="#567147" stroke="#333" stroke-width="0.5"><title>Id 212, Wert -83.0</title></circle>
|
||||
<circle cx="967.6" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 213, Wert -53.7</title></circle>
|
||||
<circle cx="1005.5" cy="330.0" r="5" fill="#567147" stroke="#333" stroke-width="0.5"><title>Id 214, Wert -83.0</title></circle>
|
||||
<circle cx="1043.3" cy="330.0" r="5" fill="#36834d" stroke="#333" stroke-width="0.5"><title>Id 215, Wert -59.7</title></circle>
|
||||
<circle cx="1081.1" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 216, Wert -53.7</title></circle>
|
||||
<circle cx="1118.9" cy="330.0" r="5" fill="#517448" stroke="#333" stroke-width="0.5"><title>Id 217, Wert -79.0</title></circle>
|
||||
<circle cx="1156.7" cy="330.0" r="5" fill="#517448" stroke="#333" stroke-width="0.5"><title>Id 218, Wert -79.0</title></circle>
|
||||
<circle cx="1194.5" cy="330.0" r="5" fill="#298a4f" stroke="#333" stroke-width="0.5"><title>Id 219, Wert -50.0</title></circle>
|
||||
<circle cx="1232.4" cy="330.0" r="5" fill="#298a4f" stroke="#333" stroke-width="0.5"><title>Id 220, Wert -50.0</title></circle>
|
||||
<circle cx="1270.2" cy="330.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 221, Wert -55.0</title></circle>
|
||||
<circle cx="1308.0" cy="330.0" r="5" fill="#30874e" stroke="#333" stroke-width="0.5"><title>Id 222, Wert -55.0</title></circle>
|
||||
<circle cx="1345.8" cy="330.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 223, Wert -51.7</title></circle>
|
||||
<circle cx="1383.6" cy="330.0" r="5" fill="#587046" stroke="#333" stroke-width="0.5"><title>Id 224, Wert -84.3</title></circle>
|
||||
<circle cx="1421.5" cy="330.0" r="5" fill="#597046" stroke="#333" stroke-width="0.5"><title>Id 225, Wert -84.7</title></circle>
|
||||
<circle cx="1459.3" cy="330.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 226, Wert -51.7</title></circle>
|
||||
<circle cx="1497.1" cy="330.0" r="5" fill="#2c894f" stroke="#333" stroke-width="0.5"><title>Id 227, Wert -52.0</title></circle>
|
||||
<circle cx="1534.9" cy="330.0" r="5" fill="#35844d" stroke="#333" stroke-width="0.5"><title>Id 228, Wert -58.7</title></circle>
|
||||
<circle cx="1572.7" cy="330.0" r="5" fill="#2a8a4f" stroke="#333" stroke-width="0.5"><title>Id 229, Wert -50.7</title></circle>
|
||||
<circle cx="1610.5" cy="330.0" r="5" fill="#577147" stroke="#333" stroke-width="0.5"><title>Id 230, Wert -83.7</title></circle>
|
||||
<circle cx="1648.4" cy="330.0" r="5" fill="#38824c" stroke="#333" stroke-width="0.5"><title>Id 231, Wert -60.7</title></circle>
|
||||
<circle cx="1686.2" cy="330.0" r="5" fill="#36844d" stroke="#333" stroke-width="0.5"><title>Id 232, Wert -59.0</title></circle>
|
||||
<circle cx="1724.0" cy="330.0" r="5" fill="#2d884e" stroke="#333" stroke-width="0.5"><title>Id 233, Wert -53.0</title></circle>
|
||||
<circle cx="1761.8" cy="330.0" r="5" fill="#288c50" stroke="#333" stroke-width="0.5"><title>Id 234, Wert -48.7</title></circle>
|
||||
<circle cx="1799.6" cy="330.0" r="5" fill="#31864e" stroke="#333" stroke-width="0.5"><title>Id 235, Wert -56.0</title></circle>
|
||||
<circle cx="1837.5" cy="330.0" r="5" fill="#33854d" stroke="#333" stroke-width="0.5"><title>Id 236, Wert -57.0</title></circle>
|
||||
<circle cx="1875.3" cy="330.0" r="5" fill="#567147" stroke="#333" stroke-width="0.5"><title>Id 237, Wert -83.0</title></circle>
|
||||
<circle cx="1913.1" cy="330.0" r="5" fill="#36834d" stroke="#333" stroke-width="0.5"><title>Id 238, Wert -59.7</title></circle>
|
||||
<circle cx="1950.9" cy="330.0" r="5" fill="#2e884e" stroke="#333" stroke-width="0.5"><title>Id 239, Wert -53.7</title></circle>
|
||||
<circle cx="1988.7" cy="330.0" r="5" fill="#567147" stroke="#333" stroke-width="0.5"><title>Id 240, Wert -83.0</title></circle>
|
||||
<circle cx="2026.5" cy="330.0" r="5" fill="#36844d" stroke="#333" stroke-width="0.5"><title>Id 241, Wert -59.0</title></circle>
|
||||
<circle cx="2064.4" cy="330.0" r="5" fill="#36834d" stroke="#333" stroke-width="0.5"><title>Id 242, Wert -59.7</title></circle>
|
||||
<circle cx="2102.2" cy="330.0" r="5" fill="#36834d" stroke="#333" stroke-width="0.5"><title>Id 243, Wert -59.7</title></circle>
|
||||
<circle cx="2140.0" cy="330.0" r="5" fill="#36834d" stroke="#333" stroke-width="0.5"><title>Id 244, Wert -59.7</title></circle>
|
||||
<text x="97.8" y="352.0" text-anchor="middle" font-size="12" font-weight="bold" fill="#c04040">190</text>
|
||||
<text x="48" y="64.0" text-anchor="end" font-size="11" fill="#666">Gen 0</text>
|
||||
<text x="48" y="154.0" text-anchor="end" font-size="11" fill="#666">Gen 1</text>
|
||||
<text x="48" y="244.0" text-anchor="end" font-size="11" fill="#666">Gen 2</text>
|
||||
|
||||
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
@@ -5,21 +5,21 @@
|
||||
<line x1="60" y1="60" x2="60" y2="390.0" stroke="#333" stroke-width="1.5"/>
|
||||
<line x1="60" y1="390.0" x2="840" y2="390.0" stroke="#333" stroke-width="1.5"/>
|
||||
<line x1="60" y1="390.0" x2="840" y2="390.0" stroke="#eee" stroke-width="1"/>
|
||||
<text x="52" y="394.0" text-anchor="end" font-size="11" fill="#666">-157</text>
|
||||
<text x="52" y="394.0" text-anchor="end" font-size="11" fill="#666">-166</text>
|
||||
<line x1="60" y1="324.0" x2="840" y2="324.0" stroke="#eee" stroke-width="1"/>
|
||||
<text x="52" y="328.0" text-anchor="end" font-size="11" fill="#666">-142</text>
|
||||
<text x="52" y="328.0" text-anchor="end" font-size="11" fill="#666">-143</text>
|
||||
<line x1="60" y1="258.0" x2="840" y2="258.0" stroke="#eee" stroke-width="1"/>
|
||||
<text x="52" y="262.0" text-anchor="end" font-size="11" fill="#666">-126</text>
|
||||
<text x="52" y="262.0" text-anchor="end" font-size="11" fill="#666">-119</text>
|
||||
<line x1="60" y1="192.0" x2="840" y2="192.0" stroke="#eee" stroke-width="1"/>
|
||||
<text x="52" y="196.0" text-anchor="end" font-size="11" fill="#666">-110</text>
|
||||
<text x="52" y="196.0" text-anchor="end" font-size="11" fill="#666">-96</text>
|
||||
<line x1="60" y1="126.0" x2="840" y2="126.0" stroke="#eee" stroke-width="1"/>
|
||||
<text x="52" y="130.0" text-anchor="end" font-size="11" fill="#666">-94</text>
|
||||
<text x="52" y="130.0" text-anchor="end" font-size="11" fill="#666">-72</text>
|
||||
<line x1="60" y1="60.0" x2="840" y2="60.0" stroke="#eee" stroke-width="1"/>
|
||||
<text x="52" y="64.0" text-anchor="end" font-size="11" fill="#666">-79</text>
|
||||
<text x="52" y="64.0" text-anchor="end" font-size="11" fill="#666">-49</text>
|
||||
<text x="18" y="225.0" text-anchor="middle" font-size="12" fill="#333" transform="rotate(-90 18 225.0)">Wertigkeit (hoeher = besser)</text>
|
||||
<polyline points="60.0,60.0 146.7,60.0 233.3,60.0 320.0,60.0 406.7,60.0 493.3,60.0 580.0,60.0 666.7,60.0 753.3,60.0 840.0,60.0" fill="none" stroke="#2f6f4f" stroke-width="2"/>
|
||||
<polyline points="60.0,153.6 146.7,113.8 233.3,127.1 320.0,79.6 406.7,78.9 493.3,79.1 580.0,68.1 666.7,68.1 753.3,68.1 840.0,60.0" fill="none" stroke="#c08a2d" stroke-width="2"/>
|
||||
<polyline points="60.0,250.0 146.7,390.0 233.3,390.0 320.0,92.1 406.7,92.1 493.3,92.1 580.0,72.6 666.7,72.6 753.3,72.6 840.0,60.0" fill="none" stroke="#a03030" stroke-width="2"/>
|
||||
<polyline points="60.0,117.6 146.7,130.2 233.3,126.0 320.0,75.9 406.7,100.7 493.3,92.4 580.0,69.1 666.7,94.1 753.3,85.7 840.0,64.3" fill="none" stroke="#c08a2d" stroke-width="2"/>
|
||||
<polyline points="60.0,270.5 146.7,390.0 233.3,390.0 320.0,85.3 406.7,259.4 493.3,259.4 580.0,74.0 666.7,161.1 753.3,161.1 840.0,68.4" fill="none" stroke="#a03030" stroke-width="2"/>
|
||||
<line x1="680" y1="70" x2="704" y2="70" stroke="#2f6f4f" stroke-width="2"/>
|
||||
<text x="710" y="74" font-size="11" fill="#333">beste Loesung</text>
|
||||
<line x1="680" y1="88" x2="704" y2="88" stroke="#c08a2d" stroke-width="2"/>
|
||||
|
||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
@@ -1,120 +1,120 @@
|
||||
Aksoy, Rainer, = Hof 1, Tisch 14, Nummer 7
|
||||
Aksoy, Renate, = Hof 1, Tisch 14, Nummer 5
|
||||
Aydin, Horst, = Hof 1, Tisch 2, Nummer 6
|
||||
Aydin, Ursula, = Hof 1, Tisch 2, Nummer 4
|
||||
Barth, Hannelore, = Hof 1, Tisch 9, Nummer 9
|
||||
Berger, Sergej, = Hof 1, Tisch 1, Nummer 12
|
||||
Brandt, Andreas, = Hof 1, Tisch 15, Nummer 4
|
||||
Brandt, Anja, = Hof 1, Tisch 13, Nummer 2
|
||||
Brandt, Anton, = Hof 1, Tisch 16, Nummer 2
|
||||
Brandt, Ben, = Hof 1, Tisch 17, Nummer 6
|
||||
Brandt, Daniel, = Hof 1, Tisch 12, Nummer 9
|
||||
Brandt, Felix, = Hof 1, Tisch 16, Nummer 11
|
||||
Brandt, Frieda, = Hof 1, Tisch 16, Nummer 13
|
||||
Brandt, Greta, = Hof 1, Tisch 16, Nummer 14
|
||||
Brandt, Helga, = Hof 1, Tisch 1, Nummer 7
|
||||
Brandt, Julia, = Hof 1, Tisch 1, Nummer 9
|
||||
Brandt, Kathrin, = Hof 1, Tisch 12, Nummer 4
|
||||
Brandt, Lena, = Hof 1, Tisch 15, Nummer 5
|
||||
Brandt, Milan, = Hof 1, Tisch 13, Nummer 9
|
||||
Brandt, Paul, = Hof 1, Tisch 17, Nummer 4
|
||||
Brandt, Sofia, = Hof 1, Tisch 13, Nummer 4
|
||||
Brandt, Theo, = Hof 1, Tisch 15, Nummer 6
|
||||
Brandt, Werner, = Hof 1, Tisch 1, Nummer 13
|
||||
Busch, Stefanie, = Hof 1, Tisch 1, Nummer 3
|
||||
Demir, Elif, = Hof 1, Tisch 10, Nummer 9
|
||||
Demir, Hannelore, = Hof 1, Tisch 3, Nummer 8
|
||||
Demir, Ingrid, = Hof 1, Tisch 3, Nummer 2
|
||||
Demir, Monika, = Hof 1, Tisch 3, Nummer 4
|
||||
Dietrich, Jennifer, = Hof 1, Tisch 13, Nummer 5
|
||||
Aksoy, Rainer, = Hof 1, Tisch 1, Nummer 13
|
||||
Aksoy, Renate, = Hof 1, Tisch 1, Nummer 10
|
||||
Aydin, Horst, = Hof 1, Tisch 15, Nummer 4
|
||||
Aydin, Ursula, = Hof 1, Tisch 15, Nummer 5
|
||||
Barth, Hannelore, = Hof 1, Tisch 9, Nummer 3
|
||||
Berger, Sergej, = Hof 1, Tisch 8, Nummer 3
|
||||
Brandt, Andreas, = Hof 1, Tisch 14, Nummer 2
|
||||
Brandt, Anja, = Hof 1, Tisch 14, Nummer 6
|
||||
Brandt, Anton, = Hof 1, Tisch 16, Nummer 9
|
||||
Brandt, Ben, = Hof 1, Tisch 17, Nummer 2
|
||||
Brandt, Daniel, = Hof 1, Tisch 11, Nummer 8
|
||||
Brandt, Felix, = Hof 1, Tisch 16, Nummer 7
|
||||
Brandt, Frieda, = Hof 1, Tisch 16, Nummer 10
|
||||
Brandt, Greta, = Hof 1, Tisch 16, Nummer 12
|
||||
Brandt, Helga, = Hof 1, Tisch 1, Nummer 5
|
||||
Brandt, Julia, = Hof 1, Tisch 1, Nummer 2
|
||||
Brandt, Kathrin, = Hof 1, Tisch 11, Nummer 9
|
||||
Brandt, Lena, = Hof 1, Tisch 14, Nummer 3
|
||||
Brandt, Milan, = Hof 1, Tisch 14, Nummer 5
|
||||
Brandt, Paul, = Hof 1, Tisch 17, Nummer 3
|
||||
Brandt, Sofia, = Hof 1, Tisch 14, Nummer 7
|
||||
Brandt, Theo, = Hof 1, Tisch 14, Nummer 4
|
||||
Brandt, Werner, = Hof 1, Tisch 1, Nummer 4
|
||||
Busch, Stefanie, = Hof 1, Tisch 8, Nummer 7
|
||||
Demir, Elif, = Hof 1, Tisch 10, Nummer 2
|
||||
Demir, Hannelore, = Hof 1, Tisch 13, Nummer 4
|
||||
Demir, Ingrid, = Hof 1, Tisch 13, Nummer 2
|
||||
Demir, Monika, = Hof 1, Tisch 13, Nummer 3
|
||||
Dietrich, Jennifer, = Hof 1, Tisch 2, Nummer 5
|
||||
Dietrich, Nicole, = Hof 1, Tisch 12, Nummer 7
|
||||
Erdem, Erika, = Hof 1, Tisch 2, Nummer 9
|
||||
Erdem, Gerhard, = Hof 1, Tisch 9, Nummer 7
|
||||
Erdem, Rainer, = Hof 1, Tisch 9, Nummer 8
|
||||
Esposito, Christian, = Hof 1, Tisch 12, Nummer 6
|
||||
Esposito, Gisela, = Hof 1, Tisch 9, Nummer 5
|
||||
Esposito, Julia, = Hof 1, Tisch 1, Nummer 4
|
||||
Fischer, Heinz, = Hof 1, Tisch 6, Nummer 3
|
||||
Fischer, Helga, = Hof 1, Tisch 6, Nummer 2
|
||||
Fischer, Nicole, = Hof 1, Tisch 12, Nummer 3
|
||||
Fischer, Sven, = Hof 1, Tisch 10, Nummer 3
|
||||
Frank, Erika, = Hof 1, Tisch 9, Nummer 3
|
||||
Frank, Nadine, = Hof 1, Tisch 11, Nummer 8
|
||||
Frank, Timo, = Hof 1, Tisch 10, Nummer 8
|
||||
Frank, Tobias, = Hof 1, Tisch 1, Nummer 5
|
||||
Franke, Brigitte, = Hof 1, Tisch 9, Nummer 4
|
||||
Hansen, Olga, = Hof 1, Tisch 11, Nummer 2
|
||||
Hansen, Wolfgang, = Hof 1, Tisch 9, Nummer 6
|
||||
Hoffmann, Lena, = Hof 1, Tisch 12, Nummer 2
|
||||
Horn, Daniel, = Hof 1, Tisch 11, Nummer 5
|
||||
Horn, Svenja, = Hof 1, Tisch 13, Nummer 3
|
||||
Klein, Stefan, = Hof 1, Tisch 10, Nummer 7
|
||||
Koch, Andreas, = Hof 1, Tisch 3, Nummer 7
|
||||
Koch, Giovanna, = Hof 1, Tisch 3, Nummer 9
|
||||
Kovac, Giovanna, = Hof 1, Tisch 1, Nummer 8
|
||||
Kraus, Dennis, = Hof 1, Tisch 14, Nummer 9
|
||||
Kraus, Matteo, = Hof 1, Tisch 16, Nummer 9
|
||||
Kraus, Melanie, = Hof 1, Tisch 14, Nummer 6
|
||||
Kuhn, Leni, = Hof 1, Tisch 16, Nummer 3
|
||||
Kuhn, Sarah, = Hof 1, Tisch 15, Nummer 8
|
||||
Kuhn, Stefan, = Hof 1, Tisch 13, Nummer 8
|
||||
Kuhn, Timo, = Hof 1, Tisch 15, Nummer 3
|
||||
Erdem, Erika, = Hof 1, Tisch 15, Nummer 7
|
||||
Erdem, Gerhard, = Hof 1, Tisch 9, Nummer 5
|
||||
Erdem, Rainer, = Hof 1, Tisch 9, Nummer 6
|
||||
Esposito, Christian, = Hof 1, Tisch 12, Nummer 4
|
||||
Esposito, Gisela, = Hof 1, Tisch 9, Nummer 7
|
||||
Esposito, Julia, = Hof 1, Tisch 2, Nummer 4
|
||||
Fischer, Heinz, = Hof 1, Tisch 3, Nummer 3
|
||||
Fischer, Helga, = Hof 1, Tisch 3, Nummer 2
|
||||
Fischer, Nicole, = Hof 1, Tisch 12, Nummer 2
|
||||
Fischer, Sven, = Hof 1, Tisch 4, Nummer 9
|
||||
Frank, Erika, = Hof 1, Tisch 9, Nummer 4
|
||||
Frank, Nadine, = Hof 1, Tisch 11, Nummer 2
|
||||
Frank, Timo, = Hof 1, Tisch 10, Nummer 6
|
||||
Frank, Tobias, = Hof 1, Tisch 1, Nummer 9
|
||||
Franke, Brigitte, = Hof 1, Tisch 9, Nummer 8
|
||||
Hansen, Olga, = Hof 1, Tisch 11, Nummer 5
|
||||
Hansen, Wolfgang, = Hof 1, Tisch 9, Nummer 2
|
||||
Hoffmann, Lena, = Hof 1, Tisch 12, Nummer 5
|
||||
Horn, Daniel, = Hof 1, Tisch 11, Nummer 6
|
||||
Horn, Svenja, = Hof 1, Tisch 2, Nummer 7
|
||||
Klein, Stefan, = Hof 1, Tisch 10, Nummer 5
|
||||
Koch, Andreas, = Hof 1, Tisch 8, Nummer 8
|
||||
Koch, Giovanna, = Hof 1, Tisch 2, Nummer 3
|
||||
Kovac, Giovanna, = Hof 1, Tisch 8, Nummer 4
|
||||
Kraus, Dennis, = Hof 1, Tisch 12, Nummer 8
|
||||
Kraus, Matteo, = Hof 1, Tisch 16, Nummer 8
|
||||
Kraus, Melanie, = Hof 1, Tisch 12, Nummer 9
|
||||
Kuhn, Leni, = Hof 1, Tisch 16, Nummer 2
|
||||
Kuhn, Sarah, = Hof 1, Tisch 14, Nummer 9
|
||||
Kuhn, Stefan, = Hof 1, Tisch 2, Nummer 9
|
||||
Kuhn, Timo, = Hof 1, Tisch 14, Nummer 8
|
||||
Lange, Milan, = Hof 1, Tisch 11, Nummer 7
|
||||
Meyer, Anton, = Hof 1, Tisch 17, Nummer 5
|
||||
Meyer, Christian, = Hof 1, Tisch 13, Nummer 6
|
||||
Meyer, Ida, = Hof 1, Tisch 17, Nummer 3
|
||||
Meyer, Marco, = Hof 1, Tisch 14, Nummer 8
|
||||
Meyer, Mila, = Hof 1, Tisch 16, Nummer 8
|
||||
Meyer, Sandra, = Hof 1, Tisch 14, Nummer 4
|
||||
Meyer, Wolfgang, = Hof 1, Tisch 9, Nummer 2
|
||||
Meyer, Anton, = Hof 1, Tisch 17, Nummer 4
|
||||
Meyer, Christian, = Hof 1, Tisch 2, Nummer 6
|
||||
Meyer, Ida, = Hof 1, Tisch 17, Nummer 5
|
||||
Meyer, Marco, = Hof 1, Tisch 5, Nummer 8
|
||||
Meyer, Mila, = Hof 1, Tisch 16, Nummer 11
|
||||
Meyer, Sandra, = Hof 1, Tisch 5, Nummer 9
|
||||
Meyer, Wolfgang, = Hof 1, Tisch 9, Nummer 9
|
||||
Musikverein, Gast, = Hof 1, Tisch 4, Nummer 2
|
||||
Musikverein, Gast, = Hof 1, Tisch 4, Nummer 3
|
||||
Musikverein, Gast, = Hof 1, Tisch 4, Nummer 4
|
||||
Musikverein, Gast, = Hof 1, Tisch 4, Nummer 5
|
||||
Musikverein, Gast, = Hof 1, Tisch 4, Nummer 6
|
||||
Musikverein, Gast, = Hof 1, Tisch 4, Nummer 7
|
||||
Musikverein, Gast, = Hof 1, Tisch 4, Nummer 8
|
||||
Musikverein, Gast, = Hof 1, Tisch 4, Nummer 9
|
||||
Musikverein, Gast, = Hof 1, Tisch 5, Nummer 2
|
||||
Musikverein, Gast, = Hof 1, Tisch 5, Nummer 3
|
||||
Musikverein, Gast, = Hof 1, Tisch 5, Nummer 4
|
||||
Musikverein, Gast, = Hof 1, Tisch 5, Nummer 5
|
||||
Musikverein, Gast, = Hof 1, Tisch 5, Nummer 6
|
||||
Musikverein, Gast, = Hof 1, Tisch 5, Nummer 7
|
||||
Musikverein, Gast, = Hof 1, Tisch 5, Nummer 8
|
||||
Musikverein, Gast, = Hof 1, Tisch 5, Nummer 9
|
||||
Peters, Melanie, = Hof 1, Tisch 11, Nummer 9
|
||||
Peters, Yusuf, = Hof 1, Tisch 11, Nummer 3
|
||||
Polat, Matthias, = Hof 1, Tisch 12, Nummer 8
|
||||
Roth, Stefanie, = Hof 1, Tisch 13, Nummer 7
|
||||
Schmidt, Dennis, = Hof 1, Tisch 3, Nummer 3
|
||||
Schmitt, Markus, = Hof 1, Tisch 11, Nummer 6
|
||||
Schwarz, Elias, = Hof 1, Tisch 16, Nummer 10
|
||||
Schwarz, Guenter, = Hof 1, Tisch 14, Nummer 3
|
||||
Schwarz, Liam, = Hof 1, Tisch 16, Nummer 12
|
||||
Schwarz, Sarah, = Hof 1, Tisch 2, Nummer 5
|
||||
Schwarz, Yusuf, = Hof 1, Tisch 2, Nummer 2
|
||||
Simon, Jennifer, = Hof 1, Tisch 10, Nummer 5
|
||||
Simon, Patrick, = Hof 1, Tisch 3, Nummer 5
|
||||
Simon, Stefanie, = Hof 1, Tisch 10, Nummer 6
|
||||
Sommer, Daniel, = Hof 1, Tisch 1, Nummer 10
|
||||
Sommer, Dennis, = Hof 1, Tisch 2, Nummer 8
|
||||
Sommer, Dennis, = Hof 1, Tisch 4, Nummer 4
|
||||
Peters, Melanie, = Hof 1, Tisch 8, Nummer 9
|
||||
Peters, Yusuf, = Hof 1, Tisch 8, Nummer 2
|
||||
Polat, Matthias, = Hof 1, Tisch 12, Nummer 3
|
||||
Roth, Stefanie, = Hof 1, Tisch 2, Nummer 8
|
||||
Schmidt, Dennis, = Hof 1, Tisch 8, Nummer 5
|
||||
Schmitt, Markus, = Hof 1, Tisch 11, Nummer 3
|
||||
Schwarz, Elias, = Hof 1, Tisch 16, Nummer 6
|
||||
Schwarz, Guenter, = Hof 1, Tisch 1, Nummer 12
|
||||
Schwarz, Liam, = Hof 1, Tisch 16, Nummer 5
|
||||
Schwarz, Sarah, = Hof 1, Tisch 15, Nummer 3
|
||||
Schwarz, Yusuf, = Hof 1, Tisch 15, Nummer 2
|
||||
Simon, Jennifer, = Hof 1, Tisch 10, Nummer 3
|
||||
Simon, Patrick, = Hof 1, Tisch 8, Nummer 6
|
||||
Simon, Stefanie, = Hof 1, Tisch 10, Nummer 8
|
||||
Sommer, Daniel, = Hof 1, Tisch 1, Nummer 3
|
||||
Sommer, Dennis, = Hof 1, Tisch 13, Nummer 7
|
||||
Sommer, Dennis, = Hof 1, Tisch 15, Nummer 8
|
||||
Sommer, Dieter, = Hof 1, Tisch 1, Nummer 6
|
||||
Sommer, Emil, = Hof 1, Tisch 16, Nummer 4
|
||||
Sommer, Ida, = Hof 1, Tisch 16, Nummer 5
|
||||
Sommer, Jennifer, = Hof 1, Tisch 2, Nummer 3
|
||||
Sommer, Lina, = Hof 1, Tisch 4, Nummer 5
|
||||
Sommer, Max, = Hof 1, Tisch 16, Nummer 6
|
||||
Sommer, Nicole, = Hof 1, Tisch 4, Nummer 2
|
||||
Sommer, Renate, = Hof 1, Tisch 1, Nummer 2
|
||||
Sommer, Theo, = Hof 1, Tisch 16, Nummer 7
|
||||
Sommer, Emil, = Hof 1, Tisch 16, Nummer 3
|
||||
Sommer, Ida, = Hof 1, Tisch 16, Nummer 4
|
||||
Sommer, Jennifer, = Hof 1, Tisch 15, Nummer 9
|
||||
Sommer, Lina, = Hof 1, Tisch 13, Nummer 9
|
||||
Sommer, Max, = Hof 1, Tisch 16, Nummer 14
|
||||
Sommer, Nicole, = Hof 1, Tisch 13, Nummer 8
|
||||
Sommer, Renate, = Hof 1, Tisch 1, Nummer 7
|
||||
Sommer, Theo, = Hof 1, Tisch 16, Nummer 13
|
||||
Stein, Andreas, = Hof 1, Tisch 10, Nummer 4
|
||||
Stein, Werner, = Hof 1, Tisch 14, Nummer 2
|
||||
Tran, Heinz, = Hof 1, Tisch 2, Nummer 7
|
||||
Vogel, Anton, = Hof 1, Tisch 17, Nummer 7
|
||||
Vogel, Max, = Hof 1, Tisch 17, Nummer 2
|
||||
Vogel, Sandra, = Hof 1, Tisch 15, Nummer 7
|
||||
Vogel, Svenja, = Hof 1, Tisch 3, Nummer 6
|
||||
Vogel, Yusuf, = Hof 1, Tisch 15, Nummer 2
|
||||
Wagner, Daniel, = Hof 1, Tisch 10, Nummer 2
|
||||
Wagner, Timo, = Hof 1, Tisch 12, Nummer 5
|
||||
Winkler, Sarah, = Hof 1, Tisch 1, Nummer 11
|
||||
Stein, Werner, = Hof 1, Tisch 1, Nummer 11
|
||||
Tran, Heinz, = Hof 1, Tisch 15, Nummer 6
|
||||
Vogel, Anton, = Hof 1, Tisch 17, Nummer 6
|
||||
Vogel, Max, = Hof 1, Tisch 17, Nummer 7
|
||||
Vogel, Sandra, = Hof 1, Tisch 13, Nummer 6
|
||||
Vogel, Svenja, = Hof 1, Tisch 2, Nummer 2
|
||||
Vogel, Yusuf, = Hof 1, Tisch 13, Nummer 5
|
||||
Wagner, Daniel, = Hof 1, Tisch 10, Nummer 7
|
||||
Wagner, Timo, = Hof 1, Tisch 12, Nummer 6
|
||||
Winkler, Sarah, = Hof 1, Tisch 1, Nummer 8
|
||||
Yilmaz, Olga, = Hof 1, Tisch 11, Nummer 4
|
||||
|
||||
|
@@ -1,177 +1,194 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="995.887" height="667.258" viewBox="0 0 995.887 667.258">
|
||||
<rect width="100%" height="100%" fill="white"/>
|
||||
<polyline points="251.472,258.37 422.161,76.1153" fill="none" stroke="#469990" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="404.01,253.492 580.101,251.472" fill="none" stroke="#9a6324" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="239.695,263.249 374.577,76.1153" fill="none" stroke="#bfef45" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="419.271,254.956 589.915,255.537" fill="none" stroke="#fabed4" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<circle cx="87.1573" cy="415.786" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="87.1573" cy="415.786" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="87.1573" y="415.786" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">7</text>
|
||||
<circle cx="251.472" cy="415.786" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="251.472" cy="415.786" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="251.472" y="415.786" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">8</text>
|
||||
<circle cx="744.415" cy="251.472" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="744.415" cy="216.979" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="744.415" cy="285.965" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="744.415" cy="251.472" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="744.415" y="251.472" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">6</text>
|
||||
<circle cx="908.73" cy="415.786" r="48.4" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="908.73" cy="389.386" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="931.593" cy="402.586" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="931.593" cy="428.986" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="908.73" cy="442.186" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="885.867" cy="428.986" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="885.867" cy="402.586" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="908.73" cy="415.786" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="908.73" y="415.786" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">17</text>
|
||||
<circle cx="580.101" cy="580.101" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="580.101" cy="545.608" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="607.069" cy="558.595" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="613.729" cy="587.776" r="12" fill="#f58231" stroke="black" stroke-width="1"/>
|
||||
<circle cx="595.067" cy="611.178" r="12" fill="#f58231" stroke="black" stroke-width="1"/>
|
||||
<circle cx="565.135" cy="611.178" r="12" fill="#f58231" stroke="black" stroke-width="1"/>
|
||||
<circle cx="546.472" cy="587.776" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="553.133" cy="558.595" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="580.101" cy="580.101" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="580.101" y="580.101" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">15</text>
|
||||
<circle cx="87.1573" cy="251.472" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="87.1573" cy="216.979" r="12" fill="#911eb4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="111.548" cy="227.081" r="12" fill="#42d4f4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="121.651" cy="251.472" r="12" fill="#f032e6" stroke="black" stroke-width="1"/>
|
||||
<circle cx="111.548" cy="275.862" r="12" fill="#911eb4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="87.1573" cy="285.965" r="12" fill="#f032e6" stroke="black" stroke-width="1"/>
|
||||
<circle cx="62.7669" cy="275.862" r="12" fill="#bfef45" stroke="black" stroke-width="1"/>
|
||||
<circle cx="52.664" cy="251.472" r="12" fill="#42d4f4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="62.7669" cy="227.081" r="12" fill="#bfef45" stroke="black" stroke-width="1"/>
|
||||
<circle cx="87.1573" cy="251.472" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="87.1573" y="251.472" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">2</text>
|
||||
<circle cx="251.472" cy="251.472" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="251.472" cy="216.979" r="12" fill="#fabed4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="275.862" cy="227.081" r="12" fill="#469990" stroke="black" stroke-width="1"/>
|
||||
<circle cx="285.965" cy="251.472" r="12" fill="#fabed4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="275.862" cy="275.862" r="12" fill="#469990" stroke="black" stroke-width="1"/>
|
||||
<circle cx="251.472" cy="285.965" r="12" fill="#469990" stroke="black" stroke-width="1"/>
|
||||
<circle cx="227.081" cy="275.862" r="12" fill="#469990" stroke="black" stroke-width="1"/>
|
||||
<circle cx="216.979" cy="251.472" r="12" fill="#fabed4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="227.081" cy="227.081" r="12" fill="#469990" stroke="black" stroke-width="1"/>
|
||||
<circle cx="251.472" cy="251.472" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="251.472" y="251.472" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">3</text>
|
||||
<circle cx="415.786" cy="251.472" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="415.786" cy="216.979" r="12" fill="#dcbeff" stroke="black" stroke-width="1"/>
|
||||
<circle cx="440.177" cy="227.081" r="12" fill="#9a6324" stroke="black" stroke-width="1"/>
|
||||
<circle cx="450.28" cy="251.472" r="12" fill="#dcbeff" stroke="black" stroke-width="1"/>
|
||||
<circle cx="440.177" cy="275.862" r="12" fill="#dcbeff" stroke="black" stroke-width="1"/>
|
||||
<circle cx="415.786" cy="285.965" r="12" fill="#9a6324" stroke="black" stroke-width="1"/>
|
||||
<circle cx="391.396" cy="275.862" r="12" fill="#9a6324" stroke="black" stroke-width="1"/>
|
||||
<circle cx="381.293" cy="251.472" r="12" fill="#9a6324" stroke="black" stroke-width="1"/>
|
||||
<circle cx="391.396" cy="227.081" r="12" fill="#9a6324" stroke="black" stroke-width="1"/>
|
||||
<circle cx="415.786" cy="251.472" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="415.786" y="251.472" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">4</text>
|
||||
<circle cx="580.101" cy="251.472" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="580.101" cy="216.979" r="12" fill="#9a6324" stroke="black" stroke-width="1"/>
|
||||
<circle cx="604.491" cy="227.081" r="12" fill="#9a6324" stroke="black" stroke-width="1"/>
|
||||
<circle cx="614.594" cy="251.472" r="12" fill="#9a6324" stroke="black" stroke-width="1"/>
|
||||
<circle cx="604.491" cy="275.862" r="12" fill="#9a6324" stroke="black" stroke-width="1"/>
|
||||
<circle cx="580.101" cy="285.965" r="12" fill="#9a6324" stroke="black" stroke-width="1"/>
|
||||
<circle cx="555.711" cy="275.862" r="12" fill="#9a6324" stroke="black" stroke-width="1"/>
|
||||
<circle cx="545.608" cy="251.472" r="12" fill="#9a6324" stroke="black" stroke-width="1"/>
|
||||
<circle cx="555.711" cy="227.081" r="12" fill="#9a6324" stroke="black" stroke-width="1"/>
|
||||
<circle cx="580.101" cy="251.472" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="580.101" y="251.472" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">5</text>
|
||||
<ellipse cx="87.1573" cy="415.786" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="87.1573" y="410.986" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">7</text>
|
||||
<text x="87.1573" y="424.186" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="415.786" cy="415.786" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="415.786" cy="381.293" r="12" fill="#800000" stroke="black" stroke-width="1"/>
|
||||
<circle cx="440.177" cy="391.396" r="12" fill="#800000" stroke="black" stroke-width="1"/>
|
||||
<circle cx="450.28" cy="415.786" r="12" fill="#800000" stroke="black" stroke-width="1"/>
|
||||
<circle cx="440.177" cy="440.177" r="12" fill="#800000" stroke="black" stroke-width="1"/>
|
||||
<circle cx="415.786" cy="450.28" r="12" fill="#800000" stroke="black" stroke-width="1"/>
|
||||
<circle cx="391.396" cy="440.177" r="12" fill="#800000" stroke="black" stroke-width="1"/>
|
||||
<circle cx="381.293" cy="415.786" r="12" fill="#800000" stroke="black" stroke-width="1"/>
|
||||
<circle cx="391.396" cy="391.396" r="12" fill="#800000" stroke="black" stroke-width="1"/>
|
||||
<circle cx="415.786" cy="415.786" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="415.786" y="415.786" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">9</text>
|
||||
<ellipse cx="415.786" cy="415.786" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="415.786" y="410.986" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">9</text>
|
||||
<text x="415.786" y="424.186" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="744.415" cy="251.472" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle class="person" data-gid="12" data-gruppe="Onkel und Tante (Braut-Seite)" data-name="Horst Aydin" cx="744.415" cy="216.979" r="12" fill="#e6194b" stroke="black" stroke-width="1"><title>Horst Aydin — Onkel und Tante (Braut-Seite)</title></circle>
|
||||
<circle class="person" data-gid="12" data-gruppe="Onkel und Tante (Braut-Seite)" data-name="Ursula Aydin" cx="744.415" cy="285.965" r="12" fill="#e6194b" stroke="black" stroke-width="1"><title>Ursula Aydin — Onkel und Tante (Braut-Seite)</title></circle>
|
||||
<ellipse cx="744.415" cy="251.472" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="744.415" y="246.672" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">6</text>
|
||||
<text x="744.415" y="259.872" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="908.73" cy="415.786" r="48.4" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Ben Brandt" cx="908.73" cy="389.386" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Ben Brandt — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Paul Brandt" cx="931.593" cy="402.586" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Paul Brandt — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Anton Meyer" cx="931.593" cy="428.986" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Anton Meyer — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Ida Meyer" cx="908.73" cy="442.186" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Ida Meyer — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Anton Vogel" cx="885.867" cy="428.986" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Anton Vogel — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Max Vogel" cx="885.867" cy="402.586" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Max Vogel — VIP / feste Platzierung</title></circle>
|
||||
<ellipse cx="908.73" cy="415.786" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="908.73" y="410.986" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">17</text>
|
||||
<text x="908.73" y="424.186" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">6 Pl.</text>
|
||||
<circle cx="580.101" cy="415.786" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="580.101" cy="381.293" r="12" fill="#aaffc3" stroke="black" stroke-width="1"/>
|
||||
<circle cx="604.491" cy="391.396" r="12" fill="#000075" stroke="black" stroke-width="1"/>
|
||||
<circle cx="614.594" cy="415.786" r="12" fill="#aaffc3" stroke="black" stroke-width="1"/>
|
||||
<circle cx="604.491" cy="440.177" r="12" fill="#aaffc3" stroke="black" stroke-width="1"/>
|
||||
<circle cx="580.101" cy="450.28" r="12" fill="#aaffc3" stroke="black" stroke-width="1"/>
|
||||
<circle cx="555.711" cy="440.177" r="12" fill="#aaffc3" stroke="black" stroke-width="1"/>
|
||||
<circle cx="545.608" cy="415.786" r="12" fill="#aaffc3" stroke="black" stroke-width="1"/>
|
||||
<circle cx="555.711" cy="391.396" r="12" fill="#aaffc3" stroke="black" stroke-width="1"/>
|
||||
<circle cx="580.101" cy="415.786" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="580.101" y="415.786" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">10</text>
|
||||
<circle class="person" data-gid="18" data-gruppe="Arbeitskolleginnen der Braut" data-name="Elif Demir" cx="580.101" cy="381.293" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Elif Demir — Arbeitskolleginnen der Braut</title></circle>
|
||||
<circle class="person" data-gid="18" data-gruppe="Arbeitskolleginnen der Braut" data-name="Jennifer Simon" cx="607.069" cy="394.28" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Jennifer Simon — Arbeitskolleginnen der Braut</title></circle>
|
||||
<circle class="person" data-gid="18" data-gruppe="Arbeitskolleginnen der Braut" data-name="Andreas Stein" cx="613.729" cy="423.462" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Andreas Stein — Arbeitskolleginnen der Braut</title></circle>
|
||||
<circle class="person" data-gid="18" data-gruppe="Arbeitskolleginnen der Braut" data-name="Stefan Klein" cx="595.067" cy="446.864" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Stefan Klein — Arbeitskolleginnen der Braut</title></circle>
|
||||
<circle class="person" data-gid="18" data-gruppe="Arbeitskolleginnen der Braut" data-name="Timo Frank" cx="565.135" cy="446.864" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Timo Frank — Arbeitskolleginnen der Braut</title></circle>
|
||||
<circle class="person" data-gid="18" data-gruppe="Arbeitskolleginnen der Braut" data-name="Daniel Wagner" cx="546.472" cy="423.462" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Daniel Wagner — Arbeitskolleginnen der Braut</title></circle>
|
||||
<circle class="person" data-gid="18" data-gruppe="Arbeitskolleginnen der Braut" data-name="Stefanie Simon" cx="553.133" cy="394.28" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Stefanie Simon — Arbeitskolleginnen der Braut</title></circle>
|
||||
<ellipse cx="580.101" cy="415.786" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="580.101" y="410.986" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">10</text>
|
||||
<text x="580.101" y="424.186" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="87.1573" cy="251.472" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle class="person" data-gid="11" data-gruppe="Familie Schwarz (Braeutigam-Seite, Geschwister Sarah): Liam (8 J.) am Kindertisch; Elias (8 J.) am Kindertisch" data-name="Yusuf Schwarz" cx="87.1573" cy="216.979" r="12" fill="#4363d8" stroke="black" stroke-width="1"><title>Yusuf Schwarz — Familie Schwarz (Braeutigam-Seite, Geschwister Sarah): Liam (8 J.) am Kindertisch; Elias (8 J.) am Kindertisch</title></circle>
|
||||
<circle class="person" data-gid="11" data-gruppe="Familie Schwarz (Braeutigam-Seite, Geschwister Sarah): Liam (8 J.) am Kindertisch; Elias (8 J.) am Kindertisch" data-name="Sarah Schwarz" cx="111.548" cy="227.081" r="12" fill="#4363d8" stroke="black" stroke-width="1"><title>Sarah Schwarz — Familie Schwarz (Braeutigam-Seite, Geschwister Sarah): Liam (8 J.) am Kindertisch; Elias (8 J.) am Kindertisch</title></circle>
|
||||
<circle class="person" data-gid="14" data-gruppe="Onkel und Tante (Braeutigam-Seite)" data-name="Heinz Fischer" cx="121.651" cy="251.472" r="12" fill="#f58231" stroke="black" stroke-width="1"><title>Heinz Fischer — Onkel und Tante (Braeutigam-Seite)</title></circle>
|
||||
<circle class="person" data-gid="14" data-gruppe="Onkel und Tante (Braeutigam-Seite)" data-name="Helga Fischer" cx="111.548" cy="275.862" r="12" fill="#f58231" stroke="black" stroke-width="1"><title>Helga Fischer — Onkel und Tante (Braeutigam-Seite)</title></circle>
|
||||
<circle class="person" data-gid="15" data-gruppe="Grosstante mit Begleitung" data-name="Heinz Tran" cx="87.1573" cy="285.965" r="12" fill="#911eb4" stroke="black" stroke-width="1"><title>Heinz Tran — Grosstante mit Begleitung</title></circle>
|
||||
<circle class="person" data-gid="15" data-gruppe="Grosstante mit Begleitung" data-name="Erika Erdem" cx="62.7669" cy="275.862" r="12" fill="#911eb4" stroke="black" stroke-width="1"><title>Erika Erdem — Grosstante mit Begleitung</title></circle>
|
||||
<circle class="person" data-gid="10" data-gruppe="Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Emil (8 J.) am Kindertisch; Ida (8 J.) am Kindertisch" data-name="Dennis Sommer" cx="52.664" cy="251.472" r="12" fill="#42d4f4" stroke="black" stroke-width="1"><title>Dennis Sommer — Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Emil (8 J.) am Kindertisch; Ida (8 J.) am Kindertisch</title></circle>
|
||||
<circle class="person" data-gid="10" data-gruppe="Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Emil (8 J.) am Kindertisch; Ida (8 J.) am Kindertisch" data-name="Jennifer Sommer" cx="62.7669" cy="227.081" r="12" fill="#42d4f4" stroke="black" stroke-width="1"><title>Jennifer Sommer — Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Emil (8 J.) am Kindertisch; Ida (8 J.) am Kindertisch</title></circle>
|
||||
<ellipse cx="87.1573" cy="251.472" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="87.1573" y="246.672" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">2</text>
|
||||
<text x="87.1573" y="259.872" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="251.472" cy="251.472" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle class="person" data-gid="13" data-gruppe="Onkel und Tante mit Cousine (Braut-Seite)" data-name="Ingrid Demir" cx="251.472" cy="216.979" r="12" fill="#f032e6" stroke="black" stroke-width="1"><title>Ingrid Demir — Onkel und Tante mit Cousine (Braut-Seite)</title></circle>
|
||||
<circle class="person" data-gid="13" data-gruppe="Onkel und Tante mit Cousine (Braut-Seite)" data-name="Monika Demir" cx="275.862" cy="227.081" r="12" fill="#f032e6" stroke="black" stroke-width="1"><title>Monika Demir — Onkel und Tante mit Cousine (Braut-Seite)</title></circle>
|
||||
<circle class="person" data-gid="13" data-gruppe="Onkel und Tante mit Cousine (Braut-Seite)" data-name="Hannelore Demir" cx="285.965" cy="251.472" r="12" fill="#f032e6" stroke="black" stroke-width="1"><title>Hannelore Demir — Onkel und Tante mit Cousine (Braut-Seite)</title></circle>
|
||||
<circle class="person" data-gid="21" data-gruppe="Fussballverein des Braeutigams" data-name="Svenja Vogel" cx="275.862" cy="275.862" r="12" fill="#bfef45" stroke="black" stroke-width="1"><title>Svenja Vogel — Fussballverein des Braeutigams</title></circle>
|
||||
<circle class="person" data-gid="21" data-gruppe="Fussballverein des Braeutigams" data-name="Andreas Koch" cx="251.472" cy="285.965" r="12" fill="#bfef45" stroke="black" stroke-width="1"><title>Andreas Koch — Fussballverein des Braeutigams</title></circle>
|
||||
<circle class="person" data-gid="21" data-gruppe="Fussballverein des Braeutigams" data-name="Stefanie Busch" cx="227.081" cy="275.862" r="12" fill="#bfef45" stroke="black" stroke-width="1"><title>Stefanie Busch — Fussballverein des Braeutigams</title></circle>
|
||||
<circle class="person" data-gid="21" data-gruppe="Fussballverein des Braeutigams" data-name="Giovanna Koch" cx="216.979" cy="251.472" r="12" fill="#bfef45" stroke="black" stroke-width="1"><title>Giovanna Koch — Fussballverein des Braeutigams</title></circle>
|
||||
<circle class="person" data-gid="21" data-gruppe="Fussballverein des Braeutigams" data-name="Julia Esposito" cx="227.081" cy="227.081" r="12" fill="#bfef45" stroke="black" stroke-width="1"><title>Julia Esposito — Fussballverein des Braeutigams</title></circle>
|
||||
<ellipse cx="251.472" cy="251.472" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="251.472" y="246.672" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">3</text>
|
||||
<text x="251.472" y="259.872" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="415.786" cy="251.472" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle class="person" data-gid="23" data-gruppe="Musikverein (anonyme Sammelbuchung, 13 Karten)" data-name="Gast Musikverein" cx="415.786" cy="216.979" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Gast Musikverein — Musikverein (anonyme Sammelbuchung, 13 Karten)</title></circle>
|
||||
<circle class="person" data-gid="23" data-gruppe="Musikverein (anonyme Sammelbuchung, 13 Karten)" data-name="Gast Musikverein" cx="440.177" cy="227.081" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Gast Musikverein — Musikverein (anonyme Sammelbuchung, 13 Karten)</title></circle>
|
||||
<circle class="person" data-gid="23" data-gruppe="Musikverein (anonyme Sammelbuchung, 13 Karten)" data-name="Gast Musikverein" cx="450.28" cy="251.472" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Gast Musikverein — Musikverein (anonyme Sammelbuchung, 13 Karten)</title></circle>
|
||||
<circle class="person" data-gid="23" data-gruppe="Musikverein (anonyme Sammelbuchung, 13 Karten)" data-name="Gast Musikverein" cx="440.177" cy="275.862" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Gast Musikverein — Musikverein (anonyme Sammelbuchung, 13 Karten)</title></circle>
|
||||
<circle class="person" data-gid="23" data-gruppe="Musikverein (anonyme Sammelbuchung, 13 Karten)" data-name="Gast Musikverein" cx="415.786" cy="285.965" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Gast Musikverein — Musikverein (anonyme Sammelbuchung, 13 Karten)</title></circle>
|
||||
<circle class="person" data-gid="23" data-gruppe="Musikverein (anonyme Sammelbuchung, 13 Karten)" data-name="Gast Musikverein" cx="391.396" cy="275.862" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Gast Musikverein — Musikverein (anonyme Sammelbuchung, 13 Karten)</title></circle>
|
||||
<circle class="person" data-gid="23" data-gruppe="Musikverein (anonyme Sammelbuchung, 13 Karten)" data-name="Gast Musikverein" cx="381.293" cy="251.472" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Gast Musikverein — Musikverein (anonyme Sammelbuchung, 13 Karten)</title></circle>
|
||||
<circle class="person" data-gid="24" data-gruppe="alleinreisender Gast" data-name="Sven Fischer" cx="391.396" cy="227.081" r="12" fill="#469990" stroke="black" stroke-width="1"><title>Sven Fischer — alleinreisender Gast</title></circle>
|
||||
<ellipse cx="415.786" cy="251.472" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="415.786" y="246.672" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">4</text>
|
||||
<text x="415.786" y="259.872" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="580.101" cy="251.472" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle class="person" data-gid="23" data-gruppe="Musikverein (anonyme Sammelbuchung, 13 Karten)" data-name="Gast Musikverein" cx="580.101" cy="216.979" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Gast Musikverein — Musikverein (anonyme Sammelbuchung, 13 Karten)</title></circle>
|
||||
<circle class="person" data-gid="23" data-gruppe="Musikverein (anonyme Sammelbuchung, 13 Karten)" data-name="Gast Musikverein" cx="604.491" cy="227.081" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Gast Musikverein — Musikverein (anonyme Sammelbuchung, 13 Karten)</title></circle>
|
||||
<circle class="person" data-gid="23" data-gruppe="Musikverein (anonyme Sammelbuchung, 13 Karten)" data-name="Gast Musikverein" cx="614.594" cy="251.472" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Gast Musikverein — Musikverein (anonyme Sammelbuchung, 13 Karten)</title></circle>
|
||||
<circle class="person" data-gid="23" data-gruppe="Musikverein (anonyme Sammelbuchung, 13 Karten)" data-name="Gast Musikverein" cx="604.491" cy="275.862" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Gast Musikverein — Musikverein (anonyme Sammelbuchung, 13 Karten)</title></circle>
|
||||
<circle class="person" data-gid="23" data-gruppe="Musikverein (anonyme Sammelbuchung, 13 Karten)" data-name="Gast Musikverein" cx="580.101" cy="285.965" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Gast Musikverein — Musikverein (anonyme Sammelbuchung, 13 Karten)</title></circle>
|
||||
<circle class="person" data-gid="23" data-gruppe="Musikverein (anonyme Sammelbuchung, 13 Karten)" data-name="Gast Musikverein" cx="555.711" cy="275.862" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Gast Musikverein — Musikverein (anonyme Sammelbuchung, 13 Karten)</title></circle>
|
||||
<circle class="person" data-gid="3" data-gruppe="Familie Kraus (Braut-Seite, Geschwister Melanie): Matteo (9 J.) am Kindertisch" data-name="Dennis Kraus" cx="545.608" cy="251.472" r="12" fill="#dcbeff" stroke="black" stroke-width="1"><title>Dennis Kraus — Familie Kraus (Braut-Seite, Geschwister Melanie): Matteo (9 J.) am Kindertisch</title></circle>
|
||||
<circle class="person" data-gid="3" data-gruppe="Familie Kraus (Braut-Seite, Geschwister Melanie): Matteo (9 J.) am Kindertisch" data-name="Melanie Kraus" cx="555.711" cy="227.081" r="12" fill="#dcbeff" stroke="black" stroke-width="1"><title>Melanie Kraus — Familie Kraus (Braut-Seite, Geschwister Melanie): Matteo (9 J.) am Kindertisch</title></circle>
|
||||
<ellipse cx="580.101" cy="251.472" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="580.101" y="246.672" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">5</text>
|
||||
<text x="580.101" y="259.872" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="251.472" cy="415.786" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle class="person" data-gid="17" data-gruppe="Kegelclub des Brautvaters" data-name="Wolfgang Hansen" cx="251.472" cy="381.293" r="12" fill="#9a6324" stroke="black" stroke-width="1"><title>Wolfgang Hansen — Kegelclub des Brautvaters</title></circle>
|
||||
<circle class="person" data-gid="17" data-gruppe="Kegelclub des Brautvaters" data-name="Hannelore Barth" cx="275.862" cy="391.396" r="12" fill="#9a6324" stroke="black" stroke-width="1"><title>Hannelore Barth — Kegelclub des Brautvaters</title></circle>
|
||||
<circle class="person" data-gid="17" data-gruppe="Kegelclub des Brautvaters" data-name="Erika Frank" cx="285.965" cy="415.786" r="12" fill="#9a6324" stroke="black" stroke-width="1"><title>Erika Frank — Kegelclub des Brautvaters</title></circle>
|
||||
<circle class="person" data-gid="17" data-gruppe="Kegelclub des Brautvaters" data-name="Gerhard Erdem" cx="275.862" cy="440.177" r="12" fill="#9a6324" stroke="black" stroke-width="1"><title>Gerhard Erdem — Kegelclub des Brautvaters</title></circle>
|
||||
<circle class="person" data-gid="17" data-gruppe="Kegelclub des Brautvaters" data-name="Rainer Erdem" cx="251.472" cy="450.28" r="12" fill="#9a6324" stroke="black" stroke-width="1"><title>Rainer Erdem — Kegelclub des Brautvaters</title></circle>
|
||||
<circle class="person" data-gid="17" data-gruppe="Kegelclub des Brautvaters" data-name="Gisela Esposito" cx="227.081" cy="440.177" r="12" fill="#9a6324" stroke="black" stroke-width="1"><title>Gisela Esposito — Kegelclub des Brautvaters</title></circle>
|
||||
<circle class="person" data-gid="17" data-gruppe="Kegelclub des Brautvaters" data-name="Brigitte Franke" cx="216.979" cy="415.786" r="12" fill="#9a6324" stroke="black" stroke-width="1"><title>Brigitte Franke — Kegelclub des Brautvaters</title></circle>
|
||||
<circle class="person" data-gid="17" data-gruppe="Kegelclub des Brautvaters" data-name="Wolfgang Meyer" cx="227.081" cy="391.396" r="12" fill="#9a6324" stroke="black" stroke-width="1"><title>Wolfgang Meyer — Kegelclub des Brautvaters</title></circle>
|
||||
<ellipse cx="251.472" cy="415.786" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="251.472" y="410.986" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">8</text>
|
||||
<text x="251.472" y="424.186" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="744.415" cy="415.786" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="744.415" cy="381.293" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="768.806" cy="391.396" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="778.909" cy="415.786" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="768.806" cy="440.177" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="744.415" cy="450.28" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="720.025" cy="440.177" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="709.922" cy="415.786" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="720.025" cy="391.396" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="744.415" cy="415.786" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="744.415" y="415.786" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">11</text>
|
||||
<circle class="person" data-gid="19" data-gruppe="Arbeitskollegen des Braeutigams" data-name="Nadine Frank" cx="744.415" cy="381.293" r="12" fill="#800000" stroke="black" stroke-width="1"><title>Nadine Frank — Arbeitskollegen des Braeutigams</title></circle>
|
||||
<circle class="person" data-gid="19" data-gruppe="Arbeitskollegen des Braeutigams" data-name="Markus Schmitt" cx="768.806" cy="391.396" r="12" fill="#800000" stroke="black" stroke-width="1"><title>Markus Schmitt — Arbeitskollegen des Braeutigams</title></circle>
|
||||
<circle class="person" data-gid="19" data-gruppe="Arbeitskollegen des Braeutigams" data-name="Olga Yilmaz" cx="778.909" cy="415.786" r="12" fill="#800000" stroke="black" stroke-width="1"><title>Olga Yilmaz — Arbeitskollegen des Braeutigams</title></circle>
|
||||
<circle class="person" data-gid="19" data-gruppe="Arbeitskollegen des Braeutigams" data-name="Olga Hansen" cx="768.806" cy="440.177" r="12" fill="#800000" stroke="black" stroke-width="1"><title>Olga Hansen — Arbeitskollegen des Braeutigams</title></circle>
|
||||
<circle class="person" data-gid="19" data-gruppe="Arbeitskollegen des Braeutigams" data-name="Daniel Horn" cx="744.415" cy="450.28" r="12" fill="#800000" stroke="black" stroke-width="1"><title>Daniel Horn — Arbeitskollegen des Braeutigams</title></circle>
|
||||
<circle class="person" data-gid="19" data-gruppe="Arbeitskollegen des Braeutigams" data-name="Milan Lange" cx="720.025" cy="440.177" r="12" fill="#800000" stroke="black" stroke-width="1"><title>Milan Lange — Arbeitskollegen des Braeutigams</title></circle>
|
||||
<circle class="person" data-gid="1" data-gruppe="Familie Peters (Braut-Seite, Geschwister Melanie)" data-name="Yusuf Peters" cx="709.922" cy="415.786" r="12" fill="#aaffc3" stroke="black" stroke-width="1"><title>Yusuf Peters — Familie Peters (Braut-Seite, Geschwister Melanie)</title></circle>
|
||||
<circle class="person" data-gid="1" data-gruppe="Familie Peters (Braut-Seite, Geschwister Melanie)" data-name="Melanie Peters" cx="720.025" cy="391.396" r="12" fill="#aaffc3" stroke="black" stroke-width="1"><title>Melanie Peters — Familie Peters (Braut-Seite, Geschwister Melanie)</title></circle>
|
||||
<ellipse cx="744.415" cy="415.786" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="744.415" y="410.986" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">11</text>
|
||||
<text x="744.415" y="424.186" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="87.1573" cy="580.101" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="87.1573" cy="545.608" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="111.548" cy="555.711" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="121.651" cy="580.101" r="12" fill="#f58231" stroke="black" stroke-width="1"/>
|
||||
<circle cx="111.548" cy="604.491" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="87.1573" cy="614.594" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="62.7669" cy="604.491" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="52.664" cy="580.101" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="62.7669" cy="555.711" r="12" fill="#f58231" stroke="black" stroke-width="1"/>
|
||||
<circle cx="87.1573" cy="580.101" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="87.1573" y="580.101" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">12</text>
|
||||
<circle class="person" data-gid="16" data-gruppe="Studienfreunde der Braut" data-name="Nicole Fischer" cx="87.1573" cy="545.608" r="12" fill="#000075" stroke="black" stroke-width="1"><title>Nicole Fischer — Studienfreunde der Braut</title></circle>
|
||||
<circle class="person" data-gid="16" data-gruppe="Studienfreunde der Braut" data-name="Matthias Polat" cx="111.548" cy="555.711" r="12" fill="#000075" stroke="black" stroke-width="1"><title>Matthias Polat — Studienfreunde der Braut</title></circle>
|
||||
<circle class="person" data-gid="16" data-gruppe="Studienfreunde der Braut" data-name="Christian Esposito" cx="121.651" cy="580.101" r="12" fill="#000075" stroke="black" stroke-width="1"><title>Christian Esposito — Studienfreunde der Braut</title></circle>
|
||||
<circle class="person" data-gid="16" data-gruppe="Studienfreunde der Braut" data-name="Lena Hoffmann" cx="111.548" cy="604.491" r="12" fill="#000075" stroke="black" stroke-width="1"><title>Lena Hoffmann — Studienfreunde der Braut</title></circle>
|
||||
<circle class="person" data-gid="16" data-gruppe="Studienfreunde der Braut" data-name="Timo Wagner" cx="87.1573" cy="614.594" r="12" fill="#000075" stroke="black" stroke-width="1"><title>Timo Wagner — Studienfreunde der Braut</title></circle>
|
||||
<circle class="person" data-gid="16" data-gruppe="Studienfreunde der Braut" data-name="Nicole Dietrich" cx="62.7669" cy="604.491" r="12" fill="#000075" stroke="black" stroke-width="1"><title>Nicole Dietrich — Studienfreunde der Braut</title></circle>
|
||||
<circle class="person" data-gid="2" data-gruppe="Familie Brandt (Braut-Seite, Geschwister Daniel): Felix (12 J.) am Kindertisch; Ben (13 J.) am Teenager-Tisch" data-name="Daniel Brandt" cx="52.664" cy="580.101" r="12" fill="#e6194b" stroke="black" stroke-width="1"><title>Daniel Brandt — Familie Brandt (Braut-Seite, Geschwister Daniel): Felix (12 J.) am Kindertisch; Ben (13 J.) am Teenager-Tisch</title></circle>
|
||||
<circle class="person" data-gid="2" data-gruppe="Familie Brandt (Braut-Seite, Geschwister Daniel): Felix (12 J.) am Kindertisch; Ben (13 J.) am Teenager-Tisch" data-name="Kathrin Brandt" cx="62.7669" cy="555.711" r="12" fill="#e6194b" stroke="black" stroke-width="1"><title>Kathrin Brandt — Familie Brandt (Braut-Seite, Geschwister Daniel): Felix (12 J.) am Kindertisch; Ben (13 J.) am Teenager-Tisch</title></circle>
|
||||
<ellipse cx="87.1573" cy="580.101" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="87.1573" y="575.301" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">12</text>
|
||||
<text x="87.1573" y="588.501" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="251.472" cy="580.101" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="251.472" cy="545.608" r="12" fill="#911eb4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="275.862" cy="555.711" r="12" fill="#42d4f4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="285.965" cy="580.101" r="12" fill="#911eb4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="275.862" cy="604.491" r="12" fill="#42d4f4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="251.472" cy="614.594" r="12" fill="#42d4f4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="227.081" cy="604.491" r="12" fill="#42d4f4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="216.979" cy="580.101" r="12" fill="#42d4f4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="227.081" cy="555.711" r="12" fill="#911eb4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="251.472" cy="580.101" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="251.472" y="580.101" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">13</text>
|
||||
<circle class="person" data-gid="22" data-gruppe="Freundinnen aus der Schulzeit" data-name="Jennifer Dietrich" cx="251.472" cy="545.608" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Jennifer Dietrich — Freundinnen aus der Schulzeit</title></circle>
|
||||
<circle class="person" data-gid="22" data-gruppe="Freundinnen aus der Schulzeit" data-name="Christian Meyer" cx="275.862" cy="555.711" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Christian Meyer — Freundinnen aus der Schulzeit</title></circle>
|
||||
<circle class="person" data-gid="22" data-gruppe="Freundinnen aus der Schulzeit" data-name="Svenja Horn" cx="285.965" cy="580.101" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Svenja Horn — Freundinnen aus der Schulzeit</title></circle>
|
||||
<circle class="person" data-gid="22" data-gruppe="Freundinnen aus der Schulzeit" data-name="Stefanie Roth" cx="275.862" cy="604.491" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Stefanie Roth — Freundinnen aus der Schulzeit</title></circle>
|
||||
<circle class="person" data-gid="22" data-gruppe="Freundinnen aus der Schulzeit" data-name="Stefan Kuhn" cx="251.472" cy="614.594" r="12" fill="#3cb44b" stroke="black" stroke-width="1"><title>Stefan Kuhn — Freundinnen aus der Schulzeit</title></circle>
|
||||
<circle class="person" data-gid="8" data-gruppe="Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Lina (3 J.) sitzt bei den Eltern; Theo (8 J.) am Kindertisch; Max (12 J.) am Kindertisch" data-name="Dennis Sommer" cx="227.081" cy="604.491" r="12" fill="#4363d8" stroke="black" stroke-width="1"><title>Dennis Sommer — Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Lina (3 J.) sitzt bei den Eltern; Theo (8 J.) am Kindertisch; Max (12 J.) am Kindertisch</title></circle>
|
||||
<circle class="person" data-gid="8" data-gruppe="Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Lina (3 J.) sitzt bei den Eltern; Theo (8 J.) am Kindertisch; Max (12 J.) am Kindertisch" data-name="Nicole Sommer" cx="216.979" cy="580.101" r="12" fill="#4363d8" stroke="black" stroke-width="1"><title>Nicole Sommer — Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Lina (3 J.) sitzt bei den Eltern; Theo (8 J.) am Kindertisch; Max (12 J.) am Kindertisch</title></circle>
|
||||
<circle class="person" data-gid="8" data-gruppe="Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Lina (3 J.) sitzt bei den Eltern; Theo (8 J.) am Kindertisch; Max (12 J.) am Kindertisch" data-name="Lina Sommer" cx="227.081" cy="555.711" r="12" fill="#4363d8" stroke="black" stroke-width="1"><title>Lina Sommer — Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Lina (3 J.) sitzt bei den Eltern; Theo (8 J.) am Kindertisch; Max (12 J.) am Kindertisch</title></circle>
|
||||
<ellipse cx="251.472" cy="580.101" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="251.472" y="575.301" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">13</text>
|
||||
<text x="251.472" y="588.501" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="415.786" cy="580.101" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="415.786" cy="545.608" r="12" fill="#f032e6" stroke="black" stroke-width="1"/>
|
||||
<circle cx="440.177" cy="555.711" r="12" fill="#f032e6" stroke="black" stroke-width="1"/>
|
||||
<circle cx="450.28" cy="580.101" r="12" fill="#bfef45" stroke="black" stroke-width="1"/>
|
||||
<circle cx="440.177" cy="604.491" r="12" fill="#f032e6" stroke="black" stroke-width="1"/>
|
||||
<circle cx="415.786" cy="614.594" r="12" fill="#fabed4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="391.396" cy="604.491" r="12" fill="#f032e6" stroke="black" stroke-width="1"/>
|
||||
<circle cx="381.293" cy="580.101" r="12" fill="#bfef45" stroke="black" stroke-width="1"/>
|
||||
<circle cx="391.396" cy="555.711" r="12" fill="#fabed4" stroke="black" stroke-width="1"/>
|
||||
<circle cx="415.786" cy="580.101" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="415.786" y="580.101" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">14</text>
|
||||
<circle class="person" data-gid="20" data-gruppe="Nachbarn der Brauteltern" data-name="Guenter Schwarz" cx="415.786" cy="545.608" r="12" fill="#f58231" stroke="black" stroke-width="1"><title>Guenter Schwarz — Nachbarn der Brauteltern</title></circle>
|
||||
<circle class="person" data-gid="20" data-gruppe="Nachbarn der Brauteltern" data-name="Rainer Aksoy" cx="440.177" cy="555.711" r="12" fill="#f58231" stroke="black" stroke-width="1"><title>Rainer Aksoy — Nachbarn der Brauteltern</title></circle>
|
||||
<circle class="person" data-gid="20" data-gruppe="Nachbarn der Brauteltern" data-name="Renate Aksoy" cx="450.28" cy="580.101" r="12" fill="#f58231" stroke="black" stroke-width="1"><title>Renate Aksoy — Nachbarn der Brauteltern</title></circle>
|
||||
<circle class="person" data-gid="20" data-gruppe="Nachbarn der Brauteltern" data-name="Werner Stein" cx="440.177" cy="604.491" r="12" fill="#f58231" stroke="black" stroke-width="1"><title>Werner Stein — Nachbarn der Brauteltern</title></circle>
|
||||
<circle class="person" data-gid="5" data-gruppe="Familie Meyer (Braut-Seite, Geschwister Sandra): Mila (10 J.) am Kindertisch; Anton (16 J.) am Teenager-Tisch; Ida (16 J.) am Teenager-Tisch" data-name="Marco Meyer" cx="415.786" cy="614.594" r="12" fill="#911eb4" stroke="black" stroke-width="1"><title>Marco Meyer — Familie Meyer (Braut-Seite, Geschwister Sandra): Mila (10 J.) am Kindertisch; Anton (16 J.) am Teenager-Tisch; Ida (16 J.) am Teenager-Tisch</title></circle>
|
||||
<circle class="person" data-gid="5" data-gruppe="Familie Meyer (Braut-Seite, Geschwister Sandra): Mila (10 J.) am Kindertisch; Anton (16 J.) am Teenager-Tisch; Ida (16 J.) am Teenager-Tisch" data-name="Sandra Meyer" cx="391.396" cy="604.491" r="12" fill="#911eb4" stroke="black" stroke-width="1"><title>Sandra Meyer — Familie Meyer (Braut-Seite, Geschwister Sandra): Mila (10 J.) am Kindertisch; Anton (16 J.) am Teenager-Tisch; Ida (16 J.) am Teenager-Tisch</title></circle>
|
||||
<circle class="person" data-gid="7" data-gruppe="Familie Vogel (Braut-Seite, Geschwister Sandra): Anton (14 J.) am Teenager-Tisch; Max (15 J.) am Teenager-Tisch" data-name="Yusuf Vogel" cx="381.293" cy="580.101" r="12" fill="#42d4f4" stroke="black" stroke-width="1"><title>Yusuf Vogel — Familie Vogel (Braut-Seite, Geschwister Sandra): Anton (14 J.) am Teenager-Tisch; Max (15 J.) am Teenager-Tisch</title></circle>
|
||||
<circle class="person" data-gid="7" data-gruppe="Familie Vogel (Braut-Seite, Geschwister Sandra): Anton (14 J.) am Teenager-Tisch; Max (15 J.) am Teenager-Tisch" data-name="Sandra Vogel" cx="391.396" cy="555.711" r="12" fill="#42d4f4" stroke="black" stroke-width="1"><title>Sandra Vogel — Familie Vogel (Braut-Seite, Geschwister Sandra): Anton (14 J.) am Teenager-Tisch; Max (15 J.) am Teenager-Tisch</title></circle>
|
||||
<ellipse cx="415.786" cy="580.101" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="415.786" y="575.301" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">14</text>
|
||||
<text x="415.786" y="588.501" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="580.101" cy="580.101" r="56.4933" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle class="person" data-gid="4" data-gruppe="Familie Brandt (Braut-Seite, Geschwister Andreas): Theo (3 J.) sitzt bei den Eltern; Anton (10 J.) am Kindertisch; Frieda (12 J.) am Kindertisch; Paul (19 J.) am Teenager-Tisch" data-name="Andreas Brandt" cx="580.101" cy="545.608" r="12" fill="#f032e6" stroke="black" stroke-width="1"><title>Andreas Brandt — Familie Brandt (Braut-Seite, Geschwister Andreas): Theo (3 J.) sitzt bei den Eltern; Anton (10 J.) am Kindertisch; Frieda (12 J.) am Kindertisch; Paul (19 J.) am Teenager-Tisch</title></circle>
|
||||
<circle class="person" data-gid="4" data-gruppe="Familie Brandt (Braut-Seite, Geschwister Andreas): Theo (3 J.) sitzt bei den Eltern; Anton (10 J.) am Kindertisch; Frieda (12 J.) am Kindertisch; Paul (19 J.) am Teenager-Tisch" data-name="Lena Brandt" cx="604.491" cy="555.711" r="12" fill="#f032e6" stroke="black" stroke-width="1"><title>Lena Brandt — Familie Brandt (Braut-Seite, Geschwister Andreas): Theo (3 J.) sitzt bei den Eltern; Anton (10 J.) am Kindertisch; Frieda (12 J.) am Kindertisch; Paul (19 J.) am Teenager-Tisch</title></circle>
|
||||
<circle class="person" data-gid="4" data-gruppe="Familie Brandt (Braut-Seite, Geschwister Andreas): Theo (3 J.) sitzt bei den Eltern; Anton (10 J.) am Kindertisch; Frieda (12 J.) am Kindertisch; Paul (19 J.) am Teenager-Tisch" data-name="Theo Brandt" cx="614.594" cy="580.101" r="12" fill="#f032e6" stroke="black" stroke-width="1"><title>Theo Brandt — Familie Brandt (Braut-Seite, Geschwister Andreas): Theo (3 J.) sitzt bei den Eltern; Anton (10 J.) am Kindertisch; Frieda (12 J.) am Kindertisch; Paul (19 J.) am Teenager-Tisch</title></circle>
|
||||
<circle class="person" data-gid="6" data-gruppe="Familie Brandt (Braut-Seite, Geschwister Milan): Sofia (2 J.) sitzt bei den Eltern; Greta (7 J.) am Kindertisch" data-name="Milan Brandt" cx="604.491" cy="604.491" r="12" fill="#bfef45" stroke="black" stroke-width="1"><title>Milan Brandt — Familie Brandt (Braut-Seite, Geschwister Milan): Sofia (2 J.) sitzt bei den Eltern; Greta (7 J.) am Kindertisch</title></circle>
|
||||
<circle class="person" data-gid="6" data-gruppe="Familie Brandt (Braut-Seite, Geschwister Milan): Sofia (2 J.) sitzt bei den Eltern; Greta (7 J.) am Kindertisch" data-name="Anja Brandt" cx="580.101" cy="614.594" r="12" fill="#bfef45" stroke="black" stroke-width="1"><title>Anja Brandt — Familie Brandt (Braut-Seite, Geschwister Milan): Sofia (2 J.) sitzt bei den Eltern; Greta (7 J.) am Kindertisch</title></circle>
|
||||
<circle class="person" data-gid="6" data-gruppe="Familie Brandt (Braut-Seite, Geschwister Milan): Sofia (2 J.) sitzt bei den Eltern; Greta (7 J.) am Kindertisch" data-name="Sofia Brandt" cx="555.711" cy="604.491" r="12" fill="#bfef45" stroke="black" stroke-width="1"><title>Sofia Brandt — Familie Brandt (Braut-Seite, Geschwister Milan): Sofia (2 J.) sitzt bei den Eltern; Greta (7 J.) am Kindertisch</title></circle>
|
||||
<circle class="person" data-gid="9" data-gruppe="Familie Kuhn (Braeutigam-Seite, Geschwister Sarah): Leni (10 J.) am Kindertisch" data-name="Timo Kuhn" cx="545.608" cy="580.101" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Timo Kuhn — Familie Kuhn (Braeutigam-Seite, Geschwister Sarah): Leni (10 J.) am Kindertisch</title></circle>
|
||||
<circle class="person" data-gid="9" data-gruppe="Familie Kuhn (Braeutigam-Seite, Geschwister Sarah): Leni (10 J.) am Kindertisch" data-name="Sarah Kuhn" cx="555.711" cy="555.711" r="12" fill="#fabed4" stroke="black" stroke-width="1"><title>Sarah Kuhn — Familie Kuhn (Braeutigam-Seite, Geschwister Sarah): Leni (10 J.) am Kindertisch</title></circle>
|
||||
<ellipse cx="580.101" cy="580.101" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="580.101" y="575.301" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">15</text>
|
||||
<text x="580.101" y="588.501" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">8 Pl.</text>
|
||||
<circle cx="415.786" cy="87.1573" r="73.0009" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="415.786" cy="36.1564" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="441.287" cy="42.9892" r="12" fill="#469990" stroke="black" stroke-width="1"/>
|
||||
<circle cx="459.954" cy="61.6568" r="12" fill="#469990" stroke="black" stroke-width="1"/>
|
||||
<circle cx="466.787" cy="87.1573" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="459.954" cy="112.658" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="441.287" cy="131.325" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="415.786" cy="138.158" r="12" fill="#469990" stroke="black" stroke-width="1"/>
|
||||
<circle cx="390.286" cy="131.325" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="371.618" cy="112.658" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="364.785" cy="87.1573" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="371.618" cy="61.6568" r="12" fill="#469990" stroke="black" stroke-width="1"/>
|
||||
<circle cx="390.286" cy="42.9892" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="415.786" cy="87.1573" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="415.786" y="87.1573" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">1</text>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Julia Brandt" cx="415.786" cy="36.1564" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Julia Brandt — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Daniel Sommer" cx="441.287" cy="42.9892" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Daniel Sommer — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Werner Brandt" cx="459.954" cy="61.6568" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Werner Brandt — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Helga Brandt" cx="466.787" cy="87.1573" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Helga Brandt — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Dieter Sommer" cx="459.954" cy="112.658" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Dieter Sommer — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Renate Sommer" cx="441.287" cy="131.325" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Renate Sommer — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Sarah Winkler" cx="415.786" cy="138.158" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Sarah Winkler — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Tobias Frank" cx="390.286" cy="131.325" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Tobias Frank — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="21" data-gruppe="Fussballverein des Braeutigams" data-name="Giovanna Kovac" cx="371.618" cy="112.658" r="12" fill="#bfef45" stroke="black" stroke-width="1"><title>Giovanna Kovac — Fussballverein des Braeutigams</title></circle>
|
||||
<circle class="person" data-gid="21" data-gruppe="Fussballverein des Braeutigams" data-name="Sergej Berger" cx="364.785" cy="87.1573" r="12" fill="#bfef45" stroke="black" stroke-width="1"><title>Sergej Berger — Fussballverein des Braeutigams</title></circle>
|
||||
<circle class="person" data-gid="21" data-gruppe="Fussballverein des Braeutigams" data-name="Dennis Schmidt" cx="371.618" cy="61.6568" r="12" fill="#bfef45" stroke="black" stroke-width="1"><title>Dennis Schmidt — Fussballverein des Braeutigams</title></circle>
|
||||
<circle class="person" data-gid="21" data-gruppe="Fussballverein des Braeutigams" data-name="Patrick Simon" cx="390.286" cy="42.9892" r="12" fill="#bfef45" stroke="black" stroke-width="1"><title>Patrick Simon — Fussballverein des Braeutigams</title></circle>
|
||||
<ellipse cx="415.786" cy="87.1573" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="415.786" y="82.3573" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">1</text>
|
||||
<text x="415.786" y="95.5573" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">12 Pl.</text>
|
||||
<circle cx="908.73" cy="251.472" r="77.1573" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="908.73" cy="196.315" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="934.363" cy="202.632" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="954.124" cy="220.139" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="963.485" cy="244.823" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="960.303" cy="271.031" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="945.306" cy="292.758" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="921.93" cy="305.026" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="895.53" cy="305.026" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="872.154" cy="292.758" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="857.157" cy="271.031" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="853.975" cy="244.823" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="863.336" cy="220.139" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="883.097" cy="202.632" r="12" fill="#888888" stroke="black" stroke-width="1"/>
|
||||
<circle cx="908.73" cy="251.472" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="908.73" y="251.472" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">16</text>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Leni Kuhn" cx="908.73" cy="196.315" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Leni Kuhn — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Emil Sommer" cx="934.363" cy="202.632" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Emil Sommer — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Ida Sommer" cx="954.124" cy="220.139" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Ida Sommer — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Liam Schwarz" cx="963.485" cy="244.823" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Liam Schwarz — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Elias Schwarz" cx="960.303" cy="271.031" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Elias Schwarz — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Felix Brandt" cx="945.306" cy="292.758" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Felix Brandt — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Matteo Kraus" cx="921.93" cy="305.026" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Matteo Kraus — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Anton Brandt" cx="895.53" cy="305.026" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Anton Brandt — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Frieda Brandt" cx="872.154" cy="292.758" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Frieda Brandt — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Mila Meyer" cx="857.157" cy="271.031" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Mila Meyer — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Greta Brandt" cx="853.975" cy="244.823" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Greta Brandt — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Theo Sommer" cx="863.336" cy="220.139" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Theo Sommer — VIP / feste Platzierung</title></circle>
|
||||
<circle class="person" data-gid="-1" data-gruppe="VIP / feste Platzierung" data-name="Max Sommer" cx="883.097" cy="202.632" r="12" fill="#888888" stroke="black" stroke-width="1"><title>Max Sommer — VIP / feste Platzierung</title></circle>
|
||||
<ellipse cx="908.73" cy="251.472" rx="12" ry="15.6" fill="white" fill-opacity="0.75"/>
|
||||
<text x="908.73" y="246.672" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">16</text>
|
||||
<text x="908.73" y="259.872" text-anchor="middle" dominant-baseline="central" font-size="7.44" fill="#333">13 Pl.</text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 42 KiB |
@@ -1,46 +1,40 @@
|
||||
[1]
|
||||
Renate Sommer = Hof 1, Tisch 1, Nummer 1
|
||||
Stefanie Busch = Hof 1, Tisch 1, Nummer 2
|
||||
Julia Esposito = Hof 1, Tisch 1, Nummer 3
|
||||
Tobias Frank = Hof 1, Tisch 1, Nummer 4
|
||||
Julia Brandt = Hof 1, Tisch 1, Nummer 1
|
||||
Daniel Sommer = Hof 1, Tisch 1, Nummer 2
|
||||
Werner Brandt = Hof 1, Tisch 1, Nummer 3
|
||||
Helga Brandt = Hof 1, Tisch 1, Nummer 4
|
||||
Dieter Sommer = Hof 1, Tisch 1, Nummer 5
|
||||
Helga Brandt = Hof 1, Tisch 1, Nummer 6
|
||||
Giovanna Kovac = Hof 1, Tisch 1, Nummer 7
|
||||
Julia Brandt = Hof 1, Tisch 1, Nummer 8
|
||||
Daniel Sommer = Hof 1, Tisch 1, Nummer 9
|
||||
Sarah Winkler = Hof 1, Tisch 1, Nummer 10
|
||||
Sergej Berger = Hof 1, Tisch 1, Nummer 11
|
||||
Werner Brandt = Hof 1, Tisch 1, Nummer 12
|
||||
Renate Sommer = Hof 1, Tisch 1, Nummer 6
|
||||
Sarah Winkler = Hof 1, Tisch 1, Nummer 7
|
||||
Tobias Frank = Hof 1, Tisch 1, Nummer 8
|
||||
Renate Aksoy = Hof 1, Tisch 1, Nummer 9
|
||||
Werner Stein = Hof 1, Tisch 1, Nummer 10
|
||||
Guenter Schwarz = Hof 1, Tisch 1, Nummer 11
|
||||
Rainer Aksoy = Hof 1, Tisch 1, Nummer 12
|
||||
|
||||
[2]
|
||||
Yusuf Schwarz = Hof 1, Tisch 2, Nummer 1
|
||||
Jennifer Sommer = Hof 1, Tisch 2, Nummer 2
|
||||
Ursula Aydin = Hof 1, Tisch 2, Nummer 3
|
||||
Sarah Schwarz = Hof 1, Tisch 2, Nummer 4
|
||||
Horst Aydin = Hof 1, Tisch 2, Nummer 5
|
||||
Heinz Tran = Hof 1, Tisch 2, Nummer 6
|
||||
Dennis Sommer = Hof 1, Tisch 2, Nummer 7
|
||||
Erika Erdem = Hof 1, Tisch 2, Nummer 8
|
||||
Svenja Vogel = Hof 1, Tisch 2, Nummer 1
|
||||
Giovanna Koch = Hof 1, Tisch 2, Nummer 2
|
||||
Julia Esposito = Hof 1, Tisch 2, Nummer 3
|
||||
Jennifer Dietrich = Hof 1, Tisch 2, Nummer 4
|
||||
Christian Meyer = Hof 1, Tisch 2, Nummer 5
|
||||
Svenja Horn = Hof 1, Tisch 2, Nummer 6
|
||||
Stefanie Roth = Hof 1, Tisch 2, Nummer 7
|
||||
Stefan Kuhn = Hof 1, Tisch 2, Nummer 8
|
||||
|
||||
[3]
|
||||
Ingrid Demir = Hof 1, Tisch 3, Nummer 1
|
||||
Dennis Schmidt = Hof 1, Tisch 3, Nummer 2
|
||||
Monika Demir = Hof 1, Tisch 3, Nummer 3
|
||||
Patrick Simon = Hof 1, Tisch 3, Nummer 4
|
||||
Svenja Vogel = Hof 1, Tisch 3, Nummer 5
|
||||
Andreas Koch = Hof 1, Tisch 3, Nummer 6
|
||||
Hannelore Demir = Hof 1, Tisch 3, Nummer 7
|
||||
Giovanna Koch = Hof 1, Tisch 3, Nummer 8
|
||||
Helga Fischer = Hof 1, Tisch 3, Nummer 1
|
||||
Heinz Fischer = Hof 1, Tisch 3, Nummer 2
|
||||
|
||||
[4]
|
||||
Nicole Sommer = Hof 1, Tisch 4, Nummer 1
|
||||
Gast Musikverein = Hof 1, Tisch 4, Nummer 1
|
||||
Gast Musikverein = Hof 1, Tisch 4, Nummer 2
|
||||
Dennis Sommer = Hof 1, Tisch 4, Nummer 3
|
||||
Lina Sommer = Hof 1, Tisch 4, Nummer 4
|
||||
Gast Musikverein = Hof 1, Tisch 4, Nummer 3
|
||||
Gast Musikverein = Hof 1, Tisch 4, Nummer 4
|
||||
Gast Musikverein = Hof 1, Tisch 4, Nummer 5
|
||||
Gast Musikverein = Hof 1, Tisch 4, Nummer 6
|
||||
Gast Musikverein = Hof 1, Tisch 4, Nummer 7
|
||||
Gast Musikverein = Hof 1, Tisch 4, Nummer 8
|
||||
Sven Fischer = Hof 1, Tisch 4, Nummer 8
|
||||
|
||||
[5]
|
||||
Gast Musikverein = Hof 1, Tisch 5, Nummer 1
|
||||
@@ -49,106 +43,112 @@
|
||||
Gast Musikverein = Hof 1, Tisch 5, Nummer 4
|
||||
Gast Musikverein = Hof 1, Tisch 5, Nummer 5
|
||||
Gast Musikverein = Hof 1, Tisch 5, Nummer 6
|
||||
Gast Musikverein = Hof 1, Tisch 5, Nummer 7
|
||||
Gast Musikverein = Hof 1, Tisch 5, Nummer 8
|
||||
Marco Meyer = Hof 1, Tisch 5, Nummer 7
|
||||
Sandra Meyer = Hof 1, Tisch 5, Nummer 8
|
||||
|
||||
[6]
|
||||
Helga Fischer = Hof 1, Tisch 6, Nummer 1
|
||||
Heinz Fischer = Hof 1, Tisch 6, Nummer 2
|
||||
|
||||
[7]
|
||||
|
||||
[8]
|
||||
Yusuf Peters = Hof 1, Tisch 8, Nummer 1
|
||||
Sergej Berger = Hof 1, Tisch 8, Nummer 2
|
||||
Giovanna Kovac = Hof 1, Tisch 8, Nummer 3
|
||||
Dennis Schmidt = Hof 1, Tisch 8, Nummer 4
|
||||
Patrick Simon = Hof 1, Tisch 8, Nummer 5
|
||||
Stefanie Busch = Hof 1, Tisch 8, Nummer 6
|
||||
Andreas Koch = Hof 1, Tisch 8, Nummer 7
|
||||
Melanie Peters = Hof 1, Tisch 8, Nummer 8
|
||||
|
||||
[9]
|
||||
Wolfgang Meyer = Hof 1, Tisch 9, Nummer 1
|
||||
Erika Frank = Hof 1, Tisch 9, Nummer 2
|
||||
Brigitte Franke = Hof 1, Tisch 9, Nummer 3
|
||||
Gisela Esposito = Hof 1, Tisch 9, Nummer 4
|
||||
Wolfgang Hansen = Hof 1, Tisch 9, Nummer 5
|
||||
Gerhard Erdem = Hof 1, Tisch 9, Nummer 6
|
||||
Rainer Erdem = Hof 1, Tisch 9, Nummer 7
|
||||
Hannelore Barth = Hof 1, Tisch 9, Nummer 8
|
||||
Wolfgang Hansen = Hof 1, Tisch 9, Nummer 1
|
||||
Hannelore Barth = Hof 1, Tisch 9, Nummer 2
|
||||
Erika Frank = Hof 1, Tisch 9, Nummer 3
|
||||
Gerhard Erdem = Hof 1, Tisch 9, Nummer 4
|
||||
Rainer Erdem = Hof 1, Tisch 9, Nummer 5
|
||||
Gisela Esposito = Hof 1, Tisch 9, Nummer 6
|
||||
Brigitte Franke = Hof 1, Tisch 9, Nummer 7
|
||||
Wolfgang Meyer = Hof 1, Tisch 9, Nummer 8
|
||||
|
||||
[10]
|
||||
Daniel Wagner = Hof 1, Tisch 10, Nummer 1
|
||||
Sven Fischer = Hof 1, Tisch 10, Nummer 2
|
||||
Elif Demir = Hof 1, Tisch 10, Nummer 1
|
||||
Jennifer Simon = Hof 1, Tisch 10, Nummer 2
|
||||
Andreas Stein = Hof 1, Tisch 10, Nummer 3
|
||||
Jennifer Simon = Hof 1, Tisch 10, Nummer 4
|
||||
Stefanie Simon = Hof 1, Tisch 10, Nummer 5
|
||||
Stefan Klein = Hof 1, Tisch 10, Nummer 6
|
||||
Timo Frank = Hof 1, Tisch 10, Nummer 7
|
||||
Elif Demir = Hof 1, Tisch 10, Nummer 8
|
||||
Stefan Klein = Hof 1, Tisch 10, Nummer 4
|
||||
Timo Frank = Hof 1, Tisch 10, Nummer 5
|
||||
Daniel Wagner = Hof 1, Tisch 10, Nummer 6
|
||||
Stefanie Simon = Hof 1, Tisch 10, Nummer 7
|
||||
|
||||
[11]
|
||||
Olga Hansen = Hof 1, Tisch 11, Nummer 1
|
||||
Yusuf Peters = Hof 1, Tisch 11, Nummer 2
|
||||
Nadine Frank = Hof 1, Tisch 11, Nummer 1
|
||||
Markus Schmitt = Hof 1, Tisch 11, Nummer 2
|
||||
Olga Yilmaz = Hof 1, Tisch 11, Nummer 3
|
||||
Daniel Horn = Hof 1, Tisch 11, Nummer 4
|
||||
Markus Schmitt = Hof 1, Tisch 11, Nummer 5
|
||||
Olga Hansen = Hof 1, Tisch 11, Nummer 4
|
||||
Daniel Horn = Hof 1, Tisch 11, Nummer 5
|
||||
Milan Lange = Hof 1, Tisch 11, Nummer 6
|
||||
Nadine Frank = Hof 1, Tisch 11, Nummer 7
|
||||
Melanie Peters = Hof 1, Tisch 11, Nummer 8
|
||||
Daniel Brandt = Hof 1, Tisch 11, Nummer 7
|
||||
Kathrin Brandt = Hof 1, Tisch 11, Nummer 8
|
||||
|
||||
[12]
|
||||
Lena Hoffmann = Hof 1, Tisch 12, Nummer 1
|
||||
Nicole Fischer = Hof 1, Tisch 12, Nummer 2
|
||||
Kathrin Brandt = Hof 1, Tisch 12, Nummer 3
|
||||
Timo Wagner = Hof 1, Tisch 12, Nummer 4
|
||||
Christian Esposito = Hof 1, Tisch 12, Nummer 5
|
||||
Nicole Fischer = Hof 1, Tisch 12, Nummer 1
|
||||
Matthias Polat = Hof 1, Tisch 12, Nummer 2
|
||||
Christian Esposito = Hof 1, Tisch 12, Nummer 3
|
||||
Lena Hoffmann = Hof 1, Tisch 12, Nummer 4
|
||||
Timo Wagner = Hof 1, Tisch 12, Nummer 5
|
||||
Nicole Dietrich = Hof 1, Tisch 12, Nummer 6
|
||||
Matthias Polat = Hof 1, Tisch 12, Nummer 7
|
||||
Daniel Brandt = Hof 1, Tisch 12, Nummer 8
|
||||
Dennis Kraus = Hof 1, Tisch 12, Nummer 7
|
||||
Melanie Kraus = Hof 1, Tisch 12, Nummer 8
|
||||
|
||||
[13]
|
||||
Anja Brandt = Hof 1, Tisch 13, Nummer 1
|
||||
Svenja Horn = Hof 1, Tisch 13, Nummer 2
|
||||
Sofia Brandt = Hof 1, Tisch 13, Nummer 3
|
||||
Jennifer Dietrich = Hof 1, Tisch 13, Nummer 4
|
||||
Christian Meyer = Hof 1, Tisch 13, Nummer 5
|
||||
Stefanie Roth = Hof 1, Tisch 13, Nummer 6
|
||||
Stefan Kuhn = Hof 1, Tisch 13, Nummer 7
|
||||
Milan Brandt = Hof 1, Tisch 13, Nummer 8
|
||||
Ingrid Demir = Hof 1, Tisch 13, Nummer 1
|
||||
Monika Demir = Hof 1, Tisch 13, Nummer 2
|
||||
Hannelore Demir = Hof 1, Tisch 13, Nummer 3
|
||||
Yusuf Vogel = Hof 1, Tisch 13, Nummer 4
|
||||
Sandra Vogel = Hof 1, Tisch 13, Nummer 5
|
||||
Dennis Sommer = Hof 1, Tisch 13, Nummer 6
|
||||
Nicole Sommer = Hof 1, Tisch 13, Nummer 7
|
||||
Lina Sommer = Hof 1, Tisch 13, Nummer 8
|
||||
|
||||
[14]
|
||||
Werner Stein = Hof 1, Tisch 14, Nummer 1
|
||||
Guenter Schwarz = Hof 1, Tisch 14, Nummer 2
|
||||
Sandra Meyer = Hof 1, Tisch 14, Nummer 3
|
||||
Renate Aksoy = Hof 1, Tisch 14, Nummer 4
|
||||
Melanie Kraus = Hof 1, Tisch 14, Nummer 5
|
||||
Rainer Aksoy = Hof 1, Tisch 14, Nummer 6
|
||||
Marco Meyer = Hof 1, Tisch 14, Nummer 7
|
||||
Dennis Kraus = Hof 1, Tisch 14, Nummer 8
|
||||
Andreas Brandt = Hof 1, Tisch 14, Nummer 1
|
||||
Lena Brandt = Hof 1, Tisch 14, Nummer 2
|
||||
Theo Brandt = Hof 1, Tisch 14, Nummer 3
|
||||
Milan Brandt = Hof 1, Tisch 14, Nummer 4
|
||||
Anja Brandt = Hof 1, Tisch 14, Nummer 5
|
||||
Sofia Brandt = Hof 1, Tisch 14, Nummer 6
|
||||
Timo Kuhn = Hof 1, Tisch 14, Nummer 7
|
||||
Sarah Kuhn = Hof 1, Tisch 14, Nummer 8
|
||||
|
||||
[15]
|
||||
Yusuf Vogel = Hof 1, Tisch 15, Nummer 1
|
||||
Timo Kuhn = Hof 1, Tisch 15, Nummer 2
|
||||
Andreas Brandt = Hof 1, Tisch 15, Nummer 3
|
||||
Lena Brandt = Hof 1, Tisch 15, Nummer 4
|
||||
Theo Brandt = Hof 1, Tisch 15, Nummer 5
|
||||
Sandra Vogel = Hof 1, Tisch 15, Nummer 6
|
||||
Sarah Kuhn = Hof 1, Tisch 15, Nummer 7
|
||||
Yusuf Schwarz = Hof 1, Tisch 15, Nummer 1
|
||||
Sarah Schwarz = Hof 1, Tisch 15, Nummer 2
|
||||
Horst Aydin = Hof 1, Tisch 15, Nummer 3
|
||||
Ursula Aydin = Hof 1, Tisch 15, Nummer 4
|
||||
Heinz Tran = Hof 1, Tisch 15, Nummer 5
|
||||
Erika Erdem = Hof 1, Tisch 15, Nummer 6
|
||||
Dennis Sommer = Hof 1, Tisch 15, Nummer 7
|
||||
Jennifer Sommer = Hof 1, Tisch 15, Nummer 8
|
||||
|
||||
[16]
|
||||
Anton Brandt = Hof 1, Tisch 16, Nummer 1
|
||||
Leni Kuhn = Hof 1, Tisch 16, Nummer 2
|
||||
Emil Sommer = Hof 1, Tisch 16, Nummer 3
|
||||
Ida Sommer = Hof 1, Tisch 16, Nummer 4
|
||||
Max Sommer = Hof 1, Tisch 16, Nummer 5
|
||||
Theo Sommer = Hof 1, Tisch 16, Nummer 6
|
||||
Mila Meyer = Hof 1, Tisch 16, Nummer 7
|
||||
Matteo Kraus = Hof 1, Tisch 16, Nummer 8
|
||||
Elias Schwarz = Hof 1, Tisch 16, Nummer 9
|
||||
Felix Brandt = Hof 1, Tisch 16, Nummer 10
|
||||
Liam Schwarz = Hof 1, Tisch 16, Nummer 11
|
||||
Frieda Brandt = Hof 1, Tisch 16, Nummer 12
|
||||
Greta Brandt = Hof 1, Tisch 16, Nummer 13
|
||||
Leni Kuhn = Hof 1, Tisch 16, Nummer 1
|
||||
Emil Sommer = Hof 1, Tisch 16, Nummer 2
|
||||
Ida Sommer = Hof 1, Tisch 16, Nummer 3
|
||||
Liam Schwarz = Hof 1, Tisch 16, Nummer 4
|
||||
Elias Schwarz = Hof 1, Tisch 16, Nummer 5
|
||||
Felix Brandt = Hof 1, Tisch 16, Nummer 6
|
||||
Matteo Kraus = Hof 1, Tisch 16, Nummer 7
|
||||
Anton Brandt = Hof 1, Tisch 16, Nummer 8
|
||||
Frieda Brandt = Hof 1, Tisch 16, Nummer 9
|
||||
Mila Meyer = Hof 1, Tisch 16, Nummer 10
|
||||
Greta Brandt = Hof 1, Tisch 16, Nummer 11
|
||||
Theo Sommer = Hof 1, Tisch 16, Nummer 12
|
||||
Max Sommer = Hof 1, Tisch 16, Nummer 13
|
||||
|
||||
[17]
|
||||
Max Vogel = Hof 1, Tisch 17, Nummer 1
|
||||
Ida Meyer = Hof 1, Tisch 17, Nummer 2
|
||||
Paul Brandt = Hof 1, Tisch 17, Nummer 3
|
||||
Anton Meyer = Hof 1, Tisch 17, Nummer 4
|
||||
Ben Brandt = Hof 1, Tisch 17, Nummer 5
|
||||
Anton Vogel = Hof 1, Tisch 17, Nummer 6
|
||||
Ben Brandt = Hof 1, Tisch 17, Nummer 1
|
||||
Paul Brandt = Hof 1, Tisch 17, Nummer 2
|
||||
Anton Meyer = Hof 1, Tisch 17, Nummer 3
|
||||
Ida Meyer = Hof 1, Tisch 17, Nummer 4
|
||||
Anton Vogel = Hof 1, Tisch 17, Nummer 5
|
||||
Max Vogel = Hof 1, Tisch 17, Nummer 6
|
||||
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
Vorname;Nachname;Titel;Gruppe;Tisch;Anzahl
|
||||
Julia;Brandt;;Ehrentafel: Brautpaar, Brauteltern, Braeutigameltern, Trauzeugen (fest an Tisch 1);1;
|
||||
Daniel;Sommer;;Ehrentafel: Brautpaar, Brauteltern, Braeutigameltern, Trauzeugen (fest an Tisch 1);1;
|
||||
Werner;Brandt;;Ehrentafel: Brautpaar, Brauteltern, Braeutigameltern, Trauzeugen (fest an Tisch 1);1;
|
||||
Helga;Brandt;;Ehrentafel: Brautpaar, Brauteltern, Braeutigameltern, Trauzeugen (fest an Tisch 1);1;
|
||||
Dieter;Sommer;;Ehrentafel: Brautpaar, Brauteltern, Braeutigameltern, Trauzeugen (fest an Tisch 1);1;
|
||||
Renate;Sommer;;Ehrentafel: Brautpaar, Brauteltern, Braeutigameltern, Trauzeugen (fest an Tisch 1);1;
|
||||
Sarah;Winkler;;Ehrentafel: Brautpaar, Brauteltern, Braeutigameltern, Trauzeugen (fest an Tisch 1);1;
|
||||
Tobias;Frank;;Ehrentafel: Brautpaar, Brauteltern, Braeutigameltern, Trauzeugen (fest an Tisch 1);1;
|
||||
Yusuf;Peters;;Familie Peters (Braut-Seite, Geschwister Melanie);;
|
||||
Melanie;Peters;;Familie Peters (Braut-Seite, Geschwister Melanie);;
|
||||
Daniel;Brandt;;"Familie Brandt (Braut-Seite, Geschwister Daniel): Felix (12 J.) am Kindertisch; Ben (13 J.) am Teenager-Tisch";;
|
||||
Kathrin;Brandt;;"Familie Brandt (Braut-Seite, Geschwister Daniel): Felix (12 J.) am Kindertisch; Ben (13 J.) am Teenager-Tisch";;
|
||||
Dennis;Kraus;;Familie Kraus (Braut-Seite, Geschwister Melanie): Matteo (9 J.) am Kindertisch;;
|
||||
Melanie;Kraus;;Familie Kraus (Braut-Seite, Geschwister Melanie): Matteo (9 J.) am Kindertisch;;
|
||||
Andreas;Brandt;;"Familie Brandt (Braut-Seite, Geschwister Andreas): Theo (3 J.) sitzt bei den Eltern; Anton (10 J.) am Kindertisch; Frieda (12 J.) am Kindertisch; Paul (19 J.) am Teenager-Tisch";;
|
||||
Lena;Brandt;;"Familie Brandt (Braut-Seite, Geschwister Andreas): Theo (3 J.) sitzt bei den Eltern; Anton (10 J.) am Kindertisch; Frieda (12 J.) am Kindertisch; Paul (19 J.) am Teenager-Tisch";;
|
||||
Theo;Brandt;;"Familie Brandt (Braut-Seite, Geschwister Andreas): Theo (3 J.) sitzt bei den Eltern; Anton (10 J.) am Kindertisch; Frieda (12 J.) am Kindertisch; Paul (19 J.) am Teenager-Tisch";;
|
||||
Marco;Meyer;;"Familie Meyer (Braut-Seite, Geschwister Sandra): Mila (10 J.) am Kindertisch; Anton (16 J.) am Teenager-Tisch; Ida (16 J.) am Teenager-Tisch";;
|
||||
Sandra;Meyer;;"Familie Meyer (Braut-Seite, Geschwister Sandra): Mila (10 J.) am Kindertisch; Anton (16 J.) am Teenager-Tisch; Ida (16 J.) am Teenager-Tisch";;
|
||||
Milan;Brandt;;"Familie Brandt (Braut-Seite, Geschwister Milan): Sofia (2 J.) sitzt bei den Eltern; Greta (7 J.) am Kindertisch";;
|
||||
Anja;Brandt;;"Familie Brandt (Braut-Seite, Geschwister Milan): Sofia (2 J.) sitzt bei den Eltern; Greta (7 J.) am Kindertisch";;
|
||||
Sofia;Brandt;;"Familie Brandt (Braut-Seite, Geschwister Milan): Sofia (2 J.) sitzt bei den Eltern; Greta (7 J.) am Kindertisch";;
|
||||
Yusuf;Vogel;;"Familie Vogel (Braut-Seite, Geschwister Sandra): Anton (14 J.) am Teenager-Tisch; Max (15 J.) am Teenager-Tisch";;
|
||||
Sandra;Vogel;;"Familie Vogel (Braut-Seite, Geschwister Sandra): Anton (14 J.) am Teenager-Tisch; Max (15 J.) am Teenager-Tisch";;
|
||||
Dennis;Sommer;;"Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Lina (3 J.) sitzt bei den Eltern; Theo (8 J.) am Kindertisch; Max (12 J.) am Kindertisch";;
|
||||
Nicole;Sommer;;"Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Lina (3 J.) sitzt bei den Eltern; Theo (8 J.) am Kindertisch; Max (12 J.) am Kindertisch";;
|
||||
Lina;Sommer;;"Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Lina (3 J.) sitzt bei den Eltern; Theo (8 J.) am Kindertisch; Max (12 J.) am Kindertisch";;
|
||||
Timo;Kuhn;;Familie Kuhn (Braeutigam-Seite, Geschwister Sarah): Leni (10 J.) am Kindertisch;;
|
||||
Sarah;Kuhn;;Familie Kuhn (Braeutigam-Seite, Geschwister Sarah): Leni (10 J.) am Kindertisch;;
|
||||
Dennis;Sommer;;"Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Emil (8 J.) am Kindertisch; Ida (8 J.) am Kindertisch";;
|
||||
Jennifer;Sommer;;"Familie Sommer (Braeutigam-Seite, Geschwister Dennis): Emil (8 J.) am Kindertisch; Ida (8 J.) am Kindertisch";;
|
||||
Yusuf;Schwarz;;"Familie Schwarz (Braeutigam-Seite, Geschwister Sarah): Liam (8 J.) am Kindertisch; Elias (8 J.) am Kindertisch";;
|
||||
Sarah;Schwarz;;"Familie Schwarz (Braeutigam-Seite, Geschwister Sarah): Liam (8 J.) am Kindertisch; Elias (8 J.) am Kindertisch";;
|
||||
Horst;Aydin;;Onkel und Tante (Braut-Seite);;
|
||||
Ursula;Aydin;;Onkel und Tante (Braut-Seite);;
|
||||
Ingrid;Demir;;Onkel und Tante mit Cousine (Braut-Seite);;
|
||||
Monika;Demir;;Onkel und Tante mit Cousine (Braut-Seite);;
|
||||
Hannelore;Demir;;Onkel und Tante mit Cousine (Braut-Seite);;
|
||||
Heinz;Fischer;;Onkel und Tante (Braeutigam-Seite);;
|
||||
Helga;Fischer;;Onkel und Tante (Braeutigam-Seite);;
|
||||
Heinz;Tran;;Grosstante mit Begleitung;;
|
||||
Erika;Erdem;;Grosstante mit Begleitung;;
|
||||
Nicole;Fischer;;Studienfreunde der Braut;;
|
||||
Matthias;Polat;;Studienfreunde der Braut;;
|
||||
Christian;Esposito;;Studienfreunde der Braut;;
|
||||
Lena;Hoffmann;;Studienfreunde der Braut;;
|
||||
Timo;Wagner;;Studienfreunde der Braut;;
|
||||
Nicole;Dietrich;;Studienfreunde der Braut;;
|
||||
Wolfgang;Hansen;;Kegelclub des Brautvaters;;
|
||||
Hannelore;Barth;;Kegelclub des Brautvaters;;
|
||||
Erika;Frank;;Kegelclub des Brautvaters;;
|
||||
Gerhard;Erdem;;Kegelclub des Brautvaters;;
|
||||
Rainer;Erdem;;Kegelclub des Brautvaters;;
|
||||
Gisela;Esposito;;Kegelclub des Brautvaters;;
|
||||
Brigitte;Franke;;Kegelclub des Brautvaters;;
|
||||
Wolfgang;Meyer;;Kegelclub des Brautvaters;;
|
||||
Elif;Demir;;Arbeitskolleginnen der Braut;;
|
||||
Jennifer;Simon;;Arbeitskolleginnen der Braut;;
|
||||
Andreas;Stein;;Arbeitskolleginnen der Braut;;
|
||||
Stefan;Klein;;Arbeitskolleginnen der Braut;;
|
||||
Timo;Frank;;Arbeitskolleginnen der Braut;;
|
||||
Daniel;Wagner;;Arbeitskolleginnen der Braut;;
|
||||
Stefanie;Simon;;Arbeitskolleginnen der Braut;;
|
||||
Nadine;Frank;;Arbeitskollegen des Braeutigams;;
|
||||
Markus;Schmitt;;Arbeitskollegen des Braeutigams;;
|
||||
Olga;Yilmaz;;Arbeitskollegen des Braeutigams;;
|
||||
Olga;Hansen;;Arbeitskollegen des Braeutigams;;
|
||||
Daniel;Horn;;Arbeitskollegen des Braeutigams;;
|
||||
Milan;Lange;;Arbeitskollegen des Braeutigams;;
|
||||
Guenter;Schwarz;;Nachbarn der Brauteltern;;
|
||||
Rainer;Aksoy;;Nachbarn der Brauteltern;;
|
||||
Renate;Aksoy;;Nachbarn der Brauteltern;;
|
||||
Werner;Stein;;Nachbarn der Brauteltern;;
|
||||
Sergej;Berger;;Fussballverein des Braeutigams;;
|
||||
Giovanna;Kovac;;Fussballverein des Braeutigams;;
|
||||
Dennis;Schmidt;;Fussballverein des Braeutigams;;
|
||||
Patrick;Simon;;Fussballverein des Braeutigams;;
|
||||
Stefanie;Busch;;Fussballverein des Braeutigams;;
|
||||
Andreas;Koch;;Fussballverein des Braeutigams;;
|
||||
Svenja;Vogel;;Fussballverein des Braeutigams;;
|
||||
Giovanna;Koch;;Fussballverein des Braeutigams;;
|
||||
Julia;Esposito;;Fussballverein des Braeutigams;;
|
||||
Jennifer;Dietrich;;Freundinnen aus der Schulzeit;;
|
||||
Christian;Meyer;;Freundinnen aus der Schulzeit;;
|
||||
Svenja;Horn;;Freundinnen aus der Schulzeit;;
|
||||
Stefanie;Roth;;Freundinnen aus der Schulzeit;;
|
||||
Stefan;Kuhn;;Freundinnen aus der Schulzeit;;
|
||||
Felix;Brandt;;Kindertisch (5-12 Jahre, fest an Tisch 16);16;
|
||||
Matteo;Kraus;;Kindertisch (5-12 Jahre, fest an Tisch 16);16;
|
||||
Anton;Brandt;;Kindertisch (5-12 Jahre, fest an Tisch 16);16;
|
||||
Frieda;Brandt;;Kindertisch (5-12 Jahre, fest an Tisch 16);16;
|
||||
Mila;Meyer;;Kindertisch (5-12 Jahre, fest an Tisch 16);16;
|
||||
Greta;Brandt;;Kindertisch (5-12 Jahre, fest an Tisch 16);16;
|
||||
Theo;Sommer;;Kindertisch (5-12 Jahre, fest an Tisch 16);16;
|
||||
Max;Sommer;;Kindertisch (5-12 Jahre, fest an Tisch 16);16;
|
||||
Leni;Kuhn;;Kindertisch (5-12 Jahre, fest an Tisch 16);16;
|
||||
Emil;Sommer;;Kindertisch (5-12 Jahre, fest an Tisch 16);16;
|
||||
Ida;Sommer;;Kindertisch (5-12 Jahre, fest an Tisch 16);16;
|
||||
Liam;Schwarz;;Kindertisch (5-12 Jahre, fest an Tisch 16);16;
|
||||
Elias;Schwarz;;Kindertisch (5-12 Jahre, fest an Tisch 16);16;
|
||||
Ben;Brandt;;Teenager-Tisch (13-19 Jahre, fest an Tisch 17);17;
|
||||
Paul;Brandt;;Teenager-Tisch (13-19 Jahre, fest an Tisch 17);17;
|
||||
Anton;Meyer;;Teenager-Tisch (13-19 Jahre, fest an Tisch 17);17;
|
||||
Ida;Meyer;;Teenager-Tisch (13-19 Jahre, fest an Tisch 17);17;
|
||||
Anton;Vogel;;Teenager-Tisch (13-19 Jahre, fest an Tisch 17);17;
|
||||
Max;Vogel;;Teenager-Tisch (13-19 Jahre, fest an Tisch 17);17;
|
||||
Gast;Musikverein;;Musikverein (anonyme Sammelbuchung, 13 Karten);;13
|
||||
Sven;Fischer;;alleinreisender Gast;;
|
||||
|
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
@@ -5,21 +5,21 @@
|
||||
<line x1="60" y1="60" x2="60" y2="390.0" stroke="#333" stroke-width="1.5"/>
|
||||
<line x1="60" y1="390.0" x2="840" y2="390.0" stroke="#333" stroke-width="1.5"/>
|
||||
<line x1="60" y1="390.0" x2="840" y2="390.0" stroke="#eee" stroke-width="1"/>
|
||||
<text x="52" y="394.0" text-anchor="end" font-size="11" fill="#666">-1209</text>
|
||||
<text x="52" y="394.0" text-anchor="end" font-size="11" fill="#666">-1093</text>
|
||||
<line x1="60" y1="324.0" x2="840" y2="324.0" stroke="#eee" stroke-width="1"/>
|
||||
<text x="52" y="328.0" text-anchor="end" font-size="11" fill="#666">-1084</text>
|
||||
<text x="52" y="328.0" text-anchor="end" font-size="11" fill="#666">-986</text>
|
||||
<line x1="60" y1="258.0" x2="840" y2="258.0" stroke="#eee" stroke-width="1"/>
|
||||
<text x="52" y="262.0" text-anchor="end" font-size="11" fill="#666">-959</text>
|
||||
<text x="52" y="262.0" text-anchor="end" font-size="11" fill="#666">-878</text>
|
||||
<line x1="60" y1="192.0" x2="840" y2="192.0" stroke="#eee" stroke-width="1"/>
|
||||
<text x="52" y="196.0" text-anchor="end" font-size="11" fill="#666">-835</text>
|
||||
<text x="52" y="196.0" text-anchor="end" font-size="11" fill="#666">-770</text>
|
||||
<line x1="60" y1="126.0" x2="840" y2="126.0" stroke="#eee" stroke-width="1"/>
|
||||
<text x="52" y="130.0" text-anchor="end" font-size="11" fill="#666">-710</text>
|
||||
<text x="52" y="130.0" text-anchor="end" font-size="11" fill="#666">-663</text>
|
||||
<line x1="60" y1="60.0" x2="840" y2="60.0" stroke="#eee" stroke-width="1"/>
|
||||
<text x="52" y="64.0" text-anchor="end" font-size="11" fill="#666">-585</text>
|
||||
<text x="52" y="64.0" text-anchor="end" font-size="11" fill="#666">-555</text>
|
||||
<text x="18" y="225.0" text-anchor="middle" font-size="12" fill="#333" transform="rotate(-90 18 225.0)">Wertigkeit (hoeher = besser)</text>
|
||||
<polyline points="60.0,148.4 97.1,114.1 134.3,114.1 171.4,114.1 208.6,94.7 245.7,94.7 282.9,94.7 320.0,74.0 357.1,74.0 394.3,74.0 431.4,60.5 468.6,60.5 505.7,60.5 542.9,60.0 580.0,60.0 617.1,60.0 654.3,60.0 691.4,60.0 728.6,60.0 765.7,60.0 802.9,60.0 840.0,60.0" fill="none" stroke="#2f6f4f" stroke-width="2"/>
|
||||
<polyline points="60.0,254.4 97.1,213.4 134.3,227.0 171.4,159.2 208.6,137.3 245.7,144.6 282.9,115.4 320.0,98.2 357.1,104.0 394.3,85.8 431.4,77.2 468.6,80.1 505.7,71.3 542.9,71.0 580.0,71.1 617.1,66.0 654.3,66.0 691.4,66.0 728.6,60.8 765.7,60.8 802.9,60.8 840.0,60.1" fill="none" stroke="#c08a2d" stroke-width="2"/>
|
||||
<polyline points="60.0,390.0 97.1,328.5 134.3,390.0 171.4,190.5 208.6,177.5 245.7,190.5 282.9,129.1 320.0,129.3 357.1,129.3 394.3,94.7 431.4,94.8 468.6,94.8 505.7,74.0 542.9,76.1 580.0,76.1 617.1,69.4 654.3,69.4 691.4,69.4 728.6,66.2 765.7,66.2 802.9,66.2 840.0,60.5" fill="none" stroke="#a03030" stroke-width="2"/>
|
||||
<polyline points="60.0,167.5 97.1,117.4 134.3,117.4 171.4,117.4 208.6,84.9 245.7,84.9 282.9,84.9 320.0,66.0 357.1,66.0 394.3,66.0 431.4,60.0 468.6,60.0 505.7,60.0 542.9,60.1 580.0,60.0 617.1,60.0 654.3,60.1 691.4,60.0 728.6,60.0 765.7,60.1 802.9,60.0 840.0,60.0" fill="none" stroke="#2f6f4f" stroke-width="2"/>
|
||||
<polyline points="60.0,263.3 97.1,218.5 134.3,233.5 171.4,160.6 208.6,135.5 245.7,143.9 282.9,113.1 320.0,99.0 357.1,103.7 394.3,82.5 431.4,81.0 468.6,81.5 505.7,67.0 542.9,77.4 580.0,73.9 617.1,62.4 654.3,78.8 691.4,73.4 728.6,60.8 765.7,72.5 802.9,68.6 840.0,60.2" fill="none" stroke="#c08a2d" stroke-width="2"/>
|
||||
<polyline points="60.0,390.0 97.1,350.3 134.3,390.0 171.4,190.0 208.6,193.0 245.7,193.0 282.9,125.9 320.0,142.2 357.1,142.2 394.3,93.9 431.4,105.3 468.6,105.3 505.7,75.0 542.9,101.0 580.0,101.0 617.1,66.0 654.3,99.2 691.4,99.2 728.6,62.0 765.7,94.7 802.9,94.7 840.0,60.2" fill="none" stroke="#a03030" stroke-width="2"/>
|
||||
<line x1="680" y1="70" x2="704" y2="70" stroke="#2f6f4f" stroke-width="2"/>
|
||||
<text x="710" y="74" font-size="11" fill="#333">beste Loesung</text>
|
||||
<line x1="680" y1="88" x2="704" y2="88" stroke="#c08a2d" stroke-width="2"/>
|
||||
|
||||
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
@@ -1,300 +1,300 @@
|
||||
Aksoy, Luca, = Hof 1, Tisch 22, Nummer 3
|
||||
Aksoy, Marie, = Hof 1, Tisch 22, Nummer 2
|
||||
Aksoy, Marija, = Hof 2, Tisch 75, Nummer 2
|
||||
Aksoy, Michael, Dr. = Hof 2, Tisch 49, Nummer 4
|
||||
Aksoy, Nadine, = Hof 1, Tisch 31, Nummer 2
|
||||
Aksoy, Nicole, = Hof 2, Tisch 56, Nummer 3
|
||||
Aksoy, Sergej, = Hof 1, Tisch 31, Nummer 4
|
||||
Aksoy, Sofia, = Hof 1, Tisch 31, Nummer 3
|
||||
Aksoy, Thomas, = Hof 1, Tisch 22, Nummer 4
|
||||
Albrecht, Andreas, = Hof 1, Tisch 8, Nummer 3
|
||||
Albrecht, Emre, Prof. Dr. = Hof 2, Tisch 80, Nummer 4
|
||||
Albrecht, Sarah, = Hof 1, Tisch 8, Nummer 5
|
||||
Albrecht, Yusuf, Prof. Dr. = Hof 1, Tisch 24, Nummer 3
|
||||
Arnold, Christian, = Hof 2, Tisch 46, Nummer 2
|
||||
Arnold, Jennifer, = Hof 2, Tisch 46, Nummer 3
|
||||
Arnold, Jennifer, Dr. = Hof 2, Tisch 80, Nummer 5
|
||||
Arnold, Leni, = Hof 2, Tisch 57, Nummer 3
|
||||
Arnold, Mila, = Hof 2, Tisch 46, Nummer 4
|
||||
Arnold, Nadine, = Hof 2, Tisch 67, Nummer 3
|
||||
Arnold, Patrick, = Hof 2, Tisch 57, Nummer 2
|
||||
Barth, Lina, = Hof 2, Tisch 63, Nummer 4
|
||||
Barth, Markus, = Hof 1, Tisch 26, Nummer 3
|
||||
Barth, Nadine, = Hof 2, Tisch 63, Nummer 3
|
||||
Barth, Patrick, = Hof 2, Tisch 63, Nummer 2
|
||||
Barth, Timo, = Hof 2, Tisch 63, Nummer 5
|
||||
Bauer, Dragana, = Hof 1, Tisch 42, Nummer 2
|
||||
Bauer, Yusuf, = Hof 1, Tisch 2, Nummer 5
|
||||
Becker, Jan, = Hof 2, Tisch 77, Nummer 4
|
||||
Becker, Marija, = Hof 2, Tisch 62, Nummer 4
|
||||
Becker, Nicole, = Hof 2, Tisch 77, Nummer 2
|
||||
Becker, Sandra, = Hof 2, Tisch 77, Nummer 3
|
||||
Berger, Andreas, = Hof 1, Tisch 32, Nummer 5
|
||||
Berger, Anton, = Hof 1, Tisch 23, Nummer 4
|
||||
Berger, Jennifer, = Hof 1, Tisch 32, Nummer 4
|
||||
Berger, Layla, = Hof 1, Tisch 23, Nummer 3
|
||||
Berger, Nadine, Dr. = Hof 1, Tisch 12, Nummer 2
|
||||
Berger, Stefan, = Hof 1, Tisch 32, Nummer 3
|
||||
Berger, Svenja, = Hof 1, Tisch 32, Nummer 2
|
||||
Bianchi, Jan, Dr. = Hof 1, Tisch 2, Nummer 2
|
||||
Bianchi, Mia, = Hof 2, Tisch 52, Nummer 2
|
||||
Bianchi, Sandra, = Hof 2, Tisch 52, Nummer 3
|
||||
Bianchi, Thomas, = Hof 2, Tisch 52, Nummer 4
|
||||
Bianchi, Thomas, = Hof 2, Tisch 72, Nummer 2
|
||||
Braun, Christian, = Hof 1, Tisch 38, Nummer 2
|
||||
Braun, Dragana, = Hof 1, Tisch 38, Nummer 3
|
||||
Braun, Jan, = Hof 1, Tisch 45, Nummer 4
|
||||
Braun, Julia, = Hof 1, Tisch 38, Nummer 4
|
||||
Braun, Milan, = Hof 1, Tisch 45, Nummer 3
|
||||
Braun, Nadine, = Hof 1, Tisch 45, Nummer 2
|
||||
Busch, Emre, = Hof 2, Tisch 61, Nummer 2
|
||||
Busch, Marie, = Hof 2, Tisch 61, Nummer 4
|
||||
Busch, Michael, = Hof 2, Tisch 61, Nummer 3
|
||||
Busch, Olga, = Hof 2, Tisch 61, Nummer 5
|
||||
Busch, Patrick, = Hof 2, Tisch 48, Nummer 4
|
||||
Celik, Elif, = Hof 1, Tisch 24, Nummer 2
|
||||
Celik, Patrick, = Hof 1, Tisch 24, Nummer 4
|
||||
Dallmann, Charlotte, = Hof 1, Tisch 7, Nummer 2
|
||||
Dallmann, Heinrich, = Hof 1, Tisch 7, Nummer 5
|
||||
Dallmann, Margarete, = Hof 1, Tisch 7, Nummer 4
|
||||
Dallmann, Maximilian, = Hof 1, Tisch 7, Nummer 3
|
||||
Demir, Sandra, Dr. = Hof 1, Tisch 33, Nummer 5
|
||||
Dietrich, Dragana, Prof. Dr. = Hof 2, Tisch 49, Nummer 3
|
||||
Dietrich, Jennifer, = Hof 1, Tisch 18, Nummer 4
|
||||
Dietrich, Marco, = Hof 1, Tisch 18, Nummer 3
|
||||
Dietrich, Sofia, = Hof 1, Tisch 18, Nummer 2
|
||||
Engel, Anja, = Hof 2, Tisch 87, Nummer 4
|
||||
Engel, Anton, = Hof 2, Tisch 80, Nummer 3
|
||||
Engel, Julia, = Hof 2, Tisch 80, Nummer 2
|
||||
Engel, Nicole, = Hof 2, Tisch 87, Nummer 2
|
||||
Engel, Yusuf, = Hof 2, Tisch 87, Nummer 3
|
||||
Esposito, Jan, Dr. = Hof 1, Tisch 15, Nummer 4
|
||||
Esposito, Yusuf, Prof. Dr. = Hof 2, Tisch 62, Nummer 3
|
||||
Frank, Dennis, = Hof 1, Tisch 43, Nummer 2
|
||||
Frank, Finn, = Hof 1, Tisch 44, Nummer 4
|
||||
Frank, Lena, = Hof 1, Tisch 44, Nummer 3
|
||||
Frank, Marie, = Hof 1, Tisch 43, Nummer 5
|
||||
Frank, Nadine, = Hof 1, Tisch 44, Nummer 2
|
||||
Franke, Amira, = Hof 1, Tisch 20, Nummer 2
|
||||
Franke, Julia, = Hof 1, Tisch 37, Nummer 3
|
||||
Franke, Marco, = Hof 1, Tisch 20, Nummer 4
|
||||
Franke, Michael, = Hof 1, Tisch 37, Nummer 2
|
||||
Franke, Olga, = Hof 1, Tisch 20, Nummer 3
|
||||
Freifrau von Waldeck, Antonia, = Hof 1, Tisch 6, Nummer 2
|
||||
Freiherr von Waldeck, Konstantin, Dr. = Hof 1, Tisch 6, Nummer 4
|
||||
Grothe, Alexander, Dr. h.c. = Hof 1, Tisch 5, Nummer 5
|
||||
Aksoy, Luca, = Hof 1, Tisch 33, Nummer 2
|
||||
Aksoy, Marie, = Hof 1, Tisch 25, Nummer 4
|
||||
Aksoy, Marija, = Hof 2, Tisch 59, Nummer 5
|
||||
Aksoy, Michael, Dr. = Hof 2, Tisch 53, Nummer 3
|
||||
Aksoy, Nadine, = Hof 1, Tisch 25, Nummer 2
|
||||
Aksoy, Nicole, = Hof 2, Tisch 57, Nummer 4
|
||||
Aksoy, Sergej, = Hof 1, Tisch 33, Nummer 4
|
||||
Aksoy, Sofia, = Hof 1, Tisch 33, Nummer 3
|
||||
Aksoy, Thomas, = Hof 1, Tisch 25, Nummer 3
|
||||
Albrecht, Andreas, = Hof 1, Tisch 12, Nummer 4
|
||||
Albrecht, Emre, Prof. Dr. = Hof 2, Tisch 82, Nummer 3
|
||||
Albrecht, Sarah, = Hof 1, Tisch 12, Nummer 3
|
||||
Albrecht, Yusuf, Prof. Dr. = Hof 1, Tisch 13, Nummer 2
|
||||
Arnold, Christian, = Hof 1, Tisch 35, Nummer 3
|
||||
Arnold, Jennifer, = Hof 1, Tisch 43, Nummer 2
|
||||
Arnold, Jennifer, Dr. = Hof 2, Tisch 88, Nummer 3
|
||||
Arnold, Leni, = Hof 1, Tisch 35, Nummer 2
|
||||
Arnold, Mila, = Hof 1, Tisch 35, Nummer 4
|
||||
Arnold, Nadine, = Hof 2, Tisch 65, Nummer 2
|
||||
Arnold, Patrick, = Hof 1, Tisch 43, Nummer 3
|
||||
Barth, Lina, = Hof 2, Tisch 74, Nummer 5
|
||||
Barth, Markus, = Hof 1, Tisch 39, Nummer 2
|
||||
Barth, Nadine, = Hof 2, Tisch 74, Nummer 3
|
||||
Barth, Patrick, = Hof 2, Tisch 74, Nummer 2
|
||||
Barth, Timo, = Hof 2, Tisch 74, Nummer 4
|
||||
Bauer, Dragana, = Hof 1, Tisch 45, Nummer 4
|
||||
Bauer, Yusuf, = Hof 1, Tisch 4, Nummer 4
|
||||
Becker, Jan, = Hof 1, Tisch 14, Nummer 3
|
||||
Becker, Marija, = Hof 2, Tisch 76, Nummer 3
|
||||
Becker, Nicole, = Hof 1, Tisch 14, Nummer 2
|
||||
Becker, Sandra, = Hof 1, Tisch 14, Nummer 4
|
||||
Berger, Andreas, = Hof 1, Tisch 24, Nummer 2
|
||||
Berger, Anton, = Hof 1, Tisch 32, Nummer 3
|
||||
Berger, Jennifer, = Hof 1, Tisch 32, Nummer 2
|
||||
Berger, Layla, = Hof 1, Tisch 32, Nummer 4
|
||||
Berger, Nadine, Dr. = Hof 1, Tisch 26, Nummer 3
|
||||
Berger, Stefan, = Hof 1, Tisch 32, Nummer 5
|
||||
Berger, Svenja, = Hof 1, Tisch 24, Nummer 5
|
||||
Bianchi, Jan, Dr. = Hof 1, Tisch 4, Nummer 5
|
||||
Bianchi, Mia, = Hof 2, Tisch 54, Nummer 4
|
||||
Bianchi, Sandra, = Hof 2, Tisch 54, Nummer 2
|
||||
Bianchi, Thomas, = Hof 2, Tisch 54, Nummer 3
|
||||
Bianchi, Thomas, = Hof 2, Tisch 82, Nummer 4
|
||||
Braun, Christian, = Hof 1, Tisch 42, Nummer 4
|
||||
Braun, Dragana, = Hof 1, Tisch 42, Nummer 3
|
||||
Braun, Jan, = Hof 1, Tisch 42, Nummer 2
|
||||
Braun, Julia, = Hof 1, Tisch 41, Nummer 2
|
||||
Braun, Milan, = Hof 1, Tisch 41, Nummer 3
|
||||
Braun, Nadine, = Hof 1, Tisch 41, Nummer 4
|
||||
Busch, Emre, = Hof 2, Tisch 56, Nummer 3
|
||||
Busch, Marie, = Hof 2, Tisch 56, Nummer 4
|
||||
Busch, Michael, = Hof 2, Tisch 56, Nummer 5
|
||||
Busch, Olga, = Hof 2, Tisch 56, Nummer 2
|
||||
Busch, Patrick, = Hof 2, Tisch 64, Nummer 3
|
||||
Celik, Elif, = Hof 1, Tisch 24, Nummer 4
|
||||
Celik, Patrick, = Hof 1, Tisch 24, Nummer 3
|
||||
Dallmann, Charlotte, = Hof 1, Tisch 7, Nummer 5
|
||||
Dallmann, Heinrich, = Hof 1, Tisch 7, Nummer 2
|
||||
Dallmann, Margarete, = Hof 1, Tisch 7, Nummer 3
|
||||
Dallmann, Maximilian, = Hof 1, Tisch 7, Nummer 4
|
||||
Demir, Sandra, Dr. = Hof 1, Tisch 28, Nummer 3
|
||||
Dietrich, Dragana, Prof. Dr. = Hof 2, Tisch 53, Nummer 2
|
||||
Dietrich, Jennifer, = Hof 1, Tisch 27, Nummer 2
|
||||
Dietrich, Marco, = Hof 1, Tisch 27, Nummer 3
|
||||
Dietrich, Sofia, = Hof 1, Tisch 27, Nummer 4
|
||||
Engel, Anja, = Hof 1, Tisch 21, Nummer 3
|
||||
Engel, Anton, = Hof 1, Tisch 20, Nummer 5
|
||||
Engel, Julia, = Hof 1, Tisch 20, Nummer 4
|
||||
Engel, Nicole, = Hof 1, Tisch 21, Nummer 2
|
||||
Engel, Yusuf, = Hof 1, Tisch 21, Nummer 4
|
||||
Esposito, Jan, Dr. = Hof 1, Tisch 17, Nummer 3
|
||||
Esposito, Yusuf, Prof. Dr. = Hof 2, Tisch 76, Nummer 2
|
||||
Frank, Dennis, = Hof 2, Tisch 88, Nummer 5
|
||||
Frank, Finn, = Hof 2, Tisch 87, Nummer 4
|
||||
Frank, Lena, = Hof 2, Tisch 87, Nummer 2
|
||||
Frank, Marie, = Hof 2, Tisch 87, Nummer 3
|
||||
Frank, Nadine, = Hof 2, Tisch 88, Nummer 4
|
||||
Franke, Amira, = Hof 2, Tisch 69, Nummer 3
|
||||
Franke, Julia, = Hof 2, Tisch 78, Nummer 5
|
||||
Franke, Marco, = Hof 2, Tisch 69, Nummer 4
|
||||
Franke, Michael, = Hof 2, Tisch 78, Nummer 4
|
||||
Franke, Olga, = Hof 2, Tisch 69, Nummer 2
|
||||
Freifrau von Waldeck, Antonia, = Hof 1, Tisch 6, Nummer 4
|
||||
Freiherr von Waldeck, Konstantin, Dr. = Hof 1, Tisch 6, Nummer 3
|
||||
Grothe, Alexander, Dr. h.c. = Hof 1, Tisch 5, Nummer 2
|
||||
Grothe, Beate, = Hof 1, Tisch 5, Nummer 3
|
||||
Haas, Jennifer, Dr. = Hof 1, Tisch 26, Nummer 4
|
||||
Haas, Patrick, = Hof 1, Tisch 42, Nummer 5
|
||||
Hansen, Giovanna, = Hof 1, Tisch 29, Nummer 2
|
||||
Hansen, Markus, = Hof 1, Tisch 29, Nummer 3
|
||||
Hansen, Nicole, Dr. = Hof 1, Tisch 43, Nummer 4
|
||||
Hansen, Olga, = Hof 1, Tisch 29, Nummer 4
|
||||
Hansen, Thomas, = Hof 1, Tisch 15, Nummer 3
|
||||
Hartmann, Deniz, = Hof 2, Tisch 84, Nummer 2
|
||||
Hartmann, Marija, = Hof 2, Tisch 84, Nummer 3
|
||||
Hartmann, Nadine, = Hof 2, Tisch 84, Nummer 4
|
||||
Hartmann, Olga, = Hof 2, Tisch 85, Nummer 5
|
||||
Hartmann, Thomas, = Hof 2, Tisch 85, Nummer 3
|
||||
Hoffmann, Emre, = Hof 2, Tisch 49, Nummer 5
|
||||
Hoffmann, Patrick, Prof. Dr. = Hof 2, Tisch 67, Nummer 2
|
||||
Hoffmann, Thomas, Dr. = Hof 2, Tisch 50, Nummer 3
|
||||
Horn, Kathrin, = Hof 2, Tisch 78, Nummer 4
|
||||
Horn, Layla, = Hof 2, Tisch 78, Nummer 5
|
||||
Horn, Leon, = Hof 2, Tisch 78, Nummer 2
|
||||
Horn, Michael, = Hof 2, Tisch 78, Nummer 3
|
||||
Kaya, Christina, = Hof 2, Tisch 69, Nummer 3
|
||||
Kaya, Luca, = Hof 2, Tisch 69, Nummer 4
|
||||
Kaya, Nicole, = Hof 2, Tisch 69, Nummer 2
|
||||
Kaya, Patrick, Dr. = Hof 1, Tisch 2, Nummer 4
|
||||
Kaya, Timo, Prof. Dr. = Hof 1, Tisch 33, Nummer 4
|
||||
Haas, Jennifer, Dr. = Hof 1, Tisch 31, Nummer 3
|
||||
Haas, Patrick, = Hof 1, Tisch 45, Nummer 2
|
||||
Hansen, Giovanna, = Hof 1, Tisch 8, Nummer 2
|
||||
Hansen, Markus, = Hof 1, Tisch 8, Nummer 3
|
||||
Hansen, Nicole, Dr. = Hof 1, Tisch 38, Nummer 2
|
||||
Hansen, Olga, = Hof 1, Tisch 8, Nummer 4
|
||||
Hansen, Thomas, = Hof 1, Tisch 16, Nummer 2
|
||||
Hartmann, Deniz, = Hof 2, Tisch 78, Nummer 2
|
||||
Hartmann, Marija, = Hof 2, Tisch 84, Nummer 2
|
||||
Hartmann, Nadine, = Hof 2, Tisch 78, Nummer 3
|
||||
Hartmann, Olga, = Hof 2, Tisch 84, Nummer 4
|
||||
Hartmann, Thomas, = Hof 2, Tisch 84, Nummer 3
|
||||
Hoffmann, Emre, = Hof 2, Tisch 64, Nummer 4
|
||||
Hoffmann, Patrick, Prof. Dr. = Hof 2, Tisch 65, Nummer 4
|
||||
Hoffmann, Thomas, Dr. = Hof 2, Tisch 51, Nummer 3
|
||||
Horn, Kathrin, = Hof 2, Tisch 79, Nummer 2
|
||||
Horn, Layla, = Hof 2, Tisch 79, Nummer 4
|
||||
Horn, Leon, = Hof 2, Tisch 79, Nummer 5
|
||||
Horn, Michael, = Hof 2, Tisch 79, Nummer 3
|
||||
Kaya, Christina, = Hof 2, Tisch 77, Nummer 3
|
||||
Kaya, Luca, = Hof 2, Tisch 77, Nummer 2
|
||||
Kaya, Nicole, = Hof 2, Tisch 77, Nummer 4
|
||||
Kaya, Patrick, Dr. = Hof 1, Tisch 3, Nummer 3
|
||||
Kaya, Timo, Prof. Dr. = Hof 1, Tisch 28, Nummer 2
|
||||
Kessler, Ferdinand, Dr. = Hof 1, Tisch 5, Nummer 4
|
||||
Kessler, Viktoria, = Hof 1, Tisch 5, Nummer 2
|
||||
Klein, Emre, = Hof 1, Tisch 1, Nummer 3
|
||||
Klein, Lina, = Hof 2, Tisch 82, Nummer 3
|
||||
Klein, Markus, = Hof 2, Tisch 56, Nummer 2
|
||||
Klein, Milan, = Hof 2, Tisch 82, Nummer 2
|
||||
Klein, Olga, Dr. = Hof 2, Tisch 72, Nummer 4
|
||||
Klein, Stefanie, = Hof 2, Tisch 82, Nummer 4
|
||||
Koch, Emil, = Hof 2, Tisch 48, Nummer 5
|
||||
Koch, Jan, = Hof 2, Tisch 47, Nummer 4
|
||||
Koch, Kathrin, Dr. = Hof 1, Tisch 37, Nummer 4
|
||||
Koch, Marie, = Hof 2, Tisch 48, Nummer 3
|
||||
Koch, Michael, = Hof 2, Tisch 47, Nummer 2
|
||||
Koch, Olga, = Hof 2, Tisch 47, Nummer 3
|
||||
Koch, Sarah, = Hof 2, Tisch 47, Nummer 5
|
||||
Kovac, Anja, = Hof 1, Tisch 27, Nummer 2
|
||||
Kovac, Henry, = Hof 1, Tisch 27, Nummer 3
|
||||
Kovac, Lena, = Hof 1, Tisch 27, Nummer 4
|
||||
Kovac, Luca, = Hof 2, Tisch 65, Nummer 3
|
||||
Kovac, Marco, = Hof 1, Tisch 35, Nummer 4
|
||||
Kovac, Marija, = Hof 1, Tisch 35, Nummer 2
|
||||
Kovac, Matthias, = Hof 2, Tisch 62, Nummer 2
|
||||
Kovac, Tobias, = Hof 1, Tisch 35, Nummer 3
|
||||
Kraus, Markus, = Hof 1, Tisch 10, Nummer 2
|
||||
Kraus, Patrick, Dr. = Hof 2, Tisch 64, Nummer 2
|
||||
Krause, Andreas, = Hof 2, Tisch 83, Nummer 5
|
||||
Krause, Arda, = Hof 2, Tisch 83, Nummer 4
|
||||
Krause, Christina, Dr. = Hof 1, Tisch 2, Nummer 3
|
||||
Krause, Daniel, = Hof 2, Tisch 56, Nummer 4
|
||||
Krause, Dragana, Dr. = Hof 2, Tisch 65, Nummer 5
|
||||
Krause, Emma, = Hof 2, Tisch 83, Nummer 3
|
||||
Krause, Julia, = Hof 2, Tisch 83, Nummer 2
|
||||
Krause, Matthias, = Hof 2, Tisch 54, Nummer 5
|
||||
Krause, Thomas, = Hof 1, Tisch 42, Nummer 3
|
||||
Kuhn, Julia, Dr. = Hof 1, Tisch 37, Nummer 5
|
||||
Lange, Dragana, = Hof 2, Tisch 86, Nummer 4
|
||||
Lange, Jan, = Hof 2, Tisch 86, Nummer 3
|
||||
Lange, Michael, = Hof 2, Tisch 85, Nummer 2
|
||||
Lange, Sergej, = Hof 2, Tisch 49, Nummer 2
|
||||
Lange, Sofia, = Hof 2, Tisch 85, Nummer 4
|
||||
Lange, Svenja, = Hof 2, Tisch 86, Nummer 2
|
||||
Lehmann, Giovanna, = Hof 1, Tisch 19, Nummer 3
|
||||
Lehmann, Layla, = Hof 1, Tisch 8, Nummer 4
|
||||
Lehmann, Markus, = Hof 1, Tisch 19, Nummer 2
|
||||
Lehmann, Milan, = Hof 1, Tisch 8, Nummer 2
|
||||
Lehmann, Nicole, = Hof 1, Tisch 19, Nummer 5
|
||||
Lehmann, Patrick, = Hof 1, Tisch 12, Nummer 3
|
||||
Lehmann, Thomas, = Hof 1, Tisch 19, Nummer 4
|
||||
Ludwig, Aylin, Dr. = Hof 2, Tisch 54, Nummer 2
|
||||
Ludwig, Elias, = Hof 2, Tisch 51, Nummer 3
|
||||
Ludwig, Elif, = Hof 2, Tisch 51, Nummer 2
|
||||
Ludwig, Emre, = Hof 2, Tisch 51, Nummer 5
|
||||
Ludwig, Emre, Prof. Dr. = Hof 2, Tisch 56, Nummer 5
|
||||
Ludwig, Giovanna, = Hof 2, Tisch 51, Nummer 4
|
||||
Maier, Arda, = Hof 2, Tisch 55, Nummer 4
|
||||
Maier, Christian, = Hof 2, Tisch 55, Nummer 3
|
||||
Maier, Olga, = Hof 2, Tisch 55, Nummer 2
|
||||
Maier, Sarah, = Hof 2, Tisch 55, Nummer 5
|
||||
Neumann, Jennifer, = Hof 2, Tisch 74, Nummer 4
|
||||
Neumann, Lina, = Hof 2, Tisch 74, Nummer 5
|
||||
Neumann, Matteo, = Hof 2, Tisch 74, Nummer 3
|
||||
Neumann, Thomas, = Hof 2, Tisch 74, Nummer 2
|
||||
Nguyen, Anja, = Hof 2, Tisch 81, Nummer 3
|
||||
Nguyen, Daniel, = Hof 2, Tisch 81, Nummer 2
|
||||
Nguyen, Julia, = Hof 1, Tisch 4, Nummer 3
|
||||
Nguyen, Sofia, = Hof 2, Tisch 81, Nummer 4
|
||||
Nowak, Aylin, = Hof 1, Tisch 41, Nummer 3
|
||||
Nowak, Felix, = Hof 1, Tisch 41, Nummer 4
|
||||
Nowak, Kathrin, = Hof 1, Tisch 34, Nummer 4
|
||||
Nowak, Lina, = Hof 1, Tisch 41, Nummer 5
|
||||
Nowak, Markus, = Hof 1, Tisch 41, Nummer 2
|
||||
Nowak, Noah, = Hof 1, Tisch 34, Nummer 2
|
||||
Ott, Daniel, = Hof 2, Tisch 60, Nummer 2
|
||||
Ott, Hannah, = Hof 2, Tisch 60, Nummer 3
|
||||
Ott, Luca, = Hof 2, Tisch 65, Nummer 4
|
||||
Ott, Matthias, = Hof 2, Tisch 70, Nummer 3
|
||||
Ott, Melanie, = Hof 2, Tisch 60, Nummer 4
|
||||
Ott, Olga, = Hof 2, Tisch 70, Nummer 5
|
||||
Ott, Sergej, Prof. Dr. = Hof 1, Tisch 43, Nummer 3
|
||||
Ott, Yusuf, Prof. Dr. = Hof 1, Tisch 12, Nummer 4
|
||||
Kessler, Viktoria, = Hof 1, Tisch 5, Nummer 5
|
||||
Klein, Emre, = Hof 1, Tisch 3, Nummer 2
|
||||
Klein, Lina, = Hof 1, Tisch 18, Nummer 4
|
||||
Klein, Markus, = Hof 2, Tisch 57, Nummer 5
|
||||
Klein, Milan, = Hof 1, Tisch 18, Nummer 3
|
||||
Klein, Olga, Dr. = Hof 2, Tisch 88, Nummer 2
|
||||
Klein, Stefanie, = Hof 1, Tisch 18, Nummer 2
|
||||
Koch, Emil, = Hof 2, Tisch 48, Nummer 3
|
||||
Koch, Jan, = Hof 2, Tisch 49, Nummer 3
|
||||
Koch, Kathrin, Dr. = Hof 2, Tisch 52, Nummer 4
|
||||
Koch, Marie, = Hof 2, Tisch 49, Nummer 4
|
||||
Koch, Michael, = Hof 2, Tisch 48, Nummer 2
|
||||
Koch, Olga, = Hof 2, Tisch 48, Nummer 4
|
||||
Koch, Sarah, = Hof 2, Tisch 49, Nummer 2
|
||||
Kovac, Anja, = Hof 1, Tisch 36, Nummer 3
|
||||
Kovac, Henry, = Hof 1, Tisch 36, Nummer 4
|
||||
Kovac, Lena, = Hof 1, Tisch 28, Nummer 4
|
||||
Kovac, Luca, = Hof 2, Tisch 62, Nummer 2
|
||||
Kovac, Marco, = Hof 1, Tisch 36, Nummer 2
|
||||
Kovac, Marija, = Hof 1, Tisch 36, Nummer 5
|
||||
Kovac, Matthias, = Hof 2, Tisch 76, Nummer 4
|
||||
Kovac, Tobias, = Hof 1, Tisch 28, Nummer 5
|
||||
Kraus, Markus, = Hof 1, Tisch 11, Nummer 4
|
||||
Kraus, Patrick, Dr. = Hof 2, Tisch 67, Nummer 3
|
||||
Krause, Andreas, = Hof 2, Tisch 63, Nummer 2
|
||||
Krause, Arda, = Hof 2, Tisch 63, Nummer 4
|
||||
Krause, Christina, Dr. = Hof 1, Tisch 3, Nummer 4
|
||||
Krause, Daniel, = Hof 2, Tisch 57, Nummer 3
|
||||
Krause, Dragana, Dr. = Hof 2, Tisch 62, Nummer 3
|
||||
Krause, Emma, = Hof 2, Tisch 63, Nummer 3
|
||||
Krause, Julia, = Hof 2, Tisch 63, Nummer 5
|
||||
Krause, Matthias, = Hof 2, Tisch 58, Nummer 3
|
||||
Krause, Thomas, = Hof 1, Tisch 38, Nummer 3
|
||||
Kuhn, Julia, Dr. = Hof 2, Tisch 52, Nummer 5
|
||||
Lange, Dragana, = Hof 1, Tisch 43, Nummer 4
|
||||
Lange, Jan, = Hof 1, Tisch 44, Nummer 2
|
||||
Lange, Michael, = Hof 1, Tisch 43, Nummer 5
|
||||
Lange, Sergej, = Hof 2, Tisch 64, Nummer 5
|
||||
Lange, Sofia, = Hof 1, Tisch 44, Nummer 4
|
||||
Lange, Svenja, = Hof 1, Tisch 44, Nummer 3
|
||||
Lehmann, Giovanna, = Hof 1, Tisch 13, Nummer 3
|
||||
Lehmann, Layla, = Hof 1, Tisch 2, Nummer 2
|
||||
Lehmann, Markus, = Hof 1, Tisch 2, Nummer 5
|
||||
Lehmann, Milan, = Hof 1, Tisch 13, Nummer 4
|
||||
Lehmann, Nicole, = Hof 1, Tisch 2, Nummer 4
|
||||
Lehmann, Patrick, = Hof 1, Tisch 26, Nummer 4
|
||||
Lehmann, Thomas, = Hof 1, Tisch 2, Nummer 3
|
||||
Ludwig, Aylin, Dr. = Hof 2, Tisch 67, Nummer 4
|
||||
Ludwig, Elias, = Hof 1, Tisch 9, Nummer 5
|
||||
Ludwig, Elif, = Hof 1, Tisch 9, Nummer 4
|
||||
Ludwig, Emre, = Hof 1, Tisch 9, Nummer 3
|
||||
Ludwig, Emre, Prof. Dr. = Hof 2, Tisch 57, Nummer 2
|
||||
Ludwig, Giovanna, = Hof 1, Tisch 9, Nummer 2
|
||||
Maier, Arda, = Hof 2, Tisch 61, Nummer 5
|
||||
Maier, Christian, = Hof 2, Tisch 61, Nummer 3
|
||||
Maier, Olga, = Hof 2, Tisch 61, Nummer 4
|
||||
Maier, Sarah, = Hof 2, Tisch 61, Nummer 2
|
||||
Neumann, Jennifer, = Hof 2, Tisch 73, Nummer 2
|
||||
Neumann, Lina, = Hof 2, Tisch 73, Nummer 4
|
||||
Neumann, Matteo, = Hof 2, Tisch 73, Nummer 5
|
||||
Neumann, Thomas, = Hof 2, Tisch 73, Nummer 3
|
||||
Nguyen, Anja, = Hof 1, Tisch 15, Nummer 2
|
||||
Nguyen, Daniel, = Hof 1, Tisch 15, Nummer 3
|
||||
Nguyen, Julia, = Hof 1, Tisch 16, Nummer 4
|
||||
Nguyen, Sofia, = Hof 1, Tisch 15, Nummer 4
|
||||
Nowak, Aylin, = Hof 1, Tisch 37, Nummer 2
|
||||
Nowak, Felix, = Hof 1, Tisch 29, Nummer 2
|
||||
Nowak, Kathrin, = Hof 1, Tisch 29, Nummer 5
|
||||
Nowak, Lina, = Hof 1, Tisch 37, Nummer 4
|
||||
Nowak, Markus, = Hof 1, Tisch 37, Nummer 3
|
||||
Nowak, Noah, = Hof 1, Tisch 37, Nummer 5
|
||||
Ott, Daniel, = Hof 2, Tisch 80, Nummer 5
|
||||
Ott, Hannah, = Hof 2, Tisch 72, Nummer 3
|
||||
Ott, Luca, = Hof 2, Tisch 71, Nummer 2
|
||||
Ott, Matthias, = Hof 2, Tisch 72, Nummer 2
|
||||
Ott, Melanie, = Hof 2, Tisch 80, Nummer 4
|
||||
Ott, Olga, = Hof 2, Tisch 72, Nummer 4
|
||||
Ott, Sergej, Prof. Dr. = Hof 1, Tisch 45, Nummer 3
|
||||
Ott, Yusuf, Prof. Dr. = Hof 1, Tisch 26, Nummer 2
|
||||
Peters, Christian, = Hof 1, Tisch 10, Nummer 5
|
||||
Peters, Nicole, = Hof 1, Tisch 42, Nummer 4
|
||||
Petrov, Giovanna, = Hof 1, Tisch 10, Nummer 4
|
||||
Petrov, Kathrin, = Hof 1, Tisch 34, Nummer 3
|
||||
Petrov, Kathrin, Prof. Dr. = Hof 1, Tisch 11, Nummer 4
|
||||
Petrov, Matthias, = Hof 1, Tisch 25, Nummer 3
|
||||
Petrov, Milan, = Hof 1, Tisch 34, Nummer 5
|
||||
Petrov, Sergej, = Hof 2, Tisch 75, Nummer 3
|
||||
Pohl, Dragana, = Hof 2, Tisch 59, Nummer 2
|
||||
Pohl, Emre, = Hof 2, Tisch 59, Nummer 3
|
||||
Pohl, Mia, = Hof 2, Tisch 59, Nummer 4
|
||||
Pohl, Theo, = Hof 2, Tisch 59, Nummer 5
|
||||
Polat, Kathrin, = Hof 2, Tisch 75, Nummer 5
|
||||
Polat, Katrin, = Hof 2, Tisch 70, Nummer 2
|
||||
Polat, Marija, = Hof 2, Tisch 67, Nummer 4
|
||||
Polat, Markus, = Hof 2, Tisch 70, Nummer 4
|
||||
Polat, Sarah, = Hof 2, Tisch 71, Nummer 2
|
||||
Polat, Stefan, = Hof 2, Tisch 71, Nummer 3
|
||||
Polat, Stefanie, = Hof 2, Tisch 71, Nummer 4
|
||||
Popescu, Matthias, = Hof 1, Tisch 23, Nummer 2
|
||||
Richter, Anja, = Hof 1, Tisch 39, Nummer 5
|
||||
Richter, Anja, Prof. Dr. = Hof 1, Tisch 9, Nummer 3
|
||||
Richter, Anton, = Hof 1, Tisch 39, Nummer 4
|
||||
Richter, Greta, = Hof 1, Tisch 39, Nummer 3
|
||||
Richter, Julia, Prof. Dr. = Hof 1, Tisch 25, Nummer 4
|
||||
Richter, Marco, = Hof 2, Tisch 67, Nummer 5
|
||||
Richter, Matthias, = Hof 1, Tisch 39, Nummer 2
|
||||
Richter, Stefan, = Hof 2, Tisch 64, Nummer 4
|
||||
Rossi, Emilia, = Hof 1, Tisch 30, Nummer 3
|
||||
Rossi, Luca, = Hof 1, Tisch 30, Nummer 4
|
||||
Rossi, Melanie, = Hof 1, Tisch 30, Nummer 2
|
||||
Roth, Christian, = Hof 1, Tisch 3, Nummer 4
|
||||
Roth, Julia, Prof. Dr. = Hof 1, Tisch 4, Nummer 5
|
||||
Roth, Olga, = Hof 2, Tisch 72, Nummer 3
|
||||
Roth, Sarah, = Hof 1, Tisch 3, Nummer 2
|
||||
Roth, Sofia, = Hof 1, Tisch 3, Nummer 3
|
||||
Sahin, Kathrin, = Hof 2, Tisch 53, Nummer 5
|
||||
Sahin, Markus, = Hof 2, Tisch 53, Nummer 4
|
||||
Sahin, Nicole, = Hof 2, Tisch 53, Nummer 3
|
||||
Sahin, Patrick, = Hof 2, Tisch 53, Nummer 2
|
||||
Sahin, Thomas, = Hof 1, Tisch 9, Nummer 4
|
||||
Schmidt, Giovanna, = Hof 2, Tisch 76, Nummer 2
|
||||
Schmidt, Marie, = Hof 2, Tisch 76, Nummer 3
|
||||
Schmidt, Matthias, = Hof 2, Tisch 76, Nummer 4
|
||||
Schmidt, Nicole, = Hof 1, Tisch 4, Nummer 4
|
||||
Schmitt, Dennis, Prof. Dr. = Hof 2, Tisch 64, Nummer 5
|
||||
Schmitt, Markus, = Hof 1, Tisch 11, Nummer 2
|
||||
Schmitt, Markus, = Hof 1, Tisch 28, Nummer 4
|
||||
Schmitt, Sarah, = Hof 1, Tisch 28, Nummer 2
|
||||
Schmitt, Sofia, = Hof 1, Tisch 28, Nummer 3
|
||||
Schmitt, Stefan, Prof. Dr. = Hof 1, Tisch 36, Nummer 4
|
||||
Schwarz, Giovanna, = Hof 2, Tisch 54, Nummer 3
|
||||
Seidel, Anja, Dr. = Hof 2, Tisch 50, Nummer 5
|
||||
Peters, Nicole, = Hof 1, Tisch 45, Nummer 5
|
||||
Petrov, Giovanna, = Hof 1, Tisch 10, Nummer 2
|
||||
Petrov, Kathrin, = Hof 1, Tisch 38, Nummer 4
|
||||
Petrov, Kathrin, Prof. Dr. = Hof 1, Tisch 11, Nummer 2
|
||||
Petrov, Matthias, = Hof 1, Tisch 39, Nummer 3
|
||||
Petrov, Milan, = Hof 1, Tisch 38, Nummer 5
|
||||
Petrov, Sergej, = Hof 2, Tisch 59, Nummer 3
|
||||
Pohl, Dragana, = Hof 2, Tisch 75, Nummer 2
|
||||
Pohl, Emre, = Hof 2, Tisch 75, Nummer 3
|
||||
Pohl, Mia, = Hof 2, Tisch 75, Nummer 4
|
||||
Pohl, Theo, = Hof 2, Tisch 75, Nummer 5
|
||||
Polat, Kathrin, = Hof 2, Tisch 59, Nummer 4
|
||||
Polat, Katrin, = Hof 2, Tisch 81, Nummer 4
|
||||
Polat, Marija, = Hof 2, Tisch 65, Nummer 5
|
||||
Polat, Markus, = Hof 2, Tisch 81, Nummer 3
|
||||
Polat, Sarah, = Hof 2, Tisch 81, Nummer 2
|
||||
Polat, Stefan, = Hof 2, Tisch 80, Nummer 3
|
||||
Polat, Stefanie, = Hof 2, Tisch 80, Nummer 2
|
||||
Popescu, Matthias, = Hof 1, Tisch 12, Nummer 2
|
||||
Richter, Anja, = Hof 2, Tisch 50, Nummer 2
|
||||
Richter, Anja, Prof. Dr. = Hof 1, Tisch 22, Nummer 2
|
||||
Richter, Anton, = Hof 2, Tisch 50, Nummer 5
|
||||
Richter, Greta, = Hof 2, Tisch 50, Nummer 4
|
||||
Richter, Julia, Prof. Dr. = Hof 1, Tisch 31, Nummer 2
|
||||
Richter, Marco, = Hof 2, Tisch 65, Nummer 3
|
||||
Richter, Matthias, = Hof 2, Tisch 50, Nummer 3
|
||||
Richter, Stefan, = Hof 2, Tisch 71, Nummer 4
|
||||
Rossi, Emilia, = Hof 1, Tisch 40, Nummer 4
|
||||
Rossi, Luca, = Hof 1, Tisch 40, Nummer 3
|
||||
Rossi, Melanie, = Hof 1, Tisch 40, Nummer 2
|
||||
Roth, Christian, = Hof 1, Tisch 23, Nummer 3
|
||||
Roth, Julia, Prof. Dr. = Hof 1, Tisch 17, Nummer 4
|
||||
Roth, Olga, = Hof 2, Tisch 82, Nummer 2
|
||||
Roth, Sarah, = Hof 1, Tisch 23, Nummer 2
|
||||
Roth, Sofia, = Hof 1, Tisch 23, Nummer 4
|
||||
Sahin, Kathrin, = Hof 2, Tisch 60, Nummer 4
|
||||
Sahin, Markus, = Hof 2, Tisch 60, Nummer 3
|
||||
Sahin, Nicole, = Hof 2, Tisch 60, Nummer 2
|
||||
Sahin, Patrick, = Hof 2, Tisch 60, Nummer 5
|
||||
Sahin, Thomas, = Hof 1, Tisch 22, Nummer 4
|
||||
Schmidt, Giovanna, = Hof 2, Tisch 85, Nummer 4
|
||||
Schmidt, Marie, = Hof 2, Tisch 85, Nummer 3
|
||||
Schmidt, Matthias, = Hof 2, Tisch 85, Nummer 2
|
||||
Schmidt, Nicole, = Hof 1, Tisch 16, Nummer 3
|
||||
Schmitt, Dennis, Prof. Dr. = Hof 2, Tisch 62, Nummer 4
|
||||
Schmitt, Markus, = Hof 1, Tisch 10, Nummer 4
|
||||
Schmitt, Markus, = Hof 2, Tisch 47, Nummer 3
|
||||
Schmitt, Sarah, = Hof 2, Tisch 47, Nummer 2
|
||||
Schmitt, Sofia, = Hof 2, Tisch 47, Nummer 4
|
||||
Schmitt, Stefan, Prof. Dr. = Hof 2, Tisch 52, Nummer 2
|
||||
Schwarz, Giovanna, = Hof 2, Tisch 58, Nummer 4
|
||||
Seidel, Anja, Dr. = Hof 2, Tisch 51, Nummer 5
|
||||
Seidel, Markus, Dr. = Hof 1, Tisch 11, Nummer 3
|
||||
Seidel, Yusuf, Prof. Dr. = Hof 1, Tisch 1, Nummer 2
|
||||
Seifert, Elif, = Hof 1, Tisch 17, Nummer 3
|
||||
Seifert, Leni, = Hof 1, Tisch 17, Nummer 4
|
||||
Seifert, Marco, Prof. Dr. = Hof 2, Tisch 54, Nummer 4
|
||||
Seifert, Nicole, = Hof 1, Tisch 26, Nummer 2
|
||||
Seifert, Stefanie, Dr. = Hof 1, Tisch 4, Nummer 2
|
||||
Seifert, Timo, = Hof 1, Tisch 26, Nummer 5
|
||||
Seifert, Yusuf, = Hof 1, Tisch 17, Nummer 2
|
||||
Simon, Andreas, = Hof 2, Tisch 58, Nummer 5
|
||||
Simon, Emma, = Hof 2, Tisch 58, Nummer 2
|
||||
Simon, Lena, = Hof 2, Tisch 58, Nummer 4
|
||||
Simon, Markus, = Hof 2, Tisch 58, Nummer 3
|
||||
Simon, Svenja, = Hof 1, Tisch 24, Nummer 5
|
||||
Stein, Ben, = Hof 1, Tisch 13, Nummer 2
|
||||
Stein, Emilia, = Hof 1, Tisch 13, Nummer 5
|
||||
Stein, Giovanna, = Hof 1, Tisch 13, Nummer 4
|
||||
Stein, Markus, Prof. Dr. = Hof 1, Tisch 23, Nummer 5
|
||||
Seidel, Yusuf, Prof. Dr. = Hof 1, Tisch 4, Nummer 3
|
||||
Seifert, Elif, = Hof 1, Tisch 20, Nummer 3
|
||||
Seifert, Leni, = Hof 1, Tisch 19, Nummer 4
|
||||
Seifert, Marco, Prof. Dr. = Hof 2, Tisch 58, Nummer 2
|
||||
Seifert, Nicole, = Hof 1, Tisch 19, Nummer 2
|
||||
Seifert, Stefanie, Dr. = Hof 1, Tisch 16, Nummer 5
|
||||
Seifert, Timo, = Hof 1, Tisch 20, Nummer 2
|
||||
Seifert, Yusuf, = Hof 1, Tisch 19, Nummer 3
|
||||
Simon, Andreas, = Hof 2, Tisch 66, Nummer 5
|
||||
Simon, Emma, = Hof 2, Tisch 66, Nummer 4
|
||||
Simon, Lena, = Hof 2, Tisch 66, Nummer 2
|
||||
Simon, Markus, = Hof 2, Tisch 66, Nummer 3
|
||||
Simon, Svenja, = Hof 1, Tisch 13, Nummer 5
|
||||
Stein, Ben, = Hof 2, Tisch 86, Nummer 4
|
||||
Stein, Emilia, = Hof 2, Tisch 86, Nummer 3
|
||||
Stein, Giovanna, = Hof 2, Tisch 86, Nummer 5
|
||||
Stein, Markus, Prof. Dr. = Hof 1, Tisch 12, Nummer 5
|
||||
Stein, Nadine, Dr. = Hof 1, Tisch 10, Nummer 3
|
||||
Stein, Thomas, = Hof 1, Tisch 13, Nummer 3
|
||||
Steinbach, Elisabeth, = Hof 1, Tisch 6, Nummer 3
|
||||
Stein, Thomas, = Hof 2, Tisch 86, Nummer 2
|
||||
Steinbach, Elisabeth, = Hof 1, Tisch 6, Nummer 2
|
||||
Steinbach, Georg, = Hof 1, Tisch 6, Nummer 5
|
||||
Thiel, Christina, = Hof 1, Tisch 21, Nummer 2
|
||||
Thiel, Jan, Dr. = Hof 1, Tisch 9, Nummer 2
|
||||
Thiel, Julia, = Hof 1, Tisch 21, Nummer 3
|
||||
Thiel, Yusuf, = Hof 1, Tisch 21, Nummer 4
|
||||
Tran, Marija, = Hof 1, Tisch 36, Nummer 5
|
||||
Tran, Olga, = Hof 2, Tisch 50, Nummer 4
|
||||
Tran, Thomas, Prof. Dr. = Hof 2, Tisch 75, Nummer 4
|
||||
Wagner, Henry, = Hof 2, Tisch 79, Nummer 5
|
||||
Wagner, Marco, = Hof 2, Tisch 79, Nummer 3
|
||||
Wagner, Nicole, = Hof 2, Tisch 79, Nummer 2
|
||||
Wagner, Sarah, = Hof 2, Tisch 79, Nummer 4
|
||||
Weber, Andreas, = Hof 1, Tisch 25, Nummer 2
|
||||
Weber, Julia, = Hof 1, Tisch 1, Nummer 5
|
||||
Weber, Katrin, = Hof 1, Tisch 36, Nummer 3
|
||||
Weber, Yusuf, = Hof 2, Tisch 64, Nummer 3
|
||||
Werner, Andreas, = Hof 2, Tisch 66, Nummer 4
|
||||
Werner, Dennis, Prof. Dr. = Hof 2, Tisch 50, Nummer 2
|
||||
Werner, Katrin, = Hof 2, Tisch 48, Nummer 2
|
||||
Werner, Luca, = Hof 1, Tisch 36, Nummer 2
|
||||
Werner, Marco, = Hof 2, Tisch 66, Nummer 2
|
||||
Werner, Nadine, = Hof 2, Tisch 66, Nummer 5
|
||||
Werner, Sandra, = Hof 2, Tisch 66, Nummer 3
|
||||
Winkler, Lena, = Hof 1, Tisch 33, Nummer 3
|
||||
Winkler, Marco, = Hof 1, Tisch 1, Nummer 4
|
||||
Winkler, Patrick, = Hof 1, Tisch 33, Nummer 2
|
||||
Winkler, Thomas, = Hof 1, Tisch 15, Nummer 2
|
||||
Wolf, Ben, = Hof 2, Tisch 73, Nummer 5
|
||||
Wolf, Emma, = Hof 2, Tisch 73, Nummer 4
|
||||
Wolf, Julia, = Hof 2, Tisch 73, Nummer 2
|
||||
Wolf, Thomas, = Hof 2, Tisch 73, Nummer 3
|
||||
Zimmermann, Jan, = Hof 1, Tisch 14, Nummer 5
|
||||
Zimmermann, Markus, = Hof 1, Tisch 14, Nummer 3
|
||||
Zimmermann, Mia, = Hof 1, Tisch 14, Nummer 4
|
||||
Zimmermann, Patrick, = Hof 2, Tisch 65, Nummer 2
|
||||
Zimmermann, Svenja, = Hof 1, Tisch 14, Nummer 2
|
||||
Thiel, Christina, = Hof 2, Tisch 46, Nummer 3
|
||||
Thiel, Jan, Dr. = Hof 1, Tisch 22, Nummer 3
|
||||
Thiel, Julia, = Hof 2, Tisch 46, Nummer 4
|
||||
Thiel, Yusuf, = Hof 2, Tisch 46, Nummer 2
|
||||
Tran, Marija, = Hof 2, Tisch 52, Nummer 3
|
||||
Tran, Olga, = Hof 2, Tisch 51, Nummer 4
|
||||
Tran, Thomas, Prof. Dr. = Hof 2, Tisch 59, Nummer 2
|
||||
Wagner, Henry, = Hof 2, Tisch 68, Nummer 5
|
||||
Wagner, Marco, = Hof 2, Tisch 68, Nummer 3
|
||||
Wagner, Nicole, = Hof 2, Tisch 68, Nummer 2
|
||||
Wagner, Sarah, = Hof 2, Tisch 68, Nummer 4
|
||||
Weber, Andreas, = Hof 1, Tisch 39, Nummer 4
|
||||
Weber, Julia, = Hof 1, Tisch 3, Nummer 5
|
||||
Weber, Katrin, = Hof 2, Tisch 53, Nummer 4
|
||||
Weber, Yusuf, = Hof 2, Tisch 67, Nummer 2
|
||||
Werner, Andreas, = Hof 2, Tisch 55, Nummer 3
|
||||
Werner, Dennis, Prof. Dr. = Hof 2, Tisch 51, Nummer 2
|
||||
Werner, Katrin, = Hof 2, Tisch 64, Nummer 2
|
||||
Werner, Luca, = Hof 2, Tisch 53, Nummer 5
|
||||
Werner, Marco, = Hof 2, Tisch 55, Nummer 5
|
||||
Werner, Nadine, = Hof 2, Tisch 55, Nummer 4
|
||||
Werner, Sandra, = Hof 2, Tisch 55, Nummer 2
|
||||
Winkler, Lena, = Hof 1, Tisch 29, Nummer 3
|
||||
Winkler, Marco, = Hof 1, Tisch 4, Nummer 2
|
||||
Winkler, Patrick, = Hof 1, Tisch 29, Nummer 4
|
||||
Winkler, Thomas, = Hof 1, Tisch 17, Nummer 2
|
||||
Wolf, Ben, = Hof 2, Tisch 83, Nummer 3
|
||||
Wolf, Emma, = Hof 2, Tisch 83, Nummer 2
|
||||
Wolf, Julia, = Hof 2, Tisch 83, Nummer 4
|
||||
Wolf, Thomas, = Hof 2, Tisch 83, Nummer 5
|
||||
Zimmermann, Jan, = Hof 2, Tisch 70, Nummer 3
|
||||
Zimmermann, Markus, = Hof 2, Tisch 70, Nummer 5
|
||||
Zimmermann, Mia, = Hof 2, Tisch 70, Nummer 4
|
||||
Zimmermann, Patrick, = Hof 2, Tisch 71, Nummer 3
|
||||
Zimmermann, Svenja, = Hof 2, Tisch 70, Nummer 2
|
||||
|
||||
|
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 122 KiB |
@@ -1,476 +1,476 @@
|
||||
[1]
|
||||
Prof. Dr. Yusuf Seidel = Hof 1, Tisch 1, Nummer 1
|
||||
Emre Klein = Hof 1, Tisch 1, Nummer 2
|
||||
Marco Winkler = Hof 1, Tisch 1, Nummer 3
|
||||
Julia Weber = Hof 1, Tisch 1, Nummer 4
|
||||
|
||||
[2]
|
||||
Dr. Jan Bianchi = Hof 1, Tisch 2, Nummer 1
|
||||
Dr. Christina Krause = Hof 1, Tisch 2, Nummer 2
|
||||
Dr. Patrick Kaya = Hof 1, Tisch 2, Nummer 3
|
||||
Yusuf Bauer = Hof 1, Tisch 2, Nummer 4
|
||||
Layla Lehmann = Hof 1, Tisch 2, Nummer 1
|
||||
Thomas Lehmann = Hof 1, Tisch 2, Nummer 2
|
||||
Nicole Lehmann = Hof 1, Tisch 2, Nummer 3
|
||||
Markus Lehmann = Hof 1, Tisch 2, Nummer 4
|
||||
|
||||
[3]
|
||||
Sarah Roth = Hof 1, Tisch 3, Nummer 1
|
||||
Sofia Roth = Hof 1, Tisch 3, Nummer 2
|
||||
Christian Roth = Hof 1, Tisch 3, Nummer 3
|
||||
Emre Klein = Hof 1, Tisch 3, Nummer 1
|
||||
Dr. Patrick Kaya = Hof 1, Tisch 3, Nummer 2
|
||||
Dr. Christina Krause = Hof 1, Tisch 3, Nummer 3
|
||||
Julia Weber = Hof 1, Tisch 3, Nummer 4
|
||||
|
||||
[4]
|
||||
Dr. Stefanie Seifert = Hof 1, Tisch 4, Nummer 1
|
||||
Julia Nguyen = Hof 1, Tisch 4, Nummer 2
|
||||
Nicole Schmidt = Hof 1, Tisch 4, Nummer 3
|
||||
Prof. Dr. Julia Roth = Hof 1, Tisch 4, Nummer 4
|
||||
Marco Winkler = Hof 1, Tisch 4, Nummer 1
|
||||
Prof. Dr. Yusuf Seidel = Hof 1, Tisch 4, Nummer 2
|
||||
Yusuf Bauer = Hof 1, Tisch 4, Nummer 3
|
||||
Dr. Jan Bianchi = Hof 1, Tisch 4, Nummer 4
|
||||
|
||||
[5]
|
||||
Viktoria Kessler = Hof 1, Tisch 5, Nummer 1
|
||||
Dr. h.c. Alexander Grothe = Hof 1, Tisch 5, Nummer 1
|
||||
Beate Grothe = Hof 1, Tisch 5, Nummer 2
|
||||
Dr. Ferdinand Kessler = Hof 1, Tisch 5, Nummer 3
|
||||
Dr. h.c. Alexander Grothe = Hof 1, Tisch 5, Nummer 4
|
||||
Viktoria Kessler = Hof 1, Tisch 5, Nummer 4
|
||||
|
||||
[6]
|
||||
Antonia Freifrau von Waldeck = Hof 1, Tisch 6, Nummer 1
|
||||
Elisabeth Steinbach = Hof 1, Tisch 6, Nummer 2
|
||||
Dr. Konstantin Freiherr von Waldeck = Hof 1, Tisch 6, Nummer 3
|
||||
Elisabeth Steinbach = Hof 1, Tisch 6, Nummer 1
|
||||
Dr. Konstantin Freiherr von Waldeck = Hof 1, Tisch 6, Nummer 2
|
||||
Antonia Freifrau von Waldeck = Hof 1, Tisch 6, Nummer 3
|
||||
Georg Steinbach = Hof 1, Tisch 6, Nummer 4
|
||||
|
||||
[7]
|
||||
Charlotte Dallmann = Hof 1, Tisch 7, Nummer 1
|
||||
Maximilian Dallmann = Hof 1, Tisch 7, Nummer 2
|
||||
Margarete Dallmann = Hof 1, Tisch 7, Nummer 3
|
||||
Heinrich Dallmann = Hof 1, Tisch 7, Nummer 4
|
||||
Heinrich Dallmann = Hof 1, Tisch 7, Nummer 1
|
||||
Margarete Dallmann = Hof 1, Tisch 7, Nummer 2
|
||||
Maximilian Dallmann = Hof 1, Tisch 7, Nummer 3
|
||||
Charlotte Dallmann = Hof 1, Tisch 7, Nummer 4
|
||||
|
||||
[8]
|
||||
Milan Lehmann = Hof 1, Tisch 8, Nummer 1
|
||||
Andreas Albrecht = Hof 1, Tisch 8, Nummer 2
|
||||
Layla Lehmann = Hof 1, Tisch 8, Nummer 3
|
||||
Sarah Albrecht = Hof 1, Tisch 8, Nummer 4
|
||||
Giovanna Hansen = Hof 1, Tisch 8, Nummer 1
|
||||
Markus Hansen = Hof 1, Tisch 8, Nummer 2
|
||||
Olga Hansen = Hof 1, Tisch 8, Nummer 3
|
||||
|
||||
[9]
|
||||
Dr. Jan Thiel = Hof 1, Tisch 9, Nummer 1
|
||||
Prof. Dr. Anja Richter = Hof 1, Tisch 9, Nummer 2
|
||||
Thomas Sahin = Hof 1, Tisch 9, Nummer 3
|
||||
Giovanna Ludwig = Hof 1, Tisch 9, Nummer 1
|
||||
Emre Ludwig = Hof 1, Tisch 9, Nummer 2
|
||||
Elif Ludwig = Hof 1, Tisch 9, Nummer 3
|
||||
Elias Ludwig = Hof 1, Tisch 9, Nummer 4
|
||||
|
||||
[10]
|
||||
Markus Kraus = Hof 1, Tisch 10, Nummer 1
|
||||
Giovanna Petrov = Hof 1, Tisch 10, Nummer 1
|
||||
Dr. Nadine Stein = Hof 1, Tisch 10, Nummer 2
|
||||
Giovanna Petrov = Hof 1, Tisch 10, Nummer 3
|
||||
Markus Schmitt = Hof 1, Tisch 10, Nummer 3
|
||||
Christian Peters = Hof 1, Tisch 10, Nummer 4
|
||||
|
||||
[11]
|
||||
Markus Schmitt = Hof 1, Tisch 11, Nummer 1
|
||||
Prof. Dr. Kathrin Petrov = Hof 1, Tisch 11, Nummer 1
|
||||
Dr. Markus Seidel = Hof 1, Tisch 11, Nummer 2
|
||||
Prof. Dr. Kathrin Petrov = Hof 1, Tisch 11, Nummer 3
|
||||
Markus Kraus = Hof 1, Tisch 11, Nummer 3
|
||||
|
||||
[12]
|
||||
Dr. Nadine Berger = Hof 1, Tisch 12, Nummer 1
|
||||
Patrick Lehmann = Hof 1, Tisch 12, Nummer 2
|
||||
Prof. Dr. Yusuf Ott = Hof 1, Tisch 12, Nummer 3
|
||||
Matthias Popescu = Hof 1, Tisch 12, Nummer 1
|
||||
Sarah Albrecht = Hof 1, Tisch 12, Nummer 2
|
||||
Andreas Albrecht = Hof 1, Tisch 12, Nummer 3
|
||||
Prof. Dr. Markus Stein = Hof 1, Tisch 12, Nummer 4
|
||||
|
||||
[13]
|
||||
Ben Stein = Hof 1, Tisch 13, Nummer 1
|
||||
Thomas Stein = Hof 1, Tisch 13, Nummer 2
|
||||
Giovanna Stein = Hof 1, Tisch 13, Nummer 3
|
||||
Emilia Stein = Hof 1, Tisch 13, Nummer 4
|
||||
Prof. Dr. Yusuf Albrecht = Hof 1, Tisch 13, Nummer 1
|
||||
Giovanna Lehmann = Hof 1, Tisch 13, Nummer 2
|
||||
Milan Lehmann = Hof 1, Tisch 13, Nummer 3
|
||||
Svenja Simon = Hof 1, Tisch 13, Nummer 4
|
||||
|
||||
[14]
|
||||
Svenja Zimmermann = Hof 1, Tisch 14, Nummer 1
|
||||
Markus Zimmermann = Hof 1, Tisch 14, Nummer 2
|
||||
Mia Zimmermann = Hof 1, Tisch 14, Nummer 3
|
||||
Jan Zimmermann = Hof 1, Tisch 14, Nummer 4
|
||||
Nicole Becker = Hof 1, Tisch 14, Nummer 1
|
||||
Jan Becker = Hof 1, Tisch 14, Nummer 2
|
||||
Sandra Becker = Hof 1, Tisch 14, Nummer 3
|
||||
|
||||
[15]
|
||||
Thomas Winkler = Hof 1, Tisch 15, Nummer 1
|
||||
Thomas Hansen = Hof 1, Tisch 15, Nummer 2
|
||||
Dr. Jan Esposito = Hof 1, Tisch 15, Nummer 3
|
||||
Anja Nguyen = Hof 1, Tisch 15, Nummer 1
|
||||
Daniel Nguyen = Hof 1, Tisch 15, Nummer 2
|
||||
Sofia Nguyen = Hof 1, Tisch 15, Nummer 3
|
||||
|
||||
[16]
|
||||
Thomas Hansen = Hof 1, Tisch 16, Nummer 1
|
||||
Nicole Schmidt = Hof 1, Tisch 16, Nummer 2
|
||||
Julia Nguyen = Hof 1, Tisch 16, Nummer 3
|
||||
Dr. Stefanie Seifert = Hof 1, Tisch 16, Nummer 4
|
||||
|
||||
[17]
|
||||
Yusuf Seifert = Hof 1, Tisch 17, Nummer 1
|
||||
Elif Seifert = Hof 1, Tisch 17, Nummer 2
|
||||
Leni Seifert = Hof 1, Tisch 17, Nummer 3
|
||||
Thomas Winkler = Hof 1, Tisch 17, Nummer 1
|
||||
Dr. Jan Esposito = Hof 1, Tisch 17, Nummer 2
|
||||
Prof. Dr. Julia Roth = Hof 1, Tisch 17, Nummer 3
|
||||
|
||||
[18]
|
||||
Sofia Dietrich = Hof 1, Tisch 18, Nummer 1
|
||||
Marco Dietrich = Hof 1, Tisch 18, Nummer 2
|
||||
Jennifer Dietrich = Hof 1, Tisch 18, Nummer 3
|
||||
Stefanie Klein = Hof 1, Tisch 18, Nummer 1
|
||||
Milan Klein = Hof 1, Tisch 18, Nummer 2
|
||||
Lina Klein = Hof 1, Tisch 18, Nummer 3
|
||||
|
||||
[19]
|
||||
Markus Lehmann = Hof 1, Tisch 19, Nummer 1
|
||||
Giovanna Lehmann = Hof 1, Tisch 19, Nummer 2
|
||||
Thomas Lehmann = Hof 1, Tisch 19, Nummer 3
|
||||
Nicole Lehmann = Hof 1, Tisch 19, Nummer 4
|
||||
Nicole Seifert = Hof 1, Tisch 19, Nummer 1
|
||||
Yusuf Seifert = Hof 1, Tisch 19, Nummer 2
|
||||
Leni Seifert = Hof 1, Tisch 19, Nummer 3
|
||||
|
||||
[20]
|
||||
Amira Franke = Hof 1, Tisch 20, Nummer 1
|
||||
Olga Franke = Hof 1, Tisch 20, Nummer 2
|
||||
Marco Franke = Hof 1, Tisch 20, Nummer 3
|
||||
Timo Seifert = Hof 1, Tisch 20, Nummer 1
|
||||
Elif Seifert = Hof 1, Tisch 20, Nummer 2
|
||||
Julia Engel = Hof 1, Tisch 20, Nummer 3
|
||||
Anton Engel = Hof 1, Tisch 20, Nummer 4
|
||||
|
||||
[21]
|
||||
Christina Thiel = Hof 1, Tisch 21, Nummer 1
|
||||
Julia Thiel = Hof 1, Tisch 21, Nummer 2
|
||||
Yusuf Thiel = Hof 1, Tisch 21, Nummer 3
|
||||
Nicole Engel = Hof 1, Tisch 21, Nummer 1
|
||||
Anja Engel = Hof 1, Tisch 21, Nummer 2
|
||||
Yusuf Engel = Hof 1, Tisch 21, Nummer 3
|
||||
|
||||
[22]
|
||||
Marie Aksoy = Hof 1, Tisch 22, Nummer 1
|
||||
Luca Aksoy = Hof 1, Tisch 22, Nummer 2
|
||||
Thomas Aksoy = Hof 1, Tisch 22, Nummer 3
|
||||
Prof. Dr. Anja Richter = Hof 1, Tisch 22, Nummer 1
|
||||
Dr. Jan Thiel = Hof 1, Tisch 22, Nummer 2
|
||||
Thomas Sahin = Hof 1, Tisch 22, Nummer 3
|
||||
|
||||
[23]
|
||||
Matthias Popescu = Hof 1, Tisch 23, Nummer 1
|
||||
Layla Berger = Hof 1, Tisch 23, Nummer 2
|
||||
Anton Berger = Hof 1, Tisch 23, Nummer 3
|
||||
Prof. Dr. Markus Stein = Hof 1, Tisch 23, Nummer 4
|
||||
Sarah Roth = Hof 1, Tisch 23, Nummer 1
|
||||
Christian Roth = Hof 1, Tisch 23, Nummer 2
|
||||
Sofia Roth = Hof 1, Tisch 23, Nummer 3
|
||||
|
||||
[24]
|
||||
Elif Celik = Hof 1, Tisch 24, Nummer 1
|
||||
Prof. Dr. Yusuf Albrecht = Hof 1, Tisch 24, Nummer 2
|
||||
Patrick Celik = Hof 1, Tisch 24, Nummer 3
|
||||
Svenja Simon = Hof 1, Tisch 24, Nummer 4
|
||||
Andreas Berger = Hof 1, Tisch 24, Nummer 1
|
||||
Patrick Celik = Hof 1, Tisch 24, Nummer 2
|
||||
Elif Celik = Hof 1, Tisch 24, Nummer 3
|
||||
Svenja Berger = Hof 1, Tisch 24, Nummer 4
|
||||
|
||||
[25]
|
||||
Andreas Weber = Hof 1, Tisch 25, Nummer 1
|
||||
Matthias Petrov = Hof 1, Tisch 25, Nummer 2
|
||||
Prof. Dr. Julia Richter = Hof 1, Tisch 25, Nummer 3
|
||||
Nadine Aksoy = Hof 1, Tisch 25, Nummer 1
|
||||
Thomas Aksoy = Hof 1, Tisch 25, Nummer 2
|
||||
Marie Aksoy = Hof 1, Tisch 25, Nummer 3
|
||||
|
||||
[26]
|
||||
Nicole Seifert = Hof 1, Tisch 26, Nummer 1
|
||||
Markus Barth = Hof 1, Tisch 26, Nummer 2
|
||||
Dr. Jennifer Haas = Hof 1, Tisch 26, Nummer 3
|
||||
Timo Seifert = Hof 1, Tisch 26, Nummer 4
|
||||
Prof. Dr. Yusuf Ott = Hof 1, Tisch 26, Nummer 1
|
||||
Dr. Nadine Berger = Hof 1, Tisch 26, Nummer 2
|
||||
Patrick Lehmann = Hof 1, Tisch 26, Nummer 3
|
||||
|
||||
[27]
|
||||
Anja Kovac = Hof 1, Tisch 27, Nummer 1
|
||||
Henry Kovac = Hof 1, Tisch 27, Nummer 2
|
||||
Lena Kovac = Hof 1, Tisch 27, Nummer 3
|
||||
Jennifer Dietrich = Hof 1, Tisch 27, Nummer 1
|
||||
Marco Dietrich = Hof 1, Tisch 27, Nummer 2
|
||||
Sofia Dietrich = Hof 1, Tisch 27, Nummer 3
|
||||
|
||||
[28]
|
||||
Sarah Schmitt = Hof 1, Tisch 28, Nummer 1
|
||||
Sofia Schmitt = Hof 1, Tisch 28, Nummer 2
|
||||
Markus Schmitt = Hof 1, Tisch 28, Nummer 3
|
||||
Prof. Dr. Timo Kaya = Hof 1, Tisch 28, Nummer 1
|
||||
Dr. Sandra Demir = Hof 1, Tisch 28, Nummer 2
|
||||
Lena Kovac = Hof 1, Tisch 28, Nummer 3
|
||||
Tobias Kovac = Hof 1, Tisch 28, Nummer 4
|
||||
|
||||
[29]
|
||||
Giovanna Hansen = Hof 1, Tisch 29, Nummer 1
|
||||
Markus Hansen = Hof 1, Tisch 29, Nummer 2
|
||||
Olga Hansen = Hof 1, Tisch 29, Nummer 3
|
||||
Felix Nowak = Hof 1, Tisch 29, Nummer 1
|
||||
Lena Winkler = Hof 1, Tisch 29, Nummer 2
|
||||
Patrick Winkler = Hof 1, Tisch 29, Nummer 3
|
||||
Kathrin Nowak = Hof 1, Tisch 29, Nummer 4
|
||||
|
||||
[30]
|
||||
Melanie Rossi = Hof 1, Tisch 30, Nummer 1
|
||||
Emilia Rossi = Hof 1, Tisch 30, Nummer 2
|
||||
Luca Rossi = Hof 1, Tisch 30, Nummer 3
|
||||
|
||||
[31]
|
||||
Nadine Aksoy = Hof 1, Tisch 31, Nummer 1
|
||||
Sofia Aksoy = Hof 1, Tisch 31, Nummer 2
|
||||
Sergej Aksoy = Hof 1, Tisch 31, Nummer 3
|
||||
Prof. Dr. Julia Richter = Hof 1, Tisch 31, Nummer 1
|
||||
Dr. Jennifer Haas = Hof 1, Tisch 31, Nummer 2
|
||||
|
||||
[32]
|
||||
Svenja Berger = Hof 1, Tisch 32, Nummer 1
|
||||
Stefan Berger = Hof 1, Tisch 32, Nummer 2
|
||||
Jennifer Berger = Hof 1, Tisch 32, Nummer 3
|
||||
Andreas Berger = Hof 1, Tisch 32, Nummer 4
|
||||
Jennifer Berger = Hof 1, Tisch 32, Nummer 1
|
||||
Anton Berger = Hof 1, Tisch 32, Nummer 2
|
||||
Layla Berger = Hof 1, Tisch 32, Nummer 3
|
||||
Stefan Berger = Hof 1, Tisch 32, Nummer 4
|
||||
|
||||
[33]
|
||||
Patrick Winkler = Hof 1, Tisch 33, Nummer 1
|
||||
Lena Winkler = Hof 1, Tisch 33, Nummer 2
|
||||
Prof. Dr. Timo Kaya = Hof 1, Tisch 33, Nummer 3
|
||||
Dr. Sandra Demir = Hof 1, Tisch 33, Nummer 4
|
||||
Luca Aksoy = Hof 1, Tisch 33, Nummer 1
|
||||
Sofia Aksoy = Hof 1, Tisch 33, Nummer 2
|
||||
Sergej Aksoy = Hof 1, Tisch 33, Nummer 3
|
||||
|
||||
[34]
|
||||
Noah Nowak = Hof 1, Tisch 34, Nummer 1
|
||||
Kathrin Petrov = Hof 1, Tisch 34, Nummer 2
|
||||
Kathrin Nowak = Hof 1, Tisch 34, Nummer 3
|
||||
Milan Petrov = Hof 1, Tisch 34, Nummer 4
|
||||
|
||||
[35]
|
||||
Marija Kovac = Hof 1, Tisch 35, Nummer 1
|
||||
Tobias Kovac = Hof 1, Tisch 35, Nummer 2
|
||||
Marco Kovac = Hof 1, Tisch 35, Nummer 3
|
||||
Leni Arnold = Hof 1, Tisch 35, Nummer 1
|
||||
Christian Arnold = Hof 1, Tisch 35, Nummer 2
|
||||
Mila Arnold = Hof 1, Tisch 35, Nummer 3
|
||||
|
||||
[36]
|
||||
Luca Werner = Hof 1, Tisch 36, Nummer 1
|
||||
Katrin Weber = Hof 1, Tisch 36, Nummer 2
|
||||
Prof. Dr. Stefan Schmitt = Hof 1, Tisch 36, Nummer 3
|
||||
Marija Tran = Hof 1, Tisch 36, Nummer 4
|
||||
Marco Kovac = Hof 1, Tisch 36, Nummer 1
|
||||
Anja Kovac = Hof 1, Tisch 36, Nummer 2
|
||||
Henry Kovac = Hof 1, Tisch 36, Nummer 3
|
||||
Marija Kovac = Hof 1, Tisch 36, Nummer 4
|
||||
|
||||
[37]
|
||||
Michael Franke = Hof 1, Tisch 37, Nummer 1
|
||||
Julia Franke = Hof 1, Tisch 37, Nummer 2
|
||||
Dr. Kathrin Koch = Hof 1, Tisch 37, Nummer 3
|
||||
Dr. Julia Kuhn = Hof 1, Tisch 37, Nummer 4
|
||||
Aylin Nowak = Hof 1, Tisch 37, Nummer 1
|
||||
Markus Nowak = Hof 1, Tisch 37, Nummer 2
|
||||
Lina Nowak = Hof 1, Tisch 37, Nummer 3
|
||||
Noah Nowak = Hof 1, Tisch 37, Nummer 4
|
||||
|
||||
[38]
|
||||
Christian Braun = Hof 1, Tisch 38, Nummer 1
|
||||
Dragana Braun = Hof 1, Tisch 38, Nummer 2
|
||||
Julia Braun = Hof 1, Tisch 38, Nummer 3
|
||||
Dr. Nicole Hansen = Hof 1, Tisch 38, Nummer 1
|
||||
Thomas Krause = Hof 1, Tisch 38, Nummer 2
|
||||
Kathrin Petrov = Hof 1, Tisch 38, Nummer 3
|
||||
Milan Petrov = Hof 1, Tisch 38, Nummer 4
|
||||
|
||||
[39]
|
||||
Matthias Richter = Hof 1, Tisch 39, Nummer 1
|
||||
Greta Richter = Hof 1, Tisch 39, Nummer 2
|
||||
Anton Richter = Hof 1, Tisch 39, Nummer 3
|
||||
Anja Richter = Hof 1, Tisch 39, Nummer 4
|
||||
Markus Barth = Hof 1, Tisch 39, Nummer 1
|
||||
Matthias Petrov = Hof 1, Tisch 39, Nummer 2
|
||||
Andreas Weber = Hof 1, Tisch 39, Nummer 3
|
||||
|
||||
[40]
|
||||
Melanie Rossi = Hof 1, Tisch 40, Nummer 1
|
||||
Luca Rossi = Hof 1, Tisch 40, Nummer 2
|
||||
Emilia Rossi = Hof 1, Tisch 40, Nummer 3
|
||||
|
||||
[41]
|
||||
Markus Nowak = Hof 1, Tisch 41, Nummer 1
|
||||
Aylin Nowak = Hof 1, Tisch 41, Nummer 2
|
||||
Felix Nowak = Hof 1, Tisch 41, Nummer 3
|
||||
Lina Nowak = Hof 1, Tisch 41, Nummer 4
|
||||
Julia Braun = Hof 1, Tisch 41, Nummer 1
|
||||
Milan Braun = Hof 1, Tisch 41, Nummer 2
|
||||
Nadine Braun = Hof 1, Tisch 41, Nummer 3
|
||||
|
||||
[42]
|
||||
Dragana Bauer = Hof 1, Tisch 42, Nummer 1
|
||||
Thomas Krause = Hof 1, Tisch 42, Nummer 2
|
||||
Nicole Peters = Hof 1, Tisch 42, Nummer 3
|
||||
Patrick Haas = Hof 1, Tisch 42, Nummer 4
|
||||
Jan Braun = Hof 1, Tisch 42, Nummer 1
|
||||
Dragana Braun = Hof 1, Tisch 42, Nummer 2
|
||||
Christian Braun = Hof 1, Tisch 42, Nummer 3
|
||||
|
||||
[43]
|
||||
Dennis Frank = Hof 1, Tisch 43, Nummer 1
|
||||
Prof. Dr. Sergej Ott = Hof 1, Tisch 43, Nummer 2
|
||||
Dr. Nicole Hansen = Hof 1, Tisch 43, Nummer 3
|
||||
Marie Frank = Hof 1, Tisch 43, Nummer 4
|
||||
Jennifer Arnold = Hof 1, Tisch 43, Nummer 1
|
||||
Patrick Arnold = Hof 1, Tisch 43, Nummer 2
|
||||
Dragana Lange = Hof 1, Tisch 43, Nummer 3
|
||||
Michael Lange = Hof 1, Tisch 43, Nummer 4
|
||||
|
||||
[44]
|
||||
Nadine Frank = Hof 1, Tisch 44, Nummer 1
|
||||
Lena Frank = Hof 1, Tisch 44, Nummer 2
|
||||
Finn Frank = Hof 1, Tisch 44, Nummer 3
|
||||
Jan Lange = Hof 1, Tisch 44, Nummer 1
|
||||
Svenja Lange = Hof 1, Tisch 44, Nummer 2
|
||||
Sofia Lange = Hof 1, Tisch 44, Nummer 3
|
||||
|
||||
[45]
|
||||
Nadine Braun = Hof 1, Tisch 45, Nummer 1
|
||||
Milan Braun = Hof 1, Tisch 45, Nummer 2
|
||||
Jan Braun = Hof 1, Tisch 45, Nummer 3
|
||||
Patrick Haas = Hof 1, Tisch 45, Nummer 1
|
||||
Prof. Dr. Sergej Ott = Hof 1, Tisch 45, Nummer 2
|
||||
Dragana Bauer = Hof 1, Tisch 45, Nummer 3
|
||||
Nicole Peters = Hof 1, Tisch 45, Nummer 4
|
||||
|
||||
[46]
|
||||
Christian Arnold = Hof 2, Tisch 46, Nummer 1
|
||||
Jennifer Arnold = Hof 2, Tisch 46, Nummer 2
|
||||
Mila Arnold = Hof 2, Tisch 46, Nummer 3
|
||||
Yusuf Thiel = Hof 2, Tisch 46, Nummer 1
|
||||
Christina Thiel = Hof 2, Tisch 46, Nummer 2
|
||||
Julia Thiel = Hof 2, Tisch 46, Nummer 3
|
||||
|
||||
[47]
|
||||
Michael Koch = Hof 2, Tisch 47, Nummer 1
|
||||
Olga Koch = Hof 2, Tisch 47, Nummer 2
|
||||
Jan Koch = Hof 2, Tisch 47, Nummer 3
|
||||
Sarah Koch = Hof 2, Tisch 47, Nummer 4
|
||||
Sarah Schmitt = Hof 2, Tisch 47, Nummer 1
|
||||
Markus Schmitt = Hof 2, Tisch 47, Nummer 2
|
||||
Sofia Schmitt = Hof 2, Tisch 47, Nummer 3
|
||||
|
||||
[48]
|
||||
Katrin Werner = Hof 2, Tisch 48, Nummer 1
|
||||
Marie Koch = Hof 2, Tisch 48, Nummer 2
|
||||
Patrick Busch = Hof 2, Tisch 48, Nummer 3
|
||||
Emil Koch = Hof 2, Tisch 48, Nummer 4
|
||||
Michael Koch = Hof 2, Tisch 48, Nummer 1
|
||||
Emil Koch = Hof 2, Tisch 48, Nummer 2
|
||||
Olga Koch = Hof 2, Tisch 48, Nummer 3
|
||||
|
||||
[49]
|
||||
Sergej Lange = Hof 2, Tisch 49, Nummer 1
|
||||
Prof. Dr. Dragana Dietrich = Hof 2, Tisch 49, Nummer 2
|
||||
Dr. Michael Aksoy = Hof 2, Tisch 49, Nummer 3
|
||||
Emre Hoffmann = Hof 2, Tisch 49, Nummer 4
|
||||
Sarah Koch = Hof 2, Tisch 49, Nummer 1
|
||||
Jan Koch = Hof 2, Tisch 49, Nummer 2
|
||||
Marie Koch = Hof 2, Tisch 49, Nummer 3
|
||||
|
||||
[50]
|
||||
Prof. Dr. Dennis Werner = Hof 2, Tisch 50, Nummer 1
|
||||
Dr. Thomas Hoffmann = Hof 2, Tisch 50, Nummer 2
|
||||
Olga Tran = Hof 2, Tisch 50, Nummer 3
|
||||
Dr. Anja Seidel = Hof 2, Tisch 50, Nummer 4
|
||||
Anja Richter = Hof 2, Tisch 50, Nummer 1
|
||||
Matthias Richter = Hof 2, Tisch 50, Nummer 2
|
||||
Greta Richter = Hof 2, Tisch 50, Nummer 3
|
||||
Anton Richter = Hof 2, Tisch 50, Nummer 4
|
||||
|
||||
[51]
|
||||
Elif Ludwig = Hof 2, Tisch 51, Nummer 1
|
||||
Elias Ludwig = Hof 2, Tisch 51, Nummer 2
|
||||
Giovanna Ludwig = Hof 2, Tisch 51, Nummer 3
|
||||
Emre Ludwig = Hof 2, Tisch 51, Nummer 4
|
||||
Prof. Dr. Dennis Werner = Hof 2, Tisch 51, Nummer 1
|
||||
Dr. Thomas Hoffmann = Hof 2, Tisch 51, Nummer 2
|
||||
Olga Tran = Hof 2, Tisch 51, Nummer 3
|
||||
Dr. Anja Seidel = Hof 2, Tisch 51, Nummer 4
|
||||
|
||||
[52]
|
||||
Mia Bianchi = Hof 2, Tisch 52, Nummer 1
|
||||
Sandra Bianchi = Hof 2, Tisch 52, Nummer 2
|
||||
Thomas Bianchi = Hof 2, Tisch 52, Nummer 3
|
||||
Prof. Dr. Stefan Schmitt = Hof 2, Tisch 52, Nummer 1
|
||||
Marija Tran = Hof 2, Tisch 52, Nummer 2
|
||||
Dr. Kathrin Koch = Hof 2, Tisch 52, Nummer 3
|
||||
Dr. Julia Kuhn = Hof 2, Tisch 52, Nummer 4
|
||||
|
||||
[53]
|
||||
Patrick Sahin = Hof 2, Tisch 53, Nummer 1
|
||||
Nicole Sahin = Hof 2, Tisch 53, Nummer 2
|
||||
Markus Sahin = Hof 2, Tisch 53, Nummer 3
|
||||
Kathrin Sahin = Hof 2, Tisch 53, Nummer 4
|
||||
Prof. Dr. Dragana Dietrich = Hof 2, Tisch 53, Nummer 1
|
||||
Dr. Michael Aksoy = Hof 2, Tisch 53, Nummer 2
|
||||
Katrin Weber = Hof 2, Tisch 53, Nummer 3
|
||||
Luca Werner = Hof 2, Tisch 53, Nummer 4
|
||||
|
||||
[54]
|
||||
Dr. Aylin Ludwig = Hof 2, Tisch 54, Nummer 1
|
||||
Giovanna Schwarz = Hof 2, Tisch 54, Nummer 2
|
||||
Prof. Dr. Marco Seifert = Hof 2, Tisch 54, Nummer 3
|
||||
Matthias Krause = Hof 2, Tisch 54, Nummer 4
|
||||
Sandra Bianchi = Hof 2, Tisch 54, Nummer 1
|
||||
Thomas Bianchi = Hof 2, Tisch 54, Nummer 2
|
||||
Mia Bianchi = Hof 2, Tisch 54, Nummer 3
|
||||
|
||||
[55]
|
||||
Olga Maier = Hof 2, Tisch 55, Nummer 1
|
||||
Christian Maier = Hof 2, Tisch 55, Nummer 2
|
||||
Arda Maier = Hof 2, Tisch 55, Nummer 3
|
||||
Sarah Maier = Hof 2, Tisch 55, Nummer 4
|
||||
Sandra Werner = Hof 2, Tisch 55, Nummer 1
|
||||
Andreas Werner = Hof 2, Tisch 55, Nummer 2
|
||||
Nadine Werner = Hof 2, Tisch 55, Nummer 3
|
||||
Marco Werner = Hof 2, Tisch 55, Nummer 4
|
||||
|
||||
[56]
|
||||
Markus Klein = Hof 2, Tisch 56, Nummer 1
|
||||
Nicole Aksoy = Hof 2, Tisch 56, Nummer 2
|
||||
Daniel Krause = Hof 2, Tisch 56, Nummer 3
|
||||
Prof. Dr. Emre Ludwig = Hof 2, Tisch 56, Nummer 4
|
||||
Olga Busch = Hof 2, Tisch 56, Nummer 1
|
||||
Emre Busch = Hof 2, Tisch 56, Nummer 2
|
||||
Marie Busch = Hof 2, Tisch 56, Nummer 3
|
||||
Michael Busch = Hof 2, Tisch 56, Nummer 4
|
||||
|
||||
[57]
|
||||
Patrick Arnold = Hof 2, Tisch 57, Nummer 1
|
||||
Leni Arnold = Hof 2, Tisch 57, Nummer 2
|
||||
Prof. Dr. Emre Ludwig = Hof 2, Tisch 57, Nummer 1
|
||||
Daniel Krause = Hof 2, Tisch 57, Nummer 2
|
||||
Nicole Aksoy = Hof 2, Tisch 57, Nummer 3
|
||||
Markus Klein = Hof 2, Tisch 57, Nummer 4
|
||||
|
||||
[58]
|
||||
Emma Simon = Hof 2, Tisch 58, Nummer 1
|
||||
Markus Simon = Hof 2, Tisch 58, Nummer 2
|
||||
Lena Simon = Hof 2, Tisch 58, Nummer 3
|
||||
Andreas Simon = Hof 2, Tisch 58, Nummer 4
|
||||
Prof. Dr. Marco Seifert = Hof 2, Tisch 58, Nummer 1
|
||||
Matthias Krause = Hof 2, Tisch 58, Nummer 2
|
||||
Giovanna Schwarz = Hof 2, Tisch 58, Nummer 3
|
||||
|
||||
[59]
|
||||
Dragana Pohl = Hof 2, Tisch 59, Nummer 1
|
||||
Emre Pohl = Hof 2, Tisch 59, Nummer 2
|
||||
Mia Pohl = Hof 2, Tisch 59, Nummer 3
|
||||
Theo Pohl = Hof 2, Tisch 59, Nummer 4
|
||||
Prof. Dr. Thomas Tran = Hof 2, Tisch 59, Nummer 1
|
||||
Sergej Petrov = Hof 2, Tisch 59, Nummer 2
|
||||
Kathrin Polat = Hof 2, Tisch 59, Nummer 3
|
||||
Marija Aksoy = Hof 2, Tisch 59, Nummer 4
|
||||
|
||||
[60]
|
||||
Daniel Ott = Hof 2, Tisch 60, Nummer 1
|
||||
Hannah Ott = Hof 2, Tisch 60, Nummer 2
|
||||
Melanie Ott = Hof 2, Tisch 60, Nummer 3
|
||||
Nicole Sahin = Hof 2, Tisch 60, Nummer 1
|
||||
Markus Sahin = Hof 2, Tisch 60, Nummer 2
|
||||
Kathrin Sahin = Hof 2, Tisch 60, Nummer 3
|
||||
Patrick Sahin = Hof 2, Tisch 60, Nummer 4
|
||||
|
||||
[61]
|
||||
Emre Busch = Hof 2, Tisch 61, Nummer 1
|
||||
Michael Busch = Hof 2, Tisch 61, Nummer 2
|
||||
Marie Busch = Hof 2, Tisch 61, Nummer 3
|
||||
Olga Busch = Hof 2, Tisch 61, Nummer 4
|
||||
Sarah Maier = Hof 2, Tisch 61, Nummer 1
|
||||
Christian Maier = Hof 2, Tisch 61, Nummer 2
|
||||
Olga Maier = Hof 2, Tisch 61, Nummer 3
|
||||
Arda Maier = Hof 2, Tisch 61, Nummer 4
|
||||
|
||||
[62]
|
||||
Matthias Kovac = Hof 2, Tisch 62, Nummer 1
|
||||
Prof. Dr. Yusuf Esposito = Hof 2, Tisch 62, Nummer 2
|
||||
Marija Becker = Hof 2, Tisch 62, Nummer 3
|
||||
Luca Kovac = Hof 2, Tisch 62, Nummer 1
|
||||
Dr. Dragana Krause = Hof 2, Tisch 62, Nummer 2
|
||||
Prof. Dr. Dennis Schmitt = Hof 2, Tisch 62, Nummer 3
|
||||
|
||||
[63]
|
||||
Patrick Barth = Hof 2, Tisch 63, Nummer 1
|
||||
Nadine Barth = Hof 2, Tisch 63, Nummer 2
|
||||
Lina Barth = Hof 2, Tisch 63, Nummer 3
|
||||
Timo Barth = Hof 2, Tisch 63, Nummer 4
|
||||
Andreas Krause = Hof 2, Tisch 63, Nummer 1
|
||||
Emma Krause = Hof 2, Tisch 63, Nummer 2
|
||||
Arda Krause = Hof 2, Tisch 63, Nummer 3
|
||||
Julia Krause = Hof 2, Tisch 63, Nummer 4
|
||||
|
||||
[64]
|
||||
Dr. Patrick Kraus = Hof 2, Tisch 64, Nummer 1
|
||||
Yusuf Weber = Hof 2, Tisch 64, Nummer 2
|
||||
Stefan Richter = Hof 2, Tisch 64, Nummer 3
|
||||
Prof. Dr. Dennis Schmitt = Hof 2, Tisch 64, Nummer 4
|
||||
Katrin Werner = Hof 2, Tisch 64, Nummer 1
|
||||
Patrick Busch = Hof 2, Tisch 64, Nummer 2
|
||||
Emre Hoffmann = Hof 2, Tisch 64, Nummer 3
|
||||
Sergej Lange = Hof 2, Tisch 64, Nummer 4
|
||||
|
||||
[65]
|
||||
Patrick Zimmermann = Hof 2, Tisch 65, Nummer 1
|
||||
Luca Kovac = Hof 2, Tisch 65, Nummer 2
|
||||
Luca Ott = Hof 2, Tisch 65, Nummer 3
|
||||
Dr. Dragana Krause = Hof 2, Tisch 65, Nummer 4
|
||||
Nadine Arnold = Hof 2, Tisch 65, Nummer 1
|
||||
Marco Richter = Hof 2, Tisch 65, Nummer 2
|
||||
Prof. Dr. Patrick Hoffmann = Hof 2, Tisch 65, Nummer 3
|
||||
Marija Polat = Hof 2, Tisch 65, Nummer 4
|
||||
|
||||
[66]
|
||||
Marco Werner = Hof 2, Tisch 66, Nummer 1
|
||||
Sandra Werner = Hof 2, Tisch 66, Nummer 2
|
||||
Andreas Werner = Hof 2, Tisch 66, Nummer 3
|
||||
Nadine Werner = Hof 2, Tisch 66, Nummer 4
|
||||
Lena Simon = Hof 2, Tisch 66, Nummer 1
|
||||
Markus Simon = Hof 2, Tisch 66, Nummer 2
|
||||
Emma Simon = Hof 2, Tisch 66, Nummer 3
|
||||
Andreas Simon = Hof 2, Tisch 66, Nummer 4
|
||||
|
||||
[67]
|
||||
Prof. Dr. Patrick Hoffmann = Hof 2, Tisch 67, Nummer 1
|
||||
Nadine Arnold = Hof 2, Tisch 67, Nummer 2
|
||||
Marija Polat = Hof 2, Tisch 67, Nummer 3
|
||||
Marco Richter = Hof 2, Tisch 67, Nummer 4
|
||||
Yusuf Weber = Hof 2, Tisch 67, Nummer 1
|
||||
Dr. Patrick Kraus = Hof 2, Tisch 67, Nummer 2
|
||||
Dr. Aylin Ludwig = Hof 2, Tisch 67, Nummer 3
|
||||
|
||||
[68]
|
||||
Nicole Wagner = Hof 2, Tisch 68, Nummer 1
|
||||
Marco Wagner = Hof 2, Tisch 68, Nummer 2
|
||||
Sarah Wagner = Hof 2, Tisch 68, Nummer 3
|
||||
Henry Wagner = Hof 2, Tisch 68, Nummer 4
|
||||
|
||||
[69]
|
||||
Nicole Kaya = Hof 2, Tisch 69, Nummer 1
|
||||
Christina Kaya = Hof 2, Tisch 69, Nummer 2
|
||||
Luca Kaya = Hof 2, Tisch 69, Nummer 3
|
||||
Olga Franke = Hof 2, Tisch 69, Nummer 1
|
||||
Amira Franke = Hof 2, Tisch 69, Nummer 2
|
||||
Marco Franke = Hof 2, Tisch 69, Nummer 3
|
||||
|
||||
[70]
|
||||
Katrin Polat = Hof 2, Tisch 70, Nummer 1
|
||||
Matthias Ott = Hof 2, Tisch 70, Nummer 2
|
||||
Markus Polat = Hof 2, Tisch 70, Nummer 3
|
||||
Olga Ott = Hof 2, Tisch 70, Nummer 4
|
||||
Svenja Zimmermann = Hof 2, Tisch 70, Nummer 1
|
||||
Jan Zimmermann = Hof 2, Tisch 70, Nummer 2
|
||||
Mia Zimmermann = Hof 2, Tisch 70, Nummer 3
|
||||
Markus Zimmermann = Hof 2, Tisch 70, Nummer 4
|
||||
|
||||
[71]
|
||||
Sarah Polat = Hof 2, Tisch 71, Nummer 1
|
||||
Stefan Polat = Hof 2, Tisch 71, Nummer 2
|
||||
Stefanie Polat = Hof 2, Tisch 71, Nummer 3
|
||||
Luca Ott = Hof 2, Tisch 71, Nummer 1
|
||||
Patrick Zimmermann = Hof 2, Tisch 71, Nummer 2
|
||||
Stefan Richter = Hof 2, Tisch 71, Nummer 3
|
||||
|
||||
[72]
|
||||
Thomas Bianchi = Hof 2, Tisch 72, Nummer 1
|
||||
Olga Roth = Hof 2, Tisch 72, Nummer 2
|
||||
Dr. Olga Klein = Hof 2, Tisch 72, Nummer 3
|
||||
Matthias Ott = Hof 2, Tisch 72, Nummer 1
|
||||
Hannah Ott = Hof 2, Tisch 72, Nummer 2
|
||||
Olga Ott = Hof 2, Tisch 72, Nummer 3
|
||||
|
||||
[73]
|
||||
Julia Wolf = Hof 2, Tisch 73, Nummer 1
|
||||
Thomas Wolf = Hof 2, Tisch 73, Nummer 2
|
||||
Emma Wolf = Hof 2, Tisch 73, Nummer 3
|
||||
Ben Wolf = Hof 2, Tisch 73, Nummer 4
|
||||
Jennifer Neumann = Hof 2, Tisch 73, Nummer 1
|
||||
Thomas Neumann = Hof 2, Tisch 73, Nummer 2
|
||||
Lina Neumann = Hof 2, Tisch 73, Nummer 3
|
||||
Matteo Neumann = Hof 2, Tisch 73, Nummer 4
|
||||
|
||||
[74]
|
||||
Thomas Neumann = Hof 2, Tisch 74, Nummer 1
|
||||
Matteo Neumann = Hof 2, Tisch 74, Nummer 2
|
||||
Jennifer Neumann = Hof 2, Tisch 74, Nummer 3
|
||||
Lina Neumann = Hof 2, Tisch 74, Nummer 4
|
||||
Patrick Barth = Hof 2, Tisch 74, Nummer 1
|
||||
Nadine Barth = Hof 2, Tisch 74, Nummer 2
|
||||
Timo Barth = Hof 2, Tisch 74, Nummer 3
|
||||
Lina Barth = Hof 2, Tisch 74, Nummer 4
|
||||
|
||||
[75]
|
||||
Marija Aksoy = Hof 2, Tisch 75, Nummer 1
|
||||
Sergej Petrov = Hof 2, Tisch 75, Nummer 2
|
||||
Prof. Dr. Thomas Tran = Hof 2, Tisch 75, Nummer 3
|
||||
Kathrin Polat = Hof 2, Tisch 75, Nummer 4
|
||||
Dragana Pohl = Hof 2, Tisch 75, Nummer 1
|
||||
Emre Pohl = Hof 2, Tisch 75, Nummer 2
|
||||
Mia Pohl = Hof 2, Tisch 75, Nummer 3
|
||||
Theo Pohl = Hof 2, Tisch 75, Nummer 4
|
||||
|
||||
[76]
|
||||
Giovanna Schmidt = Hof 2, Tisch 76, Nummer 1
|
||||
Marie Schmidt = Hof 2, Tisch 76, Nummer 2
|
||||
Matthias Schmidt = Hof 2, Tisch 76, Nummer 3
|
||||
Prof. Dr. Yusuf Esposito = Hof 2, Tisch 76, Nummer 1
|
||||
Marija Becker = Hof 2, Tisch 76, Nummer 2
|
||||
Matthias Kovac = Hof 2, Tisch 76, Nummer 3
|
||||
|
||||
[77]
|
||||
Nicole Becker = Hof 2, Tisch 77, Nummer 1
|
||||
Sandra Becker = Hof 2, Tisch 77, Nummer 2
|
||||
Jan Becker = Hof 2, Tisch 77, Nummer 3
|
||||
Luca Kaya = Hof 2, Tisch 77, Nummer 1
|
||||
Christina Kaya = Hof 2, Tisch 77, Nummer 2
|
||||
Nicole Kaya = Hof 2, Tisch 77, Nummer 3
|
||||
|
||||
[78]
|
||||
Leon Horn = Hof 2, Tisch 78, Nummer 1
|
||||
Michael Horn = Hof 2, Tisch 78, Nummer 2
|
||||
Kathrin Horn = Hof 2, Tisch 78, Nummer 3
|
||||
Layla Horn = Hof 2, Tisch 78, Nummer 4
|
||||
Deniz Hartmann = Hof 2, Tisch 78, Nummer 1
|
||||
Nadine Hartmann = Hof 2, Tisch 78, Nummer 2
|
||||
Michael Franke = Hof 2, Tisch 78, Nummer 3
|
||||
Julia Franke = Hof 2, Tisch 78, Nummer 4
|
||||
|
||||
[79]
|
||||
Nicole Wagner = Hof 2, Tisch 79, Nummer 1
|
||||
Marco Wagner = Hof 2, Tisch 79, Nummer 2
|
||||
Sarah Wagner = Hof 2, Tisch 79, Nummer 3
|
||||
Henry Wagner = Hof 2, Tisch 79, Nummer 4
|
||||
Kathrin Horn = Hof 2, Tisch 79, Nummer 1
|
||||
Michael Horn = Hof 2, Tisch 79, Nummer 2
|
||||
Layla Horn = Hof 2, Tisch 79, Nummer 3
|
||||
Leon Horn = Hof 2, Tisch 79, Nummer 4
|
||||
|
||||
[80]
|
||||
Julia Engel = Hof 2, Tisch 80, Nummer 1
|
||||
Anton Engel = Hof 2, Tisch 80, Nummer 2
|
||||
Prof. Dr. Emre Albrecht = Hof 2, Tisch 80, Nummer 3
|
||||
Dr. Jennifer Arnold = Hof 2, Tisch 80, Nummer 4
|
||||
Stefanie Polat = Hof 2, Tisch 80, Nummer 1
|
||||
Stefan Polat = Hof 2, Tisch 80, Nummer 2
|
||||
Melanie Ott = Hof 2, Tisch 80, Nummer 3
|
||||
Daniel Ott = Hof 2, Tisch 80, Nummer 4
|
||||
|
||||
[81]
|
||||
Daniel Nguyen = Hof 2, Tisch 81, Nummer 1
|
||||
Anja Nguyen = Hof 2, Tisch 81, Nummer 2
|
||||
Sofia Nguyen = Hof 2, Tisch 81, Nummer 3
|
||||
Sarah Polat = Hof 2, Tisch 81, Nummer 1
|
||||
Markus Polat = Hof 2, Tisch 81, Nummer 2
|
||||
Katrin Polat = Hof 2, Tisch 81, Nummer 3
|
||||
|
||||
[82]
|
||||
Milan Klein = Hof 2, Tisch 82, Nummer 1
|
||||
Lina Klein = Hof 2, Tisch 82, Nummer 2
|
||||
Stefanie Klein = Hof 2, Tisch 82, Nummer 3
|
||||
Olga Roth = Hof 2, Tisch 82, Nummer 1
|
||||
Prof. Dr. Emre Albrecht = Hof 2, Tisch 82, Nummer 2
|
||||
Thomas Bianchi = Hof 2, Tisch 82, Nummer 3
|
||||
|
||||
[83]
|
||||
Julia Krause = Hof 2, Tisch 83, Nummer 1
|
||||
Emma Krause = Hof 2, Tisch 83, Nummer 2
|
||||
Arda Krause = Hof 2, Tisch 83, Nummer 3
|
||||
Andreas Krause = Hof 2, Tisch 83, Nummer 4
|
||||
Emma Wolf = Hof 2, Tisch 83, Nummer 1
|
||||
Ben Wolf = Hof 2, Tisch 83, Nummer 2
|
||||
Julia Wolf = Hof 2, Tisch 83, Nummer 3
|
||||
Thomas Wolf = Hof 2, Tisch 83, Nummer 4
|
||||
|
||||
[84]
|
||||
Deniz Hartmann = Hof 2, Tisch 84, Nummer 1
|
||||
Marija Hartmann = Hof 2, Tisch 84, Nummer 2
|
||||
Nadine Hartmann = Hof 2, Tisch 84, Nummer 3
|
||||
Marija Hartmann = Hof 2, Tisch 84, Nummer 1
|
||||
Thomas Hartmann = Hof 2, Tisch 84, Nummer 2
|
||||
Olga Hartmann = Hof 2, Tisch 84, Nummer 3
|
||||
|
||||
[85]
|
||||
Michael Lange = Hof 2, Tisch 85, Nummer 1
|
||||
Thomas Hartmann = Hof 2, Tisch 85, Nummer 2
|
||||
Sofia Lange = Hof 2, Tisch 85, Nummer 3
|
||||
Olga Hartmann = Hof 2, Tisch 85, Nummer 4
|
||||
Matthias Schmidt = Hof 2, Tisch 85, Nummer 1
|
||||
Marie Schmidt = Hof 2, Tisch 85, Nummer 2
|
||||
Giovanna Schmidt = Hof 2, Tisch 85, Nummer 3
|
||||
|
||||
[86]
|
||||
Svenja Lange = Hof 2, Tisch 86, Nummer 1
|
||||
Jan Lange = Hof 2, Tisch 86, Nummer 2
|
||||
Dragana Lange = Hof 2, Tisch 86, Nummer 3
|
||||
Thomas Stein = Hof 2, Tisch 86, Nummer 1
|
||||
Emilia Stein = Hof 2, Tisch 86, Nummer 2
|
||||
Ben Stein = Hof 2, Tisch 86, Nummer 3
|
||||
Giovanna Stein = Hof 2, Tisch 86, Nummer 4
|
||||
|
||||
[87]
|
||||
Nicole Engel = Hof 2, Tisch 87, Nummer 1
|
||||
Yusuf Engel = Hof 2, Tisch 87, Nummer 2
|
||||
Anja Engel = Hof 2, Tisch 87, Nummer 3
|
||||
Lena Frank = Hof 2, Tisch 87, Nummer 1
|
||||
Marie Frank = Hof 2, Tisch 87, Nummer 2
|
||||
Finn Frank = Hof 2, Tisch 87, Nummer 3
|
||||
|
||||
[88]
|
||||
Dr. Olga Klein = Hof 2, Tisch 88, Nummer 1
|
||||
Dr. Jennifer Arnold = Hof 2, Tisch 88, Nummer 2
|
||||
Nadine Frank = Hof 2, Tisch 88, Nummer 3
|
||||
Dennis Frank = Hof 2, Tisch 88, Nummer 4
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1240" height="420" viewBox="0 0 1240 420" font-family="sans-serif">
|
||||
<rect width="100%" height="100%" fill="white"/>
|
||||
<text x="620" y="26" text-anchor="middle" font-size="18" fill="#333">Sommerfest — Umfeld/Grundriss: zwei trapezfoermige Innenhoefe (88 Vierertische, 300 Gaeste)</text>
|
||||
<text x="620" y="26" text-anchor="middle" font-size="18" fill="#333">Sommerfest - Umfeld/Grundriss: zwei trapezfoermige Innenhoefe (88 Vierertische, 300 Gaeste)</text>
|
||||
<polygon points="48,96 512,96 432,320 128,320" fill="#f5f0e6" stroke="#7a6a50" stroke-width="2"/>
|
||||
<text x="280" y="342" text-anchor="middle" font-size="14" fill="#7a6a50">Hof 1 (Tische 1-45)</text>
|
||||
<polygon points="688,96 1152,96 1032,320 808,320" fill="#f5f0e6" stroke="#7a6a50" stroke-width="2"/>
|
||||
<text x="920" y="342" text-anchor="middle" font-size="14" fill="#7a6a50">Hof 2 (Tische 46-88)</text>
|
||||
<rect x="536" y="24" width="168" height="48" fill="#d9c9e8" stroke="#6b4d8a" stroke-width="2"/>
|
||||
<text x="620" y="50" text-anchor="middle" font-size="13" fill="#4a3465">Buehne — Band</text>
|
||||
<text x="620" y="50" text-anchor="middle" font-size="13" fill="#4a3465">Buehne - Band</text>
|
||||
<rect x="536" y="92" width="168" height="176" fill="#cfe3f0" stroke="#4a7ba0" stroke-width="2" stroke-dasharray="8 4"/>
|
||||
<text x="620" y="180" text-anchor="middle" font-size="13" fill="#2d566f">Tanzflaeche</text>
|
||||
<text x="16" y="208" text-anchor="start" font-size="12" fill="#a03030">Eingang West</text>
|
||||
@@ -107,5 +107,5 @@
|
||||
<circle cx="920" cy="288" r="12" fill="white" stroke="#999999" stroke-width="1"/>
|
||||
<circle cx="960" cy="288" r="12" fill="white" stroke="#999999" stroke-width="1"/>
|
||||
<circle cx="1000" cy="288" r="12" fill="white" stroke="#999999" stroke-width="1"/>
|
||||
<text x="620" y="408" text-anchor="middle" font-size="11" fill="#888">Umfeld.svg — Grundriss-Elemente (Buehne, Band, Tanzflaeche, Eingaenge) werden nicht mitoptimiert; VIP-Tische 5/6/7 vor der Buehne</text>
|
||||
<text x="620" y="408" text-anchor="middle" font-size="11" fill="#888">Umfeld.svg - Grundriss-Elemente (Buehne, Band, Tanzflaeche, Eingaenge) werden nicht mitoptimiert; VIP-Tische 5/6/7 vor der Buehne</text>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 9.1 KiB |
@@ -0,0 +1,301 @@
|
||||
Vorname;Nachname;Titel;Gruppe;Tisch;Anzahl
|
||||
Alexander;Grothe;Dr. h.c.;VIP Industrie: Vorstand Automobilkonzern (fest an Tisch 5, vor der Buehne);5;
|
||||
Beate;Grothe;;VIP Industrie: Vorstand Automobilkonzern (fest an Tisch 5, vor der Buehne);5;
|
||||
Ferdinand;Kessler;Dr.;VIP Industrie: Vorstand Automobilkonzern (fest an Tisch 5, vor der Buehne);5;
|
||||
Viktoria;Kessler;;VIP Industrie: Vorstand Automobilkonzern (fest an Tisch 5, vor der Buehne);5;
|
||||
Konstantin;Freiherr von Waldeck;Dr.;VIP Wirtschaft: Bankvorstand (fest an Tisch 6);6;
|
||||
Antonia;Freifrau von Waldeck;;VIP Wirtschaft: Bankvorstand (fest an Tisch 6);6;
|
||||
Georg;Steinbach;;VIP Wirtschaft: Bankvorstand (fest an Tisch 6);6;
|
||||
Elisabeth;Steinbach;;VIP Wirtschaft: Bankvorstand (fest an Tisch 6);6;
|
||||
Heinrich;Dallmann;;VIP Industrie: Unternehmerfamilie (fest an Tisch 7);7;
|
||||
Margarete;Dallmann;;VIP Industrie: Unternehmerfamilie (fest an Tisch 7);7;
|
||||
Maximilian;Dallmann;;VIP Industrie: Unternehmerfamilie (fest an Tisch 7);7;
|
||||
Charlotte;Dallmann;;VIP Industrie: Unternehmerfamilie (fest an Tisch 7);7;
|
||||
Sandra;Bianchi;;Familie Bianchi (Studierenden-Familie 1);;
|
||||
Thomas;Bianchi;;Familie Bianchi (Studierenden-Familie 1);;
|
||||
Mia;Bianchi;;Familie Bianchi (Studierenden-Familie 1);;
|
||||
Jennifer;Arnold;;Familie Arnold (Studierenden-Familie 2);;
|
||||
Patrick;Arnold;;Familie Arnold (Studierenden-Familie 2);;
|
||||
Leni;Arnold;;Familie Arnold (Studierenden-Familie 2);;
|
||||
Christian;Arnold;;Familie Arnold (Studierenden-Familie 2);;
|
||||
Mila;Arnold;;Familie Arnold (Studierenden-Familie 2);;
|
||||
Nicole;Seifert;;Familie Seifert (Studierenden-Familie 3);;
|
||||
Yusuf;Seifert;;Familie Seifert (Studierenden-Familie 3);;
|
||||
Leni;Seifert;;Familie Seifert (Studierenden-Familie 3);;
|
||||
Timo;Seifert;;Familie Seifert (Studierenden-Familie 3);;
|
||||
Elif;Seifert;;Familie Seifert (Studierenden-Familie 3);;
|
||||
Sarah;Albrecht;;Familie Albrecht (Studierenden-Familie 4);;
|
||||
Andreas;Albrecht;;Familie Albrecht (Studierenden-Familie 4);;
|
||||
Yusuf;Esposito;Prof. Dr.;Institut fuer Maschinenwesen;;
|
||||
Marija;Becker;;Institut fuer Maschinenwesen;;
|
||||
Matthias;Kovac;;Institut fuer Maschinenwesen;;
|
||||
Nicole;Kaya;;Familie Kaya (Studierenden-Familie 5);;
|
||||
Luca;Kaya;;Familie Kaya (Studierenden-Familie 5);;
|
||||
Christina;Kaya;;Familie Kaya (Studierenden-Familie 5);;
|
||||
Julia;Richter;Prof. Dr.;Lehrstuhl Thermodynamik;;
|
||||
Jennifer;Haas;Dr.;Lehrstuhl Thermodynamik;;
|
||||
Markus;Barth;;Lehrstuhl Thermodynamik;;
|
||||
Matthias;Petrov;;Lehrstuhl Thermodynamik;;
|
||||
Andreas;Weber;;Lehrstuhl Thermodynamik;;
|
||||
Giovanna;Schmidt;;Familie Schmidt (Studierenden-Familie 6);;
|
||||
Matthias;Schmidt;;Familie Schmidt (Studierenden-Familie 6);;
|
||||
Marie;Schmidt;;Familie Schmidt (Studierenden-Familie 6);;
|
||||
Anja;Richter;;Familie Richter (Studierenden-Familie 7);;
|
||||
Matthias;Richter;;Familie Richter (Studierenden-Familie 7);;
|
||||
Greta;Richter;;Familie Richter (Studierenden-Familie 7);;
|
||||
Anton;Richter;;Familie Richter (Studierenden-Familie 7);;
|
||||
Emre;Albrecht;Prof. Dr.;Institut fuer Informatik;;
|
||||
Thomas;Bianchi;;Institut fuer Informatik;;
|
||||
Olga;Roth;;Institut fuer Informatik;;
|
||||
Olga;Klein;Dr.;Institut fuer Informatik;;
|
||||
Jennifer;Arnold;Dr.;Institut fuer Informatik;;
|
||||
Dennis;Werner;Prof. Dr.;Lehrstuhl Regelungstechnik;;
|
||||
Thomas;Hoffmann;Dr.;Lehrstuhl Regelungstechnik;;
|
||||
Olga;Tran;;Lehrstuhl Regelungstechnik;;
|
||||
Anja;Seidel;Dr.;Lehrstuhl Regelungstechnik;;
|
||||
Markus;Stein;Prof. Dr.;Institut fuer Werkstoffkunde;;
|
||||
Matthias;Popescu;;Institut fuer Werkstoffkunde;;
|
||||
Yusuf;Albrecht;Prof. Dr.;Lehrstuhl Stroemungsmechanik;;
|
||||
Svenja;Simon;;Lehrstuhl Stroemungsmechanik;;
|
||||
Julia;Roth;Prof. Dr.;Institut fuer Elektrotechnik;;
|
||||
Thomas;Hansen;;Institut fuer Elektrotechnik;;
|
||||
Nicole;Schmidt;;Institut fuer Elektrotechnik;;
|
||||
Julia;Nguyen;;Institut fuer Elektrotechnik;;
|
||||
Stefanie;Seifert;Dr.;Institut fuer Elektrotechnik;;
|
||||
Thomas;Winkler;;Institut fuer Elektrotechnik;;
|
||||
Jan;Esposito;Dr.;Institut fuer Elektrotechnik;;
|
||||
Nicole;Becker;;Familie Becker (Studierenden-Familie 8);;
|
||||
Jan;Becker;;Familie Becker (Studierenden-Familie 8);;
|
||||
Sandra;Becker;;Familie Becker (Studierenden-Familie 8);;
|
||||
Kathrin;Petrov;Prof. Dr.;Lehrstuhl Mathematik;;
|
||||
Markus;Seidel;Dr.;Lehrstuhl Mathematik;;
|
||||
Markus;Kraus;;Lehrstuhl Mathematik;;
|
||||
Giovanna;Petrov;;Lehrstuhl Mathematik;;
|
||||
Nadine;Stein;Dr.;Lehrstuhl Mathematik;;
|
||||
Markus;Schmitt;;Lehrstuhl Mathematik;;
|
||||
Christian;Peters;;Lehrstuhl Mathematik;;
|
||||
Anja;Nguyen;;Familie Nguyen (Studierenden-Familie 9);;
|
||||
Daniel;Nguyen;;Familie Nguyen (Studierenden-Familie 9);;
|
||||
Sofia;Nguyen;;Familie Nguyen (Studierenden-Familie 9);;
|
||||
Elif;Celik;;Familie Celik (Studierenden-Familie 10);;
|
||||
Patrick;Celik;;Familie Celik (Studierenden-Familie 10);;
|
||||
Stefanie;Klein;;Familie Klein (Studierenden-Familie 11);;
|
||||
Milan;Klein;;Familie Klein (Studierenden-Familie 11);;
|
||||
Lina;Klein;;Familie Klein (Studierenden-Familie 11);;
|
||||
Olga;Busch;;Familie Busch (Studierenden-Familie 12);;
|
||||
Emre;Busch;;Familie Busch (Studierenden-Familie 12);;
|
||||
Marie;Busch;;Familie Busch (Studierenden-Familie 12);;
|
||||
Michael;Busch;;Familie Busch (Studierenden-Familie 12);;
|
||||
Stefan;Schmitt;Prof. Dr.;Institut fuer Physik;;
|
||||
Marija;Tran;;Institut fuer Physik;;
|
||||
Kathrin;Koch;Dr.;Institut fuer Physik;;
|
||||
Julia;Kuhn;Dr.;Institut fuer Physik;;
|
||||
Katrin;Weber;;Institut fuer Physik;;
|
||||
Luca;Werner;;Institut fuer Physik;;
|
||||
Anja;Engel;;Familie Engel (Studierenden-Familie 13);;
|
||||
Yusuf;Engel;;Familie Engel (Studierenden-Familie 13);;
|
||||
Julia;Engel;;Familie Engel (Studierenden-Familie 13);;
|
||||
Anton;Engel;;Familie Engel (Studierenden-Familie 13);;
|
||||
Nicole;Engel;;Familie Engel (Studierenden-Familie 13);;
|
||||
Emre;Ludwig;Prof. Dr.;Lehrstuhl Produktionstechnik;;
|
||||
Daniel;Krause;;Lehrstuhl Produktionstechnik;;
|
||||
Nicole;Aksoy;;Lehrstuhl Produktionstechnik;;
|
||||
Markus;Klein;;Lehrstuhl Produktionstechnik;;
|
||||
Dennis;Schmitt;Prof. Dr.;Institut fuer Chemie;;
|
||||
Luca;Kovac;;Institut fuer Chemie;;
|
||||
Dragana;Krause;Dr.;Institut fuer Chemie;;
|
||||
Luca;Ott;;Institut fuer Chemie;;
|
||||
Patrick;Zimmermann;;Institut fuer Chemie;;
|
||||
Stefan;Richter;;Institut fuer Chemie;;
|
||||
Yusuf;Seidel;Prof. Dr.;Lehrstuhl Fahrzeugtechnik;;
|
||||
Yusuf;Bauer;;Lehrstuhl Fahrzeugtechnik;;
|
||||
Jan;Bianchi;Dr.;Lehrstuhl Fahrzeugtechnik;;
|
||||
Marco;Winkler;;Lehrstuhl Fahrzeugtechnik;;
|
||||
Emre;Klein;;Lehrstuhl Fahrzeugtechnik;;
|
||||
Patrick;Kaya;Dr.;Lehrstuhl Fahrzeugtechnik;;
|
||||
Christina;Krause;Dr.;Lehrstuhl Fahrzeugtechnik;;
|
||||
Nadine;Frank;;Familie Frank (Studierenden-Familie 14);;
|
||||
Dennis;Frank;;Familie Frank (Studierenden-Familie 14);;
|
||||
Marie;Frank;;Familie Frank (Studierenden-Familie 14);;
|
||||
Finn;Frank;;Familie Frank (Studierenden-Familie 14);;
|
||||
Lena;Frank;;Familie Frank (Studierenden-Familie 14);;
|
||||
Sandra;Werner;;Familie Werner (Studierenden-Familie 15);;
|
||||
Andreas;Werner;;Familie Werner (Studierenden-Familie 15);;
|
||||
Nadine;Werner;;Familie Werner (Studierenden-Familie 15);;
|
||||
Marco;Werner;;Familie Werner (Studierenden-Familie 15);;
|
||||
Sarah;Roth;;Familie Roth (Studierenden-Familie 16);;
|
||||
Christian;Roth;;Familie Roth (Studierenden-Familie 16);;
|
||||
Sofia;Roth;;Familie Roth (Studierenden-Familie 16);;
|
||||
Marco;Seifert;Prof. Dr.;Institut fuer Bauingenieurwesen;;
|
||||
Matthias;Krause;;Institut fuer Bauingenieurwesen;;
|
||||
Giovanna;Schwarz;;Institut fuer Bauingenieurwesen;;
|
||||
Yusuf;Weber;;Institut fuer Bauingenieurwesen;;
|
||||
Patrick;Kraus;Dr.;Institut fuer Bauingenieurwesen;;
|
||||
Aylin;Ludwig;Dr.;Institut fuer Bauingenieurwesen;;
|
||||
Patrick;Hoffmann;Prof. Dr.;Lehrstuhl Messtechnik;;
|
||||
Marija;Polat;;Lehrstuhl Messtechnik;;
|
||||
Nadine;Arnold;;Lehrstuhl Messtechnik;;
|
||||
Marco;Richter;;Lehrstuhl Messtechnik;;
|
||||
Dragana;Dietrich;Prof. Dr.;Doktorandenrunde Energietechnik;;
|
||||
Michael;Aksoy;Dr.;Doktorandenrunde Energietechnik;;
|
||||
Katrin;Werner;;Doktorandenrunde Energietechnik;;
|
||||
Patrick;Busch;;Doktorandenrunde Energietechnik;;
|
||||
Emre;Hoffmann;;Doktorandenrunde Energietechnik;;
|
||||
Sergej;Lange;;Doktorandenrunde Energietechnik;;
|
||||
Anja;Richter;Prof. Dr.;Doktorandenrunde Robotik;;
|
||||
Jan;Thiel;Dr.;Doktorandenrunde Robotik;;
|
||||
Thomas;Sahin;;Doktorandenrunde Robotik;;
|
||||
Sarah;Koch;;Familie Koch (Studierenden-Familie 17);;
|
||||
Jan;Koch;;Familie Koch (Studierenden-Familie 17);;
|
||||
Marie;Koch;;Familie Koch (Studierenden-Familie 17);;
|
||||
Emil;Koch;;Familie Koch (Studierenden-Familie 17);;
|
||||
Olga;Koch;;Familie Koch (Studierenden-Familie 17);;
|
||||
Michael;Koch;;Familie Koch (Studierenden-Familie 17);;
|
||||
Thomas;Tran;Prof. Dr.;Emeriti-Stammtisch;;
|
||||
Sergej;Petrov;;Emeriti-Stammtisch;;
|
||||
Kathrin;Polat;;Emeriti-Stammtisch;;
|
||||
Marija;Aksoy;;Emeriti-Stammtisch;;
|
||||
Sergej;Ott;Prof. Dr.;Institut fuer Verfahrenstechnik;;
|
||||
Dragana;Bauer;;Institut fuer Verfahrenstechnik;;
|
||||
Nicole;Peters;;Institut fuer Verfahrenstechnik;;
|
||||
Nicole;Hansen;Dr.;Institut fuer Verfahrenstechnik;;
|
||||
Thomas;Krause;;Institut fuer Verfahrenstechnik;;
|
||||
Patrick;Haas;;Institut fuer Verfahrenstechnik;;
|
||||
Timo;Kaya;Prof. Dr.;Lehrstuhl Mechatronik;;
|
||||
Sandra;Demir;Dr.;Lehrstuhl Mechatronik;;
|
||||
Yusuf;Ott;Prof. Dr.;Institut fuer Luftfahrttechnik;;
|
||||
Nadine;Berger;Dr.;Institut fuer Luftfahrttechnik;;
|
||||
Patrick;Lehmann;;Institut fuer Luftfahrttechnik;;
|
||||
Nicole;Wagner;;Familie Wagner (Studierenden-Familie 18);;
|
||||
Marco;Wagner;;Familie Wagner (Studierenden-Familie 18);;
|
||||
Sarah;Wagner;;Familie Wagner (Studierenden-Familie 18);;
|
||||
Henry;Wagner;;Familie Wagner (Studierenden-Familie 18);;
|
||||
Jennifer;Dietrich;;Familie Dietrich (Studierenden-Familie 19);;
|
||||
Marco;Dietrich;;Familie Dietrich (Studierenden-Familie 19);;
|
||||
Sofia;Dietrich;;Familie Dietrich (Studierenden-Familie 19);;
|
||||
Julia;Thiel;;Familie Thiel (Studierenden-Familie 20);;
|
||||
Yusuf;Thiel;;Familie Thiel (Studierenden-Familie 20);;
|
||||
Christina;Thiel;;Familie Thiel (Studierenden-Familie 20);;
|
||||
Sarah;Schmitt;;Familie Schmitt (Studierenden-Familie 21);;
|
||||
Markus;Schmitt;;Familie Schmitt (Studierenden-Familie 21);;
|
||||
Sofia;Schmitt;;Familie Schmitt (Studierenden-Familie 21);;
|
||||
Marija;Hartmann;;Familie Hartmann (Studierenden-Familie 22);;
|
||||
Thomas;Hartmann;;Familie Hartmann (Studierenden-Familie 22);;
|
||||
Olga;Hartmann;;Familie Hartmann (Studierenden-Familie 22);;
|
||||
Deniz;Hartmann;;Familie Hartmann (Studierenden-Familie 22);;
|
||||
Nadine;Hartmann;;Familie Hartmann (Studierenden-Familie 22);;
|
||||
Melanie;Rossi;;Familie Rossi (Studierenden-Familie 23);;
|
||||
Luca;Rossi;;Familie Rossi (Studierenden-Familie 23);;
|
||||
Emilia;Rossi;;Familie Rossi (Studierenden-Familie 23);;
|
||||
Julia;Braun;;Familie Braun (Studierenden-Familie 24);;
|
||||
Milan;Braun;;Familie Braun (Studierenden-Familie 24);;
|
||||
Nadine;Braun;;Familie Braun (Studierenden-Familie 24);;
|
||||
Jan;Braun;;Familie Braun (Studierenden-Familie 24);;
|
||||
Dragana;Braun;;Familie Braun (Studierenden-Familie 24);;
|
||||
Christian;Braun;;Familie Braun (Studierenden-Familie 24);;
|
||||
Svenja;Zimmermann;;Familie Zimmermann (Studierenden-Familie 25);;
|
||||
Jan;Zimmermann;;Familie Zimmermann (Studierenden-Familie 25);;
|
||||
Mia;Zimmermann;;Familie Zimmermann (Studierenden-Familie 25);;
|
||||
Markus;Zimmermann;;Familie Zimmermann (Studierenden-Familie 25);;
|
||||
Julia;Krause;;Familie Krause (Studierenden-Familie 26);;
|
||||
Andreas;Krause;;Familie Krause (Studierenden-Familie 26);;
|
||||
Emma;Krause;;Familie Krause (Studierenden-Familie 26);;
|
||||
Arda;Krause;;Familie Krause (Studierenden-Familie 26);;
|
||||
Aylin;Nowak;;Familie Nowak (Studierenden-Familie 27);;
|
||||
Markus;Nowak;;Familie Nowak (Studierenden-Familie 27);;
|
||||
Lina;Nowak;;Familie Nowak (Studierenden-Familie 27);;
|
||||
Noah;Nowak;;Familie Nowak (Studierenden-Familie 27);;
|
||||
Kathrin;Nowak;;Familie Nowak (Studierenden-Familie 27);;
|
||||
Felix;Nowak;;Familie Nowak (Studierenden-Familie 27);;
|
||||
Kathrin;Horn;;Familie Horn (Studierenden-Familie 28);;
|
||||
Michael;Horn;;Familie Horn (Studierenden-Familie 28);;
|
||||
Layla;Horn;;Familie Horn (Studierenden-Familie 28);;
|
||||
Leon;Horn;;Familie Horn (Studierenden-Familie 28);;
|
||||
Melanie;Ott;;Familie Ott (Studierenden-Familie 29);;
|
||||
Daniel;Ott;;Familie Ott (Studierenden-Familie 29);;
|
||||
Olga;Ott;;Familie Ott (Studierenden-Familie 29);;
|
||||
Matthias;Ott;;Familie Ott (Studierenden-Familie 29);;
|
||||
Hannah;Ott;;Familie Ott (Studierenden-Familie 29);;
|
||||
Jennifer;Neumann;;Familie Neumann (Studierenden-Familie 30);;
|
||||
Thomas;Neumann;;Familie Neumann (Studierenden-Familie 30);;
|
||||
Lina;Neumann;;Familie Neumann (Studierenden-Familie 30);;
|
||||
Matteo;Neumann;;Familie Neumann (Studierenden-Familie 30);;
|
||||
Julia;Wolf;;Familie Wolf (Studierenden-Familie 31);;
|
||||
Thomas;Wolf;;Familie Wolf (Studierenden-Familie 31);;
|
||||
Emma;Wolf;;Familie Wolf (Studierenden-Familie 31);;
|
||||
Ben;Wolf;;Familie Wolf (Studierenden-Familie 31);;
|
||||
Nadine;Aksoy;;Familie Aksoy (Studierenden-Familie 32);;
|
||||
Thomas;Aksoy;;Familie Aksoy (Studierenden-Familie 32);;
|
||||
Marie;Aksoy;;Familie Aksoy (Studierenden-Familie 32);;
|
||||
Luca;Aksoy;;Familie Aksoy (Studierenden-Familie 32);;
|
||||
Sofia;Aksoy;;Familie Aksoy (Studierenden-Familie 32);;
|
||||
Sergej;Aksoy;;Familie Aksoy (Studierenden-Familie 32);;
|
||||
Giovanna;Hansen;;Familie Hansen (Studierenden-Familie 33);;
|
||||
Markus;Hansen;;Familie Hansen (Studierenden-Familie 33);;
|
||||
Olga;Hansen;;Familie Hansen (Studierenden-Familie 33);;
|
||||
Stefanie;Polat;;Familie Polat (Studierenden-Familie 34);;
|
||||
Stefan;Polat;;Familie Polat (Studierenden-Familie 34);;
|
||||
Sarah;Polat;;Familie Polat (Studierenden-Familie 34);;
|
||||
Markus;Polat;;Familie Polat (Studierenden-Familie 34);;
|
||||
Katrin;Polat;;Familie Polat (Studierenden-Familie 34);;
|
||||
Olga;Franke;;Familie Franke (Studierenden-Familie 35);;
|
||||
Marco;Franke;;Familie Franke (Studierenden-Familie 35);;
|
||||
Amira;Franke;;Familie Franke (Studierenden-Familie 35);;
|
||||
Michael;Franke;;Familie Franke (Studierenden-Familie 35);;
|
||||
Julia;Franke;;Familie Franke (Studierenden-Familie 35);;
|
||||
Lena;Kovac;;Familie Kovac (Studierenden-Familie 36);;
|
||||
Tobias;Kovac;;Familie Kovac (Studierenden-Familie 36);;
|
||||
Marija;Kovac;;Familie Kovac (Studierenden-Familie 36);;
|
||||
Marco;Kovac;;Familie Kovac (Studierenden-Familie 36);;
|
||||
Anja;Kovac;;Familie Kovac (Studierenden-Familie 36);;
|
||||
Henry;Kovac;;Familie Kovac (Studierenden-Familie 36);;
|
||||
Lena;Winkler;;Familie Winkler (Studierenden-Familie 37);;
|
||||
Patrick;Winkler;;Familie Winkler (Studierenden-Familie 37);;
|
||||
Kathrin;Petrov;;Familie Petrov (Studierenden-Familie 38);;
|
||||
Milan;Petrov;;Familie Petrov (Studierenden-Familie 38);;
|
||||
Giovanna;Stein;;Familie Stein (Studierenden-Familie 39);;
|
||||
Thomas;Stein;;Familie Stein (Studierenden-Familie 39);;
|
||||
Emilia;Stein;;Familie Stein (Studierenden-Familie 39);;
|
||||
Ben;Stein;;Familie Stein (Studierenden-Familie 39);;
|
||||
Dragana;Pohl;;Familie Pohl (Studierenden-Familie 40);;
|
||||
Emre;Pohl;;Familie Pohl (Studierenden-Familie 40);;
|
||||
Mia;Pohl;;Familie Pohl (Studierenden-Familie 40);;
|
||||
Theo;Pohl;;Familie Pohl (Studierenden-Familie 40);;
|
||||
Svenja;Berger;;Familie Berger (Studierenden-Familie 41);;
|
||||
Andreas;Berger;;Familie Berger (Studierenden-Familie 41);;
|
||||
Jennifer;Berger;;Familie Berger (Studierenden-Familie 41);;
|
||||
Anton;Berger;;Familie Berger (Studierenden-Familie 41);;
|
||||
Layla;Berger;;Familie Berger (Studierenden-Familie 41);;
|
||||
Stefan;Berger;;Familie Berger (Studierenden-Familie 41);;
|
||||
Nadine;Barth;;Familie Barth (Studierenden-Familie 42);;
|
||||
Timo;Barth;;Familie Barth (Studierenden-Familie 42);;
|
||||
Lina;Barth;;Familie Barth (Studierenden-Familie 42);;
|
||||
Patrick;Barth;;Familie Barth (Studierenden-Familie 42);;
|
||||
Lena;Simon;;Familie Simon (Studierenden-Familie 43);;
|
||||
Markus;Simon;;Familie Simon (Studierenden-Familie 43);;
|
||||
Emma;Simon;;Familie Simon (Studierenden-Familie 43);;
|
||||
Andreas;Simon;;Familie Simon (Studierenden-Familie 43);;
|
||||
Dragana;Lange;;Familie Lange (Studierenden-Familie 44);;
|
||||
Michael;Lange;;Familie Lange (Studierenden-Familie 44);;
|
||||
Sofia;Lange;;Familie Lange (Studierenden-Familie 44);;
|
||||
Jan;Lange;;Familie Lange (Studierenden-Familie 44);;
|
||||
Svenja;Lange;;Familie Lange (Studierenden-Familie 44);;
|
||||
Giovanna;Lehmann;;Familie Lehmann (Studierenden-Familie 45);;
|
||||
Milan;Lehmann;;Familie Lehmann (Studierenden-Familie 45);;
|
||||
Layla;Lehmann;;Familie Lehmann (Studierenden-Familie 45);;
|
||||
Thomas;Lehmann;;Familie Lehmann (Studierenden-Familie 45);;
|
||||
Nicole;Lehmann;;Familie Lehmann (Studierenden-Familie 45);;
|
||||
Markus;Lehmann;;Familie Lehmann (Studierenden-Familie 45);;
|
||||
Sarah;Maier;;Familie Maier (Studierenden-Familie 46);;
|
||||
Christian;Maier;;Familie Maier (Studierenden-Familie 46);;
|
||||
Olga;Maier;;Familie Maier (Studierenden-Familie 46);;
|
||||
Arda;Maier;;Familie Maier (Studierenden-Familie 46);;
|
||||
Nicole;Sahin;;Familie Sahin (Studierenden-Familie 47);;
|
||||
Markus;Sahin;;Familie Sahin (Studierenden-Familie 47);;
|
||||
Kathrin;Sahin;;Familie Sahin (Studierenden-Familie 47);;
|
||||
Patrick;Sahin;;Familie Sahin (Studierenden-Familie 47);;
|
||||
Giovanna;Ludwig;;Familie Ludwig (Studierenden-Familie 48);;
|
||||
Emre;Ludwig;;Familie Ludwig (Studierenden-Familie 48);;
|
||||
Elif;Ludwig;;Familie Ludwig (Studierenden-Familie 48);;
|
||||
Elias;Ludwig;;Familie Ludwig (Studierenden-Familie 48);;
|
||||
Julia;Weber;;Familie Weber (Studierenden-Familie 49);;
|
||||
|
@@ -1,17 +1,17 @@
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 1, Nummer 2
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 1, Nummer 3
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 1, Nummer 4
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 1, Nummer 5
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 1, Nummer 6
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 2, Nummer 2
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 2, Nummer 3
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 2, Nummer 4
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 2, Nummer 5
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 2, Nummer 6
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 3, Nummer 2
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 3, Nummer 3
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 3, Nummer 4
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 3, Nummer 5
|
||||
AA, A, Dipl. Ing. = Hof 1, Tisch 3, Nummer 6
|
||||
BB, B, Prof. = Hof 1, Tisch 1, Nummer 2
|
||||
BB, B, Prof. = Hof 1, Tisch 1, Nummer 3
|
||||
BB, B, Prof. = Hof 1, Tisch 1, Nummer 4
|
||||
BB, B, Prof. = Hof 1, Tisch 1, Nummer 5
|
||||
BB, B, Prof. = Hof 1, Tisch 3, Nummer 2
|
||||
BB, B, Prof. = Hof 1, Tisch 3, Nummer 3
|
||||
BB, B, Prof. = Hof 1, Tisch 3, Nummer 4
|
||||
BB, B, Prof. = Hof 1, Tisch 3, Nummer 5
|
||||
CC, C, Dr. = Hof 1, Tisch 4, Nummer 2
|
||||
CC, C, Dr. = Hof 1, Tisch 4, Nummer 3
|
||||
CC, C, Dr. = Hof 1, Tisch 4, Nummer 4
|
||||
|
||||
|
@@ -1,12 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="405.657" height="108.914" viewBox="0 0 405.657 108.914">
|
||||
<rect width="100%" height="100%" fill="white"/>
|
||||
<polyline points="153.372,54.4572 252.286,54.4572" fill="none" stroke="#3cb44b" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<polyline points="54.4572,54.4572 153.372,54.4572" fill="none" stroke="#3cb44b" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.5"/>
|
||||
<circle cx="252.286" cy="54.4572" r="44.4572" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="252.286" cy="32" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="274.743" cy="54.4572" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="252.286" cy="76.9144" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="229.829" cy="54.4572" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="252.286" cy="54.4572" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="252.286" y="54.4572" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">3</text>
|
||||
<circle cx="54.4572" cy="54.4572" r="44.4572" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="54.4572" cy="32" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="76.9144" cy="54.4572" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="54.4572" cy="76.9144" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="32" cy="54.4572" r="12" fill="#e6194b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="54.4572" cy="32" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="75.8152" cy="47.5175" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="67.6572" cy="72.6254" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="41.2572" cy="72.6254" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="33.0991" cy="47.5175" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="54.4572" cy="54.4572" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="54.4572" y="54.4572" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">1</text>
|
||||
<circle cx="153.372" cy="54.4572" r="44.4572" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
@@ -17,14 +25,6 @@
|
||||
<circle cx="132.013" cy="47.5175" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="153.372" cy="54.4572" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="153.372" y="54.4572" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">2</text>
|
||||
<circle cx="252.286" cy="54.4572" r="44.4572" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="252.286" cy="32" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="273.644" cy="47.5175" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="265.486" cy="72.6254" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="239.086" cy="72.6254" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="230.928" cy="47.5175" r="12" fill="#3cb44b" stroke="black" stroke-width="1"/>
|
||||
<circle cx="252.286" cy="54.4572" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="252.286" y="54.4572" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">3</text>
|
||||
<circle cx="351.2" cy="54.4572" r="44.4572" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="351.2" cy="32" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="372.558" cy="47.5175" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
@@ -1,8 +1,9 @@
|
||||
[1]
|
||||
Prof. B BB = Hof 1, Tisch 1, Nummer 1
|
||||
Prof. B BB = Hof 1, Tisch 1, Nummer 2
|
||||
Prof. B BB = Hof 1, Tisch 1, Nummer 3
|
||||
Prof. B BB = Hof 1, Tisch 1, Nummer 4
|
||||
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 1
|
||||
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 2
|
||||
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 3
|
||||
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 4
|
||||
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 5
|
||||
|
||||
[2]
|
||||
Dipl. Ing. A AA = Hof 1, Tisch 2, Nummer 1
|
||||
@@ -12,11 +13,10 @@ Dipl. Ing. A AA = Hof 1, Tisch 2, Nummer 4
|
||||
Dipl. Ing. A AA = Hof 1, Tisch 2, Nummer 5
|
||||
|
||||
[3]
|
||||
Dipl. Ing. A AA = Hof 1, Tisch 3, Nummer 1
|
||||
Dipl. Ing. A AA = Hof 1, Tisch 3, Nummer 2
|
||||
Dipl. Ing. A AA = Hof 1, Tisch 3, Nummer 3
|
||||
Dipl. Ing. A AA = Hof 1, Tisch 3, Nummer 4
|
||||
Dipl. Ing. A AA = Hof 1, Tisch 3, Nummer 5
|
||||
Prof. B BB = Hof 1, Tisch 3, Nummer 1
|
||||
Prof. B BB = Hof 1, Tisch 3, Nummer 2
|
||||
Prof. B BB = Hof 1, Tisch 3, Nummer 3
|
||||
Prof. B BB = Hof 1, Tisch 3, Nummer 4
|
||||
|
||||
[4]
|
||||
Dr. C CC = Hof 1, Tisch 4, Nummer 1
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
Bloedkopf, Bestelli, = Hof 1, Tisch 2, Nummer 2
|
||||
Bloedkopf, Bestelli, = Hof 1, Tisch 2, Nummer 3
|
||||
Bloedkopf, Bestelli, = Hof 1, Tisch 2, Nummer 4
|
||||
Brandt, Willi, Dr. = Hof 1, Tisch 4, Nummer 2
|
||||
Brandt, Willi, Dr. = Hof 1, Tisch 4, Nummer 5
|
||||
Bruegge, Heinz, = Hof 1, Tisch 5, Nummer 2
|
||||
Dietrich, Marlene, = Hof 1, Tisch 5, Nummer 5
|
||||
Emmerlich, Walter, = Hof 1, Tisch 3, Nummer 3
|
||||
Emmerlich, Walter, = Hof 1, Tisch 4, Nummer 3
|
||||
Frenzen, Heinz Harald, = Hof 1, Tisch 3, Nummer 4
|
||||
Hoehn, Bernd Robert, Professor = Hof 1, Tisch 1, Nummer 2
|
||||
Hoehn, Bernd Robert, Professor = Hof 1, Tisch 1, Nummer 4
|
||||
Junke, Harald, = Hof 1, Tisch 4, Nummer 4
|
||||
K, Hubert, = Hof 1, Tisch 5, Nummer 4
|
||||
Leone, Sergio, = Hof 1, Tisch 3, Nummer 2
|
||||
K, Hubert, = Hof 1, Tisch 5, Nummer 3
|
||||
Leone, Sergio, = Hof 1, Tisch 4, Nummer 2
|
||||
Mueller, Magnus, Professor = Hof 1, Tisch 1, Nummer 3
|
||||
Ruehmann, Heinz, = Hof 1, Tisch 5, Nummer 3
|
||||
Schumacher, Michael, = Hof 1, Tisch 4, Nummer 3
|
||||
Schumacher, Ralf, = Hof 1, Tisch 4, Nummer 5
|
||||
Stangl, Michael, Dipl. Ing. = Hof 1, Tisch 1, Nummer 4
|
||||
Ruehmann, Heinz, = Hof 1, Tisch 5, Nummer 4
|
||||
Schumacher, Michael, = Hof 1, Tisch 3, Nummer 3
|
||||
Schumacher, Ralf, = Hof 1, Tisch 3, Nummer 2
|
||||
Stangl, Michael, Dipl. Ing. = Hof 1, Tisch 1, Nummer 2
|
||||
|
||||
|
@@ -29,8 +29,8 @@
|
||||
<text x="351.2" y="54.4572" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">4</text>
|
||||
<circle cx="450.115" cy="54.4572" r="40.6676" fill="white" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="450.115" cy="35.7896" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="468.782" cy="54.4572" r="12" fill="#f58231" stroke="black" stroke-width="1"/>
|
||||
<circle cx="450.115" cy="73.1248" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="468.782" cy="54.4572" r="12" fill="#4363d8" stroke="black" stroke-width="1"/>
|
||||
<circle cx="450.115" cy="73.1248" r="12" fill="#f58231" stroke="black" stroke-width="1"/>
|
||||
<circle cx="431.447" cy="54.4572" r="12" fill="#f58231" stroke="black" stroke-width="1"/>
|
||||
<circle cx="450.115" cy="54.4572" r="12" fill="white" fill-opacity="0.75"/>
|
||||
<text x="450.115" y="54.4572" text-anchor="middle" dominant-baseline="central" font-size="13.2" font-weight="bold" fill="black">5</text>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
@@ -1,7 +1,7 @@
|
||||
[1]
|
||||
Professor Bernd Robert Hoehn = Hof 1, Tisch 1, Nummer 1
|
||||
Dipl. Ing. Michael Stangl = Hof 1, Tisch 1, Nummer 1
|
||||
Professor Magnus Mueller = Hof 1, Tisch 1, Nummer 2
|
||||
Dipl. Ing. Michael Stangl = Hof 1, Tisch 1, Nummer 3
|
||||
Professor Bernd Robert Hoehn = Hof 1, Tisch 1, Nummer 3
|
||||
|
||||
[2]
|
||||
Bestelli Bloedkopf = Hof 1, Tisch 2, Nummer 1
|
||||
@@ -9,19 +9,19 @@ Dipl. Ing. Michael Stangl = Hof 1, Tisch 1, Nummer 3
|
||||
Bestelli Bloedkopf = Hof 1, Tisch 2, Nummer 3
|
||||
|
||||
[3]
|
||||
Sergio Leone = Hof 1, Tisch 3, Nummer 1
|
||||
Walter Emmerlich = Hof 1, Tisch 3, Nummer 2
|
||||
Ralf Schumacher = Hof 1, Tisch 3, Nummer 1
|
||||
Michael Schumacher = Hof 1, Tisch 3, Nummer 2
|
||||
Heinz Harald Frenzen = Hof 1, Tisch 3, Nummer 3
|
||||
|
||||
[4]
|
||||
Dr. Willi Brandt = Hof 1, Tisch 4, Nummer 1
|
||||
Michael Schumacher = Hof 1, Tisch 4, Nummer 2
|
||||
Sergio Leone = Hof 1, Tisch 4, Nummer 1
|
||||
Walter Emmerlich = Hof 1, Tisch 4, Nummer 2
|
||||
Harald Junke = Hof 1, Tisch 4, Nummer 3
|
||||
Ralf Schumacher = Hof 1, Tisch 4, Nummer 4
|
||||
Dr. Willi Brandt = Hof 1, Tisch 4, Nummer 4
|
||||
|
||||
[5]
|
||||
Heinz Bruegge = Hof 1, Tisch 5, Nummer 1
|
||||
Heinz Ruehmann = Hof 1, Tisch 5, Nummer 2
|
||||
Hubert K = Hof 1, Tisch 5, Nummer 3
|
||||
Hubert K = Hof 1, Tisch 5, Nummer 2
|
||||
Heinz Ruehmann = Hof 1, Tisch 5, Nummer 3
|
||||
Marlene Dietrich = Hof 1, Tisch 5, Nummer 4
|
||||
|
||||
|
||||