diff --git a/docs/strategy.md b/docs/strategy.md index 6c471c9..9a16c2a 100644 --- a/docs/strategy.md +++ b/docs/strategy.md @@ -232,6 +232,52 @@ Paperless-AI (Port 3077) soll die Klassifikation übernehmen. Konfigurieren mit: --- +## Multi-page scan + automatic splitting (Barcode-Separator) + +Issue: #1 (mDMS). Aktiv seit 2026-05-16. + +Ein ADF-Scan eines Stapels aus mehreren Schreiben kommt heute als **eine** PDF in `inbox/`. Damit Paperless daraus N getrennte Dokumente macht, nutzen wir den eingebauten **Barcode-Splitter** mit einer Code-128-Patch-T-Seite zwischen den Schreiben. + +### Setup (einmalig) + +Live auf mDock (`~/paperless/docker-compose.yml`, webserver-Service): +```yaml +PAPERLESS_CONSUMER_ENABLE_BARCODES: "true" +PAPERLESS_CONSUMER_BARCODE_DELETE_PAGES: "true" +``` +Standard-Trennstring `PATCHT`, Scanner-Engine `pyzbar`, DPI 300 — alles per Default OK. +`DELETE_PAGES` sorgt dafür, dass die Trennseiten **nicht** im fertigen Dokument landen. + +### Trennseite (Patch-T) + +- PDF: `infra/paperless/separator-patchT.pdf` (1 Seite A4, Code-128 mit `PATCHT`) +- Generator: `infra/paperless/generate_separator.py` (uv inline-deps, reportlab + python-barcode) +- 10–20 Stück ausdrucken, neben dem Scanner stapeln, bei Bedarf nachdrucken + +### Workflow + +1. Stapel zusammenstellen: `[Schreiben A]` `[PATCHT]` `[Schreiben B]` `[PATCHT]` `[Schreiben C]` … +2. Komplett-Stapel in den ADF, Scan-to-SMB als ein einziges PDF +3. PDF landet in `~/mDMS/inbox/` (SMB) → mdms-mover schiebt nach `toprocess/` +4. Paperless erkennt jede `PATCHT`-Seite, splittet, entsorgt die Trennseiten, OCRt + klassifiziert pro Sub-Dokument + +### Test (2026-05-16) + +- Konstruiert: `TEST-A` (2 Seiten) + `PATCHT` + `TEST-B` (1) + `PATCHT` + `TEST-C` (1) = 6-seitiges PDF +- Drop in `/mnt/mdms/toprocess/mdms-issue1-test-stack.pdf` +- Ergebnis: 3 separate Paperless-Dokumente (`_document_0/1/2`), Seitenzahlen 2/1/1 — Trennseiten verschwunden +- Log-Bestätigung: `[paperless.barcodes] Created new task ... for _document_X.pdf` + `BarcodePlugin requested task exit: Barcode splitting complete!` +- Test-Dokumente nach Verifikation aus Paperless gelöscht + +### Edge-Cases / Follow-ups + +- **Fehlt eine Trennseite** → die zwei betroffenen Schreiben landen als ein Dokument. Manuell trennen über Paperless-UI (»Split Document«) oder neu scannen. +- **Trennseite ist verknittert / schräg** → Code-128 mit `quiet_zone=8` ist tolerant; falls Detection-Rate sinkt: in `generate_separator.py` `module_width` größer machen und neu drucken. +- **Option B (Blank-Page-Detection im Mover)** und **Option C (LLM-semantisches Splitting)** sind in Issue #1 dokumentiert — kommen erst, wenn Patch-T-Seiten in der Praxis nerven. +- **ASN-Barcodes** (`PAPERLESS_CONSUMER_ENABLE_ASN_BARCODE`) sind orthogonal — separate Funktion für Archiv-Nummern; nicht aktiviert. + +--- + ## Migration: Schritt für Schritt ### Phase 1: TrueNAS Setup ✓ DONE diff --git a/infra/paperless/generate_separator.py b/infra/paperless/generate_separator.py new file mode 100755 index 0000000..ff9b994 --- /dev/null +++ b/infra/paperless/generate_separator.py @@ -0,0 +1,95 @@ +#!/usr/bin/env -S uv run --script +# /// script +# requires-python = ">=3.11" +# dependencies = [ +# "reportlab>=4.0", +# "python-barcode>=0.15", +# ] +# /// +"""Generate a Paperless-ngx separator page (PATCHT Code-128 barcode). + +Run: ./generate_separator.py [out.pdf] +Default output: separator-patchT.pdf next to this script. + +m prints the resulting PDF and lays one sheet between each document +in a multi-letter scan stack. Paperless-ngx (with +PAPERLESS_CONSUMER_ENABLE_BARCODES=true) detects the barcode and +splits the consumed PDF into separate documents. +""" + +import sys +from pathlib import Path + +from barcode import Code128 +from barcode.writer import ImageWriter +from reportlab.lib.pagesizes import A4 +from reportlab.lib.units import cm +from reportlab.pdfgen import canvas + +SEPARATOR_STRING = "PATCHT" + + +def main(out_path: Path) -> None: + page_w, page_h = A4 + + # Render barcode to a temporary PNG (reportlab needs an image source). + tmp_png = out_path.with_suffix(".tmp") + barcode = Code128(SEPARATOR_STRING, writer=ImageWriter()) + barcode_path = barcode.save( + str(tmp_png), + options={ + "module_width": 0.6, # mm per bar — bigger = easier OCR detection + "module_height": 30.0, # mm tall + "font_size": 14, + "text_distance": 5, + "quiet_zone": 8, + "write_text": True, + }, + ) + + c = canvas.Canvas(str(out_path), pagesize=A4) + + # Header + c.setFont("Helvetica-Bold", 36) + c.drawCentredString(page_w / 2, page_h - 4 * cm, "SEPARATOR") + c.setFont("Helvetica", 14) + c.drawCentredString(page_w / 2, page_h - 5 * cm, + "Zwischen zwei Dokumente legen — Paperless splittet hier.") + + # Big crosshair for easy alignment when scanning + c.setLineWidth(1) + c.setStrokeGray(0.7) + c.line(page_w / 2 - 4 * cm, page_h - 6 * cm, page_w / 2 + 4 * cm, page_h - 6 * cm) + + # Barcode — large, centred + img_w, img_h = 14 * cm, 5 * cm + c.drawImage( + barcode_path, + (page_w - img_w) / 2, + (page_h - img_h) / 2 - 1 * cm, + width=img_w, + height=img_h, + preserveAspectRatio=True, + mask="auto", + ) + + # Footer + c.setFont("Helvetica", 10) + c.setFillGray(0.3) + c.drawCentredString(page_w / 2, 4 * cm, + f"Code-128 · {SEPARATOR_STRING} · Paperless-ngx Barcode-Splitter") + c.drawCentredString(page_w / 2, 3 * cm, + "Detection: PAPERLESS_CONSUMER_ENABLE_BARCODES=true") + c.drawCentredString(page_w / 2, 2.4 * cm, + "Generator: infra/paperless/generate_separator.py (mDMS)") + + c.showPage() + c.save() + + Path(barcode_path).unlink(missing_ok=True) + print(f"wrote {out_path}") + + +if __name__ == "__main__": + out = Path(sys.argv[1]) if len(sys.argv) > 1 else Path(__file__).parent / "separator-patchT.pdf" + main(out) diff --git a/infra/paperless/separator-patchT.pdf b/infra/paperless/separator-patchT.pdf new file mode 100644 index 0000000..40bd605 --- /dev/null +++ b/infra/paperless/separator-patchT.pdf @@ -0,0 +1,85 @@ +%PDF-1.3 +%“Œ‹ž ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 466 /Length 30912 /Subtype /Image + /Type /XObject /Width 904 +>> +stream +Gb"07?g.Mm?2^7fN\`$\eA:JnU(pj46B5Z#;e]X-AYU#T=:hF]7;?CK8PkQa6!\#i<(9iI=_&Ec&gid'i'jJ9)ZE-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6IO%PR/-oo1M_\fH5&!&'=RkW(LCHk'$4,mQ,Y1AEkEX;(;kZIWX6&&eQWe(0(BI`[`T#r:cnD5=^]uJt>lkg?eX/2umdK3`*pO=`PWN7fB-"rAhNlMq9nn39k\^&HKI#d\5jRJFGQeKpNdp(s:e"W3K7I;p&:54[0VcJ5'5Q.etA`%OB,oTkI3*m()uqm6*N8%c/3/e7UOLY"rZ#7q`TnIG*-F@@#QS0Ll-OKd5kl=n_FkAH$t\pLe6"0`.:oX+Sf`gl^o"49Q2Hdk#81Rs:YOBl_ooW9I3XZFDMK;7^e5mmH;4nTT0lS&aT7?o%"=3T.g8)4XL6aQ6ZE+YZur%)?aA`XJrKOtg\Pu9=Vn8[A9$,dn07pXBr",BW<(t!L^GdqJ2*;)cV\2KTVn$^2LBm$%KN!,%TN!lQ5iGW;*Sc!Ih"-tiq89^Nk-6["9:*7FQb_B+FFYri?\^_L,/NaC9/-APd8kPcO[tq@+3\X8q+mF!spaJ-Z/1qiFQ<-^6-B3\&47,i2)PG4f8L;cQOdNj8d1r#!YV;Q%GT*f%TKdTf<$gg,`'P03N<<5t:gKD>cK-XGb[hZ8h,mp^mM=1t&)\e:@$K7"psI^_k5PkGYX`cr8(jRlrtM#CoNQ#:fNq9+E5gW1UH!5DPSJnbP]j8)4Y>!e?V,3qSp\&3blJn<*kj6Q,eA2-('18m,r9kD/$sY\EDg-,4!4JHQk`PIC/In?OZQhoOfUgYkX&nBsj_Sl5a.k7AA7EWBStK:epY8jQ6%CMieC:`KHnD&oS9QRk.Y+JXD6[f.7Qf#?qo=WDQGr!3:/)X5UiC-_P6U;BP5?jpW9F4=;@kUC)Fc(6#7"2Le9"-reI,mP&ne5+fLT>Sj`G^UfpUMbi/!Ph>Q*I:Hi#bOI`Gf]uFTaZC1)CktSV6%)Xo0[KtfX,doP$bNU5_=sk8_a)_GZbidDe*k;mI2>#G\Ns@c`$s(F,1/V3IiiK_9YtgV4a`N[5NA\-k66H[LQ:-99pPgOAS5V>CR,9lf.Ss/<7:^IKTX(NHFAE2'@8V;;if+0SV@X3GPW0oTZZ4B$V",!FXC-JP(C5Ool"Gl6gH7cf&G@]Y9NI;7FH(!8s]9%R$]oK[1ek]]9(4:^0-SNKo*e;V'Rgq4TbJCt^pHaY-e;+@/KqUi$&j]W@%C2mPF.G5)XL]JS'1kL>%O3CJRf*5EE6i9.&D;UA@b>+7Z>'F0._>6cYR,te^naJb`c0?Jii`W8$9$!:\E-LRqEH_WMIF??-$U."e.e`_&Nm.;Neor(n@52JjJ5jHhDXOGACOE/et9k'\p/WJMkb0F*s'/M,9;)*%1&Rn<-ZLcN1gZ/NZ'DO4f,6fg%.RN!8+Z$TTWZfj?S7!,U@M:rt@nEZdY;rM403%p#khM/mdGVii(Vj7f`&,8;Ed8"2a44'jbn\@jlu%UW,nl:FU'rpA@`,!&e[7W8s9r3KPAYIaY\(*+%48lPitHFZ]L,!+$T.cuWqep`-$F9+G>O%PR/-oo1M_\fH5&!&'=RkW(LCHk'$4,mQ,Y1AEkEX;(;kZIWX6&&eQWe(0(BI`[`T#r:cnD5=^]uJt>lkg?eX/2umdK3`*pO=`PWN7fB-"rAhNlMq9nn39k\^&HKI#d\5jRJFGQeKpNdp(s:e"W3K7I;p&:54[0VcJ5'5Q.etA`%OB,oTkI3*m()uqm6*N8%c/3/e7UOLY"rZ#7q`TnIG*-F@@#QS0Ll-OKd5kl=n_FkAH$t\pLe6"0`.:oX+Sf`gl^o"49Q2Hdk#81Rs:YOBl_ooW9I3XZFDMK;7^e5mmH;4nTT0lS&aT7?o%"=3T.g8)4XL6aQ6ZE+YZur%)?aA`XJrKOtg\Pu9=Vn8[A9$,dn07pXBr",BW<(t!L^GdqJ2*;)cV\2KTVn$^2LBm$%KN!,%TN!lQ5iGW;*Sc!Ih"-tiq89^Nk-6["9:*7FQb_B+FFYri?\^_L,/NaC9/-APd8kPcO[tq@+3\X8q+mF!spaJ-Z/1qiFQ<-^6-B3\&47,i2)PG4f8L;cQOdNj8d1r#!YV;Q%GT*f%TKdTf<$gg,`'P03N<<5t:gKD>cK-XGb[hZ8h,mp^mM=1t&)\e:@$K7"psI^_k5PkGYX`cr8(jRlrtM#CoNQ#:fNq9+E5gW1UH!5DPSJnbP]j8)4Y>!e?V,3qSp\&3blJn<*kj6Q,eA2-('18m,r9kD/$sY\EDg-,4!4JHQk`PIC/In?OZQhoOfUgYkX&nBsj_Sl5a.k7AA7EWBStK:epY8jQ6%CMieC:`KHnD&oS9QRk.Y+JXD6[f.7Qf#?qo=WDQGr!3:/)X5UiC-_P6U;BP5?jpW9F4=;@kUC)Fc(6#7"2Le9"-reI,mP&ne5+fLT>Sj`G^UfpUMbi/!Ph>Q*I:Hi#bOI`Gf]uFTaZC1)CktSV6%)Xo0[KtfX,doP$bNU5_=sk8_a)_GZbidDe*k;mI2>#G\Ns@c`$s(F,1/V3IiiK_9YtgV4a`N[5NA\-k66H[LQ:-99pPgOAS5V>CR,9lf.Ss/<7:^IKTX(NHFAE2'@8V;;if+0SV@X3GPW0oTZZ4B$V",!FXC-JP(C5Ool"Gl6gH7cf&G@]Y9NI;7FH(!8s]9%R$]oK[1ek]]9(4:^0-SNKo*e;V'Rgq4TbJCt^pHaY-e;+@/KqUi$&j]W@%C2mPF.G5)XL]JS'1kL>%O3CJRf*5EE6i9.&D;UA@b>+7Z>'F0._>6cYR,te^naJb`c0?Jii`W8$9$!:\E-LRqEH_WMIF??-$U."e.e`_&Nm.;Neor(n@52JjJ5jHhDXOGACOE/et9k'\p/WJMkb0F*s'/M,9;)*%1&Rn<-ZLcN1gZ/NZ'DO4f,6fg%.RN!8+Z$TTWZfj?S7!,U@M:rt@nEZdY;rM403%p#khM/mdGVii(Vj7f`&,8;Ed8"2a44'jbn\@jlu%UW,nl:FU'rpA@`,!&e[7W8s9r3KPAYIaY\(*+%48lPitHFZ]L,!+$T.cuWqep`-$F9+G>O%PR/-oo1M_\fH5&!&'=RkW(LCHk'$4,mQ,Y1AEkEX;(;kZIWX6&&eQWe(0(BI`[`T#r:cnD5=^]uJt>lkg?eX/2umdK3`*pO=`PWN7fB-"rAhNlMq9nn39k\^&HKI#d\5jRJFGQeKpNdp(s:e"W3K7I;p&:54[0VcJ5'5Q.etA`%OB,oTkI3*m()uqm6*N8%c/3/e7UOLY"rZ#7q`TnIG*-F@@#QS0Ll-OKd5kl=n_FkAH$t\pLe6"0`.:oX+Sf`gl^o"49Q2Hdk#81Rs:YOBl_ooW9I3XZFDMK;7^e5mmH;4nTT0lS&aT7?o%"=3T.g8)4XL6aQ6ZE+YZur%)?aA`XJrKOtg\Pu9=Vn8[A9$,dn07pXBr",BW<(t!L^GdqJ2*;)cV\2KTVn$^2LBm$%KN!,%TN!lQ5iGW;*Sc!Ih"-tiq89^Nk-6["9:*7FQb_B+FFYri?\^_L,/NaC9/-APd8kPcO[tq@+3\X8q+mF!spaJ-Z/1qiFQ<-^6-B3\&47,i2)PG4f8L;cQOdNj8d1r#!YV;Q%GT*f%TKdTf<$gg,`'P03N<<5t:gKD>cK-XGb[hZ8h,mp^mM=1t&)\e:@$K7"psI^_k5PkGYX`cr8(jRlrtM#CoNQ#:fNq9+E5gW1UH!5DPSJnbP]j8)4Y>!e?V,3qSp\&3blJn<*kj6Q,eA2-('18m,r9kD/$sY\EDg-,4!4JHQk`PIC/In?OZQhoOfUgYkX&nBsj_Sl5a.k7AA7EWBStK:epY8jQ6%CMieC:`KHnD&oS9QRk.Y+JXD6[f.7Qf#?qo=WDQGr!3:/)X5UiC-_P6U;BP5?jpW9F4=;@kUC)Fc(6#7"2Le9"-reI,mP&ne5+fLT>Sj`G^UfpUMbi/!Ph>Q*I:Hi#bOI`Gf]uFTaZC1)CktSV6%)Xo0[KtfX,doP$bNU5_=sk8_a)_GZbidDe*k;mI2>#G\Ns@c`$s(F,1/V3IiiK_9YtgV4a`N[5NA\-k66H[LQ:-99pPgOAS5V>CR,9lf.Ss/<7:^IKTX(NHFAE2'@8V;;if+0SV@X3GPW0oTZZ4B$V",!FXC-JP(C5Ool"Gl6gH7cf&G@]Y9NI;7FH(!8s]9%R$]oK[1ek]]9(4:^0-SNKo*e;V'Rgq4TbJCt^pHaY-e;+@/KqUi$&j]W@%C2mPF.G5)XL]JS'1kL>%O3CJRf*5EE6i9.&D;UA@b>+7Z>'F0._>6cYR,te^naJb`c0?Jii`W8$9$!:\E-LRqEH_WMIF??-$U."e.e`_&Nm.;Neor(n@52JjJ5jHhDXOGACOE/et9k'\p/WJMkb0F*s'/M,9;)*%1&Rn<-ZLcN1gZ/NZ'DO4f,6fg%.RN!8+Z$TTWZfj?S7!,U@M:rt@nEZdY;rM403%p#khM/mdGVii(Vj7f`&,8;Ed8"2a44'jbn\@jlu%UW,nl:FU'rpA@`,!&e[7W8s9r3KPAYIaY\(*+%48lPitHFZ]L,!+$T.cuWqep`-$F9+G>O%PR/-oo1M_\fH5&!&'=RkW(LCHk'$4,mQ,Y1AEkEX;(;kZIWX6&&eQWe(0(BI`[`T#r:cnD5=^]uJt>lkg?eX/2umdK3`*pO=`PWN7fB-"rAhNlMq9nn39k\^&HKI#d\5jRJFGQeKpNdp(s:e"W3K7I;p&:54[0VcJ5'5Q.etA`%OB,oTkI3*m()uqm6*N8%c/3/e7UOLY"rZ#7q`TnIG*-F@@#QS0Ll-OKd5kl=n_FkAH$t\pLe6"0`.:oX+Sf`gl^o"49Q2Hdk#81Rs:YOBl_ooW9I3XZFDMK;7^e5mmH;4nTT0lS&aT7?o%"=3T.g8)4XL6aQ6ZE+YZur%)?aA`XJrKOtg\Pu9=Vn8[A9$,dn07pXBr",BW<(t!L^GdqJ2*;)cV\2KTVn$^2LBm$%KN!,%TN!lQ5iGW;*Sc!Ih"-tiq89^Nk-6["9:*7FQb_B+FFYri?\^_L,/NaC9/-APd8kPcO[tq@+3\X8q+mF!spaJ-Z/1qiFQ<-^6-B3\&47,i2)PG4f8L;cQOdNj8d1r#!YV;Q%GT*f%TKdTf<$gg,`'P03N<<5t:gKD>cK-XGb[hZ8h,mp^mM=1t&)\e:@$K7"psI^_k5PkGYX`cr8(jRlrtM#CoNQ#:fNq9+E5gW1UH!5DPSJnbP]j8)4Y>!e?V,3qSp\&3blJn<*kj6Q,eA2-('18m,r9kD/$sY\EDg-,4!4JHQk`PIC/In?OZQhoOfUgYkX&nBsj_Sl5a.k7AA7EWBStK:epY8jQ6%CMieC:`KHnD&oS9QRk.Y+JXD6[f.7Qf#?qo=WDQGr!3:/)X5UiC-_P6U;BP5?jpW9F4=;@kUC)Fc(6#7"2Le9"-reI,mP&ne5+fLT>Sj`G^UfpUMbi/!Ph>Q*I:Hi#bOI`Gf]uFTaZC1)CktSV6%)Xo0[KtfX,doP$bNU5_=sk8_a)_GZbidDe*k;mI2>#G\Ns@c`$s(F,1/V3IiiK_9YtgV4a`N[5NA\-k66H[LQ:-99pPgOAS5V>CR,9lf.Ss/<7:^IKTX(NHFAE2'@8V;;if+0SV@X3GPW0oTZZ4B$V",!FXC-JP(C5Ool"Gl6gH7cf&G@]Y9NI;7FH(!8s]9%R$]oK[1ek]]9(4:^0-SNKo*e;V'Rgq4TbJCt^pHaY-e;+@/KqUi$&j]W@%C2mPF.G5)XL]JS'1kL>%O3CJRf*5EE6i9.&D;UA@b>+7Z>'F0._>6cYR,te^naJb`c0?Jii`W8$9$!:\E-LRqEH_WMIF??-$U."e.e`_&Nm.;Neor(n@52JjJ5jHhDXOGACOE/et9k'\p/WJMkb0F*s'/M,9;)*%1&Rn<-ZLcN1gZ/NZ'DO4f,6fg%.RN!8+Z$TTWZfj?S7!,U@M:rt@nEZdY;rM403%p#khM/mdGVii(Vj7f`&,8;Ed8"2a44'jbn\@jlu%UW,nl:FU'rpA@`,!&e[7W8s9r3KPAYIaY\(*+%48lPitHFZ]L,!+$T.cuWqep`-$F9+G>O%PR/-oo1M_\fH5&!&'=RkW(LCHk'$4,mQ,Y1AEkEX;(;kZIWX6&&eQWe(0(BI`[`T#r:cnD5=^]uJt>lkg?eX/2umdK3`*pO=`PWN7fB-"rAhNlMq9nn39k\^&HKI#d\5jRJFGQeKpNdp(s:e"W3K7I;p&:54[0VcJ5'5Q.etA`%OB,oTkI3*m()uqm6*N8%c/3/e7UOLY"rZ#7q`TnIG*-F@@#QS0Ll-OKd5kl=n_FkAH$t\pLe6"0`.:oX+Sf`gl^o"49Q2Hdk#81Rs:YOBl_ooW9I3XZFDMK;7^e5mmH;4nTT0lS&aT7?o%"=3T.g8)4XL6aQ6ZE+YZur%)?aA`XJrKOtg\Pu9=Vn8[A9$,dn07pXBr",BW<(t!L^GdqJ2*;)cV\2KTVn$^2LBm$%KN!,%TN!lQ5iGW;*Sc!Ih"-tiq89^Nk-6["9:*7FQb_B+FFYri?\^_L,/NaC9/-APd8kPcO[tq@+3\X8q+mF!spaJ-Z/1qiFQ<-^6-B3\&47,i2)PG4f8L;cQOdNj8d1r#!YV;Q%GT*f%TKdTf<$gg,`'P03N<<5t:gKD>cK-XGb[hZ8h,mp^mM=1t&)\e:@$K7"psI^_k5PkGYX`cr8(jRlrtM#CoNQ#:fNq9+E5gW1UH!5DPSJnbP]j8)4Y>!e?V,3qSp\&3blJn<*kj6Q,eA2-('18m,r9kD/$sY\EDg-,4!4JHQk`PIC/In?OZQhoOfUgYkX&nBsj_Sl5a.k7AA7EWBStK:epY8jQ6%CMieC:`KHnD&oS9QRk.Y+JXD6[f.7Qf#?qo=WDQGr!3:/)X5UiC-_P6U;BP5?jpW9F4=;@kUC)Fc(6#7"2Le9"-reI,mP&ne5+fLT>Sj`G^UfpUMbi/!Ph>Q*I:Hi#bOI`Gf]uFTaZC1)CktSV6%)Xo0[KtfX,doP$bNU5_=sk8_a)_GZbidDe*k;mI2>#G\Ns@c`$s(F,1/V3IiiK_9YtgV4a`N[5NA\-k66H[LQ:-99pPgOAS5V>CR,9lf.Ss/<7:^IKTX(NHFAE2'@8V;;if+0SV@X3GPW0oTZZ4B$V",!FXC-JP(C5Ool"Gl6gH7cf&G@]Y9NI;7FH(!8s]9%R$]oK[1ek]]9(4:^0-SNKo*e;V'Rgq4TbJCt^pHaY-e;+@/KqUi$&j]W@%C2mPF.G5)XL]JS'1kL>%O3CJRf*5EE6i9.&D;UA@b>+7Z>'F0._>6cYR,te^naJb`c0?Jii`W8$9$!:\E-LRqEH_WMIF??-$U."e.e`_&Nm.;Neor(n@52JjJ5jHhDXOGACOE/et9k'\p/WJMkb0F*s'/M,9;)*%1&Rn<-ZLcN1gZ/NZ'DO4f,6fg%.RN!8+Z$TTWZfj?S7!,U@M:rt@nEZdY;rM403%p#khM/mdGVii(Vj7f`&,8;Ed8"2a44'jbn\@jlu%UW,nl:FU'rpA@`,!&e[7W8s9r3KPAYIaY\(*+%48lPitHFZ]L,!+$T.cuWqep`-$F9+G>O%PR/-oo1M_\fH5&!&'=RkW(LCHk'$4,mQ,Y1AEkEX;(;kZIWX6&&eQWe(0(BI`[`T#r:cnD5=^]uJt>lkg?eX/2umdK3`*pO=`PWN7fB-"rAhNlMq9nn39k\^&HKI#d\5jRJFGQeKpNdp(s:e"W3K7I;p&:54[0VcJ5'5Q.etA`%OB,oTkI3*m()uqm6*N8%c/3/e7UOLY"rZ#7q`TnIG*-F@@#QS0Ll-OKd5kl=n_FkAH$t\pLe6"0`.:oX+Sf`gl^o"49Q2Hdk#81Rs:YOBl_ooW9I3XZFDMK;7^e5mmH;4nTT0lS&aT7?o%"=3T.g8)4XL6aQ6ZE+YZur%)?aA`XJrKOtg\Pu9=Vn8[A9$,dn07pXBr",BW<(t!L^GdqJ2*;)cV\2KTVn$^2LBm$%KN!,%TN!lQ5iGW;*Sc!Ih"-tiq89^Nk-6["9:*7FQb_B+FFYri?\^_L,/NaC9/-APd8kPcO[tq@+3\X8q+mF!spaJ-Z/1qiFQ<-^6-B3\&47,i2)PG4f8L;cQOdNj8d1r#!YV;Q%GT*f%TKdTf<$gg,`'P03N<<5t:gKD>cK-XGb[hZ8h,mp^mM=1t&)\e:@$K7"psI^_k5PkGYX`cr8(jRlrtM#CoNQ#:fNq9+E5gW1UH!5DPSJnbP]j8)4Y>!e?V,3qSp\&3blJn<*kj6Q,eA2-('18m,r9kD/$sY\EDg-,4!4JHQk`PIC/In?OZQhoOfUgYkX&nBsj_Sl5a.k7AA7EWBStK:epY8jQ6%CMieC:`KHnD&oS9QRk.Y+JXD6[f.7Qf#?qo=WDQGr!3:/)X5UiC-_P6U;BP5?jpW9F4=;@kUC)Fc(6#7"2Le9"-reI,mP&ne5+fLT>Sj`G^UfpUMbi/!Ph>Q*I:Hi#bOI`Gf]uFTaZC1)CktSV6%)Xo0[KtfX,doP$bNU5_=sk8_a)_GZbidDe*k;mI2>#G\Ns@c`$s(F,1/V3IiiK_9YtgV4a`N[5NA\-k66H[LQ:-99pPgOAS5V>CR,9lf.Ss/<7:^IKTX(NHFAE2'@8V;;if+0SV@X3GPW0oTZZ4B$V",!FXC-JP(C5Ool"Gl6gH7cf&G@]Y9NI;7FH(!8s]9%R$]oK[1ek]]9(4:^0-SNKo*e;V'Rgq4TbJCt^pHaY-e;+@/KqUi$&j]W@%C2mPF.G5)XL]JS'1kL>%O3CJRf*5EE6i9.&D;UA@b>+7Z>'F0._>6cYR,te^naJb`c0?Jii`W8$9$!:\E-LRqEH_WMIF??-$U."e.e`_&Nm.;Neor(n@52JjJ5jHhDXOGACOE/et9k'\p/WJMkb0F*s'/M,9;)*%1&Rn<-ZLcN1gZ/NZ'DO4f,6fg%.RN!8+Z$TTWZfj?S7!,U@M:rt@nEZdY;rM403%p#khM/mdGVii(Vj7f`&,8;Ed8"2a44'jbn\@jlu%UW,nl:FU'rpA@`,!&e[7W8s9r3KPAYIaY\(*+%48lPitHFZ]L,!+$T.cuWqep`-$F9+G>O%PR/-oo1M_\fH5&!&'=RkW(LCHk'$4,mQ,Y1AEkEX;(;kZIWX6&&eQWe(0(BI`[`T#r:cnD5=^]uJt>lkg?eX/2umdK3`*pO=`PWN7fB-"rAhNlMq9nn39k\^&HKI#d\5jRJFGQeKpNdp(s:e"W3K7I;p&:54[0VcJ5'5Q.etA`%OB,oTkI3*m()uqm6*N8%c/3/e7UOLY"rZ#7q`TnIG*-F@@#QS0Ll-OKd5kl=n_FkAH$t\pLe6"0`.:oX+Sf`gl^o"49Q2Hdk#81Rs:YOBl_ooW9I3XZFDMK;7^e5mmH;4nTT0lS&aT7?o%"=3T.g8)4XL6aQ6ZE+YZur%)?aA`XJrKOtg\Pu9=Vn8[A9$,dn07pXBr",BW<(t!L^GdqJ2*;)cV\2KTVn$^2LBm$%KN!,%TN!lQ5iGW;*Sc!Ih"-tiq89^Nk-6["9:*7FQb_B+FFYri?\^_L,/NaC9/-APd8kPcO[tq@+3\X8q+mF!spaJ-Z/1qiFQ<-^6-B3\&47,i2)PG4f8L;cQOdNj8d1r#!YV;Q%GT*f%TKdTf<$gg,`'P03N<<5t:gKD>cK-XGb[hZ8h,mp^mM=1t&)\e:@$K7"psI^_k5PkGYX`cr8(jRlrtM#CoNQ#:fNq9+E5gW1UH!5DPSJnbP]j8)4Y>!e?V,3qSp\&3blJn<*kj6Q,eA2-('18m,r9kD/$sY\EDg-,4!4JHQk`PIC/In?OZQhoOfUgYkX&nBsj_Sl5a.k7AA7EWBStK:epY8jQ6%CMieC:`KHnD&oS9QRk.Y+JXD6[f.7Qf#?qo=WDQGr!3:/)X5UiC-_P6U;BP5?jpW9F4=;@kUC)Fc(6#7"2Le9"-reI,mP&ne5+fLT>Sj`G^UfpUMbi/!Ph>Q*I:Hi#bOI`Gf]uFTaZC1)CktSV6%)Xo0[KtfX,doP$bNU5_=sk8_a)_GZbidDe*k;mI2>#G\Ns@c`$s(F,1/V3IiiK_9YtgV4a`N[5NA\-k66H[LQ:-99pPgOAS5V>CR,9lf.Ss/<7:^IKTX(NHFAE2'@8V;;if+0SV@X3GPW0oTZZ4B$V",!FXC-JP(C5Ool"Gl6gH7cf&G@]Y9NI;7FH(!8s]9%R$]oK[1ek]]9(4:^0-SNKo*e;V'Rgq4TbJCt^pHaY-e;+@/KqUi$&j]W@%C2mPF.G5)XL]JS'1kL>%O3CJRf*5EE6i9.&D;UA@b>+7Z>'F0._>6cYR,te^naJb`c0?Jii`W8$9$!:\E-LRqEH_WMIF??-$U."e.e`_&Nm.;Neor(n@52JjJ5jHhDXOGACOE/et9k'\p/WJMkb0F*s'/M,9;)*%1&Rn<-ZLcN1gZ/NZ'DO4f,6fg%.RN!8+Z$TTWZfj?S7!,U@M:rt@nEZdY;rM403%p#khM/mdGVii(Vj7f`&,8;Ed8"2a44'jbn\@jlu%UW,nl:FU'rpA@`,!&e[7W8s9r3KPAYIaY\(*+%48lPitHFZ]L,!+$T.cuWqep`-$F9+G>O%PR/-oo1M_\fH5&!&'=RkW(LCHk'$4,mQ,Y1AEkEX;(;kZIWX6&&eQWe(0(BI`[`T#r:cnD5=^]uJt>lkg?eX/2umdK3`*pO=`PWN7fB-"rAhNlMq9nn39k\^&HKI#d\5jRJFGQeKpNdp(s:e"W3K7I;p&:54[0VcJ5'5Q.etA`%OB,oTkI3*m()uqm6*N8%c/3/e7UOLY"rZ#7q`TnIG*-F@@#QS0Ll-OKd5kl=n_FkAH$t\pLe6"0`.:oX+Sf`gl^o"49Q2Hdk#81Rs:YOBl_ooW9I3XZFDMK;7^e5mmH;4nTT0lS&aT7?o%"=3T.g8)4XL6aQ6ZE+YZur%)?aA`XJrKOtg\Pu9=Vn8[A9$,dn07pXBr",BW<(t!L^GdqJ2*;)cV\2KTVn$^2LBm$%KN!,%TN!lQ5iGW;*Sc!Ih"-tiq89^Nk-6["9:*7FQb_B+FFYri?\^_L,/NaC9/-APd8kPcO[tq@+3\X8q+mF!spaJ-Z/1qiFQ<-^6-B3\&47,i2)PG4f8L;cQOdNj8d1r#!YV;Q%GT*f%TKdTf<$gg,`'P03N<<5t:gKD>cK-XGb[hZ8h,mp^mM=1t&)\e:@$K7"psI^_k5PkGYX`cr8(jRlrtM#CoNQ#:fNq9+E5gW1UH!5DPSJnbP]j8)4Y>!e?V,3qSp\&3blJn<*kj6Q,eA2-('18m,r9kD/$sY\EDg-,4!4JHQk`PIC/In?OZQhoOfUgYkX&nBsj_Sl5a.k7AA7EWBStK:epY8jQ6%CMieC:`KHnD&oS9QRk.Y+JXD6[f.7Qf#?qo=WDQGr!3:/)X5UiC-_P6U;BP5?jpW9F4=;@kUC)Fc(6#7"2Le9"-reI,mP&ne5+fLT>Sj`G^UfpUMbi/!Ph>Q*I:Hi#bOI`Gf]uFTaZC1)CktSV6%)Xo0[KtfX,doP$bNU5_=sk8_a)_GZbidDe*k;mI2>#G\Ns@c`$s(F,1/V3IiiK_9YtgV4a`N[5NA\-k66H[LQ:-99pPgOAS5V>CR,9lf.Ss/<7:^IKTX(NHFAE2'@8V;;if+0SV@X3GPW0oTZZ4B$V",!FXC-JP(C5Ool"Gl6gH7cf&G@]Y9NI;7FH(!8s]9%R$]oK[1ek]]9(4:^0-SNKo*e;V'Rgq4TbJCt^pHaY-e;+@/KqUi$&j]W@%C2mPF.G5)XL]JS'1kL>%O3CJRf*5EE6i9.&D;UA@b>+7Z>'F0._>6cYR,te^naJb`c0?Jii`W8$9$!:\E-LRqEH_WMIF??-$U."e.e`_&Nm.;Neor(n@52JjJ5jHhDXOGACOE/et9k'\p/WJMkb0F*s'/M,9;)*%1&Rn<-ZLcN1gZ/NZ'DO4f,6fg%.RN!8+Z$TTWZfj?S7!,U@M:rt@nEZdY;rM403%p#khM/mdGVii(Vj7f`&,8;Ed8"2a44'jbn\@jlu%UW,nl:FU'rpA@`,!&e[7W8s9r3KPAYIaY\(*+%48lPitHFZ]L,!+$T.cuWqep`-$F9+G>O%PR/-oo1M_\fH5&!&'=RkW(LCHk'$4,mQ,Y1AEkEX;(;kZIWX6&&eQWe(0(BI`[`T#r:cnD5=^]uJt>lkg?eX/2umdK3`*pO=`PWN7fB-"rAhNlMq9nn39k\^&HKI#d\5jRJFGQeKpNdp(s:e"W3K7I;p&:54[0VcJ5'5Q.etA`%OB,oTkI3*m()uqm6*N8%c/3/e7UOLY"rZ#7q`TnIG*-F@@#QS0Ll-OKd5kl=n_FkAH$t\pLe6"0`.:oX+Sf`gl^o"49Q2Hdk#81Rs:YOBl_ooW9I3XZFDMK;7^e5mmH;4nTT0lS&aT7?o%"=3T.g8)4XL6aQ6ZE+YZur%)?aA`XJrKOtg\Pu9=Vn8[A9$,dn07pXBr",BW<(t!L^GdqJ2*;)cV\2KTVn$^2LBm$%KN!,%TN!lQ5iGW;*Sc!Ih"-tiq89^Nk-6["9:*7FQb_B+FFYri?\^_L,/NaC9/-APd8kPcO[tq@+3\X8q+mF!spaJ-Z/1qiFQ<-^6-B3\&47,i2)PG4f8L;cQOdNj8d1r#!YV;Q%GT*f%TKdTf<$gg,`'P03N<<5t:gKD>cK-XGb[hZ8h,mp^mM=1t&)\e:@$K7"psI^_k5PkGYX`cr8(jRlrtM#CoNQ#:fNq9+E5gW1UH!5DPSJnbP]j8)4Y>!e?V,3qSp\&3blJn<*kj6Q,eA2-('18m,r9kD/$sY\EDg-,4!4JHQk`PIC/In?OZQhoOfUgYkX&nBsj_Sl5a.k7AA7EWBStK:epY8jQ6%CMieC:`KHnD&oS9QRk.Y+JXD6[f.7Qf#?qo=WDQGr!3:/)X5UiC-_P6U;BP5?jpW9F4=;@kUC)Fc(6#7"2Le9"-reI,mP&ne5+fLT>Sj`G^UfpUMbi/!Ph>Q*I:Hi#bOI`Gf]uFTaZC1)CktSV6%)Xo0[KtfX,doP$bNU5_=sk8_a)_GZbidDe*k;mI2>#G\Ns@c`$s(F,1/V3IiiK_9YtgV4a`N[5NA\-k66H[LQ:-99pPgOAS5V>CR,9lf.Ss/<7:^IKTX(NHFAE2'@8V;;if+0SV@X3GPW0oTZZ4B$V",!FXC-JP(C5Ool"Gl6gH7cf&G@]Y9NI;7FH(!8s]9%R$]oK[1ek]]9(4:^0-SNKo*e;V'Rgq4TbJCt^pHaY-e;+@/KqUi$&j]W@%C2mPF.G5)XL]JS'1kL>%O3CJRf*5EE6i9.&D;UA@b>+7Z>'F0._>6cYR,te^naJb`c0?Jii`W8$9$!:\E-LRqEH_WMIF??-$U."e.e`_&Nm.;Neor(n@52JjJ5jHhDXOGACOE/et9k'\p/WJMkb0F*s'/M,9;)*%1&Rn<-ZLcN1gZ/NZ'DO4f,6fg%.RN!8+Z$TTWZfj?S7!,U@M:rt@nEZdY;rM403%p#khM/mdGVii(Vj7f`&,8;Ed8"2a44'jbn\@jlu%UW,nl:FU'rpA@`,!&e[7W8s9r3KPAYIaY\(*+%48lPitHFZ]L,!+$T.cuWqep`-$F9+G>O%PR/-oo1M_\fH5&!&'=RkW(LCHk'$4,mQ,Y1AEkEX;(;kZIWX6&&eQWe(0(BI`[`T#r:cnD5=^]uJt>lkg?eX/2umdK3`*pO=`PWN7fB-"rAhNlMq9nn39k\^&HKI#d\5jRJFGQeKpNdp(s:e"W3K7I;p&:54[0VcJ5'5Q.etA`%OB,oTkI3*m()uqm6*N8%c/3/e7UOLY"rZ#7q`TnIG*-F@@#QS0Ll-OKd5kl=n_FkAH$t\pLe6"0`.:oX+Sf`gl^o"49Q2Hdk#81Rs:YOBl_ooW9I3XZFDMK;7^e5mmH;4nTT0lS&aT7?o%"=3T.g8)4XL6aQ6ZE+YZur%)?aA`XJrKOtg\Pu9=Vn8[A9$,dn07pXBr",BW<(t!L^GdqJ2*;)cV\2KTVn$^2LBm$%KN!,%TN!lQ5iGW;*Sc!Ih"-tiq89^Nk-6["9:*7FQb_B+FFYri?\^_L,/NaC9/-APd8kPcO[tq@+3\X8q+mF!spaJ-Z/1qiFQ<-^6-B3\&47,i2)PG4f8L;cQOdNj8d1r#!YV;Q%GT*f%TKdTf<$gg,`'P03N<<5t:gKD>cK-XGb[hZ8h,mp^mM=1t&)\e:@$K7"psI^_k5PkGYX`cr8(jRlrtM#CoNQ#:fNq9+E5gW1UH!5DPSJnbP]j8)4Y>!e?V,3qSp\&3blJn<*kj6Q,eA2-('18m,r9kD/$sY\EDg-,4!4JHQk`PIC/In?OZQhoOfUgYkX&nBsj_Sl5a.k7AA7EWBStK:epY8jQ6%CMieC:`KHnD&oS9QRk.Y+JXD6[f.7Qf#?qo=WDQGr!3:/)X5UiC-_P6U;BP5?jpW9F4=;@kUC)Fc(6#7"2Le9"-reI,mP&ne5+fLT>Sj`G^UfpUMbi/!Ph>Q*I:Hi#bOI`Gf]uFTaZC1)CktSV6%)Xo0[KtfX,doP$bNU5_=sk8_a)_GZbidDe*k;mI2>#G\Ns@c`$s(F,1/V3IiiK_9YtgV4a`N[5NA\-k66H[LQ:-99pPgOAS5V>CR,9lf.Ss/<7:^IKTX(NHFAE2'@8V;;if+0SV@X3GPW0oTZZ4B$V",!FXC-JP(C5Ool"Gl6gH7cf&G@]Y9NI;7FH(!8s]9%R$]oK[1ek]]9(4:^0-SNKo*e;V'Rgq4TbJCt^pHaY-e;+@/KqUi$&j]W@%C2mPF.G5)XL]JS'1kL>%O3CJRf*5EE6i9.&D;UA@b>+7Z>'F0._>6cYR,te^naJb`c0?Jii`W8$9$!:\E-LRqEH_WMIF??-$U."e.e`_&Nm.;Neor(n@52JjJ5jHhDXOGACOE/et9k'\p/WJMkb0F*s'/M,9;)*%1&Rn<-ZLcN1gZ/NZ'DO4f,6fg%.RN!8+Z$TTWZfj?S7!,U@M:rt@nEZdY;rM403%p#khM/mdGVii(Vj7f`&,8;Ed8"2a44'jbn\@jlu%UW,nl:FU'rpA@`,!&e[7W8s9r3KPAYIaY\(*+%48lPitHFZ]L,!+$T.cuWqep`-$F9+G>O%PR/-oo1M_\fH5&!&'=RkW(LCHk'$4,mQ,Y1AEkEX;(;kZIWX6&&eQWe(0(BI`[`T#r:cnD5=^]uJt>lkg?eX/2umdK3`*pO=`PWN7fB-"rAhNlMq9nn39k\^&HKI#d\5jRJFGQeKpNdp(s:e"W3K7I;p&:54[0VcJ5'5Q.etA`%OB,oTkI3*m()uqm6*N8%c/3/e7UOLY"rZ#7q`TnIG*-F@@#QS0Ll-OKd5kl=n_FkAH$t\pLe6"0`.:oX+Sf`gl^o"49Q2Hdk#81Rs:YOBl_ooW9I3XZFDMK;7^e5mmH;4nTT0lS&aT7?o%"=3T.g8)4XL6aQ6ZE+YZur%)?aA`XJrKOtg\Pu9=Vn8[A9$,dn07pXBr",BW<(t!L^GdqJ2*;)cV\2KTVn$^2LBm$%KN!,%TN!lQ5iGW;*Sc!Ih"-tiq89^Nk-6["9:*7FQb_B+FFYri?\^_L,/NaC9/-APd8kPcO[tq@+3\X8q+mF!spaJ-Z/1qiFQ<-^6-B3\&47,i2)PG4f8L;cQOdNj8d1r#!YV;Q%GT*f%TKdTf<$gg,`'P03N<<5t:gKD>cK-XGb[hZ8h,mp^mM=1t&)\e:@$K7"psI^_k5PkGYX`cr8(jRlrtM#CoNQ#:fNq9+E5gW1UH!5DPSJnbP]j8)4Y>!e?V,3qSp\&3blJn<*kj6Q,eA2-('18m,r9kD/$sY\EDg-,4!4JHQk`PIC/In?OZQhoOfUgYkX&nBsj_Sl5a.k7AA7EWBStK:epY8jQ6%CMieC:`KHnD&oS9QRk.Y+JXD6[f.7Qf#?qo=WDQGr!3:/)X5UiC-_P6U;BP5?jpW9F4=;@kUC)Fc(6#7"2Le9"-reI,mP&ne5+fLT>Sj`G^UfpUMbi/!Ph>Q*I:Hi#bOI`Gf]uFTaZC1)CktSV6%)Xo0[KtfX,doP$bNU5_=sk8_a)_GZbidDe*k;mI2>#G\Ns@c`$s(F,1/V3IiiK_9YtgV4a`N[5NA\-k66H[LQ:-99pPgOAS5V>CR,9lf.Ss/<7:^IKTX(NHFAE2'@8V;;if+0SV@X3GPW0oTZZ4B$V",!FXC-JP(C5Ool"Gl6gH7cf&G@]Y9NI;7FH(!8s]9%R$]oK[1ek]]9(4:^0-SNKo*e;V'Rgq4TbJCt^pHaY-e;+@/KqUi$&j]W@%C2mPF.G5)XL]JS'1kL>%O3CJRf*5EE6i9.&D;UA@b>+7Z>'F0._>6cYR,te^naJb`c0?Jii`W8$9$!:\E-LRqEH_WMIF??-$U."e.e`_&Nm.;Neor(n@52JjJ5jHhDXOGACOE/et9k'\p/WJMkb0F*s'/M,9;)*%1&Rn<-ZLcN1gZ/NZ'DO4f,6fg%.RN!8+Z$TTWZfj?S7!,U@M:rt@nEZdY;rM403%p#khM/mdGVii(Vj7f`&,8;Ed8"2a44'jbn\@jlu%UW,nl:FU'rpA@`,!&e[7W8s9r3KPAYIaY\(*+%48lPitHFZ]L,!+$T.cuWqep`-$F9+G>O%PR/-oo1M_\fH5&!&'=RkW(LCHk'$4,mQ,Y1AEkEX;(;kZIWX6&&eQWe(0(BI`[`T#r:cnD5=^]uJt>lkg?eX/2umdK3`*pO=`PWN7fB-"rAhNlMq9nn39k\^&HKI#d\5jRJFGQeKpNdp(s:e"W3K7I;p&:54[0VcJ5'7MQ2J%2q[B0PpT7?[]IYQ&q1.pr+.7m,d0HJ[sop\Nb8rSDb3lWn_op:#PK\!LELpNM+2I?lD[VJl=.9+M!qDu]OGF1PDQeS;KqLTC3^o_,lmlDq\[420b"DgjJFpo0n^WB9a%`@G7l2u-hOj6EM2DS#iDl_g8VbkQc+]\l.!qTp6$p@$F1X4:sm>3BSpGNgLJN+Y95dSHD_IDo98`?!Yri<`;YS,@4"EV6>5^$;&%Y$(Arj^8#K47qmsV6*e!eS;M;&cZ-_71X[b6e;7Ar[kV7EgODnjUOGW^%U00s7_!rqYZES\GDItq3A"`]'@_Eqqh(]c[+0KrqMQSpu\&a^?rA`54Xhs]]VHH\adZYTD[athsG<*]6N#D93\N!X4:smDZ@?@&,tJtDL_AR%t3YimsEs\rSI!+iu-1Q_uHpu,9Qa&d6ET('E-?4rR.87Uj;?C?b<)ms/RY7s"6b<`c(bZ\,E'dqP1[Zor]*JYP^lgOWXC]3uR,Xmsk@9T(8+AhZ",c/hK\aY179p>-1ikP:HPa]r2Hjn:QdMlsju61\/*&II:qJ2h'dG??Gu9Du]Nhs6'-(chFNl\mlUBY&:f3QKt]cm\8n#msb!]5N"&1YFPQ`s7:a:GA4,.C:.6IegHc4QX8'hro\c[gUDUcV2*Z-F3WVBrSQ5%YP^Ysa$&k\alh8^HgQ1;qqd82=TlDnK4r)s3C*2cGd8RHedYar5C>hnh7cQ(\rRLIo4sM>eTArDn9J(_[SQKR_7Z$n+ck=s8>%W>Q)1@eS;KqXk#L9r`sh=072Bq0"q5+YPcOho[BE*[#8j0nrf>Eq27K6UHa(p0/!17!I(:*5HZ(!R)`HR]B`bkHKTc!l)a`*Brfd![9B\R7"1L%o0<9HV>m"`aq(imWH--6@9K"jsnrp.>udduJ5&c1j,5PsH@/-"c[s44%H.fZDrqPU5q%CGlMeO(DKOGd06]]VFBnr]""6N(iqn'Y7;eS;Kqk6V&>IGtp4Gj5#Gro"r"*e++OJ,[DgYCHN:5P_d;mFQgSinsU4YPP9`1Dqh\?9Q+O/jWji3C_>/q(i7??5;tUE9*,:\j8X+8EXJ?aEg_I9jF0o:+Wbn_fjOY.9brXnfOdrj[:,_]F!CC?g<7Wi5o&g1n$!X]Fa-/cRH:p"!=hn:1aKHMbPq^@5&b]_&,lJ'f'\dHtjis//:#rtjke>T8/th>dKK^LXbN5K<`A*W7VPlJJG?rU9cNDnk6M^>\(Pk<.ofGBe;q:Q(\?rtF7_2ZC4tlWrt*WB8/4^%uqeX4:sm>-2kQn@S=Y>Ah"MItiGAc[+0K5%WNO\))Gm-eu[BJ+=t:Eeg!Jrj8WiY.O,EO5Z@Y(UWMKeURM;IpDQTpV$#)g$V]8]S,r;QH*s#%!*c-rj2FFmSNko[+/p!>-6@9>5hfR\%CJ`L)Y#T_].H/chc*TrR4CdmsEshmc=AqT,)Q<2r/Qh.D,,jeQ#[VFj]B@CT\gg,PCNR:cguU/tgiCRn_o)\]q$5=\Ap0WD#A9qjl%Mdk-1i+FcJ5l94.PDQX5XGm*G[tqV*O8U[EU*]3fsb]>+6TCD_DJ>WqS-&%lRuc[4MiqgXdd^Iqe5-1i+FcHO<95hN:euQ!gqI7C.+$!7007;^d00[/>III'3F!+?2CgeII,hb^,Pk!p"t)>@if^=j?X<&d"7,Ej6CEpp1l=,^>]m2W'C=J^]*QFqn15orJM-`]TN>\E*\U^]*O,4thBTM_Fn=m;6d22)0Pb^&-XS^=U'dFj]gKGJF#j?LsW.gFH4[k(X8C>5H\n:n]"4O3pTdI?1kkn4n$91rp]-nbr=PX?/P<\T7#2(93\N!X4:smm,+Y+rfGGZpjt/$oD/1%5Q2OmnJN.F*q>%VbaNc@Y($(WJ+h?/VsCLtmQ&U=cKej;q@@u3"!@L*7rQ$,[O]*K?iB7k5NO=i.K0>OrO]GeC:.6Iei?WXQi?)RroGHtVa(.EbAQ58c/3orl7R:kbKW!'4QW78\9dto?[h7cs0&JQQaU)"+:QbIRa_>\HIf!iBdTauQbn[I_3lftOSIfAr2s.KsOkRJ(!GA4,.C:.6IF/8dfIJC]%I`_MR>AdSeHe[<3G00-VO+$AZ6f?#8a$9Rn?iAM^rN\*RZ;::SoNq:'f/'&pb]gbd?$G;Z^Iqe5-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqX]DLQC:.6I-1i+eS;KqGG+sD99-5T~>endstream +endobj +5 0 obj +<< +/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << +/FormXob.f2a4bfe4a5f0a3a74127f075c1f3c9e0 4 0 R +>> +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/PageMode /UseNone /Pages 8 0 R /Type /Catalog +>> +endobj +7 0 obj +<< +/Author (anonymous) /CreationDate (D:20260516153122+02'00') /Creator (anonymous) /Keywords () /ModDate (D:20260516153122+02'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (unspecified) /Title (untitled) /Trapped /False +>> +endobj +8 0 obj +<< +/Count 1 /Kids [ 5 0 R ] /Type /Pages +>> +endobj +9 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 550 +>> +stream +GarnRgJ6Kg'R]XVS4BNrM9fM@)^HJp`6a9);L=NU'Ibg*3k1/&[>iW*odnCb+Al9F=gMaRk0+D3m\Aab8q;bLd5:qZ0KG4[!G2h(nHPKa&)M9AOo<2^5XAR]^psZg1eOC$_3Ao)7*@7obp#=Vo+T?7':F1i#*AoY-Y+K".cJHr+%[qBO?Mrf/pjl=]^0G8Zhi9pBrg+-enuJ;@SFTnD/?hl>mFZA/c+>tn5S$UhoQPu4B-:[E)CKO^a*d'\'\_.8c,cNPD2n)Xut&D?%#re)Dg.&X=rl(dKqJ"GTJ0QHFgUZmVekF*SlF5H*j/rnT6LDP,lIA&U.Z>J=Im3NHHhPR(1k^0\i?eKR7Rrk%6jtEg]b1UX;3e+%.hCJ!ZZr$~>endstream +endobj +xref +0 10 +0000000000 65535 f +0000000061 00000 n +0000000102 00000 n +0000000209 00000 n +0000000321 00000 n +0000031425 00000 n +0000031691 00000 n +0000031759 00000 n +0000032020 00000 n +0000032079 00000 n +trailer +<< +/ID +[<0a7af128a74e1c531e60bf2938ea787c><0a7af128a74e1c531e60bf2938ea787c>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 7 0 R +/Root 6 0 R +/Size 10 +>> +startxref +32719 +%%EOF