summaryrefslogtreecommitdiffstats
path: root/Source/cmExportInstallFileGenerator.h
blob: 8c8fb4445ca1f34d4688751bda09a5eb9013455c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*============================================================================
  CMake - Cross Platform Makefile Generator
  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium

  Distributed under the OSI-approved BSD License (the "License");
  see accompanying file Copyright.txt for details.

  This software is distributed WITHOUT ANY WARRANTY; without even the
  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  See the License for more information.
============================================================================*/
#ifndef cmExportInstallFileGenerator_h
#define cmExportInstallFileGenerator_h

#include "cmExportFileGenerator.h"

class cmInstallExportGenerator;
class cmInstallFilesGenerator;
class cmInstallTargetGenerator;
class cmTargetExport;

/** \class cmExportInstallFileGenerator
 * \brief Generate a file exporting targets from an install tree.
 *
 * cmExportInstallFileGenerator generates files exporting targets from
 * install an installation tree.  The files are placed in a temporary
 * location for installation by cmInstallExportGenerator.  One main
 * file is generated that creates the imported targets and loads
 * per-configuration files.  Target locations and settings for each
 * configuration are written to these per-configuration files.  After
 * installation the main file loads the configurations that have been
 * installed.
 *
 * This is used to implement the INSTALL(EXPORT) command.
 */
class cmExportInstallFileGenerator: public cmExportFileGenerator
{
public:
  /** Construct with the export installer that will install the
      files.  */
  cmExportInstallFileGenerator(cmInstallExportGenerator* iegen);

  /** Set the name of the export associated with the files.  This is
      the name given to the install(EXPORT) command mode.  */
  void SetName(const char* name) { this->Name = name; }

  /** Set the set of targets to be exported.  These are the targets
      associated with the export name.  */
  void SetExportSet(std::vector<cmTargetExport*> const* eSet)
    { this->ExportSet = eSet; }

  /** Get the per-config file generated for each configuraiton.  This
      maps from the configuration name to the file temporary location
      for installation.  */
  std::map<cmStdString, cmStdString> const& GetConfigImportFiles()
    { return this->ConfigImportFiles; }

  /** Compute the globbing expression used to load per-config import
      files from the main file.  */
  std::string GetConfigImportFileGlob();
protected:

  // Implement virtual methods from the superclass.
  virtual bool GenerateMainFile(std::ostream& os);
  virtual void GenerateImportTargetsConfig(std::ostream& os,
                                           const char* config,
                                           std::string const& suffix);
  virtual void ComplainAboutMissingTarget(cmTarget* depender,
                                          cmTarget* dependee);

  /** Generate a per-configuration file for the targets.  */
  bool GenerateImportFileConfig(const char* config);

  /** Fill in properties indicating installed file locations.  */
  void SetImportLocationProperty(const char* config,
                                 std::string const& suffix,
                                 cmInstallTargetGenerator* itgen,
                                 ImportPropertyMap& properties);

  void ComplainAboutImportPrefix(cmInstallTargetGenerator* itgen);

  cmInstallExportGenerator* InstallExportGenerator;
  std::string Name;
  std::vector<cmTargetExport*> const* ExportSet;

  std::string ImportPrefix;

  // The import file generated for each configuration.
  std::map<cmStdString, cmStdString> ConfigImportFiles;
};

/*
  cmTargetExport is used in cmGlobalGenerator to collect the install
  generators for targets associated with an export.
*/
class cmTargetExport
{
public:
  cmTargetExport(cmTarget* tgt,
                 cmInstallTargetGenerator* archive,
                 cmInstallTargetGenerator* runtime,
                 cmInstallTargetGenerator* library,
                 cmInstallTargetGenerator* framework,
                 cmInstallTargetGenerator* bundle,
                 cmInstallFilesGenerator* headers
                ) : Target(tgt), ArchiveGenerator(archive),
                    RuntimeGenerator(runtime), LibraryGenerator(library),
                    FrameworkGenerator(framework), BundleGenerator(bundle),
                    HeaderGenerator(headers) {}

  cmTarget* Target;
  cmInstallTargetGenerator* ArchiveGenerator;
  cmInstallTargetGenerator* RuntimeGenerator;
  cmInstallTargetGenerator* LibraryGenerator;
  cmInstallTargetGenerator* FrameworkGenerator;
  cmInstallTargetGenerator* BundleGenerator;
  cmInstallFilesGenerator* HeaderGenerator;
private:
  cmTargetExport();
};

#endif
Yg )ED6FYOt*9 _o8_CKZғKҹqw#o䍺1t㓽X_ʭ_[\ TY>z[s2δIv]qy ٧Uf?{mw"uݝ_V;ڠ?ij{qOA/aó@AOlUV|\P3`}3O҆5%C%z#k@["!q!fr`te$|CŻtza^Hl{bb_רQtClj05} b Bk]13.+1R;zVwi6 o|W"h>QW#r XEGFL gg\kU('(]fmohm͟I)T+T-ܻ- c[;7\fd4Nq)0b+`$%~aI=m_xŧ J:@-. zbHů{@hĐ &j|7O IIon L ΢q3NSԓ#.#E^r,k PӉ0E0-oZfkc "1 %ƴ0YI򾬖l!C&4 G@鲚ߡxiͷV}L*VhWXzij^ 5)aUaSTv:[?p"3\3\ly 1!s5Y`W%6 `;V>-39v.*92eF2&sF.*mIڇ M`ƓMNץ-88twsl4H=hK|CZs~}oU5^13!pɎe;*r`/_eӻbNрc5.ٷ[DžK<gӓ8x']<_01+9"Y|߾ܛ^[r`<] # S`RTF19PⰝSYxeG/9㜜9 =dHuGPW#:~_pa' |iK#3 z,/㹬a,QHXH? nV`8CMېǫ^Hpoppۙ kSn93=S#;p?޷P_PZ&]HItC;~}nttXɤӏl{5֍- X݉o?42LcgݿVPI!o߹dQ-Nz3eQuGh mu?fl2"n;D`g2_C}tYʏ&׷阞gV.?EO 6' nmpBۮ^=t>?PG +&@:tX(,.vއu:r+W :_Q3]Gr]' Ww[kcN>hD^qF F-vRH(/,rj#goc>" Č^Λ': .+3>h5zmLBq2` \ U/ӎo,ъHDDІ0~P,VNV-FD,_uVg_n'|ˑh٤?ZZ4B{fxPa].)xf'oi8ϖUrB6LP|mȅ+KD <Ǚ0 59{R=Uɺ-2"+9ҒVIVXn?eˎ!˺܍fҙل8;۝΍tJܚ Sζϱ+ΙҐW>~^Nd?C4'iB)q A`ک7l?A48 }.{7pB`,Zf:8Oփi5@.X\D:0mL#Hy H"NW_J8&R0{<|XԠqB G`. Q{Iq~̄ERCbi:9Ԏ͛w]xP!z: {-XP6~1O"۳+sAƥM0ZYv]]r"APFxa5&0p_ďۈ Z[SVdsWmy9 '{m̖K@U|n݆;0>\@,ڱ&hM/7N'oΝaQb6N>ۧio~\>} G fPOf?#LUFax F|]44~6>s6`ol l t{9x=H Qݦ֟QaGfp݂iČr,b}\^Btd!5s|m]`R%`35b6]X_ahBa@݃>p/&u;# %bBOqZ~`)"~re3?dS~eѪH*&Ervu vY}wVUsM{;6.0}w阛 ,2>(xi~rkW"eQKc"P "vs,llD_hn1@JrwTlnɶ::8t [Ɓӕ]khg A"hhCе)V?W[sz;,͟tSR"qNUanx&6+PO;$k9` K_Un/2-xf8A;[Uz 660jx 64Nc&dQx4~kt m91}IF mLe [C=F,cvDPON(cN9;y2qpolc+54釼AL4׏w'_Ocn`yj{ 1^ Gt G^Q"1v#y>x" D7B3 i2)LbrvYc&"B B(*WG@ Ej%lN>ط $uߑ:Yq^,xO!G YH4Z!?0|,2x8%'6'OEO!}'q-RC֖U;HQc(UY1s< 5\79|ף_> B/Gz ݔ#u3;cAD ip_.ՠ<=\Fg7uAMa0:u`GaXdjLwdBFB→[ qQ"Ҍl/gwuzagfȉt<Ÿ?rTzQ@{r_l֮7^pY"(:CY.:׏5r?s Ov4A*h \'KR=_G=ay@q;}{6p-L=! zC=̂gr4%$4<^܄ '>Ɓj8D8!D{0q4@Mi% %;凸zt Eq]!g42g: 9vF|T}AD@)*yGE5C1 DD!X&e2n+s`!/0y[> c тwQxu~o/lC`b`=!TR 3]6Ah+K6{|#Lǫn1{#c=,n8jKQf?ᆇP` H >=H| OC P4(%âP(=CY LzCWB,9DJ^ƒ` ! 4 I Geg0P0L "En b/;>FHHM@ޙd<!¼)' k7S4Ǵ5W]=Gͧ "r 6_IS*j'?߳ 1fEjmX88e "1p& =7qnJiUm ו)L^,;|ul@8vнF9K]A^Mu{j!\؃QW@\ 0 ~SifxʩrrѲ?cCG'IK~nyS|?B?̟'w>LoО?FOw~o՟K֞՟ ͟O篓R_??3'}>ǹ'ϳߙ~5Z{ĞOןK_χ }~>o0 =[-@̊I$~XI5m|~?וQijF`h1Ӂ8@1P.(CұC3+`n 3; z@Û鉁ӗ?GjG}Ӳ7)?J@83\ .΂E "mC@N7Es~aJk( $F^LEwxo#+DEq\ +D?O1Ps r<:`=G|=p>֫G߂sbHq2j̴8^TgѲ$9=OkMw  0 =d?'dμC_hQ }l,X#SotEs#:G5*UMƸ ;icd>?,C $^VyHVk:Fi&b+ Fu :b#FАdg#s:&xhZcHfMj]g/M/A|M;oJhVX-&6iQ78Pw=8G.u xHo ""$"ZDHfDDa9I}MR2%(&}P;$cJ@ -W-f>qsw<~(n|~Py20M~>65ע  JBLto;2O~6[cCWNueٚA_!/Qyq!{h~LW(wת^o=7/Su|>0o]T0s3GyO}?u.=8JҪPui_~mn?yw>X1?1at[n|lZuH X\\ݭqmV׈zOYF]E\"TB|!d7ďzJS jU}[>NBp?'1a C Nr!>Lϙ#ail 9©S˾ucܹ =@ @ F?= ,lq1ʕNq)fj}Ǔ?ʏ~2R_e M8ksr> /DmԞ~҉pM/ <=͈2ePPyO%"ou,6|} %I>Y؜?BȐ6f\@)oJk5H9"&@)+^JŅ lg%pN/PV 2$:RVL3x!@*;딹 v ED1>_}܄1jkYϣN5eFQk彳 "Rg. ) MG'scwC1c& 3C!'7?h>>۫TIIUZA+gu '#85ڪ.#\[ڂCsBa%3 Xe_sي$+k $M$hx lfܿ[ϦE 0Vfl K[z67 I&45hWV>Ao^"yvK$"Bh'<ٝNrf?͎q;Em3qt =dnMy>ѳgS"I!#$ٰi0rilH&ǝ|s|4a Pf>;4 p:&K D @J ""5/ՐFt <. AqwL1܄I 1  ˉv>༈mt͒l#b⹀1=p-˪&%8 $ J`Cog x @2$β^JS ]  g! EA(y '+Yfw3ARQD(8Y`3> m(ƳD|"%ҋ/d.4 FǏ<굝 zd@NsEF  32CAH'm@"\j24F1XB=ayx9(E8*$!_`{@䆆AEHhͮ>ܕ!A ɦyr@H>&@x&%oBw@}yKa0Nu.|&E@Bzq=AH"g}%t1#D, $Z},=d%„Б6-PaOѦ .sj1cPw$rk2w(8Q;faw$F1a8NDy53(;* $$-A/myqVƛG(|8fqV1I s dT:3sCbgC Ý 4DO 6K=PdTЃ"cc!JyOSAIT!!CDT; v#%BP{"0 0! "ǪiaD U!X<$DԁRQD5ƁCY  W7E$d]ΠMXk !o`5gfpWHB LSǴfJa`H}\рiܛ9ƨBD!S4sK> Q  &FGQ&Py "@e?Hi~(8p0| 烬 ^dB0Et=A 'x*:/!kF9ϽֈZsǃ㜝f˝e﹡T_SijIbR C3" ,jz"{!bJ*~7C# B$9Nmr}"@1IOvjrЛH?$ͻVDͨ\C[i$))Ϛx~Ng>ʳD 삱ŇwbYh&עO"$4k:>mHQ$(v4HFFN4kD8U|*IQ[ q5n7C>[Abg=yaA7@ Z ^0⊃ Nn=ע a45/]_gom/14l21ȋ gs&, F!e"B0c 0 J( i_L1>ًE2=) 93hOT,M8d"g Z4US8>gִ|8aϞv,DJE!)y2Znz5L-EӣG ł S fL@$d1XG:3=cN<=xEvi-fpRi`=j6H1sڵj9_ ߇T\G\$͓IҒC4"@|솺xh!ٽ9FH&ȁߟu Q) V]C>1+ !DĄ@U"DD$@r9Ŏ1.KPm{bIl:ܟ)ZY?A4Q 4ACDie#SXAblL,D3 8V  A۔Ԍ pp/Ѩ$2 wnown[̱;BB*膠&36s!Mg%=5O |p$9DUU&f8Ie>,q` XDDIgP\QMAl#eMiti)Ҋ3 fP)({+ ĄiE`Eh"3Fe6ǦD $>.Gt#X\"ٮlq $lƃDEri 0VCX2C iE((BHh5r+ bs0s{p!uzL1̸$4BeL𴴚E (ZM܇MYκCG&HDA*r`=Z;8@UMT"TtCA96q'c/f79ºH8SNǫi厉 D]C~P(X`D 2@,6&p1v@/ŇJivt6oIN0X 6͓sè[Hleв:r1E=@w AQq2d U$AZE AH3K#돌ѐh]:Z(`D)42h!jS7i2hZ'ern5PԠV3γU,900nاd@I C)pô I .^· cԄ䢊ef5=g(`3$GÜL-xh7ĦCMm,Vf0>{bA0fu= "@ۤ>*6X sB-hNnۯ*BV~4pV8!ƹ:) VNm'$&TE n#&)qPVRB fyn|82#G1Ęd)YWSb.3~?ym! BCChɘm:C1rpw_cRw8K Y+1&$GS2 qgj EQ"#}ʓjbޱfȑm[?  (u[I'^c 5 B{FC82LejMbhEIpqbUouNϦWh7wLɥ&d&FJ B;H1ePMHl),a5"XgJ PDHQ%v:8hi0;0XDMbN0mZr;sKO)CQ١Jd {ѣ8#nRb;=,, nL=%!ti'jNhf $$ n܄QWsa& )pO? O*c4|na  \9A:BtȮdD: ;k?!DD_w%R!Eu-s!m̧/Z?S[6ifXXSA5K<bZ!=ɠmaqe& dW,5;D2u=&(P1e8Xm-r9 )i* )^De泩^g tr;3 U Jpfzc]\ -F[hưSpAq&3GFs @K@J7ygV19CMZ7!H'X><ۂ JލE֊AH.4G7 %QO#q5@stL腵X7:_ǤoNB KYyMKFT?(QfzW alُB4턍]HFӜPRڂ<0>1[ݘ(!ɨb3bahLA sd6CY$!(B1xR?M0Pu@{!!9AlNd@" mN k76$AFH()&NdDG=@Z z:x(CW߷7~& /^S1xC ]zFK3YSQ k= BtS Oi D"^B.$_)B ++SiJHD364-EP#I!@sFSM<9)ih8KSX,J\5M2쫁0dA)Q1\X6!#R"vRjiSa0C3pCX3^.GWgs6vvdOtg_0IvÛA tΎbnj)R,RҰ 0j{-"s*)E)D!$cũ|ቕݥ($iT QeoE#0h@_3zB BJTTp.Fz*H>q6',-7PTY,DzJz54(zp0D@ D0Id2Ks5H~qCBUPACoC];$Grsbm>st{}T͎t8:I#G.i d;ALlYMp:|bPr01}k~ `LNHau, f/ x9b+Z,GwPq[A'|Q=4e8].hWF+{k:Bg|`GHh~k]?^H)"A.0$>p¼iP,# C1 hX l{QٴŲ+c*9Uтqh@L %u:4nЯ"yy0/=UZin"fȄB.WbU jgc9G ^԰, ۲m7ѓlu9pRuRrL+NABp"+U/$ID9M吳yޯ]~NN&t^lPOENyyQp1%(-u  r!J)""pZGvO+v213cb~@5%.=&n 믊ZH28ǡ zUCmkO Š*~( {> ܄ac PGeVB0Y[!QPTmiXfZllLDd"6&if%P"v rBH e@!aId%!JVD@ h[6bWk/o/ G͔3e-IHopt k4Ȩ=AD1̙bţ*(4@Ew8Cd 1bP;286 ME|GaŭI E]l ^O׺ێ;uh& dC`D܃ Lj"wQ .23kᮜ$30}ħeT2B-D4-xjw+XBaM s̥qڻ~pED0_H^BSRT VH XJАhN '={401X2B#[KIn$^S ҅ |"8D)@h 'Is`pLe=603~t:iw1F ' j _Kv{P4I_"HDž/ϰ/ 'F{C2˒qHDK~y罙X0ӫQz-6$f5YXJ "MMIƦf(#XS7$ W02u%MaebŦl|%uClԺ̚rj͕akFӀpcP==&PԌѡ=8t)BB"(P؀TJ 9D"4 PDB@D2 +Cd*)*DurQ!瘩0R AH4 kΞ6h -ikA-+B e_ pFfD<DHKč{zzz !#z'4FiJܜypqLDBdP%g65\#y挜 ceС_ iA7rvz(LE|f1'r$KWoQ"Pb5%fB?>st4"=bcW)LT@z 0 9}ayQ{ ky˾8!1( νmGB9@`0r*k3*PA DuXY X+:kaSBPvI"&!2}s9l=3SdB$4L~R˲R愃d;Q8@HJK`DDS\a~ nWgn(47~A2=1 Bkz$1L R2Zb*&d!dtOEWpu(qioT`e<gmWcE!s5EHLd6lMfK#D r;0HOX~6{XE^ iAsBeW*:H2( Eh0Ǭ7 `.!34xO v37<d xY4|]..Kw\#`xC~01Y D W傭PyOr 53DAÒvu+|0+J=E gJ3`k%, w2$*$ $)JET0DAH$ISDHQJ ALIHPT% ITPē0J %AI KH AHRR''ҞAUJ% rE=Hw G6aـ) q*MDMA.iSNl R{Li*A݉LMi$e m|@]DRpLYBT$6Op8C P1*CC}:H0W1E@9y'/$ 4+{&X,.<4^*DHYYyFLS@2 `<$!exGE(u hr))DdwC]'Adþq=a7RAe9].9+MX&T0\CW`sEӰڂm5w'Y5D<^# Wdi@Nfn9<(S8cgY%4ncc05bdb1EMzWGxT{ð*lQh[ aƖp;s:1=?hh M#a H#|NBuk*e-i<6+LԸ܇xE!o4wJxB-۩QzvCǴ9EnQT$ ‚`g-SkZvA@<e&Ji J33#dPl 5ܑܰBuPيϔ x=$D@HD@uS߈f)⏰p!rr ЏasN |$$:Y$faQ&t_@N.ƥ `[Q0tfMM/ȷ0 N-puj;hG":P-㞎!F1$QUMWNXNֈཛྷtC}`L|ؙP~,<)h, o4[^OKUt0p9{cy1҅x B,n-}:ʧ!jrB Qt#k/nUp}WKIzf`(PQWVb{aĀxxAsb~t!{6Qh{גkDPxiӿ25кh 6᥶&d\ rR%3b%pI4:>T?sl :/aD&L ;q%IFN-LZƧkzl629cڃܥ耔Uo{q.&aPیd/ %I,j"[05]3oD5PO!K\H54먂,G NE+=!˺:(1|/%s5i^f_!C<;#nEnb IK AI)30(peZ$rT*%(b"%@e,Oq>rI$@OoÕ0d˂rd(-J $kזAk3YW1``4Dmy13,`m!Æ"f=8D(uXu| &|~/H*t`G_r@9 ˞C=NRpB U?EEt#&rTnXKZbhϦ7o9GQ=aG`/^f; ip@B yЀXAhalihITyh )s>&(ADh's)9zH<6E6Y?vHE0!iK b bGFK~܌k~-E&Xtޭu6+G»v@f$1( 6m]ǝWm^~hNZdUR%׌H1U~WT 5jX4b(BMBP$hrϞqݲ4l.Fc423ټ Ko8HpPN%l̥H4CC#ѣwCֈERYbɄ St+#3cZq`2fĬ&-.&O>a8T&jDnX" Nؐr*1ѐ2&Xr61p \581ܲ g(#μ ,5H:(}uI:oHF\M:brD.dl!Nԑ&Yh3 2,pDd ;<Ġp 㐴@hNr  _GaDjRiLI,g [5XO k33LS Wf`x\GcAmMЗgx{77": `4r63 bf%p84v]N (6H(o 20)XP:$ҟ04JX6lbGfFA٬YbKP t4DƋb1`\ @`l5(k fH E ! )X#M@D3)2R)),9dW.3V0cC+@KMyѡ.1.j@ JWP`&Hycf`4&(` `QuM:v=΁VEt8YPX܂aCg=\Uaqx(f17s!Z#0C1u4,BPG 0QC0CwafHLNWVd/1k9r"Rp FYqT6S5߶l@# #a*+qC[((ỗ.W%!4tt@)L)(_n3Aͅ#`ڇ#zAuj?(Ht(n?.z3E{(:*CIZ@3a:+L!"1@A))wR\([ RySIB?:@H"OpVc(\ \} $hhf&(hb!.٥D-=@sN#bb.aJ"p{ "Y# |g@Kz0,A5k]b9*&=x56bU t$7OLE 7U)HӀ&N'i'uTJ kr!T(AJN^It  @ / ʢD4č)K0=#C $8CFQw/q ';<#@½}4[ё ExfTi)J;6Qkw50ĬLI$YvO`12<|P5UߣLbNQAXDS!>$sJpS0CQЃ$R06mKhŊ?QnU H fSAVA[ D1A EA>F&ΆShQ7^ߴ\I@$_t1~-I 'IWo_ XEwuQdXSl(2Yj=@ldkcB!:?H7rø6!4:12 GMcl Ȁ\̀?O=ϕAd1(R&'ս |?i E"*d$@ uk]buոH@tK׽&T4 `u=d;3[#u/GioU砷=9Hxz5A4&|:`ė<0cjF a1< gy5 Zdw+ܠ>xbA}OoV!vP2'+sji-|PhdGPzp`& "0#A!! ':6qXhw9JR8`Awa~uE *58/(3My櫮ΑSZ9KgjUdJP@ wqT'qM' {vBi|H!H]3b9C? H= M`^DrDめ0S"qc&f1 *otPuKC~rncc  ! Jꗻji%jJ\ 8#yvj{Cd8a n7^EIJ##;ᔷF%842;w}uP?j!ɰd! j;KUB@H“sx±lR|Cp~#>|vs TM u +\?9 ǎf6ʎe(n;z;` vyX3PLƨà4إpr 6(@x@Uc)DO03 Oob?`HPWTg,ߋaidQM0lm30åQ::a.F9R:*"¢B)7l H VH20aXC $1%fT$e*SY:Fr " E dfh(& &$ 8̀""I`$$q5 Z#ژdeXچX6s2 4Mh`m#LfMV 5ƳEAXK#C&4A.iǙ:&fu܀6 Ye G=mvFZNeL@Ggr)S&aj\kLnhp,>Z>%H`o_-?` 9~$3,kV;EL"yoXK#3Y_-A#~5UV%:cE< mO=t!Raqю( jZ"$ZՀWF 3kBC@oX4DA6@$ٱܬJiv`%(0-B e`3 0~"J c,QSI&o(;@6\[?Qt$!``krds,HP1珟#f NYna\)wAp|p56N ?^Gft"Fա"I:=G ֡ \ rA 7lMݝv=ק,q>pZ)VG֖a$`pfc*6ěLMRb$xl[`ƅB8qV$to&CϦO/7#SRH~:,r Q oBiaL< wIB^oPS;%A"1,e(ܼ!hLrD !CYT]v. ,o>L*<] J8 N%,|W=H"(Q±tER?Dՠ[:Eчs#Oqώ%dp͎G44k x;Ѳ[,#R8tv#W|Lpp9BIӱ"eDKg+7N\ɋooE& 2N6oXs#G2i2NL«C09CSSH$`sa(oDAY!p" $CU%!fɘx;ݦ`ce$ Ĉɋ JHjN" "8sS018 Bh[pKB+0 AÓy#F9XVNvFV0eEmi#C:brU!.|L$01T P3mxEܔsCawװP8Нѧ }3!.S3UBQ|w{` a| xnKdar-Q&ru'H0V6w -sSxfCfMMyT%mf=I$-8Mx$3zC:iԾl\5d`b^YșdL&scp㉊.f•W*zUJl{eԊ!*5A|ӰM l ѧiq2i[a,QhG^~+:^+S-hn225jM§ !9ycτH β'/bDn&hGp,>=#"-;>ꀙ󔌄@Y ,H})9m5v f+?&tPM@unDUUpkƵ8ALpM<1bcc=թ{hpԴD!/PȐj5"sC+H9CYZ{È&E<)pYK=  mf (͏z#fT"h8i8C|SF`A @$)wu`M':оOX: $m0O<0b X``4.C{FmX6ѐT:H;}d0dsg3T)CVz5AH(/Q((ꂜϾGUˆDoa߂; ,b6fƇ3gEͫUJ2siȆ oE@aYپ*f"YpJpIa˖Tom7Km#fIi@*Ӯ֞3dL x686C3$6q:_wCI8 #v{EI4rp-A}r/%)"|XPN#DJ p29LjtL1ٵ"!Jq ̀#DΊ1S;Ԃ ƌ`n^ h(<ҦIBP?LM%݉JLȹ\ w"t@Q y<<|ɢ|aga'|4K(|Vj@yJc1ʹK%/ú z^w2q!U9BU2TXM[0r$LQP1)63-:tـ7FEQZb0$_u7`sR"Pdc  BHuf tԶ\;BnxvF@ AA߀Fy.9y c0x "fd˙ꌯ!tew$"EnFL)؜=>c ti=Hf&p$*er)w:ga,LqCg=kBjqh놮e׈FVu3)|kZ1 I#60}l@G܇ѣAԹə5Ke8ɴCg#dƙcúҖt@ȌXvɀbaZmЋֻ3[Ԑ2I9k~4b"A#ah c&xo|`VBrr-4!12q]A܅Ȍ6V & )"\css{nX5mH}2iDv6,cP# :PǁSs0+Y< `bI$h/;ta33 9Ș2] g^7tJdt1i"qeAmbučzy:In d9v'5ul#53tf" t"O,ѭRV\vp=*Ts]#u pDN3!4&k.;GLP8 p ͢ttBд|PM),Uς(*T#*}J$MQdP:;bGT.x`8L/+ȃ MaCzܒ Yn4ߛ⤙V4gQHPaXV HW}L%ZB7i&BN5lm:9$.X)YB sG5`C[FZ/pP%m M -;i̡pz1cİ| ;eBQ o0PDD&BN\x@CB)ef!jfqb` )J`ֈ6 tEJK\#4Gz#=$qQR2b BܨL#yH0|hݺws$9#3 M X J'GvaP"Fߏ*uRRG$i6ZֳBz!޾yJaBS@J D@1 @PRD@H)H DHjUPB(% P3rMd`ҐEҬX:˿`l>ZSoF8d(DɝҦ ; 90$wsLt)F a'F#șL81S].7)Ї[jKXD5ga^c8OІw%*.MNGfSJ 4)!H-eDS-'cQ&:`8Kn+ThLms74BH#LsT^$ H" P"F1@aG4+)jXV7,!Fp)ȍJ9kca$!it^ DMI$hĚ^2).c"G-5x%\7SR!C%>M lBE!n"' fSX]nWy!7;.!G'Wd"1ɩǀ/\H>c٬R2Crӄ%}^ %Iyʘ#&~^];ӁA拨F@Тd ADiG{)3#NFt[|MD H0dFVa,@J*b dkƗkF 8.Z42@%{Yu-}~wA%M+6u_ D HPS6P zzSROCPa$z0e6cc 2Bgx X8lY-E0 Sya"G  PՅʐ@dFD `fc#9X%@t\a>@#CrE" }\Bt;N4p֩aQjmA>Kn]~lw>3{}үH=ǹPa?R )֘SXaȃ/\O!@'61j,TN wO, o=̔0!tAY: uąB` @*gѐQ(l u_@ݏZ"31ii 4.I0ܤ&G(\\ ǐHCt|0UM M`s$'UB|'0 T!4q'SY`4BYI{ Wīc/8 c8Q4g 2Ʋ. BQX)?tN| $SQ'b03~rc4DF ar QCoɋ5֤-3ֿ(?kR\%-9l7Ǒǚ9A&*6^Yō~@%24ti[I4^AL#20fyQEɃÁ$gw: a0d7r ?(_T0E wG%ͧ Fi,jOa~Zo4 q'~/gQEQAYt 1Zha#BBӬ"ji+}0!:<h]Bscߒ( 'n_h :s^̔Z0426ʟu25S:~x^0`#9 pp~vV>^]@P5|R'ݠ$;7M"h$l"5xQB#YB(=z+50cjYAӲ(s! S& JT,^v xtfLH<5хv:<& fN3Fa봎ug Tq$M&4 8Vwǖ7c9 RMcxqyhP4H jMs!D;fg)βNsmj  2%I@e3, >g;_QٛE?W޺{]BBI(