From a9ed1c0281b3b61961cfc61f0d800f62310959db Mon Sep 17 00:00:00 2001 From: 0qln <0qln@proton.me> Date: Sun, 25 Jan 2026 00:05:49 +0100 Subject: [PATCH] wip --- .mermaid-config.json | 5 + bin/render-mmd | 4 + figures/architecture.mmd | 48 +++ figures/architecture.pdf | Bin 0 -> 52693 bytes figures/dataflow-and-governance.mmd | 51 +++ figures/dataflow-and-governance.pdf | Bin 0 -> 61981 bytes figures/example-dashboard.png | Bin 0 -> 1440509 bytes figures/feedback-loop.mmd | 11 + figures/feedback-loop.pdf | Bin 0 -> 27957 bytes figures/metrics-and-indicators.mmd | 17 + figures/metrics-and-indicators.pdf | Bin 0 -> 35174 bytes figures/xapi-schema.mmd | 17 + figures/xapi-schema.pdf | Bin 0 -> 22786 bytes flake.nix | 3 + listings/aggregation-job.py | 27 ++ listings/xapi-example.json | 52 +++ main.tex | 563 ++++++++++++++++------------ seriousgames-seminar.cls | 72 +++- 18 files changed, 613 insertions(+), 257 deletions(-) create mode 100644 .mermaid-config.json create mode 100755 bin/render-mmd create mode 100644 figures/architecture.mmd create mode 100644 figures/architecture.pdf create mode 100644 figures/dataflow-and-governance.mmd create mode 100644 figures/dataflow-and-governance.pdf create mode 100644 figures/example-dashboard.png create mode 100644 figures/feedback-loop.mmd create mode 100644 figures/feedback-loop.pdf create mode 100644 figures/metrics-and-indicators.mmd create mode 100644 figures/metrics-and-indicators.pdf create mode 100644 figures/xapi-schema.mmd create mode 100644 figures/xapi-schema.pdf create mode 100644 listings/aggregation-job.py create mode 100644 listings/xapi-example.json diff --git a/.mermaid-config.json b/.mermaid-config.json new file mode 100644 index 0000000..9dffb4c --- /dev/null +++ b/.mermaid-config.json @@ -0,0 +1,5 @@ +{ + "flowchart": { + "htmlLabels": false + } +} diff --git a/bin/render-mmd b/bin/render-mmd new file mode 100755 index 0000000..1dfbc62 --- /dev/null +++ b/bin/render-mmd @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +PROJ_ROOT="$SCRIPT_DIR/../" +for x in "$PROJ_ROOT"/figures/*.mmd; do mmdc --pdfFit -c "$PROJ_ROOT/.mermaid-config.json" -i "$x" -o "$PROJ_ROOT/figures/$(basename "$x" .mmd).pdf"; done diff --git a/figures/architecture.mmd b/figures/architecture.mmd new file mode 100644 index 0000000..a8935f5 --- /dev/null +++ b/figures/architecture.mmd @@ -0,0 +1,48 @@ +flowchart LR + %% Clients (Frontends) + subgraph Clients["Clients (Frontends)"] + SC["Spiel-Client"] + DC["Dashboard-Client"] + end + + %% Ingestion + subgraph Ingestion["Telemetry Ingestion"] + CG["Consent-Gate"] + COL["Collector(Auth + Schema-Validation)"] + end + + %% Separation + subgraph Streams["Trennung der Datenströme"] + DID["Didaktik-Stream(Lern/Verhalten)"] + SYS["System-Stream(Fehler/Performance)"] + end + + %% Storage + subgraph Storage["Persistenz"] + LRS["LRS / Event Store(Rohdaten)"] + end + + %% Analytics + subgraph Analytics["Analytics"] + AGG["Aggregation(KPIs/Indikatoren)"] + ADB["Analytics DB(Serving Layer)"] + end + + %% Governance + subgraph Gov["Governance"] + RB["RBAC/ABAC"] + RET["Retention/Löschung"] + AUD["Audit Logs"] + end + + %% Flows + SC --> CG --> COL + COL --> DID --> LRS + COL --> SYS --> LRS + LRS --> AGG --> ADB --> DC + + %% Governance as controls + RB -. "Zugriff" .-> LRS + RB -. "Zugriff" .-> ADB + RET -. "Regeln" .-> LRS + AUD <-. "Zugriffe/Exporte" .-> DC diff --git a/figures/architecture.pdf b/figures/architecture.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b4187e064d5d9e0f5579b43a1da3e75d958f0765 GIT binary patch literal 52693 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 T0avW12IiKgT&k+B{%%|Vw+-%o literal 0 HcmV?d00001 diff --git a/figures/dataflow-and-governance.mmd b/figures/dataflow-and-governance.mmd new file mode 100644 index 0000000..d0b171c --- /dev/null +++ b/figures/dataflow-and-governance.mmd @@ -0,0 +1,51 @@ +flowchart LR + %% High-level dataflow for telemetry in serious games with governance controls + + subgraph C["Client / Spiel"] + U["Lernende:r"] + CG["Consent-Gate(Opt-in/Policy-Version)"] + EL["Event Logger(Batching/Offline-Queue)"] + U --> CG --> EL + end + + subgraph I["Ingestion"] + COL["Telemetry Collector(Auth, Schema-Validation, Rate-Limits)"] + end + + subgraph G["Governance & Identitätstrennung"] + PID["Pseudonymisierungs-/Mapping-Service(getrennte Identitätsdomäne)"] + RB["RBAC/ABAC Policy Engine"] + AUD["Audit Logs(Zugriffe/Exporte)"] + end + + subgraph S["Persistenz"] + LRS["LRS / Event Store(Rohdaten/Lernspur)"] + end + + subgraph A["Analytics"] + ETL["ETL/ELT & Qualitätschecks(Dedupe, Missing Data, Drift)"] + AGG["Aggregation(KPIs, Zeitfenster, Kohorten)"] + ADB["Analytics DB(materialisierte Sichten)"] + end + + subgraph R["Reporting"] + DASH["Dashboard/Reports(Filter, Drilldown, Exporte)"] + ST["Stakeholder(z. B. Lehrkraft/Trainer:in)"] + end + + %% Main flow + EL --> COL + COL --> PID + PID --> LRS + LRS --> ETL --> AGG --> ADB --> DASH --> ST + + %% Governance controls + RB -. "Zugriffskontrolle" .-> LRS + RB -. "Zugriffskontrolle" .-> ADB + RB -. "Zugriffskontrolle" .-> DASH + DASH --> AUD + LRS --> AUD + ADB --> AUD + + %% Data separation hint + COL -. "Trennung: technisch vs. didaktisch" .- PID diff --git a/figures/dataflow-and-governance.pdf b/figures/dataflow-and-governance.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e1c021c5e0284aa29f4fedc7fc5981f744afecf8 GIT binary patch literal 61981 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 T0avW12IiKgT&k+B{%%|Vw+-%o literal 0 HcmV?d00001 diff --git a/figures/dataflow-and-governance.mmd b/figures/dataflow-and-governance.mmd new file mode 100644 index 0000000..d0b171c --- /dev/null +++ b/figures/dataflow-and-governance.mmd @@ -0,0 +1,51 @@ +flowchart LR + %% High-level dataflow for telemetry in serious games with governance controls + + subgraph C["Client / Spiel"] + U["Lernende:r"] + CG["Consent-Gate(Opt-in/Policy-Version)"] + EL["Event Logger(Batching/Offline-Queue)"] + U --> CG --> EL + end + + subgraph I["Ingestion"] + COL["Telemetry Collector(Auth, Schema-Validation, Rate-Limits)"] + end + + subgraph G["Governance & Identitätstrennung"] + PID["Pseudonymisierungs-/Mapping-Service(getrennte Identitätsdomäne)"] + RB["RBAC/ABAC Policy Engine"] + AUD["Audit Logs(Zugriffe/Exporte)"] + end + + subgraph S["Persistenz"] + LRS["LRS / Event Store(Rohdaten/Lernspur)"] + end + + subgraph A["Analytics"] + ETL["ETL/ELT & Qualitätschecks(Dedupe, Missing Data, Drift)"] + AGG["Aggregation(KPIs, Zeitfenster, Kohorten)"] + ADB["Analytics DB(materialisierte Sichten)"] + end + + subgraph R["Reporting"] + DASH["Dashboard/Reports(Filter, Drilldown, Exporte)"] + ST["Stakeholder(z. B. Lehrkraft/Trainer:in)"] + end + + %% Main flow + EL --> COL + COL --> PID + PID --> LRS + LRS --> ETL --> AGG --> ADB --> DASH --> ST + + %% Governance controls + RB -. "Zugriffskontrolle" .-> LRS + RB -. "Zugriffskontrolle" .-> ADB + RB -. "Zugriffskontrolle" .-> DASH + DASH --> AUD + LRS --> AUD + ADB --> AUD + + %% Data separation hint + COL -. "Trennung: technisch vs. didaktisch" .- PID diff --git a/figures/dataflow-and-governance.pdf b/figures/dataflow-and-governance.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e1c021c5e0284aa29f4fedc7fc5981f744afecf8 GIT binary patch literal 61981 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 T0avW12IiKgT&k+B{%%|Vw+-%o literal 0 HcmV?d00001 diff --git a/figures/dataflow-and-governance.mmd b/figures/dataflow-and-governance.mmd new file mode 100644 index 0000000..d0b171c --- /dev/null +++ b/figures/dataflow-and-governance.mmd @@ -0,0 +1,51 @@ +flowchart LR + %% High-level dataflow for telemetry in serious games with governance controls + + subgraph C["Client / Spiel"] + U["Lernende:r"] + CG["Consent-Gate(Opt-in/Policy-Version)"] + EL["Event Logger(Batching/Offline-Queue)"] + U --> CG --> EL + end + + subgraph I["Ingestion"] + COL["Telemetry Collector(Auth, Schema-Validation, Rate-Limits)"] + end + + subgraph G["Governance & Identitätstrennung"] + PID["Pseudonymisierungs-/Mapping-Service(getrennte Identitätsdomäne)"] + RB["RBAC/ABAC Policy Engine"] + AUD["Audit Logs(Zugriffe/Exporte)"] + end + + subgraph S["Persistenz"] + LRS["LRS / Event Store(Rohdaten/Lernspur)"] + end + + subgraph A["Analytics"] + ETL["ETL/ELT & Qualitätschecks(Dedupe, Missing Data, Drift)"] + AGG["Aggregation(KPIs, Zeitfenster, Kohorten)"] + ADB["Analytics DB(materialisierte Sichten)"] + end + + subgraph R["Reporting"] + DASH["Dashboard/Reports(Filter, Drilldown, Exporte)"] + ST["Stakeholder(z. B. Lehrkraft/Trainer:in)"] + end + + %% Main flow + EL --> COL + COL --> PID + PID --> LRS + LRS --> ETL --> AGG --> ADB --> DASH --> ST + + %% Governance controls + RB -. "Zugriffskontrolle" .-> LRS + RB -. "Zugriffskontrolle" .-> ADB + RB -. "Zugriffskontrolle" .-> DASH + DASH --> AUD + LRS --> AUD + ADB --> AUD + + %% Data separation hint + COL -. "Trennung: technisch vs. didaktisch" .- PID diff --git a/figures/dataflow-and-governance.pdf b/figures/dataflow-and-governance.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e1c021c5e0284aa29f4fedc7fc5981f744afecf8 GIT binary patch literal 61981 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
h0PD>uu|8_6ULFjn0NGa*6*pr!{yr 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 T0avW12IiKgT&k+B{%%|Vw+-%o literal 0 HcmV?d00001 diff --git a/figures/dataflow-and-governance.mmd b/figures/dataflow-and-governance.mmd new file mode 100644 index 0000000..d0b171c --- /dev/null +++ b/figures/dataflow-and-governance.mmd @@ -0,0 +1,51 @@ +flowchart LR + %% High-level dataflow for telemetry in serious games with governance controls + + subgraph C["Client / Spiel"] + U["Lernende:r"] + CG["Consent-Gate(Opt-in/Policy-Version)"] + EL["Event Logger(Batching/Offline-Queue)"] + U --> CG --> EL + end + + subgraph I["Ingestion"] + COL["Telemetry Collector(Auth, Schema-Validation, Rate-Limits)"] + end + + subgraph G["Governance & Identitätstrennung"] + PID["Pseudonymisierungs-/Mapping-Service(getrennte Identitätsdomäne)"] + RB["RBAC/ABAC Policy Engine"] + AUD["Audit Logs(Zugriffe/Exporte)"] + end + + subgraph S["Persistenz"] + LRS["LRS / Event Store(Rohdaten/Lernspur)"] + end + + subgraph A["Analytics"] + ETL["ETL/ELT & Qualitätschecks(Dedupe, Missing Data, Drift)"] + AGG["Aggregation(KPIs, Zeitfenster, Kohorten)"] + ADB["Analytics DB(materialisierte Sichten)"] + end + + subgraph R["Reporting"] + DASH["Dashboard/Reports(Filter, Drilldown, Exporte)"] + ST["Stakeholder(z. B. Lehrkraft/Trainer:in)"] + end + + %% Main flow + EL --> COL + COL --> PID + PID --> LRS + LRS --> ETL --> AGG --> ADB --> DASH --> ST + + %% Governance controls + RB -. "Zugriffskontrolle" .-> LRS + RB -. "Zugriffskontrolle" .-> ADB + RB -. "Zugriffskontrolle" .-> DASH + DASH --> AUD + LRS --> AUD + ADB --> AUD + + %% Data separation hint + COL -. "Trennung: technisch vs. didaktisch" .- PID diff --git a/figures/dataflow-and-governance.pdf b/figures/dataflow-and-governance.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e1c021c5e0284aa29f4fedc7fc5981f744afecf8 GIT binary patch literal 61981 zcmY!laBIV>5*q4R4PSUmqQXoXqT01^3kC?EDx_1&`Fkl$_M!V&{ya{M=N1LlYxC0}xaQ zPE1QI%7kjxKLx)MJ3Fq_ycAFX7$X8AIZ?roOW(;?LEkUGC^s<& zp~wWG$k`F32%^--S;2ry-^U9~hJ(a?eH2W%^n)E0N{UKTv72RvFe^DxLC*raDsxm- zrr1?kAXJ4^7NjcZNBAdYr6!kf=?9l4m4HRu@{4l0^n+51^Gl18Q;QXBY(U|g9GqIB z5DgAm{gBj(5(RzF+{E-$Cn)UlX_w!Z-W63>&1J) ze^?F5n&wtCUD?3Y6e4oqpOC7DiTYma&e~N;X>5%Trf!;D$!A``Y09e`!T)H&iXUZ} zKhCedd_(5%GDXJ)Q8$WL&6+53-Oc*!7Y1!l$p}zNfZ7606PAN1SWT!NtOlsTx*HU% zt{3kG?_o74+xLxSWg;ufN)3+R-cuAV#=N}Ky+dX4oZ>cz4_-TWd6clW2OYg5v~BW@ zqrCUm@&328I=gnkeG^uW5bfy_KFUo=Z%QsW@$(By%3y}7At<4MvK*+)0jJG@Os&)p zR&1%&<>I~IJ4_O{A3DuwkP35{(ABhIzYC|(+3EN8yL=AlQAsq|Q{=lOx}ZVr*`sp@ z%DVi_L~C}R`*A*O>3ri?y0Hfy*k$(KOYp2uHBJ9| z$?@cZr9p=87n!i_o5S|!@lH?cFE{iujd)gyot?O8af{W-^vIN{fq83Lq{^`btr4Om zz*kZkTN)UeBfIj=-n;8eclXLx?Vq=39dk~k%2#d^sTVsYAKQ6?(aP`w|Axu$TATBK z9`O70@1R1Y*0qqex$ob8xmzOrHoq@aDrDss=OB@(5zGEPKjCgy=k@UUnd9f<+G^W_W%Fo-~RXU`TyTO?yjHo z`2N4=$KU_E|Nnpg|F`vjf7bv1v%hcu@7?$RPQU-({(r@j$M66Dv;X(_eW;uK(*-&L zAJ@zO|MT&@eEqM2TS1={eKPN8O^A}*c`a+|j=Dl$mCb&fUp*H;FS~ZKF6Qem|Nl?F z%R4Pr-SfcW)rytg6AJ@m!)9NJdfooNp6xvMq7>GY{Vrebe_6V%?eVSPlRE8BToz9W z3V3^@{jd0?bM^m|k|&uztN(NO`1^mwwkn?6@_)A1|5f4Ay;q@4`vimjIsX4J|KEb#KlNMl4GR6%p05kA)(G~^4O`f3_5ano zkK#M#Rdam3b2&k?{fbI%k70c@|HJzioOe|4FSLAiVdg{q+OAJ`<^O#ykN^5TZqd|0 zgNnLpcFnietG>Oz=9n>IiOys`Np`nl?VTqbpI-Nu-|zF)_xl5@$y>s11*T=)>8OkT zKHk6OFq24{%_mkn&`FfcNPCVUcbLjIVkuf?`npR2VJ9H zMZS1&udep`PwtfaCG*sjO;52J3r%ahXZ?TMyWqOhZ$9zgtIg7G-T7B^^~pc$CjV*U z`@VYlhWFkzx66;;to?9Qe%9K5rf1!3&$9h}eyu8U-^-_!|5z8kUH>~wH?efrzH9II zONaj5o%ZwV;kVacv)rHhqy1ZU>YrafpZq@eRXXnPZTml2tLoiLGg8dTpYQHD% zueQgPU0E>;zB(lSl1^XoFFI|-`(J+P_qP%lkD;-<#Zi|Mkj!E5kbb<>&W5>vg-t_wBl_ z@{xK+m8bi&KA!4iKk~OU=xNT=vyXn9`|{`O+BfoV!u#6ZS4T!_#h&+6OSP)#d;Ge& z%5!Vk|G$r$e|fCnsJr+=bN&8{IkFP8I9z!w{z&GUc>8*Ttskz-TNQkWnxXgm z#NLkwLxP_wK3(xFSwiNY=p3!9HUfvElKxgL`E~j+pGv&^l>VweKTf>RvlsdO@#D{r z>*c3(xJ{e%(&Og8!^J6L&mO;S4p!6a{o%2+L@iTcVMz4TrhXq!uC0^WW$f*OURN4i zxnYu~dB-#Qx46mzK7S*H%Cv}^U!OcG`t##K$g3RL-icQKqE6{wdA{@8{Qf)f@{`=u z8fU*ynOPAt>59|Lmk*9yDw4i`?eWfY^Ut4&muIbOkK1wA!|Rce*7>4>Ea!@V|Ler= zU-|KQ;?LKMmsuHawN!TZ4XL
eqKpxUP-ZnA;{N3 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 T0avW12IiKgT&k+B{%%|Vw+-%o literal 0 HcmV?d00001 diff --git a/figures/dataflow-and-governance.mmd b/figures/dataflow-and-governance.mmd new file mode 100644 index 0000000..d0b171c --- /dev/null +++ b/figures/dataflow-and-governance.mmd @@ -0,0 +1,51 @@ +flowchart LR + %% High-level dataflow for telemetry in serious games with governance controls + + subgraph C["Client / Spiel"] + U["Lernende:r"] + CG["Consent-Gate(Opt-in/Policy-Version)"] + EL["Event Logger(Batching/Offline-Queue)"] + U --> CG --> EL + end + + subgraph I["Ingestion"] + COL["Telemetry Collector(Auth, Schema-Validation, Rate-Limits)"] + end + + subgraph G["Governance & Identitätstrennung"] + PID["Pseudonymisierungs-/Mapping-Service(getrennte Identitätsdomäne)"] + RB["RBAC/ABAC Policy Engine"] + AUD["Audit Logs(Zugriffe/Exporte)"] + end + + subgraph S["Persistenz"] + LRS["LRS / Event Store(Rohdaten/Lernspur)"] + end + + subgraph A["Analytics"] + ETL["ETL/ELT & Qualitätschecks(Dedupe, Missing Data, Drift)"] + AGG["Aggregation(KPIs, Zeitfenster, Kohorten)"] + ADB["Analytics DB(materialisierte Sichten)"] + end + + subgraph R["Reporting"] + DASH["Dashboard/Reports(Filter, Drilldown, Exporte)"] + ST["Stakeholder(z. B. Lehrkraft/Trainer:in)"] + end + + %% Main flow + EL --> COL + COL --> PID + PID --> LRS + LRS --> ETL --> AGG --> ADB --> DASH --> ST + + %% Governance controls + RB -. "Zugriffskontrolle" .-> LRS + RB -. "Zugriffskontrolle" .-> ADB + RB -. "Zugriffskontrolle" .-> DASH + DASH --> AUD + LRS --> AUD + ADB --> AUD + + %% Data separation hint + COL -. "Trennung: technisch vs. didaktisch" .- PID diff --git a/figures/dataflow-and-governance.pdf b/figures/dataflow-and-governance.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e1c021c5e0284aa29f4fedc7fc5981f744afecf8 GIT binary patch literal 61981 zcmY!laBIV>5*q4R4PSUmqQXoXqT01^3kC?EDx_1&`Fkl$_M!V&{ya{M=N1LlYxC0}xaQ zPE1QI%7kjxKLx)MJ3Fq_ycAFX7$X8AIZ?roOW(;?LEkUGC^s<& zp~wWG$k`F32%^--S;2ry-^U9~hJ(a?eH2W%^n)E0N{UKTv72RvFe^DxLC*raDsxm- zrr1?kAXJ4^7NjcZNBAdYr6!kf=?9l4m4HRu@{4l0^n+51^Gl18Q;QXBY(U|g9GqIB z5DgAm{gBj(5(RzF+{E-$Cn)UlX_w!Z-W63>&1J) ze^?F5n&wtCUD?3Y6e4oqpOC7DiTYma&e~N;X>5%Trf!;D$!A``Y09e`!T)H&iXUZ} zKhCedd_(5%GDXJ)Q8$WL&6+53-Oc*!7Y1!l$p}zNfZ7606PAN1SWT!NtOlsTx*HU% zt{3kG?_o74+xLxSWg;ufN)3+R-cuAV#=N}Ky+dX4oZ>cz4_-TWd6clW2OYg5v~BW@ zqrCUm@&328I=gnkeG^uW5bfy_KFUo=Z%QsW@$(By%3y}7At<4MvK*+)0jJG@Os&)p zR&1%&<>I~IJ4_O{A3DuwkP35{(ABhIzYC|(+3EN8yL=AlQAsq|Q{=lOx}ZVr*`sp@ z%DVi_L~C}R`*A*O>3ri?y0Hfy*k$(KOYp2uHBJ9| z$?@cZr9p=87n!i_o5S|!@lH?cFE{iujd)gyot?O8af{W-^vIN{fq83Lq{^`btr4Om zz*kZkTN)UeBfIj=-n;8eclXLx?Vq=39dk~k%2#d^sTVsYAKQ6?(aP`w|Axu$TATBK z9`O70@1R1Y*0qqex$ob8xmzOrHoq@aDrDss=OB@(5zGEPKjCgy=k@UUnd9f<+G^W_W%Fo-~RXU`TyTO?yjHo z`2N4=$KU_E|Nnpg|F`vjf7bv1v%hcu@7?$RPQU-({(r@j$M66Dv;X(_eW;uK(*-&L zAJ@zO|MT&@eEqM2TS1={eKPN8O^A}*c`a+|j=Dl$mCb&fUp*H;FS~ZKF6Qem|Nl?F z%R4Pr-SfcW)rytg6AJ@m!)9NJdfooNp6xvMq7>GY{Vrebe_6V%?eVSPlRE8BToz9W z3V3^@{jd0?bM^m|k|&uztN(NO`1^mwwkn?6@_)A1|5f4Ay;q@4`vimjIsX4J|KEb#KlNMl4GR6%p05kA)(G~^4O`f3_5ano zkK#M#Rdam3b2&k?{fbI%k70c@|HJzioOe|4FSLAiVdg{q+OAJ`<^O#ykN^5TZqd|0 zgNnLpcFnietG>Oz=9n>IiOys`Np`nl?VTqbpI-Nu-|zF)_xl5@$y>s11*T=)>8OkT zKHk6OFq24{%_mkn&`FfcNPCVUcbLjIVkuf?`npR2VJ9H zMZS1&udep`PwtfaCG*sjO;52J3r%ahXZ?TMyWqOhZ$9zgtIg7G-T7B^^~pc$CjV*U z`@VYlhWFkzx66;;to?9Qe%9K5rf1!3&$9h}eyu8U-^-_!|5z8kUH>~wH?efrzH9II zONaj5o%ZwV;kVacv)rHhqy1ZU>YrafpZq@eRXXnPZTml2tLoiLGg8dTpYQHD% zueQgPU0E>;zB(lSl1^XoFFI|-`(J+P_qP%lkD;-<#Zi|Mkj!E5kbb<>&W5>vg-t_wBl_ z@{xK+m8bi&KA!4iKk~OU=xNT=vyXn9`|{`O+BfoV!u#6ZS4T!_#h&+6OSP)#d;Ge& z%5!Vk|G$r$e|fCnsJr+=bN&8{IkFP8I9z!w{z&GUc>8*Ttskz-TNQkWnxXgm z#NLkwLxP_wK3(xFSwiNY=p3!9HUfvElKxgL`E~j+pGv&^l>VweKTf>RvlsdO@#D{r z>*c3(xJ{e%(&Og8!^J6L&mO;S4p!6a{o%2+L@iTcVMz4TrhXq!uC0^WW$f*OURN4i zxnYu~dB-#Qx46mzK7S*H%Cv}^U!OcG`t##K$g3RL-icQKqE6{wdA{@8{Qf)f@{`=u z8fU*ynOPAt>59|Lmk*9yDw4i`?eWfY^Ut4&muIbOkK1wA!|Rce*7>4>Ea!@V|Ler= zU-|KQ;?LKMmsuHawN!TZ4XL