summaryrefslogtreecommitdiffstats
path: root/Source/cmDefinitions.h
blob: 411867c52b06d1eb34c749cf74677f0f72ced23d (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
/*============================================================================
  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 cmDefinitions_h
#define cmDefinitions_h

#include "cmStandardIncludes.h"

#include "cmLinkedTree.h"

#if defined(CMAKE_BUILD_WITH_CMAKE)
#ifdef CMake_HAVE_CXX11_UNORDERED_MAP
#include <unordered_map>
#else
#include "cmsys/hash_map.hxx"
#endif
#endif

#include <list>

/** \class cmDefinitions
 * \brief Store a scope of variable definitions for CMake language.
 *
 * This stores the state of variable definitions (set or unset) for
 * one scope.  Sets are always local.  Gets search parent scopes
 * transitively and save results locally.
 */
class cmDefinitions
{
  typedef cmLinkedTree<cmDefinitions>::iterator StackIter;
public:
  static const char* Get(const std::string& key,
                         StackIter begin, StackIter end);

  static void Raise(const std::string& key,
                    StackIter begin, StackIter end);

  static bool HasKey(const std::string& key,
                     StackIter begin, StackIter end);

  /** Set (or unset if null) a value associated with a key.  */
  void Set(const std::string& key, const char* value);

  std::vector<std::string> UnusedKeys() const;

  static std::vector<std::string> ClosureKeys(StackIter begin,
                                              StackIter end);

  static cmDefinitions MakeClosure(StackIter begin, StackIter end);

private:
  // String with existence boolean.
  struct Def: public std::string
  {
  private:
    typedef std::string std_string;
  public:
    Def(): std_string(), Exists(false), Used(false) {}
    Def(const char* v)
      : std_string(v ? v : ""),
        Exists(v ? true : false),
        Used(false)
    {}
    Def(const std_string& v): std_string(v), Exists(true), Used(false) {}
    Def(Def const& d): std_string(d), Exists(d.Exists), Used(d.Used) {}
    bool Exists;
    bool Used;
  };
  static Def NoDef;

#if defined(CMAKE_BUILD_WITH_CMAKE)
#ifdef CMake_HAVE_CXX11_UNORDERED_MAP
  typedef std::unordered_map<std::string, Def> MapType;
#else
  typedef cmsys::hash_map<std::string, Def> MapType;
#endif
#else
  typedef std::map<std::string, Def> MapType;
#endif
  MapType Map;

  static Def const& GetInternal(const std::string& key,
    StackIter begin, StackIter end, bool raise);
};

#endif
%]복ʔZ׫f7eTae/b@nj^yJT)Z{ ԟY 8K~ΐ3*I>ʉg:bL19쾓:=.ժ6Qhmmmh]#Q|/-.hQ@'}O# -ؒ'^3&8exPhǥ͆ ;lJc$gC+Y1?u]I&ѽ>2Y8 d;c9vÒPGOˀԵI2y5tv5$J|ʘ#Æ(( W_ d]&{0 eb׈ȺeYTrjy\ "It.-4D%ҫ],2Q:8 42t)=CPPӷAeT\p/l >kJޕ7Efx6pjB׳\`ϑ+3&`zgB8ʡ/7VIRb%2u~[^id/3~2.t>f gVg biQ6ģD{ *#"M)/HOI=h`1S],&%fk3jHwȞy,ΥY΍w+HK{lMi2?Uql%S3Yֿ_D] !.@}Y+Yd|{ME_<<)At:Ѳ;kDe-Y]}Do3,WKI/Mef PR8@%WTWeg):F';=iXߦ2+ $F 9'AX52_5{K* S`rjQ;TKw{N{-J `3%V|f/9+b*9ޡ̌hP]b P֒+ U9 籒cgJ  BEOv^X8Bcduk޵pb9c$ hcR~ at DwP,lA̩gκ9FwFJ4nI^0M\F"L#'lD:4T(}78aPWe]xVUrBo:%@N"yl@ɀB\)2O<\K Y^I9 b.%ly+9"=rY`xv+LgS!A\\.qUAYQ|aQ%eud_dm3S, Z/K_N;6ЅI(;Ft2F 𾎪)9,n̥dZJӄJe$')RD*)yəǚE;Gv[0ISnUAgCXӓB!WsݕĊ, dD{I-Il#dtZć$f_7-9W26'N:͸r~NDm&.\B1-< _̦] ")-eGvñ kaB3 dL0ù\8ң$opm`']lbjb @5$DŽO“rnJt菔"Ɔ)gQ |M4b,Vb,+#3A.ҿKee}]ev~. ],/=h Nb&ϸ .קi1HA`b25$"]B8 g,Sc )b)Xi:$7BÁ-.ISwE<+W Y [0""8qV3_I3KƝ]\--EhbP(dǒ0ӂu"l32eX+=c[v0;R&) y4ߓ _eKS~]ՀA[%[i>f !J-')m"HOX4+x.hei7m B`hs!rfJ~h,lb )`=-IpߩzERdc`NpP̖R8s <8JM3*I8%8+u,ƥg6MI80t44AbBgK˨}p#R #446FWW*εϦILNhTcb>PWNl{5j9X%ArtT}ٽ'ELOҙ0!AYA- ԽT!3Ewn z# oSСTd|wh 3s/ȼMf2,r@]K @~:sEPV|^y O6 $?S|wbS=b( ZeҀ`cǬ"uf+h'T*2ƙ^F[~UVaki&S_5VFcWKә6(Rw+[!2:%d26D)㑮;a%&#꧗5R7QOf"31}ս<\ލ=SnrǶ:׹9{~Ͽ } efyA4aa,A湇ya{"w1]s]s<0=s?ۺ >]yj 6BaB5 @/µ @T3M'KjN9es. rpMCsI7V=r cgaQ7zp>{枱glW'sGjr/7 y{x4 U`t:p8M1nmOW~w~UcUe4)U No5Mֿ/l[TR F7v"p2 K9CGN󨹿[лlXVYc&H:"vx&^XF}S~DtA`\gmh@ֻ2OLbi7.yЅS U,Ve Cfnt+L֯#VJ藭cQIey?߂9Mi%!aib7*6#ӏZ|L2o'NS#maI{w/5(q d[]!T!G0@4{IEO0&K]B@(C̍-Ր^]t.4S1"`uY 5+ 5Onj|kA{;G|pߡ=hۉFzKFjӅ':'MP"18Jx5<FJH {2+xg퓭SJ7 |* iPUW8 &A(\!y9[O`J}vOqP$W0~OS%I{R+=LpܠMZ1$Vpr'wAk{|so,T;@kT $%4 m*j^qbDHk(mY;k 5%!G`Mj?)#Eߡ"tU83B!?Fuu6iFs>(ly`TEC7`zADR?NXn59 cƔ>2`Cm;xw!$& uof!ܭ痽ȯT?ޥjD%) )+ YI+& ,Yi63A56 'pH8O0nËyҞVΊ- p@q~ˀ@ xÅO#\9ھlm&)H.] Ƨ`rEf@ܤ =FnC) q_^+À&iE^2wy4 2&dU=T}*d/ \,ܙo 6X#Bj# =t vI?9 I4:)@*q."щ5b#X wq^iM)<͜BUOҊ:Ԝ0p&>hk$3\MMM۴# &!1·:Ų:u)Ɏtn Nqd ΐ^kNW8g>FH br/%Y2A=ޫa " MS"Ք0 Jx*_h?@*Mk$(U`qr: !HVݲ7L>Pvbz);\"]нld04D7GpG Q@O;slCEgI`QZ k`$x"ȿ0@&rq="Dzjl>_Y `چ8ߜ!t'y${z\kboPH,# A].aI+MOiUu*q cV;pCϕ.lZa6%jѮsWޅMsԘ>Nkf4=zg4F,SI i# كO8aYqHvMNТKzf+(M; hD\Ăsjwɢ ȷÃoOè8C?arM,K'CErk9q{X?aTbX`PCIBDWRr\Oҥ'>M n߅jJ[o,{xDrgJLFx;qNA6F'VK3qlׯv¤ӶB[I* 3 P2d&a#›A(EcY0sJ[2="~TvLUx cͱ7C O\h(<1X>)!k>6gvĿ1f!KE^]ǓXOƠ(]Rb F0h2V6$$.[rsy{ BUjF+܌?{p5tH=>*4"Dl pfp;`EJV~ss_IZC4BQ@EdF*:TbX!? L$X~XXXC. @& ƺg٭ԝ$zڢw y J#&k`yZ[3WU^{j;3($X\{x%JiX0(- !]Jĥ*ޡ~gE?j\IDB$}2Iŋd幗gmzm~ڏxp&RUq; U[?3{Ls@*X9Ԁ?z^~V-m xDN:;p"X R`OpU)U (jEXxSPԸhX ZPmyqRجwfrbAU-'/H!R 4*wG -~_Foo+}sy߰w6R9wojxDK{xGzd҃V h*=}A:OYԠاQAr @qTRwB bwA ϧ]PnAt' /]QAr7Ԡ]PtS ]bCs0UgJYwFhK%WH˗G: '%)ӲUxxmm/CWifQa>=]%T~ۂcr0hUn-kuK)ơ=H-[`ˮxH%sG Ws(EGZ)NiZ(K4<I+?~/0מ녊&gsaRXʴJASݰύp+-G)`C DZ)#ߖZ[b\RFhDf=z_ɰVTf ]ab# wL߆y12{tW:[q8~@2w}VgC#P/]V֤hrHa;铘vϚfyfvsE\e w{`9f- )/olGG4 L]lPL-AaYC*N@B˘?1+We= `ԭBnf: V`oNNWTzup5.;u[;9y9#_( "g"vSWqNt_ Jsm=q[c{R[01& <a+}8.ֽH~X2WbNPX7v$|PXd<"y H_Sq#Fݖuݪ2EĴhPv#cC(ʭK4dP9YQ f 1y?^Ik!zY%ȏGhL0?<*'lx،۲ZB;4"GctE3 hvO(UcX^K5*[âp$հ~ԓN;1nQ hi5年A+d,pO%/ah1([+rAfߜsm]qYJQFF'WkJզT/jѧ\Fw=cU ة.cvm5Ȍ:mUMYMYA\) }F IkM]2b +Y|-`0Obu?ON^*sJnnw-"WR>øIx 8]b4j7_謐xNN*`4@+& ذn2D2"?\ѩ&7bNa7 *Vd,g0aH~&/OHQq/wIoB8~ɛrA[[NJ=:9h\>qaL27'NI.J0a$rPEQ D[LݡYơ==2!F؍s8+A!"lʃwth Oy!m쯾Y|_0.S$h5͵xE[1K0Ι($5)?X_Q)΃<hu|iwqڔXn$[ן~tZF +!yKdx5½/j$n?Xy S2%jÕoH?طs'ET3r]~fkT}r,㗣9xu|S35H ׇӬ/Eĝ SNՅVUzLjbb|[4zz Gnd< X2(h_C%I-\\t%Y| /0N{ؚt:LhM&UCNs;H>0蚹qJbܘC&.6 .޹t2-5XxY^)7op]SA{GˮXu@@̝>7j^x]{wYzd53rƌN56W61]O.*J_g\ل&9C zRBIArhi*[89j Yd[OZ/PQ{UH!0.I%-2,0apcfR_s[?nu_Q$D.wYnD璬hXRB?8GuiWTDp^/y *|tLN˨`K[hprZ(䝸8zB ?*݊ &UͶ>WQ٦{J U2Ί˂{~<-C>rQu5{#WƓ;CisQq y:n4glU[rB`5ω͉v>@rJ@tm5+IP^dl"a^jkkx=Y}|>`) X2IydM7 HzXAC HEMճd7gE A`s>;)&WՐ{=~?jn!FY Nև$zJ܁[C#Ny@f6p$ߒvf`wQƥo6{(BOv 7uUlRS)P@VSI_MBYzx.Tco?AJޘt_|feB'뷓! 8B3yNB?a_ϗ'0Ww;4׀YܢVը*l6*[EC#T8xBm2ԫYvv2_P:}Л8W/}8gVrKuk\u\R =xDJ  'k`l& %}''|>p^*-cHgb*f,?nxR*e*+ss2}r}:5W+U+9eo(E^PD?%(g|@79މT^-%UE<%,^7Ex1qcNs*: Wqp(%4ԏҽ?)bźk* Cqi5_G9EkYgg@D򓢷 ~<5PVRPV@U1~uP弄w`^u<1e2N QxV( =UzUTmh?ɏHZԧTEY#(aј$[HiEI:ݭkLT6$TOw܁aC`†Sv{t_-ȟ{n+hmt![/,&KF.'s7f.†_ $ w Vj:,AwGk UY;EUsw"ge+B-WTEijEr+[06ū'Nwd q!ͻXB|}ߎ/_5)$Vœ+<&UxRw_`DƴzFќ7mQ[=:v, 2w e1CͶ?oꁯ~E1]-`L`7A$\ˤ9"~SvnXsp=LP6{`ۡV3{4gw"<vК1 J.UJ؝{FxMru܋\`X]i{}cϧD>Ew8~p=c>dZ9EKJ%'"'e fBڑʞ.:,p|oz*M:aލ/VOi"I,k^Ahd A.#z48- )= 89WQys0d쭑{G*!{b,7}/rf1JbiOm`)8±Zh#c9nM1Y7 M_ۇ??G ܧ\ :A3~q\'$.KOrO~Rnsmy:R\xB~feI:?W LS$ (UY:YΩaM>do0ŻHZ?<]2~L kEO NPpRwfMyR_}=7U3nMK:Y!s.hJ5U|,+zF8(!ϝT41H`zj%x&R+":mN.O|0ZXJFvd$ܡ ࠕTTϲSULY1>ᓘoUcz#¿eR)߂.*XKc00vcO 沘p!y 13!pBh%*®Xx *KqRnS4d`UZlo& qMBhp$:T뺾2"liC}zS@wnqVC%6&P;H$+kZ#q-U7Q5Ug; QfH]NU}f-ZFI~&Y=$ f⨋~WM8AA:VmgAF]ińQo>S Il1*A[qvih6jƮmirzJ&y"I_7h *[-(L_ֳ.QؗJebxrNu_D2{|ñ>HNWz{|,6oGm@\d)uثtE"7^xj;lLAUh2n[:K#0HLI 1qgvc@җ.cx]`\B9h]DҬX BmUn:1"t/='e-A$Hy "7S[ ~v|D(2-^-L-<ɶr嶶W}k;qHn3Z"h x~ht2&$;Uua ™p]R7M^#ڵFV 7e:~q/p29x XBGm1 W^Z0Uuu ض ep1I&9}11orzHO}T_پ;Nj -KȚ3{P7ڦ=ON(''"[(eVB3ېC)^dF?6D؏KV-d!})d+ບfꜼkjoݍc+Y8NԭƩ^G|/C.'ߕe۲4 k1ݲ6S^!R#SJ O]Pw#EG'/Sx8}_m3E䩷O;*<;=io5SIlFSʾ9P5 ߡI={dԈLM)y%'GVM_𖙽E'aѷsL djҷ$qesCx<ұCvC@~< E2m7) J\vo7];{X⦫G^%n:b:ZmۊoeQnw]GHw3H Y{W|o  6Co7lh2=m=9>sM`&g$2=xaj'Z";ܫdB''sLU?3F1 W }e&恺qkZ^{x &PV; raLIeE)QN?NFib!=Y˵Zu~\^e>:kJ¡jh@_ϟN'÷c ;膐E6.jnn7knn5?䋃W{͌ QBLͻ>'๻ C &3}!dZLsNK*?PO%|_8X MlǸS 2@+up&M ėe9Ϩu<"QpW D-:w0a~dFdžXqqtX\+L]hd#_rVJL?S$e6C GzQM.RcԳo;Qs&ۊ=49sɂ*URUpOhwZcڴ5;wp#k63`AZ׷Ls$ATT%,\ej7k$P^֡Ln묇 D;edOyvS fL5;1aLσ)S#sf̿ 0$/7P3?<}V2Ec恊mҋROhCӹ>o2FzM%}3 feͩf)!#֙qdBa`@1(PrRb=@2a<,VvETq28@ (Q/N. <bcclS&Zg.Y%r*ޝ4?hS!7ny??D`nM3ei\ t%΢+[q<%1[SȯlL7dj/U;%ʆ/;َ&w8NwA&C(㤫#QK&[@zJIC;m0[0@Qx'Vkڢ?с(uQ53e_~k^e`pAmJ*N0S0WU ]E8p=Qi jP(@rgT^F.}N۳M 7lыB@ǪE`d>uq;O6Wo!yj҈sj p-L)l v`ܹ>ʵy.- J\}|nz3#Sp][]jt4IأE:Puq'Oi~ i]RN@u')]F^*,+'lR&, l) NI@$"Zٞ|{D<NJg4&J sKGZ(׍ƱI.2l@oZXG2C ̖qꕝpу[2YQgjH" s"#iB9v$ [yYZJisؘe$_ɮ(ފi _rkb;dkpL\4 Hf L׀x0|,l;st'ΑanTCěUKR+Z|9@ҋw;ORm MzbJrx7q X}~4I:fHN/C^^n{}f$eG +81 }QO|H{"=5.QU]dC<~X쯊&MB. a7w7+`6>M}rd2dl\_KnƵ%szQ!w}-EV.co\A0tCP*kd.߯}9f 2. _H0 GR̾[5u݃s cǘ>+ɴѡ֑|"mmPzBi%wZ/ɇi%ֽ L)q@/ N׸G2pًJ3q\'2N%TMƙ2#Qh= "4]WLI oipZDpCz#-Tk0њHב LθUB 'u\,?Q E. )N['t K>N:, ƣi# OU1R D{I14LVΑSYD 4>Im۵Ojq U]ऩqD#Md:?47QgͼwZ\8vùBxQW@Ƃo3E)0P^((v̝A"K.ٰ#udm%3r r>,ӷq;#^i" rƿzu⦚mdҊ3)3b D04ҮTЕj<+ScE9&Lم<R._l3{V;+& ELV9~Fp+CQᠠ`O&^ZO^|KK/z92ѹJΰ̦/GVMT.H3꼡*bIvm*N/ n"҃xa@͍G~[ -gV& ҏ3ɘAZH[Q9+%fSCg2*h#-v$`<Sf* $kw3uw1hą$}’$- ԣG6Vz(0?4ĝ ߿eBo xxYaP/6wevz/yҦ_x48cӇ('1ktO@5j0E$H)Wj0d/mfE[녙UrV͌ڵw渝pM3C:;KvQkftuFəs  V:M3+66gNfZ>qĜ$G>3M5}r!J¯p2TD-KI˩Ι(K4 m<2՘2EyCWLi*8h==#ʏ^*Ԇx\E2mJIDg1*΁yt%Q1)+8&:*OC+fv bfe+mv*X&lIs*TDUx;Br ޅ4PF?iF!; G]-+8N:y:n`V cMw k27,b-qьQhYg iy()pu1Z~'O7ox{p캏5l!>p|ħ4'xC1&?x2bIHw+aHf(Hg73 CDNqdNb朸 P3h.;-e" #RT e1.v %K\!O_WY5< óG̃? Ht8'aMA87"o)`*| ޝ {C VݚW =$}M'4}5)p9 5k ]~۫ѿ.o}`Q!k_Y@ux5K } h<_2 ǒs26`U=r#QDl q3:RѝVgX\l,(#W"ݣA. sɋT $KE$T@Ɲ,ڨx]%ZB?+E~g{oE_VQp)KG *-OUǝ$33έt'< bX+eAy Ω"RNb'^J)_ոtəxT]K Ɏ(EN^@9VBBgQS6!~ x@ډ閌4SCM>zH:b&K4/##j|beGolBλ$hwX^Gj?M۰f{2P9Pl}"H$1I#% A]1 |֋\>كЏ:IN3N$PJU]$qdv]746t|6n=ãY:m?`9B{ OtR8+Ś;c/0%| Nvuzt/M"3!.jgEHG@=kZ )Vx,< ,"BX]҃ւۺu'`abFwzGk)B埚 ݞ:-Lj ng'[I){qmEIV|TTxH&fA5M^րPu# ‰&hx {聏< jUl\Izc VӫhnsdH@Y؞HVS`wpJҡ 1֍N=QV9\!hKa,"|kk8f(iRl$^6[\LӒ\,1nH+ukD](L[ g' 3kfkȐE f sm Q4-=@.->_ӏCȏ~ &dkRRݸ]fNӌYGa7{[ BEa(SP2TB X#iG_(hY6rSiPmbTSR2 y1c+pèd*jh'x' 2DPvy>;6Yej&3k(7KN'K%$:eʺ5˷_lqtKgO;T'N ft-=ORjNД6 eJ%r]S9q:*8S .2=eA| T.TUYJi1egq06~-SL|#R7֊טpN'=us}R芤۷Ky6[ ci*K0e{qmmcGl8rʼ Vy$53{0CZFԩPeѨ)^ټc3PN놯M4<\Ӎl4wCl4/;M'n)7{77Aoh"bx4u1KL1ʺŘP yj~D=7o2mq /#8;S?'m$jr:!vO( =G@O|r\/Fwuypz,`qlltNQNA ?y .Ox?^_\Xh,,.F}u~~ag9Q];Yߓyb+^(nDca{ }0FRd }cvCtU=Zlzb]Э22@\A5ˏTD1ȕqMWS&F !2Xp\@o5:NrE9(W2wPt߿"d{0 ᶒ=I2ҎF] %(Fg Ob"[Ǩ8\ ^t~%G0{a'@#F3^S ?B|BÕF+İ>9!@(xz261u|{Wek08<9KLߧ0P-,GQ H_P#s&ZQvԻwAsbΚ!ZWqm`-TUC^d9/KnCGF$`o2QvQdw\õZz>Ty0ZVa~O-.K+s~N0| X\f#kCP|aV)ʚ<l †7{owZ/'Bi7jWqswϨ@`ld<a`v^ղKH>v-e Rr{?¦0x48l!Ty7bޏ`ԫQi ŷ95?dD!dU-ژAIoQ/6j/>y~{~>ZΨChc7)oiaq%y zl6ϭ\poxߕ%t;:}1~i=;h57ܒw~[㍹[6ªmW筍BH[?q,?Âłx.rytdW@ЫZM%-R/Vtk#uTJ{??(w@2#S({ hRWL@Uٵsw`"5\@9<1*7{4 tn6x+Q~p" 0.s {Zr/֪kfrS:QC9׊Y_SKГ* 9BbP`㗏^7z²xbw@(V7?[?s^t__NK\O9a̖} *(mN ? ͞>j\ƌg:+6G[GSqi?s4|@q'<'7Rމ | /]ihhBGGOӚ?z}wOLd0ֻN<+OsHL[[G[ p~Y[d@4GOclu._NԘ^08_$X%Kd&cvMʕj͆o*p"ӂǻ(˦fbTv}jOw%w?vv wi|Ol[3c"QjCλ~ai^~f/8P(q У|eZ4YDp+Л'4"ɩQ3_CtE~SƉzD4ROH=o閲[+&_A[R">bDU1Ԯr%N=, 3Xp^y-wNM?VK(NѨDj~+e;Ux׬׬H}V/ĝ'^^] *n`^h@>z Ov/Lb_JWU:?aB1G睲Dǻ̈\rT˨a20A2o ',;Ռ@w_`lThLF)&k aP^0(%: t{fM?)5zJJ{x,ݽM.zp3p=tjo7w6_7~qСr3Y>MRԏ02 ؀e s킨t\Pa)xOְT9;f㍿`WX3K'{3 0ILQ2UJ @a3`ĜՇQ_TcpŪFTh2?4RdCIGp^֬dV0*'`:6JA+I! ^Y@1v>uS4GY; 1 (#05{܋Y<3Mf, oyh^>~}U[wHB $PszUi\oγ: 9X-ft|ƣT+?>ٹRyjB 竎_cHbhޓзQ] >NG{$c`tMzh m+wҖ?:^թ-.~(BZId/=1ׅ7Hn&˘cd l#)ztn id/;Lu㮺bu'w> ~0_gQ K)oH`XY~6OD@Wxos|"ޣ)rsae⻛@$ɟ eh8%YY?Gn_zT/}X40g(J҄Ol'DJ]|q=Fa^4 PRp{qiǣ"t$RN}QYotp'֑9jT  0ĢPb1{.zvW_Jq <3X,IVXpf_s'XYɰ=<&$o7D(Xy>wNg>_jԗsYK$`__ZMr=L!γ F'W탟ץ @$;Xb{[JPT%UR.67~˔3Fwmxn_!ۢ?ۻGͭgZX@fLy>HFͶqy%֟`[^jWWf I7ڧ66knU?wF]c0_XJ_^Z?_.Ww0yݹ g?I{xdi2Y})m}<999Up1yo >"P}ec|Y~vqFc(VďsL54sx,|yL' |7Vrx>or._V.֟gy)y/O.?'RL2 JȠnVjK*^!%Gv{q;omQ[5DU:d$^0u%2v}6/7d'ay4oI(5n6Gyhx`kCF:G=s/?ި| t{ O;x,Rkea9?Qg0E74Qq2P:NF[ږSt_y)'+;ɀgX~R{" {@Of턎xD4v )">zIp^)&HTbL+ʕgnATwDvV_JF~9o68ӭdk~b PFt5lynuT΃8S ]^?seIfVŅ<}<+\]nk=SÃoًͣS6XfEz-V,ҺxDa'x6ELJA}{"`Ƃxh(s8lVDyL'}j:9x4 ֕W. rp6f _N0qJKH!}vx0텧H1_{p0y_p1qԃ;4̯Qã_6bGyKe4/-Js/IqﷲE1uG@E3E)Յ<}|7p$*7+@#CEҖt8ڣK(*A;0bf sCD9{Ԃo &R =孿y>_SlV9F<#9@H;[55G0mҰ= ;M;X3? _?'\U=3 jÚc1]mDſuP_sWgBWrK#[)}Lncq07sx>k]j,*m ]O~W-:&*RcI"s||)R=ṃ>KX\MVsOM?;ogZvճmn[?m?oZs@]?ڋ=8jlilAЍq83*N$ X_Lrg >G_='i+>G@LLw/5+>r{(WEʹt; pY/~FHK`d*_0Ie>=)ȍ nO;]-xͨt['0fu=X&Ś@;i\:7>xl^W?_f)ٽ f2ϋ*g&;֫Ol _b&v(g['z.lsQ_P?V_/EVfæMOjƵ(N8}A3,AMm[ґ>p< z &>=>k`uo}v[<ѷp*w5ϧ>?}~&w՝MOiގOUf{8ИR} mYiq@)^zO-7VVs=KJ|y?8}!^_3+)%%\rO.?F|GL_o(#lg;r#`;c<4qFѕ\je,u>wC}b:R>K:*˂>=já/* 977,i=_}p|Uڻ[%$kSqR'ϵVg?t ROWs>Z[,`&Z\{/Of+鿴,`&H[Y]X{xP@ק7'<ý<;j|oގ7כ7>ճ[ ܿcwnk,q}#Yf ?P ~K܍8)A{*ny˪6.j,@p[:w{uIv{ʲ=w&}*ӽ84mѫܥ[*&)nW/nҀq7Vj#׹k?tE?{~w+Vv4>+~W]r |1:(MWPCz41(K ,+eRI4֧: +N..,7_^;Ѩg Wz Oyxh/bXOZY]i*q*Pw8oP:^b0wpx맒xHXL ժL*8jfI> 3GOw~spژ,3-}3smO5KgJw[8[J"\c?k> $38~׃s,|1/.&Ņ\s?~