From f8402a013695725bf6f870b136283c96e97f5858 Mon Sep 17 00:00:00 2001 From: Moritz Utcke Date: Sun, 12 Jan 2025 14:25:35 +0700 Subject: [PATCH] Merge origin/main into origin/dev-moritz --- package.json | 6 - .../farbeEnergieEffizienzEins.svg | 50 ++ .../farbeEnergieEffizienzZwei.svg | 47 + .../farbenEnergieEffizienzHuelle.svg | 850 ++++++++++++++++++ .../sanierungsfahrplan/hausIconBoden.svg | 116 +++ .../sanierungsfahrplan/hausIconDach.svg | 192 ++++ .../sanierungsfahrplan/hausIconFenster.svg | 164 ++++ .../sanierungsfahrplan/hausIconHaus.svg | 70 ++ .../sanierungsfahrplan/hausIconHeizung.svg | 130 +++ .../sanierungsfahrplan/hausIconLueftung.svg | 220 +++++ .../sanierungsfahrplan/hausIconWaende.svg | 124 +++ .../sanierungsfahrplan/hausIconWarmwasser.svg | 162 ++++ .../hausIconWarmwasserVerteilung.svg | 186 ++++ .../skalaEnergieEffizienz.svg | 98 ++ .../skalaEnergieEffizienzVertikal.svg | 89 ++ src/components/Katex.svelte | 19 - .../A12NutzenergiebedarfHeizung.svelte | 212 +++-- .../Tabellen/A9Trinkwassererwaermung.svelte | 4 +- .../SanierungsFahrplanBauteilTemplate.svelte | 103 +++ .../SanierungsFahrplanDachTemplate.svelte | 103 +++ .../SanierungsFahrplanHeizungTemplate.svelte | 123 +++ .../SanierungsFahrplanIstTemplate.svelte | 151 ++++ .../SanierungsFahrplanWandTemplate.svelte | 103 +++ .../sidebars/cards/cardNavigation.svelte | 2 +- .../widgets/WelcherAusweisWidget.svelte | 4 + src/layouts/BlankLayout.astro | 3 +- src/layouts/MinimalLayout.astro | 3 +- src/layouts/UserLayout.astro | 3 +- ...echnungNutzenergiebedarfTrinkwarmwasser.ts | 2 +- ...ermequellenAusAnlagentechnikTrinkwasser.ts | 20 +- .../funktionAusnutzungsgrad.ts | 84 ++ .../funktionBilanzInnentemperatur.ts | 180 ++++ .../funktionMonatlicherBelastungsgrad.ts | 86 +- src/lib/helpers/txml.ts | 481 ++++++++++ src/lib/pdf/datenblatt.html | 87 ++ src/lib/pdf/elements/Checkbox.ts | 26 + src/lib/pdf/elements/Flex.ts | 175 ++++ src/lib/pdf/elements/Layout.ts | 84 ++ src/lib/pdf/elements/PDFElement.ts | 27 + src/lib/pdf/elements/Text.ts | 39 + src/lib/pdf/elements/index.ts | 20 + src/lib/pdf/elements/xml2pdf.ts | 105 +++ src/lib/pdf/pdfDatenblatt.ts | 159 ++++ .../pdf/templates/Leerseite_Datenblatt.pdf | Bin 0 -> 216772 bytes .../DIN18599/berechnungstabellen/index.astro | 4 +- src/pages/dev/datenblatt-viewer.astro | 9 + src/pages/pdf/datenblatt.astro | 26 +- src/pages/sanierungsfahrplan/dach/index.astro | 19 + src/pages/sanierungsfahrplan/haus/index.astro | 19 + src/pages/sanierungsfahrplan/index.astro | 15 + .../sanierungsfahrplan/wände/index.astro | 19 + tailwind.config.cjs | 11 +- test-pdf.pdf | Bin 0 -> 1094 bytes tsconfig.json | 3 +- 54 files changed, 4907 insertions(+), 130 deletions(-) create mode 100644 public/images/sanierungsfahrplan/farbeEnergieEffizienzEins.svg create mode 100644 public/images/sanierungsfahrplan/farbeEnergieEffizienzZwei.svg create mode 100644 public/images/sanierungsfahrplan/farbenEnergieEffizienzHuelle.svg create mode 100644 public/images/sanierungsfahrplan/hausIconBoden.svg create mode 100644 public/images/sanierungsfahrplan/hausIconDach.svg create mode 100644 public/images/sanierungsfahrplan/hausIconFenster.svg create mode 100644 public/images/sanierungsfahrplan/hausIconHaus.svg create mode 100644 public/images/sanierungsfahrplan/hausIconHeizung.svg create mode 100644 public/images/sanierungsfahrplan/hausIconLueftung.svg create mode 100644 public/images/sanierungsfahrplan/hausIconWaende.svg create mode 100644 public/images/sanierungsfahrplan/hausIconWarmwasser.svg create mode 100644 public/images/sanierungsfahrplan/hausIconWarmwasserVerteilung.svg create mode 100644 public/images/sanierungsfahrplan/skalaEnergieEffizienz.svg create mode 100644 public/images/sanierungsfahrplan/skalaEnergieEffizienzVertikal.svg delete mode 100644 src/components/Katex.svelte create mode 100644 src/components/design/content/SanierungsFahrplanBauteilTemplate.svelte create mode 100644 src/components/design/content/SanierungsFahrplanDachTemplate.svelte create mode 100644 src/components/design/content/SanierungsFahrplanHeizungTemplate.svelte create mode 100644 src/components/design/content/SanierungsFahrplanIstTemplate.svelte create mode 100644 src/components/design/content/SanierungsFahrplanWandTemplate.svelte create mode 100644 src/lib/Berechnungen/BedarfsausweisWohnen/funktionAusnutzungsgrad.ts create mode 100644 src/lib/Berechnungen/BedarfsausweisWohnen/funktionBilanzInnentemperatur.ts create mode 100644 src/lib/helpers/txml.ts create mode 100644 src/lib/pdf/datenblatt.html create mode 100644 src/lib/pdf/elements/Checkbox.ts create mode 100644 src/lib/pdf/elements/Flex.ts create mode 100644 src/lib/pdf/elements/Layout.ts create mode 100644 src/lib/pdf/elements/PDFElement.ts create mode 100644 src/lib/pdf/elements/Text.ts create mode 100644 src/lib/pdf/elements/index.ts create mode 100644 src/lib/pdf/elements/xml2pdf.ts create mode 100644 src/lib/pdf/pdfDatenblatt.ts create mode 100644 src/lib/pdf/templates/Leerseite_Datenblatt.pdf create mode 100644 src/pages/dev/datenblatt-viewer.astro create mode 100644 src/pages/sanierungsfahrplan/dach/index.astro create mode 100644 src/pages/sanierungsfahrplan/haus/index.astro create mode 100644 src/pages/sanierungsfahrplan/index.astro create mode 100644 src/pages/sanierungsfahrplan/wände/index.astro create mode 100644 test-pdf.pdf diff --git a/package.json b/package.json index 14160c49..949e4b20 100644 --- a/package.json +++ b/package.json @@ -31,21 +31,15 @@ "@trpc/client": "^10.45.2", "@trpc/server": "^10.45.2", "astro": "^4.16.10", - "astro-i18next": "1.0.0-beta.21", "body-scroll-lock": "^4.0.0-beta.0", "buffer": "^6.0.3", "bun": "^1.1.34", - "caniuse-lite": "^1.0.30001684", "csvtojson": "^2.0.10", "express": "^4.21.1", "flag-icons": "^6.15.0", "fontkit": "^2.0.4", - "i18next": "^23.16.5", - "i18next-fs-backend": "^2.3.2", - "i18next-http-backend": "^2.6.2", "js-cookie": "^3.0.5", "js-interpolate": "^1.3.1", - "katex": "^0.16.11", "moment": "^2.30.1", "moment-timezone": "^0.5.46", "pdf-lib": "^1.17.1", diff --git a/public/images/sanierungsfahrplan/farbeEnergieEffizienzEins.svg b/public/images/sanierungsfahrplan/farbeEnergieEffizienzEins.svg new file mode 100644 index 00000000..db6448d2 --- /dev/null +++ b/public/images/sanierungsfahrplan/farbeEnergieEffizienzEins.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + diff --git a/public/images/sanierungsfahrplan/farbeEnergieEffizienzZwei.svg b/public/images/sanierungsfahrplan/farbeEnergieEffizienzZwei.svg new file mode 100644 index 00000000..51a348ea --- /dev/null +++ b/public/images/sanierungsfahrplan/farbeEnergieEffizienzZwei.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + diff --git a/public/images/sanierungsfahrplan/farbenEnergieEffizienzHuelle.svg b/public/images/sanierungsfahrplan/farbenEnergieEffizienzHuelle.svg new file mode 100644 index 00000000..32d0b957 --- /dev/null +++ b/public/images/sanierungsfahrplan/farbenEnergieEffizienzHuelle.svg @@ -0,0 +1,850 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/sanierungsfahrplan/hausIconBoden.svg b/public/images/sanierungsfahrplan/hausIconBoden.svg new file mode 100644 index 00000000..a84fd013 --- /dev/null +++ b/public/images/sanierungsfahrplan/hausIconBoden.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/sanierungsfahrplan/hausIconDach.svg b/public/images/sanierungsfahrplan/hausIconDach.svg new file mode 100644 index 00000000..91f2a7b8 --- /dev/null +++ b/public/images/sanierungsfahrplan/hausIconDach.svg @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/sanierungsfahrplan/hausIconFenster.svg b/public/images/sanierungsfahrplan/hausIconFenster.svg new file mode 100644 index 00000000..517b9b1a --- /dev/null +++ b/public/images/sanierungsfahrplan/hausIconFenster.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/sanierungsfahrplan/hausIconHaus.svg b/public/images/sanierungsfahrplan/hausIconHaus.svg new file mode 100644 index 00000000..f1490c23 --- /dev/null +++ b/public/images/sanierungsfahrplan/hausIconHaus.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/sanierungsfahrplan/hausIconHeizung.svg b/public/images/sanierungsfahrplan/hausIconHeizung.svg new file mode 100644 index 00000000..43d95c70 --- /dev/null +++ b/public/images/sanierungsfahrplan/hausIconHeizung.svg @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/sanierungsfahrplan/hausIconLueftung.svg b/public/images/sanierungsfahrplan/hausIconLueftung.svg new file mode 100644 index 00000000..d4fe66b9 --- /dev/null +++ b/public/images/sanierungsfahrplan/hausIconLueftung.svg @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/sanierungsfahrplan/hausIconWaende.svg b/public/images/sanierungsfahrplan/hausIconWaende.svg new file mode 100644 index 00000000..ab7c3dd4 --- /dev/null +++ b/public/images/sanierungsfahrplan/hausIconWaende.svg @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/sanierungsfahrplan/hausIconWarmwasser.svg b/public/images/sanierungsfahrplan/hausIconWarmwasser.svg new file mode 100644 index 00000000..9963d37a --- /dev/null +++ b/public/images/sanierungsfahrplan/hausIconWarmwasser.svg @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/sanierungsfahrplan/hausIconWarmwasserVerteilung.svg b/public/images/sanierungsfahrplan/hausIconWarmwasserVerteilung.svg new file mode 100644 index 00000000..70c6fa54 --- /dev/null +++ b/public/images/sanierungsfahrplan/hausIconWarmwasserVerteilung.svg @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/sanierungsfahrplan/skalaEnergieEffizienz.svg b/public/images/sanierungsfahrplan/skalaEnergieEffizienz.svg new file mode 100644 index 00000000..b757436e --- /dev/null +++ b/public/images/sanierungsfahrplan/skalaEnergieEffizienz.svg @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/sanierungsfahrplan/skalaEnergieEffizienzVertikal.svg b/public/images/sanierungsfahrplan/skalaEnergieEffizienzVertikal.svg new file mode 100644 index 00000000..694d2eaa --- /dev/null +++ b/public/images/sanierungsfahrplan/skalaEnergieEffizienzVertikal.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/Katex.svelte b/src/components/Katex.svelte deleted file mode 100644 index 87ebf45e..00000000 --- a/src/components/Katex.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -{@html katexString} \ No newline at end of file diff --git a/src/components/Tabellen/A12NutzenergiebedarfHeizung.svelte b/src/components/Tabellen/A12NutzenergiebedarfHeizung.svelte index 5804315f..c2fd3b2d 100644 --- a/src/components/Tabellen/A12NutzenergiebedarfHeizung.svelte +++ b/src/components/Tabellen/A12NutzenergiebedarfHeizung.svelte @@ -1,17 +1,114 @@ @@ -63,15 +160,14 @@ 31 - {interpolatedValues[1]?.month} + {Math.round(bilanzinnentemperaturen.Januar*1000)/1000} 1,0 - - {interpolatedValues[1]?.interpolatedValue} + {Math.round(belastungsgrade.Januar*1000)/1000} - - + {waermequellensenkenverhaeltnisJanuar} + {Math.round(ausnutzungsgradJanuar*1000)/1000} @@ -79,15 +175,15 @@ 28 - + {Math.round(bilanzinnentemperaturen.Februar*1000)/1000} 1,9 - + {Math.round(belastungsgrade.Februar*1000)/1000} - - + {waermequellensenkenverhaeltnisFebruar} + {Math.round(ausnutzungsgradFebruar*1000)/1000} @@ -95,15 +191,15 @@ 31 - + {Math.round(bilanzinnentemperaturen.März*1000)/1000} 4,7 - + {Math.round(belastungsgrade.März*1000)/1000} - - + {waermequellensenkenverhaeltnisMärz} + {Math.round(ausnutzungsgradMärz*1000)/1000} @@ -111,15 +207,15 @@ 30 - + {Math.round(bilanzinnentemperaturen.April*1000)/1000} 9,2 - + {Math.round(belastungsgrade.April*1000)/1000} - - + {waermequellensenkenverhaeltnisApril} + {Math.round(ausnutzungsgradApril*1000)/1000} @@ -127,15 +223,15 @@ 31 - + {Math.round(bilanzinnentemperaturen.Mai*1000)/1000} 14,1 - + {Math.round(belastungsgrade.Mai*1000)/1000} - - + {waermequellensenkenverhaeltnisMai} + {Math.round(ausnutzungsgradMai*1000)/1000} @@ -143,15 +239,15 @@ 30 - + {Math.round(bilanzinnentemperaturen.Juni*1000)/1000} 16,7 - + {Math.round(belastungsgrade.Juni*1000)/1000} - - + {waermequellensenkenverhaeltnisJuni} + {Math.round(ausnutzungsgradJuni*1000)/1000} @@ -159,15 +255,15 @@ 31 - + {Math.round(bilanzinnentemperaturen.Juli*1000)/1000} 19,0 - + {Math.round(belastungsgrade.Juli*1000)/1000} - - + {waermequellensenkenverhaeltnisJuli} + {Math.round(ausnutzungsgradJuli*1000)/1000} @@ -175,15 +271,15 @@ 31 - + {Math.round(bilanzinnentemperaturen.August*1000)/1000} 18,6 - + {Math.round(belastungsgrade.August*1000)/1000} - - + {waermequellensenkenverhaeltnisAugust} + {Math.round(ausnutzungsgradAugust*1000)/1000} @@ -191,15 +287,15 @@ 30 - + {Math.round(bilanzinnentemperaturen.September*1000)/1000} 14,3 - + {Math.round(belastungsgrade.September*1000)/1000} - - + {waermequellensenkenverhaeltnisSeptember} + {Math.round(ausnutzungsgradSeptember*1000)/1000} @@ -207,15 +303,15 @@ 31 - + {Math.round(bilanzinnentemperaturen.Oktober*1000)/1000} 9,4 - + {Math.round(belastungsgrade.Oktober*1000)/1000} - - + {waermequellensenkenverhaeltnisOktober} + {Math.round(ausnutzungsgradOktober*1000)/1000} @@ -223,15 +319,15 @@ 30 - + {Math.round(bilanzinnentemperaturen.November*1000)/1000} 4,1 - + {Math.round(belastungsgrade.November*1000)/1000} - - + {waermequellensenkenverhaeltnisNovember} + {Math.round(ausnutzungsgradNovember*1000)/1000} @@ -239,15 +335,15 @@ 31 - + {Math.round(bilanzinnentemperaturen.Dezember*1000)/1000} 0,9 - + {Math.round(belastungsgrade.Dezember*1000)/1000} - - + {waermequellensenkenverhaeltnisDezember} + {Math.round(ausnutzungsgradDezember*1000)/1000} diff --git a/src/components/Tabellen/A9Trinkwassererwaermung.svelte b/src/components/Tabellen/A9Trinkwassererwaermung.svelte index 17a2e90a..baf78967 100644 --- a/src/components/Tabellen/A9Trinkwassererwaermung.svelte +++ b/src/components/Tabellen/A9Trinkwassererwaermung.svelte @@ -4,12 +4,12 @@ export let ausweis: BedarfsausweisWohnenClient; export let gebaeude_aufnahme: GebaeudeAufnahmeClient; - import { berechnungTrinkwarmwasserWaermebedarf } from "#lib/Berechnungen/BedarfsausweisWohnen/BerechnungTrinkwarmwasser.js"; + import { berechnungNutzenergiebedarfTrinkwarmwasser } from "#lib/Berechnungen/BedarfsausweisWohnen/BerechnungNutzenergiebedarfTrinkwarmwasser.js"; let trinkwasserWaermebedarf = 0, flaechenBezogenerWaermebedarf = 0, bezugsflaeche = 0 $: { - const result = berechnungTrinkwarmwasserWaermebedarf(ausweis, gebaeude_aufnahme) + const result = berechnungNutzenergiebedarfTrinkwarmwasser(ausweis, gebaeude_aufnahme) trinkwasserWaermebedarf = result.trinkwasserWaermebedarf flaechenBezogenerWaermebedarf = result.flaechenBezogenerWaermebedarf bezugsflaeche = result.bezugsflaeche diff --git a/src/components/design/content/SanierungsFahrplanBauteilTemplate.svelte b/src/components/design/content/SanierungsFahrplanBauteilTemplate.svelte new file mode 100644 index 00000000..8845fec6 --- /dev/null +++ b/src/components/design/content/SanierungsFahrplanBauteilTemplate.svelte @@ -0,0 +1,103 @@ +
+
+
Farbklasse
+
+
+
+
+
+
+
+
+
+
U-Wert [W/(m²K)] / Beschreibung
+
≤ 0,12 / Sparrendach geneigt und stark hinterlüftet mit 20cm PUR/PIR-Hartschaum Aufsparrendämmung (hocheffiziente Dämmung mit WLG 0,024)
+
≤ 0,14 / Sparrendach geneigt und stark hinterlüftet mit 18cm PUR/PIR-Hartschaum Aufsparrendämmung (hocheffiziente Dämmung mit WLG 0,024)
+
≤ 0,24 / Sparrendach geneigt und hinterlüftet mit 18cm mineralischer Zwischensparren-
dämmung und 5 cm Untersparrendämmung (Standarddämmung mit WLG 0,04)
+
≤ 0,30 / Sparrendach geneigt und hinterlüftet mit 18cm mineralischer Zwischensparren-
dämmung (Standarddämmung mit WLG 0,04)
+
≤ 0,50 / Sparrendach geneigt und hinterlüftet mit 12cm mineralischer Zwischensparren-
dämmung (Standarddämmung mit WLG 0,04)
+
≤ 0,80 / Sparrendach geneigt und hinterlüftet mit 5cm mineralischer Zwischensparren-
dämmung (Standarddämmung mit WLG 0,04)
+
> 0,80 / Sparrendach geneigt und hinterlüftet ungedämmt oder weniger als 5cm Zwischensparrendämmung (Standarddämmung mit WLG 0,04)
+
+
+ + \ No newline at end of file diff --git a/src/components/design/content/SanierungsFahrplanDachTemplate.svelte b/src/components/design/content/SanierungsFahrplanDachTemplate.svelte new file mode 100644 index 00000000..8845fec6 --- /dev/null +++ b/src/components/design/content/SanierungsFahrplanDachTemplate.svelte @@ -0,0 +1,103 @@ +
+
+
Farbklasse
+
+
+
+
+
+
+
+
+
+
U-Wert [W/(m²K)] / Beschreibung
+
≤ 0,12 / Sparrendach geneigt und stark hinterlüftet mit 20cm PUR/PIR-Hartschaum Aufsparrendämmung (hocheffiziente Dämmung mit WLG 0,024)
+
≤ 0,14 / Sparrendach geneigt und stark hinterlüftet mit 18cm PUR/PIR-Hartschaum Aufsparrendämmung (hocheffiziente Dämmung mit WLG 0,024)
+
≤ 0,24 / Sparrendach geneigt und hinterlüftet mit 18cm mineralischer Zwischensparren-
dämmung und 5 cm Untersparrendämmung (Standarddämmung mit WLG 0,04)
+
≤ 0,30 / Sparrendach geneigt und hinterlüftet mit 18cm mineralischer Zwischensparren-
dämmung (Standarddämmung mit WLG 0,04)
+
≤ 0,50 / Sparrendach geneigt und hinterlüftet mit 12cm mineralischer Zwischensparren-
dämmung (Standarddämmung mit WLG 0,04)
+
≤ 0,80 / Sparrendach geneigt und hinterlüftet mit 5cm mineralischer Zwischensparren-
dämmung (Standarddämmung mit WLG 0,04)
+
> 0,80 / Sparrendach geneigt und hinterlüftet ungedämmt oder weniger als 5cm Zwischensparrendämmung (Standarddämmung mit WLG 0,04)
+
+
+ + \ No newline at end of file diff --git a/src/components/design/content/SanierungsFahrplanHeizungTemplate.svelte b/src/components/design/content/SanierungsFahrplanHeizungTemplate.svelte new file mode 100644 index 00000000..cae915c5 --- /dev/null +++ b/src/components/design/content/SanierungsFahrplanHeizungTemplate.svelte @@ -0,0 +1,123 @@ +
+
+
Farbklasse
+
+
+
+
+
+
+
+
+
+
+
+
Effizienzzahl / Beschreibung
+
< 0,4 / Hohe Effizienz / überwiegend erneuerbare Energieträger
+
< 0,7 / Hohe Effizienz / erneuerbare und fossile Energieträger
+
< 1,0 / Moderne Wärmeerzeuger mit fossilen Energieträgern und zusätzlich erneuerbaren Energien
+
< 1,1 / Moderne Wärmeerzeuger mit fossilen Energieträgern
+
< 1,2 / Wärmeerzeuger mit fossilen Energieträgern
+
< 1,3 / Mindestanforderung an neue Heizkessel
+
< 1,5 / Nicht mehr zeitgemäße Technik
+
< 1,6 / Ineffiziente Wärmeerzeuger
+
> 1,6 / Ineffiziente Wärmeerzeuger mit sehr hohen Verlusten
+
+
+ + \ No newline at end of file diff --git a/src/components/design/content/SanierungsFahrplanIstTemplate.svelte b/src/components/design/content/SanierungsFahrplanIstTemplate.svelte new file mode 100644 index 00000000..e32f9630 --- /dev/null +++ b/src/components/design/content/SanierungsFahrplanIstTemplate.svelte @@ -0,0 +1,151 @@ + + +
+ Skala Energieeffizienz +
+ +
+ +
+ +
*inklusive Kellerwänden
+
+ +
+ +
oberer Gebäudeabschluss
+
+ +
+ Hausiconlüftung +
+
+ +
+ Hausiconfenster +
inklusive Dachfenster
+
+ +
+ Hausicon +
+
+ +
+ Hausiconwarmwasser +
+
+ +
+ Hausiconboden +
unterer Gebäudeabschluss
+
+ +
+ +
+
+ +
+ Hausiconwarmwasserverteilung +
inkl. Speicherung und Übergabe
+
+
+
+
+ + {#if showPopup} + +{/if} + + \ No newline at end of file diff --git a/src/components/design/content/SanierungsFahrplanWandTemplate.svelte b/src/components/design/content/SanierungsFahrplanWandTemplate.svelte new file mode 100644 index 00000000..a1f0dabd --- /dev/null +++ b/src/components/design/content/SanierungsFahrplanWandTemplate.svelte @@ -0,0 +1,103 @@ +
+
+
Farbklasse
+
+
+
+
+
+
+
+
+
+
U-Wert [W/(m²K)] / Beschreibung
+
≤ 0,15 / Gasbeton-Blockstein 30 cm mit 16 cm PUR/PIR-Hartschaum (hocheffiziente Dämmung mit WLG 0,028)
+
≤ 0,20 / Gasbeton-Blockstein 30 cm mit 14 cm mineralischer Außendämung (WLG 0,035)
+
≤ 0,24 / Gasbeton-Blockstein 30 cm mit 12 cm mineralischer Außendämung (WLG 0,04)
+
≤ 0,35 / Gasbeton-Blockstein 30 cm mit 10 cm mineralischer Außendämung (WLG 0,04)
+
≤ 0,50 / Gasbeton-Blockstein 30 cm mit 5 cm mineralischer Innendämung (WLG 0,04)
+
≤ 0,80 / Gasbeton-Blockstein 30 cm, Dämmputz
+
> 0,80 / Gasbeton-Blockstein 30 cm
+
+
+ + \ No newline at end of file diff --git a/src/components/design/sidebars/cards/cardNavigation.svelte b/src/components/design/sidebars/cards/cardNavigation.svelte index 0e92363d..99986e58 100644 --- a/src/components/design/sidebars/cards/cardNavigation.svelte +++ b/src/components/design/sidebars/cards/cardNavigation.svelte @@ -136,7 +136,7 @@ if(innerWidth>1024){ diff --git a/src/components/widgets/WelcherAusweisWidget.svelte b/src/components/widgets/WelcherAusweisWidget.svelte index 49d4d235..7d3d6fcc 100644 --- a/src/components/widgets/WelcherAusweisWidget.svelte +++ b/src/components/widgets/WelcherAusweisWidget.svelte @@ -39,9 +39,13 @@ allowedReason.includes(anlass) && allowedTypes.includes(gebaeudetyp) && (leerStand === "bis 30") && (heizungsAlter === ">= 3"); } + } + + +
diff --git a/src/layouts/BlankLayout.astro b/src/layouts/BlankLayout.astro index 915f208b..b38aa5a1 100644 --- a/src/layouts/BlankLayout.astro +++ b/src/layouts/BlankLayout.astro @@ -1,5 +1,4 @@ --- -import i18next from "i18next"; import { NotificationWrapper } from "@ibcornelsen/ui"; @@ -36,7 +35,7 @@ const schema = JSON.stringify({ --- - + diff --git a/src/layouts/MinimalLayout.astro b/src/layouts/MinimalLayout.astro index 5e6d63c8..1b85563a 100644 --- a/src/layouts/MinimalLayout.astro +++ b/src/layouts/MinimalLayout.astro @@ -1,5 +1,4 @@ --- -import i18next from "i18next"; import "#style/global.css"; import "../../svelte-dialogs.config" @@ -42,7 +41,7 @@ const lightTheme = Astro.cookies.get("theme")?.value === "light"; --- - + diff --git a/src/layouts/UserLayout.astro b/src/layouts/UserLayout.astro index 70bd4ff8..f030e361 100644 --- a/src/layouts/UserLayout.astro +++ b/src/layouts/UserLayout.astro @@ -1,5 +1,4 @@ --- -import i18next from "i18next"; import "#style/global.css"; import "../../svelte-dialogs.config" @@ -54,7 +53,7 @@ let lightTheme = Astro.cookies.get("theme")?.value === "light"; --- - + diff --git a/src/lib/Berechnungen/BedarfsausweisWohnen/BerechnungNutzenergiebedarfTrinkwarmwasser.ts b/src/lib/Berechnungen/BedarfsausweisWohnen/BerechnungNutzenergiebedarfTrinkwarmwasser.ts index 340e458b..76058d9f 100644 --- a/src/lib/Berechnungen/BedarfsausweisWohnen/BerechnungNutzenergiebedarfTrinkwarmwasser.ts +++ b/src/lib/Berechnungen/BedarfsausweisWohnen/BerechnungNutzenergiebedarfTrinkwarmwasser.ts @@ -10,7 +10,7 @@ import { linearInterpolation } from "js-interpolate" * @param {BedarfsausweisWohnenClient} ausweis * @param {GebaeudeAufnahmeClient} gebaeude_aufnahme */ -export function berechnungNutzenergiebedarfTrinkwasser(ausweis: BedarfsausweisWohnenClient, gebaeude_aufnahme: GebaeudeAufnahmeClient) { +export function berechnungNutzenergiebedarfTrinkwarmwasser(ausweis: BedarfsausweisWohnenClient, gebaeude_aufnahme: GebaeudeAufnahmeClient) { // A_NGF const bezugsflaeche = gebaeude_aufnahme.nutzflaeche ?? 0; diff --git a/src/lib/Berechnungen/BedarfsausweisWohnen/BerechnungWaermequellenAusAnlagentechnikTrinkwasser.ts b/src/lib/Berechnungen/BedarfsausweisWohnen/BerechnungWaermequellenAusAnlagentechnikTrinkwasser.ts index 93526aee..b039a123 100644 --- a/src/lib/Berechnungen/BedarfsausweisWohnen/BerechnungWaermequellenAusAnlagentechnikTrinkwasser.ts +++ b/src/lib/Berechnungen/BedarfsausweisWohnen/BerechnungWaermequellenAusAnlagentechnikTrinkwasser.ts @@ -1,5 +1,19 @@ -import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js"; +import { BedarfsausweisWohnenClient, GebaeudeAufnahmeClient } from "#components/Ausweis/types.js"; +import { berechnungNutzenergiebedarfTrinkwasser } from "./BerechnungNutzenergiebedarfTrinkwarmwasser.js"; +import { FixedLengthArray } from "./types.js"; -export function berechnungWaermequellenAusAnlagentechnikTrinkwasser(ausweis: VerbrauchsausweisWohnenClient) { - +export function berechnungWaermequellenAusAnlagentechnikTrinkwasser(ausweis: BedarfsausweisWohnenClient, gebaeude_aufnahme: GebaeudeAufnahmeClient) { + const trinkwasserWaermebedarf = berechnungNutzenergiebedarfTrinkwasser(ausweis, gebaeude_aufnahme); + + const result = new Array(12).fill(0) as unknown as FixedLengthArray + + for (let i = 0; i < 12; i++) { + const tageImMonat = new Date(0, i, 0).getDate(); + + const monatlicheTrinkwasserWaermebedarf = trinkwasserWaermebedarf.trinkwasserWaermebedarf / 365 * tageImMonat; + + + } + + return result; } \ No newline at end of file diff --git a/src/lib/Berechnungen/BedarfsausweisWohnen/funktionAusnutzungsgrad.ts b/src/lib/Berechnungen/BedarfsausweisWohnen/funktionAusnutzungsgrad.ts new file mode 100644 index 00000000..a4cc3b7e --- /dev/null +++ b/src/lib/Berechnungen/BedarfsausweisWohnen/funktionAusnutzungsgrad.ts @@ -0,0 +1,84 @@ +// Funktion zur Berechnung des Ausnutzungsgrades aus Tabelle 18 + +import { nevillePolynomialInterpolation } from "js-interpolate"; + +let waermequellensenkenverhaeltnis = 3.4; // Beispielwert - muss noch errechnet werden + +const dataset = { + alleMonate: { + 30: [ 0.999,0.992,0.978,0.956,0.927,0.893,0.856,0.818,0.78,0.742,0.706,0.671,0.638,0.608,0.579,0.553,0.528,0.505 + ,0.483,0.463,0.445,0.428,0.411,0.396,0.382,0.369,0.357,0.345,0.334,0.324,0.314,0.305,0.296,0.288,0.28,0.273,0.266, + 0.259,0.253,0.246,0.22,0.198,0.181,0.166,0.153,0.142,0.133,0.125,0.117,0.111,0.105,0.1], + 40: [ 1.0,0.997,0.99,0.975,0.954,0.926,0.892,0.855,0.817,0.778,0.739,0.702,0.667,0.634,0.603,0.574,0.547,0.522 + ,0.498,0.477,0.457,0.438,0.421,0.405,0.39,0.376,0.363,0.351,0.339,0.329,0.318,0.309,0.3,0.291,0.283,0.276,0.268, + 0.261,0.255,0.249,0.221,0.199,0.181,0.166,0.154,0.143,0.133,0.125,0.118,0.111,0.105,0.1], + 50: [ 1.0,0.999,0.995,0.986,0.97,0.948,0.918,0.883,0.845,0.805,0.765,0.726,0.688,0.652,0.619,0.588,0.559,0.533 + ,0.508,0.485,0.464,0.445,0.427,0.41,0.394,0.38,0.366,0.354,0.342,0.331,0.321,0.311,0.301,0.293,0.285,0.277,0.269, + 0.262,0.256,0.249,0.222,0.2,0.182,0.167,0.154,0.143,0.133,0.125,0.118,0.111,0.105,0.1], + 60: [ 1.0,1.0,0.998,0.992,0.981,0.963,0.937,0.904,0.867,0.826,0.785,0.743,0.704,0.666,0.631,0.598,0.568,0.54 + ,0.514,0.491,0.469,0.449,0.43,0.413,0.397,0.382,0.368,0.355,0.343,0.332,0.322,0.312,0.302,0.293,0.285,0.277,0.27, + 0.263,0.256,0.25,0.222,0.2,0.182,0.167,0.154,0.143,0.133,0.125,0.118,0.111,0.105,0.1], + 70: [ 1.0,1.0,0.999,0.996,0.988,0.973,0.951,0.921,0.884,0.843,0.8,0.757,0.716,0.676,0.639,0.605,0.574,0.545 + ,0.518,0.494,0.472,0.451,0.432,0.414,0.398,0.383,0.369,0.356,0.344,0.333,0.322,0.312,0.303,0.294,0.286,0.278,0.27, + 0.263,0.256,0.25,0.222,0.2,0.182,0.167,0.154,0.143,0.133,0.125,0.118,0.111,0.105,0.1], + 80: [1.0,1.0,0.999,0.998,0.992,0.981,0.962,0.934,0.898,0.857,0.813,0.769,0.725,0.684,0.646,0.61,0.578,0.548 + ,0.521,0.496,0.473,0.452,0.433,0.415,0.399,0.384,0.37,0.357,0.344,0.333,0.322,0.312,0.303,0.294,0.286,0.278,0.27, + 0.263,0.256,0.25,0.222,0.2,0.182,0.167,0.154,0.143,0.133,0.125,0.118,0.111,0.105,0.1], + 90: [ 1.0,1.0,1.0,0.999,0.995,0.986,0.97,0.944,0.91,0.869,0.824,0.778,0.733,0.69,0.651,0.614,0.581,0.55 + ,0.523,0.497,0.474,0.453,0.434,0.416,0.4,0.384,0.37,0.357,0.345,0.333,0.322,0.312,0.303,0.294,0.286,0.278,0.27, + 0.263,0.256,0.25,0.222,0.2,0.182,0.167,0.154,0.143,0.133,0.125,0.118,0.111,0.105,0.1], + 100: [ 1.0,1.0,1.0,0.999,0.997,0.99,0.976,0.953,0.92,0.879,0.833,0.786,0.739,0.695,0.654,0.617,0.583,0.552 + ,0.524,0.498,0.475,0.454,0.434,0.416,0.4,0.384,0.37,0.357,0.345,0.333,0.323,0.312,0.303,0.294,0.286,0.278,0.27, + 0.263,0.256,0.25,0.222,0.2,0.182,0.167,0.154,0.143,0.133,0.125,0.118,0.111,0.105,0.1], + 110: [ 1.0,1.0,1.0,0.999,0.998,0.993,0.981,0.96,0.928,0.887,0.841,0.792,0.744,0.699,0.657,0.619,0.584,0.553 + ,0.525,0.499,0.475,0.454,0.435,0.417,0.4,0.384,0.37,0.357,0.345,0.333,0.323,0.312,0.303,0.294,0.286,0.278,0.27, + 0.263,0.256,0.25,0.222,0.2,0.182,0.167,0.154,0.143,0.133,0.125,0.118,0.111,0.105,0.1], + 120: [ 1.0,1.0,1.0,1.0,0.999,0.995,0.985,0.966,0.935,0.895,0.847,0.798,0.748,0.702,0.659,0.621,0.586,0.554 + ,0.525,0.5,0.476,0.454,0.435,0.417,0.4,0.385,0.37,0.357,0.345,0.333,0.323,0.312,0.303,0.294,0.286,0.278,0.27, + 0.263,0.256,0.25,0.222,0.2,0.182,0.167,0.154,0.143,0.133,0.125,0.118,0.111,0.105,0.1], + 130: [ 1.0,1.0,1.0,1.0,0.999,0.996,0.988,0.971,0.942,0.901,0.853,0.802,0.752,0.704,0.661,0.622,0.587,0.554 + ,0.526,0.5,0.476,0.454,0.435,0.417,0.4,0.385,0.37,0.357,0.345,0.333,0.323,0.312,0.303,0.294,0.286,0.278,0.27, + 0.263,0.256,0.25,0.222,0.2,0.182,0.167,0.154,0.143,0.133,0.125,0.118,0.111,0.105,0.1], + 140: [ 1.0,1.0,1.0,1.0,0.999,0.997,0.991,0.975,0.947,0.907,0.858,0.806,0.755,0.706,0.662,0.623,0.587,0.555 + ,0.526,0.5,0.476,0.454,0.435,0.417,0.4,0.385,0.37,0.357,0.345,0.333,0.323,0.312,0.303,0.294,0.286,0.278,0.27, + 0.263,0.256,0.25,0.222,0.2,0.182,0.167,0.154,0.143,0.133,0.125,0.118,0.111,0.105,0.1], + 150: [ 1.0,1.0,1.0,1.0,0.999,0.998,0.992,0.979,0.952,0.912,0.863,0.809,0.757,0.708,0.663,0.623,0.588,0.555 + ,0.526,0.5,0.476,0.454,0.435,0.417,0.4,0.385,0.37,0.357,0.345,0.333,0.323,0.312,0.303,0.294,0.286,0.278,0.27, + 0.263,0.256,0.25,0.222,0.2,0.182,0.167,0.154,0.143,0.133,0.125,0.118,0.111,0.105,0.1], + + }, +} + +const waermeQuellenSenkenVerhaeltnis = [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8, + 1.9,2,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10]; + +export function funktionAusnutzungsgrad(waermequellensenkenverhaeltnis: number, zeitkonstane: number, monat: keyof typeof dataset) { + const data = dataset[monat] + + const interpolations: number[] = [] + + for (const key in data) { + const values = data[key as unknown as keyof typeof data] + + const interpolate = nevillePolynomialInterpolation( + values.map((value, i) => ({ x: waermeQuellenSenkenVerhaeltnis[i], y: value })), + values.length + ) + + interpolations.push(interpolate(waermequellensenkenverhaeltnis)) + } + + const interpolate = nevillePolynomialInterpolation( + interpolations.map((interpolation, i) => { + return { + x: Object.keys(data)[i], + y: interpolation + } + }), + interpolations.length + ) + + return interpolate(zeitkonstane) +} + +console.log(funktionAusnutzungsgrad(waermequellensenkenverhaeltnis, 30, "alleMonate")) diff --git a/src/lib/Berechnungen/BedarfsausweisWohnen/funktionBilanzInnentemperatur.ts b/src/lib/Berechnungen/BedarfsausweisWohnen/funktionBilanzInnentemperatur.ts new file mode 100644 index 00000000..08ebfb37 --- /dev/null +++ b/src/lib/Berechnungen/BedarfsausweisWohnen/funktionBilanzInnentemperatur.ts @@ -0,0 +1,180 @@ +// Funktion zur Berechnung der Bilanzinnentemperatur aus Tabelle 8 EFH oder Tabelle 10 MFH + +import { nevillePolynomialInterpolation } from "js-interpolate"; +import { any } from "node_modules/cypress/types/bluebird/index.js"; + +let wohneinheiten = 3; + +const datasetEinfamilienHaus = { + Januar: { + 50: [18.83, 18.71, 18.61, 18.38, 18.16, 18.05, 17.99, 17.97, 17.95], + 90: [18.99, 18.87, 18.77, 18.54, 18.31, 18.20, 18.15, 18.12, 18.11], + 130: [19.14, 19.02, 18.92, 18.68, 18.45, 18.34, 18.29, 18.26, 18.25], + }, + Februar: { + 50: [18.88, 18.76, 18.67, 18.44, 18.23, 18.13, 18.08, 18.05, 18.04], + 90: [19.04, 18.93, 18.83, 18.60, 18.39, 18.29, 18.23, 18.21, 18.20], + 130: [19.18, 19.07, 18.97, 18.74, 18.53, 18.42, 18.37, 18.34, 18.33], + }, + März: { + 50: [19.05, 18.95, 18.87, 18.68, 18.50, 18.42, 18.37, 18.35, 18.34], + 90: [19.19, 19.09, 19.01, 18.82, 18.64, 18.55, 18.51, 18.49, 18.48], + 130: [19.31, 19.21, 19.13, 18.94, 18.75, 18.67, 18.62, 18.60, 18.59], + }, + April: { + 50: [19.33, 19.26, 19.20, 19.07, 18.94, 18.88, 18.85, 18.84, 18.83], + 90: [19.43, 19.36, 19.30, 19.17, 19.04, 18.98, 18.95, 18.93, 18.92], + 130: [19.51, 19.44, 19.38, 19.25, 19.12, 19.06, 19.03, 19.01, 19.00], + }, + Mai: { + 50: [19.63, 19.60, 19.56, 19.49, 19.42, 19.39, 19.37, 19.36, 19.36], + 90: [19.69, 19.65, 19.62, 19.55, 19.48, 19.44, 19.42, 19.42, 19.41], + 130: [19.73, 19.70, 19.66, 19.59, 19.52, 19.49, 19.47, 19.46, 19.46], + }, + Juni: { + 50: [19.80, 19.77, 19.76, 19.72, 19.68, 19.66, 19.65, 19.64, 19.64], + 90: [19.83, 19.80, 19.79, 19.75, 19.71, 19.69, 19.68, 19.67, 19.67], + 130: [19.85, 19.83, 19.81, 19.77, 19.73, 19.71, 19.70, 19.70, 19.70], + }, + Juli: { + 50: [19.94, 19.93, 19.93, 19.91, 19.90, 19.90, 19.89, 19.89, 19.89], + 90: [19.95, 19.94, 19.94, 19.92, 19.91, 19.91, 19.90, 19.90, 19.90], + 130: [19.95, 19.95, 19.94, 19.93, 19.92, 19.91, 19.91, 19.91, 19.91], + }, + August: { + 50: [19.91, 19.90, 19.90, 19.88, 19.86, 19.86, 19.85, 19.85, 19.85], + 90: [19.93, 19.92, 19.91, 19.89, 19.88, 19.87, 19.86, 19.86, 19.86], + 130: [19.94, 19.93, 19.92, 19.90, 19.89, 19.88, 19.87, 19.87, 19.87], + }, + September: { + 50: [19.65, 19.61, 19.58, 19.51, 19.44, 19.41, 19.39, 19.39, 19.38], + 90: [19.70, 19.66, 19.63, 19.56, 19.49, 19.46, 19.44, 19.44, 19.43], + 130: [19.74, 19.71, 19.68, 19.60, 19.54, 19.50, 19.49, 19.48, 19.47], + }, + Oktober: { + 50: [19.35, 19.28, 19.23, 19.10, 18.97, 18.91, 18.88, 18.87, 18.86], + 90: [19.44, 19.38, 19.32, 19.19, 19.07, 19.01, 18.98, 18.96, 18.95], + 130: [19.53, 19.46, 19.40, 19.27, 19.15, 19.08, 19.05, 19.04, 19.03], + }, + November: { + 50: [19.01, 18.91, 18.83, 18.63, 18.45, 18.35, 18.31, 18.29, 18.28], + 90: [19.16, 19.06, 18.97, 18.77, 18.59, 18.49, 18.45, 18.43, 18.42], + 130: [19.28, 19.18, 19.09, 18.90, 18.71, 18.61, 18.57, 18.55, 18.53], + }, + Dezember: { + 50: [18.83, 18.71, 18.61, 18.38, 18.15, 18.04, 17.99, 17.96, 17.95], + 90: [18.99, 18.87, 18.76, 18.53, 18.30, 18.19, 18.14, 18.11, 18.10], + 130: [19.14, 19.02, 18.91, 18.67, 18.45, 18.33, 18.28, 18.25, 18.24], + }, + }; + + const datasetMehrfamilienHaus = { + Januar: { + 50: [19.41, 19.37, 19.33, 19.24, 19.16, 19.12, 19.10, 19.09, 19.08], + 90: [19.50, 19.45, 19.41, 19.33, 19.24, 19.20, 19.18, 19.17, 19.17], + 130: [19.57, 19.53, 19.49, 19.40, 19.32, 19.28, 19.26, 19.25, 19.24], + }, + Februar: { + 50: [19.44, 19.40, 19.36, 19.28, 19.20, 19.16, 19.14, 19.13, 19.13], + 90: [19.52, 19.48, 19.44, 19.36, 19.28, 19.24, 19.22, 19.21, 19.21], + 130: [19.59, 19.55, 19.51, 19.43, 19.35, 19.31, 19.29, 19.28, 19.28], + }, + März: { + 50: [19.53, 19.49, 19.46, 19.39, 19.32, 19.29, 19.27, 19.27, 19.26], + 90: [19.60, 19.56, 19.53, 19.46, 19.39, 19.36, 19.34, 19.33, 19.33], + 130: [19.66, 19.62, 19.59, 19.52, 19.45, 19.42, 19.40, 19.39, 19.39], + }, + April: { + 50: [19.66, 19.64, 19.62, 19.57, 19.52, 19.50, 19.49, 19.48, 19.48], + 90: [19.71, 19.69, 19.67, 19.62, 19.57, 19.55, 19.54, 19.53, 19.53], + 130: [19.76, 19.73, 19.71, 19.66, 19.61, 19.59, 19.58, 19.57, 19.57], + }, + Mai: { + 50: [19.82, 19.80, 19.79, 19.76, 19.74, 19.73, 19.72, 19.72, 19.72], + 90: [19.84, 19.83, 19.82, 19.79, 19.77, 19.75, 19.75, 19.74, 19.74], + 130: [19.87, 19.85, 19.84, 19.81, 19.79, 19.78, 19.77, 19.77, 19.76], + }, + Juni: { + 50: [19.90, 19.89, 19.88, 19.87, 19.85, 19.85, 19.84, 19.84, 19.84], + 90: [19.91, 19.91, 19.90, 19.88, 19.87, 19.86, 19.86, 19.86, 19.86], + 130: [19.93, 19.92, 19.91, 19.90, 19.88, 19.87, 19.87, 19.87, 19.87], + }, + Juli: { + 50: [19.97, 19.97, 19.96, 19.96, 19.96, 19.95, 19.95, 19.95, 19.95], + 90: [19.97, 19.97, 19.97, 19.96, 19.96, 19.96, 19.96, 19.96, 19.96], + 130: [19.98, 19.98, 19.97, 19.97, 19.96, 19.96, 19.96, 19.96, 19.96], + }, + August: { + 50: [19.96, 19.95, 19.95, 19.94, 19.94, 19.93, 19.93, 19.93, 19.93], + 90: [19.96, 19.96, 19.96, 19.95, 19.94, 19.94, 19.94, 19.94, 19.94], + 130: [19.97, 19.97, 19.96, 19.96, 19.95, 19.95, 19.95, 19.94, 19.94], + }, + September: { + 50: [19.82, 19.81, 19.80, 19.77, 19.75, 19.74, 19.73, 19.73, 19.73], + 90: [19.85, 19.84, 19.82, 19.80, 19.77, 19.76, 19.76, 19.75, 19.75], + 130: [19.87, 19.86, 19.85, 19.82, 19.80, 19.78, 19.78, 19.77, 19.77], + }, + Oktober: { + 50: [19.67, 19.65, 19.63, 19.58, 19.53, 19.51, 19.50, 19.50, 19.49], + 90: [19.72, 19.70, 19.68, 19.63, 19.58, 19.56, 19.55, 19.54, 19.54], + 130: [19.76, 19.74, 19.72, 19.67, 19.62, 19.60, 19.59, 19.58, 19.58], + }, + November: { + 50: [19.51, 19.47, 19.44, 19.36, 19.30, 19.26, 19.25, 19.24, 19.23], + 90: [19.58, 19.54, 19.51, 19.44, 19.37, 19.33, 19.32, 19.31, 19.30], + 130: [19.64, 19.60, 19.57, 19.50, 19.43, 19.39, 19.38, 19.37, 19.37], + }, + Dezember: { + 50: [19.41, 19.36, 19.32, 19.24, 19.15, 19.11, 19.09, 19.08, 19.08], + 90: [19.49, 19.45, 19.41, 19.32, 19.24, 19.20, 19.18, 19.17, 19.16], + 130: [19.57, 19.52, 19.49, 19.40, 19.31, 19.27, 19.25, 19.24, 19.24], + }, + }; + + function getDataset(wohneinheiten: number) { + if (wohneinheiten < 3) { + return datasetEinfamilienHaus; + } else { + return datasetMehrfamilienHaus; + } + } + + const dataset = getDataset(wohneinheiten); + +// Für "Ohne Teilbeheizung" habe ich hier einfach 0 eingesetzt: +const HeizLast = [0, 5, 10, 25, 50, 75, 100, 125, 150]; + +// Um über die beiden Tabellen zu interpolieren können wir einfach zuerst über +// jede einzeln interpolieren und dann zwischen den Tabellen interpolieren. +// Falls wir also den Wert an Stelle Heizlast: 120, Zeitkonstante 100, Monat: +// Januar haben wollen: +export function funktionBilanzInnentemperatur(heizlast: number, zeitkonstane: number, monat: keyof typeof dataset) { + const data = dataset[monat] + + const interpolations: number[] = [] + + for (const key in data) { + const values = data[key as unknown as keyof typeof data] + + const interpolate = nevillePolynomialInterpolation( + values.map((value, i) => ({ x: HeizLast[i], y: value })), + values.length + ) + + interpolations.push(interpolate(heizlast)) + } + + const interpolate = nevillePolynomialInterpolation( + interpolations.map((interpolation, i) => { + return { + x: Object.keys(data)[i], + y: interpolation + } + }), + interpolations.length + ) + + return interpolate(zeitkonstane) +} + +console.log(funktionBilanzInnentemperatur(120, 100, "Januar")) \ No newline at end of file diff --git a/src/lib/Berechnungen/BedarfsausweisWohnen/funktionMonatlicherBelastungsgrad.ts b/src/lib/Berechnungen/BedarfsausweisWohnen/funktionMonatlicherBelastungsgrad.ts index 8e4e2d58..6bc59388 100644 --- a/src/lib/Berechnungen/BedarfsausweisWohnen/funktionMonatlicherBelastungsgrad.ts +++ b/src/lib/Berechnungen/BedarfsausweisWohnen/funktionMonatlicherBelastungsgrad.ts @@ -1,9 +1,10 @@ -// Funktion zur Berechnung des monatlichen Belastungsgrades aus Tabelle 9 EFH (Januar, Zeitkonstante 90) +// Funktion zur Berechnung des monatlichen Belastungsgrades aus Tabelle 9 EFH und Tabelle 11 MFH import { nevillePolynomialInterpolation } from "js-interpolate"; -// Funktion zur Berechnung des monatlichen Belastungsgrades aus Tabelle 9 EFH (Zeitkonstante 90,130) -const dataset = { +let wohneinheiten = 3; + +const datasetEinfamilienHausMittlereBelastung = { Januar: { 50: [ 0.557, 0.554, 0.55, 0.543, 0.536, 0.533, 0.531, 0.53, 0.53 ], 90: [ 0.562, 0.559, 0.555, 0.548, 0.541, 0.538, 0.536, 0.535, 0.535 ], @@ -66,6 +67,79 @@ const dataset = { }, } +const datasetMehrfamilienHausMittlereBelastung = { + Januar: { + 50: [0.575, 0.574, 0.573, 0.570, 0.567, 0.566, 0.566, 0.565, 0.565], + 90: [0.578, 0.577, 0.575, 0.573, 0.570, 0.569, 0.568, 0.568, 0.568], + 130: [0.580, 0.579, 0.578, 0.575, 0.572, 0.571, 0.571, 0.570, 0.570], + }, + Februar: { + 50: [0.548, 0.547, 0.546, 0.543, 0.541, 0.539, 0.539, 0.538, 0.538], + 90: [0.551, 0.549, 0.548, 0.546, 0.543, 0.542, 0.541, 0.541, 0.541], + 130: [0.553, 0.552, 0.550, 0.548, 0.545, 0.544, 0.543, 0.543, 0.543], + }, + März: { + 50: [0.463, 0.462, 0.461, 0.459, 0.457, 0.456, 0.455, 0.455, 0.455], + 90: [0.465, 0.464, 0.463, 0.461, 0.459, 0.458, 0.458, 0.457, 0.457], + 130: [0.467, 0.466, 0.465, 0.463, 0.461, 0.460, 0.459, 0.459, 0.459], + }, + April: { + 50: [0.327, 0.326, 0.326, 0.324, 0.323, 0.322, 0.321, 0.321, 0.321], + 90: [0.329, 0.328, 0.327, 0.326, 0.324, 0.323, 0.323, 0.323, 0.323], + 130: [0.330, 0.329, 0.328, 0.327, 0.325, 0.325, 0.324, 0.324, 0.324], + }, + Mai: { + 50: [0.179, 0.178, 0.178, 0.177, 0.176, 0.176, 0.176, 0.176, 0.175], + 90: [0.179, 0.179, 0.179, 0.178, 0.177, 0.177, 0.176, 0.176, 0.176], + 130: [0.180, 0.180, 0.179, 0.179, 0.178, 0.177, 0.177, 0.177, 0.177], + }, + Juni: { + 50: [0.100, 0.100, 0.099, 0.099, 0.099, 0.098, 0.098, 0.098, 0.098], + 90: [0.100, 0.100, 0.100, 0.099, 0.099, 0.099, 0.099, 0.099, 0.099], + 130: [0.101, 0.101, 0.100, 0.100, 0.099, 0.099, 0.099, 0.099, 0.099], + }, + Juli: { + 50: [0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030], + 90: [0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030], + 130: [0.031, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030], + }, + August: { + 50: [0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042], + 90: [0.043, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042], + 130: [0.043, 0.043, 0.043, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042], + }, + September: { + 50: [0.173, 0.172, 0.172, 0.171, 0.170, 0.170, 0.170, 0.170, 0.170], + 90: [0.173, 0.173, 0.173, 0.172, 0.171, 0.171, 0.170, 0.170, 0.170], + 130: [0.174, 0.174, 0.173, 0.173, 0.172, 0.171, 0.171, 0.171, 0.171], + }, + Oktober: { + 50: [0.318, 0.317, 0.317, 0.315, 0.314, 0.313, 0.313, 0.312, 0.312], + 90: [0.319, 0.319, 0.318, 0.317, 0.315, 0.314, 0.314, 0.314, 0.314], + 130: [0.321, 0.320, 0.319, 0.318, 0.316, 0.316, 0.315, 0.315, 0.315], + }, + November: { + 50: [0.481, 0.480, 0.479, 0.477, 0.475, 0.474, 0.473, 0.473, 0.473], + 90: [0.484, 0.483, 0.482, 0.479, 0.477, 0.476, 0.476, 0.475, 0.475], + 130: [0.486, 0.485, 0.484, 0.481, 0.479, 0.478, 0.477, 0.477, 0.477], + }, + Dezember: { + 50: [0.578, 0.577, 0.576, 0.573, 0.570, 0.569, 0.569, 0.568, 0.568], + 90: [0.581, 0.580, 0.578, 0.576, 0.573, 0.572, 0.571, 0.571, 0.571], + 130: [0.583, 0.582, 0.581, 0.578, 0.575, 0.574, 0.574, 0.573, 0.573], + }, +}; + +function getDatasetBelastung(wohneinheiten: number) { + if (wohneinheiten < 3) { + return datasetEinfamilienHausMittlereBelastung; + } else { + return datasetMehrfamilienHausMittlereBelastung; + } +} + +const dataset = getDatasetBelastung(wohneinheiten); + // Für "Ohne Teilbeheizung" habe ich hier einfach 0 eingesetzt: const HeizLast = [0, 5, 10, 25, 50, 75, 100, 125, 150]; @@ -73,7 +147,7 @@ const HeizLast = [0, 5, 10, 25, 50, 75, 100, 125, 150]; // jede einzeln interpolieren und dann zwischen den Tabellen interpolieren. // Falls wir also den Wert an Stelle Heizlast: 120, Zeitkonstante 100, Monat: // Januar haben wollen: -function crossInterpolate(heizlast: number, zeitkonstane: number, monat: keyof typeof dataset) { +export function funktionMonatlicherBelastungsgrad(heizlast: number, zeitkonstane: number, monat: keyof typeof dataset) { const data = dataset[monat] const interpolations: number[] = [] @@ -100,6 +174,4 @@ function crossInterpolate(heizlast: number, zeitkonstane: number, monat: keyof t ) return interpolate(zeitkonstane) -} - -console.log(crossInterpolate(120, 100, "Januar")); \ No newline at end of file +} \ No newline at end of file diff --git a/src/lib/helpers/txml.ts b/src/lib/helpers/txml.ts new file mode 100644 index 00000000..d1745fe8 --- /dev/null +++ b/src/lib/helpers/txml.ts @@ -0,0 +1,481 @@ +// ==ClosureCompiler== +// @output_file_name default.js +// @compilation_level SIMPLE_OPTIMIZATIONS +// ==/ClosureCompiler== +// module.exports = { +// parse: parse, +// simplify: simplify, +// simplifyLostLess: simplifyLostLess, +// filter: filter, +// stringify: stringify, +// toContentString: toContentString, +// getElementById: getElementById, +// getElementsByClassName: getElementsByClassName, +// transformStream: transformStream, +// }; + +/** + * @author: Tobias Nickel + * @created: 06.04.2015 + * I needed a small xmlparser chat can be used in a worker. + */ + +interface Node { + tagName: string; + attributes: Record; + children: (Node | string)[]; +} + +interface ParseOptions { + attrName?: string; + attrValue?: string; + parseNode: any; + pos?: number; + noChildNodes?: string[]; + setPos?: boolean; + keepComments?: boolean; + keepWhitespace?: boolean; + simplify?: boolean; + filter?: (a: Node, b: Node) => boolean; +} + +/** + * parseXML / html into a DOM Object. with no validation and some failur tolerance + * @param {string} source your XML to parse + * @param {ParseOptions} [options] all other options: + * @return {(Node | string)[]} + */ +export function parse(source: string, options: ParseOptions = {}): (Node | string)[] { + var pos = options.pos || 0; + var keepComments = !!options.keepComments; + var keepWhitespace = !!options.keepWhitespace + + var openBracket = "<"; + var openBracketCC = "<".charCodeAt(0); + var closeBracket = ">"; + var closeBracketCC = ">".charCodeAt(0); + var minusCC = "-".charCodeAt(0); + var slashCC = "/".charCodeAt(0); + var exclamationCC = '!'.charCodeAt(0); + var singleQuoteCC = "'".charCodeAt(0); + var doubleQuoteCC = '"'.charCodeAt(0); + var openCornerBracketCC = '['.charCodeAt(0); + var closeCornerBracketCC = ']'.charCodeAt(0); + + + /** + * parsing a list of entries + */ + function parseChildren(tagName: string) { + var children = []; + while (source[pos]) { + if (source.charCodeAt(pos) == openBracketCC) { + if (source.charCodeAt(pos + 1) === slashCC) { + var closeStart = pos + 2; + pos = source.indexOf(closeBracket, pos); + + var closeTag = source.substring(closeStart, pos) + if (closeTag.indexOf(tagName) == -1) { + var parsedText = source.substring(0, pos).split('\n'); + throw new Error( + 'Unexpected close tag\nLine: ' + (parsedText.length - 1) + + '\nColumn: ' + (parsedText[parsedText.length - 1].length + 1) + + '\nChar: ' + source[pos] + ); + } + + if (pos + 1) pos += 1 + + return children; + } else if (source.charCodeAt(pos + 1) === exclamationCC) { + if (source.charCodeAt(pos + 2) == minusCC) { + //comment support + const startCommentPos = pos; + while (pos !== -1 && !(source.charCodeAt(pos) === closeBracketCC && source.charCodeAt(pos - 1) == minusCC && source.charCodeAt(pos - 2) == minusCC && pos != -1)) { + pos = source.indexOf(closeBracket, pos + 1); + } + if (pos === -1) { + pos = source.length + } + if (keepComments) { + children.push(source.substring(startCommentPos, pos + 1)); + } + } else if ( + source.charCodeAt(pos + 2) === openCornerBracketCC && + source.charCodeAt(pos + 8) === openCornerBracketCC && + source.substr(pos + 3, 5).toLowerCase() === 'cdata' + ) { + // cdata + var cdataEndIndex = source.indexOf(']]>', pos); + if (cdataEndIndex == -1) { + children.push(source.substr(pos + 9)); + pos = source.length; + } else { + children.push(source.substring(pos + 9, cdataEndIndex)); + pos = cdataEndIndex + 3; + } + continue; + } else { + // doctypesupport + const startDoctype = pos + 1; + pos += 2; + var encapsuled = false; + while ((source.charCodeAt(pos) !== closeBracketCC || encapsuled === true) && source[pos]) { + if (source.charCodeAt(pos) === openCornerBracketCC) { + encapsuled = true; + } else if (encapsuled === true && source.charCodeAt(pos) === closeCornerBracketCC) { + encapsuled = false; + } + pos++; + } + children.push(source.substring(startDoctype, pos)); + } + pos++; + continue; + } + var node = parseNode(); + children.push(node); + if (node.tagName[0] === '?') { + children.push(...node.children); + node.children = []; + } + } else { + var text = parseText(); + if (keepWhitespace) { + if (text.length > 0) { + children.push(text); + } + } else { + var trimmed = text.trim(); + if (trimmed.length > 0) { + children.push(trimmed); + } + } + pos++; + } + } + return children; + } + + /** + * returns the text outside of texts until the first '<' + */ + function parseText() { + var start = pos; + pos = source.indexOf(openBracket, pos) - 1; + if (pos === -2) + pos = source.length; + return source.slice(start, pos + 1); + } + /** + * returns text until the first nonAlphabetic letter + */ + var nameSpacer = '\r\n\t>/= '; + + function parseName() { + var start = pos; + while (nameSpacer.indexOf(source[pos]) === -1 && source[pos]) { + pos++; + } + return source.slice(start, pos); + } + /** + * is parsing a node, including tagName, Attributes and its children, + * to parse children it uses the parseChildren again, that makes the parsing recursive + */ + var NoChildNodes = options.noChildNodes || ['img', 'br', 'input', 'meta', 'link', 'hr']; + + function parseNode(): Node { + pos++; + const tagName = parseName(); + const attributes: Record = {}; + let children: (string | Node)[] = []; + + // parsing attributes + while (source.charCodeAt(pos) !== closeBracketCC && source[pos]) { + var c = source.charCodeAt(pos); + if ((c > 64 && c < 91) || (c > 96 && c < 123)) { + //if('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(S[pos])!==-1 ){ + var name = parseName(); + // search beginning of the string + var code = source.charCodeAt(pos); + while (code && code !== singleQuoteCC && code !== doubleQuoteCC && !((code > 64 && code < 91) || (code > 96 && code < 123)) && code !== closeBracketCC) { + pos++; + code = source.charCodeAt(pos); + } + if (code === singleQuoteCC || code === doubleQuoteCC) { + var value = parseString(); + if (pos === -1) { + return { + tagName, + attributes, + children, + }; + } + } else { + value = null; + pos--; + } + attributes[name] = value; + } + pos++; + } + // optional parsing of children + if (source.charCodeAt(pos - 1) !== slashCC) { + if (tagName == "script") { + var start = pos + 1; + pos = source.indexOf('', pos); + children = [source.slice(start, pos)]; + pos += 9; + } else if (tagName == "style") { + var start = pos + 1; + pos = source.indexOf('', pos); + children = [source.slice(start, pos)]; + pos += 8; + } else if (NoChildNodes.indexOf(tagName) === -1) { + pos++; + children = parseChildren(tagName); + } else { + pos++ + } + } else { + pos++; + } + return { + tagName, + attributes, + children, + }; + } + + /** + * is parsing a string, that starts with a char and with the same usually ' or " + */ + + function parseString() { + var startChar = source[pos]; + var startpos = pos + 1; + pos = source.indexOf(startChar, startpos) + return source.slice(startpos, pos); + } + + /** + * + */ + function findElements() { + var r = new RegExp('\\s' + options.attrName + '\\s*=[\'"]' + options.attrValue + '[\'"]').exec(source) + if (r) { + return r.index; + } else { + return -1; + } + } + + var out: (string | Node)[] | null = null; + if (options.attrValue !== undefined) { + options.attrName = options.attrName || 'id'; + out = []; + + while ((pos = findElements()) !== -1) { + pos = source.lastIndexOf('<', pos); + if (pos !== -1) { + out.push(parseNode()); + } + source = source.substr(pos); + pos = 0; + } + } else if (options.parseNode) { + out = parseNode() + } else { + out = parseChildren(''); + } + + if (options.filter) { + out = filter(out, options.filter); + } + + if (options.simplify) { + return simplify(Array.isArray(out) ? out : [out]); + } + + if (options.setPos) { + out.pos = pos; + } + + return out; +} + +/** +* transform the DomObject to an object that is like the object of PHP`s simple_xmp_load_*() methods. +* this format helps you to write that is more likely to keep your program working, even if there a small changes in the XML schema. +* be aware, that it is not possible to reproduce the original xml from a simplified version, because the order of elements is not saved. +* therefore your program will be more flexible and easier to read. +* +* @param {tNode[]} children the childrenList +*/ +export function simplify(children: any[]) { + var out = {}; + if (!children.length) { + return ''; + } + + if (children.length === 1 && typeof children[0] == 'string') { + return children[0]; + } + // map each object + children.forEach(function(child: { tagName: string | number; children: any; attributes: {}; }) { + if (typeof child !== 'object') { + return; + } + if (!out[child.tagName]) + out[child.tagName] = []; + var kids = simplify(child.children); + out[child.tagName].push(kids); + if (Object.keys(child.attributes).length && typeof kids !== 'string') { + kids._attributes = child.attributes; + } + }); + + for (var i in out) { + if (out[i].length == 1) { + out[i] = out[i][0]; + } + } + + return out; +}; + + +/** +* similar to simplify, but lost less +* +* @param {tNode[]} children the childrenList +*/ +export function simplifyLostLess(children: any[], parentAttributes = {}) { + var out = {}; + if (!children.length) { + return out; + } + + if (children.length === 1 && typeof children[0] == 'string') { + return Object.keys(parentAttributes).length ? { + _attributes: parentAttributes, + value: children[0] + } : children[0]; + } + // map each object + children.forEach(function(child: { tagName: string | number; children: any; attributes: {} | undefined; }) { + if (typeof child !== 'object') { + return; + } + if (!out[child.tagName]) + out[child.tagName] = []; + var kids = simplifyLostLess(child.children || [], child.attributes); + out[child.tagName].push(kids); + if (Object.keys(child.attributes).length) { + kids._attributes = child.attributes; + } + }); + + return out; +}; + +/** +* behaves the same way as Array.filter, if the filter method return true, the element is in the resultList +* @params children{Array} the children of a node +* @param f{function} the filter method +*/ +export function filter(children: any[], f: (arg0: any, arg1: any, arg2: number, arg3: string) => any, dept = 0, path = '') { + var out: any[] = []; + children.forEach(function(child: { children: any; tagName: string; }, i: string) { + if (typeof(child) === 'object' && f(child, i, dept, path)) out.push(child); + if (child.children) { + var kids = filter(child.children, f, dept + 1, (path ? path + '.' : '') + i + '.' + child.tagName); + out = out.concat(kids); + } + }); + return out; +}; + +/** +* stringify a previously parsed string object. +* this is useful, +* 1. to remove whitespace +* 2. to recreate xml data, with some changed data. +* @param {tNode} O the object to Stringify +*/ +export function stringify(O: any) { + var out = ''; + + function writeChildren(O: string | any[]) { + if (O) { + for (var i = 0; i < O.length; i++) { + if (typeof O[i] == 'string') { + out += O[i].trim(); + } else { + writeNode(O[i]); + } + } + } + } + + function writeNode(N: { tagName: string | string[]; attributes: { [x: string]: string; }; children: any; }) { + out += "<" + N.tagName; + for (var i in N.attributes) { + if (N.attributes[i] === null) { + out += ' ' + i; + } else if (N.attributes[i].indexOf('"') === -1) { + out += ' ' + i + '="' + N.attributes[i].trim() + '"'; + } else { + out += ' ' + i + "='" + N.attributes[i].trim() + "'"; + } + } + if (N.tagName[0] === '?') { + out += '?>'; + return; + } + out += '>'; + writeChildren(N.children); + out += ''; + } + writeChildren(O); + + return out; +}; + + +/** +* use this method to read the text content, of some node. +* It is great if you have mixed content like: +* this text has some big text and a link +* @return {string} +*/ +export function toContentString(tDom: string): string { + if (Array.isArray(tDom)) { + var out = ''; + tDom.forEach(function(e) { + out += ' ' + toContentString(e); + out = out.trim(); + }); + return out; + } else if (typeof tDom === 'object') { + return toContentString(tDom.children) + } else { + return ' ' + tDom; + } +}; + +export function getElementById(S: string, id: any, simplified: any) { + var out = parse(S, { + attrValue: id + }); + return simplified ? simplify(out) : out[0]; +}; + +export function getElementsByClassName(S: string, classname: string, simplified: any) { + const out = parse(S, { + attrName: 'class', + attrValue: '[a-zA-Z0-9- ]*' + classname + '[a-zA-Z0-9- ]*' + }); + return simplified ? simplify(out) : out; +}; \ No newline at end of file diff --git a/src/lib/pdf/datenblatt.html b/src/lib/pdf/datenblatt.html new file mode 100644 index 00000000..395b614a --- /dev/null +++ b/src/lib/pdf/datenblatt.html @@ -0,0 +1,87 @@ +
+

Datenblatt Energieausweis

+

Ausweis ID: 1225432

+
+

Gebäudedaten

+

Adresse: Beispielstraße 15, 22587 Beispielnese

+ +
+
+ +

Neubau

+
+
+ +

Vermietung/Verkauf

+
+
+ +

Modernisierung

+
+
+ +

Sonstiges

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GebäudetypWohnflächeLeerstandWohnungen
DoppelhaushälfteDIN Wohnfläche innen 141m20%2
DachgeschossKeller
unbeheiztnein
+ +

Verbrauch

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Von: 01.01.2014Von: 01.01.2015Von: 01.01.2016
Bis: 31.12.2014Bis: 31.12.2015Bis: 31.12.2016
Heizöl EL1947 l1907 l2248 l
Brennholz6 m36 m36 m3
+ +

Warmwasseranteil: 18%

\ No newline at end of file diff --git a/src/lib/pdf/elements/Checkbox.ts b/src/lib/pdf/elements/Checkbox.ts new file mode 100644 index 00000000..04fca4ef --- /dev/null +++ b/src/lib/pdf/elements/Checkbox.ts @@ -0,0 +1,26 @@ +import { PDFPage, rgb } from 'pdf-lib'; +import { PDFElement } from './PDFElement.js'; + +export class Checkbox extends PDFElement { + private borderWidth: number = 1; + + constructor(protected _width: number, protected _height: number) { + super(); + } + + addChild(...children: PDFElement[]): void { + throw new Error('Method not supported.'); + } + + draw(page: PDFPage, x: number, y: number): void { + page.drawRectangle({ + x: x + this.borderWidth, + // NOTE: Keine Ahnung warum * 1.5 aber dann passt es... + y: y - this._height - this.borderWidth * 1.5, + width: this._width, + height: this._height, + borderColor: rgb(0, 0, 0), + borderWidth: this.borderWidth + }); + } +} diff --git a/src/lib/pdf/elements/Flex.ts b/src/lib/pdf/elements/Flex.ts new file mode 100644 index 00000000..f71216ad --- /dev/null +++ b/src/lib/pdf/elements/Flex.ts @@ -0,0 +1,175 @@ +import { PDFPage } from 'pdf-lib'; +import { PDFElement, Size } from './PDFElement.js'; + +export interface FlexOptions { + page: PDFPage; + width: number; + height: number; + x?: number; + y?: number; + direction?: 'row' | 'column'; + justify?: 'start' | 'center' | 'end' | 'space-between' | 'space-around'; + align?: 'start' | 'center' | 'end' | 'stretch'; + gap?: number; + children?: PDFElement[]; +} + +export class Flex extends PDFElement { + private page: PDFPage; + private x: number; + private y: number; + private direction: 'row' | 'column'; + private justifyContent: 'start' | 'center' | 'end' | 'space-between' | 'space-around'; + private alignItems: 'start' | 'center' | 'end' | 'stretch'; + private gap: number; + private children: PDFElement[]; + + constructor(options: FlexOptions) { + super(); + this.page = options.page; + this._width = options.width; + this._height = options.height; + this.x = options.x ?? 0; + this.y = options.y ?? 0; + this.direction = options.direction ?? 'row'; + this.justifyContent = options.justify ?? 'start'; + this.alignItems = options.align ?? 'start'; + this.gap = options.gap ?? 0; + this.children = options.children ?? []; + } + + addChild(...children: PDFElement[]): void { + this.children.push(...children) + } + + get height(): number { + if (typeof this._height === "number") { + return this._height; + } + + let currentHeight = 0 + + if (this.direction === "column") { + for (const child of this.children) { + currentHeight += child.height; + } + + currentHeight += this.gap * this.children.length - 1; + } else { + for (const child of this.children) { + if (child.height > currentHeight) { + currentHeight = child.height + } + } + } + + return currentHeight; + } + + set width(value: Size) { + this._width = value; + } + + get width(): number { + if (typeof this._width === "number") { + return this._width; + } + + let currentWidth = 0 + + if (this.direction === "row") { + for (const child of this.children) { + currentWidth += child.width; + } + + currentWidth += this.gap * this.children.length - 1; + } else { + for (const child of this.children) { + if (child.width > currentWidth) { + currentWidth = child.width + } + } + } + + return currentWidth; + } + + draw(page: PDFPage, x: number = this.x, y: number = this.y): void { + const childPositions = this.calculateChildPositions(x, y); + + // Draw each child + this.children.forEach((child, i) => { + const pos = childPositions[i]; + + child.draw(page, pos.x, pos.y); + }); + } + + private calculateChildPositions(x: number, y: number): { x: number; y: number }[] { + const positions: { x: number; y: number }[] = []; + let currentX = x; + let currentY = y; + + // Calculate total size of children and gaps + const totalChildrenSize = this.children.reduce( + (sum, child) => sum + (this.direction === 'row' ? child.width : child.height), + 0 + ); + + const totalGaps = this.gap * (this.children.length - 1); + + // Justify content + const justifyOffset = this.calculateJustifyOffset(totalChildrenSize, totalGaps); + + // Since the origin is at X: 0 Y: page height and everything will be drawn + // above the current position we first need to subtract the height of the + // element from the current Y + this.children.forEach((child, i) => { + const childX = this.direction === 'row' ? currentX : currentX + this.calculateAlignOffset(child.width); + const childY = this.direction === 'row' ? currentY - this.calculateAlignOffset(child.height) : currentY; + + if (this.direction === "row") { + currentX += child.width + this.gap + justifyOffset; + } + + if (this.direction === 'column') { + currentY -= child.height + this.gap; + } + + positions.push({ x: childX, y: childY }); + }); + + return positions; + } + + private calculateJustifyOffset(totalChildrenSize: number, totalGaps: number): number { + const remainingSpace = + this.direction === 'row' ? this.width - totalChildrenSize - totalGaps : this.height - totalChildrenSize - totalGaps; + + switch (this.justifyContent) { + case 'center': + return remainingSpace / 2; + case 'end': + return remainingSpace; + case 'space-between': + return totalGaps / (this.children.length - 1) + (this.width - totalChildrenSize) / this.children.length; + case 'space-around': + return remainingSpace / this.children.length; + default: + return 0; + } + } + + private calculateAlignOffset(childSize: number): number { + switch (this.alignItems) { + case 'center': + return (this.direction === 'row' ? this.height - childSize : this.width - childSize) / 2; + case 'end': + return this.direction === 'row' ? this.height - childSize : this.width - childSize; + case 'stretch': + return 0; + default: + return 0; + } + } +} diff --git a/src/lib/pdf/elements/Layout.ts b/src/lib/pdf/elements/Layout.ts new file mode 100644 index 00000000..1f542c3b --- /dev/null +++ b/src/lib/pdf/elements/Layout.ts @@ -0,0 +1,84 @@ +import { PDFPage } from "pdf-lib"; +import { PDFElement, Size } from "./PDFElement.js"; + +export type Margin = { + top: number, + left: number, + right: number, + bottom: number +} + +export type Padding = Margin; + +export class Layout extends PDFElement { + private margin: Margin + protected _height: Size = "auto"; + protected _width: Size = "auto"; + + private padding: Padding = { + bottom: 0, + left: 0, + right: 0, + top: 0 + }; + + public children: PDFElement[]; + + constructor(children: PDFElement[] = [], options?: { + margin?: Margin, + padding?: Padding + }) { + super() + + this.children = children + this.margin = options?.margin ?? { + bottom: 0, + left: 0, + right: 0, + top: 0 + }; + + this.padding = options?.padding ?? { + bottom: 0, + left: 0, + right: 0, + top: 0 + }; + } + + get height(): number { + if (typeof this._height === "number") { + return this._height; + } + + let currentHeight = 0 + + for (const child of this.children) { + currentHeight += child.height; + } + + return currentHeight; + } + + set height(value: number) { + this._height = value; + } + + draw(page: PDFPage, x: number, y: number): void { + let currentY = y - this.margin.top - this.padding.top; + + for (const child of this.children) { + child.draw(page, x + this.margin.left + this.padding.left, currentY); + + currentY -= child.height; + } + } + + addChild(...children: PDFElement[]): void { + this.children.push(...children) + } +} + +export function layout(...args: ConstructorParameters) { + return new Layout(...args); +} \ No newline at end of file diff --git a/src/lib/pdf/elements/PDFElement.ts b/src/lib/pdf/elements/PDFElement.ts new file mode 100644 index 00000000..5a7c0db3 --- /dev/null +++ b/src/lib/pdf/elements/PDFElement.ts @@ -0,0 +1,27 @@ +import { PDFPage } from 'pdf-lib'; +export type Size = number | "auto"; + +export abstract class PDFElement { + protected _width: Size = 0; + + get width(): number { + return this._width === "auto" ? 0 : this._width + } + + set width(value: Size) { + this._width = value; + } + protected _height: Size = 0; + + get height(): number { + return this._height === "auto" ? 0 : this._height + } + + set height(value: Size) { + this._height = value; + } + + abstract draw(page: PDFPage, x: number, y: number): void; + + abstract addChild(...children: PDFElement[]): void; +} diff --git a/src/lib/pdf/elements/Text.ts b/src/lib/pdf/elements/Text.ts new file mode 100644 index 00000000..ad2afb8b --- /dev/null +++ b/src/lib/pdf/elements/Text.ts @@ -0,0 +1,39 @@ +import { PDFPage, PDFFont, rgb, RGB } from 'pdf-lib'; +import { PDFElement, Size } from './PDFElement.js'; + +export interface TextOptions { + font: PDFFont; + fontSize?: number; + color?: RGB; +} + +export class Text extends PDFElement { + private content: string; + private font: PDFFont; + private fontSize: number; + private color: RGB; + + constructor(content: string, options: TextOptions) { + super(); + this.content = content; + this.font = options.font; + this.fontSize = options.fontSize ?? 12; + this.color = options.color ?? rgb(0, 0, 0); + this._width = this.font.widthOfTextAtSize(content, this.fontSize); + this._height = this.font.heightAtSize(this.fontSize); + } + + addChild(...children: PDFElement[]): void { + throw new Error("Cannot add child element to Text") + } + + draw(page: PDFPage, x: number, y: number): void { + page.drawText(this.content, { + x, + y: y - this.height, + size: this.fontSize, + font: this.font, + color: this.color, + }); + } +} diff --git a/src/lib/pdf/elements/index.ts b/src/lib/pdf/elements/index.ts new file mode 100644 index 00000000..bc06510a --- /dev/null +++ b/src/lib/pdf/elements/index.ts @@ -0,0 +1,20 @@ +import { Flex, FlexOptions } from "./Flex.js"; +import { PDFElement } from "./PDFElement.js"; +import { TextOptions } from "./Text.js"; + +import { Checkbox } from "./Checkbox.js" +import { Text } from "./Text.js" + +export function flex(children: PDFElement[], options: Partial): Flex { + return new Flex({ ...options, children }); +} + +export function text(content: string, options: TextOptions): Text { + return new Text(content, options); +} + +export function checkbox(width: number, height: number): Checkbox { + return new Checkbox(width, height); +} + +export { Text, Checkbox, Flex } \ No newline at end of file diff --git a/src/lib/pdf/elements/xml2pdf.ts b/src/lib/pdf/elements/xml2pdf.ts new file mode 100644 index 00000000..9b22cf33 --- /dev/null +++ b/src/lib/pdf/elements/xml2pdf.ts @@ -0,0 +1,105 @@ +import * as txml from "#lib/helpers/txml.js" +import { PDFDocument, PDFFont, rgb, StandardFonts } from "pdf-lib" +import { Checkbox, Flex, Text } from "./index.js" +import { Layout } from "./Layout.js" +import { PDFElement } from "./PDFElement.js" + +export function xml2pdf(xml: string, font: PDFFont) { + const tree = txml.parse(xml) + + const iterateChildren = (children: ReturnType, parent: PDFElement) => { + for (const child of children) { + if (typeof child === "string") { + // Simple text + parent.addChild(new Text(child, { font })) + } else if (child.tagName === "flex") { + const flexbox = new Flex({ + height: parseFloat(child.attributes.height) || "auto", + width: parseFloat(child.attributes.width) || "auto", + align: child.attributes.align, + direction: child.attributes.direction, + gap: parseFloat(child.attributes.gap) || 0, + justify: child.attributes.justify + }) + + iterateChildren(child.children, flexbox) + parent.addChild(flexbox) + } else if (child.tagName === "text") { + + let color = rgb(0,0,0) + + if (child.attributes.hasOwnProperty("color")) { + const colorValue = child.attributes.color.split(",") + + if (colorValue.length !== 3) { + throw new Error("Invalid color, please provide 'r,g,b' as a value.") + } + + color = rgb(...colorValue.map((x) => parseInt(x) / 255) as [number, number, number]); + } + + const text = new Text(child.children[0] || "", { font: child.attributes.hasOwnProperty("bold") ? bold : font, fontSize: parseFloat(child.attributes.size) || 10, color }) + + parent.addChild(text) + } else if (child.tagName === "checkbox") { + if (typeof child.attributes.width === "undefined" || typeof child.attributes.height === "undefined") { + throw new Error("Missing height or width property in Checkbox creation.") + } + + const checkbox = new Checkbox(parseFloat(child.attributes.width), parseFloat(child.attributes.height)) + + parent.addChild(checkbox); + } else if (child.tagName === "layout") { + const layout = new Layout([], { + margin: { + bottom: parseFloat(child.attributes.marginBottom) || 0, + left: parseFloat(child.attributes.marginLeft) || 0, + right: parseFloat(child.attributes.marginRight) || 0, + top: parseFloat(child.attributes.marginTop) || 0, + }, + padding: { + bottom: parseFloat(child.attributes.paddingBottom) || 0, + left: parseFloat(child.attributes.paddingLeft) || 0, + right: parseFloat(child.attributes.paddingRight) || 0, + top: parseFloat(child.attributes.paddingTop) || 0, + } + }) + + iterateChildren(child.children, layout) + parent.addChild(layout) + } + } + } + + const layout = new Layout([]); + iterateChildren(tree, layout) + + return layout +} + +const pdf = await PDFDocument.create() + +const page = pdf.addPage() + +const font = await pdf.embedFont(StandardFonts.Helvetica) +const bold = await pdf.embedFont(StandardFonts.HelveticaBold) + +const layout = xml2pdf(` + Hello + Hello, how are you? + + + Hello + + Hello + Nasya, i love you + + +`, font) + +layout.draw(page, 0, page.getHeight()) + +import { writeFileSync } from "fs" +import { FixedLengthArray } from "#lib/Berechnungen/BedarfsausweisWohnen/types.js" + +writeFileSync("./test-pdf.pdf", await pdf.save()) \ No newline at end of file diff --git a/src/lib/pdf/pdfDatenblatt.ts b/src/lib/pdf/pdfDatenblatt.ts new file mode 100644 index 00000000..fca6f23c --- /dev/null +++ b/src/lib/pdf/pdfDatenblatt.ts @@ -0,0 +1,159 @@ +import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js"; +import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js"; +import * as fs from "fs" +import { PDFDocument, rgb, StandardFonts, TextAlignment } from "pdf-lib"; +import { checkbox, flex, text } from "./elements/index.js"; + +/* -------------------------------- Pdf Tools ------------------------------- */ + +export async function pdfDatenblatt(ausweis: VerbrauchsausweisWohnenClient) { + const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("./templates/Leerseite_Datenblatt.pdf", import.meta.url), "base64"); + const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF) + const pages = pdf.getPages() + + // const template = VerbrauchsausweisWohnen2016Template as Template; + + const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis); + + const height = pages[0].getHeight() + const width = pages[0].getWidth() + + const font = await pdf.embedFont(StandardFonts.Helvetica) + const bold = await pdf.embedFont(StandardFonts.HelveticaBold) + + const form = pdf.getForm() + form.updateFieldAppearances(font) + + const marginX = 45; + const marginY = 150; + + const benutzer: typeof ausweis.benutzer = ausweis.benutzer || { + vorname: "Max", + name: "Mustermann", + adresse: "Musterstraße 123", + plz: "12345", + ort: "Beispielhausen" + }; + + pages[0].drawText(`${benutzer.vorname} ${benutzer.name}`, { + x: marginX, + y: height - marginY, + font, + size: 12 + }) + + pages[0].drawText(benutzer.adresse, { + x: marginX, + y: height - marginY - 15, + font, + size: 12 + }) + + pages[0].drawText(`${benutzer.plz} ${benutzer.ort}`, { + x: marginX, + y: height - marginY - 30, + font, + size: 12 + }) + + pages[0].drawText("Datenblatt Energieausweis", { + x: marginX, + y: height - marginY - 100, + font: bold, + size: 12, + }) + + let ausweisIDText = `Ausweis ID: ${ausweis.uid}` + + pages[0].drawText(ausweisIDText, { + x: width - marginX - font.widthOfTextAtSize(ausweisIDText, 12), + y: height - marginY - 100, + font, + size: 12, + }) + + pages[0].drawText("Gebäudedaten", { + x: marginX, + y: height - marginY - 125, + font: bold, + size: 12, + }) + + pages[0].drawText(`Adresse: ${ausweis.gebaeude_aufnahme_allgemein.adresse}, ${ausweis.gebaeude_aufnahme_allgemein.plz} ${ausweis.gebaeude_aufnahme_allgemein.ort}`, { + x: marginX, + y: height - marginY - 140, + font, + size: 12, + }) + + const containerWidth = width - marginX; + + const layout = flex([ + flex([ + checkbox(8, 8), text("Neubau", { + color: rgb(0,0,0), + font, + fontSize: 12 + }) + ], { + align: "center", + justify: "center", + gap: 5, + height: 12, + page: pages[0] + }), + flex([ + checkbox(8, 8), text("Vermietung/Verkauf", { + color: rgb(0,0,0), + font, + fontSize: 12 + }) + ], { + align: "center", + justify: "center", + gap: 5, + height: 12, + page: pages[0] + }), + flex([ + checkbox(8, 8), text("Modernisierung", { + color: rgb(0,0,0), + font, + fontSize: 12 + }) + ], { + align: "center", + justify: "center", + gap: 5, + height: 12, + page: pages[0] + }), + flex([ + checkbox(8, 8), text("Sonstiges", { + color: rgb(0,0,0), + font, + fontSize: 12 + }) + ], { + align: "center", + justify: "center", + gap: 5, + height: 12, + page: pages[0] + }) + ], { + align: "center", + justify: "space-between", + gap: 15, + x: marginX, + y: height - marginY - 165, + height: 12, + width: containerWidth + }) + + layout.draw(pages[0]) + + // pdf.getForm().flatten() + + return pdf.save(); +} \ No newline at end of file diff --git a/src/lib/pdf/templates/Leerseite_Datenblatt.pdf b/src/lib/pdf/templates/Leerseite_Datenblatt.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7a561d4e251abefd3da2adec785d8412dbdac513 GIT binary patch literal 216772 zcmb4q1yo$iwry~C2~Oh<4c#c`rgBt{7Qvh(Vsl7-zxj`IkQUF~5J3BiBzyaaW z7ZgM@cQE_C65zjIXvm(<<`#cw0<)tb1OIWoO#7n+aQLq=b`Uq`-^RcYp1+N8adQ7{ zjE4jG*D($tH`m|BIKUi#8{^>t{dEk)&iOYiAQ1cCo&$r~|F#~O6Y@8`U@rE*Vdi89 z|5XPF2myirf&~QRhWyo5Aa-`(i{pM@|JQz;9GqN#wE-sw7tdeya)N;Df7Qzg0(1Ut zJrIQZ?_=EDe_IdC0s1RGPEKyfU*Cfh!VdhKUI>WuZ*w7B;J^AD@?w|2&V{_#<*#;z zu(N~zx*mib0{Yu}FFOAEZV(6$*I)e$;o|t)d;Cs{zhdD6g8ud#7m$E*VWnB+Roe=4f!QWRbTQGz|Fy?;^^oK_#Mmu6*g%H3rE23g@3oj zbos%YqF{DW32tE^I~PzK%p=Sr#sv`vaf^v^igSS>!h-z5U@o8p4>yDx$Sn#I1`7*= z*~KL|*+s=5oMIpm5n(}nHYI0s_dhb7gZ(A9kzHJkon8OTWFQ(c4UM>>1RC-`XF3}4 z?{N7qE|IXdb2WEnldv;(H5W5Cbu=?)lLl}AfoyW-4wkM~0CsL}HdO#Om!P1FtFyVW zJsPsriiwd?tg(^N{P*vj-|5|Bh2KL#!4hZ@&b?nJK_MU@^O^<>0E@=zk$D1I4KGPX2->AZx@OGnMi$(&8}Ws04n z<^N+=@JoFDmw`nc|1ll>=X6nLM<)?SPhBAEOB}r1FTuwO;s9`i*;#ow^x5Ri&8&_8 zjasaG*~addMwHFtRlIEfcUFJGcSLm&YBlGHEgUfS${-{kdYn*;DW>Hchk z0N@vb__GZL{7&RQ+nj*k1oLMb0^s~3ZUqHjg3QrW)!bE=?PXhHQ#1E;Ws|mlv4f~S zo0g)9jk)P>&C>Qj0QVokE%ebU@%_W-BE~M}zp=A1s#)8c zyHIfe70f+eK2;p;jU8BcARrcLvzJ%4cJ*SBViPgjb#PzqQe!J@hkfXYT_3uyzKz=*wA71>u%0D6eZMFXh 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/q)?|6B zIAwn;`elFnQzlL(B4$P=EdZw`D=Xuh%+E%|%*mp~#H{(I-4X#<-fq*MYg5^OsYCvI z;g^{c@M~?VL!6~~HzV@EI@~j&>jC7{*HsM&lw#TQK7wQ~pQX(5$^zmt_>Sl5Cx%l{ zjE_BMcFseub`fgJH>&J@!8#UdCnm@PV)Ka)rxrA*P+Y8BINwBOWLV!_OU))y;PlaZ zIUhioH9Rbc=AlL2EWX>jpDlaVWzhdTv+83dA|r0>RnNL8meuRhkg;-_mgsgNLinT3 zT#7dZNX>CN*59fm<%Wz(F~xdTMj&;iTu-K-<$ftw9P+f;(Sd~u0}tC!+MMd9q-rST znQOw5WJTNSvDM$5bvI9%5X^&D(lGTBs?PA`drrJW=ezsPWH)K@Eqq43R;Yq-?DI$f z)Ecv_k5WIjO~1O!h|n%MqoFpa@GdK(p%;je6*Ze>y9{n}ynhIi@l=Peq^{vUCEw8qY zvs?2P6=QQP;Ro$InVVVJh=QXi1Fo&Dr#+=FpdjdO^T>Z?*T2+Q|NYHmVr60bXBFQ; z<=Gn77~gqnMQaJ70@pTS0MQu(942}Rv52A|M8;rNOa;_89;R1yj_p(`wKpW=e$~1C zs_k*j!?~S%pel~VHl4+C$$`#c)?`vc#oDvk9Qu| zo-ys?SI=IV<2UyYPCwn;+%li%(qb0&Lx$czdL!c#uD+9-RZj|)MwK1R9>FGFc97UZu@neZ;ytew@M`seuyyj6o%uenP z4aQ6kZjUsjT$@jRb2wf}sbSusIRo>q_mQ>q#D7>(l3J%bf0>?(WX0Sr=_HY3r<0>0OLxtFtL`U)Gq2CL@ff4IO}-`nFcO2KoFY zT#aM2JvR5wwoIq#M@ODKxxm{z!#A8=?>iObDbZAjPtBc1SMUhA2GTx~)vldnF(cSU zv^dAN`UVl~NfhThR}@;q+<1+w5r&$qIp}70xofdjjUpx07Uq(lz=|!dEb! zekte?=`1q_Jm!ejByWoqSEnX5_iU;bsI!$Cwc|XUANOe4L#nG11bcjOwXz-1Cd+vT z^6XMKXaCZ%U#|;dO3&Oi4YCZ7=A;A(gW=_a^)+)4st1dTybo+_EHpqrkOqWnVA3#= z%6EY_RyKThK*&1hJ#!s~%*P#}8f8hc&ii+<((+I0`g^3MPnfp7L|=FPLi}8 zj(Q>tL0iZe^%z56YXd6YBk8ST6LQunSzo58^8!lsob~M6^n&F|cDTfHwZrWC(EY^S zMZwp?jJ;b&zYi%B4x!2QRJ?UEto_-e7U+s}O-#!pR+pH97Zircs#ZSKhRL&EdQ&wQ zDOCF)HIt~FdT!w50duQ?RXM)POKereO!v{EyTF=c7{yltd}nQGXni42tt>!sW;k#R zq$-&Jy^wmVGu5fzEQA7r7G-mVd=1VsT-Cf-kwSXbh^3l|?Q5KdFMKRmpOgy#7gL|u zn|smq-h^D&tKQe4Bb)*@fxNrBJk*RLG%J!Yix&e&(3|t*a~Sdk`uAa$CfDe7!=vL= zWvHp*6?qK}1obm>R`EgVmlWLdYe- zHy-5$^-ER?p7>UX2dy}oM9yFw>f2mxVl8S@iEKscygf%qWmG50_lGPtpF|i-Y(8l2 z@79$K`*(O&+gI=s?DL6S)e=RAO%G#(Rddy8pfCh3jpwfU=5qMwaX`>j>;|S2UR_tf zaoT<)(i0Y51vlaQc0h(wGh~_a!7o=Z$=Qg#3EO(7B6QxzMXR_ttQe~GG1ZvuJAHD8 zx>Kv`GFVwcXdNkRW|czO;SsF5>TWzac4#*pXeby|oi6KOy^#$%7j5~38fjXn2nc^2EV-T3gmQtp&k;uXnpHJT;3z*4F} zxT&t(?hQ#8~x5fDr^ZIf(kF?dmR7=>3@Pu1L$3y2aBrcnbQvXd>6F*O0xu(6HiT2A1>5;;q(hxQ@BUXpj_RQSlgx)eFIbbCsk+1RV2f>b|q zTN0L@x;h8yCRDrc)u-IFvO>Z_F(E1G{ANx+@4y15Q(5&!(NyJKc`g0^WdKj5>pdw6 z9nMo&|D~%XPIyma5<3JwZ!r405t$3N3$pSPX{!qg0~7KP!*7oR&sy9>*%VRtvV@jKVd@%LW^+$XbAB7zEI z_7Wt0VXWc371Y#+?7AxWr$R!1t@%Je@bW4n8dMSJoxdP+*p-pj z15D(mcZe6jjdqF0O|V2oIw}f1(j>+3Wa8~6fpZ&cc}cSL{VsSTb0fVFog>b;h(-&O z$x}v;Bev{*&p+! zqS&G;GSx!5PZvB`8v;X`vEFM|_F_Tz6_TbaTsUL5g7ek$*S1fUlM}I}2X9N-MaF#K z%l{TU8sGWZ7U;!Aa2l|EyB=gohoOyU4_X!Vgf7K=48HILS!u zf@)NuGPtG0CXty{)FnC$`H_BqjMG5@%S5+>5NDj=sGD2s0}Yth!M1>Dgto)8sEq>Q<1I{_55BJ#3qv^ z`LEo`U;5VmJ52m@0oboSivMN-*jo=B9m`v=0wCgGWcgFD_?!3oYq0n~O0Zb|DN1Bz zL4-1qmP z0y8JuuW?_vVwaU4BYfKx`dW^nyRQ6F-4Tn5hH0U#x@LscU34-c3@X}2=XzA{gv9dK z(=Q`6>oq#*;Z~7Vk7UZer^jJ5e<(O;zaQYQmMNjqdUu16hCDmNYmrb_J9PI74&9C(jjC zR*V>F^pRl7)apGj7wc6yl_QM)ZF?{DQwoL2Qbs-|t3N&sb&z*H9LKpRnr)`LbV+l&xfw55tbqkBZ)f z7^w74l3O}HYz1Ln`$JLohT#?1p~Iu@yc5Kz6@Z!3I(N^5d)#$x@9s>(%TlLI(j5t~ zPWv$gjRZ`jLB0&~K!A2+v~08td(J$4-MPNOUf_WAb61Ngxuduh=8;hdJyMbel8aJbbVeSGMcEo1vM0Cdy}HptshE&a z0v{SSA|`5f6Dv2NgYM!7&YKf#rpIvNRMllx?oOW}v z66ZY|NR6!Yza!?GeSSVOKWm@vm{!v44)2P}CT(yG=!sL>+j`h^X!dFQh^MOUVaUV= zMJ$M5XDMn@iU_LK4Q{BukZ6018-YuEzQ6`(-^WE!EeZ*EW-b>g#=woqN_94c?s$tW zvu>8yAz4rJlphK=EfcY_e0Nc>S@f7+V6szCK~89Fny$$*% zv^Y?b9%m~gTpVV!h4m_r_T#r-FpeXg_>5A1n$_q&hWsU#jhat2es&{{W9x~j zAqU}D+0R;h_tlta0|0Y|h?5Ai8D)!7k2HMT6#$7i%sJ{D1F3D{o^V%b+TB{Ct*Da~ z&Pf4XgMl$Q<2bUsv;DzewHqhB_0vRzpcJ8d->jiaAN#FO?y#z$M<4aF%m>O^44Ne! z+dn@W8!uS}1yvP+6RM~yA8`dMmePn-5$+77XGjMS9Z0;jWCV_PP0 zmH{>OAg%nUA*m-v50XzF-zlw)Zt=n_2{H){>QBScah**>Ynza&h|CiAZ203m0-i34fWg8_T1*UlCt_jhz9+vUuBkLGKAhEYQ zVJ3dCB{{X|f)qo+lj9-7SYpqg{bbl#RC$EGDA)OS@W7^z~Tv+{<@j(N- zJAmC63aQ)Q^W%@*gv~CuTd(DpE}hmfEgH>lR4CLJ$RNmfkp94rpF09Ry+8inKHg&U znGWx!&C?3GOC9|!n>b9WdllofuT*d||LOtSHd|!K0oX+iu?9ydM^kBW^f4<&US1br_x2iavT(^Nb^ahEmB`EWlzdK)ijJ)wK?`Ao02(xLI3M_1AhJd z>I1lonm*k-r7`y5?z1J&XdD5Ut%F&i2nYN~7vv5H(*AHCIGP`s;THIMgm(za5yJ0qmjB@Z|1OUSKqU@_pR-zc}ar zDMee**2eMcOz(jAM<%ZVt)RW_4*^?OO*)#dY2oX^%+5^1$biSjL{G!cpiL`nY-Fzg z-+V5oZ~w=%@s$<+$CoJ>JJ>qe8yY+Op;5lp^YtW1r%U&xHU7RXI$ioN&GE0Vzck1n z3->ue_Mtb?+cyqFUx#|sQ=EV_*(uCw!$Cpe<>h2ds{z5Au2Q#ZcbtTM@70&BX^%%55rL;i+ti_sjA3w(TjtiDM9y)C_ z037`JMJZ82HEv^^E?0i5($RvK*k^SRgW4Um>-*kuHE<2G1$Ech-QL{gWjm><46Y0B zCC>#O38sA|v&pkoIki|cxU@j{C|?ze`;ivk2Bh`XyYW$lOTplaP`Wiy2(Qn|2KEN0 zX;13-bh~epFFDP!5zUp$795nP$FsIk4;;ZL8|3D>;5lF}B)mabgyxg3G}I-P4|B38 zV#efo?4!yxWeKTYUx){+(IE~ch*e7YvN(O2j{h#o zLjPm%C5E$AkP~nQweYdMfzbDXfjAEZYzbp@ge@*Nyg(x0Vf86xBX-$Z8o>l1E_8qf zkSC2b7H?K-V@(|B(N{zNFA=02B-9a26<0Rck^Abwy#I?}TlVFR?rNd~zTYZ|SGOFF z(H;)gm&H17L!n$q_Am>CDwz`Mt}K8hs-4D z+4G-C6lcX$VW!O2GrcObkFUNJYCogrcU^5=CKAOJnFI7)`gkTAOi8%GTm)$+ zn9`)5p6U&*G&<(zP1nvT4N=s(J#KV(A>}>_&H-_A1lTmse5O$)`F>pDsuCTQ%k6}! z*e&Jj$Q_mRlQMHx(pBZ&sdyc)g^Dy0%_c|)_Lp*zyodD^*RYqMP=eV-J=Vhm-{iDS zWPXS$%VjXu)}g9uo$uiMgywgLACi_Zx)zwgEkwH&>oG;Z>rzTa7)gmX#-4K&@;d%mZv;vMUAHY^l6pqLAVO$cS#^;!Oql+}l1s4zNFi-GhMh;wsQ z5tZQ(jHW)e_c^7r1?Hi@MR64;ML0lydGGhblr9u(rbN(;ZWdIB@;BGJyPt;za+^~@ z@A!!WE^vv^pJk_K)~&NSkONKM73Sa#N!Vp0`bq4xsH-|m`xrTUo&CkEyR;x||BD&n zPtNXtb6LmqPY~<=jk`JbAGw>%40QA$qkjT#27G}xEB`ZiQ}GY*rq1nOf;X}Md+?^O zGg=C{FETl>DoS#}Aqu7IA@LbG+u=T$Zz2jMQXxt)N@8Kr@yRQY@cQkYga8Gk0`l)n zZfzt5g}L7wKYKk9;XvDQeSKs7z=i1P7#ZsJk-e|>;$u??`|s3)1QnEm&f+JcNh@f* zY}E?I3Xe@cO=4g3`ybNxnxC^2({34f_l?z%)nt#4FDa90mLMM&K_H})p6`DyD84qU z@7uzh@UB~RtN%u=)^gi>37@-V(CTD3C)rZ$rj$N=&brZ*iGwvmCqr`c?JXqf@4@R= zBLIfe1K=ig8u^QD_9vJ6-@+_^cH{qlb2q>0y#CJJWdC<={6FmIzt`9Ol@ZQB_qA_` zJL+4R8}i$jTKzGDO6l8}eqA&EKXNz!@^^*thj{s4#ajLocJrT+ z5DcvBe^wBVv0Hx-orbPJwsy3ff#_GA4dsAKp*qx9Ep+inL{Zf~;1YM%Xr&t}{10{m zwniU`kM;|O+sYEr@ZW3FnArqKk($|#M;QW8JaTu*#{D2!s*YJnN<;JKpVQsY>8j2cv6)!vNm`koP(rCox)*zY8_5o#%CZF`in~Ahr?sodceDPDu|WEWt?A?SEPnK zbA^}z!O4|8**Ux99r6(H?~_SCHxgrXgT}4kZevCSGNl}_pp4B*PwAsz1}Xtzs%?-z zdb`7p^sG1^#4j>)DF96#Q#c)Csao#EbWqkos8H8Es8nwhdngj>y4)(qWOp7Qt?Cxv z#hF(3N;Pn9PuM@)l;&Av=)bYPQh0!yA@nQcp4)L|O{IO;K2%gdX zJ9e;VqGkl9D*Etndn%(Jnkv8DL8|&x3IYVRMZI+rKv) zW9QlUa@Nh)eIldP)iZUYwtmvt7Fs=ysjx)BjZaxVkOGeu?8Y|)3{OJ{7j8j{Lo;+m zn_`pA_UP^N=<&T1D#yT95epS7Lh6CX@ zvNSiAuULvpA|p*4*LtFLBSfJ+A*Jg|gZg>C?{yPAJWTo%V{dr3z33^`fF(I)a!8h# z6gPsGgAsA7(PS@Gh$U8COp4oee{_4lR*Au-DMe-=I)m-L@kwd-Ep~Y7{F2m}<+C_e zFR%vQ3TZ8P2dxLpiuVEjJb&3w50Fy>4Kn&1O~6znkMM0oR>USUDmv_yVgk`Vd%Lj1canV=))LDnj)OqVZC91&yj9fH(Q5Ga_lJq?C6NoTzcST!#_`#TYK7`&m{Qv=YpV80dq5k1FWf*7Y7X()`2bMp~7e3+>vsDecn=n3aRKZ-A}t<_k6 zNLyGCT=;wg3sW#Au-RvREG;?j41m3dHUy|dz4z-})g*wfZ+0|4Rx2>vNvhw(`BeoJ zglRAbe&|tISGUb2>J0g0pioXs-qlx&z?G4OqNMB^yIyv4A-)RhR}67SnsPxnQ1AR; zk52IG$6}h`3-$HO{X%(B73NS4F?33^!xNuYnNn$43bHy`Qo5B}*50UR>>i_5u5gmE z76r)x!38h&1XpD`RlVLWDecGhVRq?Ae6>!vyALr<`6Sxhk zM?D!-(+r}a1^AVMk8*nQ$O9!5-DmO%>c_ai=*pSKI0OprmWXWxYN`uNcfj42 z-vaF`sp#zylQAV4`JZj!;$?Oq-hiG;=eCRpVl$^Hu-+sdqxAKl)?Zr6ac{km-~XUJ zlL=k^6_N8#F3?}9u>VUS=RcgE|5}Ot4TJe5$Np#A>wgF2{F4Fn-wU#T4CMb@mHmVG z@V`=J|Hk9|GmG;p8}jcg&Mz+K*K1~mudK*_?|sq#$tn4-6$T^2zl;BP&dOW*)4>63 zyYzm>4BOy|ShoL-$I0`>Ep zFHHpks1pMk)ILa(vL8=8)a-fNoOF{O`}<9T?$*nw6# zdGxFhUlR>)RzN9AS|b(JnY+@998%CH0?`F}bn69WA@WHET%BkQ-CQ7cxG+h)Ko8Xp zdM`cfn6EU2j}5xK?m8J(XrjSD;O-R4Z=EJsQ1Pf>{>+&}K^2d4%gbdxgmJ_sS(qQA z6JI<|eiB6TNrhn~c9#r7)F^cOgO)EAr{wVMyXOmeQ~c1 zgjCK;DhJ#S(WGUB&$GwNWse&NB2Ok04kiyutMRKz8{#)D`pSmM`e@s)MC4Jwn!oDt z@x@L3Cqi)ybgcgbcED5FGGbi?IcsC!A*rHCz^rds=Ug6`LdXI!4GbSYW;Ty6CP!I8 zVKsoKj&nuyfqo_R{BoHQhqw9y{q^MnecIBrKHUiMDeK^i0Cd?J4R|NLQ({WGL zj_mrU@Mop`d8SV_A-Itq0QR#*lf9AWht%P+s|gKnA}tqZHZ_%$wAA5THrA`s%ZWcI z>@YoyH%TXuL^j#}ZR(2F%kuiN;t3%m;|aDIO=rxgF$xOfo-DR2jkklNH_fL2e!4iW z>%%hY++J!uXjInn3hw5nXOHkMa}1i)xx~2)9ypU9aS%c@F%Qy~&#RHF!SwdjO=mBu zbD|5buycNNJ{%|A@B7?%!p_j{PxjVAecrgYc&ei(oqd*4YC!ACQoOt~JU~hc z{+m{Y@?B!&Z&oVCqp#%X`V<*^@L4Bb;UEE2?~QAqjEHOw4FmQXY4;AL z@-;~2p6^g3aMk7pvAq^y{A|M6)e!AevQ|HHeP0qeX2QmW)o8*MsR|Z#nzjVajjUdR zkV!n+Et!%pnF4|)TYyhk2@Ir+W&u-3^z!%6ru0J=-`4X< z>CuV#xiU}kUP)cwwL%Aqun2Eo@lXO}(CKjvusS16=L7>Uzz3 z0;+H4wI#O;Ml5K4*b7=JyQkOxxLFRurF=clD>rgt?Hm zdpr@Xj@ch9qun``$N*d#H!AZa&zcR|l&EM?hGxE50vFe#HVL-Quw_3W+xx4eYup^lFpa>siSlI~UYnzjbckB@`fbf*MHVNTjyw>L zl|=gTdexnI-Wjb8xCls`(}Bi$of&h9ef0@{AU(8CZu)&^k`HR62hmL?iJjvz*;;S7 zX~~KsKnzjCIUenV`0DaW1N5O!P*mxPPQ%5R=156Hd-XmxQDjnw^z%g*r;%ZnhOH25 z=E|T$o(_0Sjp4}`mTA2b&+qV#s}?)%Gxeph=icSv%P$g z6Np$EOM$tDR@R4l1S@3GwQnb-d%+o(kt z;)r&%#N)yVs&}fv*@dgJns1VSveD;3hrYx?g(Vb(a)#Xrx)Z&(`;aVbG8a(3ppqdQ zH+_P7*Q?}vh}qVlu(aD?SGV5~5u61%M{Nch=Q^jp@T^9(7_7S>{$}H-wp8b!0W>th zmqhPibOO@q3Jc~x)+A~$3atuZp!^YEou$Ep{-Xwf*kOj_vw!UH*9fk=gJ%8c2d{x} zO_314iFCVG^F)FzE8tRNh3f-HWX!R)X93f+i(#RczGfXRS>8KY`H(PVO_4>C(CI;I zY9CjM^NqSH-T1fbn_Xl$UllE;OVtpZ(+jq-r%&N$29Dc}P0`B>$xZ&P5(h*_oY$hF zPKCTAqtTQ*NtC5o3_%S=+tq>lsY2$m$K6fL&+rUH24;OHF^yPNpxvRD7pK#AZ|arq z0BLpNEqf|Z1(x3zpb{zBX{kzPjdAiydl|t%`DVzN8bGR5mLe=3CU0(sLY-iWhTc1* zliBGi5F(8-XzN{x5dJpY_Mg8yl}L*=h;8(@Ms-t*kbX}*OX>SJDYuUxaIsJ#O-p{p zYN<;qy7U@Fg@u-`nMh7%cbjiowH`>Sq0;EknaBTj(P?UwJcUg18;dZ9R+K0&^rn2X zLGA40X}1>9w8XCYh_^J?pPaHGqm7gJ;!!A6MO(i|oSYpzKk;2q;OGHKNC){z2i0pH zdt{G9%gOtG>HP!+!G*sFGtvLa2K-CG&%*Fe1YZ9m-i+>#7Gn%wysfVcEOxd(r?>r0 z>-;&r?XQBL|EjhB$KFSO4DNqX5%q-z`!~V$XK|NFYAzy0(74|P$0bU0x8qq>Rx z3$_1Mz{JeThR65?GGk<7z+-0o1H=Di1^)-h|EC!He<%6>6N0}V?+d~I%D34&ZUblF zy;>y)VLr!Cvlv-Kt9M_3h=CkW_wrExkzkE_M{s+>ZV^?~UStD|EB}&9Y^^VZjVjfT zM=Jd-bEi)j%b49DBg(HSpIhE8A?@vfCE^!rUc8-B3m;18Y!LA;dgwN7{^Jno$N z%b2%zy`MftnKlq|m){v&3@Ff{!sLDlY2igJE;m4Hbf-1dwtqy99Masa&&cNa7|&x4 zPr&UlJWf!fI!yQ3ov3qEaUDf@Oa~s+U2Ab9Wzk0IA0!^|OsFKWKdfu)*33-R-d0eT z!*#e+XhZjPZ;tEZ_U*wO7c{mKzd~6>UM(B|;@C=v8{eHDX?~R`vCvmR{nb(TCm-Oy z-Vk4&4gEh6-nB|lx57Mv_w^aw)Eik^X1B`$o;_&m*me%{^+&F$3(*FHjNEy57=z2Bv=~o&rjF| zMIeh_h#CYwfbU=>K(fBd+v0MtDnOuS0J46}dep8MTtFFm*sdr!06=Vbe1vMSVtn6F zmjPIQO6xH$12+A%*5h3M=KNE8o4p3}{F?_q;xg!iKhQSb6N+n>#$;hga8K^)K@GGr z>jm>9bF(E7rA#$hHB}$<2+Mx7Q#RMlkuq-8%i-wr3$03b(~Az!e9cpWX=GE=!Absf z$2QlU72*p(w?u~3`tnoreg3?>#UgX#PJCpx%}f6wuQh$sP!sm@!}LY=1=u-P*V&*p z?uAZ!yP-?*UaM}RNoL_ZWa7MPjp4YK`Ko%_x@zhh<#|cQi)!f*JEW{J5Kfo~2ccCn zRoNI^X-QleTpiMal7(3Ku~tLWA~9q1nS_+`yqZ?@sRk2DbaaeiZ2>z!+a_&uqOOBV z6Jf(T;S7<(S8v^HxV}Cde5BiYC=wx#sZNd`T;cQ@?FW;OTKzxsI|s9ZXWP+UBhxUm zLQTFvGcy(HbaTsnf{ff8S&g+R-;s}kgR2o?x7QwNGc$8GUtto?m^y4a6g1fns3P&2 z;#95UG~vPw;;P(bzgo*i)DIY^7%QpgA_XQ3Da#4ji75!D#;R`yQ&eEdsrwwXmyE%H ziljX0Gr5JmW zy&H+_ZG{9;n8)WlXEyHx&Az9%)=n6y$7jj8MXMGP%Gw5zZk}u%fI^le89rBH3Ephs zFzy!h1UV`K<`F(%KfWv+U2MKF1f#wOV7%1tGc@L86pF zC@>Raz9#DpRvaRPXBgBJALPg0AS)P0#aU_TxpaCR^Rc(d%c|EKiG8zIZfXaV?)lLw ztsE2(y;Te%xcuyWODuCaNIRex6D#Kn{?1dK6xZgdRzPf43YYX$pCQVU>^jfp!@zZ6La`}#i&sn(}WQNZ3XwP-4(5`0@?^ z$>i{sLz4TBl}4P9AIeW9A^;Fq4hB9YmVRxhrCHfPZsn!`O?W0!)D|RNu)LEIG;8{$ z)fw>W6&IMT(1zbx4!U?gt5_ypR(!qQD0YyY{n+1!gz>94S$LylBMyrg;ysB3H2{&s zWg*oKa6UFVJ#ZCWV$SVbPYALxupn1bas-#A-nl%&o@jC0xl9X6XUF1j?LFn)mCD$< zJ<%y#@2}n7f*1I&Z*osto;1?ir$?6Ej9V}0D+VDfI>m>E`otGuWFXiha3MF)SSr&~ zk{S+g8M{*kOonn3j8`~pU?*IQ#6N|Goetmkfv7CZQ|DVU2a1Yv1n^OPl3jsmBW}3k zm2L=(7>js)vxUtzhZ&4C8Hb?)&_T`)gHzFEwZ9k+7oMQ{d-#HQ(3>F zoBP8aGoE~yQ%4YUCFU9@YJFLJhDk|{5aA3!It}7NGs6NDgdz-M1QB`nmZ*SOGfUQ4#yKNL(=IE`TktCg5cDE5q9FL#h53rFjqH2rQh2s(6QRn z!otgun4Z#mh;puEGCQG%*qzmZNH6PAgJRph9@l1;kL|oPvE5;n`>{4_TfsR*Rc4H+ zXhNYW6shD*WxN93@MB^AL(r*pu*ELXu0tu)4sM}KNrVR{Wyg;vVVFn(96V5>KnO_* znLjQLa;;!Rk|kZc`th*UjZ4*o3w3(Ip}ro~wyHhdDxuJv27-uRtON`^j10CE7-5%K zfnNZlx&s-@mK-pWNfhHGek$Yc^Rs)aIqDr`C=S?gG!`gV+8yeLYj$WD3%DbQd8W+- z^pOYd8}-_&r%4e#uFQ5@1XN?ygw`O|ye)c>EY)fkyhjtXBeoqDznZXyi7u&i)y}zOhTAo4s2eWO>fafx z5lcJYMZ+x=W1%o85XQgJ9*Fa!_j_n=XgnNjf&)8iKS?tnVaj#~vrq|=I=1Vmc6goW z(ZpC{1dqlMEQRCTB(k73*_aC` z2Hg!a6fCtSkL1%)S!s=RO|mi&xyBV-MB;cQWh2HlSHRBLV0yE(4~|<6L=;&e^VoE*9Nrj-d+{4` zy3-*74FF;D7=9-e5#Pc$ks1*c!&iVhm9o(s#~4{(#Y%*VGw z`wX_8+1S9frmnEU_L=>k1g%2BU8Y2COO2je#^RoMotZqZ(N@g~>e*e_EW)4J5IQj` zl(I$kwH;!t21sKZ^A;;u99?9tS7x?kGkZM@I``)?5$1bU@4K>`|{CLgQJ6Oet~%dm$c3G-8N~ zF$a{5AwXw7A5mMM6|cy`7>T^dyzT=)EIApR@tI&(JuQAisv;cdjXi&uyC~Lv$^km* ziq7R+o^ayeiX127!jL9LLd1!zm0TjA9%{3?3MV74`-%5me1bO7E8`9>JKb5lf_0N| z_6YwtB{BpIW2Exe4a=?H1!vSGUkhi#bHxv@4#tqjhesWL-P|60N|t}_7ua=pLo;aO!UhhFe@Z8cIpn;g6*g9ets3N{AVO@TZxslh24{3 zo#IXs@Znf&Dg^^S#me-eg~~u88G7)e=fhDfzqR$MF-k9jTxn&gk?9oL0J>{O6n0G| za9ZTu=dOAg4LsNr{`_qryaTwOODdc8F&otvfgM<>e**dAC=L!@<^H={sZFDwA(J)i zo%Tp>XD7OXK5;56B6xECZKQ-}7toMuOkrP!7se}%gtR!Iq!fJxohZK*)ucTYC-rQO zqt;K(;HdJOF|$saERYZWO#7Fp_U2)e)j~0V^f@rxN-_Ee(%)03vlOv7Q(SNv{Ya3p ztPO@-*aGnYSs26h%zz|*6;bCHuJm3H`BqCKRxzWgpJQFnS1N0*YmNxg0?G^E`5M{P zDwfPe669LcE-DpEg}rGp<*|+66y5I^6A9$hs@F~!p#vr$B(#+AuF(NK(CV~52*cGN zV~m#?IG+9bPjb6W+D%OI*SY*vom1AKD^tY8TlmqyEBKVbWrTzFEu7eBZLXBb(etSA zWF?vAMAiAx&^hEk_z@@468MMgp~_$gh9$~lx4=5uRnra(tvix#NRwP$^po{ZDuKgt zI~&{EdDmX;gAyPSBIErhz|^^P0Yqh^q_HwN^L!OKcYuWH&8`BXA)~ZRH(H(9f#;IP z;p+jxLtDv7W{n#`5~LdowHXMu-_Cu6;O~WRf?;DK(_v9@^-maUs>c>(KZ>uDp9W-5srey3DS@qX26Q9g$%}%1bg8g z93r<$kul2@vGD^B=8^sQx?n_B*cH|&1qfAn`e6FLY+IV4G0UdcX#&-1Sc(6O$JmZ% zFHG;Qf>h*Zv9GZCHywjv;M$$D${<_6#GV`NFd?cKQP?LuKdSM9ikr6+ z9`qm2G`B{)P1Yr1l72iN8NR(mgHZ^w6!$ZD+mTSw#>?fM zs6Gn60Up@twfZ`eU`)_iC3tZeyA-9)a%GrM5ZFIl82&y}11FX&B8FEm+$@|3i{(U_ zP(E1E)`~oGtH?$dawkJ<&)s@NSs`16vYBH^pAh~mYS%E>V>^2?H-Qk~FVRS`6`8=I zq#(jU$O|TbLkQN&!ID@Fh+zrECY@T(I`6mi=xkatHyCzf3KX)# z|0yX<8Bj7-`(@L~0fP?B9QK$N3jogdn-!o(9`fG3e(G?E<*@2XHm28H;GAE4hS?ah zTBIkx%s-j3kBLZH=Yl*f{_Dj{^&JE=bKEN#P*8y!fs<;xnqbIL@RgUGdrQZDV2ef>lf>fSVP1JAjtQ zS#rW@Kt~YG^aCNOz{IfUG=&TS}UWX^oUM!c` zz#N3OA1NUc2t*MATO`(+`{u}d$SQFq8qh_${J;3LwUN>%>p-b0&Qp_k=nU78tNeV(G39XKL z7x)mKSkh9Cm(niurmMuLD>LUqV%AP{f*!%jvkWTe8OvGDtCWkfD$hDU!Bc|ok93S) z7w8|@{3&sN| zZ7oDYo1ewS(<2%yx7}q7k&pu^hQAh?^bO@f(b>L8tn(pW5|Olg>yE$Qpfb=mvgg^! z2!G)n|K>=GEMnRq0%$ODm4?uMULNrlgQF&GgL$=XF9#$X;`oYC$I)m$dIwh1Z(tFK z8=mu5aU#HrBh?F^6P&COSC-L?gm4Mf>^L(p2l_BP>D$}$TYjG;+SR;P>}j^sU<=Mz zj<#rujULp9ZjSiy9RUY80k3pEnwm4(Fg7h_hh94SSzlXHDy3=N1ZR9^~tWbTn&n& zeAjD0|Bk&3+$#~%B0eoW!rSAfL|kM$P4F&asUP*L)~!@NwzSNEMN((Qnq>jn92b`& zQYDotkM3J%9iQc{ork;Y({20}N>)}cn#Yt$$#yWzT$PK|FJ=X8Qb!ph<5Nz=yU4gQ z;GUWZBI2MR=0+iE$YK+ryH`v;$E0}oik7GO>r=w#9w@S%Lxn4?4-KGOQZS?|k2r^cO4# zShIMj_H7MZ4zH3CmZLFhSQ38C%_)+yYosy&=R+_r@)+7()=~PNLolp#x|j!B<@d|{ zx|sbem5vz;^sJ^+kxv;(Iw6j5v8>{&%)HYh^rzL-kJacduZU-z$>g`BE^NLcgs0-e zIdLn}pYf~c8byXy{@Lbp=p<&OvdyeB82(ke%R%37@&nAQOvpZh_LAyju6^%f zZ>p_3t%8&1QpAoE>asI3Sf5iyPi)9V!^a%vSuN6Wtzl9Q=Af4gM}q$BRtLysCx(kY zoEq$wirHq9VqaIVv&R_=1IJJFH@&V4^oH+uAI~6FW?2{Vxmm11Me3ZDwmrBgi}Lws zd2vSMz$}WgnA;!-rf>92hzePQ7)`N#03SPh-N?7?%W@8qO7KBHiN@;+1fze+ufG#x z8(`b^Pm`_P*U9io_cY?i75JA(en57*S-S&@Sn(H{q7V7(ZSHb-?_65euZkZCdoKQn zkiKQ5Q@g%*_phGe6)=@@2nwn!JxtIFx}_KiETQJYn*%n<57P2)jv^FKA;C_T(Ke#3 ztRd?++^r7XodV>B7_A?<8R+meI7!FETozTFEEG(+^+BK>SKIhMB+#2fTa(}C*hP- zVvO;|JE+p@M*Bym?4If$rS#&dox@iJKvTaQU|O$jm+e_x@10LP>H5WDzBGO@*4W8r zt=I3*JTKdeg$|!U=H~SVi4t72R4Ea+fWV6^O;LUa7}?*?pG&BDfK;r=vH?7dsy;!^ z$i3uc-9B=6Fxq4L>~-=VFlAQ;1S}7Mungf# zr2|fRVB608DWT*9{EItKiWqhZCO1oK>ryw|oRvRgBxuNSSD)wE4&Nt{|Dhps95pn2 z+425VC^oHnib`r;wp>r78r?y9=zI7SW$$z1pf%p`!P%wWr*%yu5IHKTbl(o+!&ZQ* zW(ejII!!?8N^s4IpmG5^TX8_#FBE}Xr#UA4PV`f_^#DHcxuk(e%<9f2mnDzJ!bGOH zLuV0(sf^ZWky#6u#`f8&rDl$%IRP^>K}pHdvu!3=a4#}wCZb=#JQHc7g3*hkf`Ek~ z`b=U+8K2poub)@1t2r&RL^m)^cQTYGfw|JR@<_naGi8DHP=_q#cGL{wJM+3U9WHnF ztRo(yMQcePBh9KzlYaF_gw}NK77NBJB?Q3G`2i9NwRvY8iy`3j1mnUtV2EiBkqmNW zrdhnT*BLr$e8di|p+COm8*9appoZO<1{aopm%0+qp6H~M+sA`K;~>iuNntI$WO%ba zEG;t>c8^kZ0*cIt@O!wD`gu(8^IjOnyre1=7P5kTWxzrfA(F)^zou=(Jb^&9ZHyD9 z2&qZKiq2yq)F8MY$s@{@b8XaE)|su*#(b7Y*UAhT`n1Rf4WT^-T)N+gG%B^I)MD5C zt6}4epEca1fLdW&^bpl%f%9A()fWb~Bfr0{My_{Y-m%~}B$pEvBx5c=_+T=pTbOlv zNJ^v@*NdJ3V`h?XR*aHAG1QQ5_j~sGX2rGTBqunOcagp*+rui&+gjjciJ(Cz-!;RW zh_rqmv&;AGH{UZ`1y5;>J)h6pXxKilQpWl%p^s4$2W(`5x$30>jly274Z=5~It_i+ z)tj9*$zvz_Ohle1=hvBGKItmj1R)cL?rf=Z7QXCJoJuB>uZVO)o#^8dac#Ho4hr!D zv>g{`%*Xzei@j*zfy6~dQT?-9F!Ukd{$No z7m{{dAH-f#IYAwopO%#=VvsQ+Ppi#cu8tL#Lg-SLxyP2I$Ah``fz^OkU?dF_GJpVk zhm$}zrxMnKvyrEW4xr(#bEjR)sz&HMf|AejecB`9z!~jwnV{mw>7WC3%XZXrYO`19 zISiP3$uL;lmp5%z*l=f~5Dl`uda0Lk4Ws4^3`Y;v9>{`uH@r!kmyq2X^-9?k7Wk~! z968+@vt8n2%cA-v;Ol-wAv&~xZ2Gv=M|<3L{?v8JXiD&oWp1dlI1mx{cd!soFITb% z1cjBFW{v!C#D7t)R2q6Ul;9U6pq6zSeWs^>!8&M%-2G z3tgP^gMyl6&`_X!bDhk6XD*-b64QqTm6yfpcDS4VoVsXz^-E3yr}vw!J(02G)c3Qk zUFPuIl0VXW$fe_-=mqe+=3zxk8znETVgN^6!%b~$pE>(cCqI8wzF@JF3&dDId3dU{ z6G{6#p(V1=*O={4|DIGw4)QVljk^ms=IDvXj~lg;7N$FOGai?!q>2JPq_g&1N1uS= zYG`Hy8PCH&*Z4Pcz6Gpw!(&j#lp5(3q}B)*~(J#9wkAiF0FZp;d1x86w>&&IxiLlLgEQZ`TXi;%%eNP zzOxXE)rl_6JqCh=bM!VSGj=X7^^^Nl4hU^kd+eZj4f(1*1@qH+y8~14-Wr{-{pAid zv}qg}*sW)s%YJHo2Jf+IAgdwwh#?J;lCoX(02#k?%s0mc82?72z&_?vXPXcYTCi#+ z4N~kJb*)jFH8n?;xC^xNp^Wt3<`Zyzn-fo)M-P{>SL21ST0B(uQJ!^P2Q|!AD+9KS<9y8q}Nlo~^ah*q@2^y{WmLGOGBC58SC07HE0rzXxzrxFS*ssGD&( zr80lok%EmB_VC37AJ+ryU1Tlz5wI=M$tG|uhE*vycHJ^=b{IFp_q+TVGM>+LjqIKw zgT@{ak|YhOUQo&~Qcu*VN@z7vNFqzcJr%X+bh8}!U!`=fxE4p#t*;Cj(lAR^Bb84#ZRH>eQnF5NXg>4gTbvE78RGJ1f z25o&ve3p&IMDmlClr{LkB`8)o9$kG}-k}gwMTNT>`K1Al0}Fc9N~decc3{i^HORQC{y4#OuwtU+0ITYo zds=!Sl`J`w)ZEXe&5XrJdZR@t^)Z+``^i43ix`vS<*IZxZGnonvWw=X!G=*IFHvYd z!X3}b^U+zT?woYV@aw`oEoBy^p-NfL7o@RZKm8g9jLE`Jx2X6Q?ALCkWbp{BuPUfW zIpzCrkwOJYFHWHplw-u~0HFI|er&)XRB&QOy;K5*T!zDpNqbq99`2Q@ud|KSol}m} z4W^;ZwV-=yb%B9M_`AOLw;<>=p(7w{xfn{QU0L{`^T9kyKKGlikB{$LSK0pLVa|NM zj+bWCpDx?p$St3nV{nh@{mT0zU1;<8BSXZ1eY(h~-QxOTdXWnV5D05gxsK3*t5$HP z=#bb+E4!-5k7L=4NS4^C42xKY_163LDhCUW5~o9+`T3G8h1~vHX!6^67~TWrUOYpT zF_LwAipDjj-H*1I&s6Ckqo;=E)Tcjo{*H5Z1G59ovf&HkNtgKDY188Bg3$#gWVFc` zXBKo{PZL4^c0XA4akHj7cp^@Hq1xPuC<}24-15N5@pcjU%r0!+Srb3LlUoFKRw4rosMat&c${_IF`(`em^>zg+aI$QWeu^2=Ls^y&=c<{C zc-Rf-nfryMl@p3p?;S=9JoJEI&cR@Odc|)cJlrSWz*;aebx51}@HH>`l)Df0Y*VQ@ zk)nmCy-nu&XCG@gV{!I7VRqVlPz~+(2>o8JV>Md6%w{N6oRum5s}q~v(4v(=;&{IO zWe8?d%Y5r0yLY-%HXIC+4ZZL#{!J_;RJB+N$rb_zCv_Xzc6R>?_MfD^ELGI1v>}Z@ zDN256uAJ=c=?{^^6PwCq|3YEMMhkD$*JCm>dT)uH{x;M@Z4yYDuqTvciqf=R02=9e z`GYmPi*L{yEuaSxCZ39ot)v~Wj!E@+Ta76g@l?K2C|CA z!rL|a)};}PbB5-4fqduo15Segr8Hoh*YvKuQR+Pim(AMPGIW!=Q0G&W zbO5sCHaJRUPXgW!XlFpw9+LF2bi%jR_P2=-Uy!q})gZN!jb{+iB_=M+J}+AN8pX4w z`|T5w`^v(8*KL(PuB8v)_KxwsH)F9iB}7d3-5_h>qjCfCg#0vZy1cKR5DCJ+hfM`RtmF&ow8;;T5j=|>=E zE|R>F(6+$_L20DN&$IuJwzmLpW6RRD&3242GsMiy%*@Qp%*>9NnHl1knVBJGW@hHZ z_$#NU`<|ZL{r61I-2J#pQf;}ks!A%=TKe|)%9^oy%s%d%32!*g1M>hEK@uX1RMgm2 zUQ5bA_+<|Z%PdS7-0-sJt7sV!3m|2tsZGnNjR!94-cGB;=HgKbPP`pfF)}wz&&19S z|AH<)hTex#S8&^YA;$O3LAH@fPEY5<@p&?*&3#MGc)EsQ+5j>}5!gq4JSUu?Tu9=i z88i5S*SBk0$*rSp?wA#*dhP9^(vFoE;nm?Drhg)SdB(8I8_1`VEBOp_8iJGrj2*Kl zaokti&76GpbGesWp$YQUOR2SogL~0skKW!%OJ@xmRVg!r*^?~6NB0GqBXRS6ib{;` zfQj=3-61~)8&0z?JLiWlRj2p}PwN~l7UNRfa%#O>SjhaYzjV9pg#rs8-30va!VUaz=sP`NSKASLJl((`qIHUa=lI>}A7CBlbkL zppjZ*l{?4eu1LZ6VbscF5O?6&k@iaSf4;xfP9gvfER zj^w>$OlW54M>dcHPr<%1yrd>l3S@Q3X<03vm1&yKpP|a2sFfFo$b%!V_>l1=`xH-q zw^1?hY?quJ5UHZ9U|6wmtc14XbX6ILzwpO9S$j%Z9+#7RTDn*yDVnc(?P$tTG6s(n z8BGo9fh@~d?DExKZO*R5gUQ*|Y*;vf=Q_W;pWp0k(%}^5dyR7MAZWdFhWW5-W||Bt z)H{lmjbB?-X2QM9{qZA5B9OqGGeJei5hYEZh+&RNU?;}I=c9(*<)P<@;f^u*8_<-w zqtMauIfn+)dcc+ITbxYLeXcN+lG$vEMFyIkA*<0yaN~kVg}#PC?Xs;A)wc}IB$N-C ziHf4s!q=%yyTN3G3F<+q7m_d+h}Go9H#tF{R`P ziFO848MeXzw#mE;}!u1 znCTU$gEIXinc|J4_`gd?paBdz11N(59{h}KtORTtuL}Mni2wCrfDHe~`Safz2l!j~%k-OI%*62r*_a97g~-AL z@R9=TZx(>xC^NthlLc@9m^nBI*nSg|0e+aj3CU~#(<(LqwSpC(*k%Lt|6a#$Au$`k zOOplQo5==n*JNh?4O{?tR{`kC%Jc_R&Unnbu8>E4OpxMl&+C-@VeO$IpzIs)AcDBG-dWqgD&F5V2Spcmc&|JExRq zC?O4qr~sJK5IQP+ieE+>7}*fQo7C2yYIm^^KESo-vpE8606afL#6HSSIVM|RwQTtH zLKJqdnwjv=Q&7aNPkW-*GO&nUAsk}YEI&8`t3O%oSP3RvvwV^GiFIeu{H}Z`3V2(Igc{W74i=A`@ijSM;_&9U1TJmuAI`y07o}WZk{*TUQe;V!k z&)-5!>A$tZX)6{rf4GJ6^H7<$ZJ=DZu5%U#ouJlj=uLKjUY6zrJG^P4a?(&*k~L zzj&j@rG6w|48sTJQ*$MM-t#_b)}9ByiF)-}2lA*LkGtWcwki~U@X?va`|0AkQs_Ea zuB!htPUM%3sVH>WhuCa<_6zujXve z-0>17P@F5YRc{hPV1%L{z> zn-SzGo3-KQsEXUBZ58_O<7?^oxSYj@E+Ryt}=y!B6q zT~Cibb#&+NK1bEr@9saDB~xZeu*{}X%xRU3d-e&Yq~#Q-$sWDmdyMq78?u!&HEegJUKjNPno_bPw@T>XHdkZZK#Bv=t2^D9#3)H^&S_I^~122xthX0${ySX+F`6iCsO zs-FLJMp?0{xlP>Gy~)wUfz-W(&%3B0q-J8`4t<3kpdr45B7bB_*cwKbe8Hu6a#?~`bea7H4Sd=fNa zEULy5df2?(cNdZF(*QPfeLt7RwwT8D_&kybyq!;0^Ma4J?4`H%X9Y~0N$epBvtRl5 zKxn4ViKl?_dzki_#{;itt})hazlO$NcDq4X-CXw`D-=p1_rHffp!2G?fSzJMS{Ayv z0H;A%FZqo3!0IS9dPmnmZL-%Vv~9G&MR80t9~Bm4G##*FSAqL-LQYjoVl36T%7IBC zY4;^_8>Beg>U)6cimN%HBbmu7ir>M?#)z4Vs{&E9De6jpT(0C4f2w3pV}Ia#TEXcL zx+2***|Bhd$~r7LXOMyJUNCtck~>7hW@EEa^`2G5x2PQnmbp|rVm5Bf?mML}bP zc6(}g265Bct{2uFL){`;FHlNpovyMas~w9qKEdk1=ntx>tfUUjk(&Oh5D?e88^^)R z1n&Hal&8HR%w@~_Y1_2&?aOohQrbP%4q66BCPM^IWu&G9`;GEf4rBu~4_-ObbdZq) zv2T>g2Nv}Gp0CoA1_IH+M~bFRepGx6H1zHoNEnt81_F+O26NJ~U|SP?hPK+owby8~ zzMf8I+}=>dE;GY20~VzbLfVTsE<^UPdF9t-W}H;vF7x5X^fv{gTHs2`{zZo>vY2yT z02G+IHP+~8F%Du^Efe<(`u$ke!HaMqFl2xwwdl!|-8Z_lj?sB{+%U@Ocv0cg28i-? zzr6#TnKw(W^@`!OesFg4BuNMZm@$0=|MqF2lw|rDY?i^i9j{4)MrD z=Xsk^;_=yZ!cSm|1d&Du)NxFXvY1Qc^0*E;dfXplP^A&}o)4bBxGzwj&{#IenviLZ zQ~h~Qvl3c(Apo+30!77v$?#Gwmmoq2T*)c+DDYA&BN>krq1?!M+ zz4K6VatEb^;zv8{`l2`keRj4B^54RYZ3Ys`AFX=4ARimsw1%@d0-nN1A@6jhplX`q z^m`k$`xrYi_^gIyq2j7Un<^FGP?!#KBz8jb^nuY@kTe`too7sExIx_4VhM1$;`)Kjki{xG+{tXI%n8T?(t!j62nJVUzq7%O~Rc2zofQkjb}4I}Ia+?l(3S zGi&p9ku+1!#6J!q$Vk@~q4a=?4yEpJrvA{o8$JIf3O10v>Vlz>+2h_mLwY$3^bym- z=PF3Q>=gDA1ay9d{3JH;mPqdStZN+fw1&*sECcnfJRF@9AOj+c;kv*N38@BxyTpSj zty{!duG^Z{rWb-*YX3k|Y7UmjZ{o3MY2fo6B8N&|zABCJMO1P0Ju!T{C#(gc;L%d5 z-O8!;RJf|Gs!X_w(mXBcdq!ZEUtoMToY-#MWkk!VRo+70n9vqZy<1H2+8Lzp@|SY+ z6%=R%>Fd)cH#0gj3ELdw$9NA5B7cVgqWRuL+bPJAlGn|cC8PH5Tj%q3u1l5!ukcZo zGL@Bq>K0a@z>#^~vO3-Kd>`JvqQy~`^Bg|7i^VP~U}fqnar@=L>zX?rJ0LGAo~@_0 zy4xyZN@3eepXN!Yr1i#gNX=;ASzFGelCTCiO`ndK>9={N5bPnr^Mc9Ec+U_%x+!81 zM{BWwCUWlt0(`<{+=v z!}BxgL*?6&WD-nrwZoNJ3NKTP^MFmn1=0L1Q$$>syvrL!Gqnwq4?(-u%SH7|?ThQ_ zl#K|wFV}{|UwTt@YH+BkkeG3%?HlBu7R64h3xc*iC$XD{`vtxw-UVS8E!8@4We0Fs zy!B1Sw^;5Dby!_@?Pf>hr4BsYw-1*y65`B)L$QQ6*H4 z<{W@}?1+ot+;y+}mJ+QS-IHy5ZadTh^Xk94QooVuk$Zx<=9x;gaH&E0i}x*drSn*^ z9rH4XkJL_K^ys8T2o`$$Ydz!W)Hku_`ftalI6GFl6IxbFLf8G7hAq5FhWea}+C&P_ z5uu)PYhQfQJ?2i=xLjca*T^56*5U2jb;+ zgO#Z9eI-=dntk)iohX4jcyS{a5N|sA7dCv@P^UF^u({?{P`kDCBgyG3{%gqa)xaFp zA9TkBdCItQ2ihV8svKfcD(2+gG8)MFUn)ynmOk%R^jDSiUE1=rP%FIf@$^xj+F#@V`fXW{WJzxUdva?V@ES%y~4{JMAR~e=FY%M7ROLr zX|`WFRpXcI;Z8K=x;v%Mdd`udiXY!vWLgSM0n2H&Wy&Y^Ez z$vOv$vhqPFDkPfh0;ApsUX`pRkB~NnPKz#aq+Sb6M5j`x*Jk!D@4+x#~kF;uS1b4=2AZF7Q{xgRdyNBonHE1LNtRH zG#uK@6o`n)qWZpljcPUu>iI4#SyimC%qm!b`s_c$VnnSIq&53%_35R)yP(473t#YC z@#He+be6e90~GUkSW3WQs&IliGWi4ujjC`xKO3kH=Wdh};c1VCJ=@Q;=qg`$0dP!} zF~!r?g6$klI`UF-b@}U@Hu?-;GA(a&(StYT*WjP;5OvLq(cIdh##!#)Z(b}}N^UfE z^0heL$#Zn^3g`f3v!oXE;D7Xi|C3$DKR@1#EbRZKvY8g3Y=)VFoan4LWm8kOfXFk8 zp_)fEO==Tl=s^+30+WKGky>;nUtyKHJZ3oDh$yDb;|Gk%KPJ&r*~(&4-XHI zp5IRP^pBDBQ6@THHg4YAT`EZUu0@yb)uFYZU|+-Or*CACUU5DbcK0uTUQ^8c~=S_P6&P*t$bk>?`Ft1UwC+qd%`IWuf=~_A1{lWGcsaHbRp(QPDZ`I zdK(}A+Ob3EblmO{xQYU;hPwcR%a)xK6-2HV8YT_Z!{X%T~=UGnHE1@e=q#zb{?d&_W^V*8f%wo*Id06`coeN@a*p5=Hh{8 z=j_R6f^FMtR%kQYW9(_ZD!a$0YspRK{9WNHXHzcTui(r1=afsYwyP~K*$a}#1W@#h z3thjnNZGtQ5h{Q9j!n*a&a3W#P3;U$llae6_;7yLLFaN#MyBqllmXY4kDeZdSH3>%)L?ak>ic~)z#C0qVq&Ayw?eoQ7lKn2wPO(Tc(77K51$>nd;U{C+X$ zU}#YxtVWRu>Q)l3Tt8O5<0rNuBI7g?yFTHVuO9=-VwIh!p9Z=WP6UD)fU+sjQHVk# zB^seYqcN7!bA#Q$pk^{g&@_-#f9C;7YvlKgaxM^>atSXiaB}>x`jk-Ut~1C=UX7r#2qUF8b+qw{+P#gWJ7kf zA}L%(A)3wb1FX6`udtr{eMM>`;rbz{++eF^*TBXjsUp=Z zQ=P9BEOgXhthn8K2(>&^vOWzlNJa=o99QsN@r5vWmW&`qeBFw*uu?Q$NZ9CzomN}y}21SC>Tya`vJ^!TPFJ=1VN#gLy zIrEoR)v*t;A1G9T68mUrA$cU@1Xcu`QWmi9E%Wm@sYh+ab@gE*eXz){pHij|$CSPj zrtFqY=kY7>--b}7{iK<%FwYPvt1IRxQ2-k>oFPw6Mv|8irl5#9**UlArheuk&Im8l z9hXVRq%oL<(7(@OP&;W_cXa0PNY;Z~zj!SU)U*b9a$2C6@ETA_iE=D9P2XM(OD*~9cQ zkV+!j+aKAtf7N*fd)~8nS*7Qw&vH;2x5kyv)Xvrlf&)@34p~>W%5zq$)EF;;vD{SF za~|uV*y?;s9kN5(t_Q2jp&CgIq*>;Saf#u3E$$BHXsz_jcn6jgK>yvpL+UNL)h#b+52t@{! zskph~YA7R@wlqgfY-#IB<~g;&O#Y59t+yfzz>{WWM$Vtgbr`L`nWpeN{i5o#esdgL zSTw15RY&xtSf1rR`qX=>&7miyp|M>Q_Yi*yX%?7mRy)b3`SM!1hh0i)LHISJLc9mx?+hI!fIa-S1B?VoG7x>9O!9Mtz!e(`IC+>bDOH3Z9y9^E zSRT-wcibSm24fg-y-Oq9D}un$1ZxkP1y@GiI>Zf-Rf}z*g4-EZ?dmDr)^}R%Dt{}L zfl`)8mscrg8Pws?esxBnVq-!QxdSC?GKk43iMWsSBzWPx^!6}4u~azQ4DN6lr*&or zwCvBFGN5$Lves7*_(GVA{R9-dM%JGx$3Ey?Ye#j?+ZG3DlcdGRFuLXK8wPnX?~+F3 z9Tu?h>;V3Yls;`06pr$&#)Oep z7^%v^uiy|lI9kdBjKKOI|>q0UO z1_pm1UvS{(V7LH&lKX;vb0oi**eTa@;;xHjnGDi^61Q;$${1B#=!z(DX%n%E?uC8dP+2vpaFD{j@i)@vpKH62#jib;^-4ulxj6% z!i-zFg`TRPe76xbQGBo#Yx#e)#!+r-qYaX#%NXI%p*!`zA$-K%`DPd&tGo8WJRyx!BjqTx23D*?^PXr4 zw*F>$+;EPizUpMDKy=N2+`aL0^_Mz$W^&_LwIOlhF`Dpu0SgD0aQ5I9A#g%mfRKB*|gkta1<$0(GgO%&6_ zc!tT{_QBdY#q_mE>Od#w%8gE)uo*Rn4nvh1E5y^9w#-W(D!?Z>N6DbgOIVtl)2B=g zmH)gQq43`Sv2n+<*LSlppa;0_3=;XW@{g`N|72J8j}uLHfG^vBH_-&hEPl&S*a3P1 zb|wG>>~~%XxT-Y)q(lE14f3B;J=TAfXtJ>XTkKT;p!C0xXabUI31KAnFRpX{3@%d> zV1aUFn8Q|&hvTH#084Y~H;q=!@exqUOaCT33LrbGqWpk+9h{BU*kZBce42QZ#}Mh< zmzhx#%?n5vV}J{KacG^~6k{j~1`3XDk{-7%WsBqTN}sHO8k)kY)fO`S=2 zZUiKOY=)>21(>N-f>6@otqL;W{cVIOBs*%(IX+vtcKn#@rM}&_`3A+9Z-k14LeaWE zu`enco3*iHG3aKKAtw7&f6mcQlP+Ukj)CFJghL`r%fw}DZ-S*Sl>eZ_$Vk7n1bJ|8 z_L)%~^W}Ly;cm~)+Pi?IRG>(C{{g;IsJeNx@C!{J=p-I;?jL>&PN{L8WN}$hUxh7GFlRX1pSlO}c`qZ8Jw)ynpO13r0 zYZ2>=qgeaR4-E@q=F5tI@mm}aVOgnpnfa;ZDMmFDX*FYAO+6b!Q%$|*RrBUp%qFpG1vHF!%eOt)^Kz0O&rI3Wlz;CPD1PIoE-0NVcf;W#;9UcRaKT2 z*qB+fEe~^TIkqTU>}xM(4`gTH9Ms(8>~i-Xr?2JQL`AP;rDb_uf6eRxsH+~LaU!CH z2Cxm*SJuWVa?0YLu!IQG$vf216lC5+B(qo2N*+z=$R0dND5;(oYSNu7q|Ekmvc|n^ zX>06hZ?^SBQXT~&XX>)RP=KGoEJOC`^-o+l9D*HpUB|+y5|E!lvRVu|9NPB>E+F1S zzH%+;4HjX&#!x*`OP^c_8o>L4<5eqYub;VReVmSOtD^wp97msZ=ywak>`YZbOWI0h>Bi?nxW*nOzy> zQ1ut*wD9FcgVE~3V0P^DoGfSLM7NPtL5JZ+>am@RmnJ4r1R8de%@M=THK${%&X>T+ z8fsW;O4C=#kjrA9!V*TA8`oy$Th7Vvvi29I3Epemscd_x87fknLiOn-EpnmNSWKIX+NGNNJbP|FluZwso~O*kmYf|^!%R{c4_X2? zv}yMk*(GUmp?s_K^+lL`p;8;fH6r?vJ!linB7;IY-Fik!*&Z5jGAk_One#YV8D(tG zJjhv9a20v5H#TAS@$r$cW|!BBB}ZsfXEN^;=g_fM^4GoHe$1qSR1kveRbzL=XQeT5 z4gE5Rz3d5t?#gK=RZ7T}xB;fW@)1SBd1^3~b}Mt^T9$2EHZz1`E@@WDlum#VKmY!l z(Lz_TTsoi3)u;Wmg(^&KjbOs{u!p?bPxu3rso~Y5lB#$EK`k}1(H^2!HgMYrqDAvG z__Z#+RZp8WX~V2YX|CBLhkT+?UWMc}Q9nojU{b=&Tz10s$F@>phB z_lV@SQI*A|xcj!O%PBz)2d;ww@GX-O``_=A6lC;!bWGY~I!5hjJ>!AlJ#uHlQhGscc?08?E7M@~m>1GF)FF8`yIlu(s7 zqGPPwYfJ%WwLhMRZad>`Jlqem*<`gg*#y#NJ~e>2EUPWq8#p19m0O9zm|+2Yu?;?>RlUojKL!{AL|P^ z;*nAJeiw{4`2e-gBj^W52QhBh7WDsP%Wch+JPuWfQp#nW_-z$Fl=qCIc7__!8D+Is zR=(UmSeC0yRlV5zC4UN6DF|(Md2LQW!u)-B{I~fC z;v(=)>;1}C>fzAY^iBH?pc8l3iI21^oZ7qCD;U&U4&nQ6h=L%;Lf@DbITy*>pNTa> z&DwU5GzsTXAto5*b$9j4{LZ#{h5v5HJu3C@?S(DDdx1{@s8fLBJtE!Js}t!~C%vFarVoOBbLM1Pl}$0`hm~ zXCPoOAaD>+P;kHkXgfe3;CYB(;7DH>AOw&J6&MX1Py_?w^C5{8YwJ*%0uy>?3>|}J zcdl=UnOTI4jGded`T*-eL&w0xA|WLsr=VnIW9Q%$77-N_mylFaR#8<`*U&UEH8Z!c zba8ca_wf80915p-T=K2-ds%%$V^ecWYg_-o;Lz~M=-Ax+!s62M z%Ifak{=wnV@yY4!-TlMk)6ZYeh`>O=pg`cDARrKtf7v47-ys7c763<9FmNDbLM37h zsGa#^15y5njQB61F|+&;oS@Kugs1q|_zaDV{}Q63lk;Dq3=H~@IO7xk8fkvPUt_KN zYp}h2e+_r`ukr5uE#T{$zlHp<3Iq$-`@o1Gh(LTmjS7f>b2;Mw_6!9jo;)8#RJh

~ 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%0A5l1m^J9s0~ zF%34j3@8d0$gDfd3uN%LQE2AVNg$D|i#yYS$AH%dOpaHx?5xfNImNBCvek{M%vQDW zBWHqyc7lOx4E~_*R#o>ayYX7lxbJa?F&>L~lWS-x7dAfE5i8x^w8uA5iw1l;>T8df z*p%5&mm;CMx?|#^)GifexP7~YgA8B{x7A~>fU#Phz!FAE)feZw?v z`p+GvranF!F+#SB4#hwX@dZK*ED4e+6dMg#nGuVezG+tHpNPcluNZI-s7B?Z;(l(@Qi z@xK%4ggK+aJL-RlU7>oZi2MH)t0|yDtZ+)f+CY6Q=c?5jyIEo5#z8}4m=Hc;mGmQ* zKH;6GZQn)-GHCr;XkNM#MCvxQd6tjrc`K`ou3EB7{YZ^U6)>C`WKfdlmqnJ2m_KByr#1|mTEZ_7;d4}hcY%>++ z;)gV8rW!8x!TY~njyWjINo_Lroiu(#)AzJ>m#hRdCe!Q){(t`boLG2#DX)ClaYg@) zL$UpL&E^J#WF67>yX@~=OlB}Q{yQni+u|(X*SONgR|=;Xm}&;&JAuIAe@V?P%HkeY z^POJ$zzTwhy!bB&d9`(pIwRlW?H19{8mVo%|Aiv~E)136n3W0xFJ9Hm1HWb5P2vm0 z)ftJ08IY&z7W;2HKNvWavOm<;N=+9vmdniF&sR6%9Gb%ax^}B@)NQe&wEgng@$3kt zjfd?VeQpuDeS`>XL4TA!8;N4Ra+8BHu0jfkg5kw%=^9(dHDcwgcdCN(qO^;N8C|*M zPJizo7_2tN;l`=P9+# z>?LMiI7~^Czh25B=p!EpbBen35AwXHVW&8z7{VdpvBI7GL4;}~RlVl`4hjB-TwF

LI^WPY(9jGzC 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 literal 0 HcmV?d00001 diff --git a/src/pages/DIN18599/berechnungstabellen/index.astro b/src/pages/DIN18599/berechnungstabellen/index.astro index 93ee2d8a..bfcd4bee 100644 --- a/src/pages/DIN18599/berechnungstabellen/index.astro +++ b/src/pages/DIN18599/berechnungstabellen/index.astro @@ -2,7 +2,7 @@ import Layout from "#layouts/Layout.astro"; import { berechnungNutzenergiebedarfHeizen } from "#lib/Berechnungen/BedarfsausweisWohnen/BerechnungNutzenergiebedarfHeizen.js" -import A12BerechnungNutzenergiebedarf from "#components/Tabellen/A12BerechnungNutzenergiebedarf.svelte"; +import A12NutzenergiebedarfHeizung from "#components/Tabellen/A12NutzenergiebedarfHeizung.svelte"; import { BedarfsausweisWohnenClient, GebaeudeAufnahmeClient } from "#components/Ausweis/types"; import A1AnlagenBeschreibung from "#components/Tabellen/A1AnlagenBeschreibung.svelte"; import A2Wintergarten from "#components/Tabellen/A2Wintergarten.svelte"; @@ -1039,8 +1039,6 @@ const gebaeude_aufnahme: GebaeudeAufnahmeClient = { flaeche: 152 }

- - >
diff --git a/src/pages/dev/datenblatt-viewer.astro b/src/pages/dev/datenblatt-viewer.astro new file mode 100644 index 00000000..8239074d --- /dev/null +++ b/src/pages/dev/datenblatt-viewer.astro @@ -0,0 +1,9 @@ +--- +import BlankLayout from "#layouts/BlankLayout.astro"; + + +--- + + + + \ No newline at end of file diff --git a/src/pages/pdf/datenblatt.astro b/src/pages/pdf/datenblatt.astro index 5cc883d6..6e09c41d 100644 --- a/src/pages/pdf/datenblatt.astro +++ b/src/pages/pdf/datenblatt.astro @@ -1,11 +1,7 @@ --- -import { generate } from "@pdfme/generator"; -import VerbrauchsausweisWohnen2016Template from "../../data/templates/verbrauchsausweis-wohnen-2016.json"; -import { convertAusweisData } from "#lib/AusweisData"; -import { variable } from "#lib/pdf/plugins/variables"; -import { text, image } from "@pdfme/schemas" -import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types"; +import { BenutzerClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types"; import { createCaller } from "#lib/caller"; +import { pdfDatenblatt } from "#lib/pdf/pdfDatenblatt"; const base64 = Astro.url.searchParams.get("base64"); let ausweis: VerbrauchsausweisWohnenClient | null = null; @@ -24,25 +20,11 @@ if (base64) { ausweis = await caller.v1.verbrauchsausweisWohnen.get({ uid: uidAusweis - }) + }); } -if (!ausweis) { - return Astro.redirect("/404"); -} +const pdf = await pdfDatenblatt(ausweis); -const pdf = await generate({ - template: VerbrauchsausweisWohnen2016Template, - plugins: { text, image, variable }, - inputs: [convertAusweisData(ausweis)], - options: { - author: "IB Cornelsen", - creationDate: new Date(), - creator: "IB Cornelsen", - language: "de", - title: "Verbrauchsausweis Wohnen 2016", - }, -}); return new Response(pdf, { headers: { diff --git a/src/pages/sanierungsfahrplan/dach/index.astro b/src/pages/sanierungsfahrplan/dach/index.astro new file mode 100644 index 00000000..bc7e9363 --- /dev/null +++ b/src/pages/sanierungsfahrplan/dach/index.astro @@ -0,0 +1,19 @@ +--- +import Layout from "#layouts/Layout.astro"; +import SanierungsFahrplanDachTemplate from "#components/design/content/SanierungsFahrplanDachTemplate.svelte"; + +--- + + + +

Dach - energetischer Istzustand

+ +

Überblick zum energetischen Istzustand des Daches ihres Hauses

+ +
+ + + +
+ +
\ No newline at end of file diff --git a/src/pages/sanierungsfahrplan/haus/index.astro b/src/pages/sanierungsfahrplan/haus/index.astro new file mode 100644 index 00000000..d9d37753 --- /dev/null +++ b/src/pages/sanierungsfahrplan/haus/index.astro @@ -0,0 +1,19 @@ +--- +import Layout from "#layouts/Layout.astro"; +import SanierungsFahrplanHeizungTemplate from "#components/design/content/SanierungsFahrplanHeizungTemplate.svelte"; + +--- + + + +

Heizung - energetischer Istzustand

+ +

Überblick zum energetischen Istzustand Ihrer Heizung

+ +
+ + + +
+ +
\ No newline at end of file diff --git a/src/pages/sanierungsfahrplan/index.astro b/src/pages/sanierungsfahrplan/index.astro new file mode 100644 index 00000000..3f579c35 --- /dev/null +++ b/src/pages/sanierungsfahrplan/index.astro @@ -0,0 +1,15 @@ +--- +import Layout from "#layouts/Layout.astro"; +import SanierungsFahrplanIstTemplate from "#components/design/content/SanierungsFahrplanIstTemplate.svelte"; + +--- + + + +

Ihr Haus heute - energetischer Istzustand

+ +

Überblick zum energetischen Istzustand und Sanierungsbedarf ihres Hauses

+ + + +
\ No newline at end of file diff --git a/src/pages/sanierungsfahrplan/wände/index.astro b/src/pages/sanierungsfahrplan/wände/index.astro new file mode 100644 index 00000000..1ef506be --- /dev/null +++ b/src/pages/sanierungsfahrplan/wände/index.astro @@ -0,0 +1,19 @@ +--- +import Layout from "#layouts/Layout.astro"; +import SanierungsFahrplanWandTemplate from "#components/design/content/SanierungsFahrplanWandTemplate.svelte"; + +--- + + + +

Wände - energetischer Istzustand

+ +

Überblick zum energetischen Istzustand der Wände ihres Hauses

+ +
+ + + +
+ +
\ No newline at end of file diff --git a/tailwind.config.cjs b/tailwind.config.cjs index a324930a..74045ef5 100644 --- a/tailwind.config.cjs +++ b/tailwind.config.cjs @@ -37,7 +37,16 @@ module.exports = { "formular-rahmen": "rgba(255,204,6,1)", "bereich-box": "rgba(252,234,187,0.2)", - + + "effizienzFarbe-1": "#00a759ff", + "effizienzFarbe-2": "#56be06ff", + "effizienzFarbe-3": "#d2dd00ff", + "effizienzFarbe-4": "#fbe115ff", + "effizienzFarbe-5": "#fbb900ff", + "effizienzFarbe-6": "#f59401ff", + "effizienzFarbe-7": "#ef6800ff", + "effizienzFarbe-8": "#dd2a1bff", + "effizienzFarbe-9": "#b11c0cff", "pdf-yellow-bright": "#f3cb00", "pdf-yellow-light": "#fff6ca", diff --git a/test-pdf.pdf b/test-pdf.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ad6b72a3c3a6e6ecef5633c9c7031d17836bb776 GIT binary patch literal 1094 zcmY!laBh+4UUqI+(Lg zFIyQP*mV84yl}~=@y?K^FT4$5a zO&61=ay2GTnPQ~l*CuTF6=7B&)GBngMBmT1vaN{aGt=}9YZkx&MwRwpHRn`<^0@u=}jBfXD)1MTXNyjrNb%5bb`fppQ-Tv^`S*o<%ZcMVfc}YEz zp^0Vb0;bmvjq6l03Z^nK$4Nx!Nc{it+MS{9?wi9We*E4i{ZLy`FzV|*&?p&-sQHXBSWOqaZ2Uknf z`$(4SzACZg=QAG7-|$Oh|KhnDmL+U64%-=7U$cGB*4ghT=s$fty(fNY-t8w0>$l~r zc=bAQluQ+VbUJ%cGKa6<|NO$>f3;opYd?6-_pbJy+#ZmY@XBaEXR;Na?$*5zUb)OG zsu1V1cYb&KS<+m-yREM8H6mZz@ZJ(BXRBDfq%cU@eesX>^%I^2RHx7TZDY8&XL`o` z-)pu7g-@;QS#0&=Ie+Z$8?@W(F6!$&SzMtiAlTlxC2+>hmU z>mJ>(m-zSbSmzhZm7EYy8!@2 CNz+XL literal 0 HcmV?d00001 diff --git a/tsconfig.json b/tsconfig.json index 17f56b38..0681d578 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -41,5 +41,6 @@ "#widgets/*": ["./src/components/widgets/*"] }, "types": ["cypress", "cypress-file-upload", "bun-types", "svelte"] - } + }, + "exclude": ["node_modules"] }