From 44c62467ae8dddcc433c2373b01e0837b5aca76f Mon Sep 17 00:00:00 2001 From: rvuyyuru2 Date: Sat, 25 Jan 2025 20:54:21 +0530 Subject: [PATCH 1/2] Adds support for creating weighted voice combinations Implements a new method to parse weighted voice formulas and generate combined audio outputs based on specified weights. This enhancement allows for more diverse audio generation by letting users specify multiple voices with respective weights, improving flexibility in voice management. Updates voice processing logic in relevant API routes to handle weighted formulas seamlessly. Fixes #123 (if applicable, replace with the actual issue reference) --- api/src/inference/voice_manager.py | 100 +++++++++++++++++++++++++++ api/src/routers/openai_compatible.py | 47 +++++++++---- examples/openai_streaming_audio.py | 2 +- examples/speech.mp3 | Bin 72960 -> 63840 bytes 4 files changed, 135 insertions(+), 14 deletions(-) diff --git a/api/src/inference/voice_manager.py b/api/src/inference/voice_manager.py index 56557e6..01f2372 100644 --- a/api/src/inference/voice_manager.py +++ b/api/src/inference/voice_manager.py @@ -182,6 +182,106 @@ class VoiceManager: except Exception: return False + async def create_weighted_voice( + self, + formula: str, + normalize: bool = False, + device: str = "cpu", + ) -> str: + """ + Parse the voice formula string (e.g. '0.3 * voiceA + 0.5 * voiceB') + and return a combined torch.Tensor representing the weighted sum + of the given voices. + + Args: + formula: Weighted voice formula string. + voice_manager: A class that has a `load_voice(voice_name, device)` -> Tensor + device: 'cpu' or 'cuda' for the final tensor. + normalize: If True, divide the final result by the sum of the weights + so the total "magnitude" remains consistent. + + Returns: + A torch.Tensor containing the combined voice embedding. + """ + pairs = self.parse_voice_formula(formula) # [(weight, voiceName), (weight, voiceName), ...] + + # Validate the pairs + for weight, voice_name in pairs: + if weight <= 0: + raise ValueError(f"Invalid weight {weight} for voice {voice_name}.") + + if not pairs: + raise ValueError("No valid weighted voices found in formula.") + + # Keep track of total weight if we plan to normalize. + total_weight = 0.0 + weighted_sum = None + combined_name = "" + + for weight, voice_name in pairs: + # 1) Load each base voice from your manager/service + base_voice = await self.load_voice(voice_name, device=device) + + + # 3) Combine the base voices using the weights + if combined_name == "": + combined_name = voice_name + else: + combined_name += f"+{voice_name}" + + + + + # 2) Multiply by weight and accumulate + if weighted_sum is None: + # Clone so we don't modify the base voice in memory + weighted_sum = base_voice.clone() * weight + else: + weighted_sum += (base_voice * weight) + + total_weight += weight + + if weighted_sum is None: + raise ValueError("No voices were combined. Check the formula syntax.") + + # Optional normalization + if normalize and total_weight != 0.0: + weighted_sum /= total_weight + + if settings.allow_local_voice_saving: + + # Save to disk + api_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) + voices_dir = os.path.join(api_dir, settings.voices_dir) + os.makedirs(voices_dir, exist_ok=True) + combined_path = os.path.join(voices_dir, f"{formula}.pt") + try: + torch.save(weighted_sum, combined_path) + except Exception as e: + logger.warning(f"Failed to save combined voice: {e}") + # Continue without saving - will be combined on-the-fly when needed + + return combined_name + + + + + def parse_voice_formula(self,formula: str) -> List[tuple[float, str]]: + """ + Parse the voice formula string (e.g. '0.3 * voiceA + 0.5 * voiceB') + and return a list of (weight, voiceName) pairs. + Args: + formula: Weighted voice formula string. + Returns: + List of (weight, voiceName) pairs. + """ + pairs = [] + parts = formula.split('+') + for part in parts: + weight, voice_name = part.strip().split('*') + pairs.append((float(weight), voice_name.strip())) + return pairs + @property def cache_info(self) -> Dict[str, int]: """Get cache statistics. diff --git a/api/src/routers/openai_compatible.py b/api/src/routers/openai_compatible.py index 5908a56..4196f4c 100644 --- a/api/src/routers/openai_compatible.py +++ b/api/src/routers/openai_compatible.py @@ -2,7 +2,7 @@ import json import os from typing import AsyncGenerator, Dict, List, Union -from fastapi import APIRouter, Depends, Header, HTTPException, Request, Response +from fastapi import APIRouter, Header, HTTPException, Request, Response from fastapi.responses import StreamingResponse from loguru import logger @@ -112,7 +112,17 @@ async def stream_audio_chunks( client_request: Request ) -> AsyncGenerator[bytes, None]: """Stream audio chunks as they're generated with client disconnect handling""" - voice_to_use = await process_voices(request.voice, tts_service) + # Check if 'request.voice' is a weighted formula (contains '*') + if '*' in request.voice: + # Weighted formula path + voice_to_use = await tts_service._voice_manager.create_weighted_voice( + formula=request.voice, + normalize=True + ) + + else: + # Normal single or multi-voice path + voice_to_use = await process_voices(request.voice, tts_service) try: async for chunk in tts_service.generate_audio_stream( @@ -159,10 +169,7 @@ async def create_speech( # Get global service instance tts_service = await get_tts_service() - # Process voice combination and validate - voice_to_use = await process_voices(request.voice, tts_service) - - # Set content type based on format + # Set content type based on format content_type = { "mp3": "audio/mpeg", "opus": "audio/opus", @@ -209,13 +216,27 @@ async def create_speech( }, ) else: - # Generate complete audio using public interface - audio, _ = await tts_service.generate_audio( - text=request.input, - voice=voice_to_use, - speed=request.speed, - stitch_long_output=True - ) + # Check if 'request.voice' is a weighted formula (contains '*') + if '*' in request.voice: + # Weighted formula path + print("Weighted formula path") + voice_to_use = await tts_service._voice_manager.create_weighted_voice( + formula=request.voice, + normalize=True + ) + print(voice_to_use) + else: + # Normal single or multi-voice path + print("Normal single or multi-voice path") + # Otherwise, handle normal single or multi-voice logic + voice_to_use = await process_voices(request.voice, tts_service) + # Generate complete audio using public interface + audio, _ = await tts_service.generate_audio( + text=request.input, + voice=voice_to_use, + speed=request.speed, + stitch_long_output=True + ) # Convert to requested format content = await AudioService.convert_audio( diff --git a/examples/openai_streaming_audio.py b/examples/openai_streaming_audio.py index 353ee3d..4345e4d 100644 --- a/examples/openai_streaming_audio.py +++ b/examples/openai_streaming_audio.py @@ -31,7 +31,7 @@ def stream_to_speakers() -> None: with openai.audio.speech.with_streaming_response.create( model="kokoro", - voice="af_bella", + voice="0.100 * af + 0.300 * am_adam + 0.400 * am_michael + 0.100 * bf_emma + 0.100 * bm_lewis ", response_format="pcm", # similar to WAV, but without a header chunk at the start. input="""I see skies of blue and clouds of white The bright blessed days, the dark sacred nights diff --git a/examples/speech.mp3 b/examples/speech.mp3 index c21bec0a93cef23bf1136edae3f814102ed18c77..62bc37a5102e94b25d49da84b3afda5025d6510e 100644 GIT binary patch literal 63840 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

T+Hb@{Dxrn5M# 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 aX}YR#N8+p6vVYgVwEuTwh5w&_`F{Y;Bn$Td literal 72960 zcmeF(X;@Ng-!S~eC?FajDj?Yc(a_WYhtRAIPB~!Vn3fgbke0QbYHQO5M4ZrY$k4QK z$keQyDs99uH7$n*8@HC4jk{@I4ZEFh-OqbJ@2BU(_3?h*YaIs%>o{1z$@$~tT>t<7 zTr7N;=>`6K^W7Qy>yQ0KKW>Ks$YKD1AyN7UID(0(85N{iTG`kxXFEE(tX$3W@bd8s zSQi`;9>|bh)d$f8hGa z==kls_aFW-Ju~woui=>I+2|BavN-_ZGw@4wMm{{s*GkMI9Lw11F zT_l;0^+(+-*0O8-1lYv1dme`)kU6 z!|hm{_rd_c#+~JpkUoa{;35WFS9q3H_!mB_fFQ(1Y{OSV5r5ewv1^C)%s2F2-Dx5+ zVH{<4tG9LO?_bXmKJ^2zg^W6Ojh*r2e-V(j3IsJas>nGoWcO{6o4P=;Bl35WMd%Lz^izF}S89#T&-k~ou`#w5=3ojpCfb&-Bp+-u zKOZ=Ns@V7?uY{aE-Qf;95n!jdJuY~)-!+qeJt1b!ih~qY&p8{mB0K~FgF@3Jdlil( z!m=U(svBy-J~&`>*9ollS@)FYi8MnP#dfC&czIkX7!#ZylFKe}h6Cq*qgqg#wdGlx zwd6&asv|cF`PEg0S{H{9>hw(?T+#Ai~72=*`4z{BsH?Yr2Q@@) zvNdlG(Jsr@q)O=4?xjI1i#{0~uCFRY%1m0)H2p|Pm^Z#<2`=G=v+WigXENE);m#L6 zantGtIOjq(u0aghd${;?M5;-kg0^ZC z3FryCEEEAe9?aHTCnQu*ch84F>T_(iVm@6N(C2Q!=xbq%10a!_wa=ULHMQt3b>%DP zW8M`VKN7^2oy%Aoz($Shbb-kI8o0~E+BO_zVQjZ{ld9dd$FyKgY~j)JW>KSOmI`?4 z#^}(6^634j0XM)nd_GVhkOic8Dgc5>gqmt0^Md&d!nZ?nxP=@FF&pj@qc{k&kEVY@ zhhR&VkxQp5@ZIT(>Lk*^!=h^{O$Pj}!&`vn!3KJTehVsS922#84?@qq2TQ-7zdMo@ zZxvs2ysXnMdGiQnD{tweBzxQaJVUW ze*54~tl^f#j+fJx*M~8oOY-}MB_S>@a^uiypsX`QT5pTpcw!X05g@9li8etoW&AX= z=19v8awh~Q0D|38#|vX})trIo66y3^zQS4=ZX@-S;3Ur3a;3F{(Ztujb!S^NdY{!r~4f)`Lzw0!yuGI-2l%9tW?@2GUw|*m{75v zHaqM3f{>P7|J2WoXIjr6Z=0HhDW|2OSj#YXRmmlzIeLj)*I@2>5zS@VsjI+VC&mtrjFR^E2@A^@Uyr3VSa?vS;Ze`UwF= zWJ(ki$UzagfyKVCHM|vdqi25l{+Z_J(vEuEx=-yWjvapA1I1L3!i@uW@~bXGhsafi zii1s)z{#Ci9(KXxvmYGA%4qpNW%NArwP?+@*O6imcwA{M9J8W5JE19ghYota@2wA` zTD)VGLncBf?Cjm13k}r5L-p)m?9Lr!n`q8;v>9{NL32tL=iKt0r@jO7aR!;UIj!bKvr(eXU-1 z8BU8}hC6b2EI9Hp}-haGd|v_1Z#?HyHET40aU^lSq?Y0@Ak|r3DDbKK~^XCM6Ba zXr1K;DqhN8tu$U#uLJIa?^;}jO$6wyC5Arko#%XW39C`Bz~%vw+9O@D-N#~wQ34*- z-=pkwUymy>N4fIdb!kOKCL&%Uz^aE1|R8F{Fj_KIVz}#oQU8?PN;z&T|D?P?~Hp z3sTck0*D&N1gs-m!1X7!j2rsa__NZ5-JSf?j%EdQ`cJ^7LXs ztDjePNUx0DIqwgTY8lHAc&}MbDu-|HiqF0I3M3U+t}IKZ$E{NAutuecDLr)B+^#ZQ zOT4tSzf8oAXs|bgGU^GWnWcVXGrxr%t-_wImM z5ntCsY6#IIMvn?0Qb6LnHiX$$|2-OW?x>m=uc8r~!Pef3h9#`+45s7th^4ohN3hx5 zFPow>V+pOTBZ+)yLF>X#-#>QSy0imxt%;_LZd{slZlZ)u^rS@RLcc)~R5yU=?C#so zd=Gd8`2f5~&S$KZ*!|*E@+96WQ%A#*+=MoXogh!@2SZ;5Z2k7L#$KKtp)^9 z?W5$PUE8%W8%Uve4lT+#n%!-&snDh5skNu|2KrXVK-h{{mK;Y&KbcehT&BQNaBL%T zktTbMp1Ud%uU^EU7Z6Fg88m^g2B!%`F*`n}h0V=vIFU|{!Er3nN~N8RDTT5n@tQ?0 zwi^m9(-T3G2R-tZn$s}-6e+aF_UHRqW_lTm z4h$#d7Xp3KnxDS+(xYA436EPJ#=i(jIL*`8IPjuKI=pu0HTmvP>k^l}1Ho2RJ1-9# zhb|R}%l>YRK_Vj66HdDoC6MGh+dQRb0i?Lqgd|RS>X~EPoHKKEr`FL(>z=NGF3o;T zxjarWHjqLN5A#Hm%QYnEy^I*!3r@dSF}JH(we}|1vtAb*%Y3zRX%o2$y#a$`^&xk8 z0K}wSm~(#N{Cp~gra=ET=jCY+&1yn(Uc9|9Ygq3dic?L~SuXDgz)oQ*YkO`qGLWku zODYqJ=vuz<{OvO~zNb%+Ts|%noU?!}bw4Id9=Cv6w$^DmK>d$%vBhgYn%N1#l2e9^ z=9TW|X#mI{jI2OpKp-nll5E^j{RQrpsHda2-mb#@{py*Ho594P^#+UMCISUMQ`cUO zxY~A2IOVAx^_UQ+L%0n7EZifXS7p8Qv-eI>=^YZhtR(3QS>1V(AAX{H>h%aFgNcD} zy+BKd80U}34W?nWM#iq|6e_e~T|oHFuu-W~&C(k9tx+h~RZ8R;cS+nAlN^t6WVf`} zsrQ&V+xPp%S>40FBHQWU!U}utM4i48Tt2!igpT5^d~#PaXA5#+c1HVXy(dPJgKlkj z|H33Oej?1l9~Z^^>D!;Ca%uiC|Hd&`^-gF^bl{%dZ8dy(?7>4hArMlG{l;J{Kzw4{ ze<&~%i}4gnrEId;Q+X!4Vmvf zUuB0gj@kRDeKs4mz;AS*_@tBV2B)RJW{->G_hkQP=+B)wnrRpk4V8f1(SLAT*RJ= z7`cVtfUSm@e7_vb9K$zn3G(oEcU)tR?=CZkFZQ8={Di4Y-9SKf{!}RM!iZLQ=b_=r z1xuEX6Dsz*h@6bQpxQ`99ZVZHtQpjz~6FL&36y`-qF^ z45;s7WACn7U>HS2;$G-6yzz5P{xciNH0gS#%p?tk$sxO=y12chso#wdqFuU>r+ice zLWU;@YzLi?`=Y9jSR>s;YFAzra5Qhm5#+KkvJ;0amJgl@2ZMK?g~1{l1H$+4`t)-A z-`Dr^4Q~JRJ(tqt(t(>x{8j=fUkuu0aQ#>VUEPPHJ0!I3?2IB?)O;Reo3mE?>tuQZ z*YzDKW)ebzliKv5S7Z&_q5-md5+rC=-s@bxFI)FhWl!I6ZN3ztXoqcXdG%e9IcNI82_hhcb}5yHI#?4=Q!9*UiXAS zW)9a+Ms_m+Z=^&Y$>cJJW=);m?DZQcqu0a^d^;%M-9W&634cRWG14i0(9mW$zHzg{ zx8tjQ$Tbphog^IGK+k7Imct6$N_mv^HCDqYQF8DGxk6suO zZYq33gtz**?xbMk?GU!agNOXAmivVRLk8qDdc0LOJW$=HwD5*KU8m7Qm3h&Owpz?L z+r`)0q~e1--68JJ4-yW0osZR?RzNGEM}C!QF*Y=?&7H){z@BrzSAmm`GHARIL62h( zu7oDKg-`hDdm%N%rGxmG(@sFelq_<)#vZ~*9f4QUs*%E?gf10p*E)=zbJccBs=t8- zAXO8pYx6|{qwM3j+=$ZK_rgL-qN=^^M^UJKC|#f9dI#Kl$N&UKr6v3}8U%IL|F~E) z1WJ&VY>Hut5cish=oKcZ-Opwlr`@+0A2FxD&EZl#nsTGGdeHnCkh^`hg$ZFp8AgrV zNh7-wJj0I}uI|oz+#nQ7Pl^*1^58503jt+05Pe%UN#vss=0KKv`dEB^Yp1RXGMSl* z+Ayzv(F@w@a5z`0zT6fZ)!!E(#x&OUU|FN)rJ2%O0G6|>`L4mve2lE#`EX1fP;TMV zIduAtFA9lKJ)erAZZ4W2&6GbQ&)Zyh9RjKkIjr$8sB%I(bgx{oCkp;MWru?-;}^IS zB??^Q;NYQ8CEGdDQZ)pXdipdl zT8@$|8jpva2+}^!UXx4aV<{qLUafzVC@v0S5o*U1FoZ2|pg_6Vdp#9FFpj)n#eeO! z=%??+-9(pW$i@Lc6$lnV){jL8q#6m-#3NAWL(*8q;WfT{#<8S+DwMCbE{9Y@(tA|= zU8UPPq*J`jOTUPe3gHgcK)f3^Ce*@YE;&FekgV&mKq&@NcF+N*R7wH zn!#pqL$9HKqQq`{#$ZEn|}+ z!%f8M21S?czH9ClM4}4n4M4CV?sNy=zbe1|9oHI4NxNVse<0qhIO&ivknP@67P+yH!m;-8`1i&F!(MmSp(;N46 zZ9mpI#YxOn98snm`g`3;lQ;g$ZOxW$QXv?_-ZTVK#e&n9X++d3!)j-iPjt44NR66T z^(drCQzJ`j9E$^-J6QM`+WkYR|J=Ovc;Drt)S-x|SOyx5w!JbfO)-ETf_)cvL2_Uo zJdY*%aJd%j%z-Gt37o;OEh1lo;)tb%xf!6?IzwRr)&NDr)EzACw~*6uFk!ZLtmN3! zKYAAa%6#)OT)ePw8pwPz^zy*44`wkW2Y74&z%yVsq89T6&$f-w+SEn|J7!#XYtR>=AHqb*p7H-U6y`a}ZA~W6@+N(kNS+o#7$vso{IbYldRo ze-S{9>}WtdK9Q#rxr9TdSm}wU<)21+?EkcmPpqqZ^KM~b;oI+jU-{LnC~Ohy^3&vV z^@Y|=LloP~Y20(O&NGGUW1+#$9W~WjgWD|)YKB2Pqw1hE50wW)phVNv(^}#ik7{V2 zVwxrf<03*(aYP%NACcx1e7PZ&VrUHG!&+IF$m0sn>O`Mw=4}XBn^qn z?aDv`Yv9-6Qpw?WOXM=`2abX~e)@L*61ri|YMadi;d`C8 zpK@X2oG5Tv^(1(3W$`iY(PYOLWzNkO4$&gc2%OXKr<>p3E8hY)pQ#;L{k1qF#Sjxl zf?{1Q9g46wpsmj^aDgM4H5KV?gC&%v|Hj<2&$?3~mq?@Zvann;PhPVpocybPq^3>} zf`h4SfAB^R_8W!q0;W71T|cw02<W=T5<+ z-$V_|K7Mc0bl2DOW!No@usAu?O4Gs6O<3%3eCV&a-`_th?EUA!r@faS)vJZR z8s`#!&r9~#FI?C#g({x<&Tv>3bmxsHgUdk+aHa;S4ZP9gVtpkAJ~kZmVS^T1u5jl< zspm76dNnGRJJgis$cVAbl0YKHRJbFI+^Pic)p3x7(?;l3Jpeg52bnX_1lq^us_^SLf zqIHvmVSBI7eb{AKeI28<$~9ERn2|fmN-yirJ`BCCzU&*+O7&iQ z*p}=kG3c|-%-#1etLpe+qPNgxig)^{Ur?#0YQ9J$y>okZnM;~}>a|C;ob>@t?BJ4% zjp0!xMP5TtBqVNk(#c}s&A4g{?zv_-F)?~gno;H*%-!AFHWt!v z+XufB(7yS@$bK{b3!~crECaRMpBD%842XQF*Xl%a(OWlYJY7zaCTzXR&(4tZdSu4} za7{nHfG?E}oUGxHSO*~cR%4Ign&HQW6#)X>i;Tyv22>$VZ+JDt|AW}7x1nx@F#xmL zvAV3eLc;54!CgwIB;Nn_Sv{cZwt&b80Jv7nbBAFmXcCN3u{rQ|l3}9fPv4w$g{zBi z#T0oz_93AkJ62vajeAolGU+L{$+XHMv%n9fO=p_Yd>TW22jOPAq*8OAeg7!iP;6| z^86H#8l3Se_>Y-O{e2!}sDPXN|n8@Efrf(C2)7-)`X%> za6g_-%Zh6P7S4TqOEtXl#oTKWFf zWRfG4VJI90J$riFtc|eMMh=N0@U$e^I!{oS%Of>woVZTuieV)%Wi6F!N6og13t3vj z-lY9i&$FO0uh#9_E$R|F5=2k&Sr~6SHi^gzTdjke=%XOzY zl-CXCkX|0l$E!!z1mF?}vkk}^TY7CQm?G4d|1F&+CtBK-p0e0xC%L>|VR3E~8SQD2aP+oNBca>_jyL0|T3ap{C+rjnQ*8xFg?yb6(cBIUH;C0R!EEJp5-ZEkVg89GuK}!Nhkp8Q6nnb*y3aLh{z&v`nSQ}S zT3ImKiS0v14!jZZdoWWI<26A?i4T@)hJiaj%FS9Q&snO?BnoPw8TV?xwy_&y;RD3! zI=7q!ew=n7h*xYR56l1ls9Te_$g@JZ*nRYNri=fZ%3n|7UHYN=z_2%XAzb_+O8M6+xhsb+kWPEA$6{a`+ivydeLoB&!^=88-VEqM-4|=&|#w=(`Bt4 zwj@Y2IKO|`T29qPa_pKgr;fLrhtru*THFtm8*u~o|3ISq`z=u%) zt{)UirXX@}QV@};M=E>pyt!P{AS#U578p61bz@)1<5|_ClDi5I!%T$goo8>t!9?}_ z#{r3H7p+M4VtPNR@z)(-{3mT^x3r(&9j)?K*T(c@9?$skikJdP;#T{gz74wsu7TeF z`grFBZtl1@iokOmP_uhRTy`I=IOx$_cKiht&J)M2;UA9UK3U(!NEA5FJ)ALFtnP5U zveP>af(k@W&G)nqpvn__`qp=hXW)QV5J2fGs~Zkny}!~h^D? z!1cO4U~W{A-H^eExuJoeZ%m)|uiSGVo10(C*;oIhZRd4JOmqM4hS_kR=axa)ug-<~ z7o0t|m#Ok+f7v+y=9m4)&rpu%_gTM6RzkPqpqrO|wU(_ZK=MS)4HcW>TbH$DJ5v;m zT9rRhAbFoT(E6#~6X*w>3i4U>`AhTiS$9GccGcm|7K3g>wEbJgn07WS& zNt8%C69s0@57=BcyMkmdj1WE!%OBzOAUpwoU{f2;%1s38Ghp*U0DtUgnM?Yy?4x@l zj+v2xF}$xlTaFaObr^Kp7U~1ixe?3cIboB6Fy>I*&*E^sS2` zx^9|#^Ra@btU|inD$3bY+V)#@($`%YS}9%RQ6{phxTG`bXW+;_%V=_hDNjO^2mE4% zBB&4i@k!jF;ef}74y`B|TQc4`YOt;Gd7g3N9mi8wi+`*5^TF9ao-HKbS@QSwv_Cif z`RmrNUpy~=&Gmcg_=bu+b@R?uYWl*Lm@5IoVXuZ*$(avx&u?5Qs(31?5}Mb&x%72@ zS9cY@M3)!bBK0QH%5Wu_;$CK!zL6<~2$&26rG}8+d9GU*T5^0!%@6c;gWfrImVEhS)Y*cQ`-7lbClhyd=E|kj@8r^HSuje^{Rux1oqes} ze+j7_dqr$eir@tS!x-q!nA^q}13mRCk$NnzAJ%oQTLh+OXIN2~WnkR4Qb=`=T$*8{ zQQ2H_sRXBOJ=T?Duhse-|G*beuS$3YdiJQ)_#1Y&@JGbtm+x!pBU@vTu#RsmnMfl7pB+o zC0p|CHt|UZ zudY^!d4;bgc|2gT{?wXucB;h0KnY1PRtBR(JOV>3^6G-cdJ|CZV6^UoNyfx7PY+D? z#0qrEqRbQ{=?DGZ8lorM00Wr@a-=|d25>YZ-0fNK3inZd>MG)p2R@>A(^OC5|mC zAbloCpb7<~P7oH=ee#Q4u-HRDVrVUg(iNg?UlzElzVrG-9b&&-UeSp7UU0wEgm+Q~ z#D5n7RseK}NHzoYWD-Y(S-$x;dzF19aJf?3jZpCD|Hq#CA!Cq~7-7KYjn+ z{mm5x*)$0tgV<3YtZ@kvtk-)aZP!6!uWn!6AgH+iVMYKWRM)^8oPt6_RD z`m|iaUs@6z(jxdLsD(7_usr6*26^k~sB(K~(_{{b z)KZ`{cJGFHN|dW@-EDCSarbO9Ym^U0VJsmGP58TPL|f*qS3ON4C_E>oCHz$~wdjvp zzmiid){|GAfy$`duQ(a0-k~3E=OA}5LH|ZJI(M{=v^HK9yUk5Gdpw+%h!?_HURfG` z#Nl%C3w(JdNmh@V8unKa;XYO&fIT)Ii-7%xW3oqP`%W+^g2=+8PK`{N>(TeS2(bg_$Jo!${ zSUS{q&qTFwDg=U*(RnVJT8cL)&i0^X9FI`N@YS&Z%Z2rjd|*j9yZZIH-$ykYMsgZX#w~;& z!@T@AfDi7dhP3{F{rRuj+@pN1EyAup@l!nmlfARpb$5J4{i9`es%I6y*lsI6^!9K> zLqYAGs>76?Yi2bKw&|NLAg@~1tUZUk{)g#TfguK>^%2=?qXFC~SbnhAQ1Mn|6FH;X z>>))nQIT3H(PtUU4b9@RSj6Ql(Mp!^M^hJJ0TmmG$k7Qehz2;~sU82v%M3+h9X+*A zf33#?D>z1~ap$MEhw{x6*m2CBwGKCbzZts9p*gYNLM!Fu_RJX=IE|5fpg-y#quSiTtsDuLue7JDmABhka=?>f0#l{18AZiFxf_)MbWVJePF=UtW4|^MWG7O?{t$j8rESPPN4DBiJ`&crg9hCoz}u99*&3_WAw>oVZiw!R8BYeL~7NeVkjT z1L4pt?sK19>4{7t<3_>m97*ZsxG_bh}C0C;(+~~9^)(k z1abj-EO;*i1H~FJ5I8I;4CpW8iG@Calx-)3;c>c>p-nbF(robNOVWw#8-v9O7q*FT z9mJADq{J%J8m5*N$r46bGmN(|+`Byd|J9ht16;{gr10e14jGlY_+9z{5ahE*2oAZj zs=Aa0>?+-yz;8o#nAA%n_v|M9!$W}pfHM&>2>?p)8?wu4x}(J6n1YWTFSLlHN44Rqo?D-ekcBo;+Lv3~lF?-sbOl2uLuiJZHa->~MzQk7;ER>5MOMCH*u_g~)-;%ySPLuw_W$XJg{zd|ZvI$NW-R7no7Jq3(c_lj{;iS(_Q zd?U_UER!8iMpAeqkL)lO14Z3aAe`jvz(6Q&&9+Opf>-LH@uh3?H zv!Z?fQUCPqj!AX3MLeDddT!Pd6U{W>+kQsGT^UM0oz~QQHt+1zR7nwz2WM&f42Vp zY++&c^!Kof3pao4#Fu?#?ohY7<8UZMV{!O$v0M}(2Rn$EWpJVZ)c^I^ZP6LN>t~mp z9?4lX%MKa8o^Uo!E?iqQt`Ec|d3r66-ceKX{p{Ia>*S_pFIQ2b{p;lAZLYsDcTbur*~Q5{An60+vZf-xxt ztY1x10IhHPwgjmB#gz`8MQdX4I}dcImI^AEil0uIL2A!)uTT zh~(Y5eCpv1Auwsg14!7XoQPF9odLu+?geaXG{(Np{>4jKxvi}|jOz2rrJ5vyGOO&q zcuqN1RUWCCRK@*Qeq-Ucc31F63jRlNlOlaL9o=2p`M%!pLDNJjXMFhu8UW~*AWS(a z4l9jVt%+j5J&u8g)X@nKYfhS{Xm)>3-+AQN*W=Gt&$;!yd3x!0EbH4Z3xAFL{=M_+ zpWhcgJ$iBc)yCGha8;%rz?<7^A`x5R=uvvlU&QN_?aA8=J!HK3d=rJPzk3mB;w8i} z>{!Ho@%Ez#0CKj}d&?9HpIjcXr}6|($IA<;>}%xDI@=BA6&L z`xa)zD=%)aos8uGB;6&(ur*vX=-97X(p5`Ac|)fJKh`kBp5SkA%q3MrNs47u>Mv$5 zJV`nVDHo}EPd8WHD0jwYBs*i?Aw?)*l%{m6#|y-g9GH5FIK++~TH16sajF;a(KQeEjXQSB zCi|xbx~Fi7<_yd*4H1;uJ!Neq(>3h6`(P)B&eb(cPL%r1#Ig2nUY}P1(2|G=@bKnY z9VMO|`d(G`bNs&eHPV#}|CD@`uB`xsPAQhSL0MRl(ipC-J>otec?GH|?0=E`I#aLM z%2sd|I#gkqowt;Tk+r2Afz#STpWzC;s4MOT&<1lx9x2wwZ1&oGd3)IgZI6v0sU={G z>!X&v=Kq!c_>l+svT)Sp&bpaHYm%i{oP5klu{6s&&cx1l4<(JH^&M>D#SNiS;RQE~ zK^%0x?WEK3+fA1SzBb=%YP5vt&b05ioab>dKfu4iWJ7!3r=uVKh_QYBDc|3E?ugq3 zlLtQT8QETzDEmN>RWp*h@?V=tIQ3sYOj%fnG@q{m_`O|IuBy?Ep9kMMW3f7H7l2lg zyLqFDQ34Ri4mS`0ywvWvJ;MvKW?i%aM0Z6*Lf4tp+KR&Tlt^8yBLE6@oJ@xv09Vgi z1#Qy<*4vDZ7>;vfC4Ha?CT<3Q=Ej^c`7o)UUbDYe;Ij*+FE{`?p*3U6+c;{$Ot1rU ze(aja^%B;Z(|jrZttg_oo=f2Yc)>$|=k||1f|PK$DxA)0A>Ike2wS9Dy%-57+%tHV zDlNwTUIs{qS}3EKb+m_V|dAQHFT%v%ncm3^;!YI)eZj1@h#DI^d=4kZtZQQ32oEwZ#?*sOganqe9|24TcKfr zoJ$Z{XQjsJNV8o7__OaYAgBA#&?OHI{J!pvY9-;&8QU|yDU`DPCKoR+{F3(c(WZre ze*1yD{Mo|Gg->6$#g?1z6s%IadQ?e!k^J&o>qd2aMr;~a5;IvU@$i)NXc>s?mZ;_Yxnv!3#I8VZD0L%EUe(Kuo)Vh)WJ%5GHq(m!obuC zX_8o7_E2r%x~K!$Ae5stlol>tXM@sXEMnOKJ!szVoGkeVdzvLH1|n?MCoM-t+)bH2 z!DlhpeCr=8_3x?E3#VyP5tq4{h1%md8NeE*A<_NTsMxi(bDu$PQ3i~N0)NO`# z1Ud&E<%!lO;*l0$xpi@KlY*oTxp1=34dUz`(;1tl&hXkR8a6`0o8t^qF(^57iZ;U zQ8ej^3ZHA3;acsWzG@#&QLjS?5=4Y>F{{Fu3{p_(7kC>AF+-3XENAip{`U{`|LF>86-f_`k%1^U4@8ORP%Goy zqY_tC9b@V=R_`fH%4LCOMr2+j%NRlsnL=e%^6ZbKql(XOi6ppG$_*cTolkw(2UW4S zy+FU`qIdue7|bc{)j#FvAMa$5UM9-&#xSFvgTWX%mYm+O#Cn!1F^`3V5#+ zt_ENRt53R&3XZSfMIZk=CLkbBV@V&SNIt8Z_0x^{>i}ccBG)q<72BK5)4vd7m;)QG zFv9!A-SV8@Km!_W;n>B21=)zA4<_MhlDk^?Pv5b4H`l<}f4y(UayN~s1$}w$40Zu7 zMIvKC|7@AbD_i5bVejifc3E3Qs$@Ir+-)1Hnp~qIIROnn4;{l0^HuYm@8Er6-@1w3 z=;MK^!Rlrfk8K!@{u2J}<*gGvTNV}`EquRf)^f3V<~95Z+i2)6XV&lD{te!Xjn9XQ z#!1ZW1)t7^jh9@?f2yC~l8XIpe09FpAErA3o^C&N>VmBk#)!X(-5z_$!|_J()BMd* zVTaTH{L*tW1Ax!0Pox~psON1Z z8A0UXq=fl|_9{858qlEjS%BoLR~UOa5vhG(1}rCF{vXFU&znFBo+Ky|uehYU`^3Qr ziA`S2+RK}oO4*1U28gkiJg%em$C@RUje!2PEIGau2{zz7LVbcw0MD#d^Sfw83VM}x&;5AQ~znGtu`f_o;P}F!p2oHd1SI47Y7c^NBh6c3F8(5w~3zG_lgpfdv_(2Th=tK=dqV2M+>@;o){o<+igY$QqOQ z--BLWT?o6;dUw~t!av`CJ(hnz($??fhQVDSR}bFl*>qj=Y46bL7lZLJLR&H>fhoc+ zVgs$C`fyJiAzz8ZGB}q*2Aiu~fXe-KSdv73s2pR{(-7C8EmmMy-=% z0KAF?no8@}z_slgb>);A$b!soCe)72X?^}`A5=;7nu-AlBH~$vCOpy}J0K^17 z??V_kv8x-8W6FD^$tC2d!JI6pyNb$EaBmA#pV5|&`f^=2L`(h7W?5JLKa9O+SX1fu z_q$U`LVzR$Odv2J1PBPY6N-SS2~A4SPz3}{D3PYpR4g+l)Br(457;PDMMXdbWi(VN zK@r3@I)Vs;y^lB+PMrTazw^7!b)M^a@@l`xi+x?6d#!uj_gdfY&JsJwjPV?FmPRGW z{Z+v8MnSAL2Hf}%6&#Z-KKYMJJD9AH_8Jb*Oru*4Y6%ymF;8<|*KQX!ZVcHD%<&d9 zX-29$?4!xewVJIcpw!wUDK3Lr)_3yEuK$OxC9u4wwfGY>E;;?z=5hc}PeO$dJ6}xy zojdhuZ|}(BobEu!;(ItUUMpi^) zEgF^Z`XUr3Fjms$h6=^89Dy1@U0y%2UhJ>;Ty`z)A^@8K-o2~D}P&UUoXX2O! z$^gj}!}qD7%h5{SS{r}5Ec&7c1q#*iygP~xMd}j6pZ?cb)sxT2mxaG`XVad2x1!5lR*{i0!sN9Q6%3` zbeL}eEb-4myalU8R2RUH3K2pTI!KhHDCd_hQp1zrN`MumsH_?>D_TLCwTSWe61fNo zCdWd#g17Ht)kIN>R0KqsgRwg8zm*C!q1$VjX{!jDWVva!jM(O)!wT^>kRQc~M>6O7 z%${uKh8Oc~v7b6;7yuSm+EJed2P!4j6cp%*3ZzEXL5kTP5iq&(ZPeQ&0p&h7RSh|9 zE;=uf_Xr=&U2fo0YbBwtkb1Q@4Jnb@hjHQd_$IbJow5J|;}t}3YVr0^`m zn0(DQWoi_6VAUzjf}CMZC9#^@O4U*1DXXf2zlZc|Jebxvdhx@;FOP37fBF8+D&*#m z&8ctStZucP@t^t?P9?O%VQO+O8NZF3qV2@-r|Lzo+(4 zNqCGB=fo!)nfS5&ugBfFX~(l_J|NrA<$x6SPEZ4)1DbH0L0HCK&};HfyLHMVOh%tS z=p;sfNS760x+vVXHscC2E#p1`d$89W5vv%*yd3yP?_oa)ZmWm@9uBx9Dl=r$C)*}V zal-^6iXu;9k_)f~J~VO@M;@*rPup0@<{y|P#p->|u z;=rV+Uq%7Vp`t#J)cZbqkgdxNX2{z5`fagZuKH+DboeCS1%~3rQytl-aPb|qokou_FH=y6}eZa59aCem|H|54rEgB zvSPf+rrYXYeaiPVtP=%TPHQXp=s>b%z)3~Pz4Xj%s2&9UaXWO4F)jOuHa?dp3N&7^ z@8tCdL5PiyZ`9lE_t<7998dUosk!;;tIFW?~5d<2e+W8Y9b}3 z&ge=g9PpdPZGKN0|2sZ`MLP5tF>O&Y{of@OXu)oRi)#7%#MJ^M^m&wNspMB*kqk+9 zP#8i;{UZ?PUb*9NpPNZ%?>=PpjdokbETvB#ID5S7Mhfq`(d`ghFzp1mJ(KAm0|yA6 zb?QSMVFAY4P}?F91ts7`E?$K*vzd^*++NQly1>ObF>)h+!j$hxa?-AR;q^m{)aI3m z&c~VT8_cI!d{T#ziv7yT_d!7bfEqxs7>0xRS4ME!oT6>4^a_?eU16T^5Q12h83BRI zY@0~9I2X!2`h>L&MC%vyKzyCPcRRcIlA(;3^Q=)L48bi+3us;7sAf9O!ZG` z{PxQcHw)LpPdBc5xZW|>@Pa8hb>Evnd4JOP&1R0n23k=>`(4Zn{W>|-=HYu@TuHS| ze-(7*xOZ$xc+^X=H?1v=RU7N6XXEFz`dx}w)yn~!vc`P1LlL^PZ=FYq9n{k;;jNa* zTPqG;el{?(+6JqJ!crjM+a)ShN5FMnE4H-sCK{<%WV+>usc}&&#E(62*=&GRa;Lua zqGxyw8%Q#4j<}y2<-g{_FP}&Lo9};D%|HnaP=Kn9nE?q=z@TZ0HBg1(lwR6o6oIFh zhj%JYLECz@phN|VI5DKH#(=AJoo};@wVi}N=$|suP*88-*uw?JC+Z3oxi}z?YaPQ% zrZZM-qsmB0Bt01DNr6ImAa&S6kBI{qC{xXBQG*gEuXcf&pT-wt<@~BuX&D&_dZUL_ z!uX4olVKl>iU)3+*1=6?7(Ts3pbmmf9NX7;*YBNb$+}<2p~gH}sNH5#5=`wLIvnOf zX!V9rQ}EaswL5W@?SGHneS9(No;m)iS^z}Ba2$^7V|08Rytnn~&;0z?&K@Vrjmu#A zm9(cy9Yaxn8Zmj|fB}%Q!u$S)tfbc7EH5={UXCnfBAyM_@lu&I@V(*dip=S76 zL9JX*o8jGe62Irf#ADBVIm0B~936Y(amVF&1OosjdEnGp{Q!rcrC-NGTowS?)u6*b zf~IjB$S?+}L>)Z$mtU|^0O--=0L9NBrl<@L zY%Y>49#HUWHYXRy59>tjoWC$hr6+F}n}z|HW1a_+qOU{AxV3B=%|8-D-{D@XOFryA z8Q?-|54h7yGpItYL;s1QZl&F|dIk)a{{cwkSWrxlS98Qa;=jq1oVp=$qCzvofa_2i zddS(*oX#;DD9o(Q##R))QAg8)&(Z-|tefmzzop}SO;b3QpRpRx6OxK2!cGrz?>n1w zb^ORg&>_;jW01E^6d+8DMP)E786kpW6uxLhQEMv|PEIO#3&FUp-SU&~^4^Ck{laV8 zdkC1hBFj-muWX>858dzIUt?K$XnahtL_URs8`Ai_5%)9%Nfv+V0u4_**MZz=n57{lW;*cRQTgtP6=bC@f)g&g(yL; z1wbP$UO{O>DE!@fv-qV-OA#~lo%cS>5p2>}F$OMxNL;c3<1u_f@r4Ity47zxu@pjB z+AHq{YVoVuY`e0{4IBGzvbR`U$L)8`(nMj*nRMwXJk@ww{OO@Bzq#4GyNV+bU(6#a>-}k9>72i9%o$3BT zP!0wmWY0{xuNG-&uj?0^$`B4UH5jz}iiq9{G5~ScLvJjoy((Klpuor2)G?^syDriE z?c{V+E{A%0&v&~O7To7{TE5$^5RQ0ky-4j;E)AJRD=M`Y7=A?_+Yci|k7U5gHHI>0Vn2ONCaU(D`zEFE3} zNBPD4uhR5?r|kbc52tfBH?_yrB}wZImAIP9!nTm(J-=paFp~NIfLs`Jmt9g6|1y|GaCaH`+%;n z@$6nb*$V}Mww}shTde5_-gCmMRX!R$eA|HU^B^80$iEzTVPvI2G#uLU=IdHh^qR@+ zF(Kl;XyPZ|vF)u+Yehr5C&qnCUIlp~)pU{YZVPAU)V9zVW{An=3dfggrHWl&AAUVo zRIQD;n27M(s+MdfG%%rFJLX|{c0RafCTY|=<;I--fy3L*?4l%J*H4U1BBuGY0kKUQ z)z_XSX}CE+AB)QnE^b}aDR{J67BrHGA>9m(XlYv^#))El#UW5wb|CX6fQ(sDnX^!x zHy9stRC6t;u5rG@nzAZzHqn0G#X^m0+fds@hfv z?ni0qF1-s&&hu!h{nGX<9YYc#HKjT({9JkJLby{vwIhp5dW&o8VvVQ~Rt21W1c6L? zdfxFO^0GQk^^H+SimcXf#?@P~nh0Hb=}@Uni)Okp3!css;5aPdj8U{vZU$O&_bruR z1km|+e&bV$t&R9heRb*QK*rb4I3RYasW(AE!z}nDWJ|N zOyw3tgnDMSk2FoGbd%n*h0};;4sUI?yV|E@dPX`J8;6+N-6@G9u^OmP`mqou)y4?V zoCsjEZAFT<#q%KXzxb+L?Ed$^Je-2lo9j~D zDn}W%5+fChZar1hc&qK;c{EtrozO6CD?B~)asA?O{rH3P$^Q6X5B^5`()>A@e7gol zVu<)O_Oq4t`9Qpzr0B`FPR_)bi!T1xeB3cf3&3Vd zs67vCvk;1AWBgwcWo*m#i?u)FcOv$sljF=AmP5;6LhJ5|Myq-5xBgcqfo4@pMhM2n zOz_l%Um8nKswau8RgeT`{=Eg58|`7MqV=JS1eInxrP-{^N}r_^LpxHSS3i0GermQcf9hrS03hnS+uB0je z!p0vzD}srSn>fr?!z%~wMcX~%dwRd3M1!Np&EiBFTy;^NC|w(t5!iR|D0co2;thTp zcN?s0+$DKPCpvE){OWZWM2$13n~x!YYe_s>vHT}%Jm z=$sLpnylzt=)^6Y>KxAw|06r((RNS8ZRK?!tACI&G4DC>ByDh_S}}XD9~|iG6)9$v zq(rxL85n4uMM62DHHC1Jb}j6wLRro4!t+{rJqsw5LkfC+fwzBsrh7&u>0L&E20#t? z03|Kjux1Z?X|Ez#-cHCnNqAlBQho_$NL6U6*9H6Go__QWLRj;O=@OSMsKP39kCxs( zO7d?wgjL=zT=&R2D0;Uo*H(q6f`>@$p{c4pF$O`A8f zZ7&lQ3ZgbMvFa?mjkd#MGZe-A(D6Y1_&$-W*m)_r$?1eh;Xe*5=+@WOAz;PhoQ=3z z#1BKB!t;)#5A|2+bfPjV%I1Zld4}Md;wE;uZlF2~kWl1AFF&7XcL1vMlka#e-N_dE zImJ14EV^qZO1dpO2IVk_g9ti7(n459a=bRkPvTob%KPy0i7S+vkk-R< z-Bjsdt?cg8}>6CmV?Y`jRMCfBvolRY9mhi8jA5b)H*DZiRi zr5Ny7HX9B3DURt)&-spDcQQiE%S0ElrKVg8bAd;f{;^1>{!+J^Zj1BO_w9R(Lc3X{y zB9hp4m63vpc2U;jP%p{df|T=kJb1cx|G}=Ng%jweh_*Hb?`f6|glanTdc`DK)S629 zd`*Q_1@=vP%84|dp4r+L_xGNb*A8!egW_XY?1mKCuyR8gNxx>{nYnXBr6@~Bs9r)&TlxQt^hpE+1zOy@Qoj|CH zueJn91ueHgwkt+6h#8zhL#Ehg7U_G5w4BgB-zUqn~wD;M7+r3+1{8)!5|5~A^CqMn7 zAmqXJ*}f=TZKOkFl$U1oTU_)#c+~8%?VqK|)h&X&*zNm+lSo_Rt7`=)VWeP5U6bpF z!pc^_p*7V5=xlN9qA6$$g^FixyJ6%)Xc5f(0Yc6FvaV%mzhktJW^@AS$z$$(^y#Td zXnxV}N%m1$^#?grX}}H}XMa)IJ;tq-?A;ZVG2rG$P4p1BcV_Aadw{RYw|K|EKC|Xd z^yVX;*k;-ITU29`ZpC8dsWVORl%IU(cRH)~-`Bf&rFad-@Bx4>Ve7)dpr`EyLmnsQ zs7-U2;1x|h=*7E+gMUx;ivelldu?oWY6AkOo-}QhJI$e)z1SXYN~|IWC)!p6$s{mV z%5PA72wtC0GJcD^zP$W-`9t@v()NctBQ^>b-kz^VBvpCWdrv?8{c(j}3Mu$wE>i4m zlCf#C2@=vDj#MZ6L{~-3pFbqm_71T-cwvAaQ|cGuOW*Oj&=t3!YxC&)p*PN7AOHAZ zajR+idGVJAVOwtBI$b*1n0G@kShlKN`*^KO56AEfici&Kwy1HC3a zcav==qiq2%Jvg1@A5f)ql(+LphPvd)$E2C9a*Q+S`I!=94+q2oGh^W>%`}0Kk?nN~ zDn4tC?m~=6A&C=}vZDeRS>u2!2ZtBCdX2qy8<6ESZjBdd ztJ_)(-6Lf`$;Lj_K0Huxi-pHc5qsEt)=$36X#=YM(d$o^GIDYjvd}!^c+D7eW*AV@ z3bwnkts3}fWs43l0LQ7BDU>1U=Ao;&2yub;u0Dj+fR5~K?sih!y5kD~C)t@kx*zYA zaREQ+*@D$o9r#;1kzfC;e{=R9}fO_{a4aUkChfT&b;p57`WwtC6eREhlwIr z>cVtQVr-S3!kt*CvJ@NQ-GNr~r2_tArnDN6e{xv4(fQ_Z#?_?02-@k4(m77xz9^3u zkIHY?6#Vw<-2+Oyhgbete*EZ~zfoaj>cFrYAKw~+nGW$loiccO+J6p^9RM%GKH%Tg z*{QRmaDu~3M<5lg$b(DpnWB{d=Txa77G%Hlw1Ti3Vo2w&`g(8-VOhfU1ega^9AIJh zO8$aw%*j_0SJ;-)N8M9#@QnE=>&!xKucfB+Mi}_L^Tn&oHCh@G+9oF`J$s^x^U8;Z zOt2(N4AhE53_)vJ1Q0VzhGlS`E=^q<=jAqJj>$rE*d?p6W4{UT;$m0fHZ#)1XgnQV z;>n&6w6yQ9&jMF(9GAMb-0Q1D*sc!{Nr5kAFP@PN}Wd^`=usU^Wo!zkGKGs`^KtZI9KKkBYL{E08)gIz?`S z#p{E{-f+@e=um&5$W_ccYAXErOujXt$-pm5ZJZLdlcy!$dC!H1iVS9N9tsR?f;vea z$P;$>s#=EM_Fh8QN0~fIY2LT$%;<&`bIZbO9}kp0mbdg!o^9i8!W3Rfe0{*;%hqE^t`)igH|w~Cj2G1>7S}mPl&{xXDlVN)i~moG{$E$n zP?!VJE%HWV+|{U_sD@0>Jwk@M=_ALp#OQIDo9@TJwy?ORt8qtjy>w{X3nW8T*`~Zo zlrhqCRLV5YDDXX{y$+P67r{Ja<6TZx2sL?$vgzp|o4YwLjtNa$p0!6NA1koZv5d;E zq&B57h0>)3(;Dhz&cPxajMX%j!>p0+&n$j>tIEb)BcYC4nvJhRMPf2!tuWoP-k8@B z0)Ep!5x0H)R{{eS76(_5@l{GN-#6}7L*QhPw*!P)Gtt%0O6o)NB(my29k{x+xYA*J z5IMU+(fyO}{RC$x4e!UDK(TdPtYfGsiM`^)8Eq&IzGuiA7xxA3h{T-XsClf^#zxhx5}G znOjyyvj+S)Axhi_ERn<=({|4pV}|czp#ne@(>BNg%qn3{cG#q6Gh>f4QA|)C3nRs9 zsJt)0RvcWkpb5#rI&8j&M_>!&2%LcsIY(5U|2}rVtU}sKJe5_TfC#_N- zK9X4!y09;6o4#S8BGJNG;?leToq*1~HMQ*xgXGu`r4MI8%@G9(Ml3_d1H`-&k(z7c z>w-<&^Jgah!dJGzN>(k=L4JZdOcG{sST2$Q*Tuz5%wB~@MP+IOT4dAHA}ZGDya^wT z?pbtUr=X>Kbi}`?$*EZD5ycXYzq_7Y@I1cL+pqXtJP-t{vk6lpZWjfIxrliA4N@W(DO6fAGWV$d4^^q|4bkFpP%+CBFoJVRys`=kYEWiDq3m^BJa$UBQYnOLE z3(3nchBxX}W;n)_vC%T3r;?xUuH?3AHlU@^a;{tlMtq7i{(@3wT{keo9rVCNW_xnM zMR*B9QwI*$)1C;wlF42<-7AQwJ~l|lhE{_ds2iM0Hi|=gf?VL#;RYa6hN@a+Bw{;g z12$lX`TP8k_(vE~?WmWLHoU*CWx-@3+cII9`HFku<&?Dr+7uFmxvl?hX=x=BX7(!^;Un;#^+$Dj!$VA-U zw+KTWNZVZKVTf0DBvU+4lfmInocFri-hJgx5#IZWa^LLc*mZoq69dTA5YlrSbhCx} zs2nt~_EqBRH~Z(*_F$nv8EjP&ewMg4aUikC&&F4dl^Mnz3&-vS7i6{O{KCt4>AEfAU$10eZ zGsEuVg-62}YPkEF8i7~xYA4U%-P_teW-+ar5QvX|ROvhZosRlCJpHY#@!a3MDWZmf zn4R%43dMVI;rG)r6h`vGYAu$5f&)h4YPM>cT%3c<^h^y|0MvxW;vC(4Q!U_$s8=-8 zo$&;nTkDv|@6Mb>2~ffMEh4CcrJH9N)N=AxeDnKnDix4dp1FeDwC|Xn?e7T}$LJ|xlX3U#}YP*M|3{maOO zHZV}p4Xe$>x}f0=cwF?W?F)>Is%|ZxK(A9@w%-V-u2}Rw71P&`6XuZjhPvhkg-O_I zSeInJ9to|1Lb5pFkR#0^MvAH_HnUl9sUbNCvQNsINm1|#e^@e_I${20MPMI5A8^yQ z1Nc-V4__7*s2d6iXdsdA4%tZ^%#Wh>UDHfke@hzCQF|MU#*YWo`HGMN2HQn>C3Vk0 z>rcM_?Cx>$b-h0U$f@iI^BP+9NMcmBPPtE8HNf*kw_V3S;Q%%wMZWJ{-W=WGdLD~^ z8`X!g8ot%JYPlD=G8M;aOpj2qX&_Q!X@t5X<*-{e)-GOiSG%802CT~k{ zzB*GKccRraRz@6dw?T>Sl8{Fki7h!OFpE=4jm{FRsf|E7;u0}Y6SQ%uR=jZ zS&qFRn-ja!0vs^48NdRWwhkEEn>c^Vd%Y-25sE)N0Y*8itb`C|2f6zLf_s>kBPvbY zCVf1045Rz1jXb2lQ-HDNS_q2!Qt(D{R=DR!x75Tv0C6YtVJPgo?$x_73A((+m8pCD z7o~!4dAEN(89()A+WY43p$QtBI+zjEGg8K;&M!WoD|!u~??PtEmACNZq*?tH#XhxVpy9K9j=(nH|=ud5{h# z!+-1NzYq2}xwD7%D%wi4)Iip!Hils&@I2)4Y4O6lCpsExE66xbv5_A0T@iuoSy>>L zKWn1mhTM>6U7q>?Eaw<;mPI~V<9T9Z-{}uY2Va3(=*2L~X2bVC1hv39v#bo1Z;&i$Vwq zrqboQms7$l&h_8foJVWi5al{}ksImI5QI2_HtF1`6;`A_rWJhk^6HIQDV*^KWHW z&xveWR~(M+Pq#3p_E<=!x;4W2kMp8IPbK4mTRrk)X#Kh<_sT_n6g^wJ%PW>TTSY-q zBT-N&nHK*ue(%J0I(f|qFSSL6!fX@oVr&}w4_{&fQ(K$vwk8$7gbydR5z|p9a#8yI zb|+o0zLY2Td|oMR{8e_+YT>aDj3H6@tfOkMwmK5lt^50ERjg-72D1ir-zX#S~?<MNv==n;RbD*kc(V3lp*lF&VvCB1I|^%Z|UzH0m>wS>T?TpE)N_M{(X2 zo;zAvRFp?aVKYx%S7K|NTP^+%s^|YtU45LXS*Vb_dNE6|Ag17EyKA+Jz=Ki#xHSL&>U4iB)&-JG0LN)rN>)D5< z^+!fy9JTtZzX!G4EdKr|=eEIdD8$Uaq)Tv-3CBG}PZA%-?4D}KS2v>@=6DyCCe)3grf9d4Q7uual7BZ@(i|=p?FwP{P%%stUM^Fk2 ziEMUJbX$;@B^+zoIdL@8gMfi#o)l+VtlX1Qzn!J$^6I@55i~L+i9Ai|Qe|=U>0n$9rUTtBPA#<6ondeK@n8Jj+S0#hZoQFR>N|k^DV) zen%`L$B%6ikTqKR;ccT5yW2{eCo<*W1R$~s;+g^UMvr6PKGmK7XgU}3#OK^Et9CQ1 z{w|9kkl)vp=z$-Y-U9Qqg!$LH@Lr($eGhZF?pkE8775YxrpJuYcaSb)F%F z@B;Hvw+N|a6X6CNT@PyS24Xb|h0SbzG}ZnWl#R&FfL5ggg+|=iht!!CK!_H4x1xMh z7HQSm>Qt1WyXl?*tV7~tfV9bt@8CwjLsPr1TPGq@Py~_|%e{l(#iRyM*4x4ZaJo!r ziR=(-$R_jz%NF9Mtr={0zQklB@&aj1bH8yDS_~d9CD$;Z-O@n$9iJSoyOuh%X}B$R z7^=A~$H~+}mS8*-Nlo54w2u9+zWYa7nv?B}@Y6vLm1mZ?HHbO!u|G@MLmesPdLA4^ zU_XN6Xq6&nY!C&z^{0NcW_-2>{X=Q6LAgH6oL&aH*dX;-0ez7&g=&mg%I4X&Kvlgv zb%dIdaZn!J+viI0kqyTN6Tn1e zCfhREB_&Jm3K*<-w+d2e+&%kfSCW5@l$p*2+svud4vgqQvm*fDH^Nvqs_cd=L&)() zrrPSR+Mqi(+l8bpe0M)LUH2@I7)S`Q56St9htTlPR3rHA*Cd&S)b}; zo|o2GKHm{E&#KrxUD+u4e&WfGf#inVdb$5teSoYn=Fy&({_`Ov7Rk*fyudIU=;_pP z!fz+@X(L%u^@ z+b~9nQ`K+>SJObFq9=GxiM2jd2F+0nSO6I~2bU2!1B1t^W`y+UV7*cbqWTes$=%U) z2Sm$9{gRKMRvxT;87Ql)!wsZj21;;>z4QP4YH+>qZtn4ZD|DSXYEB>4Z#3vwUKsEE zv7e2Q*H_udTrNmgKR3ZY3saVy41e-n-W%<>^h|X=N|EAKvmhgonIQp*VoC~Q$rl{tm*Mgg z6gfeQB*T%;QhV0=9m)8mLB8<0Fy?C}Il<&q@`JRT6CJ)84K)OHyxIZebPqV74l)1) zAcTsVk^B&pU_v5jBSt%%Raw>W7ip0|xM1d3Bw!nf1NckA*S2@!KdzB(T}yg&PkH|3 zZ?vR?zkl9%u%_t|yz*#(cledb`)TbeiRyZM#h%^QCDWITz*ZfVa)Aw>g~6!QS9EMP zMHzrs`l7fyNzzE7bR$X{hf|V~Dj{#LYu)0DOil;Jr39te@8$;NgwMAa!4KUIJzh82 ze0BZ>%oG)-1)XE2brsX7RD-jt!D=d%y>#Y6PH^evZSKc>7fjF_W@hwA*Phh_BVjs0 zXxFw7RIcY9-lrz*0|0pRnL}P26Sc+S_k;AP{lgFd`jv5Omj|boQ-^}+kU?%gI}J&q z>V?XZVzWZrG(fhwqyHks0Nh9FukNLdlxG11-Xd=>E7Ovsd9VoVI!63r3XJC6}`met1c*+o-D;u5^^z}WBKC&`($KwWeed&$gKkd0$+wzzUg{!AT zP?Ho%q?j6&b0-QFYG(_+bzo~lv!re~775-zm#PiFe=8R<1l1?YXxm*#Ss_G}91c8{ zAM=g^1tpu1poSh6D(sC~hj8nF8jSf6>UpF6=A-scH4fxks|FC;QVn4g$*%7 zxz!GoBza0kxc&wtC_&}2C&IcBJSDSY&dTDL;x#+M`=FU6r_n;O-F9|DUq#YtIw72*L)42o3Hkx^L0Z8}7bJ>-B|t zw%B4gHpCP=x>`D6Rmd>FY7@PDTn*Lch@ydCKnmGHgx<(+qFtEwRPagH@Rk&{C*}wI z(c#MmNUviLZJ)F3uZ~ckPN{5dN$+0%E?kks@L$Jy(aUp8(FLwP*))H_Z}WMzE|k|n zZk;<~)3emruU2Lpj2PPH@0RBp)#@M!m}BkW@_jj6J5iJ-!P^Ofom4Mab>2wmIs z!zMT(QqE(UP6ZhNA@sfozO2}M8~FaoFl}O`k!Q>qbot%err+=%D;_A%ew%*S);GVl zXZ6Vg%4bosrrQN&KRE?aquCCG4WdrC+DvsBcrvhrSbY)P1oT7Ld~mfIOwF&rW@beI zMzIA{`CBAu%Q+Z9#l4U66o8MyD4~FAF`G#_u5cn{fglt{dYpK^%fobGoxoU#p+{CX z^rXkYj79_*$SexfTuDqD1hb^LaPl-`To9sqMO$D=@Ew<^@$$~W0$so* zd>~7cVjC-~lsa5dBWr}YL@gP#T}LADAY!XPY)V2^2T-hX=wW^5OgpnIb%TE9=YLY8 zow!f_{y4GfckfD*FG)V5fq~6fDoZgN2qe+w2aZ&o=lD?@vnRcD->K{8BSuJs2JwTJ z5Vb4kpXFK@9%_DEasPbtxw!byE1I+Bhjv|Idabnz*?U-nQr~(FR9@1bJY9b2$oljT zzm)d!4wQIpUh$>tvh*^c(f6{r{qsfj=s4Z4r&IQ>HD+&ni(>N@zK`r2>wXYEVNu46 z*%1l8C~>sC89LQ@Bg;tcxO;O=E}eo@DR7VV#HJi9vE%4SWdOh-$`}gs3wKvo^=1)u zG{2hc50ob*jjpl%m#>XA69oUet^c2AlKP2=IL{C*so7EGkW3GY>!mA_pi)gvNUvn8 z@?|DUk%X7R6qX7HO)SHs>n72dYr#%)LFJ%CSpEZ=2W!@CTOH7b(uCE)Ax5l=uuQc! zQ`>;I=3R@;H(`bl@evWZdnErRVo>euRANqLBODHa$du~{)DqT+??Fte}7yQm)geo6dc42 zd%R_&Wc5P|hA)==y(z-@kzSF<7InJ#ksrGuL^LyJh`qPgZd~)rT=~rVe|~9+^{IT< z>wi5UAndPTvXTR&xbFa`#zfV`qGwb%U2KmZ1_7bf66_y{P|(` zKY#7}{e8#ofIX6;SLV6OQ_o#&Y4dp+Y`Z%i^`pp6N+18Zjk>7iMd*f=+|fgOgb@|H zzaKl)*nZvY0W?X?RZE{G9(#EvR^?l8F^3J;HKnPp4*?sB|<28XKj zWts|8P@RngF@PcH!`=ldkoC6LP~l)Vga(q>VW5?W3fciQ@Sw*OxS7oa^%U+r8(5m! z2Sl~T93joZ26hY)$-CV@!5-}UI5)UBElwY3d)dotx~HdDN`WhL&^R?@-Rh~C)4l)9 zo;>e$GYoNM{D?EWMVOHD)==0W#3AD<`$iUWVz-q1f@cNv|4;o)RQ2~&`cT}d)!Lc* z5Np+YxTwBEcWc{=;8@nFv|{ur05aLuzX6*@>H|16fKe*N(dJYMn#L;5#Ok=sSvZ0N zwZmP5mCTG1oJZ1%mk6QVkvE4PfB(sI`Ng&z-Dmrjzg{UToKHBod^2ReXZ84Z`(=xF zU4nDE^&=QmZRGm!n7ItT@x4FmFi9SXsC5-J?)+?wJ&3w*>*>-q5elq z#fRj1C>62GXu6yR^UPW4IWG7>Ffk-zkfKsPU zG018Xny*WOu?EM0?pIa2~6{M>gl~_M{7M}c`PkuWre`{VDVjKq?eD+$*????-zj5L3yeiV@x${5SzZUcZ3(DCMD#Av8iYVlVGO9|1kLTGEf0?so1Ao&&Z3#nOdhogLp z>oXOG?=T+HrR#36fu$zxvdySl%VsA3XRqia9(Rl2uH)u0R%SrGwdX zVYgqN-GAc5*JtE0xsBb~Mcx?SBJT*oeg%5j`?}Hc9@QL0rVAomEq;2;F$#aYY&JJ8 zZqev^B>d>(59kK)`lGl(e~&3BEJSko^2;0J9(7v4B5UpHn=fn5*fg|%8~17NII=8^ zO1b*t*>cG3(T*&|ZRN7*VrGMX+UFLvsTg}Cg!MhVzuDF7u=F=;Fob)nWA5z*F4q@a zl3QCr)VaS4;U}t!n)oxQ^x>jS7wmu0)Uy79;{e??YUa1VDVQ#rwfdH7L9yF|QXaD?n>6F8@{2!0j!hCU z8`f2|d}%B{%53h?kw3guP@4(Qz=UR)5dPf+0 z)dO!e#Z&T=KPAVUxxBgONJr1W(SmG$yGTk&K*|DnDmDE3p}&@Pr3T$0N1A`tocn~m z(taDZvN5jN=%1v?^Ncu;yM0rKZ!mZY{jVFJ$3?WIOzH|qI{G$y%T!~fxUxq%+%}6j_}|#+ljnjCPnNCo`6h(M8#!L3lYldf*%GW0U?M6l0Xc5 z8%Se+0ZUzZpr;55YAIqtGJBl?;EaKFiQcd=VRKqx%S zSI8Fu$rDjLhh3B)Tcnq2zGWnAkJK6%3Ru;nO7@qQqINFN=CuEQ!tZFsledx`7aEUvKMV`~ zsGhrPu1RRN;rO>_k1pQ3{9;e|9D?lugF1OqF`|2r-}Jn@x3n!bG5Yv}cjN^QNw&7S zY-pT_ZBDm92?#Yj9N$k{wvSn}aX+guUZ=LDg?$rfLNO4B!bdBf&+1)nOlStlx$a=) z{zu^M{(W{^b&#T(GM;Jb~wyB1i(iDwzG7r?dRDDb_Q2~IRp&qt0gE;-T{g zs`*Q76alTC$92Z5XL7k#AkR&qGKduK8G?9dYCu%7e_)KP8gHqrdQ{=lF2Jaqg9IXMFqXu{MZ@{=%-(|YaB@m{T7 z(-CLPx2WSq0VdTQo&O}wgxFQIx6WK_Ibzje!}k^T8@Z&M-Trp&eRcdX>c&^*-l69{ z7P`3Je$#g6mEcugH(~2goLuQ#9dO3+vFt)F{&?el;6e1AnIVt<6O?<#e(4V)H@W#w zBlIQ*#KGxFPFEfoXhO!@?;PBgp4=-u`=H$=FnNoZ?f+f`ME8keAt`3CkYn+lX&czF zYyT3wzd!iKZR*}X2P#_pmHz%~krk2l4^GERsmEPv^Z%^zx~m`Srl31A{h!eI0K%9Z zx_8EXN5ucd*_lQqxxfAXW)u(!6%kAg5e>%xht#YMisXQXW~QbFPN`X2P0Pm3poog* zENZoJBDG1)%4QsLwwx+$+FEAWXv1#UwRea1S?m9t=UHd1v)1tyzTk!H>vi3~`}$qq z@23TCn2fAk%;;rWg&D$%^y(6J$ZG_GW;(asHXlFLW$@2$11nL++; zNK7;nn`N`Jq1>h&LpynBx9b4~Xmv%wIB9?bFGEMjvAef<&8jU7A_s21d4?Gx`%?y` z{^$p4QNe3tHNK$rdEfeccWZLA=Ys9-ZQZkae8AT8{)zW<9CMFxxUXq6)Uq((cTO5U zS}Ns{py&X6#Zb`;zUYNpRFQXZY9%wh@TAN0_y6YCz1efXjj(uR8lVug=}T=u6VbQ_ zEM74}OQ6yEbFxvR6nPJ1CUB=9amW}<(ncG=g)kwt2wWXr3xVdilS)i3!$~U0vj*8`MY<)LWtSQR}KJvaczF@ zx5-h?NzU<8;ScKDB6h5oJ3?Dbqm_y6f;lp)&z6LBk74(*34AX&0TZKKFxI?JG&jXJ zG;46MqJek<(PpRJ0|Hn8z8u-~iUje4fH16jEyU&tI)KbZ9#51&8uBM*0p`j-ts1Z1 zyS=nva{b#`O!S|VPd9)GT;q7CuCz}Y(?L+nc6=PzC-3Phr3uj}L+8D=3)}U~_+z2x zcPv)jS$NI5G+Y~4SqFr}SBc@SXc2H?cB1U!#S5?Yev6NfKuC#ll9{|aaILn<>Z}WX z=&9=O?dx6>Q67pujN*_sA=tJm+Nmv+zIx%<>S#hmPk_;bbd-LKk)$5wvCGOU#hW0& zf^HwU7J@JW$V~)TI&s+LH>~L*jfLooZW@UndzH-K#gfD^nL){QAuyl_*gB=v)DosL zKV5Y0?uYYZ*c-cto)(3Ty=t!P2bGwOOJqK0pEdvN&rkM$cm0Aq@*KE*DzSLkTn{2} z9G&5S32wVEF4*YmU`TH6tIvpItj_rH>jT4?n#=EJKw?;Psae=D{-9jFSXtj(#19jK zt%?QHX|XXW9WWR-4l!NY(Av&vdeT?7^zmDk>Q=DI2YZ5grVNR_UDNTUXW6~abxL~C zO$QRsQC&#m+MxhXGb`+A0m(RysmXkI6wnZ{BvQ0XJYQ`aL$waS>-0vD+5vOF*-$%E z$%{M~tCzEu9R2ii@z`pueI>_C!}LaW43Wze><9Z2TeNoO4&5BjQszqMaz&)#96*%s z*(Q^ORoBmy)ecfCVxM;>=8^@ZOvU?$r@Su;oQK$`fUH2%IbF3Q`2Jpyd zuJm97RdbMy)55--c!IR$-pQoJI!4BP$H+9T?Fk%;^NM0XLCiTdNPRSuI3Mt5UYp*< zvz{%EFCF?fNs58A(oC0uVDH(c9j0fBME)UH1_@=I2*+!HU?{3nAViSC3)AipucepGJ)CMwGkOC?ND;?%>wM$x8Un^v-+1^}VU!az)`TFsKB+8*4WaT&BAPhb9k4yp|9NzX4Jejs(a2`)q+c5jC+Z}oS-XG2S>p2_ny zdyK(uHWTAo;IMc?wdLB_(~CUoVcGu^wYMJ=!N&EWDPgUHU{*KlOOgCh$}TTQ z?$`>5KH56?A6<2h>cL+LT`H2}_U5j>kycvltt@mI-`GAn%a&I4eNZ}r;0>?=8l1fk zWkRPz5bIW((RAPK8a}3Dn1efsg$wB<*lYZJ!zC+R{}eH=>G>?G!(wkbnnFSwM^0>% zfL0k9`<%rrv+m3j%2-lpufP&)JobPSv1I4CoBLDWPietF{e#X$;psbe7Jyo6*G4p~ zSwjOc^mge&9fCwmeH4h6>7lC$iVKOdssVY_I}2XA#C-YZ^7p&{v=3|S2_x74WvG1n zInMa`^T&?|4R>w&o?v<}x=xl$7z*Dt#U^lQkmD`{2JIZfWg^xQzGuPV03XcBqzL#x zY_C7U6r%^RY|_OB7GMapS;V`ATZd>k5oIB@;ImjLBfj zp+&cz!dyTLS~OfA?5mf`;7h2bHdQBHO9?ChOU|l*Ie5H2f?)|(qc~u|pbwsDF0~{< zJk{+YUwMdi==YBx`$V*4Ye3MDCQ9j3)*6?Y z;?-swXN{-sHs}^HM|RkAUQGP)Q{NxEKe`!%f22ygTI=7NhH$*Uglz5VN-dI6$!O%JBbK5|q5+EyE%c9809s354c5ZYztkXx`}B5-o+YH*u^hjd$v0PTmh6joTKIHjeWb~OAU#|8*jON7^e;1WwovP$*zsNcTcY9ta&p~ z9;z1eEEAUv-Fxi-&Hbrw^H#Q7aMVJ&wDCZXaB_U@nVwOzYW9{y)MKS^=6>14ADs=q zxV*h~xR*6h)b4Z_etlQUOpe=*X$2iLg09&p$KEKlcX6qb*~Y;Qb+rv91Z!4ZmXB)h z7W5s4NWz9d!>9S|>+iqpJQTR<9Qqf{(oPsQXXU?je%AK2^xCKA%jMTLFT0;IedHHx z*@NBF`&WtXmsPF0yD!zv@9H1-KE~lA7AmfW=^ur=)4x2_PK%h>toyocrZWmh=Erj8Z%yfoeuogR=Mp`CAvxoK8$Z8Uc6f0q>-)B>E1(*y~yW42knJFGH; zg9_m+C#Z!ihYu`DJf(CZ6qF0{!5hK|$y7EdqD~p3oo$NuXzeEXnWg%5T->zj_bWPa zPJ+)?N#+8;wyn-m69WvI4Wd`q2UR(=VMqVct`Zu6QkuKG?JB)M2}cHNpPnBqdQRv= zBrBCnh}?*qE46-s*y`wkqM)d8X*sg(G#(x53Z+Zw;|_=o6=U6q5k8v4&wE8p-FY`v z05AuKnH~3qw7?kMlb7@EP&dvPgH>Q!#r~5pAc?8_MBk4B_+0Y{IT`veJ%8Qcvk!L**9m(bRXoX;y!*fNNct| z6=H~&*1o*E>v)?(EOdKMTYE8YZ40;3EaI z!%tzqd!5Y9N5qNc08Edp=VBF<1>aESX6WS(m^R*KogIVGS)U1Bl0T7 z2e;5;8won9&z;eK```i8E~@o4Xc&oJyrB_I%Q1n<%2(|T z7DrXl7T(T0EsX0X0)h3^BIxXmx}Ana^Xe_QybFkX8N@b-r(<(3=4-s?*m>5bwO5`6 z#aG!{!qpOF=Ul#-W>6;c2?i!9E=YtyxfNKQ))mGIl@(;)^!5SAX(xg<*tz?99~m;* zIILJ_Al$20B8x7mjfo*xw>Jx`y@PR_Y`xV&~UaAn> zQyJQ&+l4Wpi6wPnNnT!lyz7k`hd_Rv4=lhwbO4kdtpde>kCS0P^_@+ga`P&@!?w@!H&DnvEiQs9*Gk$-a0t0@R3dL;2`YQHGn?a|8MGb!c7S19>mnIbp&T@xBEp-|^5;-m^G@lIz ze}J@dG(`JJZzLXtMS`}7_U3`H42}D92b!-|p{b#Gx|#k8h$X=Q1r!^5lZxM!h>2L& zOP2{^pZpb7ZLI41Ri%KiYm?l-`w7;21K6ZT+ncCEobN5>CfIi6Ei=Zew%kZ?Y?|DQ z4N(Y-m4L|75lV=Ytj=v)28H;=p55M1$LuZbK$k(OMdmhpvq&Sllm-YMD+X{5iQVFy zBVv^KbnxE9fh;4(g$MaqDAaD|cf6y2Em=^36-W(#>iaWa#S!@Qv14xdAj}iLB((W{ zY*sgVG$+fp6h#@k;E*s9rtkY;zScgab?PO?)K}+(#S45}&Nb%U;}0tr8kaXbby_&L z@}g1C`RyUnQ`4$b5C3uA9@s-a@$tO5-tx2;_j@$m_}fq^^;49ih4R~@>K(|nD=x(c z@w+NduQWbnjEt_R?8;;2qw(0d0*F{?N7idkYfmGjSq5*>1AlNr^Xl1#sb-#*PH7H9vpfr6NL2mxSFtdt;kr2!t7cO9xS;W76>dPAf|*@1E$-!;)7?-c8r5|Gi}md9j=f~V0)qLzpgxe$ zNMLO)MF744h}=r1*}yhxDQyryrH)8p0@}B=wfCq)yuBN$GHe}l>n~60%9pv9`>Gx0 zkVj3AF|SG<6sMb@ZpU&H|Fm!4w=#@Ra`3tIPo)9q%ut}Yl0xTO_4;T_w^_%bkX$wY zKIl=&8Sv}XWAE3JllEO}vuahIK&iCfl~Xjp9*>9e-8x@Hk>Y%}3)-!MBMH~m1BkN& zq7XJfr5A#P)`#i4J0o`&yXS56z_O;QlZ`&CpxOS^_fuN3n+r_C@1AWwP9x3vcL06$ z(au7)(c_G*W>ENN2P|(c2E;tP9Bx0Gf*o~aeW`29S#$l)*XzTfqk+H7@;1K$=>|4L zFmhQ^w|c81U;VGWd2mgof2(66o$zNd56vIpXJI8HkdY}Idi&&!;%&eo(H%Dx!yARp z@t8Uitx$sV*=Bv~`@z7@kZrx$+uQU=?|Je%CK#Ltzy(5yyf8O=Lv!ic_)rQ%1+VUW zWa0j;zoglw`a6#Ux%9xS7jZzU#bLWfGuE&hcml!&jwDU)einvDNC$GJpd4%A{ek-FsJz_OJs!R3HMJgPv=NA567 z(Ff=5uV#01!5~SAz2iJhee^8!;E%1Uwb7=KQp32OXzh2cx}aF|_2U@!oiP%HsYbEK ztV;3FZWNvwwXUTu>Ixfx6euQOZ|%(A)UK{J`l;`a{Znov(6KR~-TqHtAD<=>HVEsr zudRsNnNOlqdUT5MM(2~sL}ni-uv3vNB!V_ByYV%{>!Xa%Lyj=lI+^#CrIHBA*gyX& zd~|T?jw23CFsQZO%o%Vg*<~^9qHzs4nz8&iSMIjE=|cemLnM{du)RDj9cLaCWsrD)27f<}fzEv_p)q#AzZc&*H9x$ZU27&14Cs^xkp|MM-ncn~o(4*Xa-i02k z4{T@$X=gIi0+6N!LS^C*Wr%SGc!ECrq$^>OwAyaeW>V}vQRQqM;4?Wkean&VBTthY zn5LV(k!=H6=_jYSlJ%`YK(26>rNHNymGB-JfT82*KG-~B(w{JZ z3t%(d_y%|p#$n3`$W=6Eey3PfZ4(aoqkF|LHd-*xRY$75k) z5lX$WaZ4H3-iQr#fx5%pjS3PU;f+wxrW$Ut2R75#-h+w7(yUS95H~g^-rQ;cz;8Ie z#a1}{V9^fukVXe+%9JI9odIEAl_KS*zK;){bYp{#O#@biFfD*kl1F1W?=&;8mQ;?p zJQ#rX|6cQ+)DSTI7I14- zeeaY(?Th!~S}!a48ju3@uJ8F_;=Z$_+?6>%7x?u+FVG{6z&44?MqOrn!$*c!huOV9D3`(qS)8|T%geDUIeZwZ zs|SK=ld-`DhVJvleE8Y_<{5>=|(6HKuPO+-JpiF6fvt^6hlCw(HN@dEcH1q)pFB+HTeH_E_-JR zzA1#L+=x|M#M@T3RdmD6bO{EX3Ata7-QcW;69g`M2NI9T62kedZ7mNMs@Et^;@ku1 z&GR>y?`C~D1SBP*DK9hIM4!s!@kAQFGZ8}qq}HHGG+(IBA8A+5@+SUT-}u_u8!@QO zoCy-O#C_G{C%pP_+ri1n%87|H0b%hxGhm}@A;yJ{O^-JFooGpt35uzsck!~ z#s<076*mm6X2cgAPE@FdV~hMQ?&Ms~Z>g@Y)t1MII@aib#M`thUhL|w07`ouX~-^PfW!M6p<3|Z?ZD?-fH z-JyERieaqaTQHb+KSM9-E#1ypfeFRpt0;^$(*8)rZYH5u8op#3dE|2I%L(PV<$`heIbDFE91|^2bq5i# zKvn-j)nElJNe%Y4NCdx)#k5Wxx(SU0}acPpohH8N+Q z`QIgDq9w9^EllYzr{DkEpVQ0SNQlplP49dRv#c&AbmT0MKv*|2suLUWbK`o@`t>#3A!l zD>#(cqPVq(I6X111RTVIjxu?NWfkWa@U$R$nMzk3F2KtcR)B8uy>UP-ngJ*1BY{#H z7-VjAkrup5?|@6HxwRDo+^X-5K&E9G>1!7gnpxPdd&b)Qg=CH%t#W4qAAvBqzooXj zsUB=KjYuH*^wiU_>>#^P!1flH+1os^H3ntK0H*eBP|`9SFKE**C43vi{;GWw4`NM> z+L>E19q7zX0v}7A_qI4AudV`S=+=!Hgs$x+M*B#lw1{ft>pn>!fc}zN05PG)1?9NXAU+!Git(e<#eowi3 z#YT#}FU}#q>i82^Lv0d&rKp>4nB^h3n}00^dv0Re7wy*QN;q1;gj|U(Z|29`fWPAR zi=zb;NeRD(_)oNx=2C?XH1Jo6*!*$gHcv_%G#%;%AY${8`c#%E`q%IStS=3FZ!zTl(4#(T(mE zTFs*|f&j9|AECR*xC^fwu@tDI@*amEmF^bm>ZWT`)>6VW0peIH%KDtLll-*u^;$Gv z^l$xU+PZ$HZyf_-v9$u-+9%s>aY*}cYgwLXy~o_8MAVidrdk)va=_}s^cErNZmtg_ z#)g`Z?gB=LnLM9`P&8JE)C1q9wrxw2T^`(5ns~CaMqIHbzpccraO8djceQE6Qg`#I zxtmW9y~((C(*Ies&Q06D>_5PvoMaE$8hWlXeLSB-|iajx|yObt2`mEZO-hgYS-;1rfScA^b4x8`SoUy6!v-R(Ln*RQ; zTUWxSQw*OFykPqFU#P5|*wl!XZ8f7OPiMz>S zbX@FM{tV)oALp6l!F2kfjCV68WD?Hg2gH4RcU}tr1#C2%^2~3}KaFzkUg?H?n~5TJ zJ@bi<7=@@6e=>e|hJ*Ao#A_XoI2vjc^X1rrE)0^DH%^1W`(9A@uVO;|X#)=?3m(Hu<51l1)yuUj)g5S{UizvQxXda-Z*|yP=x{q zm@WIM@4NkMH(UC#SwJl5^@W&abA7!)D-FL%|30(QVkV`gUT=MzYBF*u#W)k!(g%j> zf|0=Dp-a=<{{$_Gsd6k?n=l1s2h)^Oy+Q~{IAZBdOSM(k*3AzYA7xfFrhKel_xGNM zclP`3J~!`7)LytTlWn->ZC=UwXO*wINZBUUkt8+wAB>4ujJ)fAXtvcNL+oj(2X~>4 zA+*f?@@)Ci@GI)0`-P|zS5#>FY3JsWnMuOsZssHigp{-tOeKw+cE0`;`*K6dJ@wMM z@(t(dv+hkjbNUDw3MA0#G1nV$CO{=Y5nTY~kT#?YtrkXOku-Dyls_(fUdF`H_@PP) z1^WM(bNxJAq0rVVY_++}jdaUbpNBN2SiroV*i|Slr9DUYKJHo3p|je`$%8V|Gwz90 zdkzbrC$973q{MnfN;@$#1f9N`PkMugmTt0F%va-xF|^Re7&=+ zoV#larN>^|fL8C(Um$1@#i;p-sBngo;uObqw1?OA9Pc&`n!p^N>}!3WaeDZV?}CQK z9lt-Wh1VI9_`c-;7%I$dTHbd$zi%utJU!$_&by!bb_l+^aji7xtMchR<~FY#gZ|z! zEPFRZd1aMFA-AF+P&myj5?7E}=1&yQ?N|x{F?Ig<@8aJmP^tl9L~ z{zy{BKi9o~_?@$<3_o@C$B*BZ&cyH7b#X&O*wIT%#tc>2$35im?r7sjK_gDm)4{K8 zK5U@FhZ6-YNnTR#JD^o8+N>cQjA6JTg9HC8Ax#Xid=2eG`m`-0T`(bFE$3;R9@NXi zH*e`I&S>4}T!V$@YqJrLlq?(P9POY#J*K+cA`v?do_n^oz@2BHx*Bf2GmYo#4Q8Ui zaF9BJzfL>3- z_7mUwW0!|^9dsE2LISzB~fND!+KSS!yeoFgva!88K2D zVGzVftX+(`j{||GTdiO&jdvX!aYXY7B&R5&)>gv6Nel*}3rAhamAz_;PF(#$tX1gL zFZ!_wer;xR-RlNzA;8SYQ!2(_xPmemPYTL{eteI;X!%i!ZrS0`T)fCQo^4+Zo^U zlszQIL~Vazdy$l@%}>LdeUhKFhga_sM!-8(@WIvwR?1R!mPhbfa8|-Vh*)Mr+-6By z6rY3(>*MRl)i=%c_MDn^5l(plpc<<(3$|_9YHs_}hUgTZ(=_PieKOg#ECVVigol2Ba$j)i_A2SLV&C>I1A3=Q7X4@#A$8 znazGT!()4BDOpl_5seA@y~)VM#fXa0lkEyQE(9PfzIKjyk5_ zHI<+2?c2b0ISJ(hb~N>*9x?@d-c(gJRMV#vBuzgrvbYr>+?eL5cb2nonInoSu6*O( z8`<~$aucZBWn?;**$?;RkgUuXj*ct#FMpA1x;^}-zMs>sX!1ory}yD0Yzgmjg1cU! zrwMzL{e(E$O>S7<6P-eA)pmmqqO^y}8ZM}YF{dHDZg>$r+J7$%*AfT!-lhoE*8%#D z)X;NItw^jO#;_8H<~I(V;_{*fXLfE5fyECz9-WEFQ$>8hI>`nN#;*}5Pyez;tRGv# zPO>ZPg&zoym#|XN3*T@9<0OZ;ji&m5(wEeT-p!r#Skx6pc*>vXzE{FtV`VshH>o$w zF=5Ie7);nCwB}SVj>WaQQ$=uSeL*%F?umj+16~L(P;xQ2P$*~poj^Sebv?8z7?7jE zB=z%OM`^2)|1A4+!~&}5hOXc;WFtLfk-QZy^v*+*x=8BemqUpf!6#`;H zd47tIwZ-v4%sK-XMrsdLN4HW`DSiTiEC^c@e5Cl1v?UPvnVEaCmg)g1W;i~!H!~sr zP&E941J7Jv#7RHwyXF$1Csviv%V*RRcAQLPRmOVQfG`c(^QE(e;?b1``BglC41{7+wb3>KBLS>1;q>DI8w8hXvLVqQyxVB6Wj*(sMqsp4=yL^Zx1G(6d2LI~NnZsz~bugM) zosFy8b-OtLBsQ^0t86bDAi_ZeCxsbbWDfAPLP-BuCpaIfC-32iP4?Ps#l6uoWbd%vmUoF?%8WC2w6V@# zUWGgq+=0dL8{kI3OG^oCI|a}|xNORG)+{gYVAVE1p59Wv{#f<$@)&aQEoRGJ-~0oH z%K$v$aF-7!iW~D%g^$PEI0flbP040Z8G-a~{ie^mQGvUk5Q90IztoZ{H;Hxb0e&@$ z2PvO`01%!3RM{J@AYnrpN!UxoZ(7xYqLmI8qU)8Hjh5RU;O;2!)Z{=~Htn53^Z`E0Y;P;xgoO_H45ip~{U4pDhPabcHhgKt* zK4QA#Mn-G@_t+z}CJqovprw{D(*o&;z=CC(U2hlY5JFCE=+@Hf?CQ}D#~7KK22I>@ z$UvmRIDtp^+!*WVunC;l?H5~?ef8J5e$0W6WevXtZ-2d|T;sXDWVP>+KIps~A7P2t zf`B#b(7p#B7run{rUoZ~^^D{S8s`2^xhEh}N2eGviHIV*abNX~%JHz!jwIuNxbJtH z5(LXm3Q@{-<{{cfDS_^2h;0qu${*jhl;r*?Sviw0^RQ>0@&;rQqPePW`? zc9Sa)LX_f0w^M1skWY7tGX5;t5XkEl^dJ0w)yY`q##C#k_HRe5^!xMsX)D5h)nv^; z>BZ$W$Bi|sfTL9elGuzN*x;GPxuFd%A_kI$1s&$tE99cdsU5s0_^I269d>pFN~Mma z_E!wbU}z3{=!{E8!2L;6?#NN6=F#Y$Y{CPo)2I&cQ{PW%Q*K<+oAe{u6V*>&g_l@{ zw7yETK{6!;DoJ3W`t$GrA41^g3(qI4U@CXKk8)02a1Q^oRs3envcy5f=!h;qjYZJ6 zb-B8X>qB3`?k$D&i3;7C9v$&eqxYQ+u)RTc@)RMos;h3RY(YnuF(OnAW0vck*%=Cw z11KyXLIeSKw&^r|*yWpSt$4_Efcx(&=5r7NC6A!)H)42HSl65dNIguxOZS#j>dv#K z##!_d>^V{}OqhMVIp4@wr<}m=1{TWqHtJm~L)^e5QI`a{M3#o57cYA8pOf*wn;Lor zc|x!RNRub-T^$Mw+5AENRO;drSras3&1o-xbT;brtBL!~ z_;PmK;g82mlak=wTSGGE*e8Y$Rp0m7U1H^5#g(iiw$@tI_D<|I2-bCji4YQEk%yi% zxHuQ#f$J&68~_2f2W*#~csY8EAje|$DGd`ATZKXC1COEWVhbfDRX0c$q(&9Ps=^wC zu6dy#6}enaQc>L|<2FAE>o-eM)J1!m+$poh{#(CqQ_9?Uq(>K`bR{^(0hIB@$GXx8 ztD`Oj@z^y959Hxy6i`DFXT=e>wiKcDxJ+MY+*1g6HgTh=o|XxrEo|WQ z@((hX*5M8ENZB1N43gR>>PqbD@))kIve1Fs65?5^FYVDPSfxYL6B~@1+gVVXcCpdS zVrRYgnI*n8PfunZ8>g}U{pIe#L-~Ci&IT$qccOD4j6IAb$g8@c=rlheyYo~T9puf;vAm~ zd-I+4%Y{@yx0VhxU|wIeOvdR_&z2 zNiXfQGQP!OZT`7yGr0|0IO%J&kdZv;c6S}Jd>~?aIP_4$qPceQa9q)YN4VnL2*KBs zkiUvOx*ym;^tUHs?%!mG&B&EcTigGr`_leLR_T`K#{eU?V4`RsY@f6HNhFsyZw=i$ zE(}dE2c0R?##TVw^~jVXq09)N7@`O5t93aO;8U#P2lc`BcEL|iSJhy^&NZ{KI-Nz} zw{npKSaSm=2n=h-2l~R`XJP=CP^)6!2*6+7n4Q@XCzKhRi+IPrb zf6Fu>#@S_lkE*aUK44LTax6=E@C25>IZ$?^k4ZJ+MVb2&Ttz$Ex3Gf-OeRKEqu&JxAZ`S zt^=}nM{#L`2I~=n;Nvnp0gDWdDO1!4Ll%DO`#QzZEdW?Z{|+6`wcG*MieKe>&9{`4 zPHF<^xmXHX4~Pwl+HBu`i^ht8X`sMEeOd^ICs2S14k8UI9Bt5@UX-`?FF(KDW&hT8 zyXU6ksyO8YoM5dNce>=1_GvfQ!^Tf?2zQXSUBz5Xx(+p-7{NB~Uxr4+1{)c|ZwH=ntg>f-dc{M5PTJncnw*-dcE z96Qif3oo7-N#e1s3Aau=Z^M<&{vl#Qbx5d_YUpf&r7>m2A=*xuIgGZFW&ttB%=WCF zP3l>VT}dONHUdI7djD@l4tELBS)!~?2w|PLN`^2KiJ5Ae&InkTo{sjv zM%E=CO?kLbFpuraTMv_$Ev1*;#b%wCEZ2cGWqlv*&Gy&1`f)CJlxIAAXCzd8vmdQU z*Yq3__Kkt9%3L`plw`xTS9yqf71g(cN6EcD{$XgbY2um5jE&@2pKqHrg zXtdj`9vcY8fuU$Jeu7gb(rmNG^<-A2y$TFPlH>>p8c}6^gBfk3wUUQR@mM1eM?MBw zw-iFnu{fkbaubf$#G^)l@)20#8w1jfqWS0e04NHH1}>Mu)*JEwKS~Z&0V(*;gE#=b z3sOX(nWHA*acIV`o~6rmgE62UFzb_x{RUdMQW~bR6pr92@9yV~AX25NPm3be(JwgB~I>*VkYKzk~^gYQh={om_apT*(O#FH$ zl*P;*l#XC=C)5aT(nKPl2ig9`nd*RHM$DOK$L{RxG1KRlZVX#=aN1Rkr+*;%m~}&m zUv=fBK$iTA%cub!WgAKxPeF)Igt~;1>Z;prPserX6Jy8z3P0Qb^{Oz$EwnqT^0I18sHm`QF8-H=a?6e%GQaf+u2e zcOP$hch(<$Z+O|?huVKUY9D&~%P+x<-T}BoYZ)HV22u}6&;)FtR;*D|d%Uuh;B!#K z%hS556t=ZT`{BC5h+wSd_1l;|SV^=D@1fCZfmlxl+St9*5{h+UpxVf6KxMtSi7jdJ z)7!Br!Wi(*e{wE5N~yHhxqH9;=|^+ZmXQh*?(H&xkh)IHwC!RuMr_Au??+hjK#%lH zQ@Iq=`Hahvim5$iaIPH(HyBZy11QvEFfNlyk4f(W;lFnYK7b2ybGL6QBOu7UWvO>? z>A0}0<32M6cm=ohirEaKcFV_=#8Y*68j?!k#Ihd_o-8xz3 z;|wnj?D1#NTS*K(i7T1W#{9Q_)2G}B8h-Z?z4yh?0z-WeEUQPFKNM*oMw7L4@NJ#U z1iot2s?4Rl`SnYqE!=i!dEerbw1HiSkxefX-+cEPk91UAwW;_s{Nd0p?TVJ)e*Nv~ znc*K>M=o6bb^q->y>Jf~bg;;W=W=LmLN!X}lODj#g~G zOp8$){5K)Uq4lhex8<6+#W%5@{2s|hdzyOcqhNue7deX{BgJz*2wUoeQK*`6%V++v z9f^PMuHXB+l_42{?VOhwm$?)yO%Va*8E6wd348uMVEr4w@t;L!_LjOyqAm9XvqHph6T!7`P z32mN3LlA|;Vu1bxFuR$vacXKn?OZEGn}lYE9>?ZcD(d5fibZp0fKN=|>b{F_{Kx+6 zs-W9vb?S%yE)H_Fi+i~jTRo%K)b1OB#t<~?>Ch^JvQ(XM1c_eCPu^^_N&3_b%rtm{ zIIv03pY?0#zxz3_ew}wicxeWyPVfR&B@Iq47S1wR0!fnUIS(l{0^>>oMjWe~HCaWG zl{prFUHWb7Fgb@AwdGeeJgACYM5O&y2Fhj!m1 zs#0EC{~lfRRQt!O;?KtBncn2rjEbJfAN{Z)VJSjKHE1>6{xr>aiDw83mgfp$Jb?)T zq&}czB5{P;SHjeg>n+GfoF*}rj=2fv%3%$$HoNm|FDo{!q2~>qSfi84*4ZLQfYpvV zvBT#|I?uc$0c8$z!t9Y0y~pads(V}(7@I|4X=0Z)L;FWY2Kr>7weFc-N!$WoBSB#2 zeeu56u5ipc!ny>nzCw$&$41Dj7*>=%lD>hi8t8$Qn;W(rr%`cT{3Z3i3sp_<7+oq> z77U%799~!8wjipFG14L+vqgOt+KO!4_DeI{1;Z6)jLY#H97IUsU(6E1jxYsT{g%m= zB56FrAV*tWry*ch4%sf*0yLhtCdS6)2$R8}@w@9Z!9D6)2}Z(=k8%v39k$uHPLg~} zy_6AZ%_7v(6_FtLXYcGmX^1XF#u7AFdd1HKRR?+h`d;}Av9xnn$KdD|z|kRMdTWoP zQS1A`Y2DKe+Fy_~rZGbH@(MX2B_tjCVP6eZ0ZtLM%{; zE;;($=bS8tsc1@TIp4zG1PHSMCC~hdw=P>lDVJM9XtL-0U#=ZW|NQO2#asWpy!!gr zA1Cx9-|kJAdU%(g?7Gj%usMk`f$?5(++6eBNTp~lfixy8@^>Hi?h#EI<_g*44FiNJ zfl`;c)NOti0Trp0JWVFn1anX(Mjc|hz|a_GhZ=3c)y|o{JB}*F<96o1If|CX*F8Y z0W#GCFfhvCWIFQ_xXbHmD8OW-DM(ejMk2~wUfH@B`r)HNrUu?}3f2fLc&74ojE#;L z*>6Vxmb`i^QLRub>-Q1&X_ul-YYYWk*)4%%!0=!7e9$J?tg52W#Y_Y{{YVegx2GHI zmBmAiJiw}9LO96Kb!&%ZlrnBG_{?(`$IiyCz>?dg7KG_kxdekQSIKnuA_w2iFe!TC5Uy}KS^MkkFoO&Wm0 z7x=umY-n8{8X=9lP}Y*sJec$}k}>?*s(PdDcA8xhkx|8b|3`mN(>^DEe}6wezioe( zCncx$zw7_~%ag-D-ke&Mbo-3s!xi4q*$I?37Ql1t5%*< z9Owf=`Es4%kk*8R;@aFSF+4l3tE*tQqk`&g2nOjm)?%B*qUNi48WjzV6&vH<}v0pK$zkS zpm3-J%!$3#0Mj@f{1G_%Ta*qCl(O8kHx5yRHwjT^n|}qT`zEKp=@Q z4oHoZAz3fiRR#9sW4SBmN%j*2j)%U#6L);`{GnS@4Oa^uIGx`9`PUEseEy*j{L%CK zj~r`3Q2)BCSAMMfks&>IVloZ<)W)~GLJKP8%V@}hkx#6qoShDPGreEQyRfv6dO+^W%0iMv(H6ZO;Ou0Y(g=;dDgd~l!*PQhUELr(~c_#no;r##ju%44xQTN_? zXn45d8u|uS8<3MJNm8h5wFN3#lz0^J7|U~Xf~ldQjz-YjG*4meSR6!$+I;2?#TBW@R2N>9nj z9Au2=TgMD;WO{ws6|eWYAh=K~S}!d|O~Bfipi3X{$Q374Wfx6UkLz+(TfCsM^XyBj z6Ziv{@T8cZ{kc^Db&ET;(E3Rdv7Zc4=ewFr@j|mU`Q4#}@3~Od9@1Mg1pOAw!;_9r z`whHo5enn#0xpEsqk3=F`oL8|Vf~l@J}{>J*L;(2Ywwa~hupp4R8~^8*l}^q3_J2! zQkC3m|wPCI6a&4&G=GEwXBW^NOPF%^Y z)e4|^aYGR!D(jINBs!9h{%sW|j%u%r6ZI7i;8)WD1<+Jvn{qjn^ju_?mS4^aYsIE0 zPP&AfCO;wNrd`K(IuiPOhiSzuk(y~4;tt-zBKUNwjF8~`c7QxSG)YJxR^ZWjU@73C zvJW?Yl`r)m2x8~DG!c9~%|b*MUwFf_z+`sxJ~M`6Z7G;nnYu7=1mBPI$;a94 zQq(9I>fYKJKN)$VATj5i;|M8`rsWxw^q_kOMkWD`(4ygREkz2`#fi#cj^K1wv4FbT zE|4Jb&rPP_ZD74}VNfe|O~LSn`?>hCXAl2Zdv6-n)cNlJu8f2bViE#`7%&L|0|d+j z0-{YqfB-?mD3cn(ARuZOq-d=sAt1A1G~iG`KtQU1SV7T-Q9x8?hpI&c>RjjA*47hy z&i(W<^JS4UUw&CtnF~TXkRb#2UMP>GO~G5Bz-oNK(S8XTPsL=_y6L_Fv(&S%W7Y zZvgyOgS$R-J>wTHeBs;L%ESV(@cDSAB`h2IYP;(n+E^oIHq#OTfyix`oYldjRgWijOJ0}Fz`=~8+yBTk`Q_!-y)g*` zCl2hk{Zz7EezULHhnwr+9a{%hHKpMh%*$4fj0~A|zlDzM0a112r4wx6jFLD1P-xij z#+@G3)~Zq{CKMooUXcd~5f0~#^AvkCZH%^wgnplDCf!Ps*?q}7dm4OQokbPRG9IF z@9*hccf7v;R}xf@sQ{f6*mo@{#h7;eC00Gx`J)&`_^xnsW-12(p}KibNEDA{AdU0Xy8#ljm4XI>@x5>1nhTwM|@GfG1mLbU5?Be10N-vj}_hXh0?RuWm z`u$b=HR}xX1}~E1^c^}N!& z6hrY=WhBr6)AA6UOL@70!acOC^bv&3Ei=Whp_-n0H9|*t=#+ZPs-Z7@f0cK++lezfh^6N5AAkKybFS*#3f_x9fpQNy6j+da^0sKK zKQgubz?GJJ7eY7QG1|P<@mq0u4a5LKAmBcJOV}ZXfXqAc?1HRm)E3SUTTu210S9h` zUfB2Z!`~0?J@far_m68C&!;$vhFe*`IacJa@GLw=1RI;MV@%*Hn9K<>f=<8Kr|^A{ z_cWcFbnTxSa2+8V-bEpus>)*!lT zHnY~9gF1z8%JkK;fc4zg@U+6w}` z^$ApMh&iIZ=nIbEN$jm~5P~aK2`1creFCBi7;lez!QW^Xw@@!`h#nHzIjbB*ER@f+&^}up2++1?%^4+~ZoBi-hOW_y3f2Q|- ziQi0DvCmrowMIdZBEaXjoC3Oh>oFuTM*7ej>;l5-ZI})Xd8U}VN@k$-F$xtnb|r&7 z9SfM^teABKRYUBAzpW8bML4p1qH9vm->*v4sB&D83-Q2jYV)muy#Bbl6 zz!`nm9fJr$ZbOaTMTXk!k9Y!rx|V?Orw`omOK@ZJXt@W}Ov+p2QIx-5X@CA4ZV1vi zbDMWZF2uCN8cHROW9Mx&gG(>ozP|bywbw45;q7_BYfZ%dPex$p*#@oe%fGrhDZ_d_ zpWr30>UA&v6~CdOwjfC}UJK8ez~o);8r(lHUc50MHr^;4&!>#rvQ@R9oW$29WhT0hMH?TvgnIy#jvE9D^8s4t<;-tLV|H%xZ!FAZ$<*O`eZ+$$ZZl@xg$v^F3r$* zbT2qB#Dd7{>w^j~os{`*in`boBBpfBf>HY=qt_90H=FSfMv5dNg4GtP>P39S%_C~K;%83Mf-WyDlTYO4!~ATLA+ z3NKE~nox!8eVsiHIG?zzxA#smu5ymO@VbBQ_4k(|o?SR|X~)A;8_>iWUfUHGu<2%O z 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 g!}q@+wEx5@{}12)#LfCIc Date: Sat, 25 Jan 2025 21:55:53 +0530 Subject: [PATCH 2/2] Renames service and expands Docker configuration Updates the service name to 'InstaVoice' and introduces multiple server services to enhance scalability. Modifies GPU resource allocation to use all available devices and adds an NGINX service for reverse proxy capabilities. Simplifies the structure for better management of the API and UI services. --- docker/gpu/docker-compose.yml | 77 ++++++++++++++++++++++++---------- docker/gpu/nginx.conf | 78 +++++++++++++++++++++++++++++++++++ setup.sh | 31 ++++++++++++++ 3 files changed, 165 insertions(+), 21 deletions(-) create mode 100644 docker/gpu/nginx.conf create mode 100755 setup.sh diff --git a/docker/gpu/docker-compose.yml b/docker/gpu/docker-compose.yml index f27e15b..c711925 100644 --- a/docker/gpu/docker-compose.yml +++ b/docker/gpu/docker-compose.yml @@ -1,7 +1,6 @@ -name: kokoro-tts +name: InstaVoice services: - kokoro-tts: - # image: ghcr.io/remsky/kokoro-fastapi-gpu:v0.1.0 + server1: build: context: ../.. dockerfile: docker/gpu/Dockerfile @@ -19,23 +18,59 @@ services: reservations: devices: - driver: nvidia - count: 1 + count: all capabilities: [gpu] - # # Gradio UI service - # gradio-ui: - # image: ghcr.io/remsky/kokoro-fastapi-ui:v0.1.0 - # # Uncomment below to build from source instead of using the released image - # # build: - # # context: ../../ui - # ports: - # - "7860:7860" - # volumes: - # - ../../ui/data:/app/ui/data - # - ../../ui/app.py:/app/app.py # Mount app.py for hot reload - # environment: - # - GRADIO_WATCH=1 # Enable hot reloading - # - PYTHONUNBUFFERED=1 # Ensure Python output is not buffered - # - DISABLE_LOCAL_SAVING=false # Set to 'true' to disable local saving and hide file view - # - API_HOST=kokoro-tts # Set TTS service URL - # - API_PORT=8880 # Set TTS service PORT + server2: + build: + context: ../.. + dockerfile: docker/gpu/Dockerfile + volumes: + - ../../api:/app/api + ports: + - "8880:8880" + environment: + - PYTHONPATH=/app:/app/api + - USE_GPU=true + - USE_ONNX=false + - PYTHONUNBUFFERED=1 + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] + + server3: + build: + context: ../.. + dockerfile: docker/gpu/Dockerfile + volumes: + - ../../api:/app/api + ports: + - "8880:8880" + environment: + - PYTHONPATH=/app:/app/api + - USE_GPU=true + - USE_ONNX=false + - PYTHONUNBUFFERED=1 + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] + + +nginx: + image: nginx:alpine + ports: + - "80:80" # Expose port 80 on the host machine + volumes: + - ./nginx.conf:/etc/nginx/nginx.conf # Load custom NGINX configuration + depends_on: + - server3 + - server1 + - server2 diff --git a/docker/gpu/nginx.conf b/docker/gpu/nginx.conf new file mode 100644 index 0000000..a11ab84 --- /dev/null +++ b/docker/gpu/nginx.conf @@ -0,0 +1,78 @@ +user nginx; +worker_processes auto; # Automatically adjust worker processes based on available CPUs + +events { + worker_connections 1024; # Maximum simultaneous connections per worker + use epoll; # Use efficient event handling for Linux +} + +http { + # Basic security headers + add_header X-Frame-Options SAMEORIGIN always; # Prevent clickjacking + add_header X-Content-Type-Options nosniff always; # Prevent MIME-type sniffing + add_header X-XSS-Protection "1; mode=block" always; # Enable XSS protection in browsers + add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # Enforce HTTPS + add_header Content-Security-Policy "default-src 'self';" always; # Restrict resource loading to same origin + + # Timeouts + sendfile on; # Enable sendfile for efficient file serving + tcp_nopush on; # Reduce packet overhead + tcp_nodelay on; # Minimize latency + keepalive_timeout 65; # Keep connections alive for 65 seconds + client_max_body_size 10m; # Limit request body size to 10MB + client_body_timeout 12; # Timeout for client body read + client_header_timeout 12; # Timeout for client header read + + # Compression + gzip on; # Enable gzip compression + gzip_disable "msie6"; # Disable gzip for old browsers + gzip_vary on; # Add "Vary: Accept-Encoding" header + gzip_proxied any; # Enable gzip for proxied requests + gzip_comp_level 6; # Compression level + gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; + + # Load balancing upstream + upstream backend { + least_conn; # Use least connections load balancing strategy + server server1:8880 max_fails=3 fail_timeout=5s; # Add health check for backend servers + # Uncomment additional servers for scaling: + server server2:8880 max_fails=3 fail_timeout=5s; + server server3:8880 max_fails=3 fail_timeout=5s; + } + + server { + listen 80; + + # Redirect HTTP to HTTPS (optional) + # Uncomment the lines below if SSL is configured: + # listen 443 ssl; + # ssl_certificate /path/to/certificate.crt; + # ssl_certificate_key /path/to/private.key; + + location / { + proxy_pass http://backend; # Proxy traffic to the backend servers + proxy_http_version 1.1; # Use HTTP/1.1 for persistent connections + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $remote_addr; # Forward client IP + proxy_cache_bypass $http_upgrade; + proxy_read_timeout 60s; # Adjust read timeout for backend + proxy_connect_timeout 60s; # Adjust connection timeout for backend + proxy_send_timeout 60s; # Adjust send timeout for backend + } + + # Custom error pages + error_page 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + + # Deny access to hidden files (e.g., .git) + location ~ /\. { + deny all; + access_log off; + log_not_found off; + } + } +} diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..c8bda83 --- /dev/null +++ b/setup.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Ensure models directory exists +mkdir -p api/src/models + +# Function to download a file +download_file() { + local url="$1" + local filename=$(basename "$url") + echo "Downloading $filename..." + curl -L "$url" -o "api/src/models/$filename" +} + +# Default PTH model if no arguments provided +DEFAULT_MODELS=( + "https://github.com/remsky/Kokoro-FastAPI/releases/download/v0.1.0/kokoro-v0_19.pth" +) + +# Use provided models or default +if [ $# -gt 0 ]; then + MODELS=("$@") +else + MODELS=("${DEFAULT_MODELS[@]}") +fi + +# Download all models +for model in "${MODELS[@]}"; do + download_file "$model" +done + +echo "PyTorch model download complete!" \ No newline at end of file