aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/notification/fixtures/submit_post_post_in_queue.xml160
-rw-r--r--tests/notification/submit_post_type_post_in_queue_test.php102
2 files changed, 262 insertions, 0 deletions
diff --git a/tests/notification/fixtures/submit_post_post_in_queue.xml b/tests/notification/fixtures/submit_post_post_in_queue.xml
new file mode 100644
index 0000000000..4162d01d7f
--- /dev/null
+++ b/tests/notification/fixtures/submit_post_post_in_queue.xml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dataset>
+ <table name="phpbb_notifications">
+ <column>item_type</column>
+ <column>user_id</column>
+ <column>item_id</column>
+ <column>item_parent_id</column>
+ <column>notification_read</column>
+ <column>notification_data</column>
+ <row>
+ <value>post_in_queue</value>
+ <value>6</value>
+ <value>1</value>
+ <value>1</value>
+ <value>0</value>
+ <value></value>
+ </row>
+ </table>
+ <table name="phpbb_notification_types">
+ <column>notification_type</column>
+ <column>notification_type_enabled</column>
+ <row>
+ <value>post_in_queue</value>
+ <value>1</value>
+ </row>
+ </table>
+ <table name="phpbb_posts">
+ <column>post_id</column>
+ <column>topic_id</column>
+ <column>forum_id</column>
+ <column>post_text</column>
+ <row>
+ <value>1</value>
+ <value>1</value>
+ <value>1</value>
+ <value></value>
+ </row>
+ </table>
+ <table name="phpbb_topics">
+ <column>topic_id</column>
+ <column>forum_id</column>
+ <row>
+ <value>1</value>
+ <value>1</value>
+ </row>
+ </table>
+ <table name="phpbb_users">
+ <column>user_id</column>
+ <column>username_clean</column>
+ <column>user_permissions</column>
+ <column>user_sig</column>
+ <column>user_occ</column>
+ <column>user_interests</column>
+ <row>
+ <value>2</value>
+ <value>poster</value>
+ <value></value>
+ <value></value>
+ <value></value>
+ <value></value>
+ </row>
+ <row>
+ <value>3</value>
+ <value>test</value>
+ <value></value>
+ <value></value>
+ <value></value>
+ <value></value>
+ </row>
+ <row>
+ <value>4</value>
+ <value>unauthorized-mod</value>
+ <value></value>
+ <value></value>
+ <value></value>
+ <value></value>
+ </row>
+ <row>
+ <value>5</value>
+ <value>unauthorized-read</value>
+ <value></value>
+ <value></value>
+ <value></value>
+ <value></value>
+ </row>
+ <row>
+ <value>6</value>
+ <value>notified</value>
+ <value></value>
+ <value></value>
+ <value></value>
+ <value></value>
+ </row>
+ <row>
+ <value>7</value>
+ <value>disabled</value>
+ <value></value>
+ <value></value>
+ <value></value>
+ <value></value>
+ </row>
+ <row>
+ <value>8</value>
+ <value>default</value>
+ <value></value>
+ <value></value>
+ <value></value>
+ <value></value>
+ </row>
+ </table>
+ <table name="phpbb_user_notifications">
+ <column>item_type</column>
+ <column>item_id</column>
+ <column>user_id</column>
+ <column>method</column>
+ <column>notify</column>
+ <row>
+ <value>needs_approval</value>
+ <value>0</value>
+ <value>2</value>
+ <value></value>
+ <value>1</value>
+ </row>
+ <row>
+ <value>needs_approval</value>
+ <value>0</value>
+ <value>3</value>
+ <value></value>
+ <value>1</value>
+ </row>
+ <row>
+ <value>needs_approval</value>
+ <value>0</value>
+ <value>4</value>
+ <value></value>
+ <value>1</value>
+ </row>
+ <row>
+ <value>needs_approval</value>
+ <value>0</value>
+ <value>5</value>
+ <value></value>
+ <value>1</value>
+ </row>
+ <row>
+ <value>needs_approval</value>
+ <value>0</value>
+ <value>6</value>
+ <value></value>
+ <value>1</value>
+ </row>
+ <row>
+ <value>needs_approval</value>
+ <value>0</value>
+ <value>7</value>
+ <value></value>
+ <value>0</value>
+ </row>
+ </table>
+</dataset>
diff --git a/tests/notification/submit_post_type_post_in_queue_test.php b/tests/notification/submit_post_type_post_in_queue_test.php
new file mode 100644
index 0000000000..375ee3fbef
--- /dev/null
+++ b/tests/notification/submit_post_type_post_in_queue_test.php
@@ -0,0 +1,102 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/submit_post_base.php';
+
+class phpbb_notification_submit_post_type_post_in_queue_test extends phpbb_notification_submit_post_base
+{
+ protected $item_type = 'post_in_queue';
+
+ public function setUp()
+ {
+ parent::setUp();
+
+ global $auth;
+
+ // Add additional permissions
+ $auth->expects($this->any())
+ ->method('acl_get_list')
+ ->with($this->anything(),
+ $this->stringContains('_'),
+ $this->greaterThan(0))
+ ->will($this->returnValueMap(array(
+ array(
+ false,
+ 'm_approve',
+ array(1, 0),
+ array(
+ 1 => array(
+ 'm_approve' => array(3, 4, 6, 7, 8),
+ ),
+ ),
+ ),
+ array(
+ array(3, 4, 6, 7, 8),
+ 'f_read',
+ 1,
+ array(
+ 1 => array(
+ 'f_read' => array(3, 6, 7, 8),
+ ),
+ ),
+ ),
+ )));
+ }
+
+ /**
+ * submit_post() Notifications test
+ *
+ * submit_post() $mode = 'reply'
+ * Notification item_type = 'post_in_queue'
+ */
+ public function submit_post_data()
+ {
+ return array(
+ /**
+ * Normal post
+ *
+ * No new notifications
+ */
+ array(
+ array(),
+ array(
+ array('user_id' => 6, 'item_id' => 1, 'item_parent_id' => 1),
+ ),
+ array(
+ array('user_id' => 6, 'item_id' => 1, 'item_parent_id' => 1),
+ ),
+ ),
+
+ /**
+ * Unapproved post
+ *
+ * User => State description
+ * 2 => Poster, should NOT receive a notification
+ * 3 => Moderator, should receive a notification
+ * 4 => Moderator, but unauthed to read, should NOT receive a notification
+ * 5 => Moderator, but unauthed to approve, should NOT receive a notification
+ * 6 => Moderator, but already notified, should STILL receive a new notification
+ * 7 => Moderator, but option disabled, should NOT receive a notification
+ * 8 => Moderator, option set to default, should receive a notification
+ */
+ array(
+ array('force_approved_state' => false),
+ array(
+ array('user_id' => 6, 'item_id' => 1, 'item_parent_id' => 1),
+ ),
+ array(
+ array('user_id' => 3, 'item_id' => 2, 'item_parent_id' => 1),
+ array('user_id' => 6, 'item_id' => 1, 'item_parent_id' => 1),
+ array('user_id' => 6, 'item_id' => 2, 'item_parent_id' => 1),
+ array('user_id' => 8, 'item_id' => 2, 'item_parent_id' => 1),
+ ),
+ ),
+ );
+ }
+}
!5/?jrlEgfgƗ(CVKKYj>{.`dxTFӽu9VP2rFqI{bPfJ=UfܻJ#hw[4'$_NQoak51DRᩁ(E VQӽ:ep Is ^YV;R#J̦H?nAK D lFraX|#(dʧikzilE鵅.Xz؏ `/eo٭.%kt2 ָj_,9.O#k*.;;~=~pgBZuRx߉(2LR~ܪルA5̂t*Mzx|@HvwlH\o\RGG՟_-aPYCNɅAPn0?jMO78v. c{EX~f0)ЄOrcA c۵&u9@W VS[׽n+cqF +wBؒyEi ^`V&/(Znh'J0$!wVP_3W2h\#(jrI>4:Uð,_f fCz)t`JJS`^bAkJ hR[HK BɼաT]0\;Au6-QjbuU^ߪv#څ,A aCb)4V,2BMYWQ6$E 5"4*,'ˡWBWQ>sv\ 4[ßI IPҟ?PB3f#|k]. jH\~gmI.@"<6@T |_Hk3gǸ W/U , Ft*ڶ%y gKU-c62֑Iٗ d}xu̍5]E#{3FgDiDVtMI`A%0u%<+ﬣq7 &MX@ܥ&v 9'Syt1RIub̿^h35:0_>B}!SwcGv++^̾?BF̬}] -G*;8g#-* xS8e#yl.X<|^?`ˈܠzv6ݝT=2-&: y`'Xp`!1=+j19OTavalUfH;]D{AEiThi7rJĀRw`mn?B>eVF Bԃ g8Ch}+GZ<+HlۅVN/ʆ7%~Z"Ϥ>t@|# YwIj, ~7 gml-A4Eώx<}rAB֯$o4}5bD5 61=K$a,E !P."ϺOEq٢=l9Q"#“dΨ> @~`,0+ٗ]Khˉ|G5pMHt;:^+b(~zes>B]`=LϬD&1t=g+4!a{> 'atu.]b| ߲h`v6s X6S쎲HؖoDī]wV=Վ_Ͱdd: Yת[qX*"`'`\3`Θ'G}59?n7 3 b _pFhFmxb_s{p b_A^įmY<ƢʇQUam7Ge,qi'.V9.hE$ΔqQJ%tT D]:ꉾαv퓶0$>17ū1%%^_;$(BKKf`) 2ϛ({# jBh:ۘ z+BT3CS2=.AQ]JIvB_zcq!Իpwi1{syW51,_ g$6p߃UbzJ(Kqdݥ|1w V@iWRw3LPM/+u#70bP @(KujwFJ= zC壜=+b# ti=BId cT.ho%! u +J&ܡ ׮&<UTZ$ j1mnE{b+Zy(0p%eG.+5Zm95'B}fs$ cMmu+aXUj&b$9ƿo#F(emqFPh+^ੳ4c& U]XFCib ƶշ-(/$iI <;,1ig͓ ?ɁG[1AкD^&"NNwRX־\dU󝪰 *U2 O3B-G("u.Jg="8z@ ?0 '"\ўQ*G,f]uxOg}s< j'6=SvS5OZ\ Tsnr>_z-2\㩪+rE) 7mMa/5)a 3 U+VVYc?{Cl( Uim20 rX*a)?NFWqi炣Zߩq)̠^Nf-zM61&I&Ɵ] 68͆5LPJ  H[f`3ۤOՐtYS; MEO[͢#PWoH']zLQMl:[V07Ĺb)B^ql(o`[ cJ%dXNj2P F /#(b V ΄VoY 1`+ny>h*XcyzFV 2ϛTOr^ek`U1enC4 ѧn+qdm`8v@Rko3݉ Ο(w6< "IpZK}9 y>fS[~A`}4 PW*FjyZ_C:WB!WGp-K% *zي94aN,7v.`md$-HwgG%oBs&OJ׶k̅Gy!&5ח*3cQo1[Vo=#9WPS2^8[N'c˾:B`Nq?$]oQV횺|#bcY~#oirV7>pjgRʢk(O'BŖ>, _S^YWZ+^cBTV7D*&:ͥwvrr3{ɴX>8sVdV%daؿ0J?em3" kCħu=N$~cJ :+kLXCMF{Yj+hoF}XZ j@2:6Rrh&pn" e%ydžj])@i,nc aUM5Bd6C`'xxPYkxµ[+zmSU_r*䑯K:g ѪS pXUUŃI r8~ 8> fp*2(^mHU\ttԒ*#> u+)ib2;};rS޸{P'-8N^ĮiXڕC~H ŕFnbnE1[Y@[& H>EB9Xo8x7'>9$]'Jj(c^"cH; 0 CrRo$| ^=Mp 7NeYu9FKa-gu׮hP㊧%⑛pEBiU|9pr%2#!F91d峅Nuv!;A0:}p;؇.Dv8weYLo$!S#=/(4#i B_Y*vn-TDw) jmwd+fэјiKKGqe޸]R|lWnN zL{:x]X5O fC>ZLM Q 3ր]퓢⮨ :Wget [R.2Ӥnx敯lDREC"82j}_TౄC")yshjM WϗKcd6UJ,:@uOׇ>_UNWa4zQ,6I_Qb+7xAԬksT-IJM8x*d Z>´:ר>F-q^kqLlcEE=tP4L8{J&șIʜ V M)Z@di:n:H)ׂ:+eěp^y(Y`dW! #lX %b]U +د$zswo_n<@h" vHs !kJ~w/UH~ -G} `HqNb!$ϡR&BYe K:S[vaI!EzX׋"`}l2vܡ:D*06=v~h#I2,|g"JaD9hQ}q~ؑsM @$#8R2%8.r"&09Qbc kJU#+i)QkLRd-uC 3OZ7<9[HYw>A^d%_Qㆻ+`,^=p=eeA0CpzjBe waWepm|*:/k3 I]gYX6'ܜDP6ǬFr75N7o:A{e4jbUD'nAtև8gj L`^CՄ&jg,20/B;>K .aC-SxY!T4u-9wX)œA)0B2?AYeqqU y.pCr!:pOlvNWƒl!דV-X@(٬[Ċ\\] ٸDd a)5p 8x7(:s=,ߣp#LD0?Fue(V]>=d͡*fݎwXC`% ,I;~Vdw<9p+key]Wf0sp#ǖ zO%/;J"ThUGi=ݏ&L54Zs(5r.!u <'**0>o.fkL߂e{+7!Rʷ?D/_(- #(B?`0Ʒ 2c!_0FRp>Awe241؅H'CWٲ@!V ӆAI WteU-„46ٖj@!f zQ[%ؾ_RnkH8uQ`-8v]DiHgh<!t C[ha@ؖܗk&G+Ko{0Uo{L'~ /aŅ#Q,M*D{Y}MaB'-곿_ 5iѦ$3|nĨhKH"FʽNE 3lLo dλJ^aEԗPRb }4&"\4eSc7` ˻[cK&`dԅ]0ַE>bM.q  W;#~/(}QfOY_ $쇔[&[ej~ >loaHDžUsplCIV; L8"s&^q@3[97:_#5z9= ʙD^wg[E0u[_{<{oK<)N7r9., ,XlՊb@AOju;(9ͬKy# ˻+# zl-/V(dvCۭkP1Tâ&tN#SϿ n&_2iNaKmduW޾ ^vLAG֠D.5۵4# m pf#G?c2J _Қ%<敀x]CqfεDP8&{EK#Â'7)SG{L UQpJ3GW '5a+jVžV7x\ի;]&1}nϚAd1o$ZOv7"vSPRx%o]KOp8li z@^qx/*hlUjgF8u򓏷'(Q_FoS5==E77 5-{>8:L\Z=j$o*ד-74.he39qSΩC8:Xlg?; D/c+.zIS۵o tXx@lbML%"㹒c7=|d|؁2fABS|)2)]ғqmw4"?ږmܱ#P>FİJkY:6$,¯9`kf 6U>{H!p/LaЂˆLQ*=3S{bpYJ;>5| [DrU[)i.s5xůd3h܍Y%m )ʟMMi",;ŸRW冁ZPS~#U߀9Fb|MN&XCy:[]lyG25iƳ8E h&T|\26,%1GrlZ93,4!S9I1y# ~]+g6D%hwjM>0|qy_Ix{`NTY?IMT'6&9 ̩Wwp#KM”s7LfgLTYep `,PkT71jbFKY,*..А,jFq|,AoDbaNh$ckVp"txÜ/LkK~clXM5xt#-+w-5#E; XgU}1waF؝O2BE;YHUt[acN,:?J9~3`fE3{['@}Ī7 DWhq@EEA6$o.卬Fϥ={>C.R*8.z;U"U:F8#ᯯOC'[AS(L}ZYjt]._0"ҲTzGoxf5hb Ι2k9ۯGo3wi598ۉ6F] =tgG y>`z:V1%^&?)DUў~e:#<(v@PtyoݵΩ޲vÞAU2̘PV(3Lj@ qYIe@*{wvc2=_Iaaܦ!ɍPɴEof6.+$ZxCdZf6Fy>*۝[\hs@h\&bE"+_jNd;[ )P4>8 %3ޏH^}hYp|64JhB"ؖ@or+Gݾ[ϟ vn9] O^ XtfBU'[`n*kQ ʮPØTExU7DQ7<ģ/L_FQ~6>Z8 l/xb4^n% G{l H\'> 03K,8y$g# |1D|M5qn1ͩ4>GX'a_4r'TwpcA?2Ŷ†{763fTAxV>vۡpϕes *>@?iqdQ,püN_V.7j o|7NZC5N΍HC'1g˻.L nP~eW>V߅{KwS-4u4}ŕ#aD( ne5 Ts[0y3kKU,?U"4瀒;DxԦ`{,e3ċ&C~9T̠'+* v4@ @º>?{{:05IߝY؇mh[@Ǫۖ+)e0$a|zU ԉ. OpΉ͝,' ~6z>lak0K>C`o&v{@1f#s%:7ܲ^4dJ=0>[:k䡢 c58$_ºb6 ]c9Snyhޭy`3vgn~햄CإA.|W s-N]j'mu/@ar(*Ozףe :lUd^Ь4^UbZm &?ЏE ynYF.۰}BS)@L8gpgh+4MUNʽbۂ*PӟD9'3]]0 ⟇ۨ' T6k-܅ 8ap΂?p;zvL*5BR8y@c2(g;<  |CpWwNd1vgtb,CZG<ouGBKoޕe"0!pLrK4v:;f%]z,}r 9[ȡX>hD\:Fcn7+YHKF4^7lmC7`` uʱ+talB,d/f@xeֽxa!}/x׮nŠ|]hپћni(XvAݦ=&QfvסL$J:ak"]NR,֌הǼ$i%nvF|^Ja(" UA6q 4a-9R7`c h&QY:'y/gA~?Ή,ݨߍ)8WO&([Y oQ΋ruv}Jeu O?yP\J\$[aD8F O t7qrƶt{fӚ9{*7 ۣ0uhT{9WAN[}YdҔ{`q ~Q/TIXH;a*RXck@%C.7̲V8"@ M\G Bnt/S>sUvYeeJNu_T0KSML259ќک/Xf"Ya _2a^h&*)fF5 'h@_]6qJ언CLQ$( 97'32<5+I\,&U56UXZ! X?O~A BU(}V^3Q $f<_k~,PF\Qq[٥k'^c(1)CoSw tH43: +$ և6XL,IO1mh x#:qqS' Cˢz `2!+?^\8k+E >Ҕ-U,#"vUs(@R~9w]#\-ez[ȗ'-+vH1>l}ՎUE08b 4JWDTMYf&II}&x/Z(8鑉ud2}AAߛ֩}x\1>. D>#Z*zԅ5Uz劓I[FJ)GˡX*wGG5JGBxTHq׌t=_ kvgȍ$'; 'ʝ+ovX A,3׸\}dM_rݗ۟' j!Ug>WjoVֹ5vg iԖVAAjǞg3ILHNMO\@8Gе߻n*7|5YPt ǫ1/wvzkBb-E#^NG>z\tx~-9&̗[B:)Q5Xm)۷VO`vUsgdƏlb\馺e&hRUZ$lR2WyKI^s-1z]ȶ"? KgSpmnv0` 8 CN;/IG̉/[5EIennS4].A*<_}өߛѺ ;ĻŮԶ.k5)( :+0J \i EU8AO]1] uNDza-,ÅG|x]U]j+1yg(kT4KpEZQ-'Cyv,uT..`ǵԾ%@n-|U(UY%\BM/ϱ.%D}4"G d1@l H +醭R6eD`VOaR l0$>S62UR)%WSC>Ά/ fQ%n\t[~ԜŽU簌@‰;z,ٔT8"I, $tø2oe '0a1&YKaCdulB9t1Um =4"oo Ҕ$v,f< O/y籲4%AD˕Vܰ`J>5l3/0$#sS?_{PFʨ'A"d{>r ˅H3e9V@&91~Qν܎/3,!)Rq4GV&.Ex_ʌ"Uw&s9=ׂM8x="3bT 9񹒎zrh&V), x>ClEFsĊE70?y%LV)MnM2]7<0OE^K+##y+Mz]gdBa2v YQ*L"_4q|"̈o|,f9w_0V.DR\٫,~(iݧ2 Tl8DYx3.\ IgL!Ck)O_rO݁hupM ʿ O[=B~AAP>־?[MH` 3`VC@CEM+ØS-'z]u<Zzr=tWi7j91 f1 >J՚XkֵrpRJݮW޸moa EMJUFrpj֢FaVxK=%'%ku8@fƺf^GT[3VL3Pg>~-E0* 9 0U)VaVe݁Pگ[53"8L{Jz-wQxyU(sW_WW0 hFShS9y-9m8`4ajQﱤK<Ժ8Pj<@l 1-QǗ5'A fuMuo('سdB$?ґ{nZG( nfiѿ|lo S\ΐt`K|q?/ɣ$_V'۟xLkjVPW`Q0j6OA7 u>(3LT-ɶ&3}P 3nKپ* c2CN,Հæ KwXˎOXÎ>3Q'cF\ 0|+~ g9{vtS1FO E3vV):w-] gS نg}1Z 1͓Qvx ڊ{yqD߼r=m72h HSo-!yKYS.ܕϾVj; g`q𑤐W L0U 0.FAȒ6iO*a.(BBAS"JCYrd ǰ˱}q%_CgA$%:NaND;8Y=j%fdJ'F貔ڱ랥skipk@ojݴKLPB>LlEڃA{A&- ?ƛ?M "Miv\@wPn;x72p#Qq>" /m[/"&e]*}; <Ѱo~)#orgBmlChL6z`FᘅhV(uvxt!:< mH_U;m@[$k+WXjYhe\7 p;(XؼD"U"Hbv٫(`;l*|^ f=I`3@FiJitڗs: I6fJpǨsBFF(;5\u25bi-4͑]Cmx-5]ψz36B,sRPWo1or `N6XUp1#SjJ"X31\f L}5[py>p"~)>:Rhv&٫+:셜V:-QojO>*k rv[krBO:x0w>{CZN%Ev[Ie㳚EO/PaYZ釈HK(/O:P |[TW;Ƥz'ߘ+#SjdLT |Z ,O #Fk]G 5d5+mi\9yJ')x!Дjͺ?H3B3}JÜnq)W/'b!XBO`FrzWJDAl`"iBmh `ユRizpӸns ,'P.0 !v="aE*>A~rӇ:VaM2^rRCQɑwIDTu2Z8y NX0{.d |6fNMLCͲid8H\/TVW{=rh]bxG75Ě @_USctwG`̶L w*A},G=QHoI^o= ]gZތ7o瓫 ¸t{iMD_׼MXjҶ00g\r yif,RLnPX9I%9*7z!}K i, /1co˂Z= *\G8L[Wz738imا,+ Dgf`YKu!da6#wc* *am囵 ɐz:'V֗b׈^t)DĩA qP$6X|)4 'i$}JY䂘 SPr꼩 ]}k\hX310]uo >K1ȊDKѷ0?7GIO7$5~*J >jHpϓ^ܘ/C%ka,FrTߋ_~ vhJ5uUK,kA!6@2 H<~D=|@: 8=E*;H;CIۻ>ݐTZcuYІa|oCܲnmu ot?=c G g%dކD_ \ļAet[ǀ/aK_5|C)''J<'r@Ctw:el=te9en3.Ju#y$, mL#qZx _g!1a^#goG`TbYb3rKǡ8.-2Ktxfo"4DcXB854u aj>%V~?%0Syd]KPmFQnɭdnM*?j,I}VapGa%jԥ򎓹wōAAJd}+8e'/rfgaӻ-\GDqflN\AF%`B@YMg.l6ղ2pRiOxC=2r3Lb"z:ZaQGPW Ȕr6shi0>\CdOAh_TKgѶosoYW-m5kWRtP}$쩍q?4Kqc}fh_(N@/zGok 7Rbv?&eQ1"Lҫ!<[ޗC[Pq NvQvA:tt;(_ Г5Fr37DEW(&B QM2.):.}hV]2 &4%[sS/Vw:;CcNj1#D7 D_j/&RO+J2ޮ`eÿ΍a.#Ӡ~JUSvtwH߅4*$o*UQokSH4\֜Pw cסHp?pZ8Θ=qT ݡRI4oIbS+|"qCsCf1+z;cܨ{+e1 <ɮPl?"$u*$GH>APF-QyB;s-=S#Lz |yiKuR^ѢZ5{,1 -8p8t9ٯ(fs .Brf ?GvAhx4 nޞg g+ۘZ~ Ơ c bP\)`:a[ ɘeWy&'Sېψ|iO|yoP}_!BM*#vYdʹN}E/I8mmGm%N"e 2lcA7Ri/u|!"=^^ \n\HѱqP& -RhჽWUcVZљ=U%CC.sH@f'x՗Dx_& b8L\Z1@u ',TNjѡq/m@ )Z3)8t$^5k?/PmB%)X[ףveֻ. QdQ4W6P>5E.L8(ŁգSqetT;fU@&XbFk S}!DN>UF셚vhYe{8BTL^Um{"t 3FWFc:]k`@tB 3 ,:ўAXIY4ez-K8i!H~pp\rqFNsf/rr#OW"+\͎pfxT {)ufGincSTi)Ȯׅ5 (m$5Ro%HHQnI $W@WH`ڴ*>TB{}.& MoFOzBb] cf~36meoWm (>1͑TTG+H/ %nCꝎIImQ;7%Bex]Z6E~H]0z5H@n'lPn2EVI!4zGg8}m#pH7b0A+ˋ!-#FL nXrMl cRyp1%,zF֐j8 ?c=t v8~C\Ə}wq )͙JjdsS#2\o#9u9df{hRDP<|Y{AOj3" x=}\ e:P*LIl0+tU2hP4R7R  WMw.E3 NFPuӁMpT2?c(ߺܬG8Rͦ"Qj‡ۊ-[оۜQP5şx\,=?%hb(7l{zt *4QgiWN`Pf8/ ꧀!m 9 :T=1ZMXM'+htpMCl3)%RWIIt,AnG \0w9X^QA~IP}-c¬+#McHج`rهq|f}#ӠU>fDqLոTU,(!94M뀚`9,3\ͬyi $I] 'P ɚLa`׫_Wg 7L.tJzfx)zt硬OE{U~?FaГw9!+8[\[]kK9q|lFTi%!NXop ;L@ފs)\Cl@x v&>2}z`;2j2njʖퟔ(2;uL xWUNހ0a(85ziىMл4v8uL*;yPv 7.Yl!bƌ:ZiB.LbJڡyb ,:}3Zrj0c|+mAЯ*_b-8=pY"0U{nߠيqa+b*e#w=5 懣(U‘aCtR{Nnfon'h<EM ${(&G<(h "0KjPWr;c*.+d)12dboыPN޼fU,NgշE˂)vS)тgYKmx\t N1GoAXFkz@X2d2Tv\/.>ޟJ5˹T}QZ'iT( g( ^UCCMq5?7BgӖGQ!;M&opOXT7uI*HZL-JOpk Ns}99'%i؎m;6-9捎(ѣZKO¸hwQڦpHs%ڗ@ߜuƖ %|)lȚDԊ;Љ.WcQ}L uARc06.,_& 16!,E{^UWVbjny5x-6j /ŗKIܖx˺؟<rE2OEɈ<̈́,xr`ΆWP7GNc!*Z8Y:e^YB+[d䎂XevsqYj~ 3]"]#PP"K+:ފStqC8 Ӹ*5ʴk3tȸ(h @pQQ(-r e@-HtpQ7w' yP(D&Z\)Ȭʉ;8-\}4:ն5o bɎZ\bCƅDB!3>Nw#IM8Ͼk`ǥį!%,>(TIJՌD^P}-*f^ 5l1r-H?zҿL i^M-Er']A`Җ eI2Xuy]·ip1]a a~cn9=ti4muά+6L ;'Wc:DB5qX-p?]W}ܱW2T](0]TfAxut+pq4\A8)M mtM3GGNeW,ɴHN0`zͤLːS8Ɲp8땋OdK9`d+/)zF6^S;mM+{2@ڳ҇zo _mPD?"%G|b3_џ@jql,^#ޗF,G"a MH0t gAc삔 %eDwFI0^ ԹSh?0Aie肕g v#|R5$~;Ar~c-*g&88Wj&DJvOD::{cb%&(:Ď-gjce.pMLX^9` >PYjUFU1[O$h̉j/R5` zq$V84kI(aN 27+}` (sf(K d^[QFf6J1۶G73|ucׁGD/9Z<.Ib޹AlCCS꒪eV+1!LϪPWH6f)]_C'IǼG~ xzER9dq]nRkί(bkeVnM|6x&Xr>m+=dv6hlV2]y\ #oԗ#ٗʧ^#Y |HhL!_;hAc5 $޲OI\lUh.Z@5̀5,;[MW {P[uyUEpZnPT{B*DwLvL3vzD9{[" -.U@}x[61 )i0GJB 䡟9!< T4.%Wil-yMaS?שC:W juA^+zajr Eu _7CiwQo"Za(șOjsn:K } ,/3׸2}Դj:URt%X'k; O~hh{$m0#/%W|52= PV+{bJ:THJp~l3EP"cOy U lQ:T[19p KL/c ]xDdDL#ˤڀ^iHH`fiY56X*G[ Jۓ#)b PrAbh%~V}- :)B`ⵆxk>0%ܸIx5mPo(WUTzLgH$_a y6˽ʬL~i䫹0DH(`VLH%b 7Wl,cٿ?׹m_}8wDo*8كR֦rǤȠSM|IΝwҠ5QO>ໟIq6fjn:e?S'\7R(yiwOF`7T!cE8#jAv,U'Sokrk!:! jUKWE\ڡo'o(c.MϮ%^Ce5-Oϱ<7""JXabAZ@B`2՚o(7ڂ?@Y1W?8:{LЉC?gVǷeM8%NA}V߭SbɺE)z+| (+{ESEebG#>a"ےJ 8w95m>Lt9 ffy{`{i*K wj)ZcKygPQo]eAXGƣ|{TЩR0MO=(PcW>}-õ5nfҶz.‰FhH8vCjwL;e?"- ǡ>: `j5&G4T4 7 ¶s@iB̓[u@ۗ `9i(Lrh[#Rټm>jkH 3,n> 5Yb c8;/ցl)$zfkIub]kd#EdoͲKyC 5k_yЈdės0M$hY_;4  ˃)q-C$]]~O @ȵpJ+ F14ts#d;ofr~|H& 5Zޮ\>{".[aAVݒ*eu+F^7}ŒwN ZϦݾ3\&T?<-}K{n @5>_L~*AI Iȿ\FG'Fꤩ-/f*1)^WE2hXz"a` f1+!,y'8u94 8_xPzSfhL vH~N*΄~r3cA Kk~ f `~)hܱ׋隬Rd#/M Da0ܫuY18%vd d7m-imm2ǔ0> }O:0-B'#\ww+8]jw`5KOi֝AZjwR ݕ[FJu>Y4|63KU d,C'c2udcCfޤe ;n?B떦ḑ [4埾1ȌSU#vќnC3ٚ}9u{fz[T`مϙ2t"5;@qbQ,=䃻j +eS QUtg@D䶄Jh{;88/RGHG[M7>cpPx.~k#Vg;vn~~%.q S)Kb3ۭVSQm$1^ Arp8Ҷ2,ew/^$}Ŏy-~jX#ku2@qLGM >9ޖ$3]TfyXq :aIGŚ;\r(Z뉎Clꇴ%zbVL2'/%t,xM֨lB62(/,.aV.9a 1t#~!ˁz{}=W0qٿ Tv#xLL9A7J[;-;!f,n`8@2x@C%;Vg{5auVb!:L8Yv=t30# ȫVW0Cdn,P~aVRQ)&ʀCfa/ma0s+V[d»u/ouYG-i6Ҕm9a,c #JaHob9( q6Z{W .0m4-!/8Sb;7N`&8OKiaq+ :3. |5-Q1 6M'%xcJjcVlCkbui&fX9׾?,YMۅg9J띯S" Jp'1dN.R' `,I z!I04ҳ2T1+M8 9(T,;BF& ' 0s)zGe.AH uVr N`9":9%(8up}}]/UQ!bq9(^ %>3Ll"?QX c]6: q[q߱="KVr'gY X(I:K?cX?*?%NpLc_= #m(FIXsW"TrD[sz7o ݟjܪuJ^z%By?)]J=oD{TSIy~{S fyƃXWMȏ3/ {ĩn?(9a4xm QgNP ˰UeV3]$BMsWi,Ź,Rа$a}Hň qNr7Z8NG ɴ"Tʹ{]מq& t6Ǡ:;H򈶑HEI-K49{l0W|m,& -6=mR75b⁞1gJ Qx$\2 _ A|>n =^ƒpI6bQDW<*_jƒUcgƵpkhC7txn-ych=؆"\Xc}Ae#q)3]yuH !(5w1iؙ˝߮$_CW'*)(k \?2k)Wӱ#D I޻{T׵!zi)Ц Mv0&j(.@㮎 ۺB=\PǢџ!@X(˻ k63 Ǐ9.F׺M~~BDbdJ4)(q 2;LI7nfjGL#G]MEES *N`X;6eۄyG.XAN6U!./¶ ]uQ1" af^[SB5/giޒ&7L^\.Md;[HE R@r#Sy+?=t$)U 5an>h=?ߝ}M=ZJ5$e2# S[Ҋxmhh BT/0@%L]xxyzq'6NkA%P3ɔlvJ2Rkt,Ɣ`b xS0#Ee,%ӹTUĆmCX@dj^6Sf6BnK{D\lce~(uz B !lnp pL@RF\#s?Ooqr"{x %k)i$0="ՈM~%ϭA2FbZ+Ys'_Pk 0aRґňJ6ec FrDW :}eP\G5qcԣc>#\YZǚ\![oa O"-R+*s!lP56 a,: 8Js.ws]m$(p!"{7{A Rcv%$ga٧UYd1XI`F/w;|C<>(6nG{{H}v߲DN=!'+Yr s ,`E3x-~X-ze;JGbC ̸> vif>-c'EV4Z w_M>W\==w`9Ȱq@ULᖬ,Sg\S)\ $>gGmE?tϤ2ZW ZD["ㅑq/([~М4&HK L"gp@`eؿڸ0Ϩ? |7&W`FG5a|ϓ1F6!!j?܂dXw7U'}E0i!40kZ"$&^'`m!(!+e愚ѽ{JG N 60˨G=_Iy6/0-`;REv*0";W-a¥PE"7t0MڛΝDbt_feԖ:X4JH_Vԇu# |Nq}2@f"NKx|;?M.#-_$NyU0|$0QwQ}G;ClO1i/:gB.Z_ 8 w[ln}SaĄ*v dDYG@~BY@Ϙ)r;"up|cYhA9uCL(/QFwAZ+,:C1U{qugAB;t-B-Хۇf FME̜gK-gAMG2_,^-B7szMEp-U,DzHt@BP1n!zO)-Kj&ʫ%;2=[ozG +8EK:t,cF P @ϭB5KL/._ θbi`KSy-{=eq;/,.(Ɔ)M7X#Ӈ̅=O:Rnm.39c2e^l;)`86L\n}ps-n"35ٯ C~-RR๸z^g"*Cid7E'yzDzh&$Džc_(Ub?'339cOa7QIi1o?h- $7}Mb.BE=7j}uH6ߍLͲa5!7UPH*Z(*X_tַe;GGWYRvfB+pX"I|swB(w{c 8k<ͮIQVRiEgbDJ-ފj^\ ;&@'+*f~4wn8qJmaSz?JBִ)1 $T7KӚa+,EZB#H\jI IWo##-C`s Mʏ1*B9>?OPZDHp/ͯ-"͉YPZ^CcBnYkN"n}6vY^o%.TA齄m%(85m^,D{)~3CA~<7#_bY;Ԁ W-D,{HL ;7+̑vyR)|͂N壍{ODŽƦklt7?% rWwbPwSԟdm=5\p2U[ bYɵK{ƛ:vc§yi sA9s3-)e1M`pĞӂ}YVlP,i&׫VWv*^cLlm_5 M(C(:xVڽ-%Ԍ,¼Dᴾg159gzΓ%)L-s^;)׬E ݒImm/TI?nIP fՂvO 1B<}ð,^8D6tPxru˾&ӗVvTha6􂽜ަ&B>l)T.6l KE81ۈ_jlU)=g~d]r-`"ҊXrH$4 )`4&d KIS8eg;|iҸ+A[9P!j>C'/5ִkdJX[LpjѢzs?=|. A?PT>$P9Ufc]f-W{6somMf=%%7$$@ D@BvͤІGuNۍ1>_$3%ֳ|Ġ ΏRXE>x#@i}P.+LUѢᖙƷpUwl=tV%ydr%sdx)'oMv(a;\_~j8k} F2#p߂ėIby?wȨ/[wv[e4[`PF$Gy436^+!# QCSI4(H 4Gi `A Ab5%xg'(`vkDgۜ;=1M봐>W>â K8άը@Dؘd*)rF5&?VRͯqez";!){c3%/f;+,*Esj7EwHON ➪"c+J ,0*5[ipwN!X)hG'NIIþ.FPh1HR_*@ThaLݾe%uݼcˁZ߂ -$><-쮒HO@Dz%[(֡r%BOkB2/ %&~ڶHDF5zcsͨ,2NPt*<״ʔdݮ"ai 7fUX4YV+hI2j*ԄM+"$3)Bl4C'Cv J.oe&nY c^u6Eyhǜ5BVc.dw#&E 56Mdb6Μ)kb;l=$|Uh)K<ĵPKx T+ِ#@T,)SCtLbƆ l*P@ {kakm'WB5gu< MI~5)!}%J@%`Ptĉ0-.o`sy',w5_!>;woPqefR)l>H_lnԬ5T5uK}쾞TZHAr[=3 klgX]B^+4w_2Y?@܍BCpX[NK BO՘ZbPk "oR{Z^ B'e6b+Q}KɇD`_oGEXR+Ns"Wx],q8$1S\fFu&a7Cw@;_V S9djX0`>.G5kbCdd&HE*gr;)ZWVԓ366˽<$Xy8’WZ+e9of3-{H4Rhu{!/isl*Hm2IDV@НT$=v[Io !pWČ|.MkK09 dZ-C.E@Y" &qG,?!2☊4^BxmS_h.==9=@X{%Y8,ZucU%_BB̔47Y3l=xqM$N%@i4żag6\Emo]d|$YfSc06It@4dgD0y/oR4r[##(g~ d7)/ NU`5,VdCMsF_4W %>*vVx{#ġOpAߍU.] i4̪ORȜY*gSA\2cыӶz )anG0g7#6gS0R{bt`M3; tFɘ|dGPzn$##o