Znvd7ɣ>z?&Qs ad#^3(e.n^B|D<ہ&"C BpL4B! 2pf!2!B2!1L4BB cyئz5tń"4龽 %_um|tl)5zhExo04D'feEqD]X踜^>/;x.Bx\pJ,^ a/q!B!LB!B!LB !bxxxAA Ea,60cLl! 4Ae\'9,mM05Es)h1Ʉ 4B Ѷ$!0D!0!!B%& B}<vM`TŠCZKD|G"ٿߔDLAkgBC٦ GZѥĶDIlVtئomlH~VK'^|.1s[b,e(x!f3/~jO!B!B&! N&&gbdZrNƈ444= A 0t5zg_: @İؘlk aa4B2b !Bb &&`B!11Bf f!1 if:y.ͱtBc$ &I~pTQ4tAvu #c>b7il]DC>E֋%' By 7cf.L҉ܦ#eEDK‹]oK. 1B! B!B!Bq2O\ 8cX;X>b'HP C( <`a1,3 hD SUi[3m B;_V{Ah^B4y\SEKQ//(QqB)r/8?| ᘄ!N!B!L9>S dX|o|!ÄN+p1# P\z/$&0ayY&4Q8&&&!!1BB!0 B!L!0'pxc+ca9L+'c " V:uKCo}YGiKI; aOQ"1NE|Ȋš<> BisD\1rn:&'-f E.)pD_pY/PuD&&a LB!1 N3&&_&B c^^_ /+dL\!5yX.)qb[­*a1BƉ'B!3 ! BB$&aB ! B!!lѱh5{4z(7z?S$^^ O^LuإLm 3OS}h_"PlT҂C,6(4z%xt#7I<|XD&VQ8l&")BxO (EV{':w!;xuN:c&'N3aBb'N,d&LJ>/4JA;ưLe/_Њ!)b8[,QEoǾ+|f B!1Bf0'BfbabYk cCCCC>Mhh rNxfdbBDN9̈@Y.&!3LB! &!B&S! B!B!1BAؑo=$( [{ilu$fC^h_'of͘WdHne=7;j hhD6<,<\R ~Ia eY\ulOxOBxHRWN+7c1R)NqK˂b&™,b)r^%[ĈK)Ѱ^"&!1Bb&&! Bf!B!Bb !B&a3 Boٶ[Dx:!Cd{ J <!=K6`}sJttǪ?0Mg$D b?\S(('pJ')JR;oG2b|3> lxxc6Qxo)r._+'B xb&$AAya1İ1}g9~!:4p&a8!L&!LB bd>蘇5f,btFDK["=NW腬j$[hbhi[M.ƋzDDTA-~*~oW/ hb3+,N<яb513] <'&":*fW1xOc1⌥e)pщp7R-ƈ0k6JĤvt1}X"A>\,F|'B!"b' #F}쯑NE In:dASlKUdv?jlj8~i⨓7Kb >/!m!k=/І 77N[lJC3'q`9?wwذ)G2 pOLEDQ2)yW;ρ|7QlKt\^"[~j9pxQ>GɝD% { BR1|&.s3!ObN!3 II}o b T:u'C\{7QP0KGl"҉L"64SA`A!SdFx'!l-ăC\W5,ad:Ņpd)1T(,R<&"L :;%\> }kDǖ1k,ccxҝarԮ?.VdC6`VZΉXVcZDN0*Z/f/ENйf1{6}m n0i6)xZ:Aϡbp"}[DW? e'एkWd- c(njzf#>M~&DG}kbb|&5٠y?B< RӌPdw<~Ϧq٩F&LyXٵ{Lt\ao_*2t3e<"EJ'be.n42=/oǃyxc \_C6_&'W+Ϥؠ_ bN;.6>a:/*AE8^Q Żwc:Ca\tq͎hĨH^(ၹ!0߱=b7Sp{!ӛ!h֏!^k>/aVoIѽ4!4=6+|nc:i:&z51|x\7'2;.n'DR/R\^MD_)xRxlxxylcc1d_+ 08"B0X(;(%+| 6I%^/xz 3BWhMD.BFD6?$ǃ'x5ٰSԐRl5.8d7%M(0P3d_?v7B^ &tX?ѝ?rn!3>&6w=: RDREp;P0 )J\R)KRc1c41w,lB~!ټ8!bD\Z\fؠ1^= )~ K`7ïE 7MfTb |h}$7d8g|'R12b≉\ex2 xqJ\.iJQ)JRe)J\Ѽ1<<61cLJ.FQxOAy 41y-/+q^7|iK\oH/#44Jbuxѿև*yhDЦ!6yB<` UC|!;u}beg>^ Q2RExe/7E5q.)KR)JR.)JRiJRx1 ccDт1? XE2(" 'xyya\r-v ~1:vVmip<p=R cDx屋A2Rƻ=;b:VH`"۰Վ;4)R|=:Cny;[)QQ Űt'{:(͑!pzY| Y| 2lY(!9JtTQ6\1q../K2/\^)qJR)JR.)sJR4|K<1ccaal XA-OÆ$!ΙU)y')e3ci*[Z:n>[\y ;.SHCJ$(6.΅ƫc.$$]#R*+%cc1Ov(#,CZ ѓD!ŭG"R4',cGؼ'.qu6%as|&KDzyd Z"—,)J'ċx4E)Jv\\^7/*R)JR/\RᲔ)qqspX1ቆB2fpgq1XL1(xYL|#B /| —Um[gؒGI)abxjuQt-%Ϡ;nMi3xoPc7lrID6'BǶ1ǘ'!<bb>wR~1v,,.Y}rxO7(TRYO (4,\&RαK\җKR7ssKR)xҗ./ R)r1džwa؜,Q1RcVx+`y(^0ŅdvO7{6l?y HƛVuevZ$.ͻ3} m2HEpG!4#:   VpuM2^*lcljvXhs1Dy&^[e:%42c™xSx\Q| e.)qsqK\TLHwR┥)FReQ\c8LC5a 8cX N"1b LB"Ђ?zzK?^l Z; Z;WՋw_O65xLE14ø{%m#Bӭ"L /'t4;4 ?aNX*Bzy>XǿD\~ ,3Я(6͋ ⅄kF@ס1=loyXw,xQDzw7X腸yet0\,'Rb)r\)J!J\)phJR)J_KƔ)JR\R()KRe(iJ\\1c &/ )c 3eX&!sbq 7hjGaF2'c?x@R=?n!JKQBTgӡ+q[ m|,Ki bAtb?awJfh~} A&ǡ [ydv t;z,O:)xCy4-7 (OO*&'KQbXR.:)J\RҔ)sqJRY)KR4ʔe)JR.)qJR┹(FR1ᱍ!SOͨ $%BsM9 0 hB~ #:P ÏdlwcScDk=kţ:cD&m|#׺l'бMakG"ƒ׼!]aBp}y!F/=<= 5=IxC,41?51'JZQ*=hO XZΎK F}HjBFmGcQ+qg\oxGLDŊ&\Q2KQb-(KRB)N qpy/ R攥— RR4...)JR)rdžpˊ>/>BM|X.hv|}lX&&.-`y^H!?L3&n[뢝hn yPؾ~=l=C ~t&A^ǽ c؛h:̍Q. 4[<$ }v'Stْg#_M1_=K=CX&-clL.x=a=~ѡ~ǘ.1>/:NRByl”(-J\\1XR RC-)JR⍌)JRJR)JR.)J\ e)J6X>|&[c `L,lPoEy"7440pJ`S6IhS% ݸ9d[AkƾV?0Gh—a1$ BCrCvHXw"t=Hz"zB^Ɖ<5`NjCQ2^{ʽ=\EIZhDOKcC؛-5 1*fPzK|2y\<\,QlO Qr Gbe)D#^WxX&\)J] )w\Q2_)JR)J\6Sb)J\)JR┥ʔ.n.(\<7qKo%cN,,0;FCP`AhhcGxFl_fEM&I}{vAG~?$j?Tj %_ƕq 춇%< ^ c0]#CC}aDF¶iNoCv%11muѨXwG劣}~ض_ȾG ΅Iv;B_3?=QG}c^IBX]؞V;YsOMv"x4vt_.E=|w |ţlT} AKkbnDL[T.a@\Є75i]T+aiW)thcC骬ȷ:<`ƼPR!BKnǁl[O٭twpl:ͺ_!M O뮄}ÿZ5|T {(4ъ|p&'NǁcG9؞b> D<7V/ׁ}#N3bCqO]g7^=?#v6 ]㧢]#?/FTocA)pƃ'CЙ=wъ'- '_*xe?ee"qTzde)D^lgx:)KR,-.)E.Te.o QJQ2)FRҏ eJv?rAq !AX<HCCC fB N1=h5o"61?S&QWC-{l Eb성CG[Ih*-1տGc);Nx!mA;Gcg}A D=#HCce)#,Z~~^Wc緆&;c-a/IaA/cޑƾX<.oӡX&H;bi!?tZFOu]C} (\ir\REʔ)K(!1 1w┸)JRcR)JR)qJ\Ro/4"| `N%!noHjha Lh '܅1lc^8:/lwpC'B4$*}z+fY~JvvC^G< [}ho ѝ\Dgoе-$j^e&K~MuNQ2t.Hu-t55$Rӷ{}_LA\ |vsd! D0Yjp>[z _GjNB4YE?Gc?Ыi:..n^/bycx3 XxxX\iDQ2┥)K1JRxE-+ _Rlle┥)K\^T)JR|vwN!nc!$A!0 CXJA!&I0A1BBxUߣ}T?mp?sQux1PN#c b$s-qv]|z>3EAס+C%;0O}=  <[<+>ŀG [a pCS/K<FF GgC~h'14.3Z?NތyM]MmӵA!g}a 豥6Cؗ_ 1ca( OŜ(\ RaJ&R(&!Y )J\RJR[.^J^o/4A!bbpy[̣sCNJ2,LL a8b B(L1vN̂5)Z>Ň7X![4a1)<#؅< hW>d>t 1:3t1Cgj&t)S;__::+%K! !qE2w3F>蔇]cwe6&&BQ?Н}Mo%:T7DV? Ϡ6pc,_^xY > /F" \o.iJ'1J'R改 R8&\Rxyy|rK—73/0KbD&Bc- 8 !q6ߔhhbd>!BD!5ݠpňh~Mo-2,/'QbI?gO#A ߢ$!pRb[m3QY~ غA5K!y$aB4x0ŇOWV(fhkF0=fb f501?i1!lH[؜ o?oЯ|ix\K<9e>c"e.)JRJ\!S\> MfKr!/X[:RE )x4 '8"B dhp` B0A|t 1xBBO<#O>)(e:&60Beحr4jE>(5Lt>թ: T׃~UHB$_GO@i= cW ,,-b!+j7:;줏!1#S36zc)sKRybb  -\,.:)бp΋R)DR>OyRasc:p.>J(hNt.{a,F441LKπ! e|A터=} zcDZ/nWO6N}d$Z"3pס"SPzBrAC4d5lR!OC'c a ą[;'nסVOL j'eOB4JR81Lx(B,h(-)YKLO=~D^ bD5tmrOBY.)qsK! d12A?2 ώbf9dn/ L ?)Z! A5CȲ3P%|Q3op%'Ʃ-#߶ 5^=#RSbeGHi Q'LZtϬ$Hk%u!nPcc~[_BمQߗhߦ/DB pA"  Z99j?|_Li6]}lWv:LB1L_b)F/t=FA y\1et"gx53DQ8TOK\,2◅)NFJRa2Be/'pk=/ŏ7c ħoXcB"hh Bb oZ1Zt-#gKTF/E7 6xD\$:h g++i߰w~ĝ)8"4Ǣ҈M62V콧M#}k ># !2cqg!o)o('<3q vTت+Bcs\w bGgLm]?BGf9cf(aEʞĖ^Rǂ Xl..#P[/+ˊkL)K :SC)qJRx&,!<_/X, /\(.cLRF4Z⑿92<qiq$!qcQ|-$:?eE!hb:"ԤG\G.]~< GYd7hMBQoGxvAemXyeR[4C F~l2a7Oc$wG5$_lU١zv!Sjj{CGw9W9z*WAT-OESk5e [,v4v\yCb/kx<.DžY  {:(PwA\X; lD;YK'R-b3 +e/TQ.$L@B^(' ; hc BacB. |h7J_F˽a( 68|}!O:SؾšRRb:[^ضV]YMc(14.S 0$vQAGcR%! +ٻ[FK;<kȎZМi ݋BOYͻx!fS? $*HޯCttCöIb&,2'Q쾋Jg}oDuCW2ΰKcabAg$B3JAOcJRᔢB>k+95ƂG x Y_!CbqHB<0L4lnE{٫NML`F RJL}Bz?{b~x,=7t! B wFu6;v2x'#BCct=2\;lhbz'<$6RBOKCpM*4j9IDǼﱅ{OjxWA{6 2 XA%>(2BU{Mm?k ctLtO Q8\ D$B113Be/+1ag D' Aek`;qJE4- d&>L,cbc ~14k^TEo:(":t&M{gh5{ b !33 \Yh1'|Y$! c18`dĘgC8<1:ŏav5"XаD!=& 襘Ubى [(QH 4a+¿6'NSR-bcLz61k/Z|$Jh% u;;7QDB BWeP0hbI·5 y PdkPJYóG,ڼ  VlLjΑ3X);VI!%! LBRɬoo s6D!1`ŏl;1`~Km/Ls_o)P::Bw7xlp{Êt^Q12oFSL]v5;d^XO<,<,L$BHL! Bh\ =e0B Ǜ,6 g'>'|eLQYt7eÎ6dp &%&1HRN7]XhPAt=`xn :(%O&_? lDѲRlj CDxY-G5Ma$9DoEHš 1(XpZކbC,5چL*OSNiy]xntCbč c~E1—Bҋ=h[T] }ב&'ILV x-vQfYD!1 L4A p ϬX/'yx_渓PHXBy^[2 vE폈OQ\[c p,l4{ !#~ī"#KGcBXmgq5ͯ)3; k!ؗ 솄 ׂ!١BgA RBxdsDLA  fc{b^_țЧ.N~x;R2yC~P H;-zj@!zFA[:;L4&Eư[t\{[;QfEb^EJ U&^7(WuC$v2fR CD! ok.^:z9ϑ9uP^&I\x X.X Y`McXA>(4>i1؛xGhMxMelH%)GC툱_Bpan?46Pf/HI'Ų1BDlbcalѢt$;Q!AQMc+cXZ;;D+7Оب4ucĄ4:xz,j1bų[!cƼ?bw ƍ 5??<_ z AE(D5CD\8S qC.oa.o2B&<Ꮔ E.o\,xD6b<,Μ7ۖy xh,hd!X\xKAGZ&aIA0֎Pcz-6IWRhw4col$)Ee( !։Gy&Z~t-:\SNb Tȇ&$'ōlHd̺{H+v= CXk; 4J7++<N.F4 "r|ClN&L~ek1a1H}+Z;aV=Bc+u0oƇb ׈y v= GbipKBF$˼CA?Xy٣Olųtz a_ccGCxu><<av!ۢA Cb qEͺP} 6yؔDi$CLkee}qED,B H! 510ǖ58Nd!aa_ =q>KMal(d7 c' %rǂEèufBa 4sJp7F 'a7fot~^&Q`[aƍ0) (X/"5 l}#0ΰߢXذ|}({(-&!14A5Y\0{!0!Bb`45AhcIDOX'Gɔ44zr bˉ>k3qWH}ţm#|4c] ٚ -goiS?}H7]JBkcOl#pO9-k 融BBG0k66K˽]<=t{ZlP&t:u4wڥvi/N {4j3L[.C1 fɾZC(@58 .J2'7(LlP1ly/}Ba{9Lt|զj}0pkYvࣇ5ð}_nh ]!#pe B_U’"Kkb"DLm#_[ >artVG]QA܁7ʡ<E_PJe"jGW[׾Kx{ZDGBghSVt~٤Ѵv-7 $VTxؑ]b&N<)Л'ML5 ƣYcaLy/EFbHz to(S41;'J!KD!AkcXG21)%-Kωcu\6\<<L%(vBdņ @B+TYNA*a 6^ xhY累h6wK \Q![(&/l[lvg{fBo\itLGpt V:> -#=}Vr^! 4a.z+?g]bntJ 즠n 4.EfǓ]&:A{,ckإ bRٲCE g2n< -#4>*!J,ۍ x(u =aW110?F-/x3e a BYD D' pffe{AHXB+ŝr+:?|yӈ ذ0bel+ "{ HB&1Y~:_klK/!}k6= U;fOBe6D>W)s)Lx)͕n*ױ]&P^)o}d E?[жӲKN lB)گzO5뷎>$Gٱa>n?=(/^xCcKMzO khGn*5(ăXxÙ/b[$zBBHF~ƚ#$y:ࡨ3b;UBOrǜLf&TU}66Skgƞzw雕g3΄F"`A02 |'B.A!!f!5<51婇hD!" //?/e.-|A64/ذbN0\xKB7nG1q&4؀aVFR DO u6TMeI>_3:R/?Z?^}dFWQkLReFᯐ-3+^M+6=> qFv7dQo htbGeCxTt;bT=hY6C:{sɵ5k/FR{NbSusoذhx{4(ؐu1->״P[nȖ roe)P5 'К;7wR*yh?q5?PCc{x/ރF4411pK%$!H̢BD1CXo&$xܦfy|zJ1cCFgAKb = ! q٘^tX.SCZ$ĹW$epG{Kg{-ŠR%b+$=!l`nIsEFe׶}8"~·og]6\{>`yPKF6hJGfSE{#tZ&) Fp5[ON#₿o_~"FwM0@'F-3pkOCzCh=5Cmvm{(xa=C'i=[LDƇ@b1fG" Qv؎wQ"--hF !آ7O_6R<ȍ?41e !&2{"BBGB! 1h{!džLY,13?Ocf)n n ̆ segb! I_v{ -,yC ;43KkeM见ke4ٍ Do;Ov$}t9˾HXͻkkҫ+HROb"Ol$6gA"<fkP1 fEhw? I-[;+1&kOŹQC[4TDOx }ʂB򸝛4hپ:5 Rʆ ixtX-titZW)8:Cb.,kSc  &nPA"a,2!1  _$!a.D7s័2e)5XL Qbdl8L70^ 8|,=!{n ,F] )~Il:,3l}=BR??b C- B՚f/ 8mzVo=#NI_73L kJ=V9hii_p?GDIQ❱z x4?D‰엣B7C74%-JdWmx*Iv?<_W2 }As^X1v wOu7I'_ֽ/e=?eT8dv E!1uw [5xEؐcQ8!QafEGha>4-=G/IAV؎g`A ̬BBX(\"a41AA1d BDa Xf'#̼17! *9>wAY1 1,<DIT_B˲Xlͦᐷ|#Um"D]WbMkZ!g>:'"5ٳNv6@=^RmyƵ &bQLMKQ )p}h6&6:>%;o D>FO|żk,1gXeЅ@lxhg1ŇlSvAxAp( sc^%>3BGph ~A,tvi >Fvv$š[; .c;GֻذwVm_[u':%ױM/ٷm1{#=]k]1$:g>_PQQ$"eOgd4'aFb QE̸<1P'j;7 {z>n/WTcQF7AYBn=3PTAck{;OG3 .*R^R2א퓣oJkjF'9l ?rn/x7o:4ͨ=ELs<#]j='md<%5:ؕ!\'[4*^?;~Fipi_M&xAEO}Mz:~ؓC > #O5oִtF-}WcEj^CľŔb"bLgl/ehKmH`\m^"QA4zϺS-z<}v&Ɔ&/ t[$$!X[:XTƆ1AA&<1c2˄,P}apYyycfg1|_ vK@X{fJ 6̈́@%)cQ;h@.9@xRM9OP[֟OYQN_ ix(:U_u˚[:;oVCfW=/ IuI6M|v,~x^m^7ʿ_t=ap__2LZ-j{;C~^D4dF{Xoc HllO :ٻmY 5 X[m?^_o# 4Ԋ_|ì,! !!HBxK xxhhc51z$! !|ӌ:73عģe/ƄZ.OSQ(pH. x?9:e:Jd{C[^K>: D'~\k i5>B4ƆQ?H+EۡeiPbt _/ zKt<G zΥ{ݶ45۴Ʈ6IPCBNg21:H}O&2xgۦΆĴٱoVܝXԲm>w_ioB A4,!1 ,  ác<?! XL1|oA''sB~zB:θw&qcd3=F`M_Juqc8!\#CwܳD-tj]aXA B Ѥ}/_WFY{ǖvʟ; O)e 7ULW[[o~EGGl*GFdBFu[ٟtZ~>OmG=ГGDg[;ٿugG2?'<(Јjv?<S ?fƀt{/>Цth%M'[iX,npGBꨗ?&$AUAc 4勠kAA naBDCcy؇2xֻӝdXyB]tƻ~* mk~<'i!5L$!a " (\`0ȆL=`LJ :(1e[*!q2㜟1a8aOC\[lӹ`^>RoU (tBGIb"h7L%Dzu4kz[]2/[F?n˞T ұ;}2V"?}sh/,Qx+L6w'Dyɖ;օx%evihhqbQ;s"k6b,] o߭5/Z)4}ff#zEpvO>AFJdΡMӿ>.m:l$kݿ{#I:>]0ZG$Vv4EY7qdq)Cbx"~&{F Oq-:eWkkG<L44wbK bc1 c1|!pQ _?cc-ba93q(~k2yQE1CF&S6skcc9^PV݆GOcG) $láY&ы )H=v˼z=Gn?A-q6yBu$Czw;Jؙ1D'P1h!O KHb h14p\Sqe;5rrK~DQMc2ZF^/<dٹ[{Az/%()?#+^N>FqFhN58Hx>Klf tEYFkBQ L)^҆YČU. n'ű00ˏѰN4o6tp=UJhJ}h1< 6[`] K ^BT'boCĭOc6Tk^Ezi/eaXt-aW_=A=.ߡY:?勡}TI ,~戈Y=~?Z*~Bj_^>]my<|H>=|5!w؞~QLiяz?V5{L?/>;2qD1WT ₈ 78SGXco#$?082MvwMEtG͏4O]{'H{F/G|LBtx+?*unt)d\i}$=oV1=OWIo_;BnqyO^{LlgO_xz+f 쩣HB엱?3ЇgbO^M j}]=To6ݲyWd~ z/Z mhb+Z-ݞfЌ]<ڷhhx:HN`c#X4b=cҜ(7גHL'Vm_.k=1B6F/L-LlX&=Up,yzrY!. xgAyc.;L\oGbB{'45>O(,"qBʛF^cqQr!f¹yTKzx=} &rh!&6 37,Ao] e؎4?=Gt>o:2eg@hj}YkϨBdTzBjMGIA E x OFhК١Fx ,'/ؐ6m U-t@}F85."h[c;Nf ;EKK 0WGA Ozv_צssęԟ5z9~26%0AH@wq%1iʉ/S))->8U5\න+K1L}lSJ/Q zC.'(R6B!Bc11c=s|R! ,|_K~.b`<^/;;&'5S 7y%~Μ:x[osoÜgkՑ΅tČ#x{n /B,l]f10w/d'Bu4/Rѡhbp<)H $S<&,cA X$5S /?D?bU!:Clcߌ1`^r&tYWu HHhb)KPϱHQۦhbW_aP zwЯmH-[erk &aL,!HB6!2cǓ(= |{9! b\)>377䜦f_y!>>i gZ425%iO<܏V6s${!]E`[K-I6n%?cxBHlP^XA*'鍝_BJi9UnڠȖz5FXq#ɎB Kfp{11cAK)ИBxW2qd e'‹Qx='L>qqpo x Bs31R8`[ؖ=EpbbhSc@-5w}6hN6ٿ%< k;at?eC!^:.'!Q:=tUЇE~[[n6:[_HqcF"BφNȽK3O~Mm])LGƧt} 6Z{2 ^=wУړoسBƗJ¨~B'Eѯx=Ote<"B)*tBƱ0Y.#?-~vSCm`j^7x˭U:!,&B& lxcycV(! k0_$ ?a+\A|/uRD/E!p?*:蘶Q1WدF7G@+[g[eD&b 9bƯshM1!dVK vv%"Fǽ!3D RY51% !E%x.B tl(o't!3a[4LD~a'7B*yCI߄4!~FUѾ~0#kǃSR#[P-{EN_7ex7%co.-x{l]c{GXO,7< #^§bd!6T~ J@?/{{ Icv_&B ` xlcɌx1ck_HX!o/|/xr\Ȯ?`> ,V>܂K,n"=7RNj@;#Ek W=<,vDB|CP8>Ӹg"WNѡed0<\x7"z:g]F\3g\}~ v{w=^LT[>[U,5CGzڃ/Z'E:.$pg6T]+찹ExسؐPԌK}ztߩy eb{^E&ٯ5 +BXXB(1 Ac$_{a 0N /:A,+|d(A1\lo̴p?Be%'#D0d52>iUԋX`A Ѭ7 MDua.LVmtSxŋOE?eŅtK= <:аɂBLpsR R'450 kX[;~.v" d:& A~GGD?!#aMq@aX,,,/c3lLJHB9OŅqk0kYC 8cð(,+!G[xߔpYcs+Y(C_{Rv512CC?bfXƓiDwbs,"p)lCbgz'Oap!dƙ(wξ7c&X^N)׎ 0Qkd|cl ꓒ a!!$zF-QҍkL  %x:,!pZc xc44=bQ= O⸼P-\&w2zR*1<~ *ƠEv]AŦϊ\`iF1bd&q$a 0}LHQzSzfLwh3A6&}TtRTٱ0[.3W1ܺOu0EQa} C*-lt6wΆ! t;Ўh[cCD!O8?pt-4]Nu؇袎[+5-iv=qD,!P,($pGH]v:.'_C5ΓHm49exbsCVBb;"X\X1Qk7_ ,,86>)&^ k!F/y3HK'tYA.hKC_dA dW_hRl)ib-Ѯ/FBQ2)v)-  kP/k B~<+ N^1#GFDD!֋舲ؠN98SCbQ} Yp7Й(ѪO/]F^6="m s s[,_BEE5$BiBޕE臻, !13[ f!1 7+/-c<1|N 'pHDv?oFdžleJ\24a#ȱ Adv'xx4"$A1ͷ]Ghg@vƄ"n$RNDq$-v-2j }b ǸYEB," }bWbw XTŇE1`S͘Zʈ= b7"dkc<l8(qMGxLx0Jk/lJwB^jL~BDN ld7zmt+8ޒ)_fO9^VSD'EL^(B!BɌf1 y&<X! \x(1gxBCx^<EqJs7|ULlc.)~ G!1! ٸاڄ# BkdL<cA!hz  obЇlLصrp;.TtQHT<`,6Avv-v5q7<,=<ΉN{{( +gc C?gMF6f^F^O=I.8EZ vc7ЋMrǁ8 EŅmnvG#:ouq>~6ѡA<|% T+(BbĄ!a b|^X1c1(7ospQB)a1⏇X/#d}AEĢ &q\qV`;G~x(#.{#r Bd;;lX4 Аio ] X^}"dW2&XlEB&)YD1haTXvt<;=hSؕDhC^%bE>Ǒ13ދ e}K?mgj?4xM<5QW f} Acl^w^>AܞbRzAt-dǑçطpha#XSq9Ez!<1 cco<66RB^ cf:!p x0\L 0llccĩXS. Hþ+(̓f=~u$n߃LD'ax&lkcK?ó|TA!q.T^@OArJxLm&%J%}?m !eH{ĐGC=G%bж6 a,BB]Lk%h G21k*x>l7]?ӫ>?j ~Po j X$ĐH1ht~J$H&~t;c[T켢5֚eiYXU>2~E[ܻ쁱iP}dW%RiOП%L 1ZOCi?JWDcI-.bbtN !@K!+V,B4!esk'1xyz=МALyc1c)p!XXBNo y8A |nYlPA1XXl~$)LxyrZŇȼBwI 2SBgщt1$EX>ʔ :v)fcj kNl}ZQ7Qbiz6 ۼmΏ)I~S i7RH'xa]ѻM# d}ֱ aR`EC ˳hlwba <B:T<4iL2/sLYYV(5%E/iC$-yiSqnO BGP%F bxC 1.  C.![ccC661 ! &a2$ 4 ǡ\\&,!Eyφc8,˭ZW#-ⰻ"ga)ZBzg6]}>z,U4۽;~<^OƐa4okG\6KιX53h_WM !66hxϯ#GH'fj}$4At2'/C+a~t3kϏ)+#Bg?eijkѴS >}^Oykr*" zcÉkP_ԉGxg`~P_<,Ի`K<aM }wtLl^X_4C1Jl%bFk~ ;6›CQp&BHBy<=c<1xcf2$4BAapXJC& NБC^Ite:z!ZQg==6.{;r~\/ɵS5C;b @k*xJ aA!hîk!'1J*aLCŅ}$@HTLS!=N )"7cE_~<*t-/hv}Le)'gzPeS{scuXjah~XNPKy$.]}!*&ơHx6ؗx>:!{]Gݳxklk:8OgO=$Sϼþ;ЍE[tIhw5cb&qjjLӳI!1ĴXK xc1clc%&!L%316\a11 +xxgx|Cj(1cC^,*W݋1!,?p]H!_hHkc{ 蚺3T;F L4_z<*Ɵd CT(z ؾ>GEjt5™JD(nB-,_ɤcEֻO~.QE 7'ϖ)&#Bk|Qؼ ^X<$4qǛ믿I t.K$M[`OD5+#ee7 /c$(HWSE#%LjV=hacZd1VN=moOׯC;: BP.+5@䟈zZhiM,P}>_hK/oFXZ 8b! +c1oxy|:8LBbdB >6<=x B7/cĘiq<9ύ;ӌlD!0lTm7 Cb Lo:BdX[thۖQ>g>УGި():<+_ȏ 㧍ڪL3LKc?Mŏ NK\\l" ]O*x+CqQ{S[hSɡGN}zͨa@xCB_4{ o76CLa{ߠ~^zJLmdB~k4 ! x,d*lJDxbf0oEgFyUFAq5dQ֊xBֽ4S ؕu4כD:X-hP}g!燬]~j ʔgI]J(XӡF|YCB /Q"aB $!,c< -a|!11 o !&ǃc>lyjȚJ1\X*~ w!nS\CB p:I埤7<+ǶC5ЯBCR"l},#O0GZZY}'f$#Lbf4p^DLj61oԟuG:!2Ѷ6@} hwAWCbw%X1IOM?" ЬWJm]f1cx1˅ B|f%5L qcA'2 2bj@ŷ!DtXjg6g^=hi"VkCpR'CV4CZ:XE)syA;^DŽǟF33Ək7zfUtf˞5&?Qiz]%7ڣ>}jn5ҀZNJa"vz1Kˠ'}"?߳ЂvG@CXrE;GCyLv-צ4%o/}6c&+'NYε}C ?IoY{$D`UdHP;OB㿤u|7!5NJgZ=8ȿ&vPe&&BZkfKT|)S UA$XYbdX<Ad %!$$A!y`{J1c cyL)`X,! <<>/&a&%Ac>? D3A"aaX!nQ4ؗŧЯ,}|eM -uxOhhbA[.(sqpTʑ/Б'o# Mz& %_TcDg/֟#Ϳ/~{=_ K-^3@3'޿&2J*zD$,/H{mnƧz&iz,E]rE;} d^<`- @u[Ldס4eEШGWdzʉA[ )v'Bx 2eķnB`w&؟] xٵlJP7c{ v_^ ?/qhsBAGJQXϪLODfݗ~ȗEK&hhxНGXxKО@k7]o7!#(x7:tU*[ehr$5eOc#gE6SV"m=ΟcPYdT_鉽a&),AE ʢBB,wɬAc1p 6^/1cō1 ,"pyycLLBhL܅2p1Oh,Q@*y\f4$/kBHcz>}0tlލt44 e/R)ڄؗXWGذཊww_@xY(]QbN4o߰^C nQu->5=|ɕ:ISzxu7w$7&'XگiFkGGp=K)C~N3U pLLM[Mv =Ѡxcd}1-R/bN?AghmضHJhߞB6gA A]܆D?Cgk6}lr +cڟqBo&C5CQ/-NjAq(!!!!!q/xc & 2. )J\җ1И!dAdB?|R'B' ɇA"b? cAƘnDe;df{ м)aA&}@-~$n ! Sj 1TB~ɑCp-+BbxBgYO4)Fc|:{/" - I]$#%dǼS<]D <_W:7Br;FŧfyLΎxߘ3TC:6'<?<;AoA, )hM+**?"SѪIlB-0M$5ǩxvZq({Q n/ go18jN¨MH$UOGjCyt=CR4he؞~*HR&7P9ZƸQD(BY>/,cCcD!1 8bYK 4.h/'1y1XBBBX,B61&!DBn# 1򠅍`E08 8$B )MepbA7QHBhA47} ؙma}*(TYNhE:؟^oftbQ?=zgv~'KH}ᨕ;FAϰ}"K \嶙>ص6nYJt'wA/c~c$ j㷣0"\z /#b4#Eedb嚏N'ű obHB(-,-5ɦ>p_PqJZbgľF{'OC?{״?lbQCTv%4SO#V'£GZ./[B<OBneSЩO %vHc ` QYBx1c<!1! )$ ! C9a.P!A3wL:Kb/O)L̖z\t^ QJ:DC44t ;lB\Z%gZT3[t_;w0_4} ٠⟾4pWß;3A )ADȣBFҍeRDsc$UfՉMa wB;l~tŇ B߷OSGsB<#bbշFz;kfѧ 'UP={K MA[% i!F48}oP;cOhАjPQ=6Cxb:O}i^))k C1/xKcMt","?Bo>ё"j%8{*򞘚l h1axbh1((b\8Xǡc ƈ1& 0&'%Ɣ'1CB bDȘ!!B>3q^+̰ 1i*Ea/[BsUQ$A&obĨV8P^fĠ~!;'*ow)WBtLLO ^e1(= 2$&v"E76™!Fk3#E϶A qstD6 vE6?z-]4'-hT 2oOܥE~*"4H?{*⸻(W#BC ubhyf ˾Ƅ$ sN"ycoh^Gi> jukhb%%} ՞B)-/e9 -xɛCc` @Q ^=ew୍cDAqQ0&A!e _;51BbXD& $A"!qrǖ<1 a!!,/A3昄!3LWQQXEq(0ep+QɄGHT"VuuǾ3>$bOzG6#yl]4F g6  !┼Rd~!g TObп؍o+7{*FS]_y[mŇe*y:Sb?It/=&E%pndEhnGHK&D颬_)D)C; Ejv7Q8t/OZǵǓEX~66A8&njcZʹ!BD 8; C3d Q={-;RE%}غq򂀌cЂ`A2  |džLHB\MBa"b`Б8%Oe OhhB y B,/ư2/n**,)  A,rH /#A_c ƣR5~B6$ěUxm-"bbb&%Oc`e䅋ǡ2Ე! k5|_zR}W}E Xj~WB?$(vX]YB{hkayeb^˲4L^i 4D1٩%G`#ڏv75<1B`)?M->EQRi(I 谗gal'(Ca4z%g!ֺm^YSH 7HybdH}އzΟ],O,MwސO;&[ /$ 鲘rC A?ГuԆe/" %B\;H4?bYp#P]_Lcomhbܽ *}e=-Qf 4ފx} F9 74CEQNr 6v%du0GBLWlQ}@HQ&AaXK1c-` &X3B'Aj  DX Gy 8cEϸ٩R4n$<(L$U;4c~$2Gv{2;vnL7mvD,Л +=/&ⰲw ñ4DUؿt=Ⱦ#znAH,cu#؍O"WQvm%y;%o= 5y]V'A%ooژ"yAx#S:i)-<=Te W6cnDAZO;?Jb F*񡣱Rǰ!*h8+ BX?v6xFdĖNJ,z!B`6{ I tĐ*G&C^_NmײocJ~ Og`-7GB4ޅNݿ"qxcAqL a,%ba1 jxhj h A2H&w/ !8!%A!D?L_f|SEJ 00˟ۜ)0'0le]7bcnwv?fIf处Oa hfX:[mLn+๥(^LM^Xs})b.B$.?oe=av6#% jl{r s{Uz.tǬ izIiau< d]nH&'ױё&:5xr'FZzj}X߳T8=DA;eoD5AD4/>3I BR7*)Bׁ(=DЃ=DX$h1f_ H롲"y ESތXTCﱨ=[OIscNDK | % Lj<!1JB"a K3B<5Nhhd! ͍k'?a?a؆4 u EbughflR<Z5҅Еv%E1NuH5'BҟƆuFmƪhߒ.!PF˜,=ٿ!?P|a_PWo"x]iĄY{#WoH%+`ٸ+!a"OtR^y5$ig(ח/]AXAIoLcY`¬ڎ֐I6*wlӍh>[N<(hl8TO3Iì!6C=&Sp8#`ű}=*[KgDcFvswȷhCfHGI=NQiZ⍫^BxcQEAʂ_4|& Bf%:118a/0cD DB<|ӕV!e-U(ٶjJC߁)8LRt; LJ!:eu];4(qI٬MtGhL"kQ ɏKhi*\qoĘ) xn憇j= _HAZwE&KU蹱Ҽ,ڣc|# 4\OC2+F,m{)3Lډ4c-[wc>1!! "esc?2͘m,X<ˈ~z>6EBBbŘoC_WE"؞%ZdtA-Bя&wIǽw gOA(J'H= zExMe,:*&(C*[ :i\/;,\>7?:e{X?\Jǹ^߿NᕾiZ1B#5LZj6K#$nݿ4B 66;bc!?"bAa7CaBK*6.ƐI<757i:p%8<kۣ4TA?>%GNTHD* K XKc4L' Ƴ1A!g<44<񘿊GE"0Z/4bXB} }5x!3HbtIc-w :5ō*gO@z)3ihQgJ+497cNQ#H+whAlBLLBaFxdQ&bwި ]ӹ$q="lV%oHf~u%"Yh|ߏʞƠDKQ~&B5_ԕe:Ri +O]E4 裶Bug*_c\&8)d>,퉽4C's2 0 D,dlRݱ؅b%q J!V&x<зM))$=M#ZiiB0Ѝ_ K/H$>" (LMGCD!1$t,%JB d:&VdPIX,LK YaW1eiBD,`!\H'rI+_B??>/0Xj/#07lK:itIh҃7gPba;))tAANWٴTR?bkm ]:}_cpc8ŻOfbky?*1lE-Jx:itPC}3?o!>АLßJ1ǯ5*4 o#/u+j ڛZciC4b66kEPB &/<yb?kA<1$_|o14ơbmѡ=~#jX~}{(HBŁO=$9质d}Cg.ՉogFc?@>!6K:췑qb -$l^XĄxcS21AHL,Aebrx&`Bbh'Of! K i͓gSb<⸪_,H!Qx)(EfKbsOBLeZcQ"oூ^WފLJ᱌]t7ũvZ'Gv5`^C4<]h:"CИvM 7LGq#; ƶ/L&q= K^һhn)DO{bHWV:z CH(I #&4LsmbCwq+zײv7ơW-}bzD:쎽֯j>Bo xj1qhci2cCdlyoDZje{CT~c/T- GF^Yo4Ŭk5=BBЗL]̔|Yd6wDd&B x<(₋&'1=fxX LffXXL44AqaBaK3d'8LNS K7"8S#$..hX1ȥ &Wh4%$[=HR?#u Ǧ{d%d2F`Pu ծ+z5u^-z7[ LMOK+=_B;Q'ؽGsI] B]ݡ=OJOCCdEqy)jcSB{_l~Q2t.ֆwPO/؅<Ft;JA_HntBBYN{x o&D:c;\ejkM=R57;`7COԔ-WпbNw䮎&Ѷ෰e1/*LlѢHIḋf@=ZD+? cYD.3b h!)LB`b?|Y!N,A RC9' k*|I`V)if Ggjjb3xQ2.MQ;/Hi%zU) ؽ,-I`wg9 viekct0t g9Nwα&MRv -1Zӭ#M>6bج+:!lt"ݏsK-+O^_ ayQ—vЦmHCT&q{誱ě+7?x,D? З7M 6h?u'X7;n'''[Ο0$-/L1cAS:Z! %8!z&f!301>N9f|H\Iq' hO~3 ccwA\Dd\qKq6^Qlؑ(6gf}BG3jZJ蟐S-[Ee`4!=vhOh DO_EF83CA[D"((+ASc݉?8!dZt?_~{_S =yaS_Dm5OZθ3ڮZ{^ֿ'϶,NoA9hZv֝+/ӋKgCBYb} B=ih"%lH]Cgf0VolVk|E6#KHhZ&~TCB n2NJ 4Dg="^Aط4ogJv-PіWv3B Oc?5DmɘBg9 e +'D/|O,,^o䫉B19BB=c{>p K LDN F'_Al]pEtBo<@6fHQM.ďc3^tPAȋ:ДtwKT!;a?YGp}EKޱA]qrbbd_d/+(/g))'ECOZ칋nGl{RQ;kLVhM b{V)AM7;lUq&aݧٲ <2M}6;Cb03ti F66n5Ѣ~Y)xEˈ^wQ'}  W1c 䜞L1윦&!8!318Nw/C V?X7;Q(iqꝡ UA+zket44z,>.-]B'b4WGClѿG{փ!WfT{<4- 15 ѰǞ/b}C=cϒzKB&"SY-З+vfd:>ɡ>xMƙ^ѳB !KNtO>-cB3tGg=:xq)qZ6إ,M{l#Fz~ej6t6_Gݱ{>% gHΥ|oI(h;hK;u4Kyׇa%V΁-c(vAu"ۇm?ӎgjC쨓q h1`:)khXB&!Bq㱮 _r>&ûwG W˄`z|!_ (AP jj4'2˂~N5oxL\B,ܢLج]ck'Q0 s>ˆCQpBlRi_t=Cpjw= isp\(fP v!GCRM">tn׋%XߡHJ;v yOl!j/l"9k8D-6=֛Y){b;dN?%gB&5 ),kc F+ {؟38KH?ݗ}1(oD_A1!9BgH5s)11oD̸_)~Bc\WroacW+-d >{(d& CG!\(/n45 G-[5'CtQ-: 0l$6[\}@3cEA#ҾGLQ oR:ƞ2G<鰽r "ϺIN [ 5ׇ&ԉ%tuJ%Dnlzب!/7ۻ3Hn;#JyQOChY\1hxEȆl= {"&(A%@_^X?>7LpB1 OĿ D7|7c>b[ [ pXZŲ8,hלZ" (e (yb0+t:7F =^Н.Z6 7?n}}ũQrX \~%~ɣg6Ffwt.E;"HkL_cMسl' ^KV١ݏLcf^{ðQ=²a" @9,c05~E>iLO̼>gy,ߍ0&A4Ȅ%,2!y!H5ha pt\6Q ⏱aXDLBɡEh1@&7RWx- SWf% /B*&#&b6/ѣN>Bt*%@Gg~ BEB̂~2{! ݊BH ׃\G] +>4BɂVP5Blz&w"1 _㜡1>HJBbpoe\o'.46by6q <6)6hk Fzb"ђ x1p)KT5 ŒbP6%xLO0OBtv&1'?Њ"Ѝh^|TY%x gEN;.X:|[e<~E}]uz',6C}0KݣDkjwqaš*&@AppZYX<)Kq1h?lR3e㵒ѱ\,!K 4 %fH#6?:K &;)f|;_uݲ/ZB_<\x‰t$;Hbj Ef7ꎽC1kXB[B!tqhY+q.@甋F$lq~_xcfr|8ω_.norhOpQKʆcΉ%x[xD4E˱.W+7Ώ Cn͊k1[Bce;61u)`Ԣg  )P1 £¢nV޿|Ylo.ѴئEYӇh߱5-$u΍oDA?)`5V &<"!-i!(4=lJtloLVGV? |N/>(>~ R^o 1:'— Ҕ)JRXL !1 b1/^W/5i;XLLLeD- 1 ēECF4QI}æS&.t'`eU~1J\Od$W5+ FW#ZTY{_B1K/[ߣ=G "T>tâX :lut/ϼ/;1lx0;: J_l. )/ 1 l)0"DU:\RXwxSEp0ak,"D؂` *!;+/9&JMܺ٠{D?4[/O!aa(k~cz:&ZYq%x]ZO<[\KѶJݼ&/w1gF޿ppbQ 7wxj~:^+᱌la8|S)u+RyQpSa?—iJR~h<1 &lͩ;.(iaqJRE(xߍ6 {d!ذЋAxjb<ȑF@E4g҈ 5;PXnO`NLLzb ψjs; eEbvЇh7pF<<5S`XhXgE&;Qe.2ä"=jlMyfCs&~^B F.L#K~k 7Ӈd;FmOJ?qe6(Sm&vb]E  7^F@ؐvlZ[&D4ty k‚נ?f~ \)Kla Oa8?œ1>\җ/ oa1_zʣc` 0r !1}hóax#:bt<1!,e^Ӣ鎘-:/we0pLW.bo7 %*{x'Bg6cf mkymw=WЭE.~%]p7KBrq2-i/()XS%GX hZ&KE*/|( #^c] !}{]E)J\R)J^J\RlcccaaLNo|Jw+%^O c'Y?9c)xL BBBX*$O/g򸬬!X举O xB ДpW`K膒 Qc8,tnhoFt&؎6;7 nT3Z!r?x\e)pa\UߡljZP5f81]!=?yjEy_F8M^&xDqfZp(!,#Ҽ?hX샤F%t˭)JR)JR/ R)K—llllllllocc 818?_wq1q7yxcDglQm,Q " $$L[x{*t^ )&!> )K lz!!X 5:HLvlGCm쨈n^'[' onEj!G#4bлyAE- 3Lz[%7RHN2{x}t ]t5?bnԿc`Gf4$_QYB0:V7;SO/%!$tl4!({ރ JAF(DiF;'GۣkD蘞=Q횹lC.4y/CD-} R4)JR)KR┥)JRcccccccc 60c)oC'.w|C,|md:ز4$BaoHX\(A3D!8B $.][z/71&-YBA~vz=:"jA٠E5J~EĄ!3x fæ&6t+g;H5T7lҡym7JJ]|------------*/ function Error($error) { global $DB, $ibforums, $skin_universal; //INIT is passed to the array if we've not yet loaded a skin and stuff if ( $error['INIT'] == 1) { $DB->query("SELECT s.*, t.template, c.css_text FROM ibf_skins s LEFT JOIN ibf_templates t ON (t.tmid=s.tmpl_id) LEFT JOIN ibf_css c ON (s.css_id=c.cssid) WHERE s.default_set=1"); $ibforums->skin = $DB->fetch_row(); $ibforums->session_id = $this->my_getcookie('session_id'); $ibforums->base_url = $ibforums->vars['board_url'].'/index.'.$ibforums->vars['php_ext'].'?s='.$ibforums->session_id; $ibforums->skin_rid = $ibforums->skin['set_id']; $ibforums->skin_id = 's'.$ibforums->skin['set_id']; if ($ibforums->vars['default_language'] == "") { $ibforums->vars['default_language'] = 'ar'; } $ibforums->lang_id = $ibforums->member['language'] ? $ibforums->member['language'] : $ibforums->vars['default_language']; if ( ($ibforums->lang_id != $ibforums->vars['default_language']) and (! is_dir( ROOT_PATH."lang/".$ibforums->lang_id ) ) ) { $ibforums->lang_id = $ibforums->vars['default_language']; } $ibforums->lang = $this->load_words($ibforums->lang, "lang_global", $ibforums->lang_id); $ibforums->vars['img_url'] = 'style_images/' . $ibforums->skin['img_dir']; $skin_universal = $this->load_template('skin_global'); } $ibforums->lang = $this->load_words($ibforums->lang, "lang_error", $ibforums->lang_id); list($em_1, $em_2) = explode( '@', $ibforums->vars['email_in'] ); $msg = $ibforums->lang[ $error['MSG'] ]; if ($error['EXTRA']) { $msg = preg_replace( "/<#EXTRA#>/", $error['EXTRA'], $msg ); } $html = $skin_universal->Error( $msg, $em_1, $em_2); //----------------------------------------- // If we're a guest, show the log in box.. //----------------------------------------- if ($ibforums->member['id'] == "" and $error['MSG'] != 'server_too_busy' and $error['MSG'] != 'account_susp') { $html = str_replace( "", $skin_universal->error_log_in($_SERVER['QUERY_STRING']), $html); } //----------------------------------------- // Do we have any post data to keepy? //----------------------------------------- if ( $ibforums->input['act'] == 'Post' OR $ibforums->input['act'] == 'Msg' OR $ibforums->input['act'] == 'calendar' ) { if ( $_POST['Post'] ) { $post_thing = $skin_universal->error_post_textarea($this->txt_htmlspecialchars($this->txt_stripslashes($_POST['Post'])) ); $html = str_replace( "", $post_thing, $html ); } } $print = new display(); $print->add_output($html); $print->do_output( array( OVERRIDE => 1, TITLE => $ibforums->lang['error_title'], ) ); } function board_offline() { global $DB, $ibforums, $root_path, $skin_universal; $ibforums->lang = $this->load_words($ibforums->lang, "lang_error", $ibforums->lang_id); $msg = preg_replace( "/\n/", "
", stripslashes($ibforums->vars['offline_msg']) ); $html = $skin_universal->board_offline( $msg ); $print = new display(); $print->add_output($html); $print->do_output( array( OVERRIDE => 1, TITLE => $ibforums->lang['offline_title'], ) ); } /*-------------------------------------------------------------------------*/ // Variable chooser /*-------------------------------------------------------------------------*/ function select_var($array) { if ( !is_array($array) ) return -1; ksort($array); $chosen = -1; // Ensure that we return zero if nothing else is available foreach ($array as $k => $v) { if (isset($v)) { $chosen = $v; break; } } return $chosen; } } // end class //###################################################### // Our "print" class //###################################################### class display { var $to_print = ""; //------------------------------------------- // Appends the parsed HTML to our class var //------------------------------------------- function add_output($to_add) { $this->to_print .= $to_add; //return 'true' on success return true; } //------------------------------------------- // Show Last x topics [Zajil] //------------------------------------------- function show_last_topics() { global $DB, $ibforums; include($ibforums->vars['base_dir']."zHacks/conf_lasttopics.php"); if ($topics_vars['last_topics_on']==1){ $excepts=explode(",",$topics_vars['excepted_forums']); $condition=""; foreach($excepts as $except){ $condition.="forum_id!='".trim($except)."' AND "; } $condition=substr($condition,0,-4); $SQL="SELECT title,tid,starter_name,last_poster_name,last_post,views,posts,forum_id FROM ibf_topics WHERE $condition ORDER BY last_post DESC LIMIT 0,".$topics_vars['topics_no']; $DB->query($SQL); if ($DB->get_num_rows()){ $topics=""; $counter=0; while( $row = $DB->fetch_row() ){ $t_link="
".$row['title'].""; $topics.=str_replace("{topic}",$t_link,$topics_vars['l_entry_txt']); $topics=str_replace("{num}",$counter,$topics); $counter++; } $topics=str_replace("{topics}",$topics,$topics_vars['l_outline_txt']); } return $topics; } } //------------------------------------------- // Parses all the information and prints it. //------------------------------------------- function do_output($output_array) { global $DB, $Debug, $skin_universal, $ibforums; // Note, this is designed to allow IPS validate boards who've purchased copyright removal / registration . The order number // is the only thing shown and the order number is unique to the person who paid and is no good to anyone else. // Showing the order number poses no risk at all - the information is useless to anyone outside of IPS. if ( $ibforums->input['ipscheck'] ) { if ( $ibforums->input['ipscheck'] == 'copy' ) { flush(); print preg_replace( "/^(\d+?)-(\d+?)-(\d+?)-(\d+?)$/", "\\2", $ibforums->vars['ipb_copy_number'] ); exit(); } else if ( $ibforums->input['ipscheck'] == 'reg' ) { flush(); print preg_replace( "/^(\d+?)-(\d+?)-(\d+?)-(\d+?)-(\d+?)$/", "\\2", $ibforums->vars['ipb_reg_number'] ); exit(); } } $TAGS = $DB->query("SELECT macro_value, macro_replace FROM ibf_macro WHERE macro_set={$ibforums->skin['macro_id']}"); $ex_time = sprintf( "%.4f",$Debug->endTimer() ); $query_cnt = $DB->get_query_cnt(); if ($DB->obj['debug']) { flush(); print "mySQL Debugger"; print $ibforums->debug_html; print ""; exit(); } $input = ""; $queries = ""; $sload = ""; $gzip_status = $ibforums->vars['disable_gzip'] == 1 ? $ibforums->lang['gzip_off'] : $ibforums->lang['gzip_on']; if ($ibforums->server_load > 0) { $sload = '  [ Server Load: '.$ibforums->server_load.' ]'; } //+---------------------------------------------- if ($ibforums->vars['debug_level'] > 0) { $stats = "
[ : $ex_time ]   [ : $query_cnt ]   [ $gzip_status ] $sload
\n"; } //+---------------------------------------------- if ($ibforums->vars['debug_level'] >= 2) { $stats .= "
\n
\n
FORM and GET Input
\n"; while( list($k, $v) = each($ibforums->input) ) { $stats .= "$k = $v
\n"; } $stats .= "
\n
"; } //+---------------------------------------------- if ($ibforums->vars['debug_level'] >= 3) { $stats .= "
\n
\n
Queries Used
"; foreach($DB->obj['cached_queries'] as $q) { $q = htmlspecialchars($q); $q = preg_replace( "/^SELECT/i" , "SELECT" , $q ); $q = preg_replace( "/^UPDATE/i" , "UPDATE" , $q ); $q = preg_replace( "/^DELETE/i" , "DELETE", $q ); $q = preg_replace( "/^INSERT/i" , "INSERT" , $q ); $q = str_replace( "LEFT JOIN" , "LEFT JOIN" , $q ); $q = preg_replace( "/(".$ibforums->vars['sql_tbl_prefix'].")(\S+?)([\s\.,]|$)/", "\\1\\2\\3", $q ); $stats .= "$q
\n"; } $stats .= "
\n
"; } /********************************************************/ // NAVIGATION $nav = $skin_universal->start_nav(); $nav .= "{$ibforums->vars['board_name']}"; if ( empty($output_array['OVERRIDE']) ) { if (is_array( $output_array['NAV'] ) ) { foreach ($output_array['NAV'] as $n) { if ($n) { $nav .= "<{F_NAV_SEP}>" . $n; } } } } $nav .= $skin_universal->end_nav(); //--------------------------------------------------------- // CSS //--------------------------------------------------------- if ( $ibforums->skin['css_method'] == 'external' ) { $css = $skin_universal->css_external($ibforums->skin['css_id'], $ibforums->skin['img_dir']); } else { $css = $skin_universal->css_inline( str_replace( "<#IMG_DIR#>", $ibforums->skin['img_dir'], $ibforums->skin['css_text'] ) ); } //--------------------------------------------------------- $extra = ""; $ur = '(U)'; if ( $ibforums->vars['ipb_reg_number'] ) { $ur = '(R)'; if ( $ibforums->vars['ipb_reg_show'] and $ibforums->vars['ipb_reg_name'] ) { $extra = ""; } } // Yes, I realise that this is silly and easy to remove the copyright, but // as it's not concealed source, there's no point having a 1337 fancy hashing // algorithm if all you have to do is delete a few lines, so.. // However, be warned: If you remove the copyright and you have not purchased // copyright removal, you WILL be spotted and your licence to use Invision Power Board // will be terminated, requiring you to remove your board immediately. // So, have a nice day. // // $copyright = "\n\n"; if ($ibforums->vars['ips_cp_purchase']) { $copyright = ""; } $copyright .= $extra; // Awww, cmon, don't be mean! Literally thousands of hours have gone into // coding Invision Power Board and all we ask in return is one measly little line // at the bottom. That's fair isn't it? // No? Hmmm... // Have you seen how much it costs to remove the copyright from UBB? o_O /********************************************************/ // Build the board header $this_header = $skin_universal->BoardHeader(); // Show rules link? if ($ibforums->vars['gl_show'] and $ibforums->vars['gl_title']) { if ($ibforums->vars['gl_link'] == "") { $ibforums->vars['gl_link'] = $ibforums->base_url."act=boardrules"; } $this_header = str_replace( "", $skin_universal->rules_link($ibforums->vars['gl_link'], $ibforums->vars['gl_title']), $this_header ); } //--------------------------------------- // Build the members bar //--------------------------------------- if ($ibforums->member['id'] == 0) { $output_array['MEMBER_BAR'] = $skin_universal->Guest_bar(); } else { $pm_js = ""; if ( ($ibforums->member['g_max_messages'] > 0) and ($ibforums->member['msg_total'] >= $ibforums->member['g_max_messages']) ) { $msg_data['TEXT'] = $ibforums->lang['msg_full']; } else { $ibforums->member['new_msg'] = $ibforums->member['new_msg'] == "" ? 0 : $ibforums->member['new_msg']; $msg_data['TEXT'] = sprintf( $ibforums->lang['msg_new'], $ibforums->member['new_msg']); } //--------------------------------------- // Do we have a pop up to show? //--------------------------------------- if ($ibforums->member['show_popup']) { $DB->query("UPDATE ibf_members SET show_popup=0 WHERE id={$ibforums->member['id']}"); if ( $ibforums->input['act'] != 'Msg' ) { $pm_js = $skin_universal->PM_popup(); } } if ( ($ibforums->member['is_mod']) or ($ibforums->member['g_is_supmod'] == 1) ) { $mod_link = $skin_universal->mod_link(); } $admin_link = $ibforums->member['g_access_cp'] ? $skin_universal->admin_link() : ''; $valid_link = $ibforums->member['mgroup'] == $ibforums->vars['auth_group'] ? $skin_universal->validating_link() : ''; if ( ! $ibforums->member['g_use_pm']) { $output_array['MEMBER_BAR'] = $skin_universal->Member_no_usepm_bar($admin_link, $mod_link, $valid_link); } else { $output_array['MEMBER_BAR'] = $pm_js . $skin_universal->Member_bar($msg_data, $admin_link, $mod_link, $valid_link); } } if ($ibforums->vars['board_offline'] == 1) { $output_array['TITLE'] = $ibforums->lang['warn_offline']." ".$output_array['TITLE']; } //--------------------------------------- // Get the template //--------------------------------------- $ibforums->skin['template'] = str_replace( "<% CSS %>" , $css , $ibforums->skin['template']); $ibforums->skin['template'] = str_replace( "<% JAVASCRIPT %>" , "" , $ibforums->skin['template']); $ibforums->skin['template'] = str_replace( "<% TITLE %>" , $output_array['TITLE'] , $ibforums->skin['template']); $ibforums->skin['template'] = str_replace( "<% BOARD %>" , $this->to_print , $ibforums->skin['template']); $ibforums->skin['template'] = str_replace( "<% STATS %>" , $stats , $ibforums->skin['template']); $ibforums->skin['template'] = str_replace( "<% GENERATOR %>" , "" , $ibforums->skin['template']); $ibforums->skin['template'] = str_replace( "<% COPYRIGHT %>" , $copyright , $ibforums->skin['template']); $ibforums->skin['template'] = str_replace( "<% BOARD HEADER %>" , $this_header , $ibforums->skin['template']); $ibforums->skin['template'] = str_replace( "<% NAVIGATION %>" , $nav , $ibforums->skin['template']); $ibforums->skin['template'] = str_replace( "<% LASTTOPICS %>" , $this->show_last_topics(), $ibforums->skin['template']); if ( empty($output_array['OVERRIDE']) ) { $ibforums->skin['template'] = str_replace( "<% MEMBER BAR %>" , $output_array['MEMBER_BAR'], $ibforums->skin['template']); } else { $ibforums->skin['template'] = str_replace( "<% MEMBER BAR %>" , $skin_universal->member_bar_disabled(), $ibforums->skin['template']); } //+-------------------------------------------- // Stick in chat link? top_site_list_integrate //+-------------------------------------------- if ($ibforums->vars['chat_account_no']) { $ibforums->vars['chat_height'] += $ibforums->vars['chat_poppad'] ? $ibforums->vars['chat_poppad'] : 50; $ibforums->vars['chat_width'] += $ibforums->vars['chat_poppad'] ? $ibforums->vars['chat_poppad'] : 50; $chat_link = ( $ibforums->vars['chat_display'] == 'self' ) ? $skin_universal->show_chat_link_inline() : $skin_universal->show_chat_link_popup(); $ibforums->skin['template'] = str_replace( "", $chat_link, $ibforums->skin['template'] ); } //+-------------------------------------------- // Stick in TSL link? //+-------------------------------------------- if ($ibforums->vars['top_site_list_integrate']) { $ibforums->skin['template'] = str_replace( "", $skin_universal->show_tsl_link_inline(), $ibforums->skin['template'] ); } //+-------------------------------------------- //| Get the macros and replace them //+-------------------------------------------- while ( $row = $DB->fetch_row($TAGS) ) { if ($row['macro_value'] != "") { $ibforums->skin['template'] = str_replace( "<{".$row['macro_value']."}>", $row['macro_replace'], $ibforums->skin['template'] ); } } $ibforums->skin['template'] = str_replace( "<#IMG_DIR#>", $ibforums->skin['img_dir'], $ibforums->skin['template'] ); /*$ibforums->skin['template'] = preg_replace( "#img\s+?src=[\"'](?!http://)(.+?)[\"'](.+?)?>#is", "img src=\"http://domain.com/\\1\"\\2>", $ibforums->skin['template'] );*/ //--------------------------------------- // Close this DB connection //--------------------------------------- $DB->close_db(); //--------------------------------------- // Start GZIP compression //--------------------------------------- if ($ibforums->vars['disable_gzip'] != 1) { $buffer = ob_get_contents(); ob_end_clean(); ob_start('ob_gzhandler'); print $buffer; } $this->do_headers(); print $ibforums->skin['template']; exit; } //------------------------------------------- // print the headers //------------------------------------------- function do_headers() { global $ibforums; if ($ibforums->vars['print_headers']) { @header("HTTP/1.0 200 OK"); @header("HTTP/1.1 200 OK"); @header("Content-type: text/html"); if ($ibforums->vars['nocache']) { @header("Cache-Control: no-cache, must-revalidate, max-age=0"); @header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); @header("Pragma: no-cache"); } } } //------------------------------------------- // print a pure redirect screen //------------------------------------------- function redirect_screen($text="", $url="", $override=0) { global $ibforums, $skin_universal, $DB; if ($ibforums->input['debug']) { flush(); exit(); } if ( $override != 1 ) { if ( $ibforums->base_url ) { $url = $ibforums->base_url.$url; } else { $url = "{$ibforums->vars['board_url']}/index.{$ibforums->vars['php_ext']}?".$url; } } $ibforums->lang['stand_by'] = stripslashes($ibforums->lang['stand_by']); //--------------------------------------------------------- // CSS //--------------------------------------------------------- if ( $ibforums->skin['css_method'] == 'external' ) { $css = $skin_universal->css_external($ibforums->skin['css_id'], $ibforums->skin['img_dir']); } else { $css = $skin_universal->css_inline( str_replace( "<#IMG_DIR#>", $ibforums->skin['img_dir'], $ibforums->skin['css_text'] ) ); } $htm = $skin_universal->Redirect($text, $url, $css); $TAGS = $DB->query("SELECT macro_value, macro_replace FROM ibf_macro WHERE macro_set='{$ibforums->skin['macro_id']}'"); while ( $row = $DB->fetch_row($TAGS) ) { if ($row['macro_value'] != "") { $htm = str_replace( "<{".$row['macro_value']."}>", $row['macro_replace'], $htm ); } } $htm = str_replace( "<#IMG_DIR#>", $ibforums->skin['img_dir'], $htm ); // Close this DB connection $DB->close_db(); // Start GZIP compression if ($ibforums->vars['disable_gzip'] != 1) { $buffer = ob_get_contents(); ob_end_clean(); ob_start('ob_gzhandler'); print $buffer; } $this->do_headers(); echo ($htm); exit; } //------------------------------------------- // print a minimalist screen suitable for small // pop up windows //------------------------------------------- function pop_up_window($title = 'Invision Power Board', $text = "" ) { global $ibforums, $skin_universal, $DB; //--------------------------------------------------------- // CSS //--------------------------------------------------------- if ( $ibforums->skin['css_method'] == 'external' ) { $css = $skin_universal->css_external($ibforums->skin['css_id'], $ibforums->skin['img_dir']); } else { $css = $skin_universal->css_inline( str_replace( "<#IMG_DIR#>", $ibforums->skin['img_dir'], $ibforums->skin['css_text'] ) ); } $html = $skin_universal->pop_up_window($title, $css, $text); $TAGS = $DB->query("SELECT macro_value, macro_replace FROM ibf_macro WHERE macro_set='{$ibforums->skin['macro_id']}'"); while ( $row = $DB->fetch_row($TAGS) ) { if ($row['macro_value'] != "") { $html = str_replace( "<{".$row['macro_value']."}>", $row['macro_replace'], $html ); } } $html = str_replace( "<#IMG_DIR#>", $ibforums->skin['img_dir'], $html ); $DB->close_db(); if ($ibforums->vars['disable_gzip'] != 1) { $buffer = ob_get_contents(); ob_end_clean(); ob_start('ob_gzhandler'); print $buffer; } $this->do_headers(); echo ($html); exit; } } // END class //###################################################### // Our "session" class //###################################################### class session { var $ip_address = 0; var $user_agent = ""; var $time_now = 0; var $session_id = 0; var $session_dead_id = 0; var $session_user_id = 0; var $session_user_pass = ""; var $last_click = 0; var $location = ""; var $member = array(); // No need for a constructor function authorise() { global $DB, $INFO, $ibforums, $std, $HTTP_SERVER_VARS; //------------------------------------------------- // Before we go any lets check the load settings.. //------------------------------------------------- if ($ibforums->vars['load_limit'] > 0) { if ( file_exists('/proc/loadavg') ) { if ( $fh = @fopen( '/proc/loadavg', 'r' ) ) { $data = @fread( $fh, 6 ); @fclose( $fh ); $load_avg = explode( " ", $data ); $ibforums->server_load = trim($load_avg[0]); if ($ibforums->server_load > $ibforums->vars['load_limit']) { $std->Error( array( 'LEVEL' => 1, 'MSG' => 'server_too_busy', 'INIT' => 1 ) ); } } } else { if ( $serverstats = @exec("uptime") ) { preg_match( "/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/", $serverstats, $load ); $ibforums->server_load = $load[1]; } } } //-------------------------------------------- // Are they banned? //-------------------------------------------- if ($ibforums->vars['ban_ip']) { $ips = explode( "|", $ibforums->vars['ban_ip'] ); foreach ($ips as $ip) { $ip = preg_replace( "/\*/", '.*' , preg_quote($ip, "/") ); if ( preg_match( "/^$ip/", $ibforums->input['IP_ADDRESS'] ) ) { $std->Error( array( 'LEVEL' => 1, 'MSG' => 'you_are_banned', 'INIT' => 1 ) ); } } } //-------------------------------------------- $this->member = array( 'id' => 0, 'password' => "", 'name' => "", 'mgroup' => $INFO['guest_group'] ); //-------------------------------------------- // no new headers if we're simply viewing an attachment.. //-------------------------------------------- if ( $ibforums->input['act'] == 'Attach' ) { return $this->member; } $HTTP_SERVER_VARS['HTTP_USER_AGENT'] = $std->clean_value($HTTP_SERVER_VARS['HTTP_USER_AGENT']); $this->ip_address = $ibforums->input['IP_ADDRESS']; $this->user_agent = substr($HTTP_SERVER_VARS['HTTP_USER_AGENT'],0,50); $this->time_now = time(); //------------------------------------------------- // Manage bots? (tee-hee) //------------------------------------------------- if ( $ibforums->vars['spider_sense'] == 1 ) { $remap_agents = array( 'googlebot' => 'google', 'slurp@inktomi' => 'inktomi', 'ask jeeves' => 'jeeves', 'lycos' => 'lycos', 'whatuseek' => 'wuseek', 'ia_archiver' => 'Archive_org', ); if ( preg_match( '/(googlebot|slurp@inktomi|ask jeeves|lycos|whatuseek|ia_archiver)/i', $HTTP_SERVER_VARS['HTTP_USER_AGENT'], $match ) ) { $DB->query("SELECT * from ibf_groups WHERE g_id=".$ibforums->vars['spider_group']); $group = $DB->fetch_row(); foreach ($group as $k => $v) { $this->member[ $k ] = $v; } $this->member['restrict_post'] = 1; $this->member['g_use_search'] = 0; $this->member['g_email_friend'] = 0; $this->member['g_edit_profile'] = 0; $this->member['g_use_pm'] = 0; $this->member['g_is_supmod'] = 0; $this->member['g_access_cp'] = 0; $this->member['g_access_offline'] = 0; $this->member['g_avoid_flood'] = 0; $this->member['id'] = 0; $ibforums->perm_id = $this->member['g_perm_id']; $ibforums->perm_id_array = explode( ",", $ibforums->perm_id ); $ibforums->session_type = 'cookie'; $ibforums->is_bot = 1; $this->session_id = ""; if ( ! $agent = $remap_agents[ $match[1] ] ) { $agent = 'google'; } if ( $ibforums->vars['spider_visit'] ) { $dba = $DB->compile_db_insert_string( array ( 'bot' => $agent, 'query_string' => str_replace( "'", "", $HTTP_SERVER_VARS['QUERY_STRING']), 'ip_address' => $_SERVER['REMOTE_ADDR'], 'entry_date' => time(), ) ); $DB->query("INSERT INTO ibf_spider_logs ({$dba['FIELD_NAMES']}) VALUES({$dba['FIELD_VALUES']})"); } if ( $ibforums->vars['spider_active'] ) { $DB->query("DELETE FROM ibf_sessions WHERE id='".$agent."_session'"); $this->create_bot_session($agent); } return $this->member; } } //------------------------------------------------- // Continue! //------------------------------------------------- $cookie = array(); $cookie['session_id'] = $std->my_getcookie('session_id'); $cookie['member_id'] = $std->my_getcookie('member_id'); $cookie['pass_hash'] = $std->my_getcookie('pass_hash'); if ( $cookie['session_id'] ) { $this->get_session($cookie['session_id']); $ibforums->session_type = 'cookie'; } elseif ( $ibforums->input['s'] ) { $this->get_session($ibforums->input['s']); $ibforums->session_type = 'url'; } else { $this->session_id = 0; } //------------------------------------------------- // Finalise the incoming data.. //------------------------------------------------- $ibforums->input['Privacy'] = $std->select_var( array( 1 => $ibforums->input['Privacy'], 2 => $std->my_getcookie('anonlogin') ) ); //------------------------------------------------- // Do we have a valid session ID? //------------------------------------------------- if ( $this->session_id ) { // We've checked the IP addy and browser, so we can assume that this is // a valid session. if ( ($this->session_user_id != 0) and ( ! empty($this->session_user_id) ) ) { // It's a member session, so load the member. $this->load_member($this->session_user_id); // Did we get a member? if ( (! $this->member['id']) or ($this->member['id'] == 0) ) { $this->unload_member(); $this->update_guest_session(); } else { $this->update_member_session(); } } else { $this->update_guest_session(); } } else { // We didn't have a session, or the session didn't validate // Do we have cookies stored? if ($cookie['member_id'] != "" and $cookie['pass_hash'] != "") { $this->load_member($cookie['member_id']); if ( (! $this->member['id']) or ($this->member['id'] == 0) ) { $this->unload_member(); $this->create_guest_session(); } else { if ($this->member['password'] == $cookie['pass_hash']) { $this->create_member_session(); } else { $this->unload_member(); $this->create_guest_session(); } } } else { $this->create_guest_session(); } } //------------------------------------------------- // Set up a guest if we get here and we don't have a member ID //------------------------------------------------- if (! $this->member['id']) { $this->member = $std->set_up_guest(); $DB->query("SELECT * from ibf_groups WHERE g_id='".$INFO['guest_group']."'"); $group = $DB->fetch_row(); foreach ($group as $k => $v) { $this->member[ $k ] = $v; } } //------------------------------------------------ // Synchronise the last visit and activity times if // we have some in the member profile //------------------------------------------------- if ($this->member['id']) { if ( ! $ibforums->input['last_activity'] ) { if ($this->member['last_activity']) { $ibforums->input['last_activity'] = $this->member['last_activity']; } else { $ibforums->input['last_activity'] = $this->time_now; } } //------------ if ( ! $ibforums->input['last_visit'] ) { if ($this->member['last_visit']) { $ibforums->input['last_visit'] = $this->member['last_visit']; } else { $ibforums->input['last_visit'] = $this->time_now; } } //------------------------------------------------- // If there hasn't been a cookie update in 2 hours, // we assume that they've gone and come back //------------------------------------------------- if (!$this->member['last_visit']) { // No last visit set, do so now! $DB->query("UPDATE ibf_members SET last_visit='".$this->time_now."', last_activity='".$this->time_now."' WHERE id=".$this->member['id']); } else if ( (time() - $ibforums->input['last_activity']) > 300 ) { // If the last click was longer than 5 mins ago and this is a member // Update their profile. $DB->query("UPDATE ibf_members SET last_activity='".$this->time_now."' WHERE id=".$this->member['id']); } //------------------------------------------------- // Check ban status //------------------------------------------------- if ( $this->member['temp_ban'] ) { $ban_arr = $std->hdl_ban_line( $this->member['temp_ban'] ); if ( time() >= $ban_arr['date_end'] ) { // Update this member's profile $DB->query("UPDATE ibf_members SET temp_ban='' WHERE id=".intval($this->member['id']) ); } else { $ibforums->member = $this->member; // Set time right $std->Error( array( 'LEVEL' => 1, 'MSG' => 'account_susp', 'INIT' => 1, 'EXTRA' => $std->get_date($ban_arr['date_end'],'LONG') ) ); } } } //------------------------------------------------- // Set a session ID cookie //------------------------------------------------- $std->my_setcookie("session_id", $this->session_id, -1); $ibforums->perm_id = ( $this->member['org_perm_id'] ) ? $this->member['org_perm_id'] : $this->member['g_perm_id']; $ibforums->perm_id_array = explode( ",", $ibforums->perm_id ); return $this->member; } //+------------------------------------------------- // Attempt to load a member //+------------------------------------------------- //----------------------------------------- // Modified by Momaiyaz // 7 Jun 2004 //----------------------------------------- function load_member($member_id=0) { global $DB, $std, $ibforums; $member_id = intval($member_id); if ($member_id != 0) { $DB->query("SELECT moderator.mid as is_mod, moderator.allow_warn, m.id, m.name, m.mgroup, m.password, m.email, m.restrict_post, m.view_sigs, m.view_avs, m.view_pop, m.view_img, m.auto_track, m.mod_posts, m.language, m.skin, m.new_msg, m.show_popup, m.msg_total, m.time_offset, m.cal_type, m.posts, m.joined, m.last_post, m.last_visit, m.last_activity, m.dst_in_use, m.view_prefs, m.org_perm_id, m.temp_ban, m.sub_end, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) LEFT JOIN ibf_moderators moderator ON (moderator.member_id=m.id OR moderator.group_id=m.mgroup ) WHERE m.id=$member_id"); if ( $DB->get_num_rows() ) { $this->member = $DB->fetch_row(); } //----------------------------------------- //------------------------------------------------- // Unless they have a member id, log 'em in as a guest //------------------------------------------------- if ( ($this->member['id'] == 0) or (empty($this->member['id'])) ) { $this->unload_member(); } } unset($member_id); } //+------------------------------------------------- // Remove the users cookies //+------------------------------------------------- function unload_member() { global $DB, $std, $ibforums; // Boink the cookies $std->my_setcookie( "member_id" , "0", -1 ); $std->my_setcookie( "pass_hash" , "0", -1 ); $this->member['id'] = 0; $this->member['name'] = ""; $this->member['password'] = ""; } //------------------------------------------- // Updates a current session. //------------------------------------------- function update_member_session() { global $DB, $ibforums; // Make sure we have a session id. if ( ! $this->session_id ) { $this->create_member_session(); return; } if (empty($this->member['id'])) { $this->unload_member(); $this->create_guest_session(); return; } $db_str = $DB->compile_db_update_string( array( 'member_name' => $this->member['name'], 'member_id' => intval($this->member['id']), 'member_group' => $this->member['mgroup'], 'in_forum' => intval($ibforums->input['f']), 'in_topic' => intval($ibforums->input['t']), 'login_type' => $ibforums->input['Privacy'], 'running_time' => $this->time_now, 'location' => $ibforums->input['act'].",".$ibforums->input['p'].",".$ibforums->input['CODE'] ) ); $DB->query("UPDATE ibf_sessions SET $db_str WHERE id='{$this->session_id}'"); } //-------------------------------------------------------------------- function update_guest_session() { global $DB, $ibforums, $INFO; // Make sure we have a session id. if ( ! $this->session_id ) { $this->create_guest_session(); return; } $query = "UPDATE ibf_sessions SET member_name='',member_id='0',member_group='".$INFO['guest_group']."'"; $query .= ",login_type='0', running_time='".$this->time_now."', in_forum='".$ibforums->input['f']."', in_topic='".$ibforums->input['t']."', location='".$ibforums->input['act'].",".$ibforums->input['p'].",".$ibforums->input['CODE']."' "; $query .= "WHERE id='".$this->session_id."'"; // Update the database $DB->query($query); } //------------------------------------------- // Get a session based on the current session ID //------------------------------------------- function get_session($session_id="") { global $DB, $INFO, $std; $result = array(); $query = ""; $session_id = preg_replace("/([^a-zA-Z0-9])/", "", $session_id); if ( $session_id ) { if ($INFO['match_browser'] == 1) { $query = " AND browser='".$this->user_agent."'"; } $DB->query("SELECT id, member_id, running_time, location FROM ibf_sessions WHERE id='".$session_id."' and ip_address='".$this->ip_address."'".$query); if ( $DB->get_num_rows() != 1 ) { // Either there is no session, or we have more than one session.. $this->session_dead_id = $session_id; $this->session_id = 0; $this->session_user_id = 0; return; } else { $result = $DB->fetch_row(); if ($result['id'] == "") { $this->session_dead_id = $session_id; $this->session_id = 0; $this->session_user_id = 0; unset($result); return; } else { $this->session_id = $result['id']; $this->session_user_id = $result['member_id']; $this->last_click = $result['running_time']; $this->location = $result['location']; unset($result); return; } } } } //------------------------------------------- // Creates a member session. //------------------------------------------- function create_member_session() { global $DB, $INFO, $std, $ibforums; if ($this->member['id']) { //--------------------------------- // Remove the defunct sessions //--------------------------------- $INFO['session_expiration'] = $INFO['session_expiration'] ? (time() - $INFO['session_expiration']) : (time() - 3600); $DB->query( "DELETE FROM ibf_sessions WHERE running_time < {$INFO['session_expiration']} or member_id='".$this->member['id']."'"); $this->session_id = md5( uniqid(microtime()) ); //--------------------------------- // Insert the new session //--------------------------------- $DB->query("INSERT INTO ibf_sessions (id, member_name, member_id, ip_address, browser, running_time, location, login_type, member_group) ". "VALUES ('".$this->session_id."', '".$this->member['name']."', '".$this->member['id']."', '".$this->ip_address."', '".$this->user_agent."', '".$this->time_now."', ". "',,', '".$ibforums->input['Privacy']."', ".$this->member['mgroup'].")"); // If this is a member, update their last visit times, etc. if (time() - $this->member['last_activity'] > 300) { //--------------------------------- // Reset the topics read cookie.. //--------------------------------- $std->my_setcookie('topicsread', ''); $DB->query("UPDATE ibf_members SET last_visit=last_activity, last_activity='".$this->time_now."' WHERE id='".$this->member['id']."'"); //--------------------------------- // Fix up the last visit/activity times. //--------------------------------- $ibforums->input['last_visit'] = $this->member['last_activity']; $ibforums->input['last_activity'] = $this->time_now; } } else { $this->create_guest_session(); } } //-------------------------------------------------------------------- function create_guest_session() { global $DB, $INFO, $std, $ibforums; //--------------------------------- // Remove the defunct sessions //--------------------------------- if ( ($this->session_dead_id != 0) and ( ! empty($this->session_dead_id) ) ) { $extra = " or id='".$this->session_dead_id."'"; } else { $extra = ""; } $INFO['session_expiration'] = $INFO['session_expiration'] ? (time() - $INFO['session_expiration']) : (time() - 3600); $DB->query( "DELETE FROM ibf_sessions WHERE running_time < {$INFO['session_expiration']} or ip_address='".$this->ip_address."'".$extra); $this->session_id = md5( uniqid(microtime()) ); //--------------------------------- // Insert the new session //--------------------------------- $DB->query("INSERT INTO ibf_sessions (id, member_name, member_id, ip_address, browser, running_time, location, login_type, member_group) ". "VALUES ('".$this->session_id."', '', '0', '".$this->ip_address."', '".$this->user_agent."', '".$this->time_now."', ". "',,', '0', ".$INFO['guest_group'].")"); } //------------------------------------------- // Creates a BOT session //------------------------------------------- function create_bot_session($bot) { global $DB, $INFO, $std, $ibforums; $db_str = $DB->compile_db_insert_string( array( 'id' => $bot.'_session', 'member_name' => $ibforums->vars['sp_'.$bot], 'member_id' => 0, 'member_group' => $ibforums->vars['spider_group'], 'in_forum' => intval($ibforums->input['f']), 'in_topic' => intval($ibforums->input['t']), 'login_type' => $ibforums->vars['spider_anon'], 'running_time' => $this->time_now, 'location' => $ibforums->input['act'].",".$ibforums->input['p'].",".$ibforums->input['CODE'], 'ip_address' => $this->ip_address, 'browser' => $this->user_agent, ) ); $DB->query("INSERT INTO ibf_sessions ({$db_str['FIELD_NAMES']}) VALUES({$db_str['FIELD_VALUES']})"); } //------------------------------------------- // Updates a BOT current session. //------------------------------------------- function update_bot_session($bot) { global $DB, $ibforums, $INFO; $db_str = $DB->compile_db_update_string( array( 'member_name' => $ibforums->vars['sp_'.$bot], 'member_id' => 0, 'member_group' => $ibforums->vars['spider_group'], 'in_forum' => intval($ibforums->input['f']), 'in_topic' => intval($ibforums->input['t']), 'login_type' => $ibforums->vars['spider_anon'], 'running_time' => $this->time_now, 'location' => $ibforums->input['act'].",".$ibforums->input['p'].",".$ibforums->input['CODE'] ) ); $DB->query("UPDATE ibf_sessions SET $db_str WHERE id='".$bot."_session'"); } } ?>
Fatal error: Cannot instantiate non-existent class: func in /homepages/24/d178607262/htdocs/islamstars/upload/forums/index.php on line 127