From 29a6baf75b337150c468f11b4761098d55bb5d93 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 14 Nov 2015 13:36:38 -0500 Subject: Add submodules --- .gitmodules | 48 +++++++++++++++ README.md | 34 +++++++++++ ganv | 1 + ingen | 1 + jalv | 1 + lilv | 1 + machina | 1 + patchage | 1 + plugins/blop.lv2 | 1 + plugins/fomp.lv2 | 1 + plugins/matriseq.lv2 | 1 + plugins/mda.lv2 | 1 + plugins/omins.lv2 | 1 + raul | 1 + serd | 1 + sord | 1 + sratom | 1 + suil | 1 + waf | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++ wscript | 138 +++++++++++++++++++++++++++++++++++++++++ 20 files changed, 405 insertions(+) create mode 100644 .gitmodules create mode 100644 README.md create mode 160000 ganv create mode 160000 ingen create mode 160000 jalv create mode 160000 lilv create mode 160000 machina create mode 160000 patchage create mode 160000 plugins/blop.lv2 create mode 160000 plugins/fomp.lv2 create mode 160000 plugins/matriseq.lv2 create mode 160000 plugins/mda.lv2 create mode 160000 plugins/omins.lv2 create mode 160000 raul create mode 160000 serd create mode 160000 sord create mode 160000 sratom create mode 160000 suil create mode 100755 waf create mode 100644 wscript diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..2ee653e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,48 @@ +[submodule "serd"] + path = serd + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/serd.git +[submodule "sord"] + path = sord + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/sord.git +[submodule "sratom"] + path = sratom + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/sratom.git +[submodule "suil"] + path = suil + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/suil.git +[submodule "ganv"] + path = ganv + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/ganv.git +[submodule "patchage"] + path = patchage + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/patchage.git +[submodule "ingen"] + path = ingen + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/ingen.git +[submodule "jalv"] + path = jalv + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/jalv.git +[submodule "machina"] + path = machina + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/machina.git +[submodule "lilv"] + path = lilv + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/lilv.git +[submodule "raul"] + path = raul + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/raul.git +[submodule "plugins/mda.lv2"] + path = plugins/mda.lv2 + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/mda.lv2.git +[submodule "plugins/fomp.lv2"] + path = plugins/fomp.lv2 + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/fomp.lv2.git +[submodule "plugins/blop.lv2"] + path = plugins/blop.lv2 + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/blop.lv2.git +[submodule "plugins/matriseq.lv2"] + path = plugins/matriseq.lv2 + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/matriseq.lv2.git +[submodule "plugins/omins.lv2"] + path = plugins/omins.lv2 + url = ssh://git.drobilla.net:/home/drobilla/git.drobilla.net/omins.lv2.git diff --git a/README.md b/README.md new file mode 100644 index 0000000..cfc92c0 --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +Drobillad +========= + +This is a meta-project for building all the audio projects at +http://drobilla.net/ in one step. + +## Updating ## + +The commands + + git pull + ./waf update + +will update this repository and all git submodules to the latest version. + +## Building ## + +Building the top-level or individual projects is done in the same way as any +other waf project, see any INSTALL file of a sub-project for details. Be +careful about switching between building the top-level and independent modules, +independently configured modules will not be aware of the other libraries in +this repository and check the system for dependencies instead. It is best to +do only one or the other, and clean everything if you switch. + +## Running from the source directory ## + +The top-level waf script provides a `run` command to run programs from the +build directory without requiring installation. The `run` command requires a +`--cmd` argument, and will set the necessary environment +(e.g. `LD_LIBRARY_PATH`) for running programs from the build directory: + + ./waf run --cmd="build/patchage/patchage" + + -- David Robillard diff --git a/ganv b/ganv new file mode 160000 index 0000000..e7731e9 --- /dev/null +++ b/ganv @@ -0,0 +1 @@ +Subproject commit e7731e9bf326ec636584229a2bbcb8fb0c0d6889 diff --git a/ingen b/ingen new file mode 160000 index 0000000..4f86366 --- /dev/null +++ b/ingen @@ -0,0 +1 @@ +Subproject commit 4f863669ae5015bf0c705537a244e8488212488e diff --git a/jalv b/jalv new file mode 160000 index 0000000..add42b1 --- /dev/null +++ b/jalv @@ -0,0 +1 @@ +Subproject commit add42b10290e261aefa93dac2a1cef659a7c302f diff --git a/lilv b/lilv new file mode 160000 index 0000000..df9e43c --- /dev/null +++ b/lilv @@ -0,0 +1 @@ +Subproject commit df9e43c745dbded4c2bc0c857add921b4ca25820 diff --git a/machina b/machina new file mode 160000 index 0000000..3e93218 --- /dev/null +++ b/machina @@ -0,0 +1 @@ +Subproject commit 3e93218e458feb0e263eea7cadf5c91ca48a2a7e diff --git a/patchage b/patchage new file mode 160000 index 0000000..257f606 --- /dev/null +++ b/patchage @@ -0,0 +1 @@ +Subproject commit 257f60614b8d6225041ac3a8f0dc54a6839a4ca7 diff --git a/plugins/blop.lv2 b/plugins/blop.lv2 new file mode 160000 index 0000000..44ff27d --- /dev/null +++ b/plugins/blop.lv2 @@ -0,0 +1 @@ +Subproject commit 44ff27dd355e850b9865fa50e3f32d8e24619006 diff --git a/plugins/fomp.lv2 b/plugins/fomp.lv2 new file mode 160000 index 0000000..4511cfc --- /dev/null +++ b/plugins/fomp.lv2 @@ -0,0 +1 @@ +Subproject commit 4511cfc6641bb9b4b08d63f3cd7d16911bce8372 diff --git a/plugins/matriseq.lv2 b/plugins/matriseq.lv2 new file mode 160000 index 0000000..92d4404 --- /dev/null +++ b/plugins/matriseq.lv2 @@ -0,0 +1 @@ +Subproject commit 92d4404abbe1373386e7fa7bd42a3acd1e4eeba3 diff --git a/plugins/mda.lv2 b/plugins/mda.lv2 new file mode 160000 index 0000000..c6cbb4e --- /dev/null +++ b/plugins/mda.lv2 @@ -0,0 +1 @@ +Subproject commit c6cbb4e70139c6830377981de96069fee0f135eb diff --git a/plugins/omins.lv2 b/plugins/omins.lv2 new file mode 160000 index 0000000..8659781 --- /dev/null +++ b/plugins/omins.lv2 @@ -0,0 +1 @@ +Subproject commit 86597819723ced56e9bbcbaf34fcfdebc9690197 diff --git a/raul b/raul new file mode 160000 index 0000000..2901a1a --- /dev/null +++ b/raul @@ -0,0 +1 @@ +Subproject commit 2901a1a52030838e9645dfae5a51a686fbbc07f2 diff --git a/serd b/serd new file mode 160000 index 0000000..40bc1d4 --- /dev/null +++ b/serd @@ -0,0 +1 @@ +Subproject commit 40bc1d4233edaba01d272078f295ad4586b6feb3 diff --git a/sord b/sord new file mode 160000 index 0000000..f391b49 --- /dev/null +++ b/sord @@ -0,0 +1 @@ +Subproject commit f391b49c87f152fbfee73890de1a9985fe9b81c2 diff --git a/sratom b/sratom new file mode 160000 index 0000000..ea2e469 --- /dev/null +++ b/sratom @@ -0,0 +1 @@ +Subproject commit ea2e46951595c760e77451773526dc7f1ff97fdc diff --git a/suil b/suil new file mode 160000 index 0000000..a816f8c --- /dev/null +++ b/suil @@ -0,0 +1 @@ +Subproject commit a816f8cbb2652ea6b9471a7fd98f21541b56d3c7 diff --git a/waf b/waf new file mode 100755 index 0000000..df0c1d1 --- /dev/null +++ b/waf @@ -0,0 +1,169 @@ +#!/usr/bin/env python +# encoding: ISO8859-1 +# Thomas Nagy, 2005-2015 + +""" +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +""" + +import os, sys, inspect + +VERSION="1.8.14" +REVISION="bd8d497537f4e38e5a6e5ac866ef0959" +GIT="x" +INSTALL='' +C1='#3' +C2='#+' +C3='#&' +cwd = os.getcwd() +join = os.path.join + + +WAF='waf' +def b(x): + return x +if sys.hexversion>0x300000f: + WAF='waf3' + def b(x): + return x.encode() + +def err(m): + print(('\033[91mError: %s\033[0m' % m)) + sys.exit(1) + +def unpack_wafdir(dir, src): + f = open(src,'rb') + c = 'corrupt archive (%d)' + while 1: + line = f.readline() + if not line: err('run waf-light from a folder containing waflib') + if line == b('#==>\n'): + txt = f.readline() + if not txt: err(c % 1) + if f.readline() != b('#<==\n'): err(c % 2) + break + if not txt: err(c % 3) + txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r')).replace(b(C3), b('\x00')) + + import shutil, tarfile + try: shutil.rmtree(dir) + except OSError: pass + try: + for x in ('Tools', 'extras'): + os.makedirs(join(dir, 'waflib', x)) + except OSError: + err("Cannot unpack waf lib into %s\nMove waf in a writable directory" % dir) + + os.chdir(dir) + tmp = 't.bz2' + t = open(tmp,'wb') + try: t.write(txt) + finally: t.close() + + try: + t = tarfile.open(tmp) + except: + try: + os.system('bunzip2 t.bz2') + t = tarfile.open('t') + tmp = 't' + except: + os.chdir(cwd) + try: shutil.rmtree(dir) + except OSError: pass + err("Waf cannot be unpacked, check that bzip2 support is present") + + try: + for x in t: t.extract(x) + finally: + t.close() + + for x in ('Tools', 'extras'): + os.chmod(join('waflib',x), 493) + + if sys.hexversion<0x300000f: + sys.path = [join(dir, 'waflib')] + sys.path + import fixpy2 + fixpy2.fixdir(dir) + + os.remove(tmp) + os.chdir(cwd) + + try: dir = unicode(dir, 'mbcs') + except: pass + try: + from ctypes import windll + windll.kernel32.SetFileAttributesW(dir, 2) + except: + pass + +def test(dir): + try: + os.stat(join(dir, 'waflib')) + return os.path.abspath(dir) + except OSError: + pass + +def find_lib(): + src = os.path.abspath(inspect.getfile(inspect.getmodule(err))) + base, name = os.path.split(src) + + #devs use $WAFDIR + w=test(os.environ.get('WAFDIR', '')) + if w: return w + + #waf-light + if name.endswith('waf-light'): + w = test(base) + if w: return w + err('waf-light requires waflib -> export WAFDIR=/folder') + + dirname = '%s-%s-%s' % (WAF, VERSION, REVISION) + for i in (INSTALL,'/usr','/usr/local','/opt'): + w = test(i + '/lib/' + dirname) + if w: return w + + #waf-local + dir = join(base, (sys.platform != 'win32' and '.' or '') + dirname) + w = test(dir) + if w: return w + + #unpack + unpack_wafdir(dir, src) + return dir + +wafdir = find_lib() +sys.path.insert(0, wafdir) + +if __name__ == '__main__': + + from waflib import Scripting + Scripting.waf_entry_point(cwd, VERSION, wafdir) + +#==> +#BZh91AY&SYߢxUCF`#&"@## (b<{#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&>Njv%ӧ>YtԴzQ5ݳv[eMYX7-x}87HvS]֧G'G}=\[zko=k]箾㵍tۧof}{^G{ہޗw#&#&#&7#&#&!Ҁl #&m06m&F l<iSm([#+#3`honET*#3 #T#&:#+LH ֮}ڽj/7vn6m5U]zڬ5Qg_=:=]z[/wi3Y`T^Pzvw.{ܞ:Zv >M=K#&4JA*D8vONj]R]#+{^kT.ɱ]Yc\cMSzn#&wcןxzCo܏^tN#+}xsyMkͼb[;s{r{Gv[uc0zպtwaWl;7sOK#&DwԍooU]ݭWes&h={q[#&/ݸzzYw]Լ#3(#3#+`(#+ijOm鶺h{v}:}M{=kyuweo]c5ݶ#&7Ԁ#&M|켻Cv_y6n;ztDÄeWsw*mِ³)۪>'0j<U#& BOONl{n{Γs/q7{|z۷{Ko: ϣn.޶#+No9/{/o}w70eV#+򃶯wz>oNv9;gw>#}v篫[Ed#&5vvzg/=;5ͥ;}۽rՑu=k#3]^g@#&#&#&Fh56B=M @zSOM4S@M#& I$i#+#&#&#&#&#& A4M FɂIjs(f[2+"gW%tli멗[MehT9]("i{ʤyemcmOĆ$F4k3,1ryJ>znWs&g#+kkG-uuDcE#XymmӤshdU ' - cM@UqorɅ*Ǿy(Y*RD)CTX]Q5zzFB%6R@p'҇φEF"n$RŹL J)>4!֨Rpx ¨.Bv-JDrJ_k,ߡwҨwX`;Wÿ" $TTqaE#Ʃ+3-GmZq9!JUNƍ|B5݂DaPS3ypĉT1EUQ}3^pr?}ce8(a3w3GxCf6o)!TCĪӕ#&"NPO%bQT/#b$5/fohg4àH5 CϾX5ՓX3V BmcUA_]L ozlDn}oYA=ktfEt>5sgQNLLYCF+4wkXn 3mc+MIEMN~ #&c>;dZ'ʩ=L6D|QJKcqa0‡Aȵ;#=\.Gu顪w|*Fg #8eQ籑6 wXd~{h cmj04̊0o~-x$Eyk6:OL\"+:Dw_j"]s-ob`I¨х qม}\SlLε?۪2}U8U:%H${N{Y~C,`s+)wI&['onMjj2(!ʸoM%jBɔAcVg}]oIa)9σ<5Ov3ѻjj& uCzKa`)fc#+J۞kяB_Q]!g+j!=tH+M#+L\0aq}4"ٵ^+gb[ 5#3# #Hh⼽:"07zU"wQAzie9JJpj--WDI@JíWz2PPV5ajaVs=c?wlR#M+@Y {cgLsTB g S#T8 9Vc~+>d#ӟt){e3C϶,ERQ:9Z_T\h&B/!D5Ć90lp9i&ykFI5kLl8Q*!%wvcWRv4r#3bݵjo:H rrb()\Lj0W].N.9s85:}YD'"Ld!"@ NmB<'kq'\A|;ˏD{/A*,< ֡kєLIpxr?2q<$GXڙ#&o@|NyDtB>w&ZٲxWl dtҡ}X̋:#4fHV[)N GWԠsVrW# T)l*&FB[ib~ ah[}ϰlRT\LS=ڼYiڏXǦM*imSW!״A)|/wV|&z.ظu~>#+PB9l$[R/b8cB1s꺕VޡLdy9U^q#3+>>,>Kn % vGJ,[n!hT#)ƀRt*:VO*NDo?g[=J6qL,!qAsJݿmxʏ4}S X|GX#Zh#3ʢǿ<'f׌H0W"8ӑ)핫WP#l`y7vĉE(YO:bTur5B-B.Ft 7%L&#$\| Ǹ2"Y)olȊ6Cym/oR#.r{?f7k5)n%kt*Dȝ6a{MlP],w{ZX5\NvQSRzxq!Zu ܼ`::-(A?S㤠膰T`b"tkQ#3Jw̯? dPCy)#+ۄ)^jY":K4];sn!A []J]XFajT_?[&FǥW2>r"}fr[,c#3Dԍp}Zl#P2qId,O-^U:U;ps#MeUoݖ`fRMA[WyȯkX6g:Y)ɱJ}=2bGʃq,׺3]C}9sNǧ-0r9.~ޝݴ5|\U9Rt\9uU`A^4ޥ]HɒYbUQwPCDt(>Ppv*aםYє ڪl+`!zl&#+qgBΰ*een]q˔yP !77׵7KgYGbҾf>ƏX{A}s!-soy$8Vd"eD۷f%DLb%jVMP-R.dNdM(#L bcZAA@+r]f:a˵3ssk""Y/"WKMJ#+#+Yص&x|.4(p,Mcꔜo#3&A_]Ս(-HSG??a]'b"5\'{2)BKmvD67o zx^e;Xx-dAkrhD0IXil ]yW#yҒJlmג\٨w+E$̳kxva9t^UKMP%P Lg&h&܆㖹*r#3k2¢ǜ_IQLSz9Ugզ"N&6f?$@vz7X8~ Frv,7&Д{3.|y߅"5:O7!4[t*QCt`cTJMNB;:Gהf:JŪBG+GB7>݆^$I -tz㱸aG;gǬlrB^F,x$`ʼnJ;BGs-R:9#f0׃?]m23a{QB++ݫDhv呶)2TZ|#F~gF%On_F|W3s4,WE`Qۮj7 CEǗrՅ̼מ}bv/ I&'&3-lo\ZlyS@D$E4x;\5Q9C٣k9:oڜw3wߍjh|nMШQaN\Mv( #T.I ffdcj#&ǂγ8pd10ql¸1~tx ,NdBɾ,Q*bU! u&SBN: &h9NaV%~(B䳛tE-ԙBlN}Im"+p EǗMסN>y ڄqq+i*L$V%Xꀕ =ÐeAB~'T趩eɚ3 2m={;a|=^8V,b04ٙ[#+"8~Z8nSj?#3rBv|r)f-󺤹YUeWtw~cys:vWm ˻k~4P]!EWi2 0#+F7eiUlꨊ#30b}.|1E7n՝N\-YX ^dC҃Ιaܹ#3O .RDꔡsLn-(G>uVUǞ.tDpjI)eq̍R&m!٠0!rH#3\||%|3DmM##&3fIvpٮKL+b#+XqӖ BEsݗy)?oƧ=DJs’EJhpFehQn%m?'H@ϓ\mD2) Pė\X ol$z]HML`ϜU1~g׽y[vi8Ӹ<4}wO oXɭ%[eNbG3CBT8@] g9 7;i~f,w0}6F9jeUձUbMCVͥ#~"XQ\=1EЁJu^j&Oᱠn#3f5LUfǬvX6;\k #3)M2Ն)3!8寇uzD?޷ߛT?ʨ԰Auc6vjNC"*vzf)in^c5!ѷԄ%Q8|GwRVCyM!F7ֿSޖDH夈!gϾfV9f={QLk'Q+rUpq)2]?IQ+m&4v fsD]tP)iX!۠nhiC,wrJvFfvb}טW;f+7?p]2eX-Z_䈖ƸiQvNZMvZlDX lkDF1-mpA:A]7J3ﺍ&mwک*1",[i (=iasɒIHI4,&Ium+˵:>)Y qM[;l]gW۲f~)?2KĽGZ޼q%6Ludv#+w㇈}#3ϑ9mH)pX e91I̖ID\?#/s5^ZvCݙDQ:>Q8ׁ;a,fxF7nBGs6&HY!jF†2L4nz5^Hߜt<{Q[__*/kgdZ#+@u3`9d_M?,:ĝ㽚b߲]pS#3Mk#+9oL=Wza]ڼFbHVTVSH[759׻L3C !%0(5aT">{3[DԅH)BeVX _kgױXdU#a0V- Lyrs~pc.d]Ä7h?ŋka(p*{'svz@߶.tҋI6ukKH@5s1#3$QԷuZf tLʼnC;O{1,NtɝadKu}R*;uDoسF%;m?wֆldק`5\;3C""3dX#+4CYaס1#&bUfmv-w_&ȯSu)#3*ZN,)CPT#&CZ*Z(NrUJL XqҺ#k{w:h$n#jo#&cYMm} [o˅A"ȀآjBeV@2H"9Wϱ登KӞV~F!*̻rVlZQfFo޶6"_1wc]qA/倐;'C_~UQmTI4#+# #3+ne]A"߂G>{W36"ΛnSIEzwl#3h(-QfU>Cdf+FdoufDaH`/kY)iKٜJurدI!vW]*c^eܣ鳝P4KҺh+l2I!cg^ǿC8Ų9163vCr#+܍ ٦MKd5h%4+]d֏=Pg*:- L%g}Eqr<à Ϧ)͛.X! 1$r"|{4]43CjiD1E M.`ۦl`A[豣w(#o*jswXlI487}8>qINN>z6ܹ2$F((n/V,4CP*$il#38l䮕n*zaSlXb7r2Mt]V3v^Tc(Kׯx<76DYhC9v #+Z6"M6Fkskt֙3j1EUS¬bPHPcICam q#&1rTb4Jj&teg[t#&ǜ`a3aL#CnG%lR&'#+FtVTu \F#3gi*}ߟk~Ԝ{tuw+Oa~Ƿ{R0o]'W_D%LCގZ>]&wܴ vs5[WL?[ƥG=#rʄK))C*\_p!$}#+]:`#3„zXwnj$_m"b~Z9~k+6xCJ.i[gcg7V"gũ#()˾JRguV|)?0ϳn6侕O#؇-UU;a`>Pn߿=G<dz>NK_ɴfh|>:~#¾xAqgw!M#+шZe #+KIA<.; e&#+yBXܫ_#+$n.^~WOZ,dq0n9 #[E:{k'c/xeWx5#C;0ƪ2ѵQF1)˼oC5H2rLa*1:.vs-7wI/վpŘwv 1y<1}g~J=fg8yGtI,$HF;l:"jK'+͕,eI\f&ңkOnvlhua3A$ F^[\Y-nzMvK*L,7>71"wU@eOxb}NZ#+~|g_BwV!SDFDE>{sF6Fs9vK~s^koפma#3a8!v 2`kMK^L""Mc#&dȍBd'?cL<eZ8kLM-p2!)]Joa"#+疰UKBC8AJOaY6Z>]Mu1ds~ lvϕ?cNG/hGrX"7B#+I<6úΔ Zdl0P>(\:#+%Tmwx7z>e0N#3B`JQ.VcW;z^?7oN->Hc :;H(T'“JVBIwun3uWys |\~OGWf~:&^ }.3?=O=#31G/9[~Zl4#3"("qgC菩 nMAtE?5]ՕT~\:EQUA66~+f}⸭pzxQt-٩c?L5LUUGvUٲE^C#3]ۮJpe@ wZLnQlup & pp)ǍdwS44SNCWUashuloZʸ6Z55E e7x6Fʳ?Wᆉ ( ڂڟħ4)@X K:+͵CNp^n%-"I1"v OOޯJte-@KY%@Y}0?;N2ӣWpߩR1jah4?&e.α]˝3^Hn4~*ujoec$\F_9ģ_w>CwߟĎ^oQGu=~FcZfӣN㫾]|^NOԲn*V?զލ* /N>%Gk-hokq,:'ǿٿv>FtmUrhx W#3a;8wXy7`:/T[iK9d4=RG(k^߽QOa|%4=!Q;);OEW{38_DdTͬO~\z]dg߿t@qJ2yC|Pm)fyg~#+:RP4Kvsٯ欪a^!˙໗.]SYǚϓouN[aZe>ΠFz+ CgczÌ=#:R8Kn7QLXGsWGhFOu4KFQΝixEڵYfRrMygh[뮠{s>aAx_~;ujySN.?Mu-Ր{87?/ ~4jR-⿘e:p]>UUexg*?Ëgb`ު|WP: Cu4D=l(ZKL69+ɓps%ha?GGFŧ!<>o8%OEWO_ bA?sjn&=٠.Ȱa!hp>nMCH5x=q7ݽگ;#+jd#3dj1Ѹ~oGփO?&oU_W_#=U;{t7?T]QXaW^[>ʵ!sog ]+#3|9wk>qs?YxiF6~T˵C?^<4}Vu ohhyO{}m/N4}Tųn;5–ږowu+|Cp^}4z<R!a ~j۷̽Ы7hYi#32~wYSmhѦCIї;8%jN ,9GXXwODU\l*_^:_<O7\:paѰTmqz`[5Ym0Uj0rwcU#+Ӳ ]~޺dԽMȥvmH9Y+%mzZVTOnՏ-S1/]uEӧUy[9n;S7S o/̛Sq$-v(I~8Uelr뢎8JiQA'DKt3Ξ1}b;>_:އʛdg|̭f\/W9#3>u /C951?yͿZ8~bd7~@Ψq-Ĵ[؊ _঱oˋYl綌0D&fH|'^f<ӯeEsGo&ϲZX]_$ؓ&PaU/vEtj<ALqٶ{w/ ~:Ξ*zۻ]4lug^jvQBq9QM8yh}((2͜׬-ّGMVݢ4uMz;R[w/#uJBZ1xU | ң>Ϭ7#+k#+= t{>{0Mݲ-WdG{/$;Mo-ǟK׍zv~TaqSk:|$+tIX}#U#3$A<}|v>!t.rDv=N;q~ˍ<#a[r7+C>sŖL_>pKALІ30Cia#+#3+EJ`@Vlip5%(ih,BH٩!6^[k[,UPAi6d1*‹*L0tZWN,u E"0N+`8HB{`ZY6ux3Y܌ k4iLd?LU1m?/ZfY5!a<$#5#00!3|^rzq.bñp&$"ʅScrgzd"CLFFڒ$RiڙG`%N@CeHG=>M8?l9.A;j%ƚ-:bY:3)mzM9 =gb_ߙ=K×=:"~+ggB"kŻ?VrZˍv|-|>',#dl1꤉Rnؗu$g<}j>O7g5kv&k] cA \=y|Μ(B6~?M)<(F/ H<'fW qOkގ/WU]>u{*fWꨘRyJ>8x3soSU8V̳ǐh!a鑖BJLtJ JI#&hii`h,!4وn ̘#+1%S6I2WnlzQ7E /6F5kVWe@(:рLNP~B3$c#30"UL `S(Θb|]O\JaLnuGm7:a*00.dps7ӲEQgG#3F:3/ݣEl=&ܳ+-*ud1zUBP%rxm]~n;aʾVzjT3KYww4TQ](s"M{^稄jV8>#+7iK[ȗvj4{"/~Jbã)YcIG0l{KM#+#3p_Q;g#+5L,'1 ] \=wa2(BrTJG7&tALH?+M#+6#c$#Ԉ#+Db?c٤laYBYN 5n|=N^56$T#D5Xyd+z&ߓ4 bF6ɫihйMÜBe1A' x/Xaa8cĎI]BDZ#&=H&;L9%#3`#3 \F4>IH52 g2#+dF5qWHXPmʋXiRrAcxVDi58``Ë 0,ʐ#+wcy%,B74CuT,D3#+,Be:U8!A]͓<#342p9bC0Q0rqP^L͋L.bQK\  R,Gbݲ'I<v5.N}cNaR!}1~wv8Q')5[#+B^Jt[h8Mi2Ma0qvwM(wVdȸ-L;VLZMQbtkhԄ8 K:N37is:30 ,&X2B#32yM8BF[F榴#nF*U2iF-*V"qlpΒ:[,Zc4'_{{caP&3JM,gHm0Jdj-4ȪU MsXGe! aB0Pi1$0#;Ų_#3"߃l풙C1B4' s nd6ݛ4' 3N&$@eٴVlK/}7.dmW:06fN٬l3Fitcvx;&fgkbl;nK^B՚{^^'UYKƕW hHlϕ)up߹$kY?Dnob9x(7fֻW*" Aȅ (Lr9:j`[k{9tO#&Z7K1эA|f+!4S]`f -gxyP19yN%-f4Nerlz_SôY}0J'yPth $ڔ£ܶ[=& hLfRp?φ '\݋9@= ӡI,ص*ۦӶw?v'ѪѲ/ʼ3Pk^#3\5&)Y_Y/V-YXx#+YtĠvÚEXjVUj{ ޿̧Eboj->It P/^>1΅D(UY~u+92>EgSo@y*].鹼1#+}Z4eo,kN>S%+˷]uZv CVJ-!LS?8ᱠ7M@#+6ƢEteYiTs:gIjkHD_.Z9zazV9@nW9ΤbֆVD_)&]?12mFߓdjRדăŃ$syup"Ñj+J8~$UQRr05{*ޅ#+lF`܎&bud7adg!%Qhqn#+ٓ4󄾗r țbm!(#3F1.lzu@.sR-{#&De"m4x,#3=(!#3>1#+&Q ?W)^\m!((L##+6}(uI}V%$ܯdn=D,-ÂCtx2m8cFݤn5CG~{'on?;>xtD*ls+QDOL!4b7}['p3[~%ڡóZarQKdD:ֳ:jbV{ 7M[h&Y Î΋M'#& nl{ѯVD`a١k/m2C9&^Meaϥ56L:8tXm*y} dBLFXϣml_UiWե+9ZWZ(r#+&iJCo]u|gӪ!s@y='<ʒ-"-/`$pޝMl)>ƞ<;[@'}jաVhi\QE| 04F 1H(#(mBL9g.e1J0aV|U&e]*tV윜C-廬"E%BltKk4~2nLAk /r+Gۚs#+M JQKAgfyt|c;7 wHvbcLI=>]ta]Vw*-*+Rwdv[{'l,%Oӫ%?k9cǨdNCq7سh\tyE²rW5g LjQ/sY쾯_ u#G/y:-vqVa4%O" t^G=#3~:ZB-k4 Tz3x-F>T2Y}5uް4#+aR&kELcN1\Κ/;m`XO<b;xh !](C׈#+#XG]7[*E}MpSRTsgh&//H>ScQ^%F6H#+ZvUwEќ6S MֳWV%@_'~{I+cj}t/9ӉuH60cܔTj۟U#3rCyS|(1wT}2()5Ty Auo.Dj4h Nʢ-TPެfьκա];q׎Ur #+#+M]sOIqs򰼞zuae]`)ћh/U$}BF9᷆|x밼e&ӚP]#ѵC3Zj(ߖVWT\mUy9+㡻L]&PoP2q&L?ea~6,z?8LKWn/]BǂÛ|?Ye)SS"1TB#S](jsܹF}߃0oXa \qzWWvTEĸNVj E7(l#3#3Zo7*7Da{CotJEM?Ys<ۺE\+Tܬ<|bDdmݚ3`K&8mml%7 ]pprWWo#+ζ[IhcJ=_*= PWHjד* ~:1JitbI? ngZrNWb}}#+;>nhb7A&tۢs,;,e83Q$ӱ?fo¸#*~.j\VѮ٧MtQ{U ,$^W0*a~qgW>F;>cܲFz9TG\/ǻkx#?e}On~Յ#W 34QЎw|z ZԨ{t>{̲]ߴƾ7bF }1~YSoPL&ey{uK>⽗c ،#5\K:C츈zhNݶq;,CY4!י;,-i2RԚqbk^YMތ9~y;lZtH;HMNfE}Y6hrœ|nnu퀟v/A^)_g3*d}?мɿ%urO.vpe|kgy'XI_+xzn;g`dUsCVL[}#3,cmmwwi!CO"H3lϐ/>w:yD1c73.},azM*"XCIX19,㞩tM'#3%H~$>hϤkc#zu/YF}SFy؊EYE~WO`?9L{,FymE#39RqS.ܧL$(u1ܿ%&7qqIƻfT;mȌdc}|~Q3^JȺLcd}q8G{TK h#+_߿GGd7eB^Ͽu]mj~̲[J7vlm)V5}bzGۏWMvwU!EURRH2XVM0K֥!цt>b(>WǯjzP&>58#+uoeOb+([+RiSXDjO#3+] m?fn3 y]xILыn{w1ʦRjst!^]'#+$=ѡ0R"SR][A۹]hGQW?UҵMf]XXX@tyjWErLz(N6n_%tƹ+GƖ#3zn$?C£M+~įGq}IUGTK脣o\N!IQבEHSR1Fp8^G҉IOT*̇Wog\a;/m9 YbIAʇkM:%DƋ0yk8oI޸)'|B='+y׮v|Zlƒi/1_HTc~m {׵L5D ݮG_$m$&Ğr-mu__g1nar}޵$zDtuٌ?g/7ڞOOoNp38ֻ}#+.̒`XZHGxaI]JE0NЎ͸0^5Km/(^x3e DUh!:Tx/٫GC뿠4c4i8A3W haMPI"劈vl蠟FN>#p<#3h]O;%G}ܯ1sU%CdR#30_^/=;^u[q:9d8q]02RtS\󧆓+2۝xXurmnì8m`ۻAqtOak,~U *θFLg\x= Zn8Y#3{j4#6W^z.-Hv^'AO~#3}[:Ed7[bmTyr]U> zuѲ1;Id!KY:(o-属qmA_O_8go*"l~$,GI4>wJhA-S_L+&DKC#+,aQ+Ҳ5VDQ1xDP? vzB^!؈ݝ,xf]2y Dz㴇}͑4,Neq%ˮzIWC֧-U6l5`Ep}ȼ]l:"xI^}*1ĈU\(Ccs_2ƜMŹWSCx^<"[ '7<m&S3G?Tatwh2rǍ*Fx4w) )hKKHiWx{m-Fqh>j΄< vp@#+tBz:h^״g'yi.J6Ncx|gcgs[1i<2aiF/4)61-q\ylދ~[U5F-Au/Vyk߹J#EB1Ncܶ32 [M<+xAՀ勾ch1w]nUe}ibo6(_#3iǿLBVP+nmTH.7%|h57o?/|FW[#+*"%;o/7\]R?tSvw[Vfeҥ@YǦ1Ӧ^eʂ4Se~Gz;Y"\m#&;tZ[n?NFrwcJ w<) ˴LSﺯ85=چk}YgWZJCX{M_PR$%#+pIJ0D:G'DGMOVpg4%1?n~#&zel.KN9AIirrF t()f#+XTU<,#38oAE!{rs l9tFR45mH7nQǴA #3E4[2`Vm&t%xX6Cc|z;vVjj6">g#&7I"])P=#+yj +ك#+<Ĵ&*3ZUarD1{~O/2Ťo[jH#f?]ŅbBޟfmp?cIY1Pmp` -uPmf);Nh=B&L1ʔ';xu6g+=.fN0Af3\ #+-=:pj6ԜDkz#)Gzmt:?@b886j#+e qoCp:?czD3>%՛M/sRTvp7Vu髞6ҷ=o'G|z%DT'稤9Jp0*bŧeʪ n;!~rb96qN[ABxSD4r#"4 ,^Ϥц)ȇlD!byzȯه$S"x>uIsה#+sj5#+-#+ 9#i.iފ5Zx3 }|JG NowU~e!#3ƂEevQk]Lomya3Gװ]R)][3>DK^(/rZSLhE]'q`X&3^ Hv~ѻ=S!b)a3|mu 0Ab!X~ fBΟ#Ku#3-k #3퐄LZ̈́i_ǜc#3`d"Ձ0•&R)/he!90/=8_zAn$ `t҉)CMQ/zZsB-k|g^:&S(NRb&4}bNs9>}SߢE[*^^#+^!"K8<zlV3jT˥iÌl(Ӂ[OZ*d\ @ނfiR+-]=^yбe,E&_{ `c7ټ[Or1p%ܿ~m)(F:)lq*G Rd%NlXK5F4\j;#3u!sӿ\cl>I2lhEmن߅$ ^FEwm.5sD 4aGLw@["+W› B5D҉u7BZc#+WYwq۳f@$0pLFĥ"j}ӭT^!(2SƝU9ܴ[fّڳi>(#+qB1tqb~3!l힊3|⯖~Mvc o8#,x;Q:묑SeT3,#{, ,]p9'#36>wB_2bjr5 ''6" 4odq"}g-5#+C"@m͹ zWKXW鳱4e7$|=l9̃g:ßvve"(sV;єF+BQ%#p4l-7wX8fFȸ;OLd -0gF8teAq m^85#3'JOuLNzaKdBSm^G:߰T#)̐#~N뎛vxfxym<3ʒ|M!M=l `p5~ztM{etȐZƙCcNi(X9XJ,-luˎ#3,C!AɓWl#+8S^),3eEw5xd5rlE=ϷɈo"\9M+_gVd_<9AwUvp\e8YNpt0%M#+qv#d)~ S~)a#3 z)$h ݝYׅ;r)Mdpxi}]-c68VJ59j́r>aPDiڴXUH̻fr(TLjupm3q,ʚ[E#+'#K-%>7+1x&Ӎyhe(#~ު2{Mtv4U'$= P$OgЉKۣ?]xZUBU'|#PytOyw}x-n0*Lm3;u^^y^S$?wӣj>ajGc;b"sH81"bsЬwM8&|h"EU4IZ5e&#3?}>Y1>A7>a=竀3|6E #+~__|I%a|z6e9bcV\qI0WATy޶[0}c(:2q$QeIޕ+˾+j|ȃkڐZ#3/v|U;j*"dBdONAțƁJCynZj&"D?6lDi1%{k 6mKxMe$$'0~l?O1é$x]YIGaUNjH!_h>ѡ-cbh `ÌaAlRLFpS{OQD(?t˥p<|x} 9ATRAsvhWkQΗvKDǕ.",!:7RsWZk?_o#3GJйbN&10P;lu#38!sV;YB&tAt'ff#+@ޞMw Q)?~W)#+ G&;5Z_XT1o'a7m?l@=ác&Zw1.u!hD]84jX#d "#&L`D@Zi)$(NZv#+[37uGv$C]V|#&nAl-8!QB,M!h)%p$,BTy*WqW/+mmjP#$=oG~U^c.1*447w#&8đ>ncHک٦\uuw}vCjK ds[s&ѬQGЊڇ&;m[mp_UdR-J&pem4$b/($#avrsHG@9{pCF#3W*87#+8JS65h+rޚ5h)#&5#3}m\#&ߺ TưBɵOD1\F,C:d}#+3o6 *NN#&X$(j Qe:|skcdg¡7ɪZ!BR@4$HGE堝G1ހacצRC ֨T{um1ƄT#3Y$DOi J`u7Z3Mð4.腢twLU7n፵,#*:@RfyWRQeL*pEc'$X0w^%եrLO];&ؔV]7 ^v#3pj`T7̡lIJ(Mc؍y\Dg |c8{x-D}UNDS #Cg;oF}'n< ĺcM, -l|&0!U` ;L(,CI|%9d0y 7g#&O70Q- ag~"NMu>OeC(9D?u\ Jk(f$nb^Q=(<;sk6NN{\딿pO#+,FZQ׏Qo&|葯;qޯ94E~73;;qȸP" '63Tt]eRvD^oCAi;kr'wnq#3d.PV(ZZHDŽE,i*uZhZ7և:ا3A0x@(#3-yd;(vHj|m')}K@"%%LR= g=]scaϦUV2_$Vߟ=fN9wScǙl.+T6jO/<LA48|K#3Q(%w+ث5}]pݦↅTYdgϣw:Tq.ۜI YC ϭF>iㆿۯ-a%#+!#+4jxFbArz֕A4ɵEQ,kbc_IDc p˅}_/Y2mՀxD]Ţv[D GQ#+k9&OT$ѥSHNIbu*{_0|,tiy1鱥A_دy}rxbOЄSQepLP`@N۷#&=E#+p;3:xnj5^k8vWZBo2wD4~[aw6tvJis,tJ:d2d9zC 5rF373R"M#3ЊG̉Jf0N)jKlMT rQ n#&ػl~Vj󘓋eN"Ћ Ϲ^&>@:jW#§E{%ȋ긁j 7xewrA[ h0{,pRQ<斱1s>QP-"M#+J&bN]k] ,m#&@`XŜ8comŻ۶13}m͑CFy#3Шx5$3i̿/?^z '#dN0=t?ߋ#&x=x}9c;qe8 /#&y?e)ffy<|SGFȿ@٠#+v?hirVn%#+pB%B HUWS4,d^x`L$ e5ڈ'm,BJ61ԼPABpt) "^gGk}`tۯOH[@>S$}:]E==]7a˖ HH ѷ})hQ٭` ݵmP߻5>vN)M?)TQE((*:yƥCl\鲛+ ==533!#&3u""k^_Zj*w ax#3lM""a֦b1j3L!1__ΤVR5:BS5`iޓӏ2cLTPLytJw9a#3Ho\],;6+3s78f@=D#S#+BݏIe%GgR";+j G;}їx\t"5Rƻ#3K0uSjtoԻp@CVsw7G^xguP*~=}w 9vS̯;(uo[f+#+RffV(Q^;65U(nLEs&0z)'/AfFۓ$A몿;}R(A䉜7@$ U'vgv &m])_Grņ2f U_^h4@$&o;bmLoL4whLK1jߺX,P18s~:WW|Z-QZJh@Sowayw[*\ͧK@ͧCtc0s'3YE66<ЩN#30gyU_X6Zu댑fiJ./8v<q]O\Rcf<#&xwt7eˤtLxp ~o`Kh&DDO߇TXkf!Ogb;<<#t8vj6r9zG:nq٬EUH훟}/Xz|9J5Wd?ER0C?no'(~ƉV-.YALbH=~W~7_h;XE*E"Š7^WeK3bcuuo\mLgF! scGcש}}R>}r)St70֭:6J.ew6xfa b\*;J;9^dAEyq)wHhMfH54r33ϻHgs>Rh>$p2ɳ{uvX_McP飌s1xKV++ޏ6_}F`og#+nuoDVO:CYt #+>AM4|)}X`;3u$MsaG;`қO73heմێJ6[ˇ5 5iPVҼE6:iUxcs羝#3<#&{>^xtҘ&~߷Ɣ#3o(n{!/7ӅUxh_g֭M" M0)w1 .l4PvдƨQ!e)-ٵ0[9]LoNpjw3Waɹ1:UX&}SK$^8Ϊ,W>]nmr(FS)j虂HJ1U$*?7o_rU:T2:_{#3dEĴa.GhVXF^_#32qt!Ǚ[g\gF|c5Ï0}_XAZ:P7۸}1q^U(AVd+ ]e~E#+&J<0^iR9dvmҷ'Kw1ޙx4A䍗rs ^_T8޻̉z`}F|#րu"wzN,wc˗:on:mx IFW{ct}]YQ>T*ʙ ؎+zKhwhRN],yXUcyY,\QM^aA>WINQg^ljuFuX!VOG}qտ$k2Sc:#PK1g½3 gwo\HYo}8L3^u3tr~kuH>_40)60ډ^4=$>PyTdS!YB\kL|l}uzÄd[g_h*u#m"ߥ)v#+jNb~Ifr yĿg9ljv~sq},:}Ș쵂Q#+ؿYsŕGh3GA$0^͇5=`.(y4l!ghJ>^HĒ;؅G)S_CɃ#関|C<4+ǓKr-S[z#qͭ,4c3[=CvB?>[&h~ED\s|??9#&){W/9"?JbZܶg';N WLK$?1‘1l#3~Sh&.W0%%%5+ϙZ:+x0S|C 63[;g8A\PkXcQ aMca>; kmdNxP#b>=؆G9{b@Q\dwNiY ?f >PK}]Së4M;fӌZtfXS&FPi唅0 W1/UUP֝jx;0&O"29UE}ώ~.e4yd&VernhNe+BK>Z2~SyMujxݩX.a0){a{w}DJ~`CsDsXs6}=?NT])#&.rs%!!!ߺ-9IA}3vLE(XP_O7f u{ xũ[aUT˕D9ʳK59^S?0~ p mXٚ*jbj|&nvVO15Yj].(q*DÖ#M,q9}ӧA2%#&/( :c]ofb ~dgLG [:[N1y//T/|`S2.~~4#+A@sѠ͡ҋ%\Η_{suuWEH-d5 ̼v|l#!:عbbhI}{91$'R#+5?dkLTF?3;:M~DLMɜ^j'G$mq,OAY\*JFQJI#))"֣FyJ -ZI@ʄH7Nl\k4Hy3D>T9:0rd9V.LUqL̍((ђ=ĸ/9϶>pŨ6; {";2B.&Mt:cqFЬ#3I4Qtע1y_|VN^[FD^+}x{v>zg,C,O#k %I01Ů#3K贪6y(klDC b H9J(Z\dLEe1#+m.VgbO槀{Bc_:\|>4ٷzӵ֣N|?ڊHPȯYUgG3m 6#nJI=m#3H3Fk>v6֏gEG3^JL`feG#+k5.N6,rGDl;7vڛ&:3#+/cZEi:s7:.CefT#+H#)os_ mm2fc2E?S[V{{!m#+ӣp@&6e׬{9a)Fy=RM3ﰲ( aE:Ezq^gi l'Nj־2M7pٌAc˜Yv5*>rO^RVZsz!+=mк/IJu~hb<#325"OU{x磵xuW7EPM/9B_WZ=Q!g>Uu t,wU"&[IU./!#Pϴ_#3?zjF#twPx*GsE/jQ2*)N4Uo#+(߫wIu*3TkgӳފFVNoINpF>5t(WyEr%ieQ]܁m?,ҡUU=Nq8jYѳܐ%}]VnzFw#+]@=m MU3c"ȟ˨bYu_Ur}+9Wquч( JE ?N|wJ5Ȕyޓ:WF,Qqg䂌N]R> t~U&#o6z[KӹZiݓgB(빣ԍLV!Q'WT9Nz [sΣyV]Z3nt7#}-9dRU& MzE֦]*=0vlWWd>Bᖖ G0j"RtfsbDj3&7Nl7`d-$* z23+YCi"/{"`yfM/K[hO&[i/_JeC>IG|Tj' $A[WDj(;7\+#3cP#HwHa[/]9jW2)+"O;h`4TDCf"#+RgP wBM7bQdxJaӪ:]MB#3j%n|Ƙx\6@*ホǠ!"'Ʃ%v#+U: ᲋2(ftS) ЛvTΊ/_}u`saDÔd_E[_>WLV76DjRCMm~̷[Deir#+&+T=ZXe#3qtA5\OӝocӄqφdVE!W#+T?eZ :{-L:ohPb]hjk`6m͎uFw^-g ?.=pDoxg1,O¡V4Twy7Zk˵*4N#&BK he2csM#3'-W^Xbbλxhb66{uFlNbaۖ4/(0H'FE>6៏!rzB #=J]:&Vc[!bv#+MYIЗsc(cnNTp,;>g9MBdIvFb3M*#+[vlc:C_X㳳\|^;$d8pȠvF:!즓|4S9(pW<9_>t慚K%ߞ=ox&gOi3=Y|is筊t;^}i67tAVRuӆ67Wߧm=>& e |(~tC7Դs&069<;9j,::C~~$35 Nfnc,,GGe;i|Y=TQϫyQ=C!foJ*IdIK^Œ5b1KR5щ 9'#3+L_'Ye #+UCRpg~ǿÁL`ؖm8a^%bPX43c[a͜~[3b|CVL?W#y.r["ݖâ2H1ne]Lj F-F ajv} }PBzflKuT3MËЯ:KN=P;uN77wmi 4g%<ү&zs(>=ڹ'{{o^:!5|[#3OO<1Z*a(.^Y>ߟnX>~%Zj\ig qhӪU>X ʽJ~9uѵq9%>.o,cp#&%9ut>(ӊW,_ng?7/;^hoj=jjk _~N$Y[[i ~bqjo콿g)T*@()e0#3h/X[#&c9V" ʔUU#.%D;j 7#R˜#+#b3@-u{\bEOpaX♏}ڃ 80wI3>I[{0oO&#+w"J5Uؐd=brx&34#&/SrhJc܎;|zϪް~'@Q jݔj |֦ʁe91{; L ,ِH7$d:FD<=8LDH|f/bdY#4g&JH #+ҟtsj7TiyI]#ݏ3\ #+]`Yj4:C5A"c2zzBH;{ˉ#3 vx.pcCZa#3Do\ȺE)z2t˘*~VP33vt{UPJ.\9fpM؉QxH tv9N#3C?r- <"JuNE:M6Bpls"9&QyTBY|e&0D%2H& JޒNPΒ$2 YeC#3]}&qA#&Z`MUMRCeo~4v-D1 3Qgg"u1 B[ WuGSb&0,#+_rtAXX"@#+.Qc-ODPA+ enfMÅv)E6`>Dwoڣ^Ҿ~M&KЄ8D: ^(} TD#|?߫#3q$=#3Lv.H/tj呰N3t#3k0P[ݫ`V@1J5.fݠ8m"]+Ӡb3H"#(rlAyz@!ټ >_Y89wyHLNJS}Ֆv XgVKqz0 o[Bo)/"]Y3o`R?@%HE`^?3ko?$?44m-gB#3?JvCҞǹ4Gx_DGP#+-y#b32}:-iө&ݢp| ABEBF1>'r3,gRB#3#2)Tc|#+#+`fGj=f* ;~q˯#3Lxi޲T(?`c&Jafc7_yx(П#+Ml!$u-(2TѲd``I D0TUgQt5"4[V$eYկႳR5cvz/=Th ?}Px fc;"~6IBN#&wxXsS$#3O԰tӠwxo0@#$O8ZrQ$Ԕ mv1#CLذD峩BHbu@L3Dc * x,ֺżw^bңF4Mϱ6sbgxLb!#3D$+;PD>G2>Q](ی$> >w_Chٛ 8ΓR >(q3~?:]R!#&9970B)٥T #+tη?)*YmOܺư@0ÌP120u_1ֵ!VpixOY'd}Tv)u6h&x>/:ZuU[5 b`wfx|S|Cf_n#+25uNjm߷kW&*mvK nr4 ** @&DCqoUT#3#&8#+ZdIlZؼ-̹p7!DQ#30U,frϗ!7D>sfL)}h aBE*q33`CX.i Xik'hRQGu'q`nX.@EϪl- %&5zD_HwLQ P9& ::&!kx#+O#ݟC@^36jM)aV .jS~nkTb#9%B!Τ~nU AJ:dk>׺7jݮFI#i2 ml^vⶮdP#DL,]מ:yWz?!қFο #34p̺$[(>dWHjR9vE2wR!mQ H ($2g]H"tѩ#3"QJ\[hxPMB'NWv}bG@1ZC!RwfEwoO?譑_(cVz3 #@h9a0=C=Yi;+OG Ṕq0m/'Y ">ҥ dzʱiJ҈)Uݸ`^vSzUuϹ/+r5[!B#+5.}^Nlhc#+lثKO (mW!e `B#3vYK4#A#+fm1G˅XF꣧$J L,!}OdCj U!<85Sf25JBߎ6t#&{3KTϗ=`tjs'hX;DhCŰbl㶘H Ebuo#32["SKfy0'%==ʙ7) uZLdB=`ָ9[C2(0bG1Spܑv&Oh@eM`<2]²(DG$dF"#+K(X2ʪ𬪯vNde#3;;#+ |рsUR @L#+#a|5(Xd7:TtMM}Xk>ѿN{#3w80#3@[v}K#&=MPHu3^ B<${R\`tㆈWHr#Ʉ%1#f8x|NiWS |8dYLٙ]yo>3rY6O#+dߡ>b#3Ѿ ]zVYm5 xT܃$Md&xHpm qTԊMڢl$0lY>wmQ&:b/NlvV 'i97_z"YO76/YIwk8 r#3A%bw-#+`v!MtH@ÆkA=Q 1HOe?ŞU$ޤho޺~on6Pʇ4A {Y6՟\MVW]l9tGBb`>&A Ij`#+w%qu{#3(#&?Q蚙kD;Ϗ=σ_TT=F0ikaѤ܌SvH92L!l+xQ-QGnóu@&) `h5CxSvm]@q9lbWrЯprCst#3~2B4ׄ:\ )` j)ILJtw=dqCjHp .rmK> mBgtNh*~˷xM3g갗_Ass ˥_"#+) 颶=}~и/ Jla779y9#&3d*3{ҊH5~P1cXiCYc:s>o6Đ34!5`OU}}|U!)?ee{+۞Ɛ4#3܈2I* X^YoeHFXUNtxϘ`P!>W^!p=BI!]>:CS::aBB>uz>)yte24&h2)ѠiϴuBSbh#K#sJ57(-07%^A앶m!njH*⨼i%ŊrE,fKa?+ʪ#&H}w4'WFߤކy^*S@W=P.[Ɔ`bfis3 2=-fh Ѷ^J+'aX:C E4`vps+>zM3bjE]$͘F]#Ddqٰl"G4){` 1,AY-B/?%l:bXLi٘HP#+I7|*w$ 9򷆶; ;l##x ;#v׃hA #&/#!CD HP>}v&әXs=oܔEa70%p"O (b#3,IBhj$2-`ɔPHeB`6 A*"Y4VS̀+JHiuD!F#&F2QP`#3H0+NjU͍W7!#3:-ՔH$rE$ W #FF b`hepUDsIؑh(ˉQFre$ Ř-AHvaxQG'#33496DW|_)?#3$H ԅYHnJXObc2Mz޷#hkGCUVhxui"!|^dOAV|rR}}.G9*v\Wf D2~,xC/b$?5{-sB0iDՑor:G?/PӔn5Yyp5"5WATj3`=\m)|@3%W"{J;k!9d@/M-X^|f$ƫ2nʖH(DpYK/5g#3?^gm5ԍ+[Вqr \iv #&؂mUν0mT(S8Wnxe#3L<DqZ辫7_r^ƓQt5:m~Yt+#&u@hz\h&C[E{L-MSJ'4|E9]P?_2F<ۉ#+8$ݪ;|Ty}{}S=a؆+`Swn^5&1QS4h0D#Nz՚O4#3hР1Gg);sU"հpUEiy֍c&+?N?3A ǵ\Ǧ_40CYO'$.Smө~{9(cMwZGWkdEvlt~4UhrV>])niN(ʢçhk?`y9l`X%Oe~{ImP;{DSFdb,v7변~ՐS=^ICNLcTaÆq܅!"n_w2&v"lsuW4o91OJ<YȯJl Xwֱrc1ZI!f+-&Jshta29`B#lY kX53НIB& lv;\dTcd;#+:;4,#+j\#J/[\ʨ-3*8q̴!SG.an;{Kr7#~|A]!!G"H`!lY9#+ #3<ꖪ:`:vg-${|17'#=?O~3rfҔ iwq#ede6ؑDIjB~]C5ޒ3W9=w[)V!:l߅g99d KÅ%eaR#&#+@ ZTr{ͅ I){ATms"ůxt/sh#ռm  OX( 1~-xV;<v7hr|mHu×[wy76t}tpaMŬjv(~#{Hvܮ+5TrD$d,e-,R $?P%ҁ S )clO[f#+S"#3HHAYH?u*IHur"wmٓȄ;A6yOԈf[ &ei|8gvl'ϙs9 a&śs֎SI7#3#3 CVڸ6GOCX!Aqh,e{BBt*QdI`r#+갋xi#3Qj0|QYrQ"4Cu5&Lccm#+f%0cl Bmk2)u+C axPf-ΰk;&naUk߫t4M2n'.B_Q@n s58 ~dAҼ<FԚ#+eu*`p1JȠk4:^2NEҶ'}"ă`Xi{^rr&V$#34ItUMRu#39J;=!Ut`K7|e1XeǙ2ffX2Xct1eK_wmΐR$*I&!`#3`R&7] hxY3D`B2ygh wX˅F44۰ r]vTKX3t<:/E"3Luŵ #&S9#+Ƈb fݢ)@9QXw[̦$weӹ" .rnñ'Dv#+ \@jRr([7g\Aq)MagTm*aLmrTqO(TIj**,gB#&p(ByX{w sj{M#&@̩9.t$oDF.RNz}9ڒ#&6Ӡ,#+16mkؘq>x7m@N6&"6P^R21ٴḼ"HTېsى4`-#+ucej?GB'lA8]TUԲ<Qs5 cl N !kHAC4]b!WjT 2X/Lً4Jƣ\:4)̎|e!,2#3=#&q4Bv Tw/e!#3Iܝ8H#1ic3Ʊ EAbD#+Ȅ&s` Mw%HTӰ=#zzo C]p7Hl=ث9:0DдPо,;PLuF0641"bY-M]ˁl,)T Q.KRA<:Y)E223.R:2g 1}W ;0n d@zc3JH45>'Mq)vs59 AqGUK/Ao'#+ChX \QzRJ`LRp&Ogq#|d#+|m$:KE HAś`Ob 3Pm]\Mc]n\6jcК|-i>i7#+tT. GWKh#3 =ɑ03dof$$`9kAicHrv֑ce3$(x}yetVRWʸ1`@Mnkgq?1dUȾc?e6,h&z`#3,@l^ð Z̏G03 (7h#+#+]OJ[ت%(߿ND;n}SWe鰅adqLֽX&̫y دUg.D)D(L{;=]ܝԤh<YM#&)ӥ BTlLU(16[)#3Hu#39')sM @*vYa#&P *唪s ZNĒze* *'2DS"HB֠#&Ca?`hX4]H:\"|.SuxB6D[*f"/a! OH%:RPȉT*wQO!D1@T{P$?BK+?G|7^&.]f-6+E"Ullc}r=prP@Ų#+{|0M3@0=e%̙!ƴA0**vz[D Dz"4:X_O6aE[XXGIc=5&dJanwGF*1"wV E=խ-O`7p抨"bAAE0lC"R XB#32<$c}XļWF pZZ ؝j*iB 4 XRiw"!؍0y\I&z뷏MnWwuz.LMtc\?uҹУrY\u.׽nBO>ku%e5|:̑$B,Y=B) kv#3#AEEG||' n~Kɾ]r@3qRgyl&; DcBQ }G,]CQ9%`Rtjum&\{ċQs1k|o(TŝU[ת=nfS"kts9#+ nUbL}̞ j429㙕YpE8H9fLYJXPo^#+:) d b fQ#+ɺ8J4~#a]''piJSVW#+,udX@kM{C3Yx'g#3yK]]@@{0wwsXO#3TGX?<Yآ5ųE}"t-R{Cc#3)(QRNލYG4TKj25WMɲ,#&VIB" H/G!aE;/N 9]V))p`΋qM;[O_ٰ̝%ݭͶ>4תU1Ջm5QR6Qm#3[%KlVJFE&f#&*q9d*NpmXJͪܵU (Aꐔr1g}|(е9+Nۏ F LY `Y#&'h*CAȒ,fC|4nAoJ*8\de6HlمXnhIVUA44iT1KYd#&{~"*m!H5a͔`lMB;rV 8L,=1'#&e#3U@n7o$꜈rrcj,ͷޮQi)ʹͮҙd#&{HBСpD>(pXE SDPTz[}{<=Qc|2qpUzuHD9O"`8cؚncBHN?U9Bn$H!{KÁ)26Tev$?'*5r^zZ:,f6:4#3TTMQd#&>'ā?M";B*o-rU<y#3z qzDu ):b@hY wӷt(KUPrtmNݶϻ:q#+5B]{y;4ns}6IZj`i#ֵW[o ;!bu6Bb?lq;CKHxܡmI]w2aY`nyrSDdKof,j 0O#ǕHCB\L)SfX RBF`ZP>cŽ4v>}.r\3D#3"b1LB?3g `H+M6WV+J8kyX&ju +$QI#&@H@yIQP>AGzo=}A-oǟEf}(b?5+8,]ƣV,FUSX#"U],XojsPr\'~vߣDAt#R1{%^YjYpUt¦'|@yM ʒ&3"E YIAKVwQAvF#e0Ӈ n!{Aі4OuI8hشc{hs&R|m枞MIҡ1"|¹' -{|n7k[kc@Oit;fqޛܫZ;t$z3#ckva54g/-~3a[ōX!fm1iz5H/GI6t!:(v+7*VUz߫KkwtASͱ&&ܙ>Ux۰U0Dzzr,xG <Hl?c[U # C3QFtԃ#&AїMڷ; PŜ=9vW3jgFYHsvݣƝ:fy+8#+0Q&]֠,o`kóu]\:b,mVs,_ApFhH3g U4،#\]f,5﮸0AU)AX_wiz` f0dD$a C #+|s}vVrMXfX܈E.FF4bfs}~ C9Vw/x;(huH}MSRdy@ƹIqЈ&Ur完Ciɐ?oPHzc u]N;C}(uYGs`k+f^URRljn]Nw[WTw~%w]k_񼑴rץםG{˘ M$^'7vp#+\;X+[q7оCR$MYj}?rNx]4={*-n]y[zN/%1fd*hТ;5UXJX)R1h;:~usR,>雷pQr #&IJ1ʇTAaL&nw52}-ÚHC`E CD0@аO$tSf-|ixn_T#0##&g;Q#3jzgN[=x lQP\۫n[-ݭT#3R [`DZ#&D%-qW#3$#3!t4$%[U35-to~ʽ5HaCtcs=krʏ'mf-kkm-l8zw+]n ")qB;p`ϖ(qEU ɩءE$R$={<瓰(Y;r.-#;ei-MeɀiLT͹A^\h%0y[ͼױfZߠ'w2_z IZHuh-9<1]#sTKM#+/-;=#3- HRWN78VfֶC~#+糓M}]1As:#+q`ÏE\OVcR^9n($AkbkdIZ4KlT -EKW u>\3 l,V  n<@TA~ loK dNo9vWf{42c+(,#&׬N$"' ƒ PdJ\c _qaz@ڙ%l=UM#GR*)+EMqKc `I[4oyK۷RBn;nkhZG݄mȗP:qd҆T|+.L,A۩IDݶ* l+0\|#3Mza9$~W\RJ {}fp U`7#+|r2;IC/df;/3hs߰H|}X#G nṣ_ǜMղ r'f dUu?%#+- !=$Hu*J|;8G3-}-2Kߋ:$ٴz4G|h ızoY)mרsÜ~qQFXD#{(Me ]-HQ6OdwR\PT 4&#&9$$!U&ppMR:8;9_KHLPPP^~ݓQtN#+"P#+1. !nTz8/t1lhxa6*q m-!JC5͚D0D ˎɳ:m}# mYϷ:%l EP؍PF(8UR$A ? |O$A #3h%nɣ5l8-:v#+&ǍE~)\ÌS.6 3C(ȵ$5V~~p\bWtkly)YׯbԳP*JFFj>rꞝvK55AAHc5c@랓㛄u(3D Bsu%Y.qE`@ԃkKբܞW_ռ5ۋ@g7+=y7H%1*bTzѶ;*#+7kQY޸s{eloĔqT7pS#v0+xշVtDNT՗e 3dFbuNĔPVEuX`?)@M5BRP8b6HbHm!\# )PLdVj"nDP4DVJDQlBҊC % !v`CHMV>iQFN4wF#0m9TΥ%v6#3|QA7׉%C7@vz9rixwa!a(p]4w\C^q!̹^Kʺ6e@/Y-_"Z#ۡ\M]9ER׶(n8_y&u\۲|pT 1E3wtV ,DۗV8S] lA mFy=怫p_[lA"i劰{Ի qnfsJݰPl 0d.I4kcLC 8#&Mpo,wP2Ԃl8^t:+#c#3(qC;pNQ"Qbopv4ZΌ*KDI j#&&&:$sqc#3DDe27ldGb@Is̛5H\"0>&F0r O i`Cm_ciၫ3G꜈#+0łMB{:ue#+Ż1Ɛ4Ŝ~ǚ1yMMܮia/YBI{e LTERt,,O]jE-oݞvܤ,JUEƷ-[>jjѨqBB}35mw'`2$~G-a8VIecz#&͜l#&+.;xP>PUb LMRm2bL~WJBHd6T!%#$,IY5v鉒4M)KYfFH̊4IJhW˺,Tj)&A&K)LQYmd%,Y)He##3,F"#+gz;O`?qk/ @si<[Li{#+24!&5"5-gXV?Wl;X%mnDoIaFx#&9#&'t~ipNQ|L,#_^;V7(5Ku#ݥFg}QTCm2PcL2:J#zKE^޶,RY&Me5i#9tuBΊ#+kUb#+@:e3dןFU(Ǡ\gpbC&P/k˲>u8ϭ8LxӘnZ]of$ 2&|'g w]1J#+x;D$n@3~͆#3#3|`=5ΚNH""#3V<#3+fr2chN3V*Yt{oWv/|QIr=yց8f({`|lsݎߤfX&`1lzḼ5kfa6XpInzk]M,!;2C{/ k.IĀĨ= ӴG )(H,TZ}|0T6FЃP#3ɤ79F>Ǒ ;~W4Ay *lw2{LI$y!ZWܟ\ VOtԊd D뗉0O_NKk)>t]F%cޣso##&ᚏɘ7f$&8Zr+zl,a4raN$sGu.yFI cs#3KDB92m,w)v^#3 㤧4x#ʪ;t߱HSE#3݂@#31.dAP2Ųp6* 6`El'D6%l0滐5j9!R[kսtAZ98cr@m-lP {߿94"1WMw#3 hAl)X`uO46tڱt3#&aPR<$XE Ė5))b 5g^!uk]٭HT`}UGݐf0I#&E(ҐвE+tXQf eb@Y#& `!!*Aݖ_>]ƣL!}kwF#'ivp?K(vZc/}p9-k8c6jR&Ր'qEg0K!\*]ݎ$ [FF#3p$oX>hR(;r3ǃwIQpt9|=wPWŷ+Ԯk6vŗFg$IpԾF1d$[U'|9fn1.8 ^z0 / Z%#&;PzLb -(#&~+ bĶb4%E +#&r#lH69jT/& ӂ($(ccFO#&iXhAswb4_c}ӠJy Rֶ)MCEQL78cMjX,Bfމz͖5Jmjl1As1!X,uNuZjߑUlrɻN#JʮK4f:JIaj:¬Sj|je"3"ލdLXj2r^s6e)D;HĔi)ru-)Ԕ=/lSNwݚ17a+4"+3g-3jF>wi9s!l\8Q36al.T(HYL(.m)3i,cG3>fl83WQڎj~!eAV#&}Zb^HcZƴJQ-'A$xmi#+Xb*YlK#+cHrS(&`XbIO®VTŕSME-jX(JsT&2֦%ʱ*Y1fַj* Iͭ4+Vk*6RMCV<#+4efl٭TE贩:yFT7oy&+5%քq-FU򽾏;}>ut#+eOf6Q}SϸS!cM٩K$w~M*J>-) {KW)&h2E4HHMkӦm64E #&#+veI%2RY6A#3b!fT!D-nVFƤشZ"6$B mDҝ}y#&\ĀA* ȢAbcd%զ!FliTi5SJhIllȢmbm0PRȖ0!LfS$Ԗ6D,2TeQf RS6Y(D#+cfZ2TƓ i"M*l%FPlH$e)3fMk-U+A1IMY[mK2bƔRRʶ+jZҳjM-ռ)ͫu+[&˚٫QUjZl2کD4PC6Q _O2[\g'V6mԯk %P#&KB$ߵeLYʰQ,+*Tt<#&uqiB^OUNј1/E"P0kB@~][:m9tvmr9h#.|ÿAOph0vY fF3uDDXUPM #&v#&.@/X?k6+hnc˛\;PZI܁t*d`a|C,)tĠ(o)3A._$ qOhCӞ7:xwq9\fZHXbk"d>sg_JԬ(xm]ek(ay Z5ML=M*(Am|F)ӶT~- N,u1lj܆kKYRyK%#+`!grCk@>P D,WA#+)yjyC[yz&ä?~iG^ⲕ*Ƶj0x4."k]pUݠk_/%(s>[ު{h#gbw69#T_F X MգK&c@S2w4`ʋE߻Lz,ɕƵQ'cK+.N)`d| FEET]?8#3, !2(Z#& es*fjYau;>zd|tvhz*C!Ȯw<#Le^{g3YJ%'WETR 4'%kҲk47+"eXtE7Cơp<{۶Yeb44,SPu԰!#3EQ UKS %ELQA o̙ny4(92Mv6DzzdP]lV:ND BoOCrE#3&#Dg8z6T׎ZF'*Φ##&0a痭Dw^ ؗ\tŌUvad3JBm(+jGD PzJ&OgY\ièݍ7kZGY Y9+CeG#&FtQJJ+-OR] U伡ܙO֕#+]$qQcRGĐB'0mbPn(lIC.ֵSm\ f+y9qa) FImXFfl" ^v_QmTiV#+ Tr+#+"2Wi 1G녮)]6#w<ݓlfLUB44vJ7*QL!ՋGt[Ъj?1#&Ub9e%dE*B#3C:{ۡ/ ϯ_ulܺ{`ĦrfJxansŪbae0Q+kZ9Hz1a7%ژ~ގANtSa:'W>^ª;ο<ĞOh;x4BA'0e2E#3=c&H#3)1TPd`pHRTd٤0۠[h[EHm^8+޵uV"(HYXŕ(hjlcQ#+2Ƣ*"#Et25Ƶ."@SV{VyK߻3*#&ǼCKwu;GRMQ\Yh D1I.ET17k&\ڐYfSɠ0|#&XB1`mmW56#3[Mr-L󮔴m[EDJ5WSZ]*55k*$""`F9XkPx$~̡fek3L,c(aoSmt !z!QJ _-u1B(m)ʜHxA5OhUab!,=3sZ)6$ ReM#+RxZ⪐c# ɣ;-MB;"'!ngMM+HT!H$)(i7 9Y}^0שD?o[; +ʦb8#+3j>iYN2?pCt3#3jlA=CXPOh{-;ZA@aP"`R RQU|5^f^S5Vbu"k#&:'X]z?Q{PLm LADq!䴅ƃ{X 88BS "oOShFEbCyCA`#3 CWε}~ux,o B'=&#(@" 4i禐r)Ԙzyau~\Xu7 HyTq78FBh dpw䖼sr6#Rbͪ*6׽kivMdKHHDi(#+{oA3dm3~P(Vܳ}Rt9^ڻKSΤ'gX?r{ASf\u2frH+kgɭEI#+R2% S#MڥRZ5(3_7Q!Bj5,jfmS%Xmd&iT,EFjXi)fQ"TSL"~rþ;jh>( L$Z+v[ZMn£#& ;='W 8"CX-2m&.ޭWܓ_ X/.S71PJB `xQO\O5ܣv+r`#&wCn& -Djbiz䥟B\)UR#&yD* P)A#&mlʕ  [ǡ{1Vv (2P{C.I 6+Hhg LoKm]ʂXt"KQF &-o{!fhgejъp"((!֩bʦyf&~n޿uƉSELoYi ]M 2H*DBjD.K@|r{hÍ[AboTQE#A"9?qJ&`#3e 7*]N;RsG\SM@;;2>NSsQF4j6j Qٹx BòvZBÃF>랸-pi^Wf2":0B+L!Ae!eiOS`_#tr)3H>&7#&?5>=|jIAEEq3-_*#+ҲȲ Δ eMY0.{P(|GTBMT:F;ZZmҦjt]llm'$Pע+4}Z(pq,55IqsgG8p/CF~ Qb`12ٱT8Tœ73zbH$h~s'r?§rSow6J_WNInhƄ+@Ą4Œь*A"3GdFE>̇^^8عsߥۊ!yB<󳋐2Ƈxh5Mf?_7F`^.K PUXPb㉹rz#+"ԋ;VYgC޵kpJiLw{yׅ1!{#+s&X(0o77#&&pP9@ޅ` r:NLi4[/^x1L,TmӐM%1Ryx\Di#&ɶ.݅ƺaE[׃؍n9܆;1@3#H;|BiY\%$s1Oox`(9lm}w|{DF{ @MbMW3RiFca2sX,VcSWn;>2}^40җ?m)ݔ9t#+[#+!M(T44L K@^g'f>z0>r#rvm|꫗mk/4IDPDL0qRP!#+'~wߢoj}1N~wh"bⶋDnv";`Uo(H 8ZIG_2'Q,r,.ZL{kI~K?#3qSOw>LMc{˽gr`~cc֍]1jHAGB-Lul$#32QILjQx8u #&5ӻX#3 ֎>C}9BrH$;ai#3)gXLZhj(1i(b$eYf3jdm[3mncF锼\J|%hX,\9C=m#+?epf#b,GEEJaA9~#$]+Is"H,~vv̍h_>nۖ%Im-0ٺ#+ ֢I1VeSgF$RYJ cO~K1#&nݸ#vQ6ured|8|kݨ(#&TO[7!oe-ŬZh<~}\(y"@1{06om{k `br0~k#&cś $!l54GKRls! Oꚵa #+h03a^اϺ!Jn=bKu6)#?iXvkR{#&܂8 ʚn<&q_f?2kz*}Џ5H=m(RAXL68 ;nh ?'jRLUAB43NA3#3,dZslnrEq߈S!呀v؆Wx*!hyr8 1DakٿOJviSq]m4Т|,.$ !`?fT=raz͓2"!NBh*d0OckzqI qhb t3n-B͉apisY9 8XЩ L5RJ=rzq8nɡt'A9H W5H~*$! :]P g|2P"S!TV-m5j5XLY-sV[_"e.#+ztI`?~`L%ʫX]Qf^ze#+T{ {ņu5U$DHt#={.7ĕ*ȶsB8N9#&¦"0Z$2A=GH&G`wba3ud0A4T<IP/0䍟82M5>"B*L:bN1mqd9F1ه=c1=<6}Ieֹi4ov "WmUv`&lrOaX2xP6īW)!#p3S 1 "@mtD~Cb@6E   yq)VDQ#3@i#3;gt#&JVJDpE.YR5#&l>~]R0񾝄U?P#3w\]|}ڃ)2j,{=m+5Tղ~L\EURck7}zF\CCTzYrԲn$C(-6ek¯wUvX7Kk,+6MU`BOS#+)Υ,IlpiZR%_24}1&C-(F`7@ZeB RI̙ReEۺ S#2\00=`ccbi ZTQPqF 4dr#+[F2ѭ #+"P #&KC!j K!񢢐C+zf?z3~S?U<}h8Wb}N18>4fM{+okUHl†#$"=6SV2]ePz24167ѯ-tu#3 )Ӓ@uqrz}'|hkvB,Y.L'vl`aEs2t;l۬:d=e=w=m~ͶMF 7縺(4P-WTGO#+ԉ-M1޹f?Cxgk0_N${JMӞH`pc9:QB71A#3B0Gc7s3xƛoӫо?:@#jn1G&e>_`zl}`[ZIT4_5gTkVc#3#ai.t`XUѴ/;Z(G&'c'yM&[rMnlkE^]շJ9׊]\4cR53 *k6wm%Rٵ\iMm)h@$UmR7#328dEa"5loZdQکMs>!s4]Uu-ҕ4#&X)=L$R7#3iVo6_5ֻ,5<.r^^L-^Vuȁyk SD2F׍. *S,Ѷ51Y FcTVDdS4lѭ3Xf2J_e$ #3^FI$RMTX##&*'w޼zA~r!6)5Iy0oʩ֒j?yF[*īdO;vH.cS]Ew[id^7kJk%DjO9#&|4*I䔀s`Č(.ۮH#&ځ ?vth= AF(f]dhaxj}nWν{rˮG)*1 Hd$%5aqѶf,FZ#3.(2U2)#3fVH=$h{q\[wOV2ͻGۂ2[#+Llxwbl"(nlU1`v"#۽U,:R!@6?#3KQC( 2:G]lg>n%:g[fie jwAk0~vheJ[z~}ƅqPDʀNw+W[ؑ]xrG1·$Ϭ>-#k$sy4zW^9#&ԡ_-Xa-jo@gD! blŲoucZ\֫#&U3f' q bH>+렽[TG̰TqA o#&qiKV#349ó{])DolCCH@aQ5l@ ժiIQm^wn{.Fyc-J `].{UiH#@i6ҏ,fREdF#+a"JŠ(* X/h0B#r` :5#& ҈,(a&o o#&8QY "-p5~Go[KUq!2dʶ9cG$$\EQF[t Wv9:B؇c#ooU )TL= {&e0 vІu*AlQFt癟#;`#J&}>:Z\]F0=YY@ӿIvV'mgfm;/֐X>gDpoOy#&k#&tъQ(AhR!#&S`Q}TJrf6ApU%JkX3iV3.Bt?U#0JB ipy#3Z^s LԒ˩jU5bѠɰPlt%cu.w\6+6sR^^]ke[m[˻[ETWi2V^7qun쮻n[;*;MFG5Q[s[/֯lA_D6`6&`cO; }nD,gGsCOQc#& w1#3|y#&_>A T"0XrWmS^Q{ͦ߿#I&Kh!~*(?Oǂ~;x;}mW2I HF1b"8L((#3R (`r#&jZ&ѾfkJJ]sۼ*TlhkUjF^uR#&ȨI#+VJ@#3*+W]-^&4 PXbʵ]uWm6|Oit$QIJ#+̂x?GN(O#3VI%Pb#&8JD@P]_{+C^E#&ED ""!#&) 8#&m~Apu@Q6 +#&!jLʣZ؛j_o4@C<" eLR6Fֆ À.*/53{h=Qއ(JM%@K#&?ćXg@#3ɖwًQnƆ#+#j@ QRZ?=IP:T B!#+m#3G⋳4!"3ekҰ?59$eX xuLvvF]UP_䑟QR4%#3)$aY&h8$HĂ ePiorU (*Ы `i#&)tKfHJA#&WQ=zy-WBj "00A-@bUNmL=hۚk{ 1F E2xLHk_UhTZ4]uP#3)Y93$uF%mڷs3RP -06Qv w#+p!4hɨi9J?Q_CDr$KM(1A@pU1A NxET HA4)"H@:=#&05I!$H#+"Q#+#3RZ#FIZBlQ}̊N|NO""mx$ov,QfKc,#&36qkC7OJqC DHh&4C43aAԒ2P'5B62 Zx8ƨ˕$"v`nFa@>đ*mq%Z6#o;l/GHۖ) "yKqzo&Ovu|QU #DM*X"& ,@ + D#3ȫ'@Nc+Aٸv?I#&1HA/4k6?2CҒhI#+JBS XM펈f"#- Kv )‚PRDDK~_hX77dz%]̰:f793WNJTx!](#3lD:s=.+w1WO̥(z Ŏ41J1y3-+33-iЉi;;Jyxo7B燗gJ[~l\՚/!8AY#,vfo10qǁS %t2kG(iz_2#3-b*Y)[΢v%;VmVO,)aʠ dkSAqRXHXF+,D2ΐi5) >v$"q wݐ̕ל8A3TX (z-Dbޥtr3#3+g!n1aϺ{[nR}œH6iJO]wCV)$I3䔶#&Z=ޚq'@" RCi/X^q. ԻL7@st#+BCID01Pغ{6"#3G Aݑk:#+sIp9BR0͆Hmw^&f$BAcȸn8L#UIȹTQG4,#3 ؏-n$<$tWnȨ#{ˁa_B9@T;\+yyxy4#3ٯ3ۀhl#1E%T1*!|)50[R@$-g@Ҧڐ#3Ap2Hr,[o&ڹ]/:inj{P&SM0rO6#+kFqǻ\rJew4C&ĻXS@2ŭ$U#3_vrTAADZԓKM#3 펓LDD@#3#PA(Ff"&4^/Z޵g7x1@F~x}e#+bbDCyj|qO&CruH'0}2c>)20!7̙p331Ah`Qk=eAdKiTjgv3n#c3)%*zMKT5imף4WEvqx#3 =q$Oj(btz /0B^'Z(&`nusv !Lݠ9^U;zDdV#&Ğ@[||Ȁ$#EDB!H6@l:>ǫk@;PJZHd Ň8q垮~Ozɱxք#3R)DZlHGPw܆J"4UH!@@A 0ͅꫡVi}ِf~wLʸGәlyϢɬPm?k#A J@/#&z\}h2?-Tܓ;:vP  B0%2(F@D#3, {X-`i)v6?%4d$$MVq@f)%ǁ} 8(ۄ2ilFQa' <'F1 jDXԋ=#+hmA&%!%ia(H'VQ64!e>9@Iˢsf -bGq{irܨd!XٶR֖έl(އ# 1E?#3]-_כo{oߺs$6a2[ecS835Hc\ܴ1̦U8t:=P*LkzH JKD8 XPI!2=YؚŪˡ[D,Ů=CFG(7 qc#&XXFr$bE۩=u3&hjZ#3)*#+\P|bL(($)2S"UӵS!Gc2F1unx#+﹓Cah -Vڊ27X!F22)i0RaARHQ+6$( +A#&Ģ|n;!m&]0 fkAL+l0mVx5G˭#3#3<Hnb`5Y@Ujfʼ[m˧*w#3#+#&93@1oɐZc>S B IBt2{K#3#+b8qxa=UC.쩢Fx*:klFm8R1A6:V!O4,T-Njhh!$ )B lJ[1]HdRvymܩܚm_d[^R >ȐDCT#3&ڃDeT2# FKjD8@Pak(D¸UZtA+0nG#&M¤FQA,Y&8Y!!#+epAR0buWmf5Q< i#+Pw3KW#4| A'9}#+$6T#dVdKcAƣn#}#&ц3l\{7pa#Aur3tM1fA29#C#+kF1'aac##&&⎳[nhZ!p.rxQ\c)|F*4jA1:-PkfQ$ai6Gs#3ɗ(#+3v}q%l#+Qj#+0:NDQO#3#+z["" T#3*m,]=Ƴ}#&a`p JF&/NjJfחZ0YnnYђz=30T<:j'`UdGh͑c55. "}h|#XJ6ż=lzi-Zash(˰֚b…to#3!egۛR#&l =q_T#&#+MeTl#+q1l*(";[1Z1*@#+%0 7x IYo[oVשr#+enl MDBWz%JaQ,_ީ#3Ix•rHQUFP eS0K[!AEڋm SbZfmjT@P?w YCזj <]jȀhO> 0wd }gr/+ѥO(@.< H, QE7i{"{!CDx4cgKʄ#.EiIioˇPطa&8iDXD^eAӎkm  )#35#+NI<%;ѹs! wwQ%jnpaxivœz?AnϵсRKX p##+u>>IXݦ;̍\f,4̵^@`mÛq=6W3@թ[ ļkD2"uBNd#&8hsꍭA #&D Wj̪u~ͽ~ߢM?e|GV##+u bs׼Ca꣙VLdCT 2XAωv#+|BQ 0pD`]DS @UqO,2Z#&#&=ñ\$zT7wk5 r)]ЖF(D0ȇo3&!B l 0UOSܒ`4-TNbF}xxkUc DN Xi IhS#+"047~q8 8BIB5_ER҃,r񎺮6L%9!#&Q 6#3d!sTQW-xMRżmb[.#FʒLkcl5mcH" a`y/f0#3 *Zi#1R "^}-"JZb~ʯ>#+I>N9=7CY{pq+Q !#+u7PO\m^[ÝG}LrBPdG4qn۩c˵'ɚ:A u:&yp2HF/S~Al.ɟ/H26|g70t6o|h#˦mt>,3p*Sɗu\|? ~=88{V#+'n]"yӖ:+w^ Z#ʩ[^7wv,t7]cihn@#+{eP!6^u=HF d==[YcuDTVJ늅sǯ]~)"Q8j;=)%Z՛:k@vp1(/10Kp}00cFoꔷW2q6q!ue9\<Èt@V;UVl\Z&vG)Ȅ (jlc۝̈B:f0whQT4lI`fO m]Oeru6hs|(6p9}37#K̒Lmk+Ʊr/ri`d8Mu8Ԃަ)PS:0_"}$6#+<\])kT<닶B.ͷ5V1@DzݬB]Rl)|[~iS\#Buh%C޺ڼao,C6#;~Nj"8nTP@ٺJ]/sAZ᭐1~ˆ8vqơ[mKژy7T+t2Ya#G6m(e|NS #&J^Do7EzFj"VOYBN8ã*dI\3c΃F"q K#3 #&t,DL#3|7™aIۆMRÞ/jy/IL%CqPձB"94a\7rVf3C~H%r.;Ălጳ@'NwXi(b\{\]=ipDεpܶ؅̏J$67h`=:s<6*_sH8'+Xrns((z)Q((`"Pq;Tv8]-aiA#+IgCJ]N2Iuh۱ECvH,e@0`}MI93bFK8q'IyO2D=Ջ#&bLæIzWV!;=Q4Aƌ%^,:OMLa:юSMS-CΜ0]']#!.1Q~ :x@gl >1a;csIּjb mzFc~ X( AɬK9j(WTd)ܼ&~R THu'fj?6BTۈgwU$Nmc6!F#&I9ĥ!FU~b7@0:Z>sp&t.+EZ 2^h tomꧽ/K*1Mvؒ#+k#+HOtx͵a\D8XƵBq2 mEsRI]-R-2dᰬ6SՂuYp:p.Ybf13e:44vm ~*=W+Sn*9]q1sYZhk\K) u&DB\H ^'ZZn91 5:0ډ#&=z`:</.z[KdvYڡIG\~ |ڵ%QM=p1Lp15g`JA^51|C4q[~id& ^(x{޽sC3▎UE 51ps!#+eiڢ[v;"ȑ#&PR)!o.'̘5lj45֪DDkc)SunwdS]uʻWxIA[仵Rm3Xv1WV-dZzUh0F:ـ@V"":aATEDQTQAH>[.+~zl*#&;6 auyVLѢ/MҼZnN6KRڭ~-m&V>PLaW*ݟ3_ue#+HSK!0bIx`IYq,f51d͚B.Iih\ФIR7vmo#+)6R6S#«KJu&D2V {A%KS)TTT* M+E#3BF닥r#ʔsnJgt SNp(0UU9 *ԕ4֢s:i~U #Wjw ;#3 ~/A"qm!ϋ'o{Sff,6qRŘL"jZ 3ռ?MB8d𑍡9UHUoq+aQp%-SLHIX{ ,wOIѹ.i~0;|zC', 6o-A$<Ծd觴R; 0|ZJ-%jrkE+^-yUo~st$5zv4pn+*IVmaFJL6l6)--$Y&4TRʆTȦJ e$FƚhY2 1Д US"g^Ay^_|rNto? _~nOGy݉øEx9L%8 hI1Ad;@HuA-V)h #ޑ;g|19EoJ'|"Ńy#m lO$z̶K5W<$"RV:g?@.L^c#3]%6B#EAAHDINJֹl߳ݮU&.+ɭzmv[$}ŢRaa_aW۴TnX#+X&K u2?nxqϗFQ3VsGFZ. ]Hٶq6T.tL*X3LqTIКbAUʙe% 1T#3ʲQ 0VIqr&V1n=Վ.xk8ZhF1" .R,x֟#3ݐżT کR#( 9a0Z_2۳&%sko,[YAɓ$h84`va@.Fy%#+ `jH46["аwp*[ I$&J#&쓡H )E"HNAzh "ovޥϿNe)æ:v,<?|A NˢyAYJ$LqtA!a)Z(a4v#&QdD!kb:}>;8J-LV~>/jUQMxOj3~%A~@A"M,#8|[DG$`&adQ߂aܮV̌cʢٮx FDM ]\W!:`u@*LJ }b$pO3cOCJ#*\ՙ'$2"F/C7'O|O|޵7#3}^.o!ĄpJ#c4,TBeWE0 ($͕T;f^ʱ5(52W7M@U `|"*ej[R4k "li/?dzESEmTxR@?־p>ja#3J1#3ܘ4%}~i#3{ͼcpNOm/lfxsSjjF7NGW&ƪZ"0"١$e({Vv;LT@n|a+o뢯MMU؆Xq˸Y6|)Ŏѳ#3YùFǎ[9^ӗ |T/QӵZZwWnaIoNl7m>xL&j8ֻl#3p "*gmW8L\BԥǠ;ǚUzQ& rp6:M!% 42vbCtCvw1*(qt#@Tc-Dם0Ͳc<0O'^ߕ#3vѦ'[qeR!4$3&IBU՚m݁AFش*4Cm$::p#yi#+p4M-f@.ݑ,}l1OĂߥqҙÁfhc*lHk6!i u7Fg)")Ό4&6{"-ÚNj'w3=zj[\5Xm!srͫg0C`ZzŠ&bItnA2{x8fmweoVS#%dys4XB`6%)bi8I1Tc˫R iX˾9ώqio8֌ Ah (1#+os8,Ȥ;ACfṤS:k){:rIK(ɰK/jDnW}L.GIaa fn#3k8wxi& лtKp.V d0;dK S&2XVi~Ǔn` Mj"2hbyhYj4g%ïDvM;waʘo%0FA#+ w6\0@̙ň#32A%nr f&"@& ┆xҀ؊$)"^R0Xh܆#+M̆ChR%(]àg$#"`.p.褀1KLLsE9bf$#+Ѥ@ir!lvG;!;d-#3$E2T,,B."DI=^CmF 츊>_ӆh=;d#+7d@HvبDPQzHl $JBK'΁"}V0,~2͐)6l߰}9: j75Pbq'#+gl pR$c~5M ;6)ASy{Y1MǬQJ(k-ṃwg ʪ}8gqPQU颙֨#+7E;`p4Ȳ}{`][*ʔ Ɂ5CcmA$LdziEdC7M '6S-uGS0lR2S3n_ 6 eeoMw)tZ'jNy"*n ٙ#&\?0={A,/#}d1AˑVZ'#3%aw9D>Zd!B >S.c}xNH2#&(g1whK 8"9-q𗛺TZ#+c#J #+2XY#++(?%&fC|60(Aq.TQ{ /j0L̗FR[1*B)#gj{B|f^~w#H}\#&{ v现@Dt+q}1ĦJE-2QY]^pp&9S4rQOE'IFPv%m5cI9Ʋ#+ʇHh1ٳH1`A;z{7 gsN'<)cU\`Re9Ljj}bTěsaO4Ɍg(:#&4w׿\#&b"TDtNT'hfZ16z֙AR*d4stgʌȣrw#3Q `qHXE"#Y[&i_ɭI2"9Wo(@ٖ*6HvB$T7#&Qހem.fOE~*n;St8A`X '-pǧd)|N71'#&Q$unW|1N1:KmWϭ+_[UIxf B58PhʢYreTh(CNEҫZ押xu涗Ml򸍶#&{vn@Tm\^#&wȳҲ~$Ӌ9U2f (f2.(3 /lź5[0sM96YH0{]ӆq eaȣhਲ਼} @DRRHh`$A#3Ţä;y,@@a@̙~T.7ūvxӃ#+R/jU#+MzGhٝ^9#j^^P/}&<5lO>>>Ȩ'POXh#.T(HPiς#Ӑ$؟Q_#&YA.޿7iY*fѦPVٌ2٬ƿybk&ָΕйڛ]K믝9T'ӦO3j#&=q1ב 5GsH)D3#+_[TS`}_V:bEIa7nap#3$@D%#&w%r}pF#b!H癃K5 V=PM1F+ 5c:^,K㫧U05̼Y0LЫ(x[9qpalن34fCp0]?FvINfvNʎdIA%l,~HYT$H :hPTNSJz=h6.UJeieLɂZ#mVW_@@#3Yϫ윯%#y7EMbUk3F9P$ A#&p#&P_<'lOB ]3P6BQ#3arAu ե׷hIq`[ēTo,X)v̇ VAG {`1`wwyv| 9fST~C?1B9Kr<+Uy/Ý7oZe?Bօ)EA{tD,_vYbk_>[/W21 +(J(=w4ߥQ6؋bU5aj.ZƀdFAjQyA%aQUTJa(P0=$SpA0D#3nfyCvs@etyJ54I&di&_c}zWR(D#&"@CdBC`gQo"M.œ*d|#$d=Zn162jlJ̍jڤE#&^6/QR Hˏ{+;ti1٢O22HI}{zX:AsZhhKzp4h$ dSLMp`L3:0@aWZ|侎imIW#+jZ6SeO|fj$!8#3#&?E]J$KV{HA`'}[!`zzq;"d<3ec5gˈ M gfq-) /@xm<{[lKf/v_moiƍٯhK#3}mzu~{}JV2#&iBxzdd#30Ob{n[W6%j.ƭͫ|XifZu#+ v"-#`.Q!=~2Mé'5F/Mj*1V&q $B=41R02#3TƼ3Rm}^ykǐطTجPHmHU4[ݛ2MTm\TjJ65e#3#+X"lQ2-)k(L54fZnqJ%o]U&3Dua A#&5)?݅\B/iGh\F#& a[ AP;s2k+,Xuo|D ĖCT]z6rh#3}~fvBYDB(#3qǨY%i9!$hC{fv2I/"@CEM_U+0MuK#+ܚmwi&Ơû/tBQBĝe@}קSsH\,`bx']83~bVRj*B Zd\+;YFed\3 zfeGX7F`lˈ@WsKsx}$xP,(-ihaZB% 0PHM#+Wlc8%ܥAN%I e_Y;@ۛyd07.tM}+RK`f3jSe4?ʭ!+u4_UZέ,2q fLB٣QTFoj]ۣ}.FJc4jS⓷:3`h[@]t0 )بW~>LA??c#&SP6Xf&G=Q12=&7 fD&×nb VvZؼO5!P?%#&vVCk@( @YҸqR6o#+d#3q',뗿#@#&@SL;-bc"R_߿wtO,o{ZU0 s#wH#կh4(k0Ke_Ɔ*pMɳq\ n!EDJV<43(@<"#&O#X3CGmlmfp.,R #+$! c+CoXƄ\qwkV0j5ث3i`iR_{#Oᵦ65d(#+kpreغj=Tx>ibP)Ɇ5>f&YiƩ0k-rR/la`D2ﳎMmnp81GvK~v둳)qAF7Le`P)4ƣ }йcowe1+r,:E83A08kL{lZ.[p#%xl-#&@[0#3u=w|(q\Fٷ斖ψ%HB PYw(qa1,!^ hr7.#+ݕvD~v~"J|~i N2$iTPqNږL9FA5 3X#&ଂ$D:Ƌٰ"H2b$&])O#3jY#&3$w{ObXG@p@O#+mC8a sJf魉F#3MZ#Y\J*jReZMRU$Lݪmo&c |ġ+b:CA"a""Cp} 'wu$}#3UZhY51_b W:G?#+䲑PGS(B}¦D1R#+jܧг[걚879qXfaE# Iլ&XM0M5Ad4O#+Oۯjy44#+MEݗ"6 &YvTCVzID%%,Ŵ׍_W%EQeb1Vt.f4̡лbØv^(!It@D(xw;Œx#'. (!~f($,H*mvkHvi60XȃfAB [=68J#3.1$CB!ex3o!X:XGA$ BYʶ!2_fc)„ +#<== diff --git a/wscript b/wscript new file mode 100644 index 0000000..19ceb16 --- /dev/null +++ b/wscript @@ -0,0 +1,138 @@ +#!/usr/bin/env python +import os +import subprocess +import waflib.Logs as Logs +import waflib.Options as Options +import waflib.extras.autowaf as autowaf + +# Mandatory waf variables +APPNAME = 'drobillad' # Package name for waf dist +VERSION = '0.0.0' # Package version for waf dist +top = '.' # Source directory +out = 'build' # Build directory + +projects = ''' + serd + sord + sratom + suil + lilv + raul + ganv + patchage + ingen + jalv + machina + plugins/blop.lv2 + plugins/fomp.lv2 + plugins/matriseq.lv2 + plugins/mda.lv2 + plugins/omins.lv2 +'''.split() + +# plugins/float.lv2 +# plugins/glamp.lv2 +# plugins/mesp.lv2 +# plugins/dirg.lv2 +# plugins/lolep.lv2 + +def update(ctx): + 'updates all git submodules' + for i in projects: + Logs.info('Updating %s' % i) + old_cwd = os.getcwd() + try: + os.chdir(i) + os.system('git checkout master') + os.system('git pull') + finally: + os.chdir(old_cwd) + +def options(opt): + opt.load('compiler_c') + opt.load('compiler_cxx') + opt.load('lv2') + autowaf.set_options(opt) + opt.add_option('--cmd', type='string', dest='cmd', + help='Command to run from build directory (for run command)') + for i in projects: + opt.recurse(i) + +def sub_config_and_use(conf, name, has_objects = True, pkgname = ''): + conf.recurse(name) + if pkgname == '': + pkgname = name + autowaf.set_local_lib(conf, pkgname, has_objects) + +def configure(conf): + conf.load('compiler_c') + conf.load('compiler_cxx') + conf.load('lv2') + autowaf.configure(conf) + autowaf.set_recursive() + + autowaf.check_pkg(conf, 'lv2', atleast_version='1.11.0', uselib_store='LV2') + + # FIXME: I have no idea why this is necessary + conf.env.CXXFLAGS += ['-I%s/raul' % os.path.abspath(top)] + + print('') + conf.env.DROBILLAD_BUILD = [] + global to_build + for i in projects: + try: + sub_config_and_use(conf, i) + conf.env.DROBILLAD_BUILD += [i] + except: + Logs.warn('Configuration failed, %s will not be built\n' % i) + + Logs.info('Building:\n\t%s\n' % '\n\t'.join(conf.env.DROBILLAD_BUILD)) + + not_building = [] + for i in projects: + if i not in conf.env.DROBILLAD_BUILD: + not_building += [i] + + if not_building != []: + Logs.warn('Not building:\n\t%s\n' % '\n\t'.join(not_building)) + +def source_tree_env(): + "sets up the environment to run things from the source tree" + env = os.environ + library_path = [] + if 'LD_LIBRARY_PATH' in env: + library_path = env.LD_LIBRARY_PATH.split(os.pathsep) + for i in 'serd sord sratom lilv suil raul ganv'.split(): + library_path += [ os.path.join(os.getcwd(), 'build', i) ] + + ingen_module_path = [] + for i in 'client server shared gui serialisation'.split(): + path = os.path.join(os.getcwd(), 'build', 'ingen', 'src', i) + library_path += [ path ] + ingen_module_path += [ path ] + + env.LD_LIBRARY_PATH = os.pathsep.join(library_path) + env.INGEN_MODULE_PATH = os.pathsep.join(ingen_module_path) + env.LV2_PATH = os.pathsep.join(['~/.lv2', os.path.join(os.getcwd(), 'lv2')]) + return env + +def run(ctx): + if not Options.options.cmd: + Logs.error("missing --cmd option for run command") + return + + cmd = Options.options.cmd + Logs.pprint('GREEN', 'Running %s' % cmd) + + subprocess.call(cmd, shell=True, env=source_tree_env()) + +def build(bld): + autowaf.set_recursive() + for i in bld.env.DROBILLAD_BUILD: + bld.recurse(i) + +def test(ctx): + autowaf.set_recursive(); + os.environ = source_tree_env() + for i in ['raul', 'serd', 'sord', 'sratom', 'lilv']: + ctx.recurse(i) -- cgit v1.2.1