From cb9b864464f2a8913ea525b99ad347ead0c607c6 Mon Sep 17 00:00:00 2001 From: Seamus Lee Date: Tue, 5 May 2020 16:58:07 +1000 Subject: [PATCH] [REF] Permit domain tokens being used within Thank You letters Re-arrange code as per Matt's comment --- CRM/Contribute/Form/Task/PDFLetter.php | 1 + CRM/Contribute/Form/Task/PDFLetterCommon.php | 4 +++- CRM/Core/SelectValues.php | 18 ++++++++++++++---- .../Form/Task/PDFLetterCommonTest.php | 3 ++- .../Form/Task/sample_documents/Template.docx | Bin 4154 -> 12406 bytes .../Form/Task/sample_documents/Template.odt | Bin 15210 -> 4984 bytes 6 files changed, 20 insertions(+), 6 deletions(-) diff --git a/CRM/Contribute/Form/Task/PDFLetter.php b/CRM/Contribute/Form/Task/PDFLetter.php index fe602c7fd5..b569566c60 100644 --- a/CRM/Contribute/Form/Task/PDFLetter.php +++ b/CRM/Contribute/Form/Task/PDFLetter.php @@ -155,6 +155,7 @@ class CRM_Contribute_Form_Task_PDFLetter extends CRM_Contribute_Form_Task { public function listTokens() { $tokens = CRM_Core_SelectValues::contactTokens(); $tokens = array_merge(CRM_Core_SelectValues::contributionTokens(), $tokens); + $tokens = array_merge(CRM_Core_SelectValues::domainTokens(), $tokens); return $tokens; } diff --git a/CRM/Contribute/Form/Task/PDFLetterCommon.php b/CRM/Contribute/Form/Task/PDFLetterCommon.php index a75f2a9c7e..a201830384 100644 --- a/CRM/Contribute/Form/Task/PDFLetterCommon.php +++ b/CRM/Contribute/Form/Task/PDFLetterCommon.php @@ -220,7 +220,9 @@ class CRM_Contribute_Form_Task_PDFLetterCommon extends CRM_Contact_Form_Task_PDF */ private static function resolveTokens($html_message, $contact, $contribution, $messageToken, $grouped, $separator) { $categories = self::getTokenCategories(); - $tokenHtml = CRM_Utils_Token::replaceContactTokens($html_message, $contact, TRUE, $messageToken); + $domain = CRM_Core_BAO_Domain::getDomain(); + $tokenHtml = CRM_Utils_Token::replaceDomainTokens($html_message, $domain, TRUE, $messageToken); + $tokenHtml = CRM_Utils_Token::replaceContactTokens($tokenHtml, $contact, TRUE, $messageToken); if ($grouped) { $tokenHtml = CRM_Utils_Token::replaceMultipleContributionTokens($separator, $tokenHtml, $contribution, TRUE, $messageToken); } diff --git a/CRM/Core/SelectValues.php b/CRM/Core/SelectValues.php index 9ebe8db0ce..6b451af1eb 100644 --- a/CRM/Core/SelectValues.php +++ b/CRM/Core/SelectValues.php @@ -494,14 +494,24 @@ class CRM_Core_SelectValues { '{action.forward}' => ts('Forward this email (link)'), '{action.reply}' => ts('Reply to this email (link)'), '{action.subscribeUrl}' => ts('Subscribe via web page'), - '{domain.name}' => ts('Domain name'), - '{domain.address}' => ts('Domain (organization) address'), - '{domain.phone}' => ts('Domain (organization) phone'), - '{domain.email}' => ts('Domain (organization) email'), '{mailing.key}' => ts('Mailing key'), '{mailing.name}' => ts('Mailing name'), '{mailing.group}' => ts('Mailing group'), '{mailing.viewUrl}' => ts('Mailing permalink'), + ] + self::domainTokens(); + } + + /** + * Domain tokens + * + * @return array + */ + public static function domainTokens() { + return [ + '{domain.name}' => ts('Domain name'), + '{domain.address}' => ts('Domain (organization) address'), + '{domain.phone}' => ts('Domain (organization) phone'), + '{domain.email}' => ts('Domain (organization) email'), ]; } diff --git a/tests/phpunit/CRM/Contribute/Form/Task/PDFLetterCommonTest.php b/tests/phpunit/CRM/Contribute/Form/Task/PDFLetterCommonTest.php index 93efca9f66..5d606d0810 100644 --- a/tests/phpunit/CRM/Contribute/Form/Task/PDFLetterCommonTest.php +++ b/tests/phpunit/CRM/Contribute/Form/Task/PDFLetterCommonTest.php @@ -155,10 +155,11 @@ class CRM_Contribute_Form_Task_PDFLetterCommonTest extends CiviUnitTestCase { $html = CRM_Contribute_Form_Task_PDFLetterCommon::postProcess($form, $formValues); $expectedValues = [ - 'Hello Anthony Collins', + 'Hello Anthony', '$ 100.00', $displayDate, 'Donation', + 'Domain Name - Default Domain Name', ]; foreach ($expectedValues as $val) { diff --git a/tests/phpunit/CRM/Contribute/Form/Task/sample_documents/Template.docx b/tests/phpunit/CRM/Contribute/Form/Task/sample_documents/Template.docx index f030b0e648a47e662aed217d3550bdfceb2ade32..821e478abd6dbac98d8a64dd68a8dc9970c20d57 100644 GIT binary patch literal 12406 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 JMfbDx{{T5FDrx`# literal 4154 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 diff --git a/tests/phpunit/CRM/Contribute/Form/Task/sample_documents/Template.odt b/tests/phpunit/CRM/Contribute/Form/Task/sample_documents/Template.odt index ffd70a76c7dba05b6ba53c67f002e5d7890dc05c..81db95437c69a61fde51002682dd45f4c920979f 100644 GIT binary patch literal 4984 zcmZ`-1yoeuw;md#MkytwL_ip%rD14f7(j)Qjsa<;QA$Qa8l*#78UX=m>4qUBoS_GB z=ng3#{$BWhzW+OSoptUxXMKCEd-lHj?C*nW;Njl@{AXhY7tqL;NhN*l$5fSpzp z=s@A$?$eA+m@D_SB2nk1}e6KE}>?&cd z^d>#On_nL`adMe6&rv@)uo9eOTj=OJR_tGgg?mfQu$9)LRnDT?4!!*wm!2-?TRiVv zovqKEErRwlzYaQ;rn9b6vkCiLB*@?FfJBkg2%2miU0$m2)eHybx&OyJ6KU^ z+pQM!W7N$Gksc;r#vmgP)r$|j;mFI>ksmDA{`&O`5AeS|IxH9j`hLA*i3(t!1@9o55qr|d9txd>ZE?j z6jE(uB4j$e*SB;oo7=HxSS7JISQIyfTvg-EgIeTJewv>*4xua44`5qX#~y{1Mq@A? z*?@c!*o<)@gsr987$j7GBYpZNwIx^EL@>3T{*Ac0`E$ns=16*eLxA(O+e? z{2HvCXRN}`O-sKO z%fscNgkg59Pp7h2lBO>1z$YJaPG`{wV+m=St21RM&R!)j7LNEZ%h&th_Xy5EhBauD zr$*+a!fcAn+4a}OC#VWJvQH+2^__ZA>;4mVTg}gQ36F*~sWCR9;B3thf*yfZiTp0O zwmJ0=AC|nc<|NR7&I2uZ=m(@Vqkeps^bT7wG_BTT7A-M2@&>mfU34pLS=qqX-2|*y zCq>JFZp%c4(#xvawsDIAmuaWP(e{AC%Vo)?`nPPqN?h6)t7(c zbH8ZIFJ++|9tX|>5QI}^5dI6N1ymLY6=A>ISC*pfnRdaazeb9)m<%9ZyZF9*(M?pb z#SPg9I5Cq@e?|`OjQcgl>`(?~pgGp;UHqdU&$+y5b<*{T9!-6AAuooulWmZtohio0 z>ie9LNHVhbzP7sUX?p8Gks?;`m73{#na`O9h-v!W%bkn+QD6%lRuZ^g6ZfDGV$XViW~Kk zWRRg-26W^F62gVzH)DiSnQM(3L}%AR-;VdE>ed{;@s&3#+q};yccR*Yy$w6}z5}hS z{3ue${00y|l%4opQ;F9TbGPraJ9UEN)G_R#+##ocr4M$>{Cy*m7j{^M7w5ZVXH$|o zzF&lNC@apRupKMW-2z)%-S8$nLJv7B%*1olC(nMXpOFbRl3S_eS=Rj#tMDi!((H2t z1A+d|>{b1+C(>3`S0Ve-cQe{Y?W7e;@4!-b<_r9vpIQN{msd=qy(ruQK$PG(82I z0`-zht{^3KBA5Q-NpH6i;h7_d82jy0m@Y=mBY(Lcz(Na7+V67g2ZaAnJ}

%MHobmlhal#`f61k zPjQ56pSy!*->0}foH6Q}KOLX4@&`6H)B8Y##(gB|WkvQDLO z`Q|yK;LJjj2HcM~%%9LjUGkf2VGH4-YYK;u7f+KPtV0)?sU$@E9BzK{RM;5$sYxt- zfh6|L^L{Zfe%|d1877+hJv6cH_}9No6YAOctmKN-uW*|(7AhpYndhW5>3m4{01+(D z#NdXcq+^f!M8XKHR({I6o->}#yPz+KxW{H)6C5C_P{M!vHIIOQU^nA-q+MgfN;1+( z*M;bW<-q&)5TZ|H4<+xjn5IK|Q)b&o(-W~md1g!@Ph@x3 zo1{|YDbM2CE3{V_4mXLYh35x%K&xVD-(~-8nP8T+K#@uW0FYd#(BHMCtDCny{GYO~ zR3Gg)Q%mbBEBDJRD=T{6a5G&3@%U^c2MgB0FIXdT=CBQ}xz3;~mFGv+Tbi*;gT0j~ zVR_uN^Y*ST-`u%hr{BJXtJsu|ZSfn-msSPYlNuEtR}5U8?rZpE@|99KaNExI8y!Dz zIL3tRTpbweCGafQep8z7om`oeo*Ls{D6cUXEw)NJ`Z#NAmM~kJ6YH@NR<>=)@VGX& z+pz*wG>3&4o#+w9Wsk;I9LMBm`>DITF8DtG#5Y=n5l@#~Nfv913^h(u+rf=?$ z8H`o~roq~|MY|juk4U3?LdSg!UbZKETuu03cVW5FH0GV1MnPBe2?;T< z5jrnc6AN+{fWuU(AO+(?Yl&;9(q~^ZDhNFeR5-Pqa7`ked$@BlBPBE zbZ9IbyeY$EB$UELeC(-_s66q!hEmtDnMdt&7tmO(a^8|ff$5X5trzEwl%%S{t&kI$ zM2ui6z=(im-{@E=J3SX9#axTP-9Gm=w4P9mW3l9oR4}SWPWE-DdE`tyTir0Kh1t{o zGMeF^)oocW^SzEV$nnK>__WNOxc0L;-fH`vD4q(qc zpmTId%=`HTr5u_&Pmi8GOC6ZY?qs$5(6;HuPbb~8l2Vp@-7e~qBKuC~cl-Hhrs-U} zV}BF)4wrUGvvzp&y0aVAj8XsBz%>@bV*|rOK)in{=?Oe5<^m1m*2aRAR)En1tX&q9 z!IsREcff;NI?r-Gh4k?)VCv9t!y_n@l<3D||wT@}rCX8;zx+^=Km9nV&e|`}KK;CTBxPQ$j`SaNTL` zvyB!TP}Bn5`1@1oSKnA?A59S38dxT0K2ggJ7HYom5KzwKk1<`LSH@FNbB?Dz#w(j5 z)}`rIIoZ1lPm=VF*;WOIV>7NiW`asLNEfQ(*?J~lYfCXkY@_3P$ERoSjG`d72l*H0 zD34q{2Wzy=KJ<--7NYK|-`;c%HxpsWXGb%A zyQ@FMORn;r_);DbwA?A+IU?a>rsRHMGtMNhbn5Pu=hb_1%L0HZJn0e&%oK4Iwk28d zDw0X@fQ5gdJKs=T%d|>=DI>h8Z90&(Jk_f`+?f4CqI%AY(rBKx{Kq>%F8YTep|mNC zRPnpZ_~dl@fP9{Ot8!;{@yB&q=p~u-VY|K3*GVi9JX8yF?~v9~ESfWZf|t^(18D`G zG#LoWVWJz}mBwW)KPF(YAq{V*injN4Ml}+Ls~fz-!)R2Bt4)ACjq&6!jlH))TpviI`L!3zngQ;}exXFIl~YkDxVzKQ-T0|_0wK(2@H1Wm>W<3M)~zRLi%oyDWA#uQFhC7F~$l@n-HkW#v@GIIhZd{_rsKhg5MoUt0>`nE8@kL zIm_{jNZ*9_SJdZ!WME_E6xp<*{LD=Zn*vBMpAYo6~*Lh-{>m=Uj{g(1lSCatlNMYL=7?&uQ~ zQ&=phqck#GS@te7A>|==J1D5l*ZuSJ`MIyTA!=-l>XLxst7cp9bskys02)|FzNKsK%fqJP=!O6LK>i<7CI1Vn~KezSu0^t8DLBCi3wExzHpc=nX|G(t(2cdcW`mX}e z-^jnEg+EA^Yx@0fg@(UP{LRS!nBcwU=+{ElKm7b})ZcvX4+`&^1^x^B`y2RomGcLv dd|mYXsd=Cp1lI!CHKDwIo?i@dN~VAPjNHQK4UAuw!>4tHFy^X z&Ilp(Ch<)!*wAMsFf#!vFqX)oI72K_$%PNDSAL{0kGUWe2MXo*s)yv6xoqPMLD;B|BMRhd_@ZE{nY8aJOm&F$fC zU50!Zz$43|lx>K$@F4afNrnqj&T?jF2ea{A&-Buehj|%3hvyKLg4{QX>MF`R)PC0r zCF;1MVS)C1%8<;WS~0&(d}4WP(iYdvWD=gJgHS!5*CvHk*Uqju9A@JLo*Yt|ZJ`Jh zo^uH>&H4t=N&zLR-?{$F#c@8!!NIvAOV50NTy-z9&``+ndfYGF`+@kJjicAYZddR4bGS*X!nup% zV;NdQ;u@ctR=t2PJ$EM5EsZ}cn&qSsbW7v5gyliO&?5Bu0#fk9eW{H7gw^&V~c%lHpfS{Gf$Yy#09T`H$Y`^%A&H^5r%MukIG$&+ks3o^g{J z7iKZFG_@R~Qt2)30pXsoFkcp;)X zL-+|u*?^uy`DFSSI#MAgl*>#vx9!OB~m#J$@3?O#`Tlich z=i>^GS6?|y8Re{OVH16OK<^wc8O`JISt-Eek11i2G*5W9L z{hg@&9M9$nZ`d9__S1pabnNtLjn<2^pA8V0;}kXxFH>GNh5o#DzRAB%Q_dR~%LAa)-x@fdiMzLxB zgz>>|U4Sx6y9TfJWv);$lzV2{SYM1ZK>&9TJop&j`;s!P#@gJG!WTzXP3=Z5m=x)Gnvv%BfpkuK$&~wV_^;9bY9oigl;?GGy(sPCu8x|fcA07 z8>4YlE$DEC+v*zysbw$K5yB;N3ExhaykVQ=qim8|l4L21!r~-O>8U@u{dXEQa5dgA zpOw9a=l#Wc&%@g88-Wc7JJrXxmfg{Hr`BXPra~H7$&beh;O9i9gcvm<1h(9uW}inw zelS-e4r;!pj;XSXlV_o9d(OsHms6Y7<)&m_XV>au1i_k4kan-lY?kWzJbFI*TFt2G z^W?lN@Sxm7&b;POcY^vO-QkCduTXgC`c1=ztHfE$XSVo)nFszB_@?y%buH4GbmrU> z5;e(#?i6zpH5;*F#d_7KTAfjlqI070&sAxey7`*?N9!LBpN`Loo5*ePjXw5kiAJM4 z+0(!q@xp3IQ30X0(qHyYl~9|g0tpDQE44PvP{kG5bnSFnJxy8kljl4bu`jLFvZN{{ z&a(t?)#>$>?%SiixSfP)Fhhs)IxA9VH^r{giln}*^_35|dhIBw*I2vS5bt2lR;Lj7 zC>Zo@-zUxIUQ@{P1cZnKEAsXW3Y46}i7g|H*<{%uHUlH{?D8<}N6HC#fEC|cug3RT z`th4?PjF&QlguoNCq#M`NClm7~ijuX0X9!IvG4=58h-`;Eh7B&%S zwq@m+x0z?mi&svYZ#KkFTbvHxRr0iTernF4jFI|5vI3}7C^<|Az3MW@+-+@2Q|Nh; zxACB!NR};W(%WGmrFvSD&J{4(Oi4cPzFz6;JufJ$=Owtv!Y5pC)(cbaF!R3{KKyWG z2!y;o^*Ima-Urw-8!|3QGqeF7H}Tb~{lo~ErQtphVl=;#i@2Y!xT%5Ut< z#l-5IkUJ(eSq@8l*DL#mVSA(4B*R68tc$UA z6+N0eS_)fp^}TDF6Y3WDO4{LQhaGr~r?xB@b*OfF$i=3#s9Ksaf+019SC*EpoNi%L z*MJ;{@i7D#hbbxBt~Mr=W$!oU1c3V^%@c7rh>8x4(3*7WxLI1ddaaYJPxQXUD2UNy z>ItVdTZekzX!I!?nhooVX{n0#fU1g?c{9beVm?+uy_He+6YCaRlQfgljWUyH5u>Q> zQ#|6qFF)#E@5mAiNzVBaHdRE$;)$w)P3OzoUaE>vb>;a;`a?8nu(@QTit?1u9QW>! zMHMw>ctB=Yz}`p#Uh2Vu2jgMtemqF>*2^H6FIl(8KFuHc5kc|j@mc$7*+E$vf#cU} zw=d87izMw5_&}!7)(cr{D~RwF)$En6KI5XSWVfv3=qxl*QFV#qRlio`#v-r7#Z_jg z(r%F4?FKS`ECXlahEhRJmLIiNdxrvUf|^b zt#W|`Ik6fWf&_#r>dFxnYqCIrd+*1j-^4roP*Yy8TFAbMWy9`Z6k&maNLt=k(jwol zNu%g;DjTaHUrvtS5B7ZA)M0@?}7*``UQ}92n`7Y*Mh0wXF_RKl*sm z`02KH?CT9taA|kT8>J>sDvW3Ese!e+YkV_biHIIq6ofg756&dOASJ1IoI#r6BEdjonDjxz z(FPV+KVQ{i?LDtYCm*~RcPqzQ@(4v zud#eFpTlzM%%@M)?!z5T=hD$ow_5@c;$fpsT_jzqx80Y&RD5TDZ1a9N(SK_4@pv4_ z&6E4Sq*pGjA#E;_A4xVPm0ieM%zVuGaOcmK0#@4XW4JGbpan>K0$LGxKN@RwQUzUN(R`LLU6*~wh|?VF4fG&2OWsH?{-iK5r7yo zG9H!;3hor}MJhd+=ar*jFF*3>j>g-KqB}MK?M&HH@q}(oPUIG%XxiKlTXvRgmgz=m zOLGIA8CFx3`u0Beeu&j-P{QJS2%9KLZE_$>z&nU+fb`|Pd}(T)tc}(*<*>WaB1c9G z;VRlxgKD}P)?pj4e>$U3Z%WO~%WKqG=#KQ^ZZzLmm|r9o^>|u0D!b|kV1XheK<%?zdm-BnTYesVEz0@+w*51MWp7;ZxCs@NrcZuS7XVgi|M1+PerVvQ@uV?5mKM ziBNgU++)#K+{I8QSy!lxa`~>4wTCAkK3nVrVtUup)78(HzsSv5c{?(J!V)8dP<*v< zyabCb9pUdGmWD{t8{2ea1>YUml{tJJ?^(Eh`v5I;{q||{+qcIwVnLg0=8WiQp0d(r4MH8Bo91#nxGLRvYE zZ{vnQv&xAFS@uffF(~-PbNn%XjI=TK#z~b1-6Vf;(~L`Ap>~JqeYAw@AzI_k^@EOG z^$bL0D_CSnoEIVR{`jL$x2qp_V9;i?L$(&}$0-XAgAt0#5ihi3am?h&~a~xT2j+g+s9&m^jG!~gLJ8QL}bBneJFKpk;VKznU=5v^j9m?cS z>iI~lVNc)@O<*OIqB&M|34xVbYi zqGEA#BP5y^TL~>}0V~^jc0r?LM-oeen4>g*WfkC{`*>y4sxk#{WaeH}$O*3ZK|h*U zkik?!I%(nQn5v$lN3s?{GSp2|oN(DD=N`(y{-FI53QHNTD_|p{6 z;0|tP1x;*!){SJ5*7IoRii2CB=MOZL98BEeaK(TU}#D+iwY)8H5)aH zM}~Cr-F7d_pWYM=B+J5(25ufwF4!&v>PwUFPOv0%P@y%xY z@aeOk@!(i#bytPZ!tL<*+9G$3Y?9poFawdHU7B+8N-XKe$E{Md`-dsCOKgE2iZ~e8 zy<^_ib>JP0X*+dU8O+0m0Rp8oA1P&LIaPG#-I9{9NNwdbh_DwbF4+9aiVhqaT~6o4 zYt-h56kvj0rh$H#c+O`_xX`DUK}T;0^OZ#;DQ-`_u8?-6p+QO^QBwSO=SbM%M|0!G zZz#GPY_bc9nxwjoTF8TlKSb;n#VgS!d!8Y&7Wvr_WQtI~cGYGadHeMg4HT$Usp7%M zIm{`ObbL1z1b4tv;-F62b_(JshT{xqE1OR?jylS^vBcR}_K+ zbBFmYLI3r}CEBa91HWfz`t)`9HR2H;myBdB?-q}@(q5y@-NWs5OC(nd^+a!>{qU0% zB-x;ty}E%Ti}Xd=>&@z`IBQg#)LZsFPM?S8*2?n+-0Ewk=e6q5T%jQ(?+ddmiY&?l z11r)d*6b=o5aU63V;5!|tR@rt*@AjHsKxzcVj4SP+vo22wV_#UQW^To)Z=+4BccW+&Qv97g_i>IzhZ)r_L-`<`X1=a#```Qg!R1L_yWq4V(*Ex~a z(J?M;XP--cdmY+s)k1-6>{{72>uHA-uWI9A389DvLC;SeMVUaWmh9JGHmw@OKYnNw zuKm&csS8!BS_!FZw0vpr&X=(~elz*=^+0hZ6}edzaEgovS}Xq#x9PZN{_cm#t|0&N9JTsM+vl6JihGydGlgt5O*QXmVI`gOyqZ<0Gy|k20j>;4sdvgJq2WK=k3aa)bzZ6@WEMsC0{8_Oq^; zPHU8A6Tr*aWY#WSAU4&25~bq|Jon`(pZ_q8r^=pVUcgHxft=FW!UDQ>R6$%RX6r~S z0k!2k*yms%AEe>Ke2|jXD%Q{i(VtjE9d0(c5A0X+GjmPI+!8Z2q^mcsIPI$UR?PEb zNcHTjAn@w_MB?q!eg)PY*zU}C*@O0ssi!u!no$24Vnb}7?M$MKe zT*Mqn*B;`3yz-44^(J=za&F;Z>CGO8_qa0)64ughaP>ZznBRvpfA&M=I)|JF5&7*J zKed1p0+s3`TKYgArK7Dx--=vU_PD&b_&4&xH zBCns}uj`eu#On8*+Sh*unzaD7`hGkO!&UDC)Jw#tYwnY9&od>_ude|~C%%=P2k?i8 zr6YPSPN%1v)YWdj!22en_3EVBUT5dmqt{mS8-IiV*&jm6ld}{(feawt`rEJNoCEXM zp0*sd#w@YnJ>q^+H%Hqv_g8@%7f<6~U((y|X9{QAyf-J|22gGufIRPW zT{(bHbBc~`LQuQ=AsB=4UGlKJ&;9mZr=#ZPcE_9!lm{*)2#BzV>heB#WL(Z06@7{$ z0wz8@4OM_$T%RY*>+pNApS`>fbi%Jm%hZxj{%ng3H zKVTwz6&SNzd3r@^KT3!9I?%7gM^hX)xt$q*(J7=E9M~yU`OUHWY2irgx%}mzZ6&$& z$M-Lxp>Q#zUYn7vszbEprI#WNC(K?G$Gup-h>2=wX7|1wf>SZFH`j~O-T~QWk9oWh zv%xMD$AM=GRzKu|m5#BbEtPDIRx34VgGIvLKDz@M=Jj@=@MDi~4HcMJ#zFxE1V^@M z(L~u_{cCyNA%7JicTS=Z943jQW@G*A-9tigB*u#kGhfUK%zGo=)Tmtyk19rlc7!jX z8JdeQ*CxTfy~@>GK0HAY#i7kg(j-RmAU##>sM);X;s~1 z#%~lb;;kRaj3+I!pSpNU+zfC>;f4BTU?v~5fHyhge{nL;%9zPSG zV3MM8B4t7bU;ZPh3JneYuMF+4J--?J&xVbmo4pf|&e+h{!qnKrz=U$m*uVgK&BVaq zjnO+W1!*Yg)h*shl%Gfb+Wwgf?&n@(dpqE-RIaP7&9Ua9-6s2cuTypC18dXys%mT8 zN=#8dQ8-e8%0uwuSV8GHS$|^Hm%FX?9<>(Y=|J~l+=}ATGp&1S>mv|-^1U{@fjT#; z#ddK?Wt56K?{4dWwPbdx@JuKQ6=1D98Rdop7E>y|i$kwetyHzXyPM|({+-{PL}^!H zcYJ)tyZBtDJPq8~Px;edacz9jFRtZ{b-!t-4pp4VAt>!xsBZ&Kbdd+|lcsXuNSm#@ zKHt{Yr`+4ye{^($%fT?e$sy$bJod!1bZRAt)>_Bv%%ECGlLRr|Vx1si?tmc16r1%36!P+g+IRrVJH=xKmm;ukOr=cndp#w5%J0wz_(% zjc>_E4)ePJH=`R49x^$)QPU7~3ye8Q%h$K`4GQc`4X^F~%TguwaH?aM$7Q()K>Dg9 zQnaQ0p0S59*YTLO>H75*(l(v7r-x;EKD{M6qX#3urO~S!#f8vvs--l zf{l*F^HcoH?>}sIWJu&56)9gc-lJJ-=0u8ffYl|WS_`5?q;L!H@|)OT0=~nEa7ulO zTaOz!x8)r?1}N}bw~4PuCel|DQ`O*v9luj~-}uS&+%yITl3xD()S*08_FD$Iq)Nccc#`@0Y!je{b^?gn>w6!Uu zNyl_D0OQaGg8F?!!YbBYfrW7&q5}{rRYRmG5oyupu>*P_P4x)qSf6xIRMiEwjsPAQ z@vfPTdIfrL@5(SQdT{SYaPMDWNyGFQOjdC@&%~UcQjct0$oUp-=dz^?7&!**An>l8 zMy!2F^()x5se4QATNKXvi_x2JtjQVO!_2VWk<3gv;t&Fyy~C% zdSyD4w3njT^+#=Lg05m{lCy4!Wj|p}jEEj;#5Bu~!EyUs4ve&Y4m|~JZ(t}9eJ2T( zAS_eI9}Sl%w&f?>53N#OE5~}++RG{})m3CZ_U7AzFJp8CjyFuK)rm#I_n7N5*L}er zWxo+zgc%Yam)elH(3!?Hrz4cy z+3!NEcdcva${njdFRDS)iFQCv;t5`;fv{#tGPwr(Db#tpw-8{@@DBD747H^SF!pzA9AX zdaE*;v9o{HCbjAFFVXz&e(CW92?myc^Y29SmjFAO0)dux=8nHqvqekWae?c-H-8&( zmxoke0J}^~#E0BmGT%27L;EQenAv_M*AjrwK0a#9Ih>!ht;XC2etgqCJ*i*S`!U=r zN-U=*U>R{yr{v+H#`y-@=!dDNwi`~ZJiiLx%CnPSEDTa6vSA__(Qx5A<2__Ap>pZv zKKoTQW-{D9)>(vplraQUcE-02-lgX^`+>>{`kK)6=JoM~OqSVNX`{QRJD8^m-O~%# z*G|*Ry8JjIa>NIdS721W) z>DyqE_XI7O6C~}+bzsh_tDhpFzPxqiS$>|cMLIpK1xy4fry>y%hY4B_n83RWcVQ`l z#l~}IGgIbglcd1z;t()?A>KzNzgpRlM@;|$usguBY|W3~C3*xY3Dey=x=}3Lso0{` zkJM@KF%S+29i^q~PSXz#(n-Y^hlUnQaC9jlCVRRBgQO?7&B5y zwHL?ez4#`ENlcM1JL^c;6Jg{x6(X>!N_k7fp zTm@dehxC7!RhI=v#^=@BU4Ntm^bpl(BFxzM?!!6EU=o5&J>sLJ{wQLYH;fUv7+Ahn z+L#|DAjK;88gWPXPLHB3U`qy#peP!3)tre{lOq(}3=q2?nfoI;dU|UZHh_za(nEru z!bc+b{TX_1z&pI6b>*1kZ3bQ7=RjoK+X6o?1L~a#zbE;AtgLmV$#C|L=^z-n0ETsb z)QnNI>as?4o0EdAy8+NvV)7hzw$MXjwCX@CNOg;#J z-R_AVYkN2&Paq0;t*ZR3(A*uN{;4mZ zno&3-eX@W7y-R*aBANzWAP}fBPvow4RbUmGdr0J&F-I-;;ox%2WFR!q!&5|9q3(ii z!hO>RD6d6*lTi{%i=z;y5RwaZo~EIsL3!y!l$~b)$b%u&<(_0lHtW2mYW3s*vud{i zf7?S@{B3WTxsJh0pT+jh#Ikg9bV-IVaVXJ33vk^nvNhqbQw+;%Nt92PAy&aS8j@R> zu2Xl0^|`wf4j~=iswdP~1$6nP4}H>bK#1AcpG5nNw%a}96NSg;OM9@C>Z@q*Nz`Zv zFg8VjOTj(17mRV5wtE;KgCly9NS?x)Pa!b&%FEHZWnQEcP0a!k2e^ho15vvd zUYZ?JZUdY9RJCrD%+?N)7S)({p!C@*6X}eb@xEG0pT1-dv7`ak8b-;vnHQ5+)rmlk zN0;Cv*g=MT_oPa5Y+Wh%^N&!-mg&K^nK{_I=7$rpkh-16uRHhnDaIf5;&oa|<-R>v9HQVuqD^tbgD@uK zm)@8HGYdxD*kq)UPlDC(2ibTMMXY&WL&i?ZCAFPKBNEiLz*$&j-1esQ^WCL#$lS1CClAdUk=RG{1@p2>z|XRK*L`lAv{*vK9vzI;Px54Zx{o9XS@TP*mPVqN9{mmz;3G&zXxHikKOR$ z)EY$0q6zHhTy444SwxGRtvg?7U>E8~5fOyup)WKNnjyRMdO9I&H@?nQC@=p47(zSN zrY~IuNb{&uBY;X#uC$Cq!x%MU5^!y()bPJq!>mlY;;_=piuKi_=#(5Y`gbux3gc1g zc2SNxax~Bk?DaUc*pY`Q_Tlo$F*3puf3Gs`d_`cZdX$hVv>gi`&CLHq36IL*Qw}V} zw&v4ruVezkd?kBnTI*6@qdPoB#PhY{U1kzfl`*uUZy;COKhR8Ndu4jV2&3>G>b$Eu z>iPN#&?l$4ar{|1f0|H^PDWua5J|qpB9RdDEYGxq(mB&Lpp){FWGnj)%ant6jTLFa zUNI({QShx!B`1n`XQTRh^@`J{_2Tqi)`wcwHWvPwv9_A^JSqDrfgN+SaD{!cnriX9I0AmA1MYg zrK$IkFbx~_p`DCR`beQFsMmsU1Jj>nr}=-~Vj;^S@X|M6V4)EI?iT<0v#KM|&BpX! zasOCrFk+D%ZTXf4{;lrBg>{dyG0!}@E-U32DWQOL+)yCO+n6fe`v<*NQmF)U|2%rw zY)weUQLpnQC^9P$KM0PU6XgRHgUh%lS15UojH}e3C#Ki)1)O^bU+dG=P<0r&NyC}6NM2cW(2rLR<~u9-MjeIal{dvl-+%h-52+@YYfPcvL~ zrV3xTnecQTI%uJ=J->253xfk;nuSm8o)&w6L&{arP}D;)6`QW@ILl9Inms~3fAXp( z6%gHfIc$cCTLZ&kxmBdaND@!ZWGKQNd+x~<*J%sczEwbzPkuB zcZFimGv+}pMwzN?Pd#K_nP9o_PHEz2KJTM3|E3d6%IEA(WQh@UWEJ5=>{{DiAq~^8 zSA^J;5@=fBg7!cz&c@>)VP#Jg!7bxhYW!N9wg|(E#2^QrIkp_Mlw{}DU^Twz@Wqdp znU3QueHd;OQB*uxg9F#hFIBVeLs!`^-a1o2!Ovaa#-00O3ZLK-sm#0|kc0^n!W>X9 zlo&@YERZr#z^}~6Givwn49BXsi}WTmm15RmxfNKWYl;H+7DLDqGaPznO9{M%6r0IecK@0vYMc- z2R~q>wYLT{ltY{V3y@D}iN&e!G6xOcXfr0Aj{s?>eZZZ@lh=}>Bl@Z{uIiLju#gIs zmv7kE6`0|?QZA)0OPM>ClIsla=e_JKQ*T2Ef(O)YImEwUTNc_ zoQ;HAzKJ58oSniGZGsMv@O?Xk4o#$7DwWdKAq(LiJ{m2E>Q9oF)bu$`dp1K3fz36cfykLC~SBZ+$D>1B+|#JqWQKLLcN zA^Y9HIy^o^;he4-D7%rXho49AAP@$9m@xhqVt*vj8;fA_&DiGsx<2+q3U{_!OGA%i z=v8oC`*0Fy^d#h98(4?Kha{XMTnpvxe?X6Rp$`xxZ65iCJ#1}gXF`tfdFjxir(vQk zNQudXyACr~e8_6eX$PYv3!akkBXefNb67#SO%3mBcZStHQz!xFe1 zQMeGvxN`gD>~u!u->$8@EA8n7G{X4&l=|E;8hkG znB)Xv22!e9V!SAKz3ZXAT$d)_BL|^DhJFiNIB2F7heFd}XUDO(Q`C09 zG@=dTq}Bj166T@e4fF!pN#Yinp{X=dsOqz9Oo4aW}K z`7yrtKjjH99hnngc>5MWInZF0-p&@N@s{Bt8D*t4B34Z?r|2MkYO_p?Wi_HE<=7Cf zFSM$lLxt6tifll_qIRE#tBJlLcadvhu8xK<8UNhMFE^dK(Z!CMQ$Hbq?jyX-Xmu8) zYw{(Jd^2&!G{+|i_@0^wXc&TUAl8i^t%MCSr7MB^W+$TW_tU;zY-9 z)id70{lwVaX|nr#l_bs}mH9;epo!b-=FR8P`~>3 ze~&V=u{Q*o{?@aIE9&g(C%rq|$?;1UtCBU3nH>I{={HWI&GVES?AyC)xsxnTrnDBCH`0}QXqc@%T(m(ibNWRoM>_LwPH8gje04ertl`LR z@zuZ^M>HXL;tC=?tk6ph_6?1XmK`Er9GJWO1hwNCI~{AS7%!<-y@UjmEr z=ke@)aTa$t1aor1jmOs40t;j!&TqG0!VgCaRs)c}cbFldh`A^FF`x!}C{`+A3qt5>M z!T25bA4>cCckRF7`Lpi+Gt)02`Q76Gj_D6N{LehUH1&5I{u`d(b@_kG0>S$C{`n7` z{@=22{te6Ty8Rz4zYTz2J@`$0e<}CxX8$)V|Dfal`v;)sZ%F^B;{V*mUpoG~z5ET& qe^d28_w0n