!h:PJXf\E(oΪ7S|41ىtyM۷*mY,Fj]ћ.0Cx8OevH8}tش8'UuEY?WCMw.w3혧Cc{sإ4K@15Z| 4\gG΋7(8@5vÓ}!zIN2p슊 U^P=,s2Ez |N_- A궤4y4Wiq!-*Om"Yb?P.c+K,X1nn l^izw$YH@בBcPf" T J`c'@ji)l X3|)Jc ,ځEK~xJ*N$̆j$>2:cF@! q7FX)6NmBc!K< 1az M\-9{NB=-6-0gôG!{#xz_Y<0y0_ T=K)R¯TЪg@=]Ms4 \.#r0`mSИJj'Ԟ>rf* _U"Pa3G>1d.} IXPRV^OsR#j;3/ o c&@!Il٘reT+C a(<9/W9&cTF7Rf2ɘ DCT$̸9X.*w(aU_t)ɐTLϴo ?}[{<#B!l) gDe]|D8aDҝZs GU- bD/,U{ '%@[ = {]*lr˺rm5n<֑p,h,M-kPnwE"}P@{ucK-HhCH6ca][)z4j5DFMdhbxōѾwѴOY"X ʩi)|%$ sk_|&P=lgLѻY 7: rsnj.ΉQA}')@%n8_F;)#1Nfn{hw,@gqp^nG^88A!{z*}d-m]r|fq=18ʓ̸"ym=ݨ@4'fwyΘOe¸PĠ 6 `HP?F]y!B- SOù(w7|p@N0C%`oÞ<4*`)_T'QSac1 !XL>:IۏpV>0?ȩY\߰e2&րf(ĄUYU Ja1Biw4TlKccU`'9go|A$ cGo?g$|7Ģv|X9.)CM鐙?14~`qX Es>,) qG38@c.: :TVAGU Y)؍K6 LOf-6"3qJә=QIٍHPm?RDkiY^! d 'u?Wv~Ws ^sJl^r_Km ԝ/ĚOmFXw_g4- oKTQ_ݯc5LWfsVʳ\vм^ߤ|_)C[t4#Ѩ`Ňz?O5iBR.mM=nX)bkFdv3@{ YhB40g%bY /3v@TB.I832*#"eN xf=g/dMyc PhPY+q-Ќ==”mE2.|V%DН+ ,.֡'G9Ա/+ucEk4 c癦!W(gzo`CX:5z9KC+!C﹖&>@݂KuVإ @wǀϙ{C_G";b-܏Afi: .n:|gZФ0V0ApW:YF@]@`)/omRttD|H{ 2!4Hw>y-MaV׀Lm`t1 href="String_types.html">12.4 String Types




Subscribe to the monthly
MySQL Newsletter!

12.4.2 The BLOB and TEXT Types

A BLOB is a binary large object that can hold a variable amount of data. The four BLOB types, TINYBLOB, BLOB, MEDIUMBLOB, and LONGBLOB, differ only in the maximum length of the values they can hold. See section 12.5 Column Type Storage Requirements.

The four TEXT types, TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT, correspond to the four BLOB types and have the same maximum lengths and storage requirements.

BLOB columns are treated as binary strings, whereas TEXT columns are treated according to their character set. Sorting and comparison for BLOB values is not case sensitive. As of MySQL 4.1, values in TEXT columns are sorted and compared based on the collation of the character set assigned to the column. Before MySQL 4.1, TEXT sorting and comparison are based on the collation of the server character set.

No lettercase conversion takes place during storage or retrieval.

If you assign a value to a BLOB or TEXT column that exceeds the column type's maximum length, the value is truncated to fit.

In most respects, you can regard a TEXT column as a VARCHAR column that can be as big as you like. Similarly, you can regard a BLOB column as a VARCHAR BINARY column. The ways in which BLOB and TEXT differ from CHAR and VARCHAR are:

  • You can have indexes on BLOB and TEXT columns only as of MySQL 3.23.2. Older versions of MySQL did not support indexing these column types.
  • For indexes on BLOB and TEXT columns, you must specify an index prefix length. For CHAR and VARCHAR, a prefix length is optional:
  • There is no trailing-space removal for BLOB and TEXT columns when values are stored or retrieved. This differs from CHAR columns (trailing spaces are removed when values are retrieved) and from VARCHAR columns (trailing spaces are removed when values are stored).
  • BLOB and TEXT columns cannot have DEFAULT values.

From version 4.1.0, LONG and LONG VARCHAR map to the MEDIUMTEXT data type. This is a compatibility feature.

Connector/ODBC defines BLOB values as LONGVARBINARY and TEXT values as LONGVARCHAR.

Because BLOB and TEXT values may be extremely long, you may encounter some constraints in using them:

  • If you want to use GROUP BY or ORDER BY on a BLOB or TEXT column, you must convert the column value into a fixed-length object. The standard way to do this is with the SUBSTRING function. For example:
    mysql> SELECT comment FROM tbl_name,SUBSTRING(comment,20) AS substr
        ->                 ORDER BY substr;
    
    If you don't do this, only the first max_sort_length bytes of the column are used when sorting. The default value of max_sort_length is 1024; this value can be changed using the --max_sort_length option when starting the mysqld server. See section 5.2.3 Server System Variables. You can group on an expression involving BLOB or TEXT values by using an alias or by specifying the column position:
    mysql> SELECT id,SUBSTRING(blob_col,1,100) AS b
        -> FROM tbl_name GROUP BY b;
    mysql> SELECT id,SUBSTRING(blob_col,1,100)
        -> FROM tbl_name GROUP BY 2;
    
  • The maximum size of a BLOB or TEXT object is determined by its type, but the largest value you actually can transmit between the client and server is determined by the amount of available memory and the size of the communications buffers. You can change the message buffer size by changing the value of the max_allowed_packet variable, but you must do so for both the server and your client program. For example, both mysql and mysqldump allow you to change the client-side max_allowed_packet value. See section 7.5.2 Tuning Server Parameters, section 8.3 mysql, the Command-Line Tool, and section 8.8 The mysqldump Database Backup Program.

Note that each BLOB or TEXT value is represented internally by a separately allocated object. This is in contrast to all other column types, for which storage is allocated once per column when the table is opened.


User Comments

Posted by [name withheld] on October 20 2003 5:59am[Delete] [Edit]

if we really go for up to 4 GB LONGBLOBS, some hints how to deal with your RAM that is most likely a lot smaller (http://bugs.mysql.com/bug.php?id=1605)
and what to do when the communication gets interrupted (http://bugs.mysql.com/1606) - this not being that unlikely in presence of such large amounts of data - would be usefull

Posted by Daniel Applebaum on January 15 2004 11:05am[Delete] [Edit]

I retrieve large BLOBs by using repeatedly retrieving only sections of the BLOB
using substring, ie:
select substring(document, 1, 10240) from documents where docid='3';
and then
select substring(document, 10241, 10240) from documents where docid='3';
etc.
My servlet turns around and immediately writes the partial response to the
client so even the servlet does not need to allocate very much memory. In
practice, I use 10MB partial queries.

Posted by [name withheld] on February 10 2004 1:04am[Delete] [Edit]

How about a blob example? How does one get a binary into it? Is it like an attachment? I think I am probably not the only one who is puzzled.

Posted by [name withheld] on March 7 2004 4:29pm[Delete] [Edit]

Storing large files in a longblob I find is a bad idea. For a better implementation of mysql binary storage (in PHP, but concept could be implemented in any language) checkout this article:

http://php.dreamwerx.net/forums/viewtopic.php?t=6


Posted by andrei none on March 9 2004 5:38pm[Delete] [Edit]

Yes i would love to see some examples too, i have been trying to figure out a way to insert data into a text or blob but unsuccessfully.

Posted by [name withheld] on March 20 2004 12:46am[Delete] [Edit]

?A*rdP/W|W,qBBBBB%qgv7Kbsҝ5deF7DH*PbFAP5 m$Sc[-AaL1c7sSǟ>ے%1N"[&l>=]\F 0`oP#csz-UhulB mh<>R*b{m: l5_[llBk*agCc0;v41ߛOiD!lf5ƒ2HF ohh; 09׽@ߟ9wHxD&Ѩ w:r͜tQ83l*ThZ J0۶kO?G-ե΢vEwKI큝ff {=|z#<=pN.HŲXTЍRBm!R,_l7[jcF0Ȓ$RHHrnk5Sd@-5ET5)2H/ $̴l)”M)2S!=A Q=Gi]=!!ԣ\01덊cP߶8ȋFQ?lsGH<~lPP  "O##l?yu|-M~빯~H x4 DH_r(`;98ա YÛ_%0?C":4J h=I'SG_ J~o`u|KETD<ti+352~rb)#8Ma#ٝD)`;؆~~AO/ Z W#ʪ!؇@`5 HdQaDV}:&*2 WˑfƃO)`P ~&%h H *.9'#=Pm|)3aU>7<*)&f&1'7s] C *`Ov p;Men aaP /_Ё}mϟゃ]˚8wJo)v0Kc+F,l+42MKm[3Q(ڙ&FHah>4M9T &"DT@3,CK*kF~=MԤR,$adY%)PLM3m%%Ed$4Yl)T&IhhѦmИڄnYi!͐3ڬa&֘螈4{E4u|1Y f6e aw}:>>,=s< |q& n;j $be+gOgMfNl\*e&a BnK`s2FwX=V]Cp5GpiU/>38"oqBүB2B}HIod60WcgHz4 ƐyMRxL>~ҡra&dNQ9T[/}D:%Z%>uOɶ.xV$#NݤpqJ3[C1fcMrWQ-&<&=13ëFƧv)0Ǐ#y,fbHj6h,f˸Wpyh lp96z3W8I{$L %[[ a!5 rz%.*1(HHKҔv}i<.}o%E8[H[*$EL@\rh!dX( 0?P??SN&9c# (+|ݣ$?v'._i3131)0 "ȋ"$"H dED6H"$Vi -,AaQ3LT֌vD[Um5Rj&ﲜ;$Ò;G9*!E1(JR*)„Fna\X  `3 N7x`B)? CA!=RQKxmd ,@ $&$&jm@Z @Ǎ$R). 0L!D 2wݕ*;3=|8S|3O v_:.t'f;353?JVU8 /TV L!n^b)%c:|6ڥ-Cz'%3Zl"%`X9&LX~3t`@+p-\ ?pCG}@^*>JB@#@.8ZԠIbˁ@ZH! !Ӿ{g..80P@hXаYԟF1R^(c1m5:~>8:1uhm^#RF  %OP_@ &8@! '71:_ !6 @ddX@0П00@xqk@e_ZTP@K@G?<852/-*(%8 XH ( , ~3`( ̀}voic^XSOJF@>;741@/,)@'@%PnhB]@XS NJE|Vu`L:(6X00` (x`X r^J8&sEuk: kH'p[H5$3m͘|l`.6f`6b068`  h ( H0=@9@6@30-+(@&@$@" ܀׀X ~>^.b@ .@ P   >םk@@@Ca\WRMIEA=:mXE:9#԰Y%S dfiUx$PmįQ :%}[/Wy7Ţ:K?ybHZ.X!::Mųn\ X/ +gv|Fzҧ`Nfǰ ņ ouhq989#(@ɕזʨ%>[xD="0Cz Vn{ @4l))&||迆p~൞ݠFZ D`>?_*o@-@1y\!0|}hPOX@PNZCPv?ڒhuh} h@h ֠%'d_P |3M?rh ^ V\//@FR|+`ȁ3\"O_+"L.~p*L >N@#e_uo>B{K{\GpzR{9"4Z-o 4*7Ï`GH ~!B~qMC!'J@&VX/YH)|ٖk@zR? ޱZ&Iqzo9X/{TP`I`"`&R QK4J3X(^ (X`B DiI4$;[a:^J @-`A$XV_`BE >i|7kY4($2\V<X'&8ϭ<ȸEf iɇ@ `{Z!uX*bL1w-P@kS& 0<&#@Y3 AK4ʔ>`N 0$,<|QКtEsxž<@P ּ(?Y@@s^םB+#nHpEitivx@B4dZo)CS~ms 0"J˚<@4/y9 5v!$12#2ȋ4Icp (a~+Y pXDLuᣏ,pC$5@+9HTFAHTF m 4 p}gL* d0kA4d F\ $KV9 6#neBC GR4=6&ӕ}-3}/CUe~FziP8I< IOՃAU@iX`A*=, : A;u*PB)  P@ʈ?h"uDuaC$AW#1Xp98=_C;Dl!Ɠ`5 a1.z|ɰ:wɔaBq8#n'`IKAy<崞x "$9.O9{>mYmC(JV }'˸C0I<5RtO"8WHkz]R}ϑ˵P /8>l>^9c>A)ݎ+DRkG)`I\4zA=D8"S'K62L'3EB^O Y <47aBǀ8.x@2bxG2% ;*(Bd0 cy@"ŀd`+:QE=V@PW&xLFk] ?b_[o. "f`z=D8,P] gPXgKpsPYy}Z5]`s5/~%$h>Qoz6)^HXa */*l6;+@Ҥ*G5@|S#1)IÝei7j&|2e#Z] hd`(*Ry2p {yZ.W]ow[/VŒy*@H7 P 01\ATE^U< =_&&C`J8Ua@8Ot]_2k~ p}D'0 ;"LE޴jq_M[nX (LLJu Bŧ; x(/-xtNLE{&zf5z֯:[3BhaL]ZT4|t yiUX1 >E Ђ@YOGIo0@<"b"mIw`R D }#T{ @4r{=O6 Τオq7gL (8H[;' X|u8_?`8{TX!3D> {ɂƽ~!IW5"-0:ߡj#AibOkv%ҫ(}䅹8#Lc-8{ڌULEKg;ٖPc/y\n'g3Y'XNJD,o=`{p2hraP&a(A90 h6;9[y Z3HkzR8< BkyFIx c@"V-DKnE]:à]8HFRc#dx׳9<)?S|[@4I`='C)}&NH's7I8%ˋ%z&(#-B 'r|%]pd"#VVy!>+L8"xt?Mu,}xiWU ~ '8w` rA߂p7?;}xR~ETAX |\hn6db\Ҭq`i=idA'O;A1t@O(9X]$I̋M&t^JpLM a֌m]2NtXyK B~[ݜoqJ W`uhWX[d8\~;1|^IX'<ĩ2ܹD)ٮ[ 01 8UAg4mqo=:&@'VÔR3Xxp{:0\̾:dc@P0hyՈ{rWƙ=$(~ + W]NX2@GѮz DP8~3&Ey\BXA|k<BYam/:acSAjiTa4=)L,KYfتZ|c -86ˀUr9U:8  գ 0a`pYV h߉=aMbسD/g % {`8|5F@|"`8'lQl lZ%<ry,ZD*E 9[@1>#Vf BX/ ˄'KX10nj2T `Y!o <<wu YɳДqA ~@r= ֝^#"?͒L qE0_$?,7g V5ARj|RŴ WŴǗ=TdvT+JwwkIWrf4q *K ԅ G^OutAO˟Pc$7i10#Zb^@ZRh\&`f$WLP8x3-1 _@l&pR |*?o02-"` @ V'}xqax3 {ntMGk2^Y &eDb_!*"ՎC7ɱI! i U쀷 8Cˇ;@\W/ ("%p88ᶁ$& }p]rVjXS!zI @E~Hcx@, l `Y AjMh pdxlJucGPV'o)A@/#r܁*h (d&qH̾ *J4L\)8+3C~w~a>C;O}Xz3Se&dsĨ{>9k/GR΀=پDut#דM2d{T˖l.]<+Ț7- /'%|Q~q췛z7+](M`y> НoއhZ'yR_+8{t\ f$={/?MCK7q(XK}o?7qw<+%~x6OOlo=wGc؝" W;\RQW^g֩#1PO,'ec`"*sdwzW{D[X}_G;rWw}0y/ʁkԌSctaC2q%Bfq=2|aloŀٿcO0@'ty!&udlpŷWk*?1zxd%~CVT;3ntyat39k ܵU2 F(LGg'e9Wm'/j>!r I% c>aiAnaLdMN<^QJT0,~w i .TUaBŨq qW]ĺ,\ѢDݭfFwW5x\柈J 9Ѐmu6,a(Y5W+?4S7\N&O<}.x~~GуaRǗ$ȯ "̥ L4j 삈{&[`./@Wb57<_>}a[?56@D, |%|c#wB3%YmǖVח,_X 4C; (AdRHdvpcwp!pOoy/916t ÃtprXe4!E aX&Bx@vMHƭ5 I7@ Qk.9s&KXlC^Aq6$!%M+Uk ޏA !7>eh`Ä[]"1;wo،dr bro ͜sw|t}C@[?^= ,z܀869.P :WP9Dr p:lS;χ>?\-t yKQ"o{\(j*4WQ*?~gVkyboC|~ŭgOW4At:>P;PiMEL(BfAx!lF2S!7Si[k%ٰ>#Ich4b+*paNj2|@,^zcxwa m<+Kbh(~_wO| p\P4D/.=t\~moUO;g27c8s @߇JZwCy~8 $araȯZ6/& `# 0!6 _;{dZ5I݁vO61Ƴs+qzM7Բ+8p;w[v?nC7W9ApVyle~tM xt[u7;ϖQvr^[2o ȝǶ[{K< wt8?3zav^X?}Rq^ӝ6ʜc[`(G{.0:l'70LDl__+mxf}s>o~__$ڜDgڐDm~Ny'#>>-};!K`p0au! ޱ)GME>= (2#Bzˀm&T7_ߞؼOmq%Ju\8=v2r-f}C\eGsͦ QuY5Q#wCSttv\J WhhX.ʿ\UUUUª\v;=N:,#ƒ5f0?on%\o%\#¤ZP3p0 L&6-C!J/@>iD9y|#$4$ŵaR1`RdӧsW*SU[Q}c!FÉo;>W13嬹2k7s9U2M2H%8`22/f(?;.toSV!s^:(`9γ_{[.yfk9N^kKWAkCg9nד-9^Nmi7q|ė>OQͫ1k+3^ OaM3%ASwauc;r?Y;pkOՖqlZoߝ[G#mχ{_Z?v~X{l=gfG<c~O'!RW]_bzYY4Uu߮OfC&~e `1 1ڛ)~Ta͋sq"1%^.IfhUr2iܗ(`cL32ըvV-]D,-8Jhad](a!ù$$&E7ss»%x›S58wX *qSK qa "`d<\5xm?nM8;@[p `PFDo7'?ZִҩmJ[T̛IUT6ZTM6L]sSEUTwNLIUI\Mױ37tUsUWUUWws2ԫbS-ӹnnf]#%fm\nesUwwwS37Ww337F1X+TKn+nꪪfn嫹m}TuUUs?ڛxn[n%.Rd:5)mR[u3_۪ff4fjfffM32JT?nDLtf*uUUUS2u-*TܷS5=UUUTRUUU)SjUUJISU3-7MiUMUTUJjeU*jjmmʦff[nK5-Sۚmmkne$t:u3S34t۪IKi*jUT933U2ḶUM)]g{zR=x^^v)))F >Oߍkhj\UlK^=HNBj+SxRf [F>_^q+i7~(-S|.yJ&UY^㱭 ZX?܉:cƭLc_C p>C*4%|k5 U;i\twQEb#K%kvw|~]ֳu57\>3atmSp]+3pnZf>^~7ONIcQo~ {ٖws e<|/e}zN3/p(SW7Aj@e_sݬo6e[r94x t9JzϮnFs(pStK.Lëek~[5^Zm;Q\R/ǛCn@~O$p܏sn"L-&3Yp14d ,AH( "?:*B)Si!5rІ\d-??9оAʼn*18)5CpF6,mEXFA 26-j=pM- ֠3n51dmH߇Z֥AUSf>Ƶ=7#|#@uS(V#T:اn"jM:K2HU|K(!`<SZ"˫ #mTe!̊*8$#"˂b-dfN3O:NbNg{/f2^?G$jڼ^{(8TDҫ`Ǐ +ԕQB2 LV-ȄmQ8SJ(hCÄ`YRBRdtܗ2vb`&LYFdL,Ě1I@\(AFbʃw6ˆ~WZWh~ c12C ExY3 gtoJX"c1b_Eœʘ2N4˝Xa\Zt jFj/$;!+'7 а,#7J*,PR6 rD'{/U8I2CacMux|ӋNRVvo) wݵzq:CJeǃf A@]kx_7<{;{z[z?;Sgdomc)4G5z!weijeH,$9L`ǗMKFxB}0ՃqW/o/(e)o/!//_/&(//(/+o,i^xh}" uӔ06Z w>ޣ"tE=5kH݆ !+EW$g$B7Fu [^En3Ċ, Etc`.Tڴ?RJg*IJDؘ.^&ȋ:tÜfLE|f6"DQ60D g[D"(\Xt"&1G!"t erf zA.#> Rfd+&dF`!' zBNR\UTa.USUHꪥdj**Wc3ʦ 7 &8Z_$)0I1y {ڨJ² ymREJLAd%u w ÀdADG{9y7eT+6@`h~BEC}D EC%EB=ECUDlsuDEAõG**ETNHNNTAOPϸsո=ulG]4 (.Ed)TYeܨmF: ]hE9x v1Q|[.2{g rߋFFzP^RϳnebG,ifUԂkG+Rcpn_W'E 7aRx֤gL(\ Um a:}E69\FА钋Qdh-o>91uرA4> Z}"A(40~_[Nl bɟk ԂYD61,/R׉e\h)2ֵYG,W*+dE9ʤPIOܥۼRa!6TUXY\]`3Hɝ|  cJ# 1ɑc=_s瘤bQ!$1XUN b$=0$$D(N"I?@#DI".r76g*4vϷvY 1YZxZ65e}B~82Y4Jj*.YMۂEl G䳜zܥyk֥F'5'gw(Xf&gJA! Es oq d܉9E?XM YRcrܾ$p(}#~}r 1a^8ֵi=-ٱwѭhQ @$B\6|݅#pH6.\ /A0i$IJ| LQ "aH YCpDz{.T#h͓l(faˤ\5:B~g~NM)c\iܕX[>1/9>:Q7@\Bp8/ܽ|/\é[וR˔d (mv6_:0>髅^ Fja%PʓI97p7}|2-; `18SʏFPs xl7)))(())))))))!))(()(@ )?|J'-xs503n2Yt>j}JVuYwCVGm\57 >=u(&IW'AORghL^b|vǧXhTX1dѠc6YD\_WMOxU\bSu!7=uvЅ (PhsB} 0PB j- HP#x~/W{]_S5$A ]ўoO<0)!C!¹NJ' )Ֆ%f,ĪNFS_hoi'7|cꮇO>|ϸǹLt fw;3# ue W:;鏾HOe3 1&ٚ<>wު=ӰZpdjw)4Tm;o~Az0 BR8H!/ /t /eqw2-------,ȳ-- ---,--}s_L^!ՍA=YAsE!3@!IjPf"bQk)UUUU_8?l'8Ol;#$k |?1=;}C_g")D_f׃ y oc3$Q@D]Fdg Qj7Fu߫d~䷶ǸmI2ͻ"&VwɷlO!XP w@sdb (H @I0ſw,c^hamn_@`3D`!ϺQ'j^;+UD@ @qp(/}^ߓq9ctzV[ R\VUW,&pU:_";>MMŦNMNM9NNNNNNNNNMM/'ge4ٰyi[k$2dI~G#n}#ƙ2nFHmzWSl{ U}N_ Mp7 kF!Ѧ26>PEH%NR%Y%%eee%ZzO.D]wrv(+,?8f _#,-eVP%'QaWpyGQ}}}ZOc|Y{#7mw} ,1d$/"zAJn1 :t|K nprå?Z 7'ES1&yL358iNʙZ%̪ii{D=ߒyL ť(g)~} 0x2jL@W;au@yCn6aV+2: 3+%[^YӦ_ff_ff_ffa&fba&f&H ``Yϫ!Ul9Բ;H2(6X4~z ke\S8p}Y`nAJ.7$$$G)Tq*QSx.!6:Sίu6be0\ ][+lFǥ9'_=,333ӳ3sӳ3SSrXNwy3Y7^R-4r˵؞5|kiBVE ( h2:&{bkeDgKOևXUZ1" 3MZu@MMjN̳̼L̿@;6L*LLEL̻L߭_#'Ǚ}_{b/ QgZh@D "/61a3G IPuAp,FQE4rbAzc.;SX\@2 ں(Q4MXQDC>\'Թ|ڟ3V f& ^2e҅UƆ n `NʐB f^[_=mMv5G19#B)c57~:=-'Hp/,HWN `菌|cOv~O17_)jә pwjC&""("<IGU>%f-(,A9f&*1m ϓ.򹈠,%Wfk.I!=Bw^řs&{۫|+>:G=>czN||xMNϪvvf%_oå<]B lvLa){>0 w]@xxkM>,K(Md:q(g<]makҡ|,\eX^rJ֯ZX*= <W{הy˟ٳsNtK_46c" HEܝo%3ŗcmuK5CV l(b R شg #uNIY#!dL,OȻZRU&DX">wۿ~$4@sKkwZcҮNϲ?8D / qSHuhđJI<86و%.=nVOBSم}HEw*If>?#RK/<?7Iy<&LtqpR5:CC}{#qEgcrİsێ/;N{1tB݉P^AjiB"mkYOI}`-ș{k;3ĭ7h'^O s{;JȻCnDTwitѶ:GBGp3iE7~nvsr^G$o.~8+c˸Rq'ƞ]20$S=ܦoӐ8;o;-&w;܋-!vYg\"lEdO/;Nְv+~~kvDj0z.7-#SqBqDo/цqNwqFs{涙lW'ވ'|Ud ցec 5#s( ݯm|HcM’:SIjzLUQۏ'= )~ ö$ q]5۹}6 u.oe7 ?N~ȑ` P{8M=\SN&EF^bmxܔǣ10*D-KkF0,Qtt\{6(!f |zQ~ֱsƧiX=$m ] 'qQ.f롌H>. #봈+ɰs};˧a=l@b1Y["<@`quȹmߠz(9w;O NSԁu}S{,?ayD9dxdvT7s}H̔0hEcsKv۽GP %Tȣ4e>⦟ +$YO~lGjqLUP+v"r'V'y5]sr*㺣y;6vjJ'.&˜ޕx»LAZd(_7{i5;jOKES>s5($zpr+b6ҽq΢oƸ،Ll狃؎5E ɟe}F0z$s>I"\f$BdĴ5R!#X@&0ƈ !R0/z#7ox"9]kDj;$! yw fsי8}:?2=-܂bG5c{SC4ҽPq֦;`ϯi Y\;XDtB\6Fyaԃ:Fo[g&b'cDh#;Ckļƶ5ox7w0Dk3rlm+v؞F٬wD#:ưyq"CUOO`0NU8ӯ Ә@=N{vn:Hg^3.8XJ+nWzTg2͎ƗQ׷neewZ3{s-$Vf;eZ2LX.vvu5Hl$WVb828tu+%[o5+WO nLe6/53wprjg6G' ߘ>_p``B1qr2@=Mh^Jy 8]Ell}Tx\8"R%P,u>^nksK]:;Ǝ{ǧi ,.B7fvQM uD5g8d j^G$VTչJ=5J^S"7!L@;h[4(\"04>aP45i8e%@D10 A7+a rN Jck wDu<oD *01n)sm/#{)qnha057o*l+rݜO7edX`a@ʉk2],!AGX gAX!',ghjpk}LYo7cS€lIJ&ozdX"\}ikQm\J5QmVKEdh (dYa%-H&FDŅjEQIPX*UX)Tb2V0c*(,X ꢠ)`F ֊[Yib+UQ VZ5MLC&$i d֣4JUTT1Œ2X( ,1 ۙ*b9BYR2`BD 2 Nˆ9JLk4DfSYJjժ*(T `-()rXQ-eEmhnC([T0L1*Zk &8t E sWEAd"PPZإ+THSBMAebaUN[(hV-5JաSq!mS5X)Y4Ʌ5X,sX*,!1`E"0cYUDQ5j0cm2±jTX)Z-AVbM!YXeQ 5YUJ $+T3L4pf۠NNOFo gBB > 0@ o⨊ V3ⶊ+"J]X0BL` m 2-FUhh023%*&fVZ"*ڶ_ 8DA$:jL f#%7=NΒ0_?OzLAR ޔp ;2(y+ikJ!QERڟ5cfBU^<J|>|8y;RYX,aRXҍTkP-(U-ie[ժhTm-bjQaR!m-ZZ1XƵbZZj"V66.i,eUƎYEZZS+EaQb2VJաQbU ~8.ȞG-dk͎fy"{u)|n1g}VM!2+#[J]ĕt0pLȠѡj"6ۖ1)\3,ɂC-&2,RW0Rar..sKUcJUus PEfZp̹1P-Qrae2֌ FjLAQ`9S,ne&&Q4m*Z5KmFPc`ۭ\]QKk 0f%Q3( 2("eqL\h2Z孖RQE&Unr]8ᔶtZXKT1QkU¸EaD*,Uisb\1X\n n40qY*-kA1TY* 啖U1+bapq qV+ZqJ%n5 REP71q\Fs s%ls)UJ4Q3&e5hPmis* Vn Z%T S\J e-R̮425b,̡cVXKFTD\RҔjbҶeUE0lEDV2mQ30ưr2e,[n3-FT p`*.`ḓjS*&SZuj WE 2(H)M4fR)%Ѕ&aL3UiJV[bڥ`(6YpDSIDDLK1YEE.WZ֨X1mŠE21`+][h0PŹ PnS10J*cJLXQZ90aD s(Xff".fFD\s,cFq3*V5 bNu-R2ITDMjeuc`EʔQK+G.G32rŎ\p"ɉL(% VrD֬+c"-\c \jڤ&&pM)I2lh0P˖Ĭ̱LKV&jfe bJ,q[s 1l̴1ʕr+[VڍH1Jɖa\VT05Vb[E((T12a* 3 j h\`W30PQ(\qQ)[ciZ.8fd)UT\qZ\.!ZeQ̷*baXiTJQq?_o:7goج J1q Im6ƘM(c1d4`Ȭ1'Xzmnє6\2jz{˙Y\tI-skAtz?uMT Ybk("JOMԦQ=]C^>͹3E*&rs2v4  YxY5fh%zI9R+ H }8*/^ASƽ-Ax6cIZ|yFLi՗F9w& k2Ait "\B7.3S&f呟H?9=>yn(sƆ0RpC gqyMKQ%"ax^_M/0֞AySNnc~0反+N9kA~/Z_^Ȭ9!!isOzy󏾓[Nw+Ows?r.^Y>F}0p&%Bi ݵd|cgaؽ_?FZJ`"aUO󷧻.l A, b@2P{A 5eMM tJfo\J*,Z@ ޲hѨ0al/쫬@ FK4PH-M?VZm Wm ÕUՇ@«4i/뎽̟Dz6ߩYQճ"%Ͼ`UV/;C$(!> pƴVBxUr-&ŋG^'GH| =gXq ( N.dw qb,0jL\/hST[g^T_[_D]=IVƼ]D_5_!u=KKKKK?#: (z.OeG^_G xn-ptT ϻa0iL)Meki,Y9: t}yȫdiS€\FύGZ롦(Џn)? }cG,lc1\ gS2Z9/'6)Wub0ab^[+z蟬Oj+́4aut7ttuuuutuutLu9uuuttuuu/ ut"!Fz^ꎊn bgcb2TJB @#$dF(tbۛt+tT5 _2 L|dg ]mw+:c2nݢg_syk^kTkkkkU}hkG8hQG)4hѣG7thѣFJ4hګkkkfkeh+kkkgfkkkg+kk`h]6RX:)!!b>(xsɘ3l@?903g%06aIUm>a60 `AˁW9Ń!)GY= OG | RZ! }%U 擫3҈|@c1C.-?S֡yckm:HSQ+U^7ۥ,P*t8|_#^n\y HG21 hV " RKLZ S`zeu`1kΦ{/]dkkM:0Gfx smLduv9,$rҞr5z~vNrVʺ^rj jbн>HM̘(}a9,>ⷆWߡ 1x~+l"|:}^J]Ƕx8N;7yKVY5j"[GYnNe_ tk}b'^k!%@P4v!Nm DH@+8mbw3e܌ː9D( )H=69]E;-$p687m殬U4h57vtcomfo?\|1P@񮜶/݉7-r<4;;4;;;(2Y=C v 7"tïfzBœQv-mY-mmmb-mT_%mVگZگ"\=kj kkkkkkkkjkkBkkjkkjkk;kkkj- B pBLE QCP!-9i`Z>bQE>L6PO&#ow7gOi w.[w" utuZNh]l)ɲ1':{9Ȃ<RFt $FODT0DTbbI *URTR % de'# *VO,1MUcv؅; 68rjf9/?Ul3PO?h DO:,"znDQE-Y #|K*a@ƏWV9v~XˇٺX|&BLcBެ=O?0ۥjo,I!)TiRTJZ*X2 \\$Y Q ԑ5FD_ߝAAO~7~r!FSYj't jשS)|nВ+AE `#!EPJR)PR$@nOwJ%ZiiQiiilk[mQF7 ʠH!>p7%DғF4u:"ّճ7)АHB5$tt۔I?lлaF 6hճNVY$e$ّ')2hRH7I@2pIYq;a:ĒGJ8:y[+ *r3857h "1# rg-p~>M!|B MZ!N\M$܇#ܤ蚌$OXJR"AQEb"EUE"(-QEEbV"[Q( ,* E0X"-B"*[Z=2ULe!u\ wU`b)*I(DABH*>*0BwS:4gPx1bߊ[&5#8 Q K26.KTom^<ׯx?L)\hI>^Em~/WuG" n _,tv?ÿoA`uQVr{Á`G[͆ g ^TBjnpp`O Z{)tRK 7Ww{aY6:@nr@9$? #$Hք TtHB C+aX (B(eb",r0?$1RH00nڠ,Af':egӦÑ<ؘz.0! >~oSߴe;p+P8An!n3Je"(vW{lN>kؤ끁ɁZ1ҁMHSS3OOOONW`cW``O`sCO7=7M\@1V߿$#@"Ӝv1'kID:mE*+ -mj 53cKUFT%lErfas-[m˙©p!M!$TEE;GT?TX4 O!3CظkRA`\>'ے{&6iY޴ xl߅!A1^ZX]"H%5 ΟQʠ PjJ1__I_@V___5@___**DX {{u{tOv߭[ۢ9ooonrr((2d`XD4͚ߜ0I$ ܡˈ3*]iR$.@1HzqĈ"e-t\R-@hI(R0EiE4hinȑ32%̒S2\T.bh+mޗp`I $QBIטID* RYDDJ? ¤0 I冂h@'?öejaVR rٶI&M"NM@0cW,q0LtY;jw>dCˁuTb"<.msvb21d6@I 3חg,=>k<. Wr%1QVԿ9 sX ɚ:Es‘#DI Hi}"e2 @#kD`$I E"D$H"D$H"D$I"D*$vHq"DHI=0f>:tIPo$U" $$ eZBղ@RHeޢI?vn T_3RPb~ꀲXU~BHPa [9ʷnj=m t4ab@YN40 0&1~\ruyxIy VPYZdB.c_-H_y2>)54lRâ/xvZ'ۿX'_$W2f>h=q0iwTԮteUiiVof/oiiooboooooo[oo]oo^e/oox]WU̶ˎ@ez( ȁu\\Nv40}مQQTh -R4J)k[rㅲ-kpU̮a EU5i%Y-XJ %HIUUVEDUBOR`UDAd! VUJ$RUR**X*U%%XIEQb*,%R"$DA E"2UR"$FH,IYQ`RTd%(IR*HTJRJ%RPITRR%Y E%K,TH Q*TIJ,?0S{mؘY*?vg}ً0|WEMVxS%öW+ sn D0J aAWhPKrIk>t[e˂.|`Rݨ fgR_29^J\)]]ݩݱݚSf Ex Jw31ח:^Z^^^^^^^>@"41^[ ST5K":Q$8A'ʉ h}H`a0`0I/[mNue2BH"T)TwV;C|i Phb BjX*!ƭ`!7 &*Tp+ش J_̠ >ᷗeR}#m˕V=ҳ=(QW6F&^M.XO)$H$D$H"I?$HD)$tH"Dp?O}OOOSڵ[|ID"!" mDdiTҰQjr$-Nq_pkvȡBOk<*:vuFI1-@P&d? ͤOYlJZ4upV[t "@Xh“pSA4xwťaG{A@w L A,b2;p 7WnZt kB Ӈ/xl?^s_N,Ԝ*URppp`\pUg!2OS\)lGþ[۰[[[ô۵P[۷%JTeܥJR`%qkc4E?jw6:Xd2Rː,]56 m%עTX×&OFJ}3#eZ⪪*RUU*DBJP`V$W#*NyXUV fUc=Y)v=:蝐}0ʌCWؘ<V7t mPN  P!#"ҁB(m@WV_RW86 -`1B0eWaQd|N V㍯2˔)+:TZJ*T#ЍҪ݌]U$d}Z{diRJ*XT'KLTRK1ހ@YF'NYU+%hՒApAԮ)4I 77jH/Y)5 $KwPzlX(c0=0fCU\55?7 }0.ʡdԬ/A~jO_شXXت,B1y[b-]]a))( QsR(O`G-CCMQQQ,~dCEECx:JT9D2Xɀ?Arأ7( t4Mє1s'U Sok7;ZT5+g+U]5)|ۙT-4_<_Ѳ^)LXث44}{I+KH+KIzv/Obwv;%Og*$!T~HK}{p/|d\G@Num?)͕%lw {}/]{2m\cl"!}Pm/MFBI#Z$<˗6 rrrrrrrii몬XBCkH" 68t>8cd9:hJT=I֓bW^~~ wWhAP2bA) ɍ|7kRٷ40EEEybbb"!ݘO 12 d,(w'X%%IYR )5P 9 B6#)Sm|2hM;344O[cީ֬,zYP?WAO6^@Du T#㣣e㣣ǮɆL-`30`dCCy@@d&ޜuʷ!iaOO$Z룘/Un|[[jƫN*1 -n@7 V?dӀiGbWOQQQVnrrrrqRKLZLLLJ=Q"tQFiߔ ^VkDl2*F XJ$!0>` P `)Ql,2].`""*QK"OU31#ն_F a)cprjM i)5ׇ 'SjگxwBpH*_TD@\ͷ@jfjl hP 3Dyri4έ귿K~GZ7Yg޵3 rYMqy+Gv$峉Jr6mU?ñ/3iQ+ |)4&hlX]/x%Gxme|+h̆'}UQѣb;h5((mD`Ci"P^ߒu?'1NcXN( .*#)~Ya}nvR[[Z[[ dkW.+D@.5'ׄ1X2B( uG*;ǶIڕlTS}AcI!So](O÷*qyXhFR^7))DCQ8EP@e=JLJ̈⺹Y;tk*V%9$@0%"q!ϦǓ`/|G*n5n|>ql7j 7ɾ0S,}sީ+q;eΟ(^(gp`uB c G 7ӝABk ;"Jm O7 & xtdPI vFQl]]☼RJFuzsC߰zFuq^ra bjL4֢ hޝhbRttRkUi ε!_*)Zk3*iEs].]`ЎӓC9 ;0m$g-Y/P5d{ђF&|P5XWv9ٟqm/QMB*̑]ʍ]Iw4P͊Z\DRw6׶ⷹNNlmOQpcU$'`zy.?^1 ~]Z,$HHH1(aI)$Q&%M(HL9MCx.|>2to$A3܂1/IQ !d҂h`:nQM􅚜LX/W^JH3#2dVpL 1 V~JVc y56^slT.iL]0h*fAdSfW:1Vڳ/Ch8+QaM"p'jIE&]0}&Ôܝa-Bò\/LQ c9I d#==n_'Y˨y?S7&,-2Yr]`!¼Wwb[G7KƦP7- ӄ%4F2dFWaw?|h?KDkh+E+yr' ]"c%R"sf̄PdfGJi$O WrV:2.U01uh#d`iIXM͖JozFd( N\-犮2tn^/ Lh>zifJ!!qLԱ.KCdMH% )P2H MuwqL TҺƎAL AdC&İ_ BHeAy <S5[4V6HHhIX:HĴETjZ 5wtmI &T.m}қgaۅ0Tge`C(%&]1vgIG@Yڎ;8fw35h2+ŝI%mk8 QbE ؑ&؈b ,mdDZ%IjtؒfDRK`,@R[sHi ET9-mFj-kZ@B8zNBHFS-ڂR7itJ{dWowwNn  d})P QHE P+ аHbdՠ 9SP+*UfXI(C0b%H` gJG MÏ~&s HVF(,E0a)D()@0B%"2TQEJT,,W3Y0B3uןr2άQVvD'r@]!%H̷I 7 ktEJ-hX)&,"`ӛ 'hM"a&;b\U%U*CUU-4h1 }pxx ;@e FV`e`%"EJ7o'3; 1fy J΃`"a ʻQ3 EDG5 GSF\ $Vm\1qQƄabu5ܢ,VМUJAkҪD@3qBm9KyQSeQW$qkdDUWFh|/l]M̓4ۄY(v 7u1DF C)˺A:L  n-oUNJqȑVkma#QfhEl0A2uӭ N0&( 0&&aYTe1#JL0j[u&,l8*4hFL iMUg$MFѣFd =Ct]LPh`AUdH@x۫wd70UQ5X9*Ix"DuWK$XDHQ-T)J@C;2|74< 6I(|Bs ^lTPzXk%@$P?~S5p1X򙘳*QFWgi8bv Baj$BUP RCE4% 3R$ TPF7I AIИrJel;\ϵoǏ{=ߞk}zz)//2G9M {"-;SѷHAAͮ63Cx[hҁA#^檁ŒmT a&r*>)iCޅh{ܑ[^)L&"Ck;dfTwyy^$w=@ߕ;ZZֱt<