From 33b3975b61fd66d2726fe73d7283f58ba5208cf4 Mon Sep 17 00:00:00 2001 From: team3 Date: Thu, 17 Sep 2026 19:10:10 +0200 Subject: [PATCH] update --- backend/app/ki.py | 190 ++++++++++++++++++ backend/app/main.py | 55 ++++++ backend/horror.db.bak | Bin 22548480 -> 22609920 bytes backend/tests/test_ki.py | 115 +++++++++++ frontend/src/App.vue | 32 ++- frontend/src/components/FilterSidebar.vue | 4 +- frontend/src/components/KiTab.vue | 225 ++++++++++++++++++++++ frontend/src/composables/useFilter.js | 2 +- 8 files changed, 620 insertions(+), 3 deletions(-) create mode 100644 backend/app/ki.py create mode 100644 backend/tests/test_ki.py create mode 100644 frontend/src/components/KiTab.vue diff --git a/backend/app/ki.py b/backend/app/ki.py new file mode 100644 index 0000000..e919d56 --- /dev/null +++ b/backend/app/ki.py @@ -0,0 +1,190 @@ +"""Filmvorschläge von MiniMax. + +Das Modell kennt Filme nur aus seinem Training — keine Datenbank, kein +Netz. Es bekommt eine Beschreibung und auf Wunsch die eigene Sammlung, +nennt Titel mit Jahr und einem Satz Begründung. Jeder Titel wird danach +bei TMDB nachgeschlagen. Was es dort nicht gibt, fällt weg: so bleiben +erfundene oder verwechselte Filme draußen. +""" + +import asyncio +import json + +import httpx + +from . import search +from .config import LANGUAGE, MINIMAX_KEY, MINIMAX_MODEL, MINIMAX_URL +from .teaser import THINK_BLOCK + +ANZAHL = 12 +MAX_BESCHREIBUNG = 1000 + +SYSTEM = ( + "Du bist ein belesener Filmkenner mit Schwerpunkt Horror und Genrekino. " + "Du schlägst Filme vor, die zu dem passen, was gesucht wird. " + f"Nenne genau {ANZAHL} Filme, keine Serien. Nur Filme, die es wirklich gibt. " + "Nichts vorschlagen, was in der Sammlung steht oder schon gesehen wurde. " + "Mische Bekanntes mit Geheimtipps. " + "Antworte nur mit JSON in dieser Form, ohne Text davor oder danach: " + '{"filme": [{"titel": "Originaltitel", "jahr": 1999, ' + '"grund": "ein Satz auf Deutsch, warum der Film passt"}]}' +) + + +def etikett(film): + """Titel (Jahr) — so kommt ein Film in den Prompt.""" + jahr = film.get("year") + return f"{film['title']} ({jahr})" if jahr else film["title"] + + +def _spanne(unten, oben, einheit="", ab="mindestens", bis="höchstens"): + if unten is not None and oben is not None: + return f"zwischen {unten}{einheit} und {oben}{einheit}" + if unten is not None: + return f"{ab} {unten}{einheit}" + if oben is not None: + return f"{bis} {oben}{einheit}" + return "" + + +def vorgaben(filter_): + """Die Filterleiste als Sätze für den Prompt. Nur was verstellt ist, + kommt vor — die Leiste schickt auch nur das.""" + f = filter_ or {} + zeilen = [] + if f.get("include"): + zeilen.append("Genre: " + ", ".join(f["include"])) + if f.get("exclude"): + zeilen.append("Auf keinen Fall: " + ", ".join(f["exclude"])) + for text in ( + _spanne(f.get("jahr_min"), f.get("jahr_max"), ab="ab", bis="bis"), + _spanne(f.get("note_min"), f.get("note_max"), " von 10 auf TMDB"), + _spanne(f.get("dauer_min"), f.get("dauer_max"), " Minuten"), + _spanne(f.get("stimmen_min"), f.get("stimmen_max"), " Stimmen auf TMDB"), + ): + if text: + zeilen.append(text[0].upper() + text[1:]) + return zeilen + + +def prompt(beschreibung, sammlung, gesehen, filter_=None): + teile = [] + if beschreibung: + teile.append(f"Gesucht: {beschreibung}") + regeln = vorgaben(filter_) + if regeln: + teile.append("Vorgaben, unbedingt einhalten:\n" + "\n".join(f"- {z}" for z in regeln)) + if sammlung: + teile.append("Meine Sammlung, so etwas mag ich:\n" + "\n".join(f"- {t}" for t in sammlung)) + if not beschreibung and sammlung: + teile.append("Schlag vor, was zu dieser Sammlung passt.") + elif not beschreibung: + teile.append("Schlag vor, was zu den Vorgaben passt.") + if gesehen: + teile.append("Schon gesehen, nicht vorschlagen:\n" + "\n".join(f"- {t}" for t in gesehen)) + return "\n\n".join(teile) + + +def parsen(text): + """Das JSON aus der Antwort ziehen. Das Modell hängt gern einen + Denkblock oder einen Satz davor — es zählt, was zwischen der ersten + und der letzten Klammer steht.""" + text = THINK_BLOCK.sub("", text) + a, b = text.find("{"), text.rfind("}") + if a < 0 or b < a: + return [] + try: + daten = json.loads(text[a : b + 1]) + except ValueError: + return [] + filme = daten.get("filme") if isinstance(daten, dict) else None + aus = [] + for f in filme or []: + if not isinstance(f, dict): + continue + titel = str(f.get("titel") or "").strip() + if not titel: + continue + jahr = str(f.get("jahr") or "") + aus.append( + { + "titel": titel, + "jahr": int(jahr) if jahr.isdigit() else None, + "grund": str(f.get("grund") or "").strip(), + } + ) + return aus[:ANZAHL] + + +async def fragen(beschreibung, sammlung, gesehen, filter_=None): + payload = { + "model": MINIMAX_MODEL, + "messages": [ + {"role": "system", "content": SYSTEM}, + {"role": "user", "content": prompt(beschreibung, sammlung, gesehen, filter_)}, + ], + # Wie beim Teaser: sonst denkt M3 das Token-Limit voll + "reasoning_effort": "low", + "max_tokens": 4000, + "temperature": 0.7, + } + async with httpx.AsyncClient( + headers={"Authorization": f"Bearer {MINIMAX_KEY}"}, timeout=120.0 + ) as http: + resp = await http.post(MINIMAX_URL, json=payload) + resp.raise_for_status() + return parsen(resp.json()["choices"][0]["message"]["content"]) + + +def _dauer_passt(karte, filter_): + dauer = karte.get("runtime") + if dauer is None: + return True + unten, oben = filter_.get("dauer_min"), filter_.get("dauer_max") + return (unten is None or dauer >= unten) and (oben is None or dauer <= oben) + + +async def aufloesen(vorschlaege, filter_=None, ausser=()): + """Jeden Titel bei TMDB suchen. Der Treffer mit dem genannten Jahr + gewinnt — das Modell liegt gern ein Jahr daneben, also mit Spiel. + Sonst der beliebteste. Ohne Treffer war der Film wohl erfunden. + + Die Filter der Leiste greifen hier noch einmal hart: was die KI + trotz Vorgabe danebenlegt, sieben die TMDB-Daten aus.""" + filter_ = filter_ or {} + + async def einer(http, v): + try: + resp = await http.get( + "/search/movie", + params={"query": v["titel"], "language": LANGUAGE, "include_adult": "false"}, + ) + resp.raise_for_status() + treffer = [ + t for t in resp.json().get("results", []) + if t.get("poster_path") and search.passt_zur_leiste(t, filter_) + ] + except httpx.HTTPError: + return None + if v["jahr"]: + passend = [ + t for t in treffer + if (t.get("release_date") or "")[:4].isdigit() + and abs(int(t["release_date"][:4]) - v["jahr"]) <= 1 + ] + treffer = passend or treffer + if not treffer: + return None + bester = max(treffer, key=lambda t: t.get("popularity") or 0) + return {**search.as_result(bester), "grund": v["grund"]} + + async with search.client() as http: + gefunden = await asyncio.gather(*(einer(http, v) for v in vorschlaege)) + karten, dabei = [], set(ausser) + for k in gefunden: + if k and k["id"] not in dabei: + dabei.add(k["id"]) + karten.append(k) + await search.details_nachladen(http, karten) + # Die Laufzeit kennt erst die Detailantwort + return [k for k in karten if _dauer_passt(k, filter_)] diff --git a/backend/app/main.py b/backend/app/main.py index 16caa0d..b307734 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -4,6 +4,7 @@ import secrets import time from apscheduler.schedulers.asyncio import AsyncIOScheduler +import httpx from fastapi import Body, Cookie, FastAPI, HTTPException, Request, Response from fastapi.responses import StreamingResponse from fastapi.middleware.cors import CORSMiddleware @@ -15,6 +16,7 @@ from . import ( db, events, features, + ki, search, streamproxy, suggestions, @@ -231,6 +233,59 @@ async def aehnliche_filme( return [] +@app.post("/api/ki-suche") +async def ki_suche( + response: Response, + beschreibung: str = Body("", embed=True), + mit_sammlung: bool = Body(False, embed=True), + ohne_gesehene: bool = Body(True, embed=True), + include: str = Body("", embed=True), + exclude: str = Body("", embed=True), + stimmen_min: int | None = Body(None, embed=True), + stimmen_max: int | None = Body(None, embed=True), + dauer_min: int | None = Body(None, embed=True), + dauer_max: int | None = Body(None, embed=True), + jahr_min: int | None = Body(None, embed=True), + jahr_max: int | None = Body(None, embed=True), + note_min: float | None = Body(None, embed=True), + note_max: float | None = Body(None, embed=True), + filmabend_sid: str | None = Cookie(None), +): + """Vorschläge von der KI, bei TMDB nachgeschlagen. Die eigene Sammlung + geht auf Wunsch mit, die gesehenen Filme als Ausschluss. Die Filter + der Leiste sind Vorgaben an die KI und danach ein Sieb.""" + sid = sitzung(response, filmabend_sid) + filter_ = { + "include": [g for g in include.split(",") if g], + "exclude": [g for g in exclude.split(",") if g], + "stimmen_min": stimmen_min, + "stimmen_max": stimmen_max, + "dauer_min": dauer_min, + "dauer_max": dauer_max, + "jahr_min": jahr_min, + "jahr_max": jahr_max, + "note_min": note_min, + "note_max": note_max, + } + beschreibung = beschreibung.strip()[: ki.MAX_BESCHREIBUNG] + sammlung = ( + [ki.etikett(e) for e in wishlist.alle(sid) if e["mine"]] if mit_sammlung else [] + ) + if not beschreibung and not sammlung and not ki.vorgaben(filter_): + raise HTTPException( + status_code=400, detail="Beschreib, was du suchst, oder gib die Sammlung mit." + ) + gesehen = watched.alle(sid) + try: + vorschlaege = await ki.fragen( + beschreibung, sammlung, [ki.etikett(g) for g in gesehen], filter_ + ) + except (httpx.HTTPError, KeyError, IndexError): + raise HTTPException(status_code=502, detail="Die KI antwortet gerade nicht.") + ausser = {g["movie_id"] for g in gesehen} if ohne_gesehene else set() + return await ki.aufloesen(vorschlaege, filter_, ausser=ausser) + + @app.get("/api/search/{movie_id}") async def search_detail(movie_id: int): """Volle Daten zu einem Suchtreffer. Erst der Katalog, dann TMDB.""" diff --git a/backend/horror.db.bak b/backend/horror.db.bak index 0ce16202440f318fb545299d4cd4d22bbf520849..856527241a28276d4454034c9e366a6770485a30 100644 GIT binary patch delta 137667 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 z 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 delta 85929 zcmZrZ2V7Lg)3>kPyTaYU-GP8K5iE!tMLHZEEC|G20ULI(cfpD^U@T9K`q0E41vO#S zC=ZMpV^qM{8yXvD17qy%+q=UrZ!8L_bIJ z&mRT)E5*-=?g^Z^bc3@F?B18v%`bTX>8T%+J9)&=%)z;n#!d|A5FBhfko43J&K{dP z)>;MHSK4;-&^qKH3-bL03FrvvZqZULfh4{W=?mn0TV69LymF!+H-;N_+gXlRgGRxWN!=2rz`A9}_1Ah8aRS zga!$j-+6$Qlx&^(&wBN~9P?^h2rfH3z;WM5T>K)<45n!ZvYhisZcrFt!=k7ExSUdrkJ_~$}O|d>7aM(zT7k~j`9)yiWK+Vd| znE#x0yg7*<=j?`1>An_xkM(@+TVRWAl8Fa>#4HB8>;~UpHR?-2Aj|e^QFA{lPPzcBZ{xSD$)3@gx@Kmt~f{S?f? zvC{xLi3fy{Z@_P)3~fROOzZg9L2iEu=&VhUGI#;w?5(wVFu7 zMrz%Rs390D+TkZB;;?w8{29R!wB??-5qcY&_7ak)me6Hv9#JjqE7yW50&eyqDzW}Y zwI<530v{jZXUgT@96xblfWILyz&|8PA|YUH@xX0Bs6<`10c*+>6r>D9GR3Z4Iq}HI z{3$uS$M4C&lh?cn1!}k;i0Ff{aeW73DYoWW5k$6l5nR2I@FZ7C*IOpN6F?YC92K|V zW+xL4ghT?lWa2s*`0u%f7z_sg4#7baCmI4n0|G+>7Y(0V9px&CkM|%JX3QOj1T_4i zGx3m6#ArXhC{Nt{J29lcm2=9v61dDclSag0JJzfh;ZL%GmOoDIVMbqK7B;o3MG3C( zRVHDeh|@zXN1~puWLf|v*S?xi!0tncDH!oz%q2QwY}Ix;@uRp$Sf5WgXh8S!Vj>wM zgp9SsAPj94KBO1?a|7`K+s}HQC?r5S%-cd7!GuEaPGTokU@9eEirEF$3&fw;;xGJ4 z?8Z7@e46NqP1aOR=&@O{SBO@W++lfIUBnRbd&xpR<7r3W#FhO{%He<;#2k!2>g$N{ z*nmSG5~r~NLmv@8U;{pDAXpj5fUn;Wr?J)i{uwou`FoqDUibvQpTzqY^#%@nI-dlT zu!}KT_v4)+iD|d#^h(tQIfnbYDdYnTCx4`o-(Ur~ zJ;_XLlq-EnhW7h6M}_($ehLl=o;cCJLqKR)K#;+P86qJhg%a5rNg>0}+1(CI7a9il z21jVG|27T^2nh;8r+rXJNLXM%utY)*wvHjn%hz!99 z&s0S2z{dM_9hrcQXX43PO1^6Po#eeb_e+vh77f6K&k9Zf)b{(|lNgsbl#+GW)?7JA zGT4Ci0yz-tKm8;bNXxB)hISj?kI&et2Tr`u+#kpwVjt{K( zJ4Q5Du98x07*iej9HXLpPsn!|%hflK&q<=!Q0~sINPE7_&>cwm{uS{+1KGbx53IAm zcO=f8rq5)Nc-{Ql`e@(=H?vd}zIrv)7At7(K;>e5zPdTp30sNDjoO9n(8e}YEH;~Z zKWZ!12iJl6nqaM4CfUmQhEnBX{&^ZojTaBWyGmn#FI*EzrHG4Ry^#tL^SkBHZ3laF zqLyI8nbIf0 zfO?G;Oj%0hV60MKM4iBh0B)dK;S=MjLE?#Vd;7$>!-?CdO(bJg`eCzO)H!UJ#!_mf z7*BBdVJd@e@gH9IM{*(5;BQtj0z*SPbO^2}NCB9NAgo@H0=^MXNbp~r0;E_;+_Ds~ zf&3rchZw?wg9FiJ!{0yDKPbSzyoNfBap#5WlpM!L9rYDfkZ_MWOUbO1LzuF-aa#z- zO)0)W&PAE1(_$jBeMD7=vB1ri#ks=Q4HSNbYi#ZdJmBEJslk*CDNVEAUZ;f#e6g!H zaD?@5sMlg#L(^yKow!fF@y{!lsyTY%?Cx+THBJXX}d z^($fRwfquUWgd;&kNxew6sYn%B3doFAyy-iF9rkV6h zY)SR`bTHOU>v{BZd}fPi{5o5@jP}Et)ECjyu!2!5=`~m%ina6~V#L9Ep2ln!&h2OqYK`(=0C9ht=ip?Eat$C z*cNcib-Jr~s{A^oC-8xdb@W7WF&ul3zKnI3_K?1d6+}Lwzr*HeYM|FEWY;bCMMcP1 z&b^v&gj?U!My%s!pJ^#Zb)OYXFG5!6W4=5~o8@pGQ}ufOn!OfXTIQ)3TtRrKW?Eol zYW2(+3@;`(CQpp{rcE{Ft5?i?j}7%CTLlH!}BW*{u%7 znNL?RnX@g%Ech;w8HufNY$s+MHce9+vlgqdv^z7Ll3PW#LM2&i?#O}9JRXHqUDrO$ zDQwWjOy)G!-SMGJFRVMSk<4MNhAEf9Rgj63nKM|EPBWO*Sb-^@S&a?5Xd$!ni!BLw z&gA{yv<42`-Y7!JXRT|AwrBKGW;|v1&p{Gk2nq-e3NuUkAbbJ3FDz0 zpd4`2BNgeILUg^ncP`JVE0k= z-C#wfVimB~N^dcQf%(T23!;>RK`V*+n)*le*XkUOHJmyLFBwj)P*L7wD#<;%bjqES zJXp#BF6S%$uj$=@D>1x$jl1$-;X#cO9@N-$sUru1KRIcm%?fUPqm8ek0&pM?bON4| zkFci9!wztH`!qCfm(T;a6*7O>K;|#ir;Vu5X--hnp`R)@J zv-Kgv#~tznuJG9kwS8Aq_b?~Dt*(%+24g`o@Zio>DxPtbRlZDN(TU(O?Ml7w2U@H5tFNk;BCG61Fd3w&hXO)gE-#V~xA{gLt#**dsv6}^ zvKOk~R9j?cWLs4;WV2P>WxZ6sD#qrv%wTiK#zpyBSu44&+@+j{R`Smu_}N`MU%_h% z!$C{leKidjxVW8mMj)9D+Huk>Z8vVWZv{!qTPr|&r8d+teCc8eUa9Wky%e5^|EZMZ6|Dv zc8*xa@@Lf=&>BABwKFkJ8UMYu8&*)gL)$3kHvY6C7t~*H*-A3~sMUluv9I4V_j}yp%qRYj4$hOy=z|dlF)NR6QTyfLw7jGt9 z)kfC|t5NT#yMc+sb0NB?guKZfa0wX?i#zKbxLckaDwWNx-?AC5AUQ~M9QA77(TwtLpgs~(}RGjtL`#ZtszY} z37hBGp1Np~Rhc#JNn-}^<4QwO@8|mHe6VI@KOMTH{6iP8K2vu`Y^>vN7)Dy4edK=(v+le z<9qe!+RbT@J%7;sjQ3os zbH^}kSFQ`gYV}buEogSixvTbtKH6aZCMs+PJDk?7 z5EBcmsn)%~3eH~C+2N{ToesS?Oir6Rdd!qQV@6Kls_y9m#hdx*p01W;2X}jY?y3W` z5MHj=eGt!!zg4FN=;5M47ljREe5otI*yOj@I$YZu^+D$=RyO$4f)5g1zp;9I4810` z-d)}#W^JZITPHoH)mdL0;X60|eymw}EB#0eqiuckL4*uFu8m%rK#j=cYL`=vu)tTJ ziA~ewr+>}J2Bn^VzVicfdaUSW)bcV3^&$FQVluKmio$0`{U|Y7;NT?vd#vN(9rcs3 z8ue-V3)ohi?5i&%So7uY@h&U80(=vQ$HT#k0C?!42JZHBlH>A7}dG@jx1|k zGtm{gPt~8qkkpv3Ux_tXzEJ-J!`i$h`Ue#2b=SQAL^L<9NIzCg9i}3^5tDTR>-2lD z9!e9>y+c2nA{+;E!T{P43P0#&*nsCt^>M8T-F0YxS&sS()^j-2feU#?taWVKgSU z+1{#Ul2YQfdbm1H-JCc?d_#;P5>&4U7gddFmukLhpehu+0@W&&9oS*>#O9<;377-= za$jp)9DIY=tBNa%{fcG4hTX3iCV3!#AwMJECeN4mmIug{vimYYwpKPlmMUw-uI6e= zoOPVxd_RT@ym`e+VBDO zGWAf-&fWcIx)(4Y8&pl@!QB?!x^Rw%JDlU;G4E@#KjFhk%REMK=r~GO5-hj_eg>;S zF6ao)7*aCmz zfUEh=W6M=W%wh`3eQgo=AZUlc7eRXjevsT}0BO_!@L0krYhL^;Jpnd>DdjK;~M z=?3%7OFv{+SD%0J+J-}Rh<$}n;}4-GAhnc4dyQ^d0a091Wxza;$DJ;AtmZ0X-!X+7 zs{#-N!i`lyIVy6Hq#Bsz&h4e5X*&P<2=NaxE)EzLRYR z(?K`j3#43)!SO9uQWe7RDy4Z-9#@4pc109r$4NDz99N6D1Y@pT@_6H^z8ymu;3<)I%R%T5{uZ|~y0=m5l`wkPQXFi8T z(@gB*kj^J}Kn)$vU?+mRH2lvm9v0fmqq#XtV_HC8MfgtfF~Qw&3wMNX)!}ayZ0^SW zzN(%MCGeed_)SdgqDuYcgu`^+zk?d-YJJ*3`0*}pK{55wc*qVV_FG#dHv zsVq@Dp-HKmyCb}tcpO+)8vct^X1zk%)=lAS?*}8aoPgnS@p`$dLb#7WrFR8?ihJi9 zGrJ;>8@eX^2S#q~L-7#3FK6EhKzE^Am%>?Wa*cK24dUj|)DXT%&RX`0lHKO3&e|i> z`#0~xdtj&i^UvYW@Mh|WCs;w9TSPVXnsCr3BAEgn<%WpYOw*GxGZKCdj?iQ1a}A5A z!bsI*jJVIrEC#;ePF|xeI;cH=t8D_h@V!onsKF}NrbV=ofmHaucf@1t7mb+_*RlCs z%#G+GZDJQy&kVkLxFa&A{XT%UfnBFW%)~H_>b8V$@*~brO_xi$Vl=m}L#zvYG(X}I zru*Mo81XLz7e(NP=0-l^mQ42RUfuLNDedl0wfYBf?z7|VA-yZ&8ir<5X~ait){R00 zB7(%trz_{#*)EeT;j%}@wSeBIBEH8c=t6Y_a=S5Gn!Qb(2lurYSzY+N58lWkUm!y- zz4!l!7>$k8?`j0D^EcE**t0}Mf02P!!T-KE9N59+`iMgDa2#sv1pjJ?xTydD*1V7S zgt7OP&k~^P1jklrbA={HX7o5Z`fdr{9Y!rMHgB36Rst* ztwQ2h$HS?MvRU;PJ##Jd67BI#1kL4DDsXi@nKZcy|!R|WGC@#-~~QXt^l6f>vlzA z<)+feYvL`0XJO=45_I5@IP-*Seva%c7US@-5b3}utnPt!_at-s@r}Q=MeZuID|8y` z-6Y~9LXLQ5rs~MqVkUy)u0)Oz56RWnMK))FbfyIT_k-D*kSB#RA4U!%**6!E|51`W z4nBGmc>|kBO+#e8m?1bM^uyr$&yhQ5#;UHvope+-#*#W|)Ol-~>G1CF&JM0q4`AZp+vliyN%o9vRw&lcKJZEOOXDA_-{%EvH4fi808X%a3Xa$4!sAN3v#1!}-5J z6&x@-Do0!iqDsgc&1#YaC;C_&Gn(=IVk3GRs9F#ejMWB(Q9USd5%yXdbxHgSuK04i z3+%o;YBvE&%ZsC~Q(yM=&Z?*gj267tMI93344U{T4~zzNJELl`8V#jUZ^YySp9@j{ zI>)M`+EcOxt_L$7FVMf3#e=R6=0}XE_Q;eHcOeS*TYPXi>b97qVND&fL=aQP@S6`t zBSQ&z6!nJ~(HuGyoshjE>Y;cNoau9v3!Nzenex?DPYZdo|KM5MZz8ICyGfFLJcy-U z^MRS1ccLvXIA7^eGvkonU=)J%2S?hhe<2F8Y>u zG`_md9x3>*8lo3r1ia{NbO2-b52so=y5)6FcpL2uAAXL0&B`LpUJ{(@-r@?nrvi>?tI48NOUk%PGTs?1sPSC&?^l#ZvR4P zba<0*>C|xJS7O{X8P(nzjkpW&cZtSGv9`{c(u^+jeF^%HzcZsda4=8)7ut4}!Y%eiR@a4s&A{LCIs)BKbl+gYFr~HZ#C;B~y zgfY5Fo-x{J#idpitInukfWl6qu;Z#0kx^zO|1O7ikB#A^tYY%1AH#aL?=sVBs^piq z0xCG;nQ=Y+vl2^g1%pCD_L-75Bhj`>aQ*);qVD zyHdH;O`L4mtsl2<520(iC9|z#7GU(swT(#;BMO@QV#>wy!s2Ca%vSLN;rG*G zkk^BC93p2#KW)AFCoPOA!TM}0iov7?yw1lA zbRioYXj7=bET}-?56gP z-ooWO#6A_xk8d?ohx~XpH;awN)?spsO_9r;ti-~M&9ge1_&xAJd@-|XWTml|4RM5#9b+-O{Fe<$i+!b(Ssm7?AE#JvKQ04e zk6|2R%8cD2Wh~CWGvJDx*Z?un!L!3-9Wi7y=EmZ*-k2YI2J7(T+}JQ1Frd6RcDIyR z+J~FdBc&PVIv_?3FL1H9v2CjOHr5UkdsgOr%g3(73=wN~$F?J7=#d4*I)TUI_}Im6 zDE905-q>fN?SrP$*h^%S5yr-8Ja_J7tUbJSAoc+^y>sQUm%p57iV00G>c1Y2bro*~ zY!G4@?CkjbTkLJDhN(K1k+MisqT4088os_1i!0Z|uf!IUtX1B+g_Ylk#oqM39AI^^ zi?Ckj+>ebQiHLqyE5YshSloFl;Zf{jtp4SOSRbrF`7+ih#MK39BwEy8RLSm^R-noaSUJZ z*avm#c06t^_WP<|<5ql$_fhGrD$2y)>cJZgN291943$QWs z!{T$q^aC4>@u}iTz~sdEW&iJKdbMM`4PHGh{$Cc_%y>pj<@`CL6LQ$`7#@EDn`vWi z{4w#d1&`#%E3q2q7seYfbSsy}|A7^lisI!=lN$mENwNwO*ER87u{BR#7oUgEnU4>} zmKd-#{svaiYkMXN1Hp60W%NWW(AD@J{?!m$Mx7bJ~As)91v_Bs2 zBV&(RD9Y&u%sv}G4CBMv>iC~9Bp`#sf-fSx<GGHmu2*a37<#D`^S1i~RF$2~WkmjC^$x{uP#-o6r`Mk#D9YJj7;d%1>Ag`>ggETiD9X?oo7Jba2_q>&n`OO+&)b-gE=J842NFJ^CAPQT+Y z#i4{F7(Qx+gm1B_Pd=S60-KwuI$;+>+#k|pFWhq}VKz2shg%8w;Wgnw!f0$zQ$xaI ztjVp{378~+&psy{brNeaKRG3alClpLy#l-+#@EOaQ9P8BYvKt^F*CU(%H3qn&JW8yb*S(f=l@K>#-Z_`3HbV|fyCmPZcv8ZDh+B>n9kRJbb z>)r0uW2otuxEG_~Q<;f+S<~~L?aeVwFIBP;i8n9|H{>RIu;3lEotk(K!-6S4@e(VG zw%kQ^ZX>Ovac5EDGjVgi?cSc~ruL>NF#t2H2W?2)jgh{IPh9uKvr=-HTe2k)b2=fu zOT^+>_;b7~XaS$>NW??g@9a**UqMWziQ(9?eSb`h#73R~6HyGlU{(SrxDWVZSB^N6 zxC^V+AS7b3?tI=&Uu5>toJ^EsXlZ#i@nV_es-Yv<538U*iNe{73&-f)JUXl*<`;V#Y zJSBYh&;YuL*SP7i0XPV)-x>fGEX}w7U;xbopSuQd8OT~$9_OU;QPwbS!Tr7g3?lwV z-~bAZ4+%yy2@44g3^o|b^OCZ$b&i^ngnaL<@hNW6nf>_EuI|WoXz{R`J0oe9SVZwP zLOe1dw3(IkBZj<(`AL|MDx?=A)rgk_>lP)w!3ypyOZtfQQD2ngg-y(XOZpSr0CGdp z4Xh6npR^ex<5k;|a9^_RJCn5HCj71Ui70CF`436R+x8#Z9Ev+ix3fXo7Mw^LhE49}Z%HPsMtyY>g%!NIkW@j+7Ph?U=Tu^IZ%ET)q3KG}J8TV4 z>yqAKXV~*cNl&q%>Kl?~V@Fcn+oXwDAJ0A~O~-1CmnC<{YSgHcr-?h|N41JWJ3B#_ zJXu@}Uo=ZD6eAGMZ=T#2E2wu%euSwUH~f-wG5+fjnv9!rMnoh}qT2m~{-(Sw{z0Lk zVP;bG4>g1apv*01o&n5z3G-gixW|D|%97RL5Fxxz(txfM`A#y&YyolP+)wLt!nDpB zkSd-$Uz4T*L6AyMey;`znmmY?}6dD+&-hpS*-6s6PLgK$Y<8MajJ}l5Q+Yw#N=W&4y(B;&P8q{!I=N;oe=z z88k>LFH7!&4Kw&qay*9qvLnguv4VObxfeEQ$6u3?ctOt-CT*&F*>*l z)ycj#itZ>a#|MdGEGr{EaFyLkCRk8DgMfGLBtI4-7hZahjCoIU9*>fnZ8~FilDS@+ zoJakSSl6(C(7+BT)-@m~v_pV@KyXD(BDhMBZH8J5!0y6_^NHXOF@E@~b&1G)M>Qr# zI*Qq~lPqNnw&*HliVIdyuTGhdaqwj4lkX~ z-aaXqUn#8jOIeJebVf+Z9;~yBF_9nyj)+Vd_r*6s+Iv6~hpUrP)?&g2ne>}u-Ca&g z@x^vo)hDGEBR5lKN`-hpxNk^GS6XhdnGVs}OTM)P{qnng48R_Sj!apHA>;a(lrtDd z?wg!4mmq9)u*0;JUHCxxDfms>voK`J&*F5*rL>-iJ}9T9Xw z&>4k&c4>Z_96-o9X+f$R*Sa8eElZpswt?1!iaS}5`pWEf*p<7zZwG^v;4a7swEf&v z1YKeKxoMY{qm~Nfe3!nvIdbOwn#>_%NhjiO;vBIZeDUe+0=(h5tch`;P-B;lAOpcy zP-EBa?>)$MuLE*9>{d?K5W5Ilc&xHpmoKqhc6%BAbH`XTV4q{%V4q{%ciSK*;CSSD z*nJkaChM$EQ3Kdw&#bg$Z7Hy6am&VpIcPiGnTf*N^xh(66$Lx$SKGYDaX%SY;M;&yAOiC z2>QX++5N8~FniJ?!;LNLKNwb*^+!&Xo1=HOEBtVvKY{@W1|rCW9}Z-(ksyns z8?&Zy1&vvq2>D%jx-n~<3}l*}Tl;Z&ag{WGHroeb?C`s+PODKlU7S6En_irqMn488 z0B^1rV(}N|WGk}Qfh2Q5oYjH&@rvxi$14UQ7>r;Df}!y7ieZlJ zDzl$i#<9gYN8tJ5oR$Q~63XuUckc~onZsA+v?M7@FIl4vz?~Zflp70Exf}$;5sZMT z+(`s1H$yf{mQiFuE6)Wf(n{K)T&I!{|va;dBe}}f=CRFjn@u)TZ8B`y+K|ed%5r6qa)dHY>8$u$aaOTi zQK0Cn2vXR{AE^D)rP#dW!R65m$BFGzL zd6VOIbK)i9^&P}qqCXK#Xuu;BFSrRz1sT8xdE(TmwphKNhmN(r?lk>`A2nmP+VH~5 z*1**oS6MKq7mBMq={g3UbR8RQi-JB25SqsBkz1t6SzInw@upOLKFlRU&R~f%?u{ zw|Z_@JqHbWPJ}PuZA&_W42!2ZZ0(_m^CfkcY^XzEuyMgkux}Ez>oP0IH%sd2xBth80%9?5EO;gmIpT_WZ7t#@H^*cXp=W?`d{Sb#wpTW(~njQgyVMW&T$=14S z#?>)}*@LDdn1Ns>f>{V=!|Xx%-=(5a!jZds{w!``S$;S{=wM}8ez&Gk+-)8(g)#f{ z5fmVp17r5jt-49c7fbpffi*9dODUe`$_+1`*U$Eo{Ia~v=4YE#^2Ih|B!Adg1Xf#1 zC~orY;gGH%8x3CAnft1^a5^FJhG&Wk&&w^eR;b%h2z474HGYS> z-i*3lY~)g67SEy0!NCR;u5$cZ;kMYt2$sNYu}cT4oU#C*6b*_~iYo(jxC9NinY)#RLbV@jIM1dD&v)kFeCM^ZzNgef%#>ESwhxz8xpp$VP`S2P zWjSAX{{hHaR9ITQ7Qs3M>k)j5U;~1U2sR<$5tP8v>die0oca=dB-D7S3yQ%0OkO4T zlglm2fitlkt!WDn`ofCzEfbrzxH9{D24;S>W$SWHw&baV`jsl7rc>Q1Uy9-EZ*PHM zAv|+?ixO-}6hPd$k)op%ezn$i0{m2j_evSv+2xq({JhX^ls@>6sj|y9w7Zyx>-6y+Jjk5 z2h(a9RZmq({iHI6t95s8WmTv&Yt0(ouoe3QNp9={Pj5?rKVO1M-Qm$y`@0dG-PE2g zOvW?wDbH=5+S48Sa{DibQdwZ7gp=3ouL5JZ)0K+ftV-VODLvgFtlgg)ZDEiDW4MW$ z1HB1qA_|!~Afv7HW{xd`N%jXS7Mo9nk^{NiNd3={Xn#ty()#PO_%*)RRQm3R2AOOIELUC1jiAa zKyVV?&-k_ZEwl4aUt;EJsj?g%Eh+sOa0P#FmBBfLa)Hfirngt2Ps}LG75Bqm#QxsVn8p%XqQ@&K5EJK_L@tCnaO-$AG=F!6nuMS0D58E<#MS# zAV^#8n(L+3ggTnrSo;Dom_!}QT~qse!yayzeu(iT?^$v=kVnZiWFFa(Z1JCI~~3eJ=f-+A7^D z&6oC(22!)BUX(v2m)bD0hfF22jv3E%S^d0~7Tq{5kw|>r1=n9v z<~>?pIAP&+1UC@eL~sj19h|W6_KGkRUrATqUdNSG-gYIB^}nL>wvyt%PceXpX59nA z6Sq@4f&S$Ffg>$Ffn;Q%UB30`i>Z9^!{no;!^bFUi=-z)!K0O{XZyQ=EwH@c z(UYe8-MRUX;JNvagCpdblJ^ozh}=xhP}YEy%*w}!+{ntuE4Yd(UlxL@$A8&y^H#0f z2#c#9Ppm{#Ocy^{!Od*cD7f#6pV)(H?qKnguHcL%Yw9UrNkIZHe)Gg{kGXEl(^g#j zn5Rn!l&$q(%+uK{Ja%R70038ZdOGf;1>ZHljz43{?YLn z{G($-`(e&hpkxqA`#~wm`(y>Pf#jH9EX40geB_#!H6)EDF3HP?Qu$(Hk$fE@>3iUNfHqsl-akrdC^TKhpm;YAE9LS0kNw&B3g69MLOI6$o-CplCCD|UF zM`eK%j3{{VTN=ufc^xP!kqYx-F1IZ2MT}ZeKlzB@6N1k_S3dzA zJdtE6<)s<`d>Pg6=8$s46m^b#4^%P?lnIB?|B>9XT(Hd%s=`lp0Hhs7XQ#kRYXC^( zyP}^{6-dZF0>4;t-Eech&g^1|Ir!cZ)LL|+769QyEdh+@G$=8Sq=^DMu`Q*ac>59( z>>}jOLM8gk1QymbOHzT=w}Y9Y?Mnz-5Q7)d}~|KfhxLWsQYS&0Ptl5XA}7Rz;k@(HXc2&POR=`U+(6 zw1x%($!aT$QJl)8Ee10MN8OhS| zh<{wDS7vmFTcdIX_BjK3kN|LZN<-Z&NO)rX4Ii6|bWvgXO9o6?0tWGPffVrkHuSSK zy8Z~~&|f~%+~1#ur3=o5QeavHdZW3qzy}#pHnV&<`s*C96zvBKrjTHOMfUUoO?}&S zM_OG`sh$PshYSd%dO7H^-rPf(9L(dFpq~bUF$jmzUv`op$kN&Xtf9b9Whi%l(ZQeO zKsfl50(5aQW2Hs`mh-F7&m{g_8zo?c+vxAL3d=#y*Ps%H-?9UR5EqR^A$r2dn@X_$ z7(1ChiTF*QBPdI3z!SnUN)1tTYO4(pPHk0z8{^1fl3o1f=oH}0m5hp}gp&?x;K=^x zr4POB1%w5MqD+-21%7Zq2SY`=Exw8f&s<*a^e>! zzSgJ)9jG-DV$B-+(oUAUNF1SGpVP}#(x-<9v1Hu*WJ^F_#AYw9%q!eY*cPV--KnM^ zh}QEaTVsd?mt?j1(Pmm_HF~WP+3$tgG&R`3G<|-cU0Qxq{odI$Ii2ZfrmdIyJe2n(`dIP~0`B(WJmC9#Dn&UUtMbMy3_DIs``8l(}l?l^kf z5^O*EgQq}n{Z@^#v6Bgsg_cloV+5rZ?rlPG*uX*GWvgb?3iHv=; zFmr_(%qEcHr|(x$q6VMUAg-cJ4gO-A0s>UyrgDwFBb#wP7oy~X%ON$`E;h<@C>N*) z-yo}JiQiBJv-id|fX2TikxxX4*4;16w&lW*bU${qb+1>Y^Itl6?28YH(9b4-wbY zV7K@+if^n#6Jy9u60(yutWm+wkNbCG7NH$VMEpKpl@aJ9s2 z3fJ3eKua1#Rv0u$y&z}zw|;qK<-k5#t|Xk4b0}(n5~9$jIj}byasqMMCU>LKB*^Y zAsDtHqbnvPYD&>FuRv9*0Tx`&o2u1lY^qWNa+E}2Z%d4KYb(;%ozVba@f#UmQ>{Ug z2DCHtWL_fh1oj)#7q)kk_;p0FeUu!@nC7Xe= z7R9fT(&H@e)Q*Dgg9e<(Mr!=5!714MblpsNqqYT?WHLV|^w9mA*EiOzJ3^zQEqEp7 zIHA$a7PyGXKyYYn3$U!PLN6a%u#>8|-5p#4tR)NYNY@j>E%bE}sYVub`N>VOm*xNm?yq-FZhRi!3w?ov+_R|!9iZU2IUaehnm=A@3!=Qy>8(+sOhZ-b zxhORcp*p6Tr;1lm=>25AO@a-rJgF>HrYHqlLljs}n~#7VOn#JxN|hOdgHYc3z@Q-i zA)$kUf`^5K4GjwpGYm5f9y%yEbnwuSFTuqAA>IA`!_j|+reNYIwYhorkRd~Zhh`fB z2Zs#_8al*(PyqS_Mv#BDe~`gHEXWWnZf*z<3=8iNY<0AV%2!#25AhER3>_90Ff2PT z$PhX>EGz`IK^g?oBLc!g{`uk(8s5_0-_X?F#@u{ZK)_IxZQnm&NcNB*|KJXxg91Z_ z`3DRR95xIsAOwAcr|E-D*5;w%K>DO!Us~7;g|^EOx5Ad1-ix- z_$p4p9`Y{3?iuyv`pZ43I#!BunIo;_FdhtWY;@(67$#vZi|wxE^0 zm>xZxU4fU-im?NSnWhZI!b7DUc!LW%wH;DY<>rr%%zmd-N>-ag@H_-tdpmGnT(QE@ z4n$L5;th#Gq7Y7DsEZx`2_V7bhMJ41TDan82e2p};fm1?NX4mG1XJ3->zFeCQ<95H zXmC!rJ;@ILT#(RdsvX$iAVPuASY!wOz@~AQw*z+gprv*o8p7%l@pAz0y+kw9* z@>c(Te9^5)q}NF=+JR%3Y^be{LN|-&b#~x_jC9LsazLp!*?}kGZMWnP5Z*M{fyHc7 z7?QTx)TZfed1D6x#Or9P{n-v2kTPnN#qC&;uurN53owBmBh!KsvGO21QfvQpMl`x< z0Tyo{nEbQ=i;Wh}8?`_uCG>isK1mCZH(ItOcR;i5l8wCWPg*2^$8^>LEMXj?04?}~ zl_4kKZm+AgpU`)|(o!6FziP8m^PsmDU~c__DN_sPuuU1*6eEQ3!;umpK65NFtu2Mx zQCgtF4sBDe_FvR!%GZMFjLdrLX#QcMC3B0gc%c?&17Yf7EqFwNc6|1g7C_I%^Z<6k zlI2>^L%h#|sYnYhC}b8C_qXjf(5kW4eX9k3i{~fYR=@GHm8lk3C3qolY zU4l@S6J2vbgHV=-ZPXH^KJ^f58iGmCg2!Tdx8xEK-c)PBB&_0;t6DIQBvyW*Wa6e4 zoX1vR&YE~w%6gb{$mDwF3MCJ<_-CR7Q-c;@xuAqKZ?zyDqnyUi|Dp=ZQR*(dRqMbd ztmajF9T-l4u0oun4rI|XYtjpl+lTYp6>V?%W`>eK>#74E#r$@`O$S~#XWFBj6v=yq z+DIKxVfZx}bpT7FAY4n+{Y&aR&eVZ>w9F!Xv&f6Htb6r*s17)aSxwN5(t+RqMMXLg zB=!dr%;B6Z#j1wTV~Gx6NpytYi%`BTO{orqVA3q?pbl&kO94bBI(B@5 zSTon1yJ~Y^@I9vk`^B_|bX6U2R!}Mh$}^%`qRv-wwI$y@HLDA18|5r7xg-@3K18bH zmt!;K*;gRQr+fC85o5EzoRH|#i2ecL2Bar69rP1DE$v*0RQ;EBzkm1&__jg0O8z3+hwnPC4$hotNO*qF~c z&;jGY5SbqIz>cCdj(UKFS__Ze^k5e@p7{jH#!BQqdLW4D(sIgp3vd1OpqAEKqu8bU zy7g<3k~@BU?)Vl1`nBL14>xxgK6lWAGvYZ}vnmMhjCycD(Uh%$nIQbsSr7Es2$qj1 z3UAZ&0E=`N4)xLlZ;bp*nR*ZR+Em3O1 zn?gNG?I_wV;pk#Li2oAmMc?gbov`K8M}qHiJvfAk$;Ki*kczik0GuA&!%)z`>p_f+ zHGk`9`W?FpennqLWGh296giicpMWw@o~CGS4DxdnCZVqsjT9q9FqP^-Gw~J)ibHzv zn^@5kZdL1%*lpS_vKN;TZ*&sUFX=%iF-kb(_v|M8a#auT973qrRd`#c2USYOJV7K! zE1&2A5VsY6Z_p!?Et?rJq;K;dWKyB{C0Y_DLd=O1F#XOFmX28?;5*0zDg%%(X5(tE<1W-B>m9l{769q*@V*?cY zGJqhRfHY}FMPOHvU`2}Lf8TES`R?dBe-0r#cXfFuw8oa z5#}t<1|{piIhd+hP(Xqy-*I~nhT{)&OZs#i?)W7oD2iP^7|f|S!j1&PCsOhqh^G;Y zhtpv2@@qRxDqb1rM*0@C7lYx7WEPnJrC`Jhm6nL;G>`eB9y8|0U?Aa7cvJ`mAiA30 z?*_vyY3J-_YcLSlC3Z^_0`Cza6A>av$S7VkLLi!OynS*AkkBtYnufr$YM--ig#auP zrr1K@V=3jv+z@zQDviu#4}sfc+5Olf1g=Qycp|*R4Hlav3sbEb@SbciTLb)5GP!D; z%&(K`pCFp;v_^=2zYj+NBuZ|h%mB$2-xd8S61lyjvPC!V)B%V+G<^K zb@gyvUG*qkaaF~1-T0ab6Dq28)x$@Q)m2nhS4_}VeX+56Ohqjg7T1lgsGc%*c-0hL zWwmZpMXm19$umZdtsFk37Mq+_Ss@m=pX@%oZgNGYuFGUy<>V>4;Z;=?wWBJl$4u6Z zuc)lA)=e8;I{~Y9nJ{tm@ai$??xrfoR$~`aYpQjXV{5V7;Ukd1it15V*nc<@>LyYA zQ>|`1QZTlnc4p-m{A1rKl@+5W)J+kqj6gCgr<qT53mO_eeiJR#7`1$52~UIdW`; zu5)GmWvB3X-Ke_Skz+^IB9F0mk>8Vb*z{za791sh!|sL6*NhOu-g+_wy<>f@xsmC- z77OPFgn&t?dnyFF3*X_-cp+tA2vi9w{24E-!k;=tx(;9A>-==WC-|#fBFn6m+@u!LqAQ8Xp`1lYY(Yfq;O$e+B^l<~ydBL-6AsQ}9 z$?NlUeF)qji}vu65C|eG$JG!bDn50n5G703m8^m5QkvZGQ^Fm+230Vs`!dyi|D~dC z>z0b$--OGNEKpZt2&|Sq%ocA8fu|oP9#j9&>!Inw*D>_>&Vj6GX9x&{CoUEOsicXh zFGGMNQ(!j^;-;jK!%*QdTNdul?ENgfo3f+gtVrge(bW_JgudUt4uJ!t@qNu9kWO~R zyFZ4&Riz|_xaSa>V=$Tw784o+j2NwFwHZ{J8n~zo^_Iyx$h{xO1P+gd+TV3}gr+@N*9&3h}>*ziWlA_*snEKo{X>iH|Z!8L0GD%7nxCYoTa>?jZR5 zjy2dI{MiNkWMPq{U)GW?y!%H8oPim_+&@Kn0L85#<)ugnXD>GD9$D|bVoyF4&h=nSE7T8U8b`-Mn(D6Cfct@SMtw&B;E z4&!$>(uCEDP?!@FGMiSp8ic{+cR0gTHp}D9c&(awPulyW$lq4zk_K`!m^T z@h=K^nuV!D0sXoTjblB0u?RZK#;yEv7}h@cTFcWiSx3#LFV(_pexXnt5;SYo@)G<@ z#H!^v_z}L+h0S#c6aK=#ruYP{+&vM0?Zi_2L*ae!!|ze6R)z6ehOfrp$MFq^$Ffsc zahdd##VUhC;c2oGTeP9@g0k&OqKq2m#`$L(;zMDGpS)AhE<-4%$#U7TQPM&@Skuam#ul1pDPkKmZx1SFMA30ceAxio| ztz=_z>j@H3PY}u}MqDfuK9+9N?9Kh5(1GxB@6k{oacs=h6v`hzn?vD#KpS?m>LvE` z&!NyBgSlYWtxzx%E*9Pig{coy@qhtMRW)9r?9Ba8@Rg2{xmrV^!AEgRwprNV=mWv* zMV~O}Lnw1;!r%aT?d%8-!vGq|$k~_LFz89@gr|nV2GzeZ2Eh|A33KpIq3oJIj4Ec? zN4a5;L7H{hu@NuzNKtnZ5_o=+8y}3l*ENhgZ@aogEQnAF`YZ6ABj3C2G&0g2hnc;uY2sbePK{Wy6b%;3-I270LxF%gkCI^^~fVsgWAC5%c8hap5Pj_AW-qm3`+dC*6qR3OO@^H{AeLVWBb{m;)R5)yxZkO!4(czFs7?W5P z4rij<5|^iaHm=R4ZaCaY#f(eCf#gnPCmO=ROG;PUm0So160gqc-VDd{fOIBBc&|dz zwW~24vZU-_i95r&L$`||31r?DeHqT(l^;DC4y&beB;0BW$CovDwaC0$yjsKq@D(rC zayA?mE0h-5O3aSAH61h0e4En|H3X|JgabkM7F^BYfUa@vFms=e$IqqH59kfj4kkzy z)$W9DIq0ep4iCt<{QtypDd8tpbT=FXRd+rt9uKEhvq21-7USbB7K@lqpk2U+GR;ex zxWI9N4S}B^F!iN?4+HK6p4UtW>=JM`@PVd#pkr=quV7JuJSCt$UhxS0|E$gJ#7h4^ zo3h5;(*MVB94Js> z{F0dy0VIyzgXYIx$c=z9GG8ux1Ppj+$nrlrRM>!)n?yFTYXqba5q_g*1g2(_2({oU zLyNcaBB;Re;pk+KtK)g5dMtw4B!r_+M4;!_U!o-buI#W(`|Qg>(XzO>82Pe@XCD(^ zIM<$vfWbu6Y_@)B-#P62<% zt;6Ut+512Qb@yS<9**Glmm^IPkW4n5-Za=iZzHkrONx0)`jetI68!PsUgjZ=DO(bvK*G9rtKlP(mMck+M{e}tu`%H(S zVz(CKj161>RsC-jk!Px=VXi-aapr^Oygz2(@-?vX%1%h6gK311Ti9O)m4@9j22 zeQ1}q>}Ve4{rN$WaGT8Xh4M&nsuY6|cX*m zc4>)AK*EUdjeRE)mvbBHJ#)Mt3EjyIyBcw5e)4gng_x`9co7%jcLG@J&PX6|s3@S3 z@H!FMRr@31QPNjSQzYCcb^bUL3F8PWE6+zlIbqRPEs^jy8Tt9!k#JNgkDcyG)y{U` zj|7r>lzr722@fKrBfk(C1uD{$OB)4-0D15%cjC?z>o2+Lm4G5``PCe^I38fCL$`M$du&iC$5#l+IdN6xw~Hqse+I3JCf)x-dlX_otdD zc-zajsTpl8QT>)b-G!D2(0wC<<&uLX4kA!9pU{dv`>^UBaI)SriN+Po?dTf=`I- zxtgND?5AE@itdQs_hgHOJ-dwfBK}}OC)`Sbgt$oSQ*h~It;DqFUd=zVV~ZM z;x?j#t;kMa)Yt#BU#Zx2-)O*4>VM8T4op(1Wj|}8A(d=e;%$AGv?5v~qPY?ENr(ml z$0sytV?f77W<+gUgnSpRX+Xq0A!Go$hH{4YO$s{#L+MVO>413C~IvmM{o9gJnK4vR*( zF#UgZn}hy*2)bjlBB+unz~>p6Tsc(cSEd~5-9uc5k1AR9q-c1ci02>1u0$Lr3qEW$ zWm$5}n6P~N$rpyc>GAqb0rq@dG^%=Z{DXLAHKSvrK{VTB*{l}US|1H_$y6?RE*kog z64#<=_>;VCTn*8%imb*(YoZ~auwO*}TSqp5+P9-&0&S-eTb3?F+?M}U(i9Chq!+x# z=1bAkNb72jhFmGIBg?oO4J3OgTYWzodeB{7@(z^D(2E?VSyjW z*~ADf)KETYweXu?n*u2QGxkH87Jeelo!4uDBx+(oHZ2^cJh5xxGU3~a9$L`QI%Qfw zBq%4kUhG@nX}}0K$dE&OPaeP)4A4RenTW5-wQ$#0?Li$6s;UuA6cj*++pyVDD8iRy zAPX3;g&kxpCu_8@lg#ky>00PP8g|ud0m0h;kujFHL<AC76^26^ROXwt$8Kffp3IvDTy zvc-cOI~~Pg?8S>(F8;;Utc3wmVPm~+XkjIpL{|&eAsaDHU{??++ zs4Zm%JK(2-Q1X~dqk{`X`j2UK@VH-FmLQ)h+4?qz#^N*`Y$VUN=yfoJC_eia=zwIU zMO&^8IuTZR_t0_YMpu~*o+q<0r@xLm*LidUf0pYYTZ;9?vS;YvMe^v$dL5(@GQFPD z!3(6$YfE%sC+|L2gAP`bIbP_{!MD2F zWP86DI76o4mL>+yk+x3;#bB(uL}c0J&=??z6j&3!u%o5&<3@9hW8o<=Xsz6i6MIDZ z*X?K5dL35!x~;jR6$h#Yxz#hF4oqequ)XP3uXa)fI9!5Pq?hs=ncpa7TfCAOM^vU@ zGke6qYf43?Y@+~2jTqgS-zNrxF`<-=%8P*t>9~Yb_82fR)uS;mj|ka|{bL|iN}KyW zlg4h9V^c)b{x>EDA_-@%RKNw-fytOxS)HqV5^Ct*J~FRknjw@cn#OEHfKM7mq$y=eWq`@|b=Dr)@TY<) z&F%5bmhjK!>N&08(}pao5#!mij2I`Cg|;{OGw?L*0^`yRaM^Bw+uqOsc(l`eDV&G?`yid6&Bv6?6MJ)KS&_gls0g;Zc znqp8H>?7u9m;0+Ov!YWmuwE*h?AqxVAkgD1=t2x^lk$L_X^w#fQW;|vt{C`@v@_zT z7YPA?C zQ?2*}fl+R46x__&&8pkSLT7ncC+C8Gs}5PCWnq{oZNA+T{wIHAZWNmv6bsMD{i4Ji zjLCn>4$Gc%N9%+Ly3klK2;YRn;@$ZoemDQ;;nR>UilEt+Wwu#F5fn~7RRr2bF|JL{ z3}LZAazfzsAQpD`$ZyYd6nBw_xD%AHBgwJQfpF`3N-X?Ec0;?-8VOEu-ja_)_1 z?XmD4ncwHT#-c~N^r`lb#KJMDyfbH6EIdYb&C)@!uwMDE>j56MamD1Ime*{>ctpG& z_}1Za%~X0FQD*u%=Jpx8#%+LFtYBL!W4WtMUR5k?Rz&h5j&0%5KgX1fmTAW%g+9*B zI0#uZc=f#MXxZ?D82N(wXUj!rDfuJwGT09zV$p!+>yEAHs{BH>L3qp_1s#Q|cfz2Z zP&zsmon-7|V)1&|A4w>bj9hpX3qsianpl`Zq;BTqSXee3Bkn=)zdeo95oKSolHyZ!Bhm!D2Ow&K(v*w#|}l78kk_FV?EPh=BDo z8uxU&{$R>IvG58Z>)rja@Q55-?9Q|SaEgrT?5qKx{;#dafbg|ebXGH)ap-xByn z;M#z90viIJ51j8`i}|f51&;BL4jdBLH?T*bJ<#I+f^Z3&N%s!;pMS1@kiX+QyIL#S z48r_6_$U=>2GN2)s0ciXg4tW z5#Pm@EOaxCr4ecC_hT$9p_@`mEQGcT@c$UE>wYr-)A(b(`>p-ABILz5$EO{l zWnC~Pd|B9YVeS>&_j$!GMI4lS3(xw-K{vtW7e|f~?z2gr@M3;C#><`YkE7Z-yl}?B zV6sz{Ma1FVUb^O7+BkUESMi>#!5xbm?ig03Qn77lm{mzhclVUee$mIFbzS=WujV)) zn86s<90%cY9}$Y+m5(|Ev+~?Hm?LcqZx?Y;uk!KWlgri#6T8I0=h8;AyT(B>>1J%t zII1ObV2Xx#_DfkDEFt^#{QhxJD1G6zRVBQwY2#~HPcD*?cW_Y!^ zNv9S}a_iYM*y?L>K){*VfS=-EA?>;)4kO0B!bGR|b*$Z=anPBF)X;lzkSJ!25o#9Z zpo(JX@0qB=e&<0PdbdfZ&D9!*Z-_Q!XNO%wh_W-;FCKlzq}2~<;^BS5xjDh{&_YHv zBP<>k$klil!V{6-`EudpnhdbBZs@Nxm9Y4LHXcl*F-2lLoF#Rxq{PEKg?wg>#|*VN zBOdyb-dy^47)R!Ohz%bh&AROI=;|mP$MMebFh}7l#+$F2tNc|qS1|sSjBodv?(q;x z+JCWUJRl17KYKo^N8>SpwAbtI%Oop*G9G3VmR=takGBrV6OGpg$5SoaFXh+-5uEX3 z;~|=mxS}c^dP|#Ou9|rCUX(P<-k%Z=Bc#MRFuQgX%b6Juo2A8Q1dWIPNl$-*s9=a= zr&mNJ^5cF`h=%n0O@T_z^coj&1WkibVlM_&v59`?O zj08}UPLJyosQ*l(%bq~}4}R;K0GCL6=gSh{w7-uBS6|j7Y#p2c4N@}u3`u|&Nk6Xg z1Q{!g7xJ$HS=b+S?<2CN&u3vg?&|%029cT+hbM&oRoXLD(1-6GTrP1 z_#csj>-7mxu9k196}7e*tZp&(OMcm_@)(ru@$T9D=uC9HZN^(H@xJ>j|)xu;lQ@1P~Mt zm6tV}6F?*XFKtA&5%G0IT}HOSX2c7P-0IdwnC0~g;@8b7i;~&Uel~BG2OcM9!Gt(G zP|IXmgz%R6^r@LVx}tXYlsa98t}})j^sAmyGo|AHN-?C-oMAL&m@M8-cK`)OI$(^4 z82_OA;&Y6!(2c^Vf)b3)n2g~WVgQ70=Cn#NJfRu`Mq)AALN}&jQXK{_Ou>?Ib?%6S zuC>GK+yNXIz2LBqPz2ZaA3kAXWo=vNN3}ar0YfdShu30|g%~p;#!J*yj}ZIDn2r(d z;06z*~N(oB=h7Xyzv2}PGeKhTz5p$>&_-Xm;Z|z+x>L{du>`H(tx`J8~U@|$OjlP}0X+XREod6{L1A5ygKsZ^- z0e*?xRm7!9gyE#GCxR29f^36dgeAg0rO)?|pdtFcB9S#jCn8#*bO&;26FDarV?rWq zAQWFpPXq;N*QHN{&ZO_0>_oUow*1KaL_`20ec2N^U%|{Si7=Eb_SM}Ip^mf@^hhFv z$km?cUPa#-j^UMFK|;^6M3^US{45q63Gnk^;Kzx;gP{gh;<2xFj4(5CbInPM5vW^D>}wUvfGV`@TRKm z6)fAF;XbNH2(Jw_VQAx_tsEg+wk5)HZ{Ijf_c?K6{+qIwh2dW4#Nr8&AF~SwhJl}9 zyLKmnlALw|4|7~XC@njLv)`K%!9Z$eUPy#j$xzQWBZX4J*@A0{oRMVgkBKm!%;xPI ziS(Y0hmAxCBCjQ%zY@79>4U9_(9;hF2_iC4u;bWyWhYkPmjuhn0r89`3EB~=Tf&ks z_K8fHHVK|2RQF6wf_|jV+i6LVO?G(S>`AcsVNkN4Ls;823BHszQrRsDrV>WE%98MC z`cRVm`z663!t6;;CUK_b9|t8N#*(zvBjrhOj4^;geX@-5`y+gn_s&!3A&Q~(lH70?Y4E+AqB+hSde5O?miY*olDZ!{uY_~ZEZ^0q=lHfRD zcS|b@GwF1mDj7Z_C0+cI!LDe_{s?8Y9@jBJ6PgYF!tR?fpcXQ!qY=sFP+&5rjlZf% z1_KcvZCEmp+^I|#iC!^eeqGvRIImRfmdz93N;nG6wfJP{PH3{GCUd*3OP>t;NS*DL zWH?U5t-+cML&*65%unW`T6%U%hX0YL+V@Q6%&bRyCqqX{a#=Ev41-K~G8wv(DQ_uH zhTVvX?Y?>|GAo3bhJ4iBoEV)9BxyJ^k4=Vm$&15PlMHdBvEb>+@HHXxubIhkoea)Z zpNv)w`Ac~520?$NY`=F zr^%dKME&QGR!7)Ec-bbNP0_rS0%$%LfK|a zKeL-WReL9y_f~2}F(tFKU75nUf`qA45GRd{S(5^>WS)Y;Qh1*qZ3;%!!5o&Km;zrA z!qn+06mCE`s!u^I08q!t)Izae5$Hs_z+E2}XG;N+br)5%Dg3(Xl7dbKULN;dR@^HE zFc?}gK_hynz<9!jb7d*;9+|S`15)5IGWD+V6i&%_Y*Y$84Y3~MQ#iGpt0o2ZlfFKk zoC1%Mk`B{SptrmYg(mzBHhM-1`UprVW>2Tk0Ay4f;TTkEgmt@fF;0GZfCDZS$FlnQ zDO^mF*TNK-LZCgzMTT|shBjTptFVIx@>_Y;~mTRECo%$(($@j3V)1lN`XtH^``SF(2hRUoC0Tw zTphZKd?T~?+l>^&IVOFzq@aH4Ur~bX59|QMf{)DN&5B2cbY z9H^f!VrgOak=JT36{HncN*d3G#RgSqIF3}1# z!Kskq&`f_^%U0mmS%kTv;i+(d49%rY<=)0`C8WX<(pz3?D(|VLPvw+xD{QIIo3hcK z3WwDmr`!bPwBe`~GND4PF}K*C-RzM{-vz?#&pJaqo7yWCDoNk2vQ$xzD_M4v`=)Yx z*1i6zuwB}>5ba$AY3%xtRQQW>xI7g`6UE$9RjIImwC}1(<%Om`6^4;z-FHzcgp#M~ zmZriuN_j&nTp=ZASEh2vO=&M9_emX>kP7~!r1gzdC?|6^_U%;one<-%UMg%Q2qNWnM2kzsoI%pQm%CCSoAiCWB^AbyaoGPzg%HA_VRurYo;>Ah zP35+NO@HF_6 zG!Yb)28X33f=inQTDj&e(dPW2Mg%zMvdfSLkCIUiw4`xZd)d}BXd?7#^3$M^lpM6D zaX}czyQGP-8zI`ON>|Ihs~vMUmjnsIVmoe0!~3LhrVUqF8k{GrJla1E1Nx++t{a@j z#dWyK)8HV%)Z95O4dTg?an&RFq-5`+G$47#1<{xn&3)vj(v4}{&Utuq8tPgURcH|MgnoRx=Lv-7kiVNo-TBdH zG7a8Psw3PWlOPNCD0SZXgzI7U)-;N%#=7lDgBgU_!z>M~gsJ{trg5g95r@)HGbp9~ zM6DLVZ9eeOo z8hl4eTrFuFV$y~`((sMchM(zGJ-N;C(-U{p?M@oBC!~$In+DIQ{)Kdc?ifa6b{0BS z<>cg;ELKB+av?gy%$ECq=Ut#&4zt}_^=e?VA)P8-go(;@2nqB5(v1-@KlQb3@!>gw-6m?0vq|=e;oi3su4rn*xk*|LByTTfM)8S7-ZKHoWjlN{p zHR>zrtKAT=ErnX$wAbj*gJ z_FRbNa|XIKXHgE_*gOQyx1@7sm;h@!+H0hPn~DAuR4?nYr^6P~htMURgVI%ZPlsno zJF9!ALjjS2%Vp`%i?n0vmyYHU`PSM0ggN@MswdOIDBUI5TTi8Pi^f%+4v&zgiYn4U zAgpoKq(dcHYJ;a@9YT_7W;*B2+y0q!?gs6uPlvwboY-}7Iy`{3ph4Be8E*XLPD1qj zECe%~ur!_9NdH)tjwVAXk6jJvoVUu~FQvmJ!oMqybf_o9R=u1KlSv(ykd7OZwB^+s z(>c(fG3aATQlPWzjp^_kVayNP($V1H6YI8ehd;}VpQTgHyKqut!R`3%9qDlQp<%S+ z;HhpcR42B3ABv@vRCIVAfY#8v2hu_11F~HwP=E-T+fJuLm9h=9)hl##8#a>WK?&+t zCcdOcNQC2ybMfcl&S=SG)6b{VGa|cmA)Px>9coU8>BO_Y*U#y&P3{+f@j;j}PZbBB zxi^FNfK5_mU{K4yO)5r<)s!u|+FGqvbk)jcZ{ALaBA@7g4h9};ub36XYO+`idNkZU z>u$APzWM_{r4RUAl;M9XYiB6I5sFvLkxF*aCj*pZ@w+q`a8D{!!mY>*)K_T2GvFMN z6|tQ9T)4Cu@Ug$o0TFz$yK)}en4ST7QuZT&T?SlJz(jT;D+4|!TgYll26y%T3ojO5 zO4pLGZi^MuD74r!;CXV8T+lm%w_KNHz-MIDZ5f!s1+cryGvKzj+7p58efAmQL!8q{ zL08ZbU$&aD8E}GfrX~ZvAllGvvog3ybXR=_{HpL3W9NTP=)>YgCgIz48PG~3*d=6u zS|z_RSgd&dyv7YS6!_c99rWZ?@SKS(WS|RctTW2SSI&UTM(Ja%d$2TK9#Nm z_HIHZcfB~8k_jEj*6Gq`!pmd@EYHp44)9KUCS;Hq(00q@7IkRPOiXPeo#m^&GvO{N zag}Al8q(L&fqY+A%QIn+x7uS0^G~X7i-bZzL>METxi zU4&L6vg&Hh1S668c(oqxl4X}1pyvQ_TpB%O5Q24`^iV?xUK_55uCy<$o|+7WrCqX7 z$uc=X&*{&ePt(KWqK#m?7NRMyk>%m6G;p85d9liCCK4^e~Z(cVvI0kZ{sfuIHfL{VVivl+gS=CJCHLXdXR54>L#|SB)N_ z0DJ<<#8CbAE>?sYxJbGOwsD#sUM2MPo~7rZrt0+&+zwQ`UeI%3n_(;UFkR_8d0Uqa zhxe#n8aYUaF3g5tH-?;g^;Nl&?OLP9v|Li|k65pV8(wgqmA#>d=Lor%H|b%sw4||N zvz~&PuYC_?Ls|vz%6i<{e0~-^AYvvJ2}TT%igL6oS1JYgSPw&`eOF?EH=$6^hb?5Wx>|53M2znKp@$bp^DFP^@m~Kh9ng0V^fWbrvsDjTU-cVq zCkFYi6Wki#XqM?~Kv+vD+XDOz+@ZmxG2n?_{(ZfBuL@y*1RLNLGA--F45*^_@rZ`k z4WYPT01C#f0^H?UShRt|x^QU?(1WlzKiL4y(q$_gE;B<4>yu%C7f4S|y@9i@ePS~} zuF`j+II>B8Q)P49_oY}CUTDCSywZ_5?FK}CZPOF0bBDCOyrR1pV1RU9JfXD?%uCyi zZ061~0~{iB?;K!&cv8nzZh*(h^6pY;fIZUYS-S}agb0yR=BhEkM`SiP)fqUCrgl#o z;5cc=S#N-!R6grb`;zGLdy8G1kMkt$TM#qQ#k2bj28zAT9$kU6F6B4VuQ5OpX?@ts z2B;@>T!Mi+Xz1QDKsKR!*cJn)Gj}%PNTly@M^jBu44bmU02}4r(W2iW;tygN4ZI=c zi6EZ+64)=y080qZ=N~k1kP^-&17-+p^XBmyJJtOvi}WOd8}^j}){=24&Z0b$ahYM62JBBA5?bLdu8x$)4!_-BwEd8-ZCH}@V^81Fm%*x5dq7@z#l`7NhVYMUtrO1O4jwh0oF)I zAUInMkk@gTs!3I>%v5Ypgvk2H7r}k_UDWd)@nYa@gnG@x+(@c{LOVPI1T!Jn2tA}M zX1|6S;h=O|5ky$=WOhSq#H>W}c7N|O7@kS0mcNec20n zM$SU*v>P$MlaE3)Gd-$GVa^h4kC0&QVuY(ig5r7^IoEV&nGqVL62vwPG;;Z-oaIJ% zhEQ5lX@ndp-`EFLM%V_vZZ$*>1YjJ$C-2YvY9l;FcZwP#YPqBA! z0~|wG;#MOEEwuA9{kU9Y6ll2sYCDpZAT>jg)j# znBW5GE6vLU-w}F(G5P!<(w9qPf)j+{Uvx5Y&NHcDCYVP0dRJ@WW_U`1i3^7NAjJfk z0gclCI}?DKX}gsmnoMTP4EY4=laJc_=ePJ z+Gau@St*5KJ4`T1=@s(4xSz5YcA20L-G`Wob1@vg&jc@#x&Hew${rnelZiVm-Z^7} z0`gSRB@=fQa5kG@KdH0*nu+su-sduLSG@T*Oq`;_*@85Cwc(`7D}?etO*FklvS-05Qu1c!EErA54DOW$he#b)Sr(Ycsz?}=#eu#$%d;>awzMz5u~`T# zDlM^1$bwCTwa%I>_>i>x#;h#BoI(E_gqX8loFc{VvZd}kc@D#Ir9VqWv&AdqC<}*o6_Ti2!4iekRvhZLcubnIm zziopsA+x4C22l>)mjxx#0SGT#%|(so{)1WYCecjSoymeq(ucD-3-d#(P2!6&3?A(z zJeHY)F>pJtA^!>AZac*iA2DEQ(-q}-X8b7&29q`JxRJ%#W1THoFp99F|LrUoAtjaV zy@$LeCC=6?SU_fRy2=cl?M3(6{fgst9*7RdM6*1I zC5M~2IDo-XW|&7t=hT|Pm$2%7ni<0uV`V|;X-tl4a+pcelm8a-pudN zb~BtIV?WT%Oz~w{c5gE*A?ruHE#4t?92;zg4y2B&+zjmr$CRVYXu*++&c4xR*h-#y zcAS~I2ngaEGMd%anYo*(|8z5VtGhbWjBp>)_OqTbW9D#aiL>4e_X$-upEJV@Lc^p* zW~e4SaW$A>KAFksYs}&;Sh5;FUvK6%L#JTo0s#lTZHCX~YJay|x%#nZJb3oP{X?nX z=V&)3NXfcvF>@z2SEHFbdmFZz;U@TIx&O(&l|AolrCz6A zp8Hi^6^Ub63_m&Vm{Wc!qUMvLNJ2hXr5#g1JCC&Hw5kruFFb z+{vaP!ip3NBnV&P&n(5MA7%;n@mqI)W&Posk0Z*+?8B}+_GqdFQb4)*^rkrBnKTQG zL{#DvukE;B-)YI|ABJEK#w-U^Rv^l zCtt)&A)QuTSdfk%9af(I3bTWBdi(251Mp+siEBQrI>Ul$b+6e+-cOUsgw>fANL6(j zdbm-+_T%@fL_9yqw!kSe3oqI%6yKM%D?kpCI!?O<9wF`6yID9T=APabE)9mW%mM;| zg?q8m0&=B%Or6_*iM=<$!o8?mHAsw9Y=mRwo$-~nv`!q9RGipM3*;!}_bP=K9k~!K z1lL>OkhFpe3u?((p<=0pOCsQEut1P+o6bf)6mxBe7NE3s7H&m21qBD~;xb_)Y%XmH+{BmCpeCJTpe`1&~u9?*Q|xpzwCbL`bi z77ii%Ofv@L`1rV!Dt1>Hg$LIy_~MZ4$4yQPXW?o3$-?aj&K3)z9jRYJbxB#X;!356 zR1hRw4(^DaAMgKe;qVFqZ(HDS$F`HU_Xq4--)!z+?bKvLZ^DPdh-{cFZ@bdBFQ45O zL47I;Lr;j{xwP3dO&0S>$c9U#&dsE34h-Q`dN%lxmzPtY4MU0iJZi~?pGZ4htl3aW zp87N|o7+~8*m4l3_78hDEF-OnwxKws+Jhnq%3&UZxu7e{L0^yN9@#XWXK&AJ?iS%J z%Z6tOi|Pg;HAI}8<=I>YoUUWCxq!}&^nZkM#=$SL7O_t>n3Ti;~EO({vv zW|VibVLy638~Y%XP`vo#y) zNY`V$bGV?!>l$1agqXiWa<~)ThKL*}pc1Fefk((`#-5nN`K1p}$$@7`9j87Ay)LB8 znPtx5jJ@Kr?kHFP?w)m@?`zv&a6d3S0p5DhHMlIs1B04tNu~UFA72i)<3r<8xplspG84fe(npyk3_B z+Z7LA8vbnfj2ti%`4yhd0YAAq*lhsxoAtCXsnLo{{@Cms-Y=y-hx3hoX?_lO4Cu5p zhffIJkORj^hr3tc(8wg6T#F=-I@i|cKr>-TlaK@R$@OaJmK-iv!r7R^xfmY*BnS4A zzSix`fzFg^EC-HC#nJKIvaV+K>%klZACpQ>^-+{$QgX8?2S$^|hMvxW-w5G@&gDQp zd1}K2lx;Fg&gL9gP2_0N^&C8xsXf_+<;yDD;z{a5ANrLP{geZ*OSihVppte!S8Mt zkx@Attl%U(y|BUxtz`bLthRD+i%VX%!V^*sHaZ0>kcNNVWQA8riRgLRnRMlBL|%|d zKfcwFo3NdB{{B}G53yXPEcgFgz5V2{ z%QF>jbkwg|`43hYEqy|0a#SX9snQoSq=}Fa zid~b0;oq3>emZQdjf>@&RcYf)Z+#}%IAxu)#s>SmeZ?G!!3+JiOdaHiv3Cn$$EMlf zdoqO2X4&An+*btq&gl)G%AWJ2<~cgs#=W7P^)~2DX1H*^4W1;835#sh$$|A=YC~*2 zUmOyml=*yv&MR&gAmNqF&fqQl{8bm+)81ZgFT5tis;uezo3)&XjFv zd~oh54`6nVfYK{{@ER7pD}}RSFE`pCh*-OJd~SnyG7u-T!3wFkvH6E=)JiId`PVVT zs>ud*q~_%FHq33|7xk+f#0v^#yFCeO!oIQbenQPQ4iWRmA8b%gDCz68!BR4CXA6#q z^!UmhTx#U0FYeno8=te)2Iu8IVqPp82$MXy?j7zNsZHn&8OZL*b1}b+lyyHVbKx9$ zsUFwla`D4Mf^(r*?&|@y_S4IjIW|1iHB3l5^#tm}kB8x8G|!VhFLJ{h^Z%~qcavk7Svb914Zh>X*o3ojAQJ=ZN429gcPS(XcZ$#U)TL@pdB zG)E1}g*~K>vpkoxyhn}6E<@Rkqd_a^YYbg%B6NA!P$u8W6IsV zVH&h4zmyZ7^my36vZps>kQ|5)rUhYaqY-_AEanoQUAuE(1Q})3fn3-`m^f)semJun z;koT>%7qd#F!LEy-O1%Er?@RwS|J1j3<8B0hGt`0)Y?_9AY5eK*1pmI9rh2KI%-2SLyb?V%P{ryAV|p`|d9s1X-_R z@8-f(!USh)E|>hnSDDA{qr?32U^W$RO&)Y6^N<~qhdGR-3_Bj4hv2Q!5~nr~GRTtD zrsly;Qs)PK9&92lugJ-R$D}eU+_dLGaJaAfFIm7#zJg|g|BC@}>c0Z-`0e!@?dR+J zy66LTK`s2%BM;Vj8*&ZiTyu`Fwr3uU@^b%{#T32r03jU%G_p$3F|9&q>5~VOQjEDq zORmY_2|)@xCF|tTg8%b#g34R=h{diJKHU5m#0b3~$-~=<=P46ghQH-PfV&H$#nXu6 z#ZK=h3XQ$mnz2X#ud z=l&+&G4daucwdLXr3_%FcIJ5GEESKMJT6&H&!_XaWHrwEJm~7>>+$n= zKZLRcdGye85eultNWzjl)CN8br8!dXXgcT>&PFcJgQtnGyBhK^<+oG-r>x3@-GtJ@ zb$MKdXQz+{XQe{wIHBpLW!K-y<6gwh#yog|C`9J%%)=a;(hi+04_&~dB}HH6!SiIg z&mGF+a_+f~qIAmD-{N_z*8#XY#C;%&a=bRaP$^iO@~9J=6ALP&^s*-}pj41?JDc;M zkdR@xmdEJ{GF*8ye3xl&}ha&RDdVHEprW|vC;*d-!`(EbzzT%4PdvA*%qNRVuhI!?~XVNXs-EO#0pw0(h zx$k=6mz^TaQ8)b6DD9rj^UtS9EuII(T(}ma!H8)7xSBisv!casOCI^;-PzGHd#@Pz z+?shK-Pq_umQH2>`S3hAmUetXE4(MqhaC4;mZZq1K0$&RsZHP2E+6Bk)%hND7opY@ z3-?w~KDQ31h2%p!LbJ#+8f)v+=JSWklze!KOrcYs&l&uG%Fl-uXw#`Gh6>*o=EHrd z@Hy@I@CDIkZ0(&7L4=soW%)3VNYAi-`7nTN$$JOqbEipXc|LqjB;)>n88O{=lp_vE+49CX+9V1>O{<|VnSh-BOl(CzBJHJG#{cBUY;aC zg8v)&@Ts($<5)oPb9cR&&p8?1eJ7tYG&>vf;VRh!&Y@fqRfZs{t;jx=&lya&p3UbR1AARS>7i_G&WHEN#0xj_Ik#MAOFrjBcj|W> zopcehy|?qBnTX4~_wq3pwUm?2R-}-K!WeY{TqN!E_Ah{!NIOnV0eBOd?{q4FQ)FX1 zt1ZA-VQF8w2S823qe6v#=iVQ2&de# z7s5cY3VZh~gm)Ec(FB<2l0Q--41YQX4L0F@uz7m^Dl3F4(tP=VLOeURy`bcy92-Uk zMYD?o3pqUcron}rV%}L^2&;)SEUGG`Z+_vMdtD#{Z_kAyFuRYROs)!%`E*b@P8#|? zDxw5@u4Eze3lZlh@872qOpA)iW-w_fBAwU_Hq2V;cAROb{NFd2M_ojGS(-PmQoPtk zEkfQamEJ0^p^}jJzRLMb6_rd)_?$+aM#q~r)GT+zEW9Vq?h}k9;_HTmh@G>cRHo^{F zq-wc^2)j zvUAY^&Kf)XOh(sSXNMDAan8JK0E4;)Si%Ch1YmDcy_D@O(W)jo%21|f7p&DVxOKOG~pWAYN36T9gax{ z?8Jf@q=WIN?c8;4>^VE<_TX%`Ln0YWsLKvRi5Shf!IwB&kd;yq5tWo_?3ddp1JYvV zY(;*O5)l`WYBmrl3osFL@Ub8u!ir^(_g;Q8Sp;tmfi#R8ocO#1U zGpM!*`jY*$OIi`EC0#r9MGzp}Mg-BxSjV)vMO?U%(_REk(wb~f&mzRdmeT1gE8@~H zZtjP59$FvdeFwIM+FpCIh`SJO!wiMVL|UEYMO;YsnUO`Df$dUd5g4SC=f3FbSoVY> z8tmUz{(DW4n88=V`$uOLaR&=$eGwP$I_bG0m_!D8V{s84C#CH;8;am}QgUro5$ANg zeN7SOfs;P9eti*?kP@d*#O=NfZx+Elkk212{4xp=Z5-_)yM{2fxrj>{Sg@rC&Pq2< z7PX^@17vivB7Xb%vIyQL%l-JlA{azS$~szvXB{co&L)&cGT4kWMI7|{^IsQ%ACa}! zFBNf47|v#tK2oRkN)ZQBAAO^UgZ_24ps0|i!hbJ=mt1zMcQJfH z+L`BH41?)NHN`N6jC6ERF{dn;A6m?vQdnd$m-@@8E#|F)3B??Uhbgs~^JzS&F9ts{ zrrJGU33Mq0XHdhaZTmx!o2SuuSzwW&xN4q~}n9rDxs z=uaQJG0NhOpkfI}ieU-4SA2$9SSZAZv#FSmp=mCrXQoE^)ne)!;{Q`IXG3$g6oZQl z=i=>RZoLKEFBaWQ54&H^fLRFI?@E9WM|yo%KQ{b9F=uaawia{7^wWwG4EAli0`;%= zVABXk(Z1TAT~(KG9_cauCA`a@rUXtC3HmaqgflG82ruD|QBG|M%pfBhpH#x7pm;Z} zgnx_bOW+A|V(4ls;n1`9+DpJl==r;I38>{z$h^Cia1i%wYhg!8v)9$5lE%YD9fqejB7?DXgoSVlx=+}IL$ zj|gMT1mvD{Z3(AqO281H3hX1(Y|!)w{4MbHK*xuX-}MsjkiQ17KC?@p3t`GD3lWHp z$b848C7dI)SSOnO+E4;J$TVzoxS3VNcCRe~4PniBp#*l4JMXJoN~q3GxZYR-TIJ6& z#n0|MpH~ziYXbMakPawBil{)tA$0eAhfqnI937jR}e8fsHm%DVu z?m1e*$5J$v(Dfxan{hnKEi&a6(b)F7vcu}Ky{nU=WqmQH)_jEsjtXr14<)z(VX~Sc z_UQGJfBFBGz>f-bh1;pbYwKvCX>1r?O&|PL0(+#>!4Cadf{wyc`lj72fdOPwKd&wY z6&aONQwl#w>jh!!5GWscl8JfaiVJ}r{CDuy%hAM$-jG-a+gYHSt)ptY58k#DW{=! zmY2c-@-F*qY$^1Vw*^o5_Q0$fZjiV5@uipxSIR?YO(|?5%hpj>3g41Z&7D!op^Tra zFQvZA!r|r~kjNgHUkY=GT%TK3$^j2K8%qDBqengx@=pn+oO5i<#!^n3_Sc)GoEz|l zEu|a|sQD1bul%|cFGN!Mj$JC{60f zv`*)1r7)S4?730OFXEO`2$4>bV^6(8&#bpgxj269-BKlBTqdrfEuCKa#ffC-8yDrf)J zBs1m|VhXIJxEbY5prfe#*Q+MjLe;$WxJiBsJZXY+R6Qrom_Vh}-X+F6RqR@KhiDwn_HPc;FrE5Y4U&0xP5)DtgyMgMsi3Lnc|E>Bl}Y$y^npmrXJUHjW(E}i;~sWRc7d+^8~P4)X6Wa*9^~6-HP@hkEoQPyOGya zJs)o}%R<;j`^~ZtezWg4%QpLoTg>nPRr9l3zrze-hS#XJ4nJy^t%KYiGc1%cjNki& znSM&)qXTBSKgdBdzMe~YxbKh|5yPY@QQiz~6z7+}Xa*lu>h#NIG-1}B7Vdaes`ZU= zrC7mnGaX!kd~(tZ<5HA~K1HHW`=07s__c7*ye09V?~IkQC_ec5+g7YG9-LrfP>9o% zd2qpbE9IRMiC(ZyBie}eGX4p*89KCFYLsUFqAHFKn`Jw@Q;n}NRK>#k%oM8e9Vr&sa77slY@|BzqwyAalOkuuL@cEdLfPWK zF?0EynHDsDOqj1wsQSd4!Vgt^(;SQJy(pSvfr*K_7+@7V<6A*WFo@;&$hp_h?n`g9 z$Ux)Ui!4Iyx|l_zVhd`jMQD-8Jk+!Dr*E>zFrcF)7PODlSax4VFfH}N{FEgY&`|a)Ols{Zf> z3*v)kbcG9+c2zVR%4&V93VK2<=5BAHBVXTZEGQFV?vkDFB_MY0qH(dXS7hfs78sTi z_1Gqhd=Kik$aQ%UiwyHRu+;(qs&i3df!CF*Vpro<)xJ8By9X)A*3)Hdd^q(zoo}&5LcP#R?{(=Pxb=ryIL;5Q9 zWPauc7I>0s>f%Qh_?AkEUbetgO3c!~LNQY+A6ONCnvDg-82B1fDTd7cw*`Jn*EMXx z_&D*C2sAcFDzXx$k#tnpCGqPLtne|l4fZ5iWz&0Cij}sOr53DlK_RDjuGL1+y#|r<{jT{1-IMTUr2HJkUFyD%D%-(2) zL8`~m5~~dKX}`%T!y#+7S!K6hwbLpK)fp|fVk{Dk0H1Gta%q_ed`Aw{SZQmDCu^;; z9pt?gR-84G2|xs-gNcZbhDD|K4?Y^O!Ul@=-mq0Bb`yH6GUKV1HCA+lON<4yCJQi@ z-(!--_)jsRm73U|jaIbjlje!`TM^eo8*}(hDDsm^RBdGQ58Y>#ow|PVfE9L+JpUw2 z^+uSPizo0E4_al2iJuUwTq7}Hg#k)pcOJ09E~>ZX&!Lo1DN)`EJ=7ZHeHrUfX);8I z4z-bI|L~phK53;P2Kas7g)(V0Mpe1}n^oj*pP@iV znfCJMR#~*i+rP5PPM~-E17`x&>!D#Qy3=ZZAqdf!q&rr|aT?xN+W--pBnQ0Dv^M&& zpF|lOOxCGXYZXanRBKZhGCi@rIWB~}HB{sQ*mc=Hw z&?>jVBx)f}t+#A^h8_`Kzx@3qNde$H8IL+>8}xkja2t4NuyxuRSP#DMsd zS^QD7C$=m5HU$t&XNsb3$~0wvL#n72b=~coE*_Ak2?r&OH4tcK7YBOTxon*`$o2#} zIygV;?+UWboY&7T=0agEG?FP-pKF|}&zq|+NczCU1zC(8xa!!hwxG9_W2*x`UoShe z)E^39u|U8-i)~%V`MumR5@tg}T}}=?M_5lsh+P`=`n-M)n+j&L;UMR2jAh|iOOWgG zH*>7l=i`ErE4$TW`>b4#rz0HpgoVO>7QbdYgPyjIFx%|$dBd!ytA%w3n!KJ4*2Oh@ zJ?y1*_p^=O5Q_w2vs{QR^E9=ELu@w^CM5WTR(#D^9XhhK96Q_=46{AnVDmh-6lsg~ zgA4Wug|gX}J}=S}7AgyQo7#|qR<4~3hcU_PW0#73h&SVDY~?z*R?d$#*9L;2u%|iP z=III{1wCG_S?DWrp&8p3*`NviXo{OrO}@5EgC^_`^XQeJ>Zp5oc?;U>mX>t69^99Niw|S^_~Ie#!YS zt=pO{w$_DyK*2R$t_^vCO|8K}!Le)-y3iTwZE6d21X{fz@w2hj`XbRb_ntpe}a z9uCJdTO3ef&_qFE!(OgM_<-4v0nNRk7VL1?8}RpeI<7Iq-`wj**0hU)A`VIRHI55X zca4>8I3iwT@tOcOn9X_`v1(5j3Wqpg!gvXS783+F*X9o$JB+e~iOA!YAo5w@@jSK$ z>+D1Jbi{bp%%aG*hhx3W#{PstqM&fBl@p{C30>0@XQxg0QlQD*>+8hv^>W$QzqE89 zEjX)MI=IzhCPCyDbIr#N2V49oXMW@>TZT;K*zP(mh!pe)T=LJ$3AZe(53Vs4dfV-# zja;LBNq1?zyR)>Z&0Z-S+;fbj%R2HaYI2JMxpnn570cI@1`3SU+R9KtQ22h)6ts<8 z{l>SDiP0y72SUP5$b^)>|4}S6o6XEw!!7A*FKq8=X1kZ{=31tFf6J<1v7xm(;BK+meXET<%eo8gT@|%e;*Ck{y+2Ub z;%Uk)v{(CkL$2KF8fU08xU91{(760sJ&nr>YV4*KV@pxFyS-;g`_j%%uF~9LTk5u4 zXHh{-S6hprbXi+Px2v`*P-^H7b{O-FofRRySkW!b%{``uPRHCO4VAc^=jRm}FaqAe z<-b>_tNz2jUr>-=Tx=9Gq9sC+@!<61>gQD7ji_fZ8V&jST(npyG!_;V6rttrINZ68 zDwIbP7pDA95jnli^`W?Ny#xmzeML=qxI`}gL2cqow%BNtM)K`LHgx2}Xjw#zmi0>| z|GTX=ypd=&%uym_m$NdGk4eF^QpW}cHB9w~lL*52gsRPPK zuh?iXc>d?dZM4r10%+S1b|>i$5v!~+W@o(R4S8Rtp0Uv;RDAv0Ho-MB?njx@v?B6+ z*1~E0=5sc1QOCyU1)EGCmi{+9(NUdo4cP=-pEwlC#^s_b-B@z_hc-Iw&fOm&8|V|z zWgDbYN8I5rZ14${=jzv34V5zdFB{?{#xHw{r`lto;K|LyHrk^uiV43~#$RogHIwya z0yO>;N;~YN&U1AMc9}~;yT%Ur6d(4a*r9-;BFfm|Dm8>d-?zg$s^-vSJHi&nQQHdY zV+QeKGVF9LtSBbzRL8Mf@xHowhFxY9us6$&h<4KB{2%AoWf6U&Id=JNrNj<@p_Cyf zm)hkhbmexr6U#CTB1HA{?wjrMaci*4v9-N+ctEX966c@-(H{kDgP1EHztV4)O|EFb z4kgqD)Ud`5dnrkX_Sxa5RLT#3Y^NdU$mxDN#=N*|qaBt|IfZoEwft(t4)0TE?I^)9 zrg(b8ukC{MY7BKk@iE%H|8C4Ue#dX@kWT444(+ka&>bUB*k#Y8(E+;**X7Dnc3EKg z!DsBU0N_#HE^}1)@?|^tl$xSSL6Pig6D5fM$!l@}+4Tn;YKq8vPGEDIxc80XaW{GX z&avp~@yWN-5a8g4XY7zfW#9CcU4|oc>sdSMNVNGv)TlDWc7JSHt+<5IABg>e9eSkV zC_ImsNLR0jLu;GK-x#&SBQ)19Bcala{7DR0L8EKg|BbRl&7jAap@YV_;-e)F_!G6b{od|CWulafMNS9eNREy<8oD}HWSW8=pC|K{ z6`7Hp&-|3-`^p^90RQn+pwBHrCzO0cF~-Ks*QaXK=o(w9NS?0ASHG)>lonZX`O*pp zdQxa(DlBKq3Uc(;>8R0DS37{0P(e;$!UX2-iSM6vPgOMJATmSmopZ^RR~EwgPt|{__bw)D7K351L}g6YJNKGmQ?g^p&!qa1bvgY@mh3OCl#+ zmxYg<&*Q~gEf;F?bYL3ZyZqq*>tTZ&-na1D-q{hr+nc{T(9tbq_ppAhr=u6|Ucn&V zS=k!5@Mj3Gf_U?7X4`~o_3F8;-e5-ye(!IdhxdwLpsj=dtQkfAKOGN?bMx{9C!_p4 zqoFuYUohC|fE%dQUcbfx1JsH=)aQT`)LwP;9tT=pNrsw__B&uNC6owuAhWBmY;(Ya zl$b_|L%uH#I3Spl6nja_7sX;N)eg$Z#Po5O6&j`om`luS%#+ME=1t}>vytf$UgsK^ zzER1lA3zK8yer5x_yfph-=1iiJ{AwD<`x zcx@ftP&lkrtHuNB4uT3pOHO{WgwPmS~efE*vFf&A_J(qJ3EZIKgN18B=!3743O*Qtsr8Zkz$!BDI( zGPDlvbHYm$F{gMZ=m$?ZVMCJOriWM2;;vZyncZ(WWs!c9-*&>&lx)0m&WQ`H?ufW) zD4AR1UYe)=;>301RyiF-2EE=;kee@De2fNzz9?5fiuu0gh=Mu5_?YQwXVdOYGpGJD zbsvIfPfd9v<)#24f9!m^j)dI&;NjnzNj?Oj2=(Ua#3u(ueC}ZRD14mZ}C*g*nXnw8%84}BG zPZzQa>?45VF>RLGbnI}*D=&~Ye}o@4W`upEyAYIRPQri5Z;12Ho;K2eN*s4~_J3<3 zFOCFbOTE_Zi%8NUoi!!i?Go}=fkxs)xk5=x9?7SQr$>ZztyL#v$1#b+#{3miCydIA zkG@tYBn%jT6w^)Vngr&o0+-h-N77ul#B8q6k+X~o!_bdmyb9(U=5yvF=3VAIbB1}H zxs7>=8N^vOz^rC=GlYpS>zEBpKjRf&&{nVBFY#d(#OCT55YO=5bM8bw8va#lSJ zKakC7lMoG_8N@xlJxjGhaZlU=_3j!METi_ip#~R3rE6B?mNg|ANjpG>0%gL^z*fU^()5UDa>5Pda!xe{p;dR5!E;KT_#{_9 z@v`DBX`sHLU>W?C+6(GGoDNgc^!fSuhC*Ck3-OnpAI6R5B6U|7daw+>lHS?K5GeyT z@h#k;pF|6ZPkm2_782&P?MGecfXwVGgD*>PU#URLS2!`axB^yC?VcST3oQTRvI^*f zBkFQ+O_1)1D<+i7@Vuu@E{Bg&HFe@EmEr)I=A4N~%KX{obU4zjm_T80^+$8c0Zp(g zU~)Q+U^VII;%iTvK$3doe6d5A!A2LE+K1>{JF znm4ppz?0N@X(&)3iwtnzPmuxCwtsa~g@Ac@eXGM$Rt0?Vm?VX~(w>elW9l0#X`e>& z=aNc%5mxVTfdMozct!0({-&KS__?%q$W};qMg=(E&DejHIven?nwNjBL?*yt~#uj}go>9`VU^%be zR|T(7S<)MGiETFu!5;fJCJ5dJ(*gE z$AcBg?#2D(6V7Y2NC zf1UIze*OL$xQALp$MH4r!S?jAkiaLbb3>bS`QdvuxoLY@@@Bsq<_w;4%bYqsx!}gb zNg|4Lgx|KqjUvsf)2rbHN)S(FR6{N`c?70b0rdolUMJ=HRwCo!MR1oJbh6C z?mWUp!&qE&xC#zYwZ0j+F^dc_RWKeof~>EBCRJig*Tefp*T9R?rI_4^dW2VzHn;4u z^2SLwWXB2mRNxj-qmUt1C0~NSA7v(AUxs66CIs^;EXXw$8uAr~2k)%~2k1T(V;|qJ zS8<1M)#Ck|YvH7nzvNT{`WKN^q!u1V@l1!Xv?Jt128-W5%BRB$acoc3z)ZN4pNqev z(rWmO^C-9QfY$X3yq(oRYXkY_egumqFRxN-B#navy(ieJ#wCiV+#=uN6-fHSoHW6T zRv*P$Rh(kC2rQ5hJN5hw6BkKKkhf0O!mPoIHK1NMB~`OU!T8hONpqw=lX^qSFH)4r zox1Znr}mI`rsnBUj{C&}!=*%iOIs~Q-a-+nlaE?S9pu0&+`#H!FhkNOay(E6h0sBw zhbnQYn6ao7-eK@%YOD{rR0qeXyr=uImgH-@#M^jUN#Cnh3CF!FDO=X1sgsn<0pTKf zaMTXVonrdTl&l#l7Z~#kj7HRx8Jde4^NlTq#T<&LzD3`}H5!YWxI#7AgxAIysR_a) zQ8Kt>-o?BiOp?{ik_Bp&tK@%GK(E>bxFHnB#BV_YmX7T|XAAb+Ur|<9cZN6KL+cl zgNs_FXJu@E{`=c?7zJB81hE6$KQ7e4dr}eLhc4I2v_3<_@;q-d^^iz6mr)M|x)J-E z8MEu*5ov4u>705Y-St5iy2((Uo)2#(H>;(#$7ps+UDer Nutzer mag ruhige Filme.\n" + "Hier meine Vorschläge:\n" + '{"filme": [{"titel": "The Witch", "jahr": 2015, "grund": "Langsam, düster."},' + ' {"titel": "", "jahr": 1, "grund": "leer"},' + ' {"titel": "Lamb", "jahr": "2021"}]}\nViel Spaß!' + ) + assert ki.parsen(text) == [ + {"titel": "The Witch", "jahr": 2015, "grund": "Langsam, düster."}, + {"titel": "Lamb", "jahr": 2021, "grund": ""}, + ] + + +def test_parsen_bei_muell_leer(): + assert ki.parsen("Keine Ahnung.") == [] + assert ki.parsen('{"filme": "nix"}') == [] + assert ki.parsen("{kaputt") == [] + + +def test_prompt_nennt_sammlung_und_gesehenes(): + text = ki.prompt("blutig", ["Alien (1979)"], ["Nobody (2021)"]) + assert "Gesucht: blutig" in text + assert "- Alien (1979)" in text + assert "- Nobody (2021)" in text + # Ohne Beschreibung soll die Sammlung den Ton angeben + assert "zu dieser Sammlung passt" in ki.prompt("", ["Alien (1979)"], []) + + +def test_vorgaben_aus_der_leiste(): + zeilen = ki.vorgaben( + {"include": ["Horror", "Thriller"], "exclude": ["Komödie"], + "jahr_min": 2010, "note_min": 6.5, "dauer_max": 120, "stimmen_min": None} + ) + assert zeilen == [ + "Genre: Horror, Thriller", + "Auf keinen Fall: Komödie", + "Ab 2010", + "Mindestens 6.5 von 10 auf TMDB", + "Höchstens 120 Minuten", + ] + assert ki.vorgaben({"jahr_min": 1980, "jahr_max": 1989}) == ["Zwischen 1980 und 1989"] + assert ki.vorgaben({}) == [] + assert "unbedingt einhalten" in ki.prompt("x", [], [], {"include": ["Horror"]}) + + +def test_route_fragt_und_loest_auf(client, film, monkeypatch): + aufrufe = {} + + async def fragen(beschreibung, sammlung, gesehen, filter_): + aufrufe.update( + beschreibung=beschreibung, sammlung=sammlung, gesehen=gesehen, filter=filter_ + ) + return [{"titel": "The Witch", "jahr": 2015, "grund": "Passt."}] + + async def aufloesen(vorschlaege, filter_, ausser=()): + aufrufe["ausser"] = set(ausser) + return [{"id": 310131, "title": "The Witch", "grund": v["grund"]} for v in vorschlaege] + + monkeypatch.setattr(main.ki, "fragen", fragen) + monkeypatch.setattr(main.ki, "aufloesen", aufloesen) + + # Ein Film in der Sammlung, einer gesehen + client.post("/api/wishlist", json={"movie_id": film(1, "Alien")}) + client.post("/api/watched", json={"movie_id": film(2)}) + + antwort = client.post( + "/api/ki-suche", + json={"beschreibung": " Folk-Horror ", "mit_sammlung": True, + "include": "Horror,Mystery", "jahr_min": 2010}, + ) + assert antwort.status_code == 200, antwort.text + assert antwort.json()[0]["grund"] == "Passt." + assert aufrufe["beschreibung"] == "Folk-Horror" + assert aufrufe["sammlung"] == ["Alien"] + assert len(aufrufe["gesehen"]) == 1 + assert aufrufe["ausser"] == {film(2)} + assert aufrufe["filter"]["include"] == ["Horror", "Mystery"] + assert aufrufe["filter"]["jahr_min"] == 2010 + assert aufrufe["filter"]["note_max"] is None + + # Gesehene dürfen auch drinbleiben — dann zeigt die Karte es an + client.post("/api/ki-suche", json={"beschreibung": "x", "ohne_gesehene": False}) + assert aufrufe["ausser"] == set() + + +def test_nur_filter_reichen_als_frage(client, monkeypatch): + async def fragen(beschreibung, sammlung, gesehen, filter_): + return [] + + async def aufloesen(vorschlaege, filter_, ausser=()): + return [] + + monkeypatch.setattr(main.ki, "fragen", fragen) + monkeypatch.setattr(main.ki, "aufloesen", aufloesen) + assert client.post("/api/ki-suche", json={"include": "Horror"}).status_code == 200 + + +def test_route_ohne_beschreibung_und_sammlung(client): + assert client.post("/api/ki-suche", json={"beschreibung": " "}).status_code == 400 + + +def test_route_wenn_die_ki_schweigt(client, monkeypatch): + import httpx + + async def fragen(*_): + raise httpx.ConnectError("weg") + + monkeypatch.setattr(main.ki, "fragen", fragen) + assert client.post("/api/ki-suche", json={"beschreibung": "x"}).status_code == 502 diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 5e83897..f61a394 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -3,6 +3,7 @@ import { computed, nextTick, onMounted, ref, watch } from 'vue' import MovieCard from './components/MovieCard.vue' import FilterSidebar from './components/FilterSidebar.vue' import AehnlichTab from './components/AehnlichTab.vue' +import KiTab from './components/KiTab.vue' import MerklisteTab from './components/MerklisteTab.vue' import SammlungFilter from './components/SammlungFilter.vue' import MovieDetail from './components/MovieDetail.vue' @@ -85,6 +86,7 @@ const tabs = computed(() => [ }, { id: 'search', label: 'Suche', count: null }, { id: 'aehnlich', label: 'Ähnlichkeitsuche', count: null }, + { id: 'ki', label: 'KI-Suche', count: null }, ...(host.value ? [] : [{ id: 'merkliste', label: 'Sammlungen', count: null }]), { id: 'wheel', label: 'Rad', count: null }, { id: 'stream', label: 'Stream', count: null }, @@ -99,7 +101,7 @@ const tabs = computed(() => [ // legt sie sich über einen Knopf über die Seite const filterOffen = ref(false) const mitFilter = computed(() => - ['netflix', 'canon', 'search', 'aehnlich', 'merkliste'].includes(activeTab.value) + ['netflix', 'canon', 'search', 'aehnlich', 'ki', 'merkliste'].includes(activeTab.value) ) // Der Sammlungen-Reiter filtert nach Person und Genre, nicht nach Regler — @@ -269,6 +271,34 @@ onMounted(load) /> +
+ + + +
+ - diff --git a/frontend/src/components/KiTab.vue b/frontend/src/components/KiTab.vue new file mode 100644 index 0000000..27be506 --- /dev/null +++ b/frontend/src/components/KiTab.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/frontend/src/composables/useFilter.js b/frontend/src/composables/useFilter.js index e1b62f5..d825b1d 100644 --- a/frontend/src/composables/useFilter.js +++ b/frontend/src/composables/useFilter.js @@ -38,7 +38,7 @@ export function useFilter({ activeTab, netflixMovies, canonMovies, gesehenIds, o const include = ref([]) const exclude = ref([]) - const suchReiter = () => activeTab.value === 'search' || activeTab.value === 'aehnlich' + const suchReiter = () => ['search', 'aehnlich', 'ki'].includes(activeTab.value) const pool = () => (activeTab.value === 'netflix' ? netflixMovies.value : canonMovies.value) const grenzen = computed(() => {