From fc922bc3009370e291ae434bc14e956aa6137345 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 20 Sep 2023 19:36:08 -0700 Subject: [PATCH] fix multithreading issue with response objects --- litellm/__pycache__/main.cpython-311.pyc | Bin 47108 -> 47185 bytes litellm/__pycache__/utils.cpython-311.pyc | Bin 115168 -> 115189 bytes litellm/main.py | 6 ++++-- litellm/tests/test_batch_completions.py | 6 +++--- litellm/utils.py | 14 ++++++++++---- pyproject.toml | 2 +- 6 files changed, 18 insertions(+), 10 deletions(-) diff --git a/litellm/__pycache__/main.cpython-311.pyc b/litellm/__pycache__/main.cpython-311.pyc index 85a6293d7ae17b02613c6e3654a59572869e8067..9f7c5169eeeb1203450d10659a5079fd8ac4a775 100644 GIT binary patch delta 1154 zcmah|T}%{L6uxI>XJ!|fWm}OSBQC2Lx&0-0??7c{xM!nTYY#OsF+IE*j%%q_YO)Ra6rcaR2gz(a&iEliNX_FEkjOXr@8hG*K-tV0A z-81)m_ukB9Q&=*hB*fqr}*k*eKgrsp=2Be=vME1?ieIw(_#-$l)V_r=n zwsEDI^b|!Tf#|j`rS(lh+3OJ@Uw}^TLpwoTQa|W04L3o@xDHEVJ45^o|Cuf(?dvgm zwj-MV(U|f%X!2$IjPeN2nZ{`uc0F_svxpRtbvfx^A4KHjyA_revktE69}m@0uRe2=wVZ-qMhfE@QSn%9X-w;bdVDg?c;HP{gFE5 z3h=d)JkPv%535cG;3B)1)}&!vYB92ARz>)f{rfn)mp?q^8Yx#txgyH7(7XJ5-hIV3 e&>sxZVRmP>2*!-L*+DtS11^*N4=t>6Zt*QfXDL1a delta 1117 zcmah{Uu;WJ7(eIUdv43RZft70%$8ZQ)cl`bW&Gz;dp5lTpyglSm4LNuyLKB7yS9Hl1+pB1Izu|8W^ zI&<<;!f=#o${g&J8akw<5;k|v5Ffi2Z@d}X)hDQdTw4&ncBuf8dmBo$i$L4Hc?YdDgiFZS4cAnk_Nj@B@&enftDU^e;g3fOrz3GT1zw% zq%Ab6+@{_1qSTcSO)2+4zC+>_@Ws3WW5yT3E2Z;Q7&&oiHAH?!$V^gH6bgm-5?r|q zaI#Fq&dn1Ab>>aI3glp7GDJpf-rvvm-Ldvqpr^g>_~+l@AUBeDw{iBews-U^A&fY>1i=_7aEn_7FBiO0l7tOPbIAqq9?$%fNj(?8c*Blf)VzEH<9s%%ikgyuDRMR~Q+$2Po4(Uu8V%Tfpc} z@nN8#s2&7|JkDBhYc8bo?+qEI!9I=7%MZ zQ9t-erW=H3D6kR#9!HlP{c-ff(G9+l Wyu(oLx2jo%G&@25fJ=lPjQ#=~*BxpA diff --git a/litellm/__pycache__/utils.cpython-311.pyc b/litellm/__pycache__/utils.cpython-311.pyc index 8b3ac9683fe03befb508f1b9efc1f512bdae0f39..c9511669f9a0d2a227ecaa1c7393443d30131ae7 100644 GIT binary patch delta 11581 zcmb7Kd3;pW_0P#H*~mgzvJptaI;;t@i%38M2!tgdf|{Ah%m5>knRsWSfYbqTiBwR$ z)rYMMP>O;GwF6FDt+i^a)T&r*OCK(=wYKU{rByz)uD|m=Z<2}Fe>(Z(JLlbd?z!il zd+xdC-Z!1wvd(VH%6}j~KR1Ivw?C8@*!D>N+Ze&WpAd<8E#t_ zZ#dIW-=WQ!T-GgOvu#UB3<6Rgf5zd=1C){R5dT{r=5}_`{*0!K&9-w(T=quO9*srX z4(5}Zz`SY%gDXqVEErm?#xQMWwFaV5@7jRNsV0MAKHy@&0=>0hDy`R#6^vY-S9&JH zmNWQN_1KP!UhOsTWUqmp18O=Jo$6QKVZSx^R9o=$GbxcP8&cGHpmDl@BMt06{eX8H&{MQEzzI*;X^LL*Q+a*T#|A^>5J)m@aF~qoR zYCL2F0IRg8w2A_HYv~ZWM;|C{VY;HQELXGud`FKi^V2fDt1L#VwX=MVBg~~g)Jw{5 zrseundClPEkfQ)_4w)r264X^)a7b5H45O=Hi^LTbNh)2#HKsin3$#Yz_f=I^gLQgz zrHc~!lFGFu*P!u6hX2BGOn+6mjO8sI*uTibEM|7f38Sh-Uo&v#AQUQCN3{U90OEkH zfa~=i2VOuwN%S3bh@2jjT&JI@8eVl1NIaYN_Gmzvn#PhaK)x({p3Y6^x09(MWVDwy9F(7 z)V|TRC99b)*f^FyrEEw*SB7Uw0+DZ zrwsjOJ#$PcZPBa73@p7B4R!!LfSn8`1yo$$Hf9`Mr++zSBKXYpCu}WUV`Jbs!wG=6?%##EXtF<;t?w zr0CK;9!vS786106LNA{(o(3gup0X{sXcrnw+`J3ay}Eq%2wsV^XV;IxESkN#hVPEF zTxogekHKj90H`g17X8TVB}-v>)8X^_)&(rzgH{d8h1o2O##F%Dnzp9|j7+p%02m9H z$KWC<;ICD8ES{~ux~ND$a8Vz+Uq5!yC2_GC7K)ke_r?OTU~9m%g(KI9xy+(yyN~y( zXxb(AL#i0(N1zS>9soQD@Bm<58HJgXw(MaPiYH;DX0Ep_xX2s!#@7avnb+QizTG~a z5%o(jVmeJ5oK+lNLem^nj6p??*Y9VIV3l*`SSBo2Cd_oQrQ1WX9yWdi5`F?m0HBC2 zZ0JWv_0WcTYD%na7?~Zv7gdh|;E4yx3Mw$`!A!LR<(GiATVr)IZ8|t|M3nL}?aH;v zv7D@B`#2~VSpC;|=88?8g&Y?bE?hKrVPvf?T6~F2&1`*Wai8?`s9!w>DHH-d-{*bNqJH9|Qah@I2rTfDr%}K=zCn zD8NyDY13hfB^=9> zIP8*Pj#Es&m{@wr3t4oz9@IRlSSA|t>dI8r;JaR5-n?ij){f~2aXbiFf;_0>b)MQ@ zBm}hZV}li?vU*H7imjD=J*X{!xc;npT#W>u(|DE<9AwILdfVD~4^U5|_+`Doy(oAU zNZD97fLaa^`*hEUH6a+ctCzTyY4@tNQPa8p8hk71*n@Uk05aK7%gp1o$N_k*#GRv> zJgxN4M8vbe?(~5175${YqQ)Ze`~ic@ZuweHED#E`@?zYmI`xMwhpg=Zp#m5n$8%j&s~UU5x78q zzjgGKU!lQMfT4h4fZ>2nz;^&*TZu~&h{{m*iTj23Z=iAY_yt2>ypOlrZH- zkVY&*2rzS6H@ai%IClHhQ82y=co*MPdsajQuR^MzN&E{V8rzi6Jnfa-( z2zea62Q%{{i9cT3$2LKtYsyZtA&F}C^?{AiuHfFi3z(HwkkvEerFvrgZbu!<`Ca0b zxGQ^rm-|ZZ7qU<|(0EWO1=>PEA9hEXx~PKL75d@B zLT}I_$ADZ39J@iK#f}8aD28YbSBOgi)W`zxJ=g{RNIch}X#5U-HuKj+lrP{$DiCRp zNf0!%t`4Y{2q$e==4LkU-tHDJKW^2b?XERXa-qyTXJS*(A>^p3OqmYvCf=p2NIDG# zz1Fo`acGU#7f=&WloyNeqU7D&?F~u?>U;><3L(=$T>!XQf4;rWQO~3+QTN@^dDNnt z?;1n1^sRRdpb7fmU1MpsKE)+-wbPhEGxZ#!jVkq{#=cRzSP~DbJ?x7GBeEHWBp2az z&E}14Y~?lM4*FerYPH_Bdng^y2Y25YzY@K!2Q&cY0s;WUEHxJ}508GpO2B-;YQQ=` z2UtR&JfL7Y)riL?zzV=kTo&!efJyo0M^|-b>tEm9-*GiFUYzK>`^9W4RDWQ&o2e}E z!oHww1-zVBeT0pdGG=asHx5m?mIw=a40{BIYQ;w9s#!%l5 zkYK%+$I8c14}Vz(IjWl<9PH>|hWf-!5B|e0DO;u=W_Lm9@DT36?Xz|*U874 zXot>we5m6IF8C}l@$q}|2Hwp*ZR#HkM`OH+1idldFsh>MZC(jT_v(+Hy}&6+*3)|Y zbBiZD21$ zM)v4ECrV28G9zzG)!@G#kN`ZbUp!HgC*og1Q{>G3bN`AeKyjkzx6k)>TKTbl>+~|` zi{RR&r@l5huNvf&famnJuWh5(^w+Nqz0iZU*!eB{zX0k*z)K7Vo!0z`OPq815WAe# zzSoD;dcf}nc+n_zGx6W}PjUB~hUncNSH`R4q*JYs1oN?{wI$#;ZJ|)BItf8r8Ce(M6{@r*uP*X?Z9{t(t{ z-Waw;>=7Q+$V^N2DK^f?WMz9Hnz;Re7_a^)yPU0a zSnii#1_Tr5bv|8OE{)S}B#l#USoCq7>tm=dOG75n@=A#K1Qlli{|5X?U-|K1=jR|# zY5nn#`Cozjn!&W;e6y9?aOwoL6al1P=}iQm<8zr{5r_Em9iNOSmtmj7BDJQT^~vC| zr_t9JfG+`Q9}<%vL>atE*&x-f^(VFQPCUy5)qrxKMm*zbJj#HxQFhJ}x4Z)avrsD@ zB8t4rWpcc7r*2D>OuRTldiLK(%l~7DTOJZZXW|ljKz)Sjy`Z|ip~u0txW`#TCOYjK z9<=E(b$FDpQvfaV0fm4fKn_DM%U@(Vj_McAR^@(IR(bx3?aQQaN^qS zf<5zkGt2Aaa}2MaG8TLwQS)Uh@lE&bUtKgnLniht^{vCeo%+mIdU^K z=_%vEvxjU3du6vF%0X2Cko>DEKqpuRf*Qo|jZ0Dql{Kgm5j|V$f1c=rgkxP&}LnyN$D+Cr{XPJ(be?;WGtp*5sp@7 zw&FuW%WfJ-CHYnjAHj+G((32zT^+a-*FJi0(Ez929em z!4P5>N?3E^u@Z=>CwRWT@Hg zgPo=u*B8)?a#;^CKGT$ye5{bN?0Mr+aUNiT@j@ROSu_#!B*0|A6eFuI zUDonnl|m=Y=(PcyvPLfiH4{(|m<5ngiNo#dR?%)rpNo1?aG~)`U#f8|;)2@b`+aFk zSapf(!Uj-}B<;AW~61q+zkRBV~LDj2PbMIu$9NO-NPG@c(zGp3>5vV@1J z;O*Qdh>N%2!vMr(o}0yx|4mM|#O!f&6DEI(Xml!`kkH+zpFmg0EiUF4 zz0J#aB%6&%i|BwO#;w|tZ!MxGd$ITn7AKzvBo{f~Xjn!w`ohI|*-qmx@l{?mF=O{K zs&iUCY`nCLN^8Y8aS>-`wRtzfkP1F~j!G>M0=Oet(nQCpzJzIh7a}pCUo^mRKgPF4 zVSW#++^Jh9c%s=WRmUN&J)qL&f7ZxfLBn&wqX0*fGgi>ol;^?N#W4Rc=B*^xu%Dqo z_Fni38+tMdwn3ksyv9nJNKYCstfYIX#8`hR&7$8LM=qs_dC=6_dTug4yp*OmU*M|` z)nSZYMUgTYMy6cO$-Ok&OXOD@$5yexlgam1Q7t(Y`rKtyT}I`3vh1&b&}WS~m(d1# zHTlG4)J(L~sJwzo24OmQCU!B0Xv@yxA;viAql@X2WQCuWLPBeRs;hs*!g(^!X)F;|E(RVjjs|GC z^9!D+~kvM zX((B?mMGnm=d*Rx=)~_eqRY|EIO97(Iz3_)K#nEi8i)eNv+h+`0z?P zIVjyoemNlLbXlB|`1}OCgN!fMQzH#XE(p1%GO3ps3y6*jo!{& zfXO!vC!Zr0_pyW^zL{#=4=}1P0lit_5{D0AaX6jf3=wfVlt| z-Ze}u1MQI{SwhPb5Gx_%E>QO|nAvVO#^iRZeJJ}m;6YSmStf`o@q{BNPXG}5l|x-sla_kWXd<_4O=YuI%oubMw{XRf}wcT>OM&Cq>2;8sAl zSuJD2j!LW~<`avE4UeNjObr96rvN7avSM5q%t*jilmUL3{QO3`fM}~R^=5i*I#Ocx zxJO{@PB3;`j$_NOncvKBjri85Uy6Iclm}@~7#DQVc*hG&-NNBRF9N{rvvhdgJwXGyLb31vA#Xq1GQ~m*A6#`t?^fa3!$Jdo50OJU>I`)Ps`W>OyGH}_Mk<1ANK8dLVr z`?T8_vX^S|WLznhrF*F_Eil&XrJ;`hFsCbdJ4$8)QsZUWU$#qKXU-r?(x&KBf;5=i}59$5$Ac9wu@b%Dvhjvaj_yrmQW*f`*(>23! zqU8&1d0F*2(^3A<=!!F<7+_xVU;F78O_Tze(N1QQ!xO)1L9eOza8ZuL0e`^XW3O0g zoIXI_T#Qc!xiH!A0KMt33|VQ6dYI;}`6nu^@v$s6$v4Nqb0;%80=Ad#MPE5>U=9?_ zD`sSE(&iPZy*T4i`G9%GsfTH#^Izco)W|+UQys-z-kNMULgQ=;4?*}Y3?;k!RRPX+ zn{w*$;%f~5tb?Ve(_kzFORX)Skb{|ycK#uNQg0f+dW1^pS;KsUv|}K5@?cW^gpW?~ z0_Ni3p_|4=CWfFXD`bJo(P)*RUYM+xi3JUfY7%ocG&b<35g%2;t&oLva|)FfmD!_e zHZ!s8M%9?dx->MpzNh{Ib)EhQzu&pqN-Xz5l0=|RC?x|GtK(9{T99%?krT+Tz}#%C zKE~PEKx4}>9_`i1yN}U@M5~NHAE%AxlfZ@ zGhC`!S8j6kDmSrmvGy?9Rs#^a%|f@^8xBWeva?2c-~St`Y5;=)a^#=Ewovg=cpd|& z2h0I90wl432bp$U9;*lnuL8sXa`?1CpL{@HfH++ps0YDP4@zR()u1{6cxj~YUdVFO z<8hEr0RD<5UjpQkt_<4!9*@Vv3i>@YLFncp+33!{!KMT~K}%RFya`Jay~3NAn4nqq zQ~mv*;9sq!C81V$E!U+iwYDUz6-#aN5}Z~esjNQe^Jrni8jb`*>c)&7YFf(bBw0$G zoOX3ZX8)c>Qa}rb-F2GNF2_){oB@~#n5Cv<_fpIKbmtGLDbc5?oy-24{n z*3?todefiu7WyZh%uil~UK0Ql0fTqs^j=<$5}=m;hi4J|xFO;Ezf=7OJyiNc-4k_B z`i}U%OR(As{wIjO)oGF#HX9?10K`R~gU6`^zns+^n$<+npsvo=Qk<4bnMhQX>U8$# zRAvMSsDU}l#BB9ua-O;)XOVbL{Uc|ZWx|zKb@j=vs;YBg>XnHy@yf)8%t)HL=K1bf zbz-f!GQkB_{EKeuyj2i`9=Y0pDym`eoGGS)m!e`3;BvqUfJ^PqEzey`#qf^=q@q)4 z+2183r&J1cE_Y0?Q==xFES__q=s?l$#~d5?;<)DqolKw8a`D#LyGGtVAzIe;TOoF- z5#5L9fUnachl8mHut=@x?y#fSRG`jvD-b)?(e5?Eqa1m8sVo~{jVjCYiYoPPI8PnR zTP7B(UisxVKegPU>hd>y!w;!t!@!F|GRlB#zdMVDTOMm!tV z#;_*kMm%2&fDR=1899NVSM$3(Zol8<)go@6KkT%bOUj(C2PHGws4nZXP&^Sm(C289 zSfOg2Q9JZN4pmS*S$w8k#Vay-FndS_1EGivsaK0H=>rLgqbU|fOx7B_E|!Od_p333 zYDTeW7{-|#CzZbgf2L|{H$}gi8k$z9Yn+o*ddZ3`o(|J(LXT@zQ^~Myi>YX&2Hb01 zHI3dnEn=$fDs`-6yo04_0xc^c)7KDcjIa`F+@4i(rRp(wbOBEt0~*E2xDguTuL54;5FcKMx)yUW%p(ai$^;QOTKPt~3u9p9;%&7?cmIRbz*Xyy%@{uT9O`j+&8xn*q0} z(z1c#cD1x@>R>FCkuJ4xDA*9zT)~=^rg=U9LS7h_)f`@IMt2HXwU2e=2YAHYk9?S~!ANbv{jT-s_Z_I;>iduUd-miNj% zif62WVS#0_bylfY%kw67SOnH`Dr?!WlYScgk#?GS5NsX-JPc@7eJZ+Jp?JM?r^r=v zE1Y6Z^va6jjHSojyvp`Bv!7&p(3dQ^+626c@K%=$WxE{79t$r4@E;i_V>BYLXJ zlQ_Hu)sFyTfD?eX0UhGIL>=Iu3d}oXN6BN+k7bK4(Gm0S6!y2!zE!=mpzqYjP=v42 z&dc+@6BR7uN|g2h;B^$~wxY~l$qd+24^!;ytST3Fw!K5G$D_3iUr!QC)yNfta(HE7 z>dr*j2VFO)D^|?8Y!(#_o1e_jZ!%-`SwXs!gxkfD$Y9D%Hs~ zw2)(hfl8hQqJv>~he8yR<@2aMsj6LbntA8rEpas}=K`Rfjv)qfcc!x)8CJKf3mf)T zYw%ZY05yxuqqE4>RA;1-Q`Pwz>NrNg)QwIa=?>Ssq!tRw2(=j5s-$|6_%eE3^(EG3 z<^e?-ojr||?*&|bf51gM%xa%klLsy4Agt-Hh{|a-Z7?OG`LzJK<~sQSI(G@XYsnxl z9Eld|GisEd1KI|X;1jkHI2?|Y^LzVgwMgqH3ZqwQdy>+c(SgI$3RM&+7k8;Zpr}VR z)y_YdXxJm90veimvt+Z>gMkwJbJQ-6sgDAkYao+c58xHyuyhX|^8jZEXu1>|p{O;! zNWF`9>9FLuQvjNm09ZsLg~lRRLm+(_mAt$s)WU`#&Aaiu2f#Z5oWRJecQ<(bnyb}G zjih>a*d2*T2`4o&ytEcILARtWTKdgU+o_$F*aO+`SO=`Mzi~&Fz)Q=>F%D71aHIs* zxgzyab9>26Ns2!LP6Pf9_(ElE>7vF2i^ZsDP4Hby))%N1qK!z+3Fq4q>G^cjAAVMd z?W&~lnIc4Or;WCD&RiPY0ZrP7#z+sjr8^LI1>6x&y?jq)ubyU0r-n_@#j6(xdj|Mk zuA*y-C|i7Y%`CeaP4r`%DSS*`TWIS{1b3?1wN+w!G`99T(eqh|!$D&Ql{zGHFEkAh zkEp*lRd;QoMkB@DKr;=7d>+$DK2X)`yQbw~%zQu(b!^JoO6h(0kLrdt7_RcF>x{ifER_tKyNR|OGgOX4MS4ADYw(|1w?~sB zP?Z)5lCO}TxZFM-K#m6!w&aUYngG~HR#|GBLdCw(iY+B+qFRM_4i;0@-km+g2=&a) zA!3^PnrbRk4}FrDtd{B_(Nn#u-!%vs5>2bI!4vTX8+iZYtbyE03;BcV0+dU*d|qc7 zsdU$_{$ihcX4fqNA4XjXC86zzo0=Kpo(EkgP(9mjtSlbMQD9 zFdu-_I-Ev72TsB-{rGp!WIp?CrG*?-Kiz} zdz4gy&2qqGG^V-zTBzRT_J``-axtnkKs{i)+Oz*OowjbcciuohDguC!1V(m{_8Ljc zO^eVP(;CniQq}|GMoW-nV!AttzjaI@2|^YNqRw@+ItIM)uUo`7`ETS~at*tsc`dGN#TPURv5#ca?hJ zfxHUL%;+?2>b&y#<&|x1P0YOP(i!D*%iAiUAfxk)1=FX`tejpkwJhGEsf-7^<*^B7 z&n>T-J+o};{CMkRHSxj0cHRfJsL+G^(prd-yaBL96+G12wwH?QqSGE4Y8lN`MQCC* z2v!3Wlwck~jZAC?IPmDE5%zLyQyNc$e=xmej20AP) z2TP7zSv3gDE)N|I{gjsn8_X$Wv|GtG5#>Hik^MR~qJ_S**nNDD^)Pjl_mpom;?aD?ky@Dlc8oZqaT+!_9#0>b0lmi7m=;q`&PbRh*5^ zI&ynjZ=EL4)YaDzj!=O2xsjka!i^y}N2S}8_4q_Pc47IvntuG!kxzls(}0(#lCB6E zd=c}MaR@}80A5D(alo5^H`IyaNAnM$B@@88GOzPnXns%aeWmlYAU)du#H-o%6L@}G z{qXKw`|BXvt}5RfljcD2S-{KcruVKD@2W2E_n*v`5YIN3>Y_xlZF9+#sN_Narcw*fI4n zh<5rp=3S=z9Bqd{H4r5jl9A+bha%Ydng^hv2*6JF2b8`B9Urv5LJ3AGzd-3elz87@ z%iDv;y#Tf}1Q&^uiu{zo*&%_QJ?oJf6DRs+ky+r#rdH_7p86Uooli$J4m=_QDw(5VT)cJpy4Z9StvT3$p zaRv=%0Y3o#teVgCwf}_TJL!AY;H~&Q~I@@=M0k%H_{tbv*nYje0gS|<*1W%9_b>Qr|;0V6Z7^MGM=` z^LXSLC!vn5W&rAV?c3}}+R@4;!-AZqLHP9L3O9P__B?DFLWfiM-yzDE1kI8yW+fQ2 ziLhaOgXRmZL+$~|UIJ%MyMqEReB4;#+BDY=eK=NSK+1GLCZH1_nP9XT?Rh z1a;gwwNU;RYzG2uQ69Z^Ewgnr1QOnv2{ zln>|uC;;#h_d=;R!38&;9CQ1iiCMJkt&XkFO_S{1fPIe*6@L}Yu%o858Jgc8bSw%= zzgHfh&J>AQ@$8C7PU*Zn3vzL7i#aG8)dmc84FK7bVVi@qm60sz80(`TYG(LY0@;%k zb%6@gR=fTB)H=f&26jR>Z}_CQw(^_pjuYqh??N@DdT zv3?)hW)+!2==vQt5wSU`>aAE;yV!1-P)ubx2v9;mmcrJP(|X%r-etSIK2PNQ(Cs?t zAEk&A+feFf#Bx%_byjhau4jr#<~<~514p1#*718Ny`_JfDe}c~J++hQGZ4#c*!V?) znKtk-WDh307n4nuSR^@GpVvu@OB)X%Qvj=Vy^|PWpF!oH?Xi=cM3ObD6b-`xBM6%M z>1i~OK53h<=lXqgTpWp}QGn5aF?!D~Vp+|v%7`(SLx^%vatxS+(qzCCz*GRo6}Hs4 z#8#7g1=?BOOZ2~V5rwwdR8jnRuGo;5wI1wyfnXv^YxSFkh?0IVPuUF>u+XL)Q}GU8 z*bxZ^9sXcLo$RT9I7Cbu&lb#jf!+9!!ufUq4g(PKX{9Q`|3XSRLSH;oTp^nD6GO#L zQK`F!iIKDtJBNvJS#eT6$E52Y3=@m8;#^FR(JM+tiG4B+A>Y*3mI^~$rOz8KYI6C$ zZ!4z2TP3f>S^dOt(Z|f}f1`gtT=Wnvdd3J*n9ot|B2fPaz+DV*&r~`eU>2g{D>N<8-y9)^CbnjS zD^L%Z8!H$o{?Nt!HE7PFr_J1E+L#*Icq4+FxcEIA57Fw&tOOncHW0qRJLR`v3#f@* zHdB0KNr%*iHRPrXlqUU>Iby#J0cK_FhdE-NHHQrY4n(Iu-si^a%jSwnU0}-Ot>fqq ztBIT?tRJ2$N-NuJ)yR@=AH9#Div|}Z@R7zaSq59>71YZ}3c1%owG!6aK}a{)0=C9V z=84Bda#t$T`;x`_7xP7r-a1514{Nl0L|haA8#Ni%{Y!e`0#TF-8VNWUo3}um6KQNi ztd+m%moE~|0WoNTH*i=4X?YAPeuJUg(;iwRMv15Nj~9tML|1*oVlhp;sK2mSj7o!0 z<_@({w=5B3?JuWL#U_2~5)sT}i4!HR=lCX^l*RlV`YTI_;fdI}C1RKu#FsZvGM(D& zUd=<1-$*5G$w(MikEXvb$3QRXOPA3*;WuJ`TqahCF*j0OQ*t40vkJ!-HYFBb^~E{* zN#NJq+ce1pyqJ#JNIDB!=+WWWVCDfz-(4*(7Jt(}trp{_LyjivgrVU{WciRr{uaRT zi{}F!8y0uNI_aR2OvV~mO&#q3<;?(xuDQh$@nP&)w}^^fkkUwtXBJ`e9+-{Fp>Owy zQGIx*_$auwpnaEBZ?e@t^N3mEo7ga~xJ;C>8q?@)mD{m09Bdfxz#+bYj|5(FFS;t+ zM`Mz4bl|%ZGK0C?ufM2?`QisXuU0gQ1N!z_@p=KP^KQ(5{IpXek8E&?}Z*+xf()h5irRwLV?-?CB!L?_*{ zN}Mc+cbbFlBLVE!oLxN(+5&x+U*zhqtQ7sYM0Qc_7sD;hJP{tSqjAuBF&87~@J=U-`V69#PpZMZq&Cc6Y0+r z*W)_jjBf-c#~TgqmCPHq9$&!?Hm~5;p^dk$CX|)|5V|YmPz=FWI~6EF zEhybVU?jU-n3KyT_oD7ez`bZlGBq8RYyyW-{|JE79NxF? z$72J82m(TYD*&wG2hsX0!HjnM6vwF(5C}VonH*mW!l`&<3xe?&8T06?pP7`h(`8KS zEs~s}e|@#+(e(%@cTgXL-v5x`a4LBiH~gI~@>rsNY!PKdmCeE~ro|RCi_NwSj*%A0 zvwuPV>N?R~Y}9QV#aP;^Cv7CN|C4^>Mv?Ek9)jEe*aB$Nk*OIdMe>wc7d$;y$fIar zyNv}O!hz)w>CUJbi0a6*6&qL508*rN%C?32>^hQP? zNSW^Wn=sRqQo-#AUODPoizu+YM$g-0H?)X-LU{Edo5j$+yye>Ive2`}D}A7c%^FtT z4tGPOmHLLwq>ZQaTQ`d$!Acxpdz*-M#=hE2ekn%i1>3~1f|2Olx))C%ISqU3z3vz^ z%+edSi9yY_Y%;)@@I^Mv3Vmm{r?@*ogxU^>2-Sd z?V_*kFZ8rOHf6h*XUkZMo{6nJ^*uL>old?RwTIV*>9Za_otW40IE>J?!#>LA4MTU` zA_|+q&9ur7A<96WI%fi5Q@AHUz`=wk@mEk;QMV7JWdQaUL@LT%coOCSRAF=q(y2?* zJ5HC!{NChqba)^AF)L%|PT{eALZ#nE90b6L<8#|^ zoIBFa=k?Og$c!uW?{5>O*?eIC41@4|&3Ehi^xH*G+gDWk_gMYy;tz@T_dsz#pS)YR zg%|)?rssVou%e(`kX!DOFD0j+baqkJTH?3Qe{$B;P$)PK60AHwz_Sv z$g%xMef!4l*(Q89`I<0WM; z^^;iik_V$28RktqMN-YHdE3SM1^RdUg*)|IVj}?+v1Rv)4{W9;d+JjTi|MuBp|MSG zq=5_PK&!`VS_I|u@chya!%HlJgf>}Pk|wTA=9)&ClS~Ip*S|h2itXQn_MdvM2gEpA zHr3a~mOUVbTC{^;j*X7?gYz#^aByo%nTl6#gXt3y;vUa_;R&W#%_t$OGHi|Xje(T# zfz~h1!mgTiZLjeuv;6j9p=`Zq*t=qz9-)&`a|ZRJ31i^ON-FdPGZN7Rr>)YgLA#ks zaEHu_N;!%sD=I7KSBanOO1&st#wocJXO-Blsf^eW?@C#jO0rZ`I&YRAVFGq&!Mzj4?ZgT=i{!&$ngd6rGwvBGlV`+aPuD3 z7<=GRFb>fU(|2QSEpMc#V^#26#G9LMUk8kx(=cIK5HU)+6- z#{=kgzy8JJq9FHElnViU0erHbsQ03;8JlOLf)fH*j$y@>v<#p!2#|nx0JxVnUkP_c ziH&U-O8e0|1tkt{c(*7w0rmp$63R4ByqA$j0Ux8szX3mS64IU4!@SjUpoBXciCY>O z0}KW5K^FH2d`LBqk#I{srtv|`+()t9N$gaTV>E)KMD%Ls5*#Mj<;inPP5(2jHNl`? z!t^B!vBMtyQ}P7b*c$!XBsn_feL@_y6x#%S+51aq@qdrnv+<_P*d<5AeYXDxAM