From 389f6c404063558233450a9859be3301c9dc90a3 Mon Sep 17 00:00:00 2001 From: HycJack <772403255@qq.com> Date: Sun, 26 Apr 2026 20:07:41 +0800 Subject: [PATCH] add mqtt and device test --- .DS_Store | Bin 6148 -> 8196 bytes banban.pem | 27 ++ talkingq-url/api/__init__.py | 2 + talkingq-url/api/mqtt_models.py | 57 +++ talkingq-url/api/mqtt_router.py | 126 ++++++ talkingq-url/assets/audio/error_card.mp3 | Bin 0 -> 18945 bytes talkingq-url/assets/audio/message_ok_zh.mp3 | Bin 0 -> 6705 bytes talkingq-url/assets/audio/new_message.mp3 | Bin 0 -> 10305 bytes talkingq-url/assets/audio/no_message.mp3 | Bin 0 -> 10017 bytes talkingq-url/assets/audio/success_zh.mp3 | Bin 0 -> 6849 bytes talkingq-url/assets/audio/test_zh.mp3 | Bin 0 -> 10881 bytes talkingq-url/assets/audio/tts_error_zh.mp3 | Bin 0 -> 12609 bytes ...800AKCN_91LC-beta1-20260418225651-fota.bin | Bin 0 -> 195584 bytes talkingq-url/config.py | 4 +- talkingq-url/handlers/audio_file_handler.py | 2 +- talkingq-url/handlers/mqtt_handler.py | 378 ++++++++++++++++++ talkingq-url/handlers/websocket_handler.py | 26 +- .../handlers/websocket_message_handler.py | 40 +- talkingq-url/main.py | 29 ++ talkingq-url/requirements.txt | 9 +- talkingq-url/services/offline_audio_cache.py | 5 +- talkingq-url/services/scheduler.py | 69 ++++ 22 files changed, 742 insertions(+), 32 deletions(-) create mode 100644 banban.pem create mode 100644 talkingq-url/api/mqtt_models.py create mode 100644 talkingq-url/api/mqtt_router.py create mode 100644 talkingq-url/assets/audio/error_card.mp3 create mode 100644 talkingq-url/assets/audio/message_ok_zh.mp3 create mode 100644 talkingq-url/assets/audio/new_message.mp3 create mode 100644 talkingq-url/assets/audio/no_message.mp3 create mode 100644 talkingq-url/assets/audio/success_zh.mp3 create mode 100644 talkingq-url/assets/audio/test_zh.mp3 create mode 100644 talkingq-url/assets/audio/tts_error_zh.mp3 create mode 100644 talkingq-url/assets/firmware/EG800AKCN_91LC-beta1-20260418225651-fota.bin create mode 100644 talkingq-url/handlers/mqtt_handler.py create mode 100644 talkingq-url/services/scheduler.py diff --git a/.DS_Store b/.DS_Store index a9b2e23d68e6fcbd653f0c0d79c1db60d62a403a..fcd63ead39f7de06150bb2d6d357ade5f578b10c 100644 GIT binary patch delta 493 zcmZoMXmOBWU|?W$DortDU;r^WfEYvza8FDWo2aMAD7rCVH}hr%jz7$c**Q2S7O*gi zPUc~ejMu$B7pRPdL60GwA(NpbH{Zo2DJMS(WW-{b_Yz#kjys~tr{I+@$S@2}&d)6X z>S16o`oJ)G9gEcDc`UrlD__k6vYVM*fMV8cGLr*Xxfyp(j$tk2maMKeHZ|8#&^0!m ze3Mm%v3v42R(ZxAkSflU;^ds9{QMk{9!=(*zWg9j5oAa1+98q$awJp&;W}gq0c2;f z`c8m2fuCK2C#k%+0P5czAlGn7R972X8tN#Rn1UVC1$IpLWNCIyX6Lj2fi$Z1%ClK= zfAdnP; z9z!}qCPPVXzKcszPJR+do5nu3FSCyxcSMy>!7E>oVHlj8pIZRb!@!_5fnoAG0jbIJ z1bCTe+?otzH!~SFO#Ub&J2^m*n{n6V7{Njwsp@JIQwtphT_Zz_$$N!m7<(q)5|(G| zoopo}!i9EvvXn5Y(L29*ay>c>G#Vm-FdA6`#b^eP0}~TX7qfG42r`31fI)y8NV|f< deq-Wy=E?jro}iduV1mR7D54lP$Mei#1^| TalkingQMQTTService: + service = await TalkingQMQTTService.get_instance() + if service is None: + raise HTTPException(status_code=503, detail="MQTT 服务未初始化") + return service + + +@router.post("/gps", response_model=CommandResponse, summary="GPS位置查询") +async def query_gps(req: GPSQueryRequest): + service = await _get_service() + msg_id = await service.send_gps_query(req.device_id) + return CommandResponse(msg_id=msg_id, device_id=req.device_id) + + +@router.post("/volume", response_model=CommandResponse, summary="音量调节") +async def set_volume(req: VolumeRequest): + service = await _get_service() + msg_id = await service.send_volume_command(req.device_id, req.level) + return CommandResponse(msg_id=msg_id, device_id=req.device_id) + + +@router.post("/ota", response_model=CommandResponse, summary="OTA升级") +async def start_ota(req: OTARequest): + service = await _get_service() + msg_id = await service.send_ota_command(req.device_id, req.url, req.version) + return CommandResponse(msg_id=msg_id, device_id=req.device_id) + + +@router.post("/nfc/notice", response_model=CommandResponse, summary="NFC留言下发提示") +async def send_nfc_notice(req: NFCNoticeRequest): + service = await _get_service() + msg_id = await service.send_nfc_notice(req.device_id, req.url) + return CommandResponse(msg_id=msg_id, device_id=req.device_id) + + +@router.post("/nfc/listen", response_model=CommandResponse, summary="NFC收听留言") +async def nfc_listen(req: NFCListenRequest): + service = await _get_service() + topic = f"device/{req.device_id}/event" + payload = { + "msg_id": "005", + "params": {"uuid": req.uuid} + } + await service._publish(topic, payload) + return CommandResponse(msg_id="005", device_id=req.device_id) + + +@router.post("/nfc/unread", response_model=CommandResponse, summary="设置NFC未读留言") +async def set_nfc_unread(req: NFCUnreadRequest): + await offline_audio_cache.add_audio_url(req.device_id, req.url) + return CommandResponse(msg_id="", device_id=req.device_id, message="已设置未读留言") + + +@router.delete("/nfc/unread/{device_id}", response_model=CommandResponse, summary="清除NFC未读留言定时推送") +async def clear_nfc_unread(device_id: str): + await offline_audio_cache.clear_audio_urls(device_id) + return CommandResponse(msg_id="", device_id=device_id, message="已清除未读留言") + + +@router.post("/nfc/bind", response_model=CommandResponse, summary="NFC绑定卡片") +async def bind_nfc(req: NFCBindRequest): + service = await _get_service() + msg_id = await service.send_bind_nfc_command(req.device_id, req.uuid) + return CommandResponse(msg_id=msg_id, device_id=req.device_id) + + +# @router.get("/nfc/unread", summary="查询所有未读留言设备列表") +# async def get_nfc_unread_devices(): +# service = await _get_service() +# devices = service.get_nfc_unread_devices() +# return {"count": len(devices), "devices": devices} + + +# @router.get("/device/{device_id}/status", response_model=DeviceStatusResponse, summary="查询设备在线状态") +# async def get_device_status(device_id: str): +# service = await _get_service() +# online = service.is_device_online(device_id) +# last_seen = service.get_device_last_seen(device_id) +# return DeviceStatusResponse(device_id=device_id, online=online, last_seen=last_seen) + + +# @router.get("/device/{device_id}/responses", summary="查询设备上报记录") +# async def get_device_responses( +# device_id: str, +# msg_id: Optional[str] = Query(None, description="按msg_id过滤"), +# limit: int = Query(20, ge=1, le=100, description="返回条数"), +# ): +# service = await _get_service() +# responses = service.get_device_responses(device_id, msg_id=msg_id, limit=limit) +# return {"device_id": device_id, "count": len(responses), "responses": responses} + + +# @router.get("/device/{device_id}/wait_response", summary="等待设备响应(同步阻塞)") +# async def wait_device_response( +# device_id: str, +# msg_id: str = Query(..., description="等待的消息ID"), +# timeout: float = Query(10.0, ge=1.0, le=60.0, description="超时时间(秒)"), +# ): +# service = await _get_service() +# response = service.wait_for_response(device_id, msg_id, timeout=timeout) +# if response is None: +# raise HTTPException(status_code=408, detail=f"等待设备 {device_id} 的 msg_id={msg_id} 响应超时") +# return response diff --git a/talkingq-url/assets/audio/error_card.mp3 b/talkingq-url/assets/audio/error_card.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c3193d61f1f171ffc9b29a542c21cbc30b728efa GIT binary patch literal 18945 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 C!r9ya literal 0 HcmV?d00001 diff --git a/talkingq-url/assets/audio/message_ok_zh.mp3 b/talkingq-url/assets/audio/message_ok_zh.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..712a3e8acdc9df44d760d204f7ba473e6c6e4c4e GIT binary patch literal 6705 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 literal 0 HcmV?d00001 diff --git a/talkingq-url/assets/audio/new_message.mp3 b/talkingq-url/assets/audio/new_message.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..87383b9242770ab9daa406e017992a92cb48ee8b GIT binary patch literal 10305 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 Y_+Q@<4=}`^-~a#s literal 0 HcmV?d00001 diff --git a/talkingq-url/assets/audio/no_message.mp3 b/talkingq-url/assets/audio/no_message.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..83bedc3340233890816e50dd61d10395f137d021 GIT binary patch literal 10017 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%0Dj1S;e@s zF&GuW#V+vra8Z$?e*Tt7z_7$1jC1gM^xL;Q4vNjcS>C~%V|K^MTwqVWoo-NuZ0sP^Z8aqH{s_307h6m&<0R9x^p#2qZAa6{uZ8JVg9{YE7zHF0?-F3`kL8v9*gUDOno!`O zA#YN(XDxI5?EPD~$Aa<%yPkh+VE*Ccm{1u2MsrqlGEoyfN=4D}yb=R2^d4mT#S>_=h}yLx5 zl;Yd}?M|X-Oq%ST4vkhB#XaH1pLJSKju!#}?{YFItC-jX=XW&KWa%J;p2$Qp(H|J| z4O6dW!Ff93%L6<=ThIr3J^A9pkdq^WR%`D!nT<0rT}IILKHY&hXii9iS3tJE^tq1% zl#n7fl)gcCv2~cxnh8N5JVRHwCyPSJ^ZPfO@beGmzDmE09WzXhK57{UBcg8+;s6id zfg-f<)5LMC3GLg-3d`Lbeh3#==+RzVtZmAhlSC&jtIt1?Nrx*<#d@PZH zum~|1*UX&OE!5Yaty4__>-8GI62(i~tb|1sp%u`FFBo6IyS{y$1YvJpy#6}Bc|q0P z^n%*RiSB_MWjW$zx&`ikOKN%i(0)Hl4h21#hwEFcH zN|%Cw%ca)~Gl~MJvvAKLjjm|-A}W>$Ef#4RZ+O2v1tp;f2f59@K7Tt}j6jGUH|r1a zoQ=JwJ;!r}nip>|F?|A?hVm0uPI$s`9ad4pwnFsqYM- z1P@cRqOlgYUsXYPrMnG<7XAu~(_6h1LK|J$-SwZ-XW21cJoM$hQIDnqG8xyHK7G1f zc(vP2ypi;u3>bkvF7iSxXf(kd+_OX0%PK(FKZ_Orx@8P!c~+_7JeKN~&k>;F=y-(k zcl+{+u*zQP7Inosp{%YT{9bVARQSI3rIVSJFF+NZaF z$qgZIU&1{AgD){MXe$b@{e0G!*y9Wg6BYRkR2H8vhy|`8S{?>p^%)>yq=QoY5C>rA2 zphx5Aw}!ww-_X4)x92}F=K?YPHr4T~8N6x8R;@y1(p?pjA|l4Z8{yAS)oq5

i zY`A0Jf0EInT*0-@^2NyhLh6Ig+Tp!)T=lA^wuSZ;LcwCgX;35|ePmrtt8vZ5nc|@u zBX{9Vp#7#NAt~#LsJ7YC9a$@Tj>nsy=l*601mrXy@;sQ1XT?S_n4k|q4=%p7_1!^F zFn=Mt6Y>b|-{pT4IVb)*U%zSbWUi3MP<`wsXT)2;oglQ(5$YkEzcor9#g}cB=D(S$ z3*_RIx@U%!q&1g0a4RjwfhUU+K%o(6g5=k+&ue5N^{y5LxyK+&OvR;Xfuk=e71;!g zreJq`^#9D~6;V;slN`+YSsGY8x##UzPvon~#|{>1c_7VAT6_8Og7Wf>-U`bs{QP!{ z&G7pCrSkjU!qz8?C%l+tIPhsZ}yu1OYz_JOdn393Cf-@_@A8r a*Af56vBEw6&uh>i@O4)I$NvAnKK?JRNsyiZ literal 0 HcmV?d00001 diff --git a/talkingq-url/assets/audio/success_zh.mp3 b/talkingq-url/assets/audio/success_zh.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..eb07858d2b1f0b1877beb75c84e26986a887058c GIT binary patch literal 6849 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 literal 0 HcmV?d00001 diff --git a/talkingq-url/assets/audio/test_zh.mp3 b/talkingq-url/assets/audio/test_zh.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..fdf084b4f0dc97249958a10ede0634ac3c9481fb GIT binary patch literal 10881 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 literal 0 HcmV?d00001 diff --git a/talkingq-url/assets/audio/tts_error_zh.mp3 b/talkingq-url/assets/audio/tts_error_zh.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..67e49073de10a38e10f745ab6087dade4376febf GIT binary patch literal 12609 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 literal 0 HcmV?d00001 diff --git a/talkingq-url/assets/firmware/EG800AKCN_91LC-beta1-20260418225651-fota.bin b/talkingq-url/assets/firmware/EG800AKCN_91LC-beta1-20260418225651-fota.bin new file mode 100644 index 0000000000000000000000000000000000000000..96486ed4466cbf43a109d4fc0264b24a59c7c759 GIT binary patch literal 195584 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⋙0@o0A3hC0-bYK4&`5i*DcH&C~2|cfEss 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 td2r-uj#_uENl`uq6SYX<{oaw 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Μ7d=h;d3HtE~Rua-ncZ0?`)1vv2Bh{H7;O}GhD>L@ew1RQkoMf zQqsshhzpcN{H)w=dM;+)+$+~J#GUgnJd2`Uf(+Z7@CMcGmY^d4BB;nulhndH1PS@q zz4%p8$Tn~OGy%|L>x(l<6ERNe1D~@ERwXQRE z2F*fQBXO}K;bFU05ED9M+{r8#iLlf+4d6|_8(5TO$Ry9O)H<>`>u(q9PB0PAZe%&} z=5&{z;R^tMk?Y0yMtGB{^NQK-L~$cL*0AvBj+UxzV?1Xy!syW9vxj)5p4|m+z_!C@ zOZdZQ8DX*~)lHECka8Q_P>pEeDp7F6)-#(^9VX0(+5pq|VFqJOK-@h^&VqsZcjD{feerB z;GCQCd~7Z|t~XqaHD+r)1iP5BY!`e}uVQo}8(GEAYcI7kBj4M5pncW2Re49+OCx@M zRUU`P45}zQt?Kj#N#T>WgBRc>LIbNccDT;N7OL{}LD|PBECMXCp^;u#0vS1!roPCh zoM)|`6m|F8WG59lSemuU%AVxluL)5#tJrsWJaLG-@^-smQ{nmVmxeO%T;$m~(I7;=SoLH`Z_kyoc*%jmYQaMflf?BTIRF^YQSv#^X6oWJYq{1MO_jB|bAb z#m9MPXYn4l{q?=??VZ;?-#+VdO0o-$fexk?tDI&SR=lh;>Q%W%LH3WctJmT%dSoA! zG~Y=V)CNCIh*`5obt-}3wlkx3opI7Rm){zTTnxA`ChsVR$wNA{?ADxs%1xT=HfZXw z?k_Q4`^%wq6z3(6RBvSf`qn`rkNBI2nt=LL;5kz{UXR|pTUFi!F|O*q0BIb_ucIL&3U{!D zv?C#EGIkmGbCckAwi0?xOCQD_GYeA4p%|%Dkz!|LN|sOa%JNQ<&94ljlE@mC$z_{6 z$RBil382I_P85F*xX)~%+T?bUmjklxBRno)n@3UiPQvsZPF*A0oD$8|vxNs>n@sTf zEPSF;#_RpCB0Ng4gZ*V`#tc|e0W-xmCIUO9!AgN}dacDALc9zar*9*CE;yLYalq+W z4$^97%)5a3tRALur=5R`HAW7a5-D{4mVjPZ*wQ88yO<9(Xj z1BWH;*q34H1T6pU*MQ|jz_MO~r2*|RxXB)DX4$ZlgWUa)d_saG%{R8bT!JLo*_Vjl z!jXJ;NpNhOC&O`rG=|M=VZs|noIMis$hYFKs_*ZMG#3bdu>Z{k4%$SX^bx1MSh5)| zj_*le1lZMXN96W6tF|3JjIoEMVV)}X=7?$<4{b_j`15wndxJtds)e2)lY~e$nDuPtnC>Yjm~aov;cv zQ^TOk{_ohU%W!`S_cXjC8V$A)!#Yo?e<}1d>9qBSqet~Q;-ibS;}(`(44D_Q<}P?d zTjY7hbL+yxi1Rb-?!(a|Gvj9zM}w0Q%c7?Xl*8d@-^^H8B1V8Qh}Vu-%+ZKVU1x?B z^vxzohpvPbRWA7LMxFQl{QGVB2yK}Fy>;yPm3`nGk{n(xfvLL%UXodn;-|s)pj19- zuKN*-Mz*^pta=N|qdxWbk9`rgd3Z;9v9$NUA8qol24yk`bA#z=(g0SIb}ii+APa*- zFTQ<>O?h@{x`UmBy(H1MZ>wE>qAtoDdZ}kDqIHk87Hf z?j>H#9at{J&Qx}Gt3?Q!ExO>kvX9|Ed|uXSyAZ64vQjzcLu|pDVR!b$@K*bOg}M>b z`R$+=GmeR+lE{1MEx-wDtI0?4`j(V7#z>LS3>85eFd*y{RDd!)^#=1+rM{RV?fxl% z!^-8kN?&cQ7NwL33?^L!gSG$XQhb7a<(_Y?o-M3>zb=Xio=3iAXdbIelmS8j$5eC;+ zX~n01@ep<`)>MM|O`f;aB8v$3E?6$ZmI5B@C^G$l9#vvW@SW&UW;SdoV|N9ku9gl^ zA2En(Z?W-_Rh;@F=g3f3o&M9HPu^bcUXB(mpHV8V!^-f%>cd;@gS8m(sk^A+D$O8cP^?}>}rBF$D*nNaS!q?0YrZWd%gm(xOXgiwh+JL z$1uIS{qKLOj%4k6X5=$#*FLk0{y&MEZYGwjc1^HDghk*vS~k76e8c#zFY2_1~)!S{|}nl0|~ zTB^qb8zF+AC8o2`Jzb&=1hF*hV2JJF@;G>EzEr60l5?n#Mj9OWs8hO9@sAziM)c!!R1DRmHvglIKPv(^!#g zgRq{kuJq(%=OHkyhD>ceRqIgs;Q2o~Vsmv8HHU zrOig%1l;dL8_V+LwMBhdfZxngpHnZYPh7*+M5$+yUsk zAC36OV5W?znh%H;_mbUV9$=K`cHyge>BHnHW&9}VS1!^KB#V2kNHrX(;8|Ou>2f73 zx6o^r?#yUy`&^NBn~@LiSh)NC#fvE3)DEw)dXy+df6sm!(Z`lb)H|@e<;_q!esS0( z5JklDr;rW!Z@iB|Ovu#A550@3VYO#@F*Lr08U2TlanZ25e~2PM174Cn)1c-aNFxeAl2yvVT-W4||qcBKgMs-Z(yiI*y?X z8pG8Xyb)<7p$`NP|Nu?wIbw0=+$aDt7K)!--haY+-8NCn5TN6n-s` z)0P>acVC7MhnZoN9%*Y1NoNGog`qu_;6(ng2=^2I-iqjHj9Cz;&UjFq>KXy;GuU|S zRBS=a#?Gj>sl_?5vbcAp=>}kd+hosr)W1UM?P$zJnh(OZs=g6e z31fk4VMi(9mCt+H&42oy;bKgt*C-0j~(7RJE9|**#aYQShC1 z+|;7oLRhsW)Bv7<-})S4!A%!Slv%bc>&ejXhz|VDy6m4bgnNECZ{lZsJ7!*~3S zNM}hpL&drWiLqGs@BrESG-eLr1MQ28{ZSlEUYG*UDnbbO2)alT!Ly_xHRkcp+K1M9Kp3r!IQKOe+;JctG zFx6RU<(1>R75FhZpB3Hsx-5$eO_yLdT}oGS8HWu<3K1!k8N1dY&D4qbz8IFQr%<}& zp~1b-OEVdf^d^HN)*;X2{yA*+?DL=X#yqR8+vio)al18t9$&c@r^kH{?(o9yw(gD^ zBW7no4S51FD=q6m$)iy(Gy3Vyk+21qN0#tlQz!#z3Tldb&r4%^fNHf42_eGmvw}1p zg5{A=64HE#7Jh>?Ls8C$7#|Ziq*A+!JQw9)Jv2MZz{#Y!ayMe~t?Ik$g;bQFkxI~5 zJ_#*PTW1=VWy{t8t^s2d}isJK^ zmcy5&!|O#H2S3gLxlh~Q>153LnO^TicvLRUiV2Y)_BhL*gY@@5CAtl`+wxUVaC{nm zbSZpDU4wN2|B~}3^y3@aubF#`19D5r8%(N#U2vxO(N=Pu`E87aS_rQJcl5VV#c8Vg zTj=o~KooJoO*pIG*@5{GsFv&AQ$#+%_9_n${vV1Y zpZ9Utj|nr=#hA#x9?`+2JH0s!U(~dxa%|DTx#Qq_%!-&Zqw@U>(^bqAKUVzuXvF2o zhks49gZymFFO|!uH9)?e$)^78Q(XSrrwgBnUbui)OKPLKLn`r+mfwI= z@e-(ps?fL@!gH7pM-%^&c$jRh$+Fs7lUE_&46so2VgI64(A>s1a_}cO&pQIG_IenL zUgBBs^||<681Q--3;Ui4&ln4M(Ubjx4lU=NC7&OB<2$Dq@vW%fCtA-AT8>VJ85n)W z@?MB<@Oo!^XH~EK!*0)XzX3jxAPJFt>@BhXC7j~cfp)?hV8i1f^29)#D*E+CP>zB9 zpMamyhS&(0rypRAOq>WGikOG@-zxZT!@JM$dl#jJPk~&_*OXRa8|HEVa=p35K zB8`fM~8#>>Y_#L42$w?!=?;AoRhCM_rGS zKkEsw!Bx&-rCxK}1NipQiU;AhXD#`6II#x5!zHGP;*Gk_hd1!`#2Z9y-T%S!V$_@_dC1~p zC)>*z264Hnr5ub&)y3l1tnbPK%1(O532QlASfMp@_nzLbYA6?N}R_$A=!XOa*3 zXR4X8l|l1;DK9RNc8CS;iK0D=ha}1`8uwN8#jYr|7nfh}DuEB9?k)~BR7y2)rek3q zUcINglTZt9`V)R7i3h?wBz+ZVsb91Ns`_-uZ7VN#y&vY`mDwfb9I=!^45SACht-Ug zi9GH%-?y`Eid6R$scu24yD3oIYd4kJ4~30@>qJwIdm^a3uCRdeDVnYyev*oNrz6E* z!r^N3eRZJGXvf;Ql&PC2E?zpe%AQ5%Q@>an(3h9m^WY(Bwy80^Xz4_8l+<%-VGO>E zz?TK4--Ly&*NO7!+>aSw73A>Egl~&X{%}3!Vl(C%&AA}%U*pO-2p=c7eu<0d{omnE zxMJ5d>>t;{r!lTJT&Hl|gLm7@fFp3FP!97kDk5dne(>Q!=qGzKJ!{Es3Qv3e_Tvwa!!VZ5xyi=NocUJNB2b=<~6%vG0 z^~+Jua%t4m^)wf?(%-*Eqng_*8ARc=iB6oW81v4>^FL8HSj45}6eD%n^ku*u(i8IT zxEG^xFNX+s)$nm8&(^mQS*Hy+k%_GL-+~;BNmHw7jM+3hYHDHg$$Q_0kjK3VUIt<} z(O5GUU+`x4d@;5G5p~LMmT1YD`;NiRxw%K+W9#O-C*{zI8Sxh^$45&hYPi?zixuC<>J zl>lC4XxX2l(G9Blks`&hn_*gmwA5&9- zpK(>=+KTISTwmfEiTOz9(NoA5k9lAylc6YG|##KL_FEjdFt7w~`s-un{%g7=Ew ze+PbqPnUB(ANh0<&NbjS_}b?v7G^y7*W};sZOk(UJXGRrGUnZjeFwkWC+fow`$gxO zwJX;x+jEY;uN0n#;IIB6ySJo>6;nVVPm#_k zmcRt0nS{~(#&jkOZ{6p7cQcSDOmI(_UW8rr{itpuuGJI+3NphN^Dt&3^2wLm$nt#T z8kyhh94BESits%(n2YaY^GD-*fjAo8HJRmkGq~m!XLh;O#qBQcEkJsTh{xXte&E_% z$dFUc9j{6Xrk?AnN(iQwFP3mn3{s_@%li3~*p;jLN>^l~yx)a~x9RXpT#@Cv5RMtc zpR|e0@I%f3{Ak8rdk7xZRjB)#{4}IJhJ8C8V@mU7C&ud+7^D5T4r2V?!+jy}(lA^% zWBgXXikR=X-of)}-1UbG{XIyRhP&~Ph5n_u=HdMq{C)~)$gdUP?p(KW2q^ot%Ld^j zc^F<_4ma`Vd^JlDi)JFcauBqPO7FO!9=$6FF{4X@F{7;~Es&}N;R(qc@pH-Oy)Kx7 z?=iuuzUmbV?CBL5ipIIzUOoyy6`-Atg98cTNpOkz7Z9xC0 z2Ay9J9B_Xb6h8lMaqo%zQhP`E0sEOw9w*cf@`ZA~QU%z26wZSeZ}=AmY+3*tC;Ig$ zuJN?4q`pN(v^Zag`U~M%J&~HQG&&D5Vgk zyoa{8q1{omnfkC?X?L`B{W6`HSd};|+)lpPB|6d; zJ=ot?vdX2lwg56JrL0#_{#0C4e&zXE;Xlu3En!;Mw+!>9iW#6VKlR=jsOSyOJTr^Y*lm zFbNW`QR!lD$Mx9_0d}Gzo9%kl5Eo1ZPctdXjxEUCVm}{j&hWkDb6%hQdDtM*lU_U@ ze$XD-AAjOu!&-aniFJnjfJp>CuiR?Kep2~mD1uapqY^rJaZWZf>Ozn$WGCw!DABsZ z&ZAs81zN^8YOW1E0gp#)k5Qc)NmQ}$&@>`ujDx|u*-`yX`T~8SBWk>9b~NiI2d>#s z1MUXgQ*YX5ci?Y#=-w<2Ig=y0#H!PLO1eYaK1$>ruLOq1*d_@kw6&e&_kocZN=lG9Es^#lc_X&I%V9+Y=XsLcwuk zmZOJZUWqmvUx_})7$ZzEMJ@)N-wyo4zj8Kq?o+*&3RCiioMiH@dk;L%yAJgxs>;3+ zF0iLH!kp8L8qy)b6wEoTQI(t-6jyd;FeC;Me$8jhz1Mv1ym!`_!ErukL0-nmr+QNm zoAFX%?pLaFX{Q-YW{8b2Wq-u!wFoPo^5DFoys>@n4UmH=rHFA>&*1l}`nWr|T6HbAi(>p* zL}NqF?xc{gS+g1ay_2om6CG5{Mt=KEX%_qL!_bczf^}mnmi)Zeu~Yif$*Ic_2;bOu;A;A^q*`gUQaM$9>~dS{?^<&9?1^US;f=s5)M{(NagNOX5|PszgkAg= zXK$tINN<5kw}r-SPc(a`AfjdlHG5Q>V>UCnj90%oZ8IOa^kw$t()F!6G4N%AUK@Gv zE5@?B-F(~5hcXRjc!_XBL~H4>#s)>+4l9$hwNE{+KsnREv2}q7HWeka`d2Y zKcXU44vMmF>&+&S$I4)>zz>tP?Lv={J986GURWJ$o+@}eLmOhOr$U5zj0M4rkAgA| zqQ6Xg(w{(+MJ} zPfHBVj0#ojPODY){wbuRZ>G~KXh+ibFM@oHx$T-RJ@nHU=!w!P+1B-Ids47LV-Sx9 z4TSBi%&2oAz36jp#XAk&u?1WWupQ3RYcv-^oc9T-PL8J%wN&HS@4h*YIvDGxLAj2L z$R%S}rrm#<<<^PG5gwe7B>c?}RYrx%q==A+Q~Tt&AoZ)EG#RA|?G<=KZwG~#cHG_H zenZdl<3jZP2_-G1!*BQLpjp%b)+v!oz?cQ*Xh_BmNf8#>2!y5a6}{88`|t0AP}uv`n%+P54CR>a;|xZ7 z)TCf!Kka9GG=dl>+JeTKgqjEJ<3j8xLpw7jIXFy&PmM&h>Gl@;?Wa|Iio+Z_DammV zTh9Xh7&H8_V_zpcJJgHF1Hi=TqEK+qjyZ76@Y5>QJJ=Hi#Kb!jOapvRh4@jYJKhM> zDEl)h7e9)2tyj;oyl?;JcIZ##GFH@`d$U-s~~+L+)uMN4*na{30Ew8x`!P<46~8yd=D*1$F7XXtINLVcpGbKd7!A3CoR}v zY*%R(B91`|^U{TNe}@)Fh$8)5x^Vx?tQ9M_YKXX}H>+}uWTOfw^PpT-Gr8&FHt2<1 zvZ=dvb~CyxaLnS;x7+n6wA~D6i1ME6ZhG9_^A;0Xhp3mV&L}Q%EEFll=N*Xra){nB zxeLX`RK_(_hFU6Pv0=MC5oNGcM%SjBA1~|as0OE))eVyUb;|sk+Bpbo_iclk*mQC+MTI}f5c-^tv|L~tz{Yvh^u&A)NFI_V;kt~ zY-q2u1AE65weyYHj(aor*-syj?ba}5eau2_Bofs~@4AjN#&|#vyUSybl(9W5E3_|h zusPoFcYm!7zfrb8ENXX)JMC%5x%&Cp4e6}oItSOq7VNa^j+5>v=HHv^%FYMh=wUgk zcaS67@hbAE8dsg*w#Id&|kUO4-pUQP*y}<0I4fHTK1hr@J|JB5a0 zt&eZk?n2zQ5@n(ix%H>>B21RqMwJ1q8>YJWHnb)cA70&8nB<{ON}C^=doMu zzzU*+!TsEc{uxcFdQ~SH8w5AhOvHt z^BuEL6KTBUM~j|0ejplB*NhfW|1D)GjT!UjV7}aj+mpFEYQ>oIp*obh zF8i6_OJP==jC}ck;3wY*;_t$~R+8IjB8lIWoYBYKA9(F-?Ce*2mhp@=rZZE;82O%6 zv)FURNhP58jGt@bd_*VUA7Pt{^Hb7Bf2Mnw&N71du=oz5bu&5Hh_3eUEi(}-9rR5d zB*w{?F7$o909w3DS~%#WV&_~idh}TEX44`ZH-`EC|0J&e|M%bj_^+gY$WQ4E!Wbq& zV9fuQvNwTi>dgAb@4eYs16XB=8i)%Jv=O?fs6>{lRa>`q#)>nIVp|rcwY4*2OIs2^ z>(Wkv*j5s?woF?U0nv6wp*D84%Qyp7r*2GX%Tl4z8;B%=lK=PI5bQGV`~Lp&G0DC6 zd7gWo^PK0L^PK0L^8{H9Q#3d!JHW~a-&@{5yn;&4^v*2>{VAvO@AEt#fYZU1OId?t zP<5YjYE;>$j@O(9rQFHN&pA+DCEJKkR+Z3wekrf4@Vei-uCy^YH|tFCL_sUd0)?Kk zz%Pz`?mW}?DtgLnAvR{J(lL%#>yP$4T=+W9r3$Wy=Jz?&aVq@_SCoZxjvR2phP9yd zwnhEsFk1WVzM{-#yFXy5PS}<30$Go|@P#YV!caZaH?}yql1X5M_e+8+jeXlnM<*Ej zQa1(f{Lnd(wWOPS7i|izv_%JGh6~84+~jYO?LL84r3K~CpC=EumMny_M&X$fCQeyF zwg#=}S*;MVu7#CRubN8_^)U7joL9HF|69X>ZV4A`59YV$Uo*d8taSgu0Y=ONoE?A67|d2(cM1{8%s1}?dRdErVx zVVApMK(im7wK}$3%g5|z$`wNP^=R?^j}^1n`vsj}qg`f3_+xR5O|yqd-0ujntLti*_k$AV|;OC^!S7~yIDEYXDP<1ce+tl zZh-BJuqy3GGJlh~j6a-Z&kV8eb0i}t@IJ>%$mb6ne~Ye0n+LkN09e}lf{Q^!eX+&C zcDhO^CMzq`x1^Z7HI>*4Uk1!6ghc~BDC3HwD`$##J{usrCnH1^f0&!Vhr*`%p-Ca^ z1*bUCtJ}l~FP0`ihAD*E*XRBa8TfY3XWN}U>H((rb4w__NtjlAsAu7J*-q5!7d9|) z%%qe3!k?Hfc_0&evcL7Q?OBX41JIm#RJrqc2kZi|q|-35m+N1>@=@X2JtxKX!q2_i z^XYb+3_p|APlv{%#II2M(VqF+8NE^1SX|#TU(5q9asGStYmga~2{Ypdjeb7-2o*x$ z;DR5<*l86O1gfEY@s;pwkm^A9IzY2Q)g_T+<5Xhe$NxajahA1k)=RV`7n;2Z;`b>p zd9%oc&%CYA7!{TL5PmfT$9SAz zA4F@w7o)80?f$1fe^R(nB77}b0lYO9vv)?lGJB(8%0LrIjczlGIWO;Ew0|Sd&axJ8 z9$1$pQC7Q$U7|;cSBs~JoFUjMhv#arH4yO#^psoT=MsOn7^cXYqj2I^ly$7w@*B=+ z5+(S@1xr*VN^uJ{QP#URhLrm_1kul6U#kQ zid^}1i+Z(>MeQSwAs5bFC(lMxU6eg$V?3~Mq6C(sC3watgzpC}@cPPc^>GF!G0iR1 zq`4%u%hLa6F0r{sA@ZE?uryas&G^KuOEh!C1vRs%cgbV)&PYeTR$0bqX&#?dD9`S` z5>UWuiNj11>jo4qQ?tm6EHp>fgQ~)b_bY9mV((p{d#VcooJvkGOB#{DjGFaVkylDYg+%YTGpVfU=oeOyBJa5 zXkO{W3L);)<%s0Y_E39#PXOl3)6M=FBing&M^3gWBTI3b#L(8yx zTqzgs8486Ah^{Dde_az@nT*m3;SLXRxFXlTYv5CB4s4yltHpZfyu>SuT>ljBM`PyG z9Ftk8xA1<$DWOsuE51)R50Uzk z&b`iiACr}1L@pAaAl|+7hp~aDE|1nJggy^x2CzgtcC!D~xj{XOi;!CvWj3x$F4>-* zdLE@&Jl$}z|Hlom4mKZhdegQv`R~Z!h3rj{S}(NY6kW{H5bK{i9+{Hn+Fsk&&O&|{ zVvaonO)$;%L(O=8OdH8`SLX+P5fU}v-Pinf&lf%(>U`fqqvao|)$N?~-X~9aMwPuT z_F)U!53%0WQGeA|WbC_v6D59)=hGcAwwBA92(C9J9Ttm-j4p1uv|MJ@E7Bb@dxpSd z$i(q*bS&x}H8Klt!CEBEwYw(DzNj~H_%53oWt9ucLG>{o|M0)fKcag&mh#g@ed1-0 z(zY2CU=-dgj;h=q8D)K8m0?PxV?D2E{t$Zm&PYH1xz^<4KWY8HsfntjnSgawz^6Pr zi8xj$c&pMDpo6|Ps7lz`u@v&{DhZ9&^qzU!gPUKy z^2LbED7qS5L$nsXlj!r~j#saIGV-kV%ul6Dky}=Cxsw6UT-zRGi>~Hgj)FgzmS-zs zsu%T6cpQ9!lL_B?aUz*q#;3U^*2=-(>dXo|dne7-s2cw)9&b{$v++@t#hK8zWQ-73 zY{(=Inl(;26?Y`(96^JsYmyeVo_;Ak)#>ASXS1AF>bJJ2r?$Wwih8SzXSCXm(bK&B zTWdn>pwR--Tc8C+01}C$`vZv;{E2wmO31Zu+SLh*`d8etxGOds&t=BGEf(T5fGH?} zH}RyQg~JL0+%k*1)^MsOXl4bproGAKl!a^}ak;K$@>P*wCMiWuC$q`APcS5@_s)IY zdGF)0iZZ;Ji36oQPH_3PFxhTd7sqT#XL`Re)6=r_vUFqb$7all$1zJ#kMuLli)1M@ zPJJWE3|sm>M>HQ&@f~KsP09_k`#8j(+M{hV>oxmsk5vd69-mAOyw1*%O-<|HTgz50 z_e>J*w&2{OQk>n1|99a(UC+fgon9?Xc^-1woARi@q~j`iQ-}X8M6u6yXz-q~cA53b zj+=OWUqXE%+)}>?w<(xohk6!(ceFxx@w)dmeu&cyQG+ney&uhWe@Jz*x$gHls#kG^ z0ZwEi^&{Ft_mD0^6v#|{ggDf@#3x{xmi(hHf~`zn!!yER^C(eQdebbkMWhE)DHgiP zR7Uuh+3VhUjkK3Ldl(TSr5zj-|@n@B8bt+uQ4Ihc8xIoK98&UL7Z`5Za^m zX$~yvoi55sxe#|v2F`x_!Li^S-i!=at3+lcOwv5t-G_{boP91Pn54A0IvkMnRi+oYX4J9M*93LJNXlZ88Kvc3x2KWl^W#qH zEi&PXbAa$fy-aiG)*W%KDoS$))m`XJ;ivLfNMj7axdW{N?}WElFaIa3ci(SF5xT`N$)O-hP-L13M35 zm0S0wk8Xm^Zy^Kk_V4R)Hycs6t&IK}?V+XahTZt?dPb-4u(M437}FtG{R-;e<^R)p zEB4U76eGfz(0@0ZU|&4+uG+MI-WZdKhkexm9!oZn#U+Qb?%u*%c^jgM*|HR#EatcV zZj7K*c$%jqJH_T`E_qrc(7-$bj++_{Mz8T9W^4eU(yI%KdhaZ0nfIrJH27iga zb->?GF{cLR9uhGZC}Qre{>q3m{QLNn#j0Bgjt85Tk{#4=*?r(T#a+>F)_U39e1o;0 z;SsaO2e*C@{d_uEt`~PL3qR*z;(Ct-5pLuD-*LM$9kyi=w_iT~72!6ywR1UeJMWke zuldJr;?WtH=`OiQ#^t4aJZ4WTZPTr%jj^OmwVVs@;PD5iK71n3G1xuVVKoNU} ze^fAK?Cqqz6t8>j|A^Dy4&!tiKjlim_Hw?2KMjpd2D_9bHh-A2SQPGIZr>e!E*G4}%n#oc!r!=4Cb| zIa8rW-Q;r)rBkWI>fI7xPst3h7Ql|k3N7Y`HcDYp4VXYaPcL{14GK{MRawc-`leGW zS&0?iRLj@jW6y?5Vw2b>#m^)*m!T^ow+z<{xd-sMg3D%p`A21L{vF0|1@|0tn594e z{as><4zax?HU?MQ#XH?{e+mD$um1Mo`mNk{#*AA3Lg}O2hfEbmS25f(%qL>a&++*T z^Cq-GCN9du7DxxVWV%x6-RA=<$~srTg89i%21Y6dBc&fiJSonljmG#j4i)Dz&^nn! zO@&d2+zfo1{sd1i`p&?LU15C`R~g_e3ai4tQ*LxVYzeU|Qgnhs62&{e=X9gcQb;+I zxB>oNCwk{^QrX!QM!3K9UhKiZTg?W471SL?`!71ObmANG?yk~hbt-F+HKWyMQ)KWD zi#GiGvFPUeD)Bz;$ou-f=dwZo1vK;=C8P@zhf&n3D#5?Op}oa;Bd4^*Ve}LgcwZc> zC|Kp-8|%EDVtT8pRB2OLq2+Nw6-vjlI%!jI@4PVvoLV_=8lzL$f~})Ked?4T`)*I6 z+M0gU5drO*Nw}>^iC!tKhSo_3mI8Njp=b!_FoL2_bp*e19u19k>VVP5R9P# zb}_mkCBPc6b2%&;0is2Nbd}2I7~PDzC`6gQ;At}{D~J+m7(BY;jcUsa9I-*f&%w$$5j$@S|9UvY`c;R*ejZQv;ps{|4Z%}-HUZDt$Heh^z8sJu zPG-W4x-ee31J449>Vhj&7`Zkk#OixX(2lsykX_6~JX-<}n?my5t>3J&K`vo7w88o} z9dq!)jbPXUSm72+ut;GSVpJ~$0m|TeKX6B$-9?$=TxLE;K)2OM;EhD4aEud~56U&$1%7UTkkt%PG&SGWEn` z{GEKn9!_jEvgOxp_WrER31XYoX7wy;Rh`svX%4>_dyTWo*p!G$g+4BmU_rk}`TA1i zcGdVfo?NW^f>~uJ_<}0qZNx2#+?Q*pe-i=EgkQij=KqA}5-cb=&3>ATxPbQ86c%EayGGACQ{1XNq(zI6ms ziGZ$t7*iA5)kzrn@W~jhC(6{iWBjfBExUcx6V<{_14SmF{&K(+PA&hOdSqzndEaP- ztCOImOWH5Z7U}1SGIrW6c140nKjCQMHm1*9LR_0#**AizHtdHKxeDrh<5o9v|D1UL zf#LgqYa@yp*K!Ny%l|87|6OchPMx2YIxev(xBQHvi`<6}`bUiRWr|#r@xC|Opodfh zVYTmVRM;Ww5f>hiWES#Dly<{yq#Zyvn5(doMbhiO(x}CLoUyN|SS@mbeGcSh(QA-d zY_dI092t_9QlmouQwi%TRoj`QeU6wID$DfsSk(5^%yGQJ{yRunRk4q&NG>WW|DiBC zyGkclj^4>m8?#H1z>&;lFyh7$-U7K^zbU*jH1mt-cVl+JHiQrWr7m1v)3Y^T?H?8ESa3q%eUvPXNws+Ss97<7Q{0Dm{ zt00p`i!zCsxXdTrF{)P@6!x|04|ZqCl-4QG^9l{D&g*V(@Iz-8TZ zq#;&vkvx}d@Yqq`1LcwuoB~^#P`RIz=hc3$l-O! z$7cUJ#J4W+tv4j_e8LW;xW>5O;$JIpc+dC8{5XrWwsiVO+3q3gjH~fc=Y%$6>>6bc1D}EY0J7v3%=S~BC1p=Wws_W;1(h#_yk4|d z{mOWrxph$!n>Kl8v>h2|b}8bciCY+c#x2U2zB+RdX=Ti=n9_8Wb)N%1Hc6o^lXnjD z3qyQ`BA$50WR$(lLM4f36UUIoP+9GzFuOdHxs{;#_|hrBu#H#0+5(7F_B}X3c^psr z=XuP&YK(|avktM|*%@X>q|XdCHOyMm37qVl+_IbxedRE(o*2rHgHI9ZLC{zXkU8;? z7^DSpewjn7DU$3m;R`QG-H9b4U*||;nZbv?n!^7ERx#EPm#K)SdZ_yC&cqIjOuMwBBVy-p-AC}8Ce+Uj-BX(X(L0&5qCLPe~t+DBtY*on8D!1{;c&!F#{LSV1B@m{>R z+q-lh)k1bV;lvQxn!N4>M^(sMr+P&WyHD^Fqh5)3$g!uP{<9MN@z9@xtQdI(uzmE` z7|E%wZG*qgM5Uc%MTCnf0`!tdN890$iXr!x4h1Ng?)tcxc;9*obZ*CbBn}n{TFa~* zStAa)i~ehkA@@Fq%Km_c5fUx)lE9Z>gP07il;JXO7;E)O0D7;=dZPCnJV54uF%~!u zwN5w?TfG9l7m{T5CG7!DhuD7Wa_qly!g=q!Bn2;p=fp+D3daO{*x4te!1=!*8Ki_Z zqH3C8-<~f2(x6?bnNShAeu5qT%jf1LRdp*Q;Z~zC%c8ZZDw{MByt?8b_#~^_mQGnY zS$KUhLWqT%!{|tk1zYDPsqM(EeSXYXK4;1fo@CDZ-FsQsq#0%~%mBR! z-c|55)^uMw=;T;K%3rcB9!3PoEMspa+S$gktysmTzMRG4^ICJTvrA=K|svsK?t^Ntq3Y@h@9!yFr`P$H$ie{n; zlojsyC1v>6JyWZF5<(_yqn#30*a83iiUsYG4M-+DBR-KH(83Z!bo=ji|C9CN6Zd|9 z9dEZtgT1pp^jUl95&kwnO|K14In~Ca+k2Bb7j|>b2UvM?vuOYc~X~5@S z<*@{pdENhMlw(c*b80%#`?iJXh^UB%E)oR0&IHUF)*4$)^rSr?`3W^09`e(U&pyX( zRPcsGMPy!!{G!9B^PcFfGAnFfLQ~DR_%WU>lbnT)3y&$r5@dgP zk`LQs;WtDUHAO|3b#5m?vjfzJ@kylC)flxWEvm{u_`c|%5kEAE#%?7v;;$jGd@Zze zPKjkmYZFIn_IrN(p1@kP$Te@j5A!55r(kaWNAc{{cc78pTw6h|scB_SYx34hBwaM^ z4SevcL+(jv%g2Fi*NFo?>x!wp$$>TvuS{gZcJWQ&`?cb#H{RxT&uxgd$5eWwqhZmx z;lApD?ZFUOPu2(Gki<1FyKnO_lU9vTL!Q`%u+P^ka=&wYQM!8Cv?2lo-a+B>r_9-m`1Pt+l;_?<=zoq2r+$-z+ zBQc0IVUeqNSmsT(uWNgFlBP0nqZi!dH8V4Td|f21tbv{8)hnB<>GBI-MlXcMc(plj zBYT^xQ(d7c4=WqBW0Wlnw#JCeu{QD@h2Nx&L$2Q-tB(%iI*3;;>NWqFI69+W)LSa* zf`4;NiKV$r6f)!}GpPK0$H#@y@Nq0V0iRRN{`3IsfEa?nU;Z({wshQt za_|<-3y5!LoYQ{vqwvaNFSn7*KQd_Gc)rhpYRGbTCJC=7MLf zVXli=iq_OR6y(*Q;G>S1YYHznRQTjKr4%JVT!mBcXbdOn}cvhHZ zKIxfo=qvc)lTAONxNsfG&+X6AIIV>3a`SVI>-6=F>&E4dt~c-=_Yv>Lb&9Jge?HD1 zhpn5u8?UXs0BxPo&u+PZQ5;wowGktbRG$8AGwy3CBA!jbD#XCf{2bQ<>u!!ubJL^+ zK0K$n7S#c+1=NzdmD(A9*Gf&y#xGWlRkULlPHLcb(2AB#MJssQ50{q0PfR92*F%=2 z)1CfaHRHOW$=*3icro;~=8!@8q+K3X`#f)$GXXn=Ql%eSW8dQ?YoLujRf4FE6bW|B z_HCw-bg%_%10!c>ACcP3bO~#v!t>WQj5~6*7P=Lqe8!Z;zYNLpsH^trLDNZOA3BMs zjguZV{%g&p4ml+IphKCWAE=qSMtmG*ZE9j;C*WKIqYC4H|}-np~Ts2Q{nV-nwhrUT&_g(sr&55oPPhIHTFb;TC5q>jWE7mUOKj$k* z_f`VK>*d{yl5qT$XS&&sOW^j8H`bg7HK+-XlDqXe;w(JQtzqc@8s-_vQtqdJA95dx z_vxAM?;hsnpa0(f{Qbo*YOnc8?R!Sr{NL&ybq0j0TPC=suSLH2!1JJCHuW=+l8t>E zOW0)Wd~4Y`JCG-$8QA(xb`t$noE^;H4Iit%P4u1SnprzaP;*A%$&xt*M4OET*YXqB zADZ_j=IMhav9NZG+q4Gy%oERj<(Xw(fjG2C(Bv%h@4h2{e(>2lMj^{MBm7u`b|iyq zjKYS^adIk)y@}0KK6NeGK;*S%t;hZ54U6arzG+kAx|!=PZP~p=Z914f-4U5<7QQM? zT}Lg0;>(Pl2?qAI#&ws>T3z94n!BGZh}n30RRs7ayp#bu?Z8NCXXZ~|w;vHJw8#Hc z-gfNbQ8rf_`ga9fhfOJ5E42IJ{1&~46roH7l&d%EhM}w#p)6cYP#&ovD3=dInG7hO z%KJH#t4a&=d{C-?2IZhh=$XImnS5r#Nl((DIcpcR%E|M9Q8-N!C1TYJ*F^Hy-7Btb zEJ)@H^A*k|Y?G&zk@Jw<0XPi;{_3xImS~wKtU{f+68kFRnCCYS=1ZnzWDc&u&S-J! zIu^K0Mb8oARh*iqa!OTC!2WLCb9iyHfQ)TS1H+$0g^ zd-r18Z?7S&N~RD$#m>J{;am|2Z6Jo$BE(ZMA08(T8+MYl=D#{eC*{BftTh|)iCjvrhOWvBa?R^gEM0ohh4rRS7BW;U*4%mDsqjlRZa-# zkmFZ$tzv?#gCGOUQ;fo#;s96cBkx^peUuS)l}eMaKaEm~+BKRphn?*Vtr1b`yalD! z92QHJls=PtFaH77g@vmLKiFUB-Lbh~oE+baN;+iWXCH*l{LW_V`)gQu#gmUcvx#gk zhyzO{dS8Zk+Sj}^2Z~%54@zApa<*dD;JgID@NH=-IE+zvql8K_ao6&1xc_j2Xq)Vh zt(Y4RSzg0uj^%B{euLH*`mCKVZ2o)C$wH!%(kskU4ILbM@z)y3gcsYR1#@VcYfnw0 zU=G;Q4v0a;uhek5)U}rO0M}mh-TbJ$DcWUz6u!PSC_b=5UmRgdUqmCmQS}aH)<&bkGC(ZqrgM^Kx zz+0ART~QxgBTu`!`5@>?d*rSN$k!O?d(ToSo2)frW9?mEtct{)KcWOURI-#uTKp*sX61@sK39w zJ4(E(6wCTrB^*$BMH}WQLoG{%j|X9+PK1bH%7BpU`#20fMDs+qohHNGom+6U!df30fmjd8*eY}k* zV=gZhrXvQo$d!1InOfwkub$ZUSEnRooNxoQA5}XJrOHJ5nTS$puERB7fnz?i2Kz6r zt^>s1id>_sXXb4LZ}V~Xf!v#%y{JE;M#@X4F}WUh9rQBTKP{?uX2RBXdiPy;_W1W!siW(+VLDGQuI=ov*<>VtjgR;6`Wzsns#rS+^kuN`(V`n1q(5#a#;n4Sed_`=M_~ z3{YkvM)<&zy6)r1!TdJi5D#)c` zKQ?`Mh!pW~bT~Tg70a*ju-ELv!(u_Jyon3+4|+ah*m_s=#%-&@z)6=EC-Eea?x+5! z_wzpeK4v4d!qolUQd#P{eOZX`8nM76fvepO?`K`H4>!iXuknj9{84N%TygF!YO#0o z+cVi|kTY?K>$haVgK)Thn(IpS^?WTTX&d&l(p(+YT9eoPUE^1mB_=21aTi^izMAkf z)$&vx(=AnPU}ohHn$)J{ZG*XN>LAJZ>nx1>aZ=#5(9lKIlvR}Ld8U-@Y!Ved}{rm^firz-uwYGObR-12Rj-y42=F*yeC;DNsQ*TF6(pe(p)?C&0Lq7&rx(*i9Ivf#Lgy7 z#wdJL@@BV6I*@<#S2`IZyi+otU)=R6>v1pjkS1&t-YRJnHM8GZ8rQXKA&DQ0U(}az zxwnm%c5jlwV=65YW2N=zau22>63~n!Ozbfqh=L=_s^;d}Lgh=ym`87^|Zz zW+HL1-yVYxwq_Z$OmzS|TPh?CLf$l>M;o!W#0q`Fp=Z&fw1IuVQW9Yap0biqnt?LJ z`Vv-tsuLZqgWNvq;}>SqgeAfa zP#bhtOKM(9X6ov~d^Qz07WLUGOKLvpvooR1OQeN)L;3$rqy4+ZH_M-OpR6NTKfmj# zeC)8!gnj`}#u7m(3GX^BF$x-s-~QlrcO6U3e==`-dKL096uCaH^}3@P30l(o-WaHM za)D7EPP5<1sjv&wK-_|O#rN%tyXGsk$Ug3NKka3@Wh(6UfesVuh+BTt&c=S#u5jMV zk=|L(r>-GfA3R1>=Hu)>zCOpb9dJVDnaUw%iD-@X3N#M9e?c%$Hiz)$DA6)Oc8Ts) z_If&PgKF?u{?b%R(ZuMxMcaf_*bbT3-t=MSkh|33gJ2LAwUdZdK@|2epCnz?Hjc9F ziWKs!>z=wH_hQHOf=?k|jAb-8KvCJ(bLO_Iog5_ceRa^%F*;Ml(K%{P%_AD15h`*` zsiToDLcbF`iw|)J8rDXbB(R~?Hu~Bha>qF!53{eYq1j#DHkgkqJ9P0iCohMVc-?Wp zKHY&$0}xUfM2;ML2zpE@mn$X)mzGwBZG_u#w|nr$^ffdZ2Wn=nD`1B5Nfs8a zR-5h=-vt;_35H1Ye|e*?&Cp-8DR_KsO5QsvuAU{rV?!isryL#3uLKP48sGZ~$5P?E zhwfel4Bf|X=V@d@-jfQ;JbY&s;0`=SI$4Dox=85t0!Db#Oj+BQsdHRsYT_|ppAc8? zX|Clpjq41i3tNtOq~`Rj6Nt4ViM2Cp=GwIWyYP&5JQjCtVIy_7o_Q0)Ublx<~>s}$A+w|l~kfdbOMz#Z{E;*3W;a`Ub&d$Y1n6NJ0c2XfN- zJqH2dZLcu|U8)G(kGL~X5NX;4>1xCYXv8Z9a+3Kf)F!>Er0uKAp&5jWoruM)P?T2n`5)c{AP@?yBZ>&5<- zVKicn6W2}3TozN6sYeS^EwwV_PCFi%`*vq!?%K{m$g(t-?I2ltv*piT4X$~y?Wz1S zjj~CSXwNKi{o$aGpX43PZNse8!s`k#*!qzbrN(pg7&8SvCkGcmuSzPbkB;DvcE1+- zylC4XERuEO;xUr6&$=WvL+&7luOyT7ebbQp^LGdHblDW6nxwOl zh+MAael*!Y#u&)C~I;fyCk<7#GfpI&BDkg4&-a~`E3QIG_vP`j!-K=LWB8U4j( ztZzFx!RfhKlJ*~tAJQN*NEsq<I3&dJTvl2^ap% zO=YLDkBgsE**u1>Lb%s)9mPF|&*J|QKSE`G{&$_-EY|$_-Kp%qhwpxi^3%n4bVz?$ zhOV!(TZT*Oxh;$ZzsI3;Hg}Gh&(YPl?6ZtSMkVF=e3q#~j68C=d)U+fEzS~%rE67U z|9NToi=Fd%PI%)6MUVtq2i*Y!bW)rKJ}aDHyHSh)8DKmypu#Bprj*9ukDc_nK+p!P z?_7Xru4q9U$_RH@lh1ru@|gkWbXhuyfKnI_C0<4-=FLttOjJ z>Tn58QfM;vEhwhwXGTz!_~*+%!M&@R!)y_CIK%VAQjOAX#vIMHptlB%7*lfGBC#nF z=9t3DBlxFGIhpW9>5Boj7~#oce=F5!#oQcjkEn}AzB^eH@*h;*E7pDtkRxY-7+JC` zGCUG-(!g_@$OFQxk`9|J?drO^i=GuY?|9X9!rR);Xh9un6l5jQh{j=r_7eGUT!(x( zuH%Caxt+?8Cy!CMSnMlzy7;e$nTc{M(4k=RB>D}3`s8gQVVd2akWb=wQz_T>hsM=@ReH`Yj+5cp>SnKhc zn>?nror4Cj3mFYV4~()#R1nu%s(Bv~4#vK_ix>4PW#RU)oz&ytmuY047F$?Ky_KYk zy^U^}t5K&Y5^y3ha`ma@vrW&Ml)jO%hL!(hWb`yLkvzpbuw2`v;5~{&DKg{DMsJsD ze0`?gh9U3E(i$J+;TAvSM)AG3`~>nj*dvjKhFRy0aJclAh&qD%nuXvFt0bt^lL7&C z>|jJ4*_p4xGdL__z6f_@%L0NMnJ74nP#FKLNu(xgSjCT^CXtr(-vDB26A&{|e8(k4 zybj|NZY4@8a<8aaSnr2Vz$&!J_3^=Q`y$E^qhl+#A%4#unH?#!-qQ|w3kg%zM)S=d z8}W_Va2uQL)LMtsFM}O=Z>5JPAd)?g)$~)(3IR48v;z>qf zl7)D6VjDP=J!mR29S@Q<{c#gkj!Fx z*B!3^pH2gy8*mrgfM&47>%P_q&Z#BMv);_cK^il_8oz@dRS{7(t4(erK1|-J0nH?v zBu%1Zs`$9m*Y_H;yn>nd^Y=TNUhvF@-o*uwwlT}__fBr6K?lw@YZiQrX~b|QIBXm5 zVq9j`N?w5tEdkxuxTA8?2Jv+J}2!p`}*C-7$Y|1!6J z*8~inIM^K!0$v#*cW*1m$RxRui9fy;cWy@3*Jl+ZD<^k zE++X7uRFSdL-gRGKgoAsF39D2^6ZsZS(Mz?Nd2GI%M^TM&$gjJbLAz z#IcC(AsN+P6H&JYJj3g*zxhTpz44o4ZKC9--74`{1?2gNkER?xnqK$*1|LNxdc5v) z4MFz6%6|9(8W7d$yiRgDP_%CO{Qx`MhU`u-u-@%npKfMiMHXm=IInE}ZZx7o^ z*W#5y-=RJ*A3CbnJrNe0G?(W9@?SKN9ZH6}Lk&va1-hU&ZQ(%~fyS=Z$K(|pvSb`T zMq1-V#rJ1O`*~H?c7`DJ)ntV)ysIDhL_ zoEnrID{w3_UZ1G(j8bDyOpd`1SvT%l6lZ{hc zq~EOY3D(%Y)7*|DP9kz=wmjWYwUzwUsw}MVqBkCyN}sq}K>kR>JEO+Qc>7PXb>BkS zx*uoCrR8~i4fObEew;nHncE=~b9L8vLX3m%54`?N-7z>Zo}Kmcr$@X$&CtytLpPOT z9P8hq{1C;5;HS2hGF|#IM2zKAc;+SSetD7a`}lO^z`U#9HQ{9c*tKC|mi~Cev(s5# z5+QXUL&G#pKd#GV^n*=$({!{so!XR81`!#u^2X#w)Y}R$@0*YV+YqU+9iH!q&C{G| zmd`)C4F1`%dEsYc3zpVPokp%4=Qqdm{ciaUD$B&h<;3RcgbCQC#Cc!g8L;eDS!{=$ z^;kJD^5&ON+myH0#AxT%Pd{$TV?fOI5HNMysi?dl+>^IZfV)JZ=zwD$MsyM2VXsWVIKQ7lQ-{FLNZm?R3@ULss zH$NtDqUA6S{&?-zIH0xtrbCjvkUX~h2-Y!-_C)U%GdqWMj*>CXQL1A8KF=ie5$1l+ zB%`cbqC`I3K+d`_Q)0azzGv<3z`<2n3V!BkCiWm!ae@3Q%5|RGnl*l)cyMu7_&tij zz_9THrT86|zV$Gy+7iWJNNjfI_<@qaZHIAp?g!nYGNs+RjD=m2^u=Ae3_8u~;+LHL zevibk0Vjh=Q!BHirxmT0S;#eVhvZA>x(Sqb6%joqwh||73#T!^k}k4$!kQlki$`iu z?!K&@Xgea~b!0}~dsv(kepw%0Fb#fnlhEXa7A87(HwI2O{eFvzxOB$=Kc^7 z`0ACn7QT9AU*W4)_GhQ`@CEW7X`vhuWr#q-Z&@Klq#>%m5K(6NV#LB(dIHaq0=kMs zw1M}I(K!8jKlC?Wc2u_e6J!zP#9XGxaw(R(@2oAFi9HODYbqa7zJjDo0OQ<=+?`7< zY)B78uB8Lr@&NhE%p{fmo^vu}5o0HFEzD$Tss_)vRPtM_DkZ^Sf%=A6*I`?>d&opQbswo7I$eQkW;JB z=sXF`tq2FyoJ0tfNMb9H!wmS#-qa({-cav6qbLZm zr`98*D`kKaam_ftEvfGbDwK)i-k$BtP8(DhY)2#yTjgBx80DQ|1T&<0dOlfrw5P3bR8QGcbe;s|8#UaC2*bkLd-!a; zH=AgI>3g^oaOfHB;U4M2(XD0aYc5O%HBIc1qJ@(Mpqo@sQS_ZX8G!ZULc=twMRAIZ zb3th`D2g@UzSxJ>v#On8$TPA!KJqJk$faxj)g63;x8aiIZ?{c4X%v#WIlC}4O!Ll zX;ucm54p;b6E9#NxG;7dRe|>9^}Z2unn6>DYzwqsh%r*uRI!aqH<+o2FzH)u(TH*E z=R{fsCqf>-9LvJY2w^;UkkkAjtesN87*YD6QzNlu?#!&rY`|M(!x?f}m@7v^*T<= z0B1`=tUD`#r2;uGS)men%;@{2>ncQckxhypXKHB8tf4=^nx5!~# zlv@cyvKFo~U96ou#FYgiySj2O!F5}S$|kK`J}x^GcMg@Ib(RgZO3PsikXBC1V1(1iP(!(00xQu^`4$f(e-<-`w!VAEnpYwpL6lSM` z%djzF#Dl<3vXRp-n-O|Pco0shj6KwoRY2BESrc(6cG`3v8Dk54Jg2vrvKUi|58Bag z1Ry}(#`h&e2?0DZ1!mLi7;6Xrj>Eq92KXyl=$TPiYoYn}06!5Ng&@HR0Ehgutf>D# zwf}Bqk?EXpG2sT$vVu4ECBt4AXid#ibeBjX^H^cb^%KbYWbN?L)xSGvoT1CY3hC&t zt-Xo$KMcz4zaJN1N6u%A@gIsqZJJ6ZF#>tThUu3gbrEsQ2>ZbWXC0EiOfVL??6sR( ziT84`bCJN2faf0VX&>QJx*l1o!f8+t_YH4CCZ$Z`w!~+N#}a=9pA}=r4bzCXBJ{f%oV_3g z+|Q5gH20F4J9;u8#Xk{wUeVRR)cE+QA#tEdwa3ptCjr0NyiBCyj}XTek2%C5_dKi* zZh5V0r`(Q{9AM|1rek0&RF!#QDWw_P;+bH^sV=Roupe=#GSs5kczodZSqURE0kMRL zzEXNvd-p}cy~+-JB9A+;8)(l=z`iC?!eiHG;8Yt{!1@+)bjTcob+O7uUb52Gm066? zLw9D+(8GIE+26#bY=;%X$Ai`k_;}Ed$W9sQ*aKNnVVMT%Qte@ddk2vD#C)V3BVEA7 z{$9-P$RrfGKC7k7j6^Y;KzF3UMHq=j(k&Q0%sYx03$!k2XC`y6Y-;DkJmTOdgNazD zaL6aj3gZWHT07n{7QbT$657E{z*#f{9Q3`f+vy(7_hP;l)HT*>2UfmqBs)31U036K z`}<8&d!Th}J7EQ0xd)M-II+lm{2;~|b5U-Gx5g}*k0jSfz8%F;n7@{75pBdbpKOx! zreqK|sLZrwe%MBk$8|E09IMx|!hvff*+LRUeWfo1w*3>mfw1`a=QU|J!#P>ARp9?@ zD9u~^U-(>)tl)UhCy?o%Kr>V)DtfXOa^R|&7R+Hk8;gT?$iZFlx4M)V2grMJ;v(k#l6sX?9Cq0PRwUiWK_GZM?;sjfT} z>44=|b)xx0p4&4+M{f_rjN01qd%$d`5_|vH5onEQn~_MRsV6w0V(Och-s4KCw8~lDV&BS*$%fMr& zAK&{2MmRFm-bvr}Lt+`6@r6Bb-eUQ{f^&*Y%D5cUDnpei=b?|_`&701n)`l_)VYG0 z*PFo2>s=~=ed)94<{2=_G5 ziRyRZm`d1WOpNgO(CY<>jiy{l>_?u~xV!sLWqjmm!wM%wB8~knM|w4N!$+R)lfCZ4 z-o3eOoC*|K<8965;==K3pO@89OI114mhWAQ-t)KZyUxV5F#N7rKlwfVJ<#I3;zMSB zD?bW)*0>=yUeZjb*AD6LIKP0GI#)^9{YKalCVSE~a{kVyEk|~Hq$h%%(g0?ns#TY} zQWIw?fmM{f{hf5(m$!HVPE^6Cw#vllg$r-xt>)u+Bj1?*HgpG8_b%d`$nS&Ee~VM} z-h{pDJLJ2@E+ehspL<|n>vcK&4x}gk)p^gzUB875=Uh6LKVo=?w5-FR>`^?) zS*>Gpx$boCwQfluWIM}sfBE>d%w_8G^a{rqoR<~A&xLgfvS9shThF;6n<=)9N zHf9n|*I-{W;S4ep`o%P4o{T}y)-$(OH0|9AUfYcG=igM`zPIzjW#-`kr!wFVoe9X` z51-i~T`u)G8#Q4CN57|uwngF)#3`yQKD^L*eRF`>>HKV-d4-vp(!|84BL8k|-r;m@ zZcbi2&Nz81cT2jYTM-B^?N~N;Wfrv5SSI0foCx&DrEl^Q`G@o8^GD|$ax#IZS{VBg z^oOy+%T&9f2{3Dam-%LQp!{{5=>*8JOM!T*I%et@&45+{d)hi1Vw{z$lqt+qcT+MS zfOFK5uMFDU>L%8Z5yM!can89mSC_Xl{g!hN=lwlB{M@5Bi}Fx9^f!lrZ*yl3e3Q3~ zR}5mMFT$Z1x2>f==HbpGSq~t`N4(=sa8!@`vl~^pak&>`s!TI8<1llsG!u5b?icW; z&Zfukh9jV?Ii0?{#kjk-=^^0K3f~Hk`@jtv5!SXfIy&<;Q=DmgXOuX`3*f&3z0(y{ z7n?_8K5Kxiq(O1;m(uExuXJAL;~J)7Md!`Ca}WjVHN4#cU#bk|>hwQ@_IYN~S2(|w zogE4;%Ff0b<2+79G!P_g3fpvIo;;&KBX#CVe{4?6Wp4ex*?==KJte;Lu4H-dbgv$N zYs=!WFkyTUtfo@4_vwCUDm{uJ>cQuo64Zd5F)r>A059f zl^SP~_*%eOq~oul1*#PtQw2-v>m0Ybvx&;m{KgqiqbPzLt1{^}enKuql5ammTByP* z-EqyW@Q|-u~tRJMxt#qQ`to!&k(g#hId#*M8L~ovj+sWE8@Y~q8 z$-FxnJ?J}b{velwg=nWmg3mGwi_a%4)XOCkC6%xWULOrxNIV~53Pi?PUz9m{+lN_F zHrB)t-u5#~^tbbDIpT%t3O4G2L#KI)UgLO#PB;ybz~`O~soq$t8C-S$xX6Spj;VZF z|J`+uZB(bScRaaj{ z(p}>+L-u1G{3g$jYy)4{3b&}67t(no@WDgT?SVj z87T1pF4f|$6_H&X?8M*JbM}k5oPJG{M8CF)d_Xpvvjnwlv^}2oZ*Vq@0@fB5-#6ce z^YhH|m}!u=IKK-gq-?~=aPr;U|Hs>Vz(sX*f8%qvvFt9eG^xU+N)u@+f&~^>R8;Iy z(Fg(xQUz2DF@h~B8bOQ=6>DOPiY=BX*fp96wpgQyMk2_%paO!p?|1HkF+TBmp7-~A z|9|-G-krHq&de!uX6DQstY$Hth8XJLM*9&>c5ltW(jCW6 zZ+)s#ZAh0O^)Af+g0KcJTAg9YIEd7?B7U=|fxl`)4PVJGFu@%A)RX;V_nM28ug4PC zJ}(FDro2dhH&^DuNQ)^9eX^EPh;GLx{Nmz-_1N?ARi@nGui|w^D;QEU2e)J}e16Q3 zm_Zfm72o3x-C@m#pIb`L)WWSuvG)$Gc{4|;N1G|78b`l+B3e(&O?kp}8eYX;h4UwB z0q`@Zs?>(!>g`*8Cn~4?_jIk=rI__{;cmtQcDAcxY=~OTovh2*aWYU60e zfxpH$MjG9r*fRS36En}ca0L#R(HMfp)yWs^^kQX_3Lu$!;J5Q(%bu?5#UZVP9sRI z+=P4F#15jXTOa|6L%kCIM|*}U;nBdhuoPD7(8wNOJw(5b(HFZ%-g8Rm3_aa|xP-9L zG!1cmR!R9ktzrW`dG@a4g{7yVD>y-)DJEDk))|x_YSvM^gg7_zUx}l!n>Kzy*vng+ z6v0;wZ5`;1Dbm<5#2UQ5y{kq*?+GE)Yc}I2@FjK|aN1DdU>piQu!;?9xy?{(zMk$! zCWQG{VE?ce^|~NrwR>)x6dSK%meSK98Y?Fb+p7QtZ+iHF`_^C3-|v4u zz8?(<@(=sb>21E9SL`*#t$M`O?@ zpJ?~!4%qwNxR5ybMjNVgi2xpqgW%no#?tiKU-=8w2iNIP{a)t=Qy0Q#?4{8sp-uDm zs*f`}Cu0R%(^#emKIvLgndX znKGhuSd$~kE#)PIG&!=wq5LV|*Z;Vky}<5e<1diof5zdI17=PB#~EniOtawCumr$<0^u zW+Vi`3Kn-hHI`@s5_RbM7JNVoILUeV^{u7>?2H6zr(;L_qZLhd>7A5VzoxK+^XtU2 zz70K6Pd7Z$w^izP`Km?MJF@y&rg)tQ^Y8-Y>6%o&|9zYTw2LE*_hv=QJ!*@RtT|k# zi#2qHf3HlpPJ+|$x?)CI{#4LaeqXmvS8_6R1l8pNCH7uQuR!eOXa4s+Qz-S@(w-(mvsFRUh^Z(0FNxicReYJ1;Mx%)kUPlLvmym$geUfutJCQ( zMu1;I_?1g|xSvCKSFX;Dq+=rHpzyDTo_2U##m6p@F>XuOt+=COe|?osL|K#=nmfy5 zrSSf;YTq_cBK6BHD6^7?y)1R`)D?KG!LwM*^SYzMzaAx~-l;?tG`*Ef&Q`%=4?Lse zLw&E)F}Lb1V~=(_%3-Ub9X<3CjT6@?4wjj~Ud0ycf149_mvvF@#0`%+*guR(*j8q$ z3<*07i%m`Ag}2mxgRj)BSs-BwD#LnW{}8w9Uxk!(UlZ1HOIT;3FQ_x&>(}H<`88ka z{2FGdjJXM(t4Fr_|Q@2Uil)7o_mbA{V8nOzS&1SUsjAz z!l#D=>@KX>ggpwaO^0oB?wiPJd61}ucS_X4Fvg)wjd5`CzL07LGZVuQNMZLsZuP?| z0m>QRD7(hpyfH#K2oRbpT^A5p@jgKdLwKRsXA6P89Z2muyih)+*gU-B8}n<7LJ(3^ z-Fgv5OQLY?zlGiWZB$$3-xG1?(D@Z(xDlnPf>~9L`-$2tIm+Obolp72M5%+j4)m3s zE4Rq4D~>0BxBrn2v>37IdYs&(!X;r_sZjYyr|E_pJO}%OIs-L_N~a{m$y<_#HQBK~ z;61x&k+Pbb532LraBCb*<)U$k7Anhe_Vr1n*@Q`iU}SenNqAP-wq|sn$BmbqdUjz%lE< zF*N_RR;rf++l&D?M5rsJdnxeNzEGFc=<ad)umV3xS*y^Ux~z z8|M#zuj*A{x$1ejv=of`oeLEW6?#_{xSRNbvMbibZO}?aB6>LaZhJo3>coU?bpmMk z-mSigofG@fo{;L+%+VLu%;RSA}yKVEL7hi=@>!sN(o3X|M3n#^? z8cWy~IVdP~^FWdI5tLs4xRq9|%cJ{38KFOiVZ0O3F;7${5TVbU_lEjoTssry9BLA3 zaoZ2)c2RoH;;>`;q9BuLS-cuEMSFSRmO#}l8BSnssSyht)qH_psKXJou@?hfskuUk z6@jLuXq7H{Lu|^mQy;h25Xg|TZ{RZpBaFa-rh%@)?OsVSMh(s+?y#d_Eg;dN6#MHo z%tFmWg?FH5z$0HsGp{Z^+#~>gpxtg#o175F-T|JxhllB1-CHN+4{Z`#dsiyevqs32VK0MBsYNASm5}<2VUtu}fxF0G zpgz18{Ox^sSUGY-zpV2wLm3{yNI~;M-?hIJMCwfWBFyz%mFOh_%asT{Pk()oU9e>zAK!W7Xu&j4oi!7ri93APIXZ+8t3mUp-bZaZv0 zVXfRn(p-L9uh~??{{*=vJ%_$D(8eSYbj43GWV-Te<}&#TQZr8=yDGE=rzNdcgf$7$Uf;^M zG!4{B1@q9k3IQykFoOx4t7y5Uo&WF?`x}~gQ7=50Ve(Dyn%}4MAkzx@0fIgl44L8B z%+$lfbKPQvaRtMU!}yXOjv6}q9GRnNzD37InzE^i!7mz5+-fT4;67Z^mX_K)e$4(8 zKABtp)%FqQd?fvV9cUY#@20_L%!g{KmGz0>rAWXg$0N@@*q z($rmr)W!+BtXyx=yfS#I(S%x=I=*};*j)eCHxxEx?x8pVX=tpS0djr^Xfzlv5*5=bL#$|o27g$GT6MOK4J9%kiFLY9_7Taf)W z!WyepkOV%_%FgbRigE7z3TdgWQe7oisv##CfBL-^THhYUb?^yeKd!U5jB47nx3aAr z%<0~0z4_OQ=6fw6?xA}WSgmrPr^0N_E1`d!ZzxYs54Uxtn(FMb4%CXx3-gCtH=6F* z%am(Mq2+naDP`#WSFE&Rv^5WD7}h;nSV5dvrJ~7k@TzdSw?x;Eotx~j`|SeG^bf-M zGOZszKDD-`9{Mzmm;Z(@KJK`0x7HEwz}pJ;jhwR9{-Scl@9=(2azJItBb?Zd7ZG@EwOc+4$7w9#JpOb@xb9lL(R4 zdu^FV_Se>eq5zz~g8w+YpO;I=J4q$I2No-363SgV4{01xFU%dPyk^_N7V3_*h93VkONBRu{V5%vT4V`~>UAV~vr{ zm+LE%Y-mVWME$~gWDAPEhBrTyjQ+{0a?hq~j-z08KWk5Nwj4de>xy$WT%XLWI;Iq? zcufm>QBeFWr~Ja*vy*g;wCDmq;uhxeh88gs6G|+CYaUPezs1i| z+?PII@iF}9SMb&-jxcL1ON);%#iw!efmSmOQpD5*Gxb%#8OMDTZmfj?KdK6>QV0H7 z<&n)ed~MAuN_r0`Gl3HWdx{ZFH+Teu-X!Pxh+=3#l@8sZM|?EmafblG z@OD?_KIJ2vVt&y$pq1|ZT&tuzKQ9{lw8|W?>*KYV+lMFibf0Z=9?rYlx9_vj`#H70 z{SQW1TUMATjgmGm{Ar(qnnlVTr4tfjlh!D7?_j^z#y%Rda%^k@;~N`IWttsi+FYEC zP*Wc3`l`wy(LTYwv`E3fiaUCG?o=35L}OiQQ!L+(o)CzMwU1@&AI4($wMj7^rviNZ zkE5&r`)FF;%_=&_(@jdGrwL%4z*M|weE8;35@Ffc*l6R@%}EZ?^5gc2#7^6mm}u%9 zi>|7)&jsh~#huE{vbB&vK2#!gs(`Md{DkVSy7~|85i$arOZ0(P$y-{PJoH|5i70ZO}s`?x9M_r}WC*HPM4E8EZs(Ve0PV-Fd6+EO7f z!K^N~`n}Nv*V?GVeaZ}o|eCG4Cgjq&oPVELS;w|EBO*=lT$ z-G1Z)_x@VdgfZR({4D40APAuQsqE%NGo6Bco1<-RI3zwQt=*R==%RGGVV@9_c+GM( zZp6p^0QWa047O&YnI0RXP17eNu2HZRb~%#HbT0#zp~9bz_$!-$VK3Yk`SNW!U8iDe z_c2CX`JUiU895b=9sf6ZZ=|pfu6_UR#V4Vj3## z6BvinRcef+^Y+>(r_i;nPU6rXA?0o3($?0-VHz)G`ti*RR|_v)r*U6uPr~2pYOuK9GqZfe(~}yo810*1RO>7)s&#ZPtd#}&tCabLwc?$HwGzA+ zMd+%8(n46qx~O=F7r6VYh?SQrSn8z`=ZIDOB(X|D)8x3Q#DO9eKZ38~;Ws}}0PDW) zDu&aeA!(k8v|crxPB*BhZdaf`1mZI6sH#`w(z63-kpsQO6m5Ygc$>hYTI-~eTBTKY zmBPKKmW?Q?HIFK)?U2JmjYYNgf%Yn1vAqiS!=mP*T6vVNih4OWim+Gd=KH7^Ko=}6 zsMXx%8Q-v?q}DVCcfUAYX($hSe}=)gAVtA7Lfi--t9sWa%sQ~j+`SHDI-|W5O z(o*g;63MY=>CBK-=}38dF>fssA1tZmOL1yfGvt|EDn8y;p1eK&!QbQ4fwL&$LJrQ^ zTT&}cid5T^GMq%=?89;1h|W2QG*=};iHEqH{JqfOTiW3!gtn$TPJYmvYUd*zwUZRx zw8JSk-2B;A7lnlKbugYdMa88d73tyjT&hLw5OIA$)0EVTbM~sr-nOK&hi&cJ+794E{hi>u4uM7@DBqlZA^Bv6d2d%cmB@itgLwPXmHPBKNm7i#9 zKKc#q6hu(^LT@Dj)?y*rO523K2}FC{aoR2km~=pSIXv|&(IE>Hb1KbnK8?ijE1ud6 zp)#+a);h=)$?`NpVd4>3vTMMwZXdQFt$tP&;h@FZPkRzy5A z->IV#=To0Aw%}5IPPSo1CM*r>0%_QZa%U8#O;h_(N+j-Cb%c-EJv;F(sIps7z2=Kq zom{{!(WBZ`miNooJrPv@7LZaa!=QTK zAi(^>H!sK%BW2GGSb3B+lee;F{!6-UHmF*l@6pVADOrx#HX47$)cyK4XriU$tWfRls7;HC0d)_a-?gu~62*DZmFL%R> zO8y+=7yCJcoS`G1AF%_iO(E=Jlt)kI-O*B@-Ia!ih;^_qYNKppP=(k}o9g~kBM00U z5ccg8t(4bz`MF%W zb@J8x7^>B6tm~-5_a@CcZ%H%LaI%h-q2`6kYJCygEPG3z3xZs#iNLj5B&7FY?XGme zI;U>4>`idBjB#z&Y3vcgbEGHK2peO`xC+W>FN&4LRqe3f{SJ6ZnhzagNv%0rZ=PTI z2VF;eIK^7In8Ojpl`(EGwcP`YxCYIX^9>KCaIh(`ZkbPINm@0J=f`1kf6Z0gL|*zG z<#F0$J8=)Yc08B24eRgpg<0)-1MN!!oKZ|#D(7O4V3~P`Wl_Oqz*>hk`J;L1z30~_ z*yq8DK*%#Qclkj@eTxa@fzu67v*zyw7ldq9*xUzv8CY%2C{hUTV~poCKoN8h-VUOE z&_vXHaGYTU&xNfhFJ(ZX0tZqEc?~-im$%hb1glKALAjacAO-ZT_MPS1JT(cv1KMwo zF>Jo}UP#hR-~R~R=zjy>(l+>v0iRvP;nKfqyYrfs5BMB82$vIeWh;g8uM`(w-^Gp} z4Y#+ay!Gk_G2ge+Qm`v=kjHuak)kKf-ShVn^`_UsNK6DskjD-2iN_lQyLdxJ2 zc#?kQtH#|LI|qKWxOmPHDnozU5vghcy z0gXcod)PCx2!ghS=gdZ$+0a;)LvN3aV%U<}!GI|&XLc1)8@1weUQ|i#K%Bx?1eVl> z;8Z^LXH@je^jYXn1rnV8!bNBfS#snxW! zeOT5oc2AIko@Q=?7O8kSL#k-{KBg!;0D9N37E8JNgZm}5u9#`LMbSF&K9HW$#xu!8 zCB)f5C541bt+Dj(BDhCu+lv%u(IPwKv*+?5U5>9RJdoZaK=bXZqIlNH(FdOOFgwtA zL7KmZX%UBMU6dh#W~cGO6Lkx7a5{nn4R5h~-N!q2f@REsie6f>OUFDXnhR&9^F0?? zYz~}r;bMx{_{V+lo(rGs$2zT?+8$OVwE+<&wSk!Vi4YDUb5K0H20o9BEicOboyqf;{DSuZ(B%igpzX3Wqm2M3>iJm|bbpzhNhPs$mD4rZ(f} zwlF~#&8YWC*gCfGeT_ra77X?qb$A`1^R358|L@kyLoK%xx4od5ZDqro><3fZ*ezvP zs~AI1G|pCRe8$UBRr1yl&&cXi0^7Tm+jVOM1nUW!65*WD;1EKCLqrKgo8wV&UOte!6xZ66T&BYdbHSXNRy?Go$) zcnd+QA^?i**oZm0nK1 z0#YaEFg`k}0nluf5yw?$B0#}Oo1QWKYbwVmhhP_xs1LLRKeLf~!pAeE3Zk}dp=Uey zss?d4DTv@p8s)ScR$Zy-t{PO6eBV|juf{GwPtlG`b>`$!of&r5Jy=CEsrxE4FKDQx zXuAPYD6lUcjCkTc_8z2K4IK%B)aP<(&WT~Nd!il0j#o2}hh2L;MObh(VP01f*C6%K zyi6O>j-gEsSV0U@D{;#sda+dD^AwsP8ra|%Gvv{0+y$#X9dY%qacGdhtb15FG%iR@`CqqC=q8~-u(f3kw-%gOgZD(t_v$B-NFuQOIZgOJj3DV#ucj#vAT#fz9W(q%D zO)9S+n-^Jq3AnPY?GrV?LbOwWTSE9X`Fxyo2rPitABroKk2#kx$sU+mq^PU3t?e73 z*n{#s@hivZ?!JEZ%97eWIm7|8l_YA(F1`zlCNVhQLOG1`*2_COHRZfHVOwC0haGD^ z9o>4uBK2MsV^3I*D#mLY<_`{ghE&04IY*hW2yoCe?A#4}2Y{!L2lx)SP{woU(|_K(RL<)0j4Rv(o^7ggHtNgt9Gs7 zxv}?f7src5xkljh+#FCRKQI)WnpC2|sFU-$lJ1`{6?7yN6wd*?6cWB#hv-3;9e*b0 z=I*eyt4>u7ovoMEr*mq;+zs4o>>O!jBLAAcsP}<~_(GF?an1I>|54 zFXrMtA?!6VXYjkY>hF}=fuq#zPlz3r!%Sf?W)NRJ!RVEvQ*)Y1uD|t1x5|}(lD1dd zCv@b}yC1rPaR8=)@!~MrcTIQx-gi9AJtr)h;{VDom-0O2O*;P5Sqfc^XdnLt82`Cj z69V%0V~&(Wic4xO+)HXLF-BWqjJ6Jho*mIa#l!lA$epM}R)#83AoPKV5NP1$Q5~SC z39&BRKH3W~rW*%h) z^pi&&&-cC&a}wjQTc2;53>!A|j7=x#$c;$|ab zH)l|O_+2_5EU!0U41@XAm|}*o(7OCFizIY)0VnLsIh|K>pSWYTFE~+#l@56jERKrJ z9k7aH0m~w8br$wGzHZ|C`{47-pU&)=_SlW}#=%reV==3>Q`Dh!_FqcBi_#tMI#x4+ zo4^R2!~VVYOL)Jfj5sg&fd3wJSm=t4!QrDdT&y zf?-e9`SA##HL-9hvogo68JxY%+Noqg&&S=r;OvHg=abN9y$;BfJCC8qLitLE5Kpcb zLK^mlT*3TdjpF@P_f2IoV};6D=C$E{m>45dN_Ir`MiF>^B;23_a-@BKfDi7 zdN{Q*>gG$WjPN!ow3Bh>6n|=rBCKKq%7DXclm(vbk^iHJ1=^zffN|y~Llx z@L|Kk@H8NVKOkn>#I8L&eY$&kd!f8{f0`F_%ijh1rA|yk0O=v0iAg#!FfcW>va(`X zXJ-!&4<8?YfB)XSLqq%Z>lYb0VnkF_R7}jINt04iGBdNYv%mOa?%YL-78Mk%Sg~U5 z+D)6j{r21MzT3Zl|B)kQWoOTxy>zLv^5)H(_wN1v`|p4LsZzas`LelLqoI`pxL5$^ z+nom5{~UQi+Mg!rKUE!=-5&kHQ}bf@8DhM!bu7;-EZNEaVCwK)Gjt|t_7D2wWR*+& z_l^1oe!J_jd8od({})#eZj6hI%WJvwI3@S`({x?qqVtepJl)U|O%WNz>U2Oo%xN z_$nxOPR7HgfH|-DRgde4-O4SC&X75Ce`_@HcT2F72E7;iUM4#HP zynpVq)aTJLTCcCYhkeHq92ReE!j(qkQ=7#PG*0@B1!qvqxP$w9B#{^n*DeFsKp?rNGov7L-TXwe#HG`NS=g1S3Z5RR@p0AF^f!8* zBIwgtkf&}bIT5Uw)p8{|@K#~9=e7&hCR5Ecnr+7i2koAnI-55;h`GG+^$h_IP3wEI zWg1PMaL#NXcEibjrsaP=ICDjStcLb;T-MK_>Y2~)mpeGpdiAWN$|q6h%y|Ws z)dTx&G&3tMUUaj^7eAhf`^+gk#ACsWJ#VTsnl~EF+?T5G#+v8MSHGWhG2iERWR~Xg zlbQ2+-G4b?cU1Aw(2Ve+*~Z^Ic8STdD~D<%9y)f(ib+qm=o9r( zQH84oK@PNDsre4)hOu6kf8Dxkp2GE}gj#sLo>p3X6;#jrLTHK$kM47 zvvzgexA*GE5q%TB?&oXQX;EI~#=POvN8Q^`>ovBvn19VCIwFW!*nITR8p|$U3<+Jf zzNW@1dGgMstNWi{a-?eGo0CQ2ews<8N>Xw#ag5uPgNzU-*yv#(TDBOK;ZYnjYygX21^T9oU z^LE#6ISEO+H8<_e^VXGb2hG%+&aWWrmOq>{?0S__KWl0NukAfACFk_Nn>%3Q zX9Fr{72E4PRpsnI_iNPRN&Q~ef9w98rgrhgpIg64_86CN^wpkEqdfLL8$)J3VK184 zOiXqjd3#n|r2oFxUBAg&zC>?Ggx-N@T5lJ#9-r07yp-3~75jrueLcTmNb1)f>5c|c zQJx}tNKkTmsIAnmV05yM@Sed{x1h}1GiPbumR(&nZ}N|az7oKpj_#jRR1M& zF8O&*PreEB#oEfak{>tmD;&Mp!i~$y3)b2jS`2c z4jJt=uL+c%Fw)g6h^`|dqyd7m)KWZr7 zaeKeA7QN~tEN}CQ$l(4vw!Ww>5Bg=W%P$AgceptH{$fR@`v`s2l}R^#RGo`a7OWWG zY#BdMX5(xdWcBO%6#3Y5g+Iyozb)+H_4A36=H$)Ar@gJk14BOPb7Jcaf#a5Fx2uPq zO`!G0ceps_c7^^u&d(Qa>E6AMrs2Y`>HdCtZ=&T*g6xoIlXseTan-bNJMiBL{kwfX zYUAtMJ?H*GiK;2n~F2) z(eqY?n9sdE^}u+|+p2S?<_Z^Y?zO&r$Gn}A6B`Z94u3gwUCZqQo42~fZqaD2X<99x zvyT^NkKH7Uj$PKTjQ4iL;fJ{foezhdy!FTaLmtN0{&=;q(}Zz*XY4V!FnQ|GPNF|| zJ-Pxx2vj$K5-dFF9n?7>mx&@2BeY{Sz zfYH@4IAZmD!<40WUyJWdo@rG#=y|HTOJcW$zm@wL@Y0#N$$EN*wlN_>U4N^)+_)!}*gRELJQuP^sJv3P69=tos)%XbPd z49_2P@P`2L0Vj6stw%jiownQ8F;#zz-GBw23p29x6|E^p)+=2G90^=?W}fboiox|F z<07BRa8I)_iJManWW~)E)Ap8`+b=3_m@)Xlg)c~+E%Z#^F{c^pd zFt}H-e8=0zwR2k)`wE7q-D~~cAfUMQ=ge=rx3U*fUT#eK@%OKiz8_H(^mKFTsv&2> zN9?~ElRddJ5!^deJJ+M;>3;bpqZ_YKnF`Ftf z)?Hb9V14Z8@kb^aTaWC!$Yg8Qyk#8+R1D8kn@5mG*}+FL&ibtW{BmH#hRfS}bzFGy zmRouB*LwB+Za*3{>g}HMmAy=oYF2FdWPIS>U%SOW+v+ym?C_;Q-V^`$-161B%GM2k zHdI)4bm}#hwm09kkU2o1{>b`t=sQvFRHYdFpGcPzCCBQ@{ z@}hExvvo(yyp2xldUpMNcmDiH@fgp(J0_0htvE4vI0wQ-XOgQEmP-6gq8Lr*?i z5k7od!k*5+vwHZm+NWu>-mx7L$Lv#NUtK;}GME`&evmoJ%>6t!(Ja~Xs=AZ-ZCW?wks^Aq-i4aX?tXHwADN(?%dS*AFYL-}?b%`0 z@%W_^hW)T@pU*bU^XnUCTjQT5n1Rf7QknH;pV8x-IE{ zWT;P2&o8^|I+bJM>^$wW;Uk~k9+eZZ13T36 zljkQmSp`h)`9avR=h zjVI};L+hQ@p|F1`#v{);7Rpbi`@Z<@k3U}T8Q5a6v9Rxpw-dWox_?{SGUCRMlU!H* zv~4zTqq^tnu7=x(EE#$+&2QkjaR&eK|$N}(Y9RAmpVv2_UzOM2*}{o?T6bJsqgqhues$BX?2Wk_bxwKf2YJwXOFC3r zZe9PGvfIM`d6Jkzw|?8;bZGQIO=HWTl>XtaUHgx@ALrgh!*tqJd_y*|&}jYG0ZYC% zwQ@}MbXjoH?^TDR^5?rpgi4NPZ9lbno+PqO~$w^ zk9;|}Z`K_1kpio3JN6&D79EnXVaoLb76)?y43TZI-kV43E$^`L#J*4a6;vM@Wj!zV z`a#{87?pF;fXMN=eGJr0u$SiDZ1mdxbDWa4uDjLCz5AfeqvyL>Ec|s=xcQVPqtXY*#Z=e+c)!z=r0E?^PE4P?ElUAa^=b)rgK>zTlvMX`r*?{%04mcWU^9kC;!m( zr-2q3-B)G=#1HDWen9valQU)vjXtFqXuta0cbmpITW!0z{J`7?N8)~U4YRFnZmu2> zJTT0cE>-N{{+Q)!menS$lnErX-e1iwjvU_Mv~1iHU7J}e3rtpT`^|2fPsEd z%Ul(mbOg*f;QQCLfE2qyduGrUW!?+b1O}ysq1C3^c^Su2t zHh=lZ$LP_9&i#Yt`-(Eg>FewG^<{pVr}+GI$d)wK?L(t4EmOXv^**&QT-H;3O|-ne zvchAcQQvOCBf8ao*7w&?$7L(e4jAy~;jd5S%86{v=XuE^Mw##>ohKI9`MaI;KeqB$ z-i&J#VVb#2V6L+IhIqm`}VZU>ubzbr#v*@{OQO)Et+w3__BQ|YYVL6C3eO&(QvTu&N6huz_{K)pPUp>zEUed7O{PjJKYhsy&Mh<14 z%N2wl(08M0-P@&Xo>yl1b?Fu?3LFvG`8GuGqShFf^m(A^GwbH}NB6IL+p!O=x5<@% z)P;%iVjj<|eWAG@C?;%&nFR%7{FfiJ485~8MvwDi(if= z-E56dEf#!dyzBw3x6I|SWlv_c7kP8h)adx++HW>x8TH>$qO1I)U$FAzmLZc?-1b{M z;?j_7W6m2nMedqb)xB5G%a?|)2`yikTIjLCBvfc_n%?(w%g?@$toEoAyE!raua3H# zoT0Al;oQSpb#Yo;b*|9BaCxd^h0-qQ2g@b<`*Lz}en-P!t(nVSq=QkX72WGr{qozb z2lJiZY^)wOZgttK*E@Fq6fyLV(V7>NO?L5keSXv2?lWSk6N-LD1n#$5a1MM%&a^UPn2EXM`? ze^pOAR1AKI+5_)Bdv^ZtFLr8XR$9vVnDlfuD<(6E&CH6)$g=w|l{Va4PeT4m4}T_P zs*{&rHklZcoEcBDGN#58CvQ*hu9JvUGCug(eG++otc=8_#l;6W#jy!lS?S~BGcwXL zXei1la~uhsnv%|XWjlHLXR}UmiWyn)nGzB?abjkC7K=YGmi1;?AC~oHSwEKT%Cg;9 zwmZxEvuqER4Q5#di=7HKlx4$MR*73Uz5GW7uz2{4!gnm`JAC-yE+ip7BPK3BgH27# zVkai1#<4V-4I4T%awy4+kL^4?enMtiY*Kty=a|^o`1C9iH9PiI2j0adzPM$v5KpeiueYBXi?)lGfr=?RGW_z(- zE*aA^$7_S*W77b2>eQI5#I#h`k5=+7ulM_Tv(VJ>6Ek8`;{S`BKJVw8keC{iG2_3^ z>;HaUK%5#MOW_?Ko1B*U-_+gX{ru^PsgwQ-c)kDDP3dX>RVJsnk9OgQ^xV!2ZInpa z@qb6wZ3T{x&rXj?jT`^}ipsMRz!4O9kTWIOk2Y|4THMFQ#Cxs%5A5|}KfTwE|9u~E z#5!KfGXL8i0u8fVd0LSa6Bn03nTs0-JXp$)y&zmZ+Fdj|Wxn{-EJ*v0iB}v`OlG;H z_%R_SHtD}l$;PLCy!Lm!+>RKoZ>J|hCjQR_>(tbAK==>++D@A9;qreXd9xr{{}(+@ zv$yp)MGYMe|3k-fIsU7Te?R5F?RYv~XbC1ZEhU|fvbdCE;K1NPq2v1vQbrCPI6k!B zu#m_>gTg|FhlTn`NXR>JhfyYz#3}KkM3J7Bk;U;FG?I^zSVlaE zVSMV;lnGETIJA5`?WFiDO6OD~fG_~zVsOof&zzc^6#&AA;vyl+n8f7xINH%vN>izk zke2yzb%YWkEiNO4eW${(afz92`6YyoRnyZlk_hU-b~)>knfO^e+ne=rCCP~sy5NHp zT{1IbyU>(c9Vk5`ahhlBziBaWz$qcnAd=H!*@=MJ1BB0}#HXbF+aVhnwMr4k+xVH9 z20ifO9hM0!wdLS2_g*90T8MG%-%)@!6vCqGNHWp1u=o_ z-v1fkl!zB2(kD?3IpD7z){}(1P3b@vHm1}!Z5939T7i6Tl3$eN5*Gl0*L{vx38WAfDEH3f7dJj z4!2(5?vL}n@5ia?FHULer#93}h?|=m9WLUy2o@m#MB_4{&{J+qOo>mMn#HDNv=QZB zDc&!sEn|BWr;ujSF8>(uXxZ)^(^Gzm2UpOV+Y8b17)?m0Pu$q(L4g3*ftRMXRrwz( zm;enV=|6*kRG7WAL-Chf-~`F|tc39sr>4eg=ZXKOQ6J#uolyRG{oH6x^-?X}K@8H0 zsH*xu$wMXl$Mbyv-TR})$1}A9_?LkFzk=}}v;BK8)1W_QfCy4jAe88M@p0g?5-|Gw zMcP#8a~db7deX_3hj#R1wbZ5^8nnOvj#%^?$A|ATZ?JY&j0rtAqO@hB;`#kB9i2Z6 zkJqjjydO=cd*k1+`1p3g_kNN#5*Xh$Vvgq~(eF`W`}?f4@!a_M-YeShb|QVhNK}KN z54CX<_&72sjU6#`0LzW>=^1I$6650EMP|k(#HYlwA4b!v{v|R!23p_yDM7)1!!)HD zs(b#G=;I^r)Cm}PwSzK?c{Ze?r;n%K-*5%cAOyG$d2e0k!=F4v&`tpY)kvSr5C_W#?4@X=UK6EYW{q?B1h`am` z@oL2RkNDU0V-dFnAKb1?=%@WJD9kUn9G?&4iPA4O7oQK~%Mlk8?uP|&+;Pxe2%fo! z%kB5^_Wn!y{zyOIuX5;m8~x-CM1165@e~KNZ$FHuaXSAHPy3G=I)0d*_8mQZ@L@b{ zA2n9|FkV9AQOSq#dNkhlU*p^BT?`soJoGR4g-DO&D%G_Fug9) zYS3{X#!G2D3i~j=9sc%s+UM`%aT{p)0zMzc-$Gmy7tbRSVuqukHbjO4QGEQ1@yiHT zp2&a^DbYp$n-Uh6QW%3`^@$$ofPLRZ#p030aIZTKUVVYio zQsl@h1V!kgbRB#I_@}f0ZT0wA>kWE3I`#2S-8z-xr|;aXYbvn2s| zF9%#gVhz|?q%cHTVnDBtRJtfZAKy4Dh1>$Pg#Pn6_<4LGg@L&Qi?yD1=);I|>Z z4LJN*BUT7lDL#zR8aZ+afh9w<24oKN5mN=k9=u;zx$3 zEn4Hj^|d)*Hb>Y2aO(pyJ+##k81W_pNiZOHK}%f#rya_YBaI1hBE5(|i6s3<5Xu~Y z-%cpa7P!<$DRR=2^dK=Lf@I+8lx|4X9lhyAx}sdz{Gucu5{+C+GL8&K9RVn*Bk7O& zT+vHiNM{(c^(UF+Q!)l`!eBERjvRr&h9jWsiC3gx4e*!% zUJukc2x&jTcQ5oqH$Z5EH*!E>fqI;fA`r1dV4yz$(9-utz&N}paedMQZ5@jIg8@$f z$}&Z}EdfCXF25OmDbY$_K-3-a_GpDwFByaeS;L4GAJ-96y87Ic~*!O8y+-gLkC}i*;y_ayFM;pW|!F*ixBP zPfuT8`<4c2>H7LyMKpkrp1xe(CI_?;`UVEtillm6Vtu&*LM*c+7QiFyZu z(j4$R04bwD=e{_giJq=N-HU61D@WnILBS)r);R%|Ahf_8&+dq^K+BCljZ!iV(#8gHK4@)! z!0(N6&C%l>(DVA>k0`)NC96H)^W*5Ba)&YAiBUQq*rKpe{K3sOaycQlVH=0=K;Pkr zu}2NoXp13uk8%j*4lzDFaDY~9Qb|aOR;CAeDxxA%OXX6jkPZm#VWbd&Avg(2nE+vo z6WU-~n3J#V{DT5@wRt(7p@iHncj=f&D||0ZUn9(kW$q;nW8kDEw}tiIg^`!O){|0( zp(Sx)J%roSYPm$FeMQrPF=TpeVH%{2qNkPr9_af%Bo&moi+oKMk$UnQIZd(|s!ve) zZvqIm-&o2&d5m`Xwi?vk;7yk*+AyuAlOUtnA|3LOe%AUCm|C+kx`)Btz;cp zPJ~PoS;;J6vY5}A8T>517^A{)aC!+@OO_G=^P22r3Yi7WEan&9Mcx^n4&2}k0B{tKd!LXYjvg1i0cm z8#JCt9+3xRF;mTZ!h6W8T@75D&Rpx zRF8N^%OD`=5%1;J)6?a`NQtym4s(j1mNsbw4Rh40B|eCIEwyTc5X`6t6}1H+@{zSo z-czY)#rlrCzbaG7=xrTnvjkLh6ei3JKN!>P)Wsf z9OOnqK95gn*%NYm84-a__Axt{b-X3Kg}fA=kS7+5g3OVDnw=q2Wa7SRCn$Vdd>yb?}I;1kwauS6UcO8I`WJ_XPrRrN-`hxl11*3%j5*8HjL@c zI57sGlermB$^3<>#2^6H4oB|QGnXM0QY5(o1mO>a)6A0)4tA( z1tVf)4Dj9*@(XzHG&m-T=?|Ao4vd@;gBSKQnc$Zca*bRfXFxMC%mAhb+X6zVa zMwgevWP%sg@(z>l!Nq&XC?*2OlD!yv#*{JQ&0?m48zp2hZw#}OYy+3~X1X%&j4flr z=)jfbbS53VE+Pwf3Z^IH566R^j3Z;s=rKaL!pLSaz!j6gOUXPB#)WZaSjLhuWF!oq z_c=2S^q;~cGVu(L=nBl44vY~ag;O#<2aX>QF^|a%)9>)th7y|?t zW7>H^(54G%#i>kJ!0FPU7p(-QI`#X)UPmkY>3c2#)NU&5+tW*RINAU1wFDCi?OSbe zQXNc={(1{qq_Up-({e?7n1(1wVkv#eg*XVsko_NowJ*8UG<{o;qjZF2f92(9AMm#S zQOE@7Y^_Y-zUkglz1MbuF;~_kYg4ySSjy_&)FR|9;rp-)Dnl?jO73!op z<_+hnIKpFGT#k|3aWTUyH8bHsexZJ`PVv24Ld!tO0R1!r7uy8R725#c#Mv&s2_Htg zR^S)gO$&HG%n!C8^s6r|s8HmfIR8Si0DeFfvH$fmVH{7JLQFV!#XO>fj&cl_XOwtM z>f2~bHvJ}$ek;~*Yk+YMi0{mUc{ilRGlhz4ic?o?T+kZ0c`0&XkWC;I=Cd7}W6USk zUo#eJ4zV@|xE=d0_`WzdZU+AGjVK6(`NVPu83|+}c7_ZN*C)81z_x#OX4wLlJy^fE z&VlO}?Gf=24_lAmzp;zuYHV?x31M{6;yO=b7jd}GW9;I4Ag-~C>pNUKe&b>uU?)2+ z>GLVT_e1{c)c^Q?!BqVKYP)eK{7FW+JqgH`^{FlgId=IocSfqKAk zhPheB+39;3rrVbcb8s`mj9AMsMe`ZPMFks9W$%CmKk%omN~Px zmMK|V%UDjXWoD18WyaFAjE8+Kv)Qzk`Rz#!Q+ln2nR}#$**wC8j88Tp9(g8Y*>n@~ zVx9>ZQ_NZXjkq(Jz%ye_$fN)ha?jd?ywvf?mU146Sj;1ygLq^ww73g9DY77fBGWWb z*Exh>x#2tgq~Y?1dC9w9!#ohxFsoBuGn$pJm=lLyGPf#UFs66@X2w2v&P3jM#)RB> z%3QqigrSb=m{VIHGadz6=9R3PiS>WP{9yHv>7~2REIoaX8N2H)GjGiu=G$4fnf`gV zn7%nTndj4QFq1a^#f&?yVbV-BOi1*fOz5F1CX23OPF(wg*}3u$=3v?%%y9W1%=Br0 zFzb)N?+e|@_mb}9)bwuT?uxGDn><+6aPC5O?(Re;)>x7I?O{e&Ye90pFeeXs!n(|a z*5rOh3$kutQzFvv2-ek673?XV{5R7l>pJIk}`hf|ZQ_i%!evmomzK`+vbQiPq$1j*N`z_3Xg&P>Ap#ox&7(+r@yzBX$xN%TL}mwH&PQs04){R!LuCsHTR`-RMtd3t7TK9U2Q{9tu zt?S0}w6#o+pKEFVZ)-K5tgf{vnOb|HX>9G6UkBH2UhPmDe79BYqV?LEo#!sqP;zU50z zUv5}pO0{2X8YP@(Dm|w%CDv0+$23=%I&V!f&Crc8UGO5@^e=Uw>9t4?(~I8-Ojo{a zYdY7t#-v5W9g}GpKbx3uJ!E44;&T(5tU?nPr(BaAj-Qw?xgjRQ+?`F7vUVniIy~i# zOT5a99$Ln8d%2PKaNG=Dx6cxJM=HX2)O8o$mfCi_HttWTCNnQnkKn}7h*RsSU$0E3 zJ`YT!rga!ZC5&>Xx_0hBDN<_44-tQnj%R)%OJ9`|->Yj$O8P7^|9A#rZo;a_)qZ5> zQcn`tF}Y;3 zavI6|Y9@Kzbv{{iW-&SaO);7F=W?=n_$soo%NlaocP-iR?OKw*ek~dPa1D9(?P@aa z)k>mOFDJhUmJ(^}A~JLBLXvrQE*lRosDNBtJ%v2nKamVs3l~w2ONGg3A~~RpBO$+x zA!$Ct$vIUd@i;e-Jns=ozMn*sowxdsy0Knl>H}9YcfAuioMcOGj_FR;W_2c#J?+W0 z&gSIAx3D%ot2y!i)RZ{wCgg0_S|(xNOQwC%bLPOZCyeDqEwfE#{X?H<%%_|6;6CG>rE&jyGUCj}H)#{OJO+V~v3HD;AJp$pX^HPCyFFIo?pV zvm06Zx+~f2*OknTwI(g6bs@*+cP8J>?nDMo?nrXwR%AlT8)o zr0IGyaxT9e@gCilFyc1E#j!Oh>(YwswrWYXShOHDR?SK0Ud>1!NmJ4-xd};HVM;8| zn290wLOR!q(OCZG_aVAnZF`gmD?iiZ2of={J@TO%!~y8bnB!V9p-!BP3cx z$YUqYF0vs6tuvgmH`pJ{2r;%;PVchs8Rl7e3xa`c%gIER;GzuF4XiC#7qDJn@nFJ0 zu%p4IgPjew1ne=ekH88*1{n^v1Z*G=5b&6SeP7&gkqWFK5?Bo+FpDOz;zMAi666%H z>%blcdkZYEVKNYG!AHc6`St-T0V@TY2zDA+jJE=;7OW%0mkPEVtUct}kng5I!}8#R zZCnkHNotQc$nSVKDj@AVJPXTW>C1#iS)k!G;iC(z=9{?QN8@G*w}>9@iE z&>>D#)+4!{3=aExjAhN1ml z2L?%!Or+I!Lqq5O{$j9tf=C&9a6{BVQ}yA)t7^VN{3M%Z-vli?vk>tg>p$LRmf4o) zo(Ds_!413@>j&p=FoVRB#bh&zbt?O!LxBI}_QzB~9 z125T6{N8h81Nv0;&**EFwAH_6YZa|{D3FYFNDP@8u)E)!Zp?ru-$)15-rq4~<=$qI zvYKS+y3(`JHYa>XjB?&K%KJ>Gu}+^AePXk!Rb2j-`SI<(Ym?aO$7RW_Pj;WsX2;iQ zvGGBfyYF04ymVFM%<5@2>A}x?Cb#G|0!9t?F?$j^)bZD`exXrJY3s}LI+>sJINRPt zccL>;1>ZHzvfI43L(je058b!YI-j4X2>plOni4El)r4W_GZEQs?7QE#`DLe%-^}u_ zTBf&+YumN;aQ?X-vpTHac&GCgld0XqzV2(Aw9eM4oy5y^Rz|WXtcR_6;x0S$s(Gh)tJXsA3GKepRPz%zZ0caOIj=MIS8lhxmsSaDhF`OHF7oSn z`}Tgf$mfwbl#nL*Gg@3RdujE>2`8slZ5B0)yXD+6+T-umrv;jq0UjO`y?LwNYfK1d&^ z|GfZQELBsgX-T5}}H?UOxUPA=$ zH_f%88NwMN1(-O_@RfWeEW9f{GCeYd3Za58gf$3u-v z>|^2oY2E$560Vt61hp-U7siWZBAG|5M=U>zGoqoK5lT5jNjbxpG&I7XhQ=naq4`jq zzQ2WknEIg_2eInCrl~dvB=9jL7QQ7X!xw124EX`JaDEVH8oxo~6#vt_lh;PRk(6($NwV}L4UPA>#1rkq@Cr>N1l?eHkd`n6zF%L51 zX(?M_50MZ)%xU=+B6CXXVJ74^2R#@q;X5FImUKEFzMBbWN>u!rk}OFUH8ZFHdcKN3 zLo}V5;ZY!zaptZ5-Ke%3);(X+u?qlJ`b^WpM`}yyGp9(F?F3r_QLj*R*H>6E3%YWP}-qpA`9#b17R;(>FmQ#&ZsRxoSh#V?d@TH*a-sj*!<%Roy=A=>KGNO_Z<&w8 zLE^yEDr}|pGCPq2(0V9(NbDu{*c)U$WWXhbRti2(E3>5>vdpr8f1;oxfp!O+v;);a z+Cu{EOVmNw0XQwTzV`g~JZOK=0&OJ_nrc7P>`nWlEV2DH1x{-TyEcS#6e?>PaO(#o*OXeE|!__4%7WYJ7J z9rnx>!oH!EuwQIFtg&r{H9X-&XhB(Dk=?K(hMyzN5@k!2-x6WAM8VG%#f#!4amcYb zSuQ9Or1=<5Lch}>ZxQvmFg>PLY@7}r1^45C=mILH4f2W_ft z4ttO~g9zsWh2;Z#z(T10u%BuuHJlnl@iTOBk7Hx0c-VQQk)=@lbWL0;>_t+*PN+$+ zldmFCls1hLrd7)LX{AZPN~ntXIh15V<N(#|X!i z$Ym)d(IwG}WK~jebaAvINs(A8;S7HeXG()O0~sH)Cvs0@@$ll|lF^dUA}}RUB~j8* z(ox03iiZgYa;8MWnI>BPK>omzppqbJv~1*Ofu9AchD$~j2Nws6MoCAihRH?!5J!y3R@DmBv3LyGC&og3Q!a~2^{?y; zerTO0ZpFPSop@TEoyMWWrL?Ds zR^ldc)7k25EBrJ*x*ob7AQyHQbyxMObc9~fU58_%Yq1M-gzh|Tg_G2^q)SN`=v%!i z9VFc(-2mrUX)o#~f?uVbN;?(zEODl^rJXe(Piib-_|wX|YOsHGgUx>0Kh30FDQ#tY z1>h^JB=B3+rL-epEQ>o++LBH(z*kx*xw63%+anm>f+_?hMDCt%VX)C%b;J>b$&Kk#PA@t~I z*x5G`_T$c_R#PR^PHHdg`mLZ&Q5UISsNbo-s5{g{N=N-o)xi3lDX$r?C9fTi&uh=? z%crH9Qo^Y;8#hVb-A|>*3H2iFS zHf%i1M&54V?>Ju%%0wKO*M#fFRmAAVR(_%xR~n-mq#IQ6iDqo&kjfz? z5hW42fx3aE;ici4L7G7oLn?+;4z3(r98nwrF@)*DGy^pQONW#WsT@=}NEM-q&<)TH zs2E%^xH!BxToa}VQ$#2tbp3VxONNvTsT^22uyk`0%UnEA3m_w=zsML_$kwotMr_M2l#hr_Qs|x6;>C ztMSqJ2x%d$6X`^<@W+9CnosLIbRNaxVsS;Eias!p3MlDY>ZkEm_*eFp1Zcc~Q-~{k zMFBGZN*|49ao^HDrdnZuFrdV*#7`sAi1-2g0F8&ng9`sMQ0g!Buk^0;hA~)N(OcrL z>RV}BXZpRaWgR5w$C84$ zrkhDo9%*lo_+Z9hl?9G@nPUp*B-r z!hZe3)Cuamo-f^^?n4C9=})NV)Jxz_IGbfCb`?iImt|LS6v7X$+J0y*`=Nf?XeGR{ zB=jNpKb4gJZx3&x)zG?tN?PY%LF>e&v<}Ac61NgJonJAG>^fhSn+is4g`3Vn=BBfU z*@K(TPSRb1Bb}wr!c_a%tf3LPaYh4YLux>N#Sxt9ZmN9+=blZe7O>mi9Aw%~FckNI z-R_#;ULf6if`n;7?JtA*e2I`V@cqV_?@al9<}T_}>?!qC0dEpI37v|C#X^M-)rarIcQVly+Z5X@ zahLe2ycFIdUzI1!#C(LlDxpd!>8J0}h9Qan8;pP-s0uj`OtOw5Bg!a(8`Fxnk$;@Tulzkk?aJasPYim&Y?5u*{ z-gtFQh%2>x5%3AhGRO={Eqpeq45$py^Z_%lGEC#DH~t!bOhy(-0( zeM?+RTurnUE)^~%{*``;fD&Zt`Y8ORu2R?1uABkR1yWC`O9gO3m8-_FxR(aj zK}vg~Tqkn{si{M;HE`perOq0=N}!-Dr?FMJfLzuQWjR?_S=UPYV&tPvCC(ai4RFXx z%Sy{q#}eSEiY|&Sr4AQhW<_=T6S$eQYb9_$g>?naV7sb7ek<;bvRp+65y)ShET`&R z0{pPJlLYXk9Z;^5c2Oap?Wn;2Rw|%stSh^=&}s@bg}TMM#g&DXg}Oz$MHPh=g}Q~h zg{6h1g}Mb`CUd5wu%xgUj4n@aCh1tCDpVCJ!02*0Bg^NEZX#!-`JB<^a7L2P8C^DK zMERW2DLEs|=ZsFFH(5H?@C*5cj|(0bP#Y;;Q(h~c87muh=jkH;Gh@qh;)!^@d44>a zC*g(i2J(jRB6(4~;k;42vAh_bj3?(M^Cs}pd0D({UM_Dk?^9j@Zw7BJZvk&HZwYT1 zZzXRHZzHdC*%sb5-VR>rQq`(mywc)Q-acOOijrjqc&e46H6=@>tBaQl*OU~OERn5J ztx&9#tS(+AT3x(Ux=OWNxLUSSv7)$`zq)vdWR+@}bfsdsXq9TIY=v-@s+hk@vQn{3 zwd8xAbcJj=f8}AGVuoUdXr*waLZwhiW=m$vX3AztXQBM7m@b-)5-`fZCNI@nBsd$!fmQ*EG@n?Y!oaIA{P%=g%nkkwonIV~hlCeQL zHb}@QC8KnV2ES{dfvGQi-GFsoSV==8QgFr~B^zAB%9_DNNg55V2%`}iR@(HgvE=-& z-;Jf|#<1briorE}Lp8XKSCl^%{wJyW-{Rjddw-bPaDC|GA(*GSR=R3>Rk*@0m&#tH zt{UJ&!2euITs0`;^{VVy;ZlrLr;=Wk&ZRCu?a6UD;8IQsSDf1d&Y9zPCR!@sPj~nT z&`Z;SGr-?qPFvBb0yvMfTWM#AslBFsNl!&Dm`Pe`fJ3XSD>?#KbQQYd+!lCz*GiD% zG#16c+e$l?0Qb`H`GD7$e|SdAaluLpA zwyaAjj3>ZdT}0L*^kKoxf`#~-FU1_R=fiJRr()ol73LC{j~@|GJw;ta@N18Na^`pD zL!7eCC6H%Dr(#$O`%FMNEiprRRoF#}>9yx$JmxY?wX*`^p*l`SxfG;R+yi3R`xOYk zCuF3hC&@>R8a_NKYV_!_V@F9Z-4GbI5zh7ubup}t(eE5v~ zt~r~h9JxVdC%pV68TU+So{SHBG`geDjMoC2vG*NXEjYVFV(W0X!qM8J|C+d%AMY2= z9=LG*tn)+rE*ZQj!1n5CanKORS{1@^M}EDH^c>mbYV@D9VbgOA|J&6LwFDMx1L2!) z0og>#NfjZKfC{8y;hgOzs+>ZqJDiCLg#CuGaQ@|uuR!pDRL6g$za6#+(%7v}1$WSx z!H&MSV?bXYqBhRe|6a`h=DbY-RbUDR{s;27|JWYzW)L$t<=7GS+}gr^TQAsaI}pAO zro$fF64+n+2=>+vhjo-d-W%T?z%Sl8A%T<7<6)0zIlOt}n4F0Sb~_G$UA5z({MW&5 z+FP)bb|930!vQ=U?;5vzF8&$eI4vX)xyr%RH$WpUc;EW!7TxP zaHByotgP>4V`>WT#;<=fj0M|6Htd+)4!dO^!A{voY9Y+OS{lWK{sj<|FO)(8?9crA zJuxZZ-Af=xcVJ)aU^wM{9?smp$rB&$4zPuGhW9!ogU|mYPsTCLes7*W^mhNW z;X89Rp9gl4&jWyV^&L4jYqANB$~I{Nn-1}m ztqGhMh5x2->eZCj3byn$Z3@-|&TBS-_lr@Ed z0iH>qj7$jbW28)Y6c2YZ!VioQJmC|_{^wlw_rZ~~+nj%vY6Wu4cLUCUw z?#%?a*)4~IO;VDBy9VU3K7$D&a@EgHpRY7`Hqk7>^k8~UpAz#mN zti*8>GGDb3#?u8bw&FP31IFAOk70+d{&n_%WoF*KuaBjF<9YOODY^(F9_i>0{bM)` zkMUr97%#?;>HKfy$Fe%)kaUyBf!@A5zS%Nw|E}*tjVjM_>^D|*Q0>|)(_}f|r;io0LT-s1Ysg<8K=g&YT&9Ta zJX7*za4oZYCY-xj%`nR#JRF5(UI0fJs}COn-ishC91kNdT>uX|$*%)PF+E6;^KfKw zokJ}nm`})-r3{k_;V(X6nClQ8nHH8`pguetEhBKem1teLdN{eB!sCwQPODnx^kPEb z=qY0h;mbk)T{-v_Ls+N^_FOmSAC9HL*)=#vboN5{ zj{5K}5I!5i7l8}HA{hyOlEIJVAc|E#>cap20)iBm;pp8y}@`CymKVq1{5MEoyFi;f?WS3xj z!uIG0mqYGu4{@Ak7;89?R2B%~=hiUdwJ_@DLRmrhjt}8%H-x{g4=;f50tjyn;gjJ| zjy2@L1dk?7j>A5W+75{|_L2JVUe)!kYqo1Ka{rsEf%^R;6%`tj2`E zaa`uWYACny5FXmssyhsWZDlI>--IqiP_q)+#~l-5n*e1CaSniZFm6_jNNP&D;l5*6 zL3FZQz#`Z?{q_1K;A&m=;^##6;&Zr?7w?jFv`c`~uBg%m@4_aiTSl3a$zCYSA`O=} zy9nT>`Zy&hgh`K+rONS=-uToM&|JW(!+}fbGtv`Nl5!MsE;5YE_@;Qd0`7seOAt8N zDIHvi{^nc#^~^4Ke|$zND5SxQ<>g8xcQG~Q%$2?J9Rg=4Kxt0~cb`0WsWaRJ%-!+K z-Q$bCxp1za42QkxT7Nq|+ynepNPSFi2ZbDfZXJ1Qg3_RLhAlxuk`QH%A{{k5fa)0I zB)R*4p?EmO5`J(6cy_PgjEo5>az7|k{jKr>xa3{{#ln^uUOt_jgCz$lS@0@)xx$99 zntnW7@ydTx3(;#Zo01=iR>Y+%!AGyqbnp-AOZ-TDa!&dLc>%8ujpj9MYHOSSS)*~ zdc)Vz>%1|P+gowkDM@5R)SH{**@OVeULJ3pAPI_(2W3fq#yG*dGhy&5aCXB>)!B>v z_4#;H=Go9gGIElV4ef`^p;2EOoDt8e+VLYn!$QI$Vxpx%!GmH#hlhqo#|#S(0ew!x z!Xfszi6PRUu<)?({y>C&oRKI{=B3BGu$qmaMJBSU7+MlmGZaz;@=5q&?7j4M3813D zl|bAvLn1vv%|u90bP$(XzrhhBTGmsBKoX5<(9F^^a?`oqg}oRr^fx4zktt6XA4beNk0N=sj^+c6N$@6l&8d?_srC|Jh=ic_-~8? zeGZLLpyVSfH6~r2&0hSikSC=mvmqr`rxcqG)H&Xk?Fx5v<4eY*Buv8BFrZU1W1x6B z9RzQ%6TMuK$AChF1~|Aqoa29u@W_2#Q!)XI_x!WTK@2Pwv}wd7q$}S=0?lJaBo7ZS z*Lv&aMPMhDt2Y{wAWw_~B_V>ykVv-5`vHzpqL8;^;X z`Qd%z_`)o&#@(1?Y=ePXTTNiZ7G`nH<;x@&5UdKFjBp%U@(`E+?#v#|Iyc*5(jlQ z&2ZF(qCe2K)*to5cXbO^HhlXI1*JSp6uj z_v7v%^7Qid>FwJmND>?p+OPkBuz`aH4+)Qm94d{99yWZ$$Wf!A%VMm+Yhb9u*z_8L zj5?RTh}cTTj7nHBMi4%1@L&>`laP`T2|5Gh*{-Y*#bVJ{XnF#N=f==5V8jYVPG+_N zIVmMB0~5|wDr4AKKvMuT66FM7!Ku(}40P;CKuVBLf}R3WgdgZ~A;1&#To1W=Qj9Vs z4fG|%CFHSwkZZ6E2ACkQ7>Eoxj(j2%Gjv8^?`fzQ1km+N5?Y{AuWo|tj~wsj@-;!8 z$1)UxSd?H(Hz_A-9(bxkFWdGy=vd0eIY+=149E|)E<*7i0-eGu& zcjn;T9-;UlQmmY%qDGG4htU?9x)4sRp~`vj@d%_8A!5T z0gXxFQ0;oTS(zCZ4z2gkDC6q;@Fs#J(-XPHM>IWNT zI@|D+aTDdp0g&M+(^*z&>?F?YLlom$ua790L=TM#?Hv^A6Xfd=+Rszu;T<9&o<6=lUheKLzAou59>mMX z-M1d-Bl7U62RuByMfE_RH+WCqH=#ZHyzwIPeG`#)?>GK|`Q?D7T$cMK#LIwl!6Y6# zAE=0d(GvzT=;_J8`RgI%muwKO$-d7ghRaaKC}i~#^ZR^bq^!)%sm3#?se-9C<^kC8 zM05>fdPo?y)0QM8Dx9mbVR{6p@=fRkigUSt0{rDy{}0ETY_t#+h+A=>x0IU_VB=0F zm<44rup(JTMm8>A5X=QD+p{`mS;fDs_-&ZquxaPYdJ>K$;naui1vm}+h-nbKm<@Jq zPWK$UN`PqzKqsvYF{B0KKje>P%!auNml$*mct?1ldY>@p)FV)2fawUwIoSylyevCu zadV5yOmQ{z2UlPo&{%!l-Qtu`LP|G9MyedN>ZL)V2^mRllaq0D&6THuKRG+qF-%w3 zQIEysWTFB#NRfp&7B6x)0=$d?A7jAR7=V7l22#TK9+woClFmZuiSaSfC@ATtp1A0Zb^a6WOq8lUe2vCkT%Y>M!!}bQ_kMt%yraNlFIwk8z3wn2!bx z@<(-rB2ZU2B2Iyv)=%Ko3$+9bpeeZs(m-aH!S6Q#gF(X3&xFATjBmIG1RM$qJ|`ss zWo@?kLX&_3mf~zvpSmClwfQQcwGNDm2p2@gDPVHJ<`qX9lBP^T5sPh&N-`v>e@y?# zsFpTk1k6ohF(9k`5o!lg;}|ToAUFLOWrQ)T2Ng^@(1Lx}GUOpms-#EEPLcI6eIRZ81(T%dhqJp^`$`jrW!ge)QmAI1AhxxV_ zHVS2qOc}38fri4pCW{QIS6wM*wRCdpq^Nm4TF`*T4UDMB)5uFq)G!IOq4!n_&Pa@_ z0(nAz!J+_I9O153kT~idNqb56;|M~b3ko)Dkyd4egSuJg|5MM-yz(Bf*?)-YD6I& znAK)yWP)tWHs!cfgQNvr3;L~64&8;-ZYRi?0H_2x_;}M~0psrOO>%%skhBaCCNmT; zBL+UkwQ}fkj=+jCoj3+B$2mU?vT4BfKqP`0Bf#KCDo+Z7nH|jNu&_DY7`udV0^`8Q z>^ZqK2c~QjU%svGC0)LCxd|yVH`w0NgkgA`oRqmLl{m72964o9US;DyT&+H zc594e*Hqphv91-MqPjtFJrd=(w|v%zhjCe-8gex`dc?^aH`*8=E<32!&Y&z$fh1&8 zF!xE$fb|`OQBP)!G7~gP$`zTg>LfFSPf%vY;J^dZPLMSXSj8kRf<_b^m)|T~89c|q z8m)niA`bKYW^IereFs>>AlhKf&k)5M?{ToA%g#>?q|{tk^MfThgx{LKA~MlXw2Ad4 zmuM*1#QGXifVSI-?EA&BV-$u=%1p^%Cq4B*f*j{S^&l2EHw+nk#?vHf(2}ZP7%e|Cyu}Cvx)%s0ysBIkjrwCSg|w))b~z6{?q`O z1MAO#j)CNHOiRrG&oC!J=`SuR2NoAuAvQB7J0A0rp37DbWLm$V$G)pPCk8&dBxIx+ z7CtaCs8waET%H-jy%2h2nG}vrATa`ng^`&Hy)VxwGCjgjEHNpHEH)_T4>AVRP4>$g zVif>kEZHgX6O=JIK=twB@E}jKtb<#FZis`$5!5BkhBx@*vYN&=69wd)3(aBQAYtVy zE;Bhp0elQf*eH%S1YGp0kNOQ-0cpZl!Foy>ERjxX91Dl!stI2XvcaMBm1M{@Th-aX&fXfy1M`46Q9AGn<1Ung%fNwTT9whPb$OOam4_SaQEpGUBsSxu0CqXOn{% zaUmYLMhvQGkI9UO(S#-8>lkRTY7cLa4r3M82qb}>1Eyi@E9f!snN6;MN@hC`dSlB7 zyuu)yp21Cd0Luo%AwGuXob_`)48a2RY=wpD8+N=bMn0+D6S9i>iDf;uzEA6ea_l}g z8x}e_?Zla|-k1Tkz;!4jupbYQc^GvQ#J}k@tS|VWKtPLmLUyW>{W`$bwE;27+r1C8 zr0kdm*vttHVWkq7CpHm7Fhp=-a6^22wjw4$AxmnA#UVQ*Gp`{MYlUT@#&N!d&?nLW zU!O<=Z2g-wz`~m}fDKt`faDk_)(bA%D3dc%-;|i)O=A*dN%gN^p97_F;nwGXm4E6z zH$=0`d-XKP9w#gTXT<4oJpoHcFVofI3|UD@0#?sfKFpN#6>Fg3H?Ne$ytnbdq?6eh z`&%Itu%h-BG9E_$WEkw&0BS%O z+6QW=u8*+3y1AjR9*>oTtJw_@EMqf7S6?k@agz+6BkO&?A%ak4n5P;-8n=uFAz;b? zP2-;m7E8s57}KDDx%>h%%t)89LysY``X;I`P*xJdIS|ay!juV_@L?+jMgVB4*?Df6 zamg9%gxC#z1hYF{dIh^F74b$0PezNCKSjw0OSg6P4jnI)nL&nvY7EVtDFckzrMSvem;CnQ# z;rNb(Z+&tgVNXSk)6fk#I?mhTa{!qemuK(``Lk0Rq8wxRoG}j8L4aZt*u&P&L*(Td zm!M31XCCz5qXqB*zJBTOU3rD9LQVwOBynxPF&$)1{A~R$zYu43Mtla$8F2yYA3Pa$ z;V9%#3@~G3cVWFRfWDKxH&T6JA+LO|Km7EfUk<=U3jur%`G;(>A8Eh~Oq%hV&0C$0 z9RXmW3|Ec7PcNvzN&iVy>=5(sb3%BzrjIl%lWum7_+Q@pS*s>$GBvS zBVreg|C6$*=dy-@>)&UsQOW2x_px0HHm&JF7`Z>LnCeFp6dwM4X5LXwhF3EZ2;LFj z5J_lA^x&v*BnZAhzpJld`-I*<4m%}&Yt(OcyG|EUmH&SN~MxMitt4VE%V$y{7=`MW%ljQ%eCn z!#Mt#onaU+a5oFbvmIdP2Mi>z9}V{D$z27ZFx|p&hy5;{l0Ff>BP6)6kwCx5%gBKZ z9SP|U(30S@5=fG4AI2UN2O>l^tdeF3;?i+h7G?#oi2}YaKnyu@S2l*ARM-cQ4vUfS zQ9aLvjSW9M-^Vf=sy z9SDRkp`B8w-x=!1eSt&_>|Vmn>UIfsO8kZk8~Y89BR&S;jXSr|G3GaVB=rP5^&Aug z=iuIYI1du`f%9>1JxCW|rvDE=>2P)j=jnNnkGOOKdY3^r(`$w~1!o>$`#<~O8IZ;} zB$Um&y0Wx#o!E2R_DemUhxPH__B5on-B!{1l?%@`KRCuNIOEF%$EL~VVd4F7TPFz* z3Mc81$eT@Iak6-rWn)}#aNNc)#Bsta(BSu*O5uLNN16tY+z!?g;AsiDhFvj)(;o_Z zV&EibOVB#d8Z-`|c1k$<^1-;mr4@ZuO?~h&u*N=M@lwY@=77Q?Kat|A6NWY+}ciz#UV5{^d`}Q4J z+V9y*`mRZY?+{T}_m=~5RinjfW&Upw?Q=NqTAFih137mT=LQyX?%boCJN^ah7R+=F zBJiB&$FuItD=S%7e&!6if|yM_3AlGA4(N?;$+FIA;0E4Y=UxJCQMY4dm%;V2e>S0Y zFwy6eY`QvYgxADiaxy$A?a0nx;=d&J#>hW|0~hX_)OA<;kjQGyJ()66R zAmsVLKTq&_?F-qv{+GPqN%umUKtfoxpMqr{-&b`K*ITrE(ut)bp1Ar`EV4>H#(n6p zVZ$!bMWJvgh&iV=rykpWv-(GR%U7=kf7?Qn z0DoNV{(Hz~+pr2+?k|B;Zff;Umz^DFW|h%Q^6udKtG`pvI=}00)%5-Jna~S47Ses{ zjlWkN)q4F+lcHOB`KPa_yWe#gKgj}M(x&23#ufFZeXp9w>YmeZTY|-37FX1tF0|WKcMSIgIB>$z-p?<`j} z=g(-eeO{m9(2ME_mnHj>t^#~ucb}&Ze^&oqH0D&sC zz3lwM^XikECzS^r0@&==j$7B9SI@VrI+|Ys@PT;gt^ViLUNbM+Hkk{sc6O-n{yBB4 zUY)v}O#^thRnEZv=hV?1`~3V%6u|Cg{vlh=sz=Y<8{*)H^t&N#cxTnGU$hU}C&2Kz zP9?Et)O(%=TvIgzxM;a4ReoAsST|x^;iD&z{=DH%g461|gIjI-SQaRM6-!b*hF0Ch9e}V9fviZA@s@?Zl#wwN~95!Kfm!s-upN$yt z>QjINw-iOssZgu?c3t~TGQgYiUVQiDi2Bg8!WrwM5O%RU8GA(CxA~7d_6Gng_d%_fnW5boRMA^c3oVq76qMNk=GvJf)QWbra-WKd8QIe=2+G9)JrRZyzoH zPW^3Xm)6tn0)ySwP?Tk+p=oA`MC)DhCa^zR(;K5u=k<_ z3_mBW?I-)xzr{EdeK!=~s?UBOJ7BMRaHVKVTN>a^`HlM8OEbj+7l31rzsM7m zsy+5SaCGksut2t|U)w$EU0yS13DsT`mBYM1((3E}M?Jp;ZQm^*OMwXf7?H#(1N zdIS0JtQ!x?cB*Z*y2OW60$k1yocGxm>dvb)Q@52P%<~*Mcbocx&kr-)b^%;)Iq8$E zt?E7&n^yh09$|Ud{IQ$Wf83Vt+PM(m!1f7$g?*-e?HKO1aSGD!tI8D{)SU{w7w#L6 zuvGeZ*c!FV%LiK@jY4?(Ihp?ob&<=3Ghtx>lN}3RI~J?I_)7c3555S$6io40sQyBf zXCZfF>EpaR%~TIi-gB_+i13376aFOi@;#PKO`9WZo7ciLR^9oP{omcIssS#V`J_67 z&b}8{Vf`7x{@y{?=g_XJr|&k42e_c(*ygiK=`&wF5)V-nY8tj3s^ukEkB+@D)9L zO>B!Q3jMFTxhiKjz3Thio77Jap?=!@^(?BCHd!*Ym97|I;=ABC*S+-Fv9A-q91C#y zh&iL0eoL?a{gWLo4oDyGJ@Fdwb(aYN>AD9{-`3&5JHMlOdD}|T4kO&=`xBGCr_-AE zPP1PCu;8}HBKQz(I&$2hWh0UPdzME_HN9}-_n!Og0S;W!vwc!IP2Ya-XvVYqz<-KW zv-%&QkF5ALr}h}Y?mwMLx38cb2hMKYZ8^Y^$3MSfa+G!ns6MWd18n9gKKjQ|dcoWu zlLqt#xM1=GpM%Hff$m*x2DJcKd%>~K(&O~BYTc|mzup75qwSgTKhP!qu^wG_0bG>$ z;6>mGdfUjK>02tKcYaph{v^FX*`hjd1i%H)qn+-aq#XwBEOK@MIPe9}=ldV&3%aEi zn<#*Zi}k|=Kha&pzuIoRau@g=HFoHjQ*_au6HV;C2DrTJbdu9)+U@L0o$D-sV+UOF zetw$H8MNim!Ldm1=XL1F8QOQi?e#x+0bF(N0JZQeeM_3;7SRUaBCGNi!_Lv`uP}?H zx9$Lc@6Jzcd!C+3PH#M`2KfBawg zT%en;`Q}R!0q}qxNo`hLpoay>?}Rx6TyVOId2xY`%F(K}^=%8_Az&-UM@uZ8( z+K|Xw^!}}vXK%}2EdDAZycx;7MGv-%o^Y=wPW*MdKkAsmTXb#PQG*?(O)V=s9^Z`Y zzC}~lt`A5)GQaHkk+I##`CGL4(y;Z`^bB#p^CtJ1>RWVFFHL9Df@x(1D`&SQX18f+ zUW=?mW{Q}9H>rkkyG`59Ib^RP3&rEjr~ko3+@>q3$LULW>19RhlG>5X+jRE2=rdV0 zNoC$Ar@dkdZ__hOpKUmDc)Ivjg#Z*~-=^gWr=6^(WtNd2>4(g@+qCt9Da{oH1!WUE z+uvoXZ_{7DT%YDxzDRs$^Ey*vc8B&Hd~;}J{ycG^%Tg=ieutj^#Qod5b@R*CDLtE# z$UAhIw|s(HJx~0@Jc)p0-l21*m_L!L7nGUiJ-g2o-l0dF@-Imz^UD4(EfbR6cj%Ub zs(k+-pO($<()uQI?hf5#BhxR7%qIBialcDXT!$U>{IaIIL(PfVJ$m@Hk*fzV+2U8vzi&p|@6jF8dd}Z@c%eA2>q;{cd5?C_ zoAldHb#ui7T%UC%nfK^lcV6|M7*tp$^&DkQitf?;i4`+>>cwS)0wSEr?t63$&4^8F zQ_3!M`}zuV?jF52vxt8?Kvg!$bm$|d`X0Uc_qJ65O~;GJw2}YHw7XA#*Rs3s$)=;l zBYxTe%5U$}UBx}JyHR;%*AFiLg^9RNZ*-oWY{ul3t&?xCC7Ji>fQZ@WLz(&Fzz%a> zGKKf)mq#mBnimr!PVLw%izctGd$ ze^8c8&n)}1!u4Q;Lqv6CZ1rcaMp9NVl#VdAxVqk!3gMTz4gz59yG0M}}N3$S>QW zx^6>?9@1mS)-EfYnq4-7H{mL?>mfZY&gOX6{DtB^{ZpOD`G<7W9;S2yHCOzsDC8zn z{g9q_TKYpJNf$4BzVi&z?h##?(n}CHBfspolhR)qw?}kB^DaLfAydTF9V9v?;t@S` z=d#_~8HL#Vllga;j7RjS!_|9~&qtKCVK$hPqDM4!vehSx3TBptSZ)1-+4YFtCkVdO zluQzTme21@&Of4y#}1Eu!HXMT9<%I} zSDkvLSTzI`IA?0*O0yqMsqlIH?mrN+wC^iY61^iz}d#X3yuV9vnXFe}um1FeWwM;{Mzj~vR(D%+)*{F-U^gkJCX$=ob5y(~WlZnJ>-L;L;v>2b`G zvf)Xewcp!}cEL${UoT2C)4lT`j@ zN_Ib?|MZ=hIU#?Rc*KvT&zN&hXb-;H%#Sx&+;Q)2=zmY>-O@dYY5A+fPj`vh6SJqZ z?W|5QyCh;%(AlI9n7rA`KPr1`0H5-<*Umy z0ory%`;@khn$>Dv{z~zMLD%`j>>2H|B{55G8Y`ac(4+%#e@3?u^*DQ0y`pSz=C2Q! zh-dVb&zdw*@aC0$5gk*_WIUt!2|u>IrCuxMo87V^MbGG>>Rr>1Pn#<)4*1c8?0!a< zw^p}o9<;HntW#K5a{d|Z)Zgy4^Ym3^^Clm-%~U_5O;a8g?4P!*j5J!0Fsw7gvg-^t z)o_gnJXLh~uu-tiaF?FE#R(`k)ptV&tQ`}kQy-=67xW}3Ps6hb=Iw^(`pVS_*aSslA<=Us&Bf8+vgPJ>)>Z?8XukJR*o}G@pf-)Zom{r7J4Yu*^zA!$j!n9t z)^1mM{?NTUmwpwjGZ>x$U%y4pP7TCV;+L@zK3ANWaH$M4Rm=ZIJDbRN-$%U`S!J@)#kue4{? zw!3Dp+i%~KqX!z%wa)3y9L}oE7&UwSobhIMZL0TSDaE8?qA@sJG>JYzTAjjUJ(A{lb_UyMQ7;v z@Pl0Y+hj!Ft?6FY<0tjKBmJ%?EVSeD{~>yTQTWKG>qbj|RR4AHi0LmEoVoC^M)dOn z`KJ7n>K3nl%~u~Xl%Em3%8WN}=Lz-5fl-R0U;iatU=;p*r`zo=|DaCPlx`k>!;DLx z7}1NiWx6xR)qNt(HU@9#_V4Ibur6bGc7OKQP5a~O!ZFQ?7W^*Y!j~J-3r?l>9CA!8 zp5z^Oq_vel8|*{$O-A91x(RBsj;j5l9fr)F^q8xk0wcP%`wQvv3U%{iSyt|gY`OGf zjp(s%mz?(>QLor+-f>HT>%XH18ig-9KXuxba`n?Ocjm50Y02gPLv(>r_^Mw$mON0a zb)K8YM(60;4>6*Xp3pxItHng??BeCj#s49C6|N)cpYkz<(Vvv5n;woCIiht}?)}P* z=v4##(uxnNPwp6V$GeZ7KYob5$te6LkISJ)52%xeyA5%gs^{Myq8Av2kG(m+QVZ*8 zO3xpAuhjFeSR=ZiDc!8gKJ|!Ceux{x)APR%(F2XbS9Mu&CFmRV9~Li9U;D&GUq2t9 z3ykOmn;-ee_o!QJE}ZzuR7-vN8`I6p-COQbFIns}W5cLk|BhazAE&X33OZ%|CfTVT zoO$`?WR*1+{zLR~qwwXT=OeSXsULl&^XgaQa)_<<579Rnhp+o?&W6qE9d-84_Vb?U z`P&ER1x9o-sqI?TM)i#r)27-NIC1HJh#qSczTi@`F5j(G_xb$Q(&$BwT=+mEI;q*c zy}VGp?(?6YPwn;xH$HucE-(&nHo>_nUwtF+S{qu^iHrY3bYdJ{-;WwNAE1}xx}@Qm zm($*?fWFgn{ptxP^!&BJh+eRC6q&V`O1h+esr`8TSa@d9xXb!Nk2Xi zBYNQNdE@su7m2I*nSuK zuG~Yf-Oy(EIFVs|G@@5s*!JwuH}sY8|F6C4jEW-J!sRm%%qS{?l6IE`MACqSh8ht8 z0|*L85Ew*2Bq&iAlpP5oc?eHQDh5z8tDqu{U?3<#U_i-&h$5jI6h%awS1`lb`L*x; zdgr}!_MUT3P0iQUU3IJK_U(JCt2;AnYdG_h#)YR}G_?9q3^#AG!Irpi>QCjuD~9-) z;2u;Oy_6Nbd4xTF0T)iSw6Rq#fgSo~8i!U(a^!>js`Et4i>^6V3I~o(%F-EY*!556 z!m0QIi}N^S=2}%X>CM}RT(}s2uzK}F*t_#x!O;pic6lln-rK1jH&_m5_^wWzh2~*ou@I$K-ug^kdmyX8*`H*pL8yqer}n4(_?tG=xnXq zrG@PBbS|7BSoq!X2@LnzBY8`{iY*^17hb3wtQGeZp1M0@`dctZ|BG?sSKkguRl@2s zE(3$goc8z5`gJ+9D(a!p!76xaE4C%_#k~E*g`e<^6d0?5ed1{Y(W~eCp9?qE4UG=3 zhKqN^omk~G|NOy)1NGs8hc&Qi%ZF@JEgp`1x$(&^E30SlI4j-a*N;5x_5&`wHv$_? zcn)2}&5d_>ar8?s^25zjqxHcy#afu%munQQ!m*DlxbR+0wXnuocvryG^64H<|E6={ ztH!FPkJrIw*$b6kBjarSMB~C4ErnWt)I*g*!AThwXZ}*T@Kx_wD-JY3g^BGnDS^lA z{t@HCLHFCd&kb;OOsS)w_;dF80T*6)$4w;p1yp#w?D0CI?-dXNxBm6Lgt&7~iv7hN&_~7jLY=R=R1 z&#udutWTM@Ke_OuRu0MKP4HfszR74NXZ(tB;rCa#?_ApqhaTuX=n3Q4Prb-5K2MCU z(_;^t;lv{2-QUtU_D=;DPGk0suVupfm^jn_4X1z8x$spF{hVEyu;%1=VZFy{&ivrQ z6_iizf6Ro3%9h+U)!e|wX~g%pE3=fp%-a*afr4mSd<3YCl<%4uU>tYGY)EWNOkslm7kslvC7IDVDZGVSG=ydu+CVo zIp=mT4AC%3?R{nT=eU`>;288MKfiIGW-6wlJe{TWg@iU;ZE0(0p13{zq;|>(37ee4 zR{7g9@X+5q1_k>`xaNzq%Kqjk%qLWkS=dg(Z!uGn^oB^h=S#P=EArpk*SxbgnxtVh zslFR_R+BK9scilBIs*&-RP|i@Aqm|Bf^9NWE@CUgr`#-xN%)!rz`(0ZtiU29@0ja(<;QV&KrW#KVgnE9i?DV2mP%H(DCoBtCxu@-1tkbwNpLq<^~ z-59S^bgL+fAmO@+))L8Qad@v>R(?tl2@A{)eduS>F_V~#nk0V`8YE;42@2Ek0FyJ= zeJ>JfDfO6*iN@kX(NSts$4FRyU=554kHmayj}Kd;c=9j9tNqg2FW@bQ7KQX$laMB_ zp*=a0f@PN+RSYvF;U%?mwL$M=@lEaDC5#P882uzucl+@O>}Ay9^O|}jJhSL+;bMO} zcA@J`+%8DM#9O!eXJRg3YKMJ2{M8U{;PY{VZ5ReKZ|`eRB;m*RqDiv)bgcXI8^@ip zB(&xAgaP+2;Ab5^_r3lJ`O9F?h6<1{wzeTWeys;)F0Y+cu#ALva|#W84TCYkdx~hgeG=~V$$hgx=NzWk zw)gvq1ti@4m1(2i9gDHn9l6c>oq&t1V>Id4&*9@&;_WKG5b&t+p1RT9@px^P#!djUO9Bd~>~c=savHyQ z%eeh>6N*RVKBkR2?7-y0?PZ2M?bKG5RrQ?0gZ5oAmn|aTmqP&~dIIP0mGL&u zZ~TGEzna;wSS11LkSbQyNAZ=#sS)z`k^-=q>WeJ`c?9G$6?xO=z`&$U4Z3-92sl(F zWE@&e!S3lQ0h54!Oh6Ma)39}%zYbZV>6iClrbrAE;+S_7w zm4LrW*p`!b67YJ>-_iE>1Pm&ngyjhw!^=CC`U;>tk>!4$baueyH#%asub_C+`Ce14 zE;=5PXfkyMS3d%>kGux~rbPj*!tYbcm z^2`=K+uAe+25oxwxuElJ$}lYHQVPJs77Tl@MfGv5a5kM8NyL=U$3RC>-puV~PT#O2 zcG&2J>L*lxofmiHE3cl%1vYA%N}={rwrP&vbxFY2H0(_dNAlRr64D5#&U6`_fm{Nz-dCp4 z?mFU8y2b01P=D##eXp1)dmV?0Qh#Qv#NH^Y^JVyJM1){Xz~k1ay!%EU~CE40jx`32>?-V5{Pr{&OOc zn6ljNkyI3)6D-A_!q0ep*@LPM+?$`hZ?sPX=nuj3ZgZwV@ z_9tfewBWw`*FF)D`Xy6q#SI3oVL1@(HHGA#kf%2B@+huvJN?m*g~n@yh3gw44&S}x zszTvn64rOy@xMax>E=g!7@Lv4$xVv?HeD8n^KE`*{TS(^JIe|b@;$tvA=sX#gImX?Na(!LNUfmW0V{sLB+*@-ghz$q-L|+o zV=fG`OKcknn~Up$H$>3!Z%=H@mLmOn{2L3}636*makg=at8h}d^vB} zJ`&#K(aH?H?t_KhnC{wOLBf?1RI$r(L3mQ|vvvJ6bp7~8t;SX{Sg2Cx!gnqxUg^3Z z*HR+{qZKXqB<@W@QSBlg@zx;RE;T^;;%O2-TduEJA`^~FU;VsR?;Hu4=QU`H?)qR~ zVC4I)3=(>JT{0P|490@@R!^IxkZ>%H87nXui+3fN>Ik5R zuD_)JcUt9tV8At#C literal 0 HcmV?d00001 diff --git a/talkingq-url/config.py b/talkingq-url/config.py index 0a99485..7e9b0ef 100644 --- a/talkingq-url/config.py +++ b/talkingq-url/config.py @@ -36,10 +36,10 @@ class Settings(BaseSettings): db_password: str db_name: str = "talkingq" db_echo: bool = False # 是否打印SQL语句 - + # TalkingQ设备MQTT命令服务配置 talkingq_mqtt_broker: str = "broker.emqx.io" - talkingq_mqtt_port: int = 1883 + talkingq_mqtt_port: int = 1884 talkingq_mqtt_username: str = "" talkingq_mqtt_password: str = "" talkingq_mqtt_device_prefix: str = "TalkingQ" diff --git a/talkingq-url/handlers/audio_file_handler.py b/talkingq-url/handlers/audio_file_handler.py index cce0e60..efd34ab 100644 --- a/talkingq-url/handlers/audio_file_handler.py +++ b/talkingq-url/handlers/audio_file_handler.py @@ -2,7 +2,7 @@ import os import uuid from config import settings from utils.logger import session_logger -from utils.audio_denoiser import reduce_background_noise +# from utils.audio_denoiser import reduce_background_noise async def save_audio_file(audio_data: bytes, device_id: str) -> str: diff --git a/talkingq-url/handlers/mqtt_handler.py b/talkingq-url/handlers/mqtt_handler.py new file mode 100644 index 0000000..ce895fc --- /dev/null +++ b/talkingq-url/handlers/mqtt_handler.py @@ -0,0 +1,378 @@ +import json +import time +import asyncio +from typing import Optional, Dict, Callable, Awaitable +from config import settings +from services.card_service import card_service +from services.offline_audio_cache import offline_audio_cache +import aiomqtt + +from services.device_target_cache import device_target_cache +from utils.logger import session_logger as logger + + +class TalkingQMQTTService: + _instance = None + _lock = asyncio.Lock() + + def __init__(self, config: dict): + self.broker = config.get("broker", "broker.emqx.io") + self.port = config.get("port", 1883) + self.username = config.get("username") + self.password = config.get("password") + self.device_prefix = config.get("device_prefix", "TalkingQ") + self.qos = config.get("qos", 0) + self.keepalive = config.get("keepalive", 60) + self.nfc_notice_interval = config.get("nfc_notice_interval", 600) + + self._client: Optional[aiomqtt.Client] = None + self._connected = False + self._connect_lock = asyncio.Lock() + self._message_task: Optional[asyncio.Task] = None + + self._msg_handlers: Dict[str, Callable[[str, dict], Awaitable[None]]] = { + "000": self._handle_device_info, + "001": self._handle_gps_response, + "002": self._handle_volume_response, + "003": self._handle_ota_response, + "004": self._handle_nfc_notice_response, + "005": self._handle_nfc_listen_report, + "006": self._handle_bind_response, + "007": self._handle_open_response, + } + + @classmethod + async def get_instance(cls, config: dict = None) -> Optional["TalkingQMQTTService"]: + async with cls._lock: + if cls._instance is None and config is not None: + cls._instance = cls(config) + return cls._instance + + @classmethod + async def reset_instance(cls): + async with cls._lock: + if cls._instance is not None: + await cls._instance.disconnect() + cls._instance = None + + async def _message_loop(self): + try: + async for message in self._client.messages: + try: + topic = str(message.topic) + parts = topic.split("/") + if parts[0] == "device": + device_id = parts[1] if len(parts) >= 2 else "unknown" + + if not device_id.startswith(f"{self.device_prefix}_"): + continue + + payload = json.loads(message.payload.decode("utf-8")) + + msg_id = payload.get("msg_id") + + handler = self._msg_handlers.get(msg_id) + if handler: + await handler(device_id, payload) + else: + logger.warning(device_id, "", f"未知 msg_id: {msg_id}, 设备: {device_id}") + + except json.JSONDecodeError as e: + logger.error("", "", f"消息解析失败: {e}") + except Exception as e: + logger.error("", "", f"消息处理异常: {e}") + except asyncio.CancelledError: + pass + except Exception as e: + logger.error("", "", f"消息循环异常: {e}") + self._connected = False + + async def _handle_device_info(self, device_id: str, payload: dict): + # status = payload.get("status") + data = payload.get("data", {}) + # if status == "success": + d_id = data.get("id") + power = data.get("power") + signal = data.get("signal") + version = data.get("version") + voice = data.get("voice") + logger.info(device_id, "", f"[设备信息] 设备 {d_id} 信息: 电量={power}, 信号强度={signal}, 版本号={version}, 音量={voice}") + # else: + # logger.warning(device_id, "", f"[设备信息] 设备 {device_id} 查询失败: {payload}") + await self._publish(f"device/{device_id}/event_resp", {"msg_id": "000", "status": "success"}) + + async def _handle_gps_response(self, device_id: str, payload: dict): + status = payload.get("status") + data = payload.get("data", {}) + if status == "success": + lat = data.get("latitude") + lon = data.get("longitude") + logger.info(device_id, "", f"[GPS] 设备 {device_id} 位置: 纬度={lat}, 经度={lon}") + else: + logger.warning(device_id, "", f"[GPS] 设备 {device_id} 查询失败: {payload}") + + async def _handle_volume_response(self, device_id: str, payload: dict): + status = payload.get("status") + data = payload.get("data", {}) + if status == "success": + level = data.get("current_level") + logger.info(device_id, "", f"[音量] 设备 {device_id} 当前音量: {level}") + else: + logger.warning(device_id, "", f"[音量] 设备 {device_id} 调节失败: {payload}") + + async def _handle_ota_response(self, device_id: str, payload: dict): + status = payload.get("status") + data = payload.get("data", {}) + if status == "accepted": + current = data.get("current_version") + target = data.get("target_version") + logger.info(device_id, "", f"[OTA] 设备 {device_id} 已接受升级: {current} -> {target}") + elif status == "success": + new_ver = data.get("new_version") + logger.info(device_id, "", f"[OTA] 设备 {device_id} 升级完成: {new_ver}") + else: + logger.warning(device_id, "", f"[OTA] 设备 {device_id} 升级异常: {payload}") + + async def _handle_nfc_notice_response(self, device_id: str, payload: dict): + status = payload.get("status") + if status == "success": + logger.info(device_id, "", f"[NFC通知] 设备 {device_id} 已收到留言提示") + else: + logger.warning(device_id, "", f"[NFC通知] 设备 {device_id} 留言提示失败: {payload}") + + async def _handle_nfc_listen_report(self, device_id: str, payload: dict): + params = payload.get("params", {}) + nfc_uuid = params.get("uuid") + logger.info(device_id, "", f"[NFC收听] 设备 {device_id} 请求收听留言, UUID={nfc_uuid}") + await self._send_nfc_listen_response(device_id, nfc_uuid) + + async def _handle_bind_response(self, device_id: str, payload: dict): + params = payload.get("params", {}) + status = params.get("status") + logger.info(device_id, "", f"[NFC绑定] 设备 {device_id} 请求绑定卡片返回状态: {status}") + + nfc_uuid = params.get("uuid") + logger.info(device_id, "", f"[NFC绑定] 设备 {device_id} 请求绑定卡片, UUID={nfc_uuid}") + + async def _handle_open_response(self, device_id: str, payload: dict): + params = payload.get("params", {}) + status = params.get("status") + logger.info(device_id, "", f"[设备状态] 设备 {device_id} 请求返回设备状态: {status}") + data = params.get("data", {}) + device_status = data.get("status") + logger.info(device_id, "", f"[设备状态] 设备 {device_id} 请求设备状态: {device_status}") + + async def _send_nfc_listen_response(self, device_id: str, nfc_uuid: str): + topic = f"device/{device_id}/event_resp" + card = await card_service.get_card_by_uuid(nfc_uuid) + if not card: + logger.warning("", "", f"[NFC收听] 设备 {device_id} 没有找到卡片{nfc_uuid},无法发送留言提示") + payload = { + "msg_id": "005", + "type": 0, + "params": { + "url_1": f"http://{settings.server_host}:{settings.server_port}/assets/audio/error_card.mp3" + } + } + await self._publish(topic, payload) + return + + is_owner = await card_service.check_card_ownership(nfc_uuid, device_id) + if is_owner: + has_pending = await offline_audio_cache.has_pending_audio(device_id) + if nfc_uuid == "53D92B6DA20001": + payload = { + "msg_id": "005", + "type": 0, + "params": { + "url_1": f"http://{settings.server_host}:{settings.server_port}/assets/audio/test_zh.mp3" + } + } + await self._publish(topic, payload) + return + if has_pending: + audio_urls = await offline_audio_cache.get_audio_urls(device_id) + # 53D92B6DA20001 测试卡片 + if nfc_uuid == "53D92B6DA20001": + payload = { + "msg_id": "005", + "type": 0, + "params": { + "url_1": f"http://{settings.server_host}:{settings.server_port}/assets/audio/test_zh.mp3" + } + } + await self._publish(topic, payload) + return + if len(audio_urls) == 0: + payload = { + "msg_id": "005", + "type": 0, + "params": { + "url_1": f"http://{settings.server_host}:{settings.server_port}/assets/audio/no_message.mp3" + } + } + else: + params = {} + for k, audio_url in enumerate(audio_urls, start=1): + params[f"url_{k}"] = audio_url + payload = { + "msg_id": "005", + "type": 0, + "params": params + } + await offline_audio_cache.clear_audio_urls(device_id) + await self._publish(topic, payload) + else: + payload = { + "msg_id": "005", + "type": 0, + "params": { + "url_1": f"http://{settings.server_host}:{settings.server_port}/assets/audio/no_message.mp3" + } + } + await self._publish(topic, payload) + else: + # 检查卡片是否存在 + existing_card = await card_service.get_card_by_uuid(nfc_uuid) + + if existing_card: + # 卡片已存在,使用卡片绑定的设备ID作为目标设备ID + target_device_id = existing_card.device_id + logger.info(device_id, "card", f"卡片已存在,绑定的设备ID: {target_device_id}") + else: + # 卡片不存在,创建新卡片并绑定到当前设备 + new_card = await card_service.activate_card(nfc_uuid, device_id) + logger.info(device_id, "card", f"新卡片{nfc_uuid}已创建并激活,绑定到设备: {device_id}") + return + + # 设置目标设备 + await device_target_cache.set_target(device_id, target_device_id) + payload = { + "msg_id": "005", + "type": 1, + "params": { + "url_1": f"http://{settings.server_host}:{settings.server_port}/assets/audio/welcome.mp3" + } + } + await self._publish(topic, payload) + + async def connect(self): + async with self._connect_lock: + if self._connected: + return + try: + self._client = aiomqtt.Client( + hostname=self.broker, + port=self.port, + username=self.username, + password=self.password, + identifier=f"talkingq_server_{int(time.time())}", + keepalive=self.keepalive, + ) + await self._client.__aenter__() + self._connected = True + logger.system_info("", f"TalkingQ MQTT 已连接: {self.broker}:{self.port}") + + await self._client.subscribe("device/+/response", qos=self.qos) + logger.system_info("", "已订阅: device/+/response") + + await self._client.subscribe("device/+/event", qos=self.qos) + logger.system_info("", "已订阅: device/+/event") + + self._message_task = asyncio.create_task(self._message_loop()) + logger.info("", "", "TalkingQ MQTT 服务启动中...") + except Exception as e: + self._connected = False + logger.error("", "", f"TalkingQ MQTT 连接失败: {e}") + + async def disconnect(self): + if self._message_task and not self._message_task.done(): + self._message_task.cancel() + try: + await self._message_task + except asyncio.CancelledError: + pass + self._message_task = None + + if self._client is not None: + try: + await self._client.__aexit__(None, None, None) + except Exception: + pass + self._client = None + self._connected = False + + async def _ensure_connected(self): + if not self._connected: + await self.connect() + + async def _publish(self, topic: str, payload: dict): + await self._ensure_connected() + try: + await self._client.publish(topic, json.dumps(payload, ensure_ascii=False), qos=self.qos) + logger.info("", "", f"下发命令 -> {topic}: {payload}") + except Exception as e: + logger.error("", "", f"命令下发失败: {e}") + + async def send_gps_query(self, device_id: str) -> str: + topic = f"device/{device_id}/command" + payload = {"msg_id": "001"} + await self._publish(topic, payload) + return "001" + + async def send_volume_command(self, device_id: str, level: int) -> str: + topic = f"device/{device_id}/command" + payload = { + "msg_id": "002", + "params": {"level": level} + } + await self._publish(topic, payload) + return "002" + + async def send_ota_command(self, device_id: str, url: str, version: str) -> str: + topic = f"device/{device_id}/command" + payload = { + "msg_id": "003", + "params": { + "url": url, + "version": version, + } + } + await self._publish(topic, payload) + return "003" + + async def send_nfc_notice(self, device_id: str, url: str) -> str: + topic = f"device/{device_id}/command" + payload = { + "msg_id": "004", + "params": {"url_1": url} + } + await self._publish(topic, payload) + return "004" + + + async def send_bind_nfc_command(self, device_id: str, uuid: str) -> str: + topic = f"device/{device_id}/command" + payload = { + "msg_id": "006" + } + await self._publish(topic, payload) + return "006" + + async def send_open_command(self, device_id: str, open_type: int, is_open: int) -> str: + topic = f"device/{device_id}/command" + if open_type not in [0, 1]: + raise ValueError("open_type must be 0 or 1") + if open_type == 0: + payload = { + "msg_id": "007", + "type": open_type + } + elif open_type == 1: + payload = { + "msg_id": "007", + "type": open_type, + "status": is_open + } + await self._publish(topic, payload) + return "007" diff --git a/talkingq-url/handlers/websocket_handler.py b/talkingq-url/handlers/websocket_handler.py index aa624b9..1dfc89f 100644 --- a/talkingq-url/handlers/websocket_handler.py +++ b/talkingq-url/handlers/websocket_handler.py @@ -30,19 +30,19 @@ async def websocket_endpoint(websocket: WebSocket): await websocket.send_text('{"status": "error", "message": "Not authenticated"}') return - # 检查设备是否有离线音频URL需要发送 - has_pending = await offline_audio_cache.has_pending_audio(device_id) - if has_pending: - audio_urls = await offline_audio_cache.get_audio_urls(device_id) - for audio_url in audio_urls: - try: - await websocket.send_text(f"SOUND_URL:{audio_url}") - session_logger.info(device_id, "offline", f"发送离线音频URL: {audio_url}") - except Exception as e: - session_logger.error(device_id, "offline", f"发送离线音频URL失败: {e}") - # 清空已发送的离线音频URL - await offline_audio_cache.clear_audio_urls(device_id) - session_logger.info(device_id, "offline", f"已清空设备的离线音频URL缓存,共 {len(audio_urls)} 个") + # # 检查设备是否有离线音频URL需要发送 + # has_pending = await offline_audio_cache.has_pending_audio(device_id) + # if has_pending: + # audio_urls = await offline_audio_cache.get_audio_urls(device_id) + # for audio_url in audio_urls: + # try: + # await websocket.send_text(f"SOUND_URL:{audio_url}") + # session_logger.info(device_id, "offline", f"发送离线音频URL: {audio_url}") + # except Exception as e: + # session_logger.error(device_id, "offline", f"发送离线音频URL失败: {e}") + # # 清空已发送的离线音频URL + # await offline_audio_cache.clear_audio_urls(device_id) + # session_logger.info(device_id, "offline", f"已清空设备的离线音频URL缓存,共 {len(audio_urls)} 个") await handle_websocket_messages(websocket, device_id) diff --git a/talkingq-url/handlers/websocket_message_handler.py b/talkingq-url/handlers/websocket_message_handler.py index 25ce8c0..7e474e3 100644 --- a/talkingq-url/handlers/websocket_message_handler.py +++ b/talkingq-url/handlers/websocket_message_handler.py @@ -267,18 +267,36 @@ async def process_cached_audio(device_id: str, target_device_id: str): audio_url = f"http://{settings.server_host}:{settings.server_port}/{audio_path}" # 发送URL给目标设备 - target_websocket = await connection_manager.get_connection(target_device_id) - if target_websocket and target_websocket.client_state.name == "CONNECTED": - await target_websocket.send_text("TTS_START") - session_logger.info(device_id, "target", "已发送 TTS_START 给客户端") - await target_websocket.send_text(f"NFC_SOUND_URL:{audio_url}") - session_logger.info(device_id, "target", f"已发送音频URL给目标设备 {target_device_id}: {audio_url}") - await target_websocket.send_text("TTS_END") - session_logger.info(device_id, "target", "已发送 TTS_END 给客户端") + # target_websocket = await connection_manager.get_connection(target_device_id) + # if target_websocket and target_websocket.client_state.name == "CONNECTED": + # await target_websocket.send_text("TTS_START") + # session_logger.info(device_id, "target", "已发送 TTS_START 给客户端") + # await target_websocket.send_text(f"NFC_SOUND_URL:{audio_url}") + # session_logger.info(device_id, "target", f"已发送音频URL给目标设备 {target_device_id}: {audio_url}") + # await target_websocket.send_text("TTS_END") + # session_logger.info(device_id, "target", "已发送 TTS_END 给客户端") + # else: + + # # 目标设备不在线,保存到离线缓存 + await offline_audio_cache.add_audio_url(target_device_id, audio_url) + session_logger.warning(device_id, "target", f"目标设备 {target_device_id} 不在线,保存音频URL到离线缓存") + websocket = await connection_manager.get_connection(device_id) + if websocket and websocket.client_state.name == "CONNECTED": + success_audio_url = f"http://{settings.server_host}:{settings.server_port}/assets/audio/message_ok.mp3" + await websocket.send_text(f"PROMPT_SOUND_URL:{success_audio_url}") + session_logger.info(device_id, "device", f"留言已收到音频URL给设备 {device_id}") else: - # 目标设备不在线,保存到离线缓存 - await offline_audio_cache.add_audio_url(target_device_id, audio_url) - session_logger.warning(device_id, "target", f"目标设备 {target_device_id} 不在线,保存音频URL到离线缓存") + session_logger.warning(device_id, "device", f"设备 {device_id} 不在线,发送留言已收到音频URL失败") + # # # 目标设备不在线,保存到离线缓存 + # await offline_audio_cache.add_audio_url(target_device_id, audio_url) + # session_logger.warning(device_id, "target", f"目标设备 {target_device_id} 不在线,保存音频URL到离线缓存") + # websocket = await connection_manager.get_connection(device_id) + # if websocket and websocket.client_state.name == "CONNECTED": + # success_audio_url = f"http://{settings.server_host}:{settings.server_port}/assets/audio/success_zh.mp3" + # await websocket.send_text(f"NFC_MESSAGE_SUCCESS_URL:{success_audio_url}") + # session_logger.info(device_id, "device", f"已发送留言成功音频URL给设备 {device_id}") + # else: + # session_logger.warning(device_id, "device", f"设备 {device_id} 不在线,发送留言成功音频失败") except Exception as e: session_logger.error(device_id, "target", f"处理缓存音频时出错: {e}", exc_info=True) finally: diff --git a/talkingq-url/main.py b/talkingq-url/main.py index e93635c..3ab668b 100644 --- a/talkingq-url/main.py +++ b/talkingq-url/main.py @@ -2,6 +2,7 @@ import asyncio import os from contextlib import asynccontextmanager from fastapi import FastAPI +from services import offline_audio_cache from services.device_config import DeviceConfigManager from services.schedule_session_cleanup import background_cleanup_task from services.role_manager import role_manager @@ -14,6 +15,8 @@ from api.assets import configure_static_assets from database.init_db import init_db from database.connection import get_db_manager from services.firmware_scanner import firmware_scanner +from handlers.mqtt_handler import TalkingQMQTTService +from services.scheduler import TaskScheduler device_config_manager = DeviceConfigManager() @@ -29,6 +32,28 @@ async def lifespan(app: FastAPI): ) init_directories() + scheduler = TaskScheduler.get_instance() + scheduler.start() + scheduler.add_interval_task( + interval_seconds=settings.talkingq_mqtt_nfc_notice_interval + ) + if settings.talkingq_mqtt_broker: + mqtt_config = { + "broker": settings.talkingq_mqtt_broker, + "port": settings.talkingq_mqtt_port, + "username": settings.talkingq_mqtt_username, + "password": settings.talkingq_mqtt_password, + "device_prefix": settings.talkingq_mqtt_device_prefix, + "qos": settings.talkingq_mqtt_qos, + "keepalive": settings.talkingq_mqtt_keepalive, + "nfc_notice_interval": settings.talkingq_mqtt_nfc_notice_interval, + } + service = await TalkingQMQTTService.get_instance(mqtt_config) + await service.connect() + session_logger.system_info("startup", "TalkingQ MQTT 设备命令服务链接已启动") + else: + session_logger.system_info("startup", "未配置 TalkingQ_MQTT,MQTT 服务链接未启动") + exit(1) try: session_logger.system_info("startup", "初始化数据库...") await init_db() @@ -93,6 +118,10 @@ async def lifespan(app: FastAPI): if is_main_process: session_logger.system_info("shutdown", f"关闭数据库连接时出错: {str(e)}") + TaskScheduler.reset_instance() + await TalkingQMQTTService.reset_instance() + session_logger.system_info("shutdown", "TalkingQ MQTT 服务链接已关闭") + if is_main_process: session_logger.system_info("shutdown", "应用关闭") diff --git a/talkingq-url/requirements.txt b/talkingq-url/requirements.txt index 42a6f64..76552cf 100644 --- a/talkingq-url/requirements.txt +++ b/talkingq-url/requirements.txt @@ -1,7 +1,7 @@ aiofiles==24.1.0 -aiohttp==3.11.13 +aiohttp fastapi==0.115.11 -pycld2==0.41 +# pycld2==0.41 pydantic-settings==2.8.1 python-multipart==0.0.20 PyYAML==6.0.2 @@ -17,5 +17,6 @@ numpy==1.26.4 scipy==1.11.4 librosa==0.10.1 setuptools==69.5.1 - -paho-mqtt>=2.0.0 \ No newline at end of file +pycld2 +aiomqtt>=2.0.0 +apscheduler>=3.10.0 \ No newline at end of file diff --git a/talkingq-url/services/offline_audio_cache.py b/talkingq-url/services/offline_audio_cache.py index 4654b78..c0d8dc1 100644 --- a/talkingq-url/services/offline_audio_cache.py +++ b/talkingq-url/services/offline_audio_cache.py @@ -25,7 +25,10 @@ class OfflineAudioCache: async def has_pending_audio(self, device_id: str) -> bool: async with self.lock: return device_id in self.offline_audio and len(self.offline_audio[device_id]) > 0 - + + async def get_all_audio_cache(self) -> List[str]: + async with self.lock: + return self.offline_audio # 单例实例 offline_audio_cache = OfflineAudioCache() \ No newline at end of file diff --git a/talkingq-url/services/scheduler.py b/talkingq-url/services/scheduler.py new file mode 100644 index 0000000..834a268 --- /dev/null +++ b/talkingq-url/services/scheduler.py @@ -0,0 +1,69 @@ +import logging +from typing import Optional, Dict + +from apscheduler.schedulers.asyncio import AsyncIOScheduler +from apscheduler.triggers.interval import IntervalTrigger +from services.connection_manager import connection_manager +from handlers.mqtt_handler import TalkingQMQTTService +from services.offline_audio_cache import offline_audio_cache +from config import settings +from utils.logger import session_logger as logger + +class TaskScheduler: + _instance = None + + def __init__(self): + self._scheduler = AsyncIOScheduler(timezone="Asia/Shanghai") + + @classmethod + def get_instance(cls) -> "TaskScheduler": + if cls._instance is None: + cls._instance = cls() + return cls._instance + + @classmethod + def reset_instance(cls): + if cls._instance is not None: + cls._instance.shutdown() + cls._instance = None + + def start(self): + if not self._scheduler.running: + self._scheduler.start() + logger.system_info("", "定时任务调度器已启动") + + def shutdown(self): + if self._scheduler.running: + self._scheduler.shutdown(wait=False) + logger.system_info("", "定时任务调度器已关闭") + + async def _execute_task(self): + try: + service = await TalkingQMQTTService.get_instance() + audio_cache = await offline_audio_cache.get_all_audio_cache() + if not audio_cache: + logger.warning("", "", "无离线音频缓存,跳过本次执行") + return + for device_id, audio_urls in audio_cache.items(): + websocket = await connection_manager.get_connection(device_id) + if websocket is not None: + audio_url = f"http://{settings.server_host}:{settings.server_port}/assets/audio/new_message.mp3" + await service.send_nfc_notice(device_id, audio_url) + logger.info(device_id, "", f"[定时任务] 发送音频成功: device={device_id}, audio_url={audio_url}") + else: + logger.info(device_id, "", f"[定时任务] 跳过音频发送: 设备 {device_id} 离线") + except Exception as e: + logger.error("", "", f"[定时任务] 执行失败: {e}") + + def add_interval_task(self, interval_seconds: int = 600): + task_id = "Voice_Message_Task" + task_name = "Voice_Message_Task" + job = self._scheduler.add_job( + self._execute_task, + trigger=IntervalTrigger(seconds=interval_seconds), + id=task_id, + name=task_name, + replace_existing=True, + ) + + logger.system_info("", f"[定时任务] 已添加: {task_id} | 间隔={interval_seconds}s | 下次执行={job.next_run_time}")